diff options
2822 files changed, 94875 insertions, 43735 deletions
diff --git a/doc/contributions.txt b/doc/contributions.txt index cf10ecccfb..2e4d803252 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/etc/message.xml b/etc/message.xml index da08e12aa1..c17ae3656d 100644 --- a/etc/message.xml +++ b/etc/message.xml @@ -50,7 +50,7 @@ <key>OpenCircuit</key> <map> <key>flavor</key> - <string>template</string> + <string>llsd</string> <key>trusted-sender</key> <boolean>false</boolean> </map> diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 1f578eec5f..592e9fc901 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -171,8 +171,8 @@ if (LINUX) if (NOT STANDALONE) # this stops us requiring a really recent glibc at runtime add_definitions(-fno-stack-protector) - # linking can be so slow - give us a chance to figure out why - set(CMAKE_CXX_LINK_FLAGS "-Wl,--stats,--no-keep-memory") + # linking can be very memory-hungry, especially the final viewer link + set(CMAKE_CXX_LINK_FLAGS "-Wl,--no-keep-memory") endif (NOT STANDALONE) endif (VIEWER) diff --git a/indra/cmake/APR.cmake b/indra/cmake/APR.cmake index f4706dd4f2..180504d286 100644 --- a/indra/cmake/APR.cmake +++ b/indra/cmake/APR.cmake @@ -54,7 +54,10 @@ else (STANDALONE) endif (WINDOWS) set(APR_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/include/apr-1) - if (LINUX AND VIEWER) - list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES} uuid) - endif (LINUX AND VIEWER) + if (LINUX) + if (VIEWER) + list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES} uuid) + endif (VIEWER) + list(APPEND APRUTIL_LIBRARIES ${DB_LIBRARIES} rt) + endif (LINUX) endif (STANDALONE) diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake index efe9ad74d3..7ce57a5572 100644 --- a/indra/cmake/Boost.cmake +++ b/indra/cmake/Boost.cmake @@ -38,12 +38,12 @@ else (STANDALONE) debug libboost_signals-vc80-mt-gd-${BOOST_VERSION}) endif (MSVC71) elseif (DARWIN) - set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt) - set(BOOST_REGEX_LIBRARY boost_regex-mt) - set(BOOST_SIGNALS_LIBRARY boost_signals-mt) + set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-xgcc40-mt) + set(BOOST_REGEX_LIBRARY boost_regex-xgcc40-mt) + set(BOOST_SIGNALS_LIBRARY boost_signals-xgcc40-mt) elseif (LINUX) - set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-mt) - set(BOOST_REGEX_LIBRARY boost_regex-mt) - set(BOOST_SIGNALS_LIBRARY boost_signals-mt) + set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options-gcc41-mt) + set(BOOST_REGEX_LIBRARY boost_regex-gcc41-mt) + set(BOOST_SIGNALS_LIBRARY boost_signals-gcc41-mt) endif (WINDOWS) endif (STANDALONE) diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake new file mode 100644 index 0000000000..c0424396e5 --- /dev/null +++ b/indra/cmake/DragDrop.cmake @@ -0,0 +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) diff --git a/indra/cmake/GStreamer010Plugin.cmake b/indra/cmake/GStreamer010Plugin.cmake index 0d334837d4..0ca432da18 100644 --- a/indra/cmake/GStreamer010Plugin.cmake +++ b/indra/cmake/GStreamer010Plugin.cmake @@ -24,7 +24,6 @@ elseif (LINUX) gmodule-2.0 dl gthread-2.0 - rt glib-2.0 ) endif (STANDALONE) diff --git a/indra/cmake/PulseAudio.cmake b/indra/cmake/PulseAudio.cmake new file mode 100644 index 0000000000..f8087a8083 --- /dev/null +++ b/indra/cmake/PulseAudio.cmake @@ -0,0 +1,28 @@ +# -*- cmake -*- +include(Prebuilt) + +if (STANDALONE) + include(FindPkgConfig) + + pkg_check_modules(PULSEAUDIO REQUIRED libpulse-mainloop-glib) + +elseif (LINUX) + use_prebuilt_binary(pulseaudio) + set(PULSEAUDIO_FOUND ON FORCE BOOL) + set(PULSEAUDIO_INCLUDE_DIRS + ${LIBS_PREBUILT_DIR}/include + ) + # We don't need to explicitly link against pulseaudio itself, because + # the viewer probes for the system's copy at runtime. + set(PULSEAUDIO_LIBRARIES + # none needed! + ) +endif (STANDALONE) + +if (PULSEAUDIO_FOUND) + set(PULSEAUDIO ON CACHE BOOL "Build with PulseAudio support, if available.") +endif (PULSEAUDIO_FOUND) + +if (PULSEAUDIO) + add_definitions(-DLL_PULSEAUDIO_ENABLED=1) +endif (PULSEAUDIO) diff --git a/indra/develop.py b/indra/develop.py index eaecdd0ab6..0a2d3c5e52 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -41,6 +41,7 @@ import shutil import socket import sys import commands +import subprocess class CommandError(Exception): pass @@ -504,7 +505,7 @@ class WindowsSetup(PlatformSetup): 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): @@ -573,29 +574,32 @@ class WindowsSetup(PlatformSetup): 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 = '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. - return ('"%sdevenv.com" %s.sln /build %s' % - (self.find_visual_studio(), self.project_name, self.build_type)) - #return ('devenv.com %s.sln /build %s' % - # (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) 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. [DEV-44838]' + 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 = os.system(command) + ret = subprocess.call(command, executable=path) 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: - error = 'was not found' - else: - error = 'exited with status %d' % 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) else: @@ -617,18 +621,21 @@ class WindowsSetup(PlatformSetup): 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): + for t in targets: + assert t.strip(), 'Unexpected empty targets: ' + repr(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 +644,11 @@ class WindowsSetup(PlatformSetup): 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) diff --git a/indra/lib/python/indra/util/llmanifest.py b/indra/lib/python/indra/util/llmanifest.py index 8c05210618..7e5b86c53f 100644 --- a/indra/lib/python/indra/util/llmanifest.py +++ b/indra/lib/python/indra/util/llmanifest.py @@ -119,6 +119,7 @@ ARGUMENTS=[ On Linux this would try to use Linux_i686Manifest.""", default=""), dict(name='build', description='Build directory.', default=DEFAULT_SRCTREE), + dict(name='buildtype', description='Build type (i.e. Debug, Release, RelWithDebInfo).', default=None), dict(name='configuration', description="""The build configuration used.""", default="Release"), diff --git a/indra/linux_crash_logger/CMakeLists.txt b/indra/linux_crash_logger/CMakeLists.txt index 4b19e28066..ab62a0d0af 100644 --- a/indra/linux_crash_logger/CMakeLists.txt +++ b/indra/linux_crash_logger/CMakeLists.txt @@ -54,12 +54,5 @@ target_link_libraries(linux-crash-logger ${DB_LIBRARIES} ) -add_custom_command( - OUTPUT linux-crash-logger-stripped - COMMAND strip - ARGS --strip-debug -o linux-crash-logger-stripped linux-crash-logger - DEPENDS linux-crash-logger - ) - -add_custom_target(linux-crash-logger-strip-target ALL - DEPENDS linux-crash-logger-stripped) +add_custom_target(linux-crash-logger-target ALL + DEPENDS linux-crash-logger) diff --git a/indra/linux_updater/CMakeLists.txt b/indra/linux_updater/CMakeLists.txt index 9fe32ecb46..00a78b2a8f 100644 --- a/indra/linux_updater/CMakeLists.txt +++ b/indra/linux_updater/CMakeLists.txt @@ -47,12 +47,5 @@ target_link_libraries(linux-updater ${LLCOMMON_LIBRARIES} ) -add_custom_command( - OUTPUT linux-updater-stripped - COMMAND strip - ARGS --strip-debug -o linux-updater-stripped linux-updater - DEPENDS linux-updater - ) - -add_custom_target(linux-updater-strip-target ALL - DEPENDS linux-updater-stripped) +add_custom_target(linux-updater-target ALL + DEPENDS linux-updater) diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp index 6bbaad9cef..290206ee22 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() diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp index a28c94d00d..ed06c85e1a 100644 --- a/indra/llaudio/llaudioengine.cpp +++ b/indra/llaudio/llaudioengine.cpp @@ -202,12 +202,12 @@ void LLAudioEngine::updateInternetStream() } // virtual -int LLAudioEngine::isInternetStreamPlaying() +LLAudioEngine::LLAudioPlayState LLAudioEngine::isInternetStreamPlaying() { if (mStreamingAudioImpl) - return mStreamingAudioImpl->isPlaying(); + return (LLAudioEngine::LLAudioPlayState) mStreamingAudioImpl->isPlaying(); - return 0; // Stopped + return LLAudioEngine::AUDIO_STOPPED; // Stopped } diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h index 457fd93abe..d287104204 100644 --- a/indra/llaudio/llaudioengine.h +++ b/indra/llaudio/llaudioengine.h @@ -91,6 +91,15 @@ public: AUDIO_TYPE_COUNT = 4 // last }; + enum LLAudioPlayState + { + // isInternetStreamPlaying() returns an *int*, with + // 0 = stopped, 1 = playing, 2 = paused. + AUDIO_STOPPED = 0, + AUDIO_PLAYING = 1, + AUDIO_PAUSED = 2 + }; + LLAudioEngine(); virtual ~LLAudioEngine(); @@ -156,7 +165,7 @@ public: void stopInternetStream(); void pauseInternetStream(int pause); void updateInternetStream(); // expected to be called often - int isInternetStreamPlaying(); + LLAudioPlayState isInternetStreamPlaying(); // use a value from 0.0 to 1.0, inclusive void setInternetStreamGain(F32 vol); std::string getInternetStreamURL(); diff --git a/indra/llaudio/llstreamingaudio_fmod.cpp b/indra/llaudio/llstreamingaudio_fmod.cpp index a71a87203c..a4620fa13c 100644 --- a/indra/llaudio/llstreamingaudio_fmod.cpp +++ b/indra/llaudio/llstreamingaudio_fmod.cpp @@ -174,7 +174,7 @@ void LLStreamingAudio_FMOD::update() break; case -3: // failed to open, file not found, perhaps - llwarns << "InternetSteam - failed to open" << llendl; + llwarns << "InternetStream - failed to open" << llendl; stop(); return; case -4: diff --git a/indra/llcharacter/llbvhloader.h b/indra/llcharacter/llbvhloader.h index 85ab035e61..38617bd6d4 100644 --- a/indra/llcharacter/llbvhloader.h +++ b/indra/llcharacter/llbvhloader.h @@ -166,6 +166,7 @@ public: Translation() { mIgnore = FALSE; + mIgnorePositions = FALSE; mRelativePositionKey = FALSE; mRelativeRotationKey = FALSE; mPriorityModifier = 0; diff --git a/indra/llcharacter/llcharacter.cpp b/indra/llcharacter/llcharacter.cpp index 528a7bb4a5..40a9752268 100644 --- a/indra/llcharacter/llcharacter.cpp +++ b/indra/llcharacter/llcharacter.cpp @@ -181,16 +181,18 @@ void LLCharacter::requestStopMotion( LLMotion* motion) // updateMotions() //----------------------------------------------------------------------------- static LLFastTimer::DeclareTimer FTM_UPDATE_ANIMATION("Update Animation"); +static LLFastTimer::DeclareTimer FTM_UPDATE_HIDDEN_ANIMATION("Update Hidden Anim"); void LLCharacter::updateMotions(e_update_t update_type) { - LLFastTimer t(FTM_UPDATE_ANIMATION); if (update_type == HIDDEN_UPDATE) { + LLFastTimer t(FTM_UPDATE_HIDDEN_ANIMATION); mMotionController.updateMotionsMinimal(); } else { + LLFastTimer t(FTM_UPDATE_ANIMATION); // unpause if the number of outstanding pause requests has dropped to the initial one if (mMotionController.isPaused() && mPauseRequest->getNumRefs() == 1) { diff --git a/indra/llcharacter/lleditingmotion.cpp b/indra/llcharacter/lleditingmotion.cpp index 381d19e614..57554bdc35 100644 --- a/indra/llcharacter/lleditingmotion.cpp +++ b/indra/llcharacter/lleditingmotion.cpp @@ -221,7 +221,7 @@ BOOL LLEditingMotion::onUpdate(F32 time, U8* joint_mask) if (!target.isFinite()) { llerrs << "Non finite target in editing motion with target distance of " << target_dist << - " and focus point " << focus_pt << " and pointAtPt: " << *pointAtPt << llendl; + " and focus point " << focus_pt << llendl; } mTarget.setPosition( target + mParentJoint.getPosition()); diff --git a/indra/llcharacter/lljoint.cpp b/indra/llcharacter/lljoint.cpp index 37afcb7cda..5c49214051 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); diff --git a/indra/llcharacter/llkeyframewalkmotion.cpp b/indra/llcharacter/llkeyframewalkmotion.cpp index b5817e5bde..461309bee9 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) { - mRealTimeLast = 0.0f; - mAdjTimeLast = 0.0f; - mCharacter = NULL; } diff --git a/indra/llcharacter/llstatemachine.cpp b/indra/llcharacter/llstatemachine.cpp index 73c6951211..e6fa4d7985 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; } @@ -305,6 +306,7 @@ LLStateMachine::LLStateMachine() // we haven't received a starting state yet mCurrentState = NULL; mLastState = NULL; + mLastTransition = NULL; mStateDiagram = NULL; } diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index ac7cc2cdac..4481d334b2 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -50,7 +50,8 @@ set(llcommon_SOURCE_FILES lleventdispatcher.cpp lleventfilter.cpp llevents.cpp - llfasttimer.cpp + lleventtimer.cpp + llfasttimer_class.cpp llfile.cpp llfindlocale.cpp llfixedbuffer.cpp @@ -164,7 +165,6 @@ set(llcommon_HEADER_FILES llhttpstatuscodes.h llindexedqueue.h llinstancetracker.h - llinstancetracker.h llkeythrottle.h lllazy.h lllistenerwrapper.h @@ -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) diff --git a/indra/llcommon/llallocator_heap_profile.cpp b/indra/llcommon/llallocator_heap_profile.cpp index 0a807702d0..e50d59fd4b 100644 --- a/indra/llcommon/llallocator_heap_profile.cpp +++ b/indra/llcommon/llallocator_heap_profile.cpp @@ -113,21 +113,24 @@ 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/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp index 968b92d1e7..6b2d1b7c20 100644 --- a/indra/llcommon/llapp.cpp +++ b/indra/llcommon/llapp.cpp @@ -41,7 +41,7 @@ #include "lllivefile.h" #include "llmemory.h" #include "llstl.h" // for DeletePointer() -#include "lltimer.h" +#include "lleventtimer.h" // // Signal handling diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h index 5af7991006..f1b9091298 100644 --- a/indra/llcommon/llchat.h +++ b/indra/llcommon/llchat.h @@ -43,7 +43,8 @@ typedef enum e_chat_source_type { CHAT_SOURCE_SYSTEM = 0, CHAT_SOURCE_AGENT = 1, - CHAT_SOURCE_OBJECT = 2 + CHAT_SOURCE_OBJECT = 2, + CHAT_SOURCE_UNKNOWN = 3 } EChatSourceType; typedef enum e_chat_type @@ -68,7 +69,8 @@ typedef enum e_chat_audible_level typedef enum e_chat_style { CHAT_STYLE_NORMAL, - CHAT_STYLE_IRC + CHAT_STYLE_IRC, + CHAT_STYLE_HISTORY }EChatStyle; // A piece of chat @@ -79,6 +81,7 @@ public: : mText(text), mFromName(), mFromID(), + mNotifId(), mSourceType(CHAT_SOURCE_AGENT), mChatType(CHAT_TYPE_NORMAL), mAudible(CHAT_AUDIBLE_FULLY), @@ -87,12 +90,14 @@ public: mTimeStr(), mPosAgent(), mURL(), - mChatStyle(CHAT_STYLE_NORMAL) + mChatStyle(CHAT_STYLE_NORMAL), + mSessionID() { } 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; @@ -102,6 +107,7 @@ public: LLVector3 mPosAgent; std::string mURL; EChatStyle mChatStyle; + LLUUID mSessionID; }; #endif diff --git a/indra/llcommon/lldate.cpp b/indra/llcommon/lldate.cpp index ca7e471bf2..de7f2ead74 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' + << std::setfill(' '); } bool LLDate::split(S32 *year, S32 *month, S32 *day, S32 *hour, S32 *min, S32 *sec) const diff --git a/indra/llcommon/lldictionary.h b/indra/llcommon/lldictionary.h index 95178b41e7..4a2bfb9f3f 100644 --- a/indra/llcommon/lldictionary.h +++ b/indra/llcommon/lldictionary.h @@ -76,11 +76,16 @@ public: return dictionary_iter->first; } } - llassert(false); - return Index(-1); + return notFound(); } protected: + virtual Index notFound() const + { + // default is to assert + llassert(false); + return Index(-1); + } void addEntry(Index index, Entry *entry) { if (lookup(index)) diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h index 5a4c644859..09812de2b8 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) diff --git a/indra/llcommon/llerrorlegacy.h b/indra/llcommon/llerrorlegacy.h index 7a970b1466..476d75380f 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 @@ -75,6 +75,10 @@ const int LL_ERR_PRICE_MISMATCH = -23018; #define SHOW_ASSERT #else // _DEBUG +#ifdef LL_RELEASE_WITH_DEBUG_INFO +#define SHOW_ASSERT +#endif // LL_RELEASE_WITH_DEBUG_INFO + #ifdef RELEASE_SHOW_DEBUG #define SHOW_DEBUG #endif @@ -103,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/lleventtimer.cpp b/indra/llcommon/lleventtimer.cpp new file mode 100644 index 0000000000..d44e7ec1e6 --- /dev/null +++ b/indra/llcommon/lleventtimer.cpp @@ -0,0 +1,95 @@ +/** + * @file lleventtimer.cpp + * @brief Cross-platform objects for doing timing + * + * $LicenseInfo:firstyear=2000&license=viewergpl$ + * + * Copyright (c) 2000-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" + +#include "lleventtimer.h" + +#include "u64.h" + + +////////////////////////////////////////////////////////////////////////////// +// +// LLEventTimer Implementation +// +////////////////////////////////////////////////////////////////////////////// + +LLEventTimer::LLEventTimer(F32 period) +: mEventTimer() +{ + mPeriod = period; +} + +LLEventTimer::LLEventTimer(const LLDate& time) +: mEventTimer() +{ + mPeriod = (F32)(time.secondsSinceEpoch() - LLDate::now().secondsSinceEpoch()); +} + + +LLEventTimer::~LLEventTimer() +{ +} + +//static +void LLEventTimer::updateClass() +{ + std::list<LLEventTimer*> completed_timers; + + { + LLInstanceTrackerScopedGuard guard; + for (instance_iter iter = guard.beginInstances(); iter != guard.endInstances(); ) + { + LLEventTimer& timer = *iter++; + F32 et = timer.mEventTimer.getElapsedTimeF32(); + if (timer.mEventTimer.getStarted() && et > timer.mPeriod) { + timer.mEventTimer.reset(); + if ( timer.tick() ) + { + completed_timers.push_back( &timer ); + } + } + } + } + + if ( completed_timers.size() > 0 ) + { + for (std::list<LLEventTimer*>::iterator completed_iter = completed_timers.begin(); + completed_iter != completed_timers.end(); + completed_iter++ ) + { + delete *completed_iter; + } + } +} + + diff --git a/indra/llcommon/lleventtimer.h b/indra/llcommon/lleventtimer.h new file mode 100644 index 0000000000..5181cce52d --- /dev/null +++ b/indra/llcommon/lleventtimer.h @@ -0,0 +1,60 @@ +/** + * @file lleventtimer.h + * @brief Cross-platform objects for doing timing + * + * $LicenseInfo:firstyear=2000&license=viewergpl$ + * + * Copyright (c) 2000-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_EVENTTIMER_H +#define LL_EVENTTIMER_H + +#include "stdtypes.h" +#include "lldate.h" +#include "llinstancetracker.h" +#include "lltimer.h" + +// class for scheduling a function to be called at a given frequency (approximate, inprecise) +class LL_COMMON_API LLEventTimer : protected LLInstanceTracker<LLEventTimer> +{ +public: + LLEventTimer(F32 period); // period is the amount of time between each call to tick() in seconds + LLEventTimer(const LLDate& time); + virtual ~LLEventTimer(); + + //function to be called at the supplied frequency + // Normally return FALSE; TRUE will delete the timer after the function returns. + virtual BOOL tick() = 0; + + static void updateClass(); + +protected: + LLTimer mEventTimer; + F32 mPeriod; +}; + +#endif //LL_EVENTTIMER_H diff --git a/indra/llcommon/llfasttimer.h b/indra/llcommon/llfasttimer.h index f5c90291b8..48461df6ae 100644 --- a/indra/llcommon/llfasttimer.h +++ b/indra/llcommon/llfasttimer.h @@ -1,11 +1,11 @@ -/** +/** * @file llfasttimer.h - * @brief Declaration of a fast timer. + * @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 @@ -13,17 +13,17 @@ * ("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. @@ -33,19 +33,43 @@ #ifndef LL_FASTTIMER_H #define LL_FASTTIMER_H -#include "llinstancetracker.h" - -#define FAST_TIMER_ON 1 -#define TIME_FAST_TIMERS 0 +// pull in the actual class definition +#include "llfasttimer_class.h" #if LL_WINDOWS +// +// 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 LLFastTimer::getCPUClockCount32() +//{ +// U64 time_stamp = __rdtsc(); +// return (U32)(time_stamp >> 8); +//} +// +//// return full timer value, *not* shifted by 8 bits +//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 + __asm { _emit 0x0f _emit 0x31 @@ -58,10 +82,10 @@ 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 + __asm { _emit 0x0f _emit 0x31 @@ -72,263 +96,71 @@ inline U64 get_cpu_clock_count_64() } return ret_val; } +#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 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 then ouch, try REALTIME +#endif + clock_gettime(CLOCK_REALTIME,&tp); + + return (tp.tv_sec*LLFastTimer::sClockResolution)+tp.tv_nsec; +} + +inline U32 LLFastTimer::getCPUClockCount32() +{ + return (U32)(LLFastTimer::getCPUClockCount64() >> 8); +} +#endif // (LL_LINUX || LL_SOLARIS)) -#endif // LL_WINDOWS -#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; +#if (LL_DARWIN) && (defined(__i386__) || defined(__amd64__)) +// +// Mac x86 implementation of CPU clock +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 U64 LLFastTimer::getCPUClockCount64() +{ U64 x; __asm__ volatile (".byte 0x0f, 0x31": "=A"(x)); - return x >> 8; + return x; } #endif -#if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__))) || (LL_SOLARIS && defined(__sparc__)) + +#if ( LL_DARWIN && !(defined(__i386__) || defined(__amd64__))) // -// Mac PPC (deprecated) & Solaris SPARC implementation of CPU clock +// Mac PPC (deprecated) implementation of CPU clock // // Just use gettimeofday implementation for now -inline U32 get_cpu_clock_count_32() +inline U32 LLFastTimer::getCPUClockCount32() { - return (U32)get_clock_count(); + return (U32)(get_clock_count()>>8); } -inline U32 get_cpu_clock_count_64() -{ +inline U64 LLFastTimer::getCPUClockCount64() +{ return get_clock_count(); } #endif -class LLMutex; - -#include <queue> -#include "llsd.h" - - -class LL_COMMON_API LLFastTimer -{ -public: - // stores a "named" timer instance to be reused via multiple LLFastTimer stack instances - class LL_COMMON_API NamedTimer - : public LLInstanceTracker<NamedTimer> - { - friend class DeclareTimer; - public: - ~NamedTimer(); - - enum { HISTORY_NUM = 60 }; - - const std::string& getName() const { return mName; } - NamedTimer* getParent() const { return mParent; } - void setParent(NamedTimer* parent); - S32 getDepth(); - std::string getToolTip(S32 history_index = -1); - - typedef std::vector<NamedTimer*>::const_iterator child_const_iter; - child_const_iter beginChildren(); - child_const_iter endChildren(); - std::vector<NamedTimer*>& getChildren(); - - void setCollapsed(bool collapsed) { mCollapsed = collapsed; } - bool getCollapsed() const { return mCollapsed; } - - U32 getCountAverage() const { return mCountAverage; } - U32 getCallAverage() const { return mCallAverage; } - - U32 getHistoricalCount(S32 history_index = 0) const; - U32 getHistoricalCalls(S32 history_index = 0) const; - - static NamedTimer& getRootNamedTimer(); - - struct FrameState - { - FrameState(NamedTimer* timerp); - - U32 mSelfTimeCounter; - U32 mCalls; - FrameState* mParent; // info for caller timer - FrameState* mLastCaller; // used to bootstrap tree construction - NamedTimer* mTimer; - U16 mActiveCount; // number of timers with this ID active on stack - bool mMoveUpTree; // needs to be moved up the tree of timers at the end of frame - }; - - S32 getFrameStateIndex() const { return mFrameStateIndex; } - - FrameState& getFrameState() const; - - - private: - friend class LLFastTimer; - friend class NamedTimerFactory; - - // - // methods - // - NamedTimer(const std::string& name); - // recursive call to gather total time from children - static void accumulateTimings(); - - // updates cumulative times and hierarchy, - // can be called multiple times in a frame, at any point - static void processTimes(); - - static void buildHierarchy(); - static void resetFrame(); - static void reset(); - - - // - // members - // - S32 mFrameStateIndex; - - std::string mName; - - U32 mTotalTimeCounter; - - U32 mCountAverage; - U32 mCallAverage; - - U32* mCountHistory; - U32* mCallHistory; - - // tree structure - NamedTimer* mParent; // NamedTimer of caller(parent) - std::vector<NamedTimer*> mChildren; - bool mCollapsed; // don't show children - bool mNeedsSorting; // sort children whenever child added - - }; - - // used to statically declare a new named timer - class LL_COMMON_API DeclareTimer - : public LLInstanceTracker<DeclareTimer> - { - public: - DeclareTimer(const std::string& name, bool open); - DeclareTimer(const std::string& name); - - static void updateCachedPointers(); - - // convertable to NamedTimer::FrameState for convenient usage of LLFastTimer(declared_timer) - operator NamedTimer::FrameState&() { return *mFrameState; } - private: - NamedTimer& mTimer; - NamedTimer::FrameState* mFrameState; - }; - - -public: - static LLMutex* sLogLock; - static std::queue<LLSD> sLogQueue; - static BOOL sLog; - static BOOL sMetricLog; - - typedef std::vector<NamedTimer::FrameState> info_list_t; - static info_list_t& getFrameStateList(); - - enum RootTimerMarker { ROOT }; - LLFastTimer(RootTimerMarker); - - LLFastTimer(NamedTimer::FrameState& timer) - : mFrameState(&timer) - { -#if TIME_FAST_TIMERS - U64 timer_start = get_cpu_clock_count_64(); -#endif -#if FAST_TIMER_ON - NamedTimer::FrameState* frame_state = &timer; - U32 cur_time = get_cpu_clock_count_32(); - mStartSelfTime = cur_time; - mStartTotalTime = cur_time; - - frame_state->mActiveCount++; - frame_state->mCalls++; - // keep current parent as long as it is active when we are - frame_state->mMoveUpTree |= (frame_state->mParent->mActiveCount == 0); - - mLastTimer = sCurTimer; - sCurTimer = this; -#endif -#if TIME_FAST_TIMERS - U64 timer_end = get_cpu_clock_count_64(); - sTimerCycles += timer_end - timer_start; -#endif - } - - ~LLFastTimer() - { -#if TIME_FAST_TIMERS - U64 timer_start = get_cpu_clock_count_64(); -#endif -#if FAST_TIMER_ON - NamedTimer::FrameState* frame_state = mFrameState; - U32 cur_time = get_cpu_clock_count_32(); - frame_state->mSelfTimeCounter += cur_time - mStartSelfTime; - - frame_state->mActiveCount--; - LLFastTimer* last_timer = mLastTimer; - sCurTimer = last_timer; - - // store last caller to bootstrap tree creation - frame_state->mLastCaller = last_timer->mFrameState; - - // we are only tracking self time, so subtract our total time delta from parents - U32 total_time = cur_time - mStartTotalTime; - last_timer->mStartSelfTime += total_time; -#endif -#if TIME_FAST_TIMERS - U64 timer_end = get_cpu_clock_count_64(); - sTimerCycles += timer_end - timer_start; - sTimerCalls++; -#endif - } - - - // call this once a frame to reset timers - static void nextFrame(); - - // dumps current cumulative frame stats to log - // call nextFrame() to reset timers - static void dumpCurTimes(); - - // call this to reset timer hierarchy, averages, etc. - static void reset(); - - static U64 countsPerSecond(); - static S32 getLastFrameIndex() { return sLastFrameIndex; } - static S32 getCurFrameIndex() { return sCurFrameIndex; } - - static void writeLog(std::ostream& os); - static const NamedTimer* getTimerByName(const std::string& name); - -public: - static bool sPauseHistory; - static bool sResetHistory; - static U64 sTimerCycles; - static U32 sTimerCalls; - -private: - static LLFastTimer* sCurTimer; - static S32 sCurFrameIndex; - static S32 sLastFrameIndex; - static U64 sLastFrameTime; - static info_list_t* sTimerInfos; - - U32 mStartSelfTime; // start time + time of all child timers - U32 mStartTotalTime; // start time + time of all child timers - NamedTimer::FrameState* mFrameState; - LLFastTimer* mLastTimer; -}; - #endif // LL_LLFASTTIMER_H diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp new file mode 100644 index 0000000000..2e5edb1f3b --- /dev/null +++ b/indra/llcommon/llfasttimer_class.cpp @@ -0,0 +1,768 @@ +/** + * @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 = LLFastTimer::getCPUClockCount64(); +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() + : mActiveTimerRoot(NULL), + mTimerRoot(NULL), + mAppTimer(NULL), + mRootFrameState(NULL) + {} + + /*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() +{ + DeclareTimer::LLInstanceTrackerScopedGuard guard; + // propagate frame state pointers to timer declarations + for (DeclareTimer::instance_iter it = guard.beginInstances(); + it != guard.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() // counts per second for the *32-bit* timer +{ + return sClockResolution >> 8; +} +#else // windows or x86-mac +U64 LLFastTimer::countsPerSecond() // counts per second for the *32-bit* timer +{ + 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 + { + NamedTimer::LLInstanceTrackerScopedGuard guard; + for (instance_iter it = guard.beginInstances(); + it != guard.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 = getCPUClockCount32(); + + // 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; + + { + NamedTimer::LLInstanceTrackerScopedGuard guard; + for (NamedTimer::instance_iter it = guard.beginInstances(); + it != guard.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 + { + NamedTimer::LLInstanceTrackerScopedGuard guard; + for (NamedTimer::instance_iter it = guard.beginInstances(); + it != guard.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 = getCPUClockCount32(); + + // 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 + { + NamedTimer::LLInstanceTrackerScopedGuard guard; + for (NamedTimer::instance_iter it = guard.beginInstances(); + it != guard.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 = getCPUClockCount64(); + 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 = getCPUClockCount32(); + 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 new file mode 100644 index 0000000000..ddb1a74793 --- /dev/null +++ b/indra/llcommon/llfasttimer_class.h @@ -0,0 +1,272 @@ +/** + * @file llfasttimer_class.h + * @brief Declaration of a fast timer. + * + * $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_CLASS_H +#define LL_FASTTIMER_CLASS_H + +#include "llinstancetracker.h" + +#define FAST_TIMER_ON 1 +#define TIME_FAST_TIMERS 0 + +class LLMutex; + +#include <queue> +#include "llsd.h" + +class LL_COMMON_API LLFastTimer +{ +public: + class NamedTimer; + + struct LL_COMMON_API FrameState + { + FrameState(NamedTimer* timerp); + + U32 mSelfTimeCounter; + U32 mCalls; + FrameState* mParent; // info for caller timer + FrameState* mLastCaller; // used to bootstrap tree construction + NamedTimer* mTimer; + U16 mActiveCount; // number of timers with this ID active on stack + bool mMoveUpTree; // needs to be moved up the tree of timers at the end of frame + }; + + // stores a "named" timer instance to be reused via multiple LLFastTimer stack instances + class LL_COMMON_API NamedTimer + : public LLInstanceTracker<NamedTimer> + { + friend class DeclareTimer; + public: + ~NamedTimer(); + + enum { HISTORY_NUM = 60 }; + + const std::string& getName() const { return mName; } + NamedTimer* getParent() const { return mParent; } + void setParent(NamedTimer* parent); + S32 getDepth(); + std::string getToolTip(S32 history_index = -1); + + typedef std::vector<NamedTimer*>::const_iterator child_const_iter; + child_const_iter beginChildren(); + child_const_iter endChildren(); + std::vector<NamedTimer*>& getChildren(); + + void setCollapsed(bool collapsed) { mCollapsed = collapsed; } + bool getCollapsed() const { return mCollapsed; } + + U32 getCountAverage() const { return mCountAverage; } + U32 getCallAverage() const { return mCallAverage; } + + U32 getHistoricalCount(S32 history_index = 0) const; + U32 getHistoricalCalls(S32 history_index = 0) const; + + static NamedTimer& getRootNamedTimer(); + + S32 getFrameStateIndex() const { return mFrameStateIndex; } + + FrameState& getFrameState() const; + + private: + friend class LLFastTimer; + friend class NamedTimerFactory; + + // + // methods + // + NamedTimer(const std::string& name); + // recursive call to gather total time from children + static void accumulateTimings(); + + // updates cumulative times and hierarchy, + // can be called multiple times in a frame, at any point + static void processTimes(); + + static void buildHierarchy(); + static void resetFrame(); + static void reset(); + + // + // members + // + S32 mFrameStateIndex; + + std::string mName; + + U32 mTotalTimeCounter; + + U32 mCountAverage; + U32 mCallAverage; + + U32* mCountHistory; + U32* mCallHistory; + + // tree structure + NamedTimer* mParent; // NamedTimer of caller(parent) + std::vector<NamedTimer*> mChildren; + bool mCollapsed; // don't show children + bool mNeedsSorting; // sort children whenever child added + }; + + // used to statically declare a new named timer + class LL_COMMON_API DeclareTimer + : public LLInstanceTracker<DeclareTimer> + { + friend class LLFastTimer; + public: + DeclareTimer(const std::string& name, bool open); + DeclareTimer(const std::string& name); + + static void updateCachedPointers(); + + private: + NamedTimer& mTimer; + FrameState* mFrameState; + }; + +public: + LLFastTimer(LLFastTimer::FrameState* state); + + LL_FORCE_INLINE LLFastTimer(LLFastTimer::DeclareTimer& timer) + : mFrameState(timer.mFrameState) + { +#if TIME_FAST_TIMERS + U64 timer_start = getCPUClockCount64(); +#endif +#if FAST_TIMER_ON + LLFastTimer::FrameState* frame_state = mFrameState; + mStartTime = getCPUClockCount32(); + + frame_state->mActiveCount++; + frame_state->mCalls++; + // keep current parent as long as it is active when we are + frame_state->mMoveUpTree |= (frame_state->mParent->mActiveCount == 0); + + LLFastTimer::CurTimerData* cur_timer_data = &LLFastTimer::sCurTimerData; + mLastTimerData = *cur_timer_data; + cur_timer_data->mCurTimer = this; + cur_timer_data->mFrameState = frame_state; + cur_timer_data->mChildTime = 0; +#endif +#if TIME_FAST_TIMERS + U64 timer_end = getCPUClockCount64(); + sTimerCycles += timer_end - timer_start; +#endif + } + + LL_FORCE_INLINE ~LLFastTimer() + { +#if TIME_FAST_TIMERS + U64 timer_start = getCPUClockCount64(); +#endif +#if FAST_TIMER_ON + LLFastTimer::FrameState* frame_state = mFrameState; + U32 total_time = getCPUClockCount32() - mStartTime; + + frame_state->mSelfTimeCounter += total_time - LLFastTimer::sCurTimerData.mChildTime; + frame_state->mActiveCount--; + + // store last caller to bootstrap tree creation + // do this in the destructor in case of recursion to get topmost caller + frame_state->mLastCaller = mLastTimerData.mFrameState; + + // we are only tracking self time, so subtract our total time delta from parents + mLastTimerData.mChildTime += total_time; + + LLFastTimer::sCurTimerData = mLastTimerData; +#endif +#if TIME_FAST_TIMERS + U64 timer_end = getCPUClockCount64(); + sTimerCycles += timer_end - timer_start; + sTimerCalls++; +#endif + } + +public: + static LLMutex* sLogLock; + static std::queue<LLSD> sLogQueue; + static BOOL sLog; + static BOOL sMetricLog; + static bool sPauseHistory; + static bool sResetHistory; + static U64 sTimerCycles; + static U32 sTimerCalls; + + typedef std::vector<FrameState> info_list_t; + static info_list_t& getFrameStateList(); + + + // call this once a frame to reset timers + static void nextFrame(); + + // dumps current cumulative frame stats to log + // call nextFrame() to reset timers + static void dumpCurTimes(); + + // call this to reset timer hierarchy, averages, etc. + static void reset(); + + static U64 countsPerSecond(); + static S32 getLastFrameIndex() { return sLastFrameIndex; } + static S32 getCurFrameIndex() { return sCurFrameIndex; } + + static void writeLog(std::ostream& os); + static const NamedTimer* getTimerByName(const std::string& name); + + struct CurTimerData + { + LLFastTimer* mCurTimer; + FrameState* mFrameState; + U32 mChildTime; + }; + 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; + + U32 mStartTime; + LLFastTimer::FrameState* mFrameState; + LLFastTimer::CurTimerData mLastTimerData; + +}; + +typedef class LLFastTimer LLFastTimer; + +#endif // LL_LLFASTTIMER_CLASS_H diff --git a/indra/llcommon/llfoldertype.cpp b/indra/llcommon/llfoldertype.cpp index 079e670b1a..2610fe9e6a 100644 --- a/indra/llcommon/llfoldertype.cpp +++ b/indra/llcommon/llfoldertype.cpp @@ -59,6 +59,11 @@ class LLFolderDictionary : public LLSingleton<LLFolderDictionary>, { public: LLFolderDictionary(); +protected: + virtual LLFolderType::EType notFound() const + { + return LLFolderType::FT_NONE; + } }; LLFolderDictionary::LLFolderDictionary() diff --git a/indra/llcommon/llinstancetracker.cpp b/indra/llcommon/llinstancetracker.cpp new file mode 100644 index 0000000000..c962cb5be1 --- /dev/null +++ b/indra/llcommon/llinstancetracker.cpp @@ -0,0 +1,20 @@ +/** + * @file lllinstancetracker.cpp + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * Copyright (c) 2009, Linden Research, Inc. + * $/LicenseInfo$ + */ + +// Precompiled header +#include "linden_common.h" +// associated header +#include "llinstancetracker.h" +// STL headers +// std headers +// external library headers +// other Linden headers + +// llinstancetracker.h is presently header-only. This file exists only because our CMake +// test macro ADD_BUILD_TEST requires it. +int dummy = 0; diff --git a/indra/llcommon/llinstancetracker.h b/indra/llcommon/llinstancetracker.h index 11fe523651..9df7998273 100644 --- a/indra/llcommon/llinstancetracker.h +++ b/indra/llcommon/llinstancetracker.h @@ -98,7 +98,10 @@ private: mKey = key; getMap_()[key] = static_cast<T*>(this); } - void remove_() { getMap_().erase(mKey); } + void remove_() + { + getMap_().erase(mKey); + } static InstanceMap& getMap_() { @@ -129,31 +132,65 @@ public: /// for completeness of analogy with the generic implementation static T* getInstance(T* k) { return k; } - static key_iter beginKeys() { return getSet_().begin(); } - static key_iter endKeys() { return getSet_().end(); } - static instance_iter beginInstances() { return instance_iter(getSet_().begin()); } - static instance_iter endInstances() { return instance_iter(getSet_().end()); } static S32 instanceCount() { return getSet_().size(); } + // Instantiate this to get access to iterators for this type. It's a 'guard' in the sense + // that it treats deletes of this type as errors as long as there is an instance of + // this class alive in scope somewhere (i.e. deleting while iterating is bad). + class LLInstanceTrackerScopedGuard + { + public: + LLInstanceTrackerScopedGuard() + { + ++sIterationNestDepth; + } + + ~LLInstanceTrackerScopedGuard() + { + --sIterationNestDepth; + } + + static instance_iter beginInstances() { return instance_iter(getSet_().begin()); } + static instance_iter endInstances() { return instance_iter(getSet_().end()); } + static key_iter beginKeys() { return getSet_().begin(); } + static key_iter endKeys() { return getSet_().end(); } + }; + protected: - LLInstanceTracker() { getSet_().insert(static_cast<T*>(this)); } - virtual ~LLInstanceTracker() { getSet_().erase(static_cast<T*>(this)); } + LLInstanceTracker() + { + // it's safe but unpredictable to create instances of this type while all instances are being iterated over. I hate unpredictable. This assert will probably be turned on early in the next development cycle. + //llassert(sIterationNestDepth == 0); + getSet_().insert(static_cast<T*>(this)); + } + virtual ~LLInstanceTracker() + { + // it's unsafe to delete instances of this type while all instances are being iterated over. + llassert(sIterationNestDepth == 0); + getSet_().erase(static_cast<T*>(this)); + } - LLInstanceTracker(const LLInstanceTracker& other) { getSet_().insert(static_cast<T*>(this)); } + LLInstanceTracker(const LLInstanceTracker& other) + { + //llassert(sIterationNestDepth == 0); + getSet_().insert(static_cast<T*>(this)); + } - static InstanceSet& getSet_() // called after getReady() but before go() - { - if (! sInstances) - { - sInstances = new InstanceSet; - } - return *sInstances; - } + static InstanceSet& getSet_() + { + if (! sInstances) + { + sInstances = new InstanceSet; + } + return *sInstances; + } static InstanceSet* sInstances; + static S32 sIterationNestDepth; }; template <typename T, typename KEY> typename LLInstanceTracker<T, KEY>::InstanceMap* LLInstanceTracker<T, KEY>::sInstances = NULL; template <typename T> typename LLInstanceTracker<T, T*>::InstanceSet* LLInstanceTracker<T, T*>::sInstances = NULL; +template <typename T> S32 LLInstanceTracker<T, T*>::sIterationNestDepth = 0; #endif diff --git a/indra/llcommon/lllivefile.cpp b/indra/llcommon/lllivefile.cpp index effda6c49c..5ca90d82ba 100644 --- a/indra/llcommon/lllivefile.cpp +++ b/indra/llcommon/lllivefile.cpp @@ -33,7 +33,7 @@ #include "lllivefile.h" #include "llframetimer.h" -#include "lltimer.h" +#include "lleventtimer.h" const F32 DEFAULT_CONFIG_FILE_REFRESH = 5.0f; diff --git a/indra/llcommon/llpointer.h b/indra/llcommon/llpointer.h index 2c37eadcc6..e6c736a263 100644 --- a/indra/llcommon/llpointer.h +++ b/indra/llcommon/llpointer.h @@ -95,7 +95,6 @@ public: 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/llpreprocessor.h b/indra/llcommon/llpreprocessor.h index 5eefa6a16b..1c1503ca7b 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 \ diff --git a/indra/llcommon/llprocessor.cpp b/indra/llcommon/llprocessor.cpp index 469e544b16..8a4a4a8f9a 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) { diff --git a/indra/llcommon/llrefcount.cpp b/indra/llcommon/llrefcount.cpp index 33b6875fb0..c90b52f482 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 9ab844eb22..a18f6706a9 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 @@ public: 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/llcommon/llsdserialize_xml.cpp b/indra/llcommon/llsdserialize_xml.cpp index 7e1c2e35e0..fca173df47 100644 --- a/indra/llcommon/llsdserialize_xml.cpp +++ b/indra/llcommon/llsdserialize_xml.cpp @@ -139,12 +139,8 @@ S32 LLSDXMLFormatter::format_impl(const LLSD& data, std::ostream& ostr, U32 opti case LLSD::TypeBoolean: ostr << pre << "<boolean>"; if(mBoolAlpha || -#if( LL_WINDOWS || __GNUC__ > 2) (ostr.flags() & std::ios::boolalpha) -#else - (ostr.flags() & 0x0100) -#endif - ) + ) { ostr << (data.asBoolean() ? "true" : "false"); } @@ -511,12 +507,7 @@ void LLSDXMLParser::Impl::reset() mSkipping = false; -#if( LL_WINDOWS || __GNUC__ > 2) mCurrentKey.clear(); -#else - mCurrentKey = std::string(); -#endif - XML_ParserReset(mParser, "utf-8"); XML_SetUserData(mParser, this); @@ -644,11 +635,7 @@ void LLSDXMLParser::Impl::startElementHandler(const XML_Char* name, const XML_Ch LLSD& newElement = map[mCurrentKey]; mStack.push_back(&newElement); -#if( LL_WINDOWS || __GNUC__ > 2) mCurrentKey.clear(); -#else - mCurrentKey = std::string(); -#endif } else if (mStack.back()->isArray()) { diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h index 31e70e0fe4..62cedcde4e 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; } } diff --git a/indra/llcommon/lltimer.cpp b/indra/llcommon/lltimer.cpp index ef3e8dbc94..25b768079b 100644 --- a/indra/llcommon/lltimer.cpp +++ b/indra/llcommon/lltimer.cpp @@ -555,54 +555,3 @@ void secondsToTimecodeString(F32 current_time, std::string& tcstring) } -////////////////////////////////////////////////////////////////////////////// -// -// LLEventTimer Implementation -// -////////////////////////////////////////////////////////////////////////////// - -LLEventTimer::LLEventTimer(F32 period) -: mEventTimer() -{ - mPeriod = period; -} - -LLEventTimer::LLEventTimer(const LLDate& time) -: mEventTimer() -{ - mPeriod = (F32)(time.secondsSinceEpoch() - LLDate::now().secondsSinceEpoch()); -} - - -LLEventTimer::~LLEventTimer() -{ -} - -void LLEventTimer::updateClass() -{ - std::list<LLEventTimer*> completed_timers; - for (instance_iter iter = beginInstances(); iter != endInstances(); ) - { - LLEventTimer& timer = *iter++; - F32 et = timer.mEventTimer.getElapsedTimeF32(); - if (timer.mEventTimer.getStarted() && et > timer.mPeriod) { - timer.mEventTimer.reset(); - if ( timer.tick() ) - { - completed_timers.push_back( &timer ); - } - } - } - - if ( completed_timers.size() > 0 ) - { - for (std::list<LLEventTimer*>::iterator completed_iter = completed_timers.begin(); - completed_iter != completed_timers.end(); - completed_iter++ ) - { - delete *completed_iter; - } - } -} - - diff --git a/indra/llcommon/lltimer.h b/indra/llcommon/lltimer.h index d009c0f5f7..baba95bfa1 100644 --- a/indra/llcommon/lltimer.h +++ b/indra/llcommon/lltimer.h @@ -39,8 +39,6 @@ #include <limits.h> #include "stdtypes.h" -#include "lldate.h" -#include "llinstancetracker.h" #include <string> #include <list> @@ -171,25 +169,6 @@ LL_COMMON_API struct tm* utc_to_pacific_time(time_t utc_time, BOOL pacific_dayli LL_COMMON_API void microsecondsToTimecodeString(U64 current_time, std::string& tcstring); LL_COMMON_API void secondsToTimecodeString(F32 current_time, std::string& tcstring); -// class for scheduling a function to be called at a given frequency (approximate, inprecise) -class LL_COMMON_API LLEventTimer : protected LLInstanceTracker<LLEventTimer> -{ -public: - LLEventTimer(F32 period); // period is the amount of time between each call to tick() in seconds - LLEventTimer(const LLDate& time); - virtual ~LLEventTimer(); - - //function to be called at the supplied frequency - // Normally return FALSE; TRUE will delete the timer after the function returns. - virtual BOOL tick() = 0; - - static void updateClass(); - -protected: - LLTimer mEventTimer; - F32 mPeriod; -}; - U64 LL_COMMON_API totalTime(); // Returns current system time in microseconds #endif diff --git a/indra/llcommon/lltreeiterators.h b/indra/llcommon/lltreeiterators.h index c946566e84..cb1304c54e 100644 --- a/indra/llcommon/lltreeiterators.h +++ b/indra/llcommon/lltreeiterators.h @@ -343,20 +343,20 @@ public: /// 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 @@ private: 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; }; /** @@ -451,21 +451,21 @@ public: /// 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; mPending.push_back(typename list_type::value_type(node, false)); 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; } + /// 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 diff --git a/indra/llcommon/lluri.cpp b/indra/llcommon/lluri.cpp index f6e8f01f0e..9d4f3a98f0 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 diff --git a/indra/llcommon/llworkerthread.cpp b/indra/llcommon/llworkerthread.cpp index 82c736266d..1b0e03cb2a 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) { diff --git a/indra/llcommon/tests/llinstancetracker_test.cpp b/indra/llcommon/tests/llinstancetracker_test.cpp index 7415f2d33b..4bb3ec2922 100644 --- a/indra/llcommon/tests/llinstancetracker_test.cpp +++ b/indra/llcommon/tests/llinstancetracker_test.cpp @@ -138,23 +138,29 @@ namespace tut keys.insert(&one); keys.insert(&two); keys.insert(&three); - for (Unkeyed::key_iter ki(Unkeyed::beginKeys()), kend(Unkeyed::endKeys()); - ki != kend; ++ki) - { - ensure_equals("spurious key", keys.erase(*ki), 1); - } + { + Unkeyed::LLInstanceTrackerScopedGuard guard; + for (Unkeyed::key_iter ki(guard.beginKeys()), kend(guard.endKeys()); + ki != kend; ++ki) + { + ensure_equals("spurious key", keys.erase(*ki), 1); + } + } ensure_equals("unreported key", keys.size(), 0); KeySet instances; instances.insert(&one); instances.insert(&two); instances.insert(&three); - for (Unkeyed::instance_iter ii(Unkeyed::beginInstances()), iend(Unkeyed::endInstances()); - ii != iend; ++ii) - { - Unkeyed& ref = *ii; - ensure_equals("spurious instance", instances.erase(&ref), 1); - } + { + Unkeyed::LLInstanceTrackerScopedGuard guard; + for (Unkeyed::instance_iter ii(guard.beginInstances()), iend(guard.endInstances()); + ii != iend; ++ii) + { + Unkeyed& ref = *ii; + ensure_equals("spurious instance", instances.erase(&ref), 1); + } + } ensure_equals("unreported instance", instances.size(), 0); } } // namespace tut diff --git a/indra/llimage/llimage.cpp b/indra/llimage/llimage.cpp index 575ad5363d..5649b4cab7 100644 --- a/indra/llimage/llimage.cpp +++ b/indra/llimage/llimage.cpp @@ -668,10 +668,13 @@ void LLImageRaw::fill( const LLColor4U& color ) // Src and dst can be any size. Src and dst can each have 3 or 4 components. void LLImageRaw::copy(LLImageRaw* src) { - LLImageRaw* dst = this; // Just for clarity. + if (!src) + { + llwarns << "LLImageRaw::copy called with a null src pointer" << llendl; + return; + } - llassert( (3 == src->getComponents()) || (4 == src->getComponents()) ); - llassert( (3 == dst->getComponents()) || (4 == dst->getComponents()) ); + LLImageRaw* dst = this; // Just for clarity. if( (src->getWidth() == dst->getWidth()) && (src->getHeight() == dst->getHeight()) ) { diff --git a/indra/llimage/llimageworker.cpp b/indra/llimage/llimageworker.cpp index 86d41515e7..20a72d0a28 100644 --- a/indra/llimage/llimageworker.cpp +++ b/indra/llimage/llimageworker.cpp @@ -54,9 +54,14 @@ S32 LLImageDecodeThread::update(U32 max_time_ms) { creation_info& info = *iter; ImageRequest* req = new ImageRequest(info.handle, info.image, - info.priority, info.discard, info.needs_aux, - info.responder); - addRequest(req); + info.priority, info.discard, info.needs_aux, + info.responder); + + bool res = addRequest(req); + if (!res) + { + llerrs << "request added after LLLFSThread::cleanupClass()" << llendl; + } } mCreationList.clear(); S32 res = LLQueuedThread::update(max_time_ms); diff --git a/indra/llimagej2coj/llimagej2coj.cpp b/indra/llimagej2coj/llimagej2coj.cpp index e71429b18d..3af31da083 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 73cb074f1f..8255d5225f 100644 --- a/indra/llimagej2coj/llimagej2coj.h +++ b/indra/llimagej2coj/llimagej2coj.h @@ -51,9 +51,6 @@ protected: // 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 diff --git a/indra/llinventory/llnotecard.cpp b/indra/llinventory/llnotecard.cpp index 9e7e043761..f6e41eecb4 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) { } diff --git a/indra/llinventory/llpermissions.cpp b/indra/llinventory/llpermissions.cpp index d2e5034734..9683252dc4 100644 --- a/indra/llinventory/llpermissions.cpp +++ b/indra/llinventory/llpermissions.cpp @@ -479,7 +479,7 @@ BOOL LLPermissions::setNextOwnerBits(const LLUUID& agent, const LLUUID& group, B return ownership; } -BOOL LLPermissions::allowOperationBy(PermissionBit op, const LLUUID& requester, const LLUUID& group) const +bool LLPermissions::allowOperationBy(PermissionBit op, const LLUUID& requester, const LLUUID& group) const { if(requester.isNull()) { diff --git a/indra/llinventory/llpermissions.h b/indra/llinventory/llpermissions.h index d5a0881c8f..fa20d5c214 100644 --- a/indra/llinventory/llpermissions.h +++ b/indra/llinventory/llpermissions.h @@ -149,7 +149,7 @@ public: const LLUUID& getGroup() const { return mGroup; } // return the agent_id of the last agent owner. Only returns - // LLUUID::null if there has never been a previous owner. + // LLUUID::null if there has never been a previous owner (*note: this is apparently not true, say for textures in inventory, it may return LLUUID::null even if there was a previous owner). const LLUUID& getLastOwner() const { return mLastOwner; } U32 getMaskBase() const { return mMaskBase; } @@ -272,18 +272,18 @@ public: // They also return true if the object isn't owned, or the // requesting agent is a system agent. See llpermissionsflags.h // for bits. - BOOL allowOperationBy(PermissionBit op, const LLUUID& agent, const LLUUID& group = LLUUID::null) const; + bool allowOperationBy(PermissionBit op, const LLUUID& agent, const LLUUID& group = LLUUID::null) const; - inline BOOL allowModifyBy(const LLUUID &agent_id) const; - inline BOOL allowCopyBy(const LLUUID& agent_id) const; - inline BOOL allowMoveBy(const LLUUID& agent_id) const; - inline BOOL allowModifyBy(const LLUUID &agent_id, const LLUUID& group) const; - inline BOOL allowCopyBy(const LLUUID& agent_id, const LLUUID& group) const; - inline BOOL allowMoveBy(const LLUUID &agent_id, const LLUUID &group) const; + inline bool allowModifyBy(const LLUUID &agent_id) const; + inline bool allowCopyBy(const LLUUID& agent_id) const; + inline bool allowMoveBy(const LLUUID& agent_id) const; + inline bool allowModifyBy(const LLUUID &agent_id, const LLUUID& group) const; + inline bool allowCopyBy(const LLUUID& agent_id, const LLUUID& group) const; + inline bool allowMoveBy(const LLUUID &agent_id, const LLUUID &group) const; // This somewhat specialized function is meant for testing if the // current owner is allowed to transfer to the specified agent id. - inline BOOL allowTransferTo(const LLUUID &agent_id) const; + inline bool allowTransferTo(const LLUUID &agent_id) const; // // DEPRECATED. @@ -336,38 +336,38 @@ public: }; // Inlines -BOOL LLPermissions::allowModifyBy(const LLUUID& agent, const LLUUID& group) const +bool LLPermissions::allowModifyBy(const LLUUID& agent, const LLUUID& group) const { return allowOperationBy(PERM_MODIFY, agent, group); } -BOOL LLPermissions::allowCopyBy(const LLUUID& agent, const LLUUID& group) const +bool LLPermissions::allowCopyBy(const LLUUID& agent, const LLUUID& group) const { return allowOperationBy(PERM_COPY, agent, group); } -BOOL LLPermissions::allowMoveBy(const LLUUID& agent, const LLUUID& group) const +bool LLPermissions::allowMoveBy(const LLUUID& agent, const LLUUID& group) const { return allowOperationBy(PERM_MOVE, agent, group); } -BOOL LLPermissions::allowModifyBy(const LLUUID& agent) const +bool LLPermissions::allowModifyBy(const LLUUID& agent) const { return allowOperationBy(PERM_MODIFY, agent, LLUUID::null); } -BOOL LLPermissions::allowCopyBy(const LLUUID& agent) const +bool LLPermissions::allowCopyBy(const LLUUID& agent) const { return allowOperationBy(PERM_COPY, agent, LLUUID::null); } -BOOL LLPermissions::allowMoveBy(const LLUUID& agent) const +bool LLPermissions::allowMoveBy(const LLUUID& agent) const { return allowOperationBy(PERM_MOVE, agent, LLUUID::null); } -BOOL LLPermissions::allowTransferTo(const LLUUID &agent_id) const +bool LLPermissions::allowTransferTo(const LLUUID &agent_id) const { if (mIsGroupOwned) { diff --git a/indra/llmath/llcamera.cpp b/indra/llmath/llcamera.cpp index 21ea4b2e7c..487ed6451f 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(); } @@ -55,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); @@ -648,7 +650,6 @@ void LLCamera::ignoreAgentFrustumPlane(S32 idx) void LLCamera::calcAgentFrustumPlanes(LLVector3* frust) { - for (int i = 0; i < 8; i++) { mAgentFrustum[i] = frust[i]; diff --git a/indra/llmath/llinterp.h b/indra/llmath/llinterp.h index 36ca2e9865..88af004170 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 @@ protected: template <typename Type> LLInterp<Type>::LLInterp() +: mStartVal(Type()), mEndVal(Type()), mCurVal(Type()) { mStartTime = 0.f; mEndTime = 1.f; diff --git a/indra/llmath/llmath.h b/indra/llmath/llmath.h index 7a5d51ff76..209b506c30 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 } diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h index ba8776690a..2f34fb1bb0 100644 --- a/indra/llmath/lloctree.h +++ b/indra/llmath/lloctree.h @@ -183,7 +183,6 @@ public: { mMax.mdV[i] = mCenter.mdV[i] + mSize.mdV[i]; mMin.mdV[i] = mCenter.mdV[i] - mSize.mdV[i]; - mCenter.mdV[i] = mCenter.mdV[i]; } } diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index df4c618ac1..34348230b6 100644 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -3822,6 +3822,7 @@ BOOL LLVolume::cleanupTriangleData( const S32 num_input_vertices, // Generate the vertex mapping and the list of vertices without // duplicates. This will crash if there are no vertices. + llassert(num_input_vertices > 0); // check for no vertices! S32 *vertex_mapping = new S32[num_input_vertices]; LLVector3 *new_vertices = new LLVector3[num_input_vertices]; LLVertexIndexPair *prev_pairp = NULL; @@ -4520,15 +4521,65 @@ BOOL LLVolumeFace::createUnCutCubeCap(LLVolume* volume, BOOL partial_build) if (!partial_build) { - int idxs[] = {0,1,(grid_size+1)+1,(grid_size+1)+1,(grid_size+1),0}; - for(int gx = 0;gx<grid_size;gx++){ - for(int gy = 0;gy<grid_size;gy++){ - if (mTypeMask & TOP_MASK){ - for(int i=5;i>=0;i--)mIndices.push_back(vtop+(gy*(grid_size+1))+gx+idxs[i]); - }else{ - for(int i=0;i<6;i++)mIndices.push_back(vtop+(gy*(grid_size+1))+gx+idxs[i]); + mTriStrip.clear(); + S32 idxs[] = {0,1,(grid_size+1)+1,(grid_size+1)+1,(grid_size+1),0}; + for(S32 gx = 0;gx<grid_size;gx++) + { + + for(S32 gy = 0;gy<grid_size;gy++) + { + if (mTypeMask & TOP_MASK) + { + for(S32 i=5;i>=0;i--) + { + mIndices.push_back(vtop+(gy*(grid_size+1))+gx+idxs[i]); + } + + if (gy == 0) + { + mTriStrip.push_back((gx+1)*(grid_size+1)); + mTriStrip.push_back((gx+1)*(grid_size+1)); + mTriStrip.push_back(gx*(grid_size+1)); + } + + mTriStrip.push_back(gy+1+(gx+1)*(grid_size+1)); + mTriStrip.push_back(gy+1+gx*(grid_size+1)); + + + if (gy == grid_size-1) + { + mTriStrip.push_back(gy+1+gx*(grid_size+1)); + } + } + else + { + for(S32 i=0;i<6;i++) + { + mIndices.push_back(vtop+(gy*(grid_size+1))+gx+idxs[i]); + } + + if (gy == 0) + { + mTriStrip.push_back(gx*(grid_size+1)); + mTriStrip.push_back(gx*(grid_size+1)); + mTriStrip.push_back((gx+1)*(grid_size+1)); + } + + mTriStrip.push_back(gy+1+gx*(grid_size+1)); + mTriStrip.push_back(gy+1+(gx+1)*(grid_size+1)); + + if (gy == grid_size-1) + { + mTriStrip.push_back(gy+1+(gx+1)*(grid_size+1)); + } } } + + } + + if (mTriStrip.size()%2 == 1) + { + mTriStrip.push_back(mTriStrip[mTriStrip.size()-1]); } } @@ -4770,6 +4821,8 @@ BOOL LLVolumeFace::createCap(LLVolume* volume, BOOL partial_build) pt2--; } } + + makeTriStrip(); } else { @@ -4874,67 +4927,108 @@ BOOL LLVolumeFace::createCap(LLVolume* volume, BOOL partial_build) pt2--; } } + + makeTriStrip(); } } else { // Not hollow, generate the triangle fan. + U16 v1 = 2; + U16 v2 = 1; + if (mTypeMask & TOP_MASK) { - if (mTypeMask & OPEN_MASK) - { - // SOLID OPEN TOP - // Generate indices - // This is a tri-fan, so we reuse the same first point for all triangles. - for (S32 i = 0; i < (num_vertices - 2); i++) - { - mIndices[3*i] = num_vertices - 1; - mIndices[3*i+1] = i; - mIndices[3*i+2] = i + 1; - } - } - else - { - // SOLID CLOSED TOP - for (S32 i = 0; i < (num_vertices - 2); i++) - { - //MSMSM fix these caps but only for the un-cut case - mIndices[3*i] = num_vertices - 1; - mIndices[3*i+1] = i; - mIndices[3*i+2] = i + 1; - } - } + v1 = 1; + v2 = 2; + } + + for (S32 i = 0; i < (num_vertices - 2); i++) + { + mIndices[3*i] = num_vertices - 1; + mIndices[3*i+v1] = i; + mIndices[3*i+v2] = i + 1; + } + + //make tri strip + if (mTypeMask & OPEN_MASK) + { + makeTriStrip(); } else { - if (mTypeMask & OPEN_MASK) + S32 j = num_vertices-2; + if (mTypeMask & TOP_MASK) { - // SOLID OPEN BOTTOM - // Generate indices - // This is a tri-fan, so we reuse the same first point for all triangles. - for (S32 i = 0; i < (num_vertices - 2); i++) + mTriStrip.push_back(0); + for (S32 i = 0; i <= j; ++i) { - mIndices[3*i] = num_vertices - 1; - mIndices[3*i+1] = i + 1; - mIndices[3*i+2] = i; + mTriStrip.push_back(i); + if (i != j) + { + mTriStrip.push_back(j); + } + --j; } } else { - // SOLID CLOSED BOTTOM - for (S32 i = 0; i < (num_vertices - 2); i++) + mTriStrip.push_back(j); + for (S32 i = 0; i <= j; ++i) { - //MSMSM fix these caps but only for the un-cut case - mIndices[3*i] = num_vertices - 1; - mIndices[3*i+1] = i + 1; - mIndices[3*i+2] = i; + if (i != j) + { + mTriStrip.push_back(j); + } + mTriStrip.push_back(i); + --j; } } + + mTriStrip.push_back(mTriStrip[mTriStrip.size()-1]); + + if (mTriStrip.size()%2 == 1) + { + mTriStrip.push_back(mTriStrip[mTriStrip.size()-1]); + } } } + return TRUE; } +void LLVolumeFace::makeTriStrip() +{ + for (U32 i = 0; i < mIndices.size(); i+=3) + { + U16 i0 = mIndices[i]; + U16 i1 = mIndices[i+1]; + U16 i2 = mIndices[i+2]; + + if ((i/3)%2 == 1) + { + mTriStrip.push_back(i0); + mTriStrip.push_back(i0); + mTriStrip.push_back(i1); + mTriStrip.push_back(i2); + mTriStrip.push_back(i2); + } + else + { + mTriStrip.push_back(i2); + mTriStrip.push_back(i2); + mTriStrip.push_back(i1); + mTriStrip.push_back(i0); + mTriStrip.push_back(i0); + } + } + + if (mTriStrip.size()%2 == 1) + { + mTriStrip.push_back(mTriStrip[mTriStrip.size()-1]); + } +} + void LLVolumeFace::createBinormals() { LLMemType m1(LLMemType::MTYPE_VOLUME); @@ -5135,9 +5229,14 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build) if (!partial_build) { + mTriStrip.clear(); + // Now we generate the indices. for (t = 0; t < (mNumT-1); t++) { + //prepend terminating index to strip + mTriStrip.push_back(mNumS*t); + for (s = 0; s < (mNumS-1); s++) { mIndices[cur_index++] = s + mNumS*t; //bottom left @@ -5147,6 +5246,14 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build) mIndices[cur_index++] = s+1 + mNumS*t; //bottom right mIndices[cur_index++] = s+1 + mNumS*(t+1); //top right + if (s == 0) + { + mTriStrip.push_back(s+mNumS*t); + mTriStrip.push_back(s+mNumS*(t+1)); + } + mTriStrip.push_back(s+1+mNumS*t); + mTriStrip.push_back(s+1+mNumS*(t+1)); + mEdge[cur_edge++] = (mNumS-1)*2*t+s*2+1; //bottom left/top right neighbor face if (t < mNumT-2) { //top right/top left neighbor face mEdge[cur_edge++] = (mNumS-1)*2*(t+1)+s*2+1; @@ -5187,6 +5294,13 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build) } mEdge[cur_edge++] = (mNumS-1)*2*t+s*2; //top right/bottom left neighbor face } + //append terminating vertex to strip + mTriStrip.push_back(mNumS-1+mNumS*(t+1)); + } + + if (mTriStrip.size()%2 == 1) + { + mTriStrip.push_back(mTriStrip[mTriStrip.size()-1]); } } diff --git a/indra/llmath/llvolume.h b/indra/llmath/llvolume.h index 871b334452..d9f80f0e30 100644 --- a/indra/llmath/llvolume.h +++ b/indra/llmath/llvolume.h @@ -798,7 +798,8 @@ public: BOOL create(LLVolume* volume, BOOL partial_build = FALSE); void createBinormals(); - + void makeTriStrip(); + class VertexData { public: @@ -839,6 +840,7 @@ public: std::vector<VertexData> mVertices; std::vector<U16> mIndices; + std::vector<U16> mTriStrip; std::vector<S32> mEdge; private: diff --git a/indra/llmessage/llares.cpp b/indra/llmessage/llares.cpp index 104629c157..00e77d20e9 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) { } @@ -641,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) { } @@ -701,7 +704,11 @@ bail: } LLSrvRecord::LLSrvRecord(const std::string &name, unsigned ttl) - : LLHostRecord(RES_SRV, name, ttl) + : LLHostRecord(RES_SRV, name, ttl), + + mPriority(0), + mWeight(0), + mPort(0) { } diff --git a/indra/llmessage/llcachename.cpp b/indra/llmessage/llcachename.cpp index 3078d80552..9363b3a8d5 100644 --- a/indra/llmessage/llcachename.cpp +++ b/indra/llmessage/llcachename.cpp @@ -81,6 +81,8 @@ public: }; LLCacheNameEntry::LLCacheNameEntry() + : mIsGroup(false), + mCreateTime(0) { } @@ -125,7 +127,7 @@ private: }; ReplySender::ReplySender(LLMessageSystem* msg) - : mMsg(msg), mPending(false) + : mMsg(msg), mPending(false), mCurrIsGroup(false) { } ReplySender::~ReplySender() diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index dc02367a62..024e17a777 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -89,6 +89,10 @@ S32 gCurlMultiCount = 0; std::vector<LLMutex*> LLCurl::sSSLMutex; std::string LLCurl::sCAPath; std::string LLCurl::sCAFile; +// Verify SSL certificates by default (matches libcurl default). The ability +// to alter this flag is only to allow us to suppress verification if it's +// broken for some reason. +bool LLCurl::sSSLVerify = true; //static void LLCurl::setCAPath(const std::string& path) @@ -103,6 +107,18 @@ void LLCurl::setCAFile(const std::string& file) } //static +void LLCurl::setSSLVerify(bool verify) +{ + sSSLVerify = verify; +} + +//static +bool LLCurl::getSSLVerify() +{ + return sSSLVerify; +} + +//static std::string LLCurl::getVersionString() { return std::string(curl_version()); @@ -465,7 +481,8 @@ void LLCurl::Easy::prepRequest(const std::string& url, setErrorBuffer(); setCA(); - setopt(CURLOPT_SSL_VERIFYPEER, true); + setopt(CURLOPT_SSL_VERIFYPEER, LLCurl::getSSLVerify()); + setopt(CURLOPT_SSL_VERIFYHOST, LLCurl::getSSLVerify()? 2 : 0); setopt(CURLOPT_TIMEOUT, CURL_REQUEST_TIMEOUT); setoptString(CURLOPT_URL, url); @@ -1044,4 +1061,3 @@ void LLCurl::cleanupClass() #endif curl_global_cleanup(); } - diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h index 1bc1767966..caf02cccd9 100644 --- a/indra/llmessage/llcurl.h +++ b/indra/llmessage/llcurl.h @@ -158,6 +158,16 @@ public: static const std::string& getCAPath() { return sCAPath; } /** + * @ brief Set flag controlling whether to verify HTTPS certs. + */ + static void setSSLVerify(bool verify); + + /** + * @ brief Get flag controlling whether to verify HTTPS certs. + */ + static bool getSSLVerify(); + + /** * @ brief Initialize LLCurl class */ static void initClass(); @@ -182,6 +192,7 @@ public: private: static std::string sCAPath; static std::string sCAFile; + static bool sSSLVerify; }; namespace boost diff --git a/indra/llmessage/llhttpassetstorage.cpp b/indra/llmessage/llhttpassetstorage.cpp index 49dbdbd56d..1980735bbb 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; diff --git a/indra/llmessage/llhttpclient.cpp b/indra/llmessage/llhttpclient.cpp index 12ecbb36eb..dd56e18caf 100644 --- a/indra/llmessage/llhttpclient.cpp +++ b/indra/llmessage/llhttpclient.cpp @@ -222,7 +222,7 @@ static void request( LLPumpIO::chain_t chain; LLURLRequest* req = new LLURLRequest(method, url); - req->checkRootCertificate(true); + req->checkRootCertificate(LLCurl::getSSLVerify()); lldebugs << LLURLRequest::actionAsVerb(method) << " " << url << " " diff --git a/indra/llmessage/llhttpnode.h b/indra/llmessage/llhttpnode.h index 915aacb7cc..8212f58653 100644 --- a/indra/llmessage/llhttpnode.h +++ b/indra/llmessage/llhttpnode.h @@ -305,7 +305,7 @@ protected: ~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); diff --git a/indra/llmessage/llinstantmessage.cpp b/indra/llmessage/llinstantmessage.cpp index 3da41939fa..a9e1ee77ef 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) diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp index 97134bd336..27530fbfe1 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() { @@ -111,7 +116,7 @@ private: void nullPipe(); private: - Response() {;} // Must be accessed through LLPointer. + Response() : mPipe(NULL) {} // Must be accessed through LLPointer. LLHTTPPipe* mPipe; }; friend class Response; @@ -403,7 +408,7 @@ void LLHTTPPipe::unlockChain() class LLHTTPResponseHeader : public LLIOPipe { public: - LLHTTPResponseHeader() {} + LLHTTPResponseHeader() : mCode(0) {} virtual ~LLHTTPResponseHeader() {} protected: diff --git a/indra/llmessage/llmessagetemplate.h b/indra/llmessage/llmessagetemplate.h index d7f02ebd85..8abc0aaab2 100644 --- a/indra/llmessage/llmessagetemplate.h +++ b/indra/llmessage/llmessagetemplate.h @@ -82,7 +82,7 @@ protected: 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 @@ public: 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 @@ public: 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; diff --git a/indra/llmessage/llmessagetemplateparser.cpp b/indra/llmessage/llmessagetemplateparser.cpp index 283547ea00..2ddbf3e0df 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()) diff --git a/indra/llmessage/llnamevalue.cpp b/indra/llmessage/llnamevalue.cpp index 01e922eba2..43429b0ab3 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; diff --git a/indra/llmessage/llpacketbuffer.cpp b/indra/llmessage/llpacketbuffer.cpp index 027d35cf89..441e8ddd27 100644 --- a/indra/llmessage/llpacketbuffer.cpp +++ b/indra/llmessage/llpacketbuffer.cpp @@ -42,11 +42,14 @@ LLPacketBuffer::LLPacketBuffer(const LLHost &host, const char *datap, const S32 size) : mHost(host) { + mSize = 0; + mData[0] = '!'; + if (size > NET_BUFFER_SIZE) { 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) { diff --git a/indra/llmessage/lltemplatemessagebuilder.cpp b/indra/llmessage/lltemplatemessagebuilder.cpp index 6400310c46..55379fc6fd 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; + } } } diff --git a/indra/llmessage/lltransfermanager.cpp b/indra/llmessage/lltransfermanager.cpp index d67911e8e2..d64b666ede 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; @@ -1195,6 +1196,7 @@ LLTransferTarget::LLTransferTarget( mType(type), mSourceType(source_type), mID(transfer_id), + mChannelp(NULL), mGotInfo(FALSE), mSize(0), mLastPacketID(-1) diff --git a/indra/llmessage/lltransfersourceasset.cpp b/indra/llmessage/lltransfersourceasset.cpp index 7332f5c954..8f36d516d7 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) { } diff --git a/indra/llmessage/lltransfertargetfile.h b/indra/llmessage/lltransfertargetfile.h index 18b9b52062..92fb8f807c 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; } diff --git a/indra/llmessage/lltransfertargetvfile.h b/indra/llmessage/lltransfertargetvfile.h index 8c2bc7e8bb..cd18d8ce3f 100644 --- a/indra/llmessage/lltransfertargetvfile.h +++ b/indra/llmessage/lltransfertargetvfile.h @@ -68,7 +68,6 @@ protected: LLTTVFCompleteCallback mCompleteCallback; void* mUserDatap; S32 mErrCode; - LLVFSThread::handle_t mHandle; }; diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp index 81b7761ed5..4e7ceff984 100644 --- a/indra/llmessage/llurlrequest.cpp +++ b/indra/llmessage/llurlrequest.cpp @@ -163,6 +163,7 @@ void LLURLRequest::setBodyLimit(U32 size) void LLURLRequest::checkRootCertificate(bool check) { mDetail->mCurlRequest->setopt(CURLOPT_SSL_VERIFYPEER, (check? TRUE : FALSE)); + mDetail->mCurlRequest->setopt(CURLOPT_SSL_VERIFYHOST, (check? 2 : 0)); mDetail->mCurlRequest->setoptString(CURLOPT_ENCODING, ""); } diff --git a/indra/llmessage/llxfer.cpp b/indra/llmessage/llxfer.cpp index 8404f6519d..7aa833ee32 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; diff --git a/indra/llmessage/message.cpp b/indra/llmessage/message.cpp index e56d818d65..916006bc2d 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; } diff --git a/indra/llmessage/partsyspacket.cpp b/indra/llmessage/partsyspacket.cpp index cfb3572d84..2f9e59accb 100644 --- a/indra/llmessage/partsyspacket.cpp +++ b/indra/llmessage/partsyspacket.cpp @@ -144,6 +144,8 @@ LLPartSysCompressedPacket::LLPartSysCompressedPacket() mData[i] = '\0'; } + mNumBytes = 0; + gSetInitDataDefaults(&mDefaults); } diff --git a/indra/llmessage/tests/llareslistener_test.cpp b/indra/llmessage/tests/llareslistener_test.cpp index ac4886ccf4..6ee74c8e7a 100644 --- a/indra/llmessage/tests/llareslistener_test.cpp +++ b/indra/llmessage/tests/llareslistener_test.cpp @@ -4,7 +4,7 @@ * @date 2009-02-26 * @brief Tests of llareslistener.h. * - * $LicenseInfo:firstyear=2009&license=internal$ + * $LicenseInfo:firstyear=2009&license=viewergpl$ * Copyright (c) 2009, Linden Research, Inc. * $/LicenseInfo$ */ diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 1a382643da..6a2449cf4b 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -37,6 +37,8 @@ #include "llpluginclassmedia.h" #include "llpluginmessageclasses.h" +#include "llqtwebkit.h" + static int LOW_PRIORITY_TEXTURE_SIZE_DEFAULT = 256; static int nextPowerOf2( int value ) @@ -102,6 +104,8 @@ void LLPluginClassMedia::reset() mSetMediaHeight = -1; mRequestedMediaWidth = 0; mRequestedMediaHeight = 0; + mRequestedTextureWidth = 0; + mRequestedTextureHeight = 0; mFullMediaWidth = 0; mFullMediaHeight = 0; mTextureWidth = 0; @@ -124,7 +128,8 @@ void LLPluginClassMedia::reset() mCanPaste = false; mMediaName.clear(); mMediaDescription.clear(); - + mBackgroundColor = LLColor4(1.0f, 1.0f, 1.0f, 1.0f); + // media_browser class mNavigateURI.clear(); mNavigateResultCode = -1; @@ -133,6 +138,9 @@ void LLPluginClassMedia::reset() mHistoryForwardAvailable = false; mStatusText.clear(); mProgressPercent = 0; + mClickURL.clear(); + mClickTarget.clear(); + mClickTargetType = TARGET_NONE; // media_time class mCurrentTime = 0.0f; @@ -234,6 +242,10 @@ void LLPluginClassMedia::idle(void) message.setValueS32("height", mRequestedMediaHeight); message.setValueS32("texture_width", mRequestedTextureWidth); message.setValueS32("texture_height", mRequestedTextureHeight); + message.setValueReal("background_r", mBackgroundColor.mV[VX]); + message.setValueReal("background_g", mBackgroundColor.mV[VY]); + message.setValueReal("background_b", mBackgroundColor.mV[VZ]); + message.setValueReal("background_a", mBackgroundColor.mV[VW]); mPlugin->sendMessage(message); // DO NOT just use sendMessage() here -- we want this to jump ahead of the queue. LL_DEBUGS("Plugin") << "Sending size_change" << LL_ENDL; @@ -459,7 +471,7 @@ void LLPluginClassMedia::mouseEvent(EMouseEventType type, int button, int x, int sendMessage(message); } -bool LLPluginClassMedia::keyEvent(EKeyEventType type, int key_code, MASK modifiers) +bool LLPluginClassMedia::keyEvent(EKeyEventType type, int key_code, MASK modifiers, LLSD native_key_data) { bool result = true; @@ -516,6 +528,7 @@ bool LLPluginClassMedia::keyEvent(EKeyEventType type, int key_code, MASK modifie message.setValueS32("key", key_code); message.setValue("modifiers", translateModifiers(modifiers)); + message.setValueLLSD("native_key_data", native_key_data); sendMessage(message); } @@ -534,12 +547,13 @@ void LLPluginClassMedia::scrollEvent(int x, int y, MASK modifiers) sendMessage(message); } -bool LLPluginClassMedia::textInput(const std::string &text, MASK modifiers) +bool LLPluginClassMedia::textInput(const std::string &text, MASK modifiers, LLSD native_key_data) { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "text_event"); message.setValue("text", text); message.setValue("modifiers", translateModifiers(modifiers)); + message.setValueLLSD("native_key_data", native_key_data); sendMessage(message); @@ -664,6 +678,26 @@ void LLPluginClassMedia::paste() sendMessage(message); } +LLPluginClassMedia::ETargetType getTargetTypeFromLLQtWebkit(int target_type) +{ + // convert a LinkTargetType value from llqtwebkit to an ETargetType + // so that we don't expose the llqtwebkit header in viewer code + switch (target_type) + { + case LLQtWebKit::LTT_TARGET_NONE: + return LLPluginClassMedia::TARGET_NONE; + + case LLQtWebKit::LTT_TARGET_BLANK: + return LLPluginClassMedia::TARGET_BLANK; + + case LLQtWebKit::LTT_TARGET_EXTERNAL: + return LLPluginClassMedia::TARGET_EXTERNAL; + + default: + return LLPluginClassMedia::TARGET_OTHER; + } +} + /* virtual */ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) { @@ -916,12 +950,15 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) { mClickURL = message.getValue("uri"); mClickTarget = message.getValue("target"); + U32 target_type = message.getValueU32("target_type"); + mClickTargetType = ::getTargetTypeFromLLQtWebkit(target_type); mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_HREF); } else if(message_name == "click_nofollow") { mClickURL = message.getValue("uri"); mClickTarget.clear(); + mClickTargetType = TARGET_NONE; mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_NOFOLLOW); } else diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index b58067733b..58e91fa0b4 100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -39,7 +39,7 @@ #include "llrect.h" #include "llpluginclassmediaowner.h" #include <queue> - +#include "v4color.h" class LLPluginClassMedia : public LLPluginProcessParentOwner { @@ -86,6 +86,8 @@ public: void setSize(int width, int height); void setAutoScale(bool auto_scale); + void setBackgroundColor(LLColor4 color) { mBackgroundColor = color; }; + // Returns true if all of the texture parameters (depth, format, size, and texture size) are set up and consistent. // This will initially be false, and will also be false for some time after setSize while the resize is processed. // Note that if this returns true, it is safe to use all the get() functions above without checking for invalid return values @@ -112,12 +114,12 @@ public: KEY_EVENT_REPEAT }EKeyEventType; - bool keyEvent(EKeyEventType type, int key_code, MASK modifiers); + bool keyEvent(EKeyEventType type, int key_code, MASK modifiers, LLSD native_key_data); void scrollEvent(int x, int y, MASK modifiers); // Text may be unicode (utf8 encoded) - bool textInput(const std::string &text, MASK modifiers); + bool textInput(const std::string &text, MASK modifiers, LLSD native_key_data); void loadURI(const std::string &uri); @@ -212,6 +214,17 @@ public: // This is valid after MEDIA_EVENT_CLICK_LINK_HREF std::string getClickTarget() const { return mClickTarget; }; + typedef enum + { + TARGET_NONE, // empty href target string + TARGET_BLANK, // target to open link in user's preferred browser + TARGET_EXTERNAL, // target to open link in external browser + TARGET_OTHER // nonempty and unsupported target type + }ETargetType; + + // This is valid after MEDIA_EVENT_CLICK_LINK_HREF + ETargetType getClickTargetType() const { return mClickTargetType; }; + std::string getMediaName() const { return mMediaName; }; std::string getMediaDescription() const { return mMediaDescription; }; @@ -328,6 +341,8 @@ protected: std::string mMediaName; std::string mMediaDescription; + LLColor4 mBackgroundColor; + ///////////////////////////////////////// // media_browser class std::string mNavigateURI; @@ -340,6 +355,7 @@ protected: std::string mLocation; std::string mClickURL; std::string mClickTarget; + ETargetType mClickTargetType; ///////////////////////////////////////// // media_time class diff --git a/indra/llplugin/llpluginmessagepipe.cpp b/indra/llplugin/llpluginmessagepipe.cpp index cc193fca42..1d7ddc5592 100644 --- a/indra/llplugin/llpluginmessagepipe.cpp +++ b/indra/llplugin/llpluginmessagepipe.cpp @@ -304,7 +304,14 @@ void LLPluginMessagePipe::processInput(void) while((delim = mInput.find(MESSAGE_DELIMITER, start)) != std::string::npos) { // Let the owner process this message - mOwner->receiveMessageRaw(mInput.substr(start, delim - start)); + if (mOwner) + { + mOwner->receiveMessageRaw(mInput.substr(start, delim - start)); + } + else + { + LL_WARNS("Plugin") << "!mOwner" << LL_ENDL; + } start = delim + 1; } diff --git a/indra/llplugin/llpluginprocesschild.cpp b/indra/llplugin/llpluginprocesschild.cpp index ccf6dab942..52b5a319ec 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 @@ -54,8 +55,14 @@ LLPluginProcessChild::~LLPluginProcessChild() if(mInstance != NULL) { sendMessageToPlugin(LLPluginMessage("base", "cleanup")); - delete mInstance; - mInstance = NULL; + + // IMPORTANT: under some (unknown) circumstances the apr_dso_unload() triggered when mInstance is deleted + // appears to fail and lock up which means that a given instance of the slplugin process never exits. + // This is bad, especially when users try to update their version of SL - it fails because the slplugin + // process as well as a bunch of plugin specific files are locked and cannot be overwritten. + exit( 0 ); + //delete mInstance; + //mInstance = NULL; } } @@ -271,14 +278,21 @@ bool LLPluginProcessChild::isDone(void) void LLPluginProcessChild::sendMessageToPlugin(const LLPluginMessage &message) { - std::string buffer = message.generate(); - - LL_DEBUGS("Plugin") << "Sending to plugin: " << buffer << LL_ENDL; - LLTimer elapsed; - - mInstance->sendMessage(buffer); - - mCPUElapsed += elapsed.getElapsedTimeF64(); + if (mInstance) + { + std::string buffer = message.generate(); + + LL_DEBUGS("Plugin") << "Sending to plugin: " << buffer << LL_ENDL; + LLTimer elapsed; + + mInstance->sendMessage(buffer); + + mCPUElapsed += elapsed.getElapsedTimeF64(); + } + else + { + LL_WARNS("Plugin") << "mInstance == NULL" << LL_ENDL; + } } void LLPluginProcessChild::sendMessageToParent(const LLPluginMessage &message) @@ -353,6 +367,7 @@ void LLPluginProcessChild::receiveMessageRaw(const std::string &message) else { LL_WARNS("Plugin") << "Couldn't create a shared memory segment!" << LL_ENDL; + delete region; } } diff --git a/indra/llplugin/llpluginprocesschild.h b/indra/llplugin/llpluginprocesschild.h index 1cfd9dcaf9..58f8935ed1 100644 --- a/indra/llplugin/llpluginprocesschild.h +++ b/indra/llplugin/llpluginprocesschild.h @@ -89,8 +89,9 @@ private: 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; diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp index 49f9783824..efd5df687e 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; diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp index 23dc532ba5..77240ce546 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; } diff --git a/indra/llprimitive/llmaterialtable.cpp b/indra/llprimitive/llmaterialtable.cpp index 18787c47c5..774a58c8ac 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) { } diff --git a/indra/llprimitive/llmaterialtable.h b/indra/llprimitive/llmaterialtable.h index 2c0b046fa7..77f29a8e06 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 @@ public: 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 diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp index 5ad758072c..b75d1b0f67 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; diff --git a/indra/llprimitive/tests/llmediaentry_test.cpp b/indra/llprimitive/tests/llmediaentry_test.cpp index 277e370ca4..88cd96ebe4 100644 --- a/indra/llprimitive/tests/llmediaentry_test.cpp +++ b/indra/llprimitive/tests/llmediaentry_test.cpp @@ -157,14 +157,9 @@ namespace namespace tut { - bool llsd_equals(const LLSD& a, const LLSD& b) { - // cheesy, brute force, but it works - return std::string(ll_pretty_print_sd(a)) == std::string(ll_pretty_print_sd(b)); - } - void ensure_llsd_equals(const std::string& msg, const LLSD& expected, const LLSD& actual) { - if (!tut::llsd_equals(expected, actual)) + if (!llsd_equals(expected, actual)) { std::string message = msg; message += ": actual: "; diff --git a/indra/llrender/llcubemap.cpp b/indra/llrender/llcubemap.cpp index 08a96b4e31..036714e5cb 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()) { diff --git a/indra/llrender/llfontbitmapcache.cpp b/indra/llrender/llfontbitmapcache.cpp index f01878642a..fa231c9e6a 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]; @@ -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]; diff --git a/indra/llrender/llfontfreetype.cpp b/indra/llrender/llfontfreetype.cpp index 786dc64452..a86bbbffff 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 { } @@ -112,6 +113,7 @@ LLFontFreetype::LLFontFreetype() mFTFace(NULL), mRenderGlyphCount(0), mAddGlyphCount(0), + mStyle(0), mPointSize(0) { } @@ -268,6 +270,14 @@ F32 LLFontFreetype::getXAdvance(llwchar wch) const return (F32)mFontBitmapCachep->getMaxCharWidth(); } +F32 LLFontFreetype::getXAdvance(const LLFontGlyphInfo* glyph) const +{ + if (mFTFace == NULL) + return 0.0; + + return glyph->mXAdvance; +} + F32 LLFontFreetype::getXKerning(llwchar char_left, llwchar char_right) const { if (mFTFace == NULL) @@ -287,6 +297,21 @@ F32 LLFontFreetype::getXKerning(llwchar char_left, llwchar char_right) const return delta.x*(1.f/64.f); } +F32 LLFontFreetype::getXKerning(const LLFontGlyphInfo* left_glyph_info, const LLFontGlyphInfo* right_glyph_info) const +{ + if (mFTFace == NULL) + return 0.0; + + U32 left_glyph = left_glyph_info ? left_glyph_info->mGlyphIndex : 0; + U32 right_glyph = right_glyph_info ? right_glyph_info->mGlyphIndex : 0; + + FT_Vector delta; + + llverify(!FT_Get_Kerning(mFTFace, left_glyph, right_glyph, ft_kerning_unfitted, &delta)); + + return delta.x*(1.f/64.f); +} + BOOL LLFontFreetype::hasGlyph(llwchar wch) const { llassert(!mIsFallback); @@ -502,8 +527,13 @@ void LLFontFreetype::resetBitmapCache() mCharGlyphInfoMap.clear(); mFontBitmapCachep->reset(); - // Add the empty glyph - addGlyphFromFont(this, 0, 0); + // Adding default glyph is skipped for fallback fonts here as well as in loadFace(). + // This if was added as fix for EXT-4971. + if(!mIsFallback) + { + // Add the empty glyph + addGlyphFromFont(this, 0, 0); + } } void LLFontFreetype::destroyGL() diff --git a/indra/llrender/llfontfreetype.h b/indra/llrender/llfontfreetype.h index 7a5d029038..f60d09316d 100644 --- a/indra/llrender/llfontfreetype.h +++ b/indra/llrender/llfontfreetype.h @@ -128,7 +128,9 @@ public: }; F32 getXAdvance(llwchar wc) const; + F32 getXAdvance(const LLFontGlyphInfo* glyph) const; F32 getXKerning(llwchar char_left, llwchar char_right) const; // Get the kerning between the two characters + F32 getXKerning(const LLFontGlyphInfo* left_glyph_info, const LLFontGlyphInfo* right_glyph_info) const; // Get the kerning between the two characters LLFontGlyphInfo* getGlyphInfo(llwchar wch) const; diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp index 37a28ac721..768f042e69 100644 --- a/indra/llrender/llfontgl.cpp +++ b/indra/llrender/llfontgl.cpp @@ -151,14 +151,16 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons } } - gGL.pushMatrix(); - glLoadIdentity(); - gGL.translatef(floorf(sCurOrigin.mX*sScaleX), floorf(sCurOrigin.mY*sScaleY), sCurOrigin.mZ); + gGL.pushUIMatrix(); + + gGL.loadUIIdentity(); + + gGL.translateUI(floorf(sCurOrigin.mX*sScaleX), floorf(sCurOrigin.mY*sScaleY), sCurOrigin.mZ); // this code snaps the text origin to a pixel grid to start with F32 pixel_offset_x = llround((F32)sCurOrigin.mX) - (sCurOrigin.mX); F32 pixel_offset_y = llround((F32)sCurOrigin.mY) - (sCurOrigin.mY); - gGL.translatef(-pixel_offset_x, -pixel_offset_y, 0.f); + gGL.translateUI(-pixel_offset_x, -pixel_offset_y, 0.f); LLFastTimer t(FTM_RENDER_FONTS); @@ -246,14 +248,18 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons } - // Remember last-used texture to avoid unnecesssary bind calls. - LLImageGL *last_bound_texture = NULL; + const LLFontGlyphInfo* next_glyph = NULL; for (i = begin_offset; i < begin_offset + length; i++) { llwchar wch = wstr[i]; - const LLFontGlyphInfo* fgi= mFontFreetype->getGlyphInfo(wch); + const LLFontGlyphInfo* fgi = next_glyph; + next_glyph = NULL; + if(!fgi) + { + fgi = mFontFreetype->getGlyphInfo(wch); + } if (!fgi) { llerrs << "Missing Glyph Info" << llendl; @@ -261,12 +267,8 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons } // Per-glyph bitmap texture. LLImageGL *image_gl = mFontFreetype->getFontBitmapCache()->getImageGL(fgi->mBitmapNum); - if (last_bound_texture != image_gl) - { - gGL.getTexUnit(0)->bind(image_gl); - last_bound_texture = image_gl; - } - + gGL.getTexUnit(0)->bind(image_gl); + if ((start_x + scaled_max_pixels) < (cur_x + fgi->mXBearing + fgi->mWidth)) { // Not enough room for this character. @@ -295,7 +297,8 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons if (next_char && (next_char < LAST_CHARACTER)) { // Kern this puppy. - cur_x += mFontFreetype->getXKerning(wch, next_char); + next_glyph = mFontFreetype->getGlyphInfo(next_char); + cur_x += mFontFreetype->getXKerning(fgi, next_glyph); } // Round after kerning. @@ -330,10 +333,7 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons // recursively render ellipses at end of string // we've already reserved enough room - gGL.pushMatrix(); - //glLoadIdentity(); - //gGL.translatef(sCurOrigin.mX, sCurOrigin.mY, 0.0f); - //glScalef(sScaleX, sScaleY, 1.f); + gGL.pushUIMatrix(); renderUTF8(std::string("..."), 0, cur_x / sScaleX, (F32)y, @@ -344,10 +344,10 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons S32_MAX, max_pixels, right_x, FALSE); - gGL.popMatrix(); + gGL.popUIMatrix(); } - gGL.popMatrix(); + gGL.popUIMatrix(); return chars_drawn; } @@ -435,14 +435,21 @@ F32 LLFontGL::getWidthF32(const llwchar* wchars, S32 begin_offset, S32 max_chars F32 cur_x = 0; const S32 max_index = begin_offset + max_chars; + const LLFontGlyphInfo* next_glyph = NULL; + F32 width_padding = 0.f; for (S32 i = begin_offset; i < max_index && wchars[i] != 0; i++) { llwchar wch = wchars[i]; - const LLFontGlyphInfo* fgi= mFontFreetype->getGlyphInfo(wch); + const LLFontGlyphInfo* fgi = next_glyph; + next_glyph = NULL; + if(!fgi) + { + fgi = mFontFreetype->getGlyphInfo(wch); + } - F32 advance = mFontFreetype->getXAdvance(wch); + F32 advance = mFontFreetype->getXAdvance(fgi); // for the last character we want to measure the greater of its width and xadvance values // so keep track of the difference between these values for the each character we measure @@ -459,7 +466,8 @@ F32 LLFontGL::getWidthF32(const llwchar* wchars, S32 begin_offset, S32 max_chars && (next_char < LAST_CHARACTER)) { // Kern this puppy. - cur_x += mFontFreetype->getXKerning(wch, next_char); + next_glyph = mFontFreetype->getGlyphInfo(next_char); + cur_x += mFontFreetype->getXKerning(fgi, next_glyph); } // Round after kerning. cur_x = (F32)llround(cur_x); @@ -472,7 +480,7 @@ F32 LLFontGL::getWidthF32(const llwchar* wchars, S32 begin_offset, S32 max_chars } // Returns the max number of complete characters from text (up to max_chars) that can be drawn in max_pixels -S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars, BOOL end_on_word_boundary) const +S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars, EWordWrapStyle end_on_word_boundary) const { if (!wchars || !wchars[0] || max_chars == 0) { @@ -492,6 +500,8 @@ S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_ch // avoid S32 overflow when max_pixels == S32_MAX by staying in floating point F32 scaled_max_pixels = ceil(max_pixels * sScaleX); F32 width_padding = 0.f; + + LLFontGlyphInfo* next_glyph = NULL; S32 i; for (i=0; (i < max_chars); i++) @@ -534,8 +544,13 @@ S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_ch in_word = TRUE; } } - - LLFontGlyphInfo* fgi = mFontFreetype->getGlyphInfo(wch); + + LLFontGlyphInfo* fgi = next_glyph; + next_glyph = NULL; + if(!fgi) + { + fgi = mFontFreetype->getGlyphInfo(wch); + } // account for glyphs that run beyond the starting point for the next glyphs width_padding = llmax( 0.f, // always use positive padding amount @@ -554,7 +569,8 @@ S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_ch if (((i+1) < max_chars) && wchars[i+1]) { // Kern this puppy. - cur_x += mFontFreetype->getXKerning(wch, wchars[i+1]); + next_glyph = mFontFreetype->getGlyphInfo(wchars[i+1]); + cur_x += mFontFreetype->getXKerning(fgi, next_glyph); } // Round after kerning. @@ -562,9 +578,24 @@ S32 LLFontGL::maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_ch drawn_x = cur_x; } - if( clip && end_on_word_boundary && (start_of_last_word != 0) ) + if( clip ) { - i = start_of_last_word; + switch (end_on_word_boundary) + { + case ONLY_WORD_BOUNDARIES: + i = start_of_last_word; + break; + case WORD_BOUNDARY_IF_POSSIBLE: + if (start_of_last_word != 0) + { + i = start_of_last_word; + } + break; + default: + case ANYWHERE: + // do nothing + break; + } } return i; } @@ -586,14 +617,20 @@ S32 LLFontGL::firstDrawableChar(const llwchar* wchars, F32 max_pixels, S32 text_ { llwchar wch = wchars[i]; - F32 char_width = mFontFreetype->getXAdvance(wch); + const LLFontGlyphInfo* fgi= mFontFreetype->getGlyphInfo(wch); + + // last character uses character width, since the whole character needs to be visible + // other characters just use advance + F32 width = (i == start) + ? (F32)(fgi->mWidth + fgi->mXBearing) // use actual width for last character + : fgi->mXAdvance; // use advance for all other characters - if( scaled_max_pixels < (total_width + char_width) ) + if( scaled_max_pixels < (total_width + width) ) { break; } - total_width += char_width; + total_width += width; drawable_chars++; if( max_chars >= 0 && drawable_chars >= max_chars ) @@ -611,7 +648,17 @@ S32 LLFontGL::firstDrawableChar(const llwchar* wchars, F32 max_pixels, S32 text_ total_width = llround(total_width); } - return start_pos - drawable_chars; + if (drawable_chars == 0) + { + return start_pos; // just draw last character + } + else + { + // if only 1 character is drawable, we want to return start_pos as the first character to draw + // if 2 are drawable, return start_pos and character before start_pos, etc. + return start_pos + 1 - drawable_chars; + } + } S32 LLFontGL::charFromPixelOffset(const llwchar* wchars, S32 begin_offset, F32 target_x, F32 max_pixels, S32 max_chars, BOOL round) const @@ -629,6 +676,8 @@ S32 LLFontGL::charFromPixelOffset(const llwchar* wchars, S32 begin_offset, F32 t const S32 max_index = begin_offset + llmin(S32_MAX - begin_offset, max_chars); F32 scaled_max_pixels = max_pixels * sScaleX; + + const LLFontGlyphInfo* next_glyph = NULL; S32 pos; for (pos = begin_offset; pos < max_index; pos++) @@ -638,7 +687,15 @@ S32 LLFontGL::charFromPixelOffset(const llwchar* wchars, S32 begin_offset, F32 t { break; // done } - F32 char_width = mFontFreetype->getXAdvance(wch); + + const LLFontGlyphInfo* glyph = next_glyph; + next_glyph = NULL; + if(!glyph) + { + glyph = mFontFreetype->getGlyphInfo(wch); + } + + F32 char_width = mFontFreetype->getXAdvance(glyph); if (round) { @@ -664,11 +721,12 @@ S32 LLFontGL::charFromPixelOffset(const llwchar* wchars, S32 begin_offset, F32 t if (((pos + 1) < max_index) && (wchars[(pos + 1)])) { - llwchar next_char = wchars[pos + 1]; // Kern this puppy. - cur_x += mFontFreetype->getXKerning(wch, next_char); + next_glyph = mFontFreetype->getGlyphInfo(wchars[pos + 1]); + cur_x += mFontFreetype->getXKerning(glyph, next_glyph); } + // Round after kerning. cur_x = llround(cur_x); } diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h index ea8eee7690..dfa4cf8ce5 100644 --- a/indra/llrender/llfontgl.h +++ b/indra/llrender/llfontgl.h @@ -122,7 +122,13 @@ public: // The following are called often, frequently with large buffers, so do not use a string interface // Returns the max number of complete characters from text (up to max_chars) that can be drawn in max_pixels - S32 maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars = S32_MAX, BOOL end_on_word_boundary = FALSE) const; + typedef enum e_word_wrap_style + { + ONLY_WORD_BOUNDARIES, + WORD_BOUNDARY_IF_POSSIBLE, + ANYWHERE + } EWordWrapStyle ; + S32 maxDrawableChars(const llwchar* wchars, F32 max_pixels, S32 max_chars = S32_MAX, EWordWrapStyle end_on_word_boundary = ANYWHERE) const; // Returns the index of the first complete characters from text that can be drawn in max_pixels // given that the character at start_pos should be the last character (or as close to last as possible). diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index 3400a72385..a3f7a946ec 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; @@ -1919,6 +1921,16 @@ LLGLDepthTest::LLGLDepthTest(GLboolean depth_enabled, GLboolean write_enabled, G : mPrevDepthEnabled(sDepthEnabled), mPrevDepthFunc(sDepthFunc), mPrevWriteEnabled(sWriteEnabled) { stop_glerror(); + + checkState(); + + if (!depth_enabled) + { // always disable depth writes if depth testing is disabled + // GL spec defines this as a requirement, but some implementations allow depth writes with testing disabled + // The proper way to write to depth buffer with testing disabled is to enable testing and use a depth_func of GL_ALWAYS + write_enabled = FALSE; + } + if (depth_enabled != sDepthEnabled) { gGL.flush(); @@ -1942,6 +1954,7 @@ LLGLDepthTest::LLGLDepthTest(GLboolean depth_enabled, GLboolean write_enabled, G LLGLDepthTest::~LLGLDepthTest() { + checkState(); if (sDepthEnabled != mPrevDepthEnabled ) { gGL.flush(); @@ -1963,6 +1976,32 @@ LLGLDepthTest::~LLGLDepthTest() } } +void LLGLDepthTest::checkState() +{ + if (gDebugGL) + { + GLint func = 0; + GLboolean mask = FALSE; + + glGetIntegerv(GL_DEPTH_FUNC, &func); + glGetBooleanv(GL_DEPTH_WRITEMASK, &mask); + + if (glIsEnabled(GL_DEPTH_TEST) != sDepthEnabled || + sWriteEnabled != mask || + sDepthFunc != func) + { + if (gDebugSession) + { + gFailLog << "Unexpected depth testing state." << std::endl; + } + else + { + LL_GL_ERRS << "Unexpected depth testing state." << LL_ENDL; + } + } + } +} + LLGLClampToFarClip::LLGLClampToFarClip(glh::matrix4f P) { for (U32 i = 0; i < 4; i++) diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index 830617063b..ca92cb6580 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) { } diff --git a/indra/llrender/llglstates.h b/indra/llrender/llglstates.h index 4a51cac438..968a37cab0 100644 --- a/indra/llrender/llglstates.h +++ b/indra/llrender/llglstates.h @@ -46,6 +46,8 @@ public: ~LLGLDepthTest(); + void checkState(); + GLboolean mPrevDepthEnabled; GLenum mPrevDepthFunc; GLboolean mPrevWriteEnabled; diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index f8d7ea00e0..36ac3ff119 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -428,49 +428,58 @@ LLImageGL::~LLImageGL() void LLImageGL::init(BOOL usemipmaps) { -#ifdef DEBUG_MISS - mMissed = FALSE; -#endif + // keep these members in the same order as declared in llimagehl.h + // so that it is obvious by visual inspection if we forgot to + // init a field. + + mTextureMemory = 0; + mLastBindTime = 0.f; + + mPickMask = NULL; + mPickMaskWidth = 0; + mPickMaskHeight = 0; + mUseMipMaps = usemipmaps; + mHasExplicitFormat = FALSE; + mAutoGenMips = FALSE; + + mIsMask = FALSE; + mNeedsAlphaAndPickMask = TRUE ; + mAlphaStride = 0 ; + mAlphaOffset = 0 ; + + mGLTextureCreated = FALSE ; + mTexName = 0; + mWidth = 0; + mHeight = 0; + mCurrentDiscardLevel = -1; - mPickMask = NULL; - mTextureMemory = 0; - mLastBindTime = 0.f; + mDiscardLevelInAtlas = -1 ; + mTexelsInAtlas = 0 ; + mTexelsInGLTexture = 0 ; - mTarget = GL_TEXTURE_2D; - mBindTarget = LLTexUnit::TT_TEXTURE; - mUseMipMaps = usemipmaps; - mHasMipMaps = false; - mAutoGenMips = FALSE; - mTexName = 0; - mIsResident = 0; + mTarget = GL_TEXTURE_2D; + mBindTarget = LLTexUnit::TT_TEXTURE; + mHasMipMaps = false; + + mIsResident = 0; + + mComponents = 0; + mMaxDiscardLevel = MAX_DISCARD_LEVEL; mTexOptionsDirty = true; mAddressMode = LLTexUnit::TAM_WRAP; mFilterOption = LLTexUnit::TFO_ANISOTROPIC; - mWidth = 0; - mHeight = 0; - mComponents = 0; - - mMaxDiscardLevel = MAX_DISCARD_LEVEL; - mCurrentDiscardLevel = -1; mFormatInternal = -1; mFormatPrimary = (LLGLenum) 0; mFormatType = GL_UNSIGNED_BYTE; mFormatSwapBytes = FALSE; - mHasExplicitFormat = FALSE; - mGLTextureCreated = FALSE ; - - mIsMask = FALSE; - mCategory = -1 ; - mAlphaStride = 0 ; - mAlphaOffset = 0 ; - mNeedsAlphaAndPickMask = TRUE ; +#ifdef DEBUG_MISS + mMissed = FALSE; +#endif - mDiscardLevelInAtlas = -1 ; - mTexelsInAtlas = 0 ; - mTexelsInGLTexture = 0 ; + mCategory = -1; } void LLImageGL::cleanup() @@ -520,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; @@ -1668,24 +1682,25 @@ 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) + mFormatPrimary != GL_RGBA) { //cannot generate a pick mask for this texture - delete [] mPickMask; - mPickMask = NULL; return; } - U32 pick_width = width/2; - U32 pick_height = height/2; - - U32 size = llmax(pick_width, (U32) 1) * llmax(pick_height, (U32) 1); + U32 pick_width = width/2 + 1; + U32 pick_height = height/2 + 1; - size = size/8 + 1; - - delete[] mPickMask; + U32 size = pick_width * pick_height; + size = (size + 7) / 8; // pixelcount-to-bits mPickMask = new U8[size]; + mPickMaskWidth = pick_width; + mPickMaskHeight = pick_height; memset(mPickMask, 0, sizeof(U8) * size); @@ -1701,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; } @@ -1720,22 +1732,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)) { - llerrs << "WTF?" << llendl; + 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 = llfloor(u * mPickMaskWidth); + S32 y = llfloor(v * mPickMaskHeight); + + 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, mPickMaskWidth-1); + } + 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, 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 937065043c..f0870c3fc4 100644 --- a/indra/llrender/llimagegl.h +++ b/indra/llrender/llimagegl.h @@ -193,6 +193,8 @@ public: 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; @@ -224,7 +226,7 @@ protected: bool mTexOptionsDirty; LLTexUnit::eTextureAddressMode mAddressMode; // Defaults to TAM_WRAP - LLTexUnit::eTextureFilterOptions mFilterOption; // Defaults to TFO_TRILINEAR + LLTexUnit::eTextureFilterOptions mFilterOption; // Defaults to TFO_ANISOTROPIC LLGLint mFormatInternal; // = GL internalformat LLGLenum mFormatPrimary; // = GL format (pixel data format) diff --git a/indra/llrender/llpostprocess.cpp b/indra/llrender/llpostprocess.cpp index 7f4be6a866..bc7f30cdef 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)); diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index fc45df8153..656f690db5 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -49,6 +49,9 @@ F64 gGLLastProjection[16]; F64 gGLProjection[16]; S32 gGLViewport[4]; +U32 LLRender::sUICalls = 0; +U32 LLRender::sUIVerts = 0; + static const U32 LL_NUM_TEXTURE_LAYERS = 16; static GLenum sGLTextureType[] = @@ -90,7 +93,9 @@ static GLenum sGLBlendFactor[] = GL_DST_ALPHA, GL_SRC_ALPHA, GL_ONE_MINUS_DST_ALPHA, - GL_ONE_MINUS_SRC_ALPHA + GL_ONE_MINUS_SRC_ALPHA, + + GL_ZERO // 'BF_UNDEF' }; LLTexUnit::LLTexUnit(S32 index) @@ -162,6 +167,8 @@ void LLTexUnit::enable(eTextureType type) disable(); // Force a disable of a previous texture type if it's enabled. } mCurrTexType = type; + + gGL.flush(); glEnable(sGLTextureType[type]); } } @@ -253,10 +260,9 @@ bool LLTexUnit::bind(LLImageGL* texture, bool for_rendering, bool forceBind) return false ; } - gGL.flush(); - if ((mCurrTexture != texture->getTexName()) || forceBind) { + gGL.flush(); activate(); enable(texture->getTarget()); mCurrTexture = texture->getTexName(); @@ -443,6 +449,8 @@ void LLTexUnit::setTextureBlendType(eTextureBlendType type) return; } + gGL.flush(); + activate(); mCurrBlendType = type; S32 scale_amount = 1; @@ -731,8 +739,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); @@ -754,6 +765,8 @@ LLRender::LLRender() mCurrAlphaFunc = CF_DEFAULT; mCurrAlphaFuncVal = 0.01f; + mCurrBlendSFactor = BF_UNDEF; + mCurrBlendDFactor = BF_UNDEF; } LLRender::~LLRender() @@ -816,6 +829,80 @@ void LLRender::popMatrix() glPopMatrix(); } +void LLRender::translateUI(F32 x, F32 y, F32 z) +{ + if (mUIOffset.empty()) + { + llerrs << "Need to push a UI translation frame before offsetting" << llendl; + } + + mUIOffset.front().mV[0] += x; + mUIOffset.front().mV[1] += y; + mUIOffset.front().mV[2] += z; +} + +void LLRender::scaleUI(F32 x, F32 y, F32 z) +{ + if (mUIScale.empty()) + { + llerrs << "Need to push a UI transformation frame before scaling." << llendl; + } + + mUIScale.front().scaleVec(LLVector3(x,y,z)); +} + +void LLRender::pushUIMatrix() +{ + mUIOffset.push_front(mUIOffset.front()); + if (mUIScale.empty()) + { + mUIScale.push_front(LLVector3(1,1,1)); + } + else + { + mUIScale.push_front(mUIScale.front()); + } +} + +void LLRender::popUIMatrix() +{ + if (mUIOffset.empty()) + { + llerrs << "UI offset stack blown." << llendl; + } + mUIOffset.pop_front(); + mUIScale.pop_front(); +} + +LLVector3 LLRender::getUITranslation() +{ + if (mUIOffset.empty()) + { + llerrs << "UI offset stack empty." << llendl; + } + return mUIOffset.front(); +} + +LLVector3 LLRender::getUIScale() +{ + if (mUIScale.empty()) + { + llerrs << "UI scale stack empty." << llendl; + } + return mUIScale.front(); +} + + +void LLRender::loadUIIdentity() +{ + if (mUIOffset.empty()) + { + llerrs << "Need to push UI translation frame before clearing offset." << llendl; + } + mUIOffset.front().setVec(0,0,0); + mUIScale.front().setVec(1,1,1); +} + void LLRender::setColorMask(bool writeColor, bool writeAlpha) { setColorMask(writeColor, writeColor, writeColor, writeAlpha); @@ -838,29 +925,28 @@ void LLRender::setColorMask(bool writeColorR, bool writeColorG, bool writeColorB void LLRender::setSceneBlendType(eBlendType type) { - flush(); switch (type) { case BT_ALPHA: - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + blendFunc(BF_SOURCE_ALPHA, BF_ONE_MINUS_SOURCE_ALPHA); break; case BT_ADD: - glBlendFunc(GL_ONE, GL_ONE); + blendFunc(BF_ONE, BF_ONE); break; case BT_ADD_WITH_ALPHA: - glBlendFunc(GL_SRC_ALPHA, GL_ONE); + blendFunc(BF_SOURCE_ALPHA, BF_ONE); break; case BT_MULT: - glBlendFunc(GL_DST_COLOR, GL_ZERO); + blendFunc(BF_DEST_COLOR, BF_ZERO); break; case BT_MULT_ALPHA: - glBlendFunc(GL_DST_ALPHA, GL_ZERO); + blendFunc(BF_DEST_ALPHA, BF_ZERO); break; case BT_MULT_X2: - glBlendFunc(GL_DST_COLOR, GL_SRC_COLOR); + blendFunc(BF_DEST_COLOR, BF_SOURCE_COLOR); break; case BT_REPLACE: - glBlendFunc(GL_ONE, GL_ZERO); + blendFunc(BF_ONE, BF_ZERO); break; default: llerrs << "Unknown Scene Blend Type: " << type << llendl; @@ -886,8 +972,15 @@ void LLRender::setAlphaRejectSettings(eCompareFunc func, F32 value) void LLRender::blendFunc(eBlendFactor sfactor, eBlendFactor dfactor) { - flush(); - glBlendFunc(sGLBlendFactor[sfactor], sGLBlendFactor[dfactor]); + llassert(sfactor < BF_UNDEF); + llassert(dfactor < BF_UNDEF); + if (mCurrBlendSFactor != sfactor || mCurrBlendDFactor != dfactor) + { + mCurrBlendSFactor = sfactor; + mCurrBlendDFactor = dfactor; + flush(); + glBlendFunc(sGLBlendFactor[sfactor], sGLBlendFactor[dfactor]); + } } LLTexUnit* LLRender::getTexUnit(U32 index) @@ -1007,6 +1100,12 @@ void LLRender::flush() } #endif + if (!mUIOffset.empty()) + { + sUICalls++; + sUIVerts += mCount; + } + mBuffer->setBuffer(immediate_mask); mBuffer->drawArrays(mMode, 0, mCount); @@ -1026,7 +1125,16 @@ void LLRender::vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z) return; } - mVerticesp[mCount] = LLVector3(x,y,z); + if (mUIOffset.empty()) + { + mVerticesp[mCount] = LLVector3(x,y,z); + } + else + { + LLVector3 vert = (LLVector3(x,y,z)+mUIOffset.front()).scaledVec(mUIScale.front()); + mVerticesp[mCount] = vert; + } + mCount++; if (mCount < 4096) { diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h index 0121a190ee..a90fbd4a5c 100644 --- a/indra/llrender/llrender.h +++ b/indra/llrender/llrender.h @@ -270,7 +270,9 @@ public: BF_DEST_ALPHA, BF_SOURCE_ALPHA, BF_ONE_MINUS_DEST_ALPHA, - BF_ONE_MINUS_SOURCE_ALPHA + BF_ONE_MINUS_SOURCE_ALPHA, + + BF_UNDEF } eBlendFactor; LLRender(); @@ -286,6 +288,14 @@ public: void pushMatrix(); void popMatrix(); + void translateUI(F32 x, F32 y, F32 z); + void scaleUI(F32 x, F32 y, F32 z); + void pushUIMatrix(); + void popUIMatrix(); + void loadUIIdentity(); + LLVector3 getUITranslation(); + LLVector3 getUIScale(); + void flush(); void begin(const GLuint& mode); @@ -333,7 +343,9 @@ public: }; public: - + static U32 sUICalls; + static U32 sUIVerts; + private: bool mDirty; U32 mCount; @@ -350,7 +362,14 @@ private: std::vector<LLTexUnit*> mTexUnits; LLTexUnit* mDummyTexUnit; + eBlendFactor mCurrBlendSFactor; + eBlendFactor mCurrBlendDFactor; + F32 mMaxAnisotropy; + + std::list<LLVector3> mUIOffset; + std::list<LLVector3> mUIScale; + }; extern F64 gGLModelView[16]; diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index db4189dfea..bf5eda21eb 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; } @@ -237,7 +241,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; @@ -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; } @@ -267,7 +272,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; @@ -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; } @@ -292,7 +298,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; @@ -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; @@ -1061,17 +1082,20 @@ void LLVertexBuffer::setBuffer(U32 data_mask) } } - glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff); - if ((GLuint)buff != mGLIndices) + if (mGLIndices) { - if (gDebugSession) - { - error = TRUE; - gFailLog << "Invalid GL index buffer bound: " << buff << std::endl; - } - else + glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff); + if ((GLuint)buff != mGLIndices) { - llerrs << "Invalid GL index buffer bound: " << buff << llendl; + if (gDebugSession) + { + error = TRUE; + gFailLog << "Invalid GL index buffer bound: " << buff << std::endl; + } + else + { + llerrs << "Invalid GL index buffer bound: " << buff << llendl; + } } } } @@ -1095,17 +1119,20 @@ void LLVertexBuffer::setBuffer(U32 data_mask) } } - glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff); - if ((GLuint)buff != mGLIndices) + if (mGLIndices != 0) { - if (gDebugSession) - { - error = TRUE; - gFailLog << "Invalid GL index buffer bound: "<< std::endl; - } - else + glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, &buff); + if ((GLuint)buff != mGLIndices) { - llerrs << "Invalid GL index buffer bound: " << buff << llendl; + if (gDebugSession) + { + error = TRUE; + gFailLog << "Invalid GL index buffer bound: "<< std::endl; + } + else + { + llerrs << "Invalid GL index buffer bound: " << buff << llendl; + } } } } diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt index 82ec02d2eb..853f6f173d 100644 --- a/indra/llui/CMakeLists.txt +++ b/indra/llui/CMakeLists.txt @@ -26,6 +26,8 @@ include_directories( ) set(llui_SOURCE_FILES + llaccordionctrl.cpp + llaccordionctrltab.cpp llbutton.cpp llcheckboxctrl.cpp llclipboard.cpp @@ -88,6 +90,7 @@ set(llui_SOURCE_FILES lltextbox.cpp lltexteditor.cpp lltextparser.cpp + lltextvalidate.cpp lltransutil.cpp lltoggleablemenu.cpp lltooltip.cpp @@ -111,6 +114,8 @@ set(llui_SOURCE_FILES set(llui_HEADER_FILES CMakeLists.txt + llaccordionctrl.h + llaccordionctrltab.h llbutton.h llcallbackmap.h llcheckboxctrl.h @@ -178,6 +183,7 @@ set(llui_HEADER_FILES lltextbox.h lltexteditor.h lltextparser.h + lltextvalidate.h lltoggleablemenu.h lltooltip.h lltransutil.h diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp new file mode 100644 index 0000000000..aa69dfe0cc --- /dev/null +++ b/indra/llui/llaccordionctrl.cpp @@ -0,0 +1,712 @@ +/** + * @file llaccordionctrl.cpp + * @brief Accordion panel implementation + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 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" + +#include "llaccordionctrl.h" +#include "llaccordionctrltab.h" + +#include "lluictrlfactory.h" // builds floaters from XML + +#include "llwindow.h" +#include "llfocusmgr.h" +#include "lllocalcliprect.h" + +#include "boost/bind.hpp" + +static const S32 DRAGGER_BAR_MARGIN = 4; +static const S32 DRAGGER_BAR_HEIGHT = 5; +static const S32 BORDER_MARGIN = 2; +static const S32 PARENT_BORDER_MARGIN = 5; + +static const S32 panel_delta = DRAGGER_BAR_MARGIN; // Distanse between two panels + +static const S32 HORIZONTAL_MULTIPLE = 8; +static const S32 VERTICAL_MULTIPLE = 16; +static const F32 MIN_AUTO_SCROLL_RATE = 120.f; +static const F32 MAX_AUTO_SCROLL_RATE = 500.f; +static const F32 AUTO_SCROLL_RATE_ACCEL = 120.f; + + +// LLAccordionCtrl =================================================================| + +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) + { + llinfos << "fit_parent works best when combined with single_expansion" << llendl; + } +} + +LLAccordionCtrl::LLAccordionCtrl() : LLPanel() + , mAutoScrolling( false ) + , mAutoScrollRate( 0.f ) +{ + mSingleExpansion = false; + mFitParent = false; + LLUICtrlFactory::getInstance()->buildPanel(this, "accordion_parent.xml"); +} + +//--------------------------------------------------------------------------------- +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); + + LLPanel::draw(); + /* + S32 width = getRect().getWidth(); + S32 height = getRect().getHeight(); + + gl_rect_2d(0, 0 , width - 1 ,height - 1,LLColor4::green,true); + gl_line_2d(0, 0 , width - 1 ,height - 1,LLColor4::black); + */ +} + + +//--------------------------------------------------------------------------------- +BOOL LLAccordionCtrl::postBuild() +{ + static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0); + + LLRect scroll_rect; + scroll_rect.setOriginAndSize( + getRect().getWidth() - scrollbar_size, + 1, + scrollbar_size, + getRect().getHeight() - 1); + + + LLScrollbar::Params sbparams; + sbparams.name("scrollable vertical"); + sbparams.rect(scroll_rect); + sbparams.orientation(LLScrollbar::VERTICAL); + sbparams.doc_size(mInnerRect.getHeight()); + sbparams.doc_pos(0); + sbparams.page_size(mInnerRect.getHeight()); + sbparams.step_size(VERTICAL_MULTIPLE); + sbparams.follows.flags(FOLLOWS_RIGHT | FOLLOWS_TOP | FOLLOWS_BOTTOM); + sbparams.change_callback(boost::bind(&LLAccordionCtrl::onScrollPosChangeCallback, this, _1, _2)); + + mScrollbar = LLUICtrlFactory::create<LLScrollbar> (sbparams); + LLView::addChild( mScrollbar ); + mScrollbar->setVisible( false ); + mScrollbar->setFollowsRight(); + mScrollbar->setFollowsTop(); + mScrollbar->setFollowsBottom(); + + //if it was created from xml... + std::vector<LLUICtrl*> accordion_tabs; + for(child_list_const_iter_t it = getChildList()->begin(); + getChildList()->end() != it; ++it) + { + LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(*it); + if(accordion_tab == NULL) + continue; + if(std::find(mAccordionTabs.begin(),mAccordionTabs.end(),accordion_tab) == mAccordionTabs.end()) + { + accordion_tabs.push_back(accordion_tab); + } + } + + for(std::vector<LLUICtrl*>::reverse_iterator it = accordion_tabs.rbegin();it!=accordion_tabs.rend();++it) + addCollapsibleCtrl(*it); + + arrange (); + + if(mSingleExpansion) + { + if(!mAccordionTabs[0]->getDisplayChildren()) + mAccordionTabs[0]->setDisplayChildren(true); + for(size_t i=1;i<mAccordionTabs.size();++i) + { + if(mAccordionTabs[i]->getDisplayChildren()) + mAccordionTabs[i]->setDisplayChildren(false); + } + } + + return TRUE; +} + + +//--------------------------------------------------------------------------------- +LLAccordionCtrl::~LLAccordionCtrl() +{ + mAccordionTabs.clear(); +} + +//--------------------------------------------------------------------------------- + +void LLAccordionCtrl::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + // adjust our rectangle + LLRect rcLocal = getRect(); + rcLocal.mRight = rcLocal.mLeft + width; + rcLocal.mTop = rcLocal.mBottom + height; + + setRect(rcLocal); + + arrange(); +} + +//--------------------------------------------------------------------------------- +BOOL LLAccordionCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask) +{ + return LLPanel::handleRightMouseDown(x, y, mask); +} + +//--------------------------------------------------------------------------------- +void LLAccordionCtrl::shiftAccordionTabs(S16 panel_num, S32 delta) +{ + for(size_t i = panel_num; i < mAccordionTabs.size(); i++ ) + { + ctrlShiftVertical(mAccordionTabs[i],delta); + } +} + + +//--------------------------------------------------------------------------------- +void LLAccordionCtrl::onCollapseCtrlCloseOpen(S16 panel_num) +{ + if(mSingleExpansion) + { + for(size_t i=0;i<mAccordionTabs.size();++i) + { + if(i==panel_num) + continue; + if(mAccordionTabs[i]->getDisplayChildren()) + mAccordionTabs[i]->setDisplayChildren(false); + } + + } + arrange(); +} + +void LLAccordionCtrl::show_hide_scrollbar(S32 width, S32 height) +{ + calcRecuiredHeight(); + if(getRecuiredHeight() > height ) + showScrollbar(width,height); + else + hideScrollbar(width,height); +} + +void LLAccordionCtrl::showScrollbar(S32 width, S32 height) +{ + bool was_visible = mScrollbar->getVisible(); + + mScrollbar->setVisible(true); + + static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0); + + ctrlSetLeftTopAndSize(mScrollbar + ,width-scrollbar_size - PARENT_BORDER_MARGIN/2 + ,height-PARENT_BORDER_MARGIN + ,scrollbar_size + ,height-2*PARENT_BORDER_MARGIN); + + mScrollbar->setPageSize(height); + mScrollbar->setDocParams(mInnerRect.getHeight(),mScrollbar->getDocPos()); + + if(was_visible) + { + S32 scroll_pos = llmin(mScrollbar->getDocPos(), getRecuiredHeight() - height - 1); + mScrollbar->setDocPos(scroll_pos); + } +} + +void LLAccordionCtrl::hideScrollbar( S32 width, S32 height ) +{ + if(mScrollbar->getVisible() == false) + return; + mScrollbar->setVisible(false); + + static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0); + + S32 panel_width = width - 2*BORDER_MARGIN; + + //reshape all accordeons and shift all draggers + for(size_t i=0;i<mAccordionTabs.size();++i) + { + LLRect panel_rect = mAccordionTabs[i]->getRect(); + ctrlSetLeftTopAndSize(mAccordionTabs[i],panel_rect.mLeft,panel_rect.mTop,panel_width,panel_rect.getHeight()); + } + + mScrollbar->setDocPos(0); + + if(mAccordionTabs.size()>0) + { + S32 panel_top = height - BORDER_MARGIN; // Top coordinate of the first panel + S32 diff = panel_top - mAccordionTabs[0]->getRect().mTop; + shiftAccordionTabs(0,diff); + } +} + + +//--------------------------------------------------------------------------------- +S32 LLAccordionCtrl::calcRecuiredHeight() +{ + S32 rec_height = 0; + + std::vector<LLAccordionCtrlTab*>::iterator panel; + for(panel=mAccordionTabs.begin(); panel!=mAccordionTabs.end(); ++panel) + { + LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(*panel); + if(accordion_tab && accordion_tab->getVisible()) + { + rec_height += accordion_tab->getRect().getHeight(); + } + } + + mInnerRect.setLeftTopAndSize(0,rec_height + BORDER_MARGIN*2,getRect().getWidth(),rec_height + BORDER_MARGIN); + + return mInnerRect.getHeight(); +} + +//--------------------------------------------------------------------------------- +void LLAccordionCtrl::ctrlSetLeftTopAndSize(LLView* panel, S32 left, S32 top, S32 width, S32 height) +{ + if(!panel) + return; + LLRect panel_rect = panel->getRect(); + panel_rect.setLeftTopAndSize( left, top, width, height); + panel->reshape( width, height, 1); + panel->setRect(panel_rect); +} + +void LLAccordionCtrl::ctrlShiftVertical(LLView* panel,S32 delta) +{ + if(!panel) + return; + panel->translate(0,delta); +} + +//--------------------------------------------------------------------------------- + +void LLAccordionCtrl::addCollapsibleCtrl(LLView* view) +{ + LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(view); + if(!accordion_tab) + return; + if(std::find(getChildList()->begin(),getChildList()->end(),accordion_tab) == getChildList()->end()) + addChild(accordion_tab); + mAccordionTabs.push_back(accordion_tab); + + accordion_tab->setDropDownStateChangedCallback( boost::bind(&LLAccordionCtrl::onCollapseCtrlCloseOpen, this, mAccordionTabs.size() - 1) ); + +} + +void LLAccordionCtrl::arrangeSinge() +{ + S32 panel_left = BORDER_MARGIN; // Margin from left side of Splitter + S32 panel_top = getRect().getHeight() - BORDER_MARGIN; // Top coordinate of the first panel + S32 panel_width = getRect().getWidth() - 4; // Top coordinate of the first panel + S32 panel_height; + + S32 collapsed_height = 0; + + for(size_t i=0;i<mAccordionTabs.size();++i) + { + LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[i]); + + if(accordion_tab->getVisible() == false) //skip hidden accordion tabs + continue; + if(!accordion_tab->isExpanded() ) + { + collapsed_height+=mAccordionTabs[i]->getRect().getHeight(); + } + } + + S32 expanded_height = getRect().getHeight() - BORDER_MARGIN - collapsed_height; + + for(size_t i=0;i<mAccordionTabs.size();++i) + { + LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[i]); + + if(accordion_tab->getVisible() == false) //skip hidden accordion tabs + continue; + if(!accordion_tab->isExpanded() ) + { + panel_height = accordion_tab->getRect().getHeight(); + } + else + { + panel_height = expanded_height; + } + ctrlSetLeftTopAndSize(mAccordionTabs[i], panel_left, panel_top, panel_width, panel_height); + panel_top-=mAccordionTabs[i]->getRect().getHeight(); + } +} + +void LLAccordionCtrl::arrangeMultiple() +{ + S32 panel_left = BORDER_MARGIN; // Margin from left side of Splitter + S32 panel_top = getRect().getHeight() - BORDER_MARGIN; // Top coordinate of the first panel + S32 panel_width = getRect().getWidth() - 4; // Top coordinate of the first panel + + //Calculate params + for(size_t i = 0; i < mAccordionTabs.size(); i++ ) + { + LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[i]); + + if(accordion_tab->getVisible() == false) //skip hidden accordion tabs + continue; + + if(!accordion_tab->isExpanded() ) + { + ctrlSetLeftTopAndSize(mAccordionTabs[i], panel_left, panel_top, panel_width, accordion_tab->getRect().getHeight()); + panel_top-=mAccordionTabs[i]->getRect().getHeight(); + } + else + { + S32 panel_height = accordion_tab->getRect().getHeight(); + + if(mFitParent) + { + // all expanded tabs will have equal height + panel_height = calcExpandedTabHeight(i, panel_top); + ctrlSetLeftTopAndSize(accordion_tab, panel_left, panel_top, panel_width, panel_height); + + // try to make accordion tab fit accordion view height. + // Accordion View should implement getRequiredRect() and provide valid height + S32 optimal_height = accordion_tab->getAccordionView()->getRequiredRect().getHeight(); + optimal_height += accordion_tab->getHeaderHeight() + 2 * BORDER_MARGIN; + if(optimal_height < panel_height) + { + panel_height = optimal_height; + } + + // minimum tab height is equal to header height + if(mAccordionTabs[i]->getHeaderHeight() > panel_height) + { + panel_height = mAccordionTabs[i]->getHeaderHeight(); + } + } + + ctrlSetLeftTopAndSize(mAccordionTabs[i], panel_left, panel_top, panel_width, panel_height); + panel_top-=panel_height; + + } + } + + show_hide_scrollbar(getRect().getWidth(),getRect().getHeight()); + + updateLayout(getRect().getWidth(),getRect().getHeight()); +} + + +void LLAccordionCtrl::arrange() +{ + if( mAccordionTabs.size() == 0) + { + //We do not arrange if we do not have what should be arranged + return; + } + + + if(mAccordionTabs.size() == 1) + { + S32 panel_top = getRect().getHeight() - BORDER_MARGIN; // Top coordinate of the first panel + S32 panel_width = getRect().getWidth() - 4; // Top coordinate of the first panel + + LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[0]); + + LLRect panel_rect = accordion_tab->getRect(); + + S32 panel_height = getRect().getHeight() - 2*BORDER_MARGIN; + + ctrlSetLeftTopAndSize(accordion_tab,panel_rect.mLeft,panel_top,panel_width,panel_height); + + show_hide_scrollbar(getRect().getWidth(),getRect().getHeight()); + return; + + } + + if(mSingleExpansion) + arrangeSinge (); + else + arrangeMultiple (); +} + +//--------------------------------------------------------------------------------- + +BOOL LLAccordionCtrl::handleScrollWheel ( S32 x, S32 y, S32 clicks ) +{ + if(LLPanel::handleScrollWheel(x,y,clicks)) + return TRUE; + if( mScrollbar->getVisible() && mScrollbar->handleScrollWheel( 0, 0, clicks ) ) + return TRUE; + return false; + +} + +BOOL LLAccordionCtrl::handleKeyHere (KEY key, MASK mask) +{ + if( mScrollbar->getVisible() && mScrollbar->handleKeyHere( key,mask ) ) + return TRUE; + 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 ; + if(mScrollbar->getVisible()) + panel_top+=mScrollbar->getDocPos(); + + S32 panel_width = width - 2*BORDER_MARGIN; + + static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0); + if(mScrollbar->getVisible()) + panel_width-=scrollbar_size; + + //set sizes for first panels and dragbars + for(size_t i=0;i<mAccordionTabs.size();++i) + { + if(!mAccordionTabs[i]->getVisible()) + continue; + LLRect panel_rect = mAccordionTabs[i]->getRect(); + ctrlSetLeftTopAndSize(mAccordionTabs[i],panel_rect.mLeft,panel_top,panel_width,panel_rect.getHeight()); + panel_top-=panel_rect.getHeight(); + } +} + +void LLAccordionCtrl::onScrollPosChangeCallback(S32, LLScrollbar*) +{ + updateLayout(getRect().getWidth(),getRect().getHeight()); +} +void LLAccordionCtrl::onOpen (const LLSD& key) +{ + for(size_t i=0;i<mAccordionTabs.size();++i) + { + LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[i]); + LLPanel* panel = dynamic_cast<LLPanel*>(accordion_tab->getAccordionView()); + if(panel!=NULL) + { + panel->onOpen(key); + } + } +} +S32 LLAccordionCtrl::notifyParent(const LLSD& info) +{ + if(info.has("action")) + { + std::string str_action = info["action"]; + if(str_action == "size_changes") + { + // + arrange(); + return 1; + } + else if(str_action == "select_next") + { + for(size_t i=0;i<mAccordionTabs.size();++i) + { + LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[i]); + if(accordion_tab->hasFocus()) + { + while(++i<mAccordionTabs.size()) + { + if(mAccordionTabs[i]->getVisible()) + break; + } + if(i<mAccordionTabs.size()) + { + accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[i]); + accordion_tab->notify(LLSD().with("action","select_first")); + return 1; + } + break; + } + } + return 0; + } + else if(str_action == "select_prev") + { + for(size_t i=0;i<mAccordionTabs.size();++i) + { + LLAccordionCtrlTab* accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[i]); + if(accordion_tab->hasFocus() && i>0) + { + while(i>0) + { + if(mAccordionTabs[--i]->getVisible()) + break; + } + + accordion_tab = dynamic_cast<LLAccordionCtrlTab*>(mAccordionTabs[i]); + accordion_tab->notify(LLSD().with("action","select_last")); + return 1; + } + } + return 0; + } + } + else if (info.has("scrollToShowRect")) + { + LLRect screen_rc, local_rc; + screen_rc.setValue(info["scrollToShowRect"]); + screenRectToLocal(screen_rc, &local_rc); + + // Translate to parent coordinatess to check if we are in visible rectangle + local_rc.translate( getRect().mLeft, getRect().mBottom ); + + if ( !getRect().contains (local_rc) ) + { + // Back to local coords and calculate position for scroller + S32 bottom = mScrollbar->getDocPos() - local_rc.mBottom + getRect().mBottom; + S32 top = mScrollbar->getDocPos() - local_rc.mTop + getRect().mTop; + + S32 scroll_pos = llclamp(mScrollbar->getDocPos(), + bottom, // min vertical scroll + top); // max vertical scroll + + mScrollbar->setDocPos( scroll_pos ); + } + return 1; + } + return LLPanel::notifyParent(info); +} +void LLAccordionCtrl::reset () +{ + if(mScrollbar) + mScrollbar->setDocPos(0); +} + +S32 LLAccordionCtrl::calcExpandedTabHeight(S32 tab_index /* = 0 */, S32 available_height /* = 0 */) +{ + if(tab_index < 0) + { + return available_height; + } + + S32 collapsed_tabs_height = 0; + S32 num_expanded = 0; + + for(size_t n = tab_index; n < mAccordionTabs.size(); ++n) + { + if(!mAccordionTabs[n]->isExpanded()) + { + collapsed_tabs_height += mAccordionTabs[n]->getHeaderHeight(); + } + else + { + ++num_expanded; + } + } + + if(0 == num_expanded) + { + return available_height; + } + + S32 expanded_tab_height = available_height - collapsed_tabs_height - BORDER_MARGIN; // top BORDER_MARGIN is added in arrange(), here we add bottom BORDER_MARGIN + expanded_tab_height /= num_expanded; + return expanded_tab_height; +} diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h new file mode 100644 index 0000000000..7c29e545b7 --- /dev/null +++ b/indra/llui/llaccordionctrl.h @@ -0,0 +1,135 @@ +/** + * @file LLAccordionCtrl.h + * @brief Accordion Panel implementation + * + * $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_ACCORDIONCTRL_H +#define LL_ACCORDIONCTRL_H + +#include "llpanel.h" +#include "llscrollbar.h" + +#include <vector> +#include <algorithm> +#include <string> + +class LLAccordionCtrlTab; + +class LLAccordionCtrl: public LLPanel +{ +private: + + std::vector<LLAccordionCtrlTab*> mAccordionTabs; + + void ctrlSetLeftTopAndSize(LLView* panel, S32 left, S32 top, S32 width, S32 height); + void ctrlShiftVertical(LLView* panel,S32 delta); + + void onCollapseCtrlCloseOpen(S16 panel_num); + void shiftAccordionTabs(S16 panel_num, S32 delta); + + +public: + struct Params + : public LLInitParam::Block<Params, LLPanel::Params> + { + Optional<bool> single_expansion, + fit_parent; /* Accordion will fit its parent size, controls that are placed into + accordion tabs are responsible for scrolling their content. + *NOTE fit_parent works best when combined with single_expansion. + Accordion view should implement getRequiredRect() and provide valid height*/ + + Params() + : single_expansion("single_expansion",false) + , fit_parent("fit_parent", false) + {}; + }; + + LLAccordionCtrl(const Params& params); + + LLAccordionCtrl(); + virtual ~LLAccordionCtrl(); + + virtual BOOL postBuild(); + + 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 + virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); + + void addCollapsibleCtrl(LLView* view); + void arrange(); + + + void draw(); + + void onScrollPosChangeCallback(S32, LLScrollbar*); + + void onOpen (const LLSD& key); + S32 notifyParent(const LLSD& info); + + void reset (); + +private: + void arrangeSinge(); + void arrangeMultiple(); + + // Calc Splitter's height that is necessary to display all child content + S32 calcRecuiredHeight(); + S32 getRecuiredHeight() const { return mInnerRect.getHeight(); } + S32 calcExpandedTabHeight(S32 tab_index = 0, S32 available_height = 0); + + void updateLayout (S32 width, S32 height); + + void show_hide_scrollbar (S32 width, S32 height); + + 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; +}; + + +#endif // LL_LLSPLITTER_H diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp new file mode 100644 index 0000000000..daa9e08f14 --- /dev/null +++ b/indra/llui/llaccordionctrltab.cpp @@ -0,0 +1,634 @@ +/** + * @file LLAccordionCtrlTab.cpp + * @brief Collapsible control implementation + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 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" + +#include "lluictrl.h" + +#include "llaccordionctrltab.h" + +#include "lltextbox.h" + +static const std::string DD_BUTTON_NAME = "dd_button"; +static const std::string DD_TEXTBOX_NAME = "dd_textbox"; +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"); + +class LLAccordionCtrlTab::LLAccordionCtrlTabHeader : public LLUICtrl +{ +public: + friend class LLUICtrlFactory; + + struct Params : public LLInitParam::Block<Params, LLAccordionCtrlTab::Params> + { + Params(); + }; + + LLAccordionCtrlTabHeader(const LLAccordionCtrlTabHeader::Params& p); + + virtual ~LLAccordionCtrlTabHeader(); + + virtual void draw(); + + virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); + + virtual BOOL postBuild(); + + void setTitle(const std::string& title); + + 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; + + // Overlay images (arrows) + LLPointer<LLUIImage> mImageCollapsed; + LLPointer<LLUIImage> mImageExpanded; + LLPointer<LLUIImage> mImageCollapsedPressed; + LLPointer<LLUIImage> mImageExpandedPressed; + + // Background images + LLPointer<LLUIImage> mImageHeader; + LLPointer<LLUIImage> mImageHeaderOver; + LLPointer<LLUIImage> mImageHeaderPressed; + LLPointer<LLUIImage> mImageHeaderFocused; + + LLUIColor mHeaderBGColor; + + bool mNeedsHighlight; + + LLFrameTimer mAutoOpenTimer; +}; + +LLAccordionCtrlTab::LLAccordionCtrlTabHeader::Params::Params() +{ +} + +LLAccordionCtrlTab::LLAccordionCtrlTabHeader::LLAccordionCtrlTabHeader( + const LLAccordionCtrlTabHeader::Params& p) +: LLUICtrl(p) +, mHeaderBGColor(p.header_bg_color()) +,mNeedsHighlight(false), + mImageCollapsed(p.header_collapse_img), + mImageCollapsedPressed(p.header_collapse_img_pressed), + mImageExpanded(p.header_expand_img), + mImageExpandedPressed(p.header_expand_img_pressed), + mImageHeader(p.header_image), + mImageHeaderOver(p.header_image_over), + mImageHeaderPressed(p.header_image_pressed), + mImageHeaderFocused(p.header_image_focused) +{ + LLTextBox::Params textboxParams; + textboxParams.name(DD_TEXTBOX_NAME); + textboxParams.initial_value(p.title()); + textboxParams.text_color(p.header_text_color()); + textboxParams.follows.flags(FOLLOWS_NONE); + textboxParams.font( p.font() ); + textboxParams.font_shadow(LLFontGL::NO_SHADOW); + textboxParams.use_ellipses = true; + textboxParams.bg_visible = false; + textboxParams.mouse_opaque = false; + mHeaderTextbox = LLUICtrlFactory::create<LLTextBox>(textboxParams); + addChild(mHeaderTextbox); +} + +LLAccordionCtrlTab::LLAccordionCtrlTabHeader::~LLAccordionCtrlTabHeader() +{ +} + +BOOL LLAccordionCtrlTab::LLAccordionCtrlTabHeader::postBuild() +{ + return TRUE; +} + +void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::setTitle(const std::string& title) +{ + if(mHeaderTextbox) + mHeaderTextbox->setText(title); +} + +void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::draw() +{ + S32 width = getRect().getWidth(); + S32 height = getRect().getHeight(); + + gl_rect_2d(0,0,width - 1 ,height - 1,mHeaderBGColor.get(),true); + + LLAccordionCtrlTab* parent = dynamic_cast<LLAccordionCtrlTab*>(getParent()); + bool collapsible = (parent && parent->getCollapsible()); + bool expanded = (parent && parent->getDisplayChildren()); + + // Handle overlay images, if needed + // Only show green "focus" background image if the accordion is open, + // because the user's mental model of focus is that it goes away after + // the accordion is closed. + if (getParent()->hasFocus() + /*&& !(collapsible && !expanded)*/ // WHY?? + ) + { + mImageHeaderFocused->draw(0,0,width,height); + } + else + { + mImageHeader->draw(0,0,width,height); + } + + if(mNeedsHighlight) + { + mImageHeaderOver->draw(0,0,width,height); + } + + + if(collapsible) + { + LLPointer<LLUIImage> overlay_image; + if(expanded) + { + overlay_image = mImageExpanded; + } + else + { + overlay_image = mImageCollapsed; + } + overlay_image->draw(HEADER_IMAGE_LEFT_OFFSET, + (height - overlay_image->getHeight()) / 2); + } + + LLUICtrl::draw(); +} + +void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::reshape(S32 width, S32 height, BOOL called_from_parent /* = TRUE */) +{ + S32 header_height = mHeaderTextbox->getTextPixelHeight(); + + LLRect textboxRect(HEADER_TEXT_LEFT_OFFSET,(height+header_height)/2 ,width,(height-header_height)/2); + mHeaderTextbox->reshape(textboxRect.getWidth(), textboxRect.getHeight()); + mHeaderTextbox->setRect(textboxRect); +} + +void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::onMouseEnter(S32 x, S32 y, MASK mask) +{ + LLUICtrl::onMouseEnter(x, y, mask); + mNeedsHighlight = true; +} +void LLAccordionCtrlTab::LLAccordionCtrlTabHeader::onMouseLeave(S32 x, S32 y, MASK mask) +{ + LLUICtrl::onMouseLeave(x, y, mask); + mNeedsHighlight = false; + mAutoOpenTimer.stop(); +} +BOOL LLAccordionCtrlTab::LLAccordionCtrlTabHeader::handleKey(KEY key, MASK mask, BOOL called_from_parent) +{ + if ( ( key == KEY_LEFT || key == KEY_RIGHT) && mask == MASK_NONE) + { + return getParent()->handleKey(key, mask, called_from_parent); + } + 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) + ,header_height("header_height", HEADER_HEIGHT), + min_width("min_width", 0), + min_height("min_height", 0) + ,collapsible("collapsible", true) + ,header_bg_color("header_bg_color") + ,dropdown_bg_color("dropdown_bg_color") + ,header_visible("header_visible",true) + ,padding_left("padding_left",2) + ,padding_right("padding_right",2) + ,padding_top("padding_top",2) + ,padding_bottom("padding_bottom",2) + ,header_expand_img("header_expand_img") + ,header_expand_img_pressed("header_expand_img_pressed") + ,header_collapse_img("header_collapse_img") + ,header_collapse_img_pressed("header_collapse_img_pressed") + ,header_image("header_image") + ,header_image_over("header_image_over") + ,header_image_pressed("header_image_pressed") + ,header_image_focused("header_image_focused") + ,header_text_color("header_text_color") +{ + mouse_opaque(false); +} + +LLAccordionCtrlTab::LLAccordionCtrlTab(const LLAccordionCtrlTab::Params&p) + : LLUICtrl(p) + ,mDisplayChildren(p.display_children) + ,mCollapsible(p.collapsible) + ,mExpandedHeight(0) + ,mDropdownBGColor(p.dropdown_bg_color()) + ,mHeaderVisible(p.header_visible) + ,mPaddingLeft(p.padding_left) + ,mPaddingRight(p.padding_right) + ,mPaddingTop(p.padding_top) + ,mPaddingBottom(p.padding_bottom) + ,mCanOpenClose(true) +{ + mStoredOpenCloseState = false; + mWasStateStored = false; + + mDropdownBGColor = LLColor4::white; + LLAccordionCtrlTabHeader::Params headerParams; + headerParams.name(DD_HEADER_NAME); + headerParams.title(p.title); + mHeader = LLUICtrlFactory::create<LLAccordionCtrlTabHeader>(headerParams); + addChild(mHeader, 1); + + reshape(100, 200,FALSE); +} + +LLAccordionCtrlTab::~LLAccordionCtrlTab() +{ +} + + +void LLAccordionCtrlTab::setDisplayChildren(bool display) +{ + mDisplayChildren = display; + LLRect rect = getRect(); + + rect.mBottom = rect.mTop - (getDisplayChildren() ? + mExpandedHeight : HEADER_HEIGHT); + setRect(rect); + + for(child_list_const_iter_t it = getChildList()->begin(); + getChildList()->end() != it; ++it) + { + LLView* child = *it; + if(DD_HEADER_NAME == child->getName()) + continue; + + child->setVisible(getDisplayChildren()); + } +} + +void LLAccordionCtrlTab::reshape(S32 width, S32 height, BOOL called_from_parent /* = TRUE */) +{ + LLRect headerRect; + + LLUICtrl::reshape(width, height, TRUE); + + headerRect.setLeftTopAndSize( + 0,height,width,HEADER_HEIGHT); + mHeader->setRect(headerRect); + mHeader->reshape(headerRect.getWidth(), headerRect.getHeight()); + + for(child_list_const_iter_t it = getChildList()->begin(); + getChildList()->end() != it; ++it) + { + LLView* child = *it; + if(DD_HEADER_NAME == child->getName()) + continue; + if(!child->getVisible()) + continue; + + LLRect childRect = child->getRect(); + S32 childWidth = width - getPaddingLeft() - getPaddingRight(); + S32 childHeight = height - getHeaderHeight() - getPaddingTop() - getPaddingBottom(); + + child->reshape(childWidth,childHeight); + + childRect.setLeftTopAndSize( + getPaddingLeft(), + childHeight + getPaddingBottom(), + childWidth, + childHeight); + + child->setRect(childRect); + + break;//suppose that there is only one panel + } + +} + +void LLAccordionCtrlTab::changeOpenClose(bool is_open) +{ + if(is_open) + mExpandedHeight = getRect().getHeight(); + + setDisplayChildren(!is_open); + reshape(getRect().getWidth(), getRect().getHeight(), FALSE); + if (mCommitSignal) + { + (*mCommitSignal)(this, getDisplayChildren()); + } +} + +BOOL LLAccordionCtrlTab::handleMouseDown(S32 x, S32 y, MASK mask) +{ + if(mCollapsible && mHeaderVisible && mCanOpenClose) + { + if(y >= (getRect().getHeight() - HEADER_HEIGHT) ) + { + LLAccordionCtrlTabHeader* header = getChild<LLAccordionCtrlTabHeader>(DD_HEADER_NAME); + header->setFocus(true); + changeOpenClose(getDisplayChildren()); + + //reset stored state + mWasStateStored = false; + return TRUE; + } + } + return LLUICtrl::handleMouseDown(x,y,mask); +} + +BOOL LLAccordionCtrlTab::handleMouseUp(S32 x, S32 y, MASK mask) +{ + return LLUICtrl::handleMouseUp(x,y,mask); +} + +boost::signals2::connection LLAccordionCtrlTab::setDropDownStateChangedCallback(commit_callback_t cb) +{ + return setCommitCallback(cb); +} + +bool LLAccordionCtrlTab::addChild(LLView* child, S32 tab_group) +{ + if(DD_HEADER_NAME != child->getName()) + { + reshape(child->getRect().getWidth() , child->getRect().getHeight() + HEADER_HEIGHT ); + mExpandedHeight = getRect().getHeight(); + } + + bool res = LLUICtrl::addChild(child, tab_group); + + if(DD_HEADER_NAME != child->getName()) + { + if(!mCollapsible) + setDisplayChildren(true); + else + setDisplayChildren(getDisplayChildren()); + } + + return res; +} + +void LLAccordionCtrlTab::setAccordionView(LLView* panel) +{ + addChild(panel,0); +} + + +LLView* LLAccordionCtrlTab::getAccordionView() +{ + for(child_list_const_iter_t it = getChildList()->begin(); + getChildList()->end() != it; ++it) + { + LLView* child = *it; + if(DD_HEADER_NAME == child->getName()) + continue; + if(!child->getVisible()) + continue; + return child; + } + return NULL; +} + + +S32 LLAccordionCtrlTab::getHeaderHeight() +{ + return mHeaderVisible?HEADER_HEIGHT:0; +} + +void LLAccordionCtrlTab::setHeaderVisible(bool value) +{ + if(mHeaderVisible == value) + return; + mHeaderVisible = value; + if(mHeader) + mHeader->setVisible(value); + reshape(getRect().getWidth(), getRect().getHeight(), FALSE); +}; + +//vurtual +BOOL LLAccordionCtrlTab::postBuild() +{ + mHeader->setVisible(mHeaderVisible); + return LLUICtrl::postBuild(); +} +bool LLAccordionCtrlTab::notifyChildren (const LLSD& info) +{ + if(info.has("action")) + { + std::string str_action = info["action"]; + if(str_action == "store_state") + { + storeOpenCloseState(); + return true; + } + if(str_action == "restore_state") + { + restoreOpenCloseState(); + return true; + } + } + return LLUICtrl::notifyChildren(info); +} + +S32 LLAccordionCtrlTab::notifyParent(const LLSD& info) +{ + if(info.has("action")) + { + std::string str_action = info["action"]; + if(str_action == "size_changes") + { + // + S32 height = info["height"]; + height = llmax(height,10) + HEADER_HEIGHT + getPaddingTop() + getPaddingBottom(); + + mExpandedHeight = height; + + if(isExpanded()) + { + LLRect panel_rect = getRect(); + panel_rect.setLeftTopAndSize( panel_rect.mLeft, panel_rect.mTop, panel_rect.getWidth(), height); + reshape(getRect().getWidth(),height); + setRect(panel_rect); + } + + //LLAccordionCtrl should rearrange accodion tab if one of accordion change its size + getParent()->notifyParent(info); + return 1; + } + else if(str_action == "select_prev") + { + showAndFocusHeader(); + return 1; + } + } + return LLUICtrl::notifyParent(info); +} + +S32 LLAccordionCtrlTab::notify(const LLSD& info) +{ + if(info.has("action")) + { + std::string str_action = info["action"]; + if(str_action == "select_first") + { + showAndFocusHeader(); + return 1; + } + else if( str_action == "select_last" ) + { + if(getDisplayChildren() == false) + { + showAndFocusHeader(); + } + else + { + LLView* view = getAccordionView(); + if(view) + view->notify(LLSD().with("action","select_last")); + } + } + } + return 0; +} + +BOOL LLAccordionCtrlTab::handleKey(KEY key, MASK mask, BOOL called_from_parent) +{ + LLAccordionCtrlTabHeader* header = getChild<LLAccordionCtrlTabHeader>(DD_HEADER_NAME); + if( !header->hasFocus() ) + return LLUICtrl::handleKey(key, mask, called_from_parent); + + if ( (key == KEY_ADD || key == KEY_RIGHT)&& mask == MASK_NONE) + { + if(getDisplayChildren() == false) + { + changeOpenClose(getDisplayChildren()); + return TRUE; + } + } + if ( (key == KEY_SUBTRACT || key == KEY_LEFT)&& mask == MASK_NONE) + { + if(getDisplayChildren() == true) + { + changeOpenClose(getDisplayChildren()); + return TRUE; + } + } + + if ( key == KEY_DOWN && mask == MASK_NONE) + { + //if collapsed go to the next accordion + if(getDisplayChildren() == false) + //we processing notifyParent so let call parent directly + getParent()->notifyParent(LLSD().with("action","select_next")); + else + { + getAccordionView()->notify(LLSD().with("action","select_first")); + } + return TRUE; + } + + if ( key == KEY_UP && mask == MASK_NONE) + { + //go to the previous accordion + + //we processing notifyParent so let call parent directly + getParent()->notifyParent(LLSD().with("action","select_prev")); + return TRUE; + } + + return LLUICtrl::handleKey(key, mask, called_from_parent); +} + +void LLAccordionCtrlTab::showAndFocusHeader() +{ + LLAccordionCtrlTabHeader* header = getChild<LLAccordionCtrlTabHeader>(DD_HEADER_NAME); + header->setFocus(true); + + LLRect screen_rc; + LLRect selected_rc = header->getRect(); + localRectToScreen(selected_rc, &screen_rc); + notifyParent(LLSD().with("scrollToShowRect",screen_rc.getValue())); + +} +void LLAccordionCtrlTab::storeOpenCloseState() +{ + if(mWasStateStored) + return; + mStoredOpenCloseState = getDisplayChildren(); + mWasStateStored = true; +} +void LLAccordionCtrlTab::restoreOpenCloseState() +{ + if(!mWasStateStored) + return; + if(getDisplayChildren() != mStoredOpenCloseState) + { + changeOpenClose(getDisplayChildren()); + } + mWasStateStored = false; +} diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h new file mode 100644 index 0000000000..2e0260ab16 --- /dev/null +++ b/indra/llui/llaccordionctrltab.h @@ -0,0 +1,192 @@ +/** + * @file LLAccordionCtrlTab.h + * @brief Collapsible box control implementation + * + * $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_ACCORDIONCTRLTAB_H_ +#define LL_ACCORDIONCTRLTAB_H_ + +#include <string> +#include "llrect.h" + +class LLUICtrl; +class LLUICtrlFactory; +class LLUIImage; +class LLButton; +class LLTextBox; + + + +// LLAccordionCtrlTab is a container for other controls. +// It has a Header, by clicking on which hosted controls are shown or hidden. +// When hosted controls are show - LLAccordionCtrlTab is expanded. +// When hosted controls are hidden - LLAccordionCtrlTab is collapsed. + +class LLAccordionCtrlTab : public LLUICtrl +{ +// Interface +public: + + struct Params + : public LLInitParam::Block<Params, LLUICtrl::Params> + { + Optional<bool> display_children, //expanded or collapsed after initialization + collapsible; + + Optional<std::string> title; + + Optional<S32> header_height, + min_width, + min_height; + + // Overlay images (arrows on the left) + Mandatory<LLUIImage*> header_expand_img, + header_expand_img_pressed, + header_collapse_img, + header_collapse_img_pressed; + + // Background images for the accordion tabs + Mandatory<LLUIImage*> header_image, + header_image_over, + header_image_pressed, + header_image_focused; + + Optional<LLUIColor> header_bg_color, + header_text_color, + dropdown_bg_color; + + Optional<bool> header_visible; + + Optional<S32> padding_left; + Optional<S32> padding_right; + Optional<S32> padding_top; + Optional<S32> padding_bottom; + + Params(); + }; + + typedef LLDefaultChildRegistry child_registry_t; + + virtual ~LLAccordionCtrlTab(); + + // Registers callback for expand/collapse events. + boost::signals2::connection setDropDownStateChangedCallback(commit_callback_t cb); + + // Changes expand/collapse state + virtual void setDisplayChildren(bool display); + + // Returns expand/collapse state + virtual bool getDisplayChildren() const {return mDisplayChildren;}; + + //set LLAccordionCtrlTab panel + void setAccordionView(LLView* panel); + LLView* getAccordionView(); + + bool getCollapsible() {return mCollapsible;}; + + void setCollapsible(bool collapsible) {mCollapsible = collapsible;}; + void changeOpenClose(bool is_open); + + void canOpenClose(bool can_open_close) { mCanOpenClose = can_open_close;}; + bool canOpenClose() const { return mCanOpenClose; }; + + virtual BOOL postBuild(); + + S32 notifyParent(const LLSD& info); + S32 notify(const LLSD& info); + bool notifyChildren(const LLSD& info); + + void storeOpenCloseState (); + void restoreOpenCloseState (); + +protected: + LLAccordionCtrlTab(const LLAccordionCtrlTab::Params&); + friend class LLUICtrlFactory; + +// Overrides +public: + + // Call reshape after changing size + virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); + + // Changes expand/collapse state and triggers expand/collapse callbacks + virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); + + virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); + virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); + + virtual bool addChild(LLView* child, S32 tab_group); + + bool isExpanded() { return mDisplayChildren; } + + S32 getHeaderHeight(); + + // Min size functions + + void setHeaderVisible(bool value); + + bool getHeaderVisible() { return mHeaderVisible;} + + S32 mExpandedHeight; // Height of expanded ctrl. + // Used to restore height after expand. + + S32 getPaddingLeft() const { return mPaddingLeft;} + S32 getPaddingRight() const { return mPaddingRight;} + S32 getPaddingTop() const { return mPaddingTop;} + S32 getPaddingBottom() const { return mPaddingBottom;} + + void showAndFocusHeader(); + +private: + + + + class LLAccordionCtrlTabHeader; + LLAccordionCtrlTabHeader* mHeader; //Header + + bool mDisplayChildren; //Expanded/collapsed + bool mCollapsible; + bool mHeaderVisible; + + bool mCanOpenClose; + + S32 mPaddingLeft; + S32 mPaddingRight; + S32 mPaddingTop; + S32 mPaddingBottom; + + bool mStoredOpenCloseState; + bool mWasStateStored; + + + LLUIColor mDropdownBGColor; +}; + +#endif diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index e9f6288f44..1d4dc35cee 100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -81,6 +81,9 @@ LLButton::Params::Params() image_pressed_selected("image_pressed_selected"), image_overlay("image_overlay"), image_overlay_alignment("image_overlay_alignment", std::string("center")), + image_top_pad("image_top_pad"), + image_bottom_pad("image_bottom_pad"), + imgoverlay_label_space("imgoverlay_label_space", 1), label_color("label_color"), label_color_selected("label_color_selected"), // requires is_toggle true label_color_disabled("label_color_disabled"), @@ -140,6 +143,9 @@ LLButton::LLButton(const LLButton::Params& p) mImageOverlay(p.image_overlay()), mImageOverlayColor(p.image_overlay_color()), mImageOverlayAlignment(LLFontGL::hAlignFromName(p.image_overlay_alignment)), + mImageOverlayTopPad(p.image_top_pad), + mImageOverlayBottomPad(p.image_bottom_pad), + mImgOverlayLabelSpace(p.imgoverlay_label_space), mIsToggle(p.is_toggle), mScaleImage(p.scale_image), mDropShadowedText(p.label_shadow), @@ -763,6 +769,7 @@ void LLButton::draw() center_x++; } + center_y += (mImageOverlayBottomPad - mImageOverlayTopPad); // fade out overlay images on disabled buttons LLColor4 overlay_color = mImageOverlayColor.get(); if (!enabled) @@ -774,10 +781,9 @@ void LLButton::draw() switch(mImageOverlayAlignment) { case LLFontGL::LEFT: - text_left += overlay_width + 1; - text_width -= overlay_width + 1; + text_left += overlay_width + mImgOverlayLabelSpace; mImageOverlay->draw( - mLeftHPad, + mLeftHPad, center_y - (overlay_height / 2), overlay_width, overlay_height, @@ -792,10 +798,9 @@ void LLButton::draw() overlay_color); break; case LLFontGL::RIGHT: - text_right -= overlay_width + 1; - text_width -= overlay_width + 1; + text_right -= overlay_width + mImgOverlayLabelSpace; mImageOverlay->draw( - getRect().getWidth() - mRightHPad - overlay_width, + getRect().getWidth() - mRightHPad - overlay_width, center_y - (overlay_height / 2), overlay_width, overlay_height, @@ -1022,6 +1027,20 @@ void LLButton::setImageOverlay(const std::string& image_name, LLFontGL::HAlign a } } +void LLButton::setImageOverlay(const LLUUID& image_id, LLFontGL::HAlign alignment, const LLColor4& color) +{ + if (image_id.isNull()) + { + mImageOverlay = NULL; + } + else + { + mImageOverlay = LLUI::getUIImageByID(image_id); + mImageOverlayAlignment = alignment; + mImageOverlayColor = color; + } +} + void LLButton::onMouseCaptureLost() { resetMouseDownTimer(); diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index 5e28b8cdff..6a0d8ef3d6 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -106,6 +106,15 @@ public: Optional<S32> pad_left; Optional<S32> pad_bottom; // under text label + //image overlay paddings + Optional<S32> image_top_pad; + Optional<S32> image_bottom_pad; + + /** + * Space between image_overlay and label + */ + Optional<S32> imgoverlay_label_space; + // callbacks Optional<CommitCallbackParam> click_callback, // alias -> commit_callback mouse_down_callback, @@ -186,6 +195,11 @@ public: void setLeftHPad( S32 pad ) { mLeftHPad = pad; } void setRightHPad( S32 pad ) { mRightHPad = pad; } + 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); } @@ -200,6 +214,7 @@ public: void setDisabledSelectedLabelColor( const LLColor4& c ) { mDisabledSelectedLabelColor = c; } void setImageOverlay(const std::string& image_name, LLFontGL::HAlign alignment = LLFontGL::HCENTER, const LLColor4& color = LLColor4::white); + void setImageOverlay(const LLUUID& image_id, LLFontGL::HAlign alignment = LLFontGL::HCENTER, const LLColor4& color = LLColor4::white); LLPointer<LLUIImage> getImageOverlay() { return mImageOverlay; } void autoResize(); // resize with label of current btn state @@ -242,6 +257,8 @@ public: void setForcePressedState(bool b) { mForcePressedState = b; } + void setAutoResize(bool auto_resize) { mAutoResize = auto_resize; } + protected: LLPointer<LLUIImage> getImageUnselected() const { return mImageUnselected; } LLPointer<LLUIImage> getImageSelected() const { return mImageSelected; } @@ -312,6 +329,14 @@ private: S32 mRightHPad; S32 mBottomVPad; // under text label + S32 mImageOverlayTopPad; + S32 mImageOverlayBottomPad; + + /* + * Space between image_overlay and label + */ + S32 mImgOverlayLabelSpace; + F32 mHoverGlowStrength; F32 mCurGlowStrength; diff --git a/indra/llui/llcheckboxctrl.cpp b/indra/llui/llcheckboxctrl.cpp index cd10dfdb1c..3d32157406 100644 --- a/indra/llui/llcheckboxctrl.cpp +++ b/indra/llui/llcheckboxctrl.cpp @@ -107,8 +107,8 @@ LLCheckBoxCtrl::LLCheckBoxCtrl(const LLCheckBoxCtrl::Params& p) { tbparams.font(p.font); } + tbparams.text_color( p.enabled() ? p.text_enabled_color() : p.text_disabled_color() ); mLabel = LLUICtrlFactory::create<LLTextBox> (tbparams); - addChild(mLabel); // Button diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index f29e8785eb..9d23daf56d 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); diff --git a/indra/llui/llconsole.cpp b/indra/llui/llconsole.cpp index fa0abd55d0..badbddc3cc 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()) { @@ -180,7 +182,7 @@ void LLConsole::draw() // draw remaining lines F32 y_pos = 0.f; - LLUIImagePtr imagep = LLUI::getUIImage("rounded_square.tga"); + LLUIImagePtr imagep = LLUI::getUIImage("Rounded_Square"); // F32 console_opacity = llclamp(gSavedSettings.getF32("ConsoleBackgroundOpacity"), 0.f, 1.f); F32 console_opacity = llclamp(LLUI::sSettingGroups["config"]->getF32("ConsoleBackgroundOpacity"), 0.f, 1.f); @@ -242,23 +244,6 @@ void LLConsole::draw() } } -void LLConsole::addLine(const std::string& utf8line) -{ - LLWString wline = utf8str_to_wstring(utf8line); - addLine(wline, 0.f, LLColor4(1.f, 1.f, 1.f, 1.f)); -} - -void LLConsole::addLine(const LLWString& wline) -{ - addLine(wline, 0.f, LLColor4(1.f, 1.f, 1.f, 1.f)); -} - -void LLConsole::addLine(const std::string& utf8line, F32 size, const LLColor4 &color) -{ - LLWString wline = utf8str_to_wstring(utf8line); - addLine(wline, size, color); -} - //Generate highlight color segments for this paragraph. Pass in default color of paragraph. void LLConsole::Paragraph::makeParagraphColorSegments (const LLColor4 &color) { @@ -315,7 +300,8 @@ void LLConsole::Paragraph::updateLines(F32 screen_width, const LLFontGL* font, b S32 paragraph_offset = 0; //Offset into the paragraph text. // Wrap lines that are longer than the view is wide. - while( paragraph_offset < (S32)mParagraphText.length() ) + while( paragraph_offset < (S32)mParagraphText.length() && + mParagraphText[paragraph_offset] != 0) { S32 skip_chars; // skip '\n' // Figure out if a word-wrapped line fits here. @@ -330,7 +316,7 @@ void LLConsole::Paragraph::updateLines(F32 screen_width, const LLFontGL* font, b skip_chars = 0; } - U32 drawable = font->maxDrawableChars(mParagraphText.c_str()+paragraph_offset, screen_width, line_end - paragraph_offset, TRUE); + U32 drawable = font->maxDrawableChars(mParagraphText.c_str()+paragraph_offset, screen_width, line_end - paragraph_offset, LLFontGL::WORD_BOUNDARY_IF_POSSIBLE); if (drawable != 0) { @@ -381,15 +367,45 @@ void LLConsole::Paragraph::updateLines(F32 screen_width, const LLFontGL* font, b //Pass in the string and the default color for this block of text. LLConsole::Paragraph::Paragraph (LLWString str, const LLColor4 &color, F32 add_time, const LLFontGL* font, F32 screen_width) - : mParagraphText(str), mAddTime(add_time), mMaxWidth(-1) +: mParagraphText(str), mAddTime(add_time), mMaxWidth(-1) { makeParagraphColorSegments(color); updateLines( screen_width, font ); } -void LLConsole::addLine(const LLWString& wline, F32 size, const LLColor4 &color) +// called once per frame regardless of console visibility +// static +void LLConsole::updateClass() { - Paragraph paragraph(wline, color, mTimer.getElapsedTimeF32(), mFont, (F32)getRect().getWidth() ); - - mParagraphs.push_back ( paragraph ); + LLInstanceTrackerScopedGuard guard; + + for (instance_iter it = guard.beginInstances(); it != guard.endInstances(); ++it) + { + it->update(); + } } + +void LLConsole::update() +{ + { + LLMutexLock lock(&mMutex); + + while (!mLines.empty()) + { + mParagraphs.push_back( + Paragraph( mLines.front(), + LLColor4::white, + mTimer.getElapsedTimeF32(), + mFont, + (F32)getRect().getWidth())); + mLines.pop_front(); + } + } + + // remove old paragraphs which can't possibly be visible any more. ::draw() will do something similar but more conservative - we do this here because ::draw() isn't guaranteed to ever be called! (i.e. the console isn't visible) + while ((S32)mParagraphs.size() > llmax((S32)0, (S32)(mMaxLines))) + { + mParagraphs.pop_front(); + } +} + diff --git a/indra/llui/llconsole.h b/indra/llui/llconsole.h index 5800a82922..f38e2bc9c2 100644 --- a/indra/llui/llconsole.h +++ b/indra/llui/llconsole.h @@ -40,7 +40,7 @@ class LLSD; -class LLConsole : public LLFixedBuffer, public LLUICtrl +class LLConsole : public LLFixedBuffer, public LLUICtrl, public LLInstanceTracker<LLConsole> { public: typedef enum e_font_size @@ -68,6 +68,9 @@ protected: friend class LLUICtrlFactory; public: + // call once per frame to pull data out of LLFixedBuffer + static void updateClass(); + //A paragraph color segment defines the color of text in a line //of text that was received for console display. It has no //notion of line wraps, screen position, or the text it contains. @@ -139,19 +142,15 @@ public: // -1 = monospace, 0 means small, font size = 1 means big void setFontSize(S32 size_index); - void addLine(const std::string& utf8line, F32 size, const LLColor4 &color); - void addLine(const LLWString& wline, F32 size, const LLColor4 &color); // Overrides /*virtual*/ void draw(); - /*virtual*/ void addLine(const std::string& utf8line); - /*virtual*/ void addLine(const LLWString& line); private: + void update(); + 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; diff --git a/indra/llui/lldockablefloater.cpp b/indra/llui/lldockablefloater.cpp index 6a5b475134..3d8670fef2 100644 --- a/indra/llui/lldockablefloater.cpp +++ b/indra/llui/lldockablefloater.cpp @@ -57,6 +57,7 @@ LLDockableFloater::LLDockableFloater(LLDockControl* dockControl, , mOverlapsScreenChannel(false) { init(this); + mUseTongue = true; } LLDockableFloater::LLDockableFloater(LLDockControl* dockControl, bool uniqueDocking, @@ -64,6 +65,14 @@ LLDockableFloater::LLDockableFloater(LLDockControl* dockControl, bool uniqueDock LLFloater(key, params), mDockControl(dockControl), mUniqueDocking(uniqueDocking) { init(this); + mUseTongue = true; +} + +LLDockableFloater::LLDockableFloater(LLDockControl* dockControl, bool uniqueDocking, + bool useTongue, const LLSD& key, const Params& params) : + LLFloater(key, params), mDockControl(dockControl), mUseTongue(useTongue), mUniqueDocking(uniqueDocking) +{ + init(this); } LLDockableFloater::~LLDockableFloater() @@ -86,7 +95,7 @@ void LLDockableFloater::toggleInstance(const LLSD& sdname) LLDockableFloater* instance = dynamic_cast<LLDockableFloater*> (LLFloaterReg::findInstance(name)); // if floater closed or docked - if (instance == NULL || instance != NULL && instance->isDocked()) + if (instance == NULL || (instance && instance->isDocked())) { LLFloaterReg::toggleInstance(name, key); // restore button toggle state @@ -137,7 +146,7 @@ void LLDockableFloater::setVisible(BOOL visible) if (visible) { - LLFloater::setFrontmost(TRUE); + LLFloater::setFrontmost(getAutoFocus()); } LLFloater::setVisible(visible); } @@ -193,10 +202,6 @@ void LLDockableFloater::setDocked(bool docked, bool pop_on_undock) translate(0, UNDOCK_LEAP_HEIGHT); } } - else - { - docked = false; - } LLFloater::setDocked(docked, pop_on_undock); } @@ -217,7 +222,7 @@ void LLDockableFloater::draw() void LLDockableFloater::setDockControl(LLDockControl* dockControl) { mDockControl.reset(dockControl); - setDocked(mDockControl.get() != NULL && mDockControl.get()->isDockVisible()); + setDocked(isDocked()); } const LLUIImagePtr& LLDockableFloater::getDockTongue() diff --git a/indra/llui/lldockablefloater.h b/indra/llui/lldockablefloater.h index ae4f99e205..2b1ce99ae2 100644 --- a/indra/llui/lldockablefloater.h +++ b/indra/llui/lldockablefloater.h @@ -62,6 +62,20 @@ public: */ LLDockableFloater(LLDockControl* dockControl, bool uniqueDocking, const LLSD& key, const Params& params = getDefaultParams()); + + /** + * Constructor. + * @param dockControl a pointer to the doc control instance + * @param uniqueDocking - a flag defines is docking should work as tab(at one + * moment only one docked floater can be shown). + * @praram useTongue - a flag defines is dock tongue should be used. + * @params key a floater key. + * @params params a floater parameters + */ + LLDockableFloater(LLDockControl* dockControl, bool uniqueDocking, + bool useTongue, const LLSD& key, + const Params& params = getDefaultParams()); + virtual ~LLDockableFloater(); static LLHandle<LLFloater> getInstanceHandle() { return sInstanceHandle; } @@ -104,6 +118,7 @@ public: virtual void setOverlapsScreenChannel(bool overlaps) { mOverlapsScreenChannel = overlaps; } bool getUniqueDocking() { return mUniqueDocking; } + bool getUseTongue() { return mUseTongue; } private: /** * Provides unique of dockable floater. @@ -125,6 +140,8 @@ private: */ bool mUniqueDocking; + bool mUseTongue; + bool mOverlapsScreenChannel; }; diff --git a/indra/llui/lldockcontrol.cpp b/indra/llui/lldockcontrol.cpp index 1c3c8449c5..d738b10130 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; @@ -158,7 +162,9 @@ bool LLDockControl::isDockVisible() { case LEFT: // to keep compiler happy break; + case BOTTOM: case TOP: + { // check is dock inside parent rect LLRect dockParentRect = mDockWidget->getParent()->calcScreenRect(); @@ -169,6 +175,9 @@ bool LLDockControl::isDockVisible() } break; } + default: + break; + } } } @@ -182,12 +191,12 @@ void LLDockControl::moveDockable() LLRect rootRect; mGetAllowedRectCallback(rootRect); - bool unique_docking = false; + bool use_tongue = false; LLDockableFloater* dockable_floater = dynamic_cast<LLDockableFloater*> (mDockableFloater); if (dockable_floater != NULL) { - unique_docking = dockable_floater->getUniqueDocking(); + use_tongue = dockable_floater->getUseTongue(); } LLRect dockableRect = mDockableFloater->calcScreenRect(); @@ -218,7 +227,7 @@ void LLDockControl::moveDockable() x = dockRect.getCenterX() - dockableRect.getWidth() / 2; y = dockRect.mTop + dockableRect.getHeight(); // unique docking used with dock tongue, so add tongue height o the Y coordinate - if (unique_docking) + if (use_tongue) { y += mDockTongue->getHeight(); } @@ -251,6 +260,42 @@ void LLDockControl::moveDockable() mDockTongueY = dockRect.mTop; break; + case BOTTOM: + x = dockRect.getCenterX() - dockableRect.getWidth() / 2; + y = dockRect.mBottom; + // unique docking used with dock tongue, so add tongue height o the Y coordinate + if (use_tongue) + { + y -= mDockTongue->getHeight(); + } + + // check is dockable inside root view rect + if (x < rootRect.mLeft) + { + x = rootRect.mLeft; + } + if (x + dockableRect.getWidth() > rootRect.mRight) + { + x = rootRect.mRight - dockableRect.getWidth(); + } + + // calculate dock tongue position + dockParentRect = mDockWidget->getParent()->calcScreenRect(); + if (dockRect.getCenterX() < dockParentRect.mLeft) + { + mDockTongueX = dockParentRect.mLeft - mDockTongue->getWidth() / 2; + } + else if (dockRect.getCenterX() > dockParentRect.mRight) + { + mDockTongueX = dockParentRect.mRight - mDockTongue->getWidth() / 2;; + } + else + { + mDockTongueX = dockRect.getCenterX() - mDockTongue->getWidth() / 2; + } + mDockTongueY = dockRect.mBottom - mDockTongue->getHeight(); + + break; } // move dockable @@ -287,15 +332,15 @@ void LLDockControl::forceRecalculatePosition() void LLDockControl::drawToungue() { - bool unique_docking = false; + bool use_tongue = false; LLDockableFloater* dockable_floater = dynamic_cast<LLDockableFloater*> (mDockableFloater); if (dockable_floater != NULL) { - unique_docking = dockable_floater->getUniqueDocking(); + use_tongue = dockable_floater->getUseTongue(); } - if (mEnabled && unique_docking) + if (mEnabled && use_tongue) { mDockTongue->draw(mDockTongueX, mDockTongueY); } diff --git a/indra/llui/lldockcontrol.h b/indra/llui/lldockcontrol.h index 550955c4c5..a5caf68001 100644 --- a/indra/llui/lldockcontrol.h +++ b/indra/llui/lldockcontrol.h @@ -47,8 +47,9 @@ class LLDockControl public: enum DocAt { - TOP - ,LEFT + TOP, + LEFT, + BOTTOM }; public: diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp index a93c666648..832f148902 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/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp index 3754d155cf..2481249f91 100644 --- a/indra/llui/llflatlistview.cpp +++ b/indra/llui/llflatlistview.cpp @@ -42,8 +42,6 @@ static const LLDefaultChildRegistry::Register<LLFlatListView> flat_list_view("fl const LLSD SELECTED_EVENT = LLSD().with("selected", true); const LLSD UNSELECTED_EVENT = LLSD().with("selected", false); -static const std::string COMMENT_TEXTBOX = "comment_text"; - //forward declaration bool llsds_are_equal(const LLSD& llsd_1, const LLSD& llsd_2); @@ -51,7 +49,8 @@ LLFlatListView::Params::Params() : item_pad("item_pad"), allow_select("allow_select"), multi_select("multi_select"), - keep_one_selected("keep_one_selected") + keep_one_selected("keep_one_selected"), + no_items_text("no_items_text") {}; void LLFlatListView::reshape(S32 width, S32 height, BOOL called_from_parent /* = TRUE */) @@ -289,25 +288,12 @@ 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) { - if (NULL == mNoItemsCommentTextbox) - { - LLRect comment_rect = getRect(); - comment_rect.setOriginAndSize(0, 0, comment_rect.getWidth(), comment_rect.getHeight()); - comment_rect.stretch(-getBorderWidth()); - LLTextBox::Params text_p; - text_p.name(COMMENT_TEXTBOX); - text_p.border_visible(false); - text_p.rect(comment_rect); - text_p.follows.flags(FOLLOWS_ALL); - mNoItemsCommentTextbox = LLUICtrlFactory::create<LLTextBox>(text_p, this); - } - mNoItemsCommentTextbox->setValue(comment_text); } @@ -361,7 +347,6 @@ bool LLFlatListView::updateValue(const LLSD& old_value, const LLSD& new_value) // PROTECTED STUFF ////////////////////////////////////////////////////////////////////////// - LLFlatListView::LLFlatListView(const LLFlatListView::Params& p) : LLScrollContainer(p) , mItemComparator(NULL) @@ -393,11 +378,30 @@ 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); mItemsPanel->addChild( mSelectedItemsBorder ); + + { + // create textbox for "No Items" comment text + LLTextBox::Params text_p = p.no_items_text; + if (!text_p.rect.isProvided()) + { + LLRect comment_rect = getRect(); + comment_rect.setOriginAndSize(0, 0, comment_rect.getWidth(), comment_rect.getHeight()); + comment_rect.stretch(-getBorderWidth()); + text_p.rect(comment_rect); + } + text_p.border_visible(false); + + if (!text_p.follows.isProvided()) + { + text_p.follows.flags(FOLLOWS_ALL); + } + mNoItemsCommentTextbox = LLUICtrlFactory::create<LLTextBox>(text_p, this); + } }; // virtual @@ -480,8 +484,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 +668,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 +684,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); @@ -711,19 +698,12 @@ void LLFlatListView::selectLastItem () void LLFlatListView::ensureSelectedVisible() { - LLRect visible_rc = getVisibleContentRect(); LLRect selected_rc = getLastSelectedItemRect(); - if ( !visible_rc.contains (selected_rc) ) + if ( selected_rc.isValid() ) { - // But scroll in Items panel coordinates scrollToShowRect(selected_rc); } - - // In case we are in accordion tab notify parent to show selected rectangle - LLRect screen_rc; - localRectToScreen(selected_rc, &screen_rc); - notifyParent(LLSD().with("scrollToShowRect",screen_rc.getValue())); } @@ -826,8 +806,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; } @@ -885,7 +865,11 @@ void LLFlatListView::notifyParentItemsRectChanged() // take into account comment text height if exists if (mNoItemsCommentTextbox && mNoItemsCommentTextbox->getVisible()) { + // top text padding inside the textbox is included into the height comment_height = mNoItemsCommentTextbox->getTextPixelHeight(); + + // take into account a distance from parent's top border to textbox's top + comment_height += getRect().getHeight() - mNoItemsCommentTextbox->getRect().mTop; } LLRect req_rect = getItemsRect(); @@ -906,7 +890,8 @@ void LLFlatListView::notifyParentItemsRectChanged() params["width"] = req_rect.getWidth(); params["height"] = req_rect.getHeight(); - getParent()->notifyParent(params); + if (getParent()) // dummy widgets don't have a parent + getParent()->notifyParent(params); } void LLFlatListView::setNoItemsCommentVisible(bool visible) const @@ -915,6 +900,10 @@ void LLFlatListView::setNoItemsCommentVisible(bool visible) const { if (visible) { +/* +// *NOTE: MA 2010-02-04 +// Deprecated after params of the comment text box were moved into widget (flat_list_view.xml) +// can be removed later if nothing happened. // We have to update child rect here because of issues with rect after reshaping while creating LLTextbox // It is possible to have invalid LLRect if Flat List is in LLAccordionTab LLRect comment_rect = getLocalRect(); @@ -926,6 +915,7 @@ void LLFlatListView::setNoItemsCommentVisible(bool visible) const LLViewBorder* scroll_border = getChild<LLViewBorder>("scroll border"); comment_rect.stretch(-scroll_border->getBorderWidth()); mNoItemsCommentTextbox->setRect(comment_rect); +*/ } mNoItemsCommentTextbox->setVisible(visible); } diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h index 5999e79f61..92cb40332e 100644 --- a/indra/llui/llflatlistview.h +++ b/indra/llui/llflatlistview.h @@ -35,8 +35,8 @@ #include "llpanel.h" #include "llscrollcontainer.h" +#include "lltextbox.h" -class LLTextBox; /** * LLFlatListView represents a flat list ui control that operates on items in a form of LLPanel's. @@ -108,6 +108,9 @@ public: /** padding between items */ Optional<U32> item_pad; + /** textbox with info message when list is empty*/ + Optional<LLTextBox::Params> no_items_text; + Params(); }; @@ -368,8 +371,6 @@ protected: LLRect getLastSelectedItemRect(); - LLRect getSelectedItemsRect(); - void ensureSelectedVisible(); private: diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 845203b420..b6d73cda3c 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -233,6 +233,7 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p) mAutoFocus(TRUE), // automatically take focus when opened mCanDock(false), mDocked(false), + mTornOff(false), mHasBeenDraggedWhileMinimized(FALSE), mPreviousMinimizedBottom(0), mPreviousMinimizedLeft(0) @@ -878,9 +879,11 @@ void LLFloater::setSnappedTo(const LLView* snap_view) else { //RN: assume it's a floater as it must be a sibling to our parent floater - LLFloater* floaterp = (LLFloater*)snap_view; - - setSnapTarget(floaterp->getHandle()); + const LLFloater* floaterp = dynamic_cast<const LLFloater*>(snap_view); + if (floaterp) + { + setSnapTarget(floaterp->getHandle()); + } } } @@ -1065,10 +1068,6 @@ void LLFloater::setMinimized(BOOL minimize) reshape( mExpandedRect.getWidth(), mExpandedRect.getHeight(), TRUE ); } - // don't show the help button while minimized - it's - // not very useful when minimized and uses up space - mButtonsEnabled[BUTTON_HELP] = !minimize; - applyTitle (); make_ui_sound("UISndWindowClose"); @@ -1361,6 +1360,7 @@ void LLFloater::bringToFront( S32 x, S32 y ) // virtual void LLFloater::setVisibleAndFrontmost(BOOL take_focus) { + gFocusMgr.setTopCtrl(NULL); setVisible(TRUE); setFrontmost(take_focus); } @@ -1458,6 +1458,7 @@ void LLFloater::onClickTearOff(LLFloater* self) } self->setTornOff(false); } + self->updateButtons(); } // static @@ -1564,43 +1565,34 @@ void LLFloater::draw() // draw background if( isBackgroundVisible() ) { + drawShadow(this); + S32 left = LLPANEL_BORDER_WIDTH; S32 top = getRect().getHeight() - LLPANEL_BORDER_WIDTH; S32 right = getRect().getWidth() - LLPANEL_BORDER_WIDTH; S32 bottom = LLPANEL_BORDER_WIDTH; - static LLUICachedControl<S32> shadow_offset_S32 ("DropShadowFloater", 0); - static LLUIColor shadow_color_cached = LLUIColorTable::instance().getColor("ColorDropShadow"); - LLColor4 shadow_color = shadow_color_cached; - F32 shadow_offset = (F32)shadow_offset_S32; - - if (!isBackgroundOpaque()) - { - shadow_offset *= 0.2f; - shadow_color.mV[VALPHA] *= 0.5f; - } - gl_drop_shadow(left, top, right, bottom, - shadow_color % alpha, - llround(shadow_offset)); - LLUIImage* image = NULL; LLColor4 color; + LLColor4 overlay_color; if (isBackgroundOpaque()) { // NOTE: image may not be set image = getBackgroundImage(); color = getBackgroundColor(); + overlay_color = getBackgroundImageOverlay(); } else { image = getTransparentImage(); color = getTransparentColor(); + overlay_color = getTransparentImageOverlay(); } if (image) { // We're using images for this floater's backgrounds - image->draw(getLocalRect(), UI_VERTEX_COLOR % alpha); + image->draw(getLocalRect(), overlay_color % alpha); } else { @@ -1649,24 +1641,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 @@ -1681,6 +1657,29 @@ void LLFloater::draw() } } +void LLFloater::drawShadow(LLPanel* panel) +{ + F32 alpha = panel->getDrawContext().mAlpha; + S32 left = LLPANEL_BORDER_WIDTH; + S32 top = panel->getRect().getHeight() - LLPANEL_BORDER_WIDTH; + S32 right = panel->getRect().getWidth() - LLPANEL_BORDER_WIDTH; + S32 bottom = LLPANEL_BORDER_WIDTH; + + static LLUICachedControl<S32> shadow_offset_S32 ("DropShadowFloater", 0); + static LLUIColor shadow_color_cached = LLUIColorTable::instance().getColor("ColorDropShadow"); + LLColor4 shadow_color = shadow_color_cached; + F32 shadow_offset = (F32)shadow_offset_S32; + + if (!panel->isBackgroundOpaque()) + { + shadow_offset *= 0.2f; + shadow_color.mV[VALPHA] *= 0.5f; + } + gl_drop_shadow(left, top, right, bottom, + shadow_color % alpha, + llround(shadow_offset)); +} + void LLFloater::setCanMinimize(BOOL can_minimize) { // if removing minimize/restore button programmatically, @@ -1741,14 +1740,32 @@ void LLFloater::updateButtons() S32 button_count = 0; for (S32 i = 0; i < BUTTON_COUNT; i++) { - if(!mButtons[i]) continue; - mButtons[i]->setEnabled(mButtonsEnabled[i]); + if (!mButtons[i]) + { + continue; + } - if (mButtonsEnabled[i] - //*HACK: always render close button for hosted floaters - // so that users don't accidentally hit the button when closing multiple windows - // in the chatterbox - || (i == BUTTON_CLOSE && mButtonScale != 1.f)) + bool enabled = mButtonsEnabled[i]; + if (i == BUTTON_HELP) + { + // don't show the help button if the floater is minimized + // or if it is a docked tear-off floater + if (isMinimized() || (mButtonsEnabled[BUTTON_TEAR_OFF] && ! mTornOff)) + { + enabled = false; + } + } + if (i == BUTTON_CLOSE && mButtonScale != 1.f) + { + //*HACK: always render close button for hosted floaters so + //that users don't accidentally hit the button when + //closing multiple windows in the chatterbox + enabled = true; + } + + mButtons[i]->setEnabled(enabled); + + if (enabled) { button_count++; @@ -1775,7 +1792,7 @@ void LLFloater::updateButtons() // the restore button should have a tab stop so that it takes action when you Ctrl-Tab to a minimized floater mButtons[i]->setTabStop(i == BUTTON_RESTORE); } - else if (mButtons[i]) + else { mButtons[i]->setVisible(FALSE); } @@ -1897,9 +1914,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) { } @@ -2344,7 +2362,7 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out LLRect::tCoordType screen_width = getSnapRect().getWidth(); LLRect::tCoordType screen_height = getSnapRect().getHeight(); - + // only automatically resize non-minimized, resizable floaters if( floater->isResizable() && !floater->isMinimized() ) { @@ -2369,7 +2387,11 @@ void LLFloaterView::adjustToFitScreen(LLFloater* floater, BOOL allow_partial_out new_width = llmax(new_width, min_width); new_height = llmax(new_height, min_height); - floater->reshape( new_width, new_height, TRUE ); + LLRect new_rect; + new_rect.setLeftTopAndSize(view_rect.mLeft,view_rect.mTop,new_width, new_height); + + floater->setShape(new_rect); + if (floater->followsRight()) { floater->translate(old_width - new_width, 0); @@ -2562,6 +2584,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) @@ -2579,6 +2603,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/llfloater.h b/indra/llui/llfloater.h index daf558de24..19e8288807 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -222,6 +222,7 @@ public: virtual BOOL handleScrollWheel(S32 x, S32 y, S32 mask); virtual void draw(); + virtual void drawShadow(LLPanel* panel); virtual void onOpen(const LLSD& key) {} virtual void onClose(bool app_quitting) {} @@ -256,7 +257,7 @@ public: bool isDocked() const { return mDocked; } virtual void setDocked(bool docked, bool pop_on_undock = true); - virtual void setTornOff(bool torn_off) {} + virtual void setTornOff(bool torn_off) { mTornOff = torn_off; } // Return a closeable floater, if any, given the current focus. static LLFloater* getClosableFloaterFromFocus(); @@ -301,6 +302,7 @@ protected: 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() @@ -387,6 +389,7 @@ private: bool mCanDock; bool mDocked; + bool mTornOff; static LLMultiFloater* sHostp; static BOOL sQuitting; @@ -467,9 +470,6 @@ public: void setSnapOffsetRight(S32 offset) { mSnapOffsetRight = offset; } private: - S32 mColumn; - S32 mNextLeft; - S32 mNextTop; BOOL mFocusCycleMode; S32 mSnapOffsetBottom; S32 mSnapOffsetRight; diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp index eb67e3a561..5de3934c8a 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 634a235926..8a11d5c3f2 100644 --- a/indra/llui/llfloaterreg.h +++ b/indra/llui/llfloaterreg.h @@ -75,6 +75,7 @@ private: 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 @@ public: { return dynamic_cast<T*>(showInstance(name, key, focus)); } + + static void blockShowFloaters(bool value) { sBlockShowFloaters = value;} }; diff --git a/indra/llui/llkeywords.cpp b/indra/llui/llkeywords.cpp index ede32084d0..75342afbe2 100644 --- a/indra/llui/llkeywords.cpp +++ b/indra/llui/llkeywords.cpp @@ -218,6 +218,86 @@ void LLKeywords::addToken(LLKeywordToken::TOKEN_TYPE type, llassert(0); } } +LLKeywords::WStringMapIndex::WStringMapIndex(const WStringMapIndex& other) +{ + if(other.mOwner) + { + copyData(other.mData, other.mLength); + } + else + { + mOwner = false; + mLength = other.mLength; + mData = other.mData; + } +} + +LLKeywords::WStringMapIndex::WStringMapIndex(const LLWString& str) +{ + copyData(str.data(), str.size()); +} + +LLKeywords::WStringMapIndex::WStringMapIndex(const llwchar *start, size_t length): +mData(start), mLength(length), mOwner(false) +{ +} + +LLKeywords::WStringMapIndex::~WStringMapIndex() +{ + if(mOwner) + delete[] mData; +} + +void LLKeywords::WStringMapIndex::copyData(const llwchar *start, size_t length) +{ + llwchar *data = new llwchar[length]; + memcpy((void*)data, (const void*)start, length * sizeof(llwchar)); + + mOwner = true; + mLength = length; + mData = data; +} + +bool LLKeywords::WStringMapIndex::operator<(const LLKeywords::WStringMapIndex &other) const +{ + // NOTE: Since this is only used to organize a std::map, it doesn't matter if it uses correct collate order or not. + // The comparison only needs to strictly order all possible strings, and be stable. + + bool result = false; + const llwchar* self_iter = mData; + const llwchar* self_end = mData + mLength; + const llwchar* other_iter = other.mData; + const llwchar* other_end = other.mData + other.mLength; + + while(true) + { + if(other_iter >= other_end) + { + // We've hit the end of other. + // This covers two cases: other being shorter than self, or the strings being equal. + // In either case, we want to return false. + result = false; + break; + } + else if(self_iter >= self_end) + { + // self is shorter than other. + result = true; + break; + } + else if(*self_iter != *other_iter) + { + // The current character differs. The strings are not equal. + result = *self_iter < *other_iter; + break; + } + + self_iter++; + other_iter++; + } + + return result; +} LLColor3 LLKeywords::readColor( const std::string& s ) { @@ -429,7 +509,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW S32 seg_len = p - cur; if( seg_len > 0 ) { - LLWString word( cur, 0, seg_len ); + WStringMapIndex word( cur, seg_len ); word_token_map_t::iterator map_iter = mWordTokenMap.find(word); if( map_iter != mWordTokenMap.end() ) { diff --git a/indra/llui/llkeywords.h b/indra/llui/llkeywords.h index 53377869ca..e5b66dfa56 100644 --- a/indra/llui/llkeywords.h +++ b/indra/llui/llkeywords.h @@ -92,8 +92,33 @@ public: const std::string& key, const LLColor3& color, const std::string& tool_tip = LLStringUtil::null); - - typedef std::map<LLWString, LLKeywordToken*> word_token_map_t; + + // This class is here as a performance optimization. + // The word token map used to be defined as std::map<LLWString, LLKeywordToken*>. + // This worked, but caused a performance bottleneck due to memory allocation and string copies + // because it's not possible to search such a map without creating an LLWString. + // Using this class as the map index instead allows us to search using segments of an existing + // text run without copying them first, which greatly reduces overhead in LLKeywords::findSegments(). + class WStringMapIndex + { + public: + // copy constructor + WStringMapIndex(const WStringMapIndex& other); + // constructor from a string (copies the string's data into the new object) + WStringMapIndex(const LLWString& str); + // constructor from pointer and length + // NOTE: does NOT copy data, caller must ensure that the lifetime of the pointer exceeds that of the new object! + WStringMapIndex(const llwchar *start, size_t length); + ~WStringMapIndex(); + bool operator<(const WStringMapIndex &other) const; + private: + void copyData(const llwchar *start, size_t length); + const llwchar *mData; + size_t mLength; + bool mOwner; + }; + + typedef std::map<WStringMapIndex, LLKeywordToken*> word_token_map_t; typedef word_token_map_t::const_iterator keyword_iterator_t; keyword_iterator_t begin() const { return mWordTokenMap.begin(); } keyword_iterator_t end() const { return mWordTokenMap.end(); } diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 1aaba88c49..4512091371 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -49,9 +49,11 @@ static LLDefaultChildRegistry::Register<LLLayoutStack> register_layout_stack("la // struct LLLayoutStack::LayoutPanel { - LayoutPanel(LLPanel* panelp, ELayoutOrientation orientation, S32 min_width, S32 min_height, BOOL auto_resize, BOOL user_resize) : mPanel(panelp), + LayoutPanel(LLPanel* panelp, ELayoutOrientation orientation, S32 min_width, S32 min_height, S32 max_width, S32 max_height, BOOL auto_resize, BOOL user_resize) : mPanel(panelp), mMinWidth(min_width), mMinHeight(min_height), + mMaxWidth(max_width), + mMaxHeight(max_height), mAutoResize(auto_resize), mUserResize(user_resize), mOrientation(orientation), @@ -112,6 +114,11 @@ struct LLLayoutStack::LayoutPanel LLPanel* mPanel; S32 mMinWidth; S32 mMinHeight; + + // mMaxWidth & mMaxHeight are added to make configurable max width of the nearby chat bar. EXT-5589 + // they are not processed by LLLayoutStack but they can be if necessary + S32 mMaxWidth; + S32 mMaxHeight; BOOL mAutoResize; BOOL mUserResize; BOOL mCollapsed; @@ -261,10 +268,14 @@ LLView* LLLayoutStack::fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o { const S32 DEFAULT_MIN_WIDTH = 0; const S32 DEFAULT_MIN_HEIGHT = 0; + const S32 DEFAULT_MAX_WIDTH = S32_MAX; + const S32 DEFAULT_MAX_HEIGHT = S32_MAX; const BOOL DEFAULT_AUTO_RESIZE = TRUE; S32 min_width = DEFAULT_MIN_WIDTH; S32 min_height = DEFAULT_MIN_HEIGHT; + S32 max_width = DEFAULT_MAX_WIDTH; + S32 max_height = DEFAULT_MAX_HEIGHT; BOOL auto_resize = DEFAULT_AUTO_RESIZE; LLXMLNodePtr output_child; @@ -281,6 +292,10 @@ LLView* LLLayoutStack::fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o DEFAULT_MIN_WIDTH, output_child); get_attribute_s32_and_write(child_node, "min_height", &min_height, DEFAULT_MIN_HEIGHT, output_child); + get_attribute_s32_and_write(child_node, "max_width", &max_width, + DEFAULT_MAX_WIDTH, output_child); + get_attribute_s32_and_write(child_node, "max_height", &max_height, + DEFAULT_MAX_HEIGHT, output_child); get_attribute_bool_and_write(child_node, "auto_resize", &auto_resize, DEFAULT_AUTO_RESIZE, output_child); @@ -293,7 +308,7 @@ LLView* LLLayoutStack::fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o if (panelp) { panelp->setFollowsNone(); - layout_stackp->addPanel(panelp, min_width, min_height, auto_resize, user_resize); + layout_stackp->addPanel(panelp, min_width, min_height, max_width, max_height, auto_resize, user_resize); } } else @@ -309,7 +324,7 @@ LLView* LLLayoutStack::fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o if (new_child) { // put child in new embedded panel - layout_stackp->addPanel(panelp, min_width, min_height, auto_resize, user_resize); + layout_stackp->addPanel(panelp, min_width, min_height, max_width, max_height, auto_resize, user_resize); // resize panel to contain widget and move widget to be contained in panel panelp->setRect(new_child->getRect()); new_child->setOrigin(0, 0); @@ -359,14 +374,14 @@ S32 LLLayoutStack::getDefaultWidth(S32 cur_width) return cur_width; } -void LLLayoutStack::addPanel(LLPanel* panel, S32 min_width, S32 min_height, BOOL auto_resize, BOOL user_resize, EAnimate animate, S32 index) +void LLLayoutStack::addPanel(LLPanel* panel, S32 min_width, S32 min_height, S32 max_width, S32 max_height, BOOL auto_resize, BOOL user_resize, EAnimate animate, S32 index) { // panel starts off invisible (collapsed) if (animate == ANIMATE) { panel->setVisible(FALSE); } - LayoutPanel* embedded_panel = new LayoutPanel(panel, mOrientation, min_width, min_height, auto_resize, user_resize); + LayoutPanel* embedded_panel = new LayoutPanel(panel, mOrientation, min_width, min_height, max_width, max_height, auto_resize, user_resize); mPanels.insert(mPanels.begin() + llclamp(index, 0, (S32)mPanels.size()), embedded_panel); @@ -437,6 +452,19 @@ bool LLLayoutStack::getPanelMinSize(const std::string& panel_name, S32* min_widt return NULL != panel; } +bool LLLayoutStack::getPanelMaxSize(const std::string& panel_name, S32* max_widthp, S32* max_heightp) +{ + LayoutPanel* panel = findEmbeddedPanelByName(panel_name); + + if (panel) + { + if (max_widthp) *max_widthp = panel->mMaxWidth; + if (max_heightp) *max_heightp = panel->mMaxHeight; + } + + return NULL != panel; +} + static LLFastTimer::DeclareTimer FTM_UPDATE_LAYOUT("Update LayoutStacks"); void LLLayoutStack::updateLayout(BOOL force_resize) { @@ -816,7 +844,10 @@ void LLLayoutStack::calcMinExtents() //static void LLLayoutStack::updateClass() { - for (LLLayoutStack::instance_iter it = beginInstances(); it != endInstances(); ++it) + LLInstanceTrackerScopedGuard guard; + for (LLLayoutStack::instance_iter it = guard.beginInstances(); + it != guard.endInstances(); + ++it) { it->updateLayout(); } diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index cde383b047..e454454fe2 100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h @@ -74,7 +74,7 @@ public: ANIMATE } EAnimate; - void addPanel(LLPanel* panel, S32 min_width, S32 min_height, BOOL auto_resize, BOOL user_resize, EAnimate animate = NO_ANIMATE, S32 index = S32_MAX); + void addPanel(LLPanel* panel, S32 min_width, S32 min_height, S32 max_width, S32 max_height, BOOL auto_resize, BOOL user_resize, EAnimate animate = NO_ANIMATE, S32 index = S32_MAX); void removePanel(LLPanel* panel); void collapsePanel(LLPanel* panel, BOOL collapsed = TRUE); S32 getNumPanels() { return mPanels.size(); } @@ -89,8 +89,21 @@ public: * @returns true if specified by panel_name internal panel exists, false otherwise. */ bool getPanelMinSize(const std::string& panel_name, S32* min_widthp, S32* min_heightp); + + /** + * Gets maximal width and/or height of the specified by name panel. + * + * If it is necessary to get only the one dimension pass NULL for another one. + * @returns true if specified by panel_name internal panel exists, false otherwise. + */ + bool getPanelMaxSize(const std::string& panel_name, S32* max_width, S32* max_height); void updateLayout(BOOL force_resize = FALSE); + + S32 getPanelSpacing() const { return mPanelSpacing; } + BOOL getAnimate () const { return mAnimate; } + void setAnimate (BOOL animate) { mAnimate = animate; } + static void updateClass(); protected: diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index 8a21155cc3..483a394bbd 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -55,6 +55,7 @@ #include "llui.h" #include "lluictrlfactory.h" #include "llclipboard.h" +#include "llmenugl.h" // // Imported globals @@ -70,6 +71,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\x80\xA2" ); // U+2022 BULLET + static LLDefaultChildRegistry::Register<LLLineEditor> r1("line_editor"); // Compiler optimization, generate extern template @@ -80,19 +83,6 @@ template class LLLineEditor* LLView::getChild<class LLLineEditor>( // Member functions // -void LLLineEditor::PrevalidateNamedFuncs::declareValues() -{ - declare("ascii", LLLineEditor::prevalidateASCII); - declare("float", LLLineEditor::prevalidateFloat); - declare("int", LLLineEditor::prevalidateInt); - declare("positive_s32", LLLineEditor::prevalidatePositiveS32); - declare("non_negative_s32", LLLineEditor::prevalidateNonNegativeS32); - declare("alpha_num", LLLineEditor::prevalidateAlphaNum); - declare("alpha_num_space", LLLineEditor::prevalidateAlphaNumSpace); - declare("ascii_printable_no_pipe", LLLineEditor::prevalidateASCIIPrintableNoPipe); - declare("ascii_printable_no_space", LLLineEditor::prevalidateASCIIPrintableNoSpace); -} - LLLineEditor::Params::Params() : max_length_bytes("max_length", 254), keystroke_callback("keystroke_callback"), @@ -162,7 +152,8 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p) mTentativeFgColor(p.text_tentative_color()), mHighlightColor(p.highlight_color()), mPreeditBgColor(p.preedit_bg_color()), - mGLFont(p.font) + mGLFont(p.font), + mContextMenuHandle() { llassert( mMaxLengthBytes > 0 ); @@ -189,6 +180,12 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p) setCursor(mText.length()); setPrevalidate(p.prevalidate_callback()); + + LLContextMenu* menu = LLUICtrlFactory::instance().createFromFile<LLContextMenu> + ("menu_text_editor.xml", + LLMenuGL::sMenuContainer, + LLMenuHolderGL::child_registry_t::instance()); + setContextMenu(menu); } LLLineEditor::~LLLineEditor() @@ -401,7 +398,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(); } @@ -420,12 +417,16 @@ void LLLineEditor::setCursor( S32 pos ) S32 old_cursor_pos = getCursor(); mCursorPos = llclamp( pos, 0, mText.length()); + // position of end of next character after cursor S32 pixels_after_scroll = findPixelNearestPos(); if( pixels_after_scroll > mTextRightEdge ) { S32 width_chars_to_left = mGLFont->getWidth(mText.getWString().c_str(), 0, mScrollHPos); S32 last_visible_char = mGLFont->maxDrawableChars(mText.getWString().c_str(), llmax(0.f, (F32)(mTextRightEdge - mTextLeftEdge + width_chars_to_left))); - S32 min_scroll = mGLFont->firstDrawableChar(mText.getWString().c_str(), (F32)(mTextRightEdge - mTextLeftEdge), mText.length(), getCursor()); + // character immediately to left of cursor should be last one visible (SCROLL_INCREMENT_ADD will scroll in more characters) + // or first character if cursor is at beginning + S32 new_last_visible_char = llmax(0, getCursor() - 1); + S32 min_scroll = mGLFont->firstDrawableChar(mText.getWString().c_str(), (F32)(mTextRightEdge - mTextLeftEdge), mText.length(), new_last_visible_char); if (old_cursor_pos == last_visible_char) { mScrollHPos = llmin(mText.length(), llmax(min_scroll, mScrollHPos + SCROLL_INCREMENT_ADD)); @@ -661,6 +662,16 @@ BOOL LLLineEditor::handleMiddleMouseDown(S32 x, S32 y, MASK mask) return TRUE; } +BOOL LLLineEditor::handleRightMouseDown(S32 x, S32 y, MASK mask) +{ + setFocus(TRUE); + if (!LLUICtrl::handleRightMouseDown(x, y, mask)) + { + showContextMenu(x, y); + } + return TRUE; +} + BOOL LLLineEditor::handleHover(S32 x, S32 y, MASK mask) { BOOL handled = FALSE; @@ -1583,7 +1594,6 @@ void LLLineEditor::draw() F32 alpha = getDrawContext().mAlpha; S32 text_len = mText.length(); static LLUICachedControl<S32> lineeditor_cursor_thickness ("UILineEditorCursorThickness", 0); - static LLUICachedControl<S32> lineeditor_v_pad ("UILineEditorVPad", 0); static LLUICachedControl<F32> preedit_marker_brightness ("UIPreeditMarkerBrightness", 0); static LLUICachedControl<S32> preedit_marker_gap ("UIPreeditMarkerGap", 0); static LLUICachedControl<S32> preedit_marker_position ("UIPreeditMarkerPosition", 0); @@ -1600,7 +1610,7 @@ void LLLineEditor::draw() std::string text; for (S32 i = 0; i < mText.length(); i++) { - text += '*'; + text += PASSWORD_ASTERISK; } mText = text; } @@ -1609,6 +1619,8 @@ void LLLineEditor::draw() LLRect background( 0, getRect().getHeight(), getRect().getWidth(), 0 ); background.stretch( -mBorderThickness ); + S32 lineeditor_v_pad = llround((background.getHeight() - mGLFont->getLineHeight())/2); + drawBackground(); // draw text @@ -1959,51 +1971,12 @@ void LLLineEditor::setRect(const LLRect& rect) } } -void LLLineEditor::setPrevalidate(LLLinePrevalidateFunc func) +void LLLineEditor::setPrevalidate(LLTextValidate::validate_func_t func) { mPrevalidateFunc = func; updateAllowingLanguageInput(); } -// Limits what characters can be used to [1234567890.-] with [-] only valid in the first position. -// Does NOT ensure that the string is a well-formed number--that's the job of post-validation--for -// the simple reasons that intermediate states may be invalid even if the final result is valid. -// -// static -BOOL LLLineEditor::prevalidateFloat(const LLWString &str) -{ - LLLocale locale(LLLocale::USER_LOCALE); - - BOOL success = TRUE; - LLWString trimmed = str; - LLWStringUtil::trim(trimmed); - S32 len = trimmed.length(); - if( 0 < len ) - { - // May be a comma or period, depending on the locale - llwchar decimal_point = (llwchar)LLResMgr::getInstance()->getDecimalPoint(); - - S32 i = 0; - - // First character can be a negative sign - if( '-' == trimmed[0] ) - { - i++; - } - - for( ; i < len; i++ ) - { - if( (decimal_point != trimmed[i] ) && !LLStringOps::isDigit( trimmed[i] ) ) - { - success = FALSE; - break; - } - } - } - - return success; -} - // static BOOL LLLineEditor::postvalidateFloat(const std::string &str) { @@ -2063,223 +2036,6 @@ BOOL LLLineEditor::postvalidateFloat(const std::string &str) return success; } -// Limits what characters can be used to [1234567890-] with [-] only valid in the first position. -// Does NOT ensure that the string is a well-formed number--that's the job of post-validation--for -// the simple reasons that intermediate states may be invalid even if the final result is valid. -// -// static -BOOL LLLineEditor::prevalidateInt(const LLWString &str) -{ - LLLocale locale(LLLocale::USER_LOCALE); - - BOOL success = TRUE; - LLWString trimmed = str; - LLWStringUtil::trim(trimmed); - S32 len = trimmed.length(); - if( 0 < len ) - { - S32 i = 0; - - // First character can be a negative sign - if( '-' == trimmed[0] ) - { - i++; - } - - for( ; i < len; i++ ) - { - if( !LLStringOps::isDigit( trimmed[i] ) ) - { - success = FALSE; - break; - } - } - } - - return success; -} - -// static -BOOL LLLineEditor::prevalidatePositiveS32(const LLWString &str) -{ - LLLocale locale(LLLocale::USER_LOCALE); - - LLWString trimmed = str; - LLWStringUtil::trim(trimmed); - S32 len = trimmed.length(); - BOOL success = TRUE; - if(0 < len) - { - if(('-' == trimmed[0]) || ('0' == trimmed[0])) - { - success = FALSE; - } - S32 i = 0; - while(success && (i < len)) - { - if(!LLStringOps::isDigit(trimmed[i++])) - { - success = FALSE; - } - } - } - if (success) - { - S32 val = strtol(wstring_to_utf8str(trimmed).c_str(), NULL, 10); - if (val <= 0) - { - success = FALSE; - } - } - return success; -} - -BOOL LLLineEditor::prevalidateNonNegativeS32(const LLWString &str) -{ - LLLocale locale(LLLocale::USER_LOCALE); - - LLWString trimmed = str; - LLWStringUtil::trim(trimmed); - S32 len = trimmed.length(); - BOOL success = TRUE; - if(0 < len) - { - if('-' == trimmed[0]) - { - success = FALSE; - } - S32 i = 0; - while(success && (i < len)) - { - if(!LLStringOps::isDigit(trimmed[i++])) - { - success = FALSE; - } - } - } - if (success) - { - S32 val = strtol(wstring_to_utf8str(trimmed).c_str(), NULL, 10); - if (val < 0) - { - success = FALSE; - } - } - return success; -} - -BOOL LLLineEditor::prevalidateAlphaNum(const LLWString &str) -{ - LLLocale locale(LLLocale::USER_LOCALE); - - BOOL rv = TRUE; - S32 len = str.length(); - if(len == 0) return rv; - while(len--) - { - if( !LLStringOps::isAlnum((char)str[len]) ) - { - rv = FALSE; - break; - } - } - return rv; -} - -// static -BOOL LLLineEditor::prevalidateAlphaNumSpace(const LLWString &str) -{ - LLLocale locale(LLLocale::USER_LOCALE); - - BOOL rv = TRUE; - S32 len = str.length(); - if(len == 0) return rv; - while(len--) - { - if(!(LLStringOps::isAlnum((char)str[len]) || (' ' == str[len]))) - { - rv = FALSE; - break; - } - } - return rv; -} - -// Used for most names of things stored on the server, due to old file-formats -// that used the pipe (|) for multiline text storage. Examples include -// inventory item names, parcel names, object names, etc. -// static -BOOL LLLineEditor::prevalidateASCIIPrintableNoPipe(const LLWString &str) -{ - BOOL rv = TRUE; - S32 len = str.length(); - if(len == 0) return rv; - while(len--) - { - llwchar wc = str[len]; - if (wc < 0x20 - || wc > 0x7f - || wc == '|') - { - rv = FALSE; - break; - } - if(!(wc == ' ' - || LLStringOps::isAlnum((char)wc) - || LLStringOps::isPunct((char)wc) ) ) - { - rv = FALSE; - break; - } - } - return rv; -} - - -// Used for avatar names -// static -BOOL LLLineEditor::prevalidateASCIIPrintableNoSpace(const LLWString &str) -{ - BOOL rv = TRUE; - S32 len = str.length(); - if(len == 0) return rv; - while(len--) - { - llwchar wc = str[len]; - if (wc < 0x20 - || wc > 0x7f - || LLStringOps::isSpace(wc)) - { - rv = FALSE; - break; - } - if( !(LLStringOps::isAlnum((char)str[len]) || - LLStringOps::isPunct((char)str[len]) ) ) - { - rv = FALSE; - break; - } - } - return rv; -} - - -// static -BOOL LLLineEditor::prevalidateASCII(const LLWString &str) -{ - BOOL rv = TRUE; - S32 len = str.length(); - while(len--) - { - if (str[len] < 0x20 || str[len] > 0x7f) - { - rv = FALSE; - break; - } - } - return rv; -} - void LLLineEditor::onMouseCaptureLost() { endSelection(); @@ -2557,3 +2313,25 @@ LLWString LLLineEditor::getConvertedText() const } return text; } + +void LLLineEditor::showContextMenu(S32 x, S32 y) +{ + LLContextMenu* menu = static_cast<LLContextMenu*>(mContextMenuHandle.get()); + + if (menu) + { + gEditMenuHandler = this; + + S32 screen_x, screen_y; + localPointToScreen(x, y, &screen_x, &screen_y); + menu->show(screen_x, screen_y); + } +} + +void LLLineEditor::setContextMenu(LLContextMenu* new_context_menu) +{ + if (new_context_menu) + mContextMenuHandle = new_context_menu->getHandle(); + else + mContextMenuHandle.markDead(); +} diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h index 49e9539b16..b62138426b 100644 --- a/indra/llui/lllineeditor.h +++ b/indra/llui/lllineeditor.h @@ -51,26 +51,18 @@ #include "llviewborder.h" #include "llpreeditor.h" -#include <boost/function.hpp> +#include "lltextvalidate.h" class LLFontGL; class LLLineEditorRollback; class LLButton; - -typedef boost::function<BOOL (const LLWString &wstr)> LLLinePrevalidateFunc; +class LLContextMenu; class LLLineEditor : public LLUICtrl, public LLEditMenuHandler, protected LLPreeditor { public: - struct PrevalidateNamedFuncs - : public LLInitParam::TypeValuesHelper<LLLinePrevalidateFunc, PrevalidateNamedFuncs> - - { - static void declareValues(); - }; - typedef boost::function<void (LLLineEditor* caller)> keystroke_callback_t; struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> @@ -80,7 +72,7 @@ public: Optional<keystroke_callback_t> keystroke_callback; - Optional<LLLinePrevalidateFunc, PrevalidateNamedFuncs> prevalidate_callback; + Optional<LLTextValidate::validate_func_t, LLTextValidate::ValidateTextNamedFuncs> prevalidate_callback; Optional<LLViewBorder::Params> border; @@ -113,6 +105,7 @@ protected: LLLineEditor(const Params&); friend class LLUICtrlFactory; friend class LLFloaterEditUI; + void showContextMenu(S32 x, S32 y); public: virtual ~LLLineEditor(); @@ -122,6 +115,7 @@ public: /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask); /*virtual*/ BOOL handleDoubleClick(S32 x,S32 y,MASK mask); /*virtual*/ BOOL handleMiddleMouseDown(S32 x,S32 y,MASK mask); + /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask ); /*virtual*/ BOOL handleUnicodeCharHere(llwchar uni_char); /*virtual*/ void onMouseCaptureLost(); @@ -204,6 +198,8 @@ public: const LLColor4& getReadOnlyFgColor() const { return mReadOnlyFgColor.get(); } const LLColor4& getTentativeFgColor() const { return mTentativeFgColor.get(); } + const LLFontGL* getFont() const { return mGLFont; } + void setIgnoreArrowKeys(BOOL b) { mIgnoreArrowKeys = b; } void setIgnoreTab(BOOL b) { mIgnoreTab = b; } void setPassDelete(BOOL b) { mPassDelete = b; } @@ -231,17 +227,7 @@ public: void setTextPadding(S32 left, S32 right); // Prevalidation controls which keystrokes can affect the editor - void setPrevalidate( LLLinePrevalidateFunc func ); - static BOOL prevalidateFloat(const LLWString &str ); - static BOOL prevalidateInt(const LLWString &str ); - static BOOL prevalidatePositiveS32(const LLWString &str); - static BOOL prevalidateNonNegativeS32(const LLWString &str); - static BOOL prevalidateAlphaNum(const LLWString &str ); - static BOOL prevalidateAlphaNumSpace(const LLWString &str ); - static BOOL prevalidateASCIIPrintableNoPipe(const LLWString &str); - static BOOL prevalidateASCIIPrintableNoSpace(const LLWString &str); - static BOOL prevalidateASCII(const LLWString &str); - + void setPrevalidate( LLTextValidate::validate_func_t func ); static BOOL postvalidateFloat(const std::string &str); // line history support: @@ -249,7 +235,9 @@ public: void updateHistory(); // stores current line in history void setReplaceNewlinesWithSpaces(BOOL replace); - + + void setContextMenu(LLContextMenu* new_context_menu); + private: // private helper methods @@ -319,7 +307,7 @@ protected: S32 mLastSelectionStart; S32 mLastSelectionEnd; - LLLinePrevalidateFunc mPrevalidateFunc; + LLTextValidate::validate_func_t mPrevalidateFunc; LLFrameTimer mKeystrokeTimer; LLTimer mTripleClickTimer; @@ -348,6 +336,8 @@ protected: std::vector<S32> mPreeditPositions; LLPreeditor::standouts_t mPreeditStandouts; + LLHandle<LLView> mContextMenuHandle; + private: // Instances that by default point to the statics but can be overidden in XML. LLPointer<LLUIImage> mBgImage; diff --git a/indra/llui/llmenubutton.h b/indra/llui/llmenubutton.h index 02eb9d3806..d0e99d9f40 100644 --- a/indra/llui/llmenubutton.h +++ b/indra/llui/llmenubutton.h @@ -55,6 +55,7 @@ public: /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); /*virtual*/ BOOL handleKeyHere(KEY key, MASK mask ); void hideMenu(); + LLMenuGL* getMenu() { return mMenu; } protected: friend class LLUICtrlFactory; diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 60ef01074b..0d56c5ed31 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -23,7 +23,7 @@ * 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. @@ -46,6 +46,7 @@ #include "llmenugl.h" +#include "llgl.h" #include "llmath.h" #include "llrender.h" #include "llfocusmgr.h" @@ -98,7 +99,7 @@ const S32 TEAROFF_SEPARATOR_HEIGHT_PIXELS = 10; const S32 MENU_ITEM_PADDING = 4; const std::string BOOLEAN_TRUE_PREFIX( "\xE2\x9C\x94" ); // U+2714 HEAVY CHECK MARK -const std::string BRANCH_SUFFIX( ">" ); +const std::string BRANCH_SUFFIX( "\xE2\x96\xB6" ); // U+25B6 BLACK RIGHT-POINTING TRIANGLE const std::string ARROW_UP ("^^^^^^^"); const std::string ARROW_DOWN("vvvvvvv"); @@ -477,6 +478,7 @@ void LLMenuItemGL::draw( void ) if (dynamic_cast<LLMenuItemCallGL*>(this)) debug_count++; gGL.color4fv( mHighlightBackground.get().mV ); + gl_rect_2d( 0, getRect().getHeight(), getRect().getWidth(), 0 ); } @@ -655,11 +657,38 @@ LLMenuItemVerticalSeparatorGL::LLMenuItemVerticalSeparatorGL( void ) // Class LLMenuItemTearOffGL //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LLMenuItemTearOffGL::LLMenuItemTearOffGL(const LLMenuItemTearOffGL::Params& p) -: LLMenuItemGL(p), - mParentHandle(p.parent_floater_handle) +: LLMenuItemGL(p) { } +// Returns the first floater ancestor if there is one +LLFloater* LLMenuItemTearOffGL::getParentFloater() +{ + LLView* parent_view = getMenu(); + + while (parent_view) + { + if (dynamic_cast<LLFloater*>(parent_view)) + { + return dynamic_cast<LLFloater*>(parent_view); + } + + bool parent_is_menu = dynamic_cast<LLMenuGL*>(parent_view) && !dynamic_cast<LLMenuBarGL*>(parent_view); + + if (parent_is_menu) + { + // use menu parent + parent_view = dynamic_cast<LLMenuGL*>(parent_view)->getParentMenuItem(); + } + else + { + // just use regular view parent + parent_view = parent_view->getParent(); + } + } + + return NULL; +} void LLMenuItemTearOffGL::onCommit() { @@ -678,7 +707,7 @@ void LLMenuItemTearOffGL::onCommit() getMenu()->needsArrange(); - LLFloater* parent_floater = mParentHandle.get(); + LLFloater* parent_floater = getParentFloater(); LLFloater* tear_off_menu = LLTearOffMenu::create(getMenu()); if (tear_off_menu) @@ -1143,37 +1172,41 @@ BOOL LLMenuItemBranchGL::handleKeyHere( KEY key, MASK mask ) if (!branch) return LLMenuItemGL::handleKeyHere(key, mask); - if (getMenu()->getVisible() && branch->getVisible() && key == KEY_LEFT) + // an item is highlighted, my menu is open, and I have an active sub menu or we are in + // keyboard navigation mode + if (getHighlight() + && getMenu()->isOpen() + && (isActive() || LLMenuGL::getKeyboardMode())) { - // switch to keyboard navigation mode - LLMenuGL::setKeyboardMode(TRUE); - - BOOL handled = branch->clearHoverItem(); - if (branch->getTornOff()) - { - ((LLFloater*)branch->getParent())->setFocus(FALSE); - } - if (handled && getMenu()->getTornOff()) + if (branch->getVisible() && key == KEY_LEFT) { - ((LLFloater*)getMenu()->getParent())->setFocus(TRUE); - } - return handled; - } + // switch to keyboard navigation mode + LLMenuGL::setKeyboardMode(TRUE); - if (getHighlight() && - getMenu()->isOpen() && - key == KEY_RIGHT && !branch->getHighlightedItem()) - { - // switch to keyboard navigation mode - LLMenuGL::setKeyboardMode(TRUE); + BOOL handled = branch->clearHoverItem(); + if (branch->getTornOff()) + { + ((LLFloater*)branch->getParent())->setFocus(FALSE); + } + if (handled && getMenu()->getTornOff()) + { + ((LLFloater*)getMenu()->getParent())->setFocus(TRUE); + } + return handled; + } - LLMenuItemGL* itemp = branch->highlightNextItem(NULL); - if (itemp) + if (key == KEY_RIGHT && !branch->getHighlightedItem()) { - return TRUE; + // switch to keyboard navigation mode + LLMenuGL::setKeyboardMode(TRUE); + + LLMenuItemGL* itemp = branch->highlightNextItem(NULL); + if (itemp) + { + return TRUE; + } } } - return LLMenuItemGL::handleKeyHere(key, mask); } @@ -1208,22 +1241,41 @@ void LLMenuItemBranchGL::openMenu() branch->arrange(); - LLRect rect = branch->getRect(); + LLRect branch_rect = branch->getRect(); // calculate root-view relative position for branch menu S32 left = getRect().mRight; S32 top = getRect().mTop - getRect().mBottom; localPointToOtherView(left, top, &left, &top, branch->getParent()); - rect.setLeftTopAndSize( left, top, - rect.getWidth(), rect.getHeight() ); + branch_rect.setLeftTopAndSize( left, top, + branch_rect.getWidth(), branch_rect.getHeight() ); if (branch->getCanTearOff()) { - rect.translate(0, TEAROFF_SEPARATOR_HEIGHT_PIXELS); + branch_rect.translate(0, TEAROFF_SEPARATOR_HEIGHT_PIXELS); + } + branch->setRect( branch_rect ); + + // if branch extends outside of menu region change the direction it opens in + S32 x, y; + S32 delta_x = 0; + S32 delta_y = 0; + branch->localPointToOtherView( 0, 0, &x, &y, branch->getParent() ); + if( y < menu_region_rect.mBottom ) + { + // open upwards if menu extends past bottom + // adjust by the height of the menu item branch since it is a submenu + delta_y = branch_rect.getHeight() - getRect().getHeight(); } - branch->setRect( rect ); - branch->translateIntoRectWithExclusion( menu_region_rect, getMenu()->getRect(), FALSE ); + + if( x + branch_rect.getWidth() > menu_region_rect.mRight ) + { + // move sub-menu over to left side + delta_x = llmax(-x, ( -(branch_rect.getWidth() + getRect().getWidth()))); + } + branch->translate( delta_x, delta_y ); + branch->setVisible( TRUE ); branch->getParent()->sendChildToFront(branch); @@ -1412,7 +1464,7 @@ BOOL LLMenuItemBranchDownGL::handleKeyHere(KEY key, MASK mask) { BOOL menu_open = getBranch()->getVisible(); // don't do keyboard navigation of top-level menus unless in keyboard mode, or menu expanded - if (getHighlight() && getMenu()->getVisible() && (isActive() || LLMenuGL::getKeyboardMode())) + if (getHighlight() && getMenu()->isOpen() && (isActive() || LLMenuGL::getKeyboardMode())) { if (key == KEY_LEFT) { @@ -1626,6 +1678,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), @@ -1645,7 +1698,6 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p) mSpilloverMenu(NULL), mJumpKey(p.jump_key), mCreateJumpKeys(p.create_jump_keys), - mParentFloaterHandle(p.parent_floater), mNeedsArrange(FALSE), mShortcutPad(p.shortcut_pad) { @@ -1673,7 +1725,7 @@ LLMenuGL::LLMenuGL(const LLMenuGL::Params& p) void LLMenuGL::initFromParams(const LLMenuGL::Params& p) { LLUICtrl::initFromParams(p); - setCanTearOff(p.can_tear_off, p.parent_floater); + setCanTearOff(p.can_tear_off); } // Destroys the object @@ -1685,12 +1737,11 @@ LLMenuGL::~LLMenuGL( void ) mJumpKeys.clear(); } -void LLMenuGL::setCanTearOff(BOOL tear_off, LLHandle<LLFloater> parent_floater_handle ) +void LLMenuGL::setCanTearOff(BOOL tear_off) { if (tear_off && mTearOffItem == NULL) { LLMenuItemTearOffGL::Params p; - p.parent_floater_handle = parent_floater_handle; mTearOffItem = LLUICtrlFactory::create<LLMenuItemTearOffGL>(p); addChildInBack(mTearOffItem); } @@ -1850,17 +1901,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_iter != 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)->getVisible()) - { - mFirstVisibleItem = *next_item_iter; } mNeedsArrange = TRUE; @@ -2203,7 +2258,6 @@ void LLMenuGL::createSpilloverBranch() LLMenuGL::Params p; p.name("More"); p.label("More"); // *TODO: Translate - p.parent_floater(mParentFloaterHandle); p.bg_color(mBackgroundColor); p.bg_visible(true); p.can_tear_off(false); @@ -2784,7 +2838,7 @@ BOOL LLMenuGL::handleHover( S32 x, S32 y, MASK mask ) ((LLMenuItemGL*)viewp)->setHighlight(TRUE); LLMenuGL::setKeyboardMode(FALSE); } - mHasSelection = TRUE; + mHasSelection = true; } } } @@ -2817,6 +2871,7 @@ BOOL LLMenuGL::handleScrollWheel( S32 x, S32 y, S32 clicks ) return TRUE; } + void LLMenuGL::draw( void ) { if (mNeedsArrange) @@ -2862,7 +2917,7 @@ void LLMenuGL::setVisible(BOOL visible) } else { - mHasSelection = FALSE; + mHasSelection = true; mFadeTimer.stop(); } @@ -2940,7 +2995,7 @@ void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y) LLUI::getMousePositionLocal(menu->getParent(), &mouse_x, &mouse_y); LLMenuHolderGL::sContextMenuSpawnPos.set(mouse_x,mouse_y); - const LLRect menu_region_rect = LLMenuGL::sMenuContainer->getMenuRect(); + const LLRect menu_region_rect = LLMenuGL::sMenuContainer->getRect(); const S32 HPAD = 2; LLRect rect = menu->getRect(); @@ -3910,7 +3965,6 @@ BOOL LLContextMenu::appendContextSubMenu(LLContextMenu *menu) item = LLUICtrlFactory::create<LLContextMenuBranch>(p); LLMenuGL::sMenuContainer->addChild(item->getBranch()); - item->setFont( LLFontGL::getFontSansSerif() ); return append( item ); } diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h index 61e06f9e5f..39d1986461 100644 --- a/indra/llui/llmenugl.h +++ b/indra/llui/llmenugl.h @@ -355,7 +355,6 @@ class LLMenuGL public: struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> { - Optional<LLHandle<LLFloater> > parent_floater; Optional<KEY> jump_key; Optional<bool> horizontal_layout, can_tear_off, @@ -430,7 +429,7 @@ public: void setBackgroundColor( const LLUIColor& color ) { mBackgroundColor = color; } const LLUIColor& getBackgroundColor() const { return mBackgroundColor; } void setBackgroundVisible( BOOL b ) { mBgVisible = b; } - void setCanTearOff(BOOL tear_off, LLHandle<LLFloater> parent_floater_handle = LLHandle<LLFloater>()); + void setCanTearOff(BOOL tear_off); // add a separator to this menu virtual BOOL addSeparator(); @@ -546,14 +545,13 @@ private: LLHandle<LLView> mParentMenuItem; LLUIString mLabel; BOOL mDropShadowed; // Whether to drop shadow - BOOL mHasSelection; + bool mHasSelection; LLFrameTimer mFadeTimer; LLTimer mScrollItemsTimer; BOOL mTornOff; class LLMenuItemTearOffGL* mTearOffItem; class LLMenuItemBranchGL* mSpilloverBranch; LLMenuGL* mSpilloverMenu; - LLHandle<LLFloater> mParentFloaterHandle; KEY mJumpKey; BOOL mCreateJumpKeys; S32 mShortcutPad; @@ -814,7 +812,6 @@ class LLMenuItemTearOffGL : public LLMenuItemGL public: struct Params : public LLInitParam::Block<Params, LLMenuItemGL::Params> { - Optional<LLHandle<LLFloater> > parent_floater_handle; Params() { name = "tear off"; @@ -823,13 +820,12 @@ public: }; LLMenuItemTearOffGL( const Params& ); - + virtual void onCommit(void); virtual void draw(void); virtual U32 getNominalHeight() const; -private: - LLHandle<LLFloater> mParentHandle; + LLFloater* getParentFloater(); }; diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp index 78738c826d..33d47a3f0e 100644 --- a/indra/llui/llmultifloater.cpp +++ b/indra/llui/llmultifloater.cpp @@ -92,14 +92,6 @@ void LLMultiFloater::draw() } else { - for (S32 i = 0; i < mTabContainer->getTabCount(); i++) - { - LLFloater* floaterp = (LLFloater*)mTabContainer->getPanelByIndex(i); - if (floaterp->getShortTitle() != mTabContainer->getPanelTitle(i)) - { - mTabContainer->setPanelTitle(i, floaterp->getShortTitle()); - } - } LLFloater::draw(); } } diff --git a/indra/llui/llmultislider.cpp b/indra/llui/llmultislider.cpp index aea7c5f87c..27a727fdf5 100644 --- a/indra/llui/llmultislider.cpp +++ b/indra/llui/llmultislider.cpp @@ -490,7 +490,7 @@ void LLMultiSlider::draw() F32 opacity = getEnabled() ? 1.f : 0.3f; // Track - LLUIImagePtr thumb_imagep = LLUI::getUIImage("rounded_square.tga"); + LLUIImagePtr thumb_imagep = LLUI::getUIImage("Rounded_Square"); static LLUICachedControl<S32> multi_track_height ("UIMultiTrackHeight", 0); S32 height_offset = (getRect().getHeight() - multi_track_height) / 2; diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp index f4434a0f78..cc26c00a3e 100644 --- a/indra/llui/llmultisliderctrl.cpp +++ b/indra/llui/llmultisliderctrl.cpp @@ -138,7 +138,7 @@ LLMultiSliderCtrl::LLMultiSliderCtrl(const LLMultiSliderCtrl::Params& p) params.font(p.font); params.max_length_bytes(MAX_STRING_LENGTH); params.commit_callback.function(LLMultiSliderCtrl::onEditorCommit); - params.prevalidate_callback(&LLLineEditor::prevalidateFloat); + params.prevalidate_callback(&LLTextValidate::validateFloat); params.follows.flags(FOLLOWS_LEFT | FOLLOWS_BOTTOM); mEditor = LLUICtrlFactory::create<LLLineEditor> (params); mEditor->setFocusReceivedCallback( boost::bind(LLMultiSliderCtrl::onEditorGainFocus, _1, this) ); @@ -330,9 +330,14 @@ void LLMultiSliderCtrl::updateText() // static void LLMultiSliderCtrl::onEditorCommit( LLUICtrl* ctrl, const LLSD& userdata) { - LLMultiSliderCtrl* self = dynamic_cast<LLMultiSliderCtrl*>(ctrl->getParent()); + llassert(ctrl); if (!ctrl) return; + + LLMultiSliderCtrl* self = dynamic_cast<LLMultiSliderCtrl*>(ctrl->getParent()); + llassert(self); + if (!self) // cast failed - wrong type! :O + return; BOOL success = FALSE; F32 val = self->mCurValue; diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index 86989012ee..5816cef6af 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()) { @@ -384,7 +385,8 @@ LLNotificationTemplate::LLNotificationTemplate() : mExpireSeconds(0), mExpireOption(-1), mURLOption(-1), - mURLOpenExternally(-1), + mURLOpenExternally(-1), + mPersist(false), mUnique(false), mPriority(NOTIFICATION_PRIORITY_NORMAL) { @@ -1058,6 +1060,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; } diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index aeb4cebf1b..8d993b71d7 100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -371,7 +371,7 @@ private: // 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), mPriority(NOTIFICATION_PRIORITY_UNSPECIFIED), mTemporaryResponder(false) {} void cancel(); @@ -621,7 +621,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) diff --git a/indra/llui/llnotificationsutil.cpp b/indra/llui/llnotificationsutil.cpp index f343d27cb4..54bdb4bd66 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 d552fa915b..338204924a 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/llui/llpanel.cpp b/indra/llui/llpanel.cpp index db32882438..0cd052eefa 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -43,6 +43,7 @@ #include "llerror.h" #include "lltimer.h" +#include "llaccordionctrltab.h" #include "llbutton.h" #include "llmenugl.h" //#include "llstatusbar.h" @@ -79,6 +80,8 @@ LLPanel::Params::Params() background_opaque("background_opaque", false), bg_opaque_color("bg_opaque_color"), bg_alpha_color("bg_alpha_color"), + bg_opaque_image_overlay("bg_opaque_image_overlay"), + bg_alpha_image_overlay("bg_alpha_image_overlay"), bg_opaque_image("bg_opaque_image"), bg_alpha_image("bg_alpha_image"), min_width("min_width", 100), @@ -102,6 +105,8 @@ LLPanel::LLPanel(const LLPanel::Params& p) mBgOpaque(p.background_opaque), mBgOpaqueColor(p.bg_opaque_color()), mBgAlphaColor(p.bg_alpha_color()), + mBgOpaqueImageOverlay(p.bg_opaque_image_overlay), + mBgAlphaImageOverlay(p.bg_alpha_image_overlay), mBgOpaqueImage(p.bg_opaque_image()), mBgAlphaImage(p.bg_alpha_image()), mDefaultBtn(NULL), @@ -198,7 +203,7 @@ void LLPanel::draw() // opaque, in-front look if (mBgOpaqueImage.notNull()) { - mBgOpaqueImage->draw( local_rect, UI_VERTEX_COLOR % alpha ); + mBgOpaqueImage->draw( local_rect, mBgOpaqueImageOverlay % alpha ); } else { @@ -211,7 +216,7 @@ void LLPanel::draw() // transparent, in-back look if (mBgAlphaImage.notNull()) { - mBgAlphaImage->draw( local_rect, UI_VERTEX_COLOR % alpha ); + mBgAlphaImage->draw( local_rect, mBgAlphaImageOverlay % alpha ); } else { @@ -396,6 +401,12 @@ LLView* LLPanel::fromXML(LLXMLNodePtr node, LLView* parent, LLXMLNodePtr output_ if (!panelp) { panelp = LLUICtrlFactory::getInstance()->createFactoryPanel(name); + llassert(panelp); + + if (!panelp) + { + return NULL; // :( + } } } @@ -413,7 +424,7 @@ LLView* LLPanel::fromXML(LLXMLNodePtr node, LLView* parent, LLXMLNodePtr output_ panelp->mCommitCallbackRegistrar.popScope(); panelp->mEnableCallbackRegistrar.popScope(); - if (panelp && !panelp->getFactoryMap().empty()) + if (!panelp->getFactoryMap().empty()) { LLUICtrlFactory::instance().popFactoryFunctions(); } @@ -474,6 +485,8 @@ void LLPanel::initFromParams(const LLPanel::Params& p) setTransparentColor(p.bg_alpha_color().get()); mBgOpaqueImage = p.bg_opaque_image(); mBgAlphaImage = p.bg_alpha_image(); + mBgOpaqueImageOverlay = p.bg_opaque_image_overlay; + mBgAlphaImageOverlay = p.bg_alpha_image_overlay; } static LLFastTimer::DeclareTimer FTM_PANEL_SETUP("Panel Setup"); @@ -851,14 +864,26 @@ static LLPanel *childGetVisibleTabWithHelp(LLView *parent) // look through immediate children first for an active tab with help for (child = parent->getFirstChild(); child; child = parent->findNextSibling(child)) { + LLPanel *curTabPanel = NULL; + + // do we have a tab container? LLTabContainer *tab = dynamic_cast<LLTabContainer *>(child); if (tab && tab->getVisible()) { - LLPanel *curTabPanel = tab->getCurrentPanel(); - if (curTabPanel && !curTabPanel->getHelpTopic().empty()) - { - return curTabPanel; - } + curTabPanel = tab->getCurrentPanel(); + } + + // do we have an accordion tab? + LLAccordionCtrlTab* accordion = dynamic_cast<LLAccordionCtrlTab *>(child); + if (accordion && accordion->getDisplayChildren()) + { + curTabPanel = dynamic_cast<LLPanel *>(accordion->getAccordionView()); + } + + // if we found a valid tab, does it have a help topic? + if (curTabPanel && !curTabPanel->getHelpTopic().empty()) + { + return curTabPanel; } } @@ -885,7 +910,45 @@ LLPanel *LLPanel::childGetVisibleTabWithHelp() return ::childGetVisibleTabWithHelp(this); } -void LLPanel::childSetPrevalidate(const std::string& id, BOOL (*func)(const LLWString &) ) +static LLPanel *childGetVisiblePanelWithHelp(LLView *parent) +{ + LLView *child; + + // look through immediate children first for an active panel with help + for (child = parent->getFirstChild(); child; child = parent->findNextSibling(child)) + { + // do we have a panel with a help topic? + LLPanel *panel = dynamic_cast<LLPanel *>(child); + if (panel && panel->getVisible() && !panel->getHelpTopic().empty()) + { + return panel; + } + } + + // then try a bit harder and recurse through all children + for (child = parent->getFirstChild(); child; child = parent->findNextSibling(child)) + { + if (child->getVisible()) + { + LLPanel* panel = ::childGetVisiblePanelWithHelp(child); + if (panel) + { + return panel; + } + } + } + + // couldn't find any active panels with a help topic string + return NULL; +} + +LLPanel *LLPanel::childGetVisiblePanelWithHelp() +{ + // find a visible tab with a help topic (to determine help context) + return ::childGetVisiblePanelWithHelp(this); +} + +void LLPanel::childSetPrevalidate(const std::string& id, bool (*func)(const LLWString &) ) { LLLineEditor* child = findChild<LLLineEditor>(id); if (child) diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h index d0986a06d3..03e3dc0c0e 100644 --- a/indra/llui/llpanel.h +++ b/indra/llui/llpanel.h @@ -77,7 +77,9 @@ public: background_opaque; Optional<LLUIColor> bg_opaque_color, - bg_alpha_color; + bg_alpha_color, + bg_opaque_image_overlay, + bg_alpha_image_overlay; // opaque image is for "panel in foreground" look Optional<LLUIImage*> bg_opaque_image, bg_alpha_image; @@ -137,6 +139,8 @@ public: const LLColor4& getTransparentColor() const { return mBgAlphaColor; } LLPointer<LLUIImage> getBackgroundImage() const { return mBgOpaqueImage; } LLPointer<LLUIImage> getTransparentImage() const { return mBgAlphaImage; } + LLColor4 getBackgroundImageOverlay() { return mBgOpaqueImageOverlay; } + LLColor4 getTransparentImageOverlay() { return mBgAlphaImageOverlay; } void setBackgroundVisible( BOOL b ) { mBgVisible = b; } BOOL isBackgroundVisible() const { return mBgVisible; } void setBackgroundOpaque(BOOL b) { mBgOpaque = b; } @@ -214,7 +218,10 @@ public: // LLTabContainer void childShowTab(const std::string& id, const std::string& tabname, bool visible = true); LLPanel *childGetVisibleTab(const std::string& id) const; + + // Find a child with a nonempty Help topic LLPanel *childGetVisibleTabWithHelp(); + LLPanel *childGetVisiblePanelWithHelp(); // LLTextBox/LLTextEditor/LLLineEditor void childSetText(const std::string& id, const LLStringExplicit& text) { childSetValue(id, LLSD(text)); } @@ -223,7 +230,7 @@ public: std::string childGetText(const std::string& id) const { return childGetValue(id).asString(); } // LLLineEditor - void childSetPrevalidate(const std::string& id, BOOL (*func)(const LLWString &) ); + void childSetPrevalidate(const std::string& id, bool (*func)(const LLWString &) ); // LLButton void childSetAction(const std::string& id, boost::function<void(void*)> function, void* value = NULL); @@ -259,6 +266,8 @@ private: BOOL mBgOpaque; // use opaque color or image LLUIColor mBgOpaqueColor; LLUIColor mBgAlphaColor; + LLUIColor mBgOpaqueImageOverlay; + LLUIColor mBgAlphaImageOverlay; LLPointer<LLUIImage> mBgOpaqueImage; // "panel in front" look LLPointer<LLUIImage> mBgAlphaImage; // "panel in back" look LLViewBorder* mBorder; diff --git a/indra/llui/llresizehandle.cpp b/indra/llui/llresizehandle.cpp index 6239a8f721..00214d451c 100644 --- a/indra/llui/llresizehandle.cpp +++ b/indra/llui/llresizehandle.cpp @@ -136,9 +136,10 @@ BOOL LLResizeHandle::handleHover(S32 x, S32 y, MASK mask) if( resizing_view ) { // undock floater when user resize it - if (((LLFloater*)getParent())->isDocked()) + LLFloater* floater_parent = dynamic_cast<LLFloater*>(getParent()); + if (floater_parent && floater_parent->isDocked()) { - ((LLFloater*)getParent())->setDocked(false, false); + floater_parent->setDocked(false, false); } // Resize the parent diff --git a/indra/llui/llscrollcontainer.cpp b/indra/llui/llscrollcontainer.cpp index a5e47e8547..94465a67ce 100644 --- a/indra/llui/llscrollcontainer.cpp +++ b/indra/llui/llscrollcontainer.cpp @@ -668,6 +668,11 @@ void LLScrollContainer::scrollToShowRect(const LLRect& rect, const LLRect& const // propagate scroll to document updateScroll(); + + // In case we are in accordion tab notify parent to show selected rectangle + LLRect screen_rc; + localRectToScreen(rect_to_constrain, &screen_rc); + notifyParent(LLSD().with("scrollToShowRect",screen_rc.getValue())); } void LLScrollContainer::pageUp(S32 overlap) diff --git a/indra/llui/llscrolllistcell.cpp b/indra/llui/llscrolllistcell.cpp index 7238d903a3..3cc92baa8d 100644 --- a/indra/llui/llscrolllistcell.cpp +++ b/indra/llui/llscrolllistcell.cpp @@ -188,7 +188,7 @@ LLScrollListText::LLScrollListText(const LLScrollListCell::Params& p) // initialize rounded rect image if (!mRoundedRectImage) { - mRoundedRectImage = LLUI::getUIImage("rounded_square.tga"); + mRoundedRectImage = LLUI::getUIImage("Rounded_Square"); } } diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index a53a30b501..77caaaa425 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -71,8 +71,9 @@ static LLDefaultChildRegistry::Register<LLScrollListCtrl> r("scroll_list"); // local structures & classes. struct SortScrollListItem { - SortScrollListItem(const std::vector<std::pair<S32, BOOL> >& sort_orders) + SortScrollListItem(const std::vector<std::pair<S32, BOOL> >& sort_orders,const LLScrollListCtrl::sort_signal_t* sort_signal) : mSortOrders(sort_orders) + , mSortSignal(sort_signal) {} bool operator()(const LLScrollListItem* i1, const LLScrollListItem* i2) @@ -85,12 +86,20 @@ struct SortScrollListItem S32 col_idx = it->first; BOOL sort_ascending = it->second; + S32 order = sort_ascending ? 1 : -1; // ascending or descending sort for this column? + const LLScrollListCell *cell1 = i1->getColumn(col_idx); const LLScrollListCell *cell2 = i2->getColumn(col_idx); - S32 order = sort_ascending ? 1 : -1; // ascending or descending sort for this column? if (cell1 && cell2) { - sort_result = order * LLStringUtil::compareDict(cell1->getValue().asString(), cell2->getValue().asString()); + if(mSortSignal) + { + sort_result = order * (*mSortSignal)(col_idx,i1, i2); + } + else + { + sort_result = order * LLStringUtil::compareDict(cell1->getValue().asString(), cell2->getValue().asString()); + } if (sort_result != 0) { break; // we have a sort order! @@ -100,8 +109,10 @@ struct SortScrollListItem return sort_result < 0; } + typedef std::vector<std::pair<S32, BOOL> > sort_order_t; + const LLScrollListCtrl::sort_signal_t* mSortSignal; const sort_order_t& mSortOrders; }; @@ -142,6 +153,7 @@ LLScrollListCtrl::Params::Params() contents(""), scroll_bar_bg_visible("scroll_bar_bg_visible"), scroll_bar_bg_color("scroll_bar_bg_color") + , border("border") { name = "scroll_list"; mouse_opaque = true; @@ -168,6 +180,7 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p) mOnSortChangedCallback( NULL ), mHighlightedItem(-1), mBorder(NULL), + mSortCallback(NULL), mPopupMenu(NULL), mNumDynamicWidthColumns(0), mTotalStaticColumnWidth(0), @@ -231,10 +244,8 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p) if (p.has_border) { LLRect border_rect = getLocalRect(); - LLViewBorder::Params params; - params.name("dig border"); + LLViewBorder::Params params = p.border; params.rect(border_rect); - params.bevel_style(LLViewBorder::BEVEL_IN); mBorder = LLUICtrlFactory::create<LLViewBorder> (params); addChild(mBorder); } @@ -310,6 +321,8 @@ bool LLScrollListCtrl::preProcessChildNode(LLXMLNodePtr child) LLScrollListCtrl::~LLScrollListCtrl() { + delete mSortCallback; + std::for_each(mItemList.begin(), mItemList.end(), DeletePointer()); if( gEditMenuHandler == this ) @@ -499,7 +512,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(); @@ -541,7 +554,7 @@ BOOL LLScrollListCtrl::addItem( LLScrollListItem* item, EAddPosition pos, BOOL r std::stable_sort( mItemList.begin(), mItemList.end(), - SortScrollListItem(single_sort_column)); + SortScrollListItem(single_sort_column,mSortCallback)); // ADD_SORTED just sorts by first column... // this might not match user sort criteria, so flag list as being in unsorted state @@ -1389,6 +1402,8 @@ void LLScrollListCtrl::drawItems() LLGLSUIDefault gls_ui; + F32 alpha = getDrawContext().mAlpha; + { LLLocalClipRect clip(mItemListRect); @@ -1464,7 +1479,7 @@ void LLScrollListCtrl::drawItems() bg_color = mBgReadOnlyColor.get(); } - item->draw(item_rect, fg_color, bg_color, highlight_color, mColumnPadding); + item->draw(item_rect, fg_color % alpha, bg_color% alpha, highlight_color % alpha, mColumnPadding); cur_y -= mLineHeight; } @@ -1535,7 +1550,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; } @@ -2394,7 +2409,7 @@ void LLScrollListCtrl::updateSort() const std::stable_sort( mItemList.begin(), mItemList.end(), - SortScrollListItem(mSortColumns)); + SortScrollListItem(mSortColumns,mSortCallback)); mSorted = true; } @@ -2410,7 +2425,7 @@ void LLScrollListCtrl::sortOnce(S32 column, BOOL ascending) std::stable_sort( mItemList.begin(), mItemList.end(), - SortScrollListItem(sort_column)); + SortScrollListItem(sort_column,mSortCallback)); } void LLScrollListCtrl::dirtyColumns() @@ -2761,9 +2776,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 78bc60db6e..e819c5fdea 100644 --- a/indra/llui/llscrolllistctrl.h +++ b/indra/llui/llscrolllistctrl.h @@ -51,6 +51,7 @@ #include "lldate.h" #include "llscrolllistitem.h" #include "llscrolllistcolumn.h" +#include "llviewborder.h" class LLScrollListCell; class LLTextBox; @@ -72,6 +73,30 @@ public: // *TODO: Add callbacks to Params typedef boost::function<void (void)> callback_t; + + template<typename T> struct maximum + { + typedef T result_type; + + template<typename InputIterator> + T operator()(InputIterator first, InputIterator last) const + { + // If there are no slots to call, just return the + // default-constructed value + if(first == last ) return T(); + T max_value = *first++; + while (first != last) { + if (max_value < *first) + max_value = *first; + ++first; + } + + return max_value; + } + }; + + + typedef boost::signals2::signal<S32 (S32,const LLScrollListItem*,const LLScrollListItem*),maximum<S32> > sort_signal_t; struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> { @@ -109,6 +134,8 @@ public: scroll_bar_bg_color; Optional<Contents> contents; + + Optional<LLViewBorder::Params> border; Params(); }; @@ -145,6 +172,7 @@ public: // "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 ] @@ -358,6 +386,13 @@ public: void setNeedsSort(bool val = true) { mSorted = !val; } void dirtyColumns(); // some operation has potentially affected column layout or ordering + boost::signals2::connection setSortCallback(sort_signal_t::slot_type cb ) + { + if (!mSortCallback) mSortCallback = new sort_signal_t(); + return mSortCallback->connect(cb); + } + + protected: // "Full" interface: use this when you're creating a list that has one or more of the following: // * contains icons @@ -470,6 +505,8 @@ private: typedef std::pair<S32, BOOL> sort_column_t; std::vector<sort_column_t> mSortColumns; + + sort_signal_t* mSortCallback; }; // end class LLScrollListCtrl #endif // LL_SCROLLLISTCTRL_H diff --git a/indra/llui/llscrolllistitem.h b/indra/llui/llscrolllistitem.h index 15b86cc945..25ce846d90 100644 --- a/indra/llui/llscrolllistitem.h +++ b/indra/llui/llscrolllistitem.h @@ -95,7 +95,7 @@ public: 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/llui/llsearcheditor.cpp b/indra/llui/llsearcheditor.cpp index 6fa99df82e..ec2ad5e5fa 100644 --- a/indra/llui/llsearcheditor.cpp +++ b/indra/llui/llsearcheditor.cpp @@ -44,22 +44,34 @@ LLSearchEditor::LLSearchEditor(const LLSearchEditor::Params& p) S32 srch_btn_top = p.search_button.top_pad + p.search_button.rect.height; S32 srch_btn_right = p.search_button.rect.width + p.search_button.left_pad; LLRect srch_btn_rect(p.search_button.left_pad, srch_btn_top, srch_btn_right, p.search_button.top_pad); + + S32 clr_btn_top = p.clear_button.rect.bottom + p.clear_button.rect.height; + S32 clr_btn_right = getRect().getWidth() - p.clear_button.pad_right; + S32 clr_btn_left = clr_btn_right - p.clear_button.rect.width; + LLRect clear_btn_rect(clr_btn_left, clr_btn_top, clr_btn_right, p.clear_button.rect.bottom); + S32 text_pad_left = p.text_pad_left; + S32 text_pad_right = p.text_pad_right; if (p.search_button_visible) text_pad_left += srch_btn_rect.getWidth(); + if (p.clear_button_visible) + text_pad_right = getRect().getWidth() - clr_btn_left + p.clear_button.pad_left; + // Set up line editor. LLLineEditor::Params line_editor_params(p); line_editor_params.name("filter edit box"); line_editor_params.rect(getLocalRect()); line_editor_params.follows.flags(FOLLOWS_ALL); line_editor_params.text_pad_left(text_pad_left); + line_editor_params.text_pad_right(text_pad_right); line_editor_params.revert_on_esc(false); line_editor_params.commit_callback.function(boost::bind(&LLUICtrl::onCommit, this)); line_editor_params.keystroke_callback(boost::bind(&LLSearchEditor::handleKeystroke, this)); mSearchEditor = LLUICtrlFactory::create<LLLineEditor>(line_editor_params); + mSearchEditor->setPassDelete(TRUE); addChild(mSearchEditor); if (p.search_button_visible) @@ -79,8 +91,6 @@ LLSearchEditor::LLSearchEditor(const LLSearchEditor::Params& p) if (p.clear_button_visible) { // Set up clear button. - S32 clr_btn_width = getRect().getHeight(); // button is square, and as tall as search editor - LLRect clear_btn_rect(getRect().getWidth() - clr_btn_width, getRect().getHeight(), getRect().getWidth(), 0); LLButton::Params clr_btn_params(p.clear_button); clr_btn_params.name(std::string("clear button")); clr_btn_params.rect(clear_btn_rect) ; @@ -153,7 +163,7 @@ void LLSearchEditor::setFocus( BOOL b ) void LLSearchEditor::onClearButtonClick(const LLSD& data) { setText(LLStringUtil::null); - mSearchEditor->doDelete(); // force keystroke callback + mSearchEditor->onCommit(); // force keystroke callback } void LLSearchEditor::handleKeystroke() diff --git a/indra/llui/llsliderctrl.cpp b/indra/llui/llsliderctrl.cpp index 01c274bb4e..80ee5d0984 100644 --- a/indra/llui/llsliderctrl.cpp +++ b/indra/llui/llsliderctrl.cpp @@ -141,7 +141,7 @@ LLSliderCtrl::LLSliderCtrl(const LLSliderCtrl::Params& p) line_p.rect.setIfNotProvided(text_rect); line_p.font.setIfNotProvided(p.font); line_p.commit_callback.function(&LLSliderCtrl::onEditorCommit); - line_p.prevalidate_callback(&LLLineEditor::prevalidateFloat); + line_p.prevalidate_callback(&LLTextValidate::validateFloat); mEditor = LLUICtrlFactory::create<LLLineEditor>(line_p); mEditor->setFocusReceivedCallback( boost::bind(&LLSliderCtrl::onEditorGainFocus, _1, this )); diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp index 20a1ab7af3..491cd7b6f3 100644 --- a/indra/llui/llspinctrl.cpp +++ b/indra/llui/llspinctrl.cpp @@ -127,7 +127,7 @@ LLSpinCtrl::LLSpinCtrl(const LLSpinCtrl::Params& p) } params.max_length_bytes(MAX_STRING_LENGTH); params.commit_callback.function((boost::bind(&LLSpinCtrl::onEditorCommit, this, _2))); - params.prevalidate_callback(&LLLineEditor::prevalidateFloat); + params.prevalidate_callback(&LLTextValidate::validateFloat); params.follows.flags(FOLLOWS_LEFT | FOLLOWS_BOTTOM); mEditor = LLUICtrlFactory::create<LLLineEditor> (params); mEditor->setFocusReceivedCallback( boost::bind(&LLSpinCtrl::onEditorGainFocus, _1, this )); @@ -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 0e610b7741..00d6f86f83 100644 --- a/indra/llui/llspinctrl.h +++ b/indra/llui/llspinctrl.h @@ -81,8 +81,8 @@ public: 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 @@ public: void onDownBtn(const LLSD& data); private: + void updateLabelColor(); void updateEditor(); void reportInvalidData(); diff --git a/indra/llui/llstyle.cpp b/indra/llui/llstyle.cpp index 71511f69a4..b8f93b6a0e 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()), diff --git a/indra/llui/llstyle.h b/indra/llui/llstyle.h index ee9ca730e9..2067e8e8be 100644 --- a/indra/llui/llstyle.h +++ b/indra/llui/llstyle.h @@ -59,11 +59,12 @@ public: 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 @@ private: }; typedef LLPointer<LLStyle> LLStyleSP; +typedef LLPointer<const LLStyle> LLStyleConstSP; #endif // LL_LLSTYLE_H diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 327dd01612..30fc7babae 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -35,7 +35,6 @@ #include "lltabcontainer.h" #include "llfocusmgr.h" -#include "llbutton.h" #include "lllocalcliprect.h" #include "llrect.h" #include "llresizehandle.h" @@ -96,6 +95,95 @@ public: //---------------------------------------------------------------------------- +//============================================================================ +/* + * @file lltabcontainer.cpp + * @brief class implements LLButton with LLIconCtrl on it + */ +class LLCustomButtonIconCtrl : public LLButton +{ +public: + struct Params + : public LLInitParam::Block<Params, LLButton::Params> + { + // LEFT, RIGHT, TOP, BOTTOM paddings of LLIconCtrl in this class has same value + Optional<S32> icon_ctrl_pad; + + Params(): + icon_ctrl_pad("icon_ctrl_pad", 1) + {} + }; + +protected: + friend class LLUICtrlFactory; + LLCustomButtonIconCtrl(const Params& p): + LLButton(p), + mIcon(NULL), + mIconAlignment(LLFontGL::HCENTER), + mIconCtrlPad(p.icon_ctrl_pad) + {} + +public: + + void updateLayout() + { + LLRect button_rect = getRect(); + LLRect icon_rect = mIcon->getRect(); + + S32 icon_size = button_rect.getHeight() - 2*mIconCtrlPad; + + switch(mIconAlignment) + { + case LLFontGL::LEFT: + icon_rect.setLeftTopAndSize(button_rect.mLeft + mIconCtrlPad, button_rect.mTop - mIconCtrlPad, + icon_size, icon_size); + setLeftHPad(icon_size + mIconCtrlPad * 2); + break; + case LLFontGL::HCENTER: + icon_rect.setLeftTopAndSize(button_rect.mRight - (button_rect.getWidth() + mIconCtrlPad - icon_size)/2, button_rect.mTop - mIconCtrlPad, + icon_size, icon_size); + setRightHPad(icon_size + mIconCtrlPad * 2); + break; + case LLFontGL::RIGHT: + icon_rect.setLeftTopAndSize(button_rect.mRight - mIconCtrlPad - icon_size, button_rect.mTop - mIconCtrlPad, + icon_size, icon_size); + setRightHPad(icon_size + mIconCtrlPad * 2); + break; + default: + break; + } + mIcon->setRect(icon_rect); + } + + void setIcon(LLIconCtrl* icon, LLFontGL::HAlign alignment = LLFontGL::LEFT) + { + if(icon) + { + if(mIcon) + { + removeChild(mIcon); + mIcon->die(); + } + mIcon = icon; + mIconAlignment = alignment; + + addChild(mIcon); + updateLayout(); + } + } + + LLIconCtrl* getIconCtrl() const + { + return mIcon; + } + +private: + LLIconCtrl* mIcon; + LLFontGL::HAlign mIconAlignment; + S32 mIconCtrlPad; +}; +//============================================================================ + struct LLPlaceHolderPanel : public LLPanel { // create dummy param block to register with "placeholder" nane @@ -127,7 +215,11 @@ LLTabContainer::Params::Params() tab_padding_right("tab_padding_right"), first_tab("first_tab"), middle_tab("middle_tab"), - last_tab("last_tab") + last_tab("last_tab"), + use_custom_icon_ctrl("use_custom_icon_ctrl", false), + tab_icon_ctrl_pad("tab_icon_ctrl_pad", 0), + use_ellipses("use_ellipses"), + font_halign("halign") { name(std::string("tab_container")); mouse_opaque = false; @@ -162,7 +254,10 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p) mFont(p.font), mFirstTabParams(p.first_tab), mMiddleTabParams(p.middle_tab), - mLastTabParams(p.last_tab) + mLastTabParams(p.last_tab), + mCustomIconCtrlUsed(p.use_custom_icon_ctrl), + mTabIconCtrlPad(p.tab_icon_ctrl_pad), + mUseTabEllipses(p.use_ellipses) { static LLUICachedControl<S32> tabcntr_vert_tab_min_width ("UITabCntrVertTabMinWidth", 0); @@ -402,15 +497,15 @@ void LLTabContainer::draw() if( mIsVertical && has_scroll_arrows ) { // Redraw the arrows so that they appears on top. - gGL.pushMatrix(); - gGL.translatef((F32)mPrevArrowBtn->getRect().mLeft, (F32)mPrevArrowBtn->getRect().mBottom, 0.f); + gGL.pushUIMatrix(); + gGL.translateUI((F32)mPrevArrowBtn->getRect().mLeft, (F32)mPrevArrowBtn->getRect().mBottom, 0.f); mPrevArrowBtn->draw(); - gGL.popMatrix(); + gGL.popUIMatrix(); - gGL.pushMatrix(); - gGL.translatef((F32)mNextArrowBtn->getRect().mLeft, (F32)mNextArrowBtn->getRect().mBottom, 0.f); + gGL.pushUIMatrix(); + gGL.translateUI((F32)mNextArrowBtn->getRect().mLeft, (F32)mNextArrowBtn->getRect().mBottom, 0.f); mNextArrowBtn->draw(); - gGL.popMatrix(); + gGL.popUIMatrix(); } } @@ -801,6 +896,10 @@ void LLTabContainer::update_images(LLTabTuple* tuple, TabParams params, LLTabCon void LLTabContainer::addTabPanel(const TabPanelParams& panel) { LLPanel* child = panel.panel(); + + llassert(child); + if (!child) return; + const std::string& label = panel.label.isProvided() ? panel.label() : panel.panel()->getLabel(); @@ -856,7 +955,7 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) LLRect tab_panel_rect; if (!getTabsHidden() && mIsVertical) { - tab_panel_rect = LLRect(mMinTabWidth + (LLPANEL_BORDER_WIDTH * 2) + tabcntrv_pad, + tab_panel_rect = LLRect(mMinTabWidth + mRightTabBtnOffset + (LLPANEL_BORDER_WIDTH * 2) + tabcntrv_pad, getRect().getHeight() - LLPANEL_BORDER_WIDTH, getRect().getWidth() - LLPANEL_BORDER_WIDTH, LLPANEL_BORDER_WIDTH); @@ -905,6 +1004,11 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) LLTextBox* textbox = NULL; LLButton* btn = NULL; + LLCustomButtonIconCtrl::Params custom_btn_params; + { + custom_btn_params.icon_ctrl_pad(mTabIconCtrlPad); + } + LLButton::Params normal_btn_params; if (placeholder) { @@ -924,7 +1028,9 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) { if (mIsVertical) { - LLButton::Params p; + LLButton::Params& p = (mCustomIconCtrlUsed)? + custom_btn_params:normal_btn_params; + p.name(std::string("vert tab button")); p.rect(btn_rect); p.follows.flags(FOLLOWS_TOP | FOLLOWS_LEFT); @@ -942,11 +1048,22 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) { p.pad_left(indent); } - btn = LLUICtrlFactory::create<LLButton>(p); + + + if(mCustomIconCtrlUsed) + { + btn = LLUICtrlFactory::create<LLCustomButtonIconCtrl>(custom_btn_params); + + } + else + { + btn = LLUICtrlFactory::create<LLButton>(p); + } } else { - LLButton::Params p; + LLButton::Params& p = (mCustomIconCtrlUsed)? + custom_btn_params:normal_btn_params; p.name(std::string(child->getName()) + " tab"); p.rect(btn_rect); p.click_callback.function(boost::bind(&LLTabContainer::onTabBtn, this, _2, child)); @@ -980,7 +1097,14 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) p.follows.flags = p.follows.flags() | FOLLOWS_BOTTOM; } -++ btn = LLUICtrlFactory::create<LLButton>(p); + if(mCustomIconCtrlUsed) + { + btn = LLUICtrlFactory::create<LLCustomButtonIconCtrl>(custom_btn_params); + } + else + { + btn = LLUICtrlFactory::create<LLButton>(p); + } } } @@ -1373,6 +1497,8 @@ BOOL LLTabContainer::setTab(S32 which) { LLTabTuple* tuple = *iter; BOOL is_selected = ( tuple == selected_tuple ); + tuple->mButton->setUseEllipses(mUseTabEllipses); + tuple->mButton->setHAlign(mFontHalign); 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,32 +1604,71 @@ 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); + tuple->mButton->setImageOverlay(image_name, LLFontGL::LEFT, color); + reshapeTuple(tuple); + } +} + +void LLTabContainer::setTabImage(LLPanel* child, const LLUUID& image_id, const LLColor4& color) +{ + LLTabTuple* tuple = getTabByPanel(child); + if( tuple ) + { + tuple->mButton->setImageOverlay(image_id, LLFontGL::LEFT, color); + reshapeTuple(tuple); + } +} - if (!mIsVertical) - { - // remove current width from total tab strip width - mTotalTabWidth -= tuple->mButton->getRect().getWidth(); +void LLTabContainer::setTabImage(LLPanel* child, LLIconCtrl* icon) +{ + LLTabTuple* tuple = getTabByPanel(child); + LLCustomButtonIconCtrl* button; - S32 image_overlay_width = tuple->mButton->getImageOverlay().notNull() ? - tuple->mButton->getImageOverlay()->getImage()->getWidth(0) : - 0; + if(tuple) + { + button = dynamic_cast<LLCustomButtonIconCtrl*>(tuple->mButton); + if(button) + { + button->setIcon(icon); + reshapeTuple(tuple); + } + } +} - tuple->mPadding = image_overlay_width; +void LLTabContainer::reshapeTuple(LLTabTuple* tuple) +{ + static LLUICachedControl<S32> tab_padding ("UITabPadding", 0); - 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(); + if (!mIsVertical) + { + S32 image_overlay_width = 0; - // tabs have changed size, might need to scroll to see current tab - updateMaxScrollPos(); + if(mCustomIconCtrlUsed) + { + LLCustomButtonIconCtrl* button = dynamic_cast<LLCustomButtonIconCtrl*>(tuple->mButton); + LLIconCtrl* icon_ctrl = button ? button->getIconCtrl() : NULL; + image_overlay_width = icon_ctrl ? icon_ctrl->getRect().getWidth() : 0; + } + else + { + image_overlay_width = tuple->mButton->getImageOverlay().notNull() ? + tuple->mButton->getImageOverlay()->getImage()->getWidth(0) : 0; } + // remove current width from total tab strip width + mTotalTabWidth -= tuple->mButton->getRect().getWidth(); + + 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(); } } @@ -1566,7 +1731,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 ) diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h index 5d0f194bf9..50ec2679f6 100644 --- a/indra/llui/lltabcontainer.h +++ b/indra/llui/lltabcontainer.h @@ -36,6 +36,8 @@ #include "llpanel.h" #include "lltextbox.h" #include "llframetimer.h" +#include "lliconctrl.h" +#include "llbutton.h" class LLTabTuple; @@ -90,6 +92,26 @@ public: middle_tab, last_tab; + /** + * Tab label horizontal alignment + */ + Optional<LLFontGL::HAlign> font_halign; + + /** + * Tab label ellipses + */ + Optional<bool> use_ellipses; + + /** + * Use LLCustomButtonIconCtrl or LLButton in LLTabTuple + */ + Optional<bool> use_custom_icon_ctrl; + + /** + * Paddings for LLIconCtrl in case of LLCustomButtonIconCtrl usage(use_custom_icon_ctrl = true) + */ + Optional<S32> tab_icon_ctrl_pad; + Params(); }; @@ -172,6 +194,8 @@ public: BOOL getTabPanelFlashing(LLPanel* child); void setTabPanelFlashing(LLPanel* child, BOOL state); void setTabImage(LLPanel* child, std::string img_name, const LLColor4& color = LLColor4::white); + void setTabImage(LLPanel* child, const LLUUID& img_id, const LLColor4& color = LLColor4::white); + void setTabImage(LLPanel* child, LLIconCtrl* icon); void setTitle( const std::string& title ); const std::string getPanelTitle(S32 index); @@ -227,6 +251,7 @@ private: // updates tab button images given the tuple, tab position and the corresponding params void update_images(LLTabTuple* tuple, TabParams params, LLTabContainer::TabPosition pos); + void reshapeTuple(LLTabTuple* tuple); // Variables @@ -276,6 +301,10 @@ private: TabParams mFirstTabParams; TabParams mMiddleTabParams; TabParams mLastTabParams; + + bool mCustomIconCtrlUsed; + S32 mTabIconCtrlPad; + bool mUseTabEllipses; }; #endif // LL_TABCONTAINER_H diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 7447a984ac..851fb966ec 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), @@ -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(); } @@ -291,9 +292,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) @@ -307,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 ); @@ -346,7 +350,8 @@ void LLTextBase::drawSelectionBackground() S32 segment_line_start = segmentp->getStart() + segment_offset; S32 segment_line_end = llmin(segmentp->getEnd(), line_iter->mDocIndexEnd); - S32 segment_width, segment_height; + S32 segment_width = 0; + S32 segment_height = 0; // if selection after beginning of segment if(selection_left >= segment_line_start) @@ -405,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); @@ -433,7 +438,8 @@ void LLTextBase::drawCursor() if (LL_KIM_OVERWRITE == gKeyboard->getInsertMode() && !hasSelection()) { - S32 segment_width, segment_height; + S32 segment_width = 0; + S32 segment_height = 0; segmentp->getDimensions(mCursorPos - segmentp->getStart(), 1, segment_width, segment_height); S32 width = llmax(CURSOR_THICKNESS, segment_width); cursor_rect.mRight = cursor_rect.mLeft + width; @@ -490,7 +496,6 @@ void LLTextBase::drawCursor() void LLTextBase::drawText() { - LLWString text = getWText(); const S32 text_len = getLength(); if( text_len <= 0 ) { @@ -617,7 +622,8 @@ 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); + LLStyleConstSP sp(new LLStyle(getDefaultStyleParams())); + default_segment = new LLNormalTextSegment( sp, pos, pos + insert_len, *this); } // shift remaining segments to right @@ -654,7 +660,7 @@ S32 LLTextBase::insertStringNoUndo(S32 pos, const LLWString &wstr, LLTextBase::s } onValueChange(pos, pos + insert_len); - needsReflow(); + needsReflow(pos); return insert_len; } @@ -714,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 } @@ -730,7 +736,7 @@ S32 LLTextBase::overwriteCharNoUndo(S32 pos, llwchar wc) getViewModel()->setDisplay(text); onValueChange(pos, pos + 1); - needsReflow(); + needsReflow(pos); return 1; } @@ -741,7 +747,8 @@ 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); + LLStyleConstSP sp(new LLStyle(getDefaultStyleParams())); + LLTextSegmentPtr default_segment = new LLNormalTextSegment( sp, 0, getLength() + 1, *this); mSegments.insert(default_segment); default_segment->linkToDocument(this); } @@ -755,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(); @@ -771,7 +781,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 @@ -821,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) @@ -1016,6 +1027,16 @@ void LLTextBase::setReadOnlyColor(const LLColor4 &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 ) { setText(value.asString()); @@ -1066,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 @@ -1106,7 +1128,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 @@ -1116,6 +1137,7 @@ void LLTextBase::reflow(S32 start_index) line_list_t::iterator iter = std::upper_bound(mLineInfoList.begin(), mLineInfoList.end(), start_index, line_end_compare()); line_start_index = iter->mDocIndexStart; line_count = iter->mLineNum; + cur_top = iter->mRect.mTop; getSegmentAndOffset(iter->mDocIndexStart, &seg_iter, &seg_offset); mLineInfoList.erase(iter, mLineInfoList.end()); } @@ -1423,10 +1445,10 @@ LLTextBase::segment_set_t::const_iterator LLTextBase::getSegIterContaining(S32 i } // Finds the text segment (if any) at the give local screen position -LLTextSegmentPtr LLTextBase::getSegmentAtLocalPos( S32 x, S32 y ) +LLTextSegmentPtr LLTextBase::getSegmentAtLocalPos( S32 x, S32 y, bool hit_past_end_of_line) { // Find the cursor position at the requested local screen position - S32 offset = getDocIndexFromLocalCoord( x, y, FALSE ); + S32 offset = getDocIndexFromLocalCoord( x, y, FALSE, hit_past_end_of_line); segment_set_t::iterator seg_iter = getSegIterContaining(offset); if (seg_iter != mSegments.end()) { @@ -1508,16 +1530,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) @@ -1534,13 +1547,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 @@ -1568,25 +1575,35 @@ void LLTextBase::appendText(const std::string &new_text, bool prepend_newline, c { LLStyle::Params icon; icon.image = image; - // HACK: fix spacing of images and remove the fixed char spacing - appendAndHighlightText(" ", prepend_newline, part, icon); + // Text will be replaced during rendering with the icon, + // but string cannot be empty or the segment won't be + // added (or drawn). + appendAndHighlightText(" ", prepend_newline, part, icon); 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 hyperlinking) + if (match.isLinkDisabled()) { - segment_set_t::iterator it = getSegIterContaining(getLength()-1); - if (it != mSegments.end()) + appendAndHighlightText(match.getLabel(), prepend_newline, part, style_params); + } + else + { + 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()) @@ -1609,9 +1626,15 @@ 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::needsReflow(S32 index) { - if (new_text.empty()) return; + 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; // Save old state S32 selection_start = mSelectionStart; @@ -1629,7 +1652,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++) @@ -1649,7 +1672,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(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); @@ -1673,7 +1697,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(new LLStyle(stylep), 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); } @@ -1717,7 +1742,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(); @@ -1754,7 +1779,7 @@ void LLTextBase::setWText(const LLWString& text) setText(wstring_to_utf8str(text)); } -LLWString LLTextBase::getWText() const +const LLWString& LLTextBase::getWText() const { return getViewModel()->getDisplay(); } @@ -1763,7 +1788,7 @@ LLWString LLTextBase::getWText() const // will be put to its right. If round is false, the cursor will always be put to the // character's left. -S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round ) const +S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round, bool hit_past_end_of_line) const { // Figure out which line we're nearest to. LLRect visible_region = getVisibleDocumentRect(); @@ -1792,7 +1817,7 @@ S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round S32 text_width, text_height; segmentp->getDimensions(line_seg_offset, segment_line_length, text_width, text_height); if (local_x < start_x + text_width // cursor to left of right edge of text - || segmentp->getEnd() >= line_iter->mDocIndexEnd - 1) // or this segment wraps to next line + || (hit_past_end_of_line && (segmentp->getEnd() >= line_iter->mDocIndexEnd - 1))) // or this segment wraps to next line { // Figure out which character we're nearest to. S32 offset; @@ -2210,9 +2235,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 ) {} @@ -2237,7 +2262,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), @@ -2248,7 +2273,7 @@ LLNormalTextSegment::LLNormalTextSegment( const LLStyleSP& style, S32 start, S32 LLUIImagePtr image = mStyle->getImage(); if (image.notNull()) { - mImageLoadedConnection = image->addLoadedCallback(boost::bind(&LLTextBase::needsReflow, &mEditor)); + mImageLoadedConnection = image->addLoadedCallback(boost::bind(&LLTextBase::needsReflow, &mEditor, start)); } } @@ -2274,14 +2299,21 @@ F32 LLNormalTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selec { if ( mStyle->isImage() && (start >= 0) && (end <= mEnd - mStart)) { + // ...for images, only render the image, not the underlying text, + // which is only a placeholder space LLColor4 color = LLColor4::white % mEditor.getDrawContext().mAlpha; LLUIImagePtr image = mStyle->getImage(); S32 style_image_height = image->getHeight(); S32 style_image_width = image->getWidth(); - // Center the image vertically - S32 image_bottom = draw_rect.getCenterY() - (style_image_height/2); + // Text is drawn from the top of the draw_rect downward + S32 text_center = draw_rect.mTop - (mFontHeight / 2); + // Align image to center of text + S32 image_bottom = text_center - (style_image_height / 2); image->draw(draw_rect.mLeft, image_bottom, style_image_width, style_image_height, color); + + const S32 IMAGE_HPAD = 3; + return draw_rect.mLeft + style_image_width + IMAGE_HPAD; } return drawClippedSegment( getStart() + start, getStart() + end, selection_start, selection_end, draw_rect); @@ -2311,8 +2343,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 @@ -2372,8 +2402,12 @@ BOOL LLNormalTextSegment::handleHover(S32 x, S32 y, MASK mask) { if (getStyle() && getStyle()->isLink()) { - LLUI::getWindow()->setCursor(UI_CURSOR_HAND); - return TRUE; + // Only process the click if it's actually in this segment, not to the right of the end-of-line. + if(mEditor.getSegmentAtLocalPos(x, y, false) == this) + { + LLUI::getWindow()->setCursor(UI_CURSOR_HAND); + return TRUE; + } } return FALSE; } @@ -2382,8 +2416,12 @@ BOOL LLNormalTextSegment::handleRightMouseDown(S32 x, S32 y, MASK mask) { if (getStyle() && getStyle()->isLink()) { - mEditor.createUrlContextMenu(x, y, getStyle()->getLinkHREF()); - return TRUE; + // Only process the click if it's actually in this segment, not to the right of the end-of-line. + if(mEditor.getSegmentAtLocalPos(x, y, false) == this) + { + mEditor.createUrlContextMenu(x, y, getStyle()->getLinkHREF()); + return TRUE; + } } return FALSE; } @@ -2392,8 +2430,12 @@ BOOL LLNormalTextSegment::handleMouseDown(S32 x, S32 y, MASK mask) { if (getStyle() && getStyle()->isLink()) { - // eat mouse down event on hyperlinks, so we get the mouse up - return TRUE; + // Only process the click if it's actually in this segment, not to the right of the end-of-line. + if(mEditor.getSegmentAtLocalPos(x, y, false) == this) + { + // eat mouse down event on hyperlinks, so we get the mouse up + return TRUE; + } } return FALSE; @@ -2403,8 +2445,12 @@ BOOL LLNormalTextSegment::handleMouseUp(S32 x, S32 y, MASK mask) { if (getStyle() && getStyle()->isLink()) { - LLUrlAction::clickAction(getStyle()->getLinkHREF()); - return TRUE; + // Only process the click if it's actually in this segment, not to the right of the end-of-line. + if(mEditor.getSegmentAtLocalPos(x, y, false) == this) + { + LLUrlAction::clickAction(getStyle()->getLinkHREF()); + return TRUE; + } } return FALSE; @@ -2443,11 +2489,13 @@ void LLNormalTextSegment::setToolTip(const std::string& tooltip) bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const { - height = mFontHeight; + height = 0; + width = 0; bool force_newline = false; if (num_chars > 0) { - LLWString text = mEditor.getWText(); + height = mFontHeight; + 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') @@ -2461,10 +2509,6 @@ bool LLNormalTextSegment::getDimensions(S32 first_char, S32 num_chars, S32& widt width = mStyle->getFont()->getWidth(text.c_str(), mStart + first_char, num_chars); } } - else - { - width = 0; - } LLUIImagePtr image = mStyle->getImage(); if( image.notNull()) @@ -2478,7 +2522,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, @@ -2488,12 +2532,12 @@ 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()) { - num_pixels -= image->getWidth(); + num_pixels = llmax(0, num_pixels - image->getWidth()); } // search for newline and if found, truncate there @@ -2509,10 +2553,15 @@ S32 LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin // set max characters to length of segment, or to first newline max_chars = llmin(max_chars, last_char - (mStart + segment_offset)); + // if no character yet displayed on this line, don't require word wrapping since + // we can just move to the next line, otherwise insist on it so we make forward progress + LLFontGL::EWordWrapStyle word_wrap_style = (line_offset == 0) + ? LLFontGL::WORD_BOUNDARY_IF_POSSIBLE + : LLFontGL::ONLY_WORD_BOUNDARIES; S32 num_chars = mStyle->getFont()->maxDrawableChars(text.c_str() + segment_offset + mStart, (F32)num_pixels, max_chars, - TRUE); + word_wrap_style); if (num_chars == 0 && line_offset == 0 diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index 038b9eaa62..5b24c63557 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -41,12 +41,14 @@ #include "llpanel.h" #include <string> +#include <vector> #include <set> #include <boost/signals2.hpp> class LLContextMenu; class LLTextSegment; +class LLNormalTextSegment; typedef LLPointer<LLTextSegment> LLTextSegmentPtr; @@ -60,6 +62,9 @@ class LLTextBase protected LLEditMenuHandler { public: + friend class LLTextSegment; + friend class LLNormalTextSegment; + struct LineSpacingParams : public LLInitParam::Choice<LineSpacingParams> { Alternative<F32> multiple; @@ -121,6 +126,7 @@ public: /*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; @@ -144,11 +150,11 @@ public: // 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 - void needsReflow() { mReflowNeeded = TRUE; } + void needsReflow(S32 index = 0); S32 getLength() const { return getWText().length(); } S32 getLineCount() const { return mLineInfoList.size(); } @@ -163,7 +169,7 @@ public: S32 getVPad() { return mVPad; } S32 getHPad() { return mHPad; } - S32 getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round ) const; + S32 getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round, bool hit_past_end_of_line = true) const; LLRect getLocalRectFromDocIndex(S32 pos) const; LLRect getDocRectFromDocIndex(S32 pos) const; @@ -184,7 +190,6 @@ public: bool scrolledToEnd(); const LLFontGL* getDefaultFont() const { return mDefaultFont; } - LLStyle::Params getDefaultStyle(); public: // Fired when a URL link is clicked @@ -274,14 +279,15 @@ protected: // manage segments void getSegmentAndOffset( S32 startpos, segment_set_t::const_iterator* seg_iter, S32* offsetp ) const; void getSegmentAndOffset( S32 startpos, segment_set_t::iterator* seg_iter, S32* offsetp ); - LLTextSegmentPtr getSegmentAtLocalPos( S32 x, S32 y ); + LLTextSegmentPtr getSegmentAtLocalPos( S32 x, S32 y, bool hit_past_end_of_line = true); segment_set_t::iterator getSegIterContaining(S32 index); segment_set_t::const_iterator getSegIterContaining(S32 index) const; void clearSegments(); 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; @@ -290,7 +296,7 @@ protected: 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(); @@ -360,7 +366,7 @@ protected: 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 @@ -388,9 +394,9 @@ public: 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 +432,7 @@ protected: 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 +442,8 @@ public: /*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 +461,7 @@ protected: 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 e8fc9475a5..7d230f7d42 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -237,13 +237,17 @@ private: /////////////////////////////////////////////////////////////////// LLTextEditor::Params::Params() : default_text("default_text"), + prevalidate_callback("prevalidate_callback"), embedded_items("embedded_items", false), ignore_tab("ignore_tab", true), handle_edit_keys_directly("handle_edit_keys_directly", false), show_line_numbers("show_line_numbers", false), default_color("default_color"), - commit_on_focus_lost("commit_on_focus_lost", false) -{} + commit_on_focus_lost("commit_on_focus_lost", false), + show_context_menu("show_context_menu") +{ + addSynonym(prevalidate_callback, "text_type"); +} LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) : LLTextBase(p), @@ -258,7 +262,9 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) : mMouseDownX(0), mMouseDownY(0), mTabsToNextField(p.ignore_tab), - mContextMenu(NULL) + mPrevalidateFunc(p.prevalidate_callback()), + mContextMenu(NULL), + mShowContextMenu(p.show_context_menu) { mDefaultFont = p.font; @@ -308,7 +314,8 @@ LLTextEditor::~LLTextEditor() // Scrollbar is deleted by LLView std::for_each(mUndoStack.begin(), mUndoStack.end(), DeletePointer()); - delete mContextMenu; + // context menu is owned by menu holder, not us + //delete mContextMenu; } //////////////////////////////////////////////////////////// @@ -317,6 +324,17 @@ LLTextEditor::~LLTextEditor() void LLTextEditor::setText(const LLStringExplicit &utf8str, const LLStyle::Params& input_params) { + // validate incoming text if necessary + if (mPrevalidateFunc) + { + LLWString test_text = utf8str_to_wstring(utf8str); + if (!mPrevalidateFunc(test_text)) + { + // not valid text, nothing to do + return; + } + } + blockUndo(); deselect(); @@ -719,7 +737,10 @@ BOOL LLTextEditor::handleRightMouseDown(S32 x, S32 y, MASK mask) } if (!LLTextBase::handleRightMouseDown(x, y, mask)) { - showContextMenu(x, y); + if(getShowContextMenu()) + { + showContextMenu(x, y); + } } return TRUE; } @@ -905,6 +926,21 @@ S32 LLTextEditor::execute( TextCmd* cmd ) // Push the new command is now on the top (front) of the undo stack. mUndoStack.push_front(cmd); mLastCmd = cmd; + + bool need_to_rollback = mPrevalidateFunc + && !mPrevalidateFunc(getViewModel()->getDisplay()); + if (need_to_rollback) + { + // get rid of this last command and clean up undo stack + undo(); + + // remove any evidence of this command from redo history + mUndoStack.pop_front(); + delete cmd; + + // failure, nothing changed + delta = 0; + } } else { @@ -1028,7 +1064,21 @@ S32 LLTextEditor::addChar(S32 pos, llwchar wc) if (mLastCmd && mLastCmd->canExtend(pos)) { S32 delta = 0; + if (mPrevalidateFunc) + { + // get a copy of current text contents + LLWString test_string(getViewModel()->getDisplay()); + + // modify text contents as if this addChar succeeded + llassert(pos <= (S32)test_string.size()); + test_string.insert(pos, 1, wc); + if (!mPrevalidateFunc( test_string)) + { + return 0; + } + } mLastCmd->extendAndExecute(this, pos, wc, &delta); + return delta; } else @@ -1284,8 +1334,6 @@ void LLTextEditor::cut() gClipboard.copyFromSubstring( getWText(), left_pos, length, mSourceID ); deleteSelection( FALSE ); - needsReflow(); - onKeyStroke(); } @@ -1390,8 +1438,6 @@ void LLTextEditor::pasteHelper(bool is_primary) setCursorPos(mCursorPos + insert(mCursorPos, clean_string, FALSE, LLTextSegmentPtr())); deselect(); - needsReflow(); - onKeyStroke(); } @@ -1786,8 +1832,6 @@ BOOL LLTextEditor::handleKeyHere(KEY key, MASK mask ) if(text_may_have_changed) { - needsReflow(); - onKeyStroke(); } needsScroll(); @@ -1830,8 +1874,6 @@ BOOL LLTextEditor::handleUnicodeCharHere(llwchar uni_char) // Most keystrokes will make the selection box go away, but not all will. deselect(); - needsReflow(); - onKeyStroke(); } @@ -1890,8 +1932,6 @@ void LLTextEditor::doDelete() } onKeyStroke(); - - needsReflow(); } //---------------------------------------------------------------------------- @@ -1934,8 +1974,6 @@ void LLTextEditor::undo() setCursorPos(pos); - needsReflow(); - onKeyStroke(); } @@ -1978,8 +2016,6 @@ void LLTextEditor::redo() setCursorPos(pos); - needsReflow(); - onKeyStroke(); } @@ -2039,6 +2075,20 @@ 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 here? + // (all this was done for EXT-4443) + + gEditMenuHandler = this; + S32 screen_x, screen_y; localPointToScreen(x, y, &screen_x, &screen_y); mContextMenu->show(screen_x, screen_y); @@ -2324,8 +2374,6 @@ void LLTextEditor::insertText(const std::string &new_text) setCursorPos(mCursorPos + insert( mCursorPos, utf8str_to_wstring(new_text), FALSE, LLTextSegmentPtr() )); - needsReflow(); - setEnabled( enabled ); } @@ -2348,8 +2396,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 ) { @@ -2374,52 +2420,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; - const LLStyleSP 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; @@ -2431,7 +2431,6 @@ void LLTextEditor::removeTextFromEnd(S32 num_chars) mSelectionStart = llclamp(mSelectionStart, 0, len); mSelectionEnd = llclamp(mSelectionEnd, 0, len); - needsReflow(); needsScroll(); } @@ -2490,8 +2489,6 @@ BOOL LLTextEditor::tryToRevertToPristineState() i--; } } - - needsReflow(); } return isPristine(); // TRUE => success @@ -2527,9 +2524,9 @@ void LLTextEditor::loadKeywords(const std::string& filename, void LLTextEditor::updateSegments() { - LLFastTimer ft(FTM_SYNTAX_HIGHLIGHTING); - if (mKeywords.isLoaded()) + if (mReflowIndex < S32_MAX && mKeywords.isLoaded()) { + LLFastTimer ft(FTM_SYNTAX_HIGHLIGHTING); // HACK: No non-ascii keywords for now segment_vec_t segment_list; mKeywords.findSegments(&segment_list, getWText(), mDefaultColor.get(), *this); @@ -2558,13 +2555,16 @@ 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(); + LLStyleSP 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); + LLStyleConstSP sp(new_style); + segment->setStyle(sp); } } } @@ -2663,7 +2663,6 @@ BOOL LLTextEditor::importBuffer(const char* buffer, S32 length ) startOfDoc(); deselect(); - needsReflow(); return success; } @@ -2767,7 +2766,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 043dda8fa6..71d937b2c4 100644 --- a/indra/llui/lltexteditor.h +++ b/indra/llui/lltexteditor.h @@ -44,6 +44,7 @@ #include "lldarray.h" #include "llviewborder.h" // for params #include "lltextbase.h" +#include "lltextvalidate.h" #include "llpreeditor.h" #include "llcontrol.h" @@ -63,12 +64,14 @@ public: struct Params : public LLInitParam::Block<Params, LLTextBase::Params> { Optional<std::string> default_text; + Optional<LLTextValidate::validate_func_t, LLTextValidate::ValidateTextNamedFuncs> prevalidate_callback; Optional<bool> embedded_items, ignore_tab, handle_edit_keys_directly, show_line_numbers, - commit_on_focus_lost; + commit_on_focus_lost, + show_context_menu; //colors Optional<LLUIColor> default_color; @@ -149,7 +152,6 @@ public: 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(); @@ -201,6 +203,9 @@ public: const LLTextSegmentPtr getPreviousSegment() const; void getSelectedSegments(segment_vec_t& segments) const; + void setShowContextMenu(bool show) { mShowContextMenu = show; } + bool getShowContextMenu() const { return mShowContextMenu; } + protected: void showContextMenu(S32 x, S32 y); void drawPreeditMarker(); @@ -320,6 +325,7 @@ private: BOOL mTakesFocus; BOOL mAllowEmbeddedItems; + bool mShowContextMenu; LLUUID mSourceID; @@ -330,6 +336,7 @@ private: LLCoordGL mLastIMEPosition; // Last position of the IME editor keystroke_signal_t mKeystrokeSignal; + LLTextValidate::validate_func_t mPrevalidateFunc; LLContextMenu* mContextMenu; }; // end class LLTextEditor diff --git a/indra/llui/lltextvalidate.cpp b/indra/llui/lltextvalidate.cpp new file mode 100644 index 0000000000..8b6bc5bd7d --- /dev/null +++ b/indra/llui/lltextvalidate.cpp @@ -0,0 +1,302 @@ +/** + * @file lltextvalidate.cpp + * @brief Text validation helper functions + * + * $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$ + */ + +// Text editor widget to let users enter a single line. + +#include "linden_common.h" + +#include "lltextvalidate.h" +#include "llresmgr.h" // for LLLocale + +namespace LLTextValidate +{ + void ValidateTextNamedFuncs::declareValues() + { + declare("ascii", validateASCII); + declare("float", validateFloat); + declare("int", validateInt); + declare("positive_s32", validatePositiveS32); + declare("non_negative_s32", validateNonNegativeS32); + declare("alpha_num", validateAlphaNum); + declare("alpha_num_space", validateAlphaNumSpace); + declare("ascii_printable_no_pipe", validateASCIIPrintableNoPipe); + declare("ascii_printable_no_space", validateASCIIPrintableNoSpace); + } + + // Limits what characters can be used to [1234567890.-] with [-] only valid in the first position. + // Does NOT ensure that the string is a well-formed number--that's the job of post-validation--for + // the simple reasons that intermediate states may be invalid even if the final result is valid. + // + bool validateFloat(const LLWString &str) + { + LLLocale locale(LLLocale::USER_LOCALE); + + bool success = TRUE; + LLWString trimmed = str; + LLWStringUtil::trim(trimmed); + S32 len = trimmed.length(); + if( 0 < len ) + { + // May be a comma or period, depending on the locale + llwchar decimal_point = (llwchar)LLResMgr::getInstance()->getDecimalPoint(); + + S32 i = 0; + + // First character can be a negative sign + if( '-' == trimmed[0] ) + { + i++; + } + + for( ; i < len; i++ ) + { + if( (decimal_point != trimmed[i] ) && !LLStringOps::isDigit( trimmed[i] ) ) + { + success = FALSE; + break; + } + } + } + + return success; + } + + // Limits what characters can be used to [1234567890-] with [-] only valid in the first position. + // Does NOT ensure that the string is a well-formed number--that's the job of post-validation--for + // the simple reasons that intermediate states may be invalid even if the final result is valid. + // + bool validateInt(const LLWString &str) + { + LLLocale locale(LLLocale::USER_LOCALE); + + bool success = TRUE; + LLWString trimmed = str; + LLWStringUtil::trim(trimmed); + S32 len = trimmed.length(); + if( 0 < len ) + { + S32 i = 0; + + // First character can be a negative sign + if( '-' == trimmed[0] ) + { + i++; + } + + for( ; i < len; i++ ) + { + if( !LLStringOps::isDigit( trimmed[i] ) ) + { + success = FALSE; + break; + } + } + } + + return success; + } + + bool validatePositiveS32(const LLWString &str) + { + LLLocale locale(LLLocale::USER_LOCALE); + + LLWString trimmed = str; + LLWStringUtil::trim(trimmed); + S32 len = trimmed.length(); + bool success = TRUE; + if(0 < len) + { + if(('-' == trimmed[0]) || ('0' == trimmed[0])) + { + success = FALSE; + } + S32 i = 0; + while(success && (i < len)) + { + if(!LLStringOps::isDigit(trimmed[i++])) + { + success = FALSE; + } + } + } + if (success) + { + S32 val = strtol(wstring_to_utf8str(trimmed).c_str(), NULL, 10); + if (val <= 0) + { + success = FALSE; + } + } + return success; + } + + bool validateNonNegativeS32(const LLWString &str) + { + LLLocale locale(LLLocale::USER_LOCALE); + + LLWString trimmed = str; + LLWStringUtil::trim(trimmed); + S32 len = trimmed.length(); + bool success = TRUE; + if(0 < len) + { + if('-' == trimmed[0]) + { + success = FALSE; + } + S32 i = 0; + while(success && (i < len)) + { + if(!LLStringOps::isDigit(trimmed[i++])) + { + success = FALSE; + } + } + } + if (success) + { + S32 val = strtol(wstring_to_utf8str(trimmed).c_str(), NULL, 10); + if (val < 0) + { + success = FALSE; + } + } + return success; + } + + bool validateAlphaNum(const LLWString &str) + { + LLLocale locale(LLLocale::USER_LOCALE); + + bool rv = TRUE; + S32 len = str.length(); + if(len == 0) return rv; + while(len--) + { + if( !LLStringOps::isAlnum((char)str[len]) ) + { + rv = FALSE; + break; + } + } + return rv; + } + + bool validateAlphaNumSpace(const LLWString &str) + { + LLLocale locale(LLLocale::USER_LOCALE); + + bool rv = TRUE; + S32 len = str.length(); + if(len == 0) return rv; + while(len--) + { + if(!(LLStringOps::isAlnum((char)str[len]) || (' ' == str[len]))) + { + rv = FALSE; + break; + } + } + return rv; + } + + // Used for most names of things stored on the server, due to old file-formats + // that used the pipe (|) for multiline text storage. Examples include + // inventory item names, parcel names, object names, etc. + bool validateASCIIPrintableNoPipe(const LLWString &str) + { + bool rv = TRUE; + S32 len = str.length(); + if(len == 0) return rv; + while(len--) + { + llwchar wc = str[len]; + if (wc < 0x20 + || wc > 0x7f + || wc == '|') + { + rv = FALSE; + break; + } + if(!(wc == ' ' + || LLStringOps::isAlnum((char)wc) + || LLStringOps::isPunct((char)wc) ) ) + { + rv = FALSE; + break; + } + } + return rv; + } + + + // Used for avatar names + bool validateASCIIPrintableNoSpace(const LLWString &str) + { + bool rv = TRUE; + S32 len = str.length(); + if(len == 0) return rv; + while(len--) + { + llwchar wc = str[len]; + if (wc < 0x20 + || wc > 0x7f + || LLStringOps::isSpace(wc)) + { + rv = FALSE; + break; + } + if( !(LLStringOps::isAlnum((char)str[len]) || + LLStringOps::isPunct((char)str[len]) ) ) + { + rv = FALSE; + break; + } + } + return rv; + } + + bool validateASCII(const LLWString &str) + { + bool rv = TRUE; + S32 len = str.length(); + while(len--) + { + if (str[len] < 0x20 || str[len] > 0x7f) + { + rv = FALSE; + break; + } + } + return rv; + } +} diff --git a/indra/llui/lltextvalidate.h b/indra/llui/lltextvalidate.h new file mode 100644 index 0000000000..ffb4e85e7c --- /dev/null +++ b/indra/llui/lltextvalidate.h @@ -0,0 +1,63 @@ +/** + * @file lltextbase.h + * @author Martin Reddy + * @brief The base class of text box/editor, providing Url handling support + * + * $LicenseInfo:firstyear=2009&license=viewergpl$ + * + * Copyright (c) 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_LLTEXTVALIDATE_H +#define LL_LLTEXTVALIDATE_H + +#include "llstring.h" +#include "llinitparam.h" +#include <boost/function.hpp> + +namespace LLTextValidate +{ + typedef boost::function<BOOL (const LLWString &wstr)> validate_func_t; + + struct ValidateTextNamedFuncs + : public LLInitParam::TypeValuesHelper<validate_func_t, ValidateTextNamedFuncs> + { + static void declareValues(); + }; + + bool validateFloat(const LLWString &str ); + bool validateInt(const LLWString &str ); + bool validatePositiveS32(const LLWString &str); + bool validateNonNegativeS32(const LLWString &str); + bool validateAlphaNum(const LLWString &str ); + bool validateAlphaNumSpace(const LLWString &str ); + bool validateASCIIPrintableNoPipe(const LLWString &str); + bool validateASCIIPrintableNoSpace(const LLWString &str); + bool validateASCII(const LLWString &str); +} + + +#endif diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index 01c7a81309..ed7fd02e14 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -129,12 +129,6 @@ BOOL LLToolTipView::handleScrollWheel( S32 x, S32 y, S32 clicks ) return FALSE; } -void LLToolTipView::onMouseLeave(S32 x, S32 y, MASK mask) -{ - LLToolTipMgr::instance().blockToolTips(); -} - - void LLToolTipView::drawStickyRect() { gl_rect_2d(LLToolTipMgr::instance().getMouseNearRect(), LLColor4::white, false); @@ -400,7 +394,8 @@ bool LLToolTip::hasClickCallback() // LLToolTipMgr::LLToolTipMgr() -: mToolTip(NULL), +: mToolTipsBlocked(false), + mToolTip(NULL), mNeedsToolTip(false) {} diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h index 7978b6a583..24e32b9b24 100644 --- a/indra/llui/lltooltip.h +++ b/indra/llui/lltooltip.h @@ -56,8 +56,6 @@ public: /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); /*virtual*/ BOOL handleScrollWheel( S32 x, S32 y, S32 clicks ); - /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); - void drawStickyRect(); /*virtual*/ void draw(); @@ -129,7 +127,8 @@ private: class LLInspector : public LLToolTip { public: - struct Params : public LLInitParam::Block<Params, LLToolTip::Params> {}; + struct Params : public LLInitParam::Block<Params, LLToolTip::Params> + {}; }; class LLToolTipMgr : public LLSingleton<LLToolTipMgr> diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index d0ed3b6fca..b348ec2d29 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -39,6 +39,7 @@ // Linden library includes #include "v2math.h" +#include "m3math.h" #include "v4color.h" #include "llrender.h" #include "llrect.h" @@ -180,19 +181,19 @@ void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LL void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset, BOOL filled) { - gGL.pushMatrix(); + gGL.pushUIMatrix(); left += LLFontGL::sCurOrigin.mX; right += LLFontGL::sCurOrigin.mX; bottom += LLFontGL::sCurOrigin.mY; top += LLFontGL::sCurOrigin.mY; - glLoadIdentity(); + gGL.loadUIIdentity(); gl_rect_2d(llfloor((F32)left * LLUI::sGLScaleFactor.mV[VX]) - pixel_offset, llfloor((F32)top * LLUI::sGLScaleFactor.mV[VY]) + pixel_offset, llfloor((F32)right * LLUI::sGLScaleFactor.mV[VX]) + pixel_offset, llfloor((F32)bottom * LLUI::sGLScaleFactor.mV[VY]) - pixel_offset, filled); - gGL.popMatrix(); + gGL.popUIMatrix(); } @@ -508,9 +509,9 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA); } - gGL.pushMatrix(); + gGL.pushUIMatrix(); { - gGL.translatef((F32)x, (F32)y, 0.f); + gGL.translateUI((F32)x, (F32)y, 0.f); gGL.getTexUnit(0)->bind(image); @@ -637,7 +638,7 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex } gGL.end(); } - gGL.popMatrix(); + gGL.popUIMatrix(); if (solid_color) { @@ -660,39 +661,72 @@ void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degre LLGLSUIDefault gls_ui; - gGL.pushMatrix(); + + gGL.getTexUnit(0)->bind(image); + + gGL.color4fv(color.mV); + + if (degrees == 0.f) { - gGL.translatef((F32)x, (F32)y, 0.f); - if( degrees ) + gGL.pushUIMatrix(); + gGL.translateUI((F32)x, (F32)y, 0.f); + + gGL.begin(LLRender::QUADS); { - F32 offset_x = F32(width/2); - F32 offset_y = F32(height/2); - gGL.translatef( offset_x, offset_y, 0.f); - glRotatef( degrees, 0.f, 0.f, 1.f ); - gGL.translatef( -offset_x, -offset_y, 0.f ); + gGL.texCoord2f(uv_rect.mRight, uv_rect.mTop); + gGL.vertex2i(width, height ); + + gGL.texCoord2f(uv_rect.mLeft, uv_rect.mTop); + gGL.vertex2i(0, height ); + + gGL.texCoord2f(uv_rect.mLeft, uv_rect.mBottom); + gGL.vertex2i(0, 0); + + gGL.texCoord2f(uv_rect.mRight, uv_rect.mBottom); + gGL.vertex2i(width, 0); } + gGL.end(); + gGL.popUIMatrix(); + } + else + { + gGL.pushUIMatrix(); + gGL.translateUI((F32)x, (F32)y, 0.f); + + F32 offset_x = F32(width/2); + F32 offset_y = F32(height/2); + gGL.translateUI(offset_x, offset_y, 0.f); + + LLMatrix3 quat(0.f, 0.f, degrees*DEG_TO_RAD); + gGL.getTexUnit(0)->bind(image); gGL.color4fv(color.mV); gGL.begin(LLRender::QUADS); { + LLVector3 v; + + v = LLVector3(offset_x, offset_y, 0.f) * quat; gGL.texCoord2f(uv_rect.mRight, uv_rect.mTop); - gGL.vertex2i(width, height ); + gGL.vertex2f(v.mV[0], v.mV[1] ); + v = LLVector3(-offset_x, offset_y, 0.f) * quat; gGL.texCoord2f(uv_rect.mLeft, uv_rect.mTop); - gGL.vertex2i(0, height ); + gGL.vertex2f(v.mV[0], v.mV[1] ); + v = LLVector3(-offset_x, -offset_y, 0.f) * quat; gGL.texCoord2f(uv_rect.mLeft, uv_rect.mBottom); - gGL.vertex2i(0, 0); + gGL.vertex2f(v.mV[0], v.mV[1] ); + v = LLVector3(offset_x, -offset_y, 0.f) * quat; gGL.texCoord2f(uv_rect.mRight, uv_rect.mBottom); - gGL.vertex2i(width, 0); + gGL.vertex2f(v.mV[0], v.mV[1] ); } gGL.end(); + gGL.popUIMatrix(); } - gGL.popMatrix(); } @@ -747,9 +781,9 @@ void gl_arc_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled, F end_angle += F_TWO_PI; } - gGL.pushMatrix(); + gGL.pushUIMatrix(); { - gGL.translatef(center_x, center_y, 0.f); + gGL.translateUI(center_x, center_y, 0.f); // Inexact, but reasonably fast. F32 delta = (end_angle - start_angle) / steps; @@ -780,15 +814,15 @@ void gl_arc_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled, F } gGL.end(); } - gGL.popMatrix(); + gGL.popUIMatrix(); } void gl_circle_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled) { - gGL.pushMatrix(); + gGL.pushUIMatrix(); { gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - gGL.translatef(center_x, center_y, 0.f); + gGL.translateUI(center_x, center_y, 0.f); // Inexact, but reasonably fast. F32 delta = F_TWO_PI / steps; @@ -819,7 +853,7 @@ void gl_circle_2d(F32 center_x, F32 center_y, F32 radius, S32 steps, BOOL filled } gGL.end(); } - gGL.popMatrix(); + gGL.popUIMatrix(); } // Renders a ring with sides (tube shape) @@ -846,9 +880,9 @@ void gl_deep_circle( F32 radius, F32 depth, S32 steps ) void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor4& side_color, S32 steps, BOOL render_center ) { - gGL.pushMatrix(); + gGL.pushUIMatrix(); { - gGL.translatef(0.f, 0.f, -width / 2); + gGL.translateUI(0.f, 0.f, -width / 2); if( render_center ) { gGL.color4fv(center_color.mV); @@ -857,11 +891,11 @@ void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor else { gl_washer_2d(radius, radius - width, steps, side_color, side_color); - gGL.translatef(0.f, 0.f, width); + gGL.translateUI(0.f, 0.f, width); gl_washer_2d(radius - width, radius, steps, side_color, side_color); } } - gGL.popMatrix(); + gGL.popUIMatrix(); } // Draw gray and white checkerboard with black border @@ -1050,9 +1084,9 @@ void gl_segmented_rect_2d_tex(const S32 left, S32 width = llabs(right - left); S32 height = llabs(top - bottom); - gGL.pushMatrix(); + gGL.pushUIMatrix(); - gGL.translatef((F32)left, (F32)bottom, 0.f); + gGL.translateUI((F32)left, (F32)bottom, 0.f); LLVector2 border_uv_scale((F32)border_size / (F32)texture_width, (F32)border_size / (F32)texture_height); if (border_uv_scale.mV[VX] > 0.5f) @@ -1193,7 +1227,7 @@ void gl_segmented_rect_2d_tex(const S32 left, } gGL.end(); - gGL.popMatrix(); + gGL.popUIMatrix(); } void gl_segmented_rect_2d_fragment_tex(const S32 left, @@ -1210,9 +1244,9 @@ void gl_segmented_rect_2d_fragment_tex(const S32 left, S32 width = llabs(right - left); S32 height = llabs(top - bottom); - gGL.pushMatrix(); + gGL.pushUIMatrix(); - gGL.translatef((F32)left, (F32)bottom, 0.f); + gGL.translateUI((F32)left, (F32)bottom, 0.f); LLVector2 border_uv_scale((F32)border_size / (F32)texture_width, (F32)border_size / (F32)texture_height); if (border_uv_scale.mV[VX] > 0.5f) @@ -1383,7 +1417,7 @@ void gl_segmented_rect_2d_fragment_tex(const S32 left, } gGL.end(); - gGL.popMatrix(); + gGL.popUIMatrix(); } void gl_segmented_rect_3d_tex(const LLVector2& border_scale, const LLVector3& border_width, @@ -1591,7 +1625,7 @@ void LLUI::dirtyRect(LLRect rect) //static void LLUI::translate(F32 x, F32 y, F32 z) { - gGL.translatef(x,y,z); + gGL.translateUI(x,y,z); LLFontGL::sCurOrigin.mX += (S32) x; LLFontGL::sCurOrigin.mY += (S32) y; LLFontGL::sCurOrigin.mZ += z; @@ -1600,14 +1634,14 @@ void LLUI::translate(F32 x, F32 y, F32 z) //static void LLUI::pushMatrix() { - gGL.pushMatrix(); + gGL.pushUIMatrix(); LLFontGL::sOriginStack.push_back(LLFontGL::sCurOrigin); } //static void LLUI::popMatrix() { - gGL.popMatrix(); + gGL.popUIMatrix(); LLFontGL::sCurOrigin = *LLFontGL::sOriginStack.rbegin(); LLFontGL::sOriginStack.pop_back(); } @@ -1615,7 +1649,7 @@ void LLUI::popMatrix() //static void LLUI::loadIdentity() { - glLoadIdentity(); + gGL.loadUIIdentity(); LLFontGL::sCurOrigin.mX = 0; LLFontGL::sCurOrigin.mY = 0; LLFontGL::sCurOrigin.mZ = 0; @@ -1894,7 +1928,9 @@ namespace LLInitParam blue("blue"), alpha("alpha"), control("") - {} + { + setBlockFromValue(); + } void TypedParam<LLUIColor>::setValueFromBlock() const { @@ -1911,10 +1947,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); } @@ -1939,7 +1975,9 @@ namespace LLInitParam size("size"), style("style") { + setBlockFromValue(); addSynonym(name, ""); + setBlockFromValue(); } void TypedParam<const LLFontGL*>::setValueFromBlock() const @@ -1965,9 +2003,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); } } @@ -1979,7 +2017,9 @@ namespace LLInitParam bottom("bottom"), width("width"), height("height") - {} + { + setBlockFromValue(); + } void TypedParam<LLRect>::setValueFromBlock() const { @@ -2064,6 +2104,7 @@ namespace LLInitParam x("x"), y("y") { + setBlockFromValue(); } void TypedParam<LLCoordGL>::setValueFromBlock() const @@ -2073,8 +2114,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/llui.h b/indra/llui/llui.h index 5840e76f5c..af8d4ea03b 100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -426,8 +426,8 @@ namespace LLInitParam { typedef BlockValue<const LLFontGL*> super_t; public: - Mandatory<std::string> name; - Optional<std::string> size, + Optional<std::string> name, + size, style; TypedParam(BlockDescriptor& descriptor, const char* name, const LLFontGL* const value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count); diff --git a/indra/llui/lluicolortable.cpp b/indra/llui/lluicolortable.cpp index 9be33483d0..1b64ef3abe 100644 --- a/indra/llui/lluicolortable.cpp +++ b/indra/llui/lluicolortable.cpp @@ -56,7 +56,7 @@ LLUIColorTable::Params::Params() { } -void LLUIColorTable::insertFromParams(const Params& p) +void LLUIColorTable::insertFromParams(const Params& p, string_color_map_t& table) { // this map will contain all color references after the following loop typedef std::map<std::string, std::string> string_string_map_t; @@ -69,14 +69,7 @@ void LLUIColorTable::insertFromParams(const Params& p) ColorEntryParams color_entry = *it; if(color_entry.color.value.isChosen()) { - if(mUserSetColors.find(color_entry.name)!=mUserSetColors.end()) - { - setColor(color_entry.name, color_entry.color.value); - } - else - { - setColor(color_entry.name, color_entry.color.value, mLoadedColors); - } + setColor(color_entry.name, color_entry.color.value, table); } else { @@ -220,16 +213,16 @@ bool LLUIColorTable::loadFromSettings() bool result = false; std::string default_filename = gDirUtilp->getExpandedFilename(LL_PATH_DEFAULT_SKIN, "colors.xml"); - result |= loadFromFilename(default_filename); + result |= loadFromFilename(default_filename, mLoadedColors); std::string current_filename = gDirUtilp->getExpandedFilename(LL_PATH_TOP_SKIN, "colors.xml"); if(current_filename != default_filename) { - result |= loadFromFilename(current_filename); + result |= loadFromFilename(current_filename, mLoadedColors); } std::string user_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "colors.xml"); - loadFromFilename(user_filename); + loadFromFilename(user_filename, mUserSetColors); return result; } @@ -299,7 +292,7 @@ void LLUIColorTable::setColor(const std::string& name, const LLColor4& color, st } } -bool LLUIColorTable::loadFromFilename(const std::string& filename) +bool LLUIColorTable::loadFromFilename(const std::string& filename, string_color_map_t& table) { LLXMLNodePtr root; @@ -320,7 +313,7 @@ bool LLUIColorTable::loadFromFilename(const std::string& filename) if(params.validateBlock()) { - insertFromParams(params); + insertFromParams(params, table); } else { @@ -330,3 +323,11 @@ bool LLUIColorTable::loadFromFilename(const std::string& filename) return true; } + +void LLUIColorTable::insertFromParams(const Params& p) +{ + insertFromParams(p, mUserSetColors); +} + +// EOF + diff --git a/indra/llui/lluicolortable.h b/indra/llui/lluicolortable.h index 59be0c4f9a..d401e5e724 100644 --- a/indra/llui/lluicolortable.h +++ b/indra/llui/lluicolortable.h @@ -45,6 +45,10 @@ class LLUIColor; class LLUIColorTable : public LLSingleton<LLUIColorTable> { LOG_CLASS(LLUIColorTable); + + // consider using sorted vector, can be much faster + typedef std::map<std::string, LLUIColor> string_color_map_t; + public: struct ColorParams : LLInitParam::Choice<ColorParams> { @@ -91,10 +95,9 @@ public: void saveUserSettings() const; private: - bool loadFromFilename(const std::string& filename); + bool loadFromFilename(const std::string& filename, string_color_map_t& table); - // consider using sorted vector, can be much faster - typedef std::map<std::string, LLColor4> string_color_map_t; + void insertFromParams(const Params& p, string_color_map_t& table); 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/lluictrl.cpp b/indra/llui/lluictrl.cpp index 6044908ca7..3ade46d367 100644 --- a/indra/llui/lluictrl.cpp +++ b/indra/llui/lluictrl.cpp @@ -868,6 +868,14 @@ bool LLUICtrl::findHelpTopic(std::string& help_topic_out) if (panel) { + // does the panel have a sub-panel with a help topic? + LLPanel *subpanel = panel->childGetVisiblePanelWithHelp(); + if (subpanel) + { + help_topic_out = subpanel->getHelpTopic(); + return true; // success (subpanel) + } + // does the panel have an active tab with a help topic? LLPanel *tab = panel->childGetVisibleTabWithHelp(); if (tab) diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp index 966d919dc7..8cd6460b66 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/llui/lluiimage.h b/indra/llui/lluiimage.h index bdfc44262d..4ea0738026 100644 --- a/indra/llui/lluiimage.h +++ b/indra/llui/lluiimage.h @@ -109,6 +109,7 @@ namespace LLInitParam TypedParam(BlockDescriptor& descriptor, const char* name, super_t::value_assignment_t value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count) : super_t(descriptor, name, value, func, min_count, max_count) { + setBlockFromValue(); } void setValueFromBlock() const; diff --git a/indra/llui/lluistring.h b/indra/llui/lluistring.h index 7ec0fd603a..32cfc0d9cd 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); } diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp index 983f0a2d49..20c939874b 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) { } @@ -48,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); } @@ -88,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(); @@ -101,10 +102,10 @@ std::string LLUrlEntryBase::getLabelFromWikiLink(const std::string &url) { start++; } - return url.substr(start, url.size()-start-1); + 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(); @@ -191,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); } @@ -201,8 +202,12 @@ std::string LLUrlEntryHTTPLabel::getUrl(const std::string &string) // LLUrlEntryHTTPNoProtocol::LLUrlEntryHTTPNoProtocol() { - mPattern = boost::regex("(\\bwww\\.\\S+\\.\\S+|\\b[^ \t\n\r\f\v:/]+.com\\S*|\\b[^ \t\n\r\f\v:/]+.net\\S*|\\b[^ \t\n\r\f\v:/]+.edu\\S*|\\b[^ \t\n\r\f\v:/]+.org\\S*)", - boost::regex::perl|boost::regex::icase); + mPattern = boost::regex("(" + "\\bwww\\.\\S+\\.\\S+" // i.e. www.FOO.BAR + "|" // or + "(?<!@)\\b[^[:space:]:@/>]+\\.(?:com|net|edu|org)([/:][^[:space:]<]*)?\\b" // i.e. FOO.net + ")", + boost::regex::perl|boost::regex::icase); mMenuName = "menu_url_http.xml"; mTooltip = LLTrans::getString("TooltipHttpUrl"); } @@ -212,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) { @@ -227,7 +232,7 @@ std::string LLUrlEntryHTTPNoProtocol::getUrl(const std::string &string) 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/[^ /]+(/\\d+){0,3}(/?(\\?title|\\?img|\\?msg)=\\S*)?/?", boost::regex::perl|boost::regex::icase); mMenuName = "menu_url_slurl.xml"; mTooltip = LLTrans::getString("TooltipSLURL"); @@ -282,7 +287,7 @@ std::string LLUrlEntrySLURL::getLabel(const std::string &url, const LLUrlLabelCa std::string LLUrlEntrySLURL::getLocation(const std::string &url) const { // return the part of the Url after slurl.com/secondlife/ - const std::string search_string = "secondlife"; + const std::string search_string = "/secondlife"; size_t pos = url.find(search_string); if (pos == std::string::npos) { @@ -592,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); } @@ -637,3 +642,24 @@ 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>[^<]*</nolink>", + boost::regex::perl|boost::regex::icase); + mDisabledLink = true; +} + +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 4adffde99c..3abada0f24 100644 --- a/indra/llui/llurlentry.h +++ b/indra/llui/llurlentry.h @@ -71,7 +71,7 @@ public: 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; } @@ -91,12 +91,15 @@ public: /// 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; 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); @@ -111,6 +114,7 @@ protected: std::string mTooltip; LLUIColor mColor; std::multimap<std::string, LLUrlEntryObserver> mObservers; + bool mDisabledLink; }; /// @@ -131,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; }; /// @@ -142,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; }; /// @@ -252,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; }; /// @@ -267,4 +271,15 @@ public: /*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); + /*virtual*/ std::string getUrl(const std::string &string) const; +}; + #endif diff --git a/indra/llui/llurlmatch.cpp b/indra/llui/llurlmatch.cpp index 3b47145a22..72a199c220 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 7f5767923a..e86762548b 100644 --- a/indra/llui/llurlmatch.h +++ b/indra/llui/llurlmatch.h @@ -83,11 +83,14 @@ public: /// 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 @@ private: std::string mMenuName; std::string mLocation; LLUIColor mColor; + bool mDisabledLink; }; #endif diff --git a/indra/llui/llurlregistry.cpp b/indra/llui/llurlregistry.cpp index ad5c0911f8..722dbe41b3 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()); @@ -131,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) @@ -176,7 +178,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 +207,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/llview.cpp b/indra/llui/llview.cpp index f1b08c380b..63e627ceb5 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -1720,6 +1720,7 @@ LLView* LLView::findChildView(const std::string& name, BOOL recurse) const for ( child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it) { LLView* childp = *child_it; + llassert(childp); if (childp->getName() == name) { return childp; @@ -1731,6 +1732,7 @@ LLView* LLView::findChildView(const std::string& name, BOOL recurse) const for ( child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it) { LLView* childp = *child_it; + llassert(childp); LLView* viewp = childp->findChildView(name, recurse); if ( viewp ) { diff --git a/indra/llui/llviewborder.cpp b/indra/llui/llviewborder.cpp index 30717f87de..bd9c43c97f 100644 --- a/indra/llui/llviewborder.cpp +++ b/indra/llui/llviewborder.cpp @@ -125,14 +125,6 @@ void LLViewBorder::draw() llassert( FALSE ); // not implemented } } - else - if( STYLE_TEXTURE == mStyle ) - { - if( mTexture ) - { - drawTextures(); - } - } LLView::draw(); } @@ -255,56 +247,6 @@ void LLViewBorder::drawTwoPixelLines() gl_line_2d(left+1, bottom+1, right-1, bottom+1); } -void LLViewBorder::drawTextures() -{ - //LLGLSUIDefault gls_ui; - - //llassert( FALSE ); // TODO: finish implementing - - //gGL.color4fv(UI_VERTEX_COLOR.mV); - - //gGL.getTexUnit(0)->bind(mTexture); - //gGL.getTexUnit(0)->setTextureAddressMode(LLTexUnit::TAM_WRAP); - - //drawTextureTrapezoid( 0.f, mBorderWidth, getRect().getWidth(), 0, 0 ); - //drawTextureTrapezoid( 90.f, mBorderWidth, getRect().getHeight(), (F32)getRect().getWidth(),0 ); - //drawTextureTrapezoid( 180.f, mBorderWidth, getRect().getWidth(), (F32)getRect().getWidth(),(F32)getRect().getHeight() ); - //drawTextureTrapezoid( 270.f, mBorderWidth, getRect().getHeight(), 0, (F32)getRect().getHeight() ); -} - - -void LLViewBorder::drawTextureTrapezoid( F32 degrees, S32 width, S32 length, F32 start_x, F32 start_y ) -{ - gGL.pushMatrix(); - { - gGL.translatef(start_x, start_y, 0.f); - glRotatef( degrees, 0, 0, 1 ); - - gGL.begin(LLRender::QUADS); - { - // width, width /---------\ length-width, width // - // / \ // - // / \ // - // /---------------\ // - // 0,0 length, 0 // - - gGL.texCoord2f( 0, 0 ); - gGL.vertex2i( 0, 0 ); - - gGL.texCoord2f( (GLfloat)length, 0 ); - gGL.vertex2i( length, 0 ); - - gGL.texCoord2f( (GLfloat)(length - width), (GLfloat)width ); - gGL.vertex2i( length - width, width ); - - gGL.texCoord2f( (GLfloat)width, (GLfloat)width ); - gGL.vertex2i( width, width ); - } - gGL.end(); - } - gGL.popMatrix(); -} - BOOL LLViewBorder::getBevelFromAttribute(LLXMLNodePtr node, LLViewBorder::EBevel& bevel_style) { if (node->hasAttribute("bevel_style")) diff --git a/indra/llui/llviewborder.h b/indra/llui/llviewborder.h index 92fd569325..342e84fd93 100644 --- a/indra/llui/llviewborder.h +++ b/indra/llui/llviewborder.h @@ -99,8 +99,7 @@ private: void drawOnePixelLines(); void drawTwoPixelLines(); void drawTextures(); - void drawTextureTrapezoid( F32 degrees, S32 width, S32 length, F32 start_x, F32 start_y ); - + EBevel mBevel; EStyle mStyle; LLUIColor mHighlightLight; diff --git a/indra/llui/llviewmodel.h b/indra/llui/llviewmodel.h index c8a9b52cca..992365d44d 100644 --- a/indra/llui/llviewmodel.h +++ b/indra/llui/llviewmodel.h @@ -107,7 +107,8 @@ public: // 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 diff --git a/indra/llui/tests/llurlentry_test.cpp b/indra/llui/tests/llurlentry_test.cpp index 128cd134c1..cbb303a059 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 { @@ -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,34 +507,135 @@ 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<> + void object::test<11>() + { + // + // test LLUrlEntryHTTPNoProtocol - general URLs without a protocol + // + LLUrlEntryHTTPNoProtocol url; + + testRegex("naked .com URL", url, + "see google.com", + "http://google.com"); + + testRegex("naked .org URL", url, + "see en.wikipedia.org for details", + "http://en.wikipedia.org"); + + testRegex("naked .net URL", url, + "example.net", + "http://example.net"); + + testRegex("naked .edu URL (2 instances)", url, + "MIT web site is at web.mit.edu and also www.mit.edu", + "http://web.mit.edu"); + + testRegex("don't match e-mail addresses", url, + "test@lindenlab.com", + ""); + + testRegex(".com URL with path", url, + "see secondlife.com/status for grid status", + "http://secondlife.com/status"); + + testRegex(".com URL with port", url, + "secondlife.com:80", + "http://secondlife.com:80"); + + testRegex(".com URL with port and path", url, + "see secondlife.com:80/status", + "http://secondlife.com:80/status"); + + testRegex("www.*.com URL with port and path", url, + "see www.secondlife.com:80/status", + "http://www.secondlife.com:80/status"); + + testRegex("invalid .com URL [1]", url, + "..com", + ""); + + testRegex("invalid .com URL [2]", url, + "you.come", + ""); + + testRegex("invalid .com URL [3]", url, + "recommended", + ""); + + testRegex("invalid .edu URL", url, + "hi there scheduled maitenance has begun", + ""); + + testRegex("invalid .net URL", url, + "foo.netty", + ""); + + testRegex("XML tags around URL [1]", url, + "<foo>secondlife.com</foo>", + "http://secondlife.com"); + + testRegex("XML tags around URL [2]", url, + "<foo>secondlife.com/status?bar=1</foo>", + "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/llui/tests/llurlmatch_test.cpp b/indra/llui/tests/llurlmatch_test.cpp index e8cf135346..24a32de268 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 @@ -53,7 +54,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 +67,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 +80,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 +93,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 +109,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 +125,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 +141,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 +157,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 +173,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()); } } diff --git a/indra/llvfs/lldir.cpp b/indra/llvfs/lldir.cpp index b2b17fdd56..da4abde451 100644 --- a/indra/llvfs/lldir.cpp +++ b/indra/llvfs/lldir.cpp @@ -200,6 +200,11 @@ const std::string &LLDir::getOSUserAppDir() const const std::string &LLDir::getLindenUserDir() const { + if (mLindenUserDir.empty()) + { + lldebugs << "getLindenUserDir() called early, we don't have the user name yet - returning empty string to caller" << llendl; + } + return mLindenUserDir; } @@ -337,7 +342,7 @@ std::string LLDir::getExpandedFilename(ELLPath location, const std::string& subd break; case LL_PATH_CACHE: - prefix = getCacheDir(); + prefix = getCacheDir(); break; case LL_PATH_USER_SETTINGS: @@ -348,6 +353,11 @@ std::string LLDir::getExpandedFilename(ELLPath location, const std::string& subd case LL_PATH_PER_SL_ACCOUNT: prefix = getLindenUserDir(); + if (prefix.empty()) + { + // if we're asking for the per-SL-account directory but we haven't logged in yet (or otherwise don't know the account name from which to build this string), then intentionally return a blank string to the caller and skip the below warning about a blank prefix. + return std::string(); + } break; case LL_PATH_CHAT_LOGS: @@ -557,7 +567,7 @@ std::string LLDir::getForbiddenFileChars() void LLDir::setLindenUserDir(const std::string &first, const std::string &last) { - // if both first and last aren't set, assume we're grabbing the cached dir + // if both first and last aren't set, that's bad. if (!first.empty() && !last.empty()) { // some platforms have case-sensitive filesystems, so be @@ -571,6 +581,7 @@ void LLDir::setLindenUserDir(const std::string &first, const std::string &last) mLindenUserDir += firstlower; mLindenUserDir += "_"; mLindenUserDir += lastlower; + llinfos << "Got name for LLDir::setLindenUserDir(first='" << first << "', last='" << last << "')" << llendl; } else { diff --git a/indra/llvfs/lldir.h b/indra/llvfs/lldir.h index 206e3223e3..9067d75bac 100644 --- a/indra/llvfs/lldir.h +++ b/indra/llvfs/lldir.h @@ -44,7 +44,7 @@ typedef enum ELLPath LL_PATH_NONE = 0, LL_PATH_USER_SETTINGS = 1, LL_PATH_APP_SETTINGS = 2, - LL_PATH_PER_SL_ACCOUNT = 3, + LL_PATH_PER_SL_ACCOUNT = 3, // returns/expands to blank string if we don't know the account name yet LL_PATH_CACHE = 4, LL_PATH_CHARACTER = 5, LL_PATH_HELP = 6, diff --git a/indra/llvfs/lldir_linux.cpp b/indra/llvfs/lldir_linux.cpp index ee902d1de7..a9736560ec 100644 --- a/indra/llvfs/lldir_linux.cpp +++ b/indra/llvfs/lldir_linux.cpp @@ -112,9 +112,10 @@ LLDir_Linux::LLDir_Linux() // ...normal installation running mSkinBaseDir = mAppRODataDir + mDirDelimiter + "skins"; } + mOSUserDir = getCurrentUserHome(tmp_str); mOSUserAppDir = ""; - mLindenUserDir = tmp_str; + mLindenUserDir = ""; char path [32]; /* Flawfinder: ignore */ diff --git a/indra/llvfs/lldir_solaris.cpp b/indra/llvfs/lldir_solaris.cpp index a8fad8e5bd..8ac5a41e93 100644 --- a/indra/llvfs/lldir_solaris.cpp +++ b/indra/llvfs/lldir_solaris.cpp @@ -100,7 +100,7 @@ LLDir_Solaris::LLDir_Solaris() mAppRODataDir = strdup(tmp_str); mOSUserDir = getCurrentUserHome(tmp_str); mOSUserAppDir = ""; - mLindenUserDir = tmp_str; + mLindenUserDir = ""; char path [LL_MAX_PATH]; /* Flawfinder: ignore */ diff --git a/indra/llvfs/llpidlock.cpp b/indra/llvfs/llpidlock.cpp index 95e3692e10..28cee29405 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"; } diff --git a/indra/llvfs/llvfile.h b/indra/llvfs/llvfile.h index 5f69a41040..c3bca8c737 100644 --- a/indra/llvfs/llvfile.h +++ b/indra/llvfs/llvfile.h @@ -88,7 +88,6 @@ protected: S32 mMode; LLVFS *mVFS; F32 mPriority; - BOOL mOnReadQueue; S32 mBytesRead; LLVFSThread::handle_t mHandle; diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt index 7b1cab696f..bf3233f386 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) @@ -102,14 +103,17 @@ 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 + ole32 ) endif (WINDOWS) diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp new file mode 100644 index 0000000000..b85960be10 --- /dev/null +++ b/indra/llwindow/lldragdropwin32.cpp @@ -0,0 +1,371 @@ +/** + * @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), + mIsSlurl(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 new file mode 100644 index 0000000000..9686626d7c --- /dev/null +++ b/indra/llwindow/lldragdropwin32.h @@ -0,0 +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 diff --git a/indra/llwindow/llkeyboardwin32.cpp b/indra/llwindow/llkeyboardwin32.cpp index 35a3e7621a..ab5ecb4e63 100644 --- a/indra/llwindow/llkeyboardwin32.cpp +++ b/indra/llwindow/llkeyboardwin32.cpp @@ -80,7 +80,7 @@ LLKeyboardWin32::LLKeyboardWin32() mTranslateKeyMap[VK_OEM_COMMA] = ','; mTranslateKeyMap[VK_OEM_MINUS] = '-'; mTranslateKeyMap[VK_OEM_PERIOD] = '.'; - mTranslateKeyMap[VK_OEM_2] = KEY_PAD_DIVIDE; + mTranslateKeyMap[VK_OEM_2] = '/';//This used to be KEY_PAD_DIVIDE, but that breaks typing into text fields in media prims mTranslateKeyMap[VK_OEM_3] = '`'; mTranslateKeyMap[VK_OEM_4] = '['; mTranslateKeyMap[VK_OEM_5] = '\\'; diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h index 127dbf45e0..55b221e716 100644 --- a/indra/llwindow/llwindow.h +++ b/indra/llwindow/llwindow.h @@ -37,6 +37,7 @@ #include "llcoord.h" #include "llstring.h" #include "llcursortypes.h" +#include "llsd.h" class LLSplashScreen; class LLPreeditor; @@ -162,6 +163,9 @@ public: virtual void spawnWebBrowser(const std::string& escaped_url) {}; static std::vector<std::string> getDynamicFallbackFontList(); + + // Provide native key event data + virtual LLSD getNativeKeyData() { return LLSD::emptyMap(); } protected: LLWindow(LLWindowCallbacks* callbacks, BOOL fullscreen, U32 flags); diff --git a/indra/llwindow/llwindowcallbacks.cpp b/indra/llwindow/llwindowcallbacks.cpp index 72f9997149..6d9f012cc3 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 { } +LLWindowCallbacks::DragNDropResult LLWindowCallbacks::handleDragNDrop(LLWindow *window, LLCoordGL pos, MASK mask, DragNDropAction action, std::string data ) +{ + return LLWindowCallbacks::DND_NONE; +} + BOOL LLWindowCallbacks::handleTimerEvent(LLWindow *window) { return FALSE; diff --git a/indra/llwindow/llwindowcallbacks.h b/indra/llwindow/llwindowcallbacks.h index abc66c42a2..42add8dde0 100644 --- a/indra/llwindow/llwindowcallbacks.h +++ b/indra/llwindow/llwindowcallbacks.h @@ -71,6 +71,21 @@ public: 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 + 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, DragNDropAction action, 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 ed62faece6..ad97bc45fc 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -260,6 +260,7 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks, mTSMScriptCode = 0; mTSMLangCode = 0; mPreeditor = NULL; + mRawKeyEvent = NULL; mFSAASamples = fsaa_samples; mForceRebuild = FALSE; @@ -278,6 +279,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 ); @@ -499,8 +502,11 @@ 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 +#if LL_OS_DRAGDROP_ENABLED + InstallTrackingHandler( dragTrackingHandler, mWindow, (void*)this ); + InstallReceiveHandler( dragReceiveHandler, mWindow, (void*)this ); +#endif // LL_OS_DRAGDROP_ENABLED } { @@ -2135,10 +2141,11 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e { UInt32 modifiers = 0; + // First, process the raw event. { - EventRef rawEvent; - + EventRef rawEvent = NULL; + // Get the original event and extract the modifier keys, so we can ignore command-key events. if (GetEventParameter(event, kEventParamTextInputSendKeyboardEvent, typeEventRef, NULL, sizeof(rawEvent), NULL, &rawEvent) == noErr) { @@ -2147,6 +2154,9 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e // and call this function recursively to handle the raw key event. eventHandler (myHandler, rawEvent); + + // save the raw event until we're done processing the unicode input as well. + mRawKeyEvent = rawEvent; } } @@ -2174,11 +2184,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. @@ -2200,6 +2207,7 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e delete[] buffer; } + mRawKeyEvent = NULL; result = err; } break; @@ -2274,6 +2282,9 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e GetEventParameter (event, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &keyCode); GetEventParameter (event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers); + // save the raw event so getNativeKeyData can use it. + mRawKeyEvent = event; + // printf("key event, key code = 0x%08x, char code = 0x%02x (%c), modifiers = 0x%08x\n", keyCode, charCode, (char)charCode, modifiers); // fflush(stdout); @@ -2369,6 +2380,8 @@ OSStatus LLWindowMacOSX::eventHandler (EventHandlerCallRef myHandler, EventRef e result = eventNotHandledErr; break; } + + mRawKeyEvent = NULL; } break; @@ -2795,6 +2808,14 @@ void LLWindowMacOSX::setCursor(ECursorType cursor) { OSStatus result = noErr; + 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) { @@ -3201,6 +3222,60 @@ void LLWindowMacOSX::spawnWebBrowser(const std::string& escaped_url) } } +LLSD LLWindowMacOSX::getNativeKeyData() +{ + LLSD result = LLSD::emptyMap(); + + if(mRawKeyEvent) + { + char char_code = 0; + UInt32 key_code = 0; + UInt32 modifiers = 0; + UInt32 keyboard_type = 0; + + GetEventParameter (mRawKeyEvent, kEventParamKeyMacCharCodes, typeChar, NULL, sizeof(char), NULL, &char_code); + GetEventParameter (mRawKeyEvent, kEventParamKeyCode, typeUInt32, NULL, sizeof(UInt32), NULL, &key_code); + GetEventParameter (mRawKeyEvent, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers); + GetEventParameter (mRawKeyEvent, kEventParamKeyboardType, typeUInt32, NULL, sizeof(UInt32), NULL, &keyboard_type); + + result["char_code"] = (S32)char_code; + result["key_code"] = (S32)key_code; + result["modifiers"] = (S32)modifiers; + result["keyboard_type"] = (S32)keyboard_type; + +#if 0 + // This causes trouble for control characters -- apparently character codes less than 32 (escape, control-A, etc) + // cause llsd serialization to create XML that the llsd deserializer won't parse! + std::string unicode; + OSStatus err = noErr; + EventParamType actualType = typeUTF8Text; + UInt32 actualSize = 0; + char *buffer = NULL; + + err = GetEventParameter (mRawKeyEvent, kEventParamKeyUnicodes, typeUTF8Text, &actualType, 0, &actualSize, NULL); + if(err == noErr) + { + // allocate a buffer and get the actual data. + buffer = new char[actualSize]; + err = GetEventParameter (mRawKeyEvent, kEventParamKeyUnicodes, typeUTF8Text, &actualType, actualSize, &actualSize, buffer); + if(err == noErr) + { + unicode.assign(buffer, actualSize); + } + delete[] buffer; + } + + result["unicode"] = unicode; +#endif + + } + + + lldebugs << "native key data is: " << result << llendl; + + return result; +} + BOOL LLWindowMacOSX::dialogColorPicker( F32 *r, F32 *g, F32 *b) { @@ -3379,3 +3454,174 @@ 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; +} + +#if LL_OS_DRAGDROP_ENABLED + +OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow, + void * handlerRefCon, DragRef drag) +{ + OSErr result = noErr; + LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon; + + lldebugs << "drag tracking handler, message = " << message << llendl; + + switch(message) + { + case kDragTrackingInWindow: + result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_TRACK); + break; + + case kDragTrackingEnterHandler: + result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_START_TRACKING); + break; + + case kDragTrackingLeaveHandler: + result = self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_STOP_TRACKING); + break; + + default: + break; + } + + return result; +} + +OSErr LLWindowMacOSX::dragReceiveHandler(WindowRef theWindow, void * handlerRefCon, + DragRef drag) +{ + LLWindowMacOSX *self = (LLWindowMacOSX*)handlerRefCon; + return self->handleDragNDrop(drag, LLWindowCallbacks::DNDA_DROPPED); + +} + +OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDropAction action) +{ + 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); + + // Look at the pasteboard and try to extract an URL from it + PasteboardRef pasteboard; + if(GetDragPasteboard(drag, &pasteboard) == noErr) + { + ItemCount num_items = 0; + // Treat an error here as an item count of 0 + (void)PasteboardGetItemCount(pasteboard, &num_items); + + // Only deal with single-item drags. + if(num_items == 1) + { + PasteboardItemID item_id = NULL; + CFArrayRef flavors = NULL; + CFDataRef data = NULL; + + 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); + } + + } + + 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, action, url); + + 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; + } + // 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) + { + // 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); + } + + } + } + } + } + + return result; +} + +#endif // LL_OS_DRAGDROP_ENABLED diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index fbfa07fab4..7c6b324029 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" @@ -119,6 +120,10 @@ public: static std::vector<std::string> getDynamicFallbackFontList(); + // Provide native key event data + /*virtual*/ LLSD getNativeKeyData(); + + protected: LLWindowMacOSX(LLWindowCallbacks* callbacks, const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags, @@ -159,8 +164,15 @@ protected: void adjustCursorDecouple(bool warpingMouse = false); 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 // @@ -193,11 +205,13 @@ protected: U32 mFSAASamples; BOOL mForceRebuild; + S32 mDragOverrideCursor; + F32 mBounceTime; NMRec mBounceRec; LLTimer mBounceTimer; - // Imput method management through Text Service Manager. + // Input method management through Text Service Manager. TSMDocumentID mTSMDocument; BOOL mLanguageTextInputAllowed; ScriptCode mTSMScriptCode; @@ -208,6 +222,7 @@ protected: friend class LLWindowManager; static WindowRef sMediaWindow; + EventRef mRawKeyEvent; }; diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp index bfdf1147a1..1f705f9e60 100644 --- a/indra/llwindow/llwindowsdl.cpp +++ b/indra/llwindow/llwindowsdl.cpp @@ -251,6 +251,10 @@ LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks, #if LL_X11 mFlashing = FALSE; #endif // LL_X11 + + mKeyScanCode = 0; + mKeyVirtualKey = 0; + mKeyModifiers = KMOD_NONE; } static SDL_Surface *Load_BMP_Resource(const char *basename) @@ -1593,12 +1597,83 @@ U32 LLWindowSDL::SDLCheckGrabbyKeys(SDLKey keysym, BOOL gain) return mGrabbyKeyFlags; } + +void check_vm_bloat() +{ +#if LL_LINUX + // watch our own VM and RSS sizes, warn if we bloated rapidly + FILE *fp = fopen("/proc/self/stat", "r"); + if (fp) + { + static long long last_vm_size = 0; + static long long last_rss_size = 0; + const long long significant_vm_difference = 250 * 1024*1024; + const long long significant_rss_difference = 50 * 1024*1024; + + ssize_t res; + size_t dummy; + char *ptr; + for (int i=0; i<22; ++i) // parse past the values we don't want + { + ptr = NULL; + res = getdelim(&ptr, &dummy, ' ', fp); + free(ptr); + } + // 23rd space-delimited entry is vsize + ptr = NULL; + res = getdelim(&ptr, &dummy, ' ', fp); + llassert(ptr); + long long this_vm_size = atoll(ptr); + free(ptr); + // 24th space-delimited entry is RSS + ptr = NULL; + res = getdelim(&ptr, &dummy, ' ', fp); + llassert(ptr); + long long this_rss_size = getpagesize() * atoll(ptr); + free(ptr); + + llinfos << "VM SIZE IS NOW " << (this_vm_size/(1024*1024)) << " MB, RSS SIZE IS NOW " << (this_rss_size/(1024*1024)) << " MB" << llendl; + + if (llabs(last_vm_size - this_vm_size) > + significant_vm_difference) + { + if (this_vm_size > last_vm_size) + { + llwarns << "VM size grew by " << (this_vm_size - last_vm_size)/(1024*1024) << " MB in last frame" << llendl; + } + else + { + llinfos << "VM size shrank by " << (last_vm_size - this_vm_size)/(1024*1024) << " MB in last frame" << llendl; + } + } + + if (llabs(last_rss_size - this_rss_size) > + significant_rss_difference) + { + if (this_rss_size > last_rss_size) + { + llwarns << "RSS size grew by " << (this_rss_size - last_rss_size)/(1024*1024) << " MB in last frame" << llendl; + } + else + { + llinfos << "RSS size shrank by " << (last_rss_size - this_rss_size)/(1024*1024) << " MB in last frame" << llendl; + } + } + + last_rss_size = this_rss_size; + last_vm_size = this_vm_size; + + fclose(fp); + } +#endif // LL_LINUX +} + + // virtual void LLWindowSDL::processMiscNativeEvents() { #if LL_GTK // Pump GTK events to avoid starvation for: - // * Embedded Gecko // * DBUS servicing // * Anything else which quietly hooks into the default glib/GTK loop if (ll_try_gtk_init()) @@ -1617,13 +1692,19 @@ void LLWindowSDL::processMiscNativeEvents() pump_timer.setTimerExpirySec(1.0f / 15.0f); do { // Always do at least one non-blocking pump - gtk_main_iteration_do(0); + gtk_main_iteration_do(FALSE); } while (gtk_events_pending() && !pump_timer.hasExpired()); setlocale(LC_ALL, saved_locale.c_str() ); } #endif // LL_GTK + + // hack - doesn't belong here - but this is just for debugging + if (getenv("LL_DEBUG_BLOAT")) + { + check_vm_bloat(); + } } void LLWindowSDL::gatherInput() @@ -1651,24 +1732,32 @@ void LLWindowSDL::gatherInput() } case SDL_KEYDOWN: - gKeyboard->handleKeyDown(event.key.keysym.sym, event.key.keysym.mod); - // part of the fix for SL-13243 - if (SDLCheckGrabbyKeys(event.key.keysym.sym, TRUE) != 0) - SDLReallyCaptureInput(TRUE); - - if (event.key.keysym.unicode) - { - handleUnicodeUTF16(event.key.keysym.unicode, - gKeyboard->currentMask(FALSE)); - } + mKeyScanCode = event.key.keysym.scancode; + mKeyVirtualKey = event.key.keysym.unicode; + mKeyModifiers = event.key.keysym.mod; + + gKeyboard->handleKeyDown(event.key.keysym.sym, event.key.keysym.mod); + // part of the fix for SL-13243 + if (SDLCheckGrabbyKeys(event.key.keysym.sym, TRUE) != 0) + SDLReallyCaptureInput(TRUE); + + if (event.key.keysym.unicode) + { + handleUnicodeUTF16(event.key.keysym.unicode, + gKeyboard->currentMask(FALSE)); + } break; case SDL_KEYUP: - if (SDLCheckGrabbyKeys(event.key.keysym.sym, FALSE) == 0) - SDLReallyCaptureInput(FALSE); // part of the fix for SL-13243 + mKeyScanCode = event.key.keysym.scancode; + mKeyVirtualKey = event.key.keysym.unicode; + mKeyModifiers = event.key.keysym.mod; - gKeyboard->handleKeyUp(event.key.keysym.sym, event.key.keysym.mod); - break; + if (SDLCheckGrabbyKeys(event.key.keysym.sym, FALSE) == 0) + SDLReallyCaptureInput(FALSE); // part of the fix for SL-13243 + + gKeyboard->handleKeyUp(event.key.keysym.sym, event.key.keysym.mod); + break; case SDL_MOUSEBUTTONDOWN: { @@ -2224,6 +2313,39 @@ static void color_changed_callback(GtkWidget *widget, gtk_color_selection_get_current_color(colorsel, colorp); } + +/* + Make the raw keyboard data available - used to poke through to LLQtWebKit so + that Qt/Webkit has access to the virtual keycodes etc. that it needs +*/ +LLSD LLWindowSDL::getNativeKeyData() +{ + LLSD result = LLSD::emptyMap(); + + U32 modifiers = 0; // pretend-native modifiers... oh what a tangled web we weave! + + // we go through so many levels of device abstraction that I can't really guess + // what a plugin under GDK under Qt under SL under SDL under X11 considers + // a 'native' modifier mask. this has been sort of reverse-engineered... they *appear* + // to match GDK consts, but that may be co-incidence. + modifiers |= (mKeyModifiers & KMOD_LSHIFT) ? 0x0001 : 0; + modifiers |= (mKeyModifiers & KMOD_RSHIFT) ? 0x0001 : 0;// munge these into the same shift + modifiers |= (mKeyModifiers & KMOD_CAPS) ? 0x0002 : 0; + modifiers |= (mKeyModifiers & KMOD_LCTRL) ? 0x0004 : 0; + modifiers |= (mKeyModifiers & KMOD_RCTRL) ? 0x0004 : 0;// munge these into the same ctrl + modifiers |= (mKeyModifiers & KMOD_LALT) ? 0x0008 : 0;// untested + modifiers |= (mKeyModifiers & KMOD_RALT) ? 0x0008 : 0;// untested + // *todo: test ALTs - I don't have a case for testing these. Do you? + // *todo: NUM? - I don't care enough right now (and it's not a GDK modifier). + + result["scan_code"] = (S32)mKeyScanCode; + result["virtual_key"] = (S32)mKeyVirtualKey; + result["modifiers"] = (S32)modifiers; + + return result; +} + + BOOL LLWindowSDL::dialogColorPicker( F32 *r, F32 *g, F32 *b) { BOOL rtn = FALSE; diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h index 0ba1c861da..e6bdd46a77 100644 --- a/indra/llwindow/llwindowsdl.h +++ b/indra/llwindow/llwindowsdl.h @@ -102,7 +102,7 @@ public: /*virtual*/ void gatherInput(); /*virtual*/ void swapBuffers(); - /*virtual*/ void delayInputProcessing() { }; + /*virtual*/ void delayInputProcessing() { }; // handy coordinate space conversion routines /*virtual*/ BOOL convertCoords(LLCoordScreen from, LLCoordWindow *to); @@ -155,12 +155,13 @@ protected: BOOL ignore_pixel_depth, U32 fsaa_samples); ~LLWindowSDL(); + /*virtual*/ BOOL isValid(); + /*virtual*/ LLSD getNativeKeyData(); + void initCursors(); void quitCursors(); - BOOL isValid(); void moveWindow(const LLCoordScreen& position,const LLCoordScreen& size); - // Changes display resolution. Returns true if successful BOOL setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh); @@ -204,12 +205,16 @@ protected: friend class LLWindowManager; -#if LL_X11 private: +#if LL_X11 void x11_set_urgent(BOOL urgent); BOOL mFlashing; LLTimer mFlashTimer; #endif //LL_X11 + + U32 mKeyScanCode; + U32 mKeyVirtualKey; + SDLMod mKeyModifiers; }; diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 3b9c840e72..c80392ad45 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -38,6 +38,7 @@ // LLWindow library includes #include "llkeyboardwin32.h" +#include "lldragdropwin32.h" #include "llpreeditor.h" #include "llwindowcallbacks.h" @@ -52,6 +53,7 @@ #include <mapi.h> #include <process.h> // for _spawn #include <shellapi.h> +#include <fstream> #include <Imm.h> // Require DirectInput version 8 @@ -376,6 +378,9 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks, mMousePositionModified = FALSE; mInputProcessingPaused = FALSE; mPreeditor = NULL; + mKeyCharCode = 0; + mKeyScanCode = 0; + mKeyVirtualKey = 0; mhDC = NULL; mhRC = NULL; @@ -383,6 +388,9 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks, 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); @@ -620,6 +628,8 @@ LLWindowWin32::LLWindowWin32(LLWindowCallbacks* callbacks, LLWindowWin32::~LLWindowWin32() { + delete mDragDrop; + delete [] mWindowTitle; mWindowTitle = NULL; @@ -671,6 +681,8 @@ void LLWindowWin32::close() return; } + mDragDrop->reset(); + // Make sure cursor is visible and we haven't mangled the clipping state. setMouseClipping(FALSE); showCursor(); @@ -1349,6 +1361,11 @@ 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 ); + + mDragDrop->init( mWindowHandle ); //register joystick timer callback SetTimer( mWindowHandle, 0, 1000 / 30, NULL ); // 30 fps timer @@ -1858,6 +1875,10 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ // allow system keys, such as ALT-F4 to be processed by Windows eat_keystroke = FALSE; case WM_KEYDOWN: + window_imp->mKeyCharCode = 0; // don't know until wm_char comes in next + window_imp->mKeyScanCode = ( l_param >> 16 ) & 0xff; + window_imp->mKeyVirtualKey = w_param; + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYDOWN"); { if (gDebugWindowProc) @@ -1877,6 +1898,9 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ eat_keystroke = FALSE; case WM_KEYUP: { + window_imp->mKeyScanCode = ( l_param >> 16 ) & 0xff; + window_imp->mKeyVirtualKey = w_param; + window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_KEYUP"); LLFastTimer t2(FTM_KEYHANDLER); @@ -1962,6 +1986,8 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ break; case WM_CHAR: + window_imp->mKeyCharCode = w_param; + // Should really use WM_UNICHAR eventually, but it requires a specific Windows version and I need // to figure out how that works. - Doug // @@ -2184,7 +2210,7 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ { 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 + // 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 @@ -2214,7 +2240,27 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_ window_imp->mCallbacks->handlePingWatchdog(window_imp, "Main:WM_MOUSEWHEEL"); static short z_delta = 0; - z_delta += HIWORD(w_param); + 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) @@ -2334,11 +2380,15 @@ 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; + + break; } window_imp->mCallbacks->handlePauseWatchdog(window_imp); @@ -3013,6 +3063,19 @@ void LLWindowWin32::spawnWebBrowser(const std::string& escaped_url ) */ } +/* + Make the raw keyboard data available - used to poke through to LLQtWebKit so + that Qt/Webkit has access to the virtual keycodes etc. that it needs +*/ +LLSD LLWindowWin32::getNativeKeyData() +{ + LLSD result = LLSD::emptyMap(); + + result["scan_code"] = (S32)mKeyScanCode; + result["virtual_key"] = (S32)mKeyVirtualKey; + + return result; +} BOOL LLWindowWin32::dialogColorPicker( F32 *r, F32 *g, F32 *b ) { @@ -3508,6 +3571,13 @@ static LLWString find_context(const LLWString & wtext, S32 focus, S32 focus_leng 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 diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h index e4e9179db7..9d57735772 100644 --- a/indra/llwindow/llwindowwin32.h +++ b/indra/llwindow/llwindowwin32.h @@ -39,6 +39,8 @@ #include <windows.h> #include "llwindow.h" +#include "llwindowcallbacks.h" +#include "lldragdropwin32.h" // Hack for async host by name #define LL_WM_HOST_RESOLVED (WM_APP + 1) @@ -114,6 +116,8 @@ public: /*virtual*/ void interruptLanguageTextInput(); /*virtual*/ void spawnWebBrowser(const std::string& escaped_url); + LLWindowCallbacks::DragNDropResult completeDragNDropRequest( const LLCoordGL gl_coord, const MASK mask, LLWindowCallbacks::DragNDropAction action, const std::string url ); + static std::vector<std::string> getDynamicFallbackFontList(); protected: @@ -128,7 +132,7 @@ protected: HCURSOR loadColorCursor(LPCTSTR name); BOOL isValid(); void moveWindow(const LLCoordScreen& position,const LLCoordScreen& size); - + LLSD getNativeKeyData(); // Changes display resolution. Returns true if successful BOOL setDisplayResolution(S32 width, S32 height, S32 bits, S32 refresh); @@ -205,6 +209,12 @@ protected: LLPreeditor *mPreeditor; + LLDragDropWin32* mDragDrop; + + U32 mKeyCharCode; + U32 mKeyScanCode; + U32 mKeyVirtualKey; + friend class LLWindowManager; }; diff --git a/indra/llxml/llxmlnode.cpp b/indra/llxml/llxmlnode.cpp index 07cc612a0a..e4f6482fae 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(), diff --git a/indra/llxml/llxmltree.cpp b/indra/llxml/llxmltree.cpp index 1bce5d29f7..bc2690deff 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) { } diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp index 4c050844f8..2ead5a4a57 100644 --- a/indra/llxuixml/llinitparam.cpp +++ b/indra/llxuixml/llinitparam.cpp @@ -84,8 +84,8 @@ namespace LLInitParam // BaseBlock // BaseBlock::BaseBlock() - : mLastChangedParam(0), - mChangeVersion(0) + : mChangeVersion(0), + mBlockDescriptor(NULL) {} BaseBlock::~BaseBlock() @@ -137,7 +137,7 @@ namespace LLInitParam } - bool BaseBlock::validateBlock(bool silent) const + bool BaseBlock::validateBlock(bool emit_errors) const { const BlockDescriptor& block_data = getBlockDescriptor(); for (BlockDescriptor::param_validation_list_t::const_iterator it = block_data.mValidationList.begin(); it != block_data.mValidationList.end(); ++it) @@ -145,7 +145,7 @@ namespace LLInitParam const Param* param = getParamFromHandle(it->first); if (!it->second(param)) { - if (!silent) + if (emit_errors) { llwarns << "Invalid param \"" << getParamName(block_data, param) << "\"" << llendl; } @@ -347,7 +347,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,9 +415,11 @@ namespace LLInitParam void BaseBlock::setLastChangedParam(const Param& last_param, bool user_provided) { - mLastChangedParam = getHandleFromParam(&last_param); + if (user_provided) + { mChangeVersion++; } + } const std::string& BaseBlock::getParamName(const BlockDescriptor& block_data, const Param* paramp) const { @@ -457,28 +458,7 @@ namespace LLInitParam // take all provided params from other and apply to self // NOTE: this requires that "other" is of the same derived type as this - bool BaseBlock::overwriteFromImpl(BlockDescriptor& block_data, const BaseBlock& other) - { - bool param_changed = false; - BlockDescriptor::all_params_list_t::const_iterator end_it = block_data.mAllParams.end(); - for (BlockDescriptor::all_params_list_t::const_iterator it = block_data.mAllParams.begin(); - it != end_it; - ++it) - { - const Param* other_paramp = other.getParamFromHandle(it->mParamHandle); - ParamDescriptor::merge_func_t merge_func = it->mMergeFunc; - if (merge_func) - { - Param* paramp = getParamFromHandle(it->mParamHandle); - param_changed |= merge_func(*paramp, *other_paramp, true); - mLastChangedParam = it->mParamHandle; - } - } - return param_changed; - } - - // take all provided params that are not already provided, and apply to self - bool BaseBlock::fillFromImpl(BlockDescriptor& block_data, const BaseBlock& other) + bool BaseBlock::merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite) { bool param_changed = false; BlockDescriptor::all_params_list_t::const_iterator end_it = block_data.mAllParams.end(); @@ -491,8 +471,7 @@ namespace LLInitParam if (merge_func) { Param* paramp = getParamFromHandle(it->mParamHandle); - param_changed |= merge_func(*paramp, *other_paramp, false); - mLastChangedParam = it->mParamHandle; + param_changed |= merge_func(*paramp, *other_paramp, overwrite); } } return param_changed; diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h index 7e1e4a3d21..c9c1d4af90 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) {} @@ -371,7 +372,8 @@ namespace LLInitParam public: BlockDescriptor() : mMaxParamOffset(0), - mInitializationState(UNINITIALIZED) + mInitializationState(UNINITIALIZED), + mCurrentBlockPtr(NULL) {} typedef enum e_initialization_state @@ -405,7 +407,7 @@ namespace LLInitParam class BaseBlock { public: - // "Multiple" constraint types + // "Multiple" constraint types, put here in root class to avoid ambiguity during use struct AnyAmount { static U32 minCount() { return 0; } @@ -450,7 +452,7 @@ namespace LLInitParam bool submitValue(const Parser::name_stack_t& name_stack, Parser& p, bool silent=false); param_handle_t getHandleFromParam(const Param* param) const; - bool validateBlock(bool silent = false) const; + bool validateBlock(bool emit_errors = true) const; Param* getParamFromHandle(const param_handle_t param_handle) { @@ -470,7 +472,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; } @@ -499,13 +500,9 @@ namespace LLInitParam // take all provided params from other and apply to self - bool overwriteFromImpl(BlockDescriptor& block_data, const BaseBlock& other); - - // take all provided params that are not already provided, and apply to self - bool fillFromImpl(BlockDescriptor& block_data, const BaseBlock& other); + bool merge(BlockDescriptor& block_data, const BaseBlock& other, bool overwrite); // can be updated in getters - mutable param_handle_t mLastChangedParam; mutable S32 mChangeVersion; BlockDescriptor* mBlockDescriptor; // most derived block descriptor @@ -805,7 +802,7 @@ namespace LLInitParam if (Param::getProvided() && mData.mValidatedVersion < T::getLastChangeVersion()) { // a sub-block is "provided" when it has been filled in enough to be valid - mData.mValidated = T::validateBlock(true); + mData.mValidated = T::validateBlock(false); mData.mValidatedVersion = T::getLastChangeVersion(); } return Param::getProvided() && mData.mValidated; @@ -1236,7 +1233,7 @@ namespace LLInitParam it != mValues.end(); ++it) { - if(it->validateBlock(true)) count++; + if(it->validateBlock(false)) count++; } return count; } @@ -1286,7 +1283,7 @@ namespace LLInitParam bool overwriteFrom(const self_t& other) { mCurChoice = other.mCurChoice; - return BaseBlock::overwriteFromImpl(blockDescriptor(), other); + return BaseBlock::merge(blockDescriptor(), other, true); } // take all provided params that are not already provided, and apply to self @@ -1413,13 +1410,13 @@ namespace LLInitParam // take all provided params from other and apply to self bool overwriteFrom(const self_t& other) { - return BaseBlock::overwriteFromImpl(blockDescriptor(), other); + return BaseBlock::merge(blockDescriptor(), other, true); } // take all provided params that are not already provided, and apply to self bool fillFrom(const self_t& other) { - return BaseBlock::fillFromImpl(blockDescriptor(), other); + return BaseBlock::merge(blockDescriptor(), other, false); } protected: Block() @@ -1710,7 +1707,7 @@ namespace LLInitParam // if cached value is stale, regenerate from params if (Param::getProvided() && mData.mLastParamVersion < BaseBlock::getLastChangeVersion()) { - if (block_t::validateBlock(true)) + if (block_t::validateBlock(false)) { static_cast<const DERIVED*>(this)->setValueFromBlock(); // clear stale keyword associated with old value @@ -1732,6 +1729,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(); @@ -1768,7 +1766,7 @@ namespace LLInitParam if (Param::getProvided() && (mData.mLastParamVersion < BaseBlock::getLastChangeVersion())) { // go ahead and issue warnings at this point if any param is invalid - if(block_t::validateBlock(false)) + if(block_t::validateBlock(true)) { static_cast<const DERIVED*>(this)->setValueFromBlock(); mData.clearKey(); @@ -1796,25 +1794,23 @@ namespace LLInitParam private: static bool mergeWith(Param& dst, const Param& src, bool overwrite) { - const self_t& src_param = static_cast<const self_t&>(src); + const self_t& src_typed_param = static_cast<const self_t&>(src); self_t& dst_typed_param = static_cast<self_t&>(dst); - if (src_param.isProvided() + if (src_typed_param.isProvided() && (overwrite || !dst_typed_param.isProvided())) { // assign individual parameters - if (overwrite) - { - dst_typed_param.BaseBlock::overwriteFromImpl(block_t::blockDescriptor(), src_param); - } - else - { - dst_typed_param.BaseBlock::fillFromImpl(block_t::blockDescriptor(), src_param); - } + dst_typed_param.BaseBlock::merge(block_t::blockDescriptor(), src_typed_param, overwrite); + // then copy actual value - dst_typed_param.mData.mValue = src_param.get(); + dst_typed_param.mData.mValue = src_typed_param.get(); dst_typed_param.mData.clearKey(); dst_typed_param.setProvided(true); + + // Propagate value back to block params since the value was updated during this merge. + // This will result in mData.mValue and the block params being in sync. + static_cast<DERIVED&>(dst_typed_param).setBlockFromValue(); return true; } return false; diff --git a/indra/llxuixml/lluicolor.cpp b/indra/llxuixml/lluicolor.cpp index 424d878a6b..0049ec055c 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 bb0f786326..0ef2f78b24 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 @@ public: 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/llxuixml/llxuiparser.cpp b/indra/llxuixml/llxuiparser.cpp index 17399865e5..dbc20a5a1e 100644 --- a/indra/llxuixml/llxuiparser.cpp +++ b/indra/llxuixml/llxuiparser.cpp @@ -324,33 +324,33 @@ void LLXUIXSDWriter::writeXSD(const std::string& type_name, const std::string& p // add includes for all possible children const std::type_info* type = *LLWidgetTypeRegistry::instance().getValue(type_name); const widget_registry_t* widget_registryp = LLChildRegistryRegistry::instance().getValue(type); - - // add include declarations for all valid children - for (widget_registry_t::Registrar::registry_map_t::const_iterator it = widget_registryp->currentRegistrar().beginItems(); - it != widget_registryp->currentRegistrar().endItems(); - ++it) - { - std::string widget_name = it->first; - if (widget_name == type_name) - { - continue; - } - LLXMLNodePtr nodep = new LLXMLNode("xs:include", false); - nodep->createChild("schemaLocation", true)->setStringValue(widget_name + ".xsd"); - - // add to front of schema - mSchemaNode->addChild(nodep, mSchemaNode); - } // add choices for valid children if (widget_registryp) { + // add include declarations for all valid children + for (widget_registry_t::Registrar::registry_map_t::const_iterator it = widget_registryp->currentRegistrar().beginItems(); + it != widget_registryp->currentRegistrar().endItems(); + ++it) + { + std::string widget_name = it->first; + if (widget_name == type_name) + { + continue; + } + LLXMLNodePtr nodep = new LLXMLNode("xs:include", false); + nodep->createChild("schemaLocation", true)->setStringValue(widget_name + ".xsd"); + + // add to front of schema + mSchemaNode->addChild(nodep, mSchemaNode); + } + for (widget_registry_t::Registrar::registry_map_t::const_iterator it = widget_registryp->currentRegistrar().beginItems(); it != widget_registryp->currentRegistrar().endItems(); ++it) { std::string widget_name = it->first; - //<xs:element name="widget_name" type="widget_name"> + //<xs:element name="widget_name" type="widget_name"> LLXMLNodePtr widget_node = mElementNode->createChild("xs:element", false); widget_node->createChild("name", true)->setStringValue(widget_name); widget_node->createChild("type", true)->setStringValue(widget_name); diff --git a/indra/lscript/lscript_compile/lscript_tree.cpp b/indra/lscript/lscript_compile/lscript_tree.cpp index 3b8bbbe805..3d19de193a 100644 --- a/indra/lscript/lscript_compile/lscript_tree.cpp +++ b/indra/lscript/lscript_compile/lscript_tree.cpp @@ -9805,6 +9805,9 @@ void LLScriptEventHandler::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCom break; case LSCP_EMIT_BYTE_CODE: { + llassert(mEventp); + if (!mEventp) return; + // order for event handler // set jump table value S32 jumpoffset; @@ -9818,13 +9821,11 @@ void LLScriptEventHandler::recurse(LLFILE *fp, S32 tabs, S32 tabsize, LSCRIPTCom chunk->addBytes(4); // null terminated event name and null terminated parameters - if (mEventp) - { - LLScriptByteCodeChunk *event = new LLScriptByteCodeChunk(FALSE); - mEventp->recurse(fp, tabs, tabsize, pass, ptype, prunearg, scope, type, basetype, count, event, heap, stacksize, entry, entrycount, NULL); - chunk->addBytes(event->mCodeChunk, event->mCurrentOffset); - delete event; - } + LLScriptByteCodeChunk *event = new LLScriptByteCodeChunk(FALSE); + mEventp->recurse(fp, tabs, tabsize, pass, ptype, prunearg, scope, type, basetype, count, event, heap, stacksize, entry, entrycount, NULL); + chunk->addBytes(event->mCodeChunk, event->mCurrentOffset); + delete event; + chunk->addBytes(1); // now we're at the first opcode @@ -10626,6 +10627,8 @@ LLScriptScript::LLScriptScript(LLScritpGlobalStorage *globals, } temp = temp->mNextp; } + + mClassName[0] = '\0'; } void LLScriptScript::setBytecodeDest(const char* dst_filename) diff --git a/indra/lscript/lscript_compile/lscript_tree.h b/indra/lscript/lscript_compile/lscript_tree.h index a667e1eb5b..7de9606dfc 100644 --- a/indra/lscript/lscript_compile/lscript_tree.h +++ b/indra/lscript/lscript_compile/lscript_tree.h @@ -1876,7 +1876,7 @@ class LLScriptStateChange : public LLScriptStatement { public: LLScriptStateChange(S32 line, S32 col, LLScriptIdentifier *identifier) - : LLScriptStatement(line, col, LSSMT_STATE_CHANGE), mIdentifier(identifier) + : LLScriptStatement(line, col, LSSMT_STATE_CHANGE), mIdentifier(identifier), mReturnType(LST_NULL) { } @@ -2210,7 +2210,7 @@ class LLScriptState : public LLScriptFilePosition { public: LLScriptState(S32 line, S32 col, LSCRIPTStateType type, LLScriptIdentifier *identifier, LLScriptEventHandler *event) - : LLScriptFilePosition(line, col), mType(type), mIdentifier(identifier), mEvent(event), mNextp(NULL) + : LLScriptFilePosition(line, col), mType(type), mIdentifier(identifier), mEvent(event), mNextp(NULL), mStateScope(NULL) { } diff --git a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp index dbc44c8334..e230fcc280 100644 --- a/indra/media_plugins/quicktime/media_plugin_quicktime.cpp +++ b/indra/media_plugins/quicktime/media_plugin_quicktime.cpp @@ -724,8 +724,8 @@ private: return false; // allocate some space and grab it - UInt8* item_data = new UInt8( size + 1 ); - memset( item_data, 0, ( size + 1 ) * sizeof( UInt8* ) ); + UInt8* item_data = new UInt8[ size + 1 ]; + memset( item_data, 0, ( size + 1 ) * sizeof( UInt8 ) ); result = QTMetaDataGetItemValue( media_data_ref, item, item_data, size, NULL ); if ( noErr != result ) { diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt index 5bccd589d8..9f66a77c64 100644 --- a/indra/media_plugins/webkit/CMakeLists.txt +++ b/indra/media_plugins/webkit/CMakeLists.txt @@ -9,14 +9,17 @@ include(LLPlugin) include(LLMath) include(LLRender) include(LLWindow) +include(UI) include(Linking) include(PluginAPI) include(MediaPluginBase) include(FindOpenGL) +include(PulseAudio) include(WebKitLibPlugin) include_directories( + ${PULSEAUDIO_INCLUDE_DIRS} ${LLPLUGIN_INCLUDE_DIRS} ${MEDIA_PLUGIN_BASE_INCLUDE_DIRS} ${LLCOMMON_INCLUDE_DIRS} @@ -33,19 +36,29 @@ set(media_plugin_webkit_SOURCE_FILES media_plugin_webkit.cpp ) -add_library(media_plugin_webkit - SHARED - ${media_plugin_webkit_SOURCE_FILES} -) - -target_link_libraries(media_plugin_webkit +set(media_plugin_webkit_LINK_LIBRARIES ${LLPLUGIN_LIBRARIES} ${MEDIA_PLUGIN_BASE_LIBRARIES} ${LLCOMMON_LIBRARIES} ${WEBKIT_PLUGIN_LIBRARIES} ${PLUGIN_API_WINDOWS_LIBRARIES} + ${PULSEAUDIO_LIBRARIES} ) +if (LINUX) + list(APPEND media_plugin_webkit_SOURCE_FILES linux_volume_catcher.cpp) + list(APPEND media_plugin_webkit_LINK_LIBRARIES + ${UI_LIBRARIES} # for glib/GTK + ) +endif (LINUX) + +add_library(media_plugin_webkit + SHARED + ${media_plugin_webkit_SOURCE_FILES} +) + +target_link_libraries(media_plugin_webkit ${media_plugin_webkit_LINK_LIBRARIES}) + add_dependencies(media_plugin_webkit ${LLPLUGIN_LIBRARIES} ${MEDIA_PLUGIN_BASE_LIBRARIES} @@ -79,4 +92,5 @@ if (DARWIN) DEPENDS media_plugin_webkit ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libllqtwebkit.dylib ) -endif (DARWIN)
\ No newline at end of file +endif (DARWIN) + diff --git a/indra/media_plugins/webkit/linux_volume_catcher.cpp b/indra/media_plugins/webkit/linux_volume_catcher.cpp new file mode 100644 index 0000000000..52ab766f7f --- /dev/null +++ b/indra/media_plugins/webkit/linux_volume_catcher.cpp @@ -0,0 +1,488 @@ +/** + * @file linux_volume_catcher.cpp + * @brief A Linux-specific, PulseAudio-specific hack to detect and volume-adjust new audio sources + * + * @cond + * $LicenseInfo:firstyear=2010&license=viewergpl$ + * + * Copyright (c) 2010, 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$ + * @endcond + */ + +/* + The high-level design is as follows: + 1) Connect to the PulseAudio daemon + 2) Watch for the creation of new audio players connecting to the daemon (this includes ALSA clients running on the PulseAudio emulation layer, such as Flash plugins) + 3) Examine any new audio player's PID to see if it belongs to our own process + 4) If so, tell PA to adjust the volume of that audio player ('sink input' in PA parlance) + 5) Keep a list of all living audio players that we care about, adjust the volumes of all of them when we get a new setVolume() call + */ + +#include "linden_common.h" + +#include "linux_volume_catcher.h" + + +#if LL_PULSEAUDIO_ENABLED + +extern "C" { +#include <glib.h> + +#include <pulse/introspect.h> +#include <pulse/context.h> +#include <pulse/subscribe.h> +#include <pulse/glib-mainloop.h> // There's no special reason why we want the *glib* PA mainloop, but the generic polling implementation seems broken. + +#include "apr_pools.h" +#include "apr_dso.h" +} + +//////////////////////////////////////////////////// + +#define DEBUGMSG(...) do {} while(0) +#define INFOMSG(...) do {} while(0) +#define WARNMSG(...) do {} while(0) + +#define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) RTN (*ll##PASYM)(__VA_ARGS__) = NULL +#include "linux_volume_catcher_pa_syms.inc" +#include "linux_volume_catcher_paglib_syms.inc" +#undef LL_PA_SYM + +static bool sSymsGrabbed = false; +static apr_pool_t *sSymPADSOMemoryPool = NULL; +static apr_dso_handle_t *sSymPADSOHandleG = NULL; + +bool grab_pa_syms(std::string pulse_dso_name) +{ + if (sSymsGrabbed) + { + // already have grabbed good syms + return true; + } + + bool sym_error = false; + bool rtn = false; + apr_status_t rv; + apr_dso_handle_t *sSymPADSOHandle = NULL; + +#define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) do{rv = apr_dso_sym((apr_dso_handle_sym_t*)&ll##PASYM, sSymPADSOHandle, #PASYM); if (rv != APR_SUCCESS) {INFOMSG("Failed to grab symbol: %s", #PASYM); if (REQUIRED) sym_error = true;} else DEBUGMSG("grabbed symbol: %s from %p", #PASYM, (void*)ll##PASYM);}while(0) + + //attempt to load the shared library + apr_pool_create(&sSymPADSOMemoryPool, NULL); + + if ( APR_SUCCESS == (rv = apr_dso_load(&sSymPADSOHandle, + pulse_dso_name.c_str(), + sSymPADSOMemoryPool) )) + { + INFOMSG("Found DSO: %s", pulse_dso_name.c_str()); + +#include "linux_volume_catcher_pa_syms.inc" +#include "linux_volume_catcher_paglib_syms.inc" + + if ( sSymPADSOHandle ) + { + sSymPADSOHandleG = sSymPADSOHandle; + sSymPADSOHandle = NULL; + } + + rtn = !sym_error; + } + else + { + INFOMSG("Couldn't load DSO: %s", pulse_dso_name.c_str()); + rtn = false; // failure + } + + if (sym_error) + { + WARNMSG("Failed to find necessary symbols in PulseAudio libraries."); + } +#undef LL_PA_SYM + + sSymsGrabbed = rtn; + return rtn; +} + + +void ungrab_pa_syms() +{ + // should be safe to call regardless of whether we've + // actually grabbed syms. + + if ( sSymPADSOHandleG ) + { + apr_dso_unload(sSymPADSOHandleG); + sSymPADSOHandleG = NULL; + } + + if ( sSymPADSOMemoryPool ) + { + apr_pool_destroy(sSymPADSOMemoryPool); + sSymPADSOMemoryPool = NULL; + } + + // NULL-out all of the symbols we'd grabbed +#define LL_PA_SYM(REQUIRED, PASYM, RTN, ...) do{ll##PASYM = NULL;}while(0) +#include "linux_volume_catcher_pa_syms.inc" +#include "linux_volume_catcher_paglib_syms.inc" +#undef LL_PA_SYM + + sSymsGrabbed = false; +} +//////////////////////////////////////////////////// + +// PulseAudio requires a chain of callbacks with C linkage +extern "C" { + void callback_discovered_sinkinput(pa_context *context, const pa_sink_input_info *i, int eol, void *userdata); + void callback_subscription_alert(pa_context *context, pa_subscription_event_type_t t, uint32_t index, void *userdata); + void callback_context_state(pa_context *context, void *userdata); +} + + +class LinuxVolumeCatcherImpl +{ +public: + LinuxVolumeCatcherImpl(); + ~LinuxVolumeCatcherImpl(); + + void setVolume(F32 volume); + void pump(void); + + // for internal use - can't be private because used from our C callbacks + + bool loadsyms(std::string pulse_dso_name); + void init(); + void cleanup(); + + void update_all_volumes(F32 volume); + void update_index_volume(U32 index, F32 volume); + void connected_okay(); + + std::set<U32> mSinkInputIndices; + std::map<U32,U32> mSinkInputNumChannels; + F32 mDesiredVolume; + pa_glib_mainloop *mMainloop; + pa_context *mPAContext; + bool mConnected; + bool mGotSyms; +}; + +LinuxVolumeCatcherImpl::LinuxVolumeCatcherImpl() + : mDesiredVolume(0.0f), + mMainloop(NULL), + mPAContext(NULL), + mConnected(false), + mGotSyms(false) +{ + init(); +} + +LinuxVolumeCatcherImpl::~LinuxVolumeCatcherImpl() +{ + cleanup(); +} + +bool LinuxVolumeCatcherImpl::loadsyms(std::string pulse_dso_name) +{ + return grab_pa_syms(pulse_dso_name); +} + +void LinuxVolumeCatcherImpl::init() +{ + // try to be as defensive as possible because PA's interface is a + // bit fragile and (for our purposes) we'd rather simply not function + // than crash + + // we cheat and rely upon libpulse-mainloop-glib.so.0 to pull-in + // libpulse.so.0 - this isn't a great assumption, and the two DSOs should + // probably be loaded separately. Our Linux DSO framework needs refactoring, + // we do this sort of thing a lot with practically identical logic... + mGotSyms = loadsyms("libpulse-mainloop-glib.so.0"); + if (!mGotSyms) return; + + mMainloop = llpa_glib_mainloop_new(g_main_context_default()); + if (mMainloop) + { + pa_mainloop_api *api = llpa_glib_mainloop_get_api(mMainloop); + if (api) + { + pa_proplist *proplist = llpa_proplist_new(); + if (proplist) + { + llpa_proplist_sets(proplist, PA_PROP_APPLICATION_ICON_NAME, "multimedia-player"); + llpa_proplist_sets(proplist, PA_PROP_APPLICATION_ID, "com.secondlife.viewer.mediaplugvoladjust"); + llpa_proplist_sets(proplist, PA_PROP_APPLICATION_NAME, "SL Plugin Volume Adjuster"); + llpa_proplist_sets(proplist, PA_PROP_APPLICATION_VERSION, "1"); + + // plain old pa_context_new() is broken! + mPAContext = llpa_context_new_with_proplist(api, NULL, proplist); + llpa_proplist_free(proplist); + } + } + } + + // Now we've set up a PA context and mainloop, try connecting the + // PA context to a PA daemon. + if (mPAContext) + { + llpa_context_set_state_callback(mPAContext, callback_context_state, this); + pa_context_flags_t cflags = (pa_context_flags)0; // maybe add PA_CONTEXT_NOAUTOSPAWN? + if (llpa_context_connect(mPAContext, NULL, cflags, NULL) >= 0) + { + // Okay! We haven't definitely connected, but we + // haven't definitely failed yet. + } + else + { + // Failed to connect to PA manager... we'll leave + // things like that. Perhaps we should try again later. + } + } +} + +void LinuxVolumeCatcherImpl::cleanup() +{ + mConnected = false; + + if (mGotSyms && mPAContext) + { + llpa_context_disconnect(mPAContext); + llpa_context_unref(mPAContext); + } + mPAContext = NULL; + + if (mGotSyms && mMainloop) + { + llpa_glib_mainloop_free(mMainloop); + } + mMainloop = NULL; +} + +void LinuxVolumeCatcherImpl::setVolume(F32 volume) +{ + mDesiredVolume = volume; + + if (!mGotSyms) return; + + if (mConnected && mPAContext) + { + update_all_volumes(mDesiredVolume); + } + + pump(); +} + +void LinuxVolumeCatcherImpl::pump() +{ + gboolean may_block = FALSE; + g_main_context_iteration(g_main_context_default(), may_block); +} + +void LinuxVolumeCatcherImpl::connected_okay() +{ + pa_operation *op; + + // fetch global list of existing sinkinputs + if ((op = llpa_context_get_sink_input_info_list(mPAContext, + callback_discovered_sinkinput, + this))) + { + llpa_operation_unref(op); + } + + // subscribe to future global sinkinput changes + llpa_context_set_subscribe_callback(mPAContext, + callback_subscription_alert, + this); + if ((op = llpa_context_subscribe(mPAContext, (pa_subscription_mask_t) + (PA_SUBSCRIPTION_MASK_SINK_INPUT), + NULL, NULL))) + { + llpa_operation_unref(op); + } +} + +void LinuxVolumeCatcherImpl::update_all_volumes(F32 volume) +{ + for (std::set<U32>::iterator it = mSinkInputIndices.begin(); + it != mSinkInputIndices.end(); ++it) + { + update_index_volume(*it, volume); + } +} + +void LinuxVolumeCatcherImpl::update_index_volume(U32 index, F32 volume) +{ + static pa_cvolume cvol; + llpa_cvolume_set(&cvol, mSinkInputNumChannels[index], + llpa_sw_volume_from_linear(volume)); + + pa_context *c = mPAContext; + uint32_t idx = index; + const pa_cvolume *cvolumep = &cvol; + pa_context_success_cb_t cb = NULL; // okay as null + void *userdata = NULL; // okay as null + + pa_operation *op; + if ((op = llpa_context_set_sink_input_volume(c, idx, cvolumep, cb, userdata))) + { + llpa_operation_unref(op); + } +} + + +void callback_discovered_sinkinput(pa_context *context, const pa_sink_input_info *sii, int eol, void *userdata) +{ + LinuxVolumeCatcherImpl *impl = dynamic_cast<LinuxVolumeCatcherImpl*>((LinuxVolumeCatcherImpl*)userdata); + llassert(impl); + + if (0 == eol) + { + pa_proplist *proplist = sii->proplist; + pid_t sinkpid = atoll(llpa_proplist_gets(proplist, PA_PROP_APPLICATION_PROCESS_ID)); + + if (sinkpid == getpid()) // does the discovered sinkinput belong to this process? + { + bool is_new = (impl->mSinkInputIndices.find(sii->index) == + impl->mSinkInputIndices.end()); + + impl->mSinkInputIndices.insert(sii->index); + impl->mSinkInputNumChannels[sii->index] = sii->channel_map.channels; + + if (is_new) + { + // new! + impl->update_index_volume(sii->index, impl->mDesiredVolume); + } + else + { + // seen it already, do nothing. + } + } + } +} + +void callback_subscription_alert(pa_context *context, pa_subscription_event_type_t t, uint32_t index, void *userdata) +{ + LinuxVolumeCatcherImpl *impl = dynamic_cast<LinuxVolumeCatcherImpl*>((LinuxVolumeCatcherImpl*)userdata); + llassert(impl); + + switch (t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) { + case PA_SUBSCRIPTION_EVENT_SINK_INPUT: + if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == + PA_SUBSCRIPTION_EVENT_REMOVE) + { + // forget this sinkinput, if we were caring about it + impl->mSinkInputIndices.erase(index); + impl->mSinkInputNumChannels.erase(index); + } + else if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == + PA_SUBSCRIPTION_EVENT_NEW) + { + // ask for more info about this new sinkinput + pa_operation *op; + if ((op = llpa_context_get_sink_input_info(impl->mPAContext, index, callback_discovered_sinkinput, impl))) + { + llpa_operation_unref(op); + } + } + else + { + // property change on this sinkinput - we don't care. + } + break; + + default:; + } +} + +void callback_context_state(pa_context *context, void *userdata) +{ + LinuxVolumeCatcherImpl *impl = dynamic_cast<LinuxVolumeCatcherImpl*>((LinuxVolumeCatcherImpl*)userdata); + llassert(impl); + + switch (llpa_context_get_state(context)) + { + case PA_CONTEXT_READY: + impl->mConnected = true; + impl->connected_okay(); + break; + case PA_CONTEXT_TERMINATED: + impl->mConnected = false; + break; + case PA_CONTEXT_FAILED: + impl->mConnected = false; + break; + default:; + } +} + +///////////////////////////////////////////////////// + +LinuxVolumeCatcher::LinuxVolumeCatcher() +{ + pimpl = new LinuxVolumeCatcherImpl(); +} + +LinuxVolumeCatcher::~LinuxVolumeCatcher() +{ + delete pimpl; + pimpl = NULL; +} + +void LinuxVolumeCatcher::setVolume(F32 volume) +{ + llassert(pimpl); + pimpl->setVolume(volume); +} + +void LinuxVolumeCatcher::pump() +{ + llassert(pimpl); + pimpl->pump(); +} + +#else // !LL_PULSEAUDIO_ENABLED + +// stub. + +LinuxVolumeCatcher::LinuxVolumeCatcher() +{ + pimpl = NULL; +} + +LinuxVolumeCatcher::~LinuxVolumeCatcher() +{ +} + +void LinuxVolumeCatcher::setVolume(F32 volume) +{ +} + +void LinuxVolumeCatcher::pump() +{ +} + +#endif // LL_PULSEAUDIO_ENABLED diff --git a/indra/media_plugins/webkit/linux_volume_catcher_pa_syms.inc b/indra/media_plugins/webkit/linux_volume_catcher_pa_syms.inc new file mode 100644 index 0000000000..d806b48428 --- /dev/null +++ b/indra/media_plugins/webkit/linux_volume_catcher_pa_syms.inc @@ -0,0 +1,21 @@ +// required symbols to grab +LL_PA_SYM(true, pa_context_connect, int, pa_context *c, const char *server, pa_context_flags_t flags, const pa_spawn_api *api); +LL_PA_SYM(true, pa_context_disconnect, void, pa_context *c); +LL_PA_SYM(true, pa_context_get_sink_input_info, pa_operation*, pa_context *c, uint32_t idx, pa_sink_input_info_cb_t cb, void *userdata); +LL_PA_SYM(true, pa_context_get_sink_input_info_list, pa_operation*, pa_context *c, pa_sink_input_info_cb_t cb, void *userdata); +LL_PA_SYM(true, pa_context_get_state, pa_context_state_t, pa_context *c); +LL_PA_SYM(true, pa_context_new_with_proplist, pa_context*, pa_mainloop_api *mainloop, const char *name, pa_proplist *proplist); +LL_PA_SYM(true, pa_context_set_sink_input_volume, pa_operation*, pa_context *c, uint32_t idx, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata); +LL_PA_SYM(true, pa_context_set_state_callback, void, pa_context *c, pa_context_notify_cb_t cb, void *userdata); +LL_PA_SYM(true, pa_context_set_subscribe_callback, void, pa_context *c, pa_context_subscribe_cb_t cb, void *userdata); +LL_PA_SYM(true, pa_context_subscribe, pa_operation*, pa_context *c, pa_subscription_mask_t m, pa_context_success_cb_t cb, void *userdata); +LL_PA_SYM(true, pa_context_unref, void, pa_context *c); +LL_PA_SYM(true, pa_cvolume_set, pa_cvolume*, pa_cvolume *a, unsigned channels, pa_volume_t v); +LL_PA_SYM(true, pa_operation_unref, void, pa_operation *o); +LL_PA_SYM(true, pa_proplist_free, void, pa_proplist* p); +LL_PA_SYM(true, pa_proplist_gets, const char*, pa_proplist *p, const char *key); +LL_PA_SYM(true, pa_proplist_new, pa_proplist*, void); +LL_PA_SYM(true, pa_proplist_sets, int, pa_proplist *p, const char *key, const char *value); +LL_PA_SYM(true, pa_sw_volume_from_linear, pa_volume_t, double v); + +// optional symbols to grab diff --git a/indra/media_plugins/webkit/linux_volume_catcher_paglib_syms.inc b/indra/media_plugins/webkit/linux_volume_catcher_paglib_syms.inc new file mode 100644 index 0000000000..abf628c96c --- /dev/null +++ b/indra/media_plugins/webkit/linux_volume_catcher_paglib_syms.inc @@ -0,0 +1,6 @@ +// required symbols to grab +LL_PA_SYM(true, pa_glib_mainloop_free, void, pa_glib_mainloop* g); +LL_PA_SYM(true, pa_glib_mainloop_get_api, pa_mainloop_api*, pa_glib_mainloop* g); +LL_PA_SYM(true, pa_glib_mainloop_new, pa_glib_mainloop *, GMainContext *c); + +// optional symbols to grab diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp index 4b6da552cf..c7aba04492 100644 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -43,11 +43,15 @@ #include "llpluginmessageclasses.h" #include "media_plugin_base.h" +#if LL_LINUX +# include "linux_volume_catcher.h" +#endif // LL_LINUX + #if LL_WINDOWS -#include <direct.h> +# include <direct.h> #else -#include <unistd.h> -#include <stdlib.h> +# include <unistd.h> +# include <stdlib.h> #endif #if LL_WINDOWS @@ -84,6 +88,7 @@ private: INIT_STATE_NAVIGATING, // Browser instance has been set up and initial navigate to about:blank has been issued INIT_STATE_NAVIGATE_COMPLETE, // initial navigate to about:blank has completed INIT_STATE_WAIT_REDRAW, // First real navigate begin has been received, waiting for page changed event to start handling redraws + INIT_STATE_WAIT_COMPLETE, // Waiting for first real navigate complete event INIT_STATE_RUNNING // All initialization gymnastics are complete. }; int mBrowserWindowId; @@ -97,7 +102,14 @@ private: int mLastMouseX; int mLastMouseY; bool mFirstFocus; + F32 mBackgroundR; + F32 mBackgroundG; + F32 mBackgroundB; +#if LL_LINUX + LinuxVolumeCatcher mLinuxVolumeCatcher; +#endif // LL_LINUX + void setInitState(int state) { // std::cerr << "changing init state to " << state << std::endl; @@ -110,6 +122,10 @@ private: { LLQtWebKit::getInstance()->pump( milliseconds ); +#if LL_LINUX + mLinuxVolumeCatcher.pump(); +#endif // LL_LINUX + checkEditState(); if(mInitState == INIT_STATE_NAVIGATE_COMPLETE) @@ -122,7 +138,7 @@ private: } } - if ( (mInitState == INIT_STATE_RUNNING) && mNeedsUpdate ) + if ( (mInitState > INIT_STATE_WAIT_REDRAW) && mNeedsUpdate ) { const unsigned char* browser_pixels = LLQtWebKit::getInstance()->grabBrowserWindow( mBrowserWindowId ); @@ -171,6 +187,15 @@ private: } std::string application_dir = std::string( cwd ); +#if LL_DARWIN + // When running under the Xcode debugger, there's a setting called "Break on Debugger()/DebugStr()" which defaults to being turned on. + // This causes the environment variable USERBREAK to be set to 1, which causes these legacy calls to break into the debugger. + // This wouldn't cause any problems except for the fact that the current release version of the Flash plugin has a call to Debugger() in it + // which gets hit when the plugin is probed by webkit. + // Unsetting the environment variable here works around this issue. + unsetenv("USERBREAK"); +#endif + #if LL_WINDOWS //*NOTE:Mani - On windows, at least, the component path is the // location of this dll's image file. @@ -236,8 +261,9 @@ private: // don't flip bitmap LLQtWebKit::getInstance()->flipWindow( mBrowserWindowId, true ); - // set background color to be black - mostly for initial login page - LLQtWebKit::getInstance()->setBackgroundColor( mBrowserWindowId, 0x00, 0x00, 0x00 ); + // set background color + // convert background color channels from [0.0, 1.0] to [0, 255]; + LLQtWebKit::getInstance()->setBackgroundColor( mBrowserWindowId, int(mBackgroundR * 255.0f), int(mBackgroundG * 255.0f), int(mBackgroundB * 255.0f) ); // Set state _before_ starting the navigate, since onNavigateBegin might get called before this call returns. setInitState(INIT_STATE_NAVIGATING); @@ -245,7 +271,21 @@ private: // Don't do this here -- it causes the dreaded "white flash" when loading a browser instance. // FIXME: Re-added this because navigating to a "page" initializes things correctly - especially // for the HTTP AUTH dialog issues (DEV-41731). Will fix at a later date. - LLQtWebKit::getInstance()->navigateTo( mBrowserWindowId, "about:blank" ); + // Build a data URL like this: "data:text/html,%3Chtml%3E%3Cbody bgcolor=%22#RRGGBB%22%3E%3C/body%3E%3C/html%3E" + // where RRGGBB is the background color in HTML style + std::stringstream url; + + url << "data:text/html,%3Chtml%3E%3Cbody%20bgcolor=%22#"; + // convert background color channels from [0.0, 1.0] to [0, 255]; + url << std::setfill('0') << std::setw(2) << std::hex << int(mBackgroundR * 255.0f); + url << std::setfill('0') << std::setw(2) << std::hex << int(mBackgroundG * 255.0f); + url << std::setfill('0') << std::setw(2) << std::hex << int(mBackgroundB * 255.0f); + url << "%22%3E%3C/body%3E%3C/html%3E"; + + lldebugs << "data url is: " << url.str() << llendl; + + LLQtWebKit::getInstance()->navigateTo( mBrowserWindowId, url.str() ); +// LLQtWebKit::getInstance()->navigateTo( mBrowserWindowId, "about:blank" ); return true; }; @@ -253,6 +293,7 @@ private: return false; }; + void setVolume(F32 vol); //////////////////////////////////////////////////////////////////////////////// // virtual @@ -295,7 +336,7 @@ private: { if(mInitState == INIT_STATE_WAIT_REDRAW) { - setInitState(INIT_STATE_RUNNING); + setInitState(INIT_STATE_WAIT_COMPLETE); } // flag that an update is required @@ -317,7 +358,9 @@ private: if(mInitState == INIT_STATE_NAVIGATE_COMPLETE) { - setInitState(INIT_STATE_WAIT_REDRAW); + // Skip the WAIT_REDRAW state now -- with the right background color set, it should no longer be necessary. +// setInitState(INIT_STATE_WAIT_REDRAW); + setInitState(INIT_STATE_WAIT_COMPLETE); } } @@ -328,6 +371,14 @@ private: { if(mInitState >= INIT_STATE_NAVIGATE_COMPLETE) { + if(mInitState < INIT_STATE_RUNNING) + { + setInitState(INIT_STATE_RUNNING); + + // Clear the history, so the "back" button doesn't take you back to "about:blank". + LLQtWebKit::getInstance()->clearHistory(mBrowserWindowId); + } + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "navigate_complete"); message.setValue("uri", event.getEventUri()); message.setValueS32("result_code", event.getIntValue()); @@ -400,6 +451,7 @@ private: LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "click_href"); message.setValue("uri", event.getStringValue()); message.setValue("target", event.getStringValue2()); + message.setValueU32("target_type", event.getLinkType()); sendMessage(message); } @@ -431,92 +483,96 @@ private: return (LLQtWebKit::EKeyboardModifier)result; } - //////////////////////////////////////////////////////////////////////////////// // - void keyEvent(LLQtWebKit::EKeyEvent key_event, int key, LLQtWebKit::EKeyboardModifier modifiers) + void deserializeKeyboardData( LLSD native_key_data, uint32_t& native_scan_code, uint32_t& native_virtual_key, uint32_t& native_modifiers ) { - int llqt_key; + native_scan_code = 0; + native_virtual_key = 0; + native_modifiers = 0; + if( native_key_data.isMap() ) + { +#if LL_DARWIN + native_scan_code = (uint32_t)(native_key_data["char_code"].asInteger()); + native_virtual_key = (uint32_t)(native_key_data["key_code"].asInteger()); + native_modifiers = (uint32_t)(native_key_data["modifiers"].asInteger()); +#elif LL_WINDOWS + native_scan_code = (uint32_t)(native_key_data["scan_code"].asInteger()); + native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger()); + // TODO: I don't think we need to do anything with native modifiers here -- please verify +#elif LL_LINUX + native_scan_code = (uint32_t)(native_key_data["scan_code"].asInteger()); + native_virtual_key = (uint32_t)(native_key_data["virtual_key"].asInteger()); + native_modifiers = (uint32_t)(native_key_data["modifiers"].asInteger()); +#else + // Add other platforms here as needed +#endif + }; + }; + + //////////////////////////////////////////////////////////////////////////////// + // + void keyEvent(LLQtWebKit::EKeyEvent key_event, int key, LLQtWebKit::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap()) + { // The incoming values for 'key' will be the ones from indra_constants.h - // the outgoing values are the ones from llqtwebkit.h + std::string utf8_text; + if(key < KEY_SPECIAL) + { + // Low-ascii characters need to get passed through. + utf8_text = (char)key; + } + + // Any special-case handling we want to do for particular keys... switch((KEY)key) { - // This is the list that the llqtwebkit implementation actually maps into Qt keys. -// case KEY_XXX: llqt_key = LL_DOM_VK_CANCEL; break; -// case KEY_XXX: llqt_key = LL_DOM_VK_HELP; break; - case KEY_BACKSPACE: llqt_key = LL_DOM_VK_BACK_SPACE; break; - case KEY_TAB: llqt_key = LL_DOM_VK_TAB; break; -// case KEY_XXX: llqt_key = LL_DOM_VK_CLEAR; break; - case KEY_RETURN: llqt_key = LL_DOM_VK_RETURN; break; - case KEY_PAD_RETURN: llqt_key = LL_DOM_VK_ENTER; break; - case KEY_SHIFT: llqt_key = LL_DOM_VK_SHIFT; break; - case KEY_CONTROL: llqt_key = LL_DOM_VK_CONTROL; break; - case KEY_ALT: llqt_key = LL_DOM_VK_ALT; break; -// case KEY_XXX: llqt_key = LL_DOM_VK_PAUSE; break; - case KEY_CAPSLOCK: llqt_key = LL_DOM_VK_CAPS_LOCK; break; - case KEY_ESCAPE: llqt_key = LL_DOM_VK_ESCAPE; break; - case KEY_PAGE_UP: llqt_key = LL_DOM_VK_PAGE_UP; break; - case KEY_PAGE_DOWN: llqt_key = LL_DOM_VK_PAGE_DOWN; break; - case KEY_END: llqt_key = LL_DOM_VK_END; break; - case KEY_HOME: llqt_key = LL_DOM_VK_HOME; break; - case KEY_LEFT: llqt_key = LL_DOM_VK_LEFT; break; - case KEY_UP: llqt_key = LL_DOM_VK_UP; break; - case KEY_RIGHT: llqt_key = LL_DOM_VK_RIGHT; break; - case KEY_DOWN: llqt_key = LL_DOM_VK_DOWN; break; -// case KEY_XXX: llqt_key = LL_DOM_VK_PRINTSCREEN; break; - case KEY_INSERT: llqt_key = LL_DOM_VK_INSERT; break; - case KEY_DELETE: llqt_key = LL_DOM_VK_DELETE; break; -// case KEY_XXX: llqt_key = LL_DOM_VK_CONTEXT_MENU; break; + // ASCII codes for some standard keys + case LLQtWebKit::KEY_BACKSPACE: utf8_text = (char)8; break; + case LLQtWebKit::KEY_TAB: utf8_text = (char)9; break; + case LLQtWebKit::KEY_RETURN: utf8_text = (char)13; break; + case LLQtWebKit::KEY_PAD_RETURN: utf8_text = (char)13; break; + case LLQtWebKit::KEY_ESCAPE: utf8_text = (char)27; break; - default: - if(key < KEY_SPECIAL) - { - // Pass the incoming key through -- it should be regular ASCII, which should be correct for webkit. - llqt_key = key; - } - else - { - // Don't pass through untranslated special keys -- they'll be all wrong. - llqt_key = 0; - } + default: break; } -// std::cerr << "keypress, original code = 0x" << std::hex << key << ", converted code = 0x" << std::hex << llqt_key << std::dec << std::endl; +// std::cerr << "key event " << (int)key_event << ", native_key_data = " << native_key_data << std::endl; - if(llqt_key != 0) - { - LLQtWebKit::getInstance()->keyEvent( mBrowserWindowId, key_event, llqt_key, modifiers); - } + uint32_t native_scan_code = 0; + uint32_t native_virtual_key = 0; + uint32_t native_modifiers = 0; + deserializeKeyboardData( native_key_data, native_scan_code, native_virtual_key, native_modifiers ); + + LLQtWebKit::getInstance()->keyboardEvent( mBrowserWindowId, key_event, (uint32_t)key, utf8_text.c_str(), modifiers, native_scan_code, native_virtual_key, native_modifiers); checkEditState(); }; //////////////////////////////////////////////////////////////////////////////// // - void unicodeInput( const std::string &utf8str, LLQtWebKit::EKeyboardModifier modifiers) - { - LLWString wstr = utf8str_to_wstring(utf8str); + void unicodeInput( const std::string &utf8str, LLQtWebKit::EKeyboardModifier modifiers, LLSD native_key_data = LLSD::emptyMap()) + { + uint32_t key = LLQtWebKit::KEY_NONE; - unsigned int i; - for(i=0; i < wstr.size(); i++) +// std::cerr << "unicode input, native_key_data = " << native_key_data << std::endl; + + if(utf8str.size() == 1) { -// std::cerr << "unicode input, code = 0x" << std::hex << (unsigned long)(wstr[i]) << std::dec << std::endl; - - if(wstr[i] == 32) - { - // For some reason, the webkit plugin really wants the space bar to come in through the key-event path, not the unicode path. - LLQtWebKit::getInstance()->keyEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_DOWN, 32, modifiers); - LLQtWebKit::getInstance()->keyEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_UP, 32, modifiers); - } - else - { - LLQtWebKit::getInstance()->unicodeInput(mBrowserWindowId, wstr[i], modifiers); - } + // The only way a utf8 string can be one byte long is if it's actually a single 7-bit ascii character. + // In this case, use it as the key value. + key = utf8str[0]; } + uint32_t native_scan_code = 0; + uint32_t native_virtual_key = 0; + uint32_t native_modifiers = 0; + deserializeKeyboardData( native_key_data, native_scan_code, native_virtual_key, native_modifiers ); + + LLQtWebKit::getInstance()->keyboardEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_DOWN, (uint32_t)key, utf8str.c_str(), modifiers, native_scan_code, native_virtual_key, native_modifiers); + LLQtWebKit::getInstance()->keyboardEvent( mBrowserWindowId, LLQtWebKit::KE_KEY_UP, (uint32_t)key, utf8str.c_str(), modifiers, native_scan_code, native_virtual_key, native_modifiers); + checkEditState(); }; @@ -569,6 +625,9 @@ MediaPluginWebKit::MediaPluginWebKit(LLPluginInstance::sendMessageFunction host_ mLastMouseX = 0; mLastMouseY = 0; mFirstFocus = true; + mBackgroundR = 0.0f; + mBackgroundG = 0.0f; + mBackgroundB = 0.0f; } MediaPluginWebKit::~MediaPluginWebKit() @@ -686,6 +745,14 @@ void MediaPluginWebKit::receiveMessage(const char *message_string) // std::cerr << "MediaPluginWebKit::receiveMessage: unknown base message: " << message_name << std::endl; } } + else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_TIME) + { + if(message_name == "set_volume") + { + F32 volume = message_in.getValueReal("volume"); + setVolume(volume); + } + } else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA) { if(message_name == "size_change") @@ -695,7 +762,11 @@ void MediaPluginWebKit::receiveMessage(const char *message_string) S32 height = message_in.getValueS32("height"); S32 texture_width = message_in.getValueS32("texture_width"); S32 texture_height = message_in.getValueS32("texture_height"); - + mBackgroundR = message_in.getValueReal("background_r"); + mBackgroundG = message_in.getValueReal("background_g"); + mBackgroundB = message_in.getValueReal("background_b"); +// mBackgroundA = message_in.setValueReal("background_a"); // Ignore any alpha + if(!name.empty()) { // Find the shared memory region with this name @@ -809,6 +880,7 @@ void MediaPluginWebKit::receiveMessage(const char *message_string) std::string event = message_in.getValue("event"); S32 key = message_in.getValueS32("key"); std::string modifiers = message_in.getValue("modifiers"); + LLSD native_key_data = message_in.getValueLLSD("native_key_data"); // Treat unknown events as key-up for safety. LLQtWebKit::EKeyEvent key_event = LLQtWebKit::KE_KEY_UP; @@ -821,14 +893,15 @@ void MediaPluginWebKit::receiveMessage(const char *message_string) key_event = LLQtWebKit::KE_KEY_REPEAT; } - keyEvent(key_event, key, decodeModifiers(modifiers)); + keyEvent(key_event, key, decodeModifiers(modifiers), native_key_data); } else if(message_name == "text_event") { std::string text = message_in.getValue("text"); std::string modifiers = message_in.getValue("modifiers"); + LLSD native_key_data = message_in.getValueLLSD("native_key_data"); - unicodeInput(text, decodeModifiers(modifiers)); + unicodeInput(text, decodeModifiers(modifiers), native_key_data); } if(message_name == "edit_cut") { @@ -946,6 +1019,13 @@ void MediaPluginWebKit::receiveMessage(const char *message_string) } } +void MediaPluginWebKit::setVolume(F32 volume) +{ +#if LL_LINUX + mLinuxVolumeCatcher.setVolume(volume); +#endif // LL_LINUX +} + int init_media_plugin(LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data, LLPluginInstance::sendMessageFunction *plugin_send_func, void **plugin_user_data) { MediaPluginWebKit *self = new MediaPluginWebKit(host_send_func, host_user_data); diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 648e582e94..14eb75e457 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) @@ -63,8 +64,6 @@ include_directories( ) set(viewer_SOURCE_FILES - llaccordionctrl.cpp - llaccordionctrltab.cpp llagent.cpp llagentaccess.cpp llagentdata.cpp @@ -157,16 +156,13 @@ set(viewer_SOURCE_FILES llfloaterbuycontents.cpp llfloaterbuycurrency.cpp llfloaterbuyland.cpp - llfloatercall.cpp llfloatercamera.cpp - llfloaterchat.cpp - llfloaterchatterbox.cpp llfloatercolorpicker.cpp llfloatercustomize.cpp llfloaterdaycycle.cpp llfloaterenvsettings.cpp + llfloaterevent.cpp llfloaterfonttest.cpp - llfloaterfriends.cpp llfloatergesture.cpp llfloatergodtools.cpp llfloatergroupinvite.cpp @@ -187,7 +183,6 @@ set(viewer_SOURCE_FILES llfloatermediasettings.cpp llfloatermemleak.cpp llfloaternamedesc.cpp - llfloaternearbymedia.cpp llfloaternotificationsconsole.cpp llfloateropenobject.cpp llfloaterparcel.cpp @@ -215,10 +210,10 @@ set(viewer_SOURCE_FILES llfloaterurldisplay.cpp llfloaterurlentry.cpp llfloatervoicedevicesettings.cpp - llfloatervolumepulldown.cpp llfloaterwater.cpp llfloaterwhitelistentry.cpp llfloaterwindlight.cpp + llfloaterwindowsize.cpp llfloaterworldmap.cpp llfolderview.cpp llfolderviewitem.cpp @@ -245,13 +240,13 @@ set(viewer_SOURCE_FILES llimfloater.cpp llimfloatercontainer.cpp llimhandler.cpp - llimpanel.cpp llimview.cpp llinspect.cpp llinspectavatar.cpp llinspectgroup.cpp llinspectobject.cpp llinspectremoteobject.cpp + llinspecttoast.cpp llinventorybridge.cpp llinventoryclipboard.cpp llinventoryfilter.cpp @@ -276,7 +271,6 @@ set(viewer_SOURCE_FILES llmaniptranslate.cpp llmediactrl.cpp llmediadataclient.cpp - llmediaremotectrl.cpp llmemoryview.cpp llmenucommands.cpp llmetricperformancetester.cpp @@ -300,15 +294,12 @@ set(viewer_SOURCE_FILES llnotificationscripthandler.cpp llnotificationtiphandler.cpp lloutputmonitorctrl.cpp - lloverlaybar.cpp llpanelavatar.cpp - llpanelavatarrow.cpp llpanelavatartag.cpp llpanelblockedlist.cpp llpanelclassified.cpp llpanelcontents.cpp llpaneleditwearable.cpp - llpanelevent.cpp llpanelface.cpp llpanelgroup.cpp llpanelgroupgeneral.cpp @@ -331,6 +322,7 @@ set(viewer_SOURCE_FILES llpanelmediasettingspermissions.cpp llpanelmediasettingssecurity.cpp llpanelme.cpp + llpanelnearbymedia.cpp llpanelobject.cpp llpanelobjectinventory.cpp llpaneloutfitsinventory.cpp @@ -347,9 +339,9 @@ set(viewer_SOURCE_FILES llpanelprimmediacontrols.cpp llpanelprofile.cpp llpanelprofileview.cpp - llpanelshower.cpp llpanelteleporthistory.cpp llpanelvolume.cpp + llpanelvolumepulldown.cpp llparcelselection.cpp llparticipantlist.cpp llpatchvertexarray.cpp @@ -388,6 +380,7 @@ set(viewer_SOURCE_FILES llspatialpartition.cpp llspeakbutton.cpp llspeakers.cpp + llspeakingindicatormanager.cpp llsplitbutton.cpp llsprite.cpp llstartup.cpp @@ -421,7 +414,6 @@ set(viewer_SOURCE_FILES lltoastnotifypanel.cpp lltoastpanel.cpp lltool.cpp - lltoolbar.cpp lltoolbrush.cpp lltoolcomp.cpp lltooldraganddrop.cpp @@ -516,8 +508,6 @@ set(viewer_SOURCE_FILES llvoground.cpp llvoicechannel.cpp llvoiceclient.cpp - llvoicecontrolpanel.cpp - llvoiceremotectrl.cpp llvoicevisualizer.cpp llvoinventorylistener.cpp llvopartgroup.cpp @@ -571,8 +561,6 @@ endif (LINUX) set(viewer_HEADER_FILES CMakeLists.txt ViewerInstall.cmake - llaccordionctrl.h - llaccordionctrltab.h llagent.h llagentaccess.h llagentdata.h @@ -668,16 +656,13 @@ set(viewer_HEADER_FILES llfloaterbuycontents.h llfloaterbuycurrency.h llfloaterbuyland.h - llfloatercall.h llfloatercamera.h - llfloaterchat.h - llfloaterchatterbox.h llfloatercolorpicker.h llfloatercustomize.h llfloaterdaycycle.h llfloaterenvsettings.h + llfloaterevent.h llfloaterfonttest.h - llfloaterfriends.h llfloatergesture.h llfloatergodtools.h llfloatergroupinvite.h @@ -698,7 +683,6 @@ set(viewer_HEADER_FILES llfloatermediasettings.h llfloatermemleak.h llfloaternamedesc.h - llfloaternearbymedia.h llfloaternotificationsconsole.h llfloateropenobject.h llfloaterparcel.h @@ -729,6 +713,7 @@ set(viewer_HEADER_FILES llfloaterwater.h llfloaterwhitelistentry.h llfloaterwindlight.h + llfloaterwindowsize.h llfloaterworldmap.h llfolderview.h llfoldervieweventlistener.h @@ -754,13 +739,13 @@ set(viewer_HEADER_FILES llhudview.h llimfloater.h llimfloatercontainer.h - llimpanel.h llimview.h llinspect.h llinspectavatar.h llinspectgroup.h llinspectobject.h llinspectremoteobject.h + llinspecttoast.h llinventorybridge.h llinventoryclipboard.h llinventoryfilter.h @@ -786,7 +771,6 @@ set(viewer_HEADER_FILES llmaniptranslate.h llmediactrl.h llmediadataclient.h - llmediaremotectrl.h llmemoryview.h llmenucommands.h llmetricperformancetester.h @@ -805,15 +789,12 @@ set(viewer_HEADER_FILES llnotificationhandler.h llnotificationmanager.h lloutputmonitorctrl.h - lloverlaybar.h llpanelavatar.h - llpanelavatarrow.h llpanelavatartag.h llpanelblockedlist.h llpanelclassified.h llpanelcontents.h llpaneleditwearable.h - llpanelevent.h llpanelface.h llpanelgroup.h llpanelgroupgeneral.h @@ -836,6 +817,7 @@ set(viewer_HEADER_FILES llpanelmediasettingspermissions.h llpanelmediasettingssecurity.h llpanelme.h + llpanelnearbymedia.h llpanelobject.h llpanelobjectinventory.h llpaneloutfitsinventory.h @@ -852,9 +834,9 @@ set(viewer_HEADER_FILES llpanelprimmediacontrols.h llpanelprofile.h llpanelprofileview.h - llpanelshower.h llpanelteleporthistory.h llpanelvolume.h + llpanelvolumepulldown.h llparcelselection.h llparticipantlist.h llpatchvertexarray.h @@ -895,6 +877,7 @@ set(viewer_HEADER_FILES llspatialpartition.h llspeakbutton.h llspeakers.h + llspeakingindicatormanager.h llsplitbutton.h llsprite.h llstartup.h @@ -929,7 +912,6 @@ set(viewer_HEADER_FILES lltoastnotifypanel.h lltoastpanel.h lltool.h - lltoolbar.h lltoolbrush.h lltoolcomp.h lltooldraganddrop.h @@ -1022,8 +1004,6 @@ set(viewer_HEADER_FILES llvoground.h llvoicechannel.h llvoiceclient.h - llvoicecontrolpanel.h - llvoiceremotectrl.h llvoicevisualizer.h llvoinventorylistener.h llvopartgroup.h @@ -1071,11 +1051,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. @@ -1410,11 +1392,11 @@ if (WINDOWS) # Note the need to specify multiple names explicitly. set(GOOGLE_PERF_TOOLS_SOURCE ${SHARED_LIB_STAGING_DIR}/Release/libtcmalloc_minimal.dll - ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/libtcmalloc_minimal.dll - ${SHARED_LIB_STAGING_DIR}/Debug/libtcmalloc_minimal-debug.dll - ) + ${SHARED_LIB_STAGING_DIR}/RelWithDebInfo/libtcmalloc_minimal.dll + ${SHARED_LIB_STAGING_DIR}/Debug/libtcmalloc_minimal-debug.dll + ) endif(USE_GOOGLE_PERFTOOLS) - + set(COPY_INPUT_DEPENDECIES # The following commented dependencies are determined at variably at build time. Can't do this here. @@ -1503,15 +1485,16 @@ if (WINDOWS) --actions=copy --artwork=${ARTWORK_DIR} --build=${CMAKE_CURRENT_BINARY_DIR} + --buildtype=${CMAKE_BUILD_TYPE} --configuration=${CMAKE_CFG_INTDIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} --grid=${GRID} --source=${CMAKE_CURRENT_SOURCE_DIR} - --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/copy_touched.bat + --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/copy_touched.bat DEPENDS - ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py - stage_third_party_libs - ${COPY_INPUT_DEPENDECIES} + ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py + stage_third_party_libs + ${COPY_INPUT_DEPENDECIES} COMMENT "Performing viewer_manifest copy" ) @@ -1573,6 +1556,7 @@ if (WINDOWS) ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py --artwork=${ARTWORK_DIR} --build=${CMAKE_CURRENT_BINARY_DIR} + --buildtype=${CMAKE_BUILD_TYPE} --channel=${VIEWER_CHANNEL} --configuration=${CMAKE_CFG_INTDIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR} @@ -1583,7 +1567,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) @@ -1637,13 +1624,6 @@ set(ARTWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH if (LINUX) - add_custom_command( - OUTPUT secondlife-stripped - COMMAND strip - ARGS --strip-debug -o secondlife-stripped ${VIEWER_BINARY_NAME} - DEPENDS ${VIEWER_BINARY_NAME} - ) - set(product SecondLife-${ARCH}-${viewer_VERSION}) add_custom_command( @@ -1654,6 +1634,7 @@ if (LINUX) --arch=${ARCH} --artwork=${ARTWORK_DIR} --build=${CMAKE_CURRENT_BINARY_DIR} + --buildtype=${CMAKE_BUILD_TYPE} --channel=${VIEWER_CHANNEL} --configuration=${CMAKE_CFG_INTDIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/packaged @@ -1662,15 +1643,15 @@ if (LINUX) --login_channel=${VIEWER_LOGIN_CHANNEL} --source=${CMAKE_CURRENT_SOURCE_DIR} --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched - DEPENDS secondlife-stripped ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py + DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py ) add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_gstreamer010 media_plugin_webkit) if (NOT INSTALL) add_custom_target(package ALL DEPENDS ${product}.tar.bz2) - add_dependencies(package linux-crash-logger-strip-target) - add_dependencies(package linux-updater-strip-target) + add_dependencies(package linux-crash-logger-target) + add_dependencies(package linux-updater-target) check_message_template(package) endif (NOT INSTALL) endif (LINUX) @@ -1699,6 +1680,7 @@ if (DARWIN) --actions=copy --artwork=${ARTWORK_DIR} --build=${CMAKE_CURRENT_BINARY_DIR} + --buildtype=${CMAKE_BUILD_TYPE} --configuration=${CMAKE_CFG_INTDIR} --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app --grid=${GRID} @@ -1719,6 +1701,7 @@ if (DARWIN) ARGS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py --grid=${GRID} + --buildtype=${CMAKE_BUILD_TYPE} --configuration=${CMAKE_CFG_INTDIR} --channel=${VIEWER_CHANNEL} --login_channel=${VIEWER_LOGIN_CHANNEL} @@ -1738,6 +1721,7 @@ if (DARWIN) ARGS ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py --grid=${GRID} + --buildtype=${CMAKE_BUILD_TYPE} --configuration=${CMAKE_CFG_INTDIR} --channel=${VIEWER_CHANNEL} --login_channel=${VIEWER_LOGIN_CHANNEL} @@ -1765,9 +1749,10 @@ if (LL_TESTS) llagentaccess.cpp lldateutil.cpp llmediadataclient.cpp - llviewerhelputil.cpp lllogininstance.cpp + llviewerhelputil.cpp ) + ################################################## # DISABLING PRECOMPILED HEADERS USAGE FOR TESTS ################################################## diff --git a/indra/newview/app_settings/ignorable_dialogs.xml b/indra/newview/app_settings/ignorable_dialogs.xml index ab18febccc..d0e1f62a84 100644 --- a/indra/newview/app_settings/ignorable_dialogs.xml +++ b/indra/newview/app_settings/ignorable_dialogs.xml @@ -177,28 +177,6 @@ <key>Value</key> <integer>1</integer> </map> - <key>FirstStreamingMusic</key> - <map> - <key>Comment</key> - <string>Enables FirstStreamingMusic warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>FirstStreamingVideo</key> - <map> - <key>Comment</key> - <string>Enables FirstStreamingVideo warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> <key>FirstTeleport</key> <map> <key>Comment</key> diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini index 14025c8061..0805e94b10 100644 --- a/indra/newview/app_settings/keywords.ini +++ b/indra/newview/app_settings/keywords.ini @@ -268,8 +268,8 @@ ATTACH_LHIP Passed to llAttachToAvatar to attach task to left hip ATTACH_LULEG Passed to llAttachToAvatar to attach task to left upper leg ATTACH_LLLEG Passed to llAttachToAvatar to attach task to left lower leg ATTACH_BELLY Passed to llAttachToAvatar to attach task to belly -ATTACH_RPEC Passed to llAttachToAvatar to attach task to right pectoral -ATTACH_LPEC Passed to llAttachToAvatar to attach task to left pectoral +ATTACH_LEFT_PEC Passed to llAttachToAvatar to attach task to left pectoral +ATTACH_RIGHT_PEC Passed to llAttachToAvatar to attach task to right pectoral LAND_LEVEL Passed to llModifyLand to level terrain LAND_RAISE Passed to llModifyLand to raise terrain diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index bf69986094..f87cdbc43e 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4,13 +4,13 @@ <key>AFKTimeout</key> <map> <key>Comment</key> - <string>Time before automatically setting AFK (away from keyboard) mode (seconds)</string> + <string>Time before automatically setting AFK (away from keyboard) mode (seconds, 0=never)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>S32</string> <key>Value</key> - <real>300.0</real> + <real>0</real> </map> <key>AdvanceSnapshot</key> <map> @@ -197,7 +197,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>1.0</real> + <real>0.5</real> </map> <key>AudioLevelMic</key> <map> @@ -219,7 +219,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>1.0</real> + <real>0.5</real> </map> <key>AudioLevelRolloff</key> <map> @@ -241,7 +241,7 @@ <key>Type</key> <string>F32</string> <key>Value</key> - <real>1.0</real> + <real>0.5</real> </map> <key>AudioLevelUI</key> <map> @@ -265,38 +265,38 @@ <key>Value</key> <real>0.5</real> </map> - <key>AudioSteamingMedia</key> + <key>AudioLevelWind</key> <map> <key>Comment</key> - <string>Enable streaming</string> + <string>Audio level of wind noise when standing still</string> <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Boolean</string> + <string>F32</string> <key>Value</key> - <integer>0</integer> + <real>0.5</real> </map> - <key>AudioStreamingMusic</key> + <key>AudioStreamingMedia</key> <map> <key>Comment</key> - <string>Enable streaming audio</string> + <string>Enable streaming</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> - <key>AudioStreamingVideo</key> + <key>AudioStreamingMusic</key> <map> <key>Comment</key> - <string>Enable streaming video</string> + <string>Enable streaming audio</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>AuditTexture</key> <map> @@ -397,6 +397,17 @@ <key>Value</key> <integer>1</integer> </map> + <key>AvalinePhoneSeparator</key> + <map> + <key>Comment</key> + <string>Separator of phone parts to have Avaline numbers human readable in Voice Control Panel</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>String</string> + <key>Value</key> + <string>-</string> + </map> <key>AvatarAxisDeadZone0</key> <map> <key>Comment</key> @@ -1119,9 +1130,9 @@ <key>Persist</key> <integer>1</integer> <key>Type</key> - <string>Boolean</string> + <string>S32</string> <key>Value</key> - <integer>1</integer> + <integer>5</integer> </map> <key>CameraAngle</key> <map> @@ -2366,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> @@ -3574,7 +3596,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>http://viewer-help.secondlife.com/[LANGUAGE]/[CHANNEL]/[VERSION]/[TOPIC]</string> + <string>http://viewer-help.secondlife.com/[LANGUAGE]/[CHANNEL]/[VERSION]/[TOPIC][DEBUG_MODE]</string> </map> <key>HomeSidePanelURL</key> <map> @@ -3585,7 +3607,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>http://lecs.viewer-sidebar.secondlife.com.s3.amazonaws.com/sidebar.html</string> + <string>https://viewer-sidebar.secondlife.com/sidebar.html?p=[AUTH_TOKEN]&lang=[LANGUAGE]&channel=[CHANNEL]&version=[VERSION]&major=[VERSION_MAJOR]&minor=[VERSION_MINOR]&patch=[VERSION_PATCH]&build=[VERSION_BUILD]&firstlogin=[FIRST_LOGIN]</string> </map> <key>SearchURL</key> <map> @@ -3596,7 +3618,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>http://int.searchwww-phx0.damballah.lindenlab.com/viewer/[CATEGORY]?q=[QUERY]&p=[AUTH_TOKEN]&r=[MATURITY]&lang=[LANGUAGE]&g=[GODLIKE]&sid=[SESSION_ID]&rid=[REGION_ID]&pid=[PARCEL_ID]</string> + <string>http://search.secondlife.com/viewer/[CATEGORY]?q=[QUERY]&p=[AUTH_TOKEN]&r=[MATURITY]&lang=[LANGUAGE]&g=[GODLIKE]&sid=[SESSION_ID]&rid=[REGION_ID]&pid=[PARCEL_ID]&channel=[CHANNEL]&version=[VERSION]&major=[VERSION_MAJOR]&minor=[VERSION_MINOR]&patch=[VERSION_PATCH]&build=[VERSION_BUILD]</string> </map> <key>HighResSnapshot</key> <map> @@ -3631,17 +3653,6 @@ <key>Value</key> <string /> </map> - <key>IMInChat</key> - <map> - <key>Comment</key> - <string>Copy IM into chat console</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>0</integer> - </map> <key>IMShowTimestamps</key> <map> <key>Comment</key> @@ -4317,13 +4328,13 @@ <key>LoginLocation</key> <map> <key>Comment</key> - <string>Login at same location you last logged out</string> + <string>Login location ('last', 'home')</string> <key>Persist</key> <integer>1</integer> <key>Type</key> <string>String</string> <key>Value</key> - <string>last</string> + <string>home</string> </map> <key>LoginPage</key> <map> @@ -4567,6 +4578,50 @@ <key>Value</key> <integer>0</integer> </map> + <key>MediaShowOnOthers</key> + <map> + <key>Comment</key> + <string>Whether or not to show media on other avatars</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>MediaShowOutsideParcel</key> + <map> + <key>Comment</key> + <string>Whether or not to show media from outside the current parcel</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>MediaShowWithinParcel</key> + <map> + <key>Comment</key> + <string>Whether or not to show media within the current parcel</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>MediaTentativeAutoPlay</key> + <map> + <key>Comment</key> + <string>This is a tentative flag that may be temporarily set off by the user, until she teleports</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> <key>MemoryLogFrequency</key> <map> <key>Comment</key> @@ -4622,6 +4677,17 @@ <key>Value</key> <integer>410</integer> </map> + <key>MePanelOpened</key> + <map> + <key>Comment</key> + <string>Indicates that Me Panel was opened at least once after Viewer was installed</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <real>0</real> + </map> <key>MigrateCacheDirectory</key> <map> <key>Comment</key> @@ -4787,6 +4853,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>MyOutfitsAutofill</key> + <map> + <key>Comment</key> + <string>Always autofill My Outfits from library when empty (else happens just once).</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>NearMeRange</key> <map> <key>Comment</key> @@ -5018,6 +5095,20 @@ <key>Value</key> <integer>5</integer> </map> + <key>ToastButtonWidth</key> + <map> + <key>Comment</key> + <string>Default width of buttons in the toast. + Notes: + If required width will be less then this one, a button will be reshaped to default size , otherwise to required + Change of this parameter will affect the layout of buttons in notification toast.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>90</integer> + </map> <key>ChannelBottomPanelMargin</key> <map> <key>Comment</key> @@ -5269,7 +5360,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>PerAccountSettingsFile</key> <map> @@ -5463,7 +5554,7 @@ <key>PreferredMaturity</key> <map> <key>Comment</key> - <string>Setting for the user's preferred maturity level.</string> + <string>Setting for the user's preferred maturity level (consts in indra_constants.h)</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -5493,6 +5584,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>PrimMediaDragNDrop</key> + <map> + <key>Comment</key> + <string>Enable drag and drop of URLs onto prim faces</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> @@ -7341,6 +7443,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>RenderUseTriStrips</key> + <map> + <key>Comment</key> + <string>Use triangle strips for rendering prims.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>RenderUseFarClip</key> <map> <key>Comment</key> @@ -7757,7 +7870,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> <key>ShowCrosshairs</key> <map> @@ -8354,7 +8467,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> <key>ShowTangentBasis</key> <map> @@ -8400,6 +8513,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>ShowVoiceVisualizersInCalls</key> + <map> + <key>Comment</key> + <string>Enables in-world voice visualizers, voice gestures and lip-sync while in group or P2P calls.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>ShowVolumeSettingsPopup</key> <map> <key>Comment</key> @@ -8738,6 +8862,17 @@ <key>Value</key> <real>20.0</real> </map> + <key>TextureDecodeDisabled</key> + <map> + <key>Comment</key> + <string>If TRUE, do not fetch and decode any textures</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>TextureDisable</key> <map> <key>Comment</key> @@ -9287,18 +9422,7 @@ <string>S32</string> <key>Value</key> <integer>2</integer> - </map> - <key>UILineEditorVPad</key> - <map> - <key>Comment</key> - <string>UI Line Editor Vertical Pad</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>S32</string> - <key>Value</key> - <integer>5</integer> - </map> + </map> <key>UIMaxComboWidth</key> <map> <key>Comment</key> @@ -10001,7 +10125,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>UseFreezeFrame</key> <map> @@ -10036,6 +10160,18 @@ <key>Value</key> <integer>1</integer> </map> + <key>SpeakerParticipantRemoveDelay</key> + <map> + <key>Comment</key> + <string>Timeout to remove participants who is not in channel before removed from list of active speakers (text/voice chat)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>10.0</real> + </map> + <key>UseStartScreen</key> <map> <key>Comment</key> @@ -10585,7 +10721,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <real>150000.0</real> + <string /> </map> <key>YawFromMousePosition</key> <map> @@ -10719,6 +10855,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/character/avatar_lad.xml b/indra/newview/character/avatar_lad.xml index ae89eb4413..448e20b382 100644 --- a/indra/newview/character/avatar_lad.xml +++ b/indra/newview/character/avatar_lad.xml @@ -5608,9 +5608,7 @@ <layer_set body_region="head" width="512" - height="512" - clear_alpha="false" - alpha_tga_file="head_alpha.tga"> + height="512"> <layer name="head bump base" fixed_color = "128,128,128,255" @@ -6609,6 +6607,13 @@ render_pass="bump"> local_texture="head_bodypaint" /> </layer> <layer + name="eyelash alpha" + visibility_mask="TRUE"> + <texture + tga_file="head_alpha.tga" + file_is_mask="TRUE" /> + </layer> + <layer name="head alpha" visibility_mask="TRUE"> <texture @@ -6620,6 +6625,7 @@ render_pass="bump"> local_texture="head_tattoo" /> </layer> + </layer_set> <!-- =========================================================== --> diff --git a/indra/newview/gpu_table.txt b/indra/newview/gpu_table.txt index cc8f6780e3..aa0e21ea8f 100644 --- a/indra/newview/gpu_table.txt +++ b/indra/newview/gpu_table.txt @@ -47,8 +47,10 @@ ATI ASUS EAH26xx .*ATI.*ASUS.*EAH26.* 3 1 ATI ASUS EAH34xx .*ATI.*ASUS.*EAH34.* 1 1 ATI ASUS EAH36xx .*ATI.*ASUS.*EAH36.* 3 1 ATI ASUS EAH38xx .*ATI.*ASUS.*EAH38.* 3 1 +ATI ASUS EAH45xx .*ATI.*ASUS.*EAH45.* 1 1 ATI ASUS EAH48xx .*ATI.*ASUS.*EAH48.* 3 1 -ATI Radeon X1xxx .*ATI.*ASUS.*X1.* 2 1 +ATI ASUS EAH57xx .*ATI.*ASUS.*EAH57.* 3 1 +ATI Radeon X1xxx .*ATI.*ASUS.*X1.* 3 1 ATI Radeon X7xx .*ATI.*ASUS.*X7.* 1 1 ATI Radeon X500 .*ATI.*Diamond X5.* 1 1 ATI Radeon X13xx .*ATI.*Diamond X13.* 1 1 @@ -95,10 +97,16 @@ ATI Radeon HD 3300 .*ATI.*Radeon HD.*33.* 1 1 ATI Radeon HD 3400 .*ATI.*Radeon HD.*34.* 1 1 ATI Radeon HD 3600 .*ATI.*Radeon HD.*36.* 3 1 ATI Radeon HD 3800 .*ATI.*Radeon HD.*38.* 3 1 +ATI Radeon HD 4200 .*ATI.*Radeon HD 42.* 1 1 ATI Radeon HD 4300 .*ATI.*Radeon HD 43.* 1 1 -ATI Radeon HD 4500 .*ATI.*Radeon HD 45.* 2 1 -ATI Radeon HD 4600 .*ATI.*Radeon HD 46.* 3 1 +ATI Radeon HD 4500 .*ATI.*Radeon HD 45.* 3 1 +ATI Radeon HD 4600 .*ATI.*Radeon HD.*46.* 3 1 +ATI Radeon HD 4700 .*ATI.*Radeon HD 47.* 3 1 ATI Radeon HD 4800 .*ATI.*Radeon.*HD.*48.* 3 1 +ATI Radeon HD 5600 .*ATI.*Radeon.*HD.*56.* 3 1 +ATI Radeon HD 5700 .*ATI.*Radeon.*HD.*57.* 3 1 +ATI Radeon HD 5800 .*ATI.*Radeon.*HD.*58.* 3 1 +ATI Radeon HD 5900 .*ATI.*Radeon.*HD.*59.* 3 1 ATI Radeon OpenGL .*ATI.*Radeon OpenGL.* 0 0 ATI Radeon 2100 .*ATI.*Radeon 21.* 0 1 ATI Radeon 3100 .*ATI.*Radeon 31.* 1 1 @@ -152,13 +160,17 @@ Intel 945G .*Intel.*945G.* 0 1 Intel 950 .*Intel.*950.* 0 1 Intel 965 .*Intel.*965.* 0 1 Intel G33 .*Intel.*G33.* 0 0 +Intel G41 .*Intel.*G41.* 0 1 Intel G45 .*Intel.*G45.* 0 1 Intel Bear Lake .*Intel.*Bear Lake.* 0 0 Intel Broadwater .*Intel.*Broadwater.* 0 0 Intel Brookdale .*Intel.*Brookdale.* 0 0 Intel Cantiga .*Intel.*Cantiga.* 0 0 Intel Eaglelake .*Intel.*Eaglelake.* 0 1 +Intel Mobile 4 Series .*Intel.*Mobile.*4 Series.* 0 1 +Intel Media Graphics HD .*Intel.*Media.*Graphics.*HD.* 0 1 Intel Montara .*Intel.*Montara.* 0 0 +Intel Pineview .*Intel.*Pineview.* 0 1 Intel Springdale .*Intel.*Springdale.* 0 0 Matrox .*Matrox.* 0 0 Mesa .*Mesa.* 0 0 @@ -192,9 +204,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 +219,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 diff --git a/indra/newview/installers/darwin/firstlook-dmg/_DS_Store b/indra/newview/installers/darwin/firstlook-dmg/_DS_Store Binary files differindex 9d9fd897e7..495ec37f53 100644 --- a/indra/newview/installers/darwin/firstlook-dmg/_DS_Store +++ b/indra/newview/installers/darwin/firstlook-dmg/_DS_Store diff --git a/indra/newview/installers/darwin/fix_application_icon_position.sh b/indra/newview/installers/darwin/fix_application_icon_position.sh new file mode 100644 index 0000000000..c6b92589db --- /dev/null +++ b/indra/newview/installers/darwin/fix_application_icon_position.sh @@ -0,0 +1,17 @@ +# just run this script each time after you change the installer's name to fix the icon misalignment +#!/bin/bash +cp -r ./../../../build-darwin-i386/newview/*.dmg ~/Desktop/TempBuild.dmg +hdid ~/Desktop/TempBuild.dmg +open -a finder /Volumes/Second\ Life\ Installer +osascript dmg-cleanup.applescript +umount /Volumes/Second\ Life\ Installer/ +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 Binary files differindex 9d9fd897e7..495ec37f53 100644 --- a/indra/newview/installers/darwin/publicnightly-dmg/_DS_Store +++ b/indra/newview/installers/darwin/publicnightly-dmg/_DS_Store diff --git a/indra/newview/installers/darwin/release-dmg/_DS_Store b/indra/newview/installers/darwin/release-dmg/_DS_Store Binary files differindex 9d9fd897e7..495ec37f53 100644 --- a/indra/newview/installers/darwin/release-dmg/_DS_Store +++ b/indra/newview/installers/darwin/release-dmg/_DS_Store diff --git a/indra/newview/installers/darwin/releasecandidate-dmg/_DS_Store b/indra/newview/installers/darwin/releasecandidate-dmg/_DS_Store Binary files differindex 9d9fd897e7..495ec37f53 100644 --- a/indra/newview/installers/darwin/releasecandidate-dmg/_DS_Store +++ b/indra/newview/installers/darwin/releasecandidate-dmg/_DS_Store diff --git a/indra/newview/linux_tools/client-readme.txt b/indra/newview/linux_tools/client-readme.txt index 92d321d8c0..e01b9e4bc6 100644 --- a/indra/newview/linux_tools/client-readme.txt +++ b/indra/newview/linux_tools/client-readme.txt @@ -15,7 +15,7 @@ Life itself - please see <http://www.secondlife.com/whatis/>. 5.3. Blank window after minimizing it 5.4. Audio 5.5. 'Alt' key for camera controls doesn't work - 5.6. In-world streaming movie/music playback + 5.6. In-world streaming movie, music and Flash playback 6. Advanced Troubleshooting 6.1. Audio 6.2. OpenGL @@ -169,12 +169,15 @@ SOLUTION:- Some window managers eat the Alt key for their own purposes; you example, the 'Windows' key!) which will allow the Alt key to function properly with mouse actions in Second Life and other applications. -PROBLEM 6:- In-world movie and/or music playback doesn't work for me. +PROBLEM 6:- In-world movie, music, or Flash playback doesn't work for me. SOLUTION:- You need to have a working installation of GStreamer 0.10; this is usually an optional package for most versions of Linux. If you have installed GStreamer 0.10 and you can play some music/movies but not others then you need to install a wider selection of GStreamer plugins, either - from your vendor or an appropriate third party. + from your vendor (i.e. the 'Ugly' plugins) or an appropriate third party. + For Flash playback, you need to have Flash 10 installed for your normal + web browser (for example, Firefox). PulseAudio is required for Flash + volume control / muting to fully function inside Second Life. 6. ADVANCED TROUBLESHOOTING diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh index f84102e1fb..d2df968544 100755 --- a/indra/newview/linux_tools/wrapper.sh +++ b/indra/newview/linux_tools/wrapper.sh @@ -41,16 +41,8 @@ ## driver bug, try enabling this option and report whether it helps: #export LL_ATI_MOUSE_CURSOR_BUG=x -## - If you experience crashes with streaming video and music, you can -## disable these by enabling this option: -#export LL_DISABLE_GSTREAMER=x - -## - GStreamer is automatically disabled - for now - on 64-bit systems due -## to common fatal incompatibilities; remove/comment these lines if you want -## to try anyway. if [ "`uname -m`" = "x86_64" ]; then - export LL_DISABLE_GSTREAMER=x - echo '64-bit Linux detected: Disabling GStreamer (streaming video and music) by default; edit ./secondlife to re-enable.' + echo '64-bit Linux detected.' fi ## Everything below this line is just for advanced troubleshooters. diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 79b0527a74..1da7d450c9 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -43,7 +43,7 @@ #include "llcallingcard.h" #include "llchannelmanager.h" #include "llconsole.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llfloatercamera.h" #include "llfloatercustomize.h" #include "llfloaterreg.h" @@ -514,6 +514,8 @@ void LLAgent::resetView(BOOL reset_camera, BOOL change_camera) } setFocusOnAvatar(TRUE, ANIMATE); + + mCameraFOVZoomFactor = 0.f; } mHUDTargetZoom = 1.f; @@ -751,6 +753,7 @@ void LLAgent::setFlying(BOOL fly) // because in this case we won't get a signal to start avatar flying animation and // it will be walking with flying mode "ON" indication. However we allow to switch // the flying mode off if we get ANIM_AGENT_STANDUP signal. See process_avatar_animation(). + // See EXT-2781. if(fly && mAvatarObject->mSignaledAnimations.find(ANIM_AGENT_STANDUP) != mAvatarObject->mSignaledAnimations.end()) { return; @@ -953,6 +956,7 @@ void LLAgent::sendMessage() if (!mRegionp) { llerrs << "No region for agent yet!" << llendl; + return; } gMessageSystem->sendMessage(mRegionp->getHost()); } @@ -2802,7 +2806,7 @@ void LLAgent::endAnimationUpdateUI() LLNavigationBar::getInstance()->setVisible(TRUE); gStatusBar->setVisibleForMouselook(true); - LLBottomTray::getInstance()->setVisible(TRUE); + LLBottomTray::getInstance()->onMouselookModeOut(); LLSideTray::getInstance()->getButtonsPanel()->setVisible(TRUE); LLSideTray::getInstance()->updateSidetrayVisibility(); @@ -2811,7 +2815,7 @@ void LLAgent::endAnimationUpdateUI() LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset); - LLFloaterCamera::toPrevModeIfInAvatarViewMode(); + LLFloaterCamera::onLeavingMouseLook(); // Only pop if we have pushed... if (TRUE == mViewsPushed) @@ -2901,7 +2905,7 @@ void LLAgent::endAnimationUpdateUI() LLNavigationBar::getInstance()->setVisible(FALSE); gStatusBar->setVisibleForMouselook(false); - LLBottomTray::getInstance()->setVisible(FALSE); + LLBottomTray::getInstance()->onMouselookModeIn(); LLSideTray::getInstance()->getButtonsPanel()->setVisible(FALSE); LLSideTray::getInstance()->updateSidetrayVisibility(); @@ -2914,10 +2918,6 @@ void LLAgent::endAnimationUpdateUI() // JC - Added for always chat in third person option gFocusMgr.setKeyboardFocus(NULL); - //Making sure Camera Controls floater is in the right state - //when entering Mouse Look using wheel scrolling - LLFloaterCamera::updateIfNotInAvatarViewMode(); - LLToolMgr::getInstance()->setCurrentToolset(gMouselookToolset); mViewsPushed = TRUE; @@ -3018,6 +3018,9 @@ void LLAgent::endAnimationUpdateUI() //----------------------------------------------------------------------------- void LLAgent::updateCamera() { + static LLFastTimer::DeclareTimer ftm("Camera"); + LLFastTimer t(ftm); + //Ventrella - changed camera_skyward to the new global "mCameraUpVector" mCameraUpVector = LLVector3::z_axis; //LLVector3 camera_skyward(0.f, 0.f, 1.f); @@ -3587,7 +3590,7 @@ F32 LLAgent::calcCameraFOVZoomFactor() { return 0.f; } - else if (mFocusObject.notNull() && !mFocusObject->isAvatar()) + else if (mFocusObject.notNull() && !mFocusObject->isAvatar() && !mFocusOnAvatar) { // don't FOV zoom on mostly transparent objects LLVector3 focus_offset = mFocusObjectOffset; @@ -4483,7 +4486,9 @@ void LLAgent::setCameraPosAndFocusGlobal(const LLVector3d& camera_pos, const LLV { const F64 ANIM_METERS_PER_SECOND = 10.0; const F64 MIN_ANIM_SECONDS = 0.5; + const F64 MAX_ANIM_SECONDS = 10.0; F64 anim_duration = llmax( MIN_ANIM_SECONDS, sqrt(focus_delta_squared) / ANIM_METERS_PER_SECOND ); + anim_duration = llmin( anim_duration, MAX_ANIM_SECONDS ); setAnimationDuration( (F32)anim_duration ); } @@ -4834,11 +4839,16 @@ void LLAgent::onAnimStop(const LLUUID& id) } } -BOOL LLAgent::isGodlike() const +bool LLAgent::isGodlike() const { return mAgentAccess.isGodlike(); } +bool LLAgent::isGodlikeWithoutAdminMenuFakery() const +{ + return mAgentAccess.isGodlikeWithoutAdminMenuFakery(); +} + U8 LLAgent::getGodLevel() const { return mAgentAccess.getGodLevel(); @@ -5025,9 +5035,9 @@ void LLAgent::buildFullnameAndTitle(std::string& name) const } } -BOOL LLAgent::isInGroup(const LLUUID& group_id) const +BOOL LLAgent::isInGroup(const LLUUID& group_id, BOOL ignore_god_mode /* FALSE */) const { - if (isGodlike()) + if (!ignore_god_mode && isGodlike()) return true; S32 count = mGroups.count(); @@ -5160,6 +5170,11 @@ BOOL LLAgent::setUserGroupFlags(const LLUUID& group_id, BOOL accept_notices, BOO return FALSE; } +BOOL LLAgent::canJoinGroups() const +{ + return mGroups.count() < MAX_AGENT_GROUPS; +} + LLQuaternion LLAgent::getHeadRotation() { if (mAvatarObject.isNull() || !mAvatarObject->mPelvisp || !mAvatarObject->mHeadp) @@ -5693,10 +5708,10 @@ void LLAgent::processScriptControlChange(LLMessageSystem *msg, void **) } // Any control taken? If so, might be first time. - if (total_count > 0) - { - LLFirstUse::useOverrideKeys(); - } + //if (total_count > 0) + //{ + //LLFirstUse::useOverrideKeys(); + //} } else { diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 2e95dc72be..f2df1992e7 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -888,7 +888,8 @@ private: // God //-------------------------------------------------------------------- public: - BOOL isGodlike() const; + bool isGodlike() const; + bool isGodlikeWithoutAdminMenuFakery() const; U8 getGodLevel() const; void setAdminOverride(BOOL b); void setGodLevel(U8 god_level); @@ -972,6 +973,7 @@ public: BOOL setGroupContribution(const LLUUID& group_id, S32 contribution); BOOL setUserGroupFlags(const LLUUID& group_id, BOOL accept_notices, BOOL list_in_profile); const std::string &getGroupName() const { return mGroupName; } + BOOL canJoinGroups() const; private: std::string mGroupName; LLUUID mGroupID; @@ -981,7 +983,7 @@ private: //-------------------------------------------------------------------- public: // Checks against all groups in the entire agent group list. - BOOL isInGroup(const LLUUID& group_id) const; + BOOL isInGroup(const LLUUID& group_id, BOOL ingnore_God_mod = FALSE) const; protected: // Only used for building titles. BOOL isGroupMember() const { return !mGroupID.isNull(); } diff --git a/indra/newview/llagentaccess.cpp b/indra/newview/llagentaccess.cpp index eb978eb6c1..915dabb935 100644 --- a/indra/newview/llagentaccess.cpp +++ b/indra/newview/llagentaccess.cpp @@ -69,12 +69,21 @@ bool LLAgentAccess::isGodlike() const #endif } +bool LLAgentAccess::isGodlikeWithoutAdminMenuFakery() const +{ +#ifdef HACKED_GODLIKE_VIEWER + return true; +#else + return mGodLevel > GOD_NOT; +#endif +} + U8 LLAgentAccess::getGodLevel() const { #ifdef HACKED_GODLIKE_VIEWER return GOD_MAINTENANCE; #else - if(mAdminOverride) return GOD_FULL; + if(mAdminOverride) return GOD_FULL; // :( return mGodLevel; #endif } diff --git a/indra/newview/llagentaccess.h b/indra/newview/llagentaccess.h index 93d2f0a371..49da5f44cc 100644 --- a/indra/newview/llagentaccess.h +++ b/indra/newview/llagentaccess.h @@ -48,6 +48,7 @@ public: void setGodLevel(U8 god_level); bool isGodlike() const; + bool isGodlikeWithoutAdminMenuFakery() const; U8 getGodLevel() const; diff --git a/indra/newview/llagentui.cpp b/indra/newview/llagentui.cpp index 7404fe5bc4..72ab9235cf 100644 --- a/indra/newview/llagentui.cpp +++ b/indra/newview/llagentui.cpp @@ -150,11 +150,17 @@ BOOL LLAgentUI::buildLocationString(std::string& str, ELocationFormat fmt,const sim_access_string.c_str()); break; case LOCATION_FORMAT_NO_MATURITY: - case LOCATION_FORMAT_FULL: buffer = llformat("%s (%d, %d, %d)", region_name.c_str(), pos_x, pos_y, pos_z); break; + case LOCATION_FORMAT_FULL: + buffer = llformat("%s (%d, %d, %d)%s%s", + region_name.c_str(), + pos_x, pos_y, pos_z, + sim_access_string.empty() ? "" : " - ", + sim_access_string.c_str()); + break; } } else diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 79ba3fb51d..11ac103b3a 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -95,18 +95,38 @@ public: enum ELibraryOutfitFetchStep { LOFS_FOLDER = 0, LOFS_OUTFITS, + LOFS_LIBRARY, + LOFS_IMPORTED, LOFS_CONTENTS }; - LLLibraryOutfitsFetch() : mCurrFetchStep(LOFS_FOLDER), mOutfitsPopulated(false) {} + LLLibraryOutfitsFetch() : mCurrFetchStep(LOFS_FOLDER), mOutfitsPopulated(false) + { + mMyOutfitsID = LLUUID::null; + mClothingID = LLUUID::null; + mLibraryClothingID = LLUUID::null; + mImportedClothingID = LLUUID::null; + mImportedClothingName = "Imported Library Clothing"; + } ~LLLibraryOutfitsFetch() {} - virtual void done(); + virtual void done(); + void doneIdle(); + LLUUID mMyOutfitsID; + void importedFolderFetch(); protected: void folderDone(void); void outfitsDone(void); + void libraryDone(void); + void importedFolderDone(void); void contentsDone(void); enum ELibraryOutfitFetchStep mCurrFetchStep; - std::vector< std::pair< LLUUID, std::string > > mOutfits; + typedef std::vector< std::pair< LLUUID, std::string > > cloth_folder_vec_t; + cloth_folder_vec_t mLibraryClothingFolders; + cloth_folder_vec_t mImportedClothingFolders; bool mOutfitsPopulated; + LLUUID mClothingID; + LLUUID mLibraryClothingID; + LLUUID mImportedClothingID; + std::string mImportedClothingName; }; LLAgentWearables gAgentWearables; @@ -115,6 +135,39 @@ BOOL LLAgentWearables::mInitialWearablesUpdateReceived = FALSE; using namespace LLVOAvatarDefines; +// HACK: For EXT-3923: Pants item shows in inventory with skin icon and messes with "current look" +// Some db items are corrupted, have inventory flags = 0, implying wearable type = shape, even though +// wearable type stored in asset is some other value. +// Calling this function whenever a wearable is added to increase visibility if this problem +// turns up in other inventories. +void checkWearableAgainstInventory(LLWearable *wearable) +{ + if (wearable->getItemID().isNull()) + return; + + // Check for wearable type consistent with inventory item wearable type. + LLViewerInventoryItem *item = gInventory.getItem(wearable->getItemID()); + if (item) + { + if (!item->isWearableType()) + { + llwarns << "wearable associated with non-wearable item" << llendl; + } + if (item->getWearableType() != wearable->getType()) + { + llwarns << "type mismatch: wearable " << wearable->getName() + << " has type " << wearable->getType() + << " but inventory item " << item->getName() + << " has type " << item->getWearableType() << llendl; + } + } + else + { + llwarns << "wearable inventory item not found" << wearable->getName() + << " itemID " << wearable->getItemID().asString() << llendl; + } +} + void LLAgentWearables::dump() { llinfos << "LLAgentWearablesDump" << llendl; @@ -192,6 +245,7 @@ void LLAgentWearables::setAvatarObject(LLVOAvatarSelf *avatar) // wearables LLAgentWearables::createStandardWearablesAllDoneCallback::~createStandardWearablesAllDoneCallback() { + llinfos << "destructor - all done?" << llendl; gAgentWearables.createStandardWearablesAllDone(); } @@ -218,10 +272,16 @@ LLAgentWearables::addWearableToAgentInventoryCallback::addWearableToAgentInvento mTodo(todo), mCB(cb) { + llinfos << "constructor" << llendl; } void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& inv_item) { + if (mTodo & CALL_CREATESTANDARDDONE) + { + llinfos << "callback fired, inv_item " << inv_item.asString() << llendl; + } + if (inv_item.isNull()) return; @@ -233,6 +293,7 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i } if (mTodo & CALL_RECOVERDONE) { + LLAppearanceManager::instance().addCOFItemLink(inv_item,false); gAgentWearables.recoverMissingWearableDone(); } /* @@ -240,12 +301,17 @@ void LLAgentWearables::addWearableToAgentInventoryCallback::fire(const LLUUID& i */ if (mTodo & CALL_CREATESTANDARDDONE) { + LLAppearanceManager::instance().addCOFItemLink(inv_item,false); gAgentWearables.createStandardWearablesDone(mType, mIndex); } if (mTodo & CALL_MAKENEWOUTFITDONE) { gAgentWearables.makeNewOutfitDone(mType, mIndex); } + if (mTodo & CALL_WEARITEM) + { + LLAppearanceManager::instance().addCOFItemLink(inv_item, true); + } } void LLAgentWearables::addWearabletoAgentInventoryDone(const S32 type, @@ -253,25 +319,30 @@ void LLAgentWearables::addWearabletoAgentInventoryDone(const S32 type, const LLUUID& item_id, LLWearable* wearable) { + llinfos << "type " << type << " index " << index << " item " << item_id.asString() << llendl; + if (item_id.isNull()) return; LLUUID old_item_id = getWearableItemID((EWearableType)type,index); + if (wearable) { wearable->setItemID(item_id); - } - if (old_item_id.notNull()) - { - gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id); - setWearable((EWearableType)type,index,wearable); - } - else - { - pushWearable((EWearableType)type,wearable); + if (old_item_id.notNull()) + { + gInventory.addChangedMask(LLInventoryObserver::LABEL, old_item_id); + setWearable((EWearableType)type,index,wearable); + } + else + { + pushWearable((EWearableType)type,wearable); + } } + gInventory.addChangedMask(LLInventoryObserver::LABEL, item_id); + LLViewerInventoryItem* item = gInventory.getItem(item_id); if (item && wearable) { @@ -454,7 +525,7 @@ void LLAgentWearables::saveWearableAs(const EWearableType type, type, index, new_wearable, - addWearableToAgentInventoryCallback::CALL_UPDATE); + addWearableToAgentInventoryCallback::CALL_WEARITEM); LLUUID category_id; if (save_in_lost_and_found) { @@ -656,6 +727,7 @@ LLWearable* LLAgentWearables::getWearable(const EWearableType type, U32 index) void LLAgentWearables::setWearable(const EWearableType type, U32 index, LLWearable *wearable) { + LLWearable *old_wearable = getWearable(type,index); if (!old_wearable) { @@ -679,6 +751,7 @@ void LLAgentWearables::setWearable(const EWearableType type, U32 index, LLWearab wearable_vec[index] = wearable; old_wearable->setLabelUpdated(); wearableUpdated(wearable); + checkWearableAgainstInventory(wearable); } } @@ -694,6 +767,7 @@ U32 LLAgentWearables::pushWearable(const EWearableType type, LLWearable *wearabl { mWearableDatas[type].push_back(wearable); wearableUpdated(wearable); + checkWearableAgainstInventory(wearable); return mWearableDatas[type].size()-1; } return MAX_WEARABLES_PER_TYPE; @@ -705,6 +779,8 @@ void LLAgentWearables::wearableUpdated(LLWearable *wearable) wearable->refreshName(); wearable->setLabelUpdated(); + wearable->pullCrossWearableValues(); + // Hack pt 2. If the wearable we just loaded has definition version 24, // then force a re-save of this wearable after slamming the version number to 22. // This number was incorrectly incremented for internal builds before release, and @@ -871,13 +947,6 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs if (mInitialWearablesUpdateReceived) return; mInitialWearablesUpdateReceived = true; - - // If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account) - // then auto-populate outfits from the library into the My Outfits folder. - if (LLInventoryModel::getIsFirstTimeInViewer2()) - { - gAgentWearables.populateMyOutfitsFolder(); - } LLUUID agent_id; gMessageSystem->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id); @@ -980,7 +1049,7 @@ void LLAgentWearables::onInitialWearableAssetArrived(LLWearable* wearable, void* { return; } - + if (wearable) { llassert(type == wearable->getType()); @@ -999,6 +1068,7 @@ void LLAgentWearables::onInitialWearableAssetArrived(LLWearable* wearable, void* // Somehow the asset doesn't exist in the database. gAgentWearables.recoverMissingWearable(type,index); } + gInventory.notifyObservers(); @@ -1074,11 +1144,86 @@ 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); } +class OnWearableItemCreatedCB: public LLInventoryCallback +{ +public: + OnWearableItemCreatedCB(): + mWearablesAwaitingItems(WT_COUNT,NULL) + { + llinfos << "created callback" << llendl; + } + /* virtual */ void fire(const LLUUID& inv_item) + { + llinfos << "One item created " << inv_item.asString() << llendl; + LLViewerInventoryItem *item = gInventory.getItem(inv_item); + mItemsToLink.put(item); + updatePendingWearable(inv_item); + } + ~OnWearableItemCreatedCB() + { + llinfos << "All items created" << llendl; + LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy; + LLAppearanceManager::instance().linkAll(LLAppearanceManager::instance().getCOF(), + mItemsToLink, + link_waiter); + } + void addPendingWearable(LLWearable *wearable) + { + if (!wearable) + { + llwarns << "no wearable" << llendl; + return; + } + EWearableType type = wearable->getType(); + if (type<WT_COUNT) + { + mWearablesAwaitingItems[type] = wearable; + } + else + { + llwarns << "invalid type " << type << llendl; + } + } + void updatePendingWearable(const LLUUID& inv_item) + { + LLViewerInventoryItem *item = gInventory.getItem(inv_item); + if (!item) + { + llwarns << "no item found" << llendl; + return; + } + if (!item->isWearableType()) + { + llwarns << "non-wearable item found" << llendl; + return; + } + if (item && item->isWearableType()) + { + EWearableType type = item->getWearableType(); + if (type < WT_COUNT) + { + LLWearable *wearable = mWearablesAwaitingItems[type]; + if (wearable) + wearable->setItemID(inv_item); + } + else + { + llwarns << "invalid wearable type " << type << llendl; + } + } + } + +private: + LLInventoryModel::item_array_t mItemsToLink; + std::vector<LLWearable*> mWearablesAwaitingItems; +}; + void LLAgentWearables::createStandardWearables(BOOL female) { llwarns << "Creating Standard " << (female ? "female" : "male") @@ -1108,35 +1253,34 @@ void LLAgentWearables::createStandardWearables(BOOL female) FALSE //WT_SKIRT }; + LLPointer<LLInventoryCallback> cb = new OnWearableItemCreatedCB; for (S32 i=0; i < WT_COUNT; i++) { - bool once = false; - LLPointer<LLRefCount> donecb = NULL; if (create[i]) { - if (!once) - { - once = true; - donecb = new createStandardWearablesAllDoneCallback; - } llassert(getWearableCount((EWearableType)i) == 0); LLWearable* wearable = LLWearableList::instance().createNewWearable((EWearableType)i); - U32 index = pushWearable((EWearableType)i,wearable); + ((OnWearableItemCreatedCB*)(&(*cb)))->addPendingWearable(wearable); // no need to update here... - LLPointer<LLInventoryCallback> cb = - new addWearableToAgentInventoryCallback( - donecb, - i, - index, - wearable, - addWearableToAgentInventoryCallback::CALL_CREATESTANDARDDONE); - addWearableToAgentInventory(cb, wearable, LLUUID::null, FALSE); + LLUUID category_id = LLUUID::null; + create_inventory_item(gAgent.getID(), + gAgent.getSessionID(), + category_id, + wearable->getTransactionID(), + wearable->getName(), + wearable->getDescription(), + wearable->getAssetType(), + LLInventoryType::IT_WEARABLE, + wearable->getType(), + wearable->getPermissions().getMaskNextOwner(), + cb); } } } void LLAgentWearables::createStandardWearablesDone(S32 type, U32 index) { + llinfos << "type " << type << " index " << index << llendl; if (mAvatarObject) { mAvatarObject->updateVisualParams(); @@ -1147,6 +1291,8 @@ void LLAgentWearables::createStandardWearablesAllDone() { // ... because sendAgentWearablesUpdate will notify inventory // observers. + llinfos << "all done?" << llendl; + mWearablesLoaded = TRUE; checkWearablesLoaded(); @@ -1235,25 +1381,29 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name, j, new_wearable, todo); - if (isWearableCopyable((EWearableType)type, j)) - { - copy_inventory_item( - gAgent.getID(), - item->getPermissions().getOwner(), - item->getUUID(), - folder_id, - new_name, - cb); - } - else + llassert(item); + if (item) { - move_inventory_item( - gAgent.getID(), - gAgent.getSessionID(), - item->getUUID(), - folder_id, - new_name, - cb); + if (isWearableCopyable((EWearableType)type, j)) + { + copy_inventory_item( + gAgent.getID(), + item->getPermissions().getOwner(), + item->getUUID(), + folder_id, + new_name, + cb); + } + else + { + move_inventory_item( + gAgent.getID(), + gAgent.getSessionID(), + item->getUUID(), + folder_id, + new_name, + cb); + } } } } @@ -1308,15 +1458,15 @@ void LLAgentWearables::makeNewOutfit(const std::string& new_folder_name, } } -class LLAutoRenameFolder: public LLInventoryCallback +class LLShowCreatedOutfit: public LLInventoryCallback { public: - LLAutoRenameFolder(LLUUID& folder_id): + LLShowCreatedOutfit(LLUUID& folder_id): mFolderID(folder_id) { } - virtual ~LLAutoRenameFolder() + virtual ~LLShowCreatedOutfit() { LLSD key; LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key); @@ -1326,13 +1476,15 @@ public: { outfit_panel->getRootFolder()->clearSelection(); outfit_panel->getRootFolder()->setSelectionByID(mFolderID, TRUE); - outfit_panel->getRootFolder()->setNeedsAutoRename(TRUE); } LLAccordionCtrlTab* tab_outfits = outfit_panel ? outfit_panel->findChild<LLAccordionCtrlTab>("tab_outfits") : 0; if (tab_outfits && !tab_outfits->getDisplayChildren()) { tab_outfits->changeOpenClose(tab_outfits->getDisplayChildren()); } + + LLAppearanceManager::instance().updateIsDirty(); + LLAppearanceManager::instance().updatePanelOutfitName(""); } virtual void fire(const LLUUID&) @@ -1357,9 +1509,10 @@ LLUUID LLAgentWearables::makeNewOutfitLinks(const std::string& new_folder_name) LLFolderType::FT_OUTFIT, new_folder_name); - LLPointer<LLInventoryCallback> cb = new LLAutoRenameFolder(folder_id); - LLAppearanceManager::instance().shallowCopyCategory(LLAppearanceManager::instance().getCOF(),folder_id, cb); - + LLPointer<LLInventoryCallback> cb = new LLShowCreatedOutfit(folder_id); + LLAppearanceManager::instance().shallowCopyCategoryContents(LLAppearanceManager::instance().getCOF(),folder_id, cb); + LLAppearanceManager::instance().createBaseOutfitLink(folder_id, cb); + return folder_id; } @@ -1510,7 +1663,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it const LLDynamicArray< LLWearable* >& wearables, BOOL remove) { - lldebugs << "setWearableOutfit() start" << llendl; + llinfos << "setWearableOutfit() start" << llendl; BOOL wearables_to_remove[WT_COUNT]; wearables_to_remove[WT_SHAPE] = FALSE; @@ -1539,32 +1692,35 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it LLWearable* new_wearable = wearables[i]; LLPointer<LLInventoryItem> new_item = items[i]; - const EWearableType type = new_wearable->getType(); - wearables_to_remove[type] = FALSE; - - // MULTI_WEARABLE: using 0th - LLWearable* old_wearable = getWearable(type, 0); - if (old_wearable) + llassert(new_wearable); + if (new_wearable) { - const LLUUID& old_item_id = getWearableItemID(type, 0); - if ((old_wearable->getAssetID() == new_wearable->getAssetID()) && - (old_item_id == new_item->getUUID())) - { - lldebugs << "No change to wearable asset and item: " << LLWearableDictionary::getInstance()->getWearableEntry(type) << llendl; - continue; - } + const EWearableType type = new_wearable->getType(); + wearables_to_remove[type] = FALSE; - // Assumes existing wearables are not dirty. - if (old_wearable->isDirty()) + // MULTI_WEARABLE: using 0th + LLWearable* old_wearable = getWearable(type, 0); + if (old_wearable) { - llassert(0); - continue; + const LLUUID& old_item_id = getWearableItemID(type, 0); + if ((old_wearable->getAssetID() == new_wearable->getAssetID()) && + (old_item_id == new_item->getUUID())) + { + lldebugs << "No change to wearable asset and item: " << LLWearableDictionary::getInstance()->getWearableEntry(type) << llendl; + continue; + } + + // Assumes existing wearables are not dirty. + if (old_wearable->isDirty()) + { + llassert(0); + continue; + } } - } - if (new_wearable) new_wearable->setItemID(new_item->getUUID()); - setWearable(type,0,new_wearable); + setWearable(type,0,new_wearable); + } } std::vector<LLWearable*> wearables_being_removed; @@ -1604,6 +1760,7 @@ void LLAgentWearables::setWearableOutfit(const LLInventoryItem::item_array_t& it if (mAvatarObject) { mAvatarObject->updateVisualParams(); + mAvatarObject->invalidateAll(); } // Start rendering & update the server @@ -1704,6 +1861,7 @@ void LLAgentWearables::setWearableFinal(LLInventoryItem* new_item, LLWearable* n mWearableDatas[type].push_back(new_wearable); llinfos << "Added additional wearable for type " << type << " size is now " << mWearableDatas[type].size() << llendl; + checkWearableAgainstInventory(new_wearable); } else { @@ -2082,85 +2240,99 @@ void LLAgentWearables::updateServer() void LLAgentWearables::populateMyOutfitsFolder(void) { + llinfos << "starting outfit populate" << llendl; + LLLibraryOutfitsFetch* outfits = new LLLibraryOutfitsFetch(); - // What we do here is get the complete information on the items in - // the inventory, and set up an observer that will wait for that to - // happen. + // Get the complete information on the items in the inventory and + // setup an observer that will wait for that to happen. LLInventoryFetchDescendentsObserver::folder_ref_t folders; - const LLUUID my_outfits_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS); + outfits->mMyOutfitsID = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS); - folders.push_back(my_outfits_id); + folders.push_back(outfits->mMyOutfitsID); + gInventory.addObserver(outfits); outfits->fetchDescendents(folders); - if(outfits->isEverythingComplete()) + if (outfits->isEverythingComplete()) { - // everything is already here - call done. outfits->done(); } - else - { - // it's all on it's way - add an observer, and the inventory - // will call done for us when everything is here. - gInventory.addObserver(outfits); - } } void LLLibraryOutfitsFetch::done() { - switch (mCurrFetchStep){ + // Delay this until idle() routine, since it's a heavy operation and + // we also can't have it run within notifyObservers. + doOnIdle(boost::bind(&LLLibraryOutfitsFetch::doneIdle,this)); + gInventory.removeObserver(this); // Prevent doOnIdle from being added twice. +} + +void LLLibraryOutfitsFetch::doneIdle() +{ + gInventory.addObserver(this); // Add this back in since it was taken out during ::done() + + switch (mCurrFetchStep) + { case LOFS_FOLDER: - mCurrFetchStep = LOFS_OUTFITS; folderDone(); + mCurrFetchStep = LOFS_OUTFITS; break; case LOFS_OUTFITS: - mCurrFetchStep = LOFS_CONTENTS; outfitsDone(); + mCurrFetchStep = LOFS_LIBRARY; + break; + case LOFS_LIBRARY: + libraryDone(); + mCurrFetchStep = LOFS_IMPORTED; + break; + case LOFS_IMPORTED: + importedFolderDone(); + mCurrFetchStep = LOFS_CONTENTS; break; case LOFS_CONTENTS: - // No longer need this observer hanging around. - gInventory.removeObserver(this); contentsDone(); break; default: - gInventory.removeObserver(this); - delete this; - return; + llwarns << "Got invalid state for outfit fetch: " << mCurrFetchStep << llendl; + mOutfitsPopulated = TRUE; + break; } + + // We're completely done. Cleanup. if (mOutfitsPopulated) { + gInventory.removeObserver(this); delete this; + return; } } void LLLibraryOutfitsFetch::folderDone(void) { - // Early out if we already have items in My Outfits. LLInventoryModel::cat_array_t cat_array; LLInventoryModel::item_array_t wearable_array; - gInventory.collectDescendents(mCompleteFolders.front(), cat_array, wearable_array, + gInventory.collectDescendents(mMyOutfitsID, cat_array, wearable_array, LLInventoryModel::EXCLUDE_TRASH); + + // Early out if we already have items in My Outfits. if (cat_array.count() > 0 || wearable_array.count() > 0) { mOutfitsPopulated = true; - gInventory.removeObserver(this); return; } - // Get the UUID of the library's clothing folder - const LLUUID library_clothing_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING, false, true); + mClothingID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING); + mLibraryClothingID = gInventory.findCategoryUUIDForType(LLFolderType::FT_CLOTHING, false, true); mCompleteFolders.clear(); - // What we do here is get the complete information on the items in - // the inventory, and set up an observer that will wait for that to - // happen. + // Get the complete information on the items in the inventory. LLInventoryFetchDescendentsObserver::folder_ref_t folders; - folders.push_back(library_clothing_id); + folders.push_back(mClothingID); + folders.push_back(mLibraryClothingID); fetchDescendents(folders); - if(isEverythingComplete()) + if (isEverythingComplete()) { - // everything is already here - call done. - outfitsDone(); + done(); } } @@ -2168,39 +2340,185 @@ void LLLibraryOutfitsFetch::outfitsDone(void) { LLInventoryModel::cat_array_t cat_array; LLInventoryModel::item_array_t wearable_array; - gInventory.collectDescendents(mCompleteFolders.front(), cat_array, wearable_array, + LLInventoryFetchDescendentsObserver::folder_ref_t folders; + + // Collect the contents of the Library's Clothing folder + gInventory.collectDescendents(mLibraryClothingID, cat_array, wearable_array, LLInventoryModel::EXCLUDE_TRASH); - LLInventoryFetchDescendentsObserver::folder_ref_t folders; - for(S32 i = 0; i < cat_array.count(); ++i) + llassert(cat_array.count() > 0); + for (LLInventoryModel::cat_array_t::const_iterator iter = cat_array.begin(); + iter != cat_array.end(); + ++iter) + { + const LLViewerInventoryCategory *cat = iter->get(); + + // Get the names and id's of every outfit in the library, except for ruth and other "misc" outfits. + if (cat->getName() != "More Outfits" && cat->getName() != "Ruth") + { + // Get the name of every outfit in the library + folders.push_back(cat->getUUID()); + mLibraryClothingFolders.push_back(std::make_pair(cat->getUUID(), cat->getName())); + } + } + + // Collect the contents of your Inventory Clothing folder + cat_array.clear(); + wearable_array.clear(); + gInventory.collectDescendents(mClothingID, cat_array, wearable_array, + LLInventoryModel::EXCLUDE_TRASH); + + // Check if you already have an "Imported Library Clothing" folder + for (LLInventoryModel::cat_array_t::const_iterator iter = cat_array.begin(); + iter != cat_array.end(); + ++iter) { - if (cat_array.get(i)->getName() != "More Outfits" && cat_array.get(i)->getName() != "Ruth"){ - folders.push_back(cat_array.get(i)->getUUID()); - mOutfits.push_back( std::make_pair(cat_array.get(i)->getUUID(), cat_array.get(i)->getName() )); + const LLViewerInventoryCategory *cat = iter->get(); + if (cat->getName() == mImportedClothingName) + { + mImportedClothingID = cat->getUUID(); } } + mCompleteFolders.clear(); + fetchDescendents(folders); - if(isEverythingComplete()) + if (isEverythingComplete()) { - // everything is already here - call done. - contentsDone(); + done(); } } -void LLLibraryOutfitsFetch::contentsDone(void) +class LLLibraryOutfitsCopyDone: public LLInventoryCallback { - for(S32 i = 0; i < (S32)mOutfits.size(); ++i) +public: + LLLibraryOutfitsCopyDone(LLLibraryOutfitsFetch * fetcher): + mFireCount(0), mLibraryOutfitsFetcher(fetcher) + { + } + + virtual ~LLLibraryOutfitsCopyDone() + { + if (!LLApp::isExiting() && mLibraryOutfitsFetcher) + { + gInventory.addObserver(mLibraryOutfitsFetcher); + mLibraryOutfitsFetcher->done(); + } + } + + /* virtual */ void fire(const LLUUID& inv_item) + { + mFireCount++; + } +private: + U32 mFireCount; + LLLibraryOutfitsFetch * mLibraryOutfitsFetcher; +}; + +void LLLibraryOutfitsFetch::libraryDone(void) +{ + // Copy the clothing folders from the library into the imported clothing folder if necessary. + if (mImportedClothingID == LLUUID::null) + { + gInventory.removeObserver(this); + LLPointer<LLInventoryCallback> copy_waiter = new LLLibraryOutfitsCopyDone(this); + mImportedClothingID = gInventory.createNewCategory(mClothingID, + LLFolderType::FT_NONE, + mImportedClothingName); + + for (cloth_folder_vec_t::const_iterator iter = mLibraryClothingFolders.begin(); + iter != mLibraryClothingFolders.end(); + ++iter) + { + LLUUID folder_id = gInventory.createNewCategory(mImportedClothingID, + LLFolderType::FT_NONE, + iter->second); + LLAppearanceManager::getInstance()->shallowCopyCategoryContents(iter->first, folder_id, copy_waiter); + } + } + else + { + // Skip straight to fetching the contents of the imported folder + importedFolderFetch(); + } +} + +void LLLibraryOutfitsFetch::importedFolderFetch(void) +{ + // Fetch the contents of the Imported Clothing Folder + LLInventoryFetchDescendentsObserver::folder_ref_t folders; + folders.push_back(mImportedClothingID); + + mCompleteFolders.clear(); + + fetchDescendents(folders); + if (isEverythingComplete()) + { + done(); + } +} + +void LLLibraryOutfitsFetch::importedFolderDone(void) +{ + LLInventoryModel::cat_array_t cat_array; + LLInventoryModel::item_array_t wearable_array; + LLInventoryFetchDescendentsObserver::folder_ref_t folders; + + // Collect the contents of the Imported Clothing folder + gInventory.collectDescendents(mImportedClothingID, cat_array, wearable_array, + LLInventoryModel::EXCLUDE_TRASH); + + for (LLInventoryModel::cat_array_t::const_iterator iter = cat_array.begin(); + iter != cat_array.end(); + ++iter) + { + const LLViewerInventoryCategory *cat = iter->get(); + + // Get the name of every imported outfit + folders.push_back(cat->getUUID()); + mImportedClothingFolders.push_back(std::make_pair(cat->getUUID(), cat->getName())); + } + + mCompleteFolders.clear(); + fetchDescendents(folders); + if (isEverythingComplete()) + { + done(); + } +} + +void LLLibraryOutfitsFetch::contentsDone(void) +{ + LLInventoryModel::cat_array_t cat_array; + LLInventoryModel::item_array_t wearable_array; + + for (cloth_folder_vec_t::const_iterator folder_iter = mImportedClothingFolders.begin(); + folder_iter != mImportedClothingFolders.end(); + ++folder_iter) { // First, make a folder in the My Outfits directory. - const LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS); - LLUUID folder_id = gInventory.createNewCategory(parent_id, - LLFolderType::FT_OUTFIT, - mOutfits[i].second); + LLUUID new_outfit_folder_id = gInventory.createNewCategory(mMyOutfitsID, LLFolderType::FT_OUTFIT, folder_iter->second); - LLAppearanceManager::getInstance()->shallowCopyCategory(mOutfits[i].first, folder_id, NULL); - gInventory.notifyObservers(); + cat_array.clear(); + wearable_array.clear(); + // Collect the contents of each imported clothing folder, so we can create new outfit links for it + gInventory.collectDescendents(folder_iter->first, cat_array, wearable_array, + LLInventoryModel::EXCLUDE_TRASH); + + for (LLInventoryModel::item_array_t::const_iterator wearable_iter = wearable_array.begin(); + wearable_iter != wearable_array.end(); + ++wearable_iter) + { + const LLViewerInventoryItem *item = wearable_iter->get(); + link_inventory_item(gAgent.getID(), + item->getLinkedUUID(), + new_outfit_folder_id, + item->getName(), + LLAssetType::AT_LINK, + NULL); + } } + mOutfitsPopulated = true; } @@ -2242,6 +2560,8 @@ void LLInitialWearablesFetch::processContents() } else { + // if we're constructing the COF from the wearables message, we don't have a proper outfit link + LLAppearanceManager::instance().setOutfitDirty(true); processWearablesMessage(); } delete this; @@ -2252,7 +2572,7 @@ class LLFetchAndLinkObserver: public LLInventoryFetchObserver public: LLFetchAndLinkObserver(LLInventoryFetchObserver::item_ref_t& ids): m_ids(ids), - LLInventoryFetchObserver(true) + LLInventoryFetchObserver(true) // retry for missing items { } ~LLFetchAndLinkObserver() @@ -2261,7 +2581,9 @@ public: virtual void done() { gInventory.removeObserver(this); + // Link to all fetched items in COF. + LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy; for (LLInventoryFetchObserver::item_ref_t::iterator it = m_ids.begin(); it != m_ids.end(); ++it) @@ -2273,8 +2595,13 @@ public: llwarns << "fetch failed!" << llendl; continue; } - link_inventory_item(gAgent.getID(), item->getLinkedUUID(), LLAppearanceManager::instance().getCOF(), item->getName(), - LLAssetType::AT_LINK, LLPointer<LLInventoryCallback>(NULL)); + + link_inventory_item(gAgent.getID(), + item->getLinkedUUID(), + LLAppearanceManager::instance().getCOF(), + item->getName(), + LLAssetType::AT_LINK, + link_waiter); } } private: @@ -2297,16 +2624,19 @@ void LLInitialWearablesFetch::processWearablesMessage() #ifdef USE_CURRENT_OUTFIT_FOLDER ids.push_back(wearable_data->mItemID); #endif - // Fetch the wearables - LLWearableList::instance().getAsset(wearable_data->mAssetID, - LLStringUtil::null, - LLWearableDictionary::getAssetType(wearable_data->mType), - LLAgentWearables::onInitialWearableAssetArrived, (void*)(wearable_data)); +#if 0 +// // Fetch the wearables +// LLWearableList::instance().getAsset(wearable_data->mAssetID, +// LLStringUtil::null, +// LLWearableDictionary::getAssetType(wearable_data->mType), +// LLAgentWearables::onInitialWearableAssetArrived, (void*)(wearable_data)); +#endif } else { llinfos << "Invalid wearable, type " << wearable_data->mType << " itemID " << wearable_data->mItemID << " assetID " << wearable_data->mAssetID << llendl; + delete wearable_data; } } diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h index b4f58674af..858540a5f5 100644 --- a/indra/newview/llagentwearables.h +++ b/indra/newview/llagentwearables.h @@ -244,7 +244,8 @@ private: CALL_UPDATE = 1, CALL_RECOVERDONE = 2, CALL_CREATESTANDARDDONE = 4, - CALL_MAKENEWOUTFITDONE = 8 + CALL_MAKENEWOUTFITDONE = 8, + CALL_WEARITEM = 16 }; // MULTI-WEARABLE: index is an EWearableType - more confusing usage. diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp index 43b2f34ecd..5c21be8c32 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,48 @@ #include "llviewerregion.h" #include "llwearablelist.h" +LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id,const std::string& name) +{ + LLInventoryModel::cat_array_t cat_array; + LLInventoryModel::item_array_t item_array; + LLNameCategoryCollector has_name(name); + gInventory.collectDescendentsIf(parent_id, + cat_array, + item_array, + LLInventoryModel::EXCLUDE_TRASH, + has_name); + if (0 == cat_array.count()) + return LLUUID(); + else + { + LLViewerInventoryCategory *cat = cat_array.get(0); + if (cat) + return cat->getUUID(); + else + { + llwarns << "null cat" << llendl; + return LLUUID(); + } + } +} + +// 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) + { + // 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; + } +}; +LLAppearanceHandler gAppearanceHandler; + class LLWearInventoryCategoryCallback : public LLInventoryCallback { public: @@ -70,6 +113,8 @@ public: protected: ~LLWearInventoryCategoryCallback() { + llinfos << "done all inventory callbacks" << llendl; + // Is the destructor called by ordinary dereference, or because the app's shutting down? // If the inventory callback manager goes away, we're shutting down, no longer want the callback. if( LLInventoryCallbackManager::is_instantiated() ) @@ -107,12 +152,15 @@ protected: void LLOutfitObserver::done() { + llinfos << "done 2nd stage fetch" << llendl; gInventory.removeObserver(this); doOnIdle(boost::bind(&LLOutfitObserver::doWearCategory,this)); } void LLOutfitObserver::doWearCategory() { + llinfos << "starting" << llendl; + // We now have an outfit ready to be copied to agent inventory. Do // it, and wear that outfit normally. if(mCopyItems) @@ -201,6 +249,8 @@ void LLOutfitFetch::done() // What we do here is get the complete information on the items in // the library, and set up an observer that will wait for that to // happen. + llinfos << "done first stage fetch" << llendl; + LLInventoryModel::cat_array_t cat_array; LLInventoryModel::item_array_t item_array; gInventory.collectDescendents(mCompleteFolders.front(), @@ -251,61 +301,401 @@ void LLOutfitFetch::done() delete this; } -class LLUpdateAppearanceOnDestroy: public LLInventoryCallback +LLUpdateAppearanceOnDestroy::LLUpdateAppearanceOnDestroy(): + mFireCount(0) { -public: - LLUpdateAppearanceOnDestroy(): - mFireCount(0) - { - } +} - virtual ~LLUpdateAppearanceOnDestroy() +LLUpdateAppearanceOnDestroy::~LLUpdateAppearanceOnDestroy() +{ + llinfos << "done update appearance on destroy" << llendl; + + if (!LLApp::isExiting()) { LLAppearanceManager::instance().updateAppearanceFromCOF(); } +} - /* virtual */ void fire(const LLUUID& inv_item) - { - mFireCount++; - } -private: - U32 mFireCount; -}; +void LLUpdateAppearanceOnDestroy::fire(const LLUUID& inv_item) +{ + llinfos << "callback fired" << llendl; + mFireCount++; +} struct LLFoundData { + LLFoundData() : + mAssetType(LLAssetType::AT_NONE), + mWearableType(WT_INVALID), + mWearable(NULL) {} + LLFoundData(const LLUUID& item_id, const LLUUID& asset_id, const std::string& name, - LLAssetType::EType asset_type) : + const LLAssetType::EType& asset_type, + const EWearableType& wearable_type + ) : mItemID(item_id), mAssetID(asset_id), mName(name), mAssetType(asset_type), + mWearableType(wearable_type), mWearable( NULL ) {} LLUUID mItemID; LLUUID mAssetID; std::string mName; LLAssetType::EType mAssetType; + EWearableType mWearableType; LLWearable* mWearable; }; -struct LLWearableHoldingPattern +class LLWearableHoldingPattern { - LLWearableHoldingPattern() : mResolved(0) {} - ~LLWearableHoldingPattern() - { - for_each(mFoundList.begin(), mFoundList.end(), DeletePointer()); - mFoundList.clear(); - } - typedef std::list<LLFoundData*> found_list_t; +public: + LLWearableHoldingPattern(); + ~LLWearableHoldingPattern(); + + bool pollFetchCompletion(); + void onFetchCompletion(); + bool isFetchCompleted(); + bool isTimedOut(); + + void checkMissingWearables(); + bool pollMissingWearables(); + bool isMissingCompleted(); + void recoverMissingWearable(EWearableType type); + void clearCOFLinksForMissingWearables(); + + void onAllComplete(); + + typedef std::list<LLFoundData> found_list_t; found_list_t mFoundList; + LLInventoryModel::item_array_t mObjItems; + LLInventoryModel::item_array_t mGestItems; + typedef std::set<S32> type_set_t; + type_set_t mTypesToRecover; + type_set_t mTypesToLink; S32 mResolved; - bool append; + LLTimer mWaitTime; + bool mFired; +}; + +LLWearableHoldingPattern::LLWearableHoldingPattern(): + mResolved(0), + mFired(false) +{ +} + +LLWearableHoldingPattern::~LLWearableHoldingPattern() +{ +} + +bool LLWearableHoldingPattern::isFetchCompleted() +{ + return (mResolved >= (S32)mFoundList.size()); // have everything we were waiting for? +} + +bool LLWearableHoldingPattern::isTimedOut() +{ + static F32 max_wait_time = 20.0; // give up if wearable fetches haven't completed in max_wait_time seconds. + return mWaitTime.getElapsedTimeF32() > max_wait_time; +} + +void LLWearableHoldingPattern::checkMissingWearables() +{ + std::vector<S32> found_by_type(WT_COUNT,0); + std::vector<S32> requested_by_type(WT_COUNT,0); + for (found_list_t::iterator it = mFoundList.begin(); it != mFoundList.end(); ++it) + { + LLFoundData &data = *it; + if (data.mWearableType < WT_COUNT) + requested_by_type[data.mWearableType]++; + if (data.mWearable) + found_by_type[data.mWearableType]++; + } + + for (S32 type = 0; type < WT_COUNT; ++type) + { + llinfos << "type " << type << " requested " << requested_by_type[type] << " found " << found_by_type[type] << llendl; + if (found_by_type[type] > 0) + continue; + if ( + // Need to recover if at least one wearable of that type + // was requested but none was found (prevent missing + // pants) + (requested_by_type[type] > 0) || + // or if type is a body part and no wearables were found. + ((type == WT_SHAPE) || (type == WT_SKIN) || (type == WT_HAIR) || (type == WT_EYES))) + { + mTypesToRecover.insert(type); + mTypesToLink.insert(type); + recoverMissingWearable((EWearableType)type); + llwarns << "need to replace " << type << llendl; + } + } + + if (!pollMissingWearables()) + { + mWaitTime.reset(); + doOnIdleRepeating(boost::bind(&LLWearableHoldingPattern::pollMissingWearables,this)); + } +} + +void LLWearableHoldingPattern::onAllComplete() +{ + // Activate all gestures in this folder + if (mGestItems.count() > 0) + { + llinfos << "Activating " << mGestItems.count() << " gestures" << llendl; + + LLGestureManager::instance().activateGestures(mGestItems); + + // Update the inventory item labels to reflect the fact + // they are active. + LLViewerInventoryCategory* catp = + gInventory.getCategory(LLAppearanceManager::instance().getCOF()); + + if (catp) + { + gInventory.updateCategory(catp); + gInventory.notifyObservers(); + } + } + + // Update wearables. + llinfos << "Updating agent wearables with " << mResolved << " wearable items " << llendl; + LLAppearanceManager::instance().updateAgentWearables(this, false); + + // Update attachments to match those requested. + LLVOAvatar* avatar = gAgent.getAvatarObject(); + if( avatar ) + { + llinfos << "Updating " << mObjItems.count() << " attachments" << llendl; + LLAgentWearables::userUpdateAttachments(mObjItems); + } + + if (isFetchCompleted() && isMissingCompleted()) + { + // Only safe to delete if all wearable callbacks and all missing wearables completed. + delete this; + } +} + +void LLWearableHoldingPattern::onFetchCompletion() +{ + checkMissingWearables(); +} + +// Runs as an idle callback until all wearables are fetched (or we time out). +bool LLWearableHoldingPattern::pollFetchCompletion() +{ + bool completed = isFetchCompleted(); + bool timed_out = isTimedOut(); + bool done = completed || timed_out; + + llinfos << "polling, done status: " << completed << " timed out " << timed_out << " elapsed " << mWaitTime.getElapsedTimeF32() << llendl; + + if (done) + { + mFired = true; + + if (timed_out) + { + llwarns << "Exceeded max wait time for wearables, updating appearance based on what has arrived" << llendl; + } + + onFetchCompletion(); + } + return done; +} + +class RecoveredItemLinkCB: public LLInventoryCallback +{ +public: + RecoveredItemLinkCB(EWearableType type, LLWearable *wearable, LLWearableHoldingPattern* holder): + mHolder(holder), + mWearable(wearable), + mType(type) + { + } + void fire(const LLUUID& item_id) + { + llinfos << "Recovered item link for type " << mType << llendl; + mHolder->mTypesToLink.erase(mType); + // Add wearable to FoundData for actual wearing + LLViewerInventoryItem *item = gInventory.getItem(item_id); + LLViewerInventoryItem *linked_item = item ? item->getLinkedItem() : NULL; + + if (linked_item) + { + gInventory.addChangedMask(LLInventoryObserver::LABEL, linked_item->getUUID()); + + if (item) + { + LLFoundData found(linked_item->getUUID(), + linked_item->getAssetUUID(), + linked_item->getName(), + linked_item->getType(), + linked_item->isWearableType() ? linked_item->getWearableType() : WT_INVALID + ); + found.mWearable = mWearable; + mHolder->mFoundList.push_front(found); + } + else + { + llwarns << "inventory item not found for recovered wearable" << llendl; + } + } + else + { + llwarns << "inventory link not found for recovered wearable" << llendl; + } + } +private: + LLWearableHoldingPattern* mHolder; + LLWearable *mWearable; + EWearableType mType; +}; + +class RecoveredItemCB: public LLInventoryCallback +{ +public: + RecoveredItemCB(EWearableType type, LLWearable *wearable, LLWearableHoldingPattern* holder): + mHolder(holder), + mWearable(wearable), + mType(type) + { + } + void fire(const LLUUID& item_id) + { + llinfos << "Recovered item for type " << mType << llendl; + LLViewerInventoryItem *itemp = gInventory.getItem(item_id); + mWearable->setItemID(item_id); + LLPointer<LLInventoryCallback> cb = new RecoveredItemLinkCB(mType,mWearable,mHolder); + mHolder->mTypesToRecover.erase(mType); + llassert(itemp); + if (itemp) + { + link_inventory_item( gAgent.getID(), + item_id, + LLAppearanceManager::instance().getCOF(), + itemp->getName(), + LLAssetType::AT_LINK, + cb); + } + } +private: + LLWearableHoldingPattern* mHolder; + LLWearable *mWearable; + EWearableType mType; }; +void LLWearableHoldingPattern::recoverMissingWearable(EWearableType type) +{ + // Try to recover by replacing missing wearable with a new one. + LLNotificationsUtil::add("ReplacedMissingWearable"); + lldebugs << "Wearable " << LLWearableDictionary::getTypeLabel(type) + << " could not be downloaded. Replaced inventory item with default wearable." << llendl; + LLWearable* wearable = LLWearableList::instance().createNewWearable(type); + + // Add a new one in the lost and found folder. + const LLUUID lost_and_found_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LOST_AND_FOUND); + LLPointer<LLInventoryCallback> cb = new RecoveredItemCB(type,wearable,this); + + create_inventory_item(gAgent.getID(), + gAgent.getSessionID(), + lost_and_found_id, + wearable->getTransactionID(), + wearable->getName(), + wearable->getDescription(), + wearable->getAssetType(), + LLInventoryType::IT_WEARABLE, + wearable->getType(), + wearable->getPermissions().getMaskNextOwner(), + cb); +} + +bool LLWearableHoldingPattern::isMissingCompleted() +{ + return mTypesToLink.size()==0 && mTypesToRecover.size()==0; +} + +void LLWearableHoldingPattern::clearCOFLinksForMissingWearables() +{ + for (found_list_t::iterator it = mFoundList.begin(); it != mFoundList.end(); ++it) + { + LLFoundData &data = *it; + if ((data.mWearableType < WT_COUNT) && (!data.mWearable)) + { + // Wearable link that was never resolved; remove links to it from COF + llinfos << "removing link for unresolved item " << data.mItemID.asString() << llendl; + LLAppearanceManager::instance().removeCOFItemLinks(data.mItemID,false); + } + } +} + +bool LLWearableHoldingPattern::pollMissingWearables() +{ + bool timed_out = isTimedOut(); + bool missing_completed = isMissingCompleted(); + bool done = timed_out || missing_completed; + + llinfos << "polling missing wearables, waiting for items " << mTypesToRecover.size() + << " links " << mTypesToLink.size() + << " wearables, timed out " << timed_out + << " elapsed " << mWaitTime.getElapsedTimeF32() + << " done " << done << llendl; + + if (done) + { + clearCOFLinksForMissingWearables(); + onAllComplete(); + } + return done; +} + +static void onWearableAssetFetch(LLWearable* wearable, void* data) +{ + LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data; + holder->mResolved += 1; // just counting callbacks, not successes. + llinfos << "onWearableAssetFetch, resolved count " << holder->mResolved << " of requested " << holder->mFoundList.size() << llendl; + if (wearable) + { + llinfos << "wearable found, type " << wearable->getType() << " asset " << wearable->getAssetID() << llendl; + } + else + { + llwarns << "no wearable found" << llendl; + } + + if (holder->mFired) + { + llwarns << "called after holder fired" << llendl; + return; + } + + if (!wearable) + { + return; + } + + for (LLWearableHoldingPattern::found_list_t::iterator iter = holder->mFoundList.begin(); + iter != holder->mFoundList.end(); ++iter) + { + LLFoundData& data = *iter; + if(wearable->getAssetID() == data.mAssetID) + { + data.mWearable = wearable; + // Failing this means inventory or asset server are corrupted in a way we don't handle. + llassert((data.mWearableType < WT_COUNT) && (wearable->getType() == data.mWearableType)); + break; + } + } +} + + static void removeDuplicateItems(LLInventoryModel::item_array_t& items) { LLInventoryModel::item_array_t new_items; @@ -333,38 +723,13 @@ static void removeDuplicateItems(LLInventoryModel::item_array_t& items) items = new_items; } -static void onWearableAssetFetch(LLWearable* wearable, void* data) -{ - LLWearableHoldingPattern* holder = (LLWearableHoldingPattern*)data; - bool append = holder->append; - - if(wearable) - { - for (LLWearableHoldingPattern::found_list_t::iterator iter = holder->mFoundList.begin(); - iter != holder->mFoundList.end(); ++iter) - { - LLFoundData* data = *iter; - if(wearable->getAssetID() == data->mAssetID) - { - data->mWearable = wearable; - break; - } - } - } - holder->mResolved += 1; - if(holder->mResolved >= (S32)holder->mFoundList.size()) - { - LLAppearanceManager::instance().updateAgentWearables(holder, append); - } -} - -LLUUID LLAppearanceManager::getCOF() +const LLUUID LLAppearanceManager::getCOF() const { return gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); } -const LLViewerInventoryItem* LLAppearanceManager::getCurrentOutfitLink() +const LLViewerInventoryItem* LLAppearanceManager::getBaseOutfitLink() { const LLUUID& current_outfit_cat = getCOF(); LLInventoryModel::cat_array_t cat_array; @@ -392,6 +757,21 @@ const LLViewerInventoryItem* LLAppearanceManager::getCurrentOutfitLink() return NULL; } +bool LLAppearanceManager::getBaseOutfitName(std::string& name) +{ + const LLViewerInventoryItem* outfit_link = getBaseOutfitLink(); + if(outfit_link) + { + const LLViewerInventoryCategory *cat = outfit_link->getLinkedCategory(); + if (cat) + { + name = cat->getName(); + return true; + } + } + return false; +} + // Update appearance from outfit folder. void LLAppearanceManager::changeOutfit(bool proceed, const LLUUID& category, bool append) { @@ -400,9 +780,33 @@ void LLAppearanceManager::changeOutfit(bool proceed, const LLUUID& category, boo LLAppearanceManager::instance().updateCOF(category,append); } +// Create a copy of src_id + contents as a subfolder of dst_id. void LLAppearanceManager::shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id, LLPointer<LLInventoryCallback> cb) { + LLInventoryCategory *src_cat = gInventory.getCategory(src_id); + if (!src_cat) + { + llwarns << "folder not found for src " << src_id.asString() << llendl; + return; + } + LLUUID parent_id = dst_id; + if(parent_id.isNull()) + { + parent_id = gInventory.getRootFolderID(); + } + LLUUID subfolder_id = gInventory.createNewCategory( parent_id, + LLFolderType::FT_NONE, + src_cat->getName()); + shallowCopyCategoryContents(src_id, subfolder_id, cb); + + gInventory.notifyObservers(); +} + +// Copy contents of src_id to dst_id. +void LLAppearanceManager::shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id, + LLPointer<LLInventoryCallback> cb) +{ LLInventoryModel::cat_array_t cats; LLInventoryModel::item_array_t items; gInventory.collectDescendents(src_id, cats, items, @@ -444,6 +848,28 @@ void LLAppearanceManager::shallowCopyCategory(const LLUUID& src_id, const LLUUID } } +void LLAppearanceManager::purgeBaseOutfitLink(const LLUUID& category) +{ + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + gInventory.collectDescendents(category, cats, items, + LLInventoryModel::EXCLUDE_TRASH); + for (S32 i = 0; i < items.count(); ++i) + { + LLViewerInventoryItem *item = items.get(i); + if (item->getActualType() != LLAssetType::AT_LINK_FOLDER) + continue; + if (item->getIsLinkType()) + { + LLViewerInventoryCategory* catp = item->getLinkedCategory(); + if(catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT) + { + gInventory.purgeObject(item->getUUID()); + } + } + } +} + void LLAppearanceManager::purgeCategory(const LLUUID& category, bool keep_outfit_links) { LLInventoryModel::cat_array_t cats; @@ -476,6 +902,11 @@ void LLAppearanceManager::filterWearableItems( if (!item->isWearableType()) continue; EWearableType type = item->getWearableType(); + if(type < 0 || type >= WT_COUNT) + { + LL_WARNS("Appearance") << "Invalid wearable type. Inventory type does not match wearable flag bitfield." << LL_ENDL; + continue; + } items_by_type[type].push_back(item); } @@ -513,6 +944,9 @@ void LLAppearanceManager::linkAll(const LLUUID& category, void LLAppearanceManager::updateCOF(const LLUUID& category, bool append) { + LLViewerInventoryCategory *pcat = gInventory.getCategory(category); + llinfos << "starting, cat " << (pcat ? pcat->getName() : "[UNKNOWN]") << llendl; + const LLUUID cof = getCOF(); // Deactivate currently active gestures in the COF, if replacing outfit @@ -570,6 +1004,7 @@ void LLAppearanceManager::updateCOF(const LLUUID& category, bool append) gInventory.notifyObservers(); // Create links to new COF contents. + llinfos << "creating LLUpdateAppearanceOnDestroy" << llendl; LLPointer<LLInventoryCallback> link_waiter = new LLUpdateAppearanceOnDestroy; linkAll(cof, body_items, link_waiter); @@ -578,18 +1013,11 @@ void LLAppearanceManager::updateCOF(const LLUUID& category, bool append) linkAll(cof, gest_items, link_waiter); // Add link to outfit if category is an outfit. - LLViewerInventoryCategory* catp = gInventory.getCategory(category); if (!append) { - std::string new_outfit_name = ""; - if (catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT) - { - link_inventory_item(gAgent.getID(), category, cof, catp->getName(), - LLAssetType::AT_LINK_FOLDER, link_waiter); - new_outfit_name = catp->getName(); - } - updatePanelOutfitName(new_outfit_name); + createBaseOutfitLink(category, link_waiter); } + llinfos << "waiting for LLUpdateAppearanceOnDestroy" << llendl; } void LLAppearanceManager::updatePanelOutfitName(const std::string& name) @@ -602,6 +1030,23 @@ void LLAppearanceManager::updatePanelOutfitName(const std::string& name) } } +void LLAppearanceManager::createBaseOutfitLink(const LLUUID& category, LLPointer<LLInventoryCallback> link_waiter) +{ + const LLUUID cof = getCOF(); + LLViewerInventoryCategory* catp = gInventory.getCategory(category); + std::string new_outfit_name = ""; + + purgeBaseOutfitLink(cof); + + if (catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT) + { + link_inventory_item(gAgent.getID(), category, cof, catp->getName(), + LLAssetType::AT_LINK_FOLDER, link_waiter); + new_outfit_name = catp->getName(); + } + + updatePanelOutfitName(new_outfit_name); +} void LLAppearanceManager::updateAgentWearables(LLWearableHoldingPattern* holder, bool append) { @@ -616,12 +1061,12 @@ void LLAppearanceManager::updateAgentWearables(LLWearableHoldingPattern* holder, for (LLWearableHoldingPattern::found_list_t::iterator iter = holder->mFoundList.begin(); iter != holder->mFoundList.end(); ++iter) { - LLFoundData* data = *iter; - LLWearable* wearable = data->mWearable; + LLFoundData& data = *iter; + LLWearable* wearable = data.mWearable; if( wearable && ((S32)wearable->getType() == i) ) { LLViewerInventoryItem* item; - item = (LLViewerInventoryItem*)gInventory.getItem(data->mItemID); + item = (LLViewerInventoryItem*)gInventory.getItem(data.mItemID); if( item && (item->getAssetUUID() == wearable->getAssetID()) ) { items.put(item); @@ -637,13 +1082,17 @@ void LLAppearanceManager::updateAgentWearables(LLWearableHoldingPattern* holder, gAgentWearables.setWearableOutfit(items, wearables, !append); } - delete holder; - // dec_busy_count(); } void LLAppearanceManager::updateAppearanceFromCOF() { + // update dirty flag to see if the state of the COF matches + // the saved outfit stored as a folder link + llinfos << "starting" << llendl; + + updateIsDirty(); + dumpCat(getCOF(),"COF, start"); bool follow_folder_links = true; @@ -656,70 +1105,85 @@ void LLAppearanceManager::updateAppearanceFromCOF() LLInventoryModel::item_array_t gest_items; getUserDescendents(current_outfit_id, wear_items, obj_items, gest_items, follow_folder_links); - if( !wear_items.count() && !obj_items.count() && !gest_items.count()) + if(!wear_items.count()) { LLNotificationsUtil::add("CouldNotPutOnOutfit"); return; } - - // Processes that take time should show the busy cursor - //inc_busy_count(); // BAP this is currently a no-op in llinventorybridge.cpp - do we need it? - - // Activate all gestures in this folder - if (gest_items.count() > 0) - { - llinfos << "Activating " << gest_items.count() << " gestures" << llendl; - - LLGestureManager::instance().activateGestures(gest_items); - // Update the inventory item labels to reflect the fact - // they are active. - LLViewerInventoryCategory* catp = gInventory.getCategory(current_outfit_id); - if (catp) - { - gInventory.updateCategory(catp); - gInventory.notifyObservers(); - } - } + LLWearableHoldingPattern* holder = new LLWearableHoldingPattern; - if(wear_items.count() > 0) + holder->mObjItems = obj_items; + holder->mGestItems = gest_items; + + // Note: can't do normal iteration, because if all the + // wearables can be resolved immediately, then the + // callback will be called (and this object deleted) + // before the final getNextData(). + + // BAP future cleanup - no point having found_container when + // mFoundList already has all the info. + LLDynamicArray<LLFoundData> found_container; + for(S32 i = 0; i < wear_items.count(); ++i) { - // Note: can't do normal iteration, because if all the - // wearables can be resolved immediately, then the - // callback will be called (and this object deleted) - // before the final getNextData(). - LLWearableHoldingPattern* holder = new LLWearableHoldingPattern; - LLFoundData* found; - LLDynamicArray<LLFoundData*> found_container; - for(S32 i = 0; i < wear_items.count(); ++i) + LLViewerInventoryItem *item = wear_items.get(i); + LLViewerInventoryItem *linked_item = item ? item->getLinkedItem() : NULL; + if (item && linked_item) { - found = new LLFoundData(wear_items.get(i)->getLinkedUUID(), // Wear the base item, not the link - wear_items.get(i)->getAssetUUID(), - wear_items.get(i)->getName(), - wear_items.get(i)->getType()); + LLFoundData found(linked_item->getUUID(), + linked_item->getAssetUUID(), + linked_item->getName(), + linked_item->getType(), + linked_item->isWearableType() ? linked_item->getWearableType() : WT_INVALID + ); + +#if 0 + // Fault injection: uncomment this block to test asset + // fetch failures (should be replaced by new defaults in + // lost&found). + if (found.mWearableType == WT_SHAPE || found.mWearableType == WT_JACKET) + { + found.mAssetID.generate(); // Replace with new UUID, guaranteed not to exist in DB + + } +#endif + holder->mFoundList.push_front(found); found_container.put(found); } - for(S32 i = 0; i < wear_items.count(); ++i) + else { - holder->append = false; - found = found_container.get(i); - - // Fetch the wearables about to be worn. - LLWearableList::instance().getAsset(found->mAssetID, - found->mName, - found->mAssetType, - onWearableAssetFetch, - (void*)holder); + if (!item) + { + llwarns << "attempt to wear a null item " << llendl; + } + else if (!linked_item) + { + llwarns << "attempt to wear a broken link " << item->getName() << llendl; + } } } - // Update attachments to match those requested. - LLVOAvatar* avatar = gAgent.getAvatarObject(); - if( avatar ) + for(S32 i = 0; i < found_container.count(); ++i) { - LLAgentWearables::userUpdateAttachments(obj_items); + LLFoundData& found = found_container.get(i); + + llinfos << "waiting for onWearableAssetFetch callback, asset " << found.mAssetID.asString() << llendl; + + // Fetch the wearables about to be worn. + LLWearableList::instance().getAsset(found.mAssetID, + found.mName, + found.mAssetType, + onWearableAssetFetch, + (void*)holder); + } + + if (!holder->pollFetchCompletion()) + { + doOnIdleRepeating(boost::bind(&LLWearableHoldingPattern::pollFetchCompletion,holder)); + } + } void LLAppearanceManager::getDescendentsOfAssetType(const LLUUID& category, @@ -776,8 +1240,9 @@ void LLAppearanceManager::wearInventoryCategory(LLInventoryCategory* category, b { if(!category) return; - lldebugs << "wearInventoryCategory( " << category->getName() + llinfos << "wearInventoryCategory( " << category->getName() << " )" << llendl; + // What we do here is get the complete information on the items in // the inventory, and set up an observer that will wait for that to // happen. @@ -806,7 +1271,8 @@ void LLAppearanceManager::wearInventoryCategoryOnAvatar( LLInventoryCategory* ca // this up front to avoid having to deal with the case of multiple // wearables being dirty. if(!category) return; - lldebugs << "wearInventoryCategoryOnAvatar( " << category->getName() + + llinfos << "wearInventoryCategoryOnAvatar( " << category->getName() << " )" << llendl; if( gFloaterCustomize ) @@ -949,7 +1415,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()); @@ -959,7 +1424,9 @@ void LLAppearanceManager::addCOFItemLink(const LLInventoryItem *item, bool do_up if (linked_already) { if (do_update) + { LLAppearanceManager::updateAppearanceFromCOF(); + } return; } else @@ -1013,6 +1480,92 @@ void LLAppearanceManager::removeCOFItemLinks(const LLUUID& item_id, bool do_upda } } +void LLAppearanceManager::updateIsDirty() +{ + LLUUID cof = getCOF(); + LLUUID base_outfit; + + // find base outfit link + const LLViewerInventoryItem* base_outfit_item = getBaseOutfitLink(); + LLViewerInventoryCategory* catp = NULL; + if (base_outfit_item && base_outfit_item->getIsLinkType()) + { + catp = base_outfit_item->getLinkedCategory(); + } + if(catp && catp->getPreferredType() == LLFolderType::FT_OUTFIT) + { + base_outfit = catp->getUUID(); + } + + if(base_outfit.isNull()) + { + // no outfit link found, display "unsaved outfit" + mOutfitIsDirty = true; + } + else + { + LLInventoryModel::cat_array_t cof_cats; + LLInventoryModel::item_array_t cof_items; + gInventory.collectDescendents(cof, cof_cats, cof_items, + LLInventoryModel::EXCLUDE_TRASH); + + LLInventoryModel::cat_array_t outfit_cats; + LLInventoryModel::item_array_t outfit_items; + gInventory.collectDescendents(base_outfit, outfit_cats, outfit_items, + LLInventoryModel::EXCLUDE_TRASH); + + if(outfit_items.count() != cof_items.count() -1) + { + // Current outfit folder should have one more item than the outfit folder. + // this one item is the link back to the outfit folder itself. + mOutfitIsDirty = true; + } + else + { + typedef std::set<LLUUID> item_set_t; + item_set_t cof_set; + item_set_t outfit_set; + + // sort COF items by UUID + for (S32 i = 0; i < cof_items.count(); ++i) + { + LLViewerInventoryItem *item = cof_items.get(i); + // don't add the base outfit link to the list of objects we're comparing + if(item != base_outfit_item) + { + cof_set.insert(item->getLinkedUUID()); + } + } + + // sort outfit folder by UUID + for (S32 i = 0; i < outfit_items.count(); ++i) + { + LLViewerInventoryItem *item = outfit_items.get(i); + outfit_set.insert(item->getLinkedUUID()); + } + + mOutfitIsDirty = (outfit_set != cof_set); + } + } +} + +void LLAppearanceManager::onFirstFullyVisible() +{ + // If this is the very first time the user has logged into viewer2+ (from a legacy viewer, or new account) + // then auto-populate outfits from the library into the My Outfits folder. + + llinfos << "avatar fully visible" << llendl; + + static bool check_populate_my_outfits = true; + if (check_populate_my_outfits && + (LLInventoryModel::getIsFirstTimeInViewer2() + || gSavedSettings.getBOOL("MyOutfitsAutofill"))) + { + gAgentWearables.populateMyOutfitsFolder(); + } + check_populate_my_outfits = false; +} + //#define DUMP_CAT_VERBOSE void LLAppearanceManager::dumpCat(const LLUUID& cat_id, const std::string& msg) @@ -1049,7 +1602,8 @@ void LLAppearanceManager::dumpItemArray(const LLInventoryModel::item_array_t& it } LLAppearanceManager::LLAppearanceManager(): - mAttachmentInvLinkEnabled(false) + mAttachmentInvLinkEnabled(false), + mOutfitIsDirty(false) { } @@ -1125,3 +1679,29 @@ void LLAppearanceManager::linkRegisteredAttachments() } mRegisteredAttachments.clear(); } + +BOOL LLAppearanceManager::getIsInCOF(const LLUUID& obj_id) const +{ + return gInventory.isObjectDescendentOf(obj_id, getCOF()); +} + +BOOL LLAppearanceManager::getIsProtectedCOFItem(const LLUUID& obj_id) const +{ + if (!getIsInCOF(obj_id)) return FALSE; + + // For now, don't allow direct deletion from the COF. Instead, force users + // to choose "Detach" or "Take Off". + return TRUE; + /* + const LLInventoryObject *obj = gInventory.getObject(obj_id); + if (!obj) return FALSE; + + // Can't delete bodyparts, since this would be equivalent to removing the item. + if (obj->getType() == LLAssetType::AT_BODYPART) return TRUE; + + // Can't delete the folder link, since this is saved for bookkeeping. + if (obj->getActualType() == LLAssetType::AT_LINK_FOLDER) return TRUE; + + return FALSE; + */ +} diff --git a/indra/newview/llappearancemgr.h b/indra/newview/llappearancemgr.h index b625d42a50..e7e2f33520 100644 --- a/indra/newview/llappearancemgr.h +++ b/indra/newview/llappearancemgr.h @@ -35,11 +35,13 @@ #include "llsingleton.h" #include "llinventorymodel.h" +#include "llinventoryobserver.h" #include "llviewerinventory.h" #include "llcallbacklist.h" class LLWearable; -struct LLWearableHoldingPattern; +class LLWearableHoldingPattern; +class LLInventoryCallback; class LLAppearanceManager: public LLSingleton<LLAppearanceManager> { @@ -54,19 +56,26 @@ public: void wearOutfitByName(const std::string& name); void changeOutfit(bool proceed, const LLUUID& category, bool append); - // Copy all items in a category. + // Copy all items and the src category itself. void shallowCopyCategory(const LLUUID& src_id, const LLUUID& dst_id, LLPointer<LLInventoryCallback> cb); + // Copy all items in a category. + void shallowCopyCategoryContents(const LLUUID& src_id, const LLUUID& dst_id, + LLPointer<LLInventoryCallback> cb); + // Find the Current Outfit folder. - LLUUID getCOF(); + const LLUUID getCOF() const; // Finds the folder link to the currently worn outfit - const LLViewerInventoryItem *getCurrentOutfitLink(); + const LLViewerInventoryItem *getBaseOutfitLink(); + bool getBaseOutfitName(std::string &name); // Update the displayed outfit name in UI. void updatePanelOutfitName(const std::string& name); + void createBaseOutfitLink(const LLUUID& category, LLPointer<LLInventoryCallback> link_waiter); + void updateAgentWearables(LLWearableHoldingPattern* holder, bool append); // For debugging - could be moved elsewhere. @@ -94,6 +103,19 @@ public: // Add COF link to ensemble folder. void addEnsembleLink(LLInventoryCategory* item, bool do_update = true); + //has the current outfit changed since it was loaded? + bool isOutfitDirty() { return mOutfitIsDirty; } + + // set false if you just loaded the outfit, true otherwise + void setOutfitDirty(bool isDirty) { mOutfitIsDirty = isDirty; } + + // manually compare ouftit folder link to COF to see if outfit has changed. + // should only be necessary to do on initial login. + void updateIsDirty(); + + // Called when self avatar is first fully visible. + void onFirstFullyVisible(); + protected: LLAppearanceManager(); ~LLAppearanceManager(); @@ -114,13 +136,37 @@ private: bool follow_folder_links); void purgeCategory(const LLUUID& category, bool keep_outfit_links); + void purgeBaseOutfitLink(const LLUUID& category); std::set<LLUUID> mRegisteredAttachments; bool mAttachmentInvLinkEnabled; + bool mOutfitIsDirty; + + ////////////////////////////////////////////////////////////////////////////////// + // Item-specific convenience functions +public: + // Is this in the COF? + BOOL getIsInCOF(const LLUUID& obj_id) const; + // Is this in the COF and can the user delete it from the COF? + BOOL getIsProtectedCOFItem(const LLUUID& obj_id) const; }; +class LLUpdateAppearanceOnDestroy: public LLInventoryCallback +{ +public: + LLUpdateAppearanceOnDestroy(); + virtual ~LLUpdateAppearanceOnDestroy(); + /* virtual */ void fire(const LLUUID& inv_item); + +private: + U32 mFireCount; +}; + + #define SUPPORT_ENSEMBLES 0 +LLUUID findDescendentCategoryIDByName(const LLUUID& parent_id,const std::string& name); + // Shim class and template function to allow arbitrary boost::bind // expressions to be run as one-time idle callbacks. template <typename T> @@ -153,4 +199,139 @@ void doOnIdle(T callable) gIdleCallbacks.addFunction(&OnIdleCallback<T>::onIdle,cb_functor); } +// Shim class and template function to allow arbitrary boost::bind +// expressions to be run as recurring idle callbacks. +template <typename T> +class OnIdleCallbackRepeating +{ +public: + OnIdleCallbackRepeating(T callable): + mCallable(callable) + { + } + // Will keep getting called until the callable returns false. + static void onIdle(void *data) + { + OnIdleCallbackRepeating<T>* self = reinterpret_cast<OnIdleCallbackRepeating<T>*>(data); + bool done = self->call(); + if (done) + { + gIdleCallbacks.deleteFunction(onIdle, data); + delete self; + } + } + bool call() + { + return mCallable(); + } +private: + T mCallable; +}; + +template <typename T> +void doOnIdleRepeating(T callable) +{ + OnIdleCallbackRepeating<T>* cb_functor = new OnIdleCallbackRepeating<T>(callable); + gIdleCallbacks.addFunction(&OnIdleCallbackRepeating<T>::onIdle,cb_functor); +} + +template <class T> +class CallAfterCategoryFetchStage2: public LLInventoryFetchObserver +{ +public: + CallAfterCategoryFetchStage2(T callable): + mCallable(callable) + { + } + ~CallAfterCategoryFetchStage2() + { + } + virtual void done() + { + gInventory.removeObserver(this); + doOnIdle(mCallable); + delete this; + } +protected: + T mCallable; +}; + +template <class T> +class CallAfterCategoryFetchStage1: public LLInventoryFetchDescendentsObserver +{ +public: + CallAfterCategoryFetchStage1(T callable): + mCallable(callable) + { + } + ~CallAfterCategoryFetchStage1() + { + } + virtual void done() + { + // What we do here is get the complete information on the items in + // the library, and set up an observer that will wait for that to + // happen. + LLInventoryModel::cat_array_t cat_array; + LLInventoryModel::item_array_t item_array; + gInventory.collectDescendents(mCompleteFolders.front(), + cat_array, + item_array, + LLInventoryModel::EXCLUDE_TRASH); + S32 count = item_array.count(); + if(!count) + { + llwarns << "Nothing fetched in category " << mCompleteFolders.front() + << llendl; + //dec_busy_count(); + gInventory.removeObserver(this); + delete this; + return; + } + + CallAfterCategoryFetchStage2<T> *stage2 = new CallAfterCategoryFetchStage2<T>(mCallable); + LLInventoryFetchObserver::item_ref_t ids; + for(S32 i = 0; i < count; ++i) + { + ids.push_back(item_array.get(i)->getUUID()); + } + + gInventory.removeObserver(this); + + // do the fetch + stage2->fetchItems(ids); + if(stage2->isEverythingComplete()) + { + // everything is already here - call done. + stage2->done(); + } + else + { + // it's all on it's way - add an observer, and the inventory + // will call done for us when everything is here. + gInventory.addObserver(stage2); + } + delete this; + } +protected: + T mCallable; +}; + +template <class T> +void callAfterCategoryFetch(const LLUUID& cat_id, T callable) +{ + CallAfterCategoryFetchStage1<T> *stage1 = new CallAfterCategoryFetchStage1<T>(callable); + LLInventoryFetchDescendentsObserver::folder_ref_t folders; + folders.push_back(cat_id); + stage1->fetchDescendents(folders); + if (stage1->isEverythingComplete()) + { + stage1->done(); + } + else + { + gInventory.addObserver(stage1); + } +} + #endif diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index becc30832d..948d38befb 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -40,6 +40,7 @@ #include "lluictrlfactory.h" #include "lltexteditor.h" #include "llerrorcontrol.h" +#include "lleventtimer.h" #include "llviewertexturelist.h" #include "llgroupmgr.h" #include "llagent.h" @@ -71,7 +72,7 @@ #include "lluicolortable.h" #include "llurldispatcher.h" #include "llurlhistory.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llrender.h" #include "llteleporthistory.h" #include "lllocationhistory.h" @@ -163,7 +164,6 @@ #include "llvotree.h" #include "llvoavatar.h" #include "llfolderview.h" -#include "lltoolbar.h" #include "llagentpilot.h" #include "llvovolume.h" #include "llflexibleobject.h" @@ -313,6 +313,7 @@ void init_default_trans_args() { default_trans_args.insert("SECOND_LIFE"); // World default_trans_args.insert("APP_NAME"); + default_trans_args.insert("CAPITALIZED_APP_NAME"); default_trans_args.insert("SECOND_LIFE_GRID"); default_trans_args.insert("SUPPORT_SITE"); } @@ -413,7 +414,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"); @@ -925,7 +925,6 @@ bool LLAppViewer::mainLoop() { LLMemType mt1(LLMemType::MTYPE_MAIN); mMainloopTimeout = new LLWatchdogTimeout(); - // *FIX:Mani - Make this a setting, once new settings exist in this branch. //------------------------------------------- // Run main loop until time to quit @@ -935,12 +934,13 @@ bool LLAppViewer::mainLoop() gServicePump = new LLPumpIO(gAPRPoolp); LLHTTPClient::setPump(*gServicePump); LLCurl::setCAFile(gDirUtilp->getCAFile()); + LLCurl::setSSLVerify(! gSavedSettings.getBOOL("NoVerifySSLCert")); // Note: this is where gLocalSpeakerMgr and gActiveSpeakerMgr used to be instantiated. LLVoiceChannel::initClass(); LLVoiceClient::init(gServicePump); - + LLTimer frameTimer,idleTimer; LLTimer debugTime; LLViewerJoystick* joystick(LLViewerJoystick::getInstance()); @@ -1354,9 +1354,6 @@ bool LLAppViewer::cleanup() llinfos << "Cache files removed" << llendflush; - - cleanup_menus(); - // Wait for any pending VFS IO while (1) { @@ -1375,7 +1372,7 @@ bool LLAppViewer::cleanup() if( gViewerWindow) gViewerWindow->shutdownViews(); - llinfos << "Cleaning up Inevntory" << llendflush; + llinfos << "Cleaning up Inventory" << llendflush; // Cleanup Inventory after the UI since it will delete any remaining observers // (Deleted observers should have already removed themselves) @@ -1477,10 +1474,17 @@ bool LLAppViewer::cleanup() LLUIColorTable::instance().saveUserSettings(); - // PerAccountSettingsFile should be empty if no use has been logged on. + // PerAccountSettingsFile should be empty if no user has been logged on. // *FIX:Mani This should get really saved in a "logoff" mode. - gSavedPerAccountSettings.saveToFile(gSavedSettings.getString("PerAccountSettingsFile"), TRUE); - llinfos << "Saved settings" << llendflush; + if (gSavedSettings.getString("PerAccountSettingsFile").empty()) + { + llinfos << "Not saving per-account settings; don't know the account name yet." << llendl; + } + else + { + gSavedPerAccountSettings.saveToFile(gSavedSettings.getString("PerAccountSettingsFile"), TRUE); + llinfos << "Saved settings" << llendflush; + } std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE); // save all settings, even if equals defaults @@ -1675,7 +1679,7 @@ bool LLAppViewer::initThreads() // Image decoding LLAppViewer::sImageDecodeThread = new LLImageDecodeThread(enable_threads && true); LLAppViewer::sTextureCache = new LLTextureCache(enable_threads && true); - LLAppViewer::sTextureFetch = new LLTextureFetch(LLAppViewer::getTextureCache(), sImageDecodeThread, enable_threads && false); + LLAppViewer::sTextureFetch = new LLTextureFetch(LLAppViewer::getTextureCache(), sImageDecodeThread, enable_threads && true); LLImage::initClass(); if (LLFastTimer::sLog || LLFastTimer::sMetricLog) @@ -1914,26 +1918,24 @@ bool LLAppViewer::initConfiguration() // These are warnings that appear on the first experience of that condition. // They are already set in the settings_default.xml file, but still need to be added to LLFirstUse // for disable/reset ability - LLFirstUse::addConfigVariable("FirstBalanceIncrease"); - LLFirstUse::addConfigVariable("FirstBalanceDecrease"); - LLFirstUse::addConfigVariable("FirstSit"); - LLFirstUse::addConfigVariable("FirstMap"); - LLFirstUse::addConfigVariable("FirstGoTo"); - LLFirstUse::addConfigVariable("FirstBuild"); +// LLFirstUse::addConfigVariable("FirstBalanceIncrease"); +// LLFirstUse::addConfigVariable("FirstBalanceDecrease"); +// LLFirstUse::addConfigVariable("FirstSit"); +// LLFirstUse::addConfigVariable("FirstMap"); +// LLFirstUse::addConfigVariable("FirstGoTo"); +// LLFirstUse::addConfigVariable("FirstBuild"); // LLFirstUse::addConfigVariable("FirstLeftClickNoHit"); - LLFirstUse::addConfigVariable("FirstTeleport"); - LLFirstUse::addConfigVariable("FirstOverrideKeys"); - LLFirstUse::addConfigVariable("FirstAttach"); - LLFirstUse::addConfigVariable("FirstAppearance"); - LLFirstUse::addConfigVariable("FirstInventory"); - LLFirstUse::addConfigVariable("FirstSandbox"); - LLFirstUse::addConfigVariable("FirstFlexible"); - LLFirstUse::addConfigVariable("FirstDebugMenus"); - LLFirstUse::addConfigVariable("FirstStreamingMusic"); - LLFirstUse::addConfigVariable("FirstStreamingVideo"); - LLFirstUse::addConfigVariable("FirstSculptedPrim"); - LLFirstUse::addConfigVariable("FirstVoice"); - LLFirstUse::addConfigVariable("FirstMedia"); +// LLFirstUse::addConfigVariable("FirstTeleport"); +// LLFirstUse::addConfigVariable("FirstOverrideKeys"); +// LLFirstUse::addConfigVariable("FirstAttach"); +// LLFirstUse::addConfigVariable("FirstAppearance"); +// LLFirstUse::addConfigVariable("FirstInventory"); +// LLFirstUse::addConfigVariable("FirstSandbox"); +// LLFirstUse::addConfigVariable("FirstFlexible"); +// LLFirstUse::addConfigVariable("FirstDebugMenus"); +// LLFirstUse::addConfigVariable("FirstSculptedPrim"); +// LLFirstUse::addConfigVariable("FirstVoice"); +// LLFirstUse::addConfigVariable("FirstMedia"); // - read command line settings. LLControlGroupCLP clp; @@ -2360,9 +2362,6 @@ bool LLAppViewer::initWindow() // store setting in a global for easy access and modification gNoRender = gSavedSettings.getBOOL("DisableRendering"); - // Hide the splash screen - LLSplashScreen::hide(); - // always start windowed BOOL ignorePixelDepth = gSavedSettings.getBOOL("IgnorePixelDepth"); gViewerWindow = new LLViewerWindow(gWindowTitle, @@ -2678,7 +2677,7 @@ void LLAppViewer::handleViewerCrash() gMessageSystem->stopLogging(); } - LLWorld::getInstance()->getInfo(gDebugInfo); + if (LLWorld::instanceExists()) LLWorld::getInstance()->getInfo(gDebugInfo); // Close the debug file pApp->writeDebugInfo(); @@ -2886,7 +2885,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) @@ -2998,7 +3004,7 @@ bool LLAppViewer::initCache() // Purge cache if it belongs to an old version else { - static const S32 cache_version = 5; + static const S32 cache_version = 6; if (gSavedSettings.getS32("LocalCacheVersion") != cache_version) { mPurgeCache = true; @@ -3587,13 +3593,15 @@ void LLAppViewer::idle() { // Handle pending gesture processing + static LLFastTimer::DeclareTimer ftm("Agent Position"); + LLFastTimer t(ftm); LLGestureManager::instance().update(); gAgent.updateAgentPosition(gFrameDTClamped, yaw, current_mouse.mX, current_mouse.mY); } { - LLFastTimer t(FTM_OBJECTLIST_UPDATE); // Actually "object update" + LLFastTimer t(FTM_OBJECTLIST_UPDATE); if (!(logoutRequestSent() && hasSavedFinalSnapshot())) { @@ -3627,6 +3635,8 @@ void LLAppViewer::idle() // { + static LLFastTimer::DeclareTimer ftm("HUD Effects"); + LLFastTimer t(ftm); LLSelectMgr::getInstance()->updateEffects(); LLHUDManager::getInstance()->cleanupEffects(); LLHUDManager::getInstance()->sendEffects(); @@ -3883,7 +3893,7 @@ void LLAppViewer::sendLogoutRequest() static F32 CheckMessagesMaxTime = CHECK_MESSAGES_DEFAULT_MAX_TIME; #endif -static LLFastTimer::DeclareTimer FTM_IDLE_NETWORK("Network"); +static LLFastTimer::DeclareTimer FTM_IDLE_NETWORK("Idle Network"); void LLAppViewer::idleNetwork() { @@ -4398,3 +4408,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 40e74061b5..a915b7fa50 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -36,6 +36,7 @@ #include "llallocator.h" #include "llcontrol.h" #include "llsys.h" // for LLOSInfo +#include "lltimer.h" class LLCommandLineParser; class LLFrameTimer; @@ -168,6 +169,10 @@ public: 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 1282e437f2..f8f8f50cd6 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,6 +445,59 @@ 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 new_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() +{ + // 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) { OSErr result = noErr; diff --git a/indra/newview/llappviewermacosx.h b/indra/newview/llappviewermacosx.h index bc841fc3a7..cbf7e6c209 100644 --- a/indra/newview/llappviewermacosx.h +++ b/indra/newview/llappviewermacosx.h @@ -48,6 +48,9 @@ public: // 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/llavataractions.cpp b/indra/newview/llavataractions.cpp index 2a8c55e5db..e6666c7f83 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -50,6 +50,7 @@ #include "llfloatergroups.h" #include "llfloaterreg.h" #include "llfloaterpay.h" +#include "llfloaterworldmap.h" #include "llinventorymodel.h" // for gInventory.findCategoryUUIDForType #include "llimview.h" // for gIMMgr #include "llmutelist.h" @@ -168,8 +169,10 @@ void LLAvatarActions::offerTeleport(const LLUUID& invitee) // static void LLAvatarActions::offerTeleport(const std::vector<LLUUID>& ids) { - if (ids.size() > 0) - handle_lure(ids); + if (ids.size() == 0) + return; + + handle_lure(ids); } // static @@ -179,7 +182,12 @@ void LLAvatarActions::startIM(const LLUUID& id) return; std::string name; - gCacheName->getFullName(id, name); + if (!gCacheName->getFullName(id, name)) + { + gCacheName->get(id, FALSE, boost::bind(&LLAvatarActions::startIM, id)); + return; + } + LLUUID session_id = gIMMgr->addSession(name, IM_NOTHING_SPECIAL, id); if (session_id != LLUUID::null) { @@ -248,31 +256,25 @@ 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(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 @@ -316,6 +318,20 @@ void LLAvatarActions::showProfile(const LLUUID& id) } // static +void LLAvatarActions::showOnMap(const LLUUID& id) +{ + std::string name; + if (!gCacheName->getFullName(id, name)) + { + gCacheName->get(id, FALSE, boost::bind(&LLAvatarActions::showOnMap, id)); + return; + } + + gFloaterWorldMap->trackAvatar(id, name); + LLFloaterReg::showInstance("world_map"); +} + +// static void LLAvatarActions::pay(const LLUUID& id) { LLNotification::Params params("BusyModePay"); @@ -595,9 +611,11 @@ void LLAvatarActions::requestFriendship(const LLUUID& target_id, const std::stri LLSD args; args["TO_NAME"] = target_name; + LLSD payload; + payload["from_id"] = target_id; payload["SESSION_NAME"] = target_name; - payload["SUPPRES_TOST"] = true; + payload["SUPPRESS_TOAST"] = true; LLNotificationsUtil::add("FriendshipOffered", args, payload); } @@ -614,3 +632,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 a4504ae679..a7f3acad4f 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -99,6 +99,11 @@ public: static void showProfile(const LLUUID& id); /** + * Show avatar on world map. + */ + static void showOnMap(const LLUUID& id); + + /** * Give money to the avatar. */ static void pay(const LLUUID& id); @@ -124,15 +129,23 @@ public: 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 */ - 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 (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/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp index 42ae122ff9..87b8d807c4 100644 --- a/indra/newview/llavatariconctrl.cpp +++ b/indra/newview/llavatariconctrl.cpp @@ -64,7 +64,7 @@ void LLAvatarIconIDCache::load () llinfos << "Loading avatar icon id cache." << llendl; // build filename for each user - std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, mFilename); + std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, mFilename); llifstream file(resolved_filename); if (!file.is_open()) @@ -97,7 +97,7 @@ void LLAvatarIconIDCache::load () void LLAvatarIconIDCache::save () { - std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, mFilename); + std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, mFilename); // open a file for writing llofstream file (resolved_filename); diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp index 5df73a994e..50d8672083 100644 --- a/indra/newview/llavatarlist.cpp +++ b/indra/newview/llavatarlist.cpp @@ -82,7 +82,7 @@ void LLAvatarList::setSpeakingIndicatorsVisible(bool visible) getItems(items); for( std::vector<LLPanel*>::const_iterator it = items.begin(); it != items.end(); it++) { - static_cast<LLAvatarListItem*>(*it)->setSpeakingIndicatorVisible(mShowSpeakingIndicator); + static_cast<LLAvatarListItem*>(*it)->showSpeakingIndicator(mShowSpeakingIndicator); } } @@ -320,21 +320,25 @@ boost::signals2::connection LLAvatarList::setRefreshCompleteCallback(const commi return mRefreshCompleteSignal.connect(cb); } +boost::signals2::connection LLAvatarList::setItemDoubleClickCallback(const mouse_signal_t::slot_type& cb) +{ + return mItemDoubleClickSignal.connect(cb); +} + void LLAvatarList::addNewItem(const LLUUID& id, const std::string& name, BOOL is_online, EAddPosition pos) { LLAvatarListItem* item = new LLAvatarListItem(); - item->showInfoBtn(true); - item->showSpeakingIndicator(true); item->setName(name); - item->setAvatarId(id, mIgnoreOnlineStatus); + item->setAvatarId(id, mSessionID, mIgnoreOnlineStatus); item->setOnline(mIgnoreOnlineStatus ? true : is_online); item->showLastInteractionTime(mShowLastInteractionTime); - item->childSetVisible("info_btn", false); item->setAvatarIconVisible(mShowIcons); item->setShowInfoBtn(mShowInfoBtn); item->setShowProfileBtn(mShowProfileBtn); - item->setSpeakingIndicatorVisible(mShowSpeakingIndicator); + item->showSpeakingIndicator(mShowSpeakingIndicator); + + item->setDoubleClickCallback(boost::bind(&LLAvatarList::onItemDoucleClicked, this, _1, _2, _3, _4)); addItem(item, id, pos); } @@ -403,6 +407,11 @@ void LLAvatarList::updateLastInteractionTimes() } } +void LLAvatarList::onItemDoucleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask) +{ + mItemDoubleClickSignal(ctrl, x, y, mask); +} + bool LLAvatarItemComparator::compare(const LLPanel* item1, const LLPanel* item2) const { const LLAvatarListItem* avatar_item1 = dynamic_cast<const LLAvatarListItem*>(item1); diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h index 0d2ce884ae..0e4215e91a 100644 --- a/indra/newview/llavatarlist.h +++ b/indra/newview/llavatarlist.h @@ -57,11 +57,11 @@ public: 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(); }; @@ -78,6 +78,8 @@ public: bool contains(const LLUUID& id); void setContextMenu(LLAvatarListItem::ContextMenu* menu) { mContextMenu = menu; } + void setSessionID(const LLUUID& session_id) { mSessionID = session_id; } + const LLUUID& getSessionID() { return mSessionID; } void toggleIcons(); void setSpeakingIndicatorsVisible(bool visible); @@ -92,6 +94,8 @@ public: boost::signals2::connection setRefreshCompleteCallback(const commit_signal_t::slot_type& cb); + boost::signals2::connection setItemDoubleClickCallback(const mouse_signal_t::slot_type& cb); + protected: void refresh(); @@ -101,6 +105,7 @@ protected: std::vector<LLUUID>& vadded, std::vector<LLUUID>& vremoved); void updateLastInteractionTimes(); + void onItemDoucleClicked(LLUICtrl* ctrl, S32 x, S32 y, MASK mask); private: @@ -116,10 +121,12 @@ private: std::string mIconParamName; std::string mNameFilter; uuid_vector_t mIDs; + LLUUID mSessionID; LLAvatarListItem::ContextMenu* mContextMenu; commit_signal_t mRefreshCompleteSignal; + mouse_signal_t mItemDoubleClickSignal; }; /** Abstract comparator for avatar items */ diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp index 6945ac6932..9645e75e60 100644 --- a/indra/newview/llavatarlistitem.cpp +++ b/indra/newview/llavatarlistitem.cpp @@ -44,10 +44,21 @@ #include "llbutton.h" bool LLAvatarListItem::sStaticInitialized = false; -S32 LLAvatarListItem::sIconWidth = 0; -S32 LLAvatarListItem::sInfoBtnWidth = 0; -S32 LLAvatarListItem::sProfileBtnWidth = 0; -S32 LLAvatarListItem::sSpeakingIndicatorWidth = 0; +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(), @@ -91,43 +102,25 @@ BOOL LLAvatarListItem::postBuild() mProfileBtn->setVisible(false); mProfileBtn->setClickedCallback(boost::bind(&LLAvatarListItem::onProfileBtnClick, this)); - // Remember avatar icon width including its padding from the name text box, - // so that we can hide and show the icon again later. if (!sStaticInitialized) { - sIconWidth = mAvatarName->getRect().mLeft - mAvatarIcon->getRect().mLeft; - sInfoBtnWidth = mInfoBtn->getRect().mRight - mSpeakingIndicator->getRect().mRight; - sProfileBtnWidth = mProfileBtn->getRect().mRight - mInfoBtn->getRect().mRight; - sSpeakingIndicatorWidth = mSpeakingIndicator->getRect().mRight - mAvatarName->getRect().mRight; + // Remember children widths including their padding from the next sibling, + // so that we can hide and show them again later. + initChildrenWidths(this); sStaticInitialized = true; } -/* - if(!p.buttons.profile) - { - delete mProfile; - mProfile = NULL; - - LLRect rect; - - rect.setLeftTopAndSize(mName->getRect().mLeft, mName->getRect().mTop, mName->getRect().getWidth() + 30, mName->getRect().getHeight()); - mName->setRect(rect); - - if(mLocator) - { - rect.setLeftTopAndSize(mLocator->getRect().mLeft + 30, mLocator->getRect().mTop, mLocator->getRect().getWidth(), mLocator->getRect().getHeight()); - mLocator->setRect(rect); - } + return TRUE; +} - if(mInfo) - { - rect.setLeftTopAndSize(mInfo->getRect().mLeft + 30, mInfo->getRect().mTop, mInfo->getRect().getWidth(), mInfo->getRect().getHeight()); - mInfo->setRect(rect); - } +S32 LLAvatarListItem::notifyParent(const LLSD& info) +{ + if (info.has("visibility_changed")) + { + updateChildren(); } -*/ - return TRUE; + return 0; } void LLAvatarListItem::onMouseEnter(S32 x, S32 y, MASK mask) @@ -137,6 +130,8 @@ void LLAvatarListItem::onMouseEnter(S32 x, S32 y, MASK mask) mProfileBtn->setVisible(mShowProfileBtn); LLPanel::onMouseEnter(x, y, mask); + + updateChildren(); } void LLAvatarListItem::onMouseLeave(S32 x, S32 y, MASK mask) @@ -146,6 +141,8 @@ void LLAvatarListItem::onMouseLeave(S32 x, S32 y, MASK mask) mProfileBtn->setVisible(false); LLPanel::onMouseLeave(x, y, mask); + + updateChildren(); } // virtual, called by LLAvatarTracker @@ -180,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 @@ -193,14 +211,14 @@ void LLAvatarListItem::setState(EItemState item_style) mAvatarIcon->setColor(item_icon_color_map[item_style]); } -void LLAvatarListItem::setAvatarId(const LLUUID& id, bool ignore_status_changes) +void LLAvatarListItem::setAvatarId(const LLUUID& id, const LLUUID& session_id, bool ignore_status_changes) { if (mAvatarId.notNull()) LLAvatarTracker::instance().removeParticularFriendObserver(mAvatarId, this); mAvatarId = id; mAvatarIcon->setValue(id); - mSpeakingIndicator->setSpeakerId(id); + mSpeakingIndicator->setSpeakerId(id, session_id); // We'll be notified on avatar online status changes if (!ignore_status_changes && mAvatarId.notNull()) @@ -215,12 +233,8 @@ void LLAvatarListItem::showLastInteractionTime(bool show) if (show) return; - LLRect name_rect = mAvatarName->getRect(); - LLRect time_rect = mLastInteractionTime->getRect(); - mLastInteractionTime->setVisible(false); - name_rect.mRight += (time_rect.mRight - name_rect.mRight); - mAvatarName->setRect(name_rect); + updateChildren(); } void LLAvatarListItem::setLastInteractionTime(U32 secs_since) @@ -234,12 +248,6 @@ void LLAvatarListItem::setShowInfoBtn(bool show) if(mShowInfoBtn == show) return; mShowInfoBtn = show; - S32 width_delta = show ? - sInfoBtnWidth : sInfoBtnWidth; - - //Translating speaking indicator - mSpeakingIndicator->translate(width_delta, 0); - //Reshaping avatar name - mAvatarName->reshape(mAvatarName->getRect().getWidth() + width_delta, mAvatarName->getRect().getHeight()); } void LLAvatarListItem::setShowProfileBtn(bool show) @@ -248,24 +256,17 @@ void LLAvatarListItem::setShowProfileBtn(bool show) if(mShowProfileBtn == show) return; mShowProfileBtn = show; - S32 width_delta = show ? - sProfileBtnWidth : sProfileBtnWidth; - - //Translating speaking indicator - mSpeakingIndicator->translate(width_delta, 0); - //Reshaping avatar name - mAvatarName->reshape(mAvatarName->getRect().getWidth() + width_delta, mAvatarName->getRect().getHeight()); } -void LLAvatarListItem::setSpeakingIndicatorVisible(bool visible) +void LLAvatarListItem::showSpeakingIndicator(bool visible) { // Already done? Then do nothing. if (mSpeakingIndicator->getVisible() == (BOOL)visible) return; - mSpeakingIndicator->setVisible(visible); - S32 width_delta = visible ? - sSpeakingIndicatorWidth : sSpeakingIndicatorWidth; - - //Reshaping avatar name - mAvatarName->reshape(mAvatarName->getRect().getWidth() + width_delta, mAvatarName->getRect().getHeight()); +// Disabled to not contradict with SpeakingIndicatorManager functionality. EXT-3976 +// probably this method should be totally removed. +// mSpeakingIndicator->setVisible(visible); +// updateChildren(); } void LLAvatarListItem::setAvatarIconVisible(bool visible) @@ -276,36 +277,12 @@ void LLAvatarListItem::setAvatarIconVisible(bool visible) // Show/hide avatar icon. mAvatarIcon->setVisible(visible); - - // Move the avatar name horizontally by icon size + its distance from the avatar name. - LLRect name_rect = mAvatarName->getRect(); - name_rect.mLeft += visible ? sIconWidth : -sIconWidth; - mAvatarName->setRect(name_rect); + updateChildren(); } void LLAvatarListItem::onInfoBtnClick() { LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", mAvatarId)); - - /* TODO fix positioning of inspector - localPointToScreen(mXPos, mYPos, &mXPos, &mYPos); - - - LLRect rect; - - // *TODO Vadim: rewrite this. "+= -" looks weird. - S32 delta = mYPos - inspector->getRect().getHeight(); - if(delta < 0) - { - mYPos += -delta; - } - - rect.setLeftTopAndSize(mXPos, mYPos, - inspector->getRect().getWidth(), inspector->getRect().getHeight()); - inspector->setRect(rect); - inspector->setFrontmost(true); - inspector->setVisible(true); - */ } void LLAvatarListItem::onProfileBtnClick() @@ -313,6 +290,21 @@ void LLAvatarListItem::onProfileBtnClick() LLAvatarActions::showProfile(mAvatarId); } +BOOL LLAvatarListItem::handleDoubleClick(S32 x, S32 y, MASK mask) +{ + if(mInfoBtn->getRect().pointInRect(x, y)) + { + onInfoBtnClick(); + return TRUE; + } + if(mProfileBtn->getRect().pointInRect(x, y)) + { + onProfileBtnClick(); + return TRUE; + } + return LLPanel::handleDoubleClick(x, y, mask); +} + void LLAvatarListItem::setValue( const LLSD& value ) { if (!value.isMap()) return;; @@ -344,21 +336,6 @@ void LLAvatarListItem::onNameCache(const std::string& first_name, const std::str setName(name); } -void LLAvatarListItem::reshapeAvatarName() -{ - S32 width_delta = 0; - width_delta += mShowProfileBtn ? sProfileBtnWidth : 0; - width_delta += mSpeakingIndicator->getVisible() ? sSpeakingIndicatorWidth : 0; - width_delta += mAvatarIcon->getVisible() ? sIconWidth : 0; - width_delta += mShowInfoBtn ? sInfoBtnWidth : 0; - width_delta += mLastInteractionTime->getVisible() ? mLastInteractionTime->getRect().getWidth() : 0; - - S32 height = mAvatarName->getRect().getHeight(); - S32 width = getRect().getWidth() - width_delta; - - mAvatarName->reshape(width, height); -} - // Convert given number of seconds to a string like "23 minutes", "15 hours" or "3 years", // taking i18n into account. The format string to use is taken from the panel XML. std::string LLAvatarListItem::formatSeconds(U32 secs) @@ -408,58 +385,6 @@ std::string LLAvatarListItem::formatSeconds(U32 secs) } // 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() { static icon_color_map_t item_icon_color_map; @@ -492,4 +417,142 @@ LLAvatarListItem::icon_color_map_t& LLAvatarListItem::getItemIconColorMap() return item_icon_color_map; } +// 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->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; + + // last interaction time textbox width + padding + 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; + + sLeftPadding = avatar_item->mAvatarIcon->getRect().mLeft; + sRightNamePadding = avatar_item->mLastInteractionTime->getRect().mLeft - avatar_item->mAvatarName->getRect().mRight; + + S32 index = ALIC_COUNT; + 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] = info_btn_width; + sChildrenWidths[--index] = profile_btn_width; + sChildrenWidths[--index] = speaking_indicator_width; +} + +void LLAvatarListItem::updateChildren() +{ + LL_DEBUGS("AvatarItemReshape") << LL_ENDL; + LL_DEBUGS("AvatarItemReshape") << "Updating for: " << getAvatarName() << LL_ENDL; + + S32 name_new_width = getRect().getWidth(); + S32 ctrl_new_left = name_new_width; + S32 name_new_left = sLeftPadding; + + // iterate through all children and set them into correct position depend on each child visibility + // assume that child indexes are in back order: the first in Enum is the last (right) in the item + // iterate & set child views starting from right to left + for (S32 i = 0; i < ALIC_COUNT; ++i) + { + // skip "name" textbox, it will be processed out of loop later + if (ALIC_NAME == i) continue; + + LLView* control = getItemChildView((EAvatarListItemChildIndex)i); + + LL_DEBUGS("AvatarItemReshape") << "Processing control: " << control->getName() << LL_ENDL; + // skip invisible views + if (!control->getVisible()) continue; + + S32 ctrl_width = sChildrenWidths[i]; // including space between current & left controls + + // decrease available for + name_new_width -= ctrl_width; + LL_DEBUGS("AvatarItemReshape") << "width: " << ctrl_width << ", name_new_width: " << name_new_width << LL_ENDL; + + LLRect control_rect = control->getRect(); + LL_DEBUGS("AvatarItemReshape") << "rect before: " << control_rect << LL_ENDL; + + if (ALIC_ICON == i) + { + // assume that this is the last iteration, + // so it is not necessary to save "ctrl_new_left" value calculated on previous iterations + ctrl_new_left = sLeftPadding; + name_new_left = ctrl_new_left + ctrl_width; + } + else + { + ctrl_new_left -= ctrl_width; + } + + LL_DEBUGS("AvatarItemReshape") << "ctrl_new_left: " << ctrl_new_left << LL_ENDL; + + control_rect.setLeftTopAndSize( + ctrl_new_left, + control_rect.mTop, + control_rect.getWidth(), + control_rect.getHeight()); + + LL_DEBUGS("AvatarItemReshape") << "rect after: " << control_rect << LL_ENDL; + control->setShape(control_rect); + } + + // set size and position of the "name" child + LLView* name_view = getItemChildView(ALIC_NAME); + LLRect name_view_rect = name_view->getRect(); + LL_DEBUGS("AvatarItemReshape") << "name rect before: " << name_view_rect << LL_ENDL; + + // apply paddings + name_new_width -= sLeftPadding; + name_new_width -= sRightNamePadding; + + name_view_rect.setLeftTopAndSize( + name_new_left, + name_view_rect.mTop, + name_new_width, + name_view_rect.getHeight()); + + name_view->setShape(name_view_rect); + + LL_DEBUGS("AvatarItemReshape") << "name rect after: " << name_view_rect << LL_ENDL; +} + +LLView* LLAvatarListItem::getItemChildView(EAvatarListItemChildIndex child_view_index) +{ + LLView* child_view = mAvatarName; + + switch (child_view_index) + { + case ALIC_ICON: + child_view = mAvatarIcon; + break; + case ALIC_NAME: + child_view = mAvatarName; + break; + case ALIC_INTERACTION_TIME: + child_view = mLastInteractionTime; + break; + case ALIC_SPEAKER_INDICATOR: + child_view = mSpeakingIndicator; + break; + case ALIC_INFO_BUTTON: + child_view = mInfoBtn; + break; + case ALIC_PROFILE_BUTTON: + child_view = mProfileBtn; + break; + default: + LL_WARNS("AvatarItemReshape") << "Unexpected child view index is passed: " << child_view_index << LL_ENDL; + // leave child_view untouched + } + + return child_view; +} + // EOF diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h index 96097bc9b5..cecb64add7 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, @@ -74,6 +86,11 @@ public: virtual ~LLAvatarListItem(); virtual BOOL postBuild(); + + /** + * Processes notification from speaker indicator to update children when indicator's visibility is changed. + */ + virtual S32 notifyParent(const LLSD& info); virtual void onMouseLeave(S32 x, S32 y, MASK mask); virtual void onMouseEnter(S32 x, S32 y, MASK mask); virtual void setValue(const LLSD& value); @@ -83,12 +100,13 @@ public: void setName(const std::string& name); void setHighlight(const std::string& highlight); void setState(EItemState item_style); - void setAvatarId(const LLUUID& id, bool ignore_status_changes = false); + void setAvatarId(const LLUUID& id, const LLUUID& session_id, bool ignore_status_changes = false); void setLastInteractionTime(U32 secs_since); //Show/hide profile/info btn, translating speaker indicator and avatar name coordinates accordingly void setShowProfileBtn(bool show); void setShowInfoBtn(bool show); - void setSpeakingIndicatorVisible(bool visible); + void showSpeakingIndicator(bool show); + void showLastInteractionTime(bool show); void setAvatarIconVisible(bool visible); const LLUUID& getAvatarId() const; @@ -97,16 +115,7 @@ public: void onInfoBtnClick(); void onProfileBtnClick(); - void showSpeakingIndicator(bool show) { mSpeakingIndicator->setVisible(show); } - void showInfoBtn(bool show_info_btn) {mInfoBtn->setVisible(show_info_btn); } - void showLastInteractionTime(bool show); - - /** - * This method was added to fix EXT-2364 (Items in group/ad-hoc IM participant list (avatar names) should be reshaped when adding/removing the "(Moderator)" label) - * But this is a *HACK. The real reason of it was in incorrect logic while hiding profile/info/speaker buttons - * *TODO: new reshape method should be provided in lieu of this one to be called when visibility if those buttons is changed - */ - void reshapeAvatarName(); + /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask); protected: /** @@ -124,17 +133,51 @@ private: E_UNKNOWN, } EOnlineStatus; + /** + * Enumeration of item elements in order from right to left. + * + * updateChildren() assumes that indexes are in the such order to process avatar icon easier. + * + * @see updateChildren() + */ + typedef enum e_avatar_item_child { + ALIC_SPEAKER_INDICATOR, + ALIC_PROFILE_BUTTON, + ALIC_INFO_BUTTON, + ALIC_INTERACTION_TIME, + ALIC_NAME, + ALIC_ICON, + ALIC_COUNT, + } EAvatarListItemChildIndex; + void setNameInternal(const std::string& name, const std::string& highlight); void onNameCache(const std::string& first_name, const std::string& last_name); 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(); + /** + * Initializes widths of all children to use them while changing visibility of any of them. + * + * @see updateChildren() + */ + static void initChildrenWidths(LLAvatarListItem* self); + + /** + * Updates position and rectangle of visible children to fit all available item's width. + */ + void updateChildren(); + + /** + * Gets child view specified by index. + * + * This method implemented via switch by all EAvatarListItemChildIndex values. + * It is used to not store children in array or vector to avoid of increasing memory usage. + */ + LLView* getItemChildView(EAvatarListItemChildIndex child_index); + LLTextBox* mAvatarName; LLTextBox* mLastInteractionTime; LLStyle::Params mAvatarNameStyle; @@ -151,10 +194,17 @@ private: bool mShowProfileBtn; static bool sStaticInitialized; // this variable is introduced to improve code readability - static S32 sIconWidth; // icon width + padding - static S32 sInfoBtnWidth; //info btn width + padding - static S32 sProfileBtnWidth; //profile btn width + padding - static S32 sSpeakingIndicatorWidth; //speaking indicator width + padding + static S32 sLeftPadding; // padding to first left visible child (icon or name) + static S32 sRightNamePadding; // right padding from name to next visible child + + /** + * Contains widths of each child specified by EAvatarListItemChildIndex + * including padding to the next right one. + * + * @see initChildrenWidths() + */ + static S32 sChildrenWidths[ALIC_COUNT]; + }; #endif //LL_LLAVATARLISTITEM_H diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 976b312509..b88be53d79 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -48,10 +48,93 @@ #include "llsyswellwindow.h" #include "llfloatercamera.h" #include "lltexteditor.h" +#include "llnotifications.h" // Build time optimization, generate extern template once in .cpp file template class LLBottomTray* LLSingleton<class LLBottomTray>::getInstance(); +namespace +{ + const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel"; + const std::string& PANEL_CHATBAR_NAME = "chat_bar"; + const std::string& PANEL_MOVEMENT_NAME = "movement_panel"; + const std::string& PANEL_CAMERA_NAME = "cam_panel"; + const std::string& PANEL_GESTURE_NAME = "gesture_panel"; + + S32 get_panel_min_width(LLLayoutStack* stack, LLPanel* panel) + { + S32 minimal_width = 0; + llassert(stack); + if ( stack && panel && panel->getVisible() ) + { + stack->getPanelMinSize(panel->getName(), &minimal_width, NULL); + } + return minimal_width; + } + + S32 get_panel_max_width(LLLayoutStack* stack, LLPanel* panel) + { + S32 max_width = 0; + llassert(stack); + if ( stack && panel && panel->getVisible() ) + { + stack->getPanelMaxSize(panel->getName(), &max_width, NULL); + } + return max_width; + } + + S32 get_curr_width(LLUICtrl* ctrl) + { + S32 cur_width = 0; + if ( ctrl && ctrl->getVisible() ) + { + cur_width = ctrl->getRect().getWidth(); + } + return cur_width; + } +} + +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"); + + // Hide "show_nearby_chat" button + LLLineEditor* chat_box = mNearbyChatBar->getChatBox(); + LLUICtrl* show_btn = mNearbyChatBar->getChild<LLUICtrl>("show_nearby_chat"); + S32 delta_width = show_btn->getRect().getWidth(); + show_btn->setVisible(FALSE); + chat_box->reshape(chat_box->getRect().getWidth() + delta_width, chat_box->getRect().getHeight()); + + return TRUE; + } + + void onFocusLost() + { + if (gAgent.cameraMouselook()) + { + LLBottomTray::getInstance()->setVisible(FALSE); + } + } + + LLNearbyChatBar* mNearbyChatBar; + LLPanel* mGesturePanel; +}; + LLBottomTray::LLBottomTray(const LLSD&) : mChicletPanel(NULL), mSpeakPanel(NULL), @@ -66,6 +149,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. @@ -90,6 +175,12 @@ LLBottomTray::LLBottomTray(const LLSD&) // Necessary for focus movement among child controls setFocusRoot(TRUE); + + { + mBottomTrayLite = new LLBottomTrayLite(); + mBottomTrayLite->setFollowsAll(); + mBottomTrayLite->setVisible(FALSE); + } } LLBottomTray::~LLBottomTray() @@ -124,6 +215,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); @@ -161,6 +257,9 @@ void LLBottomTray::sessionAdded(const LLUUID& session_id, const std::string& nam { chiclet->setIMSessionName(name); chiclet->setOtherParticipantId(other_participant_id); + + LLIMFloater::onIMChicletCreated(session_id); + } else { @@ -221,16 +320,36 @@ 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()); + } } -//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::onMouselookModeIn() +{ + setVisible(FALSE); + + // Attach the lite bottom tray + if (getParent() && mBottomTrayLite->getParent() != getParent()) + getParent()->addChild(mBottomTrayLite); + + mBottomTrayLite->setShape(getLocalRect()); + mBottomTrayLite->mNearbyChatBar->getChatBox()->setText(mNearbyChatBar->getChatBox()->getText()); + mBottomTrayLite->mGesturePanel->setVisible(gSavedSettings.getBOOL("ShowGestureButton")); + + mIsInLiteMode = true; } //virtual @@ -238,28 +357,18 @@ void LLBottomTray::onFocusLost() // 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(); - - if ("chat_bar" == name || "movement_panel" == name || "cam_panel" == name || "snapshot_panel" == name || "gesture_panel" == name) - continue; - else - { - viewp->setVisible(visibility); - } - } + mBottomTrayLite->setVisible(visible); + } + else + { + LLPanel::setVisible(visible); } + if(visible) + gFloaterView->setSnapOffsetBottom(getRect().getHeight()); + else + gFloaterView->setSnapOffsetBottom(0); } void LLBottomTray::showBottomTrayContextMenu(S32 x, S32 y, MASK mask) @@ -324,13 +433,16 @@ void LLBottomTray::showSnapshotButton(BOOL visible) setTrayButtonVisibleIfPossible(RS_BUTTON_SNAPSHOT, visible); } -namespace +void LLBottomTray::toggleMovementControls() { - const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel"; - const std::string& PANEL_CHATBAR_NAME = "chat_bar"; - const std::string& PANEL_MOVEMENT_NAME = "movement_panel"; - const std::string& PANEL_CAMERA_NAME = "cam_panel"; - const std::string& PANEL_GESTURE_NAME = "gesture_panel"; + if (mMovementButton) + mMovementButton->onCommit(); +} + +void LLBottomTray::toggleCameraControls() +{ + if (mCamButton) + mCamButton->onCommit(); } BOOL LLBottomTray::postBuild() @@ -356,9 +468,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") ); @@ -372,6 +485,8 @@ BOOL LLBottomTray::postBuild() mObjectDefaultWidthMap[RS_BUTTON_CAMERA] = mCamPanel->getRect().getWidth(); mObjectDefaultWidthMap[RS_BUTTON_SPEAK] = mSpeakPanel->getRect().getWidth(); + mNearbyChatBar->getChatBox()->setContextMenu(NULL); + return TRUE; } @@ -420,6 +535,7 @@ void LLBottomTray::onContextMenuItemClicked(const LLSD& userdata) else if (item == "paste") { edit_box->paste(); + edit_box->setFocus(TRUE); } else if (item == "delete") { @@ -469,7 +585,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) @@ -556,7 +683,7 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width) } const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth(); - const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth(); + const S32 chatbar_panel_min_width = get_panel_min_width(mToolbarStack, mNearbyChatBar); if (still_should_be_processed && chatbar_panel_width > chatbar_panel_min_width) { // we have some space to decrease chatbar panel @@ -571,7 +698,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 @@ -629,11 +756,11 @@ void LLBottomTray::processWidthIncreased(S32 delta_width) if (delta_width <= 0) return; const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth(); - const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth(); + static const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth(); const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth(); - const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth(); - const S32 chatbar_panel_max_width = mNearbyChatBar->getMaxWidth(); + static const S32 chatbar_panel_min_width = get_panel_min_width(mToolbarStack, mNearbyChatBar); + static const S32 chatbar_panel_max_width = get_panel_max_width(mToolbarStack, mNearbyChatBar); const S32 chatbar_available_shrink_width = chatbar_panel_width - chatbar_panel_min_width; const S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width; @@ -810,13 +937,12 @@ void LLBottomTray::processShrinkButtons(S32* required_width, S32* buttons_freed_ } else { - // - mSpeakBtn->setLabelVisible(false); S32 panel_width = mSpeakPanel->getRect().getWidth(); S32 possible_shrink_width = panel_width - panel_min_width; if (possible_shrink_width > 0) { + mSpeakBtn->setLabelVisible(false); mSpeakPanel->reshape(panel_width - possible_shrink_width, mSpeakPanel->getRect().getHeight()); *required_width += possible_shrink_width; @@ -891,18 +1017,18 @@ void LLBottomTray::processExtendButtons(S32* available_width) if (*available_width > 0) { - processExtendButton(RS_BUTTON_CAMERA, available_width); + processExtendButton(RS_BUTTON_MOVEMENT, available_width); } if (*available_width > 0) { - processExtendButton(RS_BUTTON_MOVEMENT, available_width); + processExtendButton(RS_BUTTON_CAMERA, available_width); } if (*available_width > 0) { S32 panel_max_width = mObjectDefaultWidthMap[RS_BUTTON_SPEAK]; S32 panel_width = mSpeakPanel->getRect().getWidth(); S32 possible_extend_width = panel_max_width - panel_width; - if (possible_extend_width > 0 && possible_extend_width <= *available_width) + if (possible_extend_width >= 0 && possible_extend_width <= *available_width) // HACK: this button doesn't change size so possible_extend_width will be 0 { mSpeakBtn->setLabelVisible(true); mSpeakPanel->reshape(panel_max_width, mSpeakPanel->getRect().getHeight()); @@ -991,6 +1117,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) @@ -1003,50 +1134,134 @@ void LLBottomTray::setTrayButtonVisible(EResizeState shown_object_type, bool vis } panel->setVisible(visible); + + if (mDummiesMap.count(shown_object_type)) + { + // Hide/show layout panel for dummy icon. + mDummiesMap[shown_object_type]->getParent()->setVisible(visible); + } } -void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible) +void LLBottomTray::setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification) { - bool can_be_set = true; + if (!setVisibleAndFitWidths(shown_object_type, visible) && visible && raise_notification) + { + LLNotificationsUtil::add("BottomTrayButtonCanNotBeShown", + LLSD(), + LLSD(), + LLNotificationFunctorRegistry::instance().DONOTHING); + } +} - if (visible) +bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible) +{ + LLPanel* cur_panel = mStateProcessedObjectMap[object_type]; + if (NULL == cur_panel) { - LLPanel* panel = mStateProcessedObjectMap[shown_object_type]; - if (NULL == panel) - { - lldebugs << "There is no object to process for state: " << shown_object_type << llendl; - return; - } + lldebugs << "There is no object to process for state: " << object_type << llendl; + return false; + } - const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth(); - const S32 chatbar_panel_min_width = mNearbyChatBar->getMinWidth(); + const S32 dummy_width = mDummiesMap.count(object_type) + ? mDummiesMap[object_type]->getParent()->getRect().getWidth() + : 0; - const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth(); - const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth(); + bool is_set = true; - const S32 available_width = (chatbar_panel_width - chatbar_panel_min_width) - + (chiclet_panel_width - chiclet_panel_min_width); + if (visible) + { + // Assume that only chiclet panel can be auto-resized and + // don't take into account width of dummy widgets + const S32 available_width = + mChicletPanel->getParent()->getRect().getWidth() - + mChicletPanel->getMinWidth() - + dummy_width; + + S32 preferred_width = mObjectDefaultWidthMap[object_type]; + S32 current_width = cur_panel->getRect().getWidth(); + S32 result_width = 0; + bool decrease_width = false; + + // Mark this button to be shown + mResizeState |= object_type; + + if (preferred_width > 0 && available_width >= preferred_width) + { + result_width = preferred_width; + } + else if (available_width >= current_width) + { + result_width = current_width; + } + else + { + // Calculate the possible shrunk width as difference between current and minimal widths + const S32 chatbar_shrunk_width = + mNearbyChatBar->getRect().getWidth() - get_panel_min_width(mToolbarStack, mNearbyChatBar); + + const S32 sum_of_min_widths = + get_panel_min_width(mToolbarStack, mStateProcessedObjectMap[RS_BUTTON_CAMERA]) + + get_panel_min_width(mToolbarStack, mStateProcessedObjectMap[RS_BUTTON_MOVEMENT]) + + get_panel_min_width(mToolbarStack, mStateProcessedObjectMap[RS_BUTTON_GESTURES]) + + get_panel_min_width(mToolbarStack, mSpeakPanel); + + const S32 sum_of_curr_widths = + get_curr_width(mStateProcessedObjectMap[RS_BUTTON_CAMERA]) + + get_curr_width(mStateProcessedObjectMap[RS_BUTTON_MOVEMENT]) + + get_curr_width(mStateProcessedObjectMap[RS_BUTTON_GESTURES]) + + get_curr_width(mSpeakPanel); + + const S32 possible_shrunk_width = + chatbar_shrunk_width + (sum_of_curr_widths - sum_of_min_widths); + + // Minimal width of current panel + S32 minimal_width = 0; + mToolbarStack->getPanelMinSize(cur_panel->getName(), &minimal_width, NULL); + + if ( (available_width + possible_shrunk_width) >= minimal_width) + { + // There is enough space for minimal width, but set the result_width + // to preferred_width so buttons widths decreasing will be done in predefined order + result_width = (preferred_width > 0) ? preferred_width : current_width; + decrease_width = true; + } + else + { + // Nothing can be done, give up... + return false; + } + } - const S32 required_width = panel->getRect().getWidth(); - can_be_set = available_width >= required_width; - } + if (result_width != current_width) + { + cur_panel->reshape(result_width, cur_panel->getRect().getHeight()); + current_width = result_width; + } - if (can_be_set) - { - setTrayButtonVisible(shown_object_type, visible); + is_set = processShowButton(object_type, ¤t_width); - // if we hide the button mark it NOT to show while future bottom tray extending - if (!visible) + // Shrink buttons if needed + if (is_set && decrease_width) { - mResizeState &= ~shown_object_type; + processWidthDecreased( -result_width - dummy_width ); } } else { - // mark this button to show it while future bottom tray extending - mResizeState |= shown_object_type; - LLNotificationsUtil::add("BottomTrayButtonCanNotBeShown"); + const S32 delta_width = get_curr_width(cur_panel); + + setTrayButtonVisible(object_type, false); + + // Mark button NOT to show while future bottom tray extending + mResizeState &= ~object_type; + + // Extend other buttons if need + if (delta_width) + { + processWidthIncreased(delta_width + dummy_width); + } } + return is_set; } //EOF diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h index 9be0e5810f..18c14e5e19 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 @@ public: 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 @@ -92,7 +93,13 @@ public: void showMoveButton(BOOL visible); void showCameraButton(BOOL visible); void showSnapshotButton(BOOL visible); - + + void toggleMovementControls(); + void toggleCameraControls(); + + void onMouselookModeIn(); + void onMouselookModeOut(); + /** * Creates IM Chiclet based on session type (IM chat or Group chat) */ @@ -167,7 +174,15 @@ private: * - if hidden via context menu button should be shown but there is no enough room for now * it will be shown while extending. */ - void setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible); + void setTrayButtonVisibleIfPossible(EResizeState shown_object_type, bool visible, bool raise_notification = true); + + /** + * Sets passed visibility to required button and fit widths of shown + * buttons(notice that method can shrink widths to + * allocate needed room in bottom tray). + * Returns true if visibility of required button was set. + */ + bool setVisibleAndFitWidths(EResizeState object_type, bool visible); MASK mResizeState; @@ -177,6 +192,9 @@ private: typedef std::map<EResizeState, S32> state_object_width_map_t; state_object_width_map_t mObjectDefaultWidthMap; + typedef std::map<EResizeState, LLUICtrl*> dummies_map_t; + dummies_map_t mDummiesMap; + protected: LLBottomTray(const LLSD& key = LLSD()); @@ -201,6 +219,8 @@ protected: LLPanel* mGesturePanel; LLButton* mCamButton; LLButton* mMovementButton; + LLBottomTrayLite* mBottomTrayLite; + bool mIsInLiteMode; }; #endif // LL_LLBOTTOMPANEL_H diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index a402f59fa1..c8552de66a 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -43,15 +43,19 @@ #include "llavatariconctrl.h" #include "llavatarlist.h" #include "llbottomtray.h" +#include "lldraghandle.h" #include "llimfloater.h" #include "llfloaterreg.h" #include "llparticipantlist.h" #include "llspeakers.h" +#include "lltextutil.h" #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); class LLNonAvatarCaller : public LLAvatarListItem { @@ -76,6 +80,12 @@ public: return rv; } + void setName(const std::string& name) + { + const std::string& formatted_phone = LLTextUtil::formatPhoneNumber(name); + LLAvatarListItem::setName(formatted_phone); + } + void setSpeakerId(const LLUUID& id) { mSpeakingIndicator->setSpeakerId(id); } }; @@ -85,22 +95,6 @@ static void* create_non_avatar_caller(void*) return new LLNonAvatarCaller; } -LLCallFloater::LLAvatarListItemRemoveTimer::LLAvatarListItemRemoveTimer(callback_t remove_cb, F32 period, const LLUUID& speaker_id) -: LLEventTimer(period) -, mRemoveCallback(remove_cb) -, mSpeakerId(speaker_id) -{ -} - -BOOL LLCallFloater::LLAvatarListItemRemoveTimer::tick() -{ - if (mRemoveCallback) - { - mRemoveCallback(mSpeakerId); - } - return TRUE; -} - LLVoiceChannel* LLCallFloater::sCurrentVoiceCanel = NULL; LLCallFloater::LLCallFloater(const LLSD& key) @@ -114,19 +108,22 @@ LLCallFloater::LLCallFloater(const LLSD& key) , mSpeakingIndicator(NULL) , mIsModeratorMutedVoice(false) , mInitParticipantsVoiceState(false) -, mVoiceLeftRemoveDelay(10) { static LLUICachedControl<S32> voice_left_remove_delay ("VoiceParticipantLeftRemoveDelay", 10); - mVoiceLeftRemoveDelay = voice_left_remove_delay; + mSpeakerDelayRemover = new LLSpeakersDelayActionsStorage(boost::bind(&LLCallFloater::removeVoiceLeftParticipant, this, _1), voice_left_remove_delay); mFactoryMap["non_avatar_caller"] = LLCallbackMap(create_non_avatar_caller, NULL); LLVoiceClient::getInstance()->addObserver(this); LLTransientFloaterMgr::getInstance()->addControlView(this); + + // force docked state since this floater doesn't save it between recreations + setDocked(true); } LLCallFloater::~LLCallFloater() { resetVoiceRemoveTimers(); + delete mSpeakerDelayRemover; delete mParticipants; mParticipants = NULL; @@ -166,6 +163,13 @@ BOOL LLCallFloater::postBuild() connectToChannel(LLVoiceChannel::getCurrentVoiceChannel()); + setIsChrome(true); + //chrome="true" hides floater caption + if (mDragHandle) + mDragHandle->setTitleVisible(TRUE); + + updateSession(); + return TRUE; } @@ -217,16 +221,6 @@ void LLCallFloater::onChange() } } -S32 LLCallFloater::notifyParent(const LLSD& info) -{ - if("size_changes" == info["action"]) - { - reshapeToFitContent(); - return 1; - } - return LLDockableFloater::notifyParent(info); -} - ////////////////////////////////////////////////////////////////////////// /// PRIVATE SECTION ////////////////////////////////////////////////////////////////////////// @@ -258,7 +252,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); @@ -270,6 +264,11 @@ void LLCallFloater::updateSession() case IM_NOTHING_SPECIAL: case IM_SESSION_P2P_INVITE: mVoiceType = VC_PEER_TO_PEER; + + if (!im_session->mOtherParticipantIsAvatar) + { + mVoiceType = VC_PEER_TO_PEER_AVALINE; + } break; case IM_SESSION_CONFERENCE_START: case IM_SESSION_GROUP_START: @@ -302,13 +301,15 @@ void LLCallFloater::updateSession() //hide "Leave Call" button for nearby chat bool is_local_chat = mVoiceType == VC_LOCAL_CHAT; - childSetVisible("leave_call_btn", !is_local_chat); - + childSetVisible("leave_call_btn_panel", !is_local_chat); + refreshParticipantList(); updateAgentModeratorState(); - //show floater for voice calls - if (!is_local_chat) + //show floater for voice calls & only in CONNECTED to voice channel state + if (!is_local_chat && + voice_channel && + LLVoiceChannel::STATE_CONNECTED == voice_channel->getState()) { LLIMFloater* im_floater = LLIMFloater::findInstance(session_id); bool show_me = !(im_floater && im_floater->getVisible()); @@ -321,16 +322,13 @@ void LLCallFloater::updateSession() void LLCallFloater::refreshParticipantList() { - bool non_avatar_caller = false; - if (VC_PEER_TO_PEER == mVoiceType) + bool non_avatar_caller = VC_PEER_TO_PEER_AVALINE == mVoiceType; + + if (non_avatar_caller) { LLIMModel::LLIMSession* session = LLIMModel::instance().findIMSession(mSpeakerManager->getSessionID()); - non_avatar_caller = !session->mOtherParticipantIsAvatar; - if (non_avatar_caller) - { - mNonAvatarCaller->setSpeakerId(session->mOtherParticipantID); - mNonAvatarCaller->setName(session->mName); - } + mNonAvatarCaller->setSpeakerId(session->mOtherParticipantID); + mNonAvatarCaller->setName(session->mName); } mNonAvatarCaller->setVisible(non_avatar_caller); @@ -340,6 +338,7 @@ void LLCallFloater::refreshParticipantList() { mParticipants = new LLParticipantList(mSpeakerManager, mAvatarList, true, mVoiceType != VC_GROUP_CHAT && mVoiceType != VC_AD_HOC_CHAT); mParticipants->setValidateSpeakerCallback(boost::bind(&LLCallFloater::validateSpeaker, this, _1)); + mParticipants->setSortOrder(LLParticipantList::E_SORT_BY_RECENT_SPEAKERS); if (LLLocalSpeakerMgr::getInstance() == mSpeakerManager) { @@ -390,9 +389,17 @@ void LLCallFloater::updateTitle() title = getString("title_nearby"); break; case VC_PEER_TO_PEER: + case VC_PEER_TO_PEER_AVALINE: { + title = voice_channel->getSessionName(); + + if (VC_PEER_TO_PEER_AVALINE == mVoiceType) + { + title = LLTextUtil::formatPhoneNumber(title); + } + LLStringUtil::format_map_t args; - args["[NAME]"] = voice_channel->getSessionName(); + args["[NAME]"] = title; title = getString("title_peer_2_peer", args); } break; @@ -570,33 +577,46 @@ 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(); + ESpeakerState current_state = getState(participant_id); - 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 + 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()) { - llwarns << "Unsupported (" << getState(participant_id) << ") state: " << item->getAvatarName() << llendl; + speaker->mHasLeftCurrentCall = TRUE; } } + 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); + break; + default: + // for possible new future states. + llwarns << "Unsupported (" << getState(participant_id) << ") state for: " << item->getAvatarName() << llendl; + break; } } @@ -640,33 +660,11 @@ void LLCallFloater::setState(LLAvatarListItem* item, ESpeakerState state) void LLCallFloater::setVoiceRemoveTimer(const LLUUID& voice_speaker_id) { - - // If there is already a started timer for the current panel don't do anything. - bool no_timer_for_current_panel = true; - if (mVoiceLeftTimersMap.size() > 0) - { - timers_map::iterator found_it = mVoiceLeftTimersMap.find(voice_speaker_id); - if (found_it != mVoiceLeftTimersMap.end()) - { - no_timer_for_current_panel = false; - } - } - - if (no_timer_for_current_panel) - { - // Starting a timer to remove an avatar row panel after timeout - mVoiceLeftTimersMap.insert(timer_pair(voice_speaker_id, - new LLAvatarListItemRemoveTimer(boost::bind(&LLCallFloater::removeVoiceLeftParticipant, this, _1), mVoiceLeftRemoveDelay, voice_speaker_id))); - } + mSpeakerDelayRemover->setActionTimer(voice_speaker_id); } -void LLCallFloater::removeVoiceLeftParticipant(const LLUUID& voice_speaker_id) +bool LLCallFloater::removeVoiceLeftParticipant(const LLUUID& voice_speaker_id) { - if (mVoiceLeftTimersMap.size() > 0) - { - mVoiceLeftTimersMap.erase(mVoiceLeftTimersMap.find(voice_speaker_id)); - } - LLAvatarList::uuid_vector_t& speaker_uuids = mAvatarList->getIDs(); LLAvatarList::uuid_vector_t::iterator pos = std::find(speaker_uuids.begin(), speaker_uuids.end(), voice_speaker_id); if(pos != speaker_uuids.end()) @@ -674,45 +672,45 @@ void LLCallFloater::removeVoiceLeftParticipant(const LLUUID& voice_speaker_id) speaker_uuids.erase(pos); mAvatarList->setDirty(); } + + return false; } void LLCallFloater::resetVoiceRemoveTimers() { - if (mVoiceLeftTimersMap.size() > 0) - { - for (timers_map::iterator iter = mVoiceLeftTimersMap.begin(); - iter != mVoiceLeftTimersMap.end(); ++iter) - { - delete iter->second; - } - } - mVoiceLeftTimersMap.clear(); + mSpeakerDelayRemover->removeAllTimers(); } void LLCallFloater::removeVoiceRemoveTimer(const LLUUID& voice_speaker_id) { - // Remove the timer if it has been already started - if (mVoiceLeftTimersMap.size() > 0) - { - timers_map::iterator found_it = mVoiceLeftTimersMap.find(voice_speaker_id); - if (found_it != mVoiceLeftTimersMap.end()) - { - delete found_it->second; - mVoiceLeftTimersMap.erase(found_it); - } - } + mSpeakerDelayRemover->unsetActionTimer(voice_speaker_id); } bool LLCallFloater::validateSpeaker(const LLUUID& speaker_id) { - if (mVoiceType != VC_LOCAL_CHAT) - return true; + bool is_valid = true; + switch (mVoiceType) + { + case VC_LOCAL_CHAT: + { + // A nearby chat speaker is considered valid it it's known to LLVoiceClient (i.e. has enabled voice). + std::vector<LLUUID> speakers; + get_voice_participants_uuids(speakers); + is_valid = std::find(speakers.begin(), speakers.end(), speaker_id) != speakers.end(); + } + break; + case VC_GROUP_CHAT: + // if participant had left this call before do not allow add her again. See EXT-4216. + // but if she Join she will be added into the list from the LLCallFloater::onChange() + is_valid = STATE_LEFT != getState(speaker_id); + break; + default: + // do nothing. required for Linux build + break; + } - // A nearby chat speaker is considered valid it it's known to LLVoiceClient (i.e. has enabled voice). - std::vector<LLUUID> speakers; - get_voice_participants_uuids(speakers); - return std::find(speakers.begin(), speakers.end(), speaker_id) != speakers.end(); + return is_valid; } void LLCallFloater::connectToChannel(LLVoiceChannel* channel) @@ -728,7 +726,15 @@ void LLCallFloater::connectToChannel(LLVoiceChannel* channel) void LLCallFloater::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state) { - updateState(new_state); + // check is voice operational and if it doesn't work hide VCP (EXT-4397) + if(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking()) + { + updateState(new_state); + } + else + { + closeFloater(); + } } void LLCallFloater::updateState(const LLVoiceChannel::EState& new_state) @@ -740,11 +746,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... @@ -757,99 +763,30 @@ void LLCallFloater::reset() mParticipants = NULL; mAvatarList->clear(); - // update floater to show Loading while waiting for data. - mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData")); - mAvatarList->setVisible(TRUE); - mNonAvatarCaller->setVisible(FALSE); - - mSpeakerManager = NULL; -} - -void reshape_floater(LLCallFloater* floater, S32 delta_height) -{ - // Try to update floater top side if it is docked(to bottom bar). - // Try to update floater bottom side or top side if it is un-docked. - // If world rect is too small, floater will not be reshaped at all. - - LLRect floater_rect = floater->getRect(); - LLRect world_rect = gViewerWindow->getWorldViewRectScaled(); - - // floater is docked to bottom bar - if(floater->isDocked()) + // These ifs were added instead of simply showing "loading" to make VCP work correctly in parcels + // with disabled voice (EXT-4648 and EXT-4649) + if (!LLViewerParcelMgr::getInstance()->allowAgentVoice() && LLVoiceChannel::STATE_HUNG_UP == new_state) { - // can update floater top side - if(floater_rect.mTop + delta_height < world_rect.mTop) - { - floater_rect.set(floater_rect.mLeft, floater_rect.mTop + delta_height, - floater_rect.mRight, floater_rect.mBottom); - } + // hides "Leave Call" when call is ended in parcel with disabled voice- hiding usually happens in + // updateSession() which won't be called here because connect to nearby voice never happens + childSetVisible("leave_call_btn_panel", false); + // setting title to nearby chat an "no one near..." text- because in region with disabled + // voice we won't have chance to really connect to nearby, so VCP is changed here manually + setTitle(getString("title_nearby")); + mAvatarList->setNoItemsCommentText(getString("no_one_near")); } - // floater is un-docked - else + // "loading" is shown only when state is "ringing" to avoid showing it in nearby chat vcp + // of parcels with disabled voice all the time- "no_one_near" is now shown there (EXT-4648) + else if (new_state == LLVoiceChannel::STATE_RINGING) { - // can update floater bottom side - if( floater_rect.mBottom - delta_height >= world_rect.mBottom ) - { - floater_rect.set(floater_rect.mLeft, floater_rect.mTop, - floater_rect.mRight, floater_rect.mBottom - delta_height); - } - // could not update floater bottom side, check if we can update floater top side - else if( floater_rect.mTop + delta_height < world_rect.mTop ) - { - floater_rect.set(floater_rect.mLeft, floater_rect.mTop + delta_height, - floater_rect.mRight, floater_rect.mBottom); - } + // update floater to show Loading while waiting for data. + mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData")); } - floater->reshape(floater_rect.getWidth(), floater_rect.getHeight()); - floater->setRect(floater_rect); -} - -void LLCallFloater::reshapeToFitContent() -{ - const S32 ITEM_HEIGHT = getParticipantItemHeight(); - static const S32 MAX_VISIBLE_ITEMS = getMaxVisibleItems(); - - static S32 items_pad = mAvatarList->getItemsPad(); - S32 list_height = mAvatarList->getRect().getHeight(); - S32 items_height = mAvatarList->getItemsRect().getHeight(); - if(items_height <= 0) - { - // make "no one near" text visible - items_height = ITEM_HEIGHT + items_pad; - } - S32 max_list_height = MAX_VISIBLE_ITEMS * ITEM_HEIGHT + items_pad * (MAX_VISIBLE_ITEMS - 1); - max_list_height += 2* mAvatarList->getBorderWidth(); - - S32 delta = items_height - list_height; - // too many items, don't reshape floater anymore, let scroll bar appear. - if(items_height > max_list_height) - { - delta = max_list_height - list_height; - } - - reshape_floater(this, delta); -} - -S32 LLCallFloater::getParticipantItemHeight() -{ - std::vector<LLPanel*> items; - mAvatarList->getItems(items); - if(items.size() > 0) - { - return items[0]->getRect().getHeight(); - } - else - { - return getChild<LLPanel>("non_avatar_caller")->getRect().getHeight(); - } -} + mAvatarList->setVisible(TRUE); + mNonAvatarCaller->setVisible(FALSE); -S32 LLCallFloater::getMaxVisibleItems() -{ - S32 value = 5; // default value, in case convertToS32() fails. - LLStringUtil::convertToS32(getString("max_visible_items"), value); - return value; + mSpeakerManager = NULL; } //EOF diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h index 8aba93fc43..0a8ea7de39 100644 --- a/indra/newview/llcallfloater.h +++ b/indra/newview/llcallfloater.h @@ -44,6 +44,8 @@ class LLNonAvatarCaller; class LLOutputMonitorCtrl; class LLParticipantList; class LLSpeakerMgr; +class LLSpeakersDelayActionsStorage; + /** * The Voice Control Panel is an ambient window summoned by clicking the flyout chevron on the Speak button. * It can be torn-off and freely positioned onscreen. @@ -75,11 +77,6 @@ public: */ /*virtual*/ void onChange(); - /** - * Will reshape floater when participant list size changes - */ - /*virtual*/ S32 notifyParent(const LLSD& info); - static void sOnCurrentChannelChanged(const LLUUID& session_id); private: @@ -88,7 +85,8 @@ private: VC_LOCAL_CHAT, VC_GROUP_CHAT, VC_AD_HOC_CHAT, - VC_PEER_TO_PEER + VC_PEER_TO_PEER, + VC_PEER_TO_PEER_AVALINE }EVoiceControls; typedef enum e_speaker_state @@ -147,6 +145,10 @@ private: */ 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) { @@ -173,7 +175,7 @@ private: * * @param voice_speaker_id LLUUID of Avatar List item to be removed from the list. */ - void removeVoiceLeftParticipant(const LLUUID& voice_speaker_id); + bool removeVoiceLeftParticipant(const LLUUID& voice_speaker_id); /** * Deletes all timers from the list to prevent started timers from ticking after destruction @@ -218,22 +220,7 @@ private: * * Clears all data from the latest voice session. */ - void reset(); - - /** - * Reshapes floater to fit participant list height - */ - void reshapeToFitContent(); - - /** - * Returns height of participant list item - */ - S32 getParticipantItemHeight(); - - /** - * Returns predefined max visible participants. - */ - S32 getMaxVisibleItems(); + void reset(const LLVoiceChannel::EState& new_state); private: speaker_state_map_t mSpeakerStateMap; @@ -259,32 +246,11 @@ private: boost::signals2::connection mAvatarListRefreshConnection; + /** - * class LLAvatarListItemRemoveTimer - * - * Implements a timer that removes avatar list item of a participant - * who has left the call. + * time out speakers when they are not part of current session */ - class LLAvatarListItemRemoveTimer : public LLEventTimer - { - public: - typedef boost::function<void(const LLUUID&)> callback_t; - - LLAvatarListItemRemoveTimer(callback_t remove_cb, F32 period, const LLUUID& speaker_id); - virtual ~LLAvatarListItemRemoveTimer() {}; - - virtual BOOL tick(); - - private: - callback_t mRemoveCallback; - LLUUID mSpeakerId; - }; - - typedef std::pair<LLUUID, LLAvatarListItemRemoveTimer*> timer_pair; - typedef std::map<LLUUID, LLAvatarListItemRemoveTimer*> timers_map; - - timers_map mVoiceLeftTimersMap; - S32 mVoiceLeftRemoveDelay; + LLSpeakersDelayActionsStorage* mSpeakerDelayRemover; /** * Stores reference to current voice channel. @@ -294,6 +260,10 @@ private: * @see sOnCurrentChannelChanged() */ static LLVoiceChannel* sCurrentVoiceCanel; + + /* virtual */ + LLTransientFloaterMgr::ETransientGroup getGroup() { return LLTransientFloaterMgr::IM; } + boost::signals2::connection mVoiceChannelStateChangeConnection; }; diff --git a/indra/newview/llcallingcard.cpp b/indra/newview/llcallingcard.cpp index d988770f90..79a2631c31 100644 --- a/indra/newview/llcallingcard.cpp +++ b/indra/newview/llcallingcard.cpp @@ -56,12 +56,14 @@ #include "llnotifications.h" #include "llnotificationsutil.h" #include "llresmgr.h" +#include "llslurl.h" #include "llimview.h" #include "llviewercontrol.h" #include "llviewernetwork.h" #include "llviewerobjectlist.h" #include "llviewerwindow.h" #include "llvoavatar.h" +#include "llavataractions.h" ///---------------------------------------------------------------------------- /// Local function declarations, constants, enums, and typedefs @@ -680,9 +682,11 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online) } BOOL notify = FALSE; LLSD args; + LLSD payload; for(S32 i = 0; i < count; ++i) { msg->getUUIDFast(_PREHASH_AgentBlock, _PREHASH_AgentID, agent_id, i); + payload["FROM_ID"] = agent_id; info = getBuddyInfo(agent_id); if(info) { @@ -715,7 +719,21 @@ void LLAvatarTracker::processNotify(LLMessageSystem* msg, bool online) if(notify) { // Popup a notify box with online status of this agent - LLNotificationPtr notification = LLNotificationsUtil::add(online ? "FriendOnline" : "FriendOffline", args); + LLNotificationPtr notification; + + if (online) + { + notification = + LLNotificationsUtil::add("FriendOnline", + args, + payload.with("respond_on_mousedown", TRUE), + boost::bind(&LLAvatarActions::startIM, agent_id)); + } + else + { + notification = + LLNotificationsUtil::add("FriendOffline", args, payload); + } // If there's an open IM session with this agent, send a notification there too. LLUUID session_id = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, agent_id); diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp index 442dc660cd..b32a955038 100644 --- a/indra/newview/llchatbar.cpp +++ b/indra/newview/llchatbar.cpp @@ -48,7 +48,6 @@ #include "llcombobox.h" #include "llcommandhandler.h" // secondlife:///app/chat/ support #include "llviewercontrol.h" -#include "llfloaterchat.h" #include "llgesturemgr.h" #include "llkeyboard.h" #include "lllineeditor.h" @@ -548,7 +547,7 @@ void LLChatBar::onInputEditorFocusLost() // static void LLChatBar::onInputEditorGainFocus() { - LLFloaterChat::setHistoryCursorAndScrollToEnd(); + //LLFloaterChat::setHistoryCursorAndScrollToEnd(); } void LLChatBar::onClickSay( LLUICtrl* ctrl ) diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 21cadda6e3..e1c96d4a16 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -34,7 +34,9 @@ #include "llinstantmessage.h" +#include "llimview.h" #include "llchathistory.h" +#include "llcommandhandler.h" #include "llpanel.h" #include "lluictrlfactory.h" #include "llscrollcontainer.h" @@ -46,8 +48,17 @@ #include "llfloaterreg.h" #include "llmutelist.h" #include "llstylemap.h" +#include "llslurl.h" #include "lllayoutstack.h" #include "llagent.h" +#include "llnotificationsutil.h" +#include "lltoastnotifypanel.h" +#include "lltooltip.h" +#include "llviewerregion.h" +#include "llviewertexteditor.h" +#include "llworld.h" +#include "lluiconstants.h" + #include "llsidetray.h"//for blocked objects panel @@ -55,6 +66,41 @@ static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history"); const static std::string NEW_LINE(rawstr_to_utf8("\n")); +const static std::string SLURL_APP_AGENT = "secondlife:///app/agent/"; +const static std::string SLURL_ABOUT = "/about"; + +// 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: @@ -103,12 +149,7 @@ public: } else if (level == "add") { - std::string name; - name.assign(getFirstName()); - name.append(" "); - name.append(getLastName()); - - LLAvatarActions::requestFriendshipDialog(getAvatarId(), name); + LLAvatarActions::requestFriendshipDialog(getAvatarId(), mFrom); } else if (level == "remove") { @@ -129,7 +170,10 @@ public: menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_object_icon.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); mPopupMenuHandleObject = menu->getHandle(); - setDoubleClickCallback(boost::bind(&LLChatHistoryHeader::onHeaderPanelClick, this, _2, _3, _4)); + setDoubleClickCallback(boost::bind(&LLChatHistoryHeader::showInspector, this)); + + setMouseEnterCallback(boost::bind(&LLChatHistoryHeader::showInfoCtrl, this)); + setMouseLeaveCallback(boost::bind(&LLChatHistoryHeader::hideInfoCtrl, this)); return LLPanel::postBuild(); } @@ -163,8 +207,10 @@ public: return LLPanel::handleRightMouseDown(x,y,mask); } - void onHeaderPanelClick(S32 x, S32 y, MASK mask) + void showInspector() { + if (mAvatarID.isNull() && CHAT_SOURCE_SYSTEM != mSourceType) return; + if (mSourceType == CHAT_SOURCE_OBJECT) { LLFloaterReg::showInstance("inspect_object", LLSD().with("object_id", mAvatarID)); @@ -176,36 +222,46 @@ public: //if chat source is system, you may add "else" here to define behaviour. } + static void onClickInfoCtrl(LLUICtrl* info_ctrl) + { + if (!info_ctrl) return; + + LLChatHistoryHeader* header = dynamic_cast<LLChatHistoryHeader*>(info_ctrl->getParent()); + if (!header) return; + + header->showInspector(); + } + + const LLUUID& getAvatarId () const { return mAvatarID;} - const std::string& getFirstName() const { return mFirstName; } - const std::string& getLastName () const { return mLastName; } 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()) + + //*TODO overly defensive thing, source type should be maintained out there + if((chat.mFromID.isNull() && chat.mFromName.empty()) || chat.mFromName == SYSTEM_FROM) { mSourceType = CHAT_SOURCE_SYSTEM; } - LLTextEditor* userName = getChild<LLTextEditor>("user_name"); + LLTextBox* userName = getChild<LLTextBox>("user_name"); userName->setReadOnlyColor(style_params.readonly_color()); userName->setColor(style_params.color()); - if(!chat.mFromName.empty()) - { - userName->setValue(chat.mFromName); - mFrom = chat.mFromName; - } - else + userName->setValue(chat.mFromName); + mFrom = chat.mFromName; + if (chat.mFromName.empty() || CHAT_SOURCE_SYSTEM == mSourceType) { - std::string SL = LLTrans::getString("SECOND_LIFE"); - userName->setValue(SL); + mFrom = LLTrans::getString("SECOND_LIFE"); + userName->setValue(mFrom); } + mMinUserNameWidth = style_params.font()->getWidth(userName->getWText().c_str()) + PADDING; setTimeField(chat); @@ -215,20 +271,25 @@ public: if(mSourceType != CHAT_SOURCE_AGENT) icon->setDrawTooltip(false); - if(!chat.mFromID.isNull()) - { - icon->setValue(chat.mFromID); - } - else if (userName->getValue().asString()==LLTrans::getString("SECOND_LIFE")) + switch (mSourceType) { - icon->setValue(LLSD("SL_Logo")); + case CHAT_SOURCE_AGENT: + icon->setValue(chat.mFromID); + break; + case CHAT_SOURCE_OBJECT: + icon->setValue(LLSD("OBJECT_Icon")); + break; + case CHAT_SOURCE_SYSTEM: + icon->setValue(LLSD("SL_Logo")); + break; + case CHAT_SOURCE_UNKNOWN: + icon->setValue(LLSD("Unknown_Icon")); } - } /*virtual*/ void draw() { - LLTextEditor* user_name = getChild<LLTextEditor>("user_name"); + LLTextBox* user_name = getChild<LLTextBox>("user_name"); LLTextBox* time_box = getChild<LLTextBox>("time_box"); LLRect user_name_rect = user_name->getRect(); @@ -260,8 +321,7 @@ public: { if (id != mAvatarID) return; - mFirstName = first; - mLastName = last; + mFrom = first + " " + last; } protected: static const S32 PADDING = 20; @@ -270,9 +330,9 @@ protected: { if(mSourceType == CHAT_SOURCE_SYSTEM) showSystemContextMenu(x,y); - if(mSourceType == CHAT_SOURCE_AGENT) + if(mAvatarID.notNull() && mSourceType == CHAT_SOURCE_AGENT) showAvatarContextMenu(x,y); - if(mSourceType == CHAT_SOURCE_OBJECT) + if(mAvatarID.notNull() && mSourceType == CHAT_SOURCE_OBJECT && SYSTEM_FROM != mFrom) showObjectContextMenu(x,y); } @@ -305,12 +365,44 @@ protected: 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); } } + void showInfoCtrl() + { + if (mAvatarID.isNull() || mFrom.empty() || SYSTEM_FROM == mFrom) return; + + if (!sInfoCtrl) + { + sInfoCtrl = LLUICtrlFactory::createFromFile<LLUICtrl>("inspector_info_ctrl.xml", NULL, LLPanel::child_registry_t::instance()); + sInfoCtrl->setCommitCallback(boost::bind(&LLChatHistoryHeader::onClickInfoCtrl, sInfoCtrl)); + } + + LLTextBase* name = getChild<LLTextBase>("user_name"); + LLRect sticky_rect = name->getRect(); + S32 icon_x = llmin(sticky_rect.mLeft + name->getTextBoundingRect().getWidth() + 7, sticky_rect.mRight - 3); + sInfoCtrl->setOrigin(icon_x, sticky_rect.getCenterY() - sInfoCtrl->getRect().getHeight() / 2 ) ; + addChild(sInfoCtrl); + } + + void hideInfoCtrl() + { + if (!sInfoCtrl) return; + + if (sInfoCtrl->getParent() == this) + { + removeChild(sInfoCtrl); + } + } + private: void setTimeField(const LLChat& chat) { @@ -339,15 +431,17 @@ protected: LLHandle<LLView> mPopupMenuHandleAvatar; LLHandle<LLView> mPopupMenuHandleObject; + static LLUICtrl* sInfoCtrl; + LLUUID mAvatarID; EChatSourceType mSourceType; - std::string mFirstName; - std::string mLastName; std::string mFrom; + LLUUID mSessionID; S32 mMinUserNameWidth; }; +LLUICtrl* LLChatHistoryHeader::sInfoCtrl = NULL; LLChatHistory::LLChatHistory(const LLChatHistory::Params& p) : LLUICtrl(p), @@ -360,12 +454,14 @@ LLChatHistory::LLChatHistory(const LLChatHistory::Params& p) mTopSeparatorPad(p.top_separator_pad), mBottomSeparatorPad(p.bottom_separator_pad), mTopHeaderPad(p.top_header_pad), - mBottomHeaderPad(p.bottom_header_pad) + mBottomHeaderPad(p.bottom_header_pad), + mIsLastMessageFromLog(false) { LLTextEditor::Params editor_params(p); editor_params.rect = getLocalRect(); editor_params.follows.flags = FOLLOWS_ALL; editor_params.enabled = false; // read only + editor_params.show_context_menu = "true"; mEditor = LLUICtrlFactory::create<LLTextEditor>(editor_params, this); } @@ -395,7 +491,7 @@ void LLChatHistory::initFromParams(const LLChatHistory::Params& p) panel_p.background_visible = false; panel_p.has_border = false; panel_p.mouse_opaque = false; - stackp->addPanel(LLUICtrlFactory::create<LLPanel>(panel_p), 0, 30, true, false, LLLayoutStack::ANIMATE); + stackp->addPanel(LLUICtrlFactory::create<LLPanel>(panel_p), 0, 30, S32_MAX, S32_MAX, true, false, LLLayoutStack::ANIMATE); panel_p.name = "new_text_notice_holder"; LLRect new_text_notice_rect = getLocalRect(); @@ -413,7 +509,7 @@ void LLChatHistory::initFromParams(const LLChatHistory::Params& p) mMoreChatText = LLUICtrlFactory::create<LLTextBox>(text_p, mMoreChatPanel); mMoreChatText->setClickedCallback(boost::bind(&LLChatHistory::onClickMoreText, this)); - stackp->addPanel(mMoreChatPanel, 0, 0, false, false, LLLayoutStack::ANIMATE); + stackp->addPanel(mMoreChatPanel, 0, 0, S32_MAX, S32_MAX, false, false, LLLayoutStack::ANIMATE); } @@ -457,8 +553,10 @@ 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); @@ -470,7 +568,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; @@ -499,7 +597,39 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_ style_params.font.name(font_name); style_params.font.size(font_size); style_params.font.style(input_append_params.font.style); - + + std::string prefix = chat.mText.substr(0, 4); + + //IRC styled /me messages. + bool irc_me = prefix == "/me " || prefix == "/me'"; + + // Delimiter after a name in header copy/past and in plain text mode + std::string delimiter = ": "; + std::string shout = LLTrans::getString("shout"); + std::string whisper = LLTrans::getString("whisper"); + if (chat.mChatType == CHAT_TYPE_SHOUT || + chat.mChatType == CHAT_TYPE_WHISPER || + chat.mText.compare(0, shout.length(), shout) == 0 || + chat.mText.compare(0, whisper.length(), whisper) == 0) + { + delimiter = " "; + } + + // Don't add any delimiter after name in irc styled messages + if (irc_me || chat.mChatStyle == CHAT_STYLE_IRC) + { + delimiter = LLStringUtil::null; + style_params.font.style = "ITALIC"; + } + + bool message_from_log = chat.mChatStyle == CHAT_STYLE_HISTORY; + // We graying out chat history by graying out messages that contains full date in a time string + if (message_from_log) + { + style_params.color(LLColor4::grey); + style_params.readonly_color(LLColor4::grey); + } + if (use_plain_text_chat_history) { mEditor->appendText("[" + chat.mTimeStr + "] ", mEditor->getText().size() != 0, style_params); @@ -507,16 +637,44 @@ 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 && chat.mFromID.notNull()) + { + // 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(); + + std::string slurl = args["slurl"].asString(); + if (slurl.empty()) + { + 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("<nolink>" + chat.mFromName + "</nolink>" + delimiter, + false, link_params); + } + else if ( chat.mFromName != SYSTEM_FROM && chat.mFromID.notNull() && !message_from_log) { LLStyle::Params link_params(style_params); - link_params.fillFrom(LLStyleMap::instance().lookupAgent(chat.mFromID)); + link_params.overwriteFrom(LLStyleMap::instance().lookupAgent(chat.mFromID)); // Convert the name to a hotlink and add to message. - mEditor->appendText(chat.mFromName + ": ", false, link_params); + mEditor->appendText(chat.mFromName + delimiter, false, link_params); } else { - mEditor->appendText(chat.mFromName + ": ", false, style_params); + mEditor->appendText(chat.mFromName + delimiter, false, style_params); } } } @@ -533,8 +691,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 + && mIsLastMessageFromLog == message_from_log) //distinguish between current and previous chat session's histories { view = getSeparator(); p.top_pad = mTopSeparatorPad; @@ -560,39 +718,115 @@ void LLChatHistory::appendMessage(const LLChat& chat, const bool use_plain_text_ view->reshape(target_rect.getWidth(), view->getRect().getHeight()); view->setOrigin(target_rect.mLeft, view->getRect().mBottom); - std::string header_text = "[" + chat.mTimeStr + "] "; + std::string widget_associated_text = "\n[" + chat.mTimeStr + "] "; if (utf8str_trim(chat.mFromName).size() != 0 && chat.mFromName != SYSTEM_FROM) - header_text += chat.mFromName + ": "; + widget_associated_text += chat.mFromName + delimiter; - mEditor->appendWidget(p, header_text, false); + mEditor->appendWidget(p, widget_associated_text, false); mLastFromName = chat.mFromName; mLastFromID = chat.mFromID; mLastMessageTime = new_message_time; + mIsLastMessageFromLog = message_from_log; } - //Handle IRC styled /me messages. - std::string prefix = chat.mText.substr(0, 4); - if (prefix == "/me " || prefix == "/me'") + + if (chat.mNotifId.notNull()) { - style_params.font.style = "ITALIC"; + LLNotificationPtr notification = LLNotificationsUtil::find(chat.mNotifId); + if (notification != NULL) + { + 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(); + + ctrl_list_t ctrls = notify_box->getControlPanel()->getCtrlList(); + S32 offset = 0; + for (ctrl_list_t::iterator it = ctrls.begin(); it != ctrls.end(); it++) + { + LLButton * button = dynamic_cast<LLButton*> (*it); + if (button != NULL) + { + button->setOrigin( offset, + button->getRect().mBottom); + button->setLeftHPad(2 * HPAD); + button->setRightHPad(2 * HPAD); + // set zero width before perform autoResize() + button->setRect(LLRect(button->getRect().mLeft, + button->getRect().mTop, button->getRect().mLeft, + button->getRect().mBottom)); + button->setAutoResize(true); + button->autoResize(); + offset += 2 * HPAD + button->getRect().getWidth(); + button->setFollowsNone(); + } + } + + 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 + 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); - if (chat.mFromName.size() > 0) - mEditor->appendText(chat.mFromName + " ", TRUE, style_params); - // Ensure that message ends with NewLine, to avoid losing of new lines - // while copy/paste from text chat. See EXT-3263. - mEditor->appendText(chat.mText.substr(4) + NEW_LINE, FALSE, style_params); + 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; + params.right_pad = mRightWidgetPad; + mEditor->appendWidget(params, "\n", false); + } } else { - std::string message(chat.mText); - if ( message.size() > 0 && !LLStringOps::isSpace(message[message.size() - 1]) ) + std::string message = irc_me ? chat.mText.substr(3) : chat.mText; + + + //MESSAGE TEXT PROCESSING + //*HACK getting rid of redundant sender names in system notifications sent using sender name (see EXT-5010) + if (use_plain_text_chat_history && gAgentID != chat.mFromID && chat.mFromID.notNull()) { - // Ensure that message ends with NewLine, to avoid losing of new lines - // while copy/paste from text chat. See EXT-3263. - message += NEW_LINE; + std::string slurl_about = SLURL_APP_AGENT + chat.mFromID.asString() + SLURL_ABOUT; + if (message.length() > slurl_about.length() && + message.compare(0, slurl_about.length(), slurl_about) == 0) + { + message = message.substr(slurl_about.length(), message.length()-1); + } + } + + if (irc_me && !use_plain_text_chat_history) + { + message = chat.mFromName + message; } + + mEditor->appendText(message, FALSE, style_params); } mEditor->blockUndo(); + + // automatically scroll to end when receiving chat from myself + if (chat.mFromID == gAgentID) + { + mEditor->setCursorAndScrollToEnd(); + } } void LLChatHistory::draw() @@ -606,3 +840,11 @@ void LLChatHistory::draw() LLUICtrl::draw(); } +void LLChatHistory::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + bool is_scrolled_to_end = mEditor->scrolledToEnd(); + LLUICtrl::reshape( width, height, called_from_parent ); + // update scroll + if (is_scrolled_to_end) + mEditor->setCursorAndScrollToEnd(); +} diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h index 260015e2dc..950b32861b 100644 --- a/indra/newview/llchathistory.h +++ b/indra/newview/llchathistory.h @@ -113,17 +113,24 @@ 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); private: std::string mLastFromName; LLUUID mLastFromID; LLDate mLastMessageTime; + bool mIsLastMessageFromLog; + //std::string mLastMessageTimeStr; + std::string mMessageHeaderFilename; std::string mMessageSeparatorFilename; diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp index 92df281307..81edb55f93 100644 --- a/indra/newview/llchatitemscontainerctrl.cpp +++ b/indra/newview/llchatitemscontainerctrl.cpp @@ -144,6 +144,7 @@ void LLNearbyChatToastPanel::init(LLSD& notification) std::string messageText = notification["message"].asString(); // UTF-8 line of text std::string fromName = notification["from"].asString(); // agent or object name mFromID = notification["from_id"].asUUID(); // agent id or object id + mFromName = fromName; int sType = notification["source"].asInteger(); mSourceType = (EChatSourceType)sType; @@ -168,30 +169,30 @@ void LLNearbyChatToastPanel::init(LLSD& notification) msg_text->setText(std::string("")); - std::string str_sender; - - if(gAgentID != mFromID) + if ( notification["chat_style"].asInteger() != CHAT_STYLE_IRC ) + { + std::string str_sender; + str_sender = fromName; - else - str_sender = LLTrans::getString("You"); - str_sender+=" "; + str_sender+=" "; - //append user name - { - LLStyle::Params style_params_name; + //append user name + { + LLStyle::Params style_params_name; - LLColor4 userNameColor = LLUIColorTable::instance().getColor("ChatToastAgentNameColor"); + LLColor4 userNameColor = LLUIColorTable::instance().getColor("ChatToastAgentNameColor"); - style_params_name.color(userNameColor); - - std::string font_name = LLFontGL::nameFromFont(messageFont); - std::string font_style_size = LLFontGL::sizeFromFont(messageFont); - style_params_name.font.name(font_name); - style_params_name.font.size(font_style_size); - - msg_text->appendText(str_sender, FALSE, style_params_name); - + style_params_name.color(userNameColor); + + std::string font_name = LLFontGL::nameFromFont(messageFont); + std::string font_style_size = LLFontGL::sizeFromFont(messageFont); + style_params_name.font.name(font_name); + style_params_name.font.size(font_style_size); + + msg_text->appendText(str_sender, FALSE, style_params_name); + + } } //append text @@ -253,10 +254,36 @@ void LLNearbyChatToastPanel::onMouseEnter (S32 x, S32 y, MASK mask) BOOL LLNearbyChatToastPanel::handleMouseDown (S32 x, S32 y, MASK mask) { + return LLPanel::handleMouseDown(x,y,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::handleMouseDown(x,y,mask); + return LLPanel::handleMouseUp(x,y,mask); + */ + + LLChatMsgBox* text_box = getChild<LLChatMsgBox>("msg_text", false); + S32 local_x = x - text_box->getRect().mLeft; + S32 local_y = y - text_box->getRect().mBottom; + + //if text_box process mouse up (ussually this is click on url) - we didn't show nearby_chat. + if (text_box->pointInView(local_x, local_y) ) + { + if (text_box->handleMouseUp(local_x,local_y,mask) == TRUE) + return TRUE; + else + { + LLFloaterReg::showInstance("nearby_chat",LLSD()); + return FALSE; + } + } + LLFloaterReg::showInstance("nearby_chat",LLSD()); - return LLPanel::handleMouseDown(x,y,mask); + return LLPanel::handleMouseUp(x,y,mask); } void LLNearbyChatToastPanel::setHeaderVisibility(EShowItemHeader e) @@ -295,7 +322,10 @@ void LLNearbyChatToastPanel::draw() if(icon) { icon->setDrawTooltip(mSourceType == CHAT_SOURCE_AGENT); - icon->setValue(mFromID); + if(mSourceType == CHAT_SOURCE_AGENT) + icon->setValue(mFromID); + else + icon->setValue(LLSD("OBJECT_Icon")); } mIsDirty = false; } diff --git a/indra/newview/llchatitemscontainerctrl.h b/indra/newview/llchatitemscontainerctrl.h index 0a85c52401..b28c9dbc4b 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,15 +49,18 @@ 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(); const LLUUID& getFromID() const { return mFromID;} + const std::string& getFromName() const { return mFromName; } //void addText (const std::string& message , const LLStyle::Params& input_params = LLStyle::Params()); //void setMessage (const LLChat& msg); @@ -68,6 +71,7 @@ public: void onMouseLeave (S32 x, S32 y, MASK mask); void onMouseEnter (S32 x, S32 y, MASK mask); BOOL handleMouseDown (S32 x, S32 y, MASK mask); + BOOL handleMouseUp (S32 x, S32 y, MASK mask); virtual BOOL postBuild(); @@ -81,9 +85,11 @@ public: virtual void draw(); + //*TODO REMOVE, why a dup of getFromID? const LLUUID& messageID() const { return mFromID;} private: LLUUID mFromID; // agent id or object id + std::string mFromName; EChatSourceType mSourceType; diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index c01202bb82..8efa814a2e 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -36,6 +36,7 @@ #include "llagent.h" #include "llavataractions.h" #include "llbottomtray.h" +#include "lleventtimer.h" #include "llgroupactions.h" #include "lliconctrl.h" #include "llimfloater.h" @@ -47,9 +48,9 @@ #include "llnotificationsutil.h" #include "lloutputmonitorctrl.h" #include "llscriptfloater.h" +#include "llspeakers.h" #include "lltextbox.h" #include "llvoiceclient.h" -#include "llvoicecontrolpanel.h" #include "llgroupmgr.h" #include "llnotificationmanager.h" #include "lltransientfloatermgr.h" @@ -225,6 +226,10 @@ void LLSysWellChiclet::setNewMessagesState(bool new_messages) mIsNewMessagesState = new_messages; } +void LLSysWellChiclet::updateWidget(bool is_window_empty) +{ + mButton->setEnabled(!is_window_empty); +} // virtual BOOL LLSysWellChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask) { @@ -374,6 +379,13 @@ void LLNotificationChiclet::createMenu() LLViewerMenuHolderGL::child_registry_t::instance()); } +/*virtual*/ +void LLNotificationChiclet::setCounter(S32 counter) +{ + LLSysWellChiclet::setCounter(counter); + updateWidget(getCounter() == 0); + +} ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// @@ -443,10 +455,19 @@ LLIMChiclet::LLIMChiclet(const LLIMChiclet::Params& p) , mNewMessagesIcon(NULL) , mSpeakerCtrl(NULL) , mCounterCtrl(NULL) +, mChicletButton(NULL) { 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; @@ -525,11 +546,17 @@ void LLIMChiclet::toggleSpeakerControl() } setRequiredWidth(); + mSpeakerCtrl->setSpeakerId(LLUUID::null); mSpeakerCtrl->setVisible(getShowSpeaker()); } void LLIMChiclet::setCounter(S32 counter) { + if (mCounterCtrl->getCounter() == counter) + { + return; + } + mCounterCtrl->setCounter(counter); setShowCounter(counter); setShowNewMessagesIcon(counter); @@ -561,10 +588,9 @@ void LLIMChiclet::onMouseDown() setCounter(0); } -BOOL LLIMChiclet::handleMouseDown(S32 x, S32 y, MASK mask) +void LLIMChiclet::setToggleState(bool toggle) { - onMouseDown(); - return LLChiclet::handleMouseDown(x, y, mask); + mChicletButton->setToggleState(toggle); } void LLIMChiclet::draw() @@ -619,6 +645,7 @@ LLIMChiclet::EType LLIMChiclet::getIMSessionType(const LLUUID& session_id) LLIMP2PChiclet::Params::Params() : avatar_icon("avatar_icon") +, chiclet_button("chiclet_button") , unread_notifications("unread_notifications") , speaker("speaker") , new_message_icon("new_message_icon") @@ -631,6 +658,10 @@ LLIMP2PChiclet::LLIMP2PChiclet(const Params& p) , mChicletIconCtrl(NULL) , mPopupMenu(NULL) { + LLButton::Params button_params = p.chiclet_button; + mChicletButton = LLUICtrlFactory::create<LLButton>(button_params); + addChild(mChicletButton); + LLIconCtrl::Params new_msg_params = p.new_message_icon; mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params); addChild(mNewMessagesIcon); @@ -745,6 +776,7 @@ void LLIMP2PChiclet::onMenuItemClicked(const LLSD& user_data) LLAdHocChiclet::Params::Params() : avatar_icon("avatar_icon") +, chiclet_button("chiclet_button") , unread_notifications("unread_notifications") , speaker("speaker") , new_message_icon("new_message_icon") @@ -758,6 +790,10 @@ LLAdHocChiclet::LLAdHocChiclet(const Params& p) , mChicletIconCtrl(NULL) , mPopupMenu(NULL) { + LLButton::Params button_params = p.chiclet_button; + mChicletButton = LLUICtrlFactory::create<LLButton>(button_params); + addChild(mChicletButton); + LLIconCtrl::Params new_msg_params = p.new_message_icon; mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params); addChild(mNewMessagesIcon); @@ -872,6 +908,7 @@ BOOL LLAdHocChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask) LLIMGroupChiclet::Params::Params() : group_icon("group_icon") +, chiclet_button("chiclet_button") , unread_notifications("unread_notifications") , speaker("speaker") , new_message_icon("new_message_icon") @@ -885,6 +922,10 @@ LLIMGroupChiclet::LLIMGroupChiclet(const Params& p) , mChicletIconCtrl(NULL) , mPopupMenu(NULL) { + LLButton::Params button_params = p.chiclet_button; + mChicletButton = LLUICtrlFactory::create<LLButton>(button_params); + addChild(mChicletButton); + LLIconCtrl::Params new_msg_params = p.new_message_icon; mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params); addChild(mNewMessagesIcon); @@ -915,7 +956,10 @@ LLIMGroupChiclet::~LLIMGroupChiclet() void LLIMGroupChiclet::draw() { - switchToCurrentSpeaker(); + if(getShowSpeaker()) + { + switchToCurrentSpeaker(); + } LLIMChiclet::draw(); } @@ -1115,10 +1159,10 @@ void im_chiclet_callback(LLChicletPanel* panel, const LLSD& data){ void object_chiclet_callback(const LLSD& data) { - LLUUID object_id = data["object_id"]; + LLUUID notification_id = data["notification_id"]; bool new_message = data["new_message"]; - std::list<LLChiclet*> chiclets = LLIMChiclet::sFindChicletsSignal(object_id); + std::list<LLChiclet*> chiclets = LLIMChiclet::sFindChicletsSignal(notification_id); std::list<LLChiclet *>::iterator iter; for (iter = chiclets.begin(); iter != chiclets.end(); iter++) { @@ -1235,6 +1279,7 @@ bool LLChicletPanel::addChiclet(LLChiclet* chiclet, S32 index) chiclet->setChicletSizeChangedCallback(boost::bind(&LLChicletPanel::onChicletSizeChanged, this, _1, index)); arrange(); + LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::IM, chiclet); return true; } @@ -1257,10 +1302,13 @@ void LLChicletPanel::onChicletClick(LLUICtrl*ctrl,const LLSD¶m) void LLChicletPanel::removeChiclet(chiclet_list_t::iterator it) { - mScrollArea->removeChild(*it); + LLChiclet* chiclet = *it; + mScrollArea->removeChild(chiclet); mChicletList.erase(it); arrange(); + LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, chiclet); + chiclet->die(); } void LLChicletPanel::removeChiclet(S32 index) @@ -1399,6 +1447,32 @@ S32 LLChicletPanel::notifyParent(const LLSD& info) return LLPanel::notifyParent(info); } +void LLChicletPanel::setChicletToggleState(const LLUUID& session_id, bool toggle) +{ + if(session_id.isNull()) + { + llwarns << "Null Session ID" << llendl; + } + + // toggle off all chiclets, except specified + S32 size = getChicletCount(); + for(int n = 0; n < size; ++n) + { + LLIMChiclet* chiclet = getChiclet<LLIMChiclet>(n); + if(chiclet && chiclet->getSessionId() != session_id) + { + chiclet->setToggleState(false); + } + } + + // toggle specified chiclet + LLIMChiclet* chiclet = findChiclet<LLIMChiclet>(session_id); + if(chiclet) + { + chiclet->setToggleState(toggle); + } +} + void LLChicletPanel::arrange() { if(mChicletList.empty()) @@ -1791,6 +1865,7 @@ LLChicletSpeakerCtrl::LLChicletSpeakerCtrl(const Params&p) LLScriptChiclet::Params::Params() : icon("icon") + , chiclet_button("chiclet_button") , new_message_icon("new_message_icon") { } @@ -1799,6 +1874,10 @@ LLScriptChiclet::LLScriptChiclet(const Params&p) : LLIMChiclet(p) , mChicletIconCtrl(NULL) { + LLButton::Params button_params = p.chiclet_button; + mChicletButton = LLUICtrlFactory::create<LLButton>(button_params); + addChild(mChicletButton); + LLIconCtrl::Params new_msg_params = p.new_message_icon; mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params); addChild(mNewMessagesIcon); @@ -1815,12 +1894,8 @@ void LLScriptChiclet::setSessionId(const LLUUID& session_id) setShowNewMessagesIcon( getSessionId() != session_id ); LLIMChiclet::setSessionId(session_id); - LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(session_id); - LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id); - if(notification) - { - setToolTip(notification->getSubstitutions()["TITLE"].asString()); - } + + setToolTip(LLScriptFloaterManager::getObjectName(session_id)); } void LLScriptChiclet::setCounter(S32 counter) @@ -1833,12 +1908,6 @@ void LLScriptChiclet::onMouseDown() LLScriptFloaterManager::getInstance()->toggleScriptFloater(getSessionId()); } -BOOL LLScriptChiclet::handleMouseDown(S32 x, S32 y, MASK mask) -{ - onMouseDown(); - return LLChiclet::handleMouseDown(x, y, mask); -} - ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// @@ -1847,6 +1916,7 @@ static const std::string INVENTORY_USER_OFFER ("UserGiveItem"); LLInvOfferChiclet::Params::Params() : icon("icon") + , chiclet_button("chiclet_button") , new_message_icon("new_message_icon") { } @@ -1855,6 +1925,10 @@ LLInvOfferChiclet::LLInvOfferChiclet(const Params&p) : LLIMChiclet(p) , mChicletIconCtrl(NULL) { + LLButton::Params button_params = p.chiclet_button; + mChicletButton = LLUICtrlFactory::create<LLButton>(button_params); + addChild(mChicletButton); + LLIconCtrl::Params new_msg_params = p.new_message_icon; mNewMessagesIcon = LLUICtrlFactory::create<LLIconCtrl>(new_msg_params); addChild(mNewMessagesIcon); @@ -1870,13 +1944,10 @@ void LLInvOfferChiclet::setSessionId(const LLUUID& session_id) { setShowNewMessagesIcon( getSessionId() != session_id ); + setToolTip(LLScriptFloaterManager::getObjectName(session_id)); + LLIMChiclet::setSessionId(session_id); - LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(session_id); - LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id); - if(notification) - { - setToolTip(notification->getSubstitutions()["TITLE"].asString()); - } + LLNotificationPtr notification = LLNotifications::getInstance()->find(session_id); if ( notification && notification->getName() == INVENTORY_USER_OFFER ) { @@ -1898,10 +1969,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 ee9db10525..ba17c5970e 100644 --- a/indra/newview/llchiclet.h +++ b/indra/newview/llchiclet.h @@ -41,7 +41,6 @@ #include "llgroupmgr.h" #include "llimview.h" -class LLVoiceControlPanel; class LLMenuGL; class LLIMFloater; @@ -326,9 +325,13 @@ public: }; - /*virtual*/ ~LLIMChiclet() {}; + 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. */ virtual void setIMSessionName(const std::string& name) { setToolTip(name); } @@ -423,12 +426,12 @@ public: */ virtual void onMouseDown(); + virtual void setToggleState(bool toggle); + protected: LLIMChiclet(const LLIMChiclet::Params& p); - /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); - protected: bool mShowSpeaker; @@ -439,7 +442,7 @@ protected: LLIconCtrl* mNewMessagesIcon; LLChicletNotificationCounterCtrl* mCounterCtrl; LLChicletSpeakerCtrl* mSpeakerCtrl; - + LLButton* mChicletButton; /** the id of another participant, either an avatar id or a group id*/ LLUUID mOtherParticipantId; @@ -474,6 +477,8 @@ class LLIMP2PChiclet : public LLIMChiclet public: struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params> { + Optional<LLButton::Params> chiclet_button; + Optional<LLChicletAvatarIconCtrl::Params> avatar_icon; Optional<LLChicletNotificationCounterCtrl::Params> unread_notifications; @@ -539,6 +544,8 @@ class LLAdHocChiclet : public LLIMChiclet public: struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params> { + Optional<LLButton::Params> chiclet_button; + Optional<LLChicletAvatarIconCtrl::Params> avatar_icon; Optional<LLChicletNotificationCounterCtrl::Params> unread_notifications; @@ -615,6 +622,8 @@ public: struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params> { + Optional<LLButton::Params> chiclet_button; + Optional<LLIconCtrl::Params> icon; Optional<LLIconCtrl::Params> new_message_icon; @@ -633,11 +642,6 @@ public: */ /*virtual*/ void onMouseDown(); - /** - * Override default handler - */ - /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); - protected: LLScriptChiclet(const Params&); @@ -657,6 +661,8 @@ public: struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params> { + Optional<LLButton::Params> chiclet_button; + Optional<LLChicletInvOfferIconCtrl::Params> icon; Optional<LLIconCtrl::Params> new_message_icon; @@ -675,12 +681,6 @@ public: */ /*virtual*/ void onMouseDown(); - /** - * Override default handler - */ - /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); - - protected: LLInvOfferChiclet(const Params&); friend class LLUICtrlFactory; @@ -698,6 +698,8 @@ public: struct Params : public LLInitParam::Block<Params, LLIMChiclet::Params> { + Optional<LLButton::Params> chiclet_button; + Optional<LLChicletGroupIconCtrl::Params> group_icon; Optional<LLChicletNotificationCounterCtrl::Params> unread_notifications; @@ -825,6 +827,8 @@ public: void setToggleState(BOOL toggled); void setNewMessagesState(bool new_messages); + //this method should change a widget according to state of the SysWellWindow + virtual void updateWidget(bool is_window_empty); protected: @@ -930,7 +934,7 @@ protected: // methods for updating a number of unread System notifications void incUreadSystemNotifications() { setCounter(++mUreadSystemNotifications); } void decUreadSystemNotifications() { setCounter(--mUreadSystemNotifications); } - + /*virtual*/ void setCounter(S32 counter); S32 mUreadSystemNotifications; }; @@ -1039,6 +1043,11 @@ public: S32 notifyParent(const LLSD& info); + /** + * Toggle chiclet by session id ON and toggle OFF all other chiclets. + */ + void setChicletToggleState(const LLUUID& session_id, bool toggle); + protected: LLChicletPanel(const Params&p); friend class LLUICtrlFactory; @@ -1219,12 +1228,15 @@ T* LLChicletPanel::findChiclet(const LLUUID& im_session_id) { LLChiclet* chiclet = *it; + llassert(chiclet); + if (!chiclet) continue; if(chiclet->getSessionId() == im_session_id) { T* result = dynamic_cast<T*>(chiclet); - if(!result && chiclet) + if(!result) { llwarns << "Found chiclet but of wrong type " << llendl; + continue; } return result; } diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index eb9a2fec2f..a96981a108 100644 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -59,7 +59,6 @@ #include "llbutton.h" #include "lldir.h" -#include "llfloaterchat.h" #include "llnotificationsutil.h" #include "llviewerstats.h" #include "llvfile.h" @@ -93,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); } @@ -217,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); } @@ -447,14 +447,18 @@ void LLFloaterCompileQueue::scriptArrived(LLVFS *vfs, const LLUUID& asset_id, if( LL_ERR_ASSET_REQUEST_NOT_IN_DATABASE == status ) { - LLChat chat(LLTrans::getString("CompileQueueScriptNotFound")); - LLFloaterChat::addChat(chat); + LLSD args; + args["MESSAGE"] = LLTrans::getString("CompileQueueScriptNotFound"); + LLNotificationsUtil::add("SystemMessage", args); + buffer = LLTrans::getString("CompileQueueProblemDownloading") + (": ") + data->mScriptName; } else if (LL_ERR_INSUFFICIENT_PERMISSIONS == status) { - LLChat chat(LLTrans::getString("CompileQueueInsufficientPermDownload")); - LLFloaterChat::addChat(chat); + LLSD args; + args["MESSAGE"] = LLTrans::getString("CompileQueueInsufficientPermDownload"); + LLNotificationsUtil::add("SystemMessage", args); + buffer = LLTrans::getString("CompileQueueInsufficientPermFor") + (": ") + data->mScriptName; } else diff --git a/indra/newview/llcompilequeue.h b/indra/newview/llcompilequeue.h index 063d573239..2d061f5d8a 100644 --- a/indra/newview/llcompilequeue.h +++ b/indra/newview/llcompilequeue.h @@ -104,10 +104,10 @@ protected: // Object Queue LLDynamicArray<LLUUID> mObjectIDs; LLUUID mCurrentObjectID; - BOOL mDone; + bool mDone; std::string mStartString; - BOOL mMono; + bool mMono; }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp index 00c05445e1..be6c15eab4 100644 --- a/indra/newview/llcurrencyuimanager.cpp +++ b/indra/newview/llcurrencyuimanager.cpp @@ -426,7 +426,7 @@ void LLCurrencyUIManager::Impl::prepare() LLLineEditor* lindenAmount = mPanel.getChild<LLLineEditor>("currency_amt"); if (lindenAmount) { - lindenAmount->setPrevalidate(LLLineEditor::prevalidateNonNegativeS32); + lindenAmount->setPrevalidate(LLTextValidate::validateNonNegativeS32); lindenAmount->setKeystrokeCallback(onCurrencyKey, this); } } diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp index 10b7935caf..abb2fdeb9a 100644 --- a/indra/newview/lldateutil.cpp +++ b/indra/newview/lldateutil.cpp @@ -44,15 +44,18 @@ static S32 DAYS_PER_MONTH_LEAP[] = static S32 days_from_month(S32 year, S32 month) { + llassert_always(1 <= month); + llassert_always(month <= 12); + if (year % 4 == 0 && year % 100 != 0) { // leap year - return DAYS_PER_MONTH_LEAP[month]; + return DAYS_PER_MONTH_LEAP[month - 1]; } else { - return DAYS_PER_MONTH_NOLEAP[month]; + return DAYS_PER_MONTH_NOLEAP[month - 1]; } } diff --git a/indra/newview/lldirpicker.cpp b/indra/newview/lldirpicker.cpp index a720dc46b5..d1abbb0f51 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 26f76915ae..b48d2c66c4 100644 --- a/indra/newview/lldirpicker.h +++ b/indra/newview/lldirpicker.h @@ -97,7 +97,7 @@ private: std::string* mFileName; std::string mDir; - BOOL mLocked; + bool mLocked; static LLDirPicker sInstance; diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp index d60330024a..38eda5bd2e 100644 --- a/indra/newview/lldrawable.cpp +++ b/indra/newview/lldrawable.cpp @@ -386,8 +386,6 @@ void LLDrawable::makeActive() mParent->makeActive(); } - gPipeline.setActive(this, TRUE); - //all child objects must also be active llassert_always(mVObjp); @@ -434,7 +432,6 @@ void LLDrawable::makeStatic(BOOL warning_enabled) if (isState(ACTIVE)) { clearState(ACTIVE); - gPipeline.setActive(this, FALSE); if (mParent.notNull() && mParent->isActive() && warning_enabled) { @@ -1049,9 +1046,13 @@ LLSpatialBridge::LLSpatialBridge(LLDrawable* root, BOOL render_by_group, U32 dat llassert(mDrawable); llassert(mDrawable->getRegion()); - llassert(mDrawable->getRegion()->getSpatialPartition(mPartitionType)); + LLSpatialPartition *part = mDrawable->getRegion()->getSpatialPartition(mPartitionType); + llassert(part); - mDrawable->getRegion()->getSpatialPartition(mPartitionType)->put(this); + if (part) + { + part->put(this); + } } LLSpatialBridge::~LLSpatialBridge() @@ -1367,10 +1368,14 @@ BOOL LLSpatialBridge::updateMove() { llassert(mDrawable); llassert(mDrawable->getRegion()); - llassert(mDrawable->getRegion()->getSpatialPartition(mPartitionType)); + LLSpatialPartition* part = mDrawable->getRegion()->getSpatialPartition(mPartitionType); + llassert(part); mOctree->balance(); - mDrawable->getRegion()->getSpatialPartition(mPartitionType)->move(this, getSpatialGroup(), TRUE); + if (part) + { + part->move(this, getSpatialGroup(), TRUE); + } return TRUE; } diff --git a/indra/newview/lldrawable.h b/indra/newview/lldrawable.h index 5a10b688da..651dabff9e 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/lldrawpool.cpp b/indra/newview/lldrawpool.cpp index 95ddacb722..ef946ac49e 100644 --- a/indra/newview/lldrawpool.cpp +++ b/indra/newview/lldrawpool.cpp @@ -496,8 +496,8 @@ void LLRenderPass::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture) params.mGroup->rebuildMesh(); } params.mVertexBuffer->setBuffer(mask); - params.mVertexBuffer->drawRange(LLRender::TRIANGLES, params.mStart, params.mEnd, params.mCount, params.mOffset); - gPipeline.addTrianglesDrawn(params.mCount/3); + params.mVertexBuffer->drawRange(params.mDrawMode, params.mStart, params.mEnd, params.mCount, params.mOffset); + gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode); } if (params.mTextureMatrix && texture && params.mTexture.notNull()) diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index 6d77361414..875c9ac6a9 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -180,6 +180,7 @@ void LLDrawPoolAlpha::render(S32 pass) if (LLPipeline::sFastAlpha && !deferred_render) { + LLGLDisable blend_disable(GL_BLEND); gGL.setAlphaRejectSettings(LLRender::CF_GREATER, 0.33f); if (mVertexShaderLevel > 0) { @@ -250,8 +251,8 @@ void LLDrawPoolAlpha::renderAlphaHighlight(U32 mask) params.mGroup->rebuildMesh(); } params.mVertexBuffer->setBuffer(mask); - params.mVertexBuffer->drawRange(LLRender::TRIANGLES, params.mStart, params.mEnd, params.mCount, params.mOffset); - gPipeline.addTrianglesDrawn(params.mCount/3); + params.mVertexBuffer->drawRange(params.mDrawMode, params.mStart, params.mEnd, params.mCount, params.mOffset); + gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode); } } } @@ -380,8 +381,8 @@ void LLDrawPoolAlpha::renderAlpha(U32 mask) } params.mVertexBuffer->setBuffer(mask); - params.mVertexBuffer->drawRange(LLRender::TRIANGLES, params.mStart, params.mEnd, params.mCount, params.mOffset); - gPipeline.addTrianglesDrawn(params.mCount/3); + params.mVertexBuffer->drawRange(params.mDrawMode, params.mStart, params.mEnd, params.mCount, params.mOffset); + gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode); if (params.mTextureMatrix && params.mTexture.notNull()) { diff --git a/indra/newview/lldrawpoolavatar.h b/indra/newview/lldrawpoolavatar.h index 6a2b7fc218..b947943619 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 { diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index 5f845c3721..d09d4a412f 100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -560,8 +560,8 @@ void LLDrawPoolBump::renderGroup(LLSpatialGroup* group, U32 type, U32 mask, BOOL params.mGroup->rebuildMesh(); } params.mVertexBuffer->setBuffer(mask); - params.mVertexBuffer->drawRange(LLRender::TRIANGLES, params.mStart, params.mEnd, params.mCount, params.mOffset); - gPipeline.addTrianglesDrawn(params.mCount/3); + params.mVertexBuffer->drawRange(params.mDrawMode, params.mStart, params.mEnd, params.mCount, params.mOffset); + gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode); } } @@ -1149,14 +1149,14 @@ void LLBumpImageList::onSourceLoaded( BOOL success, LLViewerTexture *src_vi, LLI if (!LLPipeline::sRenderDeferred) { bump->setExplicitFormat(GL_ALPHA8, GL_ALPHA); - bump->createGLTexture(bump->getDiscardLevel(), dst_image); + bump->createGLTexture(0, dst_image); } else { LLPointer<LLImageRaw> nrm_image = new LLImageRaw(src->getWidth(), src->getHeight(), 4); generateNormalMapFromAlpha(src, nrm_image); bump->setExplicitFormat(GL_RGBA, GL_RGBA); - bump->createGLTexture(bump->getDiscardLevel(), nrm_image); + bump->createGLTexture(0, nrm_image); } @@ -1231,8 +1231,8 @@ void LLDrawPoolBump::pushBatch(LLDrawInfo& params, U32 mask, BOOL texture) params.mGroup->rebuildMesh(); } params.mVertexBuffer->setBuffer(mask); - params.mVertexBuffer->drawRange(LLRender::TRIANGLES, params.mStart, params.mEnd, params.mCount, params.mOffset); - gPipeline.addTrianglesDrawn(params.mCount/3); + params.mVertexBuffer->drawRange(params.mDrawMode, params.mStart, params.mEnd, params.mCount, params.mOffset); + gPipeline.addTrianglesDrawn(params.mCount, params.mDrawMode); if (params.mTextureMatrix) { if (mShiny) diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp index 8428be194f..0f76165053 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(); diff --git a/indra/newview/lldrawpooltree.cpp b/indra/newview/lldrawpooltree.cpp index 5521fb05a8..1a5d55d793 100644 --- a/indra/newview/lldrawpooltree.cpp +++ b/indra/newview/lldrawpooltree.cpp @@ -115,7 +115,7 @@ void LLDrawPoolTree::render(S32 pass) LLFace *face = *iter; face->mVertexBuffer->setBuffer(LLDrawPoolTree::VERTEX_DATA_MASK); face->mVertexBuffer->drawRange(LLRender::TRIANGLES, 0, face->mVertexBuffer->getRequestedVerts()-1, face->mVertexBuffer->getRequestedIndices(), 0); - gPipeline.addTrianglesDrawn(face->mVertexBuffer->getRequestedIndices()/3); + gPipeline.addTrianglesDrawn(face->mVertexBuffer->getRequestedIndices()); } } } @@ -237,7 +237,7 @@ void LLDrawPoolTree::renderForSelect() face->mVertexBuffer->setBuffer(LLDrawPoolTree::VERTEX_DATA_MASK); face->mVertexBuffer->drawRange(LLRender::TRIANGLES, 0, face->mVertexBuffer->getRequestedVerts()-1, face->mVertexBuffer->getRequestedIndices(), 0); - gPipeline.addTrianglesDrawn(face->mVertexBuffer->getRequestedIndices()/3); + gPipeline.addTrianglesDrawn(face->mVertexBuffer->getRequestedIndices()); } } } diff --git a/indra/newview/lldrawpoolwater.h b/indra/newview/lldrawpoolwater.h index 68a8172dd0..614f645243 100644 --- a/indra/newview/lldrawpoolwater.h +++ b/indra/newview/lldrawpoolwater.h @@ -47,7 +47,6 @@ protected: LLPointer<LLViewerTexture> mWaterImagep; LLPointer<LLViewerTexture> mWaterNormp; - const LLWaterSurface *mWaterSurface; public: static BOOL sSkipScreenCopy; static BOOL sNeedsReflectionUpdate; diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index c14ca2473b..c7cd77cb65 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -159,15 +159,10 @@ void LLDrawPoolWLSky::renderStars(void) const // *NOTE: have to have bound the cloud noise texture already since register // combiners blending below requires something to be bound // and we might as well only bind once. - //gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE); + gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE); gPipeline.disableLights(); - - if (!LLPipeline::sReflectionRender) - { - glPointSize(2.f); - } - + // *NOTE: we divide by two here and GL_ALPHA_SCALE by two below to avoid // clamping and allow the star_alpha param to brighten the stars. bool error; @@ -175,16 +170,20 @@ void LLDrawPoolWLSky::renderStars(void) const star_alpha.mV[3] = LLWLParamManager::instance()->mCurParams.getFloat("star_brightness", error) / 2.f; llassert_always(!error); + gGL.getTexUnit(0)->bind(gSky.mVOSkyp->getBloomTex()); + + gGL.pushMatrix(); + glRotatef(gFrameTimeSeconds*0.01f, 0.f, 0.f, 1.f); // gl_FragColor.rgb = gl_Color.rgb; // gl_FragColor.a = gl_Color.a * star_alpha.a; - gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR); - gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT_X2, LLTexUnit::TBS_PREV_ALPHA, LLTexUnit::TBS_CONST_ALPHA); + gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_VERT_COLOR); + gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT_X2, LLTexUnit::TBS_CONST_ALPHA, LLTexUnit::TBS_TEX_ALPHA); glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, star_alpha.mV); gSky.mVOWLSkyp->drawStars(); - glPointSize(1.f); - + gGL.popMatrix(); + // and disable the combiner states gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); } diff --git a/indra/newview/lldrawpoolwlsky.h b/indra/newview/lldrawpoolwlsky.h index 7ff760ac39..9059f6382f 100644 --- a/indra/newview/lldrawpoolwlsky.h +++ b/indra/newview/lldrawpoolwlsky.h @@ -43,7 +43,7 @@ public: static const U32 SKY_VERTEX_DATA_MASK = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0; static const U32 STAR_VERTEX_DATA_MASK = LLVertexBuffer::MAP_VERTEX | - LLVertexBuffer::MAP_COLOR; + LLVertexBuffer::MAP_COLOR | LLVertexBuffer::MAP_TEXCOORD0; LLDrawPoolWLSky(void); /*virtual*/ ~LLDrawPoolWLSky(); diff --git a/indra/newview/lldriverparam.cpp b/indra/newview/lldriverparam.cpp index 3961afe9af..830e975e8a 100644 --- a/indra/newview/lldriverparam.cpp +++ b/indra/newview/lldriverparam.cpp @@ -39,6 +39,7 @@ #include "llvoavatarself.h" #include "llagent.h" #include "llwearable.h" +#include "llagentwearables.h" //----------------------------------------------------------------------------- // LLDriverParamInfo @@ -431,6 +432,12 @@ const LLVector3* LLDriverParam::getNextDistortion(U32 *index, LLPolyMesh **poly_ } } + llassert(driven); + if (!driven) + { + return NULL; // shouldn't happen, but... + } + // We're already in the middle of a param's distortions, so get the next one. const LLVector3* v = driven->mParam->getNextDistortion( index, poly_mesh ); if( (!v) && (iter != mDriven.end()) ) @@ -528,6 +535,38 @@ void LLDriverParam::resetDrivenParams() mDriven.reserve(getInfo()->mDrivenInfoList.size()); } +void LLDriverParam::updateCrossDrivenParams(EWearableType driven_type) +{ + bool needs_update = (getWearableType()==driven_type); + + // if the driver has a driven entry for the passed-in wearable type, we need to refresh the value + for( entry_list_t::iterator iter = mDriven.begin(); iter != mDriven.end(); iter++ ) + { + LLDrivenEntry* driven = &(*iter); + if (driven && driven->mParam && driven->mParam->getCrossWearable() && driven->mParam->getWearableType() == driven_type) + { + needs_update = true; + } + } + + + if (needs_update) + { + EWearableType driver_type = (EWearableType)getWearableType(); + + // If we've gotten here, we've added a new wearable of type "type" + // Thus this wearable needs to get updates from the driver wearable. + // The call to setVisualParamWeight seems redundant, but is necessary + // as the number of driven wearables has changed since the last update. -Nyx + LLWearable *wearable = gAgentWearables.getTopWearable(driver_type); + if (wearable) + { + wearable->setVisualParamWeight(mID, wearable->getVisualParamWeight(mID), false); + } + } +} + + //----------------------------------------------------------------------------- // getDrivenWeight() //----------------------------------------------------------------------------- diff --git a/indra/newview/lldriverparam.h b/indra/newview/lldriverparam.h index 4e2daf5ba7..e963a2d55a 100644 --- a/indra/newview/lldriverparam.h +++ b/indra/newview/lldriverparam.h @@ -34,6 +34,7 @@ #define LL_LLDRIVERPARAM_H #include "llviewervisualparam.h" +#include "llwearabledictionary.h" class LLVOAvatar; class LLWearable; @@ -93,6 +94,7 @@ public: void setWearable(LLWearable *wearablep); void setAvatar(LLVOAvatar *avatarp); + void updateCrossDrivenParams(EWearableType driven_type); /*virtual*/ LLViewerVisualParam* cloneParam(LLWearable* wearable) const; @@ -112,6 +114,7 @@ public: /*virtual*/ LLVector3 getVertexDistortion(S32 index, LLPolyMesh *poly_mesh); /*virtual*/ const LLVector3* getFirstDistortion(U32 *index, LLPolyMesh **poly_mesh); /*virtual*/ const LLVector3* getNextDistortion(U32 *index, LLPolyMesh **poly_mesh); + protected: F32 getDrivenWeight(const LLDrivenEntry* driven, F32 input_weight); void setDrivenWeight(LLDrivenEntry *driven, F32 driven_weight, bool upload_bake); diff --git a/indra/newview/lleventinfo.h b/indra/newview/lleventinfo.h index 493c659983..4f33a7925a 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); diff --git a/indra/newview/lleventnotifier.cpp b/indra/newview/lleventnotifier.cpp index edfb9dc864..f096ba604f 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("") { } diff --git a/indra/newview/lleventpoll.cpp b/indra/newview/lleventpoll.cpp index eca9f8aba2..cc4e1a1868 100644 --- a/indra/newview/lleventpoll.cpp +++ b/indra/newview/lleventpoll.cpp @@ -39,7 +39,7 @@ #include "llhttpclient.h" #include "llhttpstatuscodes.h" #include "llsdserialize.h" -#include "lltimer.h" +#include "lleventtimer.h" #include "llviewerregion.h" #include "message.h" #include "lltrans.h" diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index 9f6412c0ab..3818ee6f78 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 @@ -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,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( - new LLStyle(getDefaultStyle()), 0, getLength() + 1, *this); + LLStyleConstSP sp(new LLStyle(getDefaultStyleParams())); + LLNormalTextSegment* segmentp = new LLNormalTextSegment(sp, 0, getLength() + 1, *this); insertSegment(segmentp); mExpanderVisible = false; @@ -202,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 2b4f9e527c..58316ddb98 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 @@ protected: * 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(); @@ -70,6 +70,11 @@ protected: virtual S32 getVerticalTextDelta(); /** + * Returns the height of text rect. + */ + S32 getTextPixelHeight(); + + /** * Shows "More" link */ void showExpandText(); diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index eef774426a..9de69a8173 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; @@ -181,6 +182,7 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp) mAtlasInfop = NULL ; mUsingAtlas = FALSE ; + mHasMedia = FALSE ; } @@ -300,7 +302,8 @@ void LLFace::switchTexture(LLViewerTexture* new_texture) if(!new_texture) { - llerrs << "Can not switch to a null texture." << llendl ; + llerrs << "Can not switch to a null texture." << llendl; + return; } new_texture->addTextureStats(mTexture->getMaxVirtualSize()) ; @@ -867,7 +870,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, llpushcallstacks ; const LLVolumeFace &vf = volume.getVolumeFace(f); S32 num_vertices = (S32)vf.mVertices.size(); - S32 num_indices = (S32)vf.mIndices.size(); + S32 num_indices = LLPipeline::sUseTriStrips ? (S32)vf.mTriStrip.size() : (S32) vf.mIndices.size(); if (mVertexBuffer.notNull()) { @@ -1039,17 +1042,20 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, if (rebuild_color) { - GLfloat alpha[4] = - { - 0.00f, - 0.25f, - 0.5f, - 0.75f - }; - - if (getPoolType() != LLDrawPool::POOL_ALPHA && (LLPipeline::sRenderDeferred || (LLPipeline::sRenderBump && tep->getShiny()))) + if (tep) { - color.mV[3] = U8 (alpha[tep->getShiny()] * 255); + GLfloat alpha[4] = + { + 0.00f, + 0.25f, + 0.5f, + 0.75f + }; + + if (getPoolType() != LLDrawPool::POOL_ALPHA && (LLPipeline::sRenderDeferred || (LLPipeline::sRenderBump && tep->getShiny()))) + { + color.mV[3] = U8 (alpha[tep->getShiny()] * 255); + } } } @@ -1057,9 +1063,19 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, if (full_rebuild) { mVertexBuffer->getIndexStrider(indicesp, mIndicesIndex); - for (U16 i = 0; i < num_indices; i++) + if (LLPipeline::sUseTriStrips) + { + for (U32 i = 0; i < (U32) num_indices; i++) + { + *indicesp++ = vf.mTriStrip[i] + index_offset; + } + } + else { - *indicesp++ = vf.mIndices[i] + index_offset; + for (U32 i = 0; i < (U32) num_indices; i++) + { + *indicesp++ = vf.mIndices[i] + index_offset; + } } } @@ -1322,17 +1338,33 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, return TRUE; } +//check if the face has a media +BOOL LLFace::hasMedia() const +{ + if(mHasMedia) + { + return TRUE ; + } + if(mTexture.notNull()) + { + return mTexture->hasParcelMedia() ; //if has a parcel media + } + + return FALSE ; //no media. +} + const F32 LEAST_IMPORTANCE = 0.05f ; const F32 LEAST_IMPORTANCE_FOR_LARGE_IMAGE = 0.3f ; F32 LLFace::getTextureVirtualSize() { F32 radius; - F32 cos_angle_to_view_dir; - mPixelArea = calcPixelArea(cos_angle_to_view_dir, radius); + F32 cos_angle_to_view_dir; + BOOL in_frustum = calcPixelArea(cos_angle_to_view_dir, radius); - if (mPixelArea <= 0) + if (mPixelArea < 0.0001f || !in_frustum) { + setVirtualSize(0.f) ; return 0.f; } @@ -1369,23 +1401,48 @@ F32 LLFace::getTextureVirtualSize() } } + setVirtualSize(face_area) ; + return face_area; } -F32 LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) +BOOL LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) { //get area of circle around face LLVector3 center = getPositionAgent(); - LLVector3 size = (mExtents[1] - mExtents[0]) * 0.5f; - + LLVector3 size = (mExtents[1] - mExtents[0]) * 0.5f; LLViewerCamera* camera = LLViewerCamera::getInstance(); + + F32 size_squared = size.lengthSquared() ; LLVector3 lookAt = center - camera->getOrigin(); - F32 dist = lookAt.normVec() ; + F32 dist = lookAt.normVec() ; //get area of circle around node - F32 app_angle = atanf(size.length()/dist); + F32 app_angle = atanf(fsqrtf(size_squared) / dist); radius = app_angle*LLDrawable::sCurPixelAngle; - F32 face_area = radius*radius * 3.14159f; + mPixelArea = radius*radius * 3.14159f; + cos_angle_to_view_dir = lookAt * camera->getXAxis() ; + + //if has media, check if the face is out of the view frustum. + if(hasMedia()) + { + if(!camera->AABBInFrustum(center, size)) + { + mImportanceToCamera = 0.f ; + return false ; + } + if(cos_angle_to_view_dir > camera->getCosHalfFov()) //the center is within the view frustum + { + cos_angle_to_view_dir = 1.0f ; + } + else + { + if(dist * dist * (lookAt - camera->getXAxis()).lengthSquared() < size_squared) + { + cos_angle_to_view_dir = 1.0f ; + } + } + } if(dist < mBoundingSphereRadius) //camera is very close { @@ -1393,12 +1450,11 @@ F32 LLFace::calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) mImportanceToCamera = 1.0f ; } else - { - cos_angle_to_view_dir = lookAt * camera->getXAxis() ; + { mImportanceToCamera = LLFace::calcImportanceToCamera(cos_angle_to_view_dir, dist) ; } - return face_area ; + return true ; } //the projection of the face partially overlaps with the screen @@ -1571,8 +1627,13 @@ S32 LLFace::pushVertices(const U16* index_array) const { if (mIndicesCount) { - mVertexBuffer->drawRange(LLRender::TRIANGLES, mGeomIndex, mGeomIndex+mGeomCount-1, mIndicesCount, mIndicesIndex); - gPipeline.addTrianglesDrawn(mIndicesCount/3); + U32 render_type = LLRender::TRIANGLES; + if (mDrawInfo) + { + render_type = mDrawInfo->mDrawMode; + } + mVertexBuffer->drawRange(render_type, mGeomIndex, mGeomIndex+mGeomCount-1, mIndicesCount, mIndicesIndex); + gPipeline.addTrianglesDrawn(mIndicesCount, render_type); } return mIndicesCount; diff --git a/indra/newview/llface.h b/indra/newview/llface.h index 68eee061b8..67dd97e6f7 100644 --- a/indra/newview/llface.h +++ b/indra/newview/llface.h @@ -105,6 +105,9 @@ public: F32 getVirtualSize() const { return mVSize; } F32 getPixelArea() const { return mPixelArea; } + S32 getIndexInTex() const {return mIndexInTex ;} + void setIndexInTex(S32 index) { mIndexInTex = index ;} + void renderSetColor() const; S32 renderElements(const U16 *index_array) const; S32 renderIndexed (); @@ -191,6 +194,9 @@ public: F32 getTextureVirtualSize() ; F32 getImportanceToCamera()const {return mImportanceToCamera ;} + void setHasMedia(bool has_media) { mHasMedia = has_media ;} + BOOL hasMedia() const ; + //for atlas LLTextureAtlasSlot* getAtlasInfo() ; void setAtlasInUse(BOOL flag); @@ -205,7 +211,7 @@ public: private: F32 adjustPartialOverlapPixelArea(F32 cos_angle_to_view_dir, F32 radius ); - F32 calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) ; + BOOL calcPixelArea(F32& cos_angle_to_view_dir, F32& radius) ; public: static F32 calcImportanceToCamera(F32 to_view_dir, F32 dist); @@ -236,6 +242,7 @@ private: U16 mGeomIndex; // index into draw pool U32 mIndicesCount; U32 mIndicesIndex; // index into draw pool for indices (yeah, I know!) + S32 mIndexInTex ; //previous rebuild's geometry info U16 mLastGeomCount; @@ -258,7 +265,7 @@ private: //based on the distance from the face to the view point and the angle from the face center to the view direction. F32 mImportanceToCamera ; F32 mBoundingSphereRadius ; - + bool mHasMedia ; //atlas LLPointer<LLTextureAtlasSlot> mAtlasInfop ; diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index effa57b1ef..4fa97e789b 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -314,7 +314,7 @@ void LLFastTimerView::draw() S32 left, top, right, bottom; S32 x, y, barw, barh, dx, dy; S32 texth, textw; - LLPointer<LLUIImage> box_imagep = LLUI::getUIImage("rounded_square.tga"); + LLPointer<LLUIImage> box_imagep = LLUI::getUIImage("Rounded_Square"); // Draw the window background gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); @@ -323,7 +323,9 @@ void LLFastTimerView::draw() S32 xleft = margin; S32 ytop = margin; - mAverageCyclesPerTimer = llround(lerp((F32)mAverageCyclesPerTimer, (F32)(LLFastTimer::sTimerCycles / (U64)LLFastTimer::sTimerCalls), 0.1f)); + mAverageCyclesPerTimer = LLFastTimer::sTimerCalls == 0 + ? 0 + : llround(lerp((F32)mAverageCyclesPerTimer, (F32)(LLFastTimer::sTimerCycles / (U64)LLFastTimer::sTimerCalls), 0.1f)); LLFastTimer::sTimerCycles = 0; LLFastTimer::sTimerCalls = 0; diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index ee33c189f9..bf7c735488 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -34,7 +34,6 @@ #include "llfavoritesbar.h" -#include "llbutton.h" #include "llfloaterreg.h" #include "llfocusmgr.h" #include "llinventory.h" @@ -48,9 +47,9 @@ #include "llclipboard.h" #include "llinventoryclipboard.h" #include "llinventorybridge.h" -#include "llinventorymodel.h" #include "llfloaterworldmap.h" #include "lllandmarkactions.h" +#include "llnotificationsutil.h" #include "llsidetray.h" #include "lltoggleablemenu.h" #include "llviewerinventory.h" @@ -299,6 +298,20 @@ public: return TRUE; } + void setVisible(BOOL b) + { + // Overflow menu shouldn't hide when it still has focus. See EXT-4217. + if (!b && hasFocus()) + return; + LLToggleableMenu::setVisible(b); + setFocus(b); + } + + void onFocusLost() + { + setVisible(FALSE); + } + protected: LLFavoriteLandmarkToggleableMenu(const LLToggleableMenu::Params& p): LLToggleableMenu(p) @@ -369,7 +382,8 @@ struct LLFavoritesSort LLFavoritesBarCtrl::Params::Params() : image_drag_indication("image_drag_indication"), - chevron_button("chevron_button") + chevron_button("chevron_button"), + label("label") { } @@ -400,6 +414,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() @@ -483,6 +501,10 @@ BOOL LLFavoritesBarCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, if (drop) { + if (mItems.empty()) + { + setLandingTab(NULL); + } handleNewFavoriteDragAndDrop(item, favorites_id, x, y); showDragMarker(FALSE); } @@ -508,14 +530,14 @@ void LLFavoritesBarCtrl::handleExistingFavoriteDragAndDrop(S32 x, S32 y) if (dest) { - updateItemsOrder(mItems, mDragItemId, dest->getLandmarkId()); + LLInventoryModel::updateItemsOrder(mItems, mDragItemId, dest->getLandmarkId()); } else { mItems.push_back(gInventory.getItem(mDragItemId)); } - saveItemsOrder(mItems); + gInventory.saveItemsOrder(mItems); LLToggleableMenu* menu = (LLToggleableMenu*) mPopupMenuHandle.get(); @@ -620,8 +642,8 @@ void LLFavoritesBarCtrl::draw() if (mShowDragMarker) { - S32 w = mImageDragIndication->getWidth() / 2; - S32 h = mImageDragIndication->getHeight() / 2; + S32 w = mImageDragIndication->getWidth(); + S32 h = mImageDragIndication->getHeight(); if (mLandingTab) { @@ -644,7 +666,7 @@ LLXMLNodePtr LLFavoritesBarCtrl::getButtonXMLNode() bool success = LLUICtrlFactory::getLayeredXMLNode("favorites_bar_button.xml", buttonXMLNode); if (!success) { - llwarns << "Unable to read xml file with button for Favorites Bar: favorites_bar_button.xml" << llendl; + llwarns << "Failed to create Favorites Bar button from favorites_bar_button.xml" << llendl; buttonXMLNode = NULL; } return buttonXMLNode; @@ -664,7 +686,14 @@ void LLFavoritesBarCtrl::updateButtons() { return; } - + if(mItems.empty()) + { + mBarLabel->setVisible(TRUE); + } + else + { + mBarLabel->setVisible(FALSE); + } const child_list_t* childs = getChildList(); child_list_const_iter_t child_it = childs->begin(); int first_changed_item_index = 0; @@ -680,7 +709,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; @@ -710,14 +739,22 @@ void LLFavoritesBarCtrl::updateButtons() } } // we have to remove ChevronButton to make sure that the last item will be LandmarkButton to get the right aligning + // keep in mind that we are cutting all buttons in space between the last visible child of favbar and ChevronButton if (mChevronButton->getParent() == this) { removeChild(mChevronButton); } int last_right_edge = 0; + //calculate new buttons offset if (getChildList()->size() > 0) { - last_right_edge = getChildList()->back()->getRect().mRight; + //find last visible child to get the rightest button offset + child_list_const_reverse_iter_t last_visible_it = std::find_if(childs->rbegin(), childs->rend(), + std::mem_fun(&LLView::getVisible)); + if(last_visible_it != childs->rend()) + { + last_right_edge = (*last_visible_it)->getRect().mRight; + } } //last_right_edge is saving coordinates LLButton* last_new_button = NULL; @@ -754,6 +791,15 @@ void LLFavoritesBarCtrl::updateButtons() mChevronButton->setRect(rect); mChevronButton->setVisible(TRUE); } + // Update overflow menu + LLToggleableMenu* overflow_menu = static_cast <LLToggleableMenu*> (mPopupMenuHandle.get()); + if (overflow_menu && overflow_menu->getVisible()) + { + overflow_menu->setFocus(FALSE); + overflow_menu->setVisible(FALSE); + if (mUpdateDropDownItems) + showDropDownMenu(); + } } else { @@ -773,10 +819,10 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem * WORKAROUND: * there are some problem with displaying of fonts in buttons. * Empty space (or ...) is displaying instead of last symbols, even though the width of the button is enough. - * Problem will gone, if we stretch out the button. For that reason I have to put additional 10 pixels. + * 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()) + 10; - 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 ? @@ -869,6 +915,8 @@ void LLFavoritesBarCtrl::showDropDownMenu() if (menu) { + // Release focus to allow changing of visibility. + menu->setFocus(FALSE); if (!menu->toggleVisibility()) return; @@ -971,6 +1019,10 @@ BOOL LLFavoritesBarCtrl::handleRightMouseDown(S32 x, S32 y, MASK mask) void copy_slurl_to_clipboard_cb(std::string& slurl) { gClipboard.copyFromString(utf8str_to_wstring(slurl)); + + LLSD args; + args["SLURL"] = slurl; + LLNotificationsUtil::add("CopySLURL", args); } @@ -1193,25 +1245,6 @@ BOOL LLFavoritesBarCtrl::needToSaveItemsOrder(const LLInventoryModel::item_array return result; } -void LLFavoritesBarCtrl::saveItemsOrder(LLInventoryModel::item_array_t& items) -{ - int sortField = 0; - - // current order is saved by setting incremental values (1, 2, 3, ...) for the sort field - for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i) - { - LLViewerInventoryItem* item = *i; - - item->setSortField(++sortField); - item->setComplete(TRUE); - item->updateServer(FALSE); - - gInventory.updateItem(item); - } - - gInventory.notifyObservers(); -} - LLInventoryModel::item_array_t::iterator LLFavoritesBarCtrl::findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id) { LLInventoryModel::item_array_t::iterator result = items.end(); @@ -1228,20 +1261,14 @@ LLInventoryModel::item_array_t::iterator LLFavoritesBarCtrl::findItemByUUID(LLIn return result; } -void LLFavoritesBarCtrl::updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& srcItemId, const LLUUID& destItemId) -{ - LLViewerInventoryItem* srcItem = gInventory.getItem(srcItemId); - LLViewerInventoryItem* destItem = gInventory.getItem(destItemId); - - items.erase(findItemByUUID(items, srcItem->getUUID())); - items.insert(findItemByUUID(items, destItem->getUUID()), srcItem); -} - void LLFavoritesBarCtrl::insertBeforeItem(LLInventoryModel::item_array_t& items, const LLUUID& beforeItemId, LLViewerInventoryItem* insertedItem) { LLViewerInventoryItem* beforeItem = gInventory.getItem(beforeItemId); - - items.insert(findItemByUUID(items, beforeItem->getUUID()), insertedItem); + llassert(beforeItem); + if (beforeItem) + { + items.insert(findItemByUUID(items, beforeItem->getUUID()), insertedItem); + } } // EOF diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h index 9ac734baff..2c6d8d1580 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 @@ public: { Optional<LLUIImage*> image_drag_indication; Optional<LLButton::Params> chevron_button; + Optional<LLTextBox::Params> label; Params(); }; @@ -126,16 +128,7 @@ private: // checks if the current order of the favorites items must be saved BOOL needToSaveItemsOrder(const LLInventoryModel::item_array_t& items); - // saves current order of the favorites items - void saveItemsOrder(LLInventoryModel::item_array_t& items); - - /* - * changes favorites items order by insertion of the item identified by srcItemId - * BEFORE the item identified by destItemId. both items must exist in items array. - */ - void updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& srcItemId, const LLUUID& destItemId); - - /* + /** * inserts an item identified by insertedItemId BEFORE an item identified by beforeItemId. * this function assumes that an item identified by insertedItemId doesn't exist in items array. */ @@ -148,6 +141,7 @@ private: LLUICtrl* mLandingTab; LLUICtrl* mLastTab; LLButton* mChevronButton; + LLTextBox* mBarLabel; LLUUID mDragItemId; BOOL mStartDrag; diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index fb724f30e0..fbb90c69f3 100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -287,6 +287,7 @@ BOOL LLFeatureManager::loadFeatureTables() if (!flp) { LL_ERRS("RenderInit") << "Specified parameter before <list> keyword!" << LL_ENDL; + return FALSE; } S32 available; F32 recommended; diff --git a/indra/newview/llfeaturemanager.h b/indra/newview/llfeaturemanager.h index 383963a41d..dd218d428f 100644 --- a/indra/newview/llfeaturemanager.h +++ b/indra/newview/llfeaturemanager.h @@ -99,8 +99,14 @@ protected: 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();} diff --git a/indra/newview/llfilepicker.cpp b/indra/newview/llfilepicker.cpp index 028e1cc098..2873057c19 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 7ecbc3db60..4f254ff67e 100644 --- a/indra/newview/llfilepicker.h +++ b/indra/newview/llfilepicker.h @@ -176,8 +176,7 @@ private: std::vector<std::string> mFiles; S32 mCurrentFile; - BOOL mLocked; - BOOL mMultiFile; + bool mLocked; static LLFilePicker sInstance; diff --git a/indra/newview/llfirstuse.cpp b/indra/newview/llfirstuse.cpp index 7fd0e070be..b3fdf60b11 100644 --- a/indra/newview/llfirstuse.cpp +++ b/indra/newview/llfirstuse.cpp @@ -45,6 +45,7 @@ #include "llappviewer.h" #include "lltracker.h" +/* // static std::set<std::string> LLFirstUse::sConfigVariables; @@ -75,7 +76,8 @@ void LLFirstUse::resetFirstUse() gWarningSettings.setBOOL(*iter, TRUE); } } - +*/ +/* // Called whenever the viewer detects that your balance went up void LLFirstUse::useBalanceIncrease(S32 delta) @@ -145,6 +147,8 @@ void LLFirstUse::useBuild() LLNotificationsUtil::add("FirstBuild"); } } + + */ /* // static void LLFirstUse::useLeftClickNoHit() @@ -157,6 +161,7 @@ void LLFirstUse::useLeftClickNoHit() } } */ +/* // static void LLFirstUse::useTeleport() { @@ -171,7 +176,7 @@ void LLFirstUse::useTeleport() } } } - +*/ // static void LLFirstUse::useOverrideKeys() { @@ -187,7 +192,7 @@ void LLFirstUse::useOverrideKeys() } } } - +/* // static void LLFirstUse::useAttach() { @@ -216,6 +221,7 @@ void LLFirstUse::useInventory() } } +*/ // static void LLFirstUse::useSandbox() @@ -230,7 +236,7 @@ void LLFirstUse::useSandbox() LLNotificationsUtil::add("FirstSandbox", args); } } - +/* // static void LLFirstUse::useFlexible() { @@ -277,3 +283,4 @@ void LLFirstUse::useMedia() //LLNotificationsUtil::add("FirstMedia"); } } +*/ diff --git a/indra/newview/llfirstuse.h b/indra/newview/llfirstuse.h index 7b4f9f516f..3c7551f6cb 100644 --- a/indra/newview/llfirstuse.h +++ b/indra/newview/llfirstuse.h @@ -79,6 +79,7 @@ object or from inventory. class LLFirstUse { public: +/* // Add a config variable to be reset on resetFirstUse() static void addConfigVariable(const std::string& var); @@ -97,11 +98,16 @@ public: static void useBuild(); // static void useLeftClickNoHit(); static void useTeleport(); +*/ static void useOverrideKeys(); +/* static void useAttach(); static void useAppearance(); static void useInventory(); + */ static void useSandbox(); + +/* static void useFlexible(); static void useDebugMenus(); static void useSculptedPrim(); @@ -109,6 +115,7 @@ public: protected: static std::set<std::string> sConfigVariables; +*/ }; #endif diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp index fc8790c172..561965d021 100644 --- a/indra/newview/llflexibleobject.cpp +++ b/indra/newview/llflexibleobject.cpp @@ -51,6 +51,9 @@ /*static*/ F32 LLVolumeImplFlexible::sUpdateFactor = 1.0f; +static LLFastTimer::DeclareTimer FTM_FLEXIBLE_REBUILD("Rebuild"); +static LLFastTimer::DeclareTimer FTM_DO_FLEXIBLE_UPDATE("Update"); + // LLFlexibleObjectData::pack/unpack now in llprimitive.cpp //----------------------------------------------- @@ -66,6 +69,7 @@ LLVolumeImplFlexible::LLVolumeImplFlexible(LLViewerObject* vo, LLFlexibleObjectD mInitializedRes = -1; mSimulateRes = 0; mFrameNum = 0; + mCollisionSphereRadius = 0.f; mRenderRes = 1; if(mVO->mDrawable.notNull()) @@ -193,7 +197,6 @@ void LLVolumeImplFlexible::remapSections(LLFlexibleObjectSection *source, S32 so } } - //----------------------------------------------------------------------------- void LLVolumeImplFlexible::setAttributesOfAllSections(LLVector3* inScale) { @@ -362,6 +365,7 @@ inline S32 log2(S32 x) void LLVolumeImplFlexible::doFlexibleUpdate() { + LLFastTimer ftm(FTM_DO_FLEXIBLE_UPDATE); LLVolume* volume = mVO->getVolume(); LLPath *path = &volume->getPath(); if (mSimulateRes == 0) @@ -692,7 +696,10 @@ BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable) } volume->updateRelativeXform(); - doFlexibleUpdate(); + { + LLFastTimer t(FTM_DO_FLEXIBLE_UPDATE); + doFlexibleUpdate(); + } // Object may have been rotated, which means it needs a rebuild. See SL-47220 BOOL rotated = FALSE; @@ -709,7 +716,10 @@ BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable) volume->regenFaces(); volume->mDrawable->setState(LLDrawable::REBUILD_VOLUME); volume->dirtySpatialGroup(); - doFlexibleRebuild(); + { + LLFastTimer t(FTM_FLEXIBLE_REBUILD); + doFlexibleRebuild(); + } volume->genBBoxes(isVolumeGlobal()); } else if (!mUpdated || rotated) diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index e80499688e..ef69f39ad2 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -167,20 +167,21 @@ BOOL LLFloaterAbout::postBuild() // Now build the various pieces support << getString("AboutHeader", args); - if (info.has("COMPILER")) - { - support << "\n\n" << getString("AboutCompiler", args); - } if (info.has("REGION")) { support << "\n\n" << getString("AboutPosition", args); } support << "\n\n" << getString("AboutSystem", args); + support << "\n"; if (info.has("GRAPHICS_DRIVER_VERSION")) { - support << "\n\n" << getString("AboutDriver", args); + support << "\n" << getString("AboutDriver", args); + } + support << "\n" << getString("AboutLibs", args); + if (info.has("COMPILER")) + { + support << "\n" << getString("AboutCompiler", args); } - support << "\n\n" << getString("AboutLibs", args); if (info.has("PACKETS_IN")) { support << '\n' << getString("AboutTraffic", args); @@ -193,11 +194,11 @@ BOOL LLFloaterAbout::postBuild() support_widget->blockUndo(); // Fix views - support_widget->setCursorPos(0); support_widget->setEnabled(FALSE); + support_widget->startOfDoc(); - credits_widget->setCursorPos(0); credits_widget->setEnabled(FALSE); + credits_widget->startOfDoc(); return TRUE; } @@ -268,7 +269,7 @@ LLSD LLFloaterAbout::getInfo() info["VIVOX_VERSION"] = gVoiceClient ? gVoiceClient->getAPIVersion() : LLTrans::getString("NotConnected"); // TODO: Implement media plugin version query - info["QT_WEBKIT_VERSION"] = "4.5.2 (version number hard-coded)"; + info["QT_WEBKIT_VERSION"] = "4.6 (version number hard-coded)"; if (gPacketsIn > 0) { diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp index 60f150bd96..5ec58c8dd6 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/llfloateranimpreview.h b/indra/newview/llfloateranimpreview.h index dd2c0b809a..3ee1f419ab 100644 --- a/indra/newview/llfloateranimpreview.h +++ b/indra/newview/llfloateranimpreview.h @@ -127,7 +127,6 @@ protected: LLRectf mPreviewImageRect; LLAssetID mMotionID; LLTransactionID mTransactionID; - BOOL mEnabled; LLAnimPauseRequest mPauseRequest; std::map<std::string, LLUUID> mIDList; diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp index 538b44c056..b2f700069f 100644 --- a/indra/newview/llfloaterbulkpermission.cpp +++ b/indra/newview/llfloaterbulkpermission.cpp @@ -43,12 +43,12 @@ #include "llviewerregion.h" #include "lscript_rt_interface.h" #include "llviewercontrol.h" +#include "llviewerinventory.h" #include "llviewerobject.h" #include "llviewerregion.h" #include "llresmgr.h" #include "llbutton.h" #include "lldir.h" -#include "llfloaterchat.h" #include "llviewerstats.h" #include "lluictrlfactory.h" #include "llselectmgr.h" diff --git a/indra/newview/llfloaterbulkpermission.h b/indra/newview/llfloaterbulkpermission.h index 31f4f5c3e1..bffcff7059 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/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp index 9b88923e7e..d37bc01885 100644 --- a/indra/newview/llfloaterbuyland.cpp +++ b/indra/newview/llfloaterbuyland.cpp @@ -82,7 +82,10 @@ public: virtual ~LLFloaterBuyLandUI(); /*virtual*/ void onClose(bool app_quitting); - + + // Left padding for maturity rating icon. + static const S32 ICON_PAD = 2; + private: class SelectionObserver : public LLParcelObserver { @@ -501,6 +504,25 @@ void LLFloaterBuyLandUI::updateCovenantInfo() { std::string region_name_txt = region->getName() + " ("+rating +")"; region_name->setText(region_name_txt); + + LLIconCtrl* rating_icon = getChild<LLIconCtrl>("rating_icon"); + LLRect rect = rating_icon->getRect(); + S32 icon_left_pad = region_name->getRect().mLeft + region_name->getTextBoundingRect().getWidth() + ICON_PAD; + rating_icon->setRect(rect.setOriginAndSize(icon_left_pad, rect.mBottom, rect.getWidth(), rect.getHeight())); + + switch(sim_access) + { + case SIM_ACCESS_PG: + rating_icon->setValue(getString("icon_PG")); + break; + + case SIM_ACCESS_ADULT: + rating_icon->setValue(getString("icon_R")); + break; + + default: + rating_icon->setValue(getString("icon_M")); + } } LLTextBox* region_type = getChild<LLTextBox>("region_type_text"); diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index 764aff68c9..d0188352c7 100644 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -65,7 +65,7 @@ public: LLPanelCameraZoom(); /* virtual */ BOOL postBuild(); - /* virtual */ void onOpen(const LLSD& key); + /* virtual */ void draw(); protected: void onZoomPlusHeldDown(); @@ -73,7 +73,6 @@ protected: void onSliderValueChanged(); private: - F32 mSavedSliderVal; LLButton* mPlusBtn; LLButton* mMinusBtn; LLSlider* mSlider; @@ -88,8 +87,7 @@ static LLRegisterPanelClassWrapper<LLPanelCameraZoom> t_camera_zoom_panel("camer LLPanelCameraZoom::LLPanelCameraZoom() : mPlusBtn( NULL ), mMinusBtn( NULL ), - mSlider( NULL ), - mSavedSliderVal(0.f) + mSlider( NULL ) { mCommitCallbackRegistrar.add("Zoom.minus", boost::bind(&LLPanelCameraZoom::onZoomPlusHeldDown, this)); mCommitCallbackRegistrar.add("Zoom.plus", boost::bind(&LLPanelCameraZoom::onZoomMinusHeldDown, this)); @@ -101,16 +99,13 @@ BOOL LLPanelCameraZoom::postBuild() mPlusBtn = getChild <LLButton> ("zoom_plus_btn"); mMinusBtn = getChild <LLButton> ("zoom_minus_btn"); mSlider = getChild <LLSlider> ("zoom_slider"); - mSlider->setMinValue(.0f); - mSlider->setMaxValue(8.f); return LLPanel::postBuild(); } -void LLPanelCameraZoom::onOpen(const LLSD& key) +void LLPanelCameraZoom::draw() { - LLVector3d to_focus = gAgent.getPosGlobalFromAgent(LLViewerCamera::getInstance()->getOrigin()) - gAgent.calcFocusPositionTargetGlobal(); - mSavedSliderVal = 8.f - (F32)to_focus.magVec(); // maximum minus current - mSlider->setValue( mSavedSliderVal ); + mSlider->setValue(gAgent.getCameraZoomFraction()); + LLPanel::draw(); } void LLPanelCameraZoom::onZoomPlusHeldDown() @@ -135,15 +130,15 @@ void LLPanelCameraZoom::onZoomMinusHeldDown() void LLPanelCameraZoom::onSliderValueChanged() { - F32 val = mSlider->getValueF32(); - F32 rate = val - mSavedSliderVal; - - gAgent.unlockView(); - gAgent.cameraOrbitIn(rate); - - mSavedSliderVal = val; + F32 zoom_level = mSlider->getValueF32(); + gAgent.setCameraZoomFraction(zoom_level); } +void activate_camera_tool() +{ + LLToolMgr::getInstance()->setTransientTool(LLToolCamera::getInstance()); +}; + // // Member functions // @@ -151,7 +146,7 @@ void LLPanelCameraZoom::onSliderValueChanged() /*static*/ bool LLFloaterCamera::inFreeCameraMode() { LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); - if (floater_camera && floater_camera->mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA) + if (floater_camera && floater_camera->mCurrMode == CAMERA_CTRL_MODE_FREE_CAMERA && gAgent.getCameraMode() != CAMERA_MODE_MOUSELOOK) { return true; } @@ -177,27 +172,17 @@ void LLFloaterCamera::update() } -/*static*/ void LLFloaterCamera::updateIfNotInAvatarViewMode() -{ - LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); - if (floater_camera && !floater_camera->inAvatarViewMode()) - { - floater_camera->update(); - } -} - - void LLFloaterCamera::toPrevMode() { switchMode(mPrevMode); } -/*static*/ void LLFloaterCamera::toPrevModeIfInAvatarViewMode() +/*static*/ void LLFloaterCamera::onLeavingMouseLook() { LLFloaterCamera* floater_camera = LLFloaterCamera::findInstance(); - if (floater_camera && floater_camera->inAvatarViewMode()) + if (floater_camera && floater_camera->inFreeCameraMode()) { - floater_camera->toPrevMode(); + activate_camera_tool(); } } @@ -256,6 +241,7 @@ LLFloaterCamera::LLFloaterCamera(const LLSD& val) BOOL LLFloaterCamera::postBuild() { setIsChrome(TRUE); + setTitleVisible(TRUE); // restore title visibility after chrome applying mRotate = getChild<LLJoystickCameraRotate>(ORBIT); mZoom = getChild<LLPanelCameraZoom>(ZOOM); @@ -310,6 +296,31 @@ void LLFloaterCamera::setMode(ECameraControlMode mode) updateState(); } +void LLFloaterCamera::setModeTitle(const ECameraControlMode mode) +{ + std::string title; + switch(mode) + { + case CAMERA_CTRL_MODE_ORBIT: + title = getString("orbit_mode_title"); + break; + case CAMERA_CTRL_MODE_PAN: + title = getString("pan_mode_title"); + break; + case CAMERA_CTRL_MODE_AVATAR_VIEW: + title = getString("avatar_view_mode_title"); + break; + case CAMERA_CTRL_MODE_FREE_CAMERA: + title = getString("free_mode_title"); + break; + default: + // title should be provided for all modes + llassert(false); + break; + } + setTitle(title); +} + void LLFloaterCamera::switchMode(ECameraControlMode mode) { setMode(mode); @@ -325,7 +336,7 @@ void LLFloaterCamera::switchMode(ECameraControlMode mode) break; case CAMERA_CTRL_MODE_FREE_CAMERA: - LLToolMgr::getInstance()->setTransientTool(LLToolCamera::getInstance()); + activate_camera_tool(); break; case CAMERA_CTRL_MODE_AVATAR_VIEW: @@ -369,6 +380,10 @@ void LLFloaterCamera::updateState() childSetVisible(ZOOM, CAMERA_CTRL_MODE_AVATAR_VIEW != mCurrMode); childSetVisible(PRESETS, CAMERA_CTRL_MODE_AVATAR_VIEW == mCurrMode); + updateCameraPresetButtons(); + setModeTitle(mCurrMode); + + //hiding or showing the panel with controls by reshaping the floater bool showControls = CAMERA_CTRL_MODE_FREE_CAMERA != mCurrMode; if (showControls == childIsVisible(CONTROLS)) return; @@ -399,6 +414,16 @@ void LLFloaterCamera::updateState() } } +void LLFloaterCamera::updateCameraPresetButtons() +{ + ECameraPreset preset = (ECameraPreset) gSavedSettings.getU32("CameraPreset"); + + childSetValue("rear_view", preset == CAMERA_PRESET_REAR_VIEW); + childSetValue("group_view", preset == CAMERA_PRESET_GROUP_VIEW); + childSetValue("front_view", preset == CAMERA_PRESET_FRONT_VIEW); + childSetValue("mouselook_view", gAgent.cameraMouselook()); +} + void LLFloaterCamera::onClickCameraPresets(const LLSD& param) { std::string name = param.asString(); @@ -420,4 +445,7 @@ void LLFloaterCamera::onClickCameraPresets(const LLSD& param) gAgent.changeCameraToMouselook(); } + LLFloaterCamera* camera_floater = LLFloaterCamera::findInstance(); + if (camera_floater) + camera_floater->updateCameraPresetButtons(); } diff --git a/indra/newview/llfloatercamera.h b/indra/newview/llfloatercamera.h index 5d44b4944d..b268839165 100644 --- a/indra/newview/llfloatercamera.h +++ b/indra/newview/llfloatercamera.h @@ -61,7 +61,7 @@ public: /* callback for camera presets changing */ static void onClickCameraPresets(const LLSD& param); - static void toPrevModeIfInAvatarViewMode(); + static void onLeavingMouseLook(); /** resets current camera mode to orbit mode */ static void resetCameraMode(); @@ -69,8 +69,6 @@ public: /* determines actual mode and updates ui */ void update(); - static void updateIfNotInAvatarViewMode(); - virtual void onOpen(const LLSD& key); virtual void onClose(bool app_quitting); @@ -102,9 +100,15 @@ private: /* sets a new mode preserving previous one and updates ui*/ void setMode(ECameraControlMode mode); + /** set title appropriate to passed mode */ + void setModeTitle(const ECameraControlMode mode); + /* updates the state (UI) according to the current mode */ void updateState(); + /* update camera preset buttons toggle state according to the currently selected preset */ + void updateCameraPresetButtons(); + void onClickBtn(ECameraControlMode mode); void assignButton2Mode(ECameraControlMode mode, const std::string& button_name); diff --git a/indra/newview/llfloaterchat.cpp b/indra/newview/llfloaterchat.cpp index b9e0f928f1..cdb9b8edb8 100644 --- a/indra/newview/llfloaterchat.cpp +++ b/indra/newview/llfloaterchat.cpp @@ -37,8 +37,6 @@ #include "llviewerprecompiledheaders.h" -#include "llfloaterchat.h" - // project include #include "llagent.h" #include "llappviewer.h" @@ -190,7 +188,14 @@ void LLFloaterChat::addChatHistory(const LLChat& chat, bool log_to_file) { if (log_to_file && (gSavedPerAccountSettings.getBOOL("LogChat"))) { - LLLogChat::saveHistory("chat", chat.mFromName, chat.mFromID, chat.mText); + 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); + } } LLColor4 color = get_text_color(chat); @@ -306,27 +311,17 @@ void LLFloaterChat::onClickToggleShowMute(LLUICtrl* caller, void *data) } // Put a line of chat in all the right places -void LLFloaterChat::addChat(const LLChat& chat, BOOL from_instant_message, BOOL local_agent) +void LLFloaterChat::addChat(const LLChat& chat, BOOL local_agent) { triggerAlerts(chat.mText); // Add the sender to the list of people with which we've recently interacted. - if(chat.mSourceType == CHAT_SOURCE_AGENT && chat.mFromID.notNull()) - LLRecentPeople::instance().add(chat.mFromID); + // this is not the best place to add _all_ messages to recent list + // comment this for now, may remove later on code cleanup + //if(chat.mSourceType == CHAT_SOURCE_AGENT && chat.mFromID.notNull()) + // LLRecentPeople::instance().add(chat.mFromID); - bool add_chat = true; - bool log_chat = true; - if(from_instant_message) - { - if (!gSavedSettings.getBOOL("IMInChat")) - add_chat = false; - //log_chat = false; -} - - if (add_chat) - { - addChatHistory(chat, log_chat); - } + addChatHistory(chat, true); } // Moved from lltextparser.cpp to break llui/llaudio library dependency. diff --git a/indra/newview/llfloaterchat.h b/indra/newview/llfloaterchat.h index 84fc199bfa..4437a0a5c2 100644 --- a/indra/newview/llfloaterchat.h +++ b/indra/newview/llfloaterchat.h @@ -61,7 +61,7 @@ public: // *TODO:Skinning - move these to LLChat (or LLViewerChat?) // Add chat to console and history list. // Color based on source, type, distance. - static void addChat(const LLChat& chat, BOOL from_im = FALSE, BOOL local_agent = FALSE); + static void addChat(const LLChat& chat, BOOL local_agent = FALSE); // Add chat to history alone. static void addChatHistory(const LLChat& chat, bool log_to_file = true); diff --git a/indra/newview/llfloaterchatterbox.cpp b/indra/newview/llfloaterchatterbox.cpp index 9108cfb72b..774caaec90 100644 --- a/indra/newview/llfloaterchatterbox.cpp +++ b/indra/newview/llfloaterchatterbox.cpp @@ -38,7 +38,6 @@ #include "llfloaterreg.h" #include "llfloaterchatterbox.h" #include "lluictrlfactory.h" -#include "llfloaterchat.h" #include "llfloaterfriends.h" #include "llfloatergroups.h" #include "llviewercontrol.h" @@ -134,22 +133,6 @@ BOOL LLFloaterChatterBox::postBuild() addFloater(LLFloaterMyFriends::getInstance(), TRUE); } - if (gSavedSettings.getBOOL("ChatHistoryTornOff")) - { - LLFloaterChat* floater_chat = LLFloaterChat::getInstance(); - if(floater_chat) - { - // add then remove to set up relationship for re-attach - addFloater(floater_chat, FALSE); - removeFloater(floater_chat); - // reparent to floater view - gFloaterView->addChild(floater_chat); - } - } - else - { - addFloater(LLFloaterChat::getInstance(), FALSE); - } mTabContainer->lockTabs(); return TRUE; } @@ -230,27 +213,19 @@ void LLFloaterChatterBox::onOpen(const LLSD& key) //*TODO:Skinning show the session id associated with key if (key.asString() == "local") { - LLFloaterChat* chat = LLFloaterReg::findTypedInstance<LLFloaterChat>("chat"); - chat->openFloater(); } else if (key.isDefined()) { - LLFloaterIMPanel* impanel = gIMMgr->findFloaterBySession(key.asUUID()); + /*LLFloaterIMPanel* impanel = gIMMgr->findFloaterBySession(key.asUUID()); if (impanel) { impanel->openFloater(); - } + }*/ } } void LLFloaterChatterBox::onVisibilityChange ( const LLSD& new_visibility ) { - // HACK: potentially need to toggle console - LLFloaterChat* instance = LLFloaterChat::getInstance(); - if(instance) - { - instance->updateConsoleVisibility(); - } } void LLFloaterChatterBox::removeFloater(LLFloater* floaterp) @@ -349,8 +324,7 @@ LLFloater* LLFloaterChatterBox::getCurrentVoiceFloater() } if (LLVoiceChannelProximal::getInstance() == LLVoiceChannel::getCurrentVoiceChannel()) { - // show near me tab if in proximal channel - return LLFloaterChat::getInstance(); + return NULL; } else { diff --git a/indra/newview/llfloatercolorpicker.cpp b/indra/newview/llfloatercolorpicker.cpp index 73b79d8e13..b65457c4eb 100644 --- a/indra/newview/llfloatercolorpicker.cpp +++ b/indra/newview/llfloatercolorpicker.cpp @@ -586,7 +586,7 @@ void LLFloaterColorPicker::draw() gl_triangle_2d ( startX, startY, startX + mLumMarkerSize, startY - mLumMarkerSize, startX + mLumMarkerSize, startY + mLumMarkerSize, - LLColor4 ( 0.0f, 0.0f, 0.0f, 1.0f ), TRUE ); + LLColor4 ( 0.75f, 0.75f, 0.75f, 1.0f ), TRUE ); // draw luminance slider outline gl_rect_2d ( mLumRegionLeft, diff --git a/indra/newview/llfloaterevent.cpp b/indra/newview/llfloaterevent.cpp new file mode 100644 index 0000000000..97ebab3425 --- /dev/null +++ b/indra/newview/llfloaterevent.cpp @@ -0,0 +1,357 @@ +/** + * @file llfloaterevent.cpp + * @brief Display for events in the finder + * + * $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$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llfloaterevent.h" + +#include "message.h" +#include "llnotificationsutil.h" +#include "llui.h" + +#include "llagent.h" +#include "llviewerwindow.h" +#include "llbutton.h" +#include "llcachename.h" +#include "llcommandhandler.h" // secondlife:///app/chat/ support +#include "lleventflags.h" +#include "lleventnotifier.h" +#include "llexpandabletextbox.h" +#include "llfloater.h" +#include "llfloaterreg.h" +#include "llfloaterworldmap.h" +#include "llinventorymodel.h" +#include "llsecondlifeurls.h" +#include "llslurl.h" +#include "lltextbox.h" +#include "lltexteditor.h" +#include "lluiconstants.h" +#include "llviewercontrol.h" +#include "llweb.h" +#include "llworldmap.h" +#include "llworldmapmessage.h" +#include "lluictrlfactory.h" +#include "lltrans.h" + + +class LLEventHandler : public LLCommandHandler +{ +public: + // requires trusted browser to trigger + LLEventHandler() : LLCommandHandler("event", UNTRUSTED_THROTTLE) { } + bool handle(const LLSD& params, const LLSD& query_map, + LLMediaCtrl* web) + { + if (params.size() < 1) + { + return false; + } + + LLFloaterEvent* floater = LLFloaterReg::getTypedInstance<LLFloaterEvent>("event"); + if (floater) + { + floater->setEventID(params[0].asInteger()); + LLFloaterReg::showTypedInstance<LLFloaterEvent>("event"); + return true; + } + + return false; + } +}; +LLEventHandler gEventHandler; + +LLFloaterEvent::LLFloaterEvent(const LLSD& key) + : LLFloater(key), + + mEventID(0) +{ +} + + +LLFloaterEvent::~LLFloaterEvent() +{ +} + + +BOOL LLFloaterEvent::postBuild() +{ + mTBName = getChild<LLTextBox>("event_name"); + + mTBCategory = getChild<LLTextBox>("event_category"); + + mTBDate = getChild<LLTextBox>("event_date"); + + mTBDuration = getChild<LLTextBox>("event_duration"); + + mTBDesc = getChild<LLExpandableTextBox>("event_desc"); + mTBDesc->setEnabled(FALSE); + + mTBRunBy = getChild<LLTextBox>("event_runby"); + mTBLocation = getChild<LLTextBox>("event_location"); + mTBCover = getChild<LLTextBox>("event_cover"); + + mTeleportBtn = getChild<LLButton>( "teleport_btn"); + mTeleportBtn->setClickedCallback(onClickTeleport, this); + + mMapBtn = getChild<LLButton>( "map_btn"); + mMapBtn->setClickedCallback(onClickMap, this); + + mNotifyBtn = getChild<LLButton>( "notify_btn"); + mNotifyBtn->setClickedCallback(onClickNotify, this); + + mCreateEventBtn = getChild<LLButton>( "create_event_btn"); + mCreateEventBtn->setClickedCallback(onClickCreateEvent, this); + + mGodDeleteEventBtn = getChild<LLButton>( "god_delete_event_btn"); + mGodDeleteEventBtn->setClickedCallback(boost::bind(&LLFloaterEvent::onClickDeleteEvent, this)); + + return TRUE; +} + +void LLFloaterEvent::setEventID(const U32 event_id) +{ + mEventID = event_id; + // Should reset all of the panel state here + resetInfo(); + + if (event_id != 0) + { + sendEventInfoRequest(); + } +} + +void LLFloaterEvent::onClickDeleteEvent() +{ + LLMessageSystem* msg = gMessageSystem; + + msg->newMessageFast(_PREHASH_EventGodDelete); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + + msg->nextBlockFast(_PREHASH_EventData); + msg->addU32Fast(_PREHASH_EventID, mEventID); + + gAgent.sendReliableMessage(); +} + +void LLFloaterEvent::sendEventInfoRequest() +{ + LLMessageSystem *msg = gMessageSystem; + + msg->newMessageFast(_PREHASH_EventInfoRequest); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); + msg->nextBlockFast(_PREHASH_EventData); + msg->addU32Fast(_PREHASH_EventID, mEventID); + gAgent.sendReliableMessage(); +} + +//static +void LLFloaterEvent::processEventInfoReply(LLMessageSystem *msg, void **) +{ + // extract the agent id + LLUUID agent_id; + msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id ); + + LLFloaterEvent* floater = LLFloaterReg::getTypedInstance<LLFloaterEvent>("event"); + + if(floater) + { + floater->mEventInfo.unpack(msg); + floater->mTBName->setText(floater->mEventInfo.mName); + floater->mTBCategory->setText(floater->mEventInfo.mCategoryStr); + floater->mTBDate->setText(floater->mEventInfo.mTimeStr); + floater->mTBDesc->setText(floater->mEventInfo.mDesc); + floater->mTBRunBy->setText(LLSLURL::buildCommand("agent", floater->mEventInfo.mRunByID, "inspect")); + + floater->mTBDuration->setText(llformat("%d:%.2d", floater->mEventInfo.mDuration / 60, floater->mEventInfo.mDuration % 60)); + + if (!floater->mEventInfo.mHasCover) + { + floater->mTBCover->setText(floater->getString("none")); + } + else + { + floater->mTBCover->setText(llformat("%d", floater->mEventInfo.mCover)); + } + + F32 global_x = (F32)floater->mEventInfo.mPosGlobal.mdV[VX]; + F32 global_y = (F32)floater->mEventInfo.mPosGlobal.mdV[VY]; + + S32 region_x = llround(global_x) % REGION_WIDTH_UNITS; + S32 region_y = llround(global_y) % REGION_WIDTH_UNITS; + S32 region_z = llround((F32)floater->mEventInfo.mPosGlobal.mdV[VZ]); + + std::string desc = floater->mEventInfo.mSimName + llformat(" (%d, %d, %d)", region_x, region_y, region_z); + floater->mTBLocation->setText(desc); + + floater->childSetVisible("rating_icon_m", FALSE); + floater->childSetVisible("rating_icon_r", FALSE); + floater->childSetVisible("rating_icon_pg", FALSE); + floater->childSetValue("rating_value", floater->getString("unknown")); + + //for some reason there's not adult flags for now, so see if region is adult and then + //set flags + LLWorldMapMessage::url_callback_t cb = boost::bind( ®ionInfoCallback, floater->mEventInfo.mID, _1); + LLWorldMapMessage::getInstance()->sendNamedRegionRequest(floater->mEventInfo.mSimName, cb, std::string("unused"), false); + + if (floater->mEventInfo.mUnixTime < time_corrected()) + { + floater->mNotifyBtn->setEnabled(FALSE); + } + else + { + floater->mNotifyBtn->setEnabled(TRUE); + } + + if (gEventNotifier.hasNotification(floater->mEventInfo.mID)) + { + floater->mNotifyBtn->setLabel(floater->getString("dont_notify")); + } + else + { + floater->mNotifyBtn->setLabel(floater->getString("notify")); + } + + floater->mMapBtn->setEnabled(TRUE); + floater->mTeleportBtn->setEnabled(TRUE); + } +} + +//static +void LLFloaterEvent::regionInfoCallback(U32 event_id, U64 region_handle) +{ + LLSimInfo* sim_info = LLWorldMap::getInstance()->simInfoFromHandle(region_handle); + LLFloaterEvent* floater = LLFloaterReg::getTypedInstance<LLFloaterEvent>("event"); + + if (sim_info && floater && (event_id == floater->getEventID())) + { + // update the event with the maturity info + if (sim_info->isAdult()) + { + floater->childSetVisible("rating_icon_m", FALSE); + floater->childSetVisible("rating_icon_r", TRUE); + floater->childSetVisible("rating_icon_pg", FALSE); + floater->childSetValue("rating_value", floater->getString("adult")); + + } + else if (floater->mEventInfo.mEventFlags & EVENT_FLAG_MATURE) + { + floater->childSetVisible("rating_icon_m", TRUE); + floater->childSetVisible("rating_icon_r", FALSE); + floater->childSetVisible("rating_icon_pg", FALSE); + floater->childSetValue("rating_value", floater->getString("moderate")); + } + else + { + floater->childSetVisible("rating_icon_m", FALSE); + floater->childSetVisible("rating_icon_r", FALSE); + floater->childSetVisible("rating_icon_pg", TRUE); + floater->childSetValue("rating_value", floater->getString("general")); + } + } +} + +void LLFloaterEvent::draw() +{ + mGodDeleteEventBtn->setVisible(gAgent.isGodlike()); + + LLPanel::draw(); +} + +void LLFloaterEvent::resetInfo() +{ + mTBName->setText(LLStringUtil::null); + mTBCategory->setText(LLStringUtil::null); + mTBDate->setText(LLStringUtil::null); + mTBDesc->setText(LLStringUtil::null); + mTBDuration->setText(LLStringUtil::null); + mTBCover->setText(LLStringUtil::null); + mTBLocation->setText(LLStringUtil::null); + mTBRunBy->setText(LLStringUtil::null); + mNotifyBtn->setEnabled(FALSE); + mMapBtn->setEnabled(FALSE); + mTeleportBtn->setEnabled(FALSE); +} + +// static +void LLFloaterEvent::onClickTeleport(void* data) +{ + LLFloaterEvent* self = (LLFloaterEvent*)data; + LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance(); + if (!self->mEventInfo.mPosGlobal.isExactlyZero()&&worldmap_instance) + { + gAgent.teleportViaLocation(self->mEventInfo.mPosGlobal); + worldmap_instance->trackLocation(self->mEventInfo.mPosGlobal); + } +} + + +// static +void LLFloaterEvent::onClickMap(void* data) +{ + LLFloaterEvent* self = (LLFloaterEvent*)data; + LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance(); + + if (!self->mEventInfo.mPosGlobal.isExactlyZero()&&worldmap_instance) + { + worldmap_instance->trackLocation(self->mEventInfo.mPosGlobal); + LLFloaterReg::showInstance("world_map", "center"); + } +} + + +// static +void LLFloaterEvent::onClickCreateEvent(void* data) +{ + LLNotificationsUtil::add("PromptGoToEventsPage");//, LLSD(), LLSD(), callbackCreateEventWebPage); +} + + +// static +void LLFloaterEvent::onClickNotify(void *data) +{ + LLFloaterEvent* self = (LLFloaterEvent*)data; + + if (!gEventNotifier.hasNotification(self->mEventID)) + { + gEventNotifier.add(self->mEventInfo); + self->mNotifyBtn->setLabel(self->getString("dont_notify")); + } + else + { + gEventNotifier.remove(self->mEventInfo.mID); + self->mNotifyBtn->setLabel(self->getString("notify")); + } +} diff --git a/indra/newview/llfloaterevent.h b/indra/newview/llfloaterevent.h new file mode 100644 index 0000000000..4126236964 --- /dev/null +++ b/indra/newview/llfloaterevent.h @@ -0,0 +1,97 @@ +/** + * @file llfloaterevent.h + * @brief Display for events in the finder + * + * $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_LLFLOATEREVENT_H +#define LL_LLFLOATEREVENT_H + +#include "llfloater.h" +#include "lleventinfo.h" +#include "lluuid.h" +#include "v3dmath.h" + +class LLTextBox; +class LLTextEditor; +class LLButton; +class LLExpandableTextBox; +class LLMessageSystem; + +class LLFloaterEvent : public LLFloater +{ +public: + LLFloaterEvent(const LLSD& key); + /*virtual*/ ~LLFloaterEvent(); + + /*virtual*/ BOOL postBuild(); + /*virtual*/ void draw(); + + void setEventID(const U32 event_id); + void sendEventInfoRequest(); + + static void processEventInfoReply(LLMessageSystem *msg, void **); + + U32 getEventID() { return mEventID; } + +protected: + void resetInfo(); + + static void onClickTeleport(void*); + static void onClickMap(void*); + //static void onClickLandmark(void*); + static void onClickCreateEvent(void*); + static void onClickNotify(void*); + void onClickDeleteEvent(); + + static void regionInfoCallback(U32 event_id, U64 region_handle); + + +protected: + U32 mEventID; + LLEventInfo mEventInfo; + + LLTextBox* mTBName; + LLTextBox* mTBCategory; + LLTextBox* mTBDate; + LLTextBox* mTBDuration; + LLExpandableTextBox* mTBDesc; + + LLTextBox* mTBRunBy; + LLTextBox* mTBLocation; + LLTextBox* mTBCover; + + LLButton* mTeleportBtn; + LLButton* mMapBtn; + LLButton* mCreateEventBtn; + LLButton* mGodDeleteEventBtn; + LLButton* mNotifyBtn; +}; + +#endif // LL_LLFLOATEREVENT_H diff --git a/indra/newview/llfloaterfriends.cpp b/indra/newview/llfloaterfriends.cpp index ccc5cab85a..4e2633d750 100644 --- a/indra/newview/llfloaterfriends.cpp +++ b/indra/newview/llfloaterfriends.cpp @@ -58,7 +58,7 @@ #include "llmenucommands.h" #include "llviewercontrol.h" #include "llviewermessage.h" -#include "lltimer.h" +#include "lleventtimer.h" #include "lltextbox.h" #include "llvoiceclient.h" diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp index 5072bc8c82..9c1ac2631d 100644 --- a/indra/newview/llfloatergesture.cpp +++ b/indra/newview/llfloatergesture.cpp @@ -110,7 +110,7 @@ LLFloaterGesture::LLFloaterGesture(const LLSD& key) mCommitCallbackRegistrar.add("Gesture.Action.ToogleActiveState", boost::bind(&LLFloaterGesture::onActivateBtnClick, this)); mCommitCallbackRegistrar.add("Gesture.Action.ShowPreview", boost::bind(&LLFloaterGesture::onClickEdit, this)); - mCommitCallbackRegistrar.add("Gesture.Action.CopyPast", boost::bind(&LLFloaterGesture::onCopyPastAction, this, _2)); + mCommitCallbackRegistrar.add("Gesture.Action.CopyPaste", boost::bind(&LLFloaterGesture::onCopyPasteAction, this, _2)); mCommitCallbackRegistrar.add("Gesture.Action.SaveToCOF", boost::bind(&LLFloaterGesture::addToCurrentOutFit, this)); mEnableCallbackRegistrar.add("Gesture.EnableAction", boost::bind(&LLFloaterGesture::isActionEnabled, this, _2)); @@ -203,12 +203,12 @@ BOOL LLFloaterGesture::postBuild() gInventory.addObserver(this); fetchDescendents(folders); - buildGestureList(); - - mGestureList->setFocus(TRUE); - if (mGestureList) { + buildGestureList(); + + mGestureList->setFocus(TRUE); + const BOOL ascending = TRUE; mGestureList->sortByColumn(std::string("name"), ascending); mGestureList->selectFirstItem(); @@ -223,10 +223,10 @@ BOOL LLFloaterGesture::postBuild() void LLFloaterGesture::refreshAll() { - buildGestureList(); - if (!mGestureList) return; + buildGestureList(); + if (mSelectedID.isNull()) { mGestureList->selectFirstItem(); @@ -245,6 +245,7 @@ void LLFloaterGesture::refreshAll() void LLFloaterGesture::buildGestureList() { + S32 scroll_pos = mGestureList->getScrollPos(); std::vector<LLUUID> selected_items; getSelectedIds(selected_items); LL_DEBUGS("Gesture")<< "Rebuilding gesture list "<< LL_ENDL; @@ -274,13 +275,14 @@ void LLFloaterGesture::buildGestureList() } } } + // attempt to preserve scroll position through re-builds - // since we do re-build any time anything dirties + // since we do re-build whenever something gets dirty for(std::vector<LLUUID>::iterator it = selected_items.begin(); it != selected_items.end(); it++) { mGestureList->selectByID(*it); } - mGestureList->scrollToShowSelected(); + mGestureList->setScrollPos(scroll_pos); } void LLFloaterGesture::addGesture(const LLUUID& item_id , LLMultiGesture* gesture,LLCtrlListInterface * list ) @@ -365,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) @@ -399,8 +408,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; } @@ -415,12 +423,17 @@ void LLFloaterGesture::onClickPlay() LL_DEBUGS("Gesture")<<" Trying to play gesture id: "<< item_id <<LL_ENDL; if(!LLGestureManager::instance().isGestureActive(item_id)) { - // we need to inform server about gesture activating to be consistent with LLPreviewGesture and LLGestureComboBox. + // 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(item_id, boost::bind(&LLFloaterGesture::playGesture, this, item_id)); - LLGestureManager::instance().activateGestureWithAsset(item_id, gInventory.getItem(item_id)->getAssetUUID(), inform_server, deactivate_similar); - LL_DEBUGS("Gesture")<< "Activating gesture with inventory ID: " << item_id <<LL_ENDL; + LLViewerInventoryItem *item = gInventory.getItem(item_id); + llassert(item); + if (item) + { + LLGestureManager::instance().activateGestureWithAsset(item_id, item->getAssetUUID(), inform_server, deactivate_similar); + LL_DEBUGS("Gesture")<< "Activating gesture with inventory ID: " << item_id <<LL_ENDL; + } } else { @@ -475,7 +488,7 @@ void LLFloaterGesture::onActivateBtnClick() } } -void LLFloaterGesture::onCopyPastAction(const LLSD& command) +void LLFloaterGesture::onCopyPasteAction(const LLSD& command) { std::string command_name = command.asString(); // since we select this comman inventory item had already arrived . @@ -502,15 +515,16 @@ void LLFloaterGesture::onCopyPastAction(const LLSD& command) if(ids.empty() || !gInventory.isCategoryComplete(mGestureFolderID)) return; LLInventoryCategory* gesture_dir = gInventory.getCategory(mGestureFolderID); + llassert(gesture_dir); LLPointer<GestureCopiedCallback> cb = new GestureCopiedCallback(this); for(LLDynamicArray<LLUUID>::iterator it = ids.begin(); it != ids.end(); it++) { LLInventoryItem* item = gInventory.getItem(*it); - LLStringUtil::format_map_t string_args; - string_args["[COPY_NAME]"] = item->getName(); - if(item && item->getInventoryType() == LLInventoryType::IT_GESTURE) + if(gesture_dir && item && item->getInventoryType() == LLInventoryType::IT_GESTURE) { + LLStringUtil::format_map_t string_args; + string_args["[COPY_NAME]"] = item->getName(); LL_DEBUGS("Gesture")<< "Copying gesture " << item->getName() << " "<< item->getUUID() << " into " << gesture_dir->getName() << " "<< gesture_dir->getUUID() << LL_ENDL; copy_inventory_item(gAgent.getID(), item->getPermissions().getOwner(), item->getUUID(), diff --git a/indra/newview/llfloatergesture.h b/indra/newview/llfloatergesture.h index 14e132900d..629d77b949 100644 --- a/indra/newview/llfloatergesture.h +++ b/indra/newview/llfloatergesture.h @@ -99,7 +99,7 @@ private: void onClickPlay(); void onClickNew(); void onCommitList(); - void onCopyPastAction(const LLSD& command); + void onCopyPasteAction(const LLSD& command); void onDeleteSelected(); LLUUID mSelectedID; diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp index c2b0bd18fa..eb56f387cd 100644 --- a/indra/newview/llfloatergodtools.cpp +++ b/indra/newview/llfloatergodtools.cpp @@ -213,6 +213,9 @@ void LLFloaterGodTools::showPanel(const std::string& panel_name) // static void LLFloaterGodTools::processRegionInfo(LLMessageSystem* msg) { + llassert(msg); + if (!msg) return; + LLHost host = msg->getSender(); if (host != gAgent.getRegionHost()) { @@ -270,8 +273,7 @@ void LLFloaterGodTools::processRegionInfo(LLMessageSystem* msg) if ( gAgent.isGodlike() && LLFloaterReg::instanceVisible("god_tools") && god_tools->mPanelRegionTools - && god_tools->mPanelObjectTools - && msg ) + && god_tools->mPanelObjectTools) { LLPanelRegionTools* rtool = god_tools->mPanelRegionTools; god_tools->mCurrentHost = host; @@ -414,17 +416,17 @@ LLPanelRegionTools::LLPanelRegionTools() BOOL LLPanelRegionTools::postBuild() { getChild<LLLineEditor>("region name")->setKeystrokeCallback(onChangeSimName, this); - childSetPrevalidate("region name", &LLLineEditor::prevalidateASCIIPrintableNoPipe); - childSetPrevalidate("estate", &LLLineEditor::prevalidatePositiveS32); - childSetPrevalidate("parentestate", &LLLineEditor::prevalidatePositiveS32); + childSetPrevalidate("region name", &LLTextValidate::validateASCIIPrintableNoPipe); + childSetPrevalidate("estate", &LLTextValidate::validatePositiveS32); + childSetPrevalidate("parentestate", &LLTextValidate::validatePositiveS32); childDisable("parentestate"); - childSetPrevalidate("gridposx", &LLLineEditor::prevalidatePositiveS32); + childSetPrevalidate("gridposx", &LLTextValidate::validatePositiveS32); childDisable("gridposx"); - childSetPrevalidate("gridposy", &LLLineEditor::prevalidatePositiveS32); + childSetPrevalidate("gridposy", &LLTextValidate::validatePositiveS32); childDisable("gridposy"); - childSetPrevalidate("redirectx", &LLLineEditor::prevalidatePositiveS32); - childSetPrevalidate("redirecty", &LLLineEditor::prevalidatePositiveS32); + childSetPrevalidate("redirectx", &LLTextValidate::validatePositiveS32); + childSetPrevalidate("redirecty", &LLTextValidate::validatePositiveS32); return TRUE; } diff --git a/indra/newview/llfloatergroups.cpp b/indra/newview/llfloatergroups.cpp index 7cb925bc0b..c71764c2e5 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); } @@ -247,14 +247,7 @@ void LLPanelGroups::enableButtons() childDisable("IM"); childDisable("Leave"); } - if(gAgent.mGroups.count() < MAX_AGENT_GROUPS) - { - childEnable("Create"); - } - else - { - childDisable("Create"); - } + childSetEnabled("Create", gAgent.canJoinGroups()); } diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp index 31b494b590..b2564eb2b6 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"); } diff --git a/indra/newview/llfloaterhelpbrowser.cpp b/indra/newview/llfloaterhelpbrowser.cpp index 2e0ae3265e..f3c6b286ab 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/llfloaterimagepreview.cpp b/indra/newview/llfloaterimagepreview.cpp index 61568df12e..9917593c91 100644 --- a/indra/newview/llfloaterimagepreview.cpp +++ b/indra/newview/llfloaterimagepreview.cpp @@ -688,6 +688,9 @@ BOOL LLImagePreviewAvatar::render() mNeedsUpdate = FALSE; LLVOAvatar* avatarp = mDummyAvatar; + gGL.pushUIMatrix(); + gGL.loadUIIdentity(); + glMatrixMode(GL_PROJECTION); gGL.pushMatrix(); glLoadIdentity(); @@ -696,6 +699,7 @@ BOOL LLImagePreviewAvatar::render() glMatrixMode(GL_MODELVIEW); gGL.pushMatrix(); glLoadIdentity(); + LLGLSUIDefault def; gGL.color4f(0.15f, 0.2f, 0.3f, 1.f); @@ -741,6 +745,7 @@ BOOL LLImagePreviewAvatar::render() avatarPoolp->renderAvatars(avatarp); // renders only one avatar } + gGL.popUIMatrix(); gGL.color4f(1,1,1,1); return TRUE; } diff --git a/indra/newview/llfloaterinventory.cpp b/indra/newview/llfloaterinventory.cpp index 76c0a7637c..844f0ac509 100644 --- a/indra/newview/llfloaterinventory.cpp +++ b/indra/newview/llfloaterinventory.cpp @@ -35,12 +35,13 @@ #include "llfloaterinventory.h" #include "llagent.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llfloaterreg.h" #include "llinventorymodel.h" #include "llpanelmaininventory.h" #include "llresmgr.h" #include "llviewerfoldertype.h" +#include "lltransientfloatermgr.h" ///---------------------------------------------------------------------------- /// LLFloaterInventory @@ -49,10 +50,12 @@ LLFloaterInventory::LLFloaterInventory(const LLSD& key) : LLFloater(key) { + LLTransientFloaterMgr::getInstance()->addControlView(this); } LLFloaterInventory::~LLFloaterInventory() { + LLTransientFloaterMgr::getInstance()->removeControlView(this); } BOOL LLFloaterInventory::postBuild() @@ -135,5 +138,5 @@ void LLFloaterInventory::cleanup() void LLFloaterInventory::onOpen(const LLSD& key) { - LLFirstUse::useInventory(); + //LLFirstUse::useInventory(); } diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp index 06fe2a84c8..78bc63ac8c 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 f3559c28e9..7a2f497c69 100644 --- a/indra/newview/llfloaterjoystick.h +++ b/indra/newview/llfloaterjoystick.h @@ -55,6 +55,8 @@ private: LLFloaterJoystick(const LLSD& data); virtual ~LLFloaterJoystick(); + + void initFromSettings(); static void onCommitJoystickEnabled(LLUICtrl*, void*); static void onClickRestoreSNDefaults(void*); diff --git a/indra/newview/llfloaterlagmeter.cpp b/indra/newview/llfloaterlagmeter.cpp index 3753dcaaa8..85186cee6b 100644 --- a/indra/newview/llfloaterlagmeter.cpp +++ b/indra/newview/llfloaterlagmeter.cpp @@ -64,7 +64,7 @@ BOOL LLFloaterLagMeter::postBuild() setIsChrome(TRUE); // were we shrunk last time? - if (gSavedSettings.getBOOL("LagMeterShrunk")) + if (isShrunk()) { onClickShrink(); } @@ -122,6 +122,7 @@ BOOL LLFloaterLagMeter::postBuild() mStringArgs["[SERVER_FRAME_RATE_WARNING]"] = getString("server_frame_rate_warning_fps"); // childSetAction("minimize", onClickShrink, this); + updateControls(isShrunk()); // if expanded append colon to the labels (EXT-4079) return TRUE; } @@ -130,7 +131,7 @@ LLFloaterLagMeter::~LLFloaterLagMeter() // save shrunk status for next time // gSavedSettings.setBOOL("LagMeterShrunk", mShrunk); // expand so we save the large window rectangle - if (gSavedSettings.getBOOL("LagMeterShrunk")) + if (isShrunk()) { onClickShrink(); } @@ -312,17 +313,15 @@ void LLFloaterLagMeter::determineServer() } } - -void LLFloaterLagMeter::onClickShrink() // toggle "LagMeterShrunk" +void LLFloaterLagMeter::updateControls(bool shrink) { // LLFloaterLagMeter * self = (LLFloaterLagMeter*)data; LLButton * button = getChild<LLButton>("minimize"); S32 delta_width = mMaxWidth -mMinWidth; LLRect r = getRect(); - bool shrunk = gSavedSettings.getBOOL("LagMeterShrunk"); - if(shrunk) + if(!shrink) { setTitle(getString("max_title_msg", mStringArgs) ); // make left edge appear to expand @@ -368,5 +367,16 @@ void LLFloaterLagMeter::onClickShrink() // toggle "LagMeterShrunk" // self->childSetVisible("server_help", self->mShrunk); // self->mShrunk = !self->mShrunk; - gSavedSettings.setBOOL("LagMeterShrunk", !gSavedSettings.getBOOL("LagMeterShrunk")); +} + +BOOL LLFloaterLagMeter::isShrunk() +{ + return gSavedSettings.getBOOL("LagMeterShrunk"); +} + +void LLFloaterLagMeter::onClickShrink() // toggle "LagMeterShrunk" +{ + bool shrunk = isShrunk(); + updateControls(!shrunk); + gSavedSettings.setBOOL("LagMeterShrunk", !shrunk); } diff --git a/indra/newview/llfloaterlagmeter.h b/indra/newview/llfloaterlagmeter.h index 592630636a..5416bca790 100644 --- a/indra/newview/llfloaterlagmeter.h +++ b/indra/newview/llfloaterlagmeter.h @@ -51,6 +51,8 @@ private: void determineClient(); void determineNetwork(); void determineServer(); + void updateControls(bool shrink); + BOOL isShrunk(); void onClickShrink(); diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 598a13de15..26c6db9652 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -276,6 +276,7 @@ void LLFloaterLand::refresh() mPanelAudio->refresh(); mPanelMedia->refresh(); mPanelAccess->refresh(); + mPanelCovenant->refresh(); } @@ -352,7 +353,7 @@ BOOL LLPanelLandGeneral::postBuild() { mEditName = getChild<LLLineEditor>("Name"); mEditName->setCommitCallback(onCommitAny, this); - childSetPrevalidate("Name", LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("Name", LLTextValidate::validateASCIIPrintableNoPipe); mEditDesc = getChild<LLTextEditor>("Description"); mEditDesc->setCommitOnFocusLost(TRUE); @@ -426,8 +427,26 @@ BOOL LLPanelLandGeneral::postBuild() mBtnBuyLand = getChild<LLButton>("Buy Land..."); mBtnBuyLand->setClickedCallback(onClickBuyLand, (void*)&BUY_PERSONAL_LAND); - mBtnScriptLimits = getChild<LLButton>("Scripts..."); - mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this); + // 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..."); + if(mBtnScriptLimits) + { + mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this); + } + } + else + { + mBtnScriptLimits = getChild<LLButton>("Scripts..."); + if(mBtnScriptLimits) + { + mBtnScriptLimits->setVisible(false); + } + } mBtnBuyGroupLand = getChild<LLButton>("Buy For Group..."); mBtnBuyGroupLand->setClickedCallback(onClickBuyLand, (void*)&BUY_GROUP_LAND); @@ -1028,7 +1047,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) { } @@ -1069,7 +1111,7 @@ BOOL LLPanelLandObjects::postBuild() mCleanOtherObjectsTime->setFocusLostCallback(boost::bind(onLostFocus, _1, this)); mCleanOtherObjectsTime->setCommitCallback(onCommitClean, this); - childSetPrevalidate("clean other time", LLLineEditor::prevalidateNonNegativeS32); + childSetPrevalidate("clean other time", LLTextValidate::validateNonNegativeS32); mBtnRefresh = getChild<LLButton>("Refresh List"); mBtnRefresh->setClickedCallback(onClickRefresh, this); @@ -2795,12 +2837,6 @@ LLPanelLandCovenant::~LLPanelLandCovenant() { } -BOOL LLPanelLandCovenant::postBuild() -{ - refresh(); - return TRUE; -} - // virtual void LLPanelLandCovenant::refresh() { diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h index d7d02ba1a3..a4785e8f5b 100644 --- a/indra/newview/llfloaterland.h +++ b/indra/newview/llfloaterland.h @@ -391,7 +391,6 @@ class LLPanelLandCovenant public: LLPanelLandCovenant(LLSafeHandle<LLParcelSelection>& parcelp); virtual ~LLPanelLandCovenant(); - virtual BOOL postBuild(); void refresh(); static void updateCovenantText(const std::string& string); static void updateEstateName(const std::string& name); diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp index d18f127f85..051ab585e2 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); @@ -141,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/llfloatermediasettings.cpp b/indra/newview/llfloatermediasettings.cpp index 5cfd56193e..62ec17f89a 100644 --- a/indra/newview/llfloatermediasettings.cpp +++ b/indra/newview/llfloatermediasettings.cpp @@ -149,13 +149,14 @@ void LLFloaterMediaSettings::apply() { LLSD settings; sInstance->mPanelMediaSettingsGeneral->preApply(); - sInstance->mPanelMediaSettingsGeneral->getValues( settings ); + sInstance->mPanelMediaSettingsGeneral->getValues( settings, false ); sInstance->mPanelMediaSettingsSecurity->preApply(); - sInstance->mPanelMediaSettingsSecurity->getValues( settings ); + sInstance->mPanelMediaSettingsSecurity->getValues( settings, false ); sInstance->mPanelMediaSettingsPermissions->preApply(); - sInstance->mPanelMediaSettingsPermissions->getValues( settings ); - LLSelectMgr::getInstance()->selectionSetMedia( LLTextureEntry::MF_HAS_MEDIA ); - LLSelectMgr::getInstance()->selectionSetMediaData(settings); + sInstance->mPanelMediaSettingsPermissions->getValues( settings, false ); + + LLSelectMgr::getInstance()->selectionSetMedia( LLTextureEntry::MF_HAS_MEDIA, settings ); + sInstance->mPanelMediaSettingsGeneral->postApply(); sInstance->mPanelMediaSettingsSecurity->postApply(); sInstance->mPanelMediaSettingsPermissions->postApply(); @@ -176,6 +177,8 @@ void LLFloaterMediaSettings::onClose(bool app_quitting) //static void LLFloaterMediaSettings::initValues( const LLSD& media_settings, bool editable ) { + if (sInstance->hasFocus()) return; + sInstance->clearValues(editable); // update all panels with values from simulator sInstance->mPanelMediaSettingsGeneral-> @@ -192,6 +195,9 @@ void LLFloaterMediaSettings::initValues( const LLSD& media_settings, bool editab sInstance->mPanelMediaSettingsGeneral->getValues( sInstance->mInitialValues ); sInstance->mPanelMediaSettingsSecurity->getValues( sInstance->mInitialValues ); sInstance->mPanelMediaSettingsPermissions->getValues( sInstance->mInitialValues ); + + sInstance->mApplyBtn->setEnabled(editable); + sInstance->mOKBtn->setEnabled(editable); } //////////////////////////////////////////////////////////////////////////////// @@ -201,7 +207,7 @@ void LLFloaterMediaSettings::commitFields() if (hasFocus()) { LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus()); - if (cur_focus->acceptsTextInput()) + if (cur_focus && cur_focus->acceptsTextInput()) { cur_focus->onCommit(); }; @@ -266,8 +272,11 @@ const std::string LLFloaterMediaSettings::getHomeUrl() // virtual void LLFloaterMediaSettings::draw() { - // Set the enabled state of the "Apply" button if values changed - childSetEnabled( "Apply", haveValuesChanged() ); + if (NULL != mApplyBtn) + { + // Set the enabled state of the "Apply" button if values changed + mApplyBtn->setEnabled( haveValuesChanged() ); + } LLFloater::draw(); } diff --git a/indra/newview/llfloaternamedesc.cpp b/indra/newview/llfloaternamedesc.cpp index 810761e034..159ce41b79 100644 --- a/indra/newview/llfloaternamedesc.cpp +++ b/indra/newview/llfloaternamedesc.cpp @@ -111,7 +111,7 @@ BOOL LLFloaterNameDesc::postBuild() if (NameEditor) { NameEditor->setMaxTextLength(DB_INV_ITEM_NAME_STR_LEN); - NameEditor->setPrevalidate(&LLLineEditor::prevalidateASCIIPrintableNoPipe); + NameEditor->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe); } y -= llfloor(PREVIEW_LINE_HEIGHT * 1.2f); @@ -123,7 +123,7 @@ BOOL LLFloaterNameDesc::postBuild() if (DescEditor) { DescEditor->setMaxTextLength(DB_INV_ITEM_DESC_STR_LEN); - DescEditor->setPrevalidate(&LLLineEditor::prevalidateASCIIPrintableNoPipe); + DescEditor->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe); } y -= llfloor(PREVIEW_LINE_HEIGHT * 1.2f); diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp index 90db8988b2..b744bff084 100644 --- a/indra/newview/llfloaternotificationsconsole.cpp +++ b/indra/newview/llfloaternotificationsconsole.cpp @@ -112,10 +112,15 @@ void LLNotificationChannelPanel::onClickNotification(void* user_data) { LLNotificationChannelPanel* self = (LLNotificationChannelPanel*)user_data; if (!self) return; - void* data = self->getChild<LLScrollListCtrl>("notifications_list")->getFirstSelected()->getUserdata(); - if (data) + LLScrollListItem* firstselected = self->getChild<LLScrollListCtrl>("notifications_list")->getFirstSelected(); + llassert(firstselected); + if (firstselected) { - gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE); + void* data = firstselected->getUserdata(); + if (data) + { + gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE); + } } } @@ -124,10 +129,15 @@ void LLNotificationChannelPanel::onClickNotificationReject(void* user_data) { LLNotificationChannelPanel* self = (LLNotificationChannelPanel*)user_data; if (!self) return; - void* data = self->getChild<LLScrollListCtrl>("notification_rejects_list")->getFirstSelected()->getUserdata(); - if (data) + LLScrollListItem* firstselected = self->getChild<LLScrollListCtrl>("notification_rejects_list")->getFirstSelected(); + llassert(firstselected); + if (firstselected) { - gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE); + void* data = firstselected->getUserdata(); + if (data) + { + gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE); + } } } @@ -200,7 +210,7 @@ void LLFloaterNotificationConsole::addChannel(const std::string& name, bool open { LLLayoutStack& stack = getChildRef<LLLayoutStack>("notification_channels"); LLNotificationChannelPanel* panelp = new LLNotificationChannelPanel(name); - stack.addPanel(panelp, 0, NOTIFICATION_PANEL_HEADER_HEIGHT, TRUE, TRUE, LLLayoutStack::ANIMATE); + stack.addPanel(panelp, 0, NOTIFICATION_PANEL_HEADER_HEIGHT, S32_MAX, S32_MAX, TRUE, TRUE, LLLayoutStack::ANIMATE); LLButton& header_button = panelp->getChildRef<LLButton>("header"); header_button.setToggleState(!open); diff --git a/indra/newview/llfloaterpay.cpp b/indra/newview/llfloaterpay.cpp index c2389e73a0..51364594e4 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) { } @@ -203,7 +204,7 @@ BOOL LLFloaterPay::postBuild() getChild<LLLineEditor>("amount")->setKeystrokeCallback(&LLFloaterPay::onKeystroke, this); childSetText("amount", last_amount); - childSetPrevalidate("amount", LLLineEditor::prevalidateNonNegativeS32); + childSetPrevalidate("amount", LLTextValidate::validateNonNegativeS32); info = new LLGiveMoneyInfo(this, 0); mCallbackData.push_back(info); diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 7e0e8bfaa7..780393a9c0 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -51,7 +51,7 @@ #include "lldirpicker.h" #include "llfeaturemanager.h" #include "llfocusmgr.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llfloaterreg.h" #include "llfloaterabout.h" #include "llfloaterhardwaresettings.h" @@ -103,20 +103,13 @@ #include "llworld.h" #include "pipeline.h" #include "lluictrlfactory.h" -#include "llboost.h" #include "llviewermedia.h" #include "llpluginclassmedia.h" #include "llteleporthistorystorage.h" -#include <boost/regex.hpp> - -//RN temporary includes for resolution switching -#include "llglheaders.h" const F32 MAX_USER_FAR_CLIP = 512.f; const F32 MIN_USER_FAR_CLIP = 64.f; -const S32 ASPECT_RATIO_STR_LEN = 100; - class LLVoiceSetKeyDialog : public LLModalDialog { public: @@ -190,10 +183,9 @@ void handleNameTagOptionChanged(const LLSD& newvalue); viewer_media_t get_web_media(); bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response); -bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater); -bool callback_reset_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater); +//bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater); +//bool callback_reset_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater); -bool extractWindowSizeFromString(const std::string& instr, U32 &width, U32 &height); void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator); viewer_media_t get_web_media() @@ -242,7 +234,7 @@ void handleNameTagOptionChanged(const LLSD& newvalue) } } -bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater) +/*bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); if (0 == option && floater ) @@ -250,7 +242,7 @@ bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFlo if ( floater ) { floater->setAllIgnored(); - LLFirstUse::disableFirstUse(); + // LLFirstUse::disableFirstUse(); floater->buildPopupLists(); } } @@ -265,30 +257,13 @@ bool callback_reset_dialogs(const LLSD& notification, const LLSD& response, LLFl if ( floater ) { floater->resetAllIgnored(); - LLFirstUse::resetFirstUse(); + //LLFirstUse::resetFirstUse(); floater->buildPopupLists(); } } return false; } - - -// Extract from strings of the form "<width> x <height>", e.g. "640 x 480". -bool extractWindowSizeFromString(const std::string& instr, U32 &width, U32 &height) -{ - using namespace boost; - cmatch what; - const regex expression("([0-9]+) x ([0-9]+)"); - if (regex_match(instr.c_str(), what, expression)) - { - width = atoi(what[1].first); - height = atoi(what[2].first); - return true; - } - - width = height = 0; - return false; -} +*/ void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator) { @@ -306,7 +281,6 @@ void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator) } // static std::string LLFloaterPreference::sSkin = ""; -F32 LLFloaterPreference::sAspectRatio = 0.0; ////////////////////////////////////////////// // LLFloaterPreference @@ -336,23 +310,21 @@ LLFloaterPreference::LLFloaterPreference(const LLSD& key) mCommitCallbackRegistrar.add("Pref.SelectSkin", boost::bind(&LLFloaterPreference::onSelectSkin, this)); mCommitCallbackRegistrar.add("Pref.VoiceSetKey", boost::bind(&LLFloaterPreference::onClickSetKey, this)); mCommitCallbackRegistrar.add("Pref.VoiceSetMiddleMouse", boost::bind(&LLFloaterPreference::onClickSetMiddleMouse, this)); - mCommitCallbackRegistrar.add("Pref.ClickSkipDialogs", boost::bind(&LLFloaterPreference::onClickSkipDialogs, this)); - mCommitCallbackRegistrar.add("Pref.ClickResetDialogs", boost::bind(&LLFloaterPreference::onClickResetDialogs, this)); +// mCommitCallbackRegistrar.add("Pref.ClickSkipDialogs", boost::bind(&LLFloaterPreference::onClickSkipDialogs, this)); +// mCommitCallbackRegistrar.add("Pref.ClickResetDialogs", boost::bind(&LLFloaterPreference::onClickResetDialogs, this)); mCommitCallbackRegistrar.add("Pref.ClickEnablePopup", boost::bind(&LLFloaterPreference::onClickEnablePopup, this)); mCommitCallbackRegistrar.add("Pref.ClickDisablePopup", boost::bind(&LLFloaterPreference::onClickDisablePopup, this)); mCommitCallbackRegistrar.add("Pref.LogPath", boost::bind(&LLFloaterPreference::onClickLogPath, this)); - mCommitCallbackRegistrar.add("Pref.UpdateMeterText", boost::bind(&LLFloaterPreference::updateMeterText, this, _1)); mCommitCallbackRegistrar.add("Pref.HardwareSettings", boost::bind(&LLFloaterPreference::onOpenHardwareSettings, this)); mCommitCallbackRegistrar.add("Pref.HardwareDefaults", boost::bind(&LLFloaterPreference::setHardwareDefaults, this)); mCommitCallbackRegistrar.add("Pref.VertexShaderEnable", boost::bind(&LLFloaterPreference::onVertexShaderEnable, this)); mCommitCallbackRegistrar.add("Pref.WindowedMod", boost::bind(&LLFloaterPreference::onCommitWindowedMode, this)); mCommitCallbackRegistrar.add("Pref.UpdateSliderText", boost::bind(&LLFloaterPreference::onUpdateSliderText,this, _1,_2)); - mCommitCallbackRegistrar.add("Pref.AutoDetectAspect", boost::bind(&LLFloaterPreference::onCommitAutoDetectAspect, 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)); mCommitCallbackRegistrar.add("Pref.getUIColor", boost::bind(&LLFloaterPreference::getUIColor, this ,_1, _2)); - + mCommitCallbackRegistrar.add("Pref.MaturitySettings", boost::bind(&LLFloaterPreference::onChangeMaturity, this)); + sSkin = gSavedSettings.getString("SkinCurrent"); gSavedSettings.getControl("AvatarNameTagMode")->getCommitSignal()->connect(boost::bind(&handleNameTagOptionChanged, _2)); @@ -364,6 +336,10 @@ BOOL LLFloaterPreference::postBuild() gSavedSettings.getControl("PlainTextChatHistory")->getSignal()->connect(boost::bind(&LLNearbyChat::processChatHistoryStyleUpdate, _2)); + gSavedSettings.getControl("ChatFontSize")->getSignal()->connect(boost::bind(&LLIMFloater::processChatHistoryStyleUpdate, _2)); + + gSavedSettings.getControl("ChatFontSize")->getSignal()->connect(boost::bind(&LLNearbyChat::processChatHistoryStyleUpdate, _2)); + LLTabContainer* tabcontainer = getChild<LLTabContainer>("pref core"); if (!tabcontainer->selectTab(gSavedSettings.getS32("LastPrefTab"))) tabcontainer->selectFirstTab(); @@ -379,12 +355,7 @@ BOOL LLFloaterPreference::postBuild() LLFloaterPreference::~LLFloaterPreference() { // clean up user data - LLComboBox* ctrl_aspect_ratio = getChild<LLComboBox>( "aspect_ratio"); LLComboBox* ctrl_window_size = getChild<LLComboBox>("windowsize combo"); - for (S32 i = 0; i < ctrl_aspect_ratio->getItemCount(); i++) - { - ctrl_aspect_ratio->setCurrentByIndex(i); - } for (S32 i = 0; i < ctrl_window_size->getItemCount(); i++) { ctrl_window_size->setCurrentByIndex(i); @@ -499,13 +470,6 @@ void LLFloaterPreference::apply() } applyResolution(); - - // Only set window size if we're not in fullscreen mode - if(!gSavedSettings.getBOOL("WindowFullScreen")) - { - applyWindowSize(); - } - } void LLFloaterPreference::cancel() @@ -541,8 +505,6 @@ void LLFloaterPreference::cancel() LLFloaterReg::hideInstance("pref_voicedevicesettings"); - gSavedSettings.setF32("FullScreenAspectRatio", sAspectRatio); - } void LLFloaterPreference::onOpen(const LLSD& key) @@ -553,7 +515,8 @@ void LLFloaterPreference::onOpen(const LLSD& key) // if we have no agent, we can't let them choose anything // if we have an agent, then we only let them choose if they have a choice bool can_choose_maturity = - gAgent.getID().notNull() && (gAgent.isMature() || gAgent.isGodlike()); + gAgent.getID().notNull() && + (gAgent.isMature() || gAgent.isGodlike()); LLComboBox* maturity_combo = getChild<LLComboBox>("maturity_desired_combobox"); @@ -574,6 +537,9 @@ void LLFloaterPreference::onOpen(const LLSD& key) { childSetText("maturity_desired_textbox", maturity_combo->getSelectedItemLabel()); childSetVisible("maturity_desired_combobox", false); + + // Display selected maturity icons. + onChangeMaturity(); } // Enabled/disabled popups, might have been changed by user actions @@ -598,6 +564,16 @@ void LLFloaterPreference::setHardwareDefaults() { LLFeatureManager::getInstance()->applyRecommendedSettings(); refreshEnabledGraphics(); + LLTabContainer* tabcontainer = getChild<LLTabContainer>("pref core"); + child_list_t::const_iterator iter = tabcontainer->getChildList()->begin(); + child_list_t::const_iterator end = tabcontainer->getChildList()->end(); + for ( ; iter != end; ++iter) + { + LLView* view = *iter; + LLPanelPreference* panel = dynamic_cast<LLPanelPreference*>(view); + if (panel) + panel->setHardwareDefaults(); + } } //virtual @@ -619,7 +595,7 @@ void LLFloaterPreference::onBtnOK() if (hasFocus()) { LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus()); - if (cur_focus->acceptsTextInput()) + if (cur_focus && cur_focus->acceptsTextInput()) { cur_focus->onCommit(); } @@ -631,8 +607,8 @@ void LLFloaterPreference::onBtnOK() apply(); closeFloater(false); - gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE ); LLUIColorTable::instance().saveUserSettings(); + gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE ); std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE); // save all settings, even if equals defaults gCrashSettings.saveToFile(crash_settings_filename, FALSE); @@ -652,7 +628,7 @@ void LLFloaterPreference::onBtnApply( ) if (hasFocus()) { LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus()); - if (cur_focus->acceptsTextInput()) + if (cur_focus && cur_focus->acceptsTextInput()) { cur_focus->onCommit(); } @@ -669,7 +645,7 @@ void LLFloaterPreference::onBtnCancel() if (hasFocus()) { LLUICtrl* cur_focus = dynamic_cast<LLUICtrl*>(gFocusMgr.getKeyboardFocus()); - if (cur_focus->acceptsTextInput()) + if (cur_focus && cur_focus->acceptsTextInput()) { cur_focus->onCommit(); } @@ -695,7 +671,8 @@ void LLFloaterPreference::refreshEnabledGraphics() LLFloaterPreference* instance = LLFloaterReg::findTypedInstance<LLFloaterPreference>("preferences"); if(instance) { - instance->refreshEnabledState(); + instance->refresh(); + //instance->refreshEnabledState(); } LLFloaterHardwareSettings* hardware_settings = LLFloaterReg::getTypedInstance<LLFloaterHardwareSettings>("prefs_hardware_settings"); if (hardware_settings) @@ -704,21 +681,6 @@ void LLFloaterPreference::refreshEnabledGraphics() } } -void LLFloaterPreference::updateMeterText(LLUICtrl* ctrl) -{ - // get our UI widgets - LLSliderCtrl* slider = (LLSliderCtrl*) ctrl; - - LLTextBox* m1 = getChild<LLTextBox>("DrawDistanceMeterText1"); - LLTextBox* m2 = getChild<LLTextBox>("DrawDistanceMeterText2"); - - // toggle the two text boxes based on whether we have 1 or two digits - F32 val = slider->getValueF32(); - bool two_digits = val < 100; - m1->setVisible(two_digits); - m2->setVisible(!two_digits); -} - void LLFloaterPreference::onClickBrowserClearCache() { LLNotificationsUtil::add("ConfirmClearBrowserCache", LLSD(), LLSD(), callback_clear_browser_cache); @@ -985,37 +947,6 @@ void LLFloaterPreference::disableUnavailableSettings() } } -void LLFloaterPreference::onCommitAutoDetectAspect() -{ - BOOL auto_detect = getChild<LLCheckBoxCtrl>("aspect_auto_detect")->get(); - F32 ratio; - - if (auto_detect) - { - S32 numerator = 0; - S32 denominator = 0; - - // clear any aspect ratio override - gViewerWindow->mWindow->setNativeAspectRatio(0.f); - fractionFromDecimal(gViewerWindow->mWindow->getNativeAspectRatio(), numerator, denominator); - - std::string aspect; - if (numerator != 0) - { - aspect = llformat("%d:%d", numerator, denominator); - } - else - { - aspect = llformat("%.3f", gViewerWindow->mWindow->getNativeAspectRatio()); - } - - getChild<LLComboBox>( "aspect_ratio")->setLabel(aspect); - - ratio = gViewerWindow->mWindow->getNativeAspectRatio(); - gSavedSettings.setF32("FullScreenAspectRatio", ratio); - } -} - void LLFloaterPreference::refresh() { LLPanel::refresh(); @@ -1080,7 +1011,7 @@ void LLFloaterPreference::onClickSetMiddleMouse() // update the control right away since we no longer wait for apply getChild<LLUICtrl>("modifier_combo")->onCommit(); } - +/* void LLFloaterPreference::onClickSkipDialogs() { LLNotificationsUtil::add("SkipShowNextTimeDialogs", LLSD(), LLSD(), boost::bind(&callback_skip_dialogs, _1, _2, this)); @@ -1090,6 +1021,7 @@ void LLFloaterPreference::onClickResetDialogs() { LLNotificationsUtil::add("ResetShowNextTimeDialogs", LLSD(), LLSD(), boost::bind(&callback_reset_dialogs, _1, _2, this)); } + */ void LLFloaterPreference::onClickEnablePopup() { @@ -1210,7 +1142,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); @@ -1259,70 +1191,9 @@ void LLFloaterPreference::updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_b } } -void LLFloaterPreference::onKeystrokeAspectRatio() -{ - getChild<LLCheckBoxCtrl>("aspect_auto_detect")->set(FALSE); -} - -void LLFloaterPreference::applyWindowSize() -{ - LLComboBox* ctrl_windowSize = getChild<LLComboBox>("windowsize combo"); - if (ctrl_windowSize->getVisible() && (ctrl_windowSize->getCurrentIndex() != -1)) - { - U32 width = 0; - U32 height = 0; - if (extractWindowSizeFromString(ctrl_windowSize->getValue().asString().c_str(), width,height)) - { - LLViewerWindow::movieSize(width, height); - } - } -} - void LLFloaterPreference::applyResolution() { - LLComboBox* ctrl_aspect_ratio = getChild<LLComboBox>( "aspect_ratio"); gGL.flush(); - char aspect_ratio_text[ASPECT_RATIO_STR_LEN]; /*Flawfinder: ignore*/ - if (ctrl_aspect_ratio->getCurrentIndex() == -1) - { - // *Can't pass const char* from c_str() into strtok - strncpy(aspect_ratio_text, ctrl_aspect_ratio->getSimple().c_str(), sizeof(aspect_ratio_text) -1); /*Flawfinder: ignore*/ - aspect_ratio_text[sizeof(aspect_ratio_text) -1] = '\0'; - char *element = strtok(aspect_ratio_text, ":/\\"); - if (!element) - { - sAspectRatio = 0.f; // will be clamped later - } - else - { - LLLocale locale(LLLocale::USER_LOCALE); - sAspectRatio = (F32)atof(element); - } - - // look for denominator - element = strtok(NULL, ":/\\"); - if (element) - { - LLLocale locale(LLLocale::USER_LOCALE); - - F32 denominator = (F32)atof(element); - if (denominator != 0.f) - { - sAspectRatio /= denominator; - } - } - } - else - { - sAspectRatio = (F32)ctrl_aspect_ratio->getValue().asReal(); - } - - // presumably, user entered a non-numeric value if aspect_ratio == 0.f - if (sAspectRatio != 0.f) - { - sAspectRatio = llclamp(sAspectRatio, 0.2f, 5.f); - gSavedSettings.setF32("FullScreenAspectRatio", sAspectRatio); - } // Screen resolution S32 num_resolutions; @@ -1345,35 +1216,18 @@ void LLFloaterPreference::applyResolution() refresh(); } -void LLFloaterPreference::initWindowSizeControls(LLPanel* panelp) +void LLFloaterPreference::onChangeMaturity() { - // Window size - // mWindowSizeLabel = getChild<LLTextBox>("WindowSizeLabel"); - LLComboBox* ctrl_window_size = panelp->getChild<LLComboBox>("windowsize combo"); - - // Look to see if current window size matches existing window sizes, if so then - // just set the selection value... - const U32 height = gViewerWindow->getWindowHeightRaw(); - const U32 width = gViewerWindow->getWindowWidthRaw(); - for (S32 i=0; i < ctrl_window_size->getItemCount(); i++) - { - U32 height_test = 0; - U32 width_test = 0; - ctrl_window_size->setCurrentByIndex(i); - if (extractWindowSizeFromString(ctrl_window_size->getValue().asString(), width_test, height_test)) - { - if ((height_test == height) && (width_test == width)) - { - return; - } - } - } - // ...otherwise, add a new entry with the current window height/width. - LLUIString resolution_label = panelp->getString("resolution_format"); - resolution_label.setArg("[RES_X]", llformat("%d", width)); - resolution_label.setArg("[RES_Y]", llformat("%d", height)); - ctrl_window_size->add(resolution_label, ADD_TOP); - ctrl_window_size->setCurrentByIndex(0); + U8 sim_access = gSavedSettings.getU32("PreferredMaturity"); + + getChild<LLIconCtrl>("rating_icon_general")->setVisible(sim_access == SIM_ACCESS_PG + || sim_access == SIM_ACCESS_MATURE + || sim_access == SIM_ACCESS_ADULT); + + getChild<LLIconCtrl>("rating_icon_moderate")->setVisible(sim_access == SIM_ACCESS_MATURE + || sim_access == SIM_ACCESS_ADULT); + + getChild<LLIconCtrl>("rating_icon_adult")->setVisible(sim_access == SIM_ACCESS_ADULT); } @@ -1429,92 +1283,18 @@ BOOL LLPanelPreference::postBuild() childSetText("email_address",getString("log_in_to_change") ); // childSetText("busy_response", getString("log_in_to_change")); } - - - if(hasChild("aspect_ratio")) + + //////////////////////PanelPrivacy /////////////////// + if (hasChild("media_enabled")) { - //============================================================================ - // Resolution -/* - S32 num_resolutions = 0; - LLWindow::LLWindowResolution* supported_resolutions = gViewerWindow->getWindow()->getSupportedResolutions(num_resolutions); - - S32 fullscreen_mode = num_resolutions - 1; - - LLComboBox*ctrl_full_screen = getChild<LLComboBox>( "fullscreen combo"); - LLUIString resolution_label = getString("resolution_format"); - - for (S32 i = 0; i < num_resolutions; i++) - { - resolution_label.setArg("[RES_X]", llformat("%d", supported_resolutions[i].mWidth)); - resolution_label.setArg("[RES_Y]", llformat("%d", supported_resolutions[i].mHeight)); - ctrl_full_screen->add( resolution_label, ADD_BOTTOM ); - } - - { - BOOL targetFullscreen; - S32 targetWidth; - S32 targetHeight; - - gViewerWindow->getTargetWindow(targetFullscreen, targetWidth, targetHeight); - - if (targetFullscreen) - { - fullscreen_mode = 0; // default to 800x600 - for (S32 i = 0; i < num_resolutions; i++) - { - if (targetWidth == supported_resolutions[i].mWidth - && targetHeight == supported_resolutions[i].mHeight) - { - fullscreen_mode = i; - } - } - ctrl_full_screen->setCurrentByIndex(fullscreen_mode); - } - else - { - // set to windowed mode - //fullscreen_mode = mCtrlFullScreen->getItemCount() - 1; - ctrl_full_screen->setCurrentByIndex(0); - } - } - */ - LLFloaterPreference::initWindowSizeControls(this); - - if (gSavedSettings.getBOOL("FullScreenAutoDetectAspectRatio")) - { - LLFloaterPreference::sAspectRatio = gViewerWindow->getDisplayAspectRatio(); - } - else - { - LLFloaterPreference::sAspectRatio = gSavedSettings.getF32("FullScreenAspectRatio"); - } - - getChild<LLComboBox>("aspect_ratio")->setTextEntryCallback(boost::bind(&LLPanelPreference::setControlFalse, this, LLSD("FullScreenAutoDetectAspectRatio") )); - - - S32 numerator = 0; - S32 denominator = 0; - fractionFromDecimal(LLFloaterPreference::sAspectRatio, numerator, denominator); - - LLUIString aspect_ratio_text = getString("aspect_ratio_text"); - if (numerator != 0) - { - aspect_ratio_text.setArg("[NUM]", llformat("%d", numerator)); - aspect_ratio_text.setArg("[DEN]", llformat("%d", denominator)); - } - else - { - aspect_ratio_text = llformat("%.3f", LLFloaterPreference::sAspectRatio); - } - - LLComboBox* ctrl_aspect_ratio = getChild<LLComboBox>( "aspect_ratio"); - //mCtrlAspectRatio->setCommitCallback(onSelectAspectRatio, this); - // add default aspect ratios - ctrl_aspect_ratio->add(aspect_ratio_text, &LLFloaterPreference::sAspectRatio, ADD_TOP); - ctrl_aspect_ratio->setCurrentByIndex(0); - - refresh(); + bool media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia"); + getChild<LLCheckBoxCtrl>("voice_call_friends_only_check")->setCommitCallback(boost::bind(&showFriendsOnlyWarning, _1, _2)); + 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(); @@ -1565,6 +1345,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(); @@ -1595,3 +1383,93 @@ void LLPanelPreference::setControlFalse(const LLSD& user_data) if (control) control->set(LLSD(FALSE)); } + +static LLRegisterPanelClassWrapper<LLPanelPreferenceGraphics> t_pref_graph("panel_preference_graphics"); + +BOOL LLPanelPreferenceGraphics::postBuild() +{ + return LLPanelPreference::postBuild(); +} +void LLPanelPreferenceGraphics::draw() +{ + LLPanelPreference::draw(); + + LLButton* button_apply = findChild<LLButton>("Apply"); + + if(button_apply && button_apply->getVisible()) + { + bool enable = hasDirtyChilds(); + + button_apply->setEnabled(enable); + + } +} +bool LLPanelPreferenceGraphics::hasDirtyChilds() +{ + std::list<LLView*> view_stack; + view_stack.push_back(this); + while(!view_stack.empty()) + { + // Process view on top of the stack + LLView* curview = view_stack.front(); + view_stack.pop_front(); + + LLUICtrl* ctrl = dynamic_cast<LLUICtrl*>(curview); + if (ctrl) + { + if(ctrl->isDirty()) + return true; + } + // Push children onto the end of the work stack + for (child_list_t::const_iterator iter = curview->getChildList()->begin(); + iter != curview->getChildList()->end(); ++iter) + { + view_stack.push_back(*iter); + } + } + return false; +} + +void LLPanelPreferenceGraphics::resetDirtyChilds() +{ + std::list<LLView*> view_stack; + view_stack.push_back(this); + while(!view_stack.empty()) + { + // Process view on top of the stack + LLView* curview = view_stack.front(); + view_stack.pop_front(); + + LLUICtrl* ctrl = dynamic_cast<LLUICtrl*>(curview); + if (ctrl) + { + ctrl->resetDirty(); + } + // Push children onto the end of the work stack + for (child_list_t::const_iterator iter = curview->getChildList()->begin(); + iter != curview->getChildList()->end(); ++iter) + { + view_stack.push_back(*iter); + } + } +} +void LLPanelPreferenceGraphics::apply() +{ + resetDirtyChilds(); + LLPanelPreference::apply(); +} +void LLPanelPreferenceGraphics::cancel() +{ + resetDirtyChilds(); + LLPanelPreference::cancel(); +} +void LLPanelPreferenceGraphics::saveSettings() +{ + resetDirtyChilds(); + LLPanelPreference::saveSettings(); +} +void LLPanelPreferenceGraphics::setHardwareDefaults() +{ + resetDirtyChilds(); + LLPanelPreference::setHardwareDefaults(); +} diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index 94108cb79a..71aa5d3189 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -110,8 +110,8 @@ public: void onClickSetKey(); void setKey(KEY key); void onClickSetMiddleMouse(); - void onClickSkipDialogs(); - void onClickResetDialogs(); +// void onClickSkipDialogs(); +// void onClickResetDialogs(); void onClickEnablePopup(); void onClickDisablePopup(); void resetAllIgnored(); @@ -128,22 +128,19 @@ public: void updateSliderText(LLSliderCtrl* ctrl, LLTextBox* text_box); void onUpdateSliderText(LLUICtrl* ctrl, const LLSD& name); - void onKeystrokeAspectRatio(); // void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator); -// bool extractWindowSizeFromString(const std::string& instr, U32 &width, U32 &height); - void onCommitAutoDetectAspect(); + void onCommitParcelMediaAutoPlayEnable(); + void onCommitMediaEnabled(); + void onCommitMusicEnabled(); void applyResolution(); - void applyWindowSize(); + void onChangeMaturity(); void applyUIColor(LLUICtrl* ctrl, const LLSD& param); - void getUIColor(LLUICtrl* ctrl, const LLSD& param); - - static void initWindowSizeControls(LLPanel* panelp); + void getUIColor(LLUICtrl* ctrl, const LLSD& param); void buildPopupLists(); static void refreshSkin(void* data); static void cleanupBadSetting(); - static F32 sAspectRatio; private: static std::string sSkin; bool mGotPersonalInfo; @@ -162,12 +159,16 @@ public: virtual void apply(); virtual void cancel(); void setControlFalse(const LLSD& user_data); + virtual void setHardwareDefaults(){}; // This function squirrels away the current values of the controls so that // cancel() can restore them. 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; @@ -175,4 +176,19 @@ private: string_color_map_t mSavedColors; }; +class LLPanelPreferenceGraphics : public LLPanelPreference +{ +public: + BOOL postBuild(); + void draw(); + void apply(); + void cancel(); + void saveSettings(); + void setHardwareDefaults(); +protected: + bool hasDirtyChilds(); + void resetDirtyChilds(); + +}; + #endif // LL_LLPREFERENCEFLOATER_H diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp index ff9002787c..5c0593ad29 100644 --- a/indra/newview/llfloaterproperties.cpp +++ b/indra/newview/llfloaterproperties.cpp @@ -130,9 +130,9 @@ BOOL LLFloaterProperties::postBuild() { // build the UI // item name & description - childSetPrevalidate("LabelItemName",&LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("LabelItemName",&LLTextValidate::validateASCIIPrintableNoPipe); getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLFloaterProperties::onCommitName,this)); - childSetPrevalidate("LabelItemDesc",&LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("LabelItemDesc",&LLTextValidate::validateASCIIPrintableNoPipe); getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLFloaterProperties:: onCommitDescription, this)); // Creator information getChild<LLUICtrl>("BtnCreator")->setCommitCallback(boost::bind(&LLFloaterProperties::onClickCreator,this)); @@ -880,7 +880,11 @@ void LLFloaterProperties::dirtyAll() iter != inst_list.end(); ++iter) { LLFloaterProperties* floater = dynamic_cast<LLFloaterProperties*>(*iter); - floater->dirty(); + llassert(floater); // else cast failed - wrong type D: + if (floater) + { + floater->dirty(); + } } } diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index c4b87c1b2d..d54736e942 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -406,6 +406,11 @@ LLPanelEstateCovenant* LLFloaterRegionInfo::getPanelCovenant() void LLFloaterRegionInfo::refreshFromRegion(LLViewerRegion* region) { + if (!region) + { + return; + } + // call refresh from region on all panels std::for_each( mInfoPanels.begin(), @@ -1516,11 +1521,6 @@ void LLPanelEstateInfo::onClickRemoveEstateManager(void* user_data) //--------------------------------------------------------------------------- // Kick from estate methods //--------------------------------------------------------------------------- -struct LLKickFromEstateInfo -{ - LLPanelEstateInfo *mEstatePanelp; - LLUUID mAgentID; -}; void LLPanelEstateInfo::onClickKickUser() { @@ -1542,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]; @@ -1598,7 +1593,7 @@ std::string all_estates_text() } else if (region && region->getOwner() == gAgent.getID()) { - return LLTrans::getString("AllEstatesYouOwn"); + return LLTrans::getString("RegionInfoAllEstatesYouOwn"); } else if (region && region->isEstateManager()) { @@ -2539,7 +2534,9 @@ bool LLPanelEstateInfo::onMessageCommit(const LLSD& notification, const LLSD& re } LLPanelEstateCovenant::LLPanelEstateCovenant() -: mCovenantID(LLUUID::null) + : + mCovenantID(LLUUID::null), + mAssetStatus(ASSET_ERROR) { } diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index e0f2fca580..0f3c176cea 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 @@ -277,13 +278,8 @@ void LLFloaterReporter::getObjectInfo(const LLUUID& object_id) { object_owner.append("Unknown"); } - childSetText("object_name", object_owner); - std::string owner_link = - LLSLURL::buildCommand("agent", mObjectID, "inspect"); - childSetText("owner_name", owner_link); - childSetText("abuser_name_edit", object_owner); - mAbuserID = object_id; - mOwnerName = object_owner; + + setFromAvatar(mObjectID, object_owner); } else { @@ -305,7 +301,6 @@ void LLFloaterReporter::getObjectInfo(const LLUUID& object_id) } } - void LLFloaterReporter::onClickSelectAbuser() { gFloaterView->getParentFloater(this)->addDependentFloater(LLFloaterAvatarPicker::show(boost::bind(&LLFloaterReporter::callbackAvatarID, this, _1, _2), FALSE, TRUE )); @@ -323,6 +318,17 @@ void LLFloaterReporter::callbackAvatarID(const std::vector<std::string>& names, } +void LLFloaterReporter::setFromAvatar(const LLUUID& avatar_id, const std::string& avatar_name) +{ + mAbuserID = mObjectID = avatar_id; + mOwnerName = avatar_name; + + std::string avatar_link = LLSLURL::buildCommand("agent", mObjectID, "inspect"); + childSetText("owner_name", avatar_link); + childSetText("object_name", avatar_name); + childSetText("abuser_name_edit", avatar_name); +} + // static void LLFloaterReporter::onClickSend(void *userdata) { @@ -458,9 +464,8 @@ void LLFloaterReporter::showFromMenu(EReportType report_type) } } - // static -void LLFloaterReporter::showFromObject(const LLUUID& object_id) +void LLFloaterReporter::show(const LLUUID& object_id, const std::string& avatar_name) { LLFloaterReporter* f = LLFloaterReg::showTypedInstance<LLFloaterReporter>("reporter"); @@ -469,8 +474,11 @@ void LLFloaterReporter::showFromObject(const LLUUID& object_id) LLAgentUI::buildFullname(fullname); f->childSetText("reporter_field", fullname); - // Request info for this object - f->getObjectInfo(object_id); + if (avatar_name.empty()) + // Request info for this object + f->getObjectInfo(object_id); + else + f->setFromAvatar(object_id, avatar_name); // Need to deselect on close f->mDeselectOnClose = TRUE; @@ -479,6 +487,18 @@ void LLFloaterReporter::showFromObject(const LLUUID& object_id) } +// static +void LLFloaterReporter::showFromObject(const LLUUID& object_id) +{ + show(object_id); +} + +// static +void LLFloaterReporter::showFromAvatar(const LLUUID& avatar_id, const std::string avatar_name) +{ + show(avatar_id, avatar_name); +} + void LLFloaterReporter::setPickedObjectProperties(const std::string& object_name, const std::string& owner_name, const LLUUID owner_id) { childSetText("object_name", object_name); diff --git a/indra/newview/llfloaterreporter.h b/indra/newview/llfloaterreporter.h index cc2dfb2f98..7c6473f975 100644 --- a/indra/newview/llfloaterreporter.h +++ b/indra/newview/llfloaterreporter.h @@ -93,6 +93,7 @@ public: static void showFromMenu(EReportType report_type); static void showFromObject(const LLUUID& object_id); + static void showFromAvatar(const LLUUID& avatar_id, const std::string avatar_name); static void onClickSend (void *userdata); static void onClickCancel (void *userdata); @@ -109,6 +110,8 @@ public: void setPickedObjectProperties(const std::string& object_name, const std::string& owner_name, const LLUUID owner_id); private: + static void show(const LLUUID& object_id, const std::string& avatar_name = LLStringUtil::null); + void takeScreenshot(); void sendReportViaCaps(std::string url); void uploadImage(); @@ -121,6 +124,7 @@ private: void enableControls(BOOL own_avatar); void getObjectInfo(const LLUUID& object_id); void callbackAvatarID(const std::vector<std::string>& names, const std::vector<LLUUID>& ids); + void setFromAvatar(const LLUUID& avatar_id, const std::string& avatar_name = LLStringUtil::null); private: EReportType mReportType; diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp index 3042fbc6ec..fdf128945e 100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp @@ -59,10 +59,32 @@ /// 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; LLFloaterScriptLimits::LLFloaterScriptLimits(const LLSD& seed) : LLFloater(seed) @@ -85,32 +107,41 @@ 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 - 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); + } - 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) + 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); + } + + if(mInfoPanels.size() > 0) { mTab->selectTab(0); } - else + + if(!selectParcelPanel && (mInfoPanels.size() > 1)) { - mTab->selectTab(2); + mTab->selectTab(1); } return TRUE; @@ -130,7 +161,6 @@ void LLFloaterScriptLimits::refresh() } } - ///---------------------------------------------------------------------------- // Base class for panels ///---------------------------------------------------------------------------- @@ -159,6 +189,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")) @@ -172,24 +216,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: @@ -204,8 +230,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,8 +295,6 @@ 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); } } @@ -226,8 +303,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) @@ -237,11 +388,22 @@ void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content) else { 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); + 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; + } } } @@ -250,8 +412,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) @@ -261,8 +476,22 @@ void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content) 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; + } } } @@ -308,7 +537,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) @@ -331,9 +560,46 @@ void LLPanelScriptLimitsRegionMemory::setErrorStatus(U32 status, const std::stri llerrs << "Can't handle remote parcel request."<< " Http Status: "<< status << ". Reason : "<< reason<<llendl; } +// callback from the name cache with an owner name to add to the list +void LLPanelScriptLimitsRegionMemory::onNameCache( + const LLUUID& id, + const std::string& first_name, + const std::string& last_name) +{ + 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) + { + LLSD element = *id_itor; + if(element["owner_id"].asUUID() == id) + { + LLScrollListItem* item = list->getItem(element["id"].asUUID()); + + if(item) + { + item->getColumn(3)->setValue(LLSD(name)); + element["columns"][3]["value"] = name; + } + } + } +} + 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(); @@ -342,21 +608,74 @@ 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() / 1024; - total_size += size; + S32 size = content["parcels"][i]["objects"][j]["resources"]["memory"].asInteger() / SIZE_OF_ONE_KB; + + 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; + + // 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 + { + BOOL name_is_cached = gCacheName->getFullName(owner_id, owner_buf); + if(!name_is_cached) + { + 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)); + } + } + } LLSD element; @@ -364,90 +683,122 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content) 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"] = ""; + 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); - mObjectListIDs.push_back(task_id); - total_objects++; + list->addElement(element, ADD_SORTED); + + element["owner_id"] = owner_id; + element["local_id"] = local_id; + mObjectListItems.push_back(element); } } - - 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"); + if(btn) + { + btn->setVisible(true); + } + } - childSetValue("loading_text", LLSD(std::string(""))); + if (has_local_ids) + { + LLButton* btn = getChild<LLButton>("return_btn"); + 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) { - 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)); + } } BOOL LLPanelScriptLimitsRegionMemory::postBuild() @@ -458,7 +809,20 @@ BOOL LLPanelScriptLimitsRegionMemory::postBuild() std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting"); 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++) + { + LLScrollListColumn* columnp = list->getColumn(column); + columnp->mHeader->setHasResizableElement(TRUE); + } + return StartRequestChain(); } @@ -469,18 +833,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(); @@ -496,7 +853,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; } @@ -526,14 +882,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(); @@ -548,15 +902,18 @@ void LLPanelScriptLimitsRegionMemory::clearList() list->operateOnAll(LLCtrlListInterface::OP_DELETE); } - mGotParcelMemoryUsed = FALSE; - mGotParcelMemoryMax = FALSE; + 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)); - mObjectListIDs.clear(); + mObjectListItems.clear(); } // static @@ -568,13 +925,16 @@ void LLPanelScriptLimitsRegionMemory::onClickRefresh(void* userdata) if(instance) { 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(); + 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 @@ -586,78 +946,80 @@ 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) { 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 { 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); @@ -665,281 +1027,74 @@ 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(); - - 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"] = ""; - element["columns"][2]["font"] = "SANSSERIF"; - element["columns"][3]["column"] = "location"; - element["columns"][3]["value"] = parcel_name; - element["columns"][3]["font"] = "SANSSERIF"; - - list->addElement(element); - mObjectListIDs.push_back(task_id); - 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(""))); - } + onClickRefresh(NULL); } -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)); - - mObjectListIDs.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; - } -} - -// static -void LLPanelScriptLimitsRegionURLs::onClickHighlight(void* userdata) +void LLPanelScriptLimitsRegionMemory::onClickReturn(void* userdata) { -/* llinfos << "Highlight 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 beacon function from the memory panel - panel->showBeacon(); + if(tab) + { + LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel"); + if(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; - }*/ -} - -// static -void LLPanelScriptLimitsRegionURLs::onClickReturn(void* userdata) -{ -/* llinfos << "Return 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 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; - }*/ } ///---------------------------------------------------------------------------- @@ -964,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++) @@ -982,7 +1143,7 @@ void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content) S32 size = 0; if(content["attachments"][i]["objects"][j]["resources"].has("memory")) { - size = content["attachments"][i]["objects"][j]["resources"]["memory"].asInteger(); + size = content["attachments"][i]["objects"][j]["resources"]["memory"].asInteger() / SIZE_OF_ONE_KB; } S32 urls = 0; if(content["attachments"][i]["objects"][j]["resources"].has("urls")) @@ -1013,6 +1174,8 @@ void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content) list->addElement(element); } } + + setAttachmentSummary(content); childSetValue("loading_text", LLSD(std::string(""))); } @@ -1039,6 +1202,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) { @@ -1059,3 +1285,4 @@ void LLPanelScriptLimitsAttachment::onClickRefresh(void* userdata) return; } } + diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h index 88239136e3..0cba4d72f2 100644 --- a/indra/newview/llfloaterscriptlimits.h +++ b/indra/newview/llfloaterscriptlimits.h @@ -54,12 +54,12 @@ public: // from LLPanel virtual void refresh(); - + private: - + LLFloaterScriptLimits(const LLSD& seed); ~LLFloaterScriptLimits(); - + protected: LLTabContainer* mTab; @@ -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); @@ -159,21 +166,35 @@ public: BOOL StartRequestChain(); - void populateParcelMemoryText(); BOOL getLandScriptResources(); void clearList(); void showBeacon(); + void returnObjectsFromParcel(S32 local_id); void returnObjects(); private: + void onNameCache(const LLUUID& id, + const std::string& first_name, + const std::string& last_name); + + LLSD mContent; LLUUID mParcelId; - BOOL mGotParcelMemoryUsed; - BOOL mGotParcelMemoryMax; + bool mGotParcelMemoryUsed; + bool mGotParcelMemoryUsedDetails; + bool mGotParcelMemoryMax; S32 mParcelMemoryMax; S32 mParcelMemoryUsed; + S32 mParcelMemoryUsedDetails; + + bool mGotParcelURLsUsed; + bool mGotParcelURLsUsedDetails; + bool mGotParcelURLsMax; + S32 mParcelURLsMax; + S32 mParcelURLsUsed; + S32 mParcelURLsUsedDetails; - std::vector<LLUUID> mObjectListIDs; + std::vector<LLSD> mObjectListItems; protected: @@ -188,46 +209,6 @@ protected: }; ///////////////////////////////////////////////////////////////////////////// -// URLs panel -///////////////////////////////////////////////////////////////////////////// - -class LLPanelScriptLimitsRegionURLs : public LLPanelScriptLimitsInfo -{ - -public: - LLPanelScriptLimitsRegionURLs() - : LLPanelScriptLimitsInfo(), mParcelId(LLUUID()), mGotParcelURLsUsed(FALSE), mGotParcelURLsMax(FALSE) {}; - ~LLPanelScriptLimitsRegionURLs() - { - }; - - // LLPanel - virtual BOOL postBuild(); - - void setRegionDetails(LLSD content); - void setRegionSummary(LLSD content); - - void populateParcelURLsText(); - void clearList(); - -private: - - LLUUID mParcelId; - BOOL mGotParcelURLsUsed; - BOOL mGotParcelURLsMax; - S32 mParcelURLsMax; - S32 mParcelURLsUsed; - - std::vector<LLUUID> mObjectListIDs; - -protected: - - static void onClickRefresh(void* userdata); - static void onClickHighlight(void* userdata); - static void onClickReturn(void* userdata); -}; - -///////////////////////////////////////////////////////////////////////////// // Attachment panel ///////////////////////////////////////////////////////////////////////////// @@ -236,7 +217,21 @@ class LLPanelScriptLimitsAttachment : public LLPanelScriptLimitsInfo public: LLPanelScriptLimitsAttachment() - : LLPanelScriptLimitsInfo() {}; + : LLPanelScriptLimitsInfo(), + mGotAttachmentMemoryUsed(false), + mGotAttachmentMemoryUsedDetails(false), + mGotAttachmentMemoryMax(false), + mAttachmentMemoryMax(0), + mAttachmentMemoryUsed(0), + mAttachmentMemoryUsedDetails(0), + mGotAttachmentURLsUsed(false), + mGotAttachmentURLsUsedDetails(false), + mGotAttachmentURLsMax(false), + mAttachmentURLsMax(0), + mAttachmentURLsUsed(0), + mAttachmentURLsUsedDetails(0) + {}; + ~LLPanelScriptLimitsAttachment() { }; @@ -246,11 +241,26 @@ public: 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/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index 595d84f9f0..76caa0cf91 100644 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp @@ -32,6 +32,9 @@ */ #include "llviewerprecompiledheaders.h" + +#include "llcommandhandler.h" +#include "llfloaterreg.h" #include "llfloatersearch.h" #include "llmediactrl.h" #include "lllogininstance.h" @@ -41,6 +44,42 @@ #include "llviewercontrol.h" #include "llweb.h" +// support secondlife:///app/search/{CATEGORY}/{QUERY} SLapps +class LLSearchHandler : public LLCommandHandler +{ +public: + // requires trusted browser to trigger + LLSearchHandler() : LLCommandHandler("search", UNTRUSTED_THROTTLE) { } + bool handle(const LLSD& tokens, const LLSD& query_map, LLMediaCtrl* web) + { + const size_t parts = tokens.size(); + + // get the (optional) category for the search + std::string category; + if (parts > 0) + { + category = tokens[0].asString(); + } + + // get the (optional) search string + std::string search_text; + if (parts > 1) + { + search_text = tokens[1].asString(); + } + + // create the LLSD arguments for the search floater + LLSD args; + args["category"] = category; + args["id"] = LLURI::unescape(search_text); + + // open the search floater and perform the requested search + LLFloaterReg::showInstance("search", args); + return true; + } +}; +LLSearchHandler gSearchHandler; + LLFloaterSearch::LLFloaterSearch(const LLSD& key) : LLFloater(key), LLViewerMediaObserver(), @@ -77,6 +116,13 @@ void LLFloaterSearch::onOpen(const LLSD& key) search(key); } +void LLFloaterSearch::onClose(bool app_quitting) +{ + // tear down the web view so we don't show the previous search + // result when the floater is opened next time + destroy(); +} + void LLFloaterSearch::handleMediaEvent(LLPluginClassMedia *self, EMediaEvent event) { switch (event) diff --git a/indra/newview/llfloatersearch.h b/indra/newview/llfloatersearch.h index ba817adf7f..0a8d9bbe36 100644 --- a/indra/newview/llfloatersearch.h +++ b/indra/newview/llfloatersearch.h @@ -59,6 +59,8 @@ public: /// see search() for details on the key parameter. /*virtual*/ void onOpen(const LLSD& key); + /*virtual*/ void onClose(bool app_quitting); + /// perform a search with the specific search term. /// The key should be a map that can contain the following keys: /// - "id": specifies the text phrase to search for diff --git a/indra/newview/llfloatersellland.cpp b/indra/newview/llfloatersellland.cpp index e2b0c4b66f..eae6121e79 100644 --- a/indra/newview/llfloatersellland.cpp +++ b/indra/newview/llfloatersellland.cpp @@ -163,13 +163,14 @@ BOOL LLFloaterSellLandUI::postBuild() { childSetCommitCallback("sell_to", onChangeValue, this); childSetCommitCallback("price", onChangeValue, this); - childSetPrevalidate("price", LLLineEditor::prevalidateNonNegativeS32); + childSetPrevalidate("price", LLTextValidate::validateNonNegativeS32); childSetCommitCallback("sell_objects", onChangeValue, this); childSetAction("sell_to_select_agent", boost::bind( &LLFloaterSellLandUI::doSelectAgent, this)); childSetAction("cancel_btn", doCancel, this); childSetAction("sell_btn", doSellLand, this); childSetAction("show_objects", doShowObjects, this); center(); + getChild<LLUICtrl>("profile_scroll")->setTabStop(true); return TRUE; } @@ -268,7 +269,7 @@ void LLFloaterSellLandUI::refreshUI() std::string price_str = childGetValue("price").asString(); bool valid_price = false; - valid_price = (price_str != "") && LLLineEditor::prevalidateNonNegativeS32(utf8str_to_wstring(price_str)); + valid_price = (price_str != "") && LLTextValidate::validateNonNegativeS32(utf8str_to_wstring(price_str)); if (valid_price && mParcelActualArea > 0) { diff --git a/indra/newview/llfloatersettingsdebug.cpp b/indra/newview/llfloatersettingsdebug.cpp index 8979575ef7..a6ffa5ec09 100644 --- a/indra/newview/llfloatersettingsdebug.cpp +++ b/indra/newview/llfloatersettingsdebug.cpp @@ -34,7 +34,7 @@ #include "llfloatersettingsdebug.h" #include "llfloater.h" #include "lluictrlfactory.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llcombobox.h" #include "llspinctrl.h" #include "llcolorswatch.h" diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index f53b62e490..a0031f0193 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; } } @@ -1028,7 +1029,8 @@ class LLFloaterSnapshot::Impl public: Impl() : mAvatarPauseHandles(), - mLastToolset(NULL) + mLastToolset(NULL), + mAspectRatioCheckOff(false) { } ~Impl() @@ -1079,7 +1081,7 @@ public: LLToolset* mLastToolset; LLHandle<LLView> mPreviewHandle; - BOOL mAspectRatioCheckOff ; + bool mAspectRatioCheckOff ; }; // static @@ -1606,7 +1608,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 +1618,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 +1631,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) @@ -2078,8 +2080,10 @@ void LLFloaterSnapshot::draw() { if(previewp->getThumbnailImage()) { + LLRect thumbnail_rect = getChild<LLUICtrl>("thumbnail_placeholder")->getRect(); + S32 offset_x = (getRect().getWidth() - previewp->getThumbnailWidth()) / 2 ; - S32 offset_y = getRect().getHeight() - 205 + (90 - previewp->getThumbnailHeight()) / 2 ; + S32 offset_y = thumbnail_rect.mBottom + (thumbnail_rect.getHeight() - previewp->getThumbnailHeight()) / 2 ; glMatrixMode(GL_MODELVIEW); gl_draw_scaled_image(offset_x, offset_y, diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index babef5b63d..7c42a581ff 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -666,8 +666,8 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask) if (mCheckCopyCenters) mCheckCopyCenters ->setVisible( create_visible ); if (mCheckCopyRotates) mCheckCopyRotates ->setVisible( create_visible ); - if (mCheckCopyCenters) mCheckCopyCenters->setEnabled( mCheckCopySelection->get() ); - if (mCheckCopyRotates) mCheckCopyRotates->setEnabled( mCheckCopySelection->get() ); + if (mCheckCopyCenters && mCheckCopySelection) mCheckCopyCenters->setEnabled( mCheckCopySelection->get() ); + if (mCheckCopyRotates && mCheckCopySelection) mCheckCopyRotates->setEnabled( mCheckCopySelection->get() ); // Land buttons BOOL land_visible = (tool == LLToolBrushLand::getInstance() || tool == LLToolSelectLand::getInstance() ); @@ -1134,7 +1134,8 @@ void LLFloaterTools::getMediaState() } // XXX DISABLE this for now, because when the fetch finally // does come in, the state of this floater doesn't properly - // update. This needs more thought. + // update. Re-selecting fixes the problem, but there is + // contention as to whether this is a sufficient solution. // if (object->isMediaDataBeingFetched()) // { // LL_INFOS("LLFloaterTools: media") @@ -1221,10 +1222,10 @@ void LLFloaterTools::getMediaState() mNeedMediaTitle = false; } - childSetEnabled("media_tex", bool_has_media & editable); - childSetEnabled( "edit_media", bool_has_media & editable ); - childSetEnabled( "delete_media", bool_has_media & editable ); - childSetEnabled( "add_media", ( ! bool_has_media ) & editable ); + childSetEnabled("media_tex", bool_has_media && editable); + childSetEnabled( "edit_media", bool_has_media && LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo && editable ); + childSetEnabled( "delete_media", bool_has_media && editable ); + childSetEnabled( "add_media", ( ! bool_has_media ) && editable ); // TODO: display a list of all media on the face - use 'identical' flag } else // not all face has media but at least one does. @@ -1252,7 +1253,7 @@ void LLFloaterTools::getMediaState() } childSetEnabled("media_tex", TRUE); - childSetEnabled( "edit_media", TRUE); + childSetEnabled( "edit_media", LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo); childSetEnabled( "delete_media", TRUE); childSetEnabled( "add_media", FALSE ); } @@ -1269,18 +1270,15 @@ void LLFloaterTools::getMediaState() // called when a user wants to add media to a prim or prim face void LLFloaterTools::onClickBtnAddMedia() { - // check for the edit tool and now many faces are selected - LLTool *tool = LLToolMgr::getInstance()->getCurrentTool(); - if((tool != LLToolFace::getInstance()) || LLSelectMgr::getInstance()->getSelection()->isMultipleTESelected()) + // check if multiple faces are selected + if(LLSelectMgr::getInstance()->getSelection()->isMultipleTESelected()) { - LLNotificationsUtil::add("MultipleFacesSelected",LLSD(), LLSD(), multipleFacesSelectedConfirm); - + LLNotificationsUtil::add("MultipleFacesSelected", LLSD(), LLSD(), multipleFacesSelectedConfirm); } else { onClickBtnEditMedia(); } - } // static @@ -1323,7 +1321,7 @@ bool LLFloaterTools::deleteMediaConfirm(const LLSD& notification, const LLSD& re switch( option ) { case 0: // "Yes" - LLSelectMgr::getInstance()->selectionSetMedia( 0 ); + LLSelectMgr::getInstance()->selectionSetMedia( 0, LLSD() ); if(LLFloaterReg::instanceVisible("media_settings")) { LLFloaterReg::hideInstance("media_settings"); @@ -1423,7 +1421,7 @@ void LLFloaterTools::updateMediaSettings() return mMediaEntry.getControls(); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_controls(default_media_data); identical = selected_objects->getSelectedTEValue( &func_controls, value_u8 ); @@ -1446,7 +1444,7 @@ void LLFloaterTools::updateMediaSettings() return mMediaEntry.getFirstClickInteract(); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_first_click(default_media_data); identical = selected_objects->getSelectedTEValue( &func_first_click, value_bool ); @@ -1469,7 +1467,7 @@ void LLFloaterTools::updateMediaSettings() return mMediaEntry.getHomeURL(); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_home_url(default_media_data); identical = selected_objects->getSelectedTEValue( &func_home_url, value_str ); @@ -1492,7 +1490,7 @@ void LLFloaterTools::updateMediaSettings() return mMediaEntry.getCurrentURL(); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_current_url(default_media_data); identical = selected_objects->getSelectedTEValue( &func_current_url, value_str ); @@ -1516,7 +1514,7 @@ void LLFloaterTools::updateMediaSettings() return mMediaEntry.getAutoZoom(); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_auto_zoom(default_media_data); identical = selected_objects->getSelectedTEValue( &func_auto_zoom, value_bool ); @@ -1525,7 +1523,9 @@ void LLFloaterTools::updateMediaSettings() mMediaSettings[ base_key + std::string( LLPanelContents::TENTATIVE_SUFFIX ) ] = ! identical; // Auto play - value_bool = default_media_data.getAutoPlay(); + //value_bool = default_media_data.getAutoPlay(); + // set default to auto play TRUE -- angela EXT-5172 + value_bool = true; struct functor_getter_auto_play : public LLSelectedTEGetFunctor< bool > { functor_getter_auto_play(const LLMediaEntry& entry) : mMediaEntry(entry) {} @@ -1536,10 +1536,11 @@ void LLFloaterTools::updateMediaSettings() if ( object->getTE(face) ) if ( object->getTE(face)->getMediaData() ) return object->getTE(face)->getMediaData()->getAutoPlay(); - return mMediaEntry.getAutoPlay(); + //return mMediaEntry.getAutoPlay(); set default to auto play TRUE -- angela EXT-5172 + return true; }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_auto_play(default_media_data); identical = selected_objects->getSelectedTEValue( &func_auto_play, value_bool ); @@ -1549,7 +1550,9 @@ void LLFloaterTools::updateMediaSettings() // Auto scale - value_bool = default_media_data.getAutoScale(); + // set default to auto scale TRUE -- angela EXT-5172 + //value_bool = default_media_data.getAutoScale(); + value_bool = true; struct functor_getter_auto_scale : public LLSelectedTEGetFunctor< bool > { functor_getter_auto_scale(const LLMediaEntry& entry): mMediaEntry(entry) {} @@ -1560,10 +1563,11 @@ void LLFloaterTools::updateMediaSettings() if ( object->getTE(face) ) if ( object->getTE(face)->getMediaData() ) return object->getTE(face)->getMediaData()->getAutoScale(); - return mMediaEntry.getAutoScale();; - }; + // return mMediaEntry.getAutoScale(); set default to auto scale TRUE -- angela EXT-5172 + return true; + }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_auto_scale(default_media_data); identical = selected_objects->getSelectedTEValue( &func_auto_scale, value_bool ); @@ -1586,7 +1590,7 @@ void LLFloaterTools::updateMediaSettings() return mMediaEntry.getAutoLoop(); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_auto_loop(default_media_data); identical = selected_objects->getSelectedTEValue( &func_auto_loop, value_bool ); @@ -1609,7 +1613,7 @@ void LLFloaterTools::updateMediaSettings() return mMediaEntry.getWidthPixels(); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_width_pixels(default_media_data); identical = selected_objects->getSelectedTEValue( &func_width_pixels, value_int ); @@ -1632,7 +1636,7 @@ void LLFloaterTools::updateMediaSettings() return mMediaEntry.getHeightPixels(); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_height_pixels(default_media_data); identical = selected_objects->getSelectedTEValue( &func_height_pixels, value_int ); @@ -1655,7 +1659,7 @@ void LLFloaterTools::updateMediaSettings() return mMediaEntry.getAltImageEnable(); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_enable_alt_image(default_media_data); identical = selected_objects->getSelectedTEValue( &func_enable_alt_image, value_bool ); @@ -1678,7 +1682,7 @@ void LLFloaterTools::updateMediaSettings() return 0 != ( mMediaEntry.getPermsInteract() & LLMediaEntry::PERM_OWNER ); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_perms_owner_interact(default_media_data); identical = selected_objects->getSelectedTEValue( &func_perms_owner_interact, value_bool ); @@ -1701,7 +1705,7 @@ void LLFloaterTools::updateMediaSettings() return 0 != ( mMediaEntry.getPermsControl() & LLMediaEntry::PERM_OWNER ); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_perms_owner_control(default_media_data); identical = selected_objects ->getSelectedTEValue( &func_perms_owner_control, value_bool ); @@ -1724,7 +1728,7 @@ void LLFloaterTools::updateMediaSettings() return 0 != ( mMediaEntry.getPermsInteract() & LLMediaEntry::PERM_GROUP ); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_perms_group_interact(default_media_data); identical = selected_objects->getSelectedTEValue( &func_perms_group_interact, value_bool ); @@ -1747,7 +1751,7 @@ void LLFloaterTools::updateMediaSettings() return 0 != ( mMediaEntry.getPermsControl() & LLMediaEntry::PERM_GROUP ); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_perms_group_control(default_media_data); identical = selected_objects->getSelectedTEValue( &func_perms_group_control, value_bool ); @@ -1770,7 +1774,7 @@ void LLFloaterTools::updateMediaSettings() return 0 != ( mMediaEntry.getPermsInteract() & LLMediaEntry::PERM_ANYONE ); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_perms_anyone_interact(default_media_data); identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func_perms_anyone_interact, value_bool ); @@ -1793,7 +1797,7 @@ void LLFloaterTools::updateMediaSettings() return 0 != ( mMediaEntry.getPermsControl() & LLMediaEntry::PERM_ANYONE ); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_perms_anyone_control(default_media_data); identical = selected_objects->getSelectedTEValue( &func_perms_anyone_control, value_bool ); @@ -1816,7 +1820,7 @@ void LLFloaterTools::updateMediaSettings() return mMediaEntry.getWhiteListEnable(); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_whitelist_enable(default_media_data); identical = selected_objects->getSelectedTEValue( &func_whitelist_enable, value_bool ); @@ -1839,7 +1843,7 @@ void LLFloaterTools::updateMediaSettings() return mMediaEntry.getWhiteList(); }; - const LLMediaEntry & mMediaEntry; + const LLMediaEntry &mMediaEntry; } func_whitelist_urls(default_media_data); identical = selected_objects->getSelectedTEValue( &func_whitelist_urls, value_vector_str ); diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp index c930e99bad..8ab050beaa 100644 --- a/indra/newview/llfloatertopobjects.cpp +++ b/indra/newview/llfloatertopobjects.cpp @@ -283,8 +283,13 @@ void LLFloaterTopObjects::updateSelectionInfo() std::string object_id_string = object_id.asString(); childSetValue("id_editor", LLSD(object_id_string)); - childSetValue("object_name_editor", list->getFirstSelected()->getColumn(1)->getValue().asString()); - childSetValue("owner_name_editor", list->getFirstSelected()->getColumn(2)->getValue().asString()); + LLScrollListItem* sli = list->getFirstSelected(); + llassert(sli); + if (sli) + { + childSetValue("object_name_editor", sli->getColumn(1)->getValue().asString()); + childSetValue("owner_name_editor", sli->getColumn(2)->getValue().asString()); + } } // static diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index 1e92ac0b8e..f61c86db14 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -41,6 +41,7 @@ #include "llfloateruipreview.h" // Own header // Internal utility +#include "lleventtimer.h" #include "llrender.h" #include "llsdutil.h" #include "llxmltree.h" @@ -91,7 +92,6 @@ static std::string get_xui_dir() } // Forward declarations to avoid header dependencies -class LLEventTimer; class LLColor; class LLScrollListCtrl; class LLComboBox; @@ -362,8 +362,7 @@ BOOL LLFadeEventTimer::tick() if(NULL == mParent) // no more need to tick, so suicide { - delete this; - return FALSE; + return TRUE; } // Set up colors @@ -1051,6 +1050,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 +1058,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,12 +1085,14 @@ 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()); - 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!"; diff --git a/indra/newview/llfloatervoicedevicesettings.cpp b/indra/newview/llfloatervoicedevicesettings.cpp index 43024a4bd0..638c9f1b8c 100644 --- a/indra/newview/llfloatervoicedevicesettings.cpp +++ b/indra/newview/llfloatervoicedevicesettings.cpp @@ -110,32 +110,33 @@ void LLPanelVoiceDeviceSettings::draw() LLPanel::draw(); - F32 voice_power = gVoiceClient->tuningGetEnergy(); - S32 discrete_power = 0; - - if (!is_in_tuning_mode) - { - discrete_power = 0; - } - else - { - discrete_power = llmin(4, llfloor((voice_power / LLVoiceClient::OVERDRIVEN_POWER_LEVEL) * 4.f)); - } - if (is_in_tuning_mode) { - for(S32 power_bar_idx = 0; power_bar_idx < 5; power_bar_idx++) + const S32 num_bars = 5; + F32 voice_power = gVoiceClient->tuningGetEnergy() / LLVoiceClient::OVERDRIVEN_POWER_LEVEL; + S32 discrete_power = llmin(num_bars, llfloor(voice_power * (F32)num_bars + 0.1f)); + + for(S32 power_bar_idx = 0; power_bar_idx < num_bars; power_bar_idx++) { std::string view_name = llformat("%s%d", "bar", power_bar_idx); LLView* bar_view = getChild<LLView>(view_name); if (bar_view) { + gl_rect_2d(bar_view->getRect(), LLColor4::grey, TRUE); + + LLColor4 color; if (power_bar_idx < discrete_power) { - LLColor4 color = (power_bar_idx >= 3) ? LLUIColorTable::instance().getColor("OverdrivenColor") : LLUIColorTable::instance().getColor("SpeakingColor"); - gl_rect_2d(bar_view->getRect(), color, TRUE); + color = (power_bar_idx >= 3) ? LLUIColorTable::instance().getColor("OverdrivenColor") : LLUIColorTable::instance().getColor("SpeakingColor"); + } + else + { + color = LLUIColorTable::instance().getColor("PanelFocusBackgroundColor"); } - gl_rect_2d(bar_view->getRect(), LLColor4::grey, FALSE); + + LLRect color_rect = bar_view->getRect(); + color_rect.stretch(-1); + gl_rect_2d(color_rect, color, TRUE); } } } @@ -276,7 +277,10 @@ void LLPanelVoiceDeviceSettings::initialize() void LLPanelVoiceDeviceSettings::cleanup() { - gVoiceClient->tuningStop(); + if (gVoiceClient) + { + gVoiceClient->tuningStop(); + } LLVoiceChannel::resume(); } diff --git a/indra/newview/llfloaterwater.cpp b/indra/newview/llfloaterwater.cpp index 66a1f6701f..1bbee2625c 100644 --- a/indra/newview/llfloaterwater.cpp +++ b/indra/newview/llfloaterwater.cpp @@ -574,12 +574,10 @@ bool LLFloaterWater::deleteAlertCallback(const LLSD& notification, const LLSD& r LLComboBox* combo_box = getChild<LLComboBox>("WaterPresetsCombo"); LLFloaterDayCycle* day_cycle = LLFloaterReg::findTypedInstance<LLFloaterDayCycle>("env_day_cycle"); LLComboBox* key_combo = NULL; - LLMultiSliderCtrl* mult_sldr = NULL; if (day_cycle) { key_combo = day_cycle->getChild<LLComboBox>("WaterKeyPresets"); - mult_sldr = day_cycle->getChild<LLMultiSliderCtrl>("WaterDayCycleKeys"); } std::string name = combo_box->getSelectedValue().asString(); diff --git a/indra/newview/llfloaterwindlight.cpp b/indra/newview/llfloaterwindlight.cpp index ea6fda7303..c1b15c578c 100644 --- a/indra/newview/llfloaterwindlight.cpp +++ b/indra/newview/llfloaterwindlight.cpp @@ -749,12 +749,10 @@ bool LLFloaterWindLight::deleteAlertCallback(const LLSD& notification, const LLS LLComboBox* combo_box = getChild<LLComboBox>("WLPresetsCombo"); LLFloaterDayCycle* day_cycle = LLFloaterReg::findTypedInstance<LLFloaterDayCycle>("env_day_cycle"); LLComboBox* key_combo = NULL; - LLMultiSliderCtrl* mult_sldr = NULL; if (day_cycle) { key_combo = day_cycle->getChild<LLComboBox>("WLKeyPresets"); - mult_sldr = day_cycle->getChild<LLMultiSliderCtrl>("WLDayCycleKeys"); } std::string name(combo_box->getSelectedValue().asString()); diff --git a/indra/newview/llfloaterwindowsize.cpp b/indra/newview/llfloaterwindowsize.cpp new file mode 100644 index 0000000000..5519be6f08 --- /dev/null +++ b/indra/newview/llfloaterwindowsize.cpp @@ -0,0 +1,164 @@ +/** + * @file llfloaterwindowsize.cpp + * + * $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 "llviewerprecompiledheaders.h" + +#include "llfloaterwindowsize.h" + +// Viewer includes +#include "llviewerwindow.h" + +// Linden library includes +#include "llcombobox.h" +#include "llfloater.h" +#include "llfloaterreg.h" +#include "lluictrl.h" + +// System libraries +#include <boost/regex.hpp> + +// Extract from strings of the form "<width> x <height>", e.g. "640 x 480". +bool extractWindowSizeFromString(const std::string& instr, U32 *width, U32 *height) +{ + boost::cmatch what; + // matches (any number)(any non-number)(any number) + const boost::regex expression("([0-9]+)[^0-9]+([0-9]+)"); + if (boost::regex_match(instr.c_str(), what, expression)) + { + *width = atoi(what[1].first); + *height = atoi(what[2].first); + return true; + } + + *width = 0; + *height = 0; + return false; +} + + +///---------------------------------------------------------------------------- +/// Class LLFloaterWindowSize +///---------------------------------------------------------------------------- +class LLFloaterWindowSize +: public LLFloater +{ + friend class LLFloaterReg; +private: + LLFloaterWindowSize(const LLSD& key); + virtual ~LLFloaterWindowSize(); + +public: + /*virtual*/ BOOL postBuild(); + void initWindowSizeControls(); + void onClickSet(); + void onClickCancel(); +}; + + +LLFloaterWindowSize::LLFloaterWindowSize(const LLSD& key) +: LLFloater(key) +{ + //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_window_size.xml"); +} + +LLFloaterWindowSize::~LLFloaterWindowSize() +{ +} + +BOOL LLFloaterWindowSize::postBuild() +{ + center(); + initWindowSizeControls(); + getChild<LLUICtrl>("set_btn")->setCommitCallback( + boost::bind(&LLFloaterWindowSize::onClickSet, this)); + getChild<LLUICtrl>("cancel_btn")->setCommitCallback( + boost::bind(&LLFloaterWindowSize::onClickCancel, this)); + setDefaultBtn("set_btn"); + return TRUE; +} + +void LLFloaterWindowSize::initWindowSizeControls() +{ + LLComboBox* ctrl_window_size = getChild<LLComboBox>("window_size_combo"); + + // Look to see if current window size matches existing window sizes, if so then + // just set the selection value... + const U32 height = gViewerWindow->getWindowHeightRaw(); + const U32 width = gViewerWindow->getWindowWidthRaw(); + for (S32 i=0; i < ctrl_window_size->getItemCount(); i++) + { + U32 height_test = 0; + U32 width_test = 0; + ctrl_window_size->setCurrentByIndex(i); + std::string resolution = ctrl_window_size->getValue().asString(); + if (extractWindowSizeFromString(resolution, &width_test, &height_test)) + { + if ((height_test == height) && (width_test == width)) + { + return; + } + } + } + // ...otherwise, add a new entry with the current window height/width. + LLUIString resolution_label = getString("resolution_format"); + resolution_label.setArg("[RES_X]", llformat("%d", width)); + resolution_label.setArg("[RES_Y]", llformat("%d", height)); + ctrl_window_size->add(resolution_label, ADD_TOP); + ctrl_window_size->setCurrentByIndex(0); +} + +void LLFloaterWindowSize::onClickSet() +{ + LLComboBox* ctrl_window_size = getChild<LLComboBox>("window_size_combo"); + U32 width = 0; + U32 height = 0; + std::string resolution = ctrl_window_size->getValue().asString(); + if (extractWindowSizeFromString(resolution, &width, &height)) + { + LLViewerWindow::movieSize(width, height); + } + closeFloater(); +} + +void LLFloaterWindowSize::onClickCancel() +{ + closeFloater(); +} + +///---------------------------------------------------------------------------- +/// LLFloaterWindowSizeUtil +///---------------------------------------------------------------------------- +void LLFloaterWindowSizeUtil::registerFloater() +{ + LLFloaterReg::add("window_size", "floater_window_size.xml", + &LLFloaterReg::build<LLFloaterWindowSize>); + +} diff --git a/indra/newview/llfloaterwindowsize.h b/indra/newview/llfloaterwindowsize.h new file mode 100644 index 0000000000..fd9d17323a --- /dev/null +++ b/indra/newview/llfloaterwindowsize.h @@ -0,0 +1,41 @@ +/** + * @file llfloaterwindowsize.h + * + * $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$ + */ + +#ifndef LLFLOATERWINDOWSIZE_H +#define LLFLOATERWINDOWSIZE_H + +// Allow user to set the window size for filming tutorials, machinima, etc +namespace LLFloaterWindowSizeUtil +{ + void registerFloater(); +} + +#endif diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index 98f9171237..67c0b530eb 100644 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -47,7 +47,7 @@ #include "llviewercontrol.h" #include "llcommandhandler.h" #include "lldraghandle.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llfloaterreg.h" // getTypedInstance() #include "llfocusmgr.h" #include "llinventorymodel.h" @@ -100,8 +100,6 @@ enum EPanDirection // Values in pixels per region static const F32 ZOOM_MAX = 128.f; -static const F32 SIM_COORD_DEFAULT = 128.f; - //--------------------------------------------------------------------------- // Globals //--------------------------------------------------------------------------- @@ -118,9 +116,12 @@ public: { if (params.size() == 0) { - return false; + // support the secondlife:///app/worldmap SLapp + LLFloaterReg::showInstance("world_map", "center"); + return true; } + // support the secondlife:///app/worldmap/{LOCATION}/{COORDS} SLapp const std::string region_name = params[0].asString(); S32 x = (params.size() > 1) ? params[1].asInteger() : 128; S32 y = (params.size() > 2) ? params[2].asInteger() : 128; @@ -189,7 +190,8 @@ LLFloaterWorldMap::LLFloaterWorldMap(const LLSD& key) mInventory(NULL), mInventoryObserver(NULL), mFriendObserver(NULL), - mCompletingRegionName(""), + mCompletingRegionName(), + mCompletingRegionPos(), mWaitingForTracker(FALSE), mIsClosing(FALSE), mSetToUserPosition(TRUE), @@ -205,7 +207,6 @@ LLFloaterWorldMap::LLFloaterWorldMap(const LLSD& key) mCommitCallbackRegistrar.add("WMap.AvatarCombo", boost::bind(&LLFloaterWorldMap::onAvatarComboCommit, this)); mCommitCallbackRegistrar.add("WMap.Landmark", boost::bind(&LLFloaterWorldMap::onLandmarkComboCommit, this)); mCommitCallbackRegistrar.add("WMap.SearchResult", boost::bind(&LLFloaterWorldMap::onCommitSearchResult, this)); - mCommitCallbackRegistrar.add("WMap.CommitLocation", boost::bind(&LLFloaterWorldMap::onCommitLocation, this)); mCommitCallbackRegistrar.add("WMap.GoHome", boost::bind(&LLFloaterWorldMap::onGoHome, this)); mCommitCallbackRegistrar.add("WMap.Teleport", boost::bind(&LLFloaterWorldMap::onClickTeleportBtn, this)); mCommitCallbackRegistrar.add("WMap.ShowTarget", boost::bind(&LLFloaterWorldMap::onShowTargetBtn, this)); @@ -316,7 +317,7 @@ void LLFloaterWorldMap::onOpen(const LLSD& key) adjustZoomSliderBounds(); // Could be first show - LLFirstUse::useMap(); + //LLFirstUse::useMap(); // Start speculative download of landmarks const LLUUID landmark_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK); @@ -358,9 +359,7 @@ BOOL LLFloaterWorldMap::handleScrollWheel(S32 x, S32 y, S32 clicks) { if (!isMinimized() && isFrontmost()) { - LLRect area; - childGetRect("search_results", area); - if(!area.pointInRect(x, y)) + if(mPanel->pointInView(x, y)) { F32 slider_value = (F32)childGetValue("zoom slider").asReal(); slider_value += ((F32)clicks * -0.3333f); @@ -664,10 +663,6 @@ void LLFloaterWorldMap::updateLocation() S32 agent_y = llround( (F32)fmod( agentPos.mdV[VY], (F64)REGION_WIDTH_METERS ) ); S32 agent_z = llround( (F32)agentPos.mdV[VZ] ); - childSetValue("spin x", LLSD(agent_x) ); - childSetValue("spin y", LLSD(agent_y) ); - childSetValue("spin z", LLSD(agent_z) ); - // Set the current SLURL mSLURL = LLSLURL::buildSLURL(agent_sim_name, agent_x, agent_y, agent_z); } @@ -699,9 +694,6 @@ void LLFloaterWorldMap::updateLocation() F32 region_x = (F32)fmod( pos_global.mdV[VX], (F64)REGION_WIDTH_METERS ); F32 region_y = (F32)fmod( pos_global.mdV[VY], (F64)REGION_WIDTH_METERS ); - childSetValue("spin x", LLSD(region_x) ); - childSetValue("spin y", LLSD(region_y) ); - childSetValue("spin z", LLSD((F32)pos_global.mdV[VZ]) ); // simNameFromPosGlobal can fail, so don't give the user an invalid SLURL if ( gotSimName ) @@ -733,9 +725,11 @@ void LLFloaterWorldMap::trackURL(const std::string& region_name, S32 x_coord, S3 { // fill in UI based on URL gFloaterWorldMap->childSetValue("location", region_name); - childSetValue("spin x", LLSD((F32)x_coord)); - childSetValue("spin y", LLSD((F32)y_coord)); - childSetValue("spin z", LLSD((F32)z_coord)); + + // Save local coords to highlight position after region global + // position is returned. + gFloaterWorldMap->mCompletingRegionPos.set( + (F32)x_coord, (F32)y_coord, (F32)z_coord); // pass sim name to combo box gFloaterWorldMap->mCompletingRegionName = region_name; @@ -792,8 +786,11 @@ void LLFloaterWorldMap::friendsChanged() if(avatar_id.notNull()) { LLCtrlSelectionInterface *iface = childGetSelectionInterface("friend combo"); - if(!iface || !iface->setCurrentByID(avatar_id) || - !t.getBuddyInfo(avatar_id)->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION) || gAgent.isGodlike()) + const LLRelationship* buddy_info = t.getBuddyInfo(avatar_id); + if(!iface || + !iface->setCurrentByID(avatar_id) || + (buddy_info && !buddy_info->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION)) || + gAgent.isGodlike()) { LLTracker::stopTracking(NULL); } @@ -899,18 +896,6 @@ void LLFloaterWorldMap::clearLocationSelection(BOOL clear_ui) { list->operateOnAll(LLCtrlListInterface::OP_DELETE); } - if (!childHasKeyboardFocus("spin x")) - { - childSetValue("spin x", SIM_COORD_DEFAULT); - } - if (!childHasKeyboardFocus("spin y")) - { - childSetValue("spin y", SIM_COORD_DEFAULT); - } - if (!childHasKeyboardFocus("spin z")) - { - childSetValue("spin z", 0); - } LLWorldMap::getInstance()->cancelTracking(); mCompletingRegionName = ""; } @@ -1466,21 +1451,6 @@ void LLFloaterWorldMap::updateSims(bool found_null_sim) } } -void LLFloaterWorldMap::onCommitLocation() -{ - LLTracker::ETrackingStatus tracking_status = LLTracker::getTrackingStatus(); - if ( LLTracker::TRACKING_LOCATION == tracking_status) - { - LLVector3d pos_global = LLTracker::getTrackedPositionGlobal(); - F64 local_x = childGetValue("spin x"); - F64 local_y = childGetValue("spin y"); - F64 local_z = childGetValue("spin z"); - pos_global.mdV[VX] += -fmod(pos_global.mdV[VX], 256.0) + local_x; - pos_global.mdV[VY] += -fmod(pos_global.mdV[VY], 256.0) + local_y; - pos_global.mdV[VZ] = local_z; - trackLocation(pos_global); - } -} void LLFloaterWorldMap::onCommitSearchResult() { @@ -1503,12 +1473,19 @@ void LLFloaterWorldMap::onCommitSearchResult() if (info->isName(sim_name)) { LLVector3d pos_global = info->getGlobalOrigin(); - F64 local_x = childGetValue("spin x"); - F64 local_y = childGetValue("spin y"); - F64 local_z = childGetValue("spin z"); - pos_global.mdV[VX] += local_x; - pos_global.mdV[VY] += local_y; - pos_global.mdV[VZ] = local_z; + + const F64 SIM_COORD_DEFAULT = 128.0; + LLVector3 pos_local(SIM_COORD_DEFAULT, SIM_COORD_DEFAULT, 0.0f); + + // Did this value come from a trackURL() request? + if (!mCompletingRegionPos.isExactlyZero()) + { + pos_local = mCompletingRegionPos; + mCompletingRegionPos.clear(); + } + pos_global.mdV[VX] += (F64)pos_local.mV[VX]; + pos_global.mdV[VY] += (F64)pos_local.mV[VY]; + pos_global.mdV[VZ] = (F64)pos_local.mV[VZ]; childSetValue("location", sim_name); trackLocation(pos_global); diff --git a/indra/newview/llfloaterworldmap.h b/indra/newview/llfloaterworldmap.h index 7feebb583d..00f5e788fb 100644 --- a/indra/newview/llfloaterworldmap.h +++ b/indra/newview/llfloaterworldmap.h @@ -148,7 +148,6 @@ protected: void updateSearchEnabled(); void onLocationFocusChanged( LLFocusableElement* ctrl ); void onLocationCommit(); - void onCommitLocation(); void onCommitSearchResult(); void cacheLandmarkPosition(); @@ -170,6 +169,10 @@ private: LLFriendObserver* mFriendObserver; std::string mCompletingRegionName; + // Local position from trackURL() request, used to select final + // position once region lookup complete. + LLVector3 mCompletingRegionPos; + std::string mLastRegionName; BOOL mWaitingForTracker; diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 474d2ca21f..23f19a38a6 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -78,7 +78,7 @@ ///---------------------------------------------------------------------------- const S32 RENAME_WIDTH_PAD = 4; -const S32 RENAME_HEIGHT_PAD = 2; +const S32 RENAME_HEIGHT_PAD = 1; const S32 AUTO_OPEN_STACK_DEPTH = 16; const S32 MIN_ITEM_WIDTH_VISIBLE = LLFolderViewItem::ICON_WIDTH + LLFolderViewItem::ICON_PAD @@ -195,7 +195,8 @@ LLFolderView::LLFolderView(const Params& p) mCallbackRegistrar(NULL), mParentPanel(p.parent_panel), mUseEllipses(false), - mDraggingOverItem(NULL) + mDraggingOverItem(NULL), + mStatusTextBox(NULL) { LLRect rect = p.rect; LLRect new_rect(rect.mLeft, rect.mBottom + getRect().getHeight(), rect.mLeft + getRect().getWidth(), rect.mBottom); @@ -206,7 +207,10 @@ LLFolderView::LLFolderView(const Params& p) mAutoOpenCandidate = NULL; mAutoOpenTimer.stop(); mKeyboardSelection = FALSE; - mIndentation = -LEFT_INDENTATION; // children start at indentation 0 + const LLFolderViewItem::Params& item_params = + LLUICtrlFactory::getDefaultParams<LLFolderViewItem>(); + S32 indentation = item_params.folder_indentation(); + mIndentation = -indentation; // children start at indentation 0 gIdleCallbacks.addFunction(idle, this); //clear label @@ -218,16 +222,34 @@ LLFolderView::LLFolderView(const Params& p) // Escape is handled by reverting the rename, not commiting it (default behavior) LLLineEditor::Params params; params.name("ren"); - params.rect(getRect()); + params.rect(rect); params.font(getLabelFontForStyle(LLFontGL::NORMAL)); params.max_length_bytes(DB_INV_ITEM_NAME_STR_LEN); params.commit_callback.function(boost::bind(&LLFolderView::commitRename, this, _2)); - params.prevalidate_callback(&LLLineEditor::prevalidateASCIIPrintableNoPipe); + params.prevalidate_callback(&LLTextValidate::validateASCIIPrintableNoPipe); params.commit_on_focus_lost(true); params.visible(false); mRenamer = LLUICtrlFactory::create<LLLineEditor> (params); addChild(mRenamer); + // Textbox + LLTextBox::Params text_p; + LLFontGL* font = getLabelFontForStyle(mLabelStyle); + LLRect new_r = LLRect(rect.mLeft + ICON_PAD, + rect.mTop - TEXT_PAD, + rect.mRight, + rect.mTop - TEXT_PAD - llfloor(font->getLineHeight())); + text_p.rect(new_r); + text_p.name(std::string(p.name)); + text_p.font(font); + text_p.visible(false); + text_p.allow_html(true); + mStatusTextBox = LLUICtrlFactory::create<LLTextBox> (text_p); + mStatusTextBox->setFollowsLeft(); + mStatusTextBox->setFollowsTop(); + //addChild(mStatusTextBox); + + // make the popup menu available LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_inventory.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); if (!menu) @@ -250,6 +272,7 @@ LLFolderView::~LLFolderView( void ) mScrollContainer = NULL; mRenameItem = NULL; mRenamer = NULL; + mStatusTextBox = NULL; if( gEditMenuHandler == this ) { @@ -394,8 +417,13 @@ S32 LLFolderView::arrange( S32* unused_width, S32* unused_height, S32 filter_gen getRoot()->getFilter()->getShowFolderState(); S32 total_width = LEFT_PAD; - S32 running_height = mDebugFilters ? llceil(sSmallFont->getLineHeight()) : 0; + S32 running_height = mDebugFilters ? llceil(LLFontGL::getFontMonospace()->getLineHeight()) : 0; S32 target_height = running_height; + if(!mHasVisibleChildren)// is there any filtered items ? + { + //Nope. We need to display status textbox, let's reserve some place for it + target_height += mStatusTextBox->getTextPixelHeight(); + } S32 parent_item_height = getRect().getHeight(); for (folders_t::iterator iter = mFolders.begin(); @@ -568,6 +596,8 @@ LLFolderViewItem* LLFolderView::getCurSelectedItem( void ) BOOL LLFolderView::setSelection(LLFolderViewItem* selection, BOOL openitem, BOOL take_keyboard_focus) { + mSignalSelectCallback = take_keyboard_focus ? SIGNAL_KEYBOARD_FOCUS : SIGNAL_NO_KEYBOARD_FOCUS; + if( selection == this ) { return FALSE; @@ -595,8 +625,6 @@ BOOL LLFolderView::setSelection(LLFolderViewItem* selection, BOOL openitem, llassert(mSelectedItems.size() <= 1); - mSignalSelectCallback = take_keyboard_focus ? SIGNAL_KEYBOARD_FOCUS : SIGNAL_NO_KEYBOARD_FOCUS; - return rv; } @@ -819,10 +847,11 @@ void LLFolderView::clearSelection() mSelectThisID.setNull(); } -BOOL LLFolderView::getSelectionList(std::set<LLUUID> &selection) +BOOL LLFolderView::getSelectionList(std::set<LLUUID> &selection) const { - selected_items_t::iterator item_it; - for (item_it = mSelectedItems.begin(); item_it != mSelectedItems.end(); ++item_it) + for (selected_items_t::const_iterator item_it = mSelectedItems.begin(); + item_it != mSelectedItems.end(); + ++item_it) { selection.insert((*item_it)->getListener()->getUUID()); } @@ -865,12 +894,12 @@ void LLFolderView::draw() { std::string current_filter_string = llformat("Current Filter: %d, Least Filter: %d, Auto-accept Filter: %d", mFilter->getCurrentGeneration(), mFilter->getMinRequiredGeneration(), mFilter->getMustPassGeneration()); - sSmallFont->renderUTF8(current_filter_string, 0, 2, - getRect().getHeight() - sSmallFont->getLineHeight(), LLColor4(0.5f, 0.5f, 0.8f, 1.f), + LLFontGL::getFontMonospace()->renderUTF8(current_filter_string, 0, 2, + getRect().getHeight() - LLFontGL::getFontMonospace()->getLineHeight(), LLColor4(0.5f, 0.5f, 0.8f, 1.f), LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE ); } - LLFontGL* font = getLabelFontForStyle(mLabelStyle); + //LLFontGL* font = getLabelFontForStyle(mLabelStyle); // if cursor has moved off of me during drag and drop // close all auto opened folders @@ -907,19 +936,23 @@ void LLFolderView::draw() || mFilter->getShowFolderState() == LLInventoryFilter::SHOW_ALL_FOLDERS) { mStatusText.clear(); + mStatusTextBox->setVisible( FALSE ); } else { if (gInventory.backgroundFetchActive() || mCompletedFilterGeneration < mFilter->getMinRequiredGeneration()) { mStatusText = LLTrans::getString("Searching"); - font->renderUTF8(mStatusText, 0, 2, 1, sSearchStatusColor, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE ); + //font->renderUTF8(mStatusText, 0, 2, 1, sSearchStatusColor, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE ); } else { mStatusText = LLTrans::getString(getFilter()->getEmptyLookupMessage()); - font->renderUTF8(mStatusText, 0, 2, 1, sSearchStatusColor, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE ); + //font->renderUTF8(mStatusText, 0, 2, 1, sSearchStatusColor, LLFontGL::LEFT, LLFontGL::TOP, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE ); } + mStatusTextBox->setValue(mStatusText); + mStatusTextBox->setVisible( TRUE ); + } LLFolderViewFolder::draw(); @@ -1268,8 +1301,7 @@ BOOL LLFolderView::canCut() const const LLFolderViewItem* item = *selected_it; const LLFolderViewEventListener* listener = item->getListener(); - // *WARKAROUND: it is too many places where the "isItemRemovable" method should be changed with "const" modifier - if (!listener || !(const_cast<LLFolderViewEventListener*>(listener))->isItemRemovable()) + if (!listener || !listener->isItemRemovable()) { return FALSE; } @@ -1387,6 +1419,7 @@ void LLFolderView::startRenamingSelectedItem( void ) // set focus will fail unless item is visible mRenamer->setFocus( TRUE ); mRenamer->setTopLostCallback(boost::bind(onRenamerLost, _1)); + mRenamer->setFocusLostCallback(boost::bind(onRenamerLost, _1)); gFocusMgr.setTopCtrl( mRenamer ); } } @@ -1503,10 +1536,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(); @@ -1551,6 +1600,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 ); @@ -1580,7 +1636,11 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask ) LLFolderViewItem* parent_folder = last_selected->getParentFolder(); if (!last_selected->isOpen() && parent_folder && parent_folder->getParentFolder()) { - setSelection(parent_folder, FALSE, TRUE); + // Don't change selectin to hidden folder. See EXT-5328. + if (!parent_folder->getHidden()) + { + setSelection(parent_folder, FALSE, TRUE); + } } else { @@ -1881,8 +1941,8 @@ void LLFolderView::scrollToShowItem(LLFolderViewItem* item, const LLRect& constr S32 icon_height = mIcon.isNull() ? 0 : mIcon->getHeight(); S32 label_height = llround(getLabelFontForStyle(mLabelStyle)->getLineHeight()); - // when navigating with keyboard, only move top of folders on screen, otherwise show whole folder - S32 max_height_to_show = mScrollContainer->hasFocus() ? (llmax( icon_height, label_height ) + ICON_PAD) : local_rect.getHeight(); + // when navigating with keyboard, only move top of opened folder on screen, otherwise show whole folder + S32 max_height_to_show = item->isOpen() && mScrollContainer->hasFocus() ? (llmax( icon_height, label_height ) + ICON_PAD) : local_rect.getHeight(); // get portion of item that we want to see... LLRect item_local_rect = LLRect(item->getIndentation(), @@ -2103,6 +2163,15 @@ void LLFolderView::doIdle() LLSelectFirstFilteredItem filter; applyFunctorRecursively(filter); } + + // Open filtered folders for folder views with mAutoSelectOverride=TRUE. + // Used by LLPlacesFolderView. + if (mAutoSelectOverride && !mFilter->getFilterSubString().empty()) + { + LLOpenFilteredFolders filter; + applyFunctorRecursively(filter); + } + scrollToShowSelection(); } @@ -2217,10 +2286,9 @@ void LLFolderView::updateRenamerPosition() { if(mRenameItem) { - LLFontGL* font = getLabelFontForStyle(mLabelStyle); - - S32 x = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD - 1 + mRenameItem->getIndentation(); - S32 y = llfloor(mRenameItem->getRect().getHeight() - font->getLineHeight()-2); + // See also LLFolderViewItem::draw() + S32 x = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + mRenameItem->getIndentation(); + S32 y = mRenameItem->getRect().getHeight() - mRenameItem->getItemHeight() - RENAME_HEIGHT_PAD; mRenameItem->localPointToScreen( x, y, &x, &y ); screenPointToLocal( x, y, &x, &y ); mRenamer->setOrigin( x, y ); @@ -2232,11 +2300,88 @@ void LLFolderView::updateRenamerPosition() } S32 width = llmax(llmin(mRenameItem->getRect().getWidth() - x, scroller_rect.getWidth() - x - getRect().mLeft), MINIMUM_RENAMER_WIDTH); - S32 height = llfloor(font->getLineHeight() + RENAME_HEIGHT_PAD); + S32 height = mRenameItem->getItemHeight() - RENAME_HEIGHT_PAD; mRenamer->reshape( width, height, TRUE ); } } +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 2598af4df4..faf6a9cf23 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -62,6 +62,7 @@ class LLLineEditor; class LLMenuGL; class LLScrollContainer; class LLUICtrl; +class LLTextBox; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Class LLFolderViewFunctor @@ -162,7 +163,7 @@ public: virtual S32 extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items); - virtual BOOL getSelectionList(std::set<LLUUID> &selection); + virtual BOOL getSelectionList(std::set<LLUUID> &selection) const; // make sure if ancestor is selected, descendents are not void sanitizeSelection(); @@ -266,6 +267,8 @@ public: LLPanel* getParentPanel() { return mParentPanel; } // DEBUG only void dumpSelectionInformation(); + + virtual S32 notify(const LLSD& info) ; private: void updateRenamerPosition(); @@ -278,6 +281,9 @@ protected: void finishRenamingItem( void ); void closeRenamer( void ); + + bool selectFirstItem(); + bool selectLastItem(); protected: LLHandle<LLView> mPopupMenuHandle; @@ -322,7 +328,7 @@ protected: LLUUID mSelectThisID; // if non null, select this item - LLPanel* mParentPanel; + LLPanel* mParentPanel; /** * Is used to determine if we need to cut text In LLFolderViewItem to avoid horizontal scroll. @@ -339,6 +345,8 @@ protected: public: static F32 sAutoOpenTime; + LLTextBox* mStatusTextBox; + }; bool sort_item_name(LLFolderViewItem* a, LLFolderViewItem* b); diff --git a/indra/newview/llfoldervieweventlistener.h b/indra/newview/llfoldervieweventlistener.h index 473d0be912..12e100caf4 100644 --- a/indra/newview/llfoldervieweventlistener.h +++ b/indra/newview/llfoldervieweventlistener.h @@ -62,6 +62,7 @@ public: virtual PermissionMask getPermissionMask() const = 0; virtual LLFolderType::EType getPreferredType() const = 0; virtual LLPointer<LLUIImage> getIcon() const = 0; + virtual LLPointer<LLUIImage> getOpenIcon() const { return getIcon(); } virtual LLFontGL::StyleFlags getLabelStyle() const = 0; virtual std::string getLabelSuffix() const = 0; virtual void openItem( void ) = 0; @@ -72,7 +73,8 @@ public: virtual BOOL isItemRenameable() const = 0; virtual BOOL renameItem(const std::string& new_name) = 0; virtual BOOL isItemMovable( void ) const = 0; // Can be moved to another folder - virtual BOOL isItemRemovable( void ) = 0; // Can be destroyed + virtual BOOL isItemRemovable( void ) const = 0; // Can be destroyed + virtual BOOL isItemInTrash( void) const { return FALSE; } // TODO: make into pure virtual. virtual BOOL removeItem() = 0; virtual void removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batch) = 0; virtual void move( LLFolderViewEventListener* parent_listener ) = 0; diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp index 720c2c7b1a..76607e4874 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 @@ -51,11 +50,10 @@ /// Class LLFolderViewItem ///---------------------------------------------------------------------------- +static LLDefaultChildRegistry::Register<LLFolderViewItem> r("folder_view_item"); + // statics std::map<U8, LLFontGL*> LLFolderViewItem::sFonts; // map of styles to fonts -const LLFontGL* LLFolderViewItem::sSmallFont = NULL; -LLUIImagePtr LLFolderViewItem::sArrowImage; -LLUIImagePtr LLFolderViewItem::sBoxImage; // only integers can be initialized in header const F32 LLFolderViewItem::FOLDER_CLOSE_TIME_CONSTANT = 0.02f; @@ -84,33 +82,34 @@ LLFontGL* LLFolderViewItem::getLabelFontForStyle(U8 style) //static void LLFolderViewItem::initClass() { - sSmallFont = LLFontGL::getFontMonospace(); - sArrowImage = LLUI::getUIImage("folder_arrow.tga"); - sBoxImage = LLUI::getUIImage("rounded_square.tga"); } //static void LLFolderViewItem::cleanupClass() { sFonts.clear(); - sArrowImage = NULL; - sBoxImage = NULL; } // NOTE: Optimize this, we call it a *lot* when opening a large inventory LLFolderViewItem::Params::Params() -: icon("icon"), - folder_arrow_image("folder_arrow_image", LLUI::getUIImage("folder_arrow.tga")), - selection_image("selection_image", LLUI::getUIImage("rounded_square.tga")) +: icon(), + icon_open(), + root(), + listener(), + folder_arrow_image("folder_arrow_image"), + folder_indentation("folder_indentation"), + selection_image("selection_image"), + item_height("item_height"), + item_top_pad("item_top_pad"), + creation_date() { mouse_opaque(true); follows.flags(FOLLOWS_LEFT|FOLLOWS_TOP|FOLLOWS_RIGHT); - // JAMESDEBUG tab_stop(false); } // Default constructor -LLFolderViewItem::LLFolderViewItem(LLFolderViewItem::Params p) +LLFolderViewItem::LLFolderViewItem(const LLFolderViewItem::Params& p) : LLView(p), mLabelWidth(0), mLabelWidthDirty(false), @@ -121,6 +120,7 @@ LLFolderViewItem::LLFolderViewItem(LLFolderViewItem::Params p) mLabelStyle( LLFontGL::NORMAL ), mHasVisibleChildren(FALSE), mIndentation(0), + mItemHeight(p.item_height), mNumDescendantsSelected(0), mPassedFilter(FALSE), mLastFilterGeneration(-1), @@ -134,8 +134,6 @@ LLFolderViewItem::LLFolderViewItem(LLFolderViewItem::Params p) mIcon(p.icon), mIconOpen(p.icon_open), mListener(p.listener), - mArrowImage(p.folder_arrow_image), - mBoxImage(p.selection_image), mHidden(false), mShowLoadStatus(false) { @@ -392,10 +390,12 @@ BOOL LLFolderViewItem::addToFolder(LLFolderViewFolder* folder, LLFolderView* roo // makes sure that this view and it's children are the right size. S32 LLFolderViewItem::arrange( S32* width, S32* height, S32 filter_generation) { + const Params& p = LLUICtrlFactory::getDefaultParams<LLFolderViewItem>(); + S32 indentation = p.folder_indentation(); + // Only indent deeper items in hierarchy mIndentation = (getParentFolder() - && getParentFolder()->getParentFolder() - && getParentFolder()->getParentFolder()->getParentFolder()) - ? mParentFolder->getIndentation() + LEFT_INDENTATION + && getParentFolder()->getParentFolder() ) + ? mParentFolder->getIndentation() + indentation : 0; if (mLabelWidthDirty) { @@ -420,9 +420,10 @@ S32 LLFolderViewItem::getItemHeight() { if (mHidden) return 0; - S32 icon_height = mIcon->getHeight(); - S32 label_height = llround(getLabelFontForStyle(mLabelStyle)->getLineHeight()); - return llmax( icon_height, label_height ) + ICON_PAD; + //S32 icon_height = mIcon->getHeight(); + //S32 label_height = llround(getLabelFontForStyle(mLabelStyle)->getLineHeight()); + //return llmax( icon_height, label_height ) + ICON_PAD; + return mItemHeight; } void LLFolderViewItem::filter( LLInventoryFilter& filter) @@ -828,11 +829,16 @@ void LLFolderViewItem::draw() static LLUIColor sFgColor = LLUIColorTable::instance().getColor("MenuItemEnabledColor", DEFAULT_WHITE); static LLUIColor sHighlightBgColor = LLUIColorTable::instance().getColor("MenuItemHighlightBgColor", DEFAULT_WHITE); static LLUIColor sHighlightFgColor = LLUIColorTable::instance().getColor("MenuItemHighlightFgColor", DEFAULT_WHITE); + static LLUIColor sFocusOutlineColor = + LLUIColorTable::instance().getColor("InventoryFocusOutlineColor", DEFAULT_WHITE); static LLUIColor sFilterBGColor = LLUIColorTable::instance().getColor("FilterBackgroundColor", DEFAULT_WHITE); static LLUIColor sFilterTextColor = LLUIColorTable::instance().getColor("FilterTextColor", DEFAULT_WHITE); static LLUIColor sSuffixColor = LLUIColorTable::instance().getColor("InventoryItemSuffixColor", DEFAULT_WHITE); static LLUIColor sSearchStatusColor = LLUIColorTable::instance().getColor("InventorySearchStatusColor", DEFAULT_WHITE); + const Params& default_params = LLUICtrlFactory::getDefaultParams<LLFolderViewItem>(); + const S32 TOP_PAD = default_params.item_top_pad; + bool possibly_has_children = false; bool up_to_date = mListener && mListener->isUpToDate(); if((up_to_date && hasVisibleChildren() ) || // we fetched our children and some of them have passed the filter... @@ -842,13 +848,13 @@ void LLFolderViewItem::draw() } if(/*mControlLabel[0] != '\0' && */possibly_has_children) { - if (sArrowImage) - { - gl_draw_scaled_rotated_image(mIndentation, getRect().getHeight() - ARROW_SIZE - TEXT_PAD, - ARROW_SIZE, ARROW_SIZE, mControlLabelRotation, sArrowImage->getImage(), sFgColor); - } + LLUIImage* arrow_image = default_params.folder_arrow_image; + gl_draw_scaled_rotated_image( + mIndentation, getRect().getHeight() - ARROW_SIZE - TEXT_PAD - TOP_PAD, + ARROW_SIZE, ARROW_SIZE, mControlLabelRotation, arrow_image->getImage(), sFgColor); } + // See also LLFolderView::updateRenamerPosition() F32 text_left = (F32)(ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + mIndentation); LLFontGL* font = getLabelFontForStyle(mLabelStyle); @@ -856,6 +862,10 @@ void LLFolderViewItem::draw() // If we have keyboard focus, draw selection filled BOOL show_context = getRoot()->getShowSelectionContext(); BOOL filled = show_context || (getRoot()->getParentPanel()->hasFocus()); + const S32 FOCUS_LEFT = 1; + S32 focus_top = getRect().getHeight(); + S32 focus_bottom = getRect().getHeight() - mItemHeight; + bool folder_open = (getRect().getHeight() > mItemHeight + 4); // always render "current" item, only render other selected items if // mShowSingleSelection is FALSE @@ -863,7 +873,6 @@ void LLFolderViewItem::draw() { gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); LLColor4 bg_color = sHighlightBgColor; - //const S32 TRAILING_PAD = 5; // It just looks better with this. if (!mIsCurSelection) { // do time-based fade of extra objects @@ -881,35 +890,35 @@ void LLFolderViewItem::draw() } gl_rect_2d( - 0, - getRect().getHeight(), + FOCUS_LEFT, + focus_top, getRect().getWidth() - 2, - llfloor(getRect().getHeight() - font->getLineHeight() - ICON_PAD), + focus_bottom, bg_color, filled); if (mIsCurSelection) { gl_rect_2d( - 0, - getRect().getHeight(), + FOCUS_LEFT, + focus_top, getRect().getWidth() - 2, - llfloor(getRect().getHeight() - font->getLineHeight() - ICON_PAD), - sHighlightFgColor, FALSE); + focus_bottom, + sFocusOutlineColor, FALSE); } - if (getRect().getHeight() > llround(font->getLineHeight()) + ICON_PAD + 4) + if (folder_open) { gl_rect_2d( - 0, - llfloor(getRect().getHeight() - font->getLineHeight() - ICON_PAD) - 4, + FOCUS_LEFT, + focus_bottom + 1, // overlap with bottom edge of above rect getRect().getWidth() - 2, - 2, - sHighlightFgColor, FALSE); + 0, + sFocusOutlineColor, FALSE); if (show_context) { gl_rect_2d( - 0, - llfloor(getRect().getHeight() - font->getLineHeight() - ICON_PAD) - 4, + FOCUS_LEFT, + focus_bottom + 1, getRect().getWidth() - 2, - 2, + 0, sHighlightBgColor, TRUE); } } @@ -918,32 +927,32 @@ void LLFolderViewItem::draw() { gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); gl_rect_2d( - 0, - getRect().getHeight(), + FOCUS_LEFT, + focus_top, getRect().getWidth() - 2, - llfloor(getRect().getHeight() - font->getLineHeight() - ICON_PAD), + focus_bottom, sHighlightBgColor, FALSE); - - if (getRect().getHeight() > llround(font->getLineHeight()) + ICON_PAD + 2) + if (folder_open) { gl_rect_2d( - 0, - llfloor(getRect().getHeight() - font->getLineHeight() - ICON_PAD) - 2, + FOCUS_LEFT, + focus_bottom + 1, // overlap with bottom edge of above rect getRect().getWidth() - 2, - 2, + 0, sHighlightBgColor, FALSE); } mDragAndDropTarget = FALSE; } + S32 icon_x = mIndentation + ARROW_SIZE + TEXT_PAD; // First case is used for open folders if (!mIconOpen.isNull() && (llabs(mControlLabelRotation) > 80)) { - mIconOpen->draw(mIndentation + ARROW_SIZE + TEXT_PAD, getRect().getHeight() - mIcon->getHeight()); + mIconOpen->draw(icon_x, getRect().getHeight() - mIconOpen->getHeight() - TOP_PAD + 1); } else if(mIcon) { - mIcon->draw(mIndentation + ARROW_SIZE + TEXT_PAD, getRect().getHeight() - mIcon->getHeight()); + mIcon->draw(icon_x, getRect().getHeight() - mIcon->getHeight() - TOP_PAD + 1); } if (!mLabel.empty()) @@ -952,7 +961,7 @@ void LLFolderViewItem::draw() BOOL debug_filters = getRoot()->getDebugFilters(); LLColor4 color = ( (mIsSelected && filled) ? sHighlightFgColor : sFgColor ); F32 right_x; - F32 y = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD; + F32 y = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD - (F32)TOP_PAD; if (debug_filters) { @@ -962,7 +971,8 @@ void LLFolderViewItem::draw() } LLColor4 filter_color = mLastFilterGeneration >= getRoot()->getFilter()->getCurrentGeneration() ? LLColor4(0.5f, 0.8f, 0.5f, 1.f) : LLColor4(0.8f, 0.5f, 0.5f, 1.f); - sSmallFont->renderUTF8(mStatusText, 0, text_left, y, filter_color, + LLFontGL::getFontMonospace()->renderUTF8( + mStatusText, 0, text_left, y, filter_color, LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, &right_x, FALSE ); text_left = right_x; @@ -1003,7 +1013,7 @@ void LLFolderViewItem::draw() S32_MAX, S32_MAX, &right_x, FALSE ); } - if (sBoxImage.notNull() && mStringMatchOffset != std::string::npos) + if (mStringMatchOffset != std::string::npos) { // don't draw backgrounds for zero-length strings S32 filter_string_length = getRoot()->getFilterSubString().size(); @@ -1012,14 +1022,15 @@ void LLFolderViewItem::draw() std::string combined_string = mLabel + mLabelSuffix; S32 left = llround(text_left) + font->getWidth(combined_string, 0, mStringMatchOffset) - 1; S32 right = left + font->getWidth(combined_string, mStringMatchOffset, filter_string_length) + 2; - S32 bottom = llfloor(getRect().getHeight() - font->getLineHeight() - 3); - S32 top = getRect().getHeight(); - + S32 bottom = llfloor(getRect().getHeight() - font->getLineHeight() - 3 - TOP_PAD); + S32 top = getRect().getHeight() - TOP_PAD; + + LLUIImage* box_image = default_params.selection_image; LLRect box_rect(left, top, right, bottom); - sBoxImage->draw(box_rect, sFilterBGColor); + box_image->draw(box_rect, sFilterBGColor); F32 match_string_left = text_left + font->getWidthF32(combined_string, 0, mStringMatchOffset); - F32 y = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD; - font->renderUTF8( combined_string, mStringMatchOffset, match_string_left, y, + F32 yy = (F32)getRect().getHeight() - font->getLineHeight() - (F32)TEXT_PAD - (F32)TOP_PAD; + font->renderUTF8( combined_string, mStringMatchOffset, match_string_left, yy, sFilterTextColor, LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, filter_string_length, S32_MAX, &right_x, FALSE ); } @@ -1328,10 +1339,6 @@ void LLFolderViewFolder::filter( LLInventoryFilter& filter) if (folder->getFiltered() || folder->hasFilteredDescendants(filter.getMinRequiredGeneration())) { mMostFilteredDescendantGeneration = filter_generation; - if (getRoot()->needsAutoSelect() && autoopen_folders) - { - folder->setOpenArrangeRecursively(TRUE); - } } // just skip it, it has already been filtered continue; @@ -1848,10 +1855,9 @@ EInventorySortGroup LLFolderViewFolder::getSortGroup() const return SG_TRASH_FOLDER; } - // Folders that can't be moved are 'system' folders. if( mListener ) { - if( !(mListener->isItemMovable()) ) + if(LLFolderType::lookupIsProtectedType(mListener->getPreferredType())) { return SG_SYSTEM_FOLDER; } @@ -2529,18 +2535,20 @@ 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 - S32 a_sort = (static_cast<const LLItemBridge*>(a->getListener()))->getItem()->getSortField(); - S32 b_sort = (static_cast<const LLItemBridge*>(b->getListener()))->getItem()->getSortField(); + LLViewerInventoryItem* aitem = (static_cast<const LLItemBridge*>(a->getListener()))->getItem(); + LLViewerInventoryItem* bitem = (static_cast<const LLItemBridge*>(b->getListener()))->getItem(); + if (!aitem || !bitem) + return false; + S32 a_sort = aitem->getSortField(); + S32 b_sort = bitem->getSortField(); return a_sort < b_sort; } } diff --git a/indra/newview/llfolderviewitem.h b/indra/newview/llfolderviewitem.h index 21e24c2a4d..be8e73a5a9 100644 --- a/indra/newview/llfolderviewitem.h +++ b/indra/newview/llfolderviewitem.h @@ -93,7 +93,6 @@ public: static void initClass(); static void cleanupClass(); - // jamesdebug was LLUICtrl::Params struct Params : public LLInitParam::Block<Params, LLView::Params> { Optional<LLUIImage*> icon; @@ -102,7 +101,10 @@ public: Optional<LLFolderViewEventListener*> listener; Optional<LLUIImage*> folder_arrow_image; + Optional<S32> folder_indentation; // pixels Optional<LLUIImage*> selection_image; + Optional<S32> item_height; // pixels + Optional<S32> item_top_pad; // pixels Optional<S32> creation_date; //UTC seconds @@ -111,7 +113,7 @@ public: // layout constants static const S32 LEFT_PAD = 5; - static const S32 LEFT_INDENTATION = 2; + // LEFT_INDENTATION is set via folder_indentation above static const S32 ICON_PAD = 2; static const S32 ICON_WIDTH = 16; static const S32 TEXT_PAD = 1; @@ -128,11 +130,7 @@ protected: friend class LLUICtrlFactory; friend class LLFolderViewEventListener; - LLFolderViewItem(Params p = LLFolderViewItem::Params()); - - static const LLFontGL* sSmallFont; - static LLUIImagePtr sArrowImage; - static LLUIImagePtr sBoxImage; + LLFolderViewItem(const Params& p); std::string mLabel; std::string mSearchableLabel; @@ -151,6 +149,7 @@ protected: LLUIImagePtr mIconOpen; BOOL mHasVisibleChildren; S32 mIndentation; + S32 mItemHeight; S32 mNumDescendantsSelected; BOOL mPassedFilter; S32 mLastFilterGeneration; @@ -158,8 +157,6 @@ protected: F32 mControlLabelRotation; LLFolderView* mRoot; BOOL mDragAndDropTarget; - LLUIImagePtr mArrowImage; - LLUIImagePtr mBoxImage; BOOL mIsLoading; LLTimer mTimeSinceRequestStart; bool mHidden; @@ -238,7 +235,7 @@ public: virtual void recursiveDeselect(BOOL deselect_self); // gets multiple-element selection - virtual BOOL getSelectionList(std::set<LLUUID> &selection){return TRUE;} + virtual BOOL getSelectionList(std::set<LLUUID> &selection) const {return TRUE;} // Returns true is this object and all of its children can be removed (deleted by user) virtual BOOL isRemovable(); @@ -305,7 +302,7 @@ public: // Show children (unfortunate that this is called "open") virtual void setOpen(BOOL open = TRUE) {}; - virtual BOOL isOpen() { return FALSE; } + virtual BOOL isOpen() const { return FALSE; } virtual LLFolderView* getRoot(); BOOL isDescendantOf( const LLFolderViewFolder* potential_ancestor ); @@ -500,7 +497,7 @@ public: virtual void setOpenArrangeRecursively(BOOL openitem, ERecurseType recurse = RECURSE_NO); // Get the current state of the folder. - virtual BOOL isOpen() { return mIsOpen; } + virtual BOOL isOpen() const { return mIsOpen; } // special case if an object is dropped on the child. BOOL handleDragAndDropFromChild(MASK mask, diff --git a/indra/newview/llgesturemgr.cpp b/indra/newview/llgesturemgr.cpp index df7aa9eabf..0ba7bdf613 100644 --- a/indra/newview/llgesturemgr.cpp +++ b/indra/newview/llgesturemgr.cpp @@ -98,6 +98,41 @@ void LLGestureManager::init() // TODO } +void LLGestureManager::changed(U32 mask) +{ + LLInventoryFetchObserver::changed(mask); + + if (mask & LLInventoryObserver::GESTURE) + { + // If there was a gesture label changed, update all the names in the + // active gestures and then notify observers + if (mask & LLInventoryObserver::LABEL) + { + for(item_map_t::iterator it = mActive.begin(); it != mActive.end(); ++it) + { + if(it->second) + { + LLViewerInventoryItem* item = gInventory.getItem(it->first); + if(item) + { + it->second->mName = item->getName(); + } + } + } + notifyObservers(); + } + // If there was a gesture added or removed notify observers + // STRUCTURE denotes that the inventory item has been moved + // In the case of deleting gesture, it is moved to the trash + else if(mask & LLInventoryObserver::ADD || + mask & LLInventoryObserver::REMOVE || + mask & LLInventoryObserver::STRUCTURE) + { + notifyObservers(); + } + } +} + // Use this version when you have the item_id but not the asset_id, // and you KNOW the inventory is loaded. @@ -417,6 +452,16 @@ BOOL LLGestureManager::isGesturePlaying(const LLUUID& item_id) return gesture->mPlaying; } +BOOL LLGestureManager::isGesturePlaying(LLMultiGesture* gesture) +{ + if(!gesture) + { + return FALSE; + } + + return gesture->mPlaying; +} + void LLGestureManager::replaceGesture(const LLUUID& item_id, LLMultiGesture* new_gesture, const LLUUID& asset_id) { const LLUUID& base_item_id = get_linked_uuid(item_id); diff --git a/indra/newview/llgesturemgr.h b/indra/newview/llgesturemgr.h index e80eea9ae9..3dd184ddc7 100644 --- a/indra/newview/llgesturemgr.h +++ b/indra/newview/llgesturemgr.h @@ -103,6 +103,8 @@ public: BOOL isGesturePlaying(const LLUUID& item_id); + BOOL isGesturePlaying(LLMultiGesture* gesture); + const item_map_t& getActiveGestures() const { return mActive; } // Force a gesture to be played, for example, if it is being // previewed. @@ -138,6 +140,9 @@ public: void removeObserver(LLGestureManagerObserver* observer); void notifyObservers(); + // Overriding so we can update active gesture names and notify observers + void changed(U32 mask); + BOOL matchPrefix(const std::string& in_str, std::string* out_str); // Copy item ids into the vector diff --git a/indra/newview/llglsandbox.cpp b/indra/newview/llglsandbox.cpp index 750a9d478f..8569e208eb 100644 --- a/indra/newview/llglsandbox.cpp +++ b/indra/newview/llglsandbox.cpp @@ -897,19 +897,21 @@ void LLViewerObjectList::renderObjectBeacons() S32 last_line_width = -1; // gGL.begin(LLRender::LINES); // Always happens in (line_width != last_line_width) - for (S32 i = 0; i < mDebugBeacons.count(); i++) + BOOL flush = FALSE; + for (std::vector<LLDebugBeacon>::iterator iter = mDebugBeacons.begin(); iter != mDebugBeacons.end(); ++iter) { - const LLDebugBeacon &debug_beacon = mDebugBeacons[i]; + const LLDebugBeacon &debug_beacon = *iter; LLColor4 color = debug_beacon.mColor; color.mV[3] *= 0.25f; S32 line_width = debug_beacon.mLineWidth; if (line_width != last_line_width) { - if (i > 0) + if (flush) { gGL.end(); - gGL.flush(); } + flush = TRUE; + gGL.flush(); glLineWidth( (F32)line_width ); last_line_width = line_width; gGL.begin(LLRender::LINES); @@ -936,18 +938,20 @@ void LLViewerObjectList::renderObjectBeacons() S32 last_line_width = -1; // gGL.begin(LLRender::LINES); // Always happens in (line_width != last_line_width) - for (S32 i = 0; i < mDebugBeacons.count(); i++) + BOOL flush = FALSE; + for (std::vector<LLDebugBeacon>::iterator iter = mDebugBeacons.begin(); iter != mDebugBeacons.end(); ++iter) { - const LLDebugBeacon &debug_beacon = mDebugBeacons[i]; + const LLDebugBeacon &debug_beacon = *iter; S32 line_width = debug_beacon.mLineWidth; if (line_width != last_line_width) { - if (i > 0) + if (flush) { gGL.end(); - gGL.flush(); } + flush = TRUE; + gGL.flush(); glLineWidth( (F32)line_width ); last_line_width = line_width; gGL.begin(LLRender::LINES); @@ -969,9 +973,9 @@ void LLViewerObjectList::renderObjectBeacons() gGL.flush(); glLineWidth(1.f); - for (S32 i = 0; i < mDebugBeacons.count(); i++) + for (std::vector<LLDebugBeacon>::iterator iter = mDebugBeacons.begin(); iter != mDebugBeacons.end(); ++iter) { - LLDebugBeacon &debug_beacon = mDebugBeacons[i]; + LLDebugBeacon &debug_beacon = *iter; if (debug_beacon.mString == "") { continue; diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp index 7dd8ea694e..00e2365ffd 100644 --- a/indra/newview/llgroupactions.cpp +++ b/indra/newview/llgroupactions.cpp @@ -75,11 +75,12 @@ public: 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; @@ -146,6 +147,12 @@ void LLGroupActions::startCall(const LLUUID& group_id) // static void LLGroupActions::join(const LLUUID& group_id) { + if (!gAgent.canJoinGroups()) + { + LLNotificationsUtil::add("JoinedTooManyGroups"); + return; + } + LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(group_id); @@ -154,12 +161,17 @@ void LLGroupActions::join(const LLUUID& group_id) S32 cost = gdatap->mMembershipFee; LLSD args; args["COST"] = llformat("%d", cost); + args["NAME"] = gdatap->mName; LLSD payload; payload["group_id"] = group_id; if (can_afford_transaction(cost)) { - LLNotificationsUtil::add("JoinGroupCanAfford", args, payload, onJoinGroup); + if(cost > 0) + LLNotificationsUtil::add("JoinGroupCanAfford", args, payload, onJoinGroup); + else + LLNotificationsUtil::add("JoinGroupNoCost", args, payload, onJoinGroup); + } else { @@ -226,7 +238,9 @@ void LLGroupActions::activate(const LLUUID& group_id) static bool isGroupUIVisible() { - LLPanel* panel = LLSideTray::getInstance()->findChild<LLPanel>("panel_group_info_sidetray"); + static LLPanel* panel = 0; + if(!panel) + panel = LLSideTray::getInstance()->findChild<LLPanel>("panel_group_info_sidetray"); if(!panel) return false; return panel->isInVisibleChain(); diff --git a/indra/newview/llgroupiconctrl.cpp b/indra/newview/llgroupiconctrl.cpp index 0b03d49cbc..5760242bc8 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()) diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp index 3ca459a403..bcfb516b81 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; @@ -71,6 +72,8 @@ public: static const LLGroupComparator GROUP_COMPARATOR; LLGroupList::Params::Params() +: no_groups_msg("no_groups_msg") +, no_filtered_groups_msg("no_filtered_groups_msg") { } @@ -78,15 +81,14 @@ 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"); 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); @@ -157,6 +159,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) @@ -172,7 +186,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); @@ -210,7 +225,6 @@ void LLGroupList::addNewItem(const LLUUID& id, const std::string& name, const LL item->setGroupID(id); item->setName(name, mNameFilter); item->setGroupIconID(icon_id); -// item->setContextMenu(mContextMenu); item->childSetVisible("info_btn", false); item->childSetVisible("profile_btn", false); @@ -268,8 +282,12 @@ bool LLGroupList::onContextMenuItemEnable(const LLSD& userdata) LLUUID selected_group_id = getSelectedUUID(); bool real_group_selected = selected_group_id.notNull(); // a "real" (not "none") group is selected + // each group including "none" can be activated if (userdata.asString() == "activate") - return real_group_selected && gAgent.getGroupID() != selected_group_id; + return gAgent.getGroupID() != selected_group_id; + + if (userdata.asString() == "call") + return real_group_selected && LLVoiceClient::voiceEnabled()&&gVoiceClient->voiceWorking(); return real_group_selected; } @@ -283,7 +301,6 @@ LLGroupListItem::LLGroupListItem() mGroupIcon(NULL), mGroupNameBox(NULL), mInfoBtn(NULL), -//mContextMenu(NULL), //TODO: mGroupID(LLUUID::null) { LLUICtrlFactory::getInstance()->buildPanel(this, "panel_group_list_item.xml"); diff --git a/indra/newview/llgrouplist.h b/indra/newview/llgrouplist.h index f7afe0c0b2..f3ac676edd 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 @@ private: bool mShowIcons; bool mDirty; std::string mNameFilter; + std::string mNoFilteredGroupsMsg; + std::string mNoGroupsMsg; }; class LLButton; diff --git a/indra/newview/llgroupmgr.cpp b/indra/newview/llgroupmgr.cpp index af58e81ca4..aeac3841f9 100644 --- a/indra/newview/llgroupmgr.cpp +++ b/indra/newview/llgroupmgr.cpp @@ -56,6 +56,16 @@ #include "lluictrlfactory.h" #include <boost/regex.hpp> +#if LL_MSVC +// disable boost::lexical_cast warning +#pragma warning (disable:4702) +#endif + +#include <boost/lexical_cast.hpp> + +#if LL_MSVC +#pragma warning(pop) // Restore all warnings to the previous state +#endif const U32 MAX_CACHED_GROUPS = 10; @@ -677,9 +687,12 @@ void LLGroupMgrGroupData::sendRoleChanges() break; } case RC_UPDATE_ALL: + // fall through case RC_UPDATE_POWERS: need_power_recalc = true; + // fall through case RC_UPDATE_DATA: + // fall through default: { LLGroupRoleData* group_role_data = (*role_it).second; @@ -762,6 +775,14 @@ void LLGroupMgr::addObserver(LLGroupMgrObserver* observer) mObservers.insert(std::pair<LLUUID, LLGroupMgrObserver*>(observer->getID(), observer)); } +void LLGroupMgr::addObserver(const LLUUID& group_id, LLParticularGroupObserver* observer) +{ + if(group_id.notNull() && observer) + { + mParticularObservers[group_id].insert(observer); + } +} + void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer) { if (!observer) @@ -784,6 +805,23 @@ void LLGroupMgr::removeObserver(LLGroupMgrObserver* observer) } } +void LLGroupMgr::removeObserver(const LLUUID& group_id, LLParticularGroupObserver* 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); @@ -805,12 +843,13 @@ static void formatDateString(std::string &date_string) const regex expression("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})"); if (regex_match(date_string.c_str(), result, expression)) { - std::string year = result[3]; - std::string month = result[1]; - std::string day = result[2]; + // convert matches to integers so that we can pad them with zeroes on Linux + S32 year = boost::lexical_cast<S32>(result[3]); + S32 month = boost::lexical_cast<S32>(result[1]); + S32 day = boost::lexical_cast<S32>(result[2]); // ISO 8601 date format - date_string = llformat("%02s/%02s/%04s", month.c_str(), day.c_str(), year.c_str()); + date_string = llformat("%04d/%02d/%02d", year, month, day); } } @@ -1325,6 +1364,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 +1376,18 @@ void LLGroupMgr::notifyObservers(LLGroupChange gc) oi->second->changed(gc); } gi->second->mChanged = FALSE; + + + // notify LLParticularGroupObserver + 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); + } } } } @@ -1670,17 +1722,21 @@ 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; 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; + if (ejected_member_id == gAgent.getID()) continue; // Make sure they are in the group, and we need the member data - LLGroupMgrGroupData::member_list_t::iterator mit = group_datap->mMembers.find(*it); + LLGroupMgrGroupData::member_list_t::iterator mit = group_datap->mMembers.find(ejected_member_id); if (mit != group_datap->mMembers.end()) { // Add them to the message @@ -1696,7 +1752,7 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, } msg->nextBlock("EjectData"); - msg->addUUID("EjecteeID",(*it)); + msg->addUUID("EjecteeID",ejected_member_id); if (msg->isSendFull()) { @@ -1704,17 +1760,23 @@ void LLGroupMgr::sendGroupMemberEjects(const LLUUID& group_id, start_message = true; } + LLGroupMemberData* member_data = (*mit).second; + // Clean up groupmgr - for (LLGroupMemberData::role_list_t::iterator rit = (*mit).second->roleBegin(); - rit != (*mit).second->roleEnd(); ++rit) + for (LLGroupMemberData::role_list_t::iterator rit = member_data->roleBegin(); + rit != member_data->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); + + group_datap->mMembers.erase(ejected_member_id); + + // member_data was introduced and is used here instead of (*mit).second to avoid crash because of invalid iterator + // It becomes invalid after line with erase above. EXT-4778 + delete member_data; } } diff --git a/indra/newview/llgroupmgr.h b/indra/newview/llgroupmgr.h index 487fdd4c5b..2c86de8b97 100644 --- a/indra/newview/llgroupmgr.h +++ b/indra/newview/llgroupmgr.h @@ -53,6 +53,13 @@ protected: LLUUID mID; }; +class LLParticularGroupObserver +{ +public: + virtual ~LLParticularGroupObserver(){} + virtual void changed(const LLUUID& group_id, LLGroupChange gc) = 0; +}; + class LLGroupRoleData; class LLGroupMemberData @@ -306,7 +313,9 @@ public: ~LLGroupMgr(); void addObserver(LLGroupMgrObserver* observer); + void addObserver(const LLUUID& group_id, LLParticularGroupObserver* observer); void removeObserver(LLGroupMgrObserver* observer); + void removeObserver(const LLUUID& group_id, LLParticularGroupObserver* observer); LLGroupMgrGroupData* getGroupData(const LLUUID& id); void sendGroupPropertiesRequest(const LLUUID& group_id); @@ -355,13 +364,19 @@ public: 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<LLParticularGroupObserver*> observer_set_t; + typedef std::map<LLUUID,observer_set_t> observer_map_t; + observer_map_t mParticularObservers; }; diff --git a/indra/newview/llhudrender.cpp b/indra/newview/llhudrender.cpp index a02dc3355b..325c9c260c 100644 --- a/indra/newview/llhudrender.cpp +++ b/indra/newview/llhudrender.cpp @@ -121,24 +121,24 @@ void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent, glMatrixMode(GL_PROJECTION); glPushMatrix(); glMatrixMode(GL_MODELVIEW); - + gGL.pushMatrix(); LLUI::pushMatrix(); gl_state_for_2d(world_view_rect.getWidth(), world_view_rect.getHeight()); gViewerWindow->setup3DViewport(); - //gViewerWindow->setup2DRender(); - + winX -= world_view_rect.mLeft; winY -= world_view_rect.mBottom; LLUI::loadIdentity(); + glLoadIdentity(); LLUI::translate((F32) winX*1.0f/LLFontGL::sScaleX, (F32) winY*1.0f/(LLFontGL::sScaleY), -(((F32) winZ*2.f)-1.f)); - //glRotatef(angle * RAD_TO_DEG, axis.mV[VX], axis.mV[VY], axis.mV[VZ]); - //glScalef(right_scale, up_scale, 1.f); F32 right_x; font.render(wstr, 0, 0, 0, color, LLFontGL::LEFT, LLFontGL::BASELINE, style, shadow, wstr.length(), 1000, &right_x); + LLUI::popMatrix(); - + gGL.popMatrix(); + glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); diff --git a/indra/newview/llhudtext.cpp b/indra/newview/llhudtext.cpp index 0b5da40be4..8d1d27444b 100644 --- a/indra/newview/llhudtext.cpp +++ b/indra/newview/llhudtext.cpp @@ -287,7 +287,7 @@ void LLHUDText::renderText(BOOL for_select) mOffsetY = lltrunc(mHeight * ((mVertAlignment == ALIGN_VERT_CENTER) ? 0.5f : 1.f)); // *TODO: cache this image - LLUIImagePtr imagep = LLUI::getUIImage("rounded_square.tga"); + LLUIImagePtr imagep = LLUI::getUIImage("Rounded_Square"); // *TODO: make this a per-text setting LLColor4 bg_color = LLUIColorTable::instance().getColor("BackgroundChatColor"); @@ -555,7 +555,7 @@ void LLHUDText::renderText(BOOL for_select) } } /// Reset the default color to white. The renderer expects this to be the default. - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + gGL.color4f(1.0f, 1.0f, 1.0f, 1.0f); if (for_select) { gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE); @@ -606,7 +606,7 @@ void LLHUDText::addLine(const LLWString &wstr, const LLColor4& color, const LLFo U32 line_length = 0; do { - S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wline.length(), TRUE); + S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wline.length(), LLFontGL::WORD_BOUNDARY_IF_POSSIBLE); mTextSegments.push_back(LLHUDTextSegment(iter->substr(line_length, segment_length), style, color)); line_length += segment_length; } @@ -642,7 +642,7 @@ void LLHUDText::setLabel(const LLWString &wlabel) U32 line_length = 0; do { - S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wstr.length(), TRUE); + S32 segment_length = mFontp->maxDrawableChars(iter->substr(line_length).c_str(), mUseBubble ? HUD_TEXT_MAX_WIDTH : HUD_TEXT_MAX_WIDTH_NO_BUBBLE, wstr.length(), LLFontGL::WORD_BOUNDARY_IF_POSSIBLE); mLabelSegments.push_back(LLHUDTextSegment(iter->substr(line_length, segment_length), LLFontGL::NORMAL, mColor)); line_length += segment_length; } diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 259f629bdd..8cdc50eb70 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -42,7 +42,6 @@ #include "llbottomtray.h" #include "llchannelmanager.h" #include "llchiclet.h" -#include "llfloaterchat.h" #include "llfloaterreg.h" #include "llimfloatercontainer.h" // to replace separate IM Floaters with multifloater container #include "lllayoutstack.h" @@ -59,6 +58,7 @@ #include "llinventorymodel.h" #include "llrootview.h" +#include "llspeakers.h" LLIMFloater::LLIMFloater(const LLUUID& session_id) @@ -110,16 +110,30 @@ LLIMFloater::LLIMFloater(const LLUUID& session_id) } } setOverlapsScreenChannel(true); + + LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::IM, this); + + setDocked(true); } void LLIMFloater::onFocusLost() { LLIMModel::getInstance()->resetActiveSessionID(); + + LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, false); } void LLIMFloater::onFocusReceived() { LLIMModel::getInstance()->setActiveSessionID(mSessionID); + + // return focus to the input field when active tab in the multitab container is clicked. + if (isChatMultiTab() && mInputEditor) + { + mInputEditor->setFocus(TRUE); + } + + LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(mSessionID, true); } // virtual @@ -218,6 +232,7 @@ void LLIMFloater::sendMsg() LLIMFloater::~LLIMFloater() { + LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, this); } //virtual @@ -258,6 +273,7 @@ BOOL LLIMFloater::postBuild() mInputEditor->setCommitOnFocusLost( FALSE ); mInputEditor->setRevertOnEsc( FALSE ); mInputEditor->setReplaceNewlinesWithSpaces( FALSE ); + mInputEditor->setPassDelete( TRUE ); std::string session_name(LLIMModel::instance().getName(mSessionID)); @@ -341,13 +357,15 @@ void* LLIMFloater::createPanelAdHocControl(void* userdata) void LLIMFloater::onSlide() { - LLPanel* im_control_panel = getChild<LLPanel>("panel_im_control_panel"); - im_control_panel->setVisible(!im_control_panel->getVisible()); + mControlPanel->setVisible(!mControlPanel->getVisible()); - gSavedSettings.setBOOL("IMShowControlPanel", im_control_panel->getVisible()); + gSavedSettings.setBOOL("IMShowControlPanel", mControlPanel->getVisible()); - getChild<LLButton>("slide_left_btn")->setVisible(im_control_panel->getVisible()); - getChild<LLButton>("slide_right_btn")->setVisible(!im_control_panel->getVisible()); + getChild<LLButton>("slide_left_btn")->setVisible(mControlPanel->getVisible()); + getChild<LLButton>("slide_right_btn")->setVisible(!mControlPanel->getVisible()); + + LLLayoutStack* stack = getChild<LLLayoutStack>("im_panels"); + if (stack) stack->setAnimate(true); } //static @@ -355,35 +373,7 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id) { if (!gIMMgr->hasSession(session_id)) return NULL; - // we should make sure all related chiclets are in place when the session is a voice call - // chiclets come firts, then comes IM window - if (gIMMgr->isVoiceCall(session_id)) - { - LLIMModel* im_model = LLIMModel::getInstance(); - LLBottomTray* b_tray = LLBottomTray::getInstance(); - - //*TODO hide that into Bottom tray - if (!b_tray->getChicletPanel()->findChiclet<LLChiclet>(session_id)) - { - LLIMChiclet* chiclet = b_tray->createIMChiclet(session_id); - if(chiclet) - { - chiclet->setIMSessionName(im_model->getName(session_id)); - chiclet->setOtherParticipantId(im_model->getOtherParticipantID(session_id)); - } - } - - LLIMWellWindow::getInstance()->addIMRow(session_id); - } - - bool not_existed = true; - - if(isChatMultiTab()) - { - LLIMFloater* target_floater = findInstance(session_id); - not_existed = NULL == target_floater; - } - else + if(!isChatMultiTab()) { //hide all LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("impanel"); @@ -398,20 +388,29 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id) } } - LLIMFloater* floater = LLFloaterReg::showTypedInstance<LLIMFloater>("impanel", session_id); + bool exist = findInstance(session_id); + + LLIMFloater* floater = getInstance(session_id); + if (!floater) return NULL; if(isChatMultiTab()) { + LLIMFloaterContainer* floater_container = LLIMFloaterContainer::getInstance(); + // do not add existed floaters to avoid adding torn off instances - if (not_existed) + if (!exist) { // LLTabContainer::eInsertionPoint i_pt = user_initiated ? LLTabContainer::RIGHT_OF_CURRENT : LLTabContainer::END; // TODO: mantipov: use LLTabContainer::RIGHT_OF_CURRENT if it exists LLTabContainer::eInsertionPoint i_pt = LLTabContainer::END; - - LLIMFloaterContainer* floater_container = LLFloaterReg::showTypedInstance<LLIMFloaterContainer>("im_container"); - floater_container->addFloater(floater, TRUE, i_pt); + + if (floater_container) + { + floater_container->addFloater(floater, TRUE, i_pt); + } } + + floater->openFloater(floater->getKey()); } else { @@ -437,15 +436,15 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id) } // window is positioned, now we can show it. - floater->setVisible(true); } + floater->setVisible(TRUE); return floater; } void LLIMFloater::getAllowedRect(LLRect& rect) { - rect = gViewerWindow->getWorldViewRectRaw(); + rect = gViewerWindow->getWorldViewRectScaled(); static S32 right_padding = 0; if (right_padding == 0) { @@ -478,16 +477,6 @@ void LLIMFloater::setDocked(bool docked, bool pop_on_undock) } } -void LLIMFloater::setTornOff(bool torn_off) -{ - // When IM Floater isn't torn off, "close" button should be hidden. - // This call will just disables it, since there is a hack in LLFloater::updateButton, - // which prevents hiding of close button in that case. - setCanClose(torn_off); - - LLTransientDockableFloater::setTornOff(torn_off); -} - void LLIMFloater::setVisible(BOOL visible) { LLNotificationsUI::LLScreenChannel* channel = dynamic_cast<LLNotificationsUI::LLScreenChannel*> @@ -502,11 +491,52 @@ void LLIMFloater::setVisible(BOOL visible) channel->redrawToasts(); } - if (visible && mChatHistory && mInputEditor) + BOOL is_minimized = visible && isChatMultiTab() + ? LLIMFloaterContainer::getInstance()->isMinimized() + : !visible; + + if (!is_minimized && mChatHistory && mInputEditor) { //only if floater was construced and initialized from xml updateMessages(); - mInputEditor->setFocus(TRUE); + //prevent steal focus when IM opened in multitab mode + if (!isChatMultiTab()) + { + mInputEditor->setFocus(TRUE); + } + } + + if(!visible) + { + LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(mSessionID); + if(chiclet) + { + chiclet->setToggleState(false); + } + } +} + +BOOL LLIMFloater::getVisible() +{ + if(isChatMultiTab()) + { + LLIMFloaterContainer* im_container = LLIMFloaterContainer::getInstance(); + + // Treat inactive floater as invisible. + bool is_active = im_container->getActiveFloater() == this; + + //torn off floater is always inactive + if (!is_active && getHost() != im_container) + { + return LLTransientDockableFloater::getVisible(); + } + + // getVisible() returns TRUE when Tabbed IM window is minimized. + return is_active && !im_container->isMinimized() && im_container->getVisible(); + } + else + { + return LLTransientDockableFloater::getVisible(); } } @@ -516,14 +546,14 @@ bool LLIMFloater::toggle(const LLUUID& session_id) if(!isChatMultiTab()) { LLIMFloater* floater = LLFloaterReg::findTypedInstance<LLIMFloater>("impanel", session_id); - if (floater && floater->getVisible()) + if (floater && floater->getVisible() && floater->hasFocus()) { // clicking on chiclet to close floater just hides it to maintain existing // scroll/text entry state floater->setVisible(false); return false; } - else if(floater && !floater->isDocked()) + else if(floater && (!floater->isDocked() || floater->getVisible() && !floater->hasFocus())) { floater->setVisible(TRUE); floater->setFocus(TRUE); @@ -542,6 +572,11 @@ LLIMFloater* LLIMFloater::findInstance(const LLUUID& session_id) return LLFloaterReg::findTypedInstance<LLIMFloater>("impanel", session_id); } +LLIMFloater* LLIMFloater::getInstance(const LLUUID& session_id) +{ + return LLFloaterReg::getTypedInstance<LLIMFloater>("impanel", session_id); +} + void LLIMFloater::sessionInitReplyReceived(const LLUUID& im_session_id) { mSessionInitialized = true; @@ -553,6 +588,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) @@ -580,6 +621,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(); @@ -589,21 +633,41 @@ void LLIMFloater::updateMessages() std::string time = msg["time"].asString(); LLUUID from_id = msg["from_id"].asUUID(); - std::string from = from_id != gAgentID ? msg["from"].asString() : LLTrans::getString("You"); + std::string from = msg["from"].asString(); std::string message = msg["message"].asString(); + bool is_history = msg["is_history"].asBoolean(); LLChat chat; chat.mFromID = from_id; + chat.mSessionID = mSessionID; chat.mFromName = from; - chat.mText = message; chat.mTimeStr = time; + chat.mChatStyle = is_history ? CHAT_STYLE_HISTORY : chat.mChatStyle; + + // process offer notification + if (msg.has("notification_id")) + { + chat.mNotifId = msg["notification_id"].asUUID(); + } + //process text message + else + { + chat.mText = message; + } - mChatHistory->appendMessage(chat, use_plain_text_chat_history); + mChatHistory->appendMessage(chat, chat_args); mLastMessageIndex = msg["index"].asInteger(); } } } +void LLIMFloater::reloadMessages() +{ + mChatHistory->clear(); + mLastMessageIndex = -1; + updateMessages(); +} + // static void LLIMFloater::onInputEditorFocusReceived( LLFocusableElement* caller, void* userdata ) { @@ -618,6 +682,15 @@ void LLIMFloater::onInputEditorFocusReceived( LLFocusableElement* caller, void* //in disconnected state IM input editor should be disabled self->mInputEditor->setEnabled(!gDisconnected); } + + // when IM Floater is a part of the multitab container LLTabContainer set focus to the first + // child on tab button's mouse up. This leads input field lost focus. See EXT-3852. + if (isChatMultiTab()) + { + // So, clear control captured mouse to prevent LLTabContainer set focus on the panel's first child. + // do not pass self->mInputEditor, this leads to have "Edit Text" mouse pointer wherever it is. + gFocusMgr.setMouseCapture(NULL); + } } // static @@ -1011,3 +1084,20 @@ void LLIMFloater::sRemoveTypingIndicator(const LLSD& data) floater->removeTypingIndicator(); } + +void LLIMFloater::onIMChicletCreated( const LLUUID& session_id ) +{ + + if (isChatMultiTab()) + { + LLIMFloaterContainer* im_box = LLIMFloaterContainer::getInstance(); + if (!im_box) return; + + if (LLIMFloater::findInstance(session_id)) return; + + LLIMFloater* new_tab = LLIMFloater::getInstance(session_id); + + im_box->addFloater(new_tab, FALSE, LLTabContainer::END); + } + +} diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h index bc7a43e852..2f034d02b8 100644 --- a/indra/newview/llimfloater.h +++ b/indra/newview/llimfloater.h @@ -58,13 +58,13 @@ public: // LLView overrides /*virtual*/ BOOL postBuild(); /*virtual*/ void setVisible(BOOL visible); + /*virtual*/ BOOL getVisible(); // Check typing timeout timer. /*virtual*/ void draw(); // LLFloater overrides /*virtual*/ void onClose(bool app_quitting); /*virtual*/ void setDocked(bool docked, bool pop_on_undock = true); - /*virtual*/ void setTornOff(bool torn_off); // Make IM conversion visible and update the message history static LLIMFloater* show(const LLUUID& session_id); @@ -75,10 +75,13 @@ public: static LLIMFloater* findInstance(const LLUUID& session_id); + static LLIMFloater* getInstance(const LLUUID& session_id); + void sessionInitReplyReceived(const LLUUID& im_session_id); // get new messages from LLIMModel void updateMessages(); + void reloadMessages(); static void onSendMsg( LLUICtrl*, void*); void sendMsg(); @@ -113,6 +116,10 @@ public: //used as a callback on receiving new IM message static void sRemoveTypingIndicator(const LLSD& data); + static void onIMChicletCreated(const LLUUID& session_id); + + virtual LLTransientFloaterMgr::ETransientGroup getGroup() { return LLTransientFloaterMgr::IM; } + private: // process focus events to set a currently active session /* virtual */ void onFocusLost(); diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 2d7333f7e4..d518318b0e 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -34,23 +34,31 @@ #include "llviewerprecompiledheaders.h" #include "llimfloatercontainer.h" +#include "llfloaterreg.h" +#include "llimview.h" +#include "llavatariconctrl.h" +#include "llgroupiconctrl.h" +#include "llagent.h" +#include "lltransientfloatermgr.h" // // LLIMFloaterContainer // LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed) -: LLMultiFloater(seed), - mActiveVoiceFloater(NULL) +: LLMultiFloater(seed) { mAutoResize = FALSE; + LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::IM, this); } LLIMFloaterContainer::~LLIMFloaterContainer() { + LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::IM, this); } 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; @@ -86,10 +94,52 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, LLMultiFloater::addFloater(floaterp, select_added_floater, insertion_point); - // make sure active voice icon shows up for new tab - if (floaterp == mActiveVoiceFloater) + LLUUID session_id = floaterp->getKey(); + + floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id)); + mSessions[session_id] = floaterp; +} + +void LLIMFloaterContainer::onCloseFloater(LLUUID& id) +{ + mSessions.erase(id); +} + +void LLIMFloaterContainer::onNewMessageReceived(const LLSD& data) +{ + LLUUID session_id = data["session_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() +{ + return LLFloaterReg::findTypedInstance<LLIMFloaterContainer>("im_container"); +} + +LLIMFloaterContainer* LLIMFloaterContainer::getInstance() +{ + return LLFloaterReg::getTypedInstance<LLIMFloaterContainer>("im_container"); +} + +void LLIMFloaterContainer::setMinimized(BOOL b) +{ + if (isMinimized() == b) return; + + LLMultiFloater::setMinimized(b); + + if (isMinimized()) return; + + if (getActiveFloater()) { - mTabContainer->setTabImage(floaterp, "active_voice_tab.tga"); + getActiveFloater()->setVisible(TRUE); } } diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h index ead7cf4730..f6cdc25ebd 100644 --- a/indra/newview/llimfloatercontainer.h +++ b/indra/newview/llimfloatercontainer.h @@ -33,8 +33,13 @@ #ifndef LL_LLIMFLOATERCONTAINER_H #define LL_LLIMFLOATERCONTAINER_H +#include <map> +#include <vector> + #include "llfloater.h" #include "llmultifloater.h" +#include "llavatarpropertiesprocessor.h" +#include "llgroupmgr.h" class LLTabContainer; @@ -46,16 +51,26 @@ public: /*virtual*/ BOOL postBuild(); /*virtual*/ void onOpen(const LLSD& key); + void onCloseFloater(LLUUID& id); /*virtual*/ void addFloater(LLFloater* floaterp, BOOL select_added_floater, LLTabContainer::eInsertionPoint insertion_point = LLTabContainer::END); static LLFloater* getCurrentVoiceFloater(); - -protected: - - LLFloater* mActiveVoiceFloater; + + static LLIMFloaterContainer* findInstance(); + + static LLIMFloaterContainer* getInstance(); + + virtual void setMinimized(BOOL b); + +private: + typedef std::map<LLUUID,LLFloater*> avatarID_panel_map_t; + avatarID_panel_map_t mSessions; + + + void onNewMessageReceived(const LLSD& data); }; #endif // LL_LLIMFLOATERCONTAINER_H diff --git a/indra/newview/llimpanel.cpp b/indra/newview/llimpanel.cpp index 4b45a9aba9..4bdf5f42dc 100644 --- a/indra/newview/llimpanel.cpp +++ b/indra/newview/llimpanel.cpp @@ -40,6 +40,7 @@ #include "llfontgl.h" #include "llrect.h" #include "llerror.h" +#include "llmultifloater.h" #include "llstring.h" #include "message.h" #include "lltextbox.h" @@ -55,12 +56,10 @@ #include "llgroupactions.h" #include "llfloater.h" #include "llfloateractivespeakers.h" -#include "llfloatercall.h" #include "llavataractions.h" #include "llinventory.h" #include "llinventorymodel.h" #include "llfloaterinventory.h" -#include "llfloaterchat.h" #include "lliconctrl.h" #include "llkeyboard.h" #include "lllineeditor.h" diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index a7ce027416..1dc601e260 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -42,46 +42,32 @@ #include "llhttpclient.h" #include "llsdutil_math.h" #include "llstring.h" +#include "lltrans.h" #include "lluictrlfactory.h" #include "llagent.h" +#include "llagentui.h" +#include "llappviewer.h" #include "llavatariconctrl.h" #include "llbottomtray.h" #include "llcallingcard.h" #include "llchat.h" -#include "llchiclet.h" -#include "llresmgr.h" -#include "llfloaterchat.h" -#include "llfloaterchatterbox.h" -#include "llavataractions.h" -#include "llhttpnode.h" #include "llimfloater.h" -#include "llimpanel.h" #include "llgroupiconctrl.h" -#include "llresizebar.h" -#include "lltabcontainer.h" -#include "llviewercontrol.h" -#include "llfloater.h" +#include "llmd5.h" #include "llmutelist.h" -#include "llresizehandle.h" -#include "llkeyboard.h" -#include "llui.h" -#include "llviewermenu.h" -#include "llcallingcard.h" -#include "lltoolbar.h" +#include "llrecentpeople.h" #include "llviewermessage.h" #include "llviewerwindow.h" #include "llnotifications.h" #include "llnotificationsutil.h" #include "llnearbychat.h" -#include "llviewerregion.h" -#include "llvoicechannel.h" -#include "lltrans.h" -#include "llrecentpeople.h" -#include "llsyswellwindow.h" +#include "llspeakers.h" //for LLIMSpeakerMgr +#include "lltextbox.h" +#include "lltextutil.h" +#include "llviewercontrol.h" +#include "llviewerparcelmgr.h" -#include "llfirstuse.h" -#include "llagentui.h" const static std::string IM_TIME("time"); const static std::string IM_TEXT("message"); @@ -91,7 +77,11 @@ const static std::string IM_FROM_ID("from_id"); const static std::string NO_SESSION("(IM Session Doesn't Exist)"); const static std::string ADHOC_NAME_SUFFIX(" Conference"); +const static std::string NEARBY_P2P_BY_OTHER("nearby_P2P_by_other"); +const static std::string NEARBY_P2P_BY_AGENT("nearby_P2P_by_agent"); + std::string LLCallDialogManager::sPreviousSessionlName = ""; +LLIMModel::LLIMSession::SType LLCallDialogManager::sPreviousSessionType = LLIMModel::LLIMSession::P2P_SESSION; std::string LLCallDialogManager::sCurrentSessionlName = ""; LLIMModel::LLIMSession* LLCallDialogManager::sSession = NULL; LLVoiceChannel::EState LLCallDialogManager::sOldState = LLVoiceChannel::STATE_READY; @@ -109,7 +99,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; } @@ -178,6 +169,7 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& if (IM_NOTHING_SPECIAL == type || IM_SESSION_P2P_INVITE == type) { mVoiceChannel = new LLVoiceChannelP2P(session_id, name, other_participant_id); + mOtherParticipantIsAvatar = LLVoiceClient::getInstance()->isParticipantAvatar(mSessionID); // check if it was AVALINE call if (!mOtherParticipantIsAvatar) @@ -208,7 +200,10 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& mSpeakers = new LLIMSpeakerMgr(mVoiceChannel); // All participants will be added to the list of people we've recently interacted with. - mSpeakers->addListener(&LLRecentPeople::instance(), "add"); + + // we need to add only _active_ speakers...so comment this. + // may delete this later on cleanup + //mSpeakers->addListener(&LLRecentPeople::instance(), "add"); //we need to wait for session initialization for outgoing ad-hoc and group chat session //correct session id for initiated ad-hoc chat will be received from the server @@ -224,15 +219,16 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& { mCallBackEnabled = LLVoiceClient::getInstance()->isSessionCallBackPossible(mSessionID); mTextIMPossible = LLVoiceClient::getInstance()->isSessionTextIMPossible(mSessionID); - mOtherParticipantIsAvatar = LLVoiceClient::getInstance()->isParticipantAvatar(mSessionID); } + buildHistoryFileName(); + if ( gSavedPerAccountSettings.getBOOL("LogShowHistory") ) { std::list<LLSD> chat_history; //involves parsing of a chat history - LLLogChat::loadAllHistory(mName, chat_history); + LLLogChat::loadAllHistory(mHistoryFileName, chat_history); addMessagesFromHistory(chat_history); } } @@ -260,12 +256,12 @@ void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::ES { case LLVoiceChannel::STATE_CALL_STARTED : message = other_avatar_name + " " + started_call; - LLIMModel::getInstance()->addMessageSilently(mSessionID, SYSTEM_FROM, LLUUID::null, message); + LLIMModel::getInstance()->addMessage(mSessionID, SYSTEM_FROM, LLUUID::null, message); break; case LLVoiceChannel::STATE_CONNECTED : message = you + " " + joined_call; - LLIMModel::getInstance()->addMessageSilently(mSessionID, SYSTEM_FROM, LLUUID::null, message); + LLIMModel::getInstance()->addMessage(mSessionID, SYSTEM_FROM, LLUUID::null, message); default: break; } @@ -276,11 +272,11 @@ void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::ES { case LLVoiceChannel::STATE_CALL_STARTED : message = you + " " + started_call; - LLIMModel::getInstance()->addMessageSilently(mSessionID, SYSTEM_FROM, LLUUID::null, message); + LLIMModel::getInstance()->addMessage(mSessionID, SYSTEM_FROM, LLUUID::null, message); break; case LLVoiceChannel::STATE_CONNECTED : message = other_avatar_name + " " + joined_call; - LLIMModel::getInstance()->addMessageSilently(mSessionID, SYSTEM_FROM, LLUUID::null, message); + LLIMModel::getInstance()->addMessage(mSessionID, SYSTEM_FROM, LLUUID::null, message); default: break; } @@ -295,7 +291,7 @@ void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::ES { case LLVoiceChannel::STATE_CONNECTED : message = you + " " + joined_call; - LLIMModel::getInstance()->addMessageSilently(mSessionID, SYSTEM_FROM, LLUUID::null, message); + LLIMModel::getInstance()->addMessage(mSessionID, SYSTEM_FROM, LLUUID::null, message); default: break; } @@ -306,7 +302,7 @@ void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::ES { case LLVoiceChannel::STATE_CALL_STARTED : message = you + " " + started_call; - LLIMModel::getInstance()->addMessageSilently(mSessionID, SYSTEM_FROM, LLUUID::null, message); + LLIMModel::getInstance()->addMessage(mSessionID, SYSTEM_FROM, LLUUID::null, message); break; default: break; @@ -361,7 +357,7 @@ void LLIMModel::LLIMSession::sessionInitReplyReceived(const LLUUID& new_session_ } } -void LLIMModel::LLIMSession::addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time) +void LLIMModel::LLIMSession::addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time, const bool is_history) { LLSD message; message["from"] = from; @@ -369,6 +365,7 @@ void LLIMModel::LLIMSession::addMessage(const std::string& from, const LLUUID& f message["message"] = utf8_text; message["time"] = time; message["index"] = (LLSD::Integer)mMsgs.size(); + message["is_history"] = is_history; mMsgs.push_front(message); @@ -397,7 +394,7 @@ void LLIMModel::LLIMSession::addMessagesFromHistory(const std::list<LLSD>& histo std::string timestamp = msg[IM_TIME]; std::string text = msg[IM_TEXT]; - addMessage(from, from_id, text, timestamp); + addMessage(from, from_id, text, timestamp, true); it++; } @@ -411,11 +408,11 @@ void LLIMModel::LLIMSession::chatFromLogFile(LLLogChat::ELogLineType type, const if (type == LLLogChat::LOG_LINE) { - self->addMessage("", LLSD(), msg["message"].asString(), ""); + self->addMessage("", LLSD(), msg["message"].asString(), "", true); } else if (type == LLLogChat::LOG_LLSD) { - self->addMessage(msg["from"].asString(), msg["from_id"].asUUID(), msg["message"].asString(), msg["time"].asString()); + self->addMessage(msg["from"].asString(), msg["from_id"].asUUID(), msg["message"].asString(), msg["time"].asString(), true); } } @@ -479,6 +476,44 @@ bool LLIMModel::LLIMSession::isOtherParticipantAvaline() return !mOtherParticipantIsAvatar; } +void LLIMModel::LLIMSession::buildHistoryFileName() +{ + mHistoryFileName = mName; + + //ad-hoc requires sophisticated chat history saving schemes + if (isAdHoc()) + { + //in case of outgoing ad-hoc sessions + if (mInitialTargetIDs.size()) + { + std::set<LLUUID> sorted_uuids(mInitialTargetIDs.begin(), mInitialTargetIDs.end()); + mHistoryFileName = mName + " hash" + generateHash(sorted_uuids); + return; + } + + //in case of incoming ad-hoc sessions + mHistoryFileName = mName + " " + LLLogChat::timestamp(true) + " " + mSessionID.asString().substr(0, 4); + } +} + +//static +std::string LLIMModel::LLIMSession::generateHash(const std::set<LLUUID>& sorted_uuids) +{ + LLMD5 md5_uuid; + + std::set<LLUUID>::const_iterator it = sorted_uuids.begin(); + while (it != sorted_uuids.end()) + { + md5_uuid.update((unsigned char*)(*it).mData, 16); + it++; + } + md5_uuid.finalize(); + + LLUUID participants_md5_hash; + md5_uuid.raw_digest((unsigned char*) participants_md5_hash.mData); + return participants_md5_hash.asString(); +} + void LLIMModel::processSessionInitializedReply(const LLUUID& old_session_id, const LLUUID& new_session_id) { @@ -507,13 +542,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() @@ -626,11 +654,11 @@ bool LLIMModel::addToHistory(const LLUUID& session_id, const std::string& from, return true; } -bool LLIMModel::logToFile(const std::string& session_name, const std::string& from, const LLUUID& from_id, const std::string& utf8_text) +bool LLIMModel::logToFile(const std::string& file_name, const std::string& from, const LLUUID& from_id, const std::string& utf8_text) { if (gSavedPerAccountSettings.getBOOL("LogInstantMessages")) { - LLLogChat::saveHistory(session_name, from, from_id, utf8_text); + LLLogChat::saveHistory(file_name, from, from_id, utf8_text); return true; } else @@ -641,30 +669,13 @@ bool LLIMModel::logToFile(const std::string& session_name, const std::string& fr bool LLIMModel::logToFile(const LLUUID& session_id, const std::string& from, const LLUUID& from_id, const std::string& utf8_text) { - if (gSavedPerAccountSettings.getBOOL("LogInstantMessages")) - { - LLLogChat::saveHistory(LLIMModel::getInstance()->getName(session_id), from, from_id, utf8_text); - return true; - } - else - { - return false; - } + return logToFile(LLIMModel::getInstance()->getHistoryFileName(session_id), from, from_id, utf8_text); } 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); } @@ -675,6 +686,12 @@ bool LLIMModel::addMessage(const LLUUID& session_id, const std::string& from, co LLIMSession* session = addMessageSilently(session_id, from, from_id, utf8_text, log2file); if (!session) return false; + //good place to add some1 to recent list + //other places may be called from message history. + if( !from_id.isNull() && + ( session->isP2PSessionType() || session->isAdHocSessionType() ) ) + LLRecentPeople::instance().add(from_id); + // notify listeners LLSD arg; arg["session_id"] = session_id; @@ -781,13 +798,25 @@ LLIMSpeakerMgr* LLIMModel::getSpeakerManager( const LLUUID& session_id ) const LLIMSession* session = findIMSession(session_id); if (!session) { - llwarns << "session " << session_id << "does not exist " << llendl; + llwarns << "session " << session_id << " does not exist " << llendl; return NULL; } return session->mSpeakers; } +const std::string& LLIMModel::getHistoryFileName(const LLUUID& session_id) const +{ + LLIMSession* session = findIMSession(session_id); + if (!session) + { + llwarns << "session " << session_id << " does not exist " << llendl; + return LLStringUtil::null; + } + + return session->mHistoryFileName; +} + // TODO get rid of other participant ID void LLIMModel::sendTypingState(LLUUID session_id, LLUUID other_participant_id, BOOL typing) @@ -914,9 +943,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) { @@ -926,7 +952,42 @@ void LLIMModel::sendMessage(const std::string& utf8_text, } // Add the recipient to the recent people list. - LLRecentPeople::instance().add(other_participant_id); + bool is_not_group_id = LLGroupMgr::getInstance()->getGroupData(other_participant_id) == NULL; + + if (is_not_group_id) + { + +#if 0 + //use this code to add only online members + LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id); + LLSpeakerMgr::speaker_list_t speaker_list; + speaker_mgr->getSpeakerList(&speaker_list, true); + for(LLSpeakerMgr::speaker_list_t::iterator it = speaker_list.begin(); it != speaker_list.end(); it++) + { + const LLPointer<LLSpeaker>& speakerp = *it; + + LLRecentPeople::instance().add(speakerp->mID); + } +#else + LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(im_session_id); + if( session == 0)//??? shouldn't really happen + { + LLRecentPeople::instance().add(other_participant_id); + } + else + { + for(std::vector<LLUUID>::iterator it = session->mInitialTargetIDs.begin(); + it!=session->mInitialTargetIDs.end();++it) + { + const LLUUID id = *it; + + LLRecentPeople::instance().add(id); + } + } +#endif + } + + } void session_starter_helper( @@ -1234,33 +1295,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; @@ -1298,12 +1342,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; @@ -1325,7 +1368,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); @@ -1360,8 +1403,15 @@ void LLCallDialogManager::onVoiceChannelChanged(const LLUUID &session_id) sCurrentSessionlName = ""; // Empty string results in "Nearby Voice Chat" after substitution return; } + + if (sSession) + { + // store previous session type to process Avaline calls in dialogs + sPreviousSessionType = sSession->mSessionType; + } + sSession = session; - sSession->mVoiceChannel->setStateChangedCallback(LLCallDialogManager::onVoiceChannelStateChanged); + sSession->mVoiceChannel->setStateChangedCallback(boost::bind(LLCallDialogManager::onVoiceChannelStateChanged, _1, _2, _3, _4)); if(sCurrentSessionlName != session->mName) { sPreviousSessionlName = sCurrentSessionlName; @@ -1378,6 +1428,7 @@ void LLCallDialogManager::onVoiceChannelChanged(const LLUUID &session_id) mCallDialogPayload["session_name"] = sSession->mName; mCallDialogPayload["other_user_id"] = sSession->mOtherParticipantID; mCallDialogPayload["old_channel_name"] = sPreviousSessionlName; + mCallDialogPayload["old_session_type"] = sPreviousSessionType; mCallDialogPayload["state"] = LLVoiceChannel::STATE_CALL_STARTED; mCallDialogPayload["disconnected_channel_name"] = sSession->mName; mCallDialogPayload["session_type"] = sSession->mSessionType; @@ -1391,7 +1442,7 @@ void LLCallDialogManager::onVoiceChannelChanged(const LLUUID &session_id) } -void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction) +void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction, bool ended_by_agent) { LLSD mCallDialogPayload; LLOutgoingCallDialog* ocd = NULL; @@ -1407,9 +1458,11 @@ void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EStat mCallDialogPayload["session_name"] = sSession->mName; mCallDialogPayload["other_user_id"] = sSession->mOtherParticipantID; mCallDialogPayload["old_channel_name"] = sPreviousSessionlName; + mCallDialogPayload["old_session_type"] = sPreviousSessionType; mCallDialogPayload["state"] = new_state; mCallDialogPayload["disconnected_channel_name"] = sSession->mName; mCallDialogPayload["session_type"] = sSession->mSessionType; + mCallDialogPayload["ended_by_agent"] = ended_by_agent; switch(new_state) { @@ -1421,6 +1474,11 @@ void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EStat } break; + case LLVoiceChannel::STATE_HUNG_UP: + // this state is coming before session is changed, so, put it into payload map + mCallDialogPayload["old_session_type"] = sSession->mSessionType; + break; + case LLVoiceChannel::STATE_CONNECTED : ocd = LLFloaterReg::findTypedInstance<LLOutgoingCallDialog>("outgoing_call", LLOutgoingCallDialog::OCD_KEY); if (ocd) @@ -1443,10 +1501,15 @@ 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) { + setAutoFocus(FALSE); + // force docked state since this floater doesn't save it between recreations + setDocked(true); } void LLCallDialog::getAllowedRect(LLRect& rect) @@ -1496,6 +1559,15 @@ void LLCallDialog::draw() } } +// virtual +void LLCallDialog::onOpen(const LLSD& key) +{ + LLDockableFloater::onOpen(key); + + // it should be over the all floaters. EXT-5116 + gFloaterView->bringToFront(this); +} + void LLCallDialog::setIcon(const LLSD& session_id, const LLSD& participant_id) { // *NOTE: 12/28/2009: check avaline calls: LLVoiceClient::isParticipantAvatar returns false for them @@ -1524,7 +1596,7 @@ void LLCallDialog::setIcon(const LLSD& session_id, const LLSD& participant_id) } } -bool LLOutgoingCallDialog::lifetimeHasExpired() +bool LLCallDialog::lifetimeHasExpired() { if (mLifetimeTimer.getStarted()) { @@ -1537,7 +1609,7 @@ bool LLOutgoingCallDialog::lifetimeHasExpired() return false; } -void LLOutgoingCallDialog::onLifetimeExpired() +void LLCallDialog::onLifetimeExpired() { mLifetimeTimer.stop(); closeFloater(); @@ -1547,6 +1619,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(); @@ -1561,24 +1636,55 @@ void LLOutgoingCallDialog::show(const LLSD& key) // tell the user which voice channel they are leaving if (!mPayload["old_channel_name"].asString().empty()) { - childSetTextArg("leaving", "[CURRENT_CHAT]", mPayload["old_channel_name"].asString()); + bool was_avaline_call = LLIMModel::LLIMSession::AVALINE_SESSION == mPayload["old_session_type"].asInteger(); + + std::string old_caller_name = mPayload["old_channel_name"].asString(); + if (was_avaline_call) + { + old_caller_name = LLTextUtil::formatPhoneNumber(old_caller_name); + } + + 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()) { - childSetTextArg("nearby", "[VOICE_CHANNEL_NAME]", mPayload["disconnected_channel_name"].asString()); - childSetTextArg("nearby_P2P", "[VOICE_CHANNEL_NAME]", mPayload["disconnected_channel_name"].asString()); + std::string channel_name = mPayload["disconnected_channel_name"].asString(); + if (LLIMModel::LLIMSession::AVALINE_SESSION == mPayload["session_type"].asInteger()) + { + channel_name = LLTextUtil::formatPhoneNumber(channel_name); + } + childSetTextArg("nearby", "[VOICE_CHANNEL_NAME]", channel_name); + childSetTextArg("nearby_P2P_by_other", "[VOICE_CHANNEL_NAME]", mPayload["disconnected_channel_name"].asString()); + + // skipping "You will now be reconnected to nearby" in notification when call is ended by disabling voice, + // so no reconnection to nearby chat happens (EXT-4397) + bool voice_works = LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking(); + std::string reconnect_nearby = voice_works ? LLTrans::getString("reconnect_nearby") : std::string(); + childSetTextArg("nearby", "[RECONNECT_NEARBY]", reconnect_nearby); + + const std::string& nearby_str = mPayload["ended_by_agent"] ? NEARBY_P2P_BY_AGENT : NEARBY_P2P_BY_OTHER; + childSetTextArg(nearby_str, "[RECONNECT_NEARBY]", reconnect_nearby); } std::string callee_name = mPayload["session_name"].asString(); + + LLUUID session_id = mPayload["session_id"].asUUID(); + bool is_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(session_id); + if (callee_name == "anonymous") { callee_name = getString("anonymous"); } + else if (!is_avatar) + { + callee_name = LLTextUtil::formatPhoneNumber(callee_name); + } setTitle(callee_name); @@ -1597,27 +1703,37 @@ void LLOutgoingCallDialog::show(const LLSD& key) { case LLVoiceChannel::STATE_CALL_STARTED : getChild<LLTextBox>("calling")->setVisible(true); - getChild<LLTextBox>("leaving")->setVisible(true); + getChild<LLButton>("Cancel")->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 : getChild<LLTextBox>("noanswer")->setVisible(true); getChild<LLButton>("Cancel")->setVisible(false); + setCanClose(true); mLifetimeTimer.start(); break; case LLVoiceChannel::STATE_HUNG_UP : if (mPayload["session_type"].asInteger() == LLIMModel::LLIMSession::P2P_SESSION) { - getChild<LLTextBox>("nearby_P2P")->setVisible(true); + const std::string& nearby_str = mPayload["ended_by_agent"] ? NEARBY_P2P_BY_AGENT : NEARBY_P2P_BY_OTHER; + getChild<LLTextBox>(nearby_str)->setVisible(true); } else { getChild<LLTextBox>("nearby")->setVisible(true); } getChild<LLButton>("Cancel")->setVisible(false); + setCanClose(true); mLifetimeTimer.start(); } @@ -1629,7 +1745,8 @@ void LLOutgoingCallDialog::hideAllText() getChild<LLTextBox>("calling")->setVisible(false); getChild<LLTextBox>("leaving")->setVisible(false); getChild<LLTextBox>("connecting")->setVisible(false); - getChild<LLTextBox>("nearby_P2P")->setVisible(false); + getChild<LLTextBox>("nearby_P2P_by_other")->setVisible(false); + getChild<LLTextBox>("nearby_P2P_by_agent")->setVisible(false); getChild<LLTextBox>("nearby")->setVisible(false); getChild<LLTextBox>("noanswer")->setVisible(false); } @@ -1655,6 +1772,8 @@ BOOL LLOutgoingCallDialog::postBuild() childSetAction("Cancel", onCancel, this); + setCanDrag(FALSE); + return success; } @@ -1668,19 +1787,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 @@ -1693,6 +1799,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(); } } @@ -1728,16 +1837,21 @@ BOOL LLIncomingCallDialog::postBuild() call_type = getString(mPayload["notify_box_type"]); } + + // check to see if this is an Avaline call + bool is_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(session_id); + childSetVisible("Start IM", is_avatar); // no IM for avaline + if (caller_name == "anonymous") { caller_name = getString("anonymous"); } - - setTitle(caller_name + " " + call_type); + else if (!is_avatar) + { + caller_name = LLTextUtil::formatPhoneNumber(caller_name); + } - // check to see if this is an Avaline call - bool is_avatar = LLVoiceClient::getInstance()->isParticipantAvatar(session_id); - childSetVisible("Start IM", is_avatar); // no IM for avaline + setTitle(caller_name + " " + call_type); LLUICtrl* caller_name_widget = getChild<LLUICtrl>("caller name"); caller_name_widget->setValue(caller_name + " " + call_type); @@ -1746,9 +1860,10 @@ BOOL LLIncomingCallDialog::postBuild() childSetAction("Accept", onAccept, this); childSetAction("Reject", onReject, this); childSetAction("Start IM", onStartIM, this); - childSetFocus("Accept"); + setDefaultBtn("Accept"); - if(mPayload["notify_box_type"] != "VoiceInviteGroup" && mPayload["notify_box_type"] != "VoiceInviteAdHoc") + std::string notify_box_type = mPayload["notify_box_type"].asString(); + if(notify_box_type != "VoiceInviteGroup" && notify_box_type != "VoiceInviteAdHoc") { // starting notification's timer for P2P and AVALINE invitations mLifetimeTimer.start(); @@ -1758,6 +1873,8 @@ BOOL LLIncomingCallDialog::postBuild() mLifetimeTimer.stop(); } + setCanDrag(FALSE); + return TRUE; } @@ -1804,7 +1921,7 @@ void LLIncomingCallDialog::onStartIM(void* user_data) void LLIncomingCallDialog::processCallResponse(S32 response) { - if (!gIMMgr) + if (!gIMMgr || gDisconnected) return; LLUUID session_id = mPayload["session_id"].asUUID(); @@ -2031,8 +2148,7 @@ bool inviteUserResponse(const LLSD& notification, const LLSD& response) // Member Functions // -LLIMMgr::LLIMMgr() : - mIMReceived(FALSE) +LLIMMgr::LLIMMgr() { mPendingInvitations = LLSD::emptyMap(); mPendingAgentListUpdates = LLSD::emptyMap(); @@ -2063,7 +2179,6 @@ void LLIMMgr::addMessage( return; } - LLFloaterIMPanel* floater; LLUUID new_session_id = session_id; if (new_session_id.isNull()) { @@ -2082,32 +2197,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. @@ -2126,50 +2216,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) @@ -2184,7 +2237,6 @@ void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& mess LLChat chat(message); chat.mSourceType = CHAT_SOURCE_SYSTEM; - LLFloaterChat::addChatHistory(chat); LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); if(nearby_chat) @@ -2203,14 +2255,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; @@ -2237,16 +2281,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); @@ -2334,30 +2368,17 @@ 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; - noteOfflineUsers(session_id, floater, ids); + //Per Plan's suggestion commented "explicit offline status warning" out to make Dessie happier (see EXT-3609) + //*TODO After February 2010 remove this commented out line if no one will be missing that warning + //noteOfflineUsers(session_id, floater, ids); // 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; @@ -2378,14 +2399,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); @@ -2479,7 +2492,7 @@ void LLIMMgr::inviteToSession( } else { - LLFloaterReg::showInstance("incoming_call", payload, TRUE); + LLFloaterReg::showInstance("incoming_call", payload, FALSE); } mPendingInvitations[session_id.asString()] = LLSD(); } @@ -2492,53 +2505,15 @@ 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 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); - } - } -} - - -// 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; + //*TODO disconnects all IM sessions } - BOOL LLIMMgr::hasSession(const LLUUID& session_id) { return LLIMModel::getInstance()->findIMSession(session_id) != NULL; @@ -2722,49 +2697,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 @@ -2788,7 +2728,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. @@ -2809,9 +2749,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; } @@ -2832,12 +2769,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 ) { @@ -2883,15 +2814,6 @@ public: 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 ) { @@ -2986,11 +2908,6 @@ public: 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 ) { @@ -3084,9 +3001,6 @@ public: ll_vector3_from_sd(message_params["position"]), true); - chat.mText = std::string("IM: ") + name + separator_string + saved + message; - LLFloaterChat::addChat(chat, TRUE, is_this_agent); - //K now we want to accept the invitation std::string url = gAgent.getRegion()->getCapability( "ChatSessionRequest"); diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index 11860d0efb..e7404074e0 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -33,22 +33,18 @@ #ifndef LL_LLIMVIEW_H #define LL_LLIMVIEW_H -#include "lldarray.h" -#include "lldockablefloater.h" -#include "llspeakers.h" //for LLIMSpeakerMgr -#include "llimpanel.h" //for voice channels -#include "llmodaldialog.h" #include "lldockablefloater.h" #include "llinstantmessage.h" -#include "lluuid.h" -#include "llmultifloater.h" + #include "lllogchat.h" +#include "llvoicechannel.h" + + -class LLFloaterChatterBox; -class LLUUID; -class LLFloaterIMPanel; class LLFriendObserver; class LLCallDialogManager; +class LLIMSpeakerMgr; + class LLIMModel : public LLSingleton<LLIMModel> { @@ -70,20 +66,35 @@ public: void sessionInitReplyReceived(const LLUUID& new_session_id); void addMessagesFromHistory(const std::list<LLSD>& history); - void addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time); + void addMessage(const std::string& from, const LLUUID& from_id, const std::string& utf8_text, const std::string& time, const bool is_history = false); void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction); + + /** @deprecated */ static void chatFromLogFile(LLLogChat::ELogLineType type, const LLSD& msg, void* userdata); bool isAdHoc(); bool isP2P(); bool isOtherParticipantAvaline(); + bool isP2PSessionType() const { return mSessionType == P2P_SESSION;} + bool isAdHocSessionType() const { return mSessionType == ADHOC_SESSION;} + bool isGroupSessionType() const { return mSessionType == GROUP_SESSION;} + bool isAvalineSessionType() const { return mSessionType == AVALINE_SESSION;} + + //*TODO make private + /** ad-hoc sessions involve sophisticated chat history file naming schemes */ + void buildHistoryFileName(); + + //*TODO make private + static std::string generateHash(const std::set<LLUUID>& sorted_uuids); + LLUUID mSessionID; std::string mName; EInstantMessage mType; SType mSessionType; LLUUID mOtherParticipantID; std::vector<LLUUID> mInitialTargetIDs; + std::string mHistoryFileName; // connection to voice channel state change signal boost::signals2::connection mVoiceChannelStateChangeConnection; @@ -229,6 +240,8 @@ public: */ LLIMSpeakerMgr* getSpeakerManager(const LLUUID& session_id) const; + const std::string& getHistoryFileName(const LLUUID& session_id) const; + static void sendLeaveSession(const LLUUID& session_id, const LLUUID& other_participant_id); static bool sendStartSession(const LLUUID& temp_session_id, const LLUUID& other_participant_id, const std::vector<LLUUID>& ids, EInstantMessage dialog); @@ -241,7 +254,7 @@ public: /** * Saves an IM message into a file */ - bool logToFile(const std::string& session_name, const std::string& from, const LLUUID& from_id, const std::string& utf8_text); + bool logToFile(const std::string& file_name, const std::string& from, const LLUUID& from_id, const std::string& utf8_text); private: @@ -347,15 +360,9 @@ public: 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(); @@ -372,11 +379,6 @@ public: 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); @@ -388,10 +390,6 @@ public: 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 *); @@ -422,23 +420,12 @@ private: */ 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); @@ -450,15 +437,9 @@ private: 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; - // An IM has been received that you haven't seen yet. - BOOL mIMReceived; - LLSD mPendingInvitations; LLSD mPendingAgentListUpdates; }; @@ -471,10 +452,11 @@ public: static void initClass(); static void onVoiceChannelChanged(const LLUUID &session_id); - static void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction); + static void onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction, bool ended_by_agent); protected: static std::string sPreviousSessionlName; + static LLIMModel::LLIMSession::SType sPreviousSessionType; static std::string sCurrentSessionlName; static LLIMModel::LLIMSession* sSession; static LLVoiceChannel::EState sOldState; @@ -490,6 +472,7 @@ public: // check timer state /*virtual*/ void draw(); + /*virtual*/ void onOpen(const LLSD& key); protected: // lifetime timer for a notification @@ -497,8 +480,8 @@ protected: // 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); @@ -528,7 +511,6 @@ public: static void onStartIM(void* user_data); private: - /*virtual*/ bool lifetimeHasExpired(); /*virtual*/ void onLifetimeExpired(); void processCallResponse(S32 response); }; @@ -547,8 +529,6 @@ public: private: // hide all text boxes void hideAllText(); - /*virtual*/ bool lifetimeHasExpired(); - /*virtual*/ void onLifetimeExpired(); }; // Globals diff --git a/indra/newview/llinspect.cpp b/indra/newview/llinspect.cpp index c7b8db9635..81cfce53b1 100644 --- a/indra/newview/llinspect.cpp +++ b/indra/newview/llinspect.cpp @@ -32,8 +32,10 @@ #include "llinspect.h" +#include "lltooltip.h" #include "llcontrol.h" // LLCachedControl #include "llui.h" // LLUI::sSettingsGroups +#include "llviewermenu.h" LLInspect::LLInspect(const LLSD& key) : LLFloater(key), @@ -103,8 +105,51 @@ BOOL LLInspect::handleHover(S32 x, S32 y, MASK mask) return LLView::handleHover(x, y, mask); } +BOOL LLInspect::handleToolTip(S32 x, S32 y, MASK mask) +{ + BOOL handled = FALSE; + + + //delegate handling of tooltip to the hovered child + LLView* child_handler = childFromPoint(x,y); + if (child_handler && !child_handler->getToolTip().empty())// show tooltip if a view has non-empty tooltip message + { + //build LLInspector params to get correct tooltip setting, etc. background image + LLInspector::Params params; + params.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>()); + params.message = child_handler->getToolTip(); + //set up delay if there is no visible tooltip at this moment + params.delay_time = LLToolTipMgr::instance().toolTipVisible() ? 0.f : LLUI::sSettingGroups["config"]->getF32( "ToolTipDelay" ); + LLToolTipMgr::instance().show(params); + handled = TRUE; + } + return handled; +} // virtual 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 731e99534b..6d994a8d7c 100644 --- a/indra/newview/llinspect.h +++ b/indra/newview/llinspect.h @@ -47,6 +47,7 @@ public: /*virtual*/ void draw(); /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask); /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); /// Start open animation @@ -55,7 +56,10 @@ public: /// Inspectors close themselves when they lose focus /*virtual*/ void onFocusLost(); -private: +protected: + + virtual bool childHasVisiblePopupMenu(); + LLFrameTimer mCloseTimer; LLFrameTimer mOpenTimer; }; diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp index dae980feb1..14bc4376fe 100644 --- a/indra/newview/llinspectavatar.cpp +++ b/indra/newview/llinspectavatar.cpp @@ -51,6 +51,7 @@ #include "llviewermenu.h" #include "llvoiceclient.h" #include "llviewerobjectlist.h" +#include "lltransientfloatermgr.h" // Linden libraries #include "llfloater.h" @@ -71,7 +72,7 @@ class LLFetchAvatarData; // Avatar Inspector, a small information window used when clicking // on avatar names in the 2D UI and in the ambient inspector widget for // the 3D world. -class LLInspectAvatar : public LLInspect +class LLInspectAvatar : public LLInspect, LLTransientFloater { friend class LLFloaterReg; @@ -93,6 +94,12 @@ public: // Update view based on information from avatar properties processor void processAvatarData(LLAvatarData* data); + // override the inspector mouse leave so timer is only paused if + // gear menu is not open + /* virtual */ void onMouseLeave(S32 x, S32 y, MASK mask); + + virtual LLTransientFloaterMgr::ETransientGroup getGroup() { return LLTransientFloaterMgr::GLOBAL; } + private: // Make network requests for all the data to display in this view. // Used on construction and if avatar id changes. @@ -112,9 +119,11 @@ private: void onClickAddFriend(); void onClickViewProfile(); void onClickIM(); + void onClickCall(); void onClickTeleport(); void onClickInviteToGroup(); void onClickPay(); + void onClickShare(); void onToggleMute(); void onClickReport(); void onClickFreeze(); @@ -204,9 +213,11 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd) mCommitCallbackRegistrar.add("InspectAvatar.AddFriend", boost::bind(&LLInspectAvatar::onClickAddFriend, this)); mCommitCallbackRegistrar.add("InspectAvatar.IM", boost::bind(&LLInspectAvatar::onClickIM, this)); + mCommitCallbackRegistrar.add("InspectAvatar.Call", boost::bind(&LLInspectAvatar::onClickCall, this)); mCommitCallbackRegistrar.add("InspectAvatar.Teleport", boost::bind(&LLInspectAvatar::onClickTeleport, this)); mCommitCallbackRegistrar.add("InspectAvatar.InviteToGroup", boost::bind(&LLInspectAvatar::onClickInviteToGroup, this)); mCommitCallbackRegistrar.add("InspectAvatar.Pay", boost::bind(&LLInspectAvatar::onClickPay, this)); + mCommitCallbackRegistrar.add("InspectAvatar.Share", boost::bind(&LLInspectAvatar::onClickShare, this)); mCommitCallbackRegistrar.add("InspectAvatar.ToggleMute", boost::bind(&LLInspectAvatar::onToggleMute, this)); mCommitCallbackRegistrar.add("InspectAvatar.Freeze", boost::bind(&LLInspectAvatar::onClickFreeze, this)); @@ -223,11 +234,15 @@ 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)); // can't make the properties request until the widgets are constructed // as it might return immediately, so do it in postBuild. + + LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::GLOBAL, this); + LLTransientFloater::init(this); } LLInspectAvatar::~LLInspectAvatar() @@ -236,6 +251,8 @@ LLInspectAvatar::~LLInspectAvatar() // view delete mPropertiesRequest; mPropertiesRequest = NULL; + + LLTransientFloaterMgr::getInstance()->removeControlView(this); } /*virtual*/ @@ -257,8 +274,6 @@ BOOL LLInspectAvatar::postBuild(void) } - - // Multiple calls to showInstance("inspect_avatar", foo) will provide different // LLSD for foo, which we will catch here. //virtual @@ -274,7 +289,7 @@ void LLInspectAvatar::onOpen(const LLSD& data) getChild<LLUICtrl>("gear_self_btn")->setVisible(self); getChild<LLUICtrl>("gear_btn")->setVisible(!self); - + // Position the inspector relative to the mouse cursor // Similar to how tooltips are positioned // See LLToolTipMgr::createToolTip @@ -382,11 +397,32 @@ void LLInspectAvatar::processAvatarData(LLAvatarData* data) mPropertiesRequest = NULL; } +// For the avatar inspector, we only want to unpause the fade timer +// if neither the gear menu or self gear menu are open +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() ) + { + return; + } + + if(childHasVisiblePopupMenu()) + { + return; + } + + mOpenTimer.unpause(); +} + void LLInspectAvatar::updateModeratorPanel() { bool enable_moderator_panel = false; - if (LLVoiceChannel::getCurrentVoiceChannel()) + if (LLVoiceChannel::getCurrentVoiceChannel() && + mAvatarID != gAgent.getID()) { LLUUID session_id = LLVoiceChannel::getCurrentVoiceChannel()->getSessionID(); @@ -400,6 +436,7 @@ void LLInspectAvatar::updateModeratorPanel() LLPointer<LLSpeaker> selected_speakerp = speaker_mgr->findSpeaker(mAvatarID); if(speaker_mgr->isVoiceActive() && selected_speakerp && + selected_speakerp->isInVoiceChannel() && ((self_speakerp && self_speakerp->mIsModerator) || gAgent.isGodlike())) { getChild<LLUICtrl>("enable_voice")->setVisible(selected_speakerp->mModeratorMutedVoice); @@ -497,42 +534,58 @@ void LLInspectAvatar::toggleSelectedVoice(bool enabled) void LLInspectAvatar::updateVolumeSlider() { - // By convention, we only display and toggle voice mutes, not all mutes - bool is_muted = LLMuteList::getInstance()-> - isMuted(mAvatarID, LLMute::flagVoiceChat); - bool voice_enabled = gVoiceClient->getVoiceEnabled(mAvatarID); - LLUICtrl* mute_btn = getChild<LLUICtrl>("mute_btn"); - mute_btn->setEnabled( voice_enabled ); - mute_btn->setValue( is_muted ); + bool voice_enabled = gVoiceClient->getVoiceEnabled(mAvatarID); - LLUICtrl* volume_slider = getChild<LLUICtrl>("volume_slider"); - volume_slider->setEnabled( voice_enabled && !is_muted ); - const F32 DEFAULT_VOLUME = 0.5f; - F32 volume; - if (is_muted) - { - // it's clearer to display their volume as zero - volume = 0.f; - } - else if (!voice_enabled) + // Do not display volume slider and mute button if it + // is ourself or we are not in a voice channel together + if (!voice_enabled || (mAvatarID == gAgent.getID())) { - // use nominal value rather than 0 - volume = DEFAULT_VOLUME; + getChild<LLUICtrl>("mute_btn")->setVisible(false); + getChild<LLUICtrl>("volume_slider")->setVisible(false); } - else + + else { - // actual volume - volume = gVoiceClient->getUserVolume(mAvatarID); + getChild<LLUICtrl>("mute_btn")->setVisible(true); + getChild<LLUICtrl>("volume_slider")->setVisible(true); + + // By convention, we only display and toggle voice mutes, not all mutes + bool is_muted = LLMuteList::getInstance()-> + isMuted(mAvatarID, LLMute::flagVoiceChat); + + LLUICtrl* mute_btn = getChild<LLUICtrl>("mute_btn"); + + bool is_linden = LLStringUtil::endsWith(mAvatarName, " Linden"); - // *HACK: Voice client doesn't have any data until user actually - // says something. - if (volume == 0.f) + mute_btn->setEnabled( !is_linden); + mute_btn->setValue( is_muted ); + + LLUICtrl* volume_slider = getChild<LLUICtrl>("volume_slider"); + volume_slider->setEnabled( !is_muted ); + + const F32 DEFAULT_VOLUME = 0.5f; + F32 volume; + if (is_muted) { - volume = DEFAULT_VOLUME; + // it's clearer to display their volume as zero + volume = 0.f; } + else + { + // actual volume + volume = gVoiceClient->getUserVolume(mAvatarID); + + // *HACK: Voice client doesn't have any data until user actually + // says something. + if (volume == 0.f) + { + volume = DEFAULT_VOLUME; + } + } + volume_slider->setValue( (F64)volume ); } - volume_slider->setValue( (F64)volume ); + } void LLInspectAvatar::onClickMuteVolume() @@ -611,6 +664,12 @@ void LLInspectAvatar::onClickIM() closeFloater(); } +void LLInspectAvatar::onClickCall() +{ + LLAvatarActions::startCall(mAvatarID); + closeFloater(); +} + void LLInspectAvatar::onClickTeleport() { LLAvatarActions::offerTeleport(mAvatarID); @@ -629,6 +688,12 @@ void LLInspectAvatar::onClickPay() closeFloater(); } +void LLInspectAvatar::onClickShare() +{ + LLAvatarActions::share(mAvatarID); + closeFloater(); +} + void LLInspectAvatar::onToggleMute() { LLMute mute(mAvatarID, mAvatarName, LLMute::AGENT); @@ -648,7 +713,7 @@ void LLInspectAvatar::onToggleMute() void LLInspectAvatar::onClickReport() { - LLFloaterReporter::showFromObject(mAvatarID); + LLFloaterReporter::showFromAvatar(mAvatarID, mAvatarName); closeFloater(); } diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp index cb35a287e9..91cbbbf430 100644 --- a/indra/newview/llinspectobject.cpp +++ b/indra/newview/llinspectobject.cpp @@ -41,6 +41,7 @@ #include "llslurl.h" #include "llviewermenu.h" // handle_object_touch(), handle_buy() #include "llviewermedia.h" +#include "llviewermediafocus.h" #include "llviewerobjectlist.h" // to select the requested object // Linden libraries @@ -50,6 +51,7 @@ #include "llmenubutton.h" #include "llresmgr.h" // getMonetaryString #include "llsafehandle.h" +#include "llsidetray.h" #include "lltextbox.h" // for description truncation #include "lltrans.h" #include "llui.h" // positionViewNearMouse() @@ -82,6 +84,10 @@ public: // Release the selection and do other cleanup /*virtual*/ void onClose(bool app_quitting); + // override the inspector mouse leave so timer is only paused if + // gear menu is not open + /* virtual */ void onMouseLeave(S32 x, S32 y, MASK mask); + private: // Refresh displayed data with information from selection manager void update(); @@ -181,7 +187,6 @@ BOOL LLInspectObject::postBuild(void) return TRUE; } - // Multiple calls to showInstance("inspect_avatar", foo) will provide different // LLSD for foo, which we will catch here. //virtual @@ -214,6 +219,10 @@ void LLInspectObject::onOpen(const LLSD& data) LLViewerObject* obj = gObjectList.findObject( mObjectID ); if (obj) { + // Media focus and this code fight over the select manager. + // Make sure any media is unfocused before changing the selection here. + LLViewerMediaFocus::getInstance()->clearFocus(); + LLSelectMgr::instance().deselectAll(); mObjectSelection = LLSelectMgr::instance().selectObjectAndFamily(obj); @@ -562,6 +571,23 @@ void LLInspectObject::updateSecureBrowsing() getChild<LLUICtrl>("secure_browsing")->setVisible(is_secure_browsing); } +// For the object inspector, only unpause the fade timer +// if the gear menu is not open +void LLInspectObject::onMouseLeave(S32 x, S32 y, MASK mask) +{ + LLMenuGL* gear_menu = getChild<LLMenuButton>("gear_btn")->getMenu(); + if ( gear_menu && gear_menu->getVisible() ) + { + return; + } + + if(childHasVisiblePopupMenu()) + { + return; + } + + mOpenTimer.unpause(); +} void LLInspectObject::onClickBuy() { @@ -618,8 +644,9 @@ void LLInspectObject::onClickOpen() void LLInspectObject::onClickMoreInfo() { - // *TODO: Show object info side panel, once that is implemented. - LLNotificationsUtil::add("ClickUnimplemented"); + LLSD key; + key["task"] = "task"; + LLSideTray::getInstance()->showPanel("sidepanel_inventory", key); closeFloater(); } diff --git a/indra/newview/llinspectremoteobject.cpp b/indra/newview/llinspectremoteobject.cpp index e4d2eec242..66e4a1bf66 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 @@ -168,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; @@ -183,11 +183,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()) + { + 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()); } ////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llinspecttoast.cpp b/indra/newview/llinspecttoast.cpp new file mode 100644 index 0000000000..3ca8fa2f56 --- /dev/null +++ b/indra/newview/llinspecttoast.cpp @@ -0,0 +1,122 @@ +/** + * @file llinspecttoast.cpp + * @brief Toast inspector implementation. + * + * $LicenseInfo:firstyear=2003&license=viewergpl$ + * + * Copyright (c) 2003-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 "llviewerprecompiledheaders.h" // must be first include + +#include "llinspecttoast.h" +#include "llinspect.h" +#include "llfloaterreg.h" +#include "llscreenchannel.h" +#include "llchannelmanager.h" +#include "lltransientfloatermgr.h" + +using namespace LLNotificationsUI; + +/** + * Represents inspectable toast . + */ +class LLInspectToast: public LLInspect +{ +public: + + LLInspectToast(const LLSD& notification_idl); + virtual ~LLInspectToast(); + + /*virtual*/ void onOpen(const LLSD& notification_id); +private: + void onToastDestroy(LLToast * toast); + +private: + LLPanel* mPanel; + LLScreenChannel* mScreenChannel; +}; + +LLInspectToast::LLInspectToast(const LLSD& notification_id) : + LLInspect(LLSD()), mPanel(NULL) +{ + LLScreenChannelBase* channel = LLChannelManager::getInstance()->findChannelByID( + LLUUID(gSavedSettings.getString("NotificationChannelUUID"))); + mScreenChannel = dynamic_cast<LLScreenChannel*>(channel); + if(NULL == mScreenChannel) + { + llwarns << "Could not get requested screen channel." << llendl; + return; + } + + LLTransientFloaterMgr::getInstance()->addControlView(this); +} +LLInspectToast::~LLInspectToast() +{ + LLTransientFloaterMgr::getInstance()->removeControlView(this); +} + +void LLInspectToast::onOpen(const LLSD& notification_id) +{ + LLInspect::onOpen(notification_id); + LLToast* toast = mScreenChannel->getToastByNotificationID(notification_id); + if (toast == NULL) + { + llwarns << "Could not get requested toast from screen channel." << llendl; + return; + } + toast->setOnToastDestroyedCallback(boost::bind(&LLInspectToast::onToastDestroy, this, _1)); + + LLPanel * panel = toast->getPanel(); + panel->setVisible(TRUE); + panel->setMouseOpaque(FALSE); + if(mPanel != NULL && mPanel->getParent() == this) + { + removeChild(mPanel); + } + addChild(panel); + panel->setFocus(TRUE); + mPanel = panel; + + + LLRect panel_rect; + panel_rect = panel->getRect(); + reshape(panel_rect.getWidth(), panel_rect.getHeight()); + + LLUI::positionViewNearMouse(this); +} + +void LLInspectToast::onToastDestroy(LLToast * toast) +{ + closeFloater(false); +} + +void LLNotificationsUI::registerFloater() +{ + LLFloaterReg::add("inspect_toast", "inspect_toast.xml", + &LLFloaterReg::build<LLInspectToast>); +} + diff --git a/indra/newview/llinspecttoast.h b/indra/newview/llinspecttoast.h new file mode 100644 index 0000000000..ff547154b8 --- /dev/null +++ b/indra/newview/llinspecttoast.h @@ -0,0 +1,40 @@ +/** + * @file llinspecttoast.h + * + * $LicenseInfo:firstyear=2003&license=viewergpl$ + * + * Copyright (c) 2003-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_LLINSPECTTOAST_H +#define LL_LLINSPECTTOAST_H + +namespace LLNotificationsUI +{ +void registerFloater(); +} + +#endif diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index d70221b22a..27a40c6ba0 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -31,6 +31,9 @@ */ #include "llviewerprecompiledheaders.h" +// external projects +#include "lltransfersourceasset.h" + #include "llinventorybridge.h" #include "llagent.h" @@ -174,17 +177,26 @@ time_t LLInvFVBridge::getCreationDate() const } // Can be destroyed (or moved to trash) -BOOL LLInvFVBridge::isItemRemovable() +BOOL LLInvFVBridge::isItemRemovable() const { const LLInventoryModel* model = getInventoryModel(); if(!model) { return FALSE; } + + // Can't delete an item that's in the library. if(!model->isObjectDescendentOf(mUUID, gInventory.getRootFolderID())) { return FALSE; } + + // Disable delete from COF folder; have users explicitly choose "detach/take off". + if (LLAppearanceManager::instance().getIsProtectedCOFItem(mUUID)) + { + return FALSE; + } + const LLInventoryObject *obj = model->getItem(mUUID); if (obj && obj->getIsLinkType()) { @@ -284,12 +296,27 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener* LLMessageSystem* msg = gMessageSystem; const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); LLViewerInventoryItem* item = NULL; - LLViewerInventoryCategory* cat = NULL; std::vector<LLUUID> move_ids; LLInventoryModel::update_map_t update; bool start_new_message = true; S32 count = batch.count(); S32 i; + + // first, hide any 'preview' floaters that correspond to the items + // being deleted. + for(i = 0; i < count; ++i) + { + bridge = (LLInvFVBridge*)(batch.get(i)); + if(!bridge || !bridge->isItemRemovable()) continue; + item = (LLViewerInventoryItem*)model->getItem(bridge->getUUID()); + if(item) + { + LLPreview::hide(item->getUUID()); + } + } + + // do the inventory move to trash + for(i = 0; i < count; ++i) { bridge = (LLInvFVBridge*)(batch.get(i)); @@ -299,7 +326,6 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener* { if(item->getParentUUID() == trash_id) continue; move_ids.push_back(item->getUUID()); - LLPreview::hide(item->getUUID()); --update[item->getParentUUID()]; ++update[trash_id]; if(start_new_message) @@ -331,11 +357,12 @@ void LLInvFVBridge::removeBatchNoCheck(LLDynamicArray<LLFolderViewEventListener* gInventory.accountForUpdate(update); update.clear(); } + for(i = 0; i < count; ++i) { bridge = (LLInvFVBridge*)(batch.get(i)); if(!bridge || !bridge->isItemRemovable()) continue; - cat = (LLViewerInventoryCategory*)model->getCategory(bridge->getUUID()); + LLViewerInventoryCategory* cat = (LLViewerInventoryCategory*)model->getCategory(bridge->getUUID()); if(cat) { if(cat->getParentUUID() == trash_id) continue; @@ -456,11 +483,15 @@ BOOL LLInvFVBridge::isClipboardPasteableAsLink() const } void hide_context_entries(LLMenuGL& menu, - const std::vector<std::string> &entries_to_show, - const std::vector<std::string> &disabled_entries) + const menuentry_vec_t &entries_to_show, + const menuentry_vec_t &disabled_entries) { const LLView::child_list_t *list = menu.getChildList(); + // For removing double separators or leading separator. Start at true so that + // if the first element is a separator, it will not be shown. + BOOL is_previous_entry_separator = TRUE; + LLView::child_list_t::const_iterator itor; for (itor = list->begin(); itor != list->end(); ++itor) { @@ -475,7 +506,7 @@ void hide_context_entries(LLMenuGL& menu, bool found = false; - std::vector<std::string>::const_iterator itor2; + menuentry_vec_t::const_iterator itor2; for (itor2 = entries_to_show.begin(); itor2 != entries_to_show.end(); ++itor2) { if (*itor2 == name) @@ -483,6 +514,17 @@ void hide_context_entries(LLMenuGL& menu, found = true; } } + + // Don't allow multiple separators in a row (e.g. such as if there are no items + // between two separators). + if (found) + { + const BOOL is_entry_separator = (dynamic_cast<LLMenuItemSeparatorGL *>(*itor) != NULL); + if (is_entry_separator && is_previous_entry_separator) + found = false; + is_previous_entry_separator = is_entry_separator; + } + if (!found) { (*itor)->setVisible(FALSE); @@ -503,8 +545,8 @@ void hide_context_entries(LLMenuGL& menu, // Helper for commonly-used entries void LLInvFVBridge::getClipboardEntries(bool show_asset_id, - std::vector<std::string> &items, - std::vector<std::string> &disabled_items, U32 flags) + menuentry_vec_t &items, + menuentry_vec_t &disabled_items, U32 flags) { const LLInventoryObject *obj = getInventoryObject(); @@ -544,7 +586,16 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id, if (show_asset_id) { items.push_back(std::string("Copy Asset UUID")); - if ( (! ( isItemPermissive() || gAgent.isGodlike() ) ) + + bool is_asset_knowable = false; + + LLViewerInventoryItem* inv_item = gInventory.getItem(mUUID); + if (inv_item) + { + is_asset_knowable = is_asset_id_knowable(inv_item->getType()); + } + if ( !is_asset_knowable // disable menu item for Inventory items with unknown asset. EXT-5308 + || (! ( isItemPermissive() || gAgent.isGodlike() ) ) || (flags & FIRST_SELECTED_ITEM) == 0) { disabled_items.push_back(std::string("Copy Asset UUID")); @@ -560,8 +611,12 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id, } } - items.push_back(std::string("Paste")); - if (!isClipboardPasteable() || (flags & FIRST_SELECTED_ITEM) == 0) + // Don't allow items to be pasted directly into the COF. + if (!isCOFFolder()) + { + items.push_back(std::string("Paste")); + } + if (!isClipboardPasteable() || ((flags & FIRST_SELECTED_ITEM) == 0)) { disabled_items.push_back(std::string("Paste")); } @@ -574,19 +629,10 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id, disabled_items.push_back(std::string("Paste As Link")); } } - items.push_back(std::string("Paste Separator")); - - if (obj && obj->getIsLinkType() && !get_is_item_worn(mUUID)) - { - items.push_back(std::string("Remove Link")); - } + items.push_back(std::string("Paste Separator")); - items.push_back(std::string("Delete")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Delete")); - } + addDeleteContextMenuOptions(items, disabled_items); // If multiple items are selected, disable properties (if it exists). if ((flags & FIRST_SELECTED_ITEM) == 0) @@ -598,16 +644,11 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id, void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { lldebugs << "LLInvFVBridge::buildContextMenu()" << llendl; - std::vector<std::string> items; - std::vector<std::string> disabled_items; - if(isInTrash()) + menuentry_vec_t items; + menuentry_vec_t disabled_items; + if(isItemInTrash()) { - items.push_back(std::string("PurgeItem")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("PurgeItem")); - } - items.push_back(std::string("RestoreItem")); + addTrashContextMenuOptions(items, disabled_items); } else { @@ -619,6 +660,53 @@ void LLInvFVBridge::buildContextMenu(LLMenuGL& menu, U32 flags) hide_context_entries(menu, items, disabled_items); } +void LLInvFVBridge::addTrashContextMenuOptions(menuentry_vec_t &items, + menuentry_vec_t &disabled_items) +{ + const LLInventoryObject *obj = getInventoryObject(); + if (obj && obj->getIsLinkType()) + { + items.push_back(std::string("Find Original")); + if (isLinkedObjectMissing()) + { + disabled_items.push_back(std::string("Find Original")); + } + } + items.push_back(std::string("Purge Item")); + if (!isItemRemovable()) + { + disabled_items.push_back(std::string("Purge Item")); + } + items.push_back(std::string("Restore Item")); +} + +void LLInvFVBridge::addDeleteContextMenuOptions(menuentry_vec_t &items, + menuentry_vec_t &disabled_items) +{ + // Don't allow delete as a direct option from COF folder. + if (isCOFFolder()) + { + return; + } + + const LLInventoryObject *obj = getInventoryObject(); + + // "Remove link" and "Delete" are the same operation. + if (obj && obj->getIsLinkType() && !get_is_item_worn(mUUID)) + { + items.push_back(std::string("Remove Link")); + } + else + { + items.push_back(std::string("Delete")); + } + + if (!isItemRemovable()) + { + disabled_items.push_back(std::string("Delete")); + } +} + // *TODO: remove this BOOL LLInvFVBridge::startDrag(EDragAndDropType* type, LLUUID* id) const { @@ -665,7 +753,7 @@ LLInventoryModel* LLInvFVBridge::getInventoryModel() const return panel ? panel->getModel() : NULL; } -BOOL LLInvFVBridge::isInTrash() const +BOOL LLInvFVBridge::isItemInTrash() const { LLInventoryModel* model = getInventoryModel(); if(!model) return FALSE; @@ -675,7 +763,7 @@ BOOL LLInvFVBridge::isInTrash() const BOOL LLInvFVBridge::isLinkedObjectInTrash() const { - if (isInTrash()) return TRUE; + if (isItemInTrash()) return TRUE; const LLInventoryObject *obj = getInventoryObject(); if (obj && obj->getIsLinkType()) @@ -712,14 +800,7 @@ BOOL LLInvFVBridge::isAgentInventory() const BOOL LLInvFVBridge::isCOFFolder() const { - const LLInventoryModel* model = getInventoryModel(); - if(!model) return TRUE; - const LLUUID cof_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); - if (mUUID == cof_id || model->isObjectDescendentOf(mUUID, cof_id)) - { - return TRUE; - } - return FALSE; + return LLAppearanceManager::instance().getIsInCOF(mUUID); } BOOL LLInvFVBridge::isItemPermissive() const @@ -733,7 +814,7 @@ void LLInvFVBridge::changeItemParent(LLInventoryModel* model, const LLUUID& new_parent_id, BOOL restamp) { - if(item->getParentUUID() != new_parent_id) + if (item->getParentUUID() != new_parent_id) { LLInventoryModel::update_list_t update; LLInventoryModel::LLCategoryUpdate old_folder(item->getParentUUID(),-1); @@ -996,9 +1077,9 @@ void LLItemBridge::performAction(LLFolderView* folder, LLInventoryModel* model, else if ("copy_uuid" == action) { // Single item only - LLInventoryItem* item = model->getItem(mUUID); + LLViewerInventoryItem* item = static_cast<LLViewerInventoryItem*>(getItem()); if(!item) return; - LLUUID asset_id = item->getAssetUUID(); + LLUUID asset_id = item->getProtectedAssetUUID(); std::string buffer; asset_id.toString(buffer); @@ -1038,7 +1119,7 @@ void LLItemBridge::performAction(LLFolderView* folder, LLInventoryModel* model, void LLItemBridge::selectItem() { - LLViewerInventoryItem* item = (LLViewerInventoryItem*)getItem(); + LLViewerInventoryItem* item = static_cast<LLViewerInventoryItem*>(getItem()); if(item && !item->isComplete()) { item->fetchFromServer(); @@ -1047,7 +1128,7 @@ void LLItemBridge::selectItem() void LLItemBridge::restoreItem() { - LLViewerInventoryItem* item = (LLViewerInventoryItem*)getItem(); + LLViewerInventoryItem* item = static_cast<LLViewerInventoryItem*>(getItem()); if(item) { LLInventoryModel* model = getInventoryModel(); @@ -1059,7 +1140,10 @@ void LLItemBridge::restoreItem() void LLItemBridge::restoreToWorld() { - LLViewerInventoryItem* itemp = (LLViewerInventoryItem*)getItem(); + //Similar functionality to the drag and drop rez logic + bool remove_from_inventory = false; + + LLViewerInventoryItem* itemp = static_cast<LLViewerInventoryItem*>(getItem()); if (itemp) { LLMessageSystem* msg = gMessageSystem; @@ -1071,23 +1155,20 @@ void LLItemBridge::restoreToWorld() msg->nextBlockFast(_PREHASH_InventoryData); itemp->packMessage(msg); msg->sendReliable(gAgent.getRegion()->getHost()); - } - //Similar functionality to the drag and drop rez logic - BOOL remove_from_inventory = FALSE; - - //remove local inventory copy, sim will deal with permissions and removing the item - //from the actual inventory if its a no-copy etc - if(!itemp->getPermissions().allowCopyBy(gAgent.getID())) - { - remove_from_inventory = TRUE; - } - - // Check if it's in the trash. (again similar to the normal rez logic) - const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); - if(gInventory.isObjectDescendentOf(itemp->getUUID(), trash_id)) - { - remove_from_inventory = TRUE; + //remove local inventory copy, sim will deal with permissions and removing the item + //from the actual inventory if its a no-copy etc + if(!itemp->getPermissions().allowCopyBy(gAgent.getID())) + { + remove_from_inventory = true; + } + + // Check if it's in the trash. (again similar to the normal rez logic) + const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); + if(gInventory.isObjectDescendentOf(itemp->getUUID(), trash_id)) + { + remove_from_inventory = true; + } } if(remove_from_inventory) @@ -1355,11 +1436,7 @@ BOOL LLItemBridge::isItemPermissive() const LLViewerInventoryItem* item = getItem(); if(item) { - U32 mask = item->getPermissions().getMaskBase(); - if((mask & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED) - { - return TRUE; - } + return item->getIsFullPerm(); } return FALSE; } @@ -1414,7 +1491,7 @@ public: }; // Can be destroyed (or moved to trash) -BOOL LLFolderBridge::isItemRemovable() +BOOL LLFolderBridge::isItemRemovable() const { LLInventoryModel* model = getInventoryModel(); if(!model) @@ -1473,7 +1550,7 @@ BOOL LLFolderBridge::isUpToDate() const BOOL LLFolderBridge::isItemCopyable() const { - return TRUE; + return FALSE; } BOOL LLFolderBridge::copyToClipboard() const @@ -1856,7 +1933,7 @@ bool LLFindCOFValidItems::operator()(LLInventoryCategory* cat, // - links to attachments // - links to gestures // - links to ensemble folders - LLViewerInventoryItem *linked_item = ((LLViewerInventoryItem*)item)->getLinkedItem(); // BAP - safe? + LLViewerInventoryItem *linked_item = ((LLViewerInventoryItem*)item)->getLinkedItem(); if (linked_item) { LLAssetType::EType type = linked_item->getType(); @@ -1867,7 +1944,7 @@ bool LLFindCOFValidItems::operator()(LLInventoryCategory* cat, } else { - LLViewerInventoryCategory *linked_category = ((LLViewerInventoryItem*)item)->getLinkedCategory(); // BAP - safe? + LLViewerInventoryCategory *linked_category = ((LLViewerInventoryItem*)item)->getLinkedCategory(); // BAP remove AT_NONE support after ensembles are fully working? return (linked_category && ((linked_category->getPreferredType() == LLFolderType::FT_NONE) || @@ -2074,7 +2151,12 @@ void LLFolderBridge::performAction(LLFolderView* folder, LLInventoryModel* model { if ("open" == action) { - openItem(); + LLFolderViewFolder *f = dynamic_cast<LLFolderViewFolder *>(folder->getItemByID(mUUID)); + if (f) + { + f->setOpen(TRUE); + } + return; } else if ("paste" == action) @@ -2173,7 +2255,10 @@ void LLFolderBridge::determineFolderType() { LLInventoryModel* model = getInventoryModel(); LLViewerInventoryCategory* category = model->getCategory(mUUID); - category->determineFolderType(); + if (category) + { + category->determineFolderType(); + } } } @@ -2228,9 +2313,22 @@ LLUIImagePtr LLFolderBridge::getIcon() const LLUIImagePtr LLFolderBridge::getIcon(LLFolderType::EType preferred_type) { // we only have one folder image now + if (preferred_type == LLFolderType::FT_OUTFIT) + { + return LLUI::getUIImage("Inv_LookFolderClosed"); + } return LLUI::getUIImage("Inv_FolderClosed"); } +LLUIImagePtr LLFolderBridge::getOpenIcon() const +{ + if (getPreferredType() == LLFolderType::FT_OUTFIT) + { + return LLUI::getUIImage("Inv_LookFolderOpen"); + } + return LLUI::getUIImage("Inv_FolderOpen"); +} + BOOL LLFolderBridge::renameItem(const std::string& new_name) { if(!isItemRenameable()) @@ -2357,7 +2455,12 @@ void LLFolderBridge::pasteFromClipboard() { // move_inventory_item() is not enough, //we have to update inventory locally too - changeItemParent(model, dynamic_cast<LLViewerInventoryItem*>(item), parent_id, FALSE); + LLViewerInventoryItem* viitem = dynamic_cast<LLViewerInventoryItem*>(item); + llassert(viitem); + if (viitem) + { + changeItemParent(model, viitem, parent_id, FALSE); + } } else { @@ -2423,17 +2526,19 @@ void LLFolderBridge::staticFolderOptionsMenu() void LLFolderBridge::folderOptionsMenu() { - std::vector<std::string> disabled_items; + menuentry_vec_t disabled_items; LLInventoryModel* model = getInventoryModel(); if(!model) return; const LLInventoryCategory* category = model->getCategory(mUUID); + if(!category) return; + LLFolderType::EType type = category->getPreferredType(); - const bool is_default_folder = category && LLFolderType::lookupIsProtectedType(type); + const bool is_system_folder = LLFolderType::lookupIsProtectedType(type); // BAP change once we're no longer treating regular categories as ensembles. - const bool is_ensemble = category && (type == LLFolderType::FT_NONE || - LLFolderType::lookupIsEnsembleType(type)); + const bool is_ensemble = (type == LLFolderType::FT_NONE || + LLFolderType::lookupIsEnsembleType(type)); // calling card related functionality for folders. @@ -2441,11 +2546,11 @@ void LLFolderBridge::folderOptionsMenu() if (is_sidepanel) { mItems.push_back("Rename"); - mItems.push_back("Delete"); + addDeleteContextMenuOptions(mItems, disabled_items); } - // Only enable calling-card related options for non-default folders. - if (!is_sidepanel && !is_default_folder) + // Only enable calling-card related options for non-system folders. + if (!is_sidepanel && !is_system_folder) { LLIsType is_callingcard(LLAssetType::AT_CALLINGCARD); if (mCallingCards || checkFolderForContentsOfType(model, is_callingcard)) @@ -2479,10 +2584,14 @@ void LLFolderBridge::folderOptionsMenu() mItems.push_back(std::string("Folder Wearables Separator")); } - // Only enable add/replace outfit for non-default folders. - if (!is_default_folder) + // Only enable add/replace outfit for non-system folders. + if (!is_system_folder) { - mItems.push_back(std::string("Add To Outfit")); + // Adding an outfit onto another (versus replacing) doesn't make sense. + if (type != LLFolderType::FT_OUTFIT) + { + mItems.push_back(std::string("Add To Outfit")); + } mItems.push_back(std::string("Replace Outfit")); } if (is_ensemble) @@ -2552,7 +2661,7 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags) lldebugs << "LLFolderBridge::buildContextMenu()" << llendl; -// std::vector<std::string> disabled_items; +// menuentry_vec_t disabled_items; LLInventoryModel* model = getInventoryModel(); if(!model) return; const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); @@ -2569,17 +2678,11 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags) // This is the trash. mItems.push_back(std::string("Empty Trash")); } - else if(model->isObjectDescendentOf(mUUID, trash_id)) + else if(isItemInTrash()) { // This is a folder in the trash. mItems.clear(); // clear any items that used to exist - mItems.push_back(std::string("Purge Item")); - if (!isItemRemovable()) - { - mDisabledItems.push_back(std::string("Purge Item")); - } - - mItems.push_back(std::string("Restore Item")); + addTrashContextMenuOptions(mItems, mDisabledItems); } else if(isAgentInventory()) // do not allow creating in library { @@ -2597,23 +2700,33 @@ void LLFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags) mItems.push_back(std::string("New Gesture")); mItems.push_back(std::string("New Clothes")); mItems.push_back(std::string("New Body Parts")); - mItems.push_back(std::string("Change Type")); - LLViewerInventoryCategory *cat = getCategory(); + // Changing folder types is just a debug feature; this is fairly unsupported + // and can lead to unexpected behavior if enabled. +#if !LL_RELEASE_FOR_DOWNLOAD + mItems.push_back(std::string("Change Type")); + const LLViewerInventoryCategory *cat = getCategory(); if (cat && LLFolderType::lookupIsProtectedType(cat->getPreferredType())) { mDisabledItems.push_back(std::string("Change Type")); } - +#endif getClipboardEntries(false, mItems, mDisabledItems, flags); } else { // Want some but not all of the items from getClipboardEntries for outfits. - if (cat && cat->getPreferredType()==LLFolderType::FT_OUTFIT) + if (cat && (cat->getPreferredType() == LLFolderType::FT_OUTFIT)) { mItems.push_back(std::string("Rename")); - mItems.push_back(std::string("Delete")); + + addDeleteContextMenuOptions(mItems, mDisabledItems); + // EXT-4030: disallow deletion of currently worn outfit + const LLViewerInventoryItem *base_outfit_link = LLAppearanceManager::instance().getBaseOutfitLink(); + if (base_outfit_link && (cat == base_outfit_link->getLinkedCategory())) + { + mDisabledItems.push_back(std::string("Delete")); + } } } @@ -2857,8 +2970,6 @@ void LLFolderBridge::modifyOutfit(BOOL append) LLViewerInventoryCategory* cat = getCategory(); if(!cat) return; - // BAP - was: - // wear_inventory_category_on_avatar( cat, append ); LLAppearanceManager::instance().wearInventoryCategory( cat, FALSE, append ); } @@ -2902,80 +3013,6 @@ bool move_task_inventory_callback(const LLSD& notification, const LLSD& response return false; } -/* -Next functions intended to reorder items in the inventory folder and save order on server -Is now used for Favorites folder. - -*TODO: refactoring is needed with Favorites Bar functionality. Probably should be moved in LLInventoryModel -*/ -void saveItemsOrder(LLInventoryModel::item_array_t& items) -{ - int sortField = 0; - - // current order is saved by setting incremental values (1, 2, 3, ...) for the sort field - for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i) - { - LLViewerInventoryItem* item = *i; - - item->setSortField(++sortField); - item->setComplete(TRUE); - item->updateServer(FALSE); - - gInventory.updateItem(item); - - // Tell the parent folder to refresh its sort order. - gInventory.addChangedMask(LLInventoryObserver::SORT, item->getParentUUID()); - } - - gInventory.notifyObservers(); -} - -LLInventoryModel::item_array_t::iterator findItemByUUID(LLInventoryModel::item_array_t& items, const LLUUID& id) -{ - LLInventoryModel::item_array_t::iterator result = items.end(); - - for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i) - { - if ((*i)->getUUID() == id) - { - result = i; - break; - } - } - - return result; -} - -// See also LLInventorySort where landmarks in the Favorites folder are sorted. -class LLViewerInventoryItemSort -{ -public: - bool operator()(const LLPointer<LLViewerInventoryItem>& a, const LLPointer<LLViewerInventoryItem>& b) - { - return a->getSortField() < b->getSortField(); - } -}; - -/** - * Sorts passed items by LLViewerInventoryItem sort field. - * - * @param[in, out] items - array of items, not sorted. - */ -void rearrange_item_order_by_sort_field(LLInventoryModel::item_array_t& items) -{ - static LLViewerInventoryItemSort sort_functor; - std::sort(items.begin(), items.end(), sort_functor); -} - -void updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& srcItemId, const LLUUID& destItemId) -{ - LLViewerInventoryItem* srcItem = gInventory.getItem(srcItemId); - LLViewerInventoryItem* destItem = gInventory.getItem(destItemId); - - items.erase(findItemByUUID(items, srcItem->getUUID())); - items.insert(findItemByUUID(items, destItem->getUUID()), srcItem); -} - BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, BOOL drop) { @@ -2996,7 +3033,6 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, LLViewerObject* object = NULL; if(LLToolDragAndDrop::SOURCE_AGENT == source) { - BOOL is_movable = TRUE; switch( inv_item->getActualType() ) { @@ -3008,11 +3044,18 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, } const LLUUID trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH); - BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id); + const BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id); const LLUUID current_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT); - BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); - BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); + const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); + const BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); + const BOOL move_is_outof_current_outfit = LLAppearanceManager::instance().getIsInCOF(inv_item->getUUID()); + // Can't explicitly drag things out of the COF. + if (move_is_outof_current_outfit) + { + is_movable = FALSE; + } + if(is_movable && move_is_into_trash) { is_movable = inv_item->getIsLinkType() || !get_is_item_worn(inv_item->getUUID()); @@ -3058,36 +3101,34 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, // if dragging from/into favorites folder only reorder items if ((mUUID == inv_item->getParentUUID()) && folder_allows_reorder) { - LLInventoryModel::cat_array_t cats; - LLInventoryModel::item_array_t items; - LLIsType is_type(LLAssetType::AT_LANDMARK); - model->collectDescendentsIf(mUUID, cats, items, LLInventoryModel::EXCLUDE_TRASH, is_type); - LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get()); LLFolderViewItem* itemp = panel ? panel->getRootFolder()->getDraggingOverItem() : NULL; if (itemp) { LLUUID srcItemId = inv_item->getUUID(); LLUUID destItemId = itemp->getListener()->getUUID(); - - // ensure items are sorted properly before changing order. EXT-3498 - rearrange_item_order_by_sort_field(items); - - // update order - updateItemsOrder(items, srcItemId, destItemId); - - saveItemsOrder(items); + gInventory.rearrangeFavoriteLandmarks(srcItemId, destItemId); } } else if (favorites_id == mUUID) // if target is the favorites folder we use copy { + // use callback to rearrange favorite landmarks after adding + // to have new one placed before target (on which it was dropped). See EXT-4312. + LLPointer<AddFavoriteLandmarkCallback> cb = new AddFavoriteLandmarkCallback(); + LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get()); + LLFolderViewItem* drag_over_item = panel ? panel->getRootFolder()->getDraggingOverItem() : NULL; + if (drag_over_item && drag_over_item->getListener()) + { + cb.get()->setTargetLandmarkId(drag_over_item->getListener()->getUUID()); + } + copy_inventory_item( gAgent.getID(), inv_item->getPermissions().getOwner(), inv_item->getUUID(), mUUID, std::string(), - LLPointer<LLInventoryCallback>(NULL)); + cb); } else if (move_is_into_current_outfit || move_is_into_outfit) { @@ -3252,17 +3293,11 @@ bool LLTextureBridge::canSaveTexture(void) void LLTextureBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { lldebugs << "LLTextureBridge::buildContextMenu()" << llendl; - std::vector<std::string> items; - std::vector<std::string> disabled_items; - if(isInTrash()) + menuentry_vec_t items; + menuentry_vec_t disabled_items; + if(isItemInTrash()) { - items.push_back(std::string("Purge Item")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Purge Item")); - } - - items.push_back(std::string("Restore Item")); + addTrashContextMenuOptions(items, disabled_items); } else { @@ -3345,18 +3380,12 @@ void LLSoundBridge::openSoundPreview(void* which) void LLSoundBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { lldebugs << "LLSoundBridge::buildContextMenu()" << llendl; - std::vector<std::string> items; - std::vector<std::string> disabled_items; + menuentry_vec_t items; + menuentry_vec_t disabled_items; - if(isInTrash()) + if(isItemInTrash()) { - items.push_back(std::string("Purge Item")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Purge Item")); - } - - items.push_back(std::string("Restore Item")); + addTrashContextMenuOptions(items, disabled_items); } else { @@ -3393,19 +3422,13 @@ LLUIImagePtr LLLandmarkBridge::getIcon() const void LLLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { - std::vector<std::string> items; - std::vector<std::string> disabled_items; + menuentry_vec_t items; + menuentry_vec_t disabled_items; lldebugs << "LLLandmarkBridge::buildContextMenu()" << llendl; - if(isInTrash()) + if(isItemInTrash()) { - items.push_back(std::string("Purge Item")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Purge Item")); - } - - items.push_back(std::string("Restore Item")); + addTrashContextMenuOptions(items, disabled_items); } else { @@ -3619,18 +3642,12 @@ void LLCallingCardBridge::openItem() void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { lldebugs << "LLCallingCardBridge::buildContextMenu()" << llendl; - std::vector<std::string> items; - std::vector<std::string> disabled_items; + menuentry_vec_t items; + menuentry_vec_t disabled_items; - if(isInTrash()) + if(isItemInTrash()) { - items.push_back(std::string("Purge Item")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Purge Item")); - } - - items.push_back(std::string("Restore Item")); + addTrashContextMenuOptions(items, disabled_items); } else { @@ -3641,9 +3658,13 @@ void LLCallingCardBridge::buildContextMenu(LLMenuGL& menu, U32 flags) LLInventoryItem* item = getItem(); BOOL good_card = (item - && (LLUUID::null != item->getCreatorUUID()) - && (item->getCreatorUUID() != gAgent.getID())); - BOOL user_online = (LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID())); + && (LLUUID::null != item->getCreatorUUID()) + && (item->getCreatorUUID() != gAgent.getID())); + BOOL user_online = FALSE; + if (item) + { + user_online = (LLAvatarTracker::instance().isBuddyOnline(item->getCreatorUUID())); + } items.push_back(std::string("Send Instant Message Separator")); items.push_back(std::string("Send Instant Message")); items.push_back(std::string("Offer Teleport...")); @@ -3734,18 +3755,6 @@ BOOL LLCallingCardBridge::dragOrDrop(MASK mask, BOOL drop, return rv; } -BOOL LLCallingCardBridge::removeItem() -{ - if (LLFriendCardsManager::instance().isItemInAnyFriendsList(getItem())) - { - LLAvatarActions::removeFriendDialog(getItem()->getCreatorUUID()); - return FALSE; - } - else - { - return LLItemBridge::removeItem(); - } -} // +=================================================+ // | LLNotecardBridge | // +=================================================+ @@ -3834,6 +3843,26 @@ 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)); + LLViewerInventoryItem* item = gInventory.getItem(mUUID); + llassert(item); + if (item) + { + LLGestureManager::instance().activateGestureWithAsset(mUUID, item->getAssetUUID(), inform_server, deactivate_similar); + } + } + else + { + playGesture(mUUID); + } + } else LLItemBridge::performAction(folder, model, action); } @@ -3857,25 +3886,36 @@ void LLGestureBridge::openItem() BOOL LLGestureBridge::removeItem() { - // Force close the preview window, if it exists - LLGestureManager::instance().deactivateGesture(mUUID); + // Grab class information locally since *this may be deleted + // within this function. Not a great pattern... + const LLInventoryModel* model = getInventoryModel(); + if(!model) + { + return FALSE; + } + const LLUUID item_id = mUUID; + + // This will also force close the preview window, if it exists. + // This may actually delete *this, if mUUID is in the COF. + LLGestureManager::instance().deactivateGesture(item_id); + + // If deactivateGesture deleted *this, then return out immediately. + if (!model->getObject(item_id)) + { + return TRUE; + } + return LLItemBridge::removeItem(); } void LLGestureBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { lldebugs << "LLGestureBridge::buildContextMenu()" << llendl; - std::vector<std::string> items; - std::vector<std::string> disabled_items; - if(isInTrash()) + menuentry_vec_t items; + menuentry_vec_t disabled_items; + if(isItemInTrash()) { - items.push_back(std::string("Purge Item")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Purge Item")); - } - - items.push_back(std::string("Restore Item")); + addTrashContextMenuOptions(items, disabled_items); } else { @@ -3902,6 +3942,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 | // +=================================================+ @@ -3913,19 +3967,13 @@ LLUIImagePtr LLAnimationBridge::getIcon() const void LLAnimationBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { - std::vector<std::string> items; - std::vector<std::string> disabled_items; + menuentry_vec_t items; + menuentry_vec_t disabled_items; lldebugs << "LLAnimationBridge::buildContextMenu()" << llendl; - if(isInTrash()) + if(isItemInTrash()) { - items.push_back(std::string("Purge Item")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Purge Item")); - } - - items.push_back(std::string("Restore Item")); + addTrashContextMenuOptions(items, disabled_items); } else { @@ -4051,12 +4099,13 @@ void LLObjectBridge::performAction(LLFolderView* folder, LLInventoryModel* model gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); gMessageSystem->addUUIDFast(_PREHASH_ItemID, item->getLinkedUUID()); gMessageSystem->sendReliable( gAgent.getRegion()->getHost()); - } - // this object might have been selected, so let the selection manager know it's gone now - LLViewerObject *found_obj = gObjectList.findObject(item->getLinkedUUID()); - if (found_obj) - { - LLSelectMgr::getInstance()->remove(found_obj); + + // this object might have been selected, so let the selection manager know it's gone now + LLViewerObject *found_obj = gObjectList.findObject(item->getLinkedUUID()); + if (found_obj) + { + LLSelectMgr::getInstance()->remove(found_obj); + } } } else LLItemBridge::performAction(folder, model, action); @@ -4194,17 +4243,11 @@ static LLNotificationFunctorRegistration confirm_replace_attachment_rez_reg("Rep void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { - std::vector<std::string> items; - std::vector<std::string> disabled_items; - if(isInTrash()) + menuentry_vec_t items; + menuentry_vec_t disabled_items; + if(isItemInTrash()) { - items.push_back(std::string("Purge Item")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Purge Item")); - } - - items.push_back(std::string("Restore Item")); + addTrashContextMenuOptions(items, disabled_items); } else { @@ -4230,9 +4273,10 @@ void LLObjectBridge::buildContextMenu(LLMenuGL& menu, U32 flags) if( get_is_item_worn( mUUID ) ) { + items.push_back(std::string("Attach Separator")); items.push_back(std::string("Detach From Yourself")); } - else if (!isInTrash() && !isLinkedObjectInTrash() && !isLinkedObjectMissing()) + else if (!isItemInTrash() && !isLinkedObjectInTrash() && !isLinkedObjectMissing()) { items.push_back(std::string("Attach Separator")); items.push_back(std::string("Object Wear")); @@ -4570,7 +4614,7 @@ void LLWearableBridge::openItem() LLInvFVBridgeAction::doAction(item->getType(),mUUID,getInventoryModel()); } /* - if( isInTrash() ) + if( isItemInTrash() ) { LLNotificationsUtil::add("CannotWearTrash"); } @@ -4610,17 +4654,11 @@ void LLWearableBridge::openItem() void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { lldebugs << "LLWearableBridge::buildContextMenu()" << llendl; - std::vector<std::string> items; - std::vector<std::string> disabled_items; - if(isInTrash()) + menuentry_vec_t items; + menuentry_vec_t disabled_items; + if(isItemInTrash()) { - items.push_back(std::string("Purge Item")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Purge Item")); - } - - items.push_back(std::string("Restore Item")); + addTrashContextMenuOptions(items, disabled_items); } else { // FWIW, it looks like SUPPRESS_OPEN_ITEM is not set anywhere @@ -4652,7 +4690,10 @@ void LLWearableBridge::buildContextMenu(LLMenuGL& menu, U32 flags) getClipboardEntries(true, items, disabled_items, flags); - items.push_back(std::string("Wearable Separator")); + if (!is_sidepanel) + { + items.push_back(std::string("Wearable Separator")); + } items.push_back(std::string("Wearable Edit")); @@ -4675,6 +4716,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())) { @@ -4924,8 +4966,12 @@ void LLWearableBridge::onRemoveFromAvatarArrived(LLWearable* wearable, } // Find and remove this item from the COF. + // FIXME 2.1 - call removeCOFItemLinks in llappearancemgr instead. LLInventoryModel::item_array_t items = gInventory.collectLinkedItems(item_id, LLAppearanceManager::instance().getCOF()); - llassert(items.size() == 1); // Should always have one and only one item linked to this in the COF. + if (items.size() != 1) + { + llwarns << "Found " << items.size() << " COF links to " << item_id.asString() << ", expected 1" << llendl; + } for (LLInventoryModel::item_array_t::const_iterator iter = items.begin(); iter != items.end(); ++iter) @@ -4961,7 +5007,10 @@ void LLWearableBridge::removeAllClothesFromAvatar() // Find and remove this item from the COF. LLInventoryModel::item_array_t items = gInventory.collectLinkedItems( item_id, LLAppearanceManager::instance().getCOF()); - llassert(items.size() == 1); // Should always have one and only one item linked to this in the COF. + if (items.size() != 1) + { + llwarns << "Found " << items.size() << " COF links to " << item_id.asString() << ", expected 1" << llendl; + } for (LLInventoryModel::item_array_t::const_iterator iter = items.begin(); iter != items.end(); ++iter) @@ -5068,12 +5117,18 @@ void LLInvFVBridgeAction::doAction(LLAssetType::EType asset_type, //static void LLInvFVBridgeAction::doAction(const LLUUID& uuid, LLInventoryModel* model) { - LLAssetType::EType asset_type = model->getItem(uuid)->getType(); - LLInvFVBridgeAction* action = createAction(asset_type,uuid,model); - if(action) + llassert(model); + LLViewerInventoryItem* item = model->getItem(uuid); + llassert(item); + if (item) { - action->doIt(); - delete action; + LLAssetType::EType asset_type = item->getType(); + LLInvFVBridgeAction* action = createAction(asset_type,uuid,model); + if(action) + { + action->doIt(); + delete action; + } } } @@ -5117,8 +5172,12 @@ void LLLandmarkBridgeAction::doIt() // Opening (double-clicking) a landmark immediately teleports, // but warns you the first time. LLSD payload; - payload["asset_id"] = item->getAssetUUID(); - LLNotificationsUtil::add("TeleportFromLandmark", LLSD(), payload); + payload["asset_id"] = item->getAssetUUID(); + + LLSD args; + args["LOCATION"] = item->getName(); + + LLNotificationsUtil::add("TeleportFromLandmark", args, payload); } LLInvFVBridgeAction::doIt(); @@ -5199,7 +5258,7 @@ void LLLSLTextBridgeAction::doIt() } -BOOL LLWearableBridgeAction::isInTrash() const +BOOL LLWearableBridgeAction::isItemInTrash() const { if(!mModel) return FALSE; const LLUUID trash_id = mModel->findCategoryUUIDForType(LLFolderType::FT_TRASH); @@ -5247,7 +5306,7 @@ void LLWearableBridgeAction::wearOnAvatar() //virtual void LLWearableBridgeAction::doIt() { - if(isInTrash()) + if(isItemInTrash()) { LLNotificationsUtil::add("CannotWearTrash"); } @@ -5306,30 +5365,20 @@ void LLLinkItemBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { // *TODO: Translate lldebugs << "LLLink::buildContextMenu()" << llendl; - std::vector<std::string> items; - std::vector<std::string> disabled_items; + menuentry_vec_t items; + menuentry_vec_t disabled_items; items.push_back(std::string("Find Original")); disabled_items.push_back(std::string("Find Original")); - if(isInTrash()) + if(isItemInTrash()) { - items.push_back(std::string("Purge Item")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Purge Item")); - } - - items.push_back(std::string("Restore Item")); + addTrashContextMenuOptions(items, disabled_items); } else { items.push_back(std::string("Properties")); - items.push_back(std::string("Delete")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Delete")); - } + addDeleteContextMenuOptions(items, disabled_items); } hide_context_entries(menu, items, disabled_items); } @@ -5360,27 +5409,17 @@ void LLLinkFolderBridge::buildContextMenu(LLMenuGL& menu, U32 flags) { // *TODO: Translate lldebugs << "LLLink::buildContextMenu()" << llendl; - std::vector<std::string> items; - std::vector<std::string> disabled_items; + menuentry_vec_t items; + menuentry_vec_t disabled_items; - if(isInTrash()) + if (isItemInTrash()) { - items.push_back(std::string("Purge Item")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Purge Item")); - } - - items.push_back(std::string("Restore Item")); + addTrashContextMenuOptions(items, disabled_items); } else { items.push_back(std::string("Find Original")); - items.push_back(std::string("Delete")); - if (!isItemRemovable()) - { - disabled_items.push_back(std::string("Delete")); - } + addDeleteContextMenuOptions(items, disabled_items); } hide_context_entries(menu, items, disabled_items); } diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index cc1fa45b26..32504091cb 100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -107,13 +107,15 @@ struct LLAttachmentRezAction S32 mAttachPt; }; +typedef std::vector<std::string> menuentry_vec_t; + const std::string safe_inv_type_lookup(LLInventoryType::EType inv_type); void hide_context_entries(LLMenuGL& menu, - const std::vector<std::string> &entries_to_show, - const std::vector<std::string> &disabled_entries); + const menuentry_vec_t &entries_to_show, + const menuentry_vec_t &disabled_entries); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -// Class LLInvFVBridge (& it's derived classes) +// Class LLInvFVBridge (& its derived classes) // // Short for Inventory-Folder-View-Bridge. This is an // implementation class to be able to view inventory items. @@ -158,8 +160,10 @@ public: virtual void showProperties(); virtual BOOL isItemRenameable() const { return TRUE; } //virtual BOOL renameItem(const std::string& new_name) {} - virtual BOOL isItemRemovable(); + virtual BOOL isItemRemovable() const; virtual BOOL isItemMovable() const; + virtual BOOL isItemInTrash() const; + //virtual BOOL removeItem() = 0; virtual void removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batch); virtual void move(LLFolderViewEventListener* new_parent_bridge) {} @@ -170,8 +174,8 @@ public: virtual BOOL isClipboardPasteableAsLink() const; virtual void pasteFromClipboard() {} virtual void pasteLinkFromClipboard() {} - void getClipboardEntries(bool show_asset_id, std::vector<std::string> &items, - std::vector<std::string> &disabled_items, U32 flags); + void getClipboardEntries(bool show_asset_id, menuentry_vec_t &items, + menuentry_vec_t &disabled_items, U32 flags); virtual void buildContextMenu(LLMenuGL& menu, U32 flags); virtual BOOL startDrag(EDragAndDropType* type, LLUUID* id) const; virtual BOOL dragOrDrop(MASK mask, BOOL drop, @@ -185,13 +189,21 @@ public: // Allow context menus to be customized for side panel. bool isInOutfitsSidePanel() const; + //-------------------------------------------------------------------- + // Convenience functions for adding various common menu options. + //-------------------------------------------------------------------- +protected: + virtual void addTrashContextMenuOptions(menuentry_vec_t &items, + menuentry_vec_t &disabled_items); + virtual void addDeleteContextMenuOptions(menuentry_vec_t &items, + menuentry_vec_t &disabled_items); + protected: LLInvFVBridge(LLInventoryPanel* inventory, const LLUUID& uuid); LLInventoryObject* getInventoryObject() const; LLInventoryModel* getInventoryModel() const; - BOOL isInTrash() const; BOOL isLinkedObjectInTrash() const; // Is this obj or its baseobj in the trash? BOOL isLinkedObjectMissing() const; // Is this a linked obj whose baseobj is not in inventory? @@ -289,6 +301,7 @@ public: virtual LLFolderType::EType getPreferredType() const; virtual LLUIImagePtr getIcon() const; + virtual LLUIImagePtr getOpenIcon() const; static LLUIImagePtr getIcon(LLFolderType::EType preferred_type); virtual BOOL renameItem(const std::string& new_name); @@ -305,7 +318,7 @@ public: EDragAndDropType cargo_type, void* cargo_data); - virtual BOOL isItemRemovable(); + virtual BOOL isItemRemovable() const; virtual BOOL isItemMovable() const ; virtual BOOL isUpToDate() const; virtual BOOL isItemCopyable() const; @@ -319,8 +332,12 @@ public: 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); @@ -354,8 +371,8 @@ private: BOOL mCallingCards; BOOL mWearables; LLMenuGL* mMenu; - std::vector<std::string> mItems; - std::vector<std::string> mDisabledItems; + menuentry_vec_t mItems; + menuentry_vec_t mDisabledItems; }; // DEPRECATED @@ -447,7 +464,6 @@ public: EDragAndDropType cargo_type, void* cargo_data); void refreshFolderViewItem(); - BOOL removeItem(); protected: LLCallingCardBridge( LLInventoryPanel* inventory, const LLUUID& uuid ); @@ -487,6 +503,8 @@ public: virtual void buildContextMenu(LLMenuGL& menu, U32 flags); + static void playGesture(const LLUUID& item_id); + protected: LLGestureBridge(LLInventoryPanel* inventory, const LLUUID& uuid) : LLItemBridge(inventory, uuid) {} @@ -780,7 +798,7 @@ protected: LLWearableBridgeAction(const LLUUID& id,LLInventoryModel* model):LLInvFVBridgeAction(id,model){} - BOOL isInTrash() const; + BOOL isItemInTrash() const; // return true if the item is in agent inventory. if false, it // must be lost or in the inventory library. BOOL isAgentInventory() const; @@ -808,7 +826,7 @@ void teleport_via_landmark(const LLUUID& asset_id); // Utility function to hide all entries except those in the list void hide_context_entries(LLMenuGL& menu, - const std::vector<std::string> &entries_to_show, - const std::vector<std::string> &disabled_entries); + const menuentry_vec_t &entries_to_show, + const menuentry_vec_t &disabled_entries); #endif // LL_LLINVENTORYBRIDGE_H diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp index b4dcb566e4..cd20d64ca8 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 8f4136c01f..3553137f53 100644 --- a/indra/newview/llinventoryfunctions.cpp +++ b/indra/newview/llinventoryfunctions.cpp @@ -50,8 +50,7 @@ // newview includes #include "llappearancemgr.h" #include "llappviewer.h" -#include "llfirstuse.h" -#include "llfloaterchat.h" +//#include "llfirstuse.h" #include "llfloatercustomize.h" #include "llfocusmgr.h" #include "llfolderview.h" @@ -77,7 +76,6 @@ #include "lltabcontainer.h" #include "lltooldraganddrop.h" #include "lluictrlfactory.h" -#include "llviewerinventory.h" #include "llviewermessage.h" #include "llviewerobjectlist.h" #include "llviewerregion.h" @@ -197,6 +195,62 @@ void LLOpenFoldersWithSelection::doFolder(LLFolderViewFolder* folder) } } +static void assign_clothing_bodypart_icon(EInventoryIcon &idx, U32 attachment_point) +{ + const EWearableType wearable_type = EWearableType(LLInventoryItem::II_FLAGS_WEARABLES_MASK & attachment_point); + switch(wearable_type) + { + case WT_SHAPE: + idx = BODYPART_SHAPE_ICON_NAME; + break; + case WT_SKIN: + idx = BODYPART_SKIN_ICON_NAME; + break; + case WT_HAIR: + idx = BODYPART_HAIR_ICON_NAME; + break; + case WT_EYES: + idx = BODYPART_EYES_ICON_NAME; + break; + case WT_SHIRT: + idx = CLOTHING_SHIRT_ICON_NAME; + break; + case WT_PANTS: + idx = CLOTHING_PANTS_ICON_NAME; + break; + case WT_SHOES: + idx = CLOTHING_SHOES_ICON_NAME; + break; + case WT_SOCKS: + idx = CLOTHING_SOCKS_ICON_NAME; + break; + case WT_JACKET: + idx = CLOTHING_JACKET_ICON_NAME; + break; + case WT_GLOVES: + idx = CLOTHING_GLOVES_ICON_NAME; + break; + case WT_UNDERSHIRT: + idx = CLOTHING_UNDERSHIRT_ICON_NAME; + break; + case WT_UNDERPANTS: + idx = CLOTHING_UNDERPANTS_ICON_NAME; + break; + case WT_SKIRT: + idx = CLOTHING_SKIRT_ICON_NAME; + break; + case WT_ALPHA: + idx = CLOTHING_ALPHA_ICON_NAME; + break; + case WT_TATTOO: + idx = CLOTHING_TATTOO_ICON_NAME; + break; + default: + break; + } +} + + const std::string& get_item_icon_name(LLAssetType::EType asset_type, LLInventoryType::EType inventory_type, U32 attachment_point, @@ -251,62 +305,11 @@ const std::string& get_item_icon_name(LLAssetType::EType asset_type, break; case LLAssetType::AT_CLOTHING: idx = CLOTHING_ICON_NAME; - case LLAssetType::AT_BODYPART : - if(LLAssetType::AT_BODYPART == asset_type) - { - idx = BODYPART_ICON_NAME; - } - switch(LLInventoryItem::II_FLAGS_WEARABLES_MASK & attachment_point) - { - case WT_SHAPE: - idx = BODYPART_SHAPE_ICON_NAME; - break; - case WT_SKIN: - idx = BODYPART_SKIN_ICON_NAME; - break; - case WT_HAIR: - idx = BODYPART_HAIR_ICON_NAME; - break; - case WT_EYES: - idx = BODYPART_EYES_ICON_NAME; - break; - case WT_SHIRT: - idx = CLOTHING_SHIRT_ICON_NAME; - break; - case WT_PANTS: - idx = CLOTHING_PANTS_ICON_NAME; - break; - case WT_SHOES: - idx = CLOTHING_SHOES_ICON_NAME; - break; - case WT_SOCKS: - idx = CLOTHING_SOCKS_ICON_NAME; - break; - case WT_JACKET: - idx = CLOTHING_JACKET_ICON_NAME; - break; - case WT_GLOVES: - idx = CLOTHING_GLOVES_ICON_NAME; - break; - case WT_UNDERSHIRT: - idx = CLOTHING_UNDERSHIRT_ICON_NAME; - break; - case WT_UNDERPANTS: - idx = CLOTHING_UNDERPANTS_ICON_NAME; - break; - case WT_SKIRT: - idx = CLOTHING_SKIRT_ICON_NAME; - break; - case WT_ALPHA: - idx = CLOTHING_ALPHA_ICON_NAME; - break; - case WT_TATTOO: - idx = CLOTHING_TATTOO_ICON_NAME; - break; - default: - // no-op, go with choice above - break; - } + assign_clothing_bodypart_icon(idx, attachment_point); + break; + case LLAssetType::AT_BODYPART: + idx = BODYPART_ICON_NAME; + assign_clothing_bodypart_icon(idx, attachment_point); break; case LLAssetType::AT_NOTECARD: idx = NOTECARD_ICON_NAME; diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index 711114173c..326f2a5577 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -218,7 +218,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); @@ -230,6 +233,7 @@ const LLViewerInventoryCategory *LLInventoryModel::getFirstNondefaultParent(cons { return cat; } + parent_id = cat->getParentUUID(); } return NULL; } @@ -755,6 +759,10 @@ U32 LLInventoryModel::updateItem(const LLViewerInventoryItem* item) gCacheName->get(id, FALSE, boost::bind(&LLViewerInventoryItem::onCallingCardNameLookup, new_item.get(), _1, _2, _3)); } } + else if (new_item->getType() == LLAssetType::AT_GESTURE) + { + mask |= LLInventoryObserver::GESTURE; + } addChangedMask(mask, new_item->getUUID()); return mask; } @@ -1929,23 +1937,26 @@ void LLInventoryModel::addItem(LLViewerInventoryItem* item) { //llinfos << "LLInventoryModel::addItem()" << llendl; - // This can happen if assettype enums from llassettype.h ever change. - // For example, there is a known backwards compatibility issue in some viewer prototypes prior to when - // the AT_LINK enum changed from 23 to 24. - if ((item->getType() == LLAssetType::AT_NONE) - || LLAssetType::lookup(item->getType()) == LLAssetType::badLookup()) - { - llwarns << "Got bad asset type for item [ name: " << item->getName() << " type: " << item->getType() << " inv-type: " << item->getInventoryType() << " ], ignoring." << llendl; - return; - } + llassert(item); if(item) { + // This can happen if assettype enums from llassettype.h ever change. + // For example, there is a known backwards compatibility issue in some viewer prototypes prior to when + // the AT_LINK enum changed from 23 to 24. + if ((item->getType() == LLAssetType::AT_NONE) + || LLAssetType::lookup(item->getType()) == LLAssetType::badLookup()) + { + llwarns << "Got bad asset type for item [ name: " << item->getName() << " type: " << item->getType() << " inv-type: " << item->getInventoryType() << " ], ignoring." << llendl; + return; + } + // This condition means that we tried to add a link without the baseobj being in memory. // The item will show up as a broken link. if (item->getIsBrokenLink()) { llinfos << "Adding broken link [ name: " << item->getName() << " itemID: " << item->getUUID() << " assetID: " << item->getAssetUUID() << " ) parent: " << item->getParentUUID() << llendl; } + mItemMap[item->getUUID()] = item; } } @@ -1994,21 +2005,23 @@ void LLInventoryModel::accountForUpdate(const LLCategoryUpdate& update) const descendents_actual += update.mDescendentDelta; cat->setDescendentCount(descendents_actual); cat->setVersion(++version); - llinfos << "accounted: '" << cat->getName() << "' " - << version << " with " << descendents_actual - << " descendents." << llendl; + lldebugs << "accounted: '" << cat->getName() << "' " + << version << " with " << descendents_actual + << " descendents." << llendl; } } if(!accounted) { - lldebugs << "No accounting for: '" << cat->getName() << "' " + // Error condition, this means that the category did not register that + // it got new descendents (perhaps because it is still being loaded) + // which means its descendent count will be wrong. + llwarns << "Accounting failed for '" << cat->getName() << "' version:" << version << llendl; } } else { - llwarns << "No category found for update " << update.mCategoryID - << llendl; + llwarns << "No category found for update " << update.mCategoryID << llendl; } } @@ -3620,6 +3633,98 @@ BOOL LLInventoryModel::getIsFirstTimeInViewer2() return sFirstTimeInViewer2; } +static LLInventoryModel::item_array_t::iterator find_item_iter_by_uuid(LLInventoryModel::item_array_t& items, const LLUUID& id) +{ + LLInventoryModel::item_array_t::iterator result = items.end(); + + for (LLInventoryModel::item_array_t::iterator i = items.begin(); i != items.end(); ++i) + { + if ((*i)->getUUID() == id) + { + result = i; + break; + } + } + + return result; +} + +// static +void LLInventoryModel::updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& src_item_id, const LLUUID& dest_item_id) +{ + LLInventoryModel::item_array_t::iterator it_src = find_item_iter_by_uuid(items, src_item_id); + LLInventoryModel::item_array_t::iterator it_dest = find_item_iter_by_uuid(items, dest_item_id); + + if (it_src == items.end() || it_dest == items.end()) return; + + LLViewerInventoryItem* src_item = *it_src; + items.erase(it_src); + + // target iterator can not be valid because the container was changed, so update it. + it_dest = find_item_iter_by_uuid(items, dest_item_id); + items.insert(it_dest, src_item); +} + +void LLInventoryModel::saveItemsOrder(const LLInventoryModel::item_array_t& items) +{ + int sortField = 0; + + // current order is saved by setting incremental values (1, 2, 3, ...) for the sort field + for (item_array_t::const_iterator i = items.begin(); i != items.end(); ++i) + { + LLViewerInventoryItem* item = *i; + + item->setSortField(++sortField); + item->setComplete(TRUE); + item->updateServer(FALSE); + + updateItem(item); + + // Tell the parent folder to refresh its sort order. + addChangedMask(LLInventoryObserver::SORT, item->getParentUUID()); + } + + notifyObservers(); +} + +// See also LLInventorySort where landmarks in the Favorites folder are sorted. +class LLViewerInventoryItemSort +{ +public: + bool operator()(const LLPointer<LLViewerInventoryItem>& a, const LLPointer<LLViewerInventoryItem>& b) + { + return a->getSortField() < b->getSortField(); + } +}; + +/** + * Sorts passed items by LLViewerInventoryItem sort field. + * + * @param[in, out] items - array of items, not sorted. + */ +static void rearrange_item_order_by_sort_field(LLInventoryModel::item_array_t& items) +{ + static LLViewerInventoryItemSort sort_functor; + std::sort(items.begin(), items.end(), sort_functor); +} + +void LLInventoryModel::rearrangeFavoriteLandmarks(const LLUUID& source_item_id, const LLUUID& target_item_id) +{ + LLInventoryModel::cat_array_t cats; + LLInventoryModel::item_array_t items; + LLIsType is_type(LLAssetType::AT_LANDMARK); + LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); + gInventory.collectDescendentsIf(favorites_id, cats, items, LLInventoryModel::EXCLUDE_TRASH, is_type); + + // ensure items are sorted properly before changing order. EXT-3498 + rearrange_item_order_by_sort_field(items); + + // update order + updateItemsOrder(items, source_item_id, target_item_id); + + saveItemsOrder(items); +} + //---------------------------------------------------------------------------- // *NOTE: DEBUG functionality diff --git a/indra/newview/llinventorymodel.h b/indra/newview/llinventorymodel.h index 39377b4ae2..2a2b48ce3c 100644 --- a/indra/newview/llinventorymodel.h +++ b/indra/newview/llinventorymodel.h @@ -384,6 +384,39 @@ public: void setLibraryOwnerID(const LLUUID& id); void setLibraryRootFolderID(const LLUUID& id); + + /** + * Changes items order by insertion of the item identified by src_item_id + * BEFORE the item identified by dest_item_id. Both items must exist in items array. + * + * Sorting is stored after method is finished. Only src_item_id is moved before dest_item_id. + * + * @param[in, out] items - vector with items to be updated. It should be sorted in a right way + * before calling this method. + * @param src_item_id - LLUUID of inventory item to be moved in new position + * @param dest_item_id - LLUUID of inventory item before which source item should be placed. + */ + static void updateItemsOrder(LLInventoryModel::item_array_t& items, const LLUUID& src_item_id, const LLUUID& dest_item_id); + + /** + * Saves current order of the passed items using inventory item sort field. + * + * It reset items' sort fields and saves them on server. + * Is used to save order for Favorites folder. + * + * @param[in] items vector of items in order to be saved. + */ + void saveItemsOrder(const LLInventoryModel::item_array_t& items); + + /** + * Rearranges Landmarks inside Favorites folder. + * Moves source landmark before target one. + * + * @param source_item_id - LLUUID of the source item to be moved into new position + * @param target_item_id - LLUUID of the target item before which source item should be placed. + */ + void rearrangeFavoriteLandmarks(const LLUUID& source_item_id, const LLUUID& target_item_id); + protected: // Internal methods which add inventory and make sure that all of diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp index 2d9ea21b5f..2fb8aea4e9 100644 --- a/indra/newview/llinventoryobserver.cpp +++ b/indra/newview/llinventoryobserver.cpp @@ -311,10 +311,10 @@ bool LLInventoryFetchDescendentsObserver::isEverythingComplete() const bool LLInventoryFetchDescendentsObserver::isComplete(LLViewerInventoryCategory* cat) { - S32 version = cat->getVersion(); - S32 descendents = cat->getDescendentCount(); - if((LLViewerInventoryCategory::VERSION_UNKNOWN == version) - || (LLViewerInventoryCategory::DESCENDENT_COUNT_UNKNOWN == descendents)) + const S32 version = cat->getVersion(); + const S32 expected_num_descendents = cat->getDescendentCount(); + if ((version == LLViewerInventoryCategory::VERSION_UNKNOWN) || + (expected_num_descendents == LLViewerInventoryCategory::DESCENDENT_COUNT_UNKNOWN)) { return false; } @@ -325,15 +325,28 @@ bool LLInventoryFetchDescendentsObserver::isComplete(LLViewerInventoryCategory* gInventory.getDirectDescendentsOf(cat->getUUID(), cats, items); if(!cats || !items) { - // bit of a hack - pretend we're done if they are gone or - // incomplete. should never know, but it would suck if this - // kept tight looping because of a corrupt memory state. + llwarns << "Category '" << cat->getName() << "' descendents corrupted, fetch failed." << llendl; + // NULL means the call failed -- cats/items map doesn't exist (note: this does NOT mean + // that the cat just doesn't have any items or subfolders). + // Unrecoverable, so just return done so that this observer can be cleared + // from memory. return true; } - S32 known = cats->count() + items->count(); - if(descendents == known) + const S32 current_num_known_descendents = cats->count() + items->count(); + + // Got the number of descendents that we were expecting, so we're done. + if (current_num_known_descendents == expected_num_descendents) + { + return true; + } + + // Error condition, but recoverable. This happens if something was added to the + // category before it was initialized, so accountForUpdate didn't update descendent + // count and thus the category thinks it has fewer descendents than it actually has. + if (current_num_known_descendents >= expected_num_descendents) { - // hey - we're done. + llwarns << "Category '" << cat->getName() << "' expected descendentcount:" << expected_num_descendents << " descendents but got descendentcount:" << current_num_known_descendents << llendl; + cat->setDescendentCount(current_num_known_descendents); return true; } return false; @@ -352,7 +365,7 @@ void LLInventoryFetchComboObserver::changed(U32 mask) continue; } if(item->isComplete()) - { + { mCompleteItems.push_back(*it); it = mIncompleteItems.erase(it); continue; diff --git a/indra/newview/llinventoryobserver.h b/indra/newview/llinventoryobserver.h index c1f192e2bf..d6dded52d4 100644 --- a/indra/newview/llinventoryobserver.h +++ b/indra/newview/llinventoryobserver.h @@ -61,8 +61,9 @@ public: REMOVE = 8, // something deleted STRUCTURE = 16, // structural change (eg item or folder moved) CALLING_CARD = 32, // (eg online, grant status, cancel) - REBUILD = 64, // item UI changed (eg item type different) - SORT = 128, // folder needs to be resorted. + GESTURE = 64, + REBUILD = 128, // item UI changed (eg item type different) + SORT = 256, // folder needs to be resorted. ALL = 0xffffffff }; LLInventoryObserver(); diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 164e72e621..048ed10886 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -98,10 +98,6 @@ LLInventoryPanel::LLInventoryPanel(const LLInventoryPanel::Params& p) : mCommitCallbackRegistrar.add("Inventory.AttachObject", boost::bind(&LLInventoryPanel::attachObject, this, _2)); mCommitCallbackRegistrar.add("Inventory.BeginIMSession", boost::bind(&LLInventoryPanel::beginIMSession, this)); - setBackgroundColor(LLUIColorTable::instance().getColor("InventoryBackgroundColor")); - setBackgroundVisible(TRUE); - setBackgroundOpaque(TRUE); - if (mStartFolderString != "") { mBuildDefaultHierarchy = false; @@ -147,6 +143,7 @@ BOOL LLInventoryPanel::postBuild() addChild(mScroller); mScroller->addChild(mFolders); mFolders->setScrollContainer(mScroller); + mFolders->addChild(mFolders->mStatusTextBox); } // Set up the callbacks from the inventory we're viewing, and then build everything. @@ -293,8 +290,12 @@ void LLInventoryPanel::modelChanged(U32 mask) if(bridge) { // Clear the display name first, so it gets properly re-built during refresh() bridge->clearDisplayName(); + + view_item->refresh(); + + // Set the new tooltip with the new display name. + view_item->setToolTip(bridge->getDisplayName()); } - view_item->refresh(); } } @@ -433,11 +434,29 @@ void LLInventoryPanel::initializeViews() { mStartFolderID = (preferred_type != LLFolderType::FT_NONE ? gInventory.findCategoryUUIDForType(preferred_type) : LLUUID::null); } - llinfos << this << " Generating views for start folder " << mStartFolderString << llendl; rebuildViewsFor(mStartFolderID); mViewsInitialized = true; - defaultOpenInventory(); + + openStartFolderOrMyInventory(); + + // Special case for new user login + if (gAgent.isFirstLogin()) + { + // Auto open the user's library + LLFolderViewFolder* lib_folder = mFolders->getFolderByID(gInventory.getLibraryRootFolderID()); + if (lib_folder) + { + lib_folder->setOpen(TRUE); + } + + // Auto close the user's my inventory folder + LLFolderViewFolder* my_inv_folder = mFolders->getFolderByID(gInventory.getRootFolderID()); + if (my_inv_folder) + { + my_inv_folder->setOpenArrangeRecursively(FALSE, LLFolderViewFolder::RECURSE_DOWN); + } + } } void LLInventoryPanel::rebuildViewsFor(const LLUUID& id) @@ -491,13 +510,14 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id) if (new_listener) { - LLFolderViewFolder::Params p; - p.name = new_listener->getDisplayName(); - p.icon = new_listener->getIcon(); - p.root = mFolders; - p.listener = new_listener; - p.tool_tip = p.name; - LLFolderViewFolder* folderp = LLUICtrlFactory::create<LLFolderViewFolder>(p); + LLFolderViewFolder::Params params; + params.name = new_listener->getDisplayName(); + params.icon = new_listener->getIcon(); + params.icon_open = new_listener->getOpenIcon(); + params.root = mFolders; + params.listener = new_listener; + params.tool_tip = params.name; + LLFolderViewFolder* folderp = LLUICtrlFactory::create<LLFolderViewFolder>(params); folderp->setItemSortOrder(mFolders->getSortOrder()); itemp = folderp; @@ -507,6 +527,11 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id) { folderp->setHidden(TRUE); } + const LLViewerInventoryCategory *cat = dynamic_cast<LLViewerInventoryCategory *>(objectp); + if (cat && getIsHiddenFolderType(cat->getPreferredType())) + { + folderp->setHidden(TRUE); + } } } else @@ -523,12 +548,13 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id) if (new_listener) { LLFolderViewItem::Params params; - params.name(new_listener->getDisplayName()); - params.icon(new_listener->getIcon()); - params.creation_date(new_listener->getCreationDate()); - params.root(mFolders); - params.listener(new_listener); - params.rect(LLRect (0, 0, 0, 0)); + params.name = new_listener->getDisplayName(); + params.icon = new_listener->getIcon(); + params.icon_open = new_listener->getOpenIcon(); + params.creation_date = new_listener->getCreationDate(); + params.root = mFolders; + params.listener = new_listener; + params.rect = LLRect (0, 0, 0, 0); params.tool_tip = params.name; itemp = LLUICtrlFactory::create<LLFolderViewItem> (params); } @@ -537,6 +563,12 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id) if (itemp) { itemp->addToFolder(parent_folder, mFolders); + + // Don't add children of hidden folders unless this is the panel's root folder. + if (itemp->getHidden() && (id != mStartFolderID)) + { + return; + } } } @@ -575,7 +607,7 @@ void LLInventoryPanel::buildNewViews(const LLUUID& id) } // bit of a hack to make sure the inventory is open. -void LLInventoryPanel::defaultOpenInventory() +void LLInventoryPanel::openStartFolderOrMyInventory() { if (mStartFolderString != "") { @@ -583,13 +615,17 @@ void LLInventoryPanel::defaultOpenInventory() } else { - // Get the first child (it should be "My Inventory") and - // open it up by name (just to make sure the first child is actually a folder). - LLView* first_child = mFolders->getFirstChild(); - if (first_child) + // Find My Inventory folder and open it up by name + for (LLView *child = mFolders->getFirstChild(); child; child = mFolders->findNextSibling(child)) { - const std::string& first_child_name = first_child->getName(); - mFolders->openFolder(first_child_name); + LLFolderViewFolder *fchild = dynamic_cast<LLFolderViewFolder*>(child); + if (fchild && fchild->getListener() && + (fchild->getListener()->getUUID() == gInventory.getRootFolderID())) + { + const std::string& child_name = child->getName(); + mFolders->openFolder(child_name); + break; + } } } } @@ -681,6 +717,14 @@ void LLInventoryPanel::setSelection(const LLUUID& obj_id, BOOL take_keyboard_foc mFolders->setSelectionByID(obj_id, take_keyboard_focus); } +void LLInventoryPanel::setSelectCallback(const LLFolderView::signal_t::slot_type& cb) +{ + if (mFolders) + { + mFolders->setSelectCallback(cb); + } +} + void LLInventoryPanel::clearSelection() { mFolders->clearSelection(); @@ -750,7 +794,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; @@ -924,3 +970,16 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open) return NULL; } + +void LLInventoryPanel::addHideFolderType(LLFolderType::EType folder_type) +{ + if (!getIsHiddenFolderType(folder_type)) + { + mHiddenFolderTypes.push_back(folder_type); + } +} + +BOOL LLInventoryPanel::getIsHiddenFolderType(LLFolderType::EType folder_type) const +{ + return (std::find(mHiddenFolderTypes.begin(), mHiddenFolderTypes.end(), folder_type) != mHiddenFolderTypes.end()); +} diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index 4f7f0a79f6..f312b588b9 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -61,6 +61,9 @@ class LLTabContainer; class LLInventoryPanel : public LLPanel { + //-------------------------------------------------------------------- + // Data + //-------------------------------------------------------------------- public: static const std::string DEFAULT_SORT_ORDER; static const std::string RECENTITEMS_SORT_ORDER; @@ -97,13 +100,16 @@ public: {} }; + //-------------------------------------------------------------------- + // Initialization + //-------------------------------------------------------------------- protected: LLInventoryPanel(const Params&); friend class LLUICtrlFactory; - public: virtual ~LLInventoryPanel(); +public: LLInventoryModel* getModel() { return mInventory; } BOOL postBuild(); @@ -123,7 +129,7 @@ public: // Call this method to set the selection. void openAllFolders(); void setSelection(const LLUUID& obj_id, BOOL take_keyboard_focus); - void setSelectCallback(const LLFolderView::signal_t::slot_type& cb) { if (mFolders) mFolders->setSelectCallback(cb); } + void setSelectCallback(const LLFolderView::signal_t::slot_type& cb); void clearSelection(); LLInventoryFilter* getFilter(); void setFilterTypes(U64 filter, LLInventoryFilter::EFilterType = LLInventoryFilter::FILTERTYPE_OBJECT); @@ -167,7 +173,7 @@ public: static LLInventoryPanel *getActiveInventoryPanel(BOOL auto_open = TRUE); protected: - void defaultOpenInventory(); // open the first level of inventory + void openStartFolderOrMyInventory(); // open the first level of inventory LLInventoryModel* mInventory; LLInventoryObserver* mInventoryObserver; @@ -187,6 +193,16 @@ protected: const LLInventoryFVBridgeBuilder* mInvFVBridgeBuilder; //-------------------------------------------------------------------- + // Hidden folders + //-------------------------------------------------------------------- +public: + void addHideFolderType(LLFolderType::EType folder_type); +protected: + BOOL getIsHiddenFolderType(LLFolderType::EType folder_type) const; +private: + std::vector<LLFolderType::EType> mHiddenFolderTypes; + + //-------------------------------------------------------------------- // Initialization routines for building up the UI ("views") //-------------------------------------------------------------------- public: diff --git a/indra/newview/lllandmarklist.cpp b/indra/newview/lllandmarklist.cpp index bd9d22c327..ce84474c05 100644 --- a/indra/newview/lllandmarklist.cpp +++ b/indra/newview/lllandmarklist.cpp @@ -59,6 +59,13 @@ LLLandmark* LLLandmarkList::getAsset(const LLUUID& asset_uuid, loaded_callback_t LLLandmark* landmark = get_ptr_in_map(mList, asset_uuid); if(landmark) { + LLVector3d dummy; + if(cb && !landmark->getGlobalPos(dummy)) + { + // landmark is not completely loaded yet + loaded_callback_map_t::value_type vt(asset_uuid, cb); + mLoadedCallbackMap.insert(vt); + } return landmark; } else diff --git a/indra/newview/lllocaltextureobject.cpp b/indra/newview/lllocaltextureobject.cpp index 6bcbe6f58c..116d9bc446 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); @@ -68,6 +70,7 @@ LLLocalTextureObject::LLLocalTextureObject(const LLLocalTextureObject& lto) : if (!original_layer) { llerrs << "could not clone Local Texture Object: unable to extract texlayer!" << llendl; + continue; } LLTexLayer* new_layer = new LLTexLayer(*original_layer); diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp index d910dbf718..7906d9b20f 100644 --- a/indra/newview/lllocationhistory.cpp +++ b/indra/newview/lllocationhistory.cpp @@ -50,18 +50,20 @@ 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((S32)mItems.size() <= max_items); + mChangedSignal(ADD); } /* @@ -86,9 +88,10 @@ bool LLLocationHistory::touchItem(const LLLocationHistoryItem& item) { void LLLocationHistory::removeItems() { mItems.clear(); + mChangedSignal(CLEAR); } -bool LLLocationHistory::getMatchingItems(std::string substring, location_list_t& result) const +bool LLLocationHistory::getMatchingItems(const std::string& substring, location_list_t& result) const { // *TODO: an STL algorithm would look nicer result.clear(); @@ -123,6 +126,12 @@ void LLLocationHistory::save() const // build filename for each user std::string resolved_filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, mFilename); + if (resolved_filename.empty()) + { + llinfos << "can't get path to location history filename - probably not logged in yet." << llendl; + return; + } + // open a file for writing llofstream file (resolved_filename); if (!file.is_open()) @@ -153,7 +162,7 @@ void LLLocationHistory::load() return; } - removeItems(); + mItems.clear();// need to use a direct call of clear() method to avoid signal invocation // add each line in the file to the list std::string line; @@ -172,5 +181,5 @@ void LLLocationHistory::load() file.close(); - mLoadedSignal(); + mChangedSignal(LOAD); } diff --git a/indra/newview/lllocationhistory.h b/indra/newview/lllocationhistory.h index 5f9976f87a..fb71fbaa0f 100644 --- a/indra/newview/lllocationhistory.h +++ b/indra/newview/lllocationhistory.h @@ -41,11 +41,13 @@ #include <boost/function.hpp> class LLSD; - +/** + * This enum is responsible for identifying of history item. + */ enum ELocationType { - TYPED_REGION_SURL//region name or surl - ,LANDMARK // name of landmark - ,TELEPORT_HISTORY + TYPED_REGION_SLURL//item added after the user had typed a region name or slurl + ,LANDMARK // item has been loaded from landmark folder + ,TELEPORT_HISTORY // item from session teleport history }; class LLLocationHistoryItem { @@ -109,9 +111,16 @@ class LLLocationHistory: public LLSingleton<LLLocationHistory> LOG_CLASS(LLLocationHistory); public: + enum EChangeType + { + ADD + ,CLEAR + ,LOAD + }; + typedef std::vector<LLLocationHistoryItem> location_list_t; - typedef boost::function<void()> loaded_callback_t; - typedef boost::signals2::signal<void()> loaded_signal_t; + typedef boost::function<void(EChangeType event)> history_changed_callback_t; + typedef boost::signals2::signal<void(EChangeType event)> history_changed_signal_t; LLLocationHistory(); @@ -120,8 +129,8 @@ public: void removeItems(); size_t getItemCount() const { return mItems.size(); } const location_list_t& getItems() const { return mItems; } - bool getMatchingItems(std::string substring, location_list_t& result) const; - boost::signals2::connection setLoadedCallback(loaded_callback_t cb) { return mLoadedSignal.connect(cb); } + bool getMatchingItems(const std::string& substring, location_list_t& result) const; + boost::signals2::connection setChangedCallback(history_changed_callback_t cb) { return mChangedSignal.connect(cb); } void save() const; void load(); @@ -131,7 +140,7 @@ private: location_list_t mItems; std::string mFilename; /// File to store the history to. - loaded_signal_t mLoadedSignal; + history_changed_signal_t mChangedSignal; }; #endif diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index 404e266806..4100e2fc61 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -39,16 +39,19 @@ #include "llbutton.h" #include "llfocusmgr.h" #include "llmenugl.h" +#include "llparcel.h" #include "llstring.h" #include "lltrans.h" #include "lluictrlfactory.h" #include "lltooltip.h" +#include "llnotificationsutil.h" +#include "llregionflags.h" // newview includes +#include "llagent.h" #include "llinventoryobserver.h" #include "lllandmarkactions.h" #include "lllandmarklist.h" -#include "lllocationhistory.h" #include "llteleporthistory.h" #include "llsidetray.h" #include "llslurl.h" @@ -56,6 +59,7 @@ #include "lltrans.h" #include "llviewerinventory.h" #include "llviewerparcelmgr.h" +#include "llviewerregion.h" #include "llviewercontrol.h" #include "llviewermenu.h" #include "llurllineeditorctrl.h" @@ -148,13 +152,32 @@ private: LLLocationInputCtrl* mInput; }; +class LLParcelChangeObserver : public LLParcelObserver +{ +public: + LLParcelChangeObserver(LLLocationInputCtrl* input) : mInput(input) {} + +private: + /*virtual*/ void changed() + { + if (mInput) + { + mInput->refreshParcelIcons(); + } + } + + LLLocationInputCtrl* mInput; +}; + //============================================================================ static LLDefaultChildRegistry::Register<LLLocationInputCtrl> r("location_input"); LLLocationInputCtrl::Params::Params() -: add_landmark_image_enabled("add_landmark_image_enabled"), +: icon_maturity_general("icon_maturity_general"), + icon_maturity_adult("icon_maturity_adult"), + add_landmark_image_enabled("add_landmark_image_enabled"), add_landmark_image_disabled("add_landmark_image_disabled"), add_landmark_image_hover("add_landmark_image_hover"), add_landmark_image_selected("add_landmark_image_selected"), @@ -163,6 +186,7 @@ LLLocationInputCtrl::Params::Params() add_landmark_button("add_landmark_button"), for_sale_button("for_sale_button"), info_button("info_button"), + maturity_icon("maturity_icon"), voice_icon("voice_icon"), fly_icon("fly_icon"), push_icon("push_icon"), @@ -182,7 +206,9 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p) mForSaleBtn(NULL), mInfoBtn(NULL), mLandmarkImageOn(NULL), - mLandmarkImageOff(NULL) + mLandmarkImageOff(NULL), + mIconMaturityGeneral(NULL), + mIconMaturityAdult(NULL) { // Lets replace default LLLineEditor with LLLocationLineEditor // to make needed escaping while copying and cutting url @@ -205,6 +231,7 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p) params.commit_on_focus_lost(false); params.follows.flags(FOLLOWS_ALL); mTextEntry = LLUICtrlFactory::create<LLURLLineEditor>(params); + mTextEntry->setContextMenu(NULL); addChild(mTextEntry); // LLLineEditor is replaced with LLLocationLineEditor @@ -241,7 +268,20 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p) mAddLandmarkBtn = LLUICtrlFactory::create<LLButton>(al_params); enableAddLandmarkButton(true); addChild(mAddLandmarkBtn); - + + if (p.icon_maturity_general()) + { + mIconMaturityGeneral = p.icon_maturity_general; + } + if (p.icon_maturity_adult()) + { + mIconMaturityAdult = p.icon_maturity_adult; + } + + LLIconCtrl::Params maturity_icon = p.maturity_icon; + mMaturityIcon = LLUICtrlFactory::create<LLIconCtrl>(maturity_icon); + addChild(mMaturityIcon); + LLButton::Params for_sale_button = p.for_sale_button; for_sale_button.tool_tip = LLTrans::getString("LocationCtrlForSaleTooltip"); for_sale_button.click_callback.function( @@ -256,36 +296,42 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p) voice_icon.tool_tip = LLTrans::getString("LocationCtrlVoiceTooltip"); voice_icon.mouse_opaque = true; mParcelIcon[VOICE_ICON] = LLUICtrlFactory::create<LLIconCtrl>(voice_icon); + mParcelIcon[VOICE_ICON]->setMouseDownCallback(boost::bind(&LLLocationInputCtrl::onParcelIconClick, this, VOICE_ICON)); addChild(mParcelIcon[VOICE_ICON]); LLIconCtrl::Params fly_icon = p.fly_icon; fly_icon.tool_tip = LLTrans::getString("LocationCtrlFlyTooltip"); fly_icon.mouse_opaque = true; mParcelIcon[FLY_ICON] = LLUICtrlFactory::create<LLIconCtrl>(fly_icon); + mParcelIcon[FLY_ICON]->setMouseDownCallback(boost::bind(&LLLocationInputCtrl::onParcelIconClick, this, FLY_ICON)); addChild(mParcelIcon[FLY_ICON]); LLIconCtrl::Params push_icon = p.push_icon; push_icon.tool_tip = LLTrans::getString("LocationCtrlPushTooltip"); push_icon.mouse_opaque = true; mParcelIcon[PUSH_ICON] = LLUICtrlFactory::create<LLIconCtrl>(push_icon); + mParcelIcon[PUSH_ICON]->setMouseDownCallback(boost::bind(&LLLocationInputCtrl::onParcelIconClick, this, PUSH_ICON)); addChild(mParcelIcon[PUSH_ICON]); LLIconCtrl::Params build_icon = p.build_icon; build_icon.tool_tip = LLTrans::getString("LocationCtrlBuildTooltip"); build_icon.mouse_opaque = true; mParcelIcon[BUILD_ICON] = LLUICtrlFactory::create<LLIconCtrl>(build_icon); + mParcelIcon[BUILD_ICON]->setMouseDownCallback(boost::bind(&LLLocationInputCtrl::onParcelIconClick, this, BUILD_ICON)); addChild(mParcelIcon[BUILD_ICON]); LLIconCtrl::Params scripts_icon = p.scripts_icon; scripts_icon.tool_tip = LLTrans::getString("LocationCtrlScriptsTooltip"); scripts_icon.mouse_opaque = true; mParcelIcon[SCRIPTS_ICON] = LLUICtrlFactory::create<LLIconCtrl>(scripts_icon); + mParcelIcon[SCRIPTS_ICON]->setMouseDownCallback(boost::bind(&LLLocationInputCtrl::onParcelIconClick, this, SCRIPTS_ICON)); addChild(mParcelIcon[SCRIPTS_ICON]); LLIconCtrl::Params damage_icon = p.damage_icon; damage_icon.tool_tip = LLTrans::getString("LocationCtrlDamageTooltip"); damage_icon.mouse_opaque = true; mParcelIcon[DAMAGE_ICON] = LLUICtrlFactory::create<LLIconCtrl>(damage_icon); + mParcelIcon[DAMAGE_ICON]->setMouseDownCallback(boost::bind(&LLLocationInputCtrl::onParcelIconClick, this, DAMAGE_ICON)); addChild(mParcelIcon[DAMAGE_ICON]); LLTextBox::Params damage_text = p.damage_text; @@ -311,20 +357,38 @@ LLLocationInputCtrl::LLLocationInputCtrl(const LLLocationInputCtrl::Params& p) getTextEntry()->setRightMouseUpCallback(boost::bind(&LLLocationInputCtrl::onTextEditorRightClicked,this,_2,_3,_4)); updateWidgetlayout(); + // Connecting signal for updating location on "Show Coordinates" setting change. + LLControlVariable* coordinates_control = gSavedSettings.getControl("NavBarShowCoordinates").get(); + if (coordinates_control) + { + mCoordinatesControlConnection = coordinates_control->getSignal()->connect(boost::bind(&LLLocationInputCtrl::refreshLocation, this)); + } + + // Connecting signal for updating parcel icons on "Show Parcel Properties" setting change. + LLControlVariable* parcel_properties_control = gSavedSettings.getControl("NavBarShowParcelProperties").get(); + if (parcel_properties_control) + { + mParcelPropertiesControlConnection = parcel_properties_control->getSignal()->connect(boost::bind(&LLLocationInputCtrl::refreshParcelIcons, this)); + } + // - Make the "Add landmark" button updated when either current parcel gets changed // or a landmark gets created or removed from the inventory. // - Update the location string on parcel change. mParcelMgrConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback( boost::bind(&LLLocationInputCtrl::onAgentParcelChange, this)); - - mLocationHistoryConnection = LLLocationHistory::getInstance()->setLoadedCallback( - boost::bind(&LLLocationInputCtrl::onLocationHistoryLoaded, this)); + // LLLocationHistory instance is being created before the location input control, so we have to update initial state of button manually. + mButton->setEnabled(LLLocationHistory::instance().getItemCount() > 0); + mLocationHistoryConnection = LLLocationHistory::getInstance()->setChangedCallback( + boost::bind(&LLLocationInputCtrl::onLocationHistoryChanged, this,_1)); mRemoveLandmarkObserver = new LLRemoveLandmarkObserver(this); 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")); @@ -338,6 +402,11 @@ LLLocationInputCtrl::~LLLocationInputCtrl() delete mRemoveLandmarkObserver; delete mAddLandmarkObserver; + LLViewerParcelMgr::getInstance()->removeObserver(mParcelChangeObserver); + delete mParcelChangeObserver; + + mCoordinatesControlConnection.disconnect(); + mParcelPropertiesControlConnection.disconnect(); mParcelMgrConnection.disconnect(); mLocationHistoryConnection.disconnect(); } @@ -404,6 +473,7 @@ BOOL LLLocationInputCtrl::handleKeyHere(KEY key, MASK mask) void LLLocationInputCtrl::onTextEntry(LLLineEditor* line_editor) { KEY key = gKeyboard->currentKey(); + MASK mask = gKeyboard->currentMask(TRUE); if (line_editor->getText().empty()) { @@ -411,7 +481,7 @@ void LLLocationInputCtrl::onTextEntry(LLLineEditor* line_editor) hideList(); } // Typing? (moving cursor should not affect showing the list) - else if (key != KEY_LEFT && key != KEY_RIGHT && key != KEY_HOME && key != KEY_END) + else if (mask != MASK_CONTROL && key != KEY_LEFT && key != KEY_RIGHT && key != KEY_HOME && key != KEY_END) { prearrangeList(line_editor->getText()); if (mList->getItemCount() != 0) @@ -436,7 +506,10 @@ void LLLocationInputCtrl::onTextEntry(LLLineEditor* line_editor) */ void LLLocationInputCtrl::setText(const LLStringExplicit& text) { - mTextEntry->setText(text); + if (mTextEntry) + { + mTextEntry->setText(text); + } mHasAutocompletedText = FALSE; } @@ -445,7 +518,9 @@ void LLLocationInputCtrl::setFocus(BOOL b) LLComboBox::setFocus(b); if (mTextEntry && b && !mList->getVisible()) + { mTextEntry->setFocus(TRUE); + } } void LLLocationInputCtrl::handleLoginComplete() @@ -487,6 +562,25 @@ void LLLocationInputCtrl::draw() LLComboBox::draw(); } +void LLLocationInputCtrl::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + LLComboBox::reshape(width, height, called_from_parent); + + // Setting cursor to 0 to show the left edge of the text. See EXT-4967. + mTextEntry->setCursor(0); + if (mTextEntry->hasSelection()) + { + // Deselecting because selection position is changed together with + // cursor position change. + mTextEntry->deselect(); + } + + if (isHumanReadableLocationVisible) + { + refreshMaturityIcon(); + } +} + void LLLocationInputCtrl::onInfoButtonClicked() { LLSideTray::getInstance()->showPanel("panel_places", LLSD().with("type", "agent")); @@ -526,9 +620,13 @@ void LLLocationInputCtrl::onLandmarkLoaded(LLLandmark* lm) updateAddLandmarkButton(); } -void LLLocationInputCtrl::onLocationHistoryLoaded() +void LLLocationInputCtrl::onLocationHistoryChanged(LLLocationHistory::EChangeType event) { - rebuildLocationHistory(); + if(event == LLLocationHistory::LOAD) + { + rebuildLocationHistory(); + } + mButton->setEnabled(LLLocationHistory::instance().getItemCount() > 0); } void LLLocationInputCtrl::onLocationPrearrange(const LLSD& data) @@ -571,7 +669,7 @@ void LLLocationInputCtrl::onLocationPrearrange(const LLSD& data) value["item_type"] = TELEPORT_HISTORY; value["global_pos"] = result->mGlobalPos.getValue(); std::string region_name = result->mTitle.substr(0, result->mTitle.find(',')); - //TODO*: add Surl to teleportitem or parse region name from title + //TODO*: add slurl to teleportitem or parse region name from title value["tooltip"] = LLSLURL::buildSLURLfromPosGlobal(region_name, result->mGlobalPos, false); add(result->getTitle(), value); @@ -616,8 +714,8 @@ void LLLocationInputCtrl::refreshLocation() { // Is one of our children focused? if (LLUICtrl::hasFocus() || mButton->hasFocus() || mList->hasFocus() || - (mTextEntry && mTextEntry->hasFocus()) || (mAddLandmarkBtn->hasFocus())) - + (mTextEntry && mTextEntry->hasFocus()) || + (mAddLandmarkBtn->hasFocus())) { llwarns << "Location input should not be refreshed when having focus" << llendl; return; @@ -637,6 +735,9 @@ void LLLocationInputCtrl::refreshLocation() // store human-readable location to compare it in changeLocationPresentation() mHumanReadableLocation = location_name; setText(location_name); + isHumanReadableLocationVisible = true; + + refreshMaturityIcon(); } // returns new right edge @@ -657,21 +758,47 @@ void LLLocationInputCtrl::refreshParcelIcons() { // Our "cursor" moving right to left S32 x = mAddLandmarkBtn->getRect().mLeft; - - static LLUICachedControl<bool> show_properties("NavBarShowParcelProperties", false); - if (show_properties) - { - LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance(); - bool allow_buy = vpm->canAgentBuyParcel( vpm->getAgentParcel(), false); - bool allow_voice = vpm->allowAgentVoice(); - bool allow_fly = vpm->allowAgentFly(); - bool allow_push = vpm->allowAgentPush(); - bool allow_build = vpm->allowAgentBuild(); - bool allow_scripts = vpm->allowAgentScripts(); - bool allow_damage = vpm->allowAgentDamage(); - + + LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance(); + + LLViewerRegion* agent_region = gAgent.getRegion(); + LLParcel* agent_parcel = vpm->getAgentParcel(); + if (!agent_region || !agent_parcel) + return; + + mForSaleBtn->setVisible(vpm->canAgentBuyParcel(agent_parcel, false)); + + x = layout_widget(mForSaleBtn, x); + + if (gSavedSettings.getBOOL("NavBarShowParcelProperties")) + { + 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_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); mParcelIcon[VOICE_ICON]->setVisible( !allow_voice ); mParcelIcon[FLY_ICON]->setVisible( !allow_fly ); mParcelIcon[PUSH_ICON]->setVisible( !allow_push ); @@ -679,11 +806,10 @@ void LLLocationInputCtrl::refreshParcelIcons() mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts ); mParcelIcon[DAMAGE_ICON]->setVisible( allow_damage ); mDamageText->setVisible(allow_damage); - - x = layout_widget(mForSaleBtn, x); + // Padding goes to left of both landmark star and for sale btn x -= mAddLandmarkHPad; - + // Slide the parcel icons rect from right to left, adjusting rectangles for (S32 i = 0; i < ICON_COUNT; ++i) { @@ -695,18 +821,20 @@ void LLLocationInputCtrl::refreshParcelIcons() } else { - mForSaleBtn->setVisible(false); for (S32 i = 0; i < ICON_COUNT; ++i) { mParcelIcon[i]->setVisible(false); } mDamageText->setVisible(false); } - - S32 left_pad, right_pad; - mTextEntry->getTextPadding(&left_pad, &right_pad); - right_pad = mTextEntry->getRect().mRight - x; - mTextEntry->setTextPadding(left_pad, right_pad); + + if (mTextEntry) + { + S32 left_pad, right_pad; + mTextEntry->getTextPadding(&left_pad, &right_pad); + right_pad = mTextEntry->getRect().mRight - x; + mTextEntry->setTextPadding(left_pad, right_pad); + } } void LLLocationInputCtrl::refreshHealth() @@ -725,7 +853,56 @@ void LLLocationInputCtrl::refreshHealth() } } -void LLLocationInputCtrl::rebuildLocationHistory(std::string filter) +void LLLocationInputCtrl::refreshMaturityIcon() +{ + // Updating maturity rating icon. + LLViewerRegion* region = gAgent.getRegion(); + if (!region) + return; + + U8 sim_access = region->getSimAccess(); + switch(sim_access) + { + case SIM_ACCESS_PG: + mMaturityIcon->setValue(mIconMaturityGeneral->getName()); + mMaturityIcon->setVisible(TRUE); + break; + + case SIM_ACCESS_ADULT: + mMaturityIcon->setValue(mIconMaturityAdult->getName()); + mMaturityIcon->setVisible(TRUE); + break; + + default: + mMaturityIcon->setVisible(FALSE); + } + + if (mMaturityIcon->getVisible()) + { + positionMaturityIcon(); + } +} + +void LLLocationInputCtrl::positionMaturityIcon() +{ + const LLFontGL* font = mTextEntry->getFont(); + if (!font) + return; + + S32 left_pad, right_pad; + mTextEntry->getTextPadding(&left_pad, &right_pad); + + // Calculate the right edge of rendered text + a whitespace. + left_pad = left_pad + font->getWidth(mTextEntry->getText()) + font->getWidth(" "); + + LLRect rect = mMaturityIcon->getRect(); + mMaturityIcon->setRect(rect.setOriginAndSize(left_pad, rect.mBottom, rect.getWidth(), rect.getHeight())); + + // Hide icon if it text area is not width enough to display it, show otherwise. + mMaturityIcon->setVisible(rect.mRight < mTextEntry->getRect().getWidth() - right_pad); +} + +void LLLocationInputCtrl::rebuildLocationHistory(const std::string& filter) { LLLocationHistory::location_list_t filtered_items; const LLLocationHistory::location_list_t* itemsp = NULL; @@ -747,7 +924,7 @@ void LLLocationInputCtrl::rebuildLocationHistory(std::string filter) LLSD value; value["tooltip"] = it->getToolTip(); //location history can contain only typed locations - value["item_type"] = TYPED_REGION_SURL; + value["item_type"] = TYPED_REGION_SLURL; value["global_pos"] = it->mGlobalPos.getValue(); add(it->getLocation(), value); } @@ -825,16 +1002,23 @@ void LLLocationInputCtrl::updateWidgetlayout() void LLLocationInputCtrl::changeLocationPresentation() { - //change location presentation only if user does not select/past anything and - //human-readable region name is being displayed + if (!mTextEntry) + return; + + //change location presentation only if user does not select/paste anything and + //human-readable region name is being displayed std::string text = mTextEntry->getText(); LLStringUtil::trim(text); - if(mTextEntry && !mTextEntry->hasSelection() && text == mHumanReadableLocation ) + if(!mTextEntry->hasSelection() && text == mHumanReadableLocation) { //needs unescaped one mTextEntry->setText(LLAgentUI::buildSLURL(false)); mTextEntry->selectAll(); - } + + mMaturityIcon->setVisible(FALSE); + + isHumanReadableLocationVisible = false; + } } void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata) @@ -849,7 +1033,6 @@ void LLLocationInputCtrl::onLocationContextMenuItemClicked(const LLSD& userdata) { gSavedSettings.setBOOL("NavBarShowParcelProperties", !gSavedSettings.getBOOL("NavBarShowParcelProperties")); - refreshParcelIcons(); } else if (item == "landmark") { @@ -918,3 +1101,45 @@ bool LLLocationInputCtrl::onLocationContextMenuItemEnabled(const LLSD& userdata) return false; } + +void LLLocationInputCtrl::onParcelIconClick(EParcelIcon icon) +{ + switch (icon) + { + case VOICE_ICON: + LLNotificationsUtil::add("NoVoice"); + break; + case FLY_ICON: + LLNotificationsUtil::add("NoFly"); + break; + case PUSH_ICON: + LLNotificationsUtil::add("PushRestricted"); + break; + case BUILD_ICON: + LLNotificationsUtil::add("NoBuild"); + break; + case SCRIPTS_ICON: + { + LLViewerRegion* region = gAgent.getRegion(); + if(region && region->getRegionFlags() & REGION_FLAGS_ESTATE_SKIP_SCRIPTS) + { + LLNotificationsUtil::add("ScriptsStopped"); + } + else if(region && region->getRegionFlags() & REGION_FLAGS_SKIP_SCRIPTS) + { + LLNotificationsUtil::add("ScriptsNotRunning"); + } + else + { + LLNotificationsUtil::add("NoOutsideScripts"); + } + break; + } + case DAMAGE_ICON: + LLNotificationsUtil::add("NotSafe"); + break; + case ICON_COUNT: + break; + // no default to get compiler warning when a new icon gets added + } +} diff --git a/indra/newview/lllocationinputctrl.h b/indra/newview/lllocationinputctrl.h index 7959fab2de..f790140f07 100644 --- a/indra/newview/lllocationinputctrl.h +++ b/indra/newview/lllocationinputctrl.h @@ -36,12 +36,14 @@ #include "llcombobox.h" #include "lliconctrl.h" // Params #include "lltextbox.h" // Params +#include "lllocationhistory.h" class LLLandmark; // internals class LLAddLandmarkObserver; class LLRemoveLandmarkObserver; +class LLParcelChangeObserver; class LLMenuGL; class LLTeleportHistoryItem; @@ -56,12 +58,15 @@ class LLLocationInputCtrl LOG_CLASS(LLLocationInputCtrl); friend class LLAddLandmarkObserver; friend class LLRemoveLandmarkObserver; + friend class LLParcelChangeObserver; public: struct Params : public LLInitParam::Block<Params, LLComboBox::Params> { - Optional<LLUIImage*> add_landmark_image_enabled, + Optional<LLUIImage*> icon_maturity_general, + icon_maturity_adult, + add_landmark_image_enabled, add_landmark_image_disabled, add_landmark_image_hover, add_landmark_image_selected; @@ -70,7 +75,8 @@ public: Optional<LLButton::Params> add_landmark_button, for_sale_button, info_button; - Optional<LLIconCtrl::Params> voice_icon, + Optional<LLIconCtrl::Params> maturity_icon, + voice_icon, fly_icon, push_icon, build_icon, @@ -87,6 +93,7 @@ public: /*virtual*/ void onFocusReceived(); /*virtual*/ void onFocusLost(); /*virtual*/ void draw(); + /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); //======================================================================== // LLUICtrl interface @@ -102,6 +109,18 @@ public: void handleLoginComplete(); private: + + enum EParcelIcon + { + VOICE_ICON = 0, + FLY_ICON, + PUSH_ICON, + BUILD_ICON, + SCRIPTS_ICON, + DAMAGE_ICON, + ICON_COUNT + }; + friend class LLUICtrlFactory; LLLocationInputCtrl(const Params&); virtual ~LLLocationInputCtrl(); @@ -117,8 +136,10 @@ private: void refreshParcelIcons(); // Refresh the value in the health percentage text field void refreshHealth(); + void refreshMaturityIcon(); + void positionMaturityIcon(); - void rebuildLocationHistory(std::string filter = ""); + void rebuildLocationHistory(const std::string& filter = LLStringUtil::null); bool findTeleportItemsByTitle(const LLTeleportHistoryItem& item, const std::string& filter); void setText(const LLStringExplicit& text); void updateAddLandmarkButton(); @@ -128,7 +149,7 @@ private: void changeLocationPresentation(); void onInfoButtonClicked(); - void onLocationHistoryLoaded(); + void onLocationHistoryChanged(LLLocationHistory::EChangeType event); void onLocationPrearrange(const LLSD& data); void onTextEditorRightClicked(S32 x, S32 y, MASK mask); void onLandmarkLoaded(LLLandmark* lm); @@ -138,6 +159,7 @@ private: // callbacks bool onLocationContextMenuItemEnabled(const LLSD& userdata); void onLocationContextMenuItemClicked(const LLSD& userdata); + void onParcelIconClick(EParcelIcon icon); LLMenuGL* mLocationContextMenu; LLButton* mAddLandmarkBtn; @@ -145,32 +167,29 @@ private: LLButton* mInfoBtn; S32 mIconHPad; // pad between all icons S32 mAddLandmarkHPad; // pad to left of landmark star - - enum EParcelIcon - { - VOICE_ICON = 0, - FLY_ICON, - PUSH_ICON, - BUILD_ICON, - SCRIPTS_ICON, - DAMAGE_ICON, - ICON_COUNT - }; + + LLIconCtrl* mMaturityIcon; LLIconCtrl* mParcelIcon[ICON_COUNT]; LLTextBox* mDamageText; LLAddLandmarkObserver* mAddLandmarkObserver; LLRemoveLandmarkObserver* mRemoveLandmarkObserver; + LLParcelChangeObserver* mParcelChangeObserver; + boost::signals2::connection mCoordinatesControlConnection; + boost::signals2::connection mParcelPropertiesControlConnection; boost::signals2::connection mParcelMgrConnection; boost::signals2::connection mLocationHistoryConnection; LLUIImage* mLandmarkImageOn; LLUIImage* mLandmarkImageOff; + LLUIImage* mIconMaturityGeneral; + LLUIImage* mIconMaturityAdult; std::string mAddLandmarkTooltip; std::string mEditLandmarkTooltip; // this field holds a human-readable form of the location string, it is needed to be able to compare copy-pated value and real location std::string mHumanReadableLocation; + bool isHumanReadableLocationVisible; }; #endif diff --git a/indra/newview/lllogchat.cpp b/indra/newview/lllogchat.cpp index fc9654e9ad..be8b2363ad 100644 --- a/indra/newview/lllogchat.cpp +++ b/indra/newview/lllogchat.cpp @@ -35,17 +35,31 @@ #include "llagent.h" #include "llagentui.h" #include "lllogchat.h" -#include "llfloaterchat.h" #include "lltrans.h" #include "llviewercontrol.h" #include "llinstantmessage.h" +#include "llsingleton.h" // for LLSingleton #include <boost/algorithm/string/trim.hpp> #include <boost/algorithm/string/replace.hpp> #include <boost/regex.hpp> #include <boost/regex/v4/match_results.hpp> +#if LL_MSVC +// disable warning about boost::lexical_cast unreachable code +// when it fails to parse the string +#pragma warning (disable:4702) +#endif + +#include <boost/date_time/gregorian/gregorian.hpp> +#if LL_MSVC +#pragma warning(pop) // Restore all warnings to the previous state +#endif + +#include <boost/date_time/posix_time/posix_time.hpp> +#include <boost/date_time/local_time_adjustor.hpp> + const S32 LOG_RECALL_SIZE = 2048; const static std::string IM_TIME("time"); @@ -59,9 +73,6 @@ const static std::string NEW_LINE_SPACE_PREFIX("\n "); const static std::string TWO_SPACES(" "); const static std::string MULTI_LINE_PREFIX(" "); -//viewer 1.23 may have used "You" for Agent's entries -const static std::string YOU("You"); - /** * Chat log lines - timestamp and name are optional but message text is mandatory. * @@ -73,6 +84,8 @@ const static std::string YOU("You"); * Katar Ivercourt is Offline * [3:00] Katar Ivercourt is Offline * [2009/11/20 3:01] Corba ProductEngine is Offline + * + * Note: "You" was used as an avatar names in viewers of previous versions */ const static boost::regex TIMESTAMP_AND_STUFF("^(\\[\\d{4}/\\d{1,2}/\\d{1,2}\\s+\\d{1,2}:\\d{2}\\]\\s+|\\[\\d{1,2}:\\d{2}\\]\\s+)?(.*)$"); @@ -82,11 +95,96 @@ const static boost::regex TIMESTAMP_AND_STUFF("^(\\[\\d{4}/\\d{1,2}/\\d{1,2}\\s+ */ const static boost::regex NAME_AND_TEXT("(You:|Second Life:|[^\\s:]+\\s*[:]{1}|\\S+\\s+[^\\s:]+[:]{1})?(\\s*)(.*)"); +//is used to parse complex object names like "Xstreet SL Terminal v2.2.5 st" +const static std::string NAME_TEXT_DIVIDER(": "); + +// is used for timestamps adjusting +const static char* DATE_FORMAT("%Y/%m/%d %H:%M"); +const static char* TIME_FORMAT("%H:%M"); + const static int IDX_TIMESTAMP = 1; const static int IDX_STUFF = 2; const static int IDX_NAME = 1; const static int IDX_TEXT = 3; +using namespace boost::posix_time; +using namespace boost::gregorian; + +class LLLogChatTimeScanner: public LLSingleton<LLLogChatTimeScanner> +{ +public: + LLLogChatTimeScanner() + { + // Note, date/time facets will be destroyed by string streams + mDateStream.imbue(std::locale(mDateStream.getloc(), new date_input_facet(DATE_FORMAT))); + mTimeStream.imbue(std::locale(mTimeStream.getloc(), new time_facet(TIME_FORMAT))); + mTimeStream.imbue(std::locale(mTimeStream.getloc(), new time_input_facet(DATE_FORMAT))); + } + + date getTodayPacificDate() + { + typedef boost::date_time::local_adjustor<ptime, -8, no_dst> pst; + typedef boost::date_time::local_adjustor<ptime, -7, no_dst> pdt; + time_t t_time = time(NULL); + ptime p_time = LLStringOps::getPacificDaylightTime() + ? pdt::utc_to_local(from_time_t(t_time)) + : pst::utc_to_local(from_time_t(t_time)); + struct tm s_tm = to_tm(p_time); + return date_from_tm(s_tm); + } + + void checkAndCutOffDate(std::string& time_str) + { + // Cuts off the "%Y/%m/%d" from string for todays timestamps. + // Assume that passed string has at least "%H:%M" time format. + date log_date(not_a_date_time); + date today(getTodayPacificDate()); + + // Parse the passed date + mDateStream.str(LLStringUtil::null); + mDateStream << time_str; + mDateStream >> log_date; + mDateStream.clear(); + + days zero_days(0); + days days_alive = today - log_date; + + if ( days_alive == zero_days ) + { + // Yep, today's so strip "%Y/%m/%d" info + ptime stripped_time(not_a_date_time); + + mTimeStream.str(LLStringUtil::null); + mTimeStream << time_str; + mTimeStream >> stripped_time; + mTimeStream.clear(); + + time_str.clear(); + + mTimeStream.str(LLStringUtil::null); + mTimeStream << stripped_time; + mTimeStream >> time_str; + mTimeStream.clear(); + } + + LL_DEBUGS("LLChatLogParser") + << " log_date: " + << log_date + << " today: " + << today + << " days alive: " + << days_alive + << " new time: " + << time_str + << LL_ENDL; + } + + +private: + std::stringstream mDateStream; + std::stringstream mTimeStream; +}; + //static std::string LLLogChat::makeLogFileName(std::string filename) { @@ -142,16 +240,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; } @@ -160,10 +262,19 @@ void LLLogChat::saveHistory(const std::string& filename, if (gSavedPerAccountSettings.getBOOL("LogTimestamp")) item["time"] = LLLogChat::timestamp(gSavedPerAccountSettings.getBOOL("LogTimestampDate")); - item["from"] = from; item["from_id"] = from_id; item["message"] = line; + //adding "Second Life:" for all system messages to make chat log history parsing more reliable + if (from.empty() && from_id.isNull()) + { + item["from"] = SYSTEM_FROM; + } + else + { + item["from"] = from; + } + file << LLChatLogFormatter(item) << std::endl; file.close(); @@ -241,15 +352,15 @@ void append_to_last_message(std::list<LLSD>& messages, const std::string& line) messages.back()[IM_TEXT] = im_text; } -void LLLogChat::loadAllHistory(const std::string& session_name, std::list<LLSD>& messages) +void LLLogChat::loadAllHistory(const std::string& file_name, std::list<LLSD>& messages) { - if (session_name.empty()) + if (file_name.empty()) { llwarns << "Session name is Empty!" << llendl; return ; } - LLFILE* fptr = LLFile::fopen(makeLogFileName(session_name), "r"); /*Flawfinder: ignore*/ + LLFILE* fptr = LLFile::fopen(makeLogFileName(file_name), "r"); /*Flawfinder: ignore*/ if (!fptr) return; //No previous conversation with this name. char buffer[LOG_RECALL_SIZE]; /*Flawfinder: ignore*/ @@ -363,7 +474,8 @@ bool LLChatLogParser::parse(std::string& raw, LLSD& im) boost::trim(timestamp); timestamp.erase(0, 1); timestamp.erase(timestamp.length()-1, 1); - im[IM_TIME] = timestamp; + LLLogChatTimeScanner::instance().checkAndCutOffDate(timestamp); + im[IM_TIME] = timestamp; } else { @@ -398,6 +510,18 @@ bool LLChatLogParser::parse(std::string& raw, LLSD& im) im[IM_FROM_ID] = LLUUID::null; } + //possibly a case of complex object names consisting of 3+ words + if (!has_name) + { + U32 divider_pos = stuff.find(NAME_TEXT_DIVIDER); + if (divider_pos != std::string::npos && divider_pos < (stuff.length() - NAME_TEXT_DIVIDER.length())) + { + im[IM_FROM] = stuff.substr(0, divider_pos); + im[IM_TEXT] = stuff.substr(divider_pos + NAME_TEXT_DIVIDER.length()); + return true; + } + } + if (!has_name) { //text is mandatory diff --git a/indra/newview/lllogchat.h b/indra/newview/lllogchat.h index 3d3f5c4458..4290e4bbc0 100644 --- a/indra/newview/lllogchat.h +++ b/indra/newview/lllogchat.h @@ -56,7 +56,7 @@ public: void (*callback)(ELogLineType, const LLSD&, void*), void* userdata); - static void loadAllHistory(const std::string& session_name, std::list<LLSD>& messages); + static void loadAllHistory(const std::string& file_name, std::list<LLSD>& messages); private: static std::string cleanFileName(std::string filename); }; diff --git a/indra/newview/llmanip.cpp b/indra/newview/llmanip.cpp index f30821cacf..a96240e31c 100644 --- a/indra/newview/llmanip.cpp +++ b/indra/newview/llmanip.cpp @@ -436,7 +436,7 @@ void LLManip::renderXYZ(const LLVector3 &vec) glPushMatrix(); { - LLUIImagePtr imagep = LLUI::getUIImage("rounded_square.tga"); + LLUIImagePtr imagep = LLUI::getUIImage("Rounded_Square"); gViewerWindow->setup2DRender(); const LLVector2& display_scale = gViewerWindow->getDisplayScale(); glScalef(display_scale.mV[VX], display_scale.mV[VY], 1.f); diff --git a/indra/newview/llmanipscale.cpp b/indra/newview/llmanipscale.cpp index 84a5eb7352..ee3ffa2450 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/llmaniptranslate.cpp b/indra/newview/llmaniptranslate.cpp index 5f30ab4e01..52fe31fbba 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) diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 199bd966ef..bf33d8527e 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -39,7 +39,6 @@ #include "llfloaterworldmap.h" #include "lluictrlfactory.h" #include "llurldispatcher.h" -#include "llurlsimstring.h" #include "llviewborder.h" #include "llviewercontrol.h" #include "llviewermedia.h" @@ -85,7 +84,6 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) : mHomePageUrl( "" ), mIgnoreUIScale( true ), mAlwaysRefresh( false ), - mExternalUrl( "" ), mMediaSource( 0 ), mTakeFocusOnClick( true ), mCurrentNavUrl( "" ), @@ -544,9 +542,9 @@ void LLMediaCtrl::navigateToLocalPage( const std::string& subdir, const std::str if (! gDirUtilp->fileExists(expanded_filename)) { - if (language != "en-us") + if (language != "en") { - expanded_filename = gDirUtilp->findSkinnedFilename("html", "en-us", filename); + expanded_filename = gDirUtilp->findSkinnedFilename("html", "en", filename); if (! gDirUtilp->fileExists(expanded_filename)) { llwarns << "File " << subdir << delim << filename_in << "not found" << llendl; @@ -633,6 +631,7 @@ bool LLMediaCtrl::ensureMediaSourceExists() mMediaSource->setHomeURL(mHomePageUrl); mMediaSource->setVisible( getVisible() ); mMediaSource->addObserver( this ); + mMediaSource->setBackgroundColor( getBackgroundColor() ); if(mClearCache) { mMediaSource->clearCache(); @@ -672,34 +671,12 @@ LLPluginClassMedia* LLMediaCtrl::getMediaPlugin() // void LLMediaCtrl::draw() { - LLPluginClassMedia* media_plugin = NULL; - - if(mMediaSource && mMediaSource->hasMedia()) - { - media_plugin = mMediaSource->getMediaPlugin(); - } - else - { - return; - } - - if(!media_plugin || (!media_plugin->textureValid())) - { - // Don't try to draw without a valid texture - return; - } - - LLViewerMediaTexture* media_texture = LLViewerTextureManager::findMediaTexture(mMediaTextureID); - - if (!media_texture ) - return; - if ( gRestoreGL == 1 ) { LLRect r = getRect(); reshape( r.getWidth(), r.getHeight(), FALSE ); return; - }; + } // NOTE: optimization needed here - probably only need to do this once // unless tearoffs change the parent which they probably do. @@ -713,125 +690,161 @@ void LLMediaCtrl::draw() setFrequentUpdates( false ); }; + bool draw_media = false; + + LLPluginClassMedia* media_plugin = NULL; + LLViewerMediaTexture* media_texture = NULL; + + if(mMediaSource && mMediaSource->hasMedia()) + { + media_plugin = mMediaSource->getMediaPlugin(); + + if(media_plugin && (media_plugin->textureValid())) + { + media_texture = LLViewerTextureManager::findMediaTexture(mMediaTextureID); + if(media_texture) + { + draw_media = true; + } + } + } + if(mHidingInitialLoad) { // If we're hiding loading, don't draw at all. - return; + draw_media = false; } - // alpha off for this - LLGLSUIDefault gls_ui; - LLGLDisable gls_alphaTest( GL_ALPHA_TEST ); - - gGL.pushMatrix(); + bool background_visible = isBackgroundVisible(); + bool background_opaque = isBackgroundOpaque(); + + if(draw_media) { - if (mIgnoreUIScale) + // alpha off for this + LLGLSUIDefault gls_ui; + LLGLDisable gls_alphaTest( GL_ALPHA_TEST ); + + gGL.pushUIMatrix(); { - glLoadIdentity(); - // font system stores true screen origin, need to scale this by UI scale factor - // to get render origin for this view (with unit scale) - gGL.translatef(floorf(LLFontGL::sCurOrigin.mX * LLUI::sGLScaleFactor.mV[VX]), - floorf(LLFontGL::sCurOrigin.mY * LLUI::sGLScaleFactor.mV[VY]), - LLFontGL::sCurOrigin.mZ); - } + if (mIgnoreUIScale) + { + gGL.loadUIIdentity(); + // font system stores true screen origin, need to scale this by UI scale factor + // to get render origin for this view (with unit scale) + gGL.translateUI(floorf(LLFontGL::sCurOrigin.mX * LLUI::sGLScaleFactor.mV[VX]), + floorf(LLFontGL::sCurOrigin.mY * LLUI::sGLScaleFactor.mV[VY]), + LLFontGL::sCurOrigin.mZ); + } - // scale texture to fit the space using texture coords - gGL.getTexUnit(0)->bind(media_texture); - gGL.color4fv( LLColor4::white.mV ); - F32 max_u = ( F32 )media_plugin->getWidth() / ( F32 )media_plugin->getTextureWidth(); - F32 max_v = ( F32 )media_plugin->getHeight() / ( F32 )media_plugin->getTextureHeight(); + // scale texture to fit the space using texture coords + gGL.getTexUnit(0)->bind(media_texture); + gGL.color4fv( LLColor4::white.mV ); + F32 max_u = ( F32 )media_plugin->getWidth() / ( F32 )media_plugin->getTextureWidth(); + F32 max_v = ( F32 )media_plugin->getHeight() / ( F32 )media_plugin->getTextureHeight(); - LLRect r = getRect(); - S32 width, height; - S32 x_offset = 0; - S32 y_offset = 0; - - if(mStretchToFill) - { - if(mMaintainAspectRatio) + LLRect r = getRect(); + S32 width, height; + S32 x_offset = 0; + S32 y_offset = 0; + + if(mStretchToFill) { - F32 media_aspect = (F32)(media_plugin->getWidth()) / (F32)(media_plugin->getHeight()); - F32 view_aspect = (F32)(r.getWidth()) / (F32)(r.getHeight()); - if(media_aspect > view_aspect) + if(mMaintainAspectRatio) { - // max width, adjusted height - width = r.getWidth(); - height = llmin(llmax(llround(width / media_aspect), 0), r.getHeight()); + F32 media_aspect = (F32)(media_plugin->getWidth()) / (F32)(media_plugin->getHeight()); + F32 view_aspect = (F32)(r.getWidth()) / (F32)(r.getHeight()); + if(media_aspect > view_aspect) + { + // max width, adjusted height + width = r.getWidth(); + height = llmin(llmax(llround(width / media_aspect), 0), r.getHeight()); + } + else + { + // max height, adjusted width + height = r.getHeight(); + width = llmin(llmax(llround(height * media_aspect), 0), r.getWidth()); + } } else { - // max height, adjusted width + width = r.getWidth(); height = r.getHeight(); - width = llmin(llmax(llround(height * media_aspect), 0), r.getWidth()); } } else { - width = r.getWidth(); - height = r.getHeight(); + width = llmin(media_plugin->getWidth(), r.getWidth()); + height = llmin(media_plugin->getHeight(), r.getHeight()); } - } - else - { - width = llmin(media_plugin->getWidth(), r.getWidth()); - height = llmin(media_plugin->getHeight(), r.getHeight()); - } - - x_offset = (r.getWidth() - width) / 2; - y_offset = (r.getHeight() - height) / 2; + + x_offset = (r.getWidth() - width) / 2; + y_offset = (r.getHeight() - height) / 2; - if(mIgnoreUIScale) - { - x_offset = llround((F32)x_offset * LLUI::sGLScaleFactor.mV[VX]); - y_offset = llround((F32)y_offset * LLUI::sGLScaleFactor.mV[VY]); - width = llround((F32)width * LLUI::sGLScaleFactor.mV[VX]); - height = llround((F32)height * LLUI::sGLScaleFactor.mV[VY]); - } + if(mIgnoreUIScale) + { + x_offset = llround((F32)x_offset * LLUI::sGLScaleFactor.mV[VX]); + y_offset = llround((F32)y_offset * LLUI::sGLScaleFactor.mV[VY]); + width = llround((F32)width * LLUI::sGLScaleFactor.mV[VX]); + height = llround((F32)height * LLUI::sGLScaleFactor.mV[VY]); + } - // draw the browser - gGL.setSceneBlendType(LLRender::BT_REPLACE); - gGL.begin( LLRender::QUADS ); - if (! media_plugin->getTextureCoordsOpenGL()) - { - // render using web browser reported width and height, instead of trying to invert GL scale - gGL.texCoord2f( max_u, 0.f ); - gGL.vertex2i( x_offset + width, y_offset + height ); + // draw the browser + gGL.setSceneBlendType(LLRender::BT_REPLACE); + gGL.begin( LLRender::QUADS ); + if (! media_plugin->getTextureCoordsOpenGL()) + { + // render using web browser reported width and height, instead of trying to invert GL scale + gGL.texCoord2f( max_u, 0.f ); + gGL.vertex2i( x_offset + width, y_offset + height ); - gGL.texCoord2f( 0.f, 0.f ); - gGL.vertex2i( x_offset, y_offset + height ); + gGL.texCoord2f( 0.f, 0.f ); + gGL.vertex2i( x_offset, y_offset + height ); - gGL.texCoord2f( 0.f, max_v ); - gGL.vertex2i( x_offset, y_offset ); + gGL.texCoord2f( 0.f, max_v ); + gGL.vertex2i( x_offset, y_offset ); - gGL.texCoord2f( max_u, max_v ); - gGL.vertex2i( x_offset + width, y_offset ); - } - else - { - // render using web browser reported width and height, instead of trying to invert GL scale - gGL.texCoord2f( max_u, max_v ); - gGL.vertex2i( x_offset + width, y_offset + height ); + gGL.texCoord2f( max_u, max_v ); + gGL.vertex2i( x_offset + width, y_offset ); + } + else + { + // render using web browser reported width and height, instead of trying to invert GL scale + gGL.texCoord2f( max_u, max_v ); + gGL.vertex2i( x_offset + width, y_offset + height ); - gGL.texCoord2f( 0.f, max_v ); - gGL.vertex2i( x_offset, y_offset + height ); + gGL.texCoord2f( 0.f, max_v ); + gGL.vertex2i( x_offset, y_offset + height ); - gGL.texCoord2f( 0.f, 0.f ); - gGL.vertex2i( x_offset, y_offset ); + gGL.texCoord2f( 0.f, 0.f ); + gGL.vertex2i( x_offset, y_offset ); - gGL.texCoord2f( max_u, 0.f ); - gGL.vertex2i( x_offset + width, y_offset ); + gGL.texCoord2f( max_u, 0.f ); + gGL.vertex2i( x_offset + width, y_offset ); + } + gGL.end(); + gGL.setSceneBlendType(LLRender::BT_ALPHA); } - gGL.end(); - gGL.setSceneBlendType(LLRender::BT_ALPHA); + gGL.popUIMatrix(); + } - gGL.popMatrix(); - + else + { + // Setting these will make LLPanel::draw draw the opaque background color. + setBackgroundVisible(true); + setBackgroundOpaque(true); + } + // highlight if keyboard focus here. (TODO: this needs some work) if ( mBorder && mBorder->getVisible() ) mBorder->setKeyboardFocusHighlight( gFocusMgr.childHasKeyboardFocus( this ) ); LLPanel::draw(); + + // Restore the previous values + setBackgroundVisible(background_visible); + setBackgroundOpaque(background_opaque); } //////////////////////////////////////////////////////////////////////////////// @@ -857,20 +870,6 @@ void LLMediaCtrl::convertInputCoords(S32& x, S32& y) } //////////////////////////////////////////////////////////////////////////////// -// static -bool LLMediaCtrl::onClickLinkExternalTarget(const LLSD& notification, const LLSD& response ) -{ - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if ( 0 == option ) - { - // open in external browser because we don't support - // creation of our own secondary browser windows - LLWeb::loadURLExternal( notification["payload"]["external_url"].asString() ); - } - return false; -} - -//////////////////////////////////////////////////////////////////////////////// // inherited from LLViewerMediaObserver //virtual void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) @@ -979,50 +978,91 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self ) { // retrieve the event parameters - std::string target = self->getClickTarget(); std::string url = self->getClickURL(); + U32 target_type = self->getClickTargetType(); - // if there is a value for the target - if ( !target.empty() ) + // is there is a target specified for the link? + if (target_type == LLPluginClassMedia::TARGET_EXTERNAL || + target_type == LLPluginClassMedia::TARGET_BLANK ) { - if ( target == "_external" ) + if (gSavedSettings.getBOOL("UseExternalBrowser")) { - mExternalUrl = url; LLSD payload; - payload["external_url"] = mExternalUrl; + payload["url"] = url; + payload["target_type"] = LLSD::Integer(target_type); LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, onClickLinkExternalTarget); - return; + } + else + { + clickLinkWithTarget(url, target_type); } } - - const std::string protocol1( "http://" ); - const std::string protocol2( "https://" ); - if( mOpenLinksInExternalBrowser ) - { - if ( !url.empty() ) + else { + const std::string protocol1( "http://" ); + const std::string protocol2( "https://" ); + if( mOpenLinksInExternalBrowser ) { - if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 || - LLStringUtil::compareInsensitive( url.substr( 0, protocol2.length() ), protocol2 ) == 0 ) + if ( !url.empty() ) { - LLWeb::loadURLExternal( url ); + if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 || + LLStringUtil::compareInsensitive( url.substr( 0, protocol2.length() ), protocol2 ) == 0 ) + { + LLWeb::loadURLExternal( url ); + } } } - } - else - if( mOpenLinksInInternalBrowser ) - { - if ( !url.empty() ) + else + if( mOpenLinksInInternalBrowser ) { - if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 || - LLStringUtil::compareInsensitive( url.substr( 0, protocol2.length() ), protocol2 ) == 0 ) + if ( !url.empty() ) { - llwarns << "Dead, unimplemented path that we used to send to the built-in browser long ago." << llendl; + if ( LLStringUtil::compareInsensitive( url.substr( 0, protocol1.length() ), protocol1 ) == 0 || + LLStringUtil::compareInsensitive( url.substr( 0, protocol2.length() ), protocol2 ) == 0 ) + { + llwarns << "Dead, unimplemented path that we used to send to the built-in browser long ago." << llendl; + } } } } } //////////////////////////////////////////////////////////////////////////////// +// static +bool LLMediaCtrl::onClickLinkExternalTarget(const LLSD& notification, const LLSD& response ) +{ + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if ( 0 == option ) + { + LLSD payload = notification["payload"]; + std::string url = payload["url"].asString(); + S32 target_type = payload["target_type"].asInteger(); + clickLinkWithTarget(url, target_type); + } + return false; +} + + +//////////////////////////////////////////////////////////////////////////////// +// static +void LLMediaCtrl::clickLinkWithTarget(const std::string& url, const S32& target_type ) +{ + if (target_type == LLPluginClassMedia::TARGET_EXTERNAL) + { + // load target in an external browser + LLWeb::loadURLExternal(url); + } + else if (target_type == LLPluginClassMedia::TARGET_BLANK) + { + // load target in the user's preferred browser + LLWeb::loadURL(url); + } + else { + // unsupported link target - shouldn't happen + LL_WARNS("LinkTarget") << "Unsupported link target type" << LL_ENDL; + } +} + +//////////////////////////////////////////////////////////////////////////////// // void LLMediaCtrl::onClickLinkNoFollow( LLPluginClassMedia* self ) { diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h index 8f9e6e7179..60e0c4073b 100644 --- a/indra/newview/llmediactrl.h +++ b/indra/newview/llmediactrl.h @@ -172,6 +172,7 @@ public: private: void onVisibilityChange ( const LLSD& new_visibility ); static bool onClickLinkExternalTarget( const LLSD&, const LLSD& ); + static void clickLinkWithTarget(const std::string& url, const S32& target_type ); const S32 mTextureDepthBytes; LLUUID mMediaTextureID; @@ -182,7 +183,6 @@ public: bool mOpenLinksInInternalBrowser; bool mTrusted; std::string mHomePageUrl; - std::string mExternalUrl; std::string mCurrentNavUrl; bool mIgnoreUIScale; bool mAlwaysRefresh; diff --git a/indra/newview/llmediadataclient.h b/indra/newview/llmediadataclient.h index 75d32e707b..8dd72cb595 100755 --- a/indra/newview/llmediadataclient.h +++ b/indra/newview/llmediadataclient.h @@ -37,7 +37,7 @@ #include <queue> #include "llrefcount.h" #include "llpointer.h" -#include "lltimer.h" +#include "lleventtimer.h" // Link seam for LLVOVolume diff --git a/indra/newview/llmenucommands.cpp b/indra/newview/llmenucommands.cpp index a2aef9ba63..8d950f072d 100644 --- a/indra/newview/llmenucommands.cpp +++ b/indra/newview/llmenucommands.cpp @@ -45,8 +45,7 @@ #include "llagent.h" #include "llcallingcard.h" #include "llviewercontrol.h" -#include "llfirstuse.h" -#include "llfloaterchat.h" +//#include "llfirstuse.h" #include "llfloaterworldmap.h" #include "lllineeditor.h" #include "llstatusbar.h" diff --git a/indra/newview/llmorphview.cpp b/indra/newview/llmorphview.cpp index f562e45770..b95e8bd3a2 100644 --- a/indra/newview/llmorphview.cpp +++ b/indra/newview/llmorphview.cpp @@ -40,7 +40,7 @@ #include "lldrawable.h" #include "lldrawpoolavatar.h" #include "llface.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llfloatercustomize.h" #include "llfloatertools.h" #include "llresmgr.h" @@ -143,7 +143,7 @@ void LLMorphView::setVisible(BOOL visible) initialize(); // First run dialog - LLFirstUse::useAppearance(); + //LLFirstUse::useAppearance(); } else { diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index 0ab3b07aea..1853b511be 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -77,7 +77,6 @@ LLFloaterMove::LLFloaterMove(const LLSD& key) mTurnRightButton(NULL), mMoveUpButton(NULL), mMoveDownButton(NULL), - mStopFlyingButton(NULL), mModeActionsPanel(NULL), mCurrentMode(MM_WALK) { @@ -87,6 +86,7 @@ LLFloaterMove::LLFloaterMove(const LLSD& key) BOOL LLFloaterMove::postBuild() { setIsChrome(TRUE); + setTitleVisible(TRUE); // restore title visibility after chrome applying LLDockableFloater::postBuild(); @@ -112,8 +112,6 @@ BOOL LLFloaterMove::postBuild() mMoveDownButton->setHeldDownCallback(boost::bind(&LLFloaterMove::moveDown, this)); - mStopFlyingButton = getChild<LLButton>("stop_fly_btn"); - mModeActionsPanel = getChild<LLPanel>("panel_modes"); LLButton* btn; @@ -126,11 +124,6 @@ BOOL LLFloaterMove::postBuild() btn = getChild<LLButton>("mode_fly_btn"); btn->setCommitCallback(boost::bind(&LLFloaterMove::onFlyButtonClick, this)); - btn = getChild<LLButton>("stop_fly_btn"); - btn->setCommitCallback(boost::bind(&LLFloaterMove::onStopFlyingButtonClick, this)); - - - showFlyControls(false); initModeTooltips(); @@ -250,6 +243,12 @@ void LLFloaterMove::setSittingMode(BOOL bSitting) else { LLPanelStandStopFlying::clearStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STAND); + + // show "Stop Flying" button if needed. EXT-871 + if (gAgent.getFlying()) + { + LLPanelStandStopFlying::setStandStopFlyingMode(LLPanelStandStopFlying::SSFM_STOP_FLYING); + } } enableInstance(!bSitting); } @@ -298,10 +297,6 @@ void LLFloaterMove::onFlyButtonClick() { setMovementMode(MM_FLY); } -void LLFloaterMove::onStopFlyingButtonClick() -{ - setMovementMode(gAgent.getAlwaysRun() ? MM_RUN : MM_WALK); -} void LLFloaterMove::setMovementMode(const EMovementMode mode) { @@ -347,16 +342,13 @@ void LLFloaterMove::updateButtonsWithMovementMode(const EMovementMode newMode) showFlyControls(MM_FLY == newMode); setModeTooltip(newMode); setModeButtonToggleState(newMode); + setModeTitle(newMode); } void LLFloaterMove::showFlyControls(bool bShow) { mMoveUpButton->setVisible(bShow); mMoveDownButton->setVisible(bShow); - - // *TODO: mantipov: mStopFlyingButton from the FloaterMove is not used now. - // It was not completly removed until functionality is reviewed by LL - mStopFlyingButton->setVisible(FALSE); } void LLFloaterMove::initModeTooltips() @@ -414,11 +406,30 @@ void LLFloaterMove::setModeTooltip(const EMovementMode mode) } } +void LLFloaterMove::setModeTitle(const EMovementMode mode) +{ + std::string title; + switch(mode) + { + case MM_WALK: + title = getString("walk_title"); + break; + case MM_RUN: + title = getString("run_title"); + break; + case MM_FLY: + title = getString("fly_title"); + break; + default: + // title should be provided for all modes + llassert(false); + break; + } + setTitle(title); +} + /** * Updates position of the floater to be center aligned with Move button. - * - * Because Tip floater created as dependent floater this method - * must be called before "showQuickTips()" to get Tip floater be positioned at the right side of the floater */ void LLFloaterMove::updatePosition() { @@ -589,8 +600,16 @@ 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); + } + + // 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) @@ -614,7 +633,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; } @@ -643,6 +662,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 } @@ -673,10 +695,6 @@ void LLPanelStandStopFlying::onStandButtonClick() gAgent.setControlFlags(AGENT_CONTROL_STAND_UP); setFocus(FALSE); // EXT-482 - - BOOL fly = gAgent.getFlying(); - mStopFlyingButton->setVisible(fly); - setVisible(fly); } void LLPanelStandStopFlying::onStopFlyingButtonClick() @@ -684,6 +702,7 @@ void LLPanelStandStopFlying::onStopFlyingButtonClick() gAgent.setFlying(FALSE); setFocus(FALSE); // EXT-482 + setVisible(FALSE); } /** diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h index 06463f02af..dcca8308d9 100644 --- a/indra/newview/llmoveview.h +++ b/indra/newview/llmoveview.h @@ -86,13 +86,12 @@ private: void onWalkButtonClick(); void onRunButtonClick(); void onFlyButtonClick(); - void onStopFlyingButtonClick(); void initMovementMode(); void setMovementMode(const EMovementMode mode); void showFlyControls(bool bShow); void initModeTooltips(); void setModeTooltip(const EMovementMode mode); - void showQuickTips(const EMovementMode mode); + void setModeTitle(const EMovementMode mode); void initModeButtonMap(); void setModeButtonToggleState(const EMovementMode mode); void updateButtonsWithMovementMode(const EMovementMode newMode); @@ -108,7 +107,6 @@ public: LLButton* mMoveUpButton; LLButton* mMoveDownButton; private: - LLButton* mStopFlyingButton; LLPanel* mModeActionsPanel; typedef std::map<LLView*, std::string> control_tooltip_map_t; diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index b520bc1c2d..2d3c4b187e 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -52,23 +52,14 @@ #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 -#include "llviewerwindow.h" #include "llworld.h" //for particle system banning -#include "llchat.h" -#include "llfloaterchat.h" #include "llimview.h" #include "llnotifications.h" -#include "lluistring.h" -#include "llviewerobject.h" #include "llviewerobjectlist.h" #include "lltrans.h" @@ -219,61 +210,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\ 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 @@ -524,17 +471,8 @@ 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); } - - LLChat auto_chat(message); - LLFloaterChat::addChat(auto_chat, FALSE, FALSE); } } @@ -718,8 +656,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); @@ -754,26 +690,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 409b637bf2..e1e81a24b4 100644 --- a/indra/newview/llmutelist.h +++ b/indra/newview/llmutelist.h @@ -127,12 +127,7 @@ public: // 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 @@ private: 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/llnamebox.cpp b/indra/newview/llnamebox.cpp index 2f4a266198..cd810b9793 100644 --- a/indra/newview/llnamebox.cpp +++ b/indra/newview/llnamebox.cpp @@ -52,6 +52,8 @@ LLNameBox::LLNameBox(const Params& p) : LLTextBox(p) { mNameID = LLUUID::null; + mLink = p.link; + mInitialValue = p.initial_value().asString(); LLNameBox::sInstances.insert(this); setText(LLStringUtil::null); } @@ -66,17 +68,23 @@ void LLNameBox::setNameID(const LLUUID& name_id, BOOL is_group) mNameID = name_id; std::string name; + BOOL got_name = FALSE; if (!is_group) { - gCacheName->getFullName(name_id, name); + got_name = gCacheName->getFullName(name_id, name); } else { - gCacheName->getGroupName(name_id, name); + got_name = gCacheName->getGroupName(name_id, name); } - setText(name); + // Got the name already? Set it. + // Otherwise it will be set later in refresh(). + if (got_name) + setName(name, is_group); + else + setText(mInitialValue); } void LLNameBox::refresh(const LLUUID& id, const std::string& firstname, @@ -93,7 +101,7 @@ void LLNameBox::refresh(const LLUUID& id, const std::string& firstname, { name = firstname; } - setText(name); + setName(name, is_group); } } @@ -109,3 +117,22 @@ void LLNameBox::refreshAll(const LLUUID& id, const std::string& firstname, box->refresh(id, firstname, lastname, is_group); } } + +void LLNameBox::setName(const std::string& name, BOOL is_group) +{ + if (mLink) + { + std::string url; + + if (is_group) + url = "[secondlife:///app/group/" + LLURI::escape(name) + "/about " + name + "]"; + else + url = "[secondlife:///app/agent/" + mNameID.asString() + "/about " + name + "]"; + + setText(url); + } + else + { + setText(name); + } +} diff --git a/indra/newview/llnamebox.h b/indra/newview/llnamebox.h index 3edb36883f..48b54faec8 100644 --- a/indra/newview/llnamebox.h +++ b/indra/newview/llnamebox.h @@ -47,9 +47,11 @@ public: struct Params : public LLInitParam::Block<Params, LLTextBox::Params> { Optional<bool> is_group; + Optional<bool> link; Params() : is_group("is_group", false) + , link("link", false) {} }; @@ -67,10 +69,14 @@ protected: friend class LLUICtrlFactory; private: + void setName(const std::string& name, BOOL is_group); + static std::set<LLNameBox*> sInstances; private: LLUUID mNameID; + BOOL mLink; + std::string mInitialValue; }; diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index 7e6145f578..114fef8712 100644 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -74,12 +74,12 @@ void LLNameListCtrl::addNameItem(const LLUUID& agent_id, EAddPosition pos, { //llinfos << "LLNameListCtrl::addNameItem " << agent_id << llendl; - std::string fullname; - gCacheName->getFullName(agent_id, fullname); - - fullname.append(suffix); + NameItem item; + item.value = agent_id; + item.enabled = enabled; + item.target = INDIVIDUAL; - addStringUUIDItem(fullname, agent_id, pos, enabled); + addNameItemRow(item, pos); } // virtual, public @@ -130,11 +130,12 @@ BOOL LLNameListCtrl::handleDragAndDrop( return handled; } -void LLNameListCtrl::showAvatarInspector(const LLUUID& avatar_id) +void LLNameListCtrl::showInspector(const LLUUID& avatar_id, bool is_group) { - LLSD key; - key["avatar_id"] = avatar_id; - LLFloaterReg::showInstance("inspect_avatar", key); + if (is_group) + LLFloaterReg::showInstance("inspect_group", LLSD().with("group_id", avatar_id)); + else + LLFloaterReg::showInstance("inspect_avatar", LLSD().with("avatar_id", avatar_id)); } //virtual @@ -147,10 +148,11 @@ BOOL LLNameListCtrl::handleToolTip(S32 x, S32 y, MASK mask) && column_index == mNameColumnIndex) { // ...this is the column with the avatar name - LLUUID avatar_id = hit_item->getValue().asUUID(); + LLUUID avatar_id = hit_item->getUUID(); if (avatar_id.notNull()) { // ...valid avatar id + LLScrollListCell* hit_cell = hit_item->getColumn(column_index); if (hit_cell) { @@ -161,12 +163,15 @@ 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 ); LLPointer<LLUIImage> icon = LLUI::getUIImage("Info_Small"); + LLCoordGL pos( sticky_rect.mRight - 16, sticky_rect.mTop - (sticky_rect.getHeight() - icon->getHeight())/2 ); + + // Should we show a group or an avatar inspector? + bool is_group = hit_item->getValue()["is_group"].asBoolean(); LLToolTip::Params params; params.background_visible( false ); - params.click_callback( boost::bind(&LLNameListCtrl::showAvatarInspector, this, avatar_id) ); + params.click_callback( boost::bind(&LLNameListCtrl::showInspector, this, avatar_id, is_group) ); params.delay_time(0.0f); // spawn instantly on hover params.image( icon ); params.message(""); @@ -220,9 +225,23 @@ LLScrollListItem* LLNameListCtrl::addElement(const LLSD& element, EAddPosition p } -LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem& name_item, EAddPosition pos) +LLScrollListItem* LLNameListCtrl::addNameItemRow( + const LLNameListCtrl::NameItem& name_item, + EAddPosition pos, + std::string& suffix) { - LLScrollListItem* item = LLScrollListCtrl::addRow(name_item, pos); + LLUUID id = name_item.value().asUUID(); + 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 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; // use supplied name by default @@ -230,7 +249,7 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem& switch(name_item.target) { case GROUP: - gCacheName->getGroupName(name_item.value().asUUID(), fullname); + gCacheName->getGroupName(id, fullname); // fullname will be "nobody" if group not found break; case SPECIAL: @@ -239,7 +258,7 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem& case INDIVIDUAL: { std::string name; - if (gCacheName->getFullName(name_item.value().asUUID(), name)) + if (gCacheName->getFullName(id, name)) { fullname = name; } @@ -249,6 +268,12 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem& break; } + // Append optional suffix. + if (!suffix.empty()) + { + fullname.append(suffix); + } + LLScrollListCell* cell = item->getColumn(mNameColumnIndex); if (cell) { @@ -270,15 +295,24 @@ LLScrollListItem* LLNameListCtrl::addNameItemRow(const LLNameListCtrl::NameItem& // public void LLNameListCtrl::removeNameItem(const LLUUID& agent_id) { - BOOL item_exists = selectByID( agent_id ); - if(item_exists) + // Find the item specified with agent_id. + S32 idx = -1; + for (item_list::iterator it = getItemList().begin(); it != getItemList().end(); it++) { - S32 index = getItemIndex(getFirstSelected()); - if(index >= 0) + LLScrollListItem* item = *it; + if (item->getUUID() == agent_id) { - deleteSingleItem(index); + idx = getItemIndex(item); + break; } } + + // Remove it. + if (idx >= 0) + { + selectNthItem(idx); // not sure whether this is needed, taken from previous implementation + deleteSingleItem(idx); + } } // public @@ -305,8 +339,7 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first, LLScrollListItem* item = *iter; if (item->getUUID() == id) { - LLScrollListCell* cell = (LLScrollListCell*)item->getColumn(0); - cell = item->getColumn(mNameColumnIndex); + LLScrollListCell* cell = item->getColumn(mNameColumnIndex); if (cell) { cell->setValue(fullname); @@ -322,8 +355,9 @@ void LLNameListCtrl::refresh(const LLUUID& id, const std::string& first, void LLNameListCtrl::refreshAll(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group) { + LLInstanceTrackerScopedGuard guard; LLInstanceTracker<LLNameListCtrl>::instance_iter it; - for (it = beginInstances(); it != endInstances(); ++it) + for (it = guard.beginInstances(); it != guard.endInstances(); ++it) { LLNameListCtrl& ctrl = *it; ctrl.refresh(id, first, last, is_group); diff --git a/indra/newview/llnamelistctrl.h b/indra/newview/llnamelistctrl.h index d0f0ec4d21..23b1cb6897 100644 --- a/indra/newview/llnamelistctrl.h +++ b/indra/newview/llnamelistctrl.h @@ -94,7 +94,7 @@ public: void addNameItem(NameItem& item, EAddPosition pos = ADD_BOTTOM); /*virtual*/ LLScrollListItem* addElement(const LLSD& element, EAddPosition pos = ADD_BOTTOM, void* userdata = NULL); - LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM); + LLScrollListItem* addNameItemRow(const NameItem& value, EAddPosition pos = ADD_BOTTOM, std::string& suffix = LLStringUtil::null); // Add a user to the list by name. It will be added, the name // requested from the cache, and updated as necessary. @@ -121,7 +121,7 @@ public: /*virtual*/ void updateColumns(); private: - void showAvatarInspector(const LLUUID& avatar_id); + void showInspector(const LLUUID& avatar_id, bool is_group); private: S32 mNameColumnIndex; @@ -129,4 +129,24 @@ private: 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/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index 71dc0f9011..e11df06d86 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,84 @@ 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) +{ + setDirectionFromName(params.direction); +} +boost::signals2::connection LLPullButton::setClickDraggingCallback(const commit_signal_t::slot_type& cb) +{ + return mClickDraggingSignal.connect(cb); +} + +/*virtual*/ +void LLPullButton::onMouseLeave(S32 x, S32 y, MASK mask) +{ + LLButton::onMouseLeave(x, y, mask); + + if (mMouseDownTimer.getStarted()) //an user have done a mouse down, if the timer started. see LLButton::handleMouseDown for details + { + const LLVector2 cursor_direction = LLVector2(F32(x), F32(y)) - mLastMouseDown; + /* For now cursor_direction points to the direction of mouse movement + * Need to decide whether should we fire a signal. + * We fire if angle between mDraggingDirection and cursor_direction is less that 45 degree + * Note: + * 0.5 * F_PI_BY_TWO equals to PI/4 radian that equals to angle of 45 degrees + */ + if (angle_between(mDraggingDirection, cursor_direction) < 0.5 * F_PI_BY_TWO)//call if angle < pi/4 + { + mClickDraggingSignal(this, LLSD()); + } + } + +} + +/*virtual*/ +BOOL LLPullButton::handleMouseDown(S32 x, S32 y, MASK mask) +{ + BOOL handled = LLButton::handleMouseDown(x, y, mask); + if (handled) + { + //if mouse down was handled by button, + //capture mouse position to calculate the direction of mouse move after mouseLeave event + mLastMouseDown.set(F32(x), F32(y)); + } + return handled; +} + +/*virtual*/ +BOOL LLPullButton::handleMouseUp(S32 x, S32 y, MASK mask) +{ + // reset data to get ready for next circle + mLastMouseDown.clear(); + return LLButton::handleMouseUp(x, y, mask); +} +/** + * this function is setting up dragging direction vector. + * Last one is just unit vector. It points to direction of mouse drag that we need to handle + */ +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 +295,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"); @@ -224,20 +304,15 @@ 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)); + 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, _2)); + mBtnForward->setHeldDownCallback(boost::bind(&LLNavigationBar::onBackOrForwardButtonHeldDown, this, _1, _2)); + mBtnForward->setClickDraggingCallback(boost::bind(&LLNavigationBar::showTeleportHistoryMenu, this,_1)); mBtnHome->setClickedCallback(boost::bind(&LLNavigationBar::onHomeButtonClicked, this)); @@ -332,10 +407,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() @@ -374,8 +449,20 @@ void LLNavigationBar::onLocationSelection() // Will not teleport to empty location. if (typed_location.empty()) return; - + //get selected item from combobox item LLSD value = mCmbLocation->getSelectedValue(); + if(value.isUndefined() && !mCmbLocation->getTextEntry()->isDirty()) + { + // At this point we know that: there is no selected item in list and text field has NOT been changed + // So there is no sense to try to change the location + return; + } + /* since navbar list support autocompletion it contains several types of item: landmark, teleport hystory item, + * typed by user slurl or region name. Let's find out which type of item the user has selected + * to make decision about adding this location into typed history. see mSaveToLocationHistory + * Note: + * Only TYPED_REGION_SLURL item will be added into LLLocationHistory + */ if(value.has("item_type")) { @@ -405,7 +492,7 @@ void LLNavigationBar::onLocationSelection() case TELEPORT_HISTORY: //in case of teleport item was selected, teleport by position too. - case TYPED_REGION_SURL: + case TYPED_REGION_SLURL: if(value.has("global_pos")) { gAgent.teleportViaLocation(LLVector3d(value["global_pos"])); @@ -417,7 +504,7 @@ void LLNavigationBar::onLocationSelection() break; } } - //Let's parse surl or region name + //Let's parse slurl or region name std::string region_name; LLVector3 local_coords(128, 128, 0); @@ -430,7 +517,17 @@ void LLNavigationBar::onLocationSelection() local_coords.set(x, y, z); else return; - }else + } + // we have to do this check after previous, because LLUrlRegistry contains handlers for slurl too + //but we need to know whether typed_location is a simple http url. + else if (LLUrlRegistry::instance().isUrl(typed_location)) + { + // display http:// URLs in the media browser, or + // anything else is sent to the search floater + LLWeb::loadURL(typed_location); + return; + } + else { // assume that an user has typed the {region name} or possible {region_name, parcel} region_name = typed_location.substr(0,typed_location.find(',')); @@ -456,7 +553,7 @@ void LLNavigationBar::onTeleportFinished(const LLVector3d& global_agent_pos) return; LLLocationHistory* lh = LLLocationHistory::getInstance(); - //TODO*: do we need convert surl into readable format? + //TODO*: do we need convert slurl into readable format? std::string location; /*NOTE: * We can't use gAgent.getPositionAgent() in case of local teleport to build location. @@ -468,7 +565,7 @@ void LLNavigationBar::onTeleportFinished(const LLVector3d& global_agent_pos) std::string tooltip (LLSLURL::buildSLURLfromPosGlobal(gAgent.getRegion()->getName(), global_agent_pos, false)); LLLocationHistoryItem item (location, - global_agent_pos, tooltip,TYPED_REGION_SURL);// we can add into history only TYPED location + global_agent_pos, tooltip,TYPED_REGION_SLURL);// we can add into history only TYPED location //Touch it, if it is at list already, add new location otherwise if ( !lh->touchItem(item) ) { lh->addItem(item); @@ -546,20 +643,7 @@ void LLNavigationBar::onRegionNameResponse( // Invalid location? if (!region_handle) { - // handle any secondlife:// SLapps, or - // display http:// URLs in the media browser, or - // anything else is sent to the search floater - if (LLUrlRegistry::instance().isUrl(typed_location)) - { - if (! LLURLDispatcher::dispatchFromTextEditor(typed_location)) - { - LLWeb::loadURL(typed_location); - } - } - else - { - invokeSearch(typed_location); - } + invokeSearch(typed_location); return; } @@ -571,7 +655,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 +669,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 9d0687f193..b512f2a79c 100644 --- a/indra/newview/llnavigationbar.h +++ b/indra/newview/llnavigationbar.h @@ -34,14 +34,56 @@ #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 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); + +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. */ class LLNavigationBar @@ -70,13 +112,14 @@ public: 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(); @@ -94,8 +137,8 @@ private: void fillSearchComboBox(); LLMenuGL* mTeleportHistoryMenu; - LLButton* mBtnBack; - LLButton* mBtnForward; + LLPullButton* mBtnBack; + LLPullButton* mBtnForward; LLButton* mBtnHome; LLSearchComboBox* mSearchComboBox; LLLocationInputCtrl* mCmbLocation; @@ -103,6 +146,7 @@ private: 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; diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 2ad82d3e8e..c8d5d782b7 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -62,8 +62,14 @@ 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, key) + : LLDockableFloater(NULL, false, false, key) ,mChatHistory(NULL) { @@ -101,6 +107,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; } @@ -137,7 +148,7 @@ std::string appendTime() time_t utc_time; utc_time = time_corrected(); std::string timeStr ="["+ LLTrans::getString("TimeHour")+"]:[" - +LLTrans::getString("TimeMin")+"] "; + +LLTrans::getString("TimeMin")+"]"; LLSD substitution; @@ -148,7 +159,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) { @@ -178,28 +189,10 @@ void LLNearbyChat::addMessage(const LLChat& chat,bool archive) if (!chat.mMuted) { - tmp_chat.mFromName = chat.mFromID != gAgentID ? chat.mFromName : LLTrans::getString("You"); - - if (chat.mChatStyle == CHAT_STYLE_IRC) - { - LLColor4 txt_color = LLUIColorTable::instance().getColor("White"); - LLViewerChat::getChatColor(chat,txt_color); - LLFontGL* fontp = LLViewerChat::getChatFont(); - std::string font_name = LLFontGL::nameFromFont(fontp); - std::string font_size = LLFontGL::sizeFromFont(fontp); - LLStyle::Params append_style_params; - append_style_params.color(txt_color); - append_style_params.readonly_color(txt_color); - append_style_params.font.name(font_name); - append_style_params.font.size(font_size); - append_style_params.font.style = "ITALIC"; - - mChatHistory->appendMessage(chat, use_plain_text_chat_history, append_style_params); - } - else - { - mChatHistory->appendMessage(chat, use_plain_text_chat_history); - } + tmp_chat.mFromName = chat.mFromName; + LLSD chat_args = args; + chat_args["use_plain_text_chat_history"] = use_plain_text_chat_history; + mChatHistory->appendMessage(chat, chat_args); } if(archive) @@ -208,6 +201,16 @@ void LLNearbyChat::addMessage(const LLChat& chat,bool archive) if(mMessageArchive.size()>200) mMessageArchive.erase(mMessageArchive.begin()); } + + if (args["do_not_log"].asBoolean()) + { + return; + } + + if (gSavedPerAccountSettings.getBOOL("LogChat")) + { + LLLogChat::saveHistory("chat", chat.mFromName, chat.mFromID, chat.mText); + } } void LLNearbyChat::onNearbySpeakers() @@ -275,6 +278,62 @@ void LLNearbyChat::processChatHistoryStyleUpdate(const LLSD& newvalue) nearby_chat->updateChatHistoryStyle(); } +bool isTwoWordsName(const std::string& name) +{ + //checking for a single space + S32 pos = name.find(' ', 0); + return std::string::npos != pos && name.rfind(' ', name.length()) == pos && 0 != pos && name.length()-1 != pos; +} + +void LLNearbyChat::loadHistory() +{ + LLSD do_not_log; + do_not_log["do_not_log"] = true; + + 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].asString(); + chat.mTimeStr = msg[IM_TIME].asString(); + chat.mChatStyle = CHAT_STYLE_HISTORY; + + chat.mSourceType = CHAT_SOURCE_AGENT; + if (from_id.isNull() && SYSTEM_FROM == from) + { + chat.mSourceType = CHAT_SOURCE_SYSTEM; + + } + else if (from_id.isNull()) + { + chat.mSourceType = isTwoWordsName(from) ? CHAT_SOURCE_UNKNOWN : CHAT_SOURCE_OBJECT; + } + + addMessage(chat, true, do_not_log); + + it++; + } +} + +//static +LLNearbyChat* LLNearbyChat::getInstance() +{ + return LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); +} //////////////////////////////////////////////////////////////////////////////// // @@ -291,3 +350,4 @@ void LLNearbyChat::onFocusLost() setBackgroundOpaque(false); LLPanel::onFocusLost(); } + diff --git a/indra/newview/llnearbychat.h b/indra/newview/llnearbychat.h index 938b77df7a..6ef2a1fee3 100644 --- a/indra/newview/llnearbychat.h +++ b/indra/newview/llnearbychat.h @@ -47,7 +47,9 @@ public: ~LLNearbyChat(); BOOL postBuild (); - void addMessage (const LLChat& message,bool archive = true); + + /** @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); @@ -65,6 +67,10 @@ public: static void processChatHistoryStyleUpdate(const LLSD& newvalue); + void loadHistory(); + + static LLNearbyChat* getInstance(); + private: virtual void applySavedVariables(); diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index 8dbaa5ac53..483756b16e 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -48,13 +48,16 @@ #include "llcommandhandler.h" #include "llviewercontrol.h" #include "llnavigationbar.h" +#include "llwindow.h" +#include "llviewerwindow.h" +#include "llrootview.h" S32 LLNearbyChatBar::sLastSpecialChatChannel = 0; // legacy callback glue void send_chat_from_viewer(const std::string& utf8_out_text, EChatType type, S32 channel); -static LLDefaultChildRegistry::Register<LLGestureComboBox> r("gesture_combo_box"); +static LLDefaultChildRegistry::Register<LLGestureComboList> r("gesture_combo_list"); struct LLChatTypeTrigger { std::string name; @@ -66,13 +69,42 @@ static LLChatTypeTrigger sChatTypeTriggers[] = { { "/shout" , CHAT_TYPE_SHOUT} }; -LLGestureComboBox::LLGestureComboBox(const LLGestureComboBox::Params& p) - : LLComboBox(p) - , mGestureLabelTimer() +LLGestureComboList::Params::Params() +: combo_button("combo_button"), + combo_list("combo_list") +{ +} + +LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p) +: LLUICtrl(p) , mLabel(p.label) , mViewAllItemIndex(0) { - setCommitCallback(boost::bind(&LLGestureComboBox::onCommitGesture, this)); + LLButton::Params button_params = p.combo_button; + button_params.follows.flags(FOLLOWS_LEFT|FOLLOWS_BOTTOM|FOLLOWS_RIGHT); + + mButton = LLUICtrlFactory::create<LLButton>(button_params); + mButton->reshape(getRect().getWidth(),getRect().getHeight()); + mButton->setCommitCallback(boost::bind(&LLGestureComboList::onButtonCommit, this)); + + addChild(mButton); + + LLScrollListCtrl::Params params = p.combo_list; + params.name("GestureComboList"); + params.commit_callback.function(boost::bind(&LLGestureComboList::onItemSelected, this, _2)); + params.visible(false); + params.commit_on_keyboard_movement(false); + + mList = LLUICtrlFactory::create<LLScrollListCtrl>(params); + + // *HACK: adding list as a child to FloaterViewHolder to make it fully visible without + // making it top control (because it would cause problems). + gViewerWindow->getFloaterViewHolder()->addChild(mList); + mList->setVisible(FALSE); + + //****************************Gesture Part********************************/ + + setCommitCallback(boost::bind(&LLGestureComboList::onCommitGesture, this)); // now register us as observer since we have a place to put the results LLGestureManager::instance().addObserver(this); @@ -80,23 +112,139 @@ LLGestureComboBox::LLGestureComboBox(const LLGestureComboBox::Params& p) // refresh list from current active gestures refreshGestures(); - // This forces using of halign from xml, since LLComboBox - // sets it to LLFontGL::LEFT, if text entry is disabled - mButton->setHAlign(p.drop_down_button.font_halign); + setFocusLostCallback(boost::bind(&LLGestureComboList::hideList, this)); } -LLGestureComboBox::~LLGestureComboBox() +BOOL LLGestureComboList::handleKey(KEY key, MASK mask, BOOL called_from_parent) { - LLGestureManager::instance().removeObserver(this); + BOOL handled = FALSE; + + if (key == KEY_ESCAPE && mask == MASK_NONE ) + { + hideList(); + handled = TRUE; + } + else + { + handled = mList->handleKey(key, mask, called_from_parent); + } + + return handled; +} + +void LLGestureComboList::showList() +{ + LLRect rect = mList->getRect(); + LLRect screen; + mButton->localRectToScreen(getRect(), &screen); + + // Calculating amount of space between the navigation bar and gestures combo + LLNavigationBar* nb = LLNavigationBar::getInstance(); + + S32 x, nb_bottom; + nb->localPointToScreen(0, 0, &x, &nb_bottom); + + S32 max_height = nb_bottom - screen.mTop; + mList->calcColumnWidths(); + rect.setOriginAndSize(screen.mLeft, screen.mTop, llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height); + + mList->setRect(rect); + mList->fitContents( llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height); + + gFocusMgr.setKeyboardFocus(this); + + // Show the list and push the button down + mButton->setToggleState(TRUE); + mList->setVisible(TRUE); +} + +void LLGestureComboList::onButtonCommit() +{ + if (!mList->getVisible()) + { + // highlight the last selected item from the original selection before potentially selecting a new item + // as visual cue to original value of combo box + LLScrollListItem* last_selected_item = mList->getLastSelectedItem(); + if (last_selected_item) + { + mList->mouseOverHighlightNthItem(mList->getItemIndex(last_selected_item)); + } + + if (mList->getItemCount() != 0) + { + showList(); + } + } + else + { + hideList(); + } +} + +void LLGestureComboList::hideList() +{ + if (mList->getVisible()) + { + mButton->setToggleState(FALSE); + mList->setVisible(FALSE); + mList->mouseOverHighlightNthItem(-1); + gFocusMgr.setKeyboardFocus(NULL); + } +} + +S32 LLGestureComboList::getCurrentIndex() const +{ + LLScrollListItem* item = mList->getFirstSelected(); + if( item ) + { + return mList->getItemIndex( item ); + } + return -1; +} + +void LLGestureComboList::onItemSelected(const LLSD& data) +{ + const std::string name = mList->getSelectedItemLabel(); + + S32 cur_id = getCurrentIndex(); + mLastSelectedIndex = cur_id; + if (cur_id != mList->getItemCount()-1 && cur_id != -1) + { + mButton->setLabel(name); + } + + // hiding the list reasserts the old value stored in the text editor/dropdown button + hideList(); + + // commit does the reverse, asserting the value in the list + onCommit(); +} + +void LLGestureComboList::sortByName(bool ascending) +{ + mList->sortOnce(0, ascending); +} + +LLSD LLGestureComboList::getValue() const +{ + LLScrollListItem* item = mList->getFirstSelected(); + if( item ) + { + return item->getValue(); + } + else + { + return LLSD(); + } } -void LLGestureComboBox::refreshGestures() +void LLGestureComboList::refreshGestures() { //store current selection so we can maintain it LLSD cur_gesture = getValue(); - selectFirstItem(); - // clear - clearRows(); + + mList->selectFirstItem(); + mList->clearRows(); mGestures.clear(); LLGestureManager::item_map_t::const_iterator it; @@ -107,7 +255,7 @@ void LLGestureComboBox::refreshGestures() LLMultiGesture* gesture = (*it).second; if (gesture) { - addSimpleElement(gesture->mName, ADD_BOTTOM, LLSD(idx)); + mList->addSimpleElement(gesture->mName, ADD_BOTTOM, LLSD(idx)); mGestures.push_back(gesture); idx++; } @@ -117,23 +265,42 @@ void LLGestureComboBox::refreshGestures() // store index followed by the last added Gesture and add View All item at bottom mViewAllItemIndex = idx; - addSimpleElement(LLTrans::getString("ViewAllGestures"), ADD_BOTTOM, LLSD(mViewAllItemIndex)); + + mList->addSimpleElement(LLTrans::getString("ViewAllGestures"), ADD_BOTTOM, LLSD(mViewAllItemIndex)); // Insert label after sorting, at top, with separator below it - addSeparator(ADD_TOP); - addSimpleElement(mLabel, ADD_TOP); + mList->addSeparator(ADD_TOP); + mList->addSimpleElement(mLabel, ADD_TOP); if (cur_gesture.isDefined()) { - selectByValue(cur_gesture); + mList->selectByValue(cur_gesture); + } else { - selectFirstItem(); + mList->selectFirstItem(); } + + LLCtrlListInterface* gestures = getListInterface(); + LLMultiGesture* gesture = NULL; + + if (gestures) + { + S32 index = gestures->getSelectedValue().asInteger(); + if(index > 0) + gesture = mGestures.at(index); + } + + if(gesture && LLGestureManager::instance().isGesturePlaying(gesture)) + { + return; + } + + mButton->setLabel(mLabel); } -void LLGestureComboBox::onCommitGesture() +void LLGestureComboList::onCommitGesture() { LLCtrlListInterface* gestures = getListInterface(); if (gestures) @@ -164,50 +331,11 @@ void LLGestureComboBox::onCommitGesture() } } } - - mGestureLabelTimer.start(); - // free focus back to chat bar - setFocus(FALSE); -} - -//virtual -void LLGestureComboBox::draw() -{ - // HACK: Leave the name of the gesture in place for a few seconds. - const F32 SHOW_GESTURE_NAME_TIME = 2.f; - if (mGestureLabelTimer.getStarted() && mGestureLabelTimer.getElapsedTimeF32() > SHOW_GESTURE_NAME_TIME) - { - LLCtrlListInterface* gestures = getListInterface(); - if (gestures) gestures->selectFirstItem(); - mGestureLabelTimer.stop(); - } - - LLComboBox::draw(); } -//virtual -void LLGestureComboBox::showList() +LLGestureComboList::~LLGestureComboList() { - LLComboBox::showList(); - - // Calculating amount of space between the navigation bar and gestures combo - LLNavigationBar* nb = LLNavigationBar::getInstance(); - S32 x, nb_bottom; - nb->localPointToScreen(0, 0, &x, &nb_bottom); - - S32 list_bottom; - mList->localPointToScreen(0, 0, &x, &list_bottom); - - S32 max_height = nb_bottom - list_bottom; - - LLRect rect = mList->getRect(); - // List overlapped navigation bar, downsize it - if (rect.getHeight() > max_height) - { - rect.setOriginAndSize(rect.mLeft, rect.mBottom, rect.getWidth(), max_height); - mList->setRect(rect); - mList->reshape(rect.getWidth(), rect.getHeight()); - } + LLGestureManager::instance().removeObserver(this); } LLNearbyChatBar::LLNearbyChatBar() @@ -279,32 +407,6 @@ BOOL LLNearbyChatBar::handleKeyHere( KEY key, MASK mask ) return handled; } -S32 LLNearbyChatBar::getMinWidth() const -{ - static S32 min_width = -1; - - if (min_width < 0) - { - const std::string& s = getString("min_width"); - min_width = !s.empty() ? atoi(s.c_str()) : 300; - } - - return min_width; -} - -S32 LLNearbyChatBar::getMaxWidth() const -{ - static S32 max_width = -1; - - if (max_width < 0) - { - const std::string& s = getString("max_width"); - max_width = !s.empty() ? atoi(s.c_str()) : 510; - } - - return max_width; -} - BOOL LLNearbyChatBar::matchChatTypeTrigger(const std::string& in_str, std::string* out_str) { U32 in_len = in_str.length(); diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h index 224118e088..559c1ee091 100644 --- a/indra/newview/llnearbychatbar.h +++ b/indra/newview/llnearbychatbar.h @@ -42,33 +42,52 @@ #include "llspeakers.h" -class LLGestureComboBox - : public LLComboBox - , public LLGestureManagerObserver +class LLGestureComboList + : public LLGestureManagerObserver + , public LLUICtrl { public: - struct Params : public LLInitParam::Block<Params, LLComboBox::Params> { }; + struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> + { + Optional<LLButton::Params> combo_button; + Optional<LLScrollListCtrl::Params> combo_list; + + Params(); + }; + protected: - LLGestureComboBox(const Params&); + friend class LLUICtrlFactory; + LLGestureComboList(const Params&); + std::vector<LLMultiGesture*> mGestures; + std::string mLabel; + LLSD::Integer mViewAllItemIndex; + public: - ~LLGestureComboBox(); + ~LLGestureComboList(); + + LLCtrlListInterface* getListInterface() { return (LLCtrlListInterface*)mList; }; + virtual void showList(); + virtual void hideList(); + virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); + + S32 getCurrentIndex() const; + void onItemSelected(const LLSD& data); + void sortByName(bool ascending = true); void refreshGestures(); void onCommitGesture(); - virtual void draw(); + void onButtonCommit(); + virtual LLSD getValue() const; // LLGestureManagerObserver trigger virtual void changed() { refreshGestures(); } -protected: - - virtual void showList(); +private: - LLFrameTimer mGestureLabelTimer; - std::vector<LLMultiGesture*> mGestures; - std::string mLabel; - LLSD::Integer mViewAllItemIndex; + LLButton* mButton; + LLScrollListCtrl* mList; + S32 mLastSelectedIndex; }; class LLNearbyChatBar @@ -98,9 +117,6 @@ public: static void sendChatFromViewer(const std::string &utf8text, EChatType type, BOOL animate); static void sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL animate); - S32 getMinWidth() const; - S32 getMaxWidth() const; - protected: static BOOL matchChatTypeTrigger(const std::string& in_str, std::string* out_str); static void onChatBoxKeystroke(LLLineEditor* caller, void* userdata); diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index 9e13a626b4..08ae93c3a6 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -34,6 +34,7 @@ #include "llnearbychathandler.h" +#include "llbottomtray.h" #include "llchatitemscontainerctrl.h" #include "llnearbychat.h" #include "llrecentpeople.h" @@ -175,10 +176,11 @@ void LLNearbyChatScreenChannel::addNotification(LLSD& notification) if(m_active_toasts.size()) { LLUUID fromID = notification["from_id"].asUUID(); // agent id or object id + std::string from = notification["from"].asString(); LLToast* toast = m_active_toasts[0]; LLNearbyChatToastPanel* panel = dynamic_cast<LLNearbyChatToastPanel*>(toast->getPanel()); - if(panel && panel->messageID() == fromID && panel->canAddText()) + if(panel && panel->messageID() == fromID && panel->getFromName() == from && panel->canAddText()) { panel->addMessage(notification); toast->reshapeToPanel(); @@ -274,8 +276,15 @@ void LLNearbyChatScreenChannel::showToastsBottom() toast->setRect(toast_rect); toast->setIsHidden(false); toast->setVisible(TRUE); + + if(!toast->hasFocus()) + { + // Fixing Z-order of toasts (EXT-4862) + // Next toast will be positioned under this one. + gFloaterView->sendChildToBack(toast); + } - bottom = toast->getRect().mTop; + bottom = toast->getRect().mTop - toast->getTopPad(); } } } @@ -302,7 +311,6 @@ LLNearbyChatHandler::LLNearbyChatHandler(e_notification_type type, const LLSD& i channel->setCreatePanelCallback(callback); mChannel = LLChannelManager::getInstance()->addChannel(channel); - mChannel->setOverflowFormatString("You have %d unread nearby chat messages"); } LLNearbyChatHandler::~LLNearbyChatHandler() @@ -313,14 +321,14 @@ LLNearbyChatHandler::~LLNearbyChatHandler() void LLNearbyChatHandler::initChannel() { LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); + LLView* chat_box = LLBottomTray::getInstance()->getChildView("chat_box"); S32 channel_right_bound = nearby_chat->getRect().mRight; - S32 channel_width = nearby_chat->getRect().mRight; - mChannel->init(channel_right_bound - channel_width, channel_right_bound); + mChannel->init(chat_box->getRect().mLeft, channel_right_bound); } -void LLNearbyChatHandler::processChat(const LLChat& chat_msg) +void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args) { if(chat_msg.mMuted == TRUE) return; @@ -332,6 +340,19 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg) LLChat& tmp_chat = const_cast<LLChat&>(chat_msg); + LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); + { + //sometimes its usefull to have no name at all... + //if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null) + // tmp_chat.mFromName = tmp_chat.mFromID.asString(); + } + nearby_chat->addMessage(chat_msg, true, args); + if( nearby_chat->getVisible() + || ( chat_msg.mSourceType == CHAT_SOURCE_AGENT + && gSavedSettings.getBOOL("UseChatBubbles") ) ) + return;//no need in toast if chat is visible or if bubble chat is enabled + + // Handle irc styled messages for toast panel if (tmp_chat.mChatStyle == CHAT_STYLE_IRC) { if(!tmp_chat.mFromName.empty()) @@ -339,30 +360,24 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg) else tmp_chat.mText = tmp_chat.mText.substr(3); } - - { - //sometimes its usefull to have no name at all... - //if(tmp_chat.mFromName.empty() && tmp_chat.mFromID!= LLUUID::null) - // tmp_chat.mFromName = tmp_chat.mFromID.asString(); - } - - LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); - nearby_chat->addMessage(chat_msg); - if(nearby_chat->getVisible()) - return;//no need in toast if chat is visible - + // arrange a channel on a screen if(!mChannel->getVisible()) { 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(); diff --git a/indra/newview/llnearbychathandler.h b/indra/newview/llnearbychathandler.h index fb2abac6a4..01a6de5610 100644 --- a/indra/newview/llnearbychathandler.h +++ b/indra/newview/llnearbychathandler.h @@ -45,7 +45,7 @@ public: 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/llnetmap.cpp b/indra/newview/llnetmap.cpp index 234fe13217..05623198ab 100644 --- a/indra/newview/llnetmap.cpp +++ b/indra/newview/llnetmap.cpp @@ -153,6 +153,18 @@ void LLNetMap::draw() // Prepare a scissor region F32 rotation = 0; + gGL.pushMatrix(); + gGL.pushUIMatrix(); + + LLVector3 offset = gGL.getUITranslation(); + LLVector3 scale = gGL.getUIScale(); + + glLoadIdentity(); + gGL.loadUIIdentity(); + + glScalef(scale.mV[0], scale.mV[1], scale.mV[2]); + gGL.translatef(offset.mV[0], offset.mV[1], offset.mV[2]); + { LLLocalClipRect clip(getLocalRect()); { @@ -435,6 +447,9 @@ void LLNetMap::draw() } } + gGL.popMatrix(); + gGL.popUIMatrix(); + LLUICtrl::draw(); } diff --git a/indra/newview/llnotificationalerthandler.cpp b/indra/newview/llnotificationalerthandler.cpp index 52de8355e9..60e41b64ac 100644 --- a/indra/newview/llnotificationalerthandler.cpp +++ b/indra/newview/llnotificationalerthandler.cpp @@ -36,6 +36,7 @@ #include "llnotificationhandler.h" #include "llnotifications.h" +#include "llprogressview.h" #include "lltoastnotifypanel.h" #include "llviewercontrol.h" #include "llviewerwindow.h" @@ -116,6 +117,11 @@ bool LLAlertHandler::processNotification(const LLSD& notify) p.is_modal = mIsModal; p.on_delete_toast = boost::bind(&LLAlertHandler::onDeleteToast, this, _1); + // Show alert in middle of progress view (during teleport) (EXT-1093) + LLProgressView* progress = gViewerWindow->getProgressView(); + LLRect rc = progress && progress->getVisible() ? progress->getRect() : gViewerWindow->getWorldViewRectScaled(); + mChannel->updatePositionAndSize(rc, rc); + LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel); if(channel) channel->addToast(p); diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h index 0fb438bfe9..0d5c431d75 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; }; /** @@ -277,6 +277,11 @@ public: 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. * * This method uses canLogToIM() & canSpawnIMSession(). @@ -297,6 +302,11 @@ public: 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. */ static void logGroupNoticeToIMGroup(const LLNotificationPtr& notification); @@ -309,7 +319,7 @@ public: /** * 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,11 @@ public: * @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); }; } diff --git a/indra/newview/llnotificationhandlerutil.cpp b/indra/newview/llnotificationhandlerutil.cpp index fba5773602..9de9998cbd 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; @@ -53,6 +54,8 @@ const static std::string GRANTED_MODIFY_RIGHTS("GrantedModifyRights"), OFFER_FRIENDSHIP("OfferFriendship"), FRIENDSHIP_ACCEPTED("FriendshipAccepted"), FRIENDSHIP_OFFERED("FriendshipOffered"), + FRIENDSHIP_ACCEPTED_BYME("FriendshipAcceptedByMe"), + FRIENDSHIP_DECLINED_BYME("FriendshipDeclinedByMe"), FRIEND_ONLINE("FriendOnline"), FRIEND_OFFLINE("FriendOffline"), SERVER_OBJECT_MESSAGE("ServerObjectMessage"), TELEPORT_OFFERED("TeleportOffered"); @@ -65,6 +68,8 @@ bool LLHandlerUtil::canLogToIM(const LLNotificationPtr& notification) || PAYMENT_RECIVED == notification->getName() || OFFER_FRIENDSHIP == notification->getName() || FRIENDSHIP_OFFERED == notification->getName() + || FRIENDSHIP_ACCEPTED_BYME == notification->getName() + || FRIENDSHIP_DECLINED_BYME == notification->getName() || SERVER_OBJECT_MESSAGE == notification->getName() || INVENTORY_ACCEPTED == notification->getName() || INVENTORY_DECLINED == notification->getName(); @@ -91,6 +96,14 @@ bool LLHandlerUtil::canSpawnIMSession(const LLNotificationPtr& notification) } // static +bool LLHandlerUtil::canAddNotifPanelToIM(const LLNotificationPtr& notification) +{ + return OFFER_FRIENDSHIP == notification->getName() + || USER_GIVE_ITEM == notification->getName(); +} + + +// static bool LLHandlerUtil::canSpawnSessionAndLogToIM(const LLNotificationPtr& notification) { return canLogToIM(notification) && canSpawnIMSession(notification); @@ -123,16 +136,29 @@ 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); + } } } // 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); - 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 @@ -141,8 +167,28 @@ 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); + //*HACK for ServerObjectMessage the sesson name is really weird, see EXT-4779 + if (SERVER_OBJECT_MESSAGE == notification->getName()) + { + 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(), + LLUUID(), LLUUID()); + } + else + { + logToIM(IM_NOTHING_SPECIAL, session_name, name, notification->getMessage(), + from_id, from_id); + } } } @@ -158,6 +204,7 @@ void LLHandlerUtil::logGroupNoticeToIMGroup( llwarns << "Group notice for unkown group: " << payload["group_id"].asUUID() << llendl; + return; } const std::string group_name = groupData.mName; @@ -179,12 +226,13 @@ void LLHandlerUtil::logToNearbyChat(const LLNotificationPtr& notification, EChat { LLChat chat_msg(notification->getMessage()); chat_msg.mSourceType = type; + chat_msg.mFromName = SYSTEM_FROM; nearby_chat->addMessage(chat_msg); } } // 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); @@ -192,8 +240,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 @@ -203,3 +253,26 @@ 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["notification_id"] = notification->getID(); + offer["from_id"] = notification->getPayload()["from_id"]; + offer["from"] = name; + offer["time"] = LLLogChat::timestamp(true); + offer["index"] = (LLSD::Integer)session->mMsgs.size(); + session->mMsgs.push_front(offer); + + LLIMFloater::show(session_id); +} diff --git a/indra/newview/llnotificationmanager.cpp b/indra/newview/llnotificationmanager.cpp index 66bc217d15..4401bb953f 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 072fc6f24c..575aa69c4d 100644 --- a/indra/newview/llnotificationmanager.h +++ b/indra/newview/llnotificationmanager.h @@ -66,7 +66,7 @@ public: 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/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp index dd66a6c507..8ebd5de258 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("SUPPRES_TOST") - && notification->getPayload()["SUPPRES_TOST"]) + 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(); } diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp index 83a2215ac6..be76959d07 100644 --- a/indra/newview/llnotificationtiphandler.cpp +++ b/indra/newview/llnotificationtiphandler.cpp @@ -43,6 +43,37 @@ using namespace LLNotificationsUI; +class LLOnlineStatusToast : public LLToastPanel +{ +public: + + struct Params + { + LLNotificationPtr notification; + LLUUID avatar_id; + std::string message; + + Params() {} + }; + + LLOnlineStatusToast(Params& p) : LLToastPanel(p.notification) + { + LLUICtrlFactory::getInstance()->buildPanel(this, "panel_online_status_toast.xml"); + + childSetValue("avatar_icon", p.avatar_id); + childSetValue("message", p.message); + + if (p.notification->getPayload().has("respond_on_mousedown") + && p.notification->getPayload()["respond_on_mousedown"] ) + { + setMouseDownCallback(boost::bind(&LLNotification::respond, p.notification, + p.notification->getResponseTemplate())); + } + + // set line max count to 2 in case of a very long name + snapToMessageHeight(getChild<LLTextBox>("message"), 2); + } +}; //-------------------------------------------------------------------------- LLTipHandler::LLTipHandler(e_notification_type type, const LLSD& id) @@ -114,7 +145,19 @@ bool LLTipHandler::processNotification(const LLSD& notify) LLHandlerUtil::spawnIMSession(name, from_id); } - LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(notification); + LLToastPanel* notify_box = NULL; + if("FriendOffline" == notification->getName() || "FriendOnline" == notification->getName()) + { + LLOnlineStatusToast::Params p; + p.notification = notification; + p.message = notification->getMessage(); + p.avatar_id = notification->getPayload()["FROM_ID"]; + notify_box = new LLOnlineStatusToast(p); + } + else + { + notify_box = new LLToastNotifyPanel(notification); + } LLToast::Params p; p.notif_id = notification->getID(); diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp index 63803469dd..d6d48a4ead 100644 --- a/indra/newview/lloutputmonitorctrl.cpp +++ b/indra/newview/lloutputmonitorctrl.cpp @@ -77,7 +77,9 @@ LLOutputMonitorCtrl::LLOutputMonitorCtrl(const LLOutputMonitorCtrl::Params& p) mImageLevel3(p.image_level_3), mAutoUpdate(p.auto_update), mSpeakerId(p.speaker_id), - mIsAgentControl(false) + mIsAgentControl(false), + mIsSwitchDirty(false), + mShouldSwitchOn(false) { //static LLUIColor output_monitor_muted_color = LLUIColorTable::instance().getColor("OutputMonitorMutedColor", LLColor4::orange); //static LLUIColor output_monitor_overdriven_color = LLUIColorTable::instance().getColor("OutputMonitorOverdrivenColor", LLColor4::red); @@ -108,6 +110,7 @@ LLOutputMonitorCtrl::LLOutputMonitorCtrl(const LLOutputMonitorCtrl::Params& p) LLOutputMonitorCtrl::~LLOutputMonitorCtrl() { LLMuteList::getInstance()->removeObserver(this); + LLSpeakingIndicatorManager::unregisterSpeakingIndicator(mSpeakerId, this); } void LLOutputMonitorCtrl::setPower(F32 val) @@ -117,6 +120,26 @@ void LLOutputMonitorCtrl::setPower(F32 val) void LLOutputMonitorCtrl::draw() { + // see also switchIndicator() + if (mIsSwitchDirty) + { + mIsSwitchDirty = false; + if (mShouldSwitchOn) + { + // just notify parent visibility may have changed + notifyParentVisibilityChanged(); + } + else + { + // make itself invisible and notify parent about this + setVisible(FALSE); + notifyParentVisibilityChanged(); + + // no needs to render for invisible element + return; + } + } + // Copied from llmediaremotectrl.cpp // *TODO: Give the LLOutputMonitorCtrl an agent-id to monitor, then // call directly into gVoiceClient to ask if that agent-id is muted, is @@ -224,11 +247,23 @@ void LLOutputMonitorCtrl::draw() gl_rect_2d(0, monh, monw, 0, sColorBound, FALSE); } -void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id) +void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id, const LLUUID& session_id/* = LLUUID::null*/) { + if (speaker_id.isNull() && mSpeakerId.notNull()) + { + LLSpeakingIndicatorManager::unregisterSpeakingIndicator(mSpeakerId, this); + } + 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, session_id); //mute management if (mAutoUpdate) @@ -251,3 +286,42 @@ void LLOutputMonitorCtrl::onChange() // check only blocking on voice. EXT-3542 setIsMuted(LLMuteList::getInstance()->isMuted(mSpeakerId, LLMute::flagVoiceChat)); } + +// virtual +void LLOutputMonitorCtrl::switchIndicator(bool switch_on) +{ + // ensure indicator is visible in case it is not in visible chain + // to be called when parent became visible next time to notify parent that visibility is changed. + setVisible(TRUE); + + // if parent is in visible chain apply switch_on state and notify it immediately + if (getParent() && getParent()->isInVisibleChain()) + { + LL_DEBUGS("SpeakingIndicator") << "Indicator is in visible chain, notifying parent: " << mSpeakerId << LL_ENDL; + setVisible((BOOL)switch_on); + notifyParentVisibilityChanged(); + } + + // otherwise remember necessary state and mark itself as dirty. + // State will be applied in next draw when parents chain becomes visible. + else + { + LL_DEBUGS("SpeakingIndicator") << "Indicator is not in visible chain, parent won't be notified: " << mSpeakerId << LL_ENDL; + mIsSwitchDirty = true; + mShouldSwitchOn = switch_on; + } +} + +////////////////////////////////////////////////////////////////////////// +// PRIVATE SECTION +////////////////////////////////////////////////////////////////////////// +void LLOutputMonitorCtrl::notifyParentVisibilityChanged() +{ + LL_DEBUGS("SpeakingIndicator") << "Notify parent that visibility was changed: " << mSpeakerId << ", new_visibility: " << getVisible() << LL_ENDL; + + LLSD params = LLSD().with("visibility_changed", getVisible()); + + notifyParent(params); +} + +// EOF diff --git a/indra/newview/lloutputmonitorctrl.h b/indra/newview/lloutputmonitorctrl.h index 85ea552a57..b7454a5066 100644 --- a/indra/newview/lloutputmonitorctrl.h +++ b/indra/newview/lloutputmonitorctrl.h @@ -36,6 +36,7 @@ #include "v4color.h" #include "llview.h" #include "llmutelist.h" +#include "llspeakingindicatormanager.h" class LLTextBox; class LLUICtrlFactory; @@ -45,7 +46,7 @@ class LLUICtrlFactory; // class LLOutputMonitorCtrl -: public LLView, LLMuteListObserver +: public LLView, public LLSpeakingIndicator, LLMuteListObserver { public: struct Params : public LLInitParam::Block<Params, LLView::Params> @@ -85,12 +86,42 @@ public: void setIsTalking(bool val) { mIsTalking = val; } - void setSpeakerId(const LLUUID& speaker_id); + /** + * Sets avatar UUID to interact with voice channel. + * + * @param speaker_id LLUUID of an avatar whose voice level is displayed. + * @param session_id session UUID for which indicator should be shown only. Passed to LLSpeakingIndicatorManager + * If this parameter is set registered indicator will be shown only in voice channel + * which has the same session id (EXT-5562). + */ + void setSpeakerId(const LLUUID& speaker_id, const LLUUID& session_id = LLUUID::null); //called by mute list virtual void onChange(); + /** + * Implementation of LLSpeakingIndicator interface. + * Behavior is implemented via changing visibility. + * + * If instance is in visible chain now (all parents are visible) it changes visibility + * and notify parent about this. + * + * Otherwise it marks an instance as dirty and stores necessary visibility. + * It will be applied in next draw and parent will be notified. + */ + virtual void switchIndicator(bool switch_on); + private: + + /** + * Notifies parent about changed visibility. + * + * Passes LLSD with "visibility_changed" => <current visibility> value. + * For now it is processed by LLAvatarListItem to update (reshape) its children. + * Implemented fo complete EXT-3976 + */ + void notifyParentVisibilityChanged(); + //static LLColor4 sColorMuted; //static LLColor4 sColorNormal; //static LLColor4 sColorOverdriven; @@ -117,6 +148,10 @@ private: /** uuid of a speaker being monitored */ LLUUID mSpeakerId; + + /** indicates if the instance is dirty and should notify parent */ + bool mIsSwitchDirty; + bool mShouldSwitchOn; }; #endif diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index f3d6dbbb46..57b478ffef 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -47,11 +47,10 @@ #include "lltooldraganddrop.h" #include "llscrollcontainer.h" #include "llavatariconctrl.h" -#include "llweb.h" -#include "llfloaterworldmap.h" #include "llfloaterreg.h" #include "llnotificationsutil.h" #include "llvoiceclient.h" +#include "llnamebox.h" //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Class LLDropTarget @@ -164,6 +163,8 @@ BOOL LLPanelAvatarNotes::postBuild() resetControls(); resetData(); + gVoiceClient->addObserver((LLVoiceClientStatusObserver*)this); + return TRUE; } @@ -193,10 +194,9 @@ void LLPanelAvatarNotes::fillRightsData() childSetValue("map_check",LLRelationship::GRANT_MAP_LOCATION & rights ? TRUE : FALSE); childSetValue("objects_check",LLRelationship::GRANT_MODIFY_OBJECTS & rights ? TRUE : FALSE); - childSetEnabled("status_check",TRUE); - childSetEnabled("map_check",TRUE); - childSetEnabled("objects_check",TRUE); } + + enableCheckboxes(NULL != relation); } void LLPanelAvatarNotes::onCommitNotes() @@ -247,6 +247,17 @@ void LLPanelAvatarNotes::confirmModifyRights(bool grant, S32 rights) void LLPanelAvatarNotes::onCommitRights() { + const LLRelationship* buddy_relationship = + LLAvatarTracker::instance().getBuddyInfo(getAvatarId()); + + if (NULL == buddy_relationship) + { + // Lets have a warning log message instead of having a crash. EXT-4947. + llwarns << "Trying to modify rights for non-friend avatar. Skipped." << llendl; + return; + } + + S32 rights = 0; if(childGetValue("status_check").asBoolean()) @@ -256,8 +267,6 @@ void LLPanelAvatarNotes::onCommitRights() if(childGetValue("objects_check").asBoolean()) rights |= LLRelationship::GRANT_MODIFY_OBJECTS; - const LLRelationship* buddy_relationship = - LLAvatarTracker::instance().getBuddyInfo(getAvatarId()); bool allow_modify_objects = childGetValue("objects_check").asBoolean(); // if modify objects checkbox clicked @@ -301,9 +310,7 @@ void LLPanelAvatarNotes::resetControls() //Disable "Add Friend" button for friends. childSetEnabled("add_friend", TRUE); - childSetEnabled("status_check",FALSE); - childSetEnabled("map_check",FALSE); - childSetEnabled("objects_check",FALSE); + enableCheckboxes(false); } void LLPanelAvatarNotes::onAddFriendButtonClick() @@ -331,11 +338,22 @@ void LLPanelAvatarNotes::onShareButtonClick() //*TODO not implemented. } +void LLPanelAvatarNotes::enableCheckboxes(bool enable) +{ + childSetEnabled("status_check", enable); + childSetEnabled("map_check", enable); + childSetEnabled("objects_check", enable); +} + LLPanelAvatarNotes::~LLPanelAvatarNotes() { if(getAvatarId().notNull()) { LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this); + if(LLVoiceClient::instanceExists()) + { + LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this); + } } } @@ -343,6 +361,20 @@ LLPanelAvatarNotes::~LLPanelAvatarNotes() void LLPanelAvatarNotes::changed(U32 mask) { childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId())); + + // update rights to avoid have checkboxes enabled when friendship is terminated. EXT-4947. + fillRightsData(); +} + +// 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) @@ -415,28 +447,26 @@ void LLPanelProfileTab::scrollToTop() void LLPanelProfileTab::onMapButtonClick() { - std::string name; - gCacheName->getFullName(getAvatarId(), name); - gFloaterWorldMap->trackAvatar(getAvatarId(), name); - LLFloaterReg::showInstance("world_map"); + LLAvatarActions::showOnMap(getAvatarId()); } void LLPanelProfileTab::updateButtons() { - bool is_avatar_online = LLAvatarTracker::instance().isBuddyOnline(getAvatarId()); + bool is_buddy_online = LLAvatarTracker::instance().isBuddyOnline(getAvatarId()); if(LLAvatarActions::isFriend(getAvatarId())) { - childSetEnabled("teleport", is_avatar_online); + childSetEnabled("teleport", is_buddy_online); } else { childSetEnabled("teleport", true); } - bool enable_map_btn = is_avatar_online && gAgent.isGodlike() || is_agent_mappable(getAvatarId()); + bool enable_map_btn = (is_buddy_online && + is_agent_mappable(getAvatarId())) + || gAgent.isGodlike(); childSetEnabled("show_on_map_btn", enable_map_btn); - childSetEnabled("call", LLAvatarActions::canCall(getAvatarId())); } ////////////////////////////////////////////////////////////////////////// @@ -455,7 +485,6 @@ LLPanelAvatarProfile::LLPanelAvatarProfile() BOOL LLPanelAvatarProfile::postBuild() { - childSetActionTextbox("homepage_edit", boost::bind(&LLPanelAvatarProfile::onHomepageTextboxClicked, this)); childSetCommitCallback("add_friend",(boost::bind(&LLPanelAvatarProfile::onAddFriendButtonClick,this)),NULL); childSetCommitCallback("im",(boost::bind(&LLPanelAvatarProfile::onIMButtonClick,this)),NULL); childSetCommitCallback("call",(boost::bind(&LLPanelAvatarProfile::onCallButtonClick,this)),NULL); @@ -468,6 +497,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)); @@ -475,6 +505,8 @@ BOOL LLPanelAvatarProfile::postBuild() LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable; enable.add("Profile.EnableGod", boost::bind(&enable_god)); + enable.add("Profile.EnableBlock", boost::bind(&LLPanelAvatarProfile::enableBlock, this)); + enable.add("Profile.EnableUnblock", boost::bind(&LLPanelAvatarProfile::enableUnblock, this)); mProfileMenu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); @@ -484,6 +516,8 @@ BOOL LLPanelAvatarProfile::postBuild() pic = getChild<LLTextureCtrl>("real_world_pic"); pic->setFallbackImageName("default_profile_picture.j2c"); + gVoiceClient->addObserver((LLVoiceClientStatusObserver*)this); + resetControls(); resetData(); @@ -567,8 +601,6 @@ void LLPanelAvatarProfile::processProfileProperties(const LLAvatarData* avatar_d fillPartnerData(avatar_data); - fillOnlineStatus(avatar_data); - fillAccountStatus(avatar_data); } @@ -594,8 +626,11 @@ void LLPanelAvatarProfile::processGroupProperties(const LLAvatarGroups* avatar_g if (it != mGroups.begin()) groups += ", "; - - std::string group_url="[secondlife:///app/group/" + it->second.asString() + "/about " + it->first + "]"; + std::string group_name = LLURI::escape(it->first); + std::string group_url= it->second.notNull() + ? "[secondlife:///app/group/" + it->second.asString() + "/about " + group_name + "]" + : getString("no_group_text"); + groups += group_url; } @@ -617,41 +652,25 @@ 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) { + LLNameBox* name_box = getChild<LLNameBox>("partner_text"); if (avatar_data->partner_id.notNull()) { - std::string first, last; - BOOL found = gCacheName->getName(avatar_data->partner_id, first, last); - if (found) - { - childSetTextArg("partner_text", "[FIRST]", first); - childSetTextArg("partner_text", "[LAST]", last); - } + name_box->setNameID(avatar_data->partner_id, FALSE); } else { - childSetTextArg("partner_text", "[FIRST]", getString("no_partner_text")); + name_box->setNameID(LLUUID::null, FALSE); + name_box->setText(getString("no_partner_text")); } } -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; @@ -674,6 +693,21 @@ void LLPanelAvatarProfile::share() LLAvatarActions::share(getAvatarId()); } +void LLPanelAvatarProfile::toggleBlock() +{ + LLAvatarActions::toggleBlock(getAvatarId()); +} + +bool LLPanelAvatarProfile::enableBlock() +{ + return LLAvatarActions::canBlock(getAvatarId()) && !LLAvatarActions::isBlocked(getAvatarId()); +} + +bool LLPanelAvatarProfile::enableUnblock() +{ + return LLAvatarActions::isBlocked(getAvatarId()); +} + void LLPanelAvatarProfile::kick() { LLAvatarActions::kick(getAvatarId()); @@ -696,20 +730,6 @@ void LLPanelAvatarProfile::csr() LLAvatarActions::csr(getAvatarId(), name); } -void LLPanelAvatarProfile::onUrlTextboxClicked(const std::string& url) -{ - LLWeb::loadURL(url); -} - -void LLPanelAvatarProfile::onHomepageTextboxClicked() -{ - std::string url = childGetValue("homepage_edit").asString(); - if(!url.empty()) - { - onUrlTextboxClicked(url); - } -} - void LLPanelAvatarProfile::onAddFriendButtonClick() { LLAvatarActions::requestFriendshipDialog(getAvatarId()); @@ -757,6 +777,10 @@ LLPanelAvatarProfile::~LLPanelAvatarProfile() if(getAvatarId().notNull()) { LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this); + if(LLVoiceClient::instanceExists()) + { + LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this); + } } } @@ -766,6 +790,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 22efa5dc35..2bd23b6e9c 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 @@ private: class LLPanelAvatarProfile : public LLPanelProfileTab , public LLFriendObserver + , public LLVoiceClientStatusObserver { public: LLPanelAvatarProfile(); @@ -134,6 +136,10 @@ public: */ 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); /** @@ -172,11 +178,6 @@ protected: virtual void fillPartnerData(const LLAvatarData* avatar_data); /** - * Fills Avatar's online status. - */ - virtual void fillOnlineStatus(const LLAvatarData* avatar_data); - - /** * Fills account status. */ virtual void fillAccountStatus(const LLAvatarData* avatar_data); @@ -191,17 +192,21 @@ protected: */ void share(); + /** + * Add/remove resident to/from your block list. + */ + void toggleBlock(); + void kick(); void freeze(); void unfreeze(); void csr(); - + bool enableBlock(); + bool enableUnblock(); bool enableGod(); - void onUrlTextboxClicked(const std::string& url); - void onHomepageTextboxClicked(); void onAddFriendButtonClick(); void onIMButtonClick(); void onCallButtonClick(); @@ -252,11 +257,12 @@ private: }; /** -* Panel for displaying Avatar's notes and modifying friend's rights. -*/ + * Panel for displaying Avatar's notes and modifying friend's rights. + */ class LLPanelAvatarNotes : public LLPanelProfileTab , public LLFriendObserver + , public LLVoiceClientStatusObserver { public: LLPanelAvatarNotes(); @@ -269,6 +275,10 @@ public: */ 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(); @@ -299,6 +309,7 @@ protected: void onCallButtonClick(); void onTeleportButtonClick(); void onShareButtonClick(); + void enableCheckboxes(bool enable); }; #endif // LL_LLPANELAVATAR_H diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index e29320ffc2..836331b44b 100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp @@ -72,6 +72,8 @@ #include "llviewerwindow.h" // for window width, height #include "llappviewer.h" // abortQuit() #include "lltrans.h" +#include "llscrollcontainer.h" +#include "llstatusbar.h" const S32 MINIMUM_PRICE_FOR_LISTING = 50; // L$ const S32 MATURE_UNDEFINED = -1; @@ -241,7 +243,7 @@ BOOL LLPanelClassified::postBuild() mNameEditor->setCommitOnFocusLost(TRUE); mNameEditor->setFocusReceivedCallback(boost::bind(focusReceived, _1, this)); mNameEditor->setCommitCallback(onCommitAny, this); - mNameEditor->setPrevalidate( LLLineEditor::prevalidateASCII ); + mNameEditor->setPrevalidate( LLTextValidate::validateASCII ); mDescEditor = getChild<LLTextEditor>("desc_editor"); mDescEditor->setCommitOnFocusLost(TRUE); @@ -1071,7 +1073,7 @@ BOOL LLFloaterPriceForListing::postBuild() LLLineEditor* edit = getChild<LLLineEditor>("price_edit"); if (edit) { - edit->setPrevalidate(LLLineEditor::prevalidateNonNegativeS32); + edit->setPrevalidate(LLTextValidate::validateNonNegativeS32); std::string min_price = llformat("%d", MINIMUM_PRICE_FOR_LISTING); edit->setText(min_price); edit->selectAll(); @@ -1151,6 +1153,10 @@ void LLPanelClassified::setDefaultAccessCombo() LLPanelClassifiedInfo::LLPanelClassifiedInfo() : LLPanel() , mInfoLoaded(false) + , mScrollingPanel(NULL) + , mScrollContainer(NULL) + , mScrollingPanelMinHeight(0) + , mScrollingPanelWidth(0) { } @@ -1172,6 +1178,12 @@ BOOL LLPanelClassifiedInfo::postBuild() childSetAction("show_on_map_btn", boost::bind(&LLPanelClassifiedInfo::onMapClick, this)); childSetAction("teleport_btn", boost::bind(&LLPanelClassifiedInfo::onTeleportClick, this)); + mScrollingPanel = getChild<LLPanel>("scroll_content_panel"); + mScrollContainer = getChild<LLScrollContainer>("profile_scroll"); + + mScrollingPanelMinHeight = mScrollContainer->getScrolledViewRect().getHeight(); + mScrollingPanelWidth = mScrollingPanel->getRect().getWidth(); + return TRUE; } @@ -1185,6 +1197,26 @@ void LLPanelClassifiedInfo::setEditClassifiedCallback(const commit_callback_t& c getChild<LLButton>("edit_btn")->setClickedCallback(cb); } +void LLPanelClassifiedInfo::reshape(S32 width, S32 height, BOOL called_from_parent /* = TRUE */) +{ + LLPanel::reshape(width, height, called_from_parent); + + if (!mScrollContainer || !mScrollingPanel) + return; + + static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0); + + S32 scroll_height = mScrollContainer->getRect().getHeight(); + if (mScrollingPanelMinHeight >= scroll_height) + { + mScrollingPanel->reshape(mScrollingPanelWidth, mScrollingPanelMinHeight); + } + else + { + mScrollingPanel->reshape(mScrollingPanelWidth + scrollbar_size, scroll_height); + } +} + void LLPanelClassifiedInfo::onOpen(const LLSD& key) { LLUUID avatar_id = key["avatar_id"]; @@ -1230,12 +1262,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); } @@ -1260,11 +1294,13 @@ void LLPanelClassifiedInfo::resetControls() { childSetEnabled("edit_btn", TRUE); childSetVisible("edit_btn", TRUE); + childSetVisible("auto_renew", TRUE); } else { childSetEnabled("edit_btn", FALSE); childSetVisible("edit_btn", FALSE); + childSetVisible("auto_renew", FALSE); } } @@ -1364,6 +1400,7 @@ static const S32 CB_ITEM_PG = 1; LLPanelClassifiedEdit::LLPanelClassifiedEdit() : LLPanelClassifiedInfo() , mIsNew(false) + , mCanClose(false) { } @@ -1559,7 +1596,7 @@ void LLPanelClassifiedEdit::resetControls() bool LLPanelClassifiedEdit::canClose() { - return isValidName(); + return mCanClose; } void LLPanelClassifiedEdit::sendUpdate() @@ -1676,12 +1713,23 @@ void LLPanelClassifiedEdit::onChange() void LLPanelClassifiedEdit::onSaveClick() { + mCanClose = false; + if(!isValidName()) { notifyInvalidName(); return; } + if(isNew()) + { + if(gStatusBar->getBalance() < getPriceForListing()) + { + LLNotificationsUtil::add("ClassifiedInsufficientFunds"); + return; + } + } + mCanClose = true; sendUpdate(); resetDirty(); } diff --git a/indra/newview/llpanelclassified.h b/indra/newview/llpanelclassified.h index 10fdf60bbe..9e33e55b88 100644 --- a/indra/newview/llpanelclassified.h +++ b/indra/newview/llpanelclassified.h @@ -55,6 +55,7 @@ class LLTextEditor; class LLTextureCtrl; class LLUICtrl; class LLMessageSystem; +class LLScrollContainer; // *TODO deprecated, should be removed. // New class implemented in ticket EXT-2095 @@ -253,6 +254,8 @@ public: void setEditClassifiedCallback(const commit_callback_t& cb); + /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); + protected: LLPanelClassifiedInfo(); @@ -277,6 +280,12 @@ private: LLVector3d mPosGlobal; LLUUID mParcelId; bool mInfoLoaded; + + LLScrollContainer* mScrollContainer; + LLPanel* mScrollingPanel; + + S32 mScrollingPanelMinHeight; + S32 mScrollingPanelWidth; }; class LLPanelClassifiedEdit : public LLPanelClassifiedInfo @@ -340,6 +349,7 @@ protected: private: bool mIsNew; + bool mCanClose; }; #endif // LL_LLPANELCLASSIFIED_H diff --git a/indra/newview/llpanelcontents.cpp b/indra/newview/llpanelcontents.cpp index 9d591ef43d..2a7d097f94 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/llpanelface.cpp b/indra/newview/llpanelface.cpp index ee0426c7df..b50c6442e1 100644 --- a/indra/newview/llpanelface.cpp +++ b/indra/newview/llpanelface.cpp @@ -65,6 +65,7 @@ #include "llvovolume.h" #include "lluictrlfactory.h" #include "llpluginclassmedia.h" +#include "llviewertexturelist.h" // // Methods @@ -264,10 +265,13 @@ void LLPanelFace::sendAlpha() void LLPanelFace::sendGlow() { - LLSpinCtrl* mCtrlGlow = getChild<LLSpinCtrl>("glow"); - F32 glow = mCtrlGlow->get(); - - LLSelectMgr::getInstance()->selectionSetGlow( glow ); + LLSpinCtrl* mCtrlGlow = getChild<LLSpinCtrl>("glow"); + llassert(mCtrlGlow); + if (mCtrlGlow) + { + F32 glow = mCtrlGlow->get(); + LLSelectMgr::getInstance()->selectionSetGlow( glow ); + } } struct LLPanelFaceSetTEFunctor : public LLSelectedTEFunctor @@ -285,6 +289,9 @@ struct LLPanelFaceSetTEFunctor : public LLSelectedTEFunctor LLCheckBoxCtrl* checkFlipScaleS = mPanel->getChild<LLCheckBoxCtrl>("checkbox flip s"); LLCheckBoxCtrl* checkFlipScaleT = mPanel->getChild<LLCheckBoxCtrl>("checkbox flip t"); LLComboBox* comboTexGen = mPanel->getChild<LLComboBox>("combobox texgen"); + llassert(comboTexGen); + llassert(object); + if (ctrlTexScaleS) { valid = !ctrlTexScaleS->getTentative() || !checkFlipScaleS->getTentative(); @@ -295,7 +302,8 @@ struct LLPanelFaceSetTEFunctor : public LLSelectedTEFunctor { value = -value; } - if (comboTexGen->getCurrentIndex() == 1) + if (comboTexGen && + comboTexGen->getCurrentIndex() == 1) { value *= 0.5f; } @@ -313,7 +321,8 @@ struct LLPanelFaceSetTEFunctor : public LLSelectedTEFunctor { value = -value; } - if (comboTexGen->getCurrentIndex() == 1) + if (comboTexGen && + comboTexGen->getCurrentIndex() == 1) { value *= 0.5f; } @@ -406,14 +415,40 @@ void LLPanelFace::getState() LLUUID id; struct f1 : public LLSelectedTEGetFunctor<LLUUID> { - LLUUID get(LLViewerObject* object, S32 te) + LLUUID get(LLViewerObject* object, S32 te_index) { - LLViewerTexture* image = object->getTEImage(te); - return image ? image->getID() : LLUUID::null; + LLUUID id; + + LLViewerTexture* image = object->getTEImage(te_index); + if (image) id = image->getID(); + + if (!id.isNull() && LLViewerMedia::textureHasMedia(id)) + { + LLTextureEntry *te = object->getTE(te_index); + if (te) + { + LLViewerTexture* tex = te->getID().notNull() ? gTextureList.findImage(te->getID()) : NULL ; + if(!tex) + { + tex = LLViewerFetchedTexture::sDefaultImagep; + } + if (tex) + { + id = tex->getID(); + } + } + } + return id; } } func; identical = LLSelectMgr::getInstance()->getSelection()->getSelectedTEValue( &func, id ); + if(LLViewerMedia::textureHasMedia(id)) + { + childSetEnabled("textbox autofix",editable); + childSetEnabled("button align",editable); + } + if (identical) { // All selected have the same texture @@ -444,13 +479,6 @@ void LLPanelFace::getState() } } } - - if(LLViewerMedia::textureHasMedia(id)) - { - childSetEnabled("textbox autofix",editable); - childSetEnabled("button align",editable); - } - } diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp index fff2575893..706787e824 100644 --- a/indra/newview/llpanelgroup.cpp +++ b/indra/newview/llpanelgroup.cpp @@ -89,8 +89,9 @@ BOOL LLPanelGroupTab::postBuild() LLPanelGroup::LLPanelGroup() : LLPanel(), LLGroupMgrObserver( LLUUID() ), - mAllowEdit( TRUE ) - ,mShowingNotifyDialog(false) + mSkipRefresh(FALSE), + mButtonJoin(NULL), + mShowingNotifyDialog(false) { // Set up the factory callbacks. // Roles sub tabs @@ -101,6 +102,10 @@ LLPanelGroup::LLPanelGroup() LLPanelGroup::~LLPanelGroup() { LLGroupMgr::getInstance()->removeObserver(this); + if(LLVoiceClient::instanceExists()) + { + LLVoiceClient::getInstance()->removeObserver(this); + } } void LLPanelGroup::onOpen(const LLSD& key) @@ -151,24 +156,24 @@ BOOL LLPanelGroup::postBuild() button->setVisible(true); button->setEnabled(false); + button = getChild<LLButton>("btn_call"); + button->setClickedCallback(onBtnGroupCallClicked, this); - button = getChild<LLButton>("btn_join"); - button->setVisible(false); - button->setEnabled(true); + button = getChild<LLButton>("btn_chat"); + button->setClickedCallback(onBtnGroupChatClicked, this); button = getChild<LLButton>("btn_cancel"); button->setVisible(false); button->setEnabled(true); button = getChild<LLButton>("btn_refresh"); button->setClickedCallback(onBtnRefresh, this); - button->setVisible(mAllowEdit); getChild<LLButton>("btn_create")->setVisible(false); childSetCommitCallback("back",boost::bind(&LLPanelGroup::onBackBtnClick,this),NULL); childSetCommitCallback("btn_create",boost::bind(&LLPanelGroup::onBtnCreate,this),NULL); - childSetCommitCallback("btn_join",boost::bind(&LLPanelGroup::onBtnJoin,this),NULL); + childSetCommitCallback("btn_cancel",boost::bind(&LLPanelGroup::onBtnCancel,this),NULL); LLPanelGroupTab* panel_general = findChild<LLPanelGroupTab>("group_general_tab_panel"); @@ -182,7 +187,19 @@ BOOL LLPanelGroup::postBuild() if(panel_land) mTabs.push_back(panel_land); if(panel_general) + { panel_general->setupCtrls(this); + button = panel_general->getChild<LLButton>("btn_join"); + button->setVisible(false); + button->setEnabled(true); + + mButtonJoin = button; + mButtonJoin->setCommitCallback(boost::bind(&LLPanelGroup::onBtnJoin,this)); + + mJoinText = panel_general->getChild<LLUICtrl>("join_cost_text"); + } + + gVoiceClient->addObserver(this); return TRUE; } @@ -215,6 +232,8 @@ void LLPanelGroup::reposButtons() reposButton("btn_create"); reposButton("btn_refresh"); reposButton("btn_cancel"); + reposButton("btn_chat"); + reposButton("btn_call"); } void LLPanelGroup::reshape(S32 width, S32 height, BOOL called_from_parent ) @@ -262,6 +281,18 @@ void LLPanelGroup::onBtnApply(void* user_data) self->apply(); } +void LLPanelGroup::onBtnGroupCallClicked(void* user_data) +{ + LLPanelGroup* self = static_cast<LLPanelGroup*>(user_data); + self->callGroup(); +} + +void LLPanelGroup::onBtnGroupChatClicked(void* user_data) +{ + LLPanelGroup* self = static_cast<LLPanelGroup*>(user_data); + self->chatGroup(); +} + void LLPanelGroup::onBtnJoin() { lldebugs << "joining group: " << mID << llendl; @@ -281,6 +312,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); @@ -293,16 +335,13 @@ void LLPanelGroup::update(LLGroupChange gc) { childSetValue("group_name", gdatap->mName); childSetToolTip("group_name",gdatap->mName); - - LLButton* btn_join = getChild<LLButton>("btn_join"); - LLUICtrl* join_text = getChild<LLUICtrl>("join_cost_text"); - + LLGroupData agent_gdatap; - bool is_member = gAgent.getGroupData(mID,agent_gdatap); + bool is_member = gAgent.getGroupData(mID,agent_gdatap) || gAgent.isGodlike(); bool join_btn_visible = !is_member && gdatap->mOpenEnrollment; - btn_join->setVisible(join_btn_visible); - join_text->setVisible(join_btn_visible); + mButtonJoin->setVisible(join_btn_visible); + mJoinText->setVisible(join_btn_visible); if(join_btn_visible) { @@ -318,7 +357,7 @@ void LLPanelGroup::update(LLGroupChange gc) { fee_buff = getString("group_join_free", string_args); } - childSetValue("join_cost_text",fee_buff); + mJoinText->setValue(fee_buff); } } } @@ -347,8 +386,10 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id) LLButton* button_apply = findChild<LLButton>("btn_apply"); LLButton* button_refresh = findChild<LLButton>("btn_refresh"); LLButton* button_create = findChild<LLButton>("btn_create"); - LLButton* button_join = findChild<LLButton>("btn_join"); + LLButton* button_cancel = findChild<LLButton>("btn_cancel"); + LLButton* button_call = findChild<LLButton>("btn_call"); + LLButton* button_chat = findChild<LLButton>("btn_chat"); bool is_null_group_id = group_id == LLUUID::null; @@ -362,6 +403,11 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id) if(button_cancel) button_cancel->setVisible(!is_null_group_id); + if(button_call) + button_call->setVisible(!is_null_group_id); + if(button_chat) + button_chat->setVisible(!is_null_group_id); + getChild<LLUICtrl>("prepend_founded_by")->setVisible(!is_null_group_id); LLAccordionCtrl* tab_ctrl = findChild<LLAccordionCtrl>("group_accordion"); @@ -377,8 +423,8 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id) if(!tab_general || !tab_roles || !tab_notices || !tab_land) return; - if(button_join) - button_join->setVisible(false); + if(mButtonJoin) + mButtonJoin->setVisible(false); if(is_null_group_id)//creating new group @@ -393,12 +439,17 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id) if(tab_land->getDisplayChildren()) tab_land->changeOpenClose(tab_land->getDisplayChildren()); - tab_roles->canOpenClose(false); - tab_notices->canOpenClose(false); - tab_land->canOpenClose(false); + tab_roles->setVisible(false); + tab_notices->setVisible(false); + tab_land->setVisible(false); getChild<LLUICtrl>("group_name")->setVisible(false); getChild<LLUICtrl>("group_name_editor")->setVisible(true); + + if(button_call) + button_call->setVisible(false); + if(button_chat) + button_chat->setVisible(false); } else { @@ -413,19 +464,30 @@ void LLPanelGroup::setGroupID(const LLUUID& group_id) if(tab_land->getDisplayChildren()) tab_land->changeOpenClose(tab_land->getDisplayChildren()); } + + LLGroupData agent_gdatap; + bool is_member = gAgent.getGroupData(mID,agent_gdatap) || gAgent.isGodlike(); - tab_roles->canOpenClose(true); - tab_notices->canOpenClose(true); - tab_land->canOpenClose(true); + tab_roles->setVisible(is_member); + tab_notices->setVisible(is_member); + tab_land->setVisible(is_member); getChild<LLUICtrl>("group_name")->setVisible(true); getChild<LLUICtrl>("group_name_editor")->setVisible(false); + + if(button_apply) + button_apply->setVisible(is_member); + if(button_call) + button_call->setVisible(is_member); + if(button_chat) + button_chat->setVisible(is_member); } reposButtons(); + update(GC_ALL);//show/hide "join" button if data is already ready } -bool LLPanelGroup::apply(LLPanelGroupTab* tab) +bool LLPanelGroup::apply(LLPanelGroupTab* tab) { if(!tab) return false; @@ -436,7 +498,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() ) { @@ -468,16 +535,26 @@ void LLPanelGroup::draw() childEnable("btn_refresh"); } - bool enable = false; - std::string mesg; - for(std::vector<LLPanelGroupTab* >::iterator it = mTabs.begin();it!=mTabs.end();++it) - enable = enable || (*it)->needsApply(mesg); + LLButton* button_apply = findChild<LLButton>("btn_apply"); + + if(button_apply && button_apply->getVisible()) + { + bool enable = false; + std::string mesg; + for(std::vector<LLPanelGroupTab* >::iterator it = mTabs.begin();it!=mTabs.end();++it) + enable = enable || (*it)->needsApply(mesg); - childSetEnabled("btn_apply", enable); + childSetEnabled("btn_apply", enable); + } } void LLPanelGroup::refreshData() { + if(mSkipRefresh) + { + mSkipRefresh = FALSE; + return; + } LLGroupMgr::getInstance()->clearGroupData(getID()); setGroupID(getID()); @@ -488,12 +565,21 @@ void LLPanelGroup::refreshData() mRefreshTimer.setTimerExpirySec(5); } +void LLPanelGroup::callGroup() +{ + LLGroupActions::startCall(getID()); +} + +void LLPanelGroup::chatGroup() +{ + LLGroupActions::startIM(getID()); +} 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/llpanelgroup.h b/indra/newview/llpanelgroup.h index f6aefdb676..136868a60d 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 @@ public: // 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, @@ -74,12 +80,11 @@ public: bool apply(); void refreshData(); + void callGroup(); + void chatGroup(); 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, @@ -103,6 +108,8 @@ protected: static void onBtnApply(void*); static void onBtnRefresh(void*); + static void onBtnGroupCallClicked(void*); + static void onBtnGroupChatClicked(void*); void reposButton(const std::string& name); void reposButtons(); @@ -116,13 +123,16 @@ protected: LLTimer mRefreshTimer; - BOOL mAllowEdit; + BOOL mSkipRefresh; std::string mDefaultNeedsApplyMesg; std::string mWantApplyMesg; std::vector<LLPanelGroupTab* > mTabs; + LLButton* mButtonJoin; + LLUICtrl* mJoinText; + }; class LLPanelGroupTab : public LLPanel @@ -159,8 +169,6 @@ public: virtual BOOL isVisibleByAgent(LLAgent* agentp); - void setAllowEdit(BOOL v) { mAllowEdit = v; } - virtual void setGroupID(const LLUUID& id) {mGroupID = id;}; void notifyObservers() {}; diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp index 31dfdde887..517204b232 100644 --- a/indra/newview/llpanelgroupgeneral.cpp +++ b/indra/newview/llpanelgroupgeneral.cpp @@ -111,6 +111,8 @@ BOOL LLPanelGroupGeneral::postBuild() { mListVisibleMembers->setDoubleClickCallback(openProfile, this); mListVisibleMembers->setContextMenu(LLScrollListCtrl::MENU_AVATAR); + + mListVisibleMembers->setSortCallback(boost::bind(&LLPanelGroupGeneral::sortMembersList,this,_1,_2,_3)); } // Options @@ -206,15 +208,19 @@ BOOL LLPanelGroupGeneral::postBuild() void LLPanelGroupGeneral::setupCtrls(LLPanel* panel_group) { - mInsignia = panel_group->getChild<LLTextureCtrl>("insignia"); + mInsignia = getChild<LLTextureCtrl>("insignia"); if (mInsignia) { mInsignia->setCommitCallback(onCommitAny, this); mDefaultIconID = mInsignia->getImageAssetID(); } - mFounderName = panel_group->getChild<LLNameBox>("founder_name"); + mFounderName = getChild<LLNameBox>("founder_name"); + + mGroupNameEditor = panel_group->getChild<LLLineEditor>("group_name_editor"); - mGroupNameEditor->setPrevalidate( LLLineEditor::prevalidateASCII ); + mGroupNameEditor->setPrevalidate( LLTextValidate::validateASCII ); + + } // static @@ -580,7 +586,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc) } } - mComboActiveTitle->resetDirty(); } // If this was just a titles update, we are done. @@ -595,8 +600,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc) { mCtrlShowInGroupList->set(gdatap->mShowInList); mCtrlShowInGroupList->setEnabled(mAllowEdit && can_change_ident); - mCtrlShowInGroupList->resetDirty(); - } if (mComboMature) { @@ -610,19 +613,16 @@ void LLPanelGroupGeneral::update(LLGroupChange gc) } mComboMature->setEnabled(mAllowEdit && can_change_ident); mComboMature->setVisible( !gAgent.isTeen() ); - mComboMature->resetDirty(); } if (mCtrlOpenEnrollment) { mCtrlOpenEnrollment->set(gdatap->mOpenEnrollment); mCtrlOpenEnrollment->setEnabled(mAllowEdit && can_change_member_opts); - mCtrlOpenEnrollment->resetDirty(); } if (mCtrlEnrollmentFee) { mCtrlEnrollmentFee->set(gdatap->mMembershipFee > 0); mCtrlEnrollmentFee->setEnabled(mAllowEdit && can_change_member_opts); - mCtrlEnrollmentFee->resetDirty(); } if (mSpinEnrollmentFee) @@ -632,7 +632,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc) mSpinEnrollmentFee->setEnabled( mAllowEdit && (fee > 0) && can_change_member_opts); - mSpinEnrollmentFee->resetDirty(); } if (mCtrlReceiveNotices) { @@ -641,7 +640,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc) { mCtrlReceiveNotices->setEnabled(mAllowEdit); } - mCtrlReceiveNotices->resetDirty(); } @@ -665,7 +663,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc) if (mEditCharter) { mEditCharter->setText(gdatap->mCharter); - mEditCharter->resetDirty(); } if (mListVisibleMembers) @@ -688,11 +685,14 @@ void LLPanelGroupGeneral::update(LLGroupChange gc) LLSD row; row["columns"][0]["value"] = pending.str(); + row["columns"][0]["column"] = "name"; mListVisibleMembers->setEnabled(FALSE); mListVisibleMembers->addElement(row); } } + + resetDirty(); } void LLPanelGroupGeneral::updateMembers() @@ -738,9 +738,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; @@ -853,6 +855,7 @@ void LLPanelGroupGeneral::reset() { LLSD row; row["columns"][0]["value"] = "no members yet"; + row["columns"][0]["column"] = "name"; mListVisibleMembers->deleteAllItems(); mListVisibleMembers->setEnabled(FALSE); @@ -943,4 +946,18 @@ void LLPanelGroupGeneral::setGroupID(const LLUUID& id) activate(); } +S32 LLPanelGroupGeneral::sortMembersList(S32 col_idx,const LLScrollListItem* i1,const LLScrollListItem* i2) +{ + const LLScrollListCell *cell1 = i1->getColumn(col_idx); + const LLScrollListCell *cell2 = i2->getColumn(col_idx); + if(col_idx == 2) + { + if(LLStringUtil::compareDict(cell1->getValue().asString(),"Online") == 0 ) + return 1; + if(LLStringUtil::compareDict(cell2->getValue().asString(),"Online") == 0 ) + return -1; + } + + return LLStringUtil::compareDict(cell1->getValue().asString(), cell2->getValue().asString()); +} diff --git a/indra/newview/llpanelgroupgeneral.h b/indra/newview/llpanelgroupgeneral.h index 7e90e43cf9..6245018871 100644 --- a/indra/newview/llpanelgroupgeneral.h +++ b/indra/newview/llpanelgroupgeneral.h @@ -83,6 +83,8 @@ private: static void onReceiveNotices(LLUICtrl* ctrl, void* data); static void openProfile(void* data); + S32 sortMembersList(S32,const LLScrollListItem*,const LLScrollListItem*); + static bool joinDlgCB(const LLSD& notification, const LLSD& response); void updateMembers(); diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp index 06a682c905..05261a65de 100644 --- a/indra/newview/llpanelgroupinvite.cpp +++ b/indra/newview/llpanelgroupinvite.cpp @@ -36,6 +36,7 @@ #include "llagent.h" #include "llfloateravatarpicker.h" #include "llbutton.h" +#include "llcallingcard.h" #include "llcombobox.h" #include "llgroupactions.h" #include "llgroupmgr.h" @@ -405,16 +406,13 @@ void LLPanelGroupInvite::addUsers(std::vector<LLUUID>& agent_ids) { LLUUID agent_id = agent_ids[i]; LLViewerObject* dest = gObjectList.findObject(agent_id); + std::string fullname; if(dest && dest->isAvatar()) { - std::string fullname; - LLSD args; LLNameValue* nvfirst = dest->getNVPair("FirstName"); LLNameValue* nvlast = dest->getNVPair("LastName"); if(nvfirst && nvlast) { - args["FIRST"] = std::string(nvfirst->getString()); - args["LAST"] = std::string(nvlast->getString()); fullname = std::string(nvfirst->getString()) + " " + std::string(nvlast->getString()); } if (!fullname.empty()) @@ -427,10 +425,44 @@ void LLPanelGroupInvite::addUsers(std::vector<LLUUID>& agent_ids) names.push_back("(Unknown)"); } } + else + { + //looks like user try to invite offline friend + //for offline avatar_id gObjectList.findObject() will return null + //so we need to do this additional search in avatar tracker, see EXT-4732 + if (LLAvatarTracker::instance().isBuddy(agent_id)) + { + if (!gCacheName->getFullName(agent_id, fullname)) + { + // actually it should happen, just in case + gCacheName->get(LLUUID(agent_id), false, boost::bind( + &LLPanelGroupInvite::addUserCallback, this, _1, _2, + _3)); + // for this special case! + //when there is no cached name we should remove resident from agent_ids list to avoid breaking of sequence + // removed id will be added in callback + agent_ids.erase(agent_ids.begin() + i); + } + else + { + names.push_back(fullname); + } + } + } } mImplementation->addUsers(names, agent_ids); } +void LLPanelGroupInvite::addUserCallback(const LLUUID& id, const std::string& first_name, const std::string& last_name) +{ + std::vector<std::string> names; + std::vector<LLUUID> agent_ids; + std::string full_name = first_name + " " + last_name; + agent_ids.push_back(id); + names.push_back(first_name + " " + last_name); + + mImplementation->addUsers(names, agent_ids); +} void LLPanelGroupInvite::draw() { LLPanel::draw(); diff --git a/indra/newview/llpanelgroupinvite.h b/indra/newview/llpanelgroupinvite.h index 37135b488a..b095dd2395 100644 --- a/indra/newview/llpanelgroupinvite.h +++ b/indra/newview/llpanelgroupinvite.h @@ -43,6 +43,10 @@ public: ~LLPanelGroupInvite(); void addUsers(std::vector<LLUUID>& agent_ids); + /** + * this callback is being used to add a user whose fullname isn't been loaded before invoking of addUsers(). + */ + void addUserCallback(const LLUUID& id, const std::string& first_name, const std::string& last_name); void clear(); void update(); diff --git a/indra/newview/llpanelgroupnotices.cpp b/indra/newview/llpanelgroupnotices.cpp index 6210973dae..5f913d5469 100644 --- a/indra/newview/llpanelgroupnotices.cpp +++ b/indra/newview/llpanelgroupnotices.cpp @@ -652,6 +652,9 @@ void LLPanelGroupNotices::setGroupID(const LLUUID& id) LLGroupDropTarget* target = getChild<LLGroupDropTarget> ("drop_target"); target->setPanel (this); target->setGroup (mGroupID); + + if(mViewMessage) + mViewMessage->clear(); activate(); } diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 29b647415c..c6287472fe 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -452,6 +452,7 @@ LLPanelGroupSubTab::LLPanelGroupSubTab() : LLPanelGroupTab(), mHeader(NULL), mFooter(NULL), + mActivated(false), mSearchEditor(NULL) { } @@ -460,17 +461,8 @@ LLPanelGroupSubTab::~LLPanelGroupSubTab() { } -BOOL LLPanelGroupSubTab::postBuild() -{ - // Hook up the search widgets. - bool recurse = true; - mSearchEditor = getChild<LLFilterEditor>("filter_input", recurse); - - if (!mSearchEditor) - return FALSE; - - mSearchEditor->setCommitCallback(boost::bind(&LLPanelGroupSubTab::setSearchFilter, this, _2)); - +BOOL LLPanelGroupSubTab::postBuildSubTab(LLView* root) +{ // Get icons for later use. mActionIcons.clear(); @@ -488,6 +480,19 @@ BOOL LLPanelGroupSubTab::postBuild() { mActionIcons["partial"] = getString("power_partial_icon"); } + return TRUE; +} + +BOOL LLPanelGroupSubTab::postBuild() +{ + // Hook up the search widgets. + bool recurse = true; + mSearchEditor = getChild<LLFilterEditor>("filter_input", recurse); + + if (!mSearchEditor) + return FALSE; + + mSearchEditor->setCommitCallback(boost::bind(&LLPanelGroupSubTab::setSearchFilter, this, _2)); return LLPanelGroupTab::postBuild(); } @@ -500,13 +505,14 @@ void LLPanelGroupSubTab::setGroupID(const LLUUID& id) mSearchEditor->clear(); setSearchFilter(""); } + + mActivated = false; } void LLPanelGroupSubTab::setSearchFilter(const std::string& filter) { if(mSearchFilter == filter) return; - lldebugs << "LLPanelGroupSubTab::setSearchFilter() ==> '" << filter << "'" << llendl; mSearchFilter = filter; LLStringUtil::toLower(mSearchFilter); update(GC_ALL); @@ -514,13 +520,11 @@ void LLPanelGroupSubTab::setSearchFilter(const std::string& filter) void LLPanelGroupSubTab::activate() { - lldebugs << "LLPanelGroupSubTab::activate()" << llendl; setOthersVisible(TRUE); } void LLPanelGroupSubTab::deactivate() { - lldebugs << "LLPanelGroupSubTab::deactivate()" << llendl; setOthersVisible(FALSE); } @@ -530,19 +534,11 @@ void LLPanelGroupSubTab::setOthersVisible(BOOL b) { mHeader->setVisible( b ); } - else - { - llwarns << "LLPanelGroupSubTab missing header!" << llendl; - } if (mFooter) { mFooter->setVisible( b ); } - else - { - llwarns << "LLPanelGroupSubTab missing footer!" << llendl; - } } bool LLPanelGroupSubTab::matchesActionSearchFilter(std::string action) @@ -567,7 +563,6 @@ bool LLPanelGroupSubTab::matchesActionSearchFilter(std::string action) void LLPanelGroupSubTab::buildActionsList(LLScrollListCtrl* ctrl, U64 allowed_by_some, U64 allowed_by_all, - icon_map_t& icons, LLUICtrl::commit_callback_t commit_callback, BOOL show_all, BOOL filter, @@ -588,7 +583,6 @@ void LLPanelGroupSubTab::buildActionsList(LLScrollListCtrl* ctrl, allowed_by_some, allowed_by_all, (*ras_it), - icons, commit_callback, show_all, filter, @@ -600,7 +594,6 @@ void LLPanelGroupSubTab::buildActionCategory(LLScrollListCtrl* ctrl, U64 allowed_by_some, U64 allowed_by_all, LLRoleActionSet* action_set, - icon_map_t& icons, LLUICtrl::commit_callback_t commit_callback, BOOL show_all, BOOL filter, @@ -614,26 +607,26 @@ void LLPanelGroupSubTab::buildActionCategory(LLScrollListCtrl* ctrl, LLSD row; row["columns"][0]["column"] = "icon"; - icon_map_t::iterator iter = icons.find("folder"); - if (iter != icons.end()) + row["columns"][0]["type"] = "icon"; + + icon_map_t::iterator iter = mActionIcons.find("folder"); + if (iter != mActionIcons.end()) { - row["columns"][0]["type"] = "icon"; row["columns"][0]["value"] = (*iter).second; } row["columns"][1]["column"] = "action"; + row["columns"][1]["type"] = "text"; row["columns"][1]["value"] = action_set->mActionSetData->mName; row["columns"][1]["font"]["name"] = "SANSSERIF_SMALL"; - row["columns"][1]["font"]["style"] = "BOLD"; + LLScrollListItem* title_row = ctrl->addElement(row, ADD_BOTTOM, action_set->mActionSetData); - LLScrollListText* name_textp = dynamic_cast<LLScrollListText*>(title_row->getColumn(1)); + LLScrollListText* name_textp = dynamic_cast<LLScrollListText*>(title_row->getColumn(2)); //?? I have no idea fix getColumn(1) return column spacer... if (name_textp) name_textp->setFontStyle(LLFontGL::BOLD); - - bool category_matches_filter = (filter) ? matchesActionSearchFilter(action_set->mActionSetData->mName) : true; std::vector<LLRoleAction*>::iterator ra_it = action_set->mActions.begin(); @@ -686,8 +679,8 @@ void LLPanelGroupSubTab::buildActionCategory(LLScrollListCtrl* ctrl, { if (show_full_strength) { - icon_map_t::iterator iter = icons.find("full"); - if (iter != icons.end()) + icon_map_t::iterator iter = mActionIcons.find("full"); + if (iter != mActionIcons.end()) { row["columns"][column_index]["column"] = "checkbox"; row["columns"][column_index]["type"] = "icon"; @@ -697,8 +690,8 @@ void LLPanelGroupSubTab::buildActionCategory(LLScrollListCtrl* ctrl, } else { - icon_map_t::iterator iter = icons.find("partial"); - if (iter != icons.end()) + icon_map_t::iterator iter = mActionIcons.find("partial"); + if (iter != mActionIcons.end()) { row["columns"][column_index]["column"] = "checkbox"; row["columns"][column_index]["type"] = "icon"; @@ -792,6 +785,8 @@ LLPanelGroupMembersSubTab::~LLPanelGroupMembersSubTab() BOOL LLPanelGroupMembersSubTab::postBuildSubTab(LLView* root) { + LLPanelGroupSubTab::postBuildSubTab(root); + // Upcast parent so we can ask it for sibling controls. LLPanelGroupRoles* parent = (LLPanelGroupRoles*) root; @@ -872,10 +867,12 @@ void LLPanelGroupMembersSubTab::handleMemberSelect() for (itor = selection.begin(); itor != selection.end(); ++itor) { - selected_members.push_back( (*itor)->getUUID() ); + LLUUID member_id = (*itor)->getUUID(); + + selected_members.push_back( member_id ); // Get this member's power mask including any unsaved changes - U64 powers = getAgentPowersBasedOnRoleChanges((*itor)->getUUID()); + U64 powers = getAgentPowersBasedOnRoleChanges( member_id ); allowed_by_all &= powers; allowed_by_some |= powers; @@ -888,7 +885,6 @@ void LLPanelGroupMembersSubTab::handleMemberSelect() buildActionsList(mAllowedActionsList, allowed_by_some, allowed_by_all, - mActionIcons, NULL, FALSE, FALSE, @@ -1020,6 +1016,7 @@ void LLPanelGroupMembersSubTab::handleMemberSelect() //last owner. We should check for this special case // -jwolk check->setEnabled(cb_enable); + item->setEnabled(cb_enable); } } else @@ -1096,7 +1093,8 @@ void LLPanelGroupMembersSubTab::handleEjectMembers() for (itor = selection.begin() ; itor != selection.end(); ++itor) { - selected_members.push_back((*itor)->getUUID()); + LLUUID member_id = (*itor)->getUUID(); + selected_members.push_back( member_id ); } mMembersList->deleteSelectedItems(); @@ -1152,6 +1150,7 @@ void LLPanelGroupMembersSubTab::handleRoleCheck(const LLUUID& role_id, for (std::vector<LLScrollListItem*>::iterator itor = selection.begin() ; itor != selection.end(); ++itor) { + member_id = (*itor)->getUUID(); //see if we requested a change for this member before @@ -1211,7 +1210,6 @@ void LLPanelGroupMembersSubTab::handleRoleCheck(const LLUUID& role_id, buildActionsList(mAllowedActionsList, powers_some_have, powers_all_have, - mActionIcons, NULL, FALSE, FALSE, @@ -1244,15 +1242,19 @@ void LLPanelGroupMembersSubTab::handleMemberDoubleClick() LLScrollListItem* selected = mMembersList->getFirstSelected(); if (selected) { - LLAvatarActions::showProfile(selected->getUUID()); + LLUUID member_id = selected->getUUID(); + LLAvatarActions::showProfile( member_id ); } } void LLPanelGroupMembersSubTab::activate() { LLPanelGroupSubTab::activate(); - - update(GC_ALL); + if(!mActivated) + { + update(GC_ALL); + mActivated = true; + } } void LLPanelGroupMembersSubTab::deactivate() @@ -1628,7 +1630,9 @@ void LLPanelGroupMembersSubTab::updateMembers() row["columns"][2]["value"] = mMemberProgress->second->getOnlineStatus(); row["columns"][2]["font"] = "SANSSERIF_SMALL"; - mMembersList->addElement(row);//, ADD_SORTED); + LLScrollListItem* member = mMembersList->addElement(row);//, ADD_SORTED); + + LLUUID id = member->getUUID(); mHasMatch = TRUE; } } @@ -1684,6 +1688,8 @@ LLPanelGroupRolesSubTab::~LLPanelGroupRolesSubTab() BOOL LLPanelGroupRolesSubTab::postBuildSubTab(LLView* root) { + LLPanelGroupSubTab::postBuildSubTab(root); + // Upcast parent so we can ask it for sibling controls. LLPanelGroupRoles* parent = (LLPanelGroupRoles*) root; @@ -1994,7 +2000,6 @@ void LLPanelGroupRolesSubTab::handleRoleSelect() buildActionsList(mAllowedActionsList, rd.mRolePowers, 0LL, - mActionIcons, boost::bind(&LLPanelGroupRolesSubTab::handleActionCheck, this, _1, false), TRUE, FALSE, @@ -2381,6 +2386,8 @@ LLPanelGroupActionsSubTab::~LLPanelGroupActionsSubTab() BOOL LLPanelGroupActionsSubTab::postBuildSubTab(LLView* root) { + LLPanelGroupSubTab::postBuildSubTab(root); + // Upcast parent so we can ask it for sibling controls. LLPanelGroupRoles* parent = (LLPanelGroupRoles*) root; @@ -2448,7 +2455,6 @@ void LLPanelGroupActionsSubTab::update(LLGroupChange gc) buildActionsList(mActionList, GP_ALL_POWERS, GP_ALL_POWERS, - mActionIcons, NULL, FALSE, TRUE, diff --git a/indra/newview/llpanelgrouproles.h b/indra/newview/llpanelgrouproles.h index bb3c9096cf..eac22a6338 100644 --- a/indra/newview/llpanelgrouproles.h +++ b/indra/newview/llpanelgrouproles.h @@ -108,7 +108,7 @@ public: virtual BOOL postBuild(); // This allows sub-tabs to collect child widgets from a higher level in the view hierarchy. - virtual BOOL postBuildSubTab(LLView* root) { return TRUE; } + virtual BOOL postBuildSubTab(LLView* root); virtual void setSearchFilter( const std::string& filter ); @@ -117,10 +117,15 @@ public: // Helper functions bool matchesActionSearchFilter(std::string action); + + + void setFooterEnabled(BOOL enable); + + virtual void setGroupID(const LLUUID& id); +protected: void buildActionsList(LLScrollListCtrl* ctrl, U64 allowed_by_some, U64 allowed_by_all, - icon_map_t& icons, LLUICtrl::commit_callback_t commit_callback, BOOL show_all, BOOL filter, @@ -129,15 +134,11 @@ public: U64 allowed_by_some, U64 allowed_by_all, LLRoleActionSet* action_set, - icon_map_t& icons, LLUICtrl::commit_callback_t commit_callback, BOOL show_all, BOOL filter, BOOL is_owner_role); - void setFooterEnabled(BOOL enable); - - virtual void setGroupID(const LLUUID& id); protected: LLPanel* mHeader; LLPanel* mFooter; @@ -148,6 +149,8 @@ protected: icon_map_t mActionIcons; + bool mActivated; + void setOthersVisible(BOOL b); }; diff --git a/indra/newview/llpanelhome.cpp b/indra/newview/llpanelhome.cpp index 92b6d2f619..713d2d79b4 100644 --- a/indra/newview/llpanelhome.cpp +++ b/indra/newview/llpanelhome.cpp @@ -37,7 +37,7 @@ #include "llmediactrl.h" #include "llviewerhome.h" -static LLRegisterPanelClassWrapper<LLPanelHome> t_people("panel_sidetray_home"); +static LLRegisterPanelClassWrapper<LLPanelHome> t_home("panel_sidetray_home"); LLPanelHome::LLPanelHome() : LLPanel(), diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index 279818d52f..c34f0633b9 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -46,6 +46,7 @@ #include "llimview.h" #include "llvoicechannel.h" #include "llsidetray.h" +#include "llspeakers.h" #include "lltrans.h" void LLPanelChatControlPanel::onCallButtonClicked() @@ -63,21 +64,58 @@ 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() +{ + bool voice_enabled = LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking(); + + LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionId); + + if (!session) + { + childSetEnabled("call_btn", false); + 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", is_call_started); - childSetVisible("voice_ctrls_btn", is_call_started); - childSetVisible("call_btn", ! 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::instanceExists()) + { + LLVoiceClient::getInstance()->removeObserver(this); + } } BOOL LLPanelChatControlPanel::postBuild() @@ -86,26 +124,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; - - bool session_initialized = session->mSessionInitialized; - bool callback_enabled = session->mCallBackEnabled; - - BOOL enable_connect = session_initialized - && voice_enabled - && callback_enabled; - childSetEnabled("call_btn", enable_connect); + gVoiceClient->addObserver(this); - LLPanel::draw(); + return TRUE; } void LLPanelChatControlPanel::setSessionId(const LLUUID& session_id) @@ -205,14 +226,6 @@ void LLPanelIMControlPanel::setSessionId(const LLUUID& session_id) childSetEnabled("share_btn", FALSE); childSetEnabled("teleport_btn", FALSE); childSetEnabled("pay_btn", FALSE); - - getChild<LLTextBox>("avatar_name")->setValue(im_session->mName); - getChild<LLTextBox>("avatar_name")->setToolTip(im_session->mName); - } - else - { - // If the participant is an avatar, fetch the currect name - gCacheName->get(mAvatarID, FALSE, boost::bind(&LLPanelIMControlPanel::nameUpdatedCallback, this, _1, _2, _3, _4)); } } @@ -228,23 +241,9 @@ void LLPanelIMControlPanel::changed(U32 mask) } } -void LLPanelIMControlPanel::nameUpdatedCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group) -{ - if ( id == mAvatarID ) - { - std::string avatar_name; - avatar_name.assign(first); - avatar_name.append(" "); - avatar_name.append(last); - getChild<LLTextBox>("avatar_name")->setValue(avatar_name); - getChild<LLTextBox>("avatar_name")->setToolTip(avatar_name); - } -} - LLPanelGroupControlPanel::LLPanelGroupControlPanel(const LLUUID& session_id): mParticipantList(NULL) { - mSpeakerManager = LLIMModel::getInstance()->getSpeakerManager(session_id); } BOOL LLPanelGroupControlPanel::postBuild() @@ -263,9 +262,6 @@ LLPanelGroupControlPanel::~LLPanelGroupControlPanel() // virtual void LLPanelGroupControlPanel::draw() { - //Remove event does not raised until speakerp->mActivityTimer.hasExpired() is false, see LLSpeakerManager::update() - //so we need update it to raise needed event - mSpeakerManager->update(true); // Need to resort the participant list if it's in sort by recent speaker order. if (mParticipantList) mParticipantList->updateRecentSpeakersOrder(); @@ -302,11 +298,14 @@ void LLPanelGroupControlPanel::setSessionId(const LLUUID& session_id) { LLPanelChatControlPanel::setSessionId(session_id); - mGroupID = LLIMModel::getInstance()->getOtherParticipantID(session_id); + mGroupID = session_id; // for group and Ad-hoc chat we need to include agent into list if(!mParticipantList) - mParticipantList = new LLParticipantList(mSpeakerManager, getChild<LLAvatarList>("speakers_list"), true,false); + { + LLSpeakerMgr* speaker_manager = LLIMModel::getInstance()->getSpeakerManager(session_id); + mParticipantList = new LLParticipantList(speaker_manager, getChild<LLAvatarList>("speakers_list"), true,false); + } } diff --git a/indra/newview/llpanelimcontrolpanel.h b/indra/newview/llpanelimcontrolpanel.h index c18be5a6df..ce8fc58e56 100644 --- a/indra/newview/llpanelimcontrolpanel.h +++ b/indra/newview/llpanelimcontrolpanel.h @@ -37,11 +37,11 @@ #include "llvoicechannel.h" #include "llcallingcard.h" -class LLSpeakerMgr; -class LLAvatarList; class LLParticipantList; -class LLPanelChatControlPanel : public LLPanel +class LLPanelChatControlPanel + : public LLPanel + , public LLVoiceClientStatusObserver { public: LLPanelChatControlPanel() : @@ -49,15 +49,21 @@ public: ~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; } @@ -83,9 +89,6 @@ public: // LLFriendObserver trigger virtual void changed(U32 mask); -protected: - void nameUpdatedCallback(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group); - private: void onViewProfileButtonClicked(); void onAddFriendButtonClicked(); @@ -110,7 +113,6 @@ public: protected: LLUUID mGroupID; - LLSpeakerMgr* mSpeakerManager; LLParticipantList* mParticipantList; diff --git a/indra/newview/llpanellandaudio.cpp b/indra/newview/llpanellandaudio.cpp index 920fca66f2..a92b4357ed 100644 --- a/indra/newview/llpanellandaudio.cpp +++ b/indra/newview/llpanellandaudio.cpp @@ -37,6 +37,7 @@ // viewer includes #include "llmimetypes.h" #include "llviewerparcelmgr.h" +#include "llviewerregion.h" #include "lluictrlfactory.h" // library includes @@ -83,8 +84,14 @@ BOOL LLPanelLandAudio::postBuild() mCheckSoundLocal = getChild<LLCheckBoxCtrl>("check sound local"); childSetCommitCallback("check sound local", onCommitAny, this); - mRadioVoiceChat = getChild<LLRadioGroup>("parcel_voice_channel"); - childSetCommitCallback("parcel_voice_channel", onCommitAny, this); + mCheckParcelEnableVoice = getChild<LLCheckBoxCtrl>("parcel_enable_voice_channel"); + childSetCommitCallback("parcel_enable_voice_channel", onCommitAny, this); + + // This one is always disabled so no need for a commit callback + mCheckEstateDisabledVoice = getChild<LLCheckBoxCtrl>("parcel_enable_voice_channel_is_estate_disabled"); + + mCheckParcelVoiceLocal = getChild<LLCheckBoxCtrl>("parcel_enable_voice_channel_local"); + childSetCommitCallback("parcel_enable_voice_channel_local", onCommitAny, this); mMusicURLEdit = getChild<LLLineEditor>("music_url"); childSetCommitCallback("music_url", onCommitAny, this); @@ -118,20 +125,41 @@ void LLPanelLandAudio::refresh() mMusicUrlCheck->set( parcel->getObscureMusic() ); mMusicUrlCheck->setEnabled( can_change_media ); - if(parcel->getParcelFlagAllowVoice()) + bool allow_voice = parcel->getParcelFlagAllowVoice(); + + LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion(); + if (region && region->isVoiceEnabled()) { - if(parcel->getParcelFlagUseEstateVoiceChannel()) - mRadioVoiceChat->setSelectedIndex(kRadioVoiceChatEstate); - else - mRadioVoiceChat->setSelectedIndex(kRadioVoiceChatPrivate); + mCheckEstateDisabledVoice->setVisible(false); + + mCheckParcelEnableVoice->setVisible(true); + mCheckParcelEnableVoice->setEnabled( can_change_media ); + mCheckParcelEnableVoice->set(allow_voice); + + mCheckParcelVoiceLocal->setEnabled( can_change_media && allow_voice ); } else { - mRadioVoiceChat->setSelectedIndex(kRadioVoiceChatDisable); + // Voice disabled at estate level, overrides parcel settings + // Replace the parcel voice checkbox with a disabled one + // labelled with an explanatory message + mCheckEstateDisabledVoice->setVisible(true); + + mCheckParcelEnableVoice->setVisible(false); + mCheckParcelEnableVoice->setEnabled(false); + mCheckParcelVoiceLocal->setEnabled(false); } - mRadioVoiceChat->setEnabled( can_change_media ); + mCheckParcelEnableVoice->set(allow_voice); + mCheckParcelVoiceLocal->set(!parcel->getParcelFlagUseEstateVoiceChannel()); + // don't display urls if you're not able to change it + // much requested change in forums so people can't 'steal' urls + // NOTE: bug#2009 means this is still vunerable - however, bug + // should be closed since this bug opens up major security issues elsewhere. + bool obscure_music = ! can_change_media && parcel->getObscureMusic(); + + mMusicURLEdit->setDrawAsterixes(obscure_music); mMusicURLEdit->setText(parcel->getMusicURL()); mMusicURLEdit->setEnabled( can_change_media ); } @@ -149,30 +177,11 @@ void LLPanelLandAudio::onCommitAny(LLUICtrl*, void *userdata) // Extract data from UI BOOL sound_local = self->mCheckSoundLocal->get(); - int voice_setting = self->mRadioVoiceChat->getSelectedIndex(); std::string music_url = self->mMusicURLEdit->getText(); U8 obscure_music = self->mMusicUrlCheck->get(); - - BOOL voice_enabled; - BOOL voice_estate_chan; - - switch(voice_setting) - { - default: - case kRadioVoiceChatEstate: - voice_enabled = TRUE; - voice_estate_chan = TRUE; - break; - case kRadioVoiceChatPrivate: - voice_enabled = TRUE; - voice_estate_chan = FALSE; - break; - case kRadioVoiceChatDisable: - voice_enabled = FALSE; - voice_estate_chan = FALSE; - break; - } + BOOL voice_enabled = self->mCheckParcelEnableVoice->get(); + BOOL voice_estate_chan = !self->mCheckParcelVoiceLocal->get(); // Remove leading/trailing whitespace (common when copying/pasting) LLStringUtil::trim(music_url); diff --git a/indra/newview/llpanellandaudio.h b/indra/newview/llpanellandaudio.h index de5da95fa4..19766a40b6 100644 --- a/indra/newview/llpanellandaudio.h +++ b/indra/newview/llpanellandaudio.h @@ -52,7 +52,9 @@ private: private: LLCheckBoxCtrl* mCheckSoundLocal; - LLRadioGroup* mRadioVoiceChat; + LLCheckBoxCtrl* mCheckParcelEnableVoice; + LLCheckBoxCtrl* mCheckEstateDisabledVoice; + LLCheckBoxCtrl* mCheckParcelVoiceLocal; LLLineEditor* mMusicURLEdit; LLCheckBoxCtrl* mMusicUrlCheck; diff --git a/indra/newview/llpanellandmarkinfo.cpp b/indra/newview/llpanellandmarkinfo.cpp index 597b8bdb2d..56d52ccc65 100644 --- a/indra/newview/llpanellandmarkinfo.cpp +++ b/indra/newview/llpanellandmarkinfo.cpp @@ -98,17 +98,17 @@ 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); } // virtual -void LLPanelLandmarkInfo::setInfoType(INFO_TYPE type) +void LLPanelLandmarkInfo::setInfoType(EInfoType type) { LLPanel* landmark_info_panel = getChild<LLPanel>("landmark_info_panel"); @@ -185,6 +185,13 @@ void LLPanelLandmarkInfo::processParcelInfo(const LLParcelData& parcel_data) region_z = llround(mPosRegion.mV[VZ]); } + LLSD info; + info["update_verbs"] = true; + info["global_x"] = parcel_data.global_x; + info["global_y"] = parcel_data.global_y; + info["global_z"] = parcel_data.global_z; + notifyParent(info); + if (mInfoType == CREATE_LANDMARK) { if (parcel_data.name.empty()) @@ -360,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, @@ -370,21 +376,31 @@ void LLPanelLandmarkInfo::createLandmark(const LLUUID& folder_id) // static std::string LLPanelLandmarkInfo::getFullFolderName(const LLViewerInventoryCategory* cat) { - std::string name = cat->getName(); + std::string name; LLUUID parent_id; - // translate category name, if it's right below the root - // FIXME: it can throw notification about non existent string in strings.xml - if (cat->getParentUUID().notNull() && cat->getParentUUID() == gInventory.getRootFolderID()) + llassert(cat); + if (cat) { - LLTrans::findString(name, "InvFolder " + name); - } + name = cat->getName(); - // we don't want "My Inventory" to appear in the name - while ((parent_id = cat->getParentUUID()).notNull() && parent_id != gInventory.getRootFolderID()) - { - cat = gInventory.getCategory(parent_id); - name = cat->getName() + "/" + name; + // translate category name, if it's right below the root + // FIXME: it can throw notification about non existent string in strings.xml + if (cat->getParentUUID().notNull() && cat->getParentUUID() == gInventory.getRootFolderID()) + { + LLTrans::findString(name, "InvFolder " + name); + } + + // we don't want "My Inventory" to appear in the name + while ((parent_id = cat->getParentUUID()).notNull() && parent_id != gInventory.getRootFolderID()) + { + cat = gInventory.getCategory(parent_id); + llassert(cat); + if (cat) + { + name = cat->getName() + "/" + name; + } + } } return name; @@ -400,21 +416,24 @@ void LLPanelLandmarkInfo::populateFoldersList() // Put the "Landmarks" folder first in list. LLUUID landmarks_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK); - const LLViewerInventoryCategory* cat = gInventory.getCategory(landmarks_id); - if (!cat) + const LLViewerInventoryCategory* lmcat = gInventory.getCategory(landmarks_id); + if (!lmcat) { llwarns << "Cannot find the landmarks folder" << llendl; } - std::string cat_full_name = getFullFolderName(cat); - mFolderCombo->add(cat_full_name, cat->getUUID()); + else + { + std::string cat_full_name = getFullFolderName(lmcat); + mFolderCombo->add(cat_full_name, lmcat->getUUID()); + } typedef std::vector<folder_pair_t> folder_vec_t; folder_vec_t folders; // Sort the folders by their full name. for (S32 i = 0; i < cats.count(); i++) { - cat = cats.get(i); - cat_full_name = getFullFolderName(cat); + const LLViewerInventoryCategory* cat = cats.get(i); + std::string cat_full_name = getFullFolderName(cat); folders.push_back(folder_pair_t(cat->getUUID(), cat_full_name)); } sort(folders.begin(), folders.end(), cmp_folders); diff --git a/indra/newview/llpanellandmarkinfo.h b/indra/newview/llpanellandmarkinfo.h index 2a9949ae41..b3dc3f5ad9 100644 --- a/indra/newview/llpanellandmarkinfo.h +++ b/indra/newview/llpanellandmarkinfo.h @@ -49,7 +49,7 @@ public: /*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/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp index 87abb16395..45a8dc4cbe 100644 --- a/indra/newview/llpanellandmarks.cpp +++ b/indra/newview/llpanellandmarks.cpp @@ -35,6 +35,7 @@ #include "llbutton.h" #include "llfloaterreg.h" +#include "llnotificationsutil.h" #include "llsdutil.h" #include "llsdutil_math.h" #include "llregionhandle.h" @@ -68,6 +69,10 @@ static const std::string TRASH_BUTTON_NAME = "trash_btn"; // helper functions static void filter_list(LLPlacesInventoryPanel* inventory_list, const std::string& string); static bool category_has_descendents(LLPlacesInventoryPanel* inventory_list); +static void collapse_all_folders(LLFolderView* root_folder); +static void expand_all_folders(LLFolderView* root_folder); +static bool has_expanded_folders(LLFolderView* root_folder); +static bool has_collapsed_folders(LLFolderView* root_folder); /** * Functor counting expanded and collapsed folders in folder view tree to know @@ -110,25 +115,76 @@ void LLCheckFolderState::doFolder(LLFolderViewFolder* folder) } } +// Functor searching and opening a folder specified by UUID +// in a folder view tree. +class LLOpenFolderByID : public LLFolderViewFunctor +{ +public: + LLOpenFolderByID(const LLUUID& folder_id) + : mFolderID(folder_id) + , mIsFolderOpen(false) + {} + virtual ~LLOpenFolderByID() {} + /*virtual*/ void doFolder(LLFolderViewFolder* folder); + /*virtual*/ void doItem(LLFolderViewItem* item) {} + + bool isFolderOpen() { return mIsFolderOpen; } + +private: + bool mIsFolderOpen; + LLUUID mFolderID; +}; + +// virtual +void LLOpenFolderByID::doFolder(LLFolderViewFolder* folder) +{ + if (folder->getListener() && folder->getListener()->getUUID() == mFolderID) + { + if (!folder->isOpen()) + { + folder->setOpen(TRUE); + mIsFolderOpen = true; + } + } +} + /** * Bridge to support knowing when the inventory has changed to update Landmarks tab * ShowFolderState filter setting to show all folders when the filter string is empty and * empty folder message when Landmarks inventory category has no children. + * Ensures that "Landmarks" folder in the Library is open on strart up. */ class LLLandmarksPanelObserver : public LLInventoryObserver { public: - LLLandmarksPanelObserver(LLLandmarksPanel* lp) : mLP(lp) {} + LLLandmarksPanelObserver(LLLandmarksPanel* lp) + : mLP(lp), + mIsLibraryLandmarksOpen(false) + {} virtual ~LLLandmarksPanelObserver() {} /*virtual*/ void changed(U32 mask); private: LLLandmarksPanel* mLP; + bool mIsLibraryLandmarksOpen; }; void LLLandmarksPanelObserver::changed(U32 mask) { mLP->updateShowFolderState(); + + LLPlacesInventoryPanel* library = mLP->getLibraryInventoryPanel(); + if (!mIsLibraryLandmarksOpen && library) + { + // Search for "Landmarks" folder in the Library and open it once on start up. See EXT-4827. + const LLUUID &landmarks_cat = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK, false, true); + if (landmarks_cat.notNull()) + { + LLOpenFolderByID opener(landmarks_cat); + library->getRootFolder()->applyFunctorRecursively(opener); + mIsLibraryLandmarksOpen = opener.isFolderOpen(); + } + } } LLLandmarksPanel::LLLandmarksPanel() @@ -170,8 +226,6 @@ BOOL LLLandmarksPanel::postBuild() initLandmarksInventoryPanel(); initMyInventoryPanel(); initLibraryInventoryPanel(); - getChild<LLAccordionCtrlTab>("tab_favorites")->setDisplayChildren(true); - getChild<LLAccordionCtrlTab>("tab_landmarks")->setDisplayChildren(true); return TRUE; } @@ -304,6 +358,29 @@ void LLLandmarksPanel::updateShowFolderState() ); } +void LLLandmarksPanel::setItemSelected(const LLUUID& obj_id, BOOL take_keyboard_focus) +{ + if (selectItemInAccordionTab(mFavoritesInventoryPanel, "tab_favorites", obj_id, take_keyboard_focus)) + { + return; + } + + if (selectItemInAccordionTab(mLandmarksInventoryPanel, "tab_landmarks", obj_id, take_keyboard_focus)) + { + return; + } + + if (selectItemInAccordionTab(mMyInventoryPanel, "tab_inventory", obj_id, take_keyboard_focus)) + { + return; + } + + if (selectItemInAccordionTab(mLibraryInventoryPanel, "tab_library", obj_id, take_keyboard_focus)) + { + return; + } +} + ////////////////////////////////////////////////////////////////////////// // PROTECTED METHODS ////////////////////////////////////////////////////////////////////////// @@ -349,6 +426,36 @@ LLFolderViewItem* LLLandmarksPanel::getCurSelectedItem() const return mCurrentSelectedList ? mCurrentSelectedList->getRootFolder()->getCurSelectedItem() : NULL; } +LLFolderViewItem* LLLandmarksPanel::selectItemInAccordionTab(LLPlacesInventoryPanel* inventory_list, + const std::string& tab_name, + const LLUUID& obj_id, + BOOL take_keyboard_focus) const +{ + if (!inventory_list) + return NULL; + + LLFolderView* folder_view = inventory_list->getRootFolder(); + + LLFolderViewItem* item = folder_view->getItemByID(obj_id); + if (!item) + return NULL; + + LLAccordionCtrlTab* tab = getChild<LLAccordionCtrlTab>(tab_name); + if (!tab->isExpanded()) + { + tab->changeOpenClose(false); + } + + folder_view->setSelection(item, FALSE, take_keyboard_focus); + + LLAccordionCtrl* accordion = getChild<LLAccordionCtrl>("landmarks_accordion"); + LLRect screen_rc; + localRectToScreen(item->getRect(), &screen_rc); + accordion->notifyParent(LLSD().with("scrollToShowRect", screen_rc.getValue())); + + return item; +} + void LLLandmarksPanel::updateSortOrder(LLInventoryPanel* panel, bool byDate) { if(!panel) return; @@ -408,7 +515,7 @@ void LLLandmarksPanel::initFavoritesInventoryPanel() initLandmarksPanel(mFavoritesInventoryPanel); mFavoritesInventoryPanel->getFilter()->setEmptyLookupMessage("FavoritesNoMatchingItems"); - initAccordion("tab_favorites", mFavoritesInventoryPanel); + initAccordion("tab_favorites", mFavoritesInventoryPanel, true); } void LLLandmarksPanel::initLandmarksInventoryPanel() @@ -427,7 +534,7 @@ void LLLandmarksPanel::initLandmarksInventoryPanel() // subscribe to have auto-rename functionality while creating New Folder mLandmarksInventoryPanel->setSelectCallback(boost::bind(&LLInventoryPanel::onSelectionChange, mLandmarksInventoryPanel, _1, _2)); - initAccordion("tab_landmarks", mLandmarksInventoryPanel); + initAccordion("tab_landmarks", mLandmarksInventoryPanel, true); } void LLLandmarksPanel::initMyInventoryPanel() @@ -436,7 +543,7 @@ void LLLandmarksPanel::initMyInventoryPanel() initLandmarksPanel(mMyInventoryPanel); - initAccordion("tab_inventory", mMyInventoryPanel); + initAccordion("tab_inventory", mMyInventoryPanel, false); } void LLLandmarksPanel::initLibraryInventoryPanel() @@ -445,7 +552,15 @@ void LLLandmarksPanel::initLibraryInventoryPanel() initLandmarksPanel(mLibraryInventoryPanel); - initAccordion("tab_library", mLibraryInventoryPanel); + // We want to fetch only "Landmarks" category from the library. + const LLUUID &landmarks_cat = gInventory.findCategoryUUIDForType(LLFolderType::FT_LANDMARK, false, true); + if (landmarks_cat.notNull()) + { + gInventory.startBackgroundFetch(landmarks_cat); + } + + // Expanding "Library" tab for new users who have no landmarks in "My Inventory". + initAccordion("tab_library", mLibraryInventoryPanel, true); } void LLLandmarksPanel::initLandmarksPanel(LLPlacesInventoryPanel* inventory_list) @@ -466,20 +581,21 @@ void LLLandmarksPanel::initLandmarksPanel(LLPlacesInventoryPanel* inventory_list { root_folder->setupMenuHandle(LLInventoryType::IT_CATEGORY, mGearFolderMenu->getHandle()); root_folder->setupMenuHandle(LLInventoryType::IT_LANDMARK, mGearLandmarkMenu->getHandle()); + + root_folder->setParentLandmarksPanel(this); } - root_folder->setParentLandmarksPanel(this); inventory_list->saveFolderState(); } -void LLLandmarksPanel::initAccordion(const std::string& accordion_tab_name, LLPlacesInventoryPanel* inventory_list) +void LLLandmarksPanel::initAccordion(const std::string& accordion_tab_name, LLPlacesInventoryPanel* inventory_list, bool expand_tab) { LLAccordionCtrlTab* accordion_tab = getChild<LLAccordionCtrlTab>(accordion_tab_name); mAccordionTabs.push_back(accordion_tab); accordion_tab->setDropDownStateChangedCallback( boost::bind(&LLLandmarksPanel::onAccordionExpandedCollapsed, this, _2, inventory_list)); - accordion_tab->setDisplayChildren(false); + accordion_tab->setDisplayChildren(expand_tab); } void LLLandmarksPanel::onAccordionExpandedCollapsed(const LLSD& param, LLPlacesInventoryPanel* inventory_list) @@ -505,6 +621,10 @@ void LLLandmarksPanel::onAccordionExpandedCollapsed(const LLSD& param, LLPlacesI { gInventory.startBackgroundFetch(cat_id); } + + // Apply filter substring because it might have been changed + // while accordion was closed. See EXT-3714. + filter_list(inventory_list, sFilterSubString); } } @@ -567,31 +687,29 @@ void LLLandmarksPanel::updateListCommands() // keep Options & Add Landmark buttons always enabled mListCommands->childSetEnabled(ADD_FOLDER_BUTTON_NAME, add_folder_enabled); mListCommands->childSetEnabled(TRASH_BUTTON_NAME, trash_enabled); - mListCommands->childSetEnabled(OPTIONS_BUTTON_NAME,getCurSelectedItem() != NULL); } void LLLandmarksPanel::onActionsButtonClick() { + LLMenuGL* menu = mGearFolderMenu; + LLFolderViewItem* cur_item = NULL; if(mCurrentSelectedList) - cur_item = mCurrentSelectedList->getRootFolder()->getCurSelectedItem(); - - if(!cur_item) - return; - - LLFolderViewEventListener* listenerp = cur_item->getListener(); - - LLMenuGL* menu =NULL; - if (listenerp->getInventoryType() == LLInventoryType::IT_LANDMARK) { - menu = mGearLandmarkMenu; - } - else if (listenerp->getInventoryType() == LLInventoryType::IT_CATEGORY) - { - mGearFolderMenu->getChild<LLMenuItemCallGL>("expand")->setVisible(!cur_item->isOpen()); - mGearFolderMenu->getChild<LLMenuItemCallGL>("collapse")->setVisible(cur_item->isOpen()); - menu = mGearFolderMenu; + cur_item = mCurrentSelectedList->getRootFolder()->getCurSelectedItem(); + if(!cur_item) + return; + + LLFolderViewEventListener* listenerp = cur_item->getListener(); + if(!listenerp) + return; + + if (listenerp->getInventoryType() == LLInventoryType::IT_LANDMARK) + { + menu = mGearLandmarkMenu; + } } + showActionMenu(menu,OPTIONS_BUTTON_NAME); } @@ -628,8 +746,7 @@ void LLLandmarksPanel::onAddAction(const LLSD& userdata) const LLViewerInventoryItem* landmark = LLLandmarkActions::findLandmarkForAgentPos(); if(landmark) { - LLSideTray::getInstance()->showPanel("panel_places", - LLSD().with("type", "landmark").with("id",landmark->getUUID())); + LLNotificationsUtil::add("LandmarkAlreadyExists"); } else { @@ -690,26 +807,33 @@ void LLLandmarksPanel::onClipboardAction(const LLSD& userdata) const void LLLandmarksPanel::onFoldingAction(const LLSD& userdata) { - if(!mCurrentSelectedList) return; - - LLFolderView* root_folder = mCurrentSelectedList->getRootFolder(); std::string command_name = userdata.asString(); if ("expand_all" == command_name) { - root_folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN); - root_folder->arrangeAll(); + expand_all_folders(mFavoritesInventoryPanel->getRootFolder()); + expand_all_folders(mLandmarksInventoryPanel->getRootFolder()); + expand_all_folders(mMyInventoryPanel->getRootFolder()); + expand_all_folders(mLibraryInventoryPanel->getRootFolder()); + + for (accordion_tabs_t::const_iterator iter = mAccordionTabs.begin(); iter != mAccordionTabs.end(); ++iter) + { + (*iter)->changeOpenClose(false); + } } else if ("collapse_all" == command_name) { - root_folder->setOpenArrangeRecursively(FALSE, LLFolderViewFolder::RECURSE_DOWN); + collapse_all_folders(mFavoritesInventoryPanel->getRootFolder()); + collapse_all_folders(mLandmarksInventoryPanel->getRootFolder()); + collapse_all_folders(mMyInventoryPanel->getRootFolder()); + collapse_all_folders(mLibraryInventoryPanel->getRootFolder()); - // The top level folder is invisible, it must be open to - // display its sub-folders. - root_folder->openTopLevelFolders(); - root_folder->arrangeAll(); + for (accordion_tabs_t::const_iterator iter = mAccordionTabs.begin(); iter != mAccordionTabs.end(); ++iter) + { + (*iter)->changeOpenClose(true); + } } - else if ( "sort_by_date" == command_name) + else if ("sort_by_date" == command_name) { mSortByDate = !mSortByDate; updateSortOrder(mLandmarksInventoryPanel, mSortByDate); @@ -718,7 +842,10 @@ void LLLandmarksPanel::onFoldingAction(const LLSD& userdata) } else { - root_folder->doToSelected(&gInventory, userdata); + if(mCurrentSelectedList) + { + mCurrentSelectedList->getRootFolder()->doToSelected(&gInventory, userdata); + } } } @@ -738,53 +865,87 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const { std::string command_name = userdata.asString(); - - LLPlacesFolderView* rootFolderView = mCurrentSelectedList ? + LLPlacesFolderView* root_folder_view = mCurrentSelectedList ? static_cast<LLPlacesFolderView*>(mCurrentSelectedList->getRootFolder()) : NULL; - if (NULL == rootFolderView) return false; - - // disable some commands for multi-selection. EXT-1757 - if (rootFolderView->getSelectedCount() > 1) + if ("collapse_all" == command_name) { - if ( "teleport" == command_name - || "more_info" == command_name - || "rename" == command_name - || "show_on_map" == command_name - || "copy_slurl" == command_name - ) + bool disable_collapse_all = !has_expanded_folders(mFavoritesInventoryPanel->getRootFolder()) + && !has_expanded_folders(mLandmarksInventoryPanel->getRootFolder()) + && !has_expanded_folders(mMyInventoryPanel->getRootFolder()) + && !has_expanded_folders(mLibraryInventoryPanel->getRootFolder()); + if (disable_collapse_all) { - return false; + for (accordion_tabs_t::const_iterator iter = mAccordionTabs.begin(); iter != mAccordionTabs.end(); ++iter) + { + if ((*iter)->isExpanded()) + { + disable_collapse_all = false; + break; + } + } } + return !disable_collapse_all; } + else if ("expand_all" == command_name) + { + bool disable_expand_all = !has_collapsed_folders(mFavoritesInventoryPanel->getRootFolder()) + && !has_collapsed_folders(mLandmarksInventoryPanel->getRootFolder()) + && !has_collapsed_folders(mMyInventoryPanel->getRootFolder()) + && !has_collapsed_folders(mLibraryInventoryPanel->getRootFolder()); + if (disable_expand_all) + { + for (accordion_tabs_t::const_iterator iter = mAccordionTabs.begin(); iter != mAccordionTabs.end(); ++iter) + { + if (!(*iter)->isExpanded()) + { + disable_expand_all = false; + break; + } + } + } - // disable some commands for Favorites accordion. EXT-1758 - if (mCurrentSelectedList == mFavoritesInventoryPanel) + return !disable_expand_all; + } + else if ("sort_by_date" == command_name) { - if ( "expand_all" == command_name - || "collapse_all" == command_name - || "sort_by_date" == command_name - ) + // disable "sort_by_date" for Favorites accordion because + // it has its own items order. EXT-1758 + if (mCurrentSelectedList == mFavoritesInventoryPanel) + { return false; + } } - - LLCheckFolderState checker; - rootFolderView->applyFunctorRecursively(checker); - - // We assume that the root folder is always expanded so we enable "collapse_all" - // command when we have at least one more expanded folder. - if (checker.getExpandedFolders() < 2 && "collapse_all" == command_name) + else if (!root_folder_view) { return false; } - - if (checker.getCollapsedFolders() < 1 && "expand_all" == command_name) + else if ( "paste" == command_name + || "rename" == command_name + || "cut" == command_name + || "copy" == command_name + || "delete" == command_name + || "collapse" == command_name + || "expand" == command_name + ) { - return false; + return canSelectedBeModified(command_name); } - - if("category" == command_name) + else if ( "teleport" == command_name + || "more_info" == command_name + || "rename" == command_name + || "show_on_map" == command_name + || "copy_slurl" == command_name + ) + { + // disable some commands for multi-selection. EXT-1757 + if (root_folder_view->getSelectedCount() > 1) + { + return false; + } + } + else if("category" == command_name) { // we can add folder only in Landmarks Accordion if (mCurrentSelectedList == mLandmarksInventoryPanel) @@ -794,10 +955,6 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const } else return false; } - else if("paste" == command_name || "rename" == command_name || "cut" == command_name || "delete" == command_name) - { - return canSelectedBeModified(command_name); - } else if("create_pick" == command_name) { std::set<LLUUID> selection; @@ -855,6 +1012,9 @@ bool LLLandmarksPanel::canSelectedBeModified(const std::string& command_name) co { // validate own rules first + LLFolderViewItem* selected = getCurSelectedItem(); + if (!selected) return false; + // nothing can be modified in Library if (mLibraryInventoryPanel == mCurrentSelectedList) return false; @@ -881,24 +1041,41 @@ bool LLLandmarksPanel::canSelectedBeModified(const std::string& command_name) co } // then ask LLFolderView permissions + + LLFolderView* root_folder = mCurrentSelectedList->getRootFolder(); + + if ("copy" == command_name) + { + return root_folder->canCopy(); + } + else if ("collapse" == command_name) + { + return selected->isOpen(); + } + else if ("expand" == command_name) + { + return !selected->isOpen(); + } + if (can_be_modified) { - LLFolderViewItem* selected = getCurSelectedItem(); + LLFolderViewEventListener* listenerp = selected->getListener(); + if ("cut" == command_name) { - can_be_modified = mCurrentSelectedList->getRootFolder()->canCut(); + can_be_modified = root_folder->canCut(); } else if ("rename" == command_name) { - can_be_modified = selected ? selected->getListener()->isItemRenameable() : false; + can_be_modified = listenerp ? listenerp->isItemRenameable() : false; } else if ("delete" == command_name) { - can_be_modified = selected ? selected->getListener()->isItemRemovable(): false; + can_be_modified = listenerp ? listenerp->isItemRemovable() : false; } else if("paste" == command_name) { - return mCurrentSelectedList->getRootFolder()->canPaste(); + can_be_modified = root_folder->canPaste(); } else { @@ -1082,4 +1259,54 @@ static bool category_has_descendents(LLPlacesInventoryPanel* inventory_list) return false; } + +static void collapse_all_folders(LLFolderView* root_folder) +{ + if (!root_folder) + return; + + root_folder->setOpenArrangeRecursively(FALSE, LLFolderViewFolder::RECURSE_DOWN); + + // The top level folder is invisible, it must be open to + // display its sub-folders. + root_folder->openTopLevelFolders(); + root_folder->arrangeAll(); +} + +static void expand_all_folders(LLFolderView* root_folder) +{ + if (!root_folder) + return; + + root_folder->setOpenArrangeRecursively(TRUE, LLFolderViewFolder::RECURSE_DOWN); + root_folder->arrangeAll(); +} + +static bool has_expanded_folders(LLFolderView* root_folder) +{ + LLCheckFolderState checker; + root_folder->applyFunctorRecursively(checker); + + // We assume that the root folder is always expanded so we enable "collapse_all" + // command when we have at least one more expanded folder. + if (checker.getExpandedFolders() < 2) + { + return false; + } + + return true; +} + +static bool has_collapsed_folders(LLFolderView* root_folder) +{ + LLCheckFolderState checker; + root_folder->applyFunctorRecursively(checker); + + if (checker.getCollapsedFolders() < 1) + { + return false; + } + + return true; +} // EOF diff --git a/indra/newview/llpanellandmarks.h b/indra/newview/llpanellandmarks.h index 569739237d..f1ce1a18b5 100644 --- a/indra/newview/llpanellandmarks.h +++ b/indra/newview/llpanellandmarks.h @@ -73,6 +73,13 @@ public: */ void updateShowFolderState(); + /** + * Selects item with "obj_id" in one of accordion tabs. + */ + void setItemSelected(const LLUUID& obj_id, BOOL take_keyboard_focus); + + LLPlacesInventoryPanel* getLibraryInventoryPanel() { return mLibraryInventoryPanel; } + protected: /** * @return true - if current selected panel is not null and selected item is a landmark @@ -81,6 +88,17 @@ protected: bool isReceivedFolderSelected() const; void doActionOnCurSelectedLandmark(LLLandmarkList::loaded_callback_t cb); LLFolderViewItem* getCurSelectedItem() const; + + /** + * Selects item with "obj_id" in "inventory_list" and scrolls accordion + * scrollbar to show the item. + * Returns pointer to the item if it is found in "inventory_list", otherwise NULL. + */ + LLFolderViewItem* selectItemInAccordionTab(LLPlacesInventoryPanel* inventory_list, + const std::string& tab_name, + const LLUUID& obj_id, + BOOL take_keyboard_focus) const; + void updateSortOrder(LLInventoryPanel* panel, bool byDate); //LLRemoteParcelInfoObserver interface @@ -94,7 +112,7 @@ private: void initMyInventoryPanel(); void initLibraryInventoryPanel(); void initLandmarksPanel(LLPlacesInventoryPanel* inventory_list); - void initAccordion(const std::string& accordion_tab_name, LLPlacesInventoryPanel* inventory_list); + void initAccordion(const std::string& accordion_tab_name, LLPlacesInventoryPanel* inventory_list, bool expand_tab); void onAccordionExpandedCollapsed(const LLSD& param, LLPlacesInventoryPanel* inventory_list); void deselectOtherThan(const LLPlacesInventoryPanel* inventory_list); @@ -137,14 +155,14 @@ private: void doCreatePick(LLLandmark* landmark); private: - LLPlacesInventoryPanel* mFavoritesInventoryPanel; - LLPlacesInventoryPanel* mLandmarksInventoryPanel; - LLPlacesInventoryPanel* mMyInventoryPanel; - LLPlacesInventoryPanel* mLibraryInventoryPanel; + LLPlacesInventoryPanel* mFavoritesInventoryPanel; + LLPlacesInventoryPanel* mLandmarksInventoryPanel; + LLPlacesInventoryPanel* mMyInventoryPanel; + LLPlacesInventoryPanel* mLibraryInventoryPanel; LLMenuGL* mGearLandmarkMenu; LLMenuGL* mGearFolderMenu; LLMenuGL* mMenuAdd; - LLPlacesInventoryPanel* mCurrentSelectedList; + LLPlacesInventoryPanel* mCurrentSelectedList; LLInventoryObserver* mInventoryObserver; LLPanel* mListCommands; diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index a9c7b908ed..7bd03167fd 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -62,7 +62,6 @@ #include "llviewermenu.h" // for handle_preferences() #include "llviewernetwork.h" #include "llviewerwindow.h" // to link into child list -#include "llurlsimstring.h" #include "lluictrlfactory.h" #include "llhttpclient.h" #include "llweb.h" @@ -214,8 +213,8 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect, } #if !USE_VIEWER_AUTH - childSetPrevalidate("first_name_edit", LLLineEditor::prevalidateASCIIPrintableNoSpace); - childSetPrevalidate("last_name_edit", LLLineEditor::prevalidateASCIIPrintableNoSpace); + childSetPrevalidate("first_name_edit", LLTextValidate::validateASCIIPrintableNoSpace); + childSetPrevalidate("last_name_edit", LLTextValidate::validateASCIIPrintableNoSpace); childSetCommitCallback("password_edit", mungePassword, this); getChild<LLLineEditor>("password_edit")->setKeystrokeCallback(onPassKey, this); @@ -229,8 +228,13 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect, LLComboBox* combo = getChild<LLComboBox>("start_location_combo"); - LLURLSimString::setString(gSavedSettings.getString("LoginLocation")); std::string sim_string = LLURLSimString::sInstance.mSimString; + if(sim_string.empty()) + { + LLURLSimString::setString(gSavedSettings.getString("LoginLocation")); + sim_string = LLURLSimString::sInstance.mSimString; + } + if (!sim_string.empty()) { // Replace "<Type region name>" with this region name @@ -672,8 +676,7 @@ void LLPanelLogin::refreshLocation( bool force_visible ) { // Don't show on first run after install // Otherwise ShowStartLocation defaults to true. - show_start = gSavedSettings.getBOOL("ShowStartLocation") - && !gSavedSettings.getBOOL("FirstRunThisInstall"); + show_start = gSavedSettings.getBOOL("ShowStartLocation"); } sInstance->childSetVisible("start_location_combo", show_start); @@ -686,6 +689,23 @@ void LLPanelLogin::refreshLocation( bool force_visible ) } // static +void LLPanelLogin::updateLocationUI() +{ + if (!sInstance) return; + + 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() { if (sInstance) @@ -826,8 +846,7 @@ void LLPanelLogin::loadLoginPage() { oStr << "&auto_login=TRUE"; } - if (gSavedSettings.getBOOL("ShowStartLocation") - && !gSavedSettings.getBOOL("FirstRunThisInstall")) + if (gSavedSettings.getBOOL("ShowStartLocation")) { oStr << "&show_start_location=TRUE"; } diff --git a/indra/newview/llpanellogin.h b/indra/newview/llpanellogin.h index 97350ce5c7..1fdc3a9361 100644 --- a/indra/newview/llpanellogin.h +++ b/indra/newview/llpanellogin.h @@ -71,6 +71,7 @@ public: 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); @@ -102,7 +103,7 @@ private: static void onPassKey(LLLineEditor* caller, void* user_data); static void onSelectServer(LLUICtrl*, void*); static void onServerComboLostFocus(LLFocusableElement*); - + private: LLPointer<LLUIImage> mLogoImage; boost::scoped_ptr<LLPanelLoginListener> mListener; diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index e74a39c85c..50cfc7d177 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -51,6 +51,8 @@ #include "llviewermenu.h" #include "llviewertexturelist.h" +const std::string FILTERS_FILENAME("filters.xml"); + static LLRegisterPanelClassWrapper<LLPanelMainInventory> t_inventory("panel_main_inventory"); void on_file_loaded_for_save(BOOL success, @@ -160,7 +162,7 @@ BOOL LLPanelMainInventory::postBuild() // Now load the stored settings from disk, if available. std::ostringstream filterSaveName; - filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "filters.xml"); + filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, FILTERS_FILENAME); llinfos << "LLPanelMainInventory::init: reading from " << filterSaveName << llendl; llifstream file(filterSaveName.str()); LLSD savedFilterState; @@ -230,7 +232,7 @@ LLPanelMainInventory::~LLPanelMainInventory( void ) } std::ostringstream filterSaveName; - filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "filters.xml"); + filterSaveName << gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, FILTERS_FILENAME); llofstream filtersFile(filterSaveName.str()); if(!LLSDSerialize::toPrettyXML(filterRoot, filtersFile)) { @@ -418,10 +420,8 @@ void LLPanelMainInventory::onFilterEdit(const std::string& search_string ) gInventory.startBackgroundFetch(); - std::string uppercase_search_string = search_string; - LLStringUtil::toUpper(uppercase_search_string); - mFilterSubString = uppercase_search_string; - if (mActivePanel->getFilterSubString().empty() && uppercase_search_string.empty()) + mFilterSubString = search_string; + if (mActivePanel->getFilterSubString().empty() && mFilterSubString.empty()) { // current filter and new filter empty, do nothing return; @@ -435,7 +435,7 @@ void LLPanelMainInventory::onFilterEdit(const std::string& search_string ) } // set new filter string - mActivePanel->setFilterSubString(mFilterSubString); + setFilterSubString(mFilterSubString); } @@ -1001,7 +1001,10 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata) } const LLUUID item_id = current_item->getListener()->getUUID(); LLViewerInventoryItem *item = gInventory.getItem(item_id); - item->regenerateLink(); + if (item) + { + item->regenerateLink(); + } active_panel->setSelection(item_id, TAKE_FOCUS_NO); } if (command_name == "find_original") @@ -1069,7 +1072,11 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata) { const LLUUID &item_id = (*iter); LLFolderViewItem *item = folder->getItemByID(item_id); - can_delete &= item->getListener()->isItemRemovable(); + const LLFolderViewEventListener *listener = item->getListener(); + llassert(listener); + if (!listener) return FALSE; + can_delete &= listener->isItemRemovable(); + can_delete &= !listener->isItemInTrash(); } return can_delete; } diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp index ece93125b3..3504cbd1ef 100644 --- a/indra/newview/llpanelme.cpp +++ b/indra/newview/llpanelme.cpp @@ -41,6 +41,7 @@ #include "llsidetray.h" #include "lltabcontainer.h" #include "lltexturectrl.h" +#include "llviewercontrol.h" #define PICKER_SECOND_LIFE "2nd_life_pic" #define PICKER_FIRST_LIFE "real_world_pic" @@ -69,6 +70,18 @@ BOOL LLPanelMe::postBuild() void LLPanelMe::onOpen(const LLSD& key) { LLPanelProfile::onOpen(key); + + // Force Edit My Profile if this is the first time when user is opening Me Panel (EXT-5068) + bool opened = gSavedSettings.getBOOL("MePanelOpened"); + // In some cases Side Tray my call onOpen() twice, check getCollapsed() to be sure this + // is the last time onOpen() is called + if( !opened && !LLSideTray::getInstance()->getCollapsed() ) + { + buildEditPanel(); + openPanel(mEditPanel, getAvatarId()); + + gSavedSettings.setBOOL("MePanelOpened", true); + } } bool LLPanelMe::notifyChildren(const LLSD& info) @@ -198,7 +211,9 @@ void LLPanelMyProfileEdit::processProfileProperties(const LLAvatarData* avatar_d { fillCommonData(avatar_data); - fillOnlineStatus(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); diff --git a/indra/newview/llpanelmediasettingsgeneral.cpp b/indra/newview/llpanelmediasettingsgeneral.cpp index f574f55beb..f601a8d51c 100644 --- a/indra/newview/llpanelmediasettingsgeneral.cpp +++ b/indra/newview/llpanelmediasettingsgeneral.cpp @@ -250,18 +250,18 @@ bool LLPanelMediaSettingsGeneral::isMultiple() //////////////////////////////////////////////////////////////////////////////// // static -void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& media_settings ,bool editable) +void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& _media_settings, bool editable) { LLPanelMediaSettingsGeneral *self =(LLPanelMediaSettingsGeneral *)userdata; self->mMediaEditable = editable; + LLSD media_settings = _media_settings; + if ( LLPanelMediaSettingsGeneral::isMultiple() ) { - self->clearValues(self, self->mMediaEditable); - // only show multiple - self->mHomeURL->setText(LLTrans::getString("Multiple Media")); - self->mCurrentURL->setText(LLTrans::getString("Multiple Media")); - return; + // *HACK: "edit" the incoming media_settings + media_settings[LLMediaEntry::CURRENT_URL_KEY] = LLTrans::getString("Multiple Media"); + media_settings[LLMediaEntry::HOME_URL_KEY] = LLTrans::getString("Multiple Media"); } std::string base_key( "" ); @@ -286,7 +286,7 @@ void LLPanelMediaSettingsGeneral::initValues( void* userdata, const LLSD& media_ { LLMediaEntry::WIDTH_PIXELS_KEY, self->mWidthPixels, "LLSpinCtrl" }, { "", NULL , "" } }; - + for( int i = 0; data_set[ i ].key_name.length() > 0; ++i ) { base_key = std::string( data_set[ i ].key_name ); @@ -405,20 +405,21 @@ void LLPanelMediaSettingsGeneral::preApply() //////////////////////////////////////////////////////////////////////////////// // -void LLPanelMediaSettingsGeneral::getValues( LLSD &fill_me_in ) +void LLPanelMediaSettingsGeneral::getValues( LLSD &fill_me_in, bool include_tentative ) { - fill_me_in[LLMediaEntry::AUTO_LOOP_KEY] = (LLSD::Boolean)mAutoLoop->getValue(); - fill_me_in[LLMediaEntry::AUTO_PLAY_KEY] = (LLSD::Boolean)mAutoPlay->getValue(); - fill_me_in[LLMediaEntry::AUTO_SCALE_KEY] = (LLSD::Boolean)mAutoScale->getValue(); - fill_me_in[LLMediaEntry::AUTO_ZOOM_KEY] = (LLSD::Boolean)mAutoZoom->getValue(); + if (include_tentative || !mAutoLoop->getTentative()) fill_me_in[LLMediaEntry::AUTO_LOOP_KEY] = (LLSD::Boolean)mAutoLoop->getValue(); + if (include_tentative || !mAutoPlay->getTentative()) fill_me_in[LLMediaEntry::AUTO_PLAY_KEY] = (LLSD::Boolean)mAutoPlay->getValue(); + if (include_tentative || !mAutoScale->getTentative()) fill_me_in[LLMediaEntry::AUTO_SCALE_KEY] = (LLSD::Boolean)mAutoScale->getValue(); + if (include_tentative || !mAutoZoom->getTentative()) fill_me_in[LLMediaEntry::AUTO_ZOOM_KEY] = (LLSD::Boolean)mAutoZoom->getValue(); //Don't fill in current URL: this is only supposed to get changed via navigate - // fill_me_in[LLMediaEntry::CURRENT_URL_KEY] = mCurrentURL->getValue(); - fill_me_in[LLMediaEntry::HEIGHT_PIXELS_KEY] = (LLSD::Integer)mHeightPixels->getValue(); + // if (include_tentative || !mCurrentURL->getTentative()) fill_me_in[LLMediaEntry::CURRENT_URL_KEY] = mCurrentURL->getValue(); + if (include_tentative || !mHeightPixels->getTentative()) fill_me_in[LLMediaEntry::HEIGHT_PIXELS_KEY] = (LLSD::Integer)mHeightPixels->getValue(); // Don't fill in the home URL if it is the special "Multiple Media" string! - if (LLTrans::getString("Multiple Media") != mHomeURL->getValue()) - fill_me_in[LLMediaEntry::HOME_URL_KEY] = (LLSD::String)mHomeURL->getValue(); - fill_me_in[LLMediaEntry::FIRST_CLICK_INTERACT_KEY] = (LLSD::Boolean)mFirstClick->getValue(); - fill_me_in[LLMediaEntry::WIDTH_PIXELS_KEY] = (LLSD::Integer)mWidthPixels->getValue(); + if ((include_tentative || !mHomeURL->getTentative()) + && LLTrans::getString("Multiple Media") != mHomeURL->getValue()) + fill_me_in[LLMediaEntry::HOME_URL_KEY] = (LLSD::String)mHomeURL->getValue(); + if (include_tentative || !mFirstClick->getTentative()) fill_me_in[LLMediaEntry::FIRST_CLICK_INTERACT_KEY] = (LLSD::Boolean)mFirstClick->getValue(); + if (include_tentative || !mWidthPixels->getTentative()) fill_me_in[LLMediaEntry::WIDTH_PIXELS_KEY] = (LLSD::Integer)mWidthPixels->getValue(); } //////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llpanelmediasettingsgeneral.h b/indra/newview/llpanelmediasettingsgeneral.h index 5f90321362..a3f0990f35 100644 --- a/indra/newview/llpanelmediasettingsgeneral.h +++ b/indra/newview/llpanelmediasettingsgeneral.h @@ -54,7 +54,8 @@ public: // Hook that the floater calls before applying changes from the panel void preApply(); // Function that asks the panel to fill in values associated with the panel - void getValues(LLSD &fill_me_in); + // 'include_tentative' means fill in tentative values as well, otherwise do not + void getValues(LLSD &fill_me_in, bool include_tentative = true); // Hook that the floater calls after applying changes to the panel void postApply(); diff --git a/indra/newview/llpanelmediasettingspermissions.cpp b/indra/newview/llpanelmediasettingspermissions.cpp index a23aed2e98..e5caaaaffc 100644 --- a/indra/newview/llpanelmediasettingspermissions.cpp +++ b/indra/newview/llpanelmediasettingspermissions.cpp @@ -149,27 +149,6 @@ void LLPanelMediaSettingsPermissions::clearValues( void* userdata, bool editable void LLPanelMediaSettingsPermissions::initValues( void* userdata, const LLSD& media_settings , bool editable) { LLPanelMediaSettingsPermissions *self =(LLPanelMediaSettingsPermissions *)userdata; - - if ( LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo ) - { - if(LLFloaterMediaSettings::getInstance()->mMultipleMedia) - { - self->clearValues(self, editable); - // only show multiple - return; - } - - } - else - { - if(LLFloaterMediaSettings::getInstance()->mMultipleValidMedia) - { - self->clearValues(self, editable); - // only show multiple - return; - } - - } std::string base_key( "" ); std::string tentative_key( "" ); @@ -215,7 +194,29 @@ void LLPanelMediaSettingsPermissions::initValues( void* userdata, const LLSD& me data_set[ i ].ctrl_ptr->setTentative( media_settings[ tentative_key ].asBoolean() ); }; }; - + + // *NOTE: If any of a particular flavor is tentative, we have to disable + // them all because of an architectural issue: namely that we represent + // these as a bit field, and we can't selectively apply only one bit to all selected + // faces if they don't match. Also see the *NOTE below. + if ( self->mPermsOwnerInteract->getTentative() || + self->mPermsGroupInteract->getTentative() || + self->mPermsWorldInteract->getTentative()) + { + self->mPermsOwnerInteract->setEnabled(false); + self->mPermsGroupInteract->setEnabled(false); + self->mPermsWorldInteract->setEnabled(false); + } + if ( self->mPermsOwnerControl->getTentative() || + self->mPermsGroupControl->getTentative() || + self->mPermsWorldControl->getTentative()) + { + self->mPermsOwnerControl->setEnabled(false); + self->mPermsGroupControl->setEnabled(false); + self->mPermsWorldControl->setEnabled(false); + } + + self->childSetEnabled("media_perms_label_owner", editable ); self->childSetText("media_perms_label_owner", LLTrans::getString("Media Perms Owner") ); self->childSetEnabled("media_perms_label_group", editable ); @@ -233,29 +234,47 @@ void LLPanelMediaSettingsPermissions::preApply() //////////////////////////////////////////////////////////////////////////////// // -void LLPanelMediaSettingsPermissions::getValues( LLSD &fill_me_in ) +void LLPanelMediaSettingsPermissions::getValues( LLSD &fill_me_in, bool include_tentative ) { // moved over from the 'General settings' tab - fill_me_in[LLMediaEntry::CONTROLS_KEY] = (LLSD::Integer)mControls->getCurrentIndex(); - - // *NOTE: For some reason, gcc does not like these symbol references in the - // expressions below (inside the static_casts). I have NO idea why :(. - // For some reason, assigning them to const temp vars here fixes the link - // error. Bizarre. - const U8 none = LLMediaEntry::PERM_NONE; - const U8 owner = LLMediaEntry::PERM_OWNER; - const U8 group = LLMediaEntry::PERM_GROUP; - const U8 anyone = LLMediaEntry::PERM_ANYONE; - const LLSD::Integer control = static_cast<LLSD::Integer>( + if (include_tentative || !mControls->getTentative()) fill_me_in[LLMediaEntry::CONTROLS_KEY] = (LLSD::Integer)mControls->getCurrentIndex(); + + // *NOTE: For some reason, gcc does not like these symbol references in the + // expressions below (inside the static_casts). I have NO idea why :(. + // For some reason, assigning them to const temp vars here fixes the link + // error. Bizarre. + const U8 none = LLMediaEntry::PERM_NONE; + const U8 owner = LLMediaEntry::PERM_OWNER; + const U8 group = LLMediaEntry::PERM_GROUP; + const U8 anyone = LLMediaEntry::PERM_ANYONE; + const LLSD::Integer control = static_cast<LLSD::Integer>( (mPermsOwnerControl->getValue() ? owner : none ) | (mPermsGroupControl->getValue() ? group: none ) | (mPermsWorldControl->getValue() ? anyone : none )); - const LLSD::Integer interact = static_cast<LLSD::Integer>( - (mPermsOwnerInteract->getValue() ? owner: none ) | + const LLSD::Integer interact = static_cast<LLSD::Integer>( + (mPermsOwnerInteract->getValue() ? owner: none ) | (mPermsGroupInteract->getValue() ? group : none ) | (mPermsWorldInteract->getValue() ? anyone : none )); - fill_me_in[LLMediaEntry::PERMS_CONTROL_KEY] = control; - fill_me_in[LLMediaEntry::PERMS_INTERACT_KEY] = interact; + + // *TODO: This will fill in the values of all permissions values, even if + // one or more is tentative. This is not quite the user expectation...what + // it should do is only change the bit that was made "untentative", but in + // a multiple-selection situation, this isn't possible given the architecture + // for how settings are applied. + if (include_tentative || + !mPermsOwnerControl->getTentative() || + !mPermsGroupControl->getTentative() || + !mPermsWorldControl->getTentative()) + { + fill_me_in[LLMediaEntry::PERMS_CONTROL_KEY] = control; + } + if (include_tentative || + !mPermsOwnerInteract->getTentative() || + !mPermsGroupInteract->getTentative() || + !mPermsWorldInteract->getTentative()) + { + fill_me_in[LLMediaEntry::PERMS_INTERACT_KEY] = interact; + } } diff --git a/indra/newview/llpanelmediasettingspermissions.h b/indra/newview/llpanelmediasettingspermissions.h index bd0c3b8ab5..858544605c 100644 --- a/indra/newview/llpanelmediasettingspermissions.h +++ b/indra/newview/llpanelmediasettingspermissions.h @@ -57,7 +57,8 @@ public: // Hook that the floater calls before applying changes from the panel void preApply(); // Function that asks the panel to fill in values associated with the panel - void getValues(LLSD &fill_me_in); + // 'include_tentative' means fill in tentative values as well, otherwise do not + void getValues(LLSD &fill_me_in, bool include_tentative = true); // Hook that the floater calls after applying changes to the panel void postApply(); diff --git a/indra/newview/llpanelmediasettingssecurity.cpp b/indra/newview/llpanelmediasettingssecurity.cpp index 81842e3851..1b1346c41a 100644 --- a/indra/newview/llpanelmediasettingssecurity.cpp +++ b/indra/newview/llpanelmediasettingssecurity.cpp @@ -94,27 +94,6 @@ void LLPanelMediaSettingsSecurity::draw() void LLPanelMediaSettingsSecurity::initValues( void* userdata, const LLSD& media_settings , bool editable) { LLPanelMediaSettingsSecurity *self =(LLPanelMediaSettingsSecurity *)userdata; - - if ( LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo ) - { - if(LLFloaterMediaSettings::getInstance()->mMultipleMedia) - { - self->clearValues(self, editable); - // only show multiple - return; - } - - } - else - { - if(LLFloaterMediaSettings::getInstance()->mMultipleValidMedia) - { - self->clearValues(self, editable); - // only show multiple - return; - } - - } std::string base_key( "" ); std::string tentative_key( "" ); @@ -136,6 +115,8 @@ void LLPanelMediaSettingsSecurity::initValues( void* userdata, const LLSD& media base_key = std::string( data_set[ i ].key_name ); tentative_key = base_key + std::string( LLPanelContents::TENTATIVE_SUFFIX ); + bool enabled_overridden = false; + // TODO: CP - I bet there is a better way to do this using Boost if ( media_settings[ base_key ].isDefined() ) { @@ -150,20 +131,31 @@ void LLPanelMediaSettingsSecurity::initValues( void* userdata, const LLSD& media // get control LLScrollListCtrl* list = static_cast< LLScrollListCtrl* >( data_set[ i ].ctrl_ptr ); list->deleteAllItems(); - + // points to list of white list URLs LLSD url_list = media_settings[ base_key ]; - - // iterate over them and add to scroll list - LLSD::array_iterator iter = url_list.beginArray(); - while( iter != url_list.endArray() ) + + // better be the whitelist + llassert(data_set[ i ].ctrl_ptr == self->mWhiteListList); + + // If tentative, don't add entries + if (media_settings[ tentative_key ].asBoolean()) { - std::string entry = *iter; - self->addWhiteListEntry( entry ); - ++iter; - }; + self->mWhiteListList->setEnabled(false); + enabled_overridden = true; + } + else { + // iterate over them and add to scroll list + LLSD::array_iterator iter = url_list.beginArray(); + while( iter != url_list.endArray() ) + { + std::string entry = *iter; + self->addWhiteListEntry( entry ); + ++iter; + } + } }; - data_set[ i ].ctrl_ptr->setEnabled(editable); + if ( ! enabled_overridden) data_set[ i ].ctrl_ptr->setEnabled(editable); data_set[ i ].ctrl_ptr->setTentative( media_settings[ tentative_key ].asBoolean() ); }; }; @@ -192,25 +184,29 @@ void LLPanelMediaSettingsSecurity::preApply() //////////////////////////////////////////////////////////////////////////////// // -void LLPanelMediaSettingsSecurity::getValues( LLSD &fill_me_in ) +void LLPanelMediaSettingsSecurity::getValues( LLSD &fill_me_in, bool include_tentative ) { - fill_me_in[LLMediaEntry::WHITELIST_ENABLE_KEY] = (LLSD::Boolean)mEnableWhiteList->getValue(); - - // iterate over white list and extract items - std::vector< LLScrollListItem* > whitelist_items = mWhiteListList->getAllData(); - std::vector< LLScrollListItem* >::iterator iter = whitelist_items.begin(); - - // *NOTE: need actually set the key to be an emptyArray(), or the merge - // we do with this LLSD will think there's nothing to change. - fill_me_in[LLMediaEntry::WHITELIST_KEY] = LLSD::emptyArray(); - while( iter != whitelist_items.end() ) - { - LLScrollListCell* cell = (*iter)->getColumn( ENTRY_COLUMN ); - std::string whitelist_url = cell->getValue().asString(); - - fill_me_in[ LLMediaEntry::WHITELIST_KEY ].append( whitelist_url ); - ++iter; - }; + if (include_tentative || !mEnableWhiteList->getTentative()) + fill_me_in[LLMediaEntry::WHITELIST_ENABLE_KEY] = (LLSD::Boolean)mEnableWhiteList->getValue(); + + if (include_tentative || !mWhiteListList->getTentative()) + { + // iterate over white list and extract items + std::vector< LLScrollListItem* > whitelist_items = mWhiteListList->getAllData(); + std::vector< LLScrollListItem* >::iterator iter = whitelist_items.begin(); + + // *NOTE: need actually set the key to be an emptyArray(), or the merge + // we do with this LLSD will think there's nothing to change. + fill_me_in[LLMediaEntry::WHITELIST_KEY] = LLSD::emptyArray(); + while( iter != whitelist_items.end() ) + { + LLScrollListCell* cell = (*iter)->getColumn( ENTRY_COLUMN ); + std::string whitelist_url = cell->getValue().asString(); + + fill_me_in[ LLMediaEntry::WHITELIST_KEY ].append( whitelist_url ); + ++iter; + }; + } } //////////////////////////////////////////////////////////////////////////////// @@ -247,6 +243,10 @@ const std::string LLPanelMediaSettingsSecurity::makeValidUrl( const std::string& // white list list box widget and build a list to test against. bool LLPanelMediaSettingsSecurity::urlPassesWhiteList( const std::string& test_url ) { + // If the whitlelist list is tentative, it means we have multiple settings. + // In that case, we have no choice but to return true + if ( mWhiteListList->getTentative() ) return true; + // the checkUrlAgainstWhitelist(..) function works on a vector // of strings for the white list entries - in this panel, the white list // is stored in the widgets themselves so we need to build something compatible. @@ -330,7 +330,7 @@ void LLPanelMediaSettingsSecurity::addWhiteListEntry( const std::string& entry ) // always add in the entry itself row[ "columns" ][ ENTRY_COLUMN ][ "type" ] = "text"; row[ "columns" ][ ENTRY_COLUMN ][ "value" ] = entry; - + // add to the white list scroll box mWhiteListList->addElement( row ); }; diff --git a/indra/newview/llpanelmediasettingssecurity.h b/indra/newview/llpanelmediasettingssecurity.h index 66ccb23f46..94f2fdc89c 100644 --- a/indra/newview/llpanelmediasettingssecurity.h +++ b/indra/newview/llpanelmediasettingssecurity.h @@ -53,11 +53,12 @@ public: // Hook that the floater calls before applying changes from the panel void preApply(); // Function that asks the panel to fill in values associated with the panel - void getValues(LLSD &fill_me_in); + // 'include_tentative' means fill in tentative values as well, otherwise do not + void getValues(LLSD &fill_me_in, bool include_tentative = true); // Hook that the floater calls after applying changes to the panel void postApply(); - static void initValues( void* userdata, const LLSD& media_settings,bool editable ); + static void initValues( void* userdata, const LLSD& media_settings, bool editable); static void clearValues( void* userdata, bool editable); void addWhiteListEntry( const std::string& url ); void setParent( LLFloaterMediaSettings* parent ); diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp new file mode 100644 index 0000000000..a73c25a979 --- /dev/null +++ b/indra/newview/llpanelnearbymedia.cpp @@ -0,0 +1,1235 @@ +/** + * @file llpanelnearbymedia.cpp + * @brief Management interface for muting and controlling nearby media + * + * $LicenseInfo:firstyear=2005&license=viewergpl$ + * + * Copyright (c) 2005-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 "llviewerprecompiledheaders.h" + +#include "llpanelnearbymedia.h" + +#include "llaudioengine.h" +#include "llcheckboxctrl.h" +#include "llcombobox.h" +#include "llresizebar.h" +#include "llresizehandle.h" +#include "llscrolllistctrl.h" +#include "llscrolllistitem.h" +#include "llscrolllistcell.h" +#include "llslider.h" +#include "llsliderctrl.h" +#include "llagent.h" +#include "llagentui.h" +#include "llbutton.h" +#include "lltextbox.h" +#include "llviewermedia.h" +#include "llviewerparcelmedia.h" +#include "llviewerregion.h" +#include "llviewermediafocus.h" +#include "llviewerparcelmgr.h" +#include "llparcel.h" +#include "llpluginclassmedia.h" +#include "llvovolume.h" +#include "llstatusbar.h" +#include "llsdutil.h" + +#include "llfloaterreg.h" +#include "llfloaterpreference.h" // for the gear icon +#include "lltabcontainer.h" + +#include <stringize.h> + +extern LLControlGroup gSavedSettings; + +static const LLUUID PARCEL_MEDIA_LIST_ITEM_UUID = LLUUID("CAB5920F-E484-4233-8621-384CF373A321"); +static const LLUUID PARCEL_AUDIO_LIST_ITEM_UUID = LLUUID("DF4B020D-8A24-4B95-AB5D-CA970D694822"); + +// +// LLPanelNearByMedia +// + +LLPanelNearByMedia::LLPanelNearByMedia() +: mMediaList(NULL), + mEnableAllCtrl(NULL), + mAllMediaDisabled(false), + mDebugInfoVisible(false), + mParcelMediaItem(NULL), + mParcelAudioItem(NULL) +{ + mParcelAudioAutoStart = gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING) && + gSavedSettings.getBOOL("MediaTentativeAutoPlay"); + + mCommitCallbackRegistrar.add("MediaListCtrl.EnableAll", boost::bind(&LLPanelNearByMedia::onClickEnableAll, this)); + mCommitCallbackRegistrar.add("MediaListCtrl.DisableAll", boost::bind(&LLPanelNearByMedia::onClickDisableAll, this)); + mCommitCallbackRegistrar.add("MediaListCtrl.GoMediaPrefs", boost::bind(&LLPanelNearByMedia::onAdvancedButtonClick, this)); + mCommitCallbackRegistrar.add("MediaListCtrl.MoreLess", boost::bind(&LLPanelNearByMedia::onMoreLess, this)); + mCommitCallbackRegistrar.add("SelectedMediaCtrl.Stop", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaStop, this)); + mCommitCallbackRegistrar.add("SelectedMediaCtrl.Play", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaPlay, this)); + mCommitCallbackRegistrar.add("SelectedMediaCtrl.Pause", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaPause, this)); + mCommitCallbackRegistrar.add("SelectedMediaCtrl.Mute", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaMute, this)); + mCommitCallbackRegistrar.add("SelectedMediaCtrl.Volume", boost::bind(&LLPanelNearByMedia::onCommitSelectedMediaVolume, this)); + mCommitCallbackRegistrar.add("SelectedMediaCtrl.Zoom", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaZoom, this)); + mCommitCallbackRegistrar.add("SelectedMediaCtrl.Unzoom", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaUnzoom, this)); + + LLUICtrlFactory::instance().buildPanel(this, "panel_nearby_media.xml"); +} + +LLPanelNearByMedia::~LLPanelNearByMedia() +{ +} + +BOOL LLPanelNearByMedia::postBuild() +{ + LLPanel::postBuild(); + + const S32 RESIZE_BAR_THICKNESS = 6; + LLResizeBar::Params p; + p.rect = LLRect(0, RESIZE_BAR_THICKNESS, getRect().getWidth(), 0); + p.name = "resizebar_bottom"; + p.min_size = getRect().getHeight(); + p.side = LLResizeBar::BOTTOM; + p.resizing_view = this; + addChild( LLUICtrlFactory::create<LLResizeBar>(p) ); + + p.rect = LLRect( 0, getRect().getHeight(), RESIZE_BAR_THICKNESS, 0); + p.name = "resizebar_left"; + p.min_size = getRect().getWidth(); + p.side = LLResizeBar::LEFT; + addChild( LLUICtrlFactory::create<LLResizeBar>(p) ); + + LLResizeHandle::Params resize_handle_p; + resize_handle_p.rect = LLRect( 0, RESIZE_HANDLE_HEIGHT, RESIZE_HANDLE_WIDTH, 0 ); + resize_handle_p.mouse_opaque(false); + resize_handle_p.min_width(getRect().getWidth()); + resize_handle_p.min_height(getRect().getHeight()); + resize_handle_p.corner(LLResizeHandle::LEFT_BOTTOM); + addChild(LLUICtrlFactory::create<LLResizeHandle>(resize_handle_p)); + + mNearbyMediaPanel = getChild<LLUICtrl>("nearby_media_panel"); + mMediaList = getChild<LLScrollListCtrl>("media_list"); + mEnableAllCtrl = getChild<LLUICtrl>("all_nearby_media_enable_btn"); + mDisableAllCtrl = getChild<LLUICtrl>("all_nearby_media_disable_btn"); + mShowCtrl = getChild<LLComboBox>("show_combo"); + + // Dynamic (selection-dependent) controls + mStopCtrl = getChild<LLUICtrl>("stop"); + mPlayCtrl = getChild<LLUICtrl>("play"); + mPauseCtrl = getChild<LLUICtrl>("pause"); + mMuteCtrl = getChild<LLUICtrl>("mute"); + mVolumeSliderCtrl = getChild<LLUICtrl>("volume_slider_ctrl"); + mZoomCtrl = getChild<LLUICtrl>("zoom"); + mUnzoomCtrl = getChild<LLUICtrl>("unzoom"); + mVolumeSlider = getChild<LLSlider>("volume_slider"); + mMuteBtn = getChild<LLButton>("mute_btn"); + + mEmptyNameString = getString("empty_item_text"); + mParcelMediaName = getString("parcel_media_name"); + mParcelAudioName = getString("parcel_audio_name"); + mPlayingString = getString("playing_suffix"); + + mMediaList->setDoubleClickCallback(onZoomMedia, this); + mMediaList->sortByColumnIndex(PROXIMITY_COLUMN, TRUE); + mMediaList->sortByColumnIndex(VISIBILITY_COLUMN, FALSE); + + refreshList(); + updateControls(); + updateColumns(); + + LLView* minimized_controls = getChildView("minimized_controls"); + mMoreRect = getRect(); + mLessRect = getRect(); + mLessRect.mBottom = minimized_controls->getRect().mBottom; + + getChild<LLUICtrl>("more_less_btn")->setValue(false); + onMoreLess(); + + return TRUE; +} + +/*virtual*/ +void LLPanelNearByMedia::onMouseEnter(S32 x, S32 y, MASK mask) +{ + mHoverTimer.stop(); + LLPanel::onMouseEnter(x,y,mask); +} + + +/*virtual*/ +void LLPanelNearByMedia::onMouseLeave(S32 x, S32 y, MASK mask) +{ + mHoverTimer.start(); + LLPanel::onMouseLeave(x,y,mask); +} + +/*virtual*/ +void LLPanelNearByMedia::handleVisibilityChange ( BOOL new_visibility ) +{ + if (new_visibility) + { + mHoverTimer.start(); // timer will be stopped when mouse hovers over panel + //gFocusMgr.setTopCtrl(this); + } + else + { + mHoverTimer.stop(); + //if (gFocusMgr.getTopCtrl() == this) + //{ + // gFocusMgr.setTopCtrl(NULL); + //} + } +} + +/*virtual*/ +void LLPanelNearByMedia::onTopLost () +{ + //LLUICtrl* new_top = gFocusMgr.getTopCtrl(); + //if (!new_top || !new_top->hasAncestor(this)) + //{ + // setVisible(FALSE); + //} +} + +/*virtual*/ +void LLPanelNearByMedia::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + LLPanel::reshape(width, height, called_from_parent); + + LLButton* more_less_btn = getChild<LLButton>("more_less_btn"); + if (more_less_btn->getValue().asBoolean()) + { + mMoreRect = getRect(); + } + +} + +const F32 AUTO_CLOSE_FADE_TIME_START= 4.0f; +const F32 AUTO_CLOSE_FADE_TIME_END = 5.0f; + +/*virtual*/ +void LLPanelNearByMedia::draw() +{ + //LLUICtrl* new_top = gFocusMgr.getTopCtrl(); + //if (new_top != this) + //{ + // // reassert top ctrl + // gFocusMgr.setTopCtrl(this); + //} + + // keep bottom of panel on screen + LLRect screen_rect = calcScreenRect(); + if (screen_rect.mBottom < 0) + { + LLRect new_rect = getRect(); + new_rect.mBottom += 0 - screen_rect.mBottom; + setShape(new_rect); + } + + refreshList(); + updateControls(); + + F32 alpha = mHoverTimer.getStarted() + ? clamp_rescale(mHoverTimer.getElapsedTimeF32(), AUTO_CLOSE_FADE_TIME_START, AUTO_CLOSE_FADE_TIME_END, 1.f, 0.f) + : 1.0f; + LLViewDrawContext context(alpha); + + LLPanel::draw(); + + if (alpha == 0.f) + { + setVisible(false); + } +} + +/*virtual*/ +BOOL LLPanelNearByMedia::handleHover(S32 x, S32 y, MASK mask) +{ + LLPanel::handleHover(x, y, mask); + + // If we are hovering over this panel, make sure to clear any hovered media + // ID. Note that the more general solution would be to clear this ID when + // the mouse leaves the in-scene view, but that proved to be problematic. + // See EXT-5517 + LLViewerMediaFocus::getInstance()->clearHover(); + + // Always handle + return true; +} + +bool LLPanelNearByMedia::getParcelAudioAutoStart() +{ + return mParcelAudioAutoStart; +} + +LLScrollListItem* LLPanelNearByMedia::addListItem(const LLUUID &id) +{ + if (NULL == mMediaList) return NULL; + + // Just set up the columns -- the values will be filled in by updateListItem(). + + LLSD row; + row["id"] = id; + + LLSD &columns = row["columns"]; + + columns[CHECKBOX_COLUMN]["column"] = "media_checkbox_ctrl"; + columns[CHECKBOX_COLUMN]["type"] = "checkbox"; + //if(mDebugInfoVisible) + { + columns[PROXIMITY_COLUMN]["column"] = "media_proximity"; + columns[PROXIMITY_COLUMN]["value"] = ""; + columns[VISIBILITY_COLUMN]["column"] = "media_visibility"; + columns[VISIBILITY_COLUMN]["value"] = ""; + columns[CLASS_COLUMN]["column"] = "media_class"; + columns[CLASS_COLUMN]["type"] = "text"; + columns[CLASS_COLUMN]["value"] = ""; + } + columns[NAME_COLUMN]["column"] = "media_name"; + columns[NAME_COLUMN]["type"] = "text"; + columns[NAME_COLUMN]["value"] = ""; + //if(mDebugInfoVisible) + { + columns[DEBUG_COLUMN]["column"] = "media_debug"; + columns[DEBUG_COLUMN]["type"] = "text"; + columns[DEBUG_COLUMN]["value"] = ""; + } + + LLScrollListItem* new_item = mMediaList->addElement(row); + if (NULL != new_item) + { + LLScrollListCheck* scroll_list_check = dynamic_cast<LLScrollListCheck*>(new_item->getColumn(CHECKBOX_COLUMN)); + if (scroll_list_check) + { + LLCheckBoxCtrl *check = scroll_list_check->getCheckBox(); + check->setCommitCallback(boost::bind(&LLPanelNearByMedia::onCheckItem, this, _1, id)); + } + } + return new_item; +} + +void LLPanelNearByMedia::updateListItem(LLScrollListItem* item, LLViewerMediaImpl* impl) +{ + std::string item_name; + std::string item_tooltip; + std::string debug_str; + LLPanelNearByMedia::MediaClass media_class = MEDIA_CLASS_ALL; + + getNameAndUrlHelper(impl, item_name, item_tooltip, mEmptyNameString); + // Focused + if (impl->hasFocus()) + { + media_class = MEDIA_CLASS_FOCUSED; + } + // Is attached to another avatar? + else if (impl->isAttachedToAnotherAvatar()) + { + media_class = MEDIA_CLASS_ON_OTHERS; + } + // Outside agent parcel + else if (!impl->isInAgentParcel()) + { + media_class = MEDIA_CLASS_OUTSIDE_PARCEL; + } + else { + // inside parcel + media_class = MEDIA_CLASS_WITHIN_PARCEL; + } + + if(mDebugInfoVisible) + { + debug_str += llformat("%g/", (float)impl->getInterest()); + + // proximity distance is actually distance squared -- display it as straight distance. + debug_str += llformat("%g/", fsqrtf(impl->getProximityDistance())); + + // s += llformat("%g/", (float)impl->getCPUUsage()); + // s += llformat("%g/", (float)impl->getApproximateTextureInterest()); + debug_str += llformat("%g/", (float)(NULL == impl->getSomeObject()) ? 0.0 : impl->getSomeObject()->getPixelArea()); + + debug_str += LLPluginClassMedia::priorityToString(impl->getPriority()); + + if(impl->hasMedia()) + { + debug_str += '@'; + } + else if(impl->isPlayable()) + { + debug_str += '+'; + } + else if(impl->isForcedUnloaded()) + { + debug_str += '!'; + } + } + + updateListItem(item, + item_name, + item_tooltip, + impl->getProximity(), + impl->isMediaDisabled(), + impl->hasMedia(), + impl->isMediaTimeBased() && impl->isMediaPlaying(), + media_class, + debug_str); +} + +void LLPanelNearByMedia::updateListItem(LLScrollListItem* item, + const std::string &item_name, + const std::string &item_tooltip, + S32 proximity, + bool is_disabled, + bool has_media, + bool is_time_based_and_playing, + LLPanelNearByMedia::MediaClass media_class, + const std::string &debug_str) +{ + LLScrollListCell* cell = item->getColumn(PROXIMITY_COLUMN); + if(cell) + { + // since we are forced to sort by text, encode sort order as string + std::string proximity_string = STRINGIZE(proximity); + std::string old_proximity_string = cell->getValue().asString(); + if(proximity_string != old_proximity_string) + { + cell->setValue(proximity_string); + mMediaList->setNeedsSort(true); + } + } + + cell = item->getColumn(CHECKBOX_COLUMN); + if(cell) + { + cell->setValue(!is_disabled); + } + + cell = item->getColumn(VISIBILITY_COLUMN); + if(cell) + { + S32 old_visibility = cell->getValue(); + // *HACK ALERT: force ordering of Media before Audio before the rest of the list + S32 new_visibility = + item->getUUID() == PARCEL_MEDIA_LIST_ITEM_UUID ? 3 + : item->getUUID() == PARCEL_AUDIO_LIST_ITEM_UUID ? 2 + : (has_media) ? 1 + : ((is_disabled) ? 0 + : -1); + cell->setValue(STRINGIZE(new_visibility)); + if (new_visibility != old_visibility) + { + mMediaList->setNeedsSort(true); + } + } + + cell = item->getColumn(NAME_COLUMN); + if(cell) + { + std::string name = item_name; + std::string old_name = cell->getValue().asString(); + if (has_media) + { + name += " " + mPlayingString; + } + if (name != old_name) + { + cell->setValue(name); + } + cell->setToolTip(item_tooltip); + + // *TODO: Make these font styles/colors configurable via XUI + U8 font_style = LLFontGL::NORMAL; + LLColor4 cell_color = LLColor4::white; + + // Only colorize by class in debug + if (mDebugInfoVisible) + { + switch (media_class) { + case MEDIA_CLASS_FOCUSED: + cell_color = LLColor4::yellow; + break; + case MEDIA_CLASS_ON_OTHERS: + cell_color = LLColor4::red; + break; + case MEDIA_CLASS_OUTSIDE_PARCEL: + cell_color = LLColor4::orange; + break; + case MEDIA_CLASS_WITHIN_PARCEL: + default: + break; + } + } + if (is_disabled) + { + if (mDebugInfoVisible) + { + font_style |= LLFontGL::ITALIC; + cell_color = LLColor4::black; + } + else { + // Dim it if it is disabled + cell_color.setAlpha(0.25); + } + } + // Dim it if it isn't "showing" + else if (!has_media) + { + cell_color.setAlpha(0.25); + } + // Bold it if it is time-based media and it is playing + else if (is_time_based_and_playing) + { + if (mDebugInfoVisible) font_style |= LLFontGL::BOLD; + } + cell->setColor(cell_color); + LLScrollListText *text_cell = dynamic_cast<LLScrollListText*> (cell); + if (text_cell) + { + text_cell->setFontStyle(font_style); + } + } + + cell = item->getColumn(CLASS_COLUMN); + if(cell) + { + // TODO: clean this up! + cell->setValue(STRINGIZE(media_class)); + } + + if(mDebugInfoVisible) + { + cell = item->getColumn(DEBUG_COLUMN); + if(cell) + { + cell->setValue(debug_str); + } + } +} + +void LLPanelNearByMedia::removeListItem(const LLUUID &id) +{ + if (NULL == mMediaList) return; + + mMediaList->deleteSingleItem(mMediaList->getItemIndex(id)); +} + +void LLPanelNearByMedia::refreshParcelItems() +{ + // + // First add/remove the "fake" items Parcel Media and Parcel Audio. + // These items will have special UUIDs + // PARCEL_MEDIA_LIST_ITEM_UUID + // PARCEL_AUDIO_LIST_ITEM_UUID + // + // Get the filter choice. + const LLSD &choice_llsd = mShowCtrl->getSelectedValue(); + MediaClass choice = (MediaClass)choice_llsd.asInteger(); + // Only show "special parcel items" if "All" or "Within" filter + // (and if media is "enabled") + bool should_include = (choice == MEDIA_CLASS_ALL || choice == MEDIA_CLASS_WITHIN_PARCEL); + + // First Parcel Media: add or remove it as necessary + if (gSavedSettings.getBOOL("AudioStreamingMedia") &&should_include && LLViewerMedia::hasParcelMedia()) + { + // Yes, there is parcel media. + if (NULL == mParcelMediaItem) + { + mParcelMediaItem = addListItem(PARCEL_MEDIA_LIST_ITEM_UUID); + mMediaList->setNeedsSort(true); + } + } + else { + if (NULL != mParcelMediaItem) { + removeListItem(PARCEL_MEDIA_LIST_ITEM_UUID); + mParcelMediaItem = NULL; + mMediaList->setNeedsSort(true); + } + } + + // ... then update it + if (NULL != mParcelMediaItem) + { + std::string name, url, tooltip; + if (!LLViewerParcelMgr::getInstance()->getAgentParcel()->getObscureMedia()) + { + getNameAndUrlHelper(LLViewerParcelMedia::getParcelMedia(), name, url, ""); + if (name.empty() || name == url) + { + tooltip = url; + } + else { + tooltip = name + " : " + url; + } + } + LLViewerMediaImpl *impl = LLViewerParcelMedia::getParcelMedia(); + updateListItem(mParcelMediaItem, + mParcelMediaName, + tooltip, + -2, // Proximity closer than anything else, before Parcel Audio + impl == NULL || impl->isMediaDisabled(), + impl != NULL && !LLViewerParcelMedia::getURL().empty(), + impl != NULL && impl->isMediaTimeBased() && impl->isMediaPlaying(), + MEDIA_CLASS_ALL, + "parcel media"); + } + + // Next Parcel Audio: add or remove it as necessary (don't show if disabled in prefs) + if (should_include && LLViewerMedia::hasParcelAudio() && gSavedSettings.getBOOL("AudioStreamingMusic")) + { + // Yes, there is parcel audio. + if (NULL == mParcelAudioItem) + { + mParcelAudioItem = addListItem(PARCEL_AUDIO_LIST_ITEM_UUID); + mMediaList->setNeedsSort(true); + } + } + else { + if (NULL != mParcelAudioItem) { + removeListItem(PARCEL_AUDIO_LIST_ITEM_UUID); + mParcelAudioItem = NULL; + mMediaList->setNeedsSort(true); + } + } + + // ... then update it + if (NULL != mParcelAudioItem) + { + bool is_playing = LLViewerMedia::isParcelAudioPlaying(); + + std::string url; + if (!LLViewerParcelMgr::getInstance()->getAgentParcel()->getObscureMusic()) + { + url = LLViewerMedia::getParcelAudioURL(); + } + updateListItem(mParcelAudioItem, + mParcelAudioName, + url, + -1, // Proximity after Parcel Media, but closer than anything else + (!is_playing), + is_playing, + is_playing, + MEDIA_CLASS_ALL, + "parcel audio"); + } +} + +void LLPanelNearByMedia::refreshList() +{ + bool all_items_deleted = false; + + if(!mMediaList) + { + // None of this makes any sense if the media list isn't there. + return; + } + + // Check whether the debug column has been shown/hidden. + bool debug_info_visible = gSavedSettings.getBOOL("MediaPerformanceManagerDebug"); + if(debug_info_visible != mDebugInfoVisible) + { + mDebugInfoVisible = debug_info_visible; + + // Clear all items so the list gets regenerated. + mMediaList->deleteAllItems(); + mParcelAudioItem = NULL; + mParcelMediaItem = NULL; + all_items_deleted = true; + + updateColumns(); + } + + refreshParcelItems(); + + // Get the canonical list from LLViewerMedia + LLViewerMedia::impl_list impls = LLViewerMedia::getPriorityList(); + LLViewerMedia::impl_list::iterator priority_iter; + + U32 enabled_count = 0; + U32 disabled_count = 0; + + // iterate over the impl list, creating rows as necessary. + for(priority_iter = impls.begin(); priority_iter != impls.end(); priority_iter++) + { + LLViewerMediaImpl *impl = *priority_iter; + + // If we just emptied out the list, every flag needs to be reset. + if(all_items_deleted) + { + impl->setInNearbyMediaList(false); + } + + if (!impl->isParcelMedia()) + { + LLUUID media_id = impl->getMediaTextureID(); + S32 proximity = impl->getProximity(); + // This is expensive (i.e. a linear search) -- don't use it here. We now use mInNearbyMediaList instead. + //S32 index = mMediaList->getItemIndex(media_id); + if (proximity < 0 || !shouldShow(impl)) + { + if (impl->getInNearbyMediaList()) + { + // There's a row for this impl -- remove it. + removeListItem(media_id); + impl->setInNearbyMediaList(false); + } + } + else + { + if (!impl->getInNearbyMediaList()) + { + // We don't have a row for this impl -- add one. + addListItem(media_id); + impl->setInNearbyMediaList(true); + } + } + // Update counts + if (impl->isMediaDisabled()) + { + disabled_count++; + } + else { + enabled_count++; + } + } + } + mDisableAllCtrl->setEnabled((gSavedSettings.getBOOL("AudioStreamingMusic") || + gSavedSettings.getBOOL("AudioStreamingMedia")) && + (LLViewerMedia::isAnyMediaShowing() || + LLViewerMedia::isParcelMediaPlaying() || + LLViewerMedia::isParcelAudioPlaying())); + + mEnableAllCtrl->setEnabled( (gSavedSettings.getBOOL("AudioStreamingMusic") || + gSavedSettings.getBOOL("AudioStreamingMedia")) && + (disabled_count > 0 || + // parcel media (if we have it, and it isn't playing, enable "start") + (LLViewerMedia::hasParcelMedia() && ! LLViewerMedia::isParcelMediaPlaying()) || + // parcel audio (if we have it, and it isn't playing, enable "start") + (LLViewerMedia::hasParcelAudio() && ! LLViewerMedia::isParcelAudioPlaying()))); + + // Iterate over the rows in the control, updating ones whose impl exists, and deleting ones whose impl has gone away. + std::vector<LLScrollListItem*> items = mMediaList->getAllData(); + + for (std::vector<LLScrollListItem*>::iterator item_it = items.begin(); + item_it != items.end(); + ++item_it) + { + LLScrollListItem* item = (*item_it); + LLUUID row_id = item->getUUID(); + + if (row_id != PARCEL_MEDIA_LIST_ITEM_UUID && + row_id != PARCEL_AUDIO_LIST_ITEM_UUID) + { + LLViewerMediaImpl* impl = LLViewerMedia::getMediaImplFromTextureID(row_id); + if(impl) + { + updateListItem(item, impl); + } + else + { + // This item's impl has been deleted -- remove the row. + // Removing the row won't throw off our iteration, since we have a local copy of the array. + // We just need to make sure we don't access this item after the delete. + removeListItem(row_id); + } + } + } + + // Set the selection to whatever media impl the media focus/hover is on. + // This is an experiment, and can be removed by ifdefing out these 4 lines. + LLUUID media_target = LLViewerMediaFocus::getInstance()->getControlsMediaID(); + if(media_target.notNull()) + { + mMediaList->selectByID(media_target); + } +} + +void LLPanelNearByMedia::updateColumns() +{ + if (!mDebugInfoVisible) + { + if (mMediaList->getColumn(CHECKBOX_COLUMN)) mMediaList->getColumn(VISIBILITY_COLUMN)->setWidth(-1); + if (mMediaList->getColumn(VISIBILITY_COLUMN)) mMediaList->getColumn(VISIBILITY_COLUMN)->setWidth(-1); + if (mMediaList->getColumn(PROXIMITY_COLUMN)) mMediaList->getColumn(PROXIMITY_COLUMN)->setWidth(-1); + if (mMediaList->getColumn(CLASS_COLUMN)) mMediaList->getColumn(CLASS_COLUMN)->setWidth(-1); + if (mMediaList->getColumn(DEBUG_COLUMN)) mMediaList->getColumn(DEBUG_COLUMN)->setWidth(-1); + } + else { + if (mMediaList->getColumn(CHECKBOX_COLUMN)) mMediaList->getColumn(VISIBILITY_COLUMN)->setWidth(20); + if (mMediaList->getColumn(VISIBILITY_COLUMN)) mMediaList->getColumn(VISIBILITY_COLUMN)->setWidth(20); + if (mMediaList->getColumn(PROXIMITY_COLUMN)) mMediaList->getColumn(PROXIMITY_COLUMN)->setWidth(30); + if (mMediaList->getColumn(CLASS_COLUMN)) mMediaList->getColumn(CLASS_COLUMN)->setWidth(20); + if (mMediaList->getColumn(DEBUG_COLUMN)) mMediaList->getColumn(DEBUG_COLUMN)->setWidth(200); + } +} + +void LLPanelNearByMedia::onClickEnableAll() +{ + LLViewerMedia::setAllMediaEnabled(true); +} + +void LLPanelNearByMedia::onClickDisableAll() +{ + LLViewerMedia::setAllMediaEnabled(false); +} + +void LLPanelNearByMedia::onClickEnableParcelMedia() +{ + if ( ! LLViewerMedia::isParcelMediaPlaying() ) + { + LLViewerParcelMedia::play(LLViewerParcelMgr::getInstance()->getAgentParcel()); + } +} + +void LLPanelNearByMedia::onClickDisableParcelMedia() +{ + // This actually unloads the impl, as opposed to "stop"ping the media + LLViewerParcelMedia::stop(); +} + +void LLPanelNearByMedia::onCheckItem(LLUICtrl* ctrl, const LLUUID &row_id) +{ + LLCheckBoxCtrl* check = static_cast<LLCheckBoxCtrl*>(ctrl); + + setDisabled(row_id, ! check->getValue()); +} + +bool LLPanelNearByMedia::setDisabled(const LLUUID &row_id, bool disabled) +{ + if (row_id == PARCEL_AUDIO_LIST_ITEM_UUID) + { + if (disabled) onClickParcelAudioStop(); + else onClickParcelAudioStart(); + return true; + } + else if (row_id == PARCEL_MEDIA_LIST_ITEM_UUID) + { + if (disabled) onClickDisableParcelMedia(); + else onClickEnableParcelMedia(); + return true; + } + else { + LLViewerMediaImpl* impl = LLViewerMedia::getMediaImplFromTextureID(row_id); + if(impl) + { + impl->setDisabled(disabled, true); + return true; + } + } + return false; +} + +//static +void LLPanelNearByMedia::onZoomMedia(void* user_data) +{ + LLPanelNearByMedia* panelp = (LLPanelNearByMedia*)user_data; + LLUUID media_id = panelp->mMediaList->getValue().asUUID(); + + LLViewerMediaFocus::getInstance()->focusZoomOnMedia(media_id); +} + +void LLPanelNearByMedia::onClickParcelMediaPlay() +{ + LLViewerParcelMedia::play(LLViewerParcelMgr::getInstance()->getAgentParcel()); +} + +void LLPanelNearByMedia::onClickParcelMediaStop() +{ + if (LLViewerParcelMedia::getParcelMedia()) + { + // This stops the media playing, as opposed to unloading it like + // LLViewerParcelMedia::stop() does + LLViewerParcelMedia::getParcelMedia()->stop(); + } +} + +void LLPanelNearByMedia::onClickParcelMediaPause() +{ + LLViewerParcelMedia::pause(); +} + +void LLPanelNearByMedia::onClickParcelAudioStart() +{ + // User *explicitly* started the internet stream, so keep the stream + // playing and updated as they cross to other parcels etc. + mParcelAudioAutoStart = true; + + if (!gAudiop) + return; + + gAudiop->startInternetStream(LLViewerMedia::getParcelAudioURL()); +} + +void LLPanelNearByMedia::onClickParcelAudioPlay() +{ + // User *explicitly* started the internet stream, so keep the stream + // playing and updated as they cross to other parcels etc. + mParcelAudioAutoStart = true; + + if (!gAudiop) + return; + + if (LLAudioEngine::AUDIO_PAUSED == gAudiop->isInternetStreamPlaying()) + { + // 'false' means unpause + gAudiop->pauseInternetStream(false); + } + else { + gAudiop->startInternetStream(LLViewerMedia::getParcelAudioURL()); + } +} + +void LLPanelNearByMedia::onClickParcelAudioStop() +{ + // User *explicitly* stopped the internet stream, so don't + // re-start audio when i.e. they move to another parcel, until + // they explicitly start it again. + mParcelAudioAutoStart = false; + + if (!gAudiop) + return; + + gAudiop->stopInternetStream(); +} + +void LLPanelNearByMedia::onClickParcelAudioPause() +{ + if (!gAudiop) + return; + + // 'true' means pause + gAudiop->pauseInternetStream(true); +} + +bool LLPanelNearByMedia::shouldShow(LLViewerMediaImpl* impl) +{ + const LLSD &choice_llsd = mShowCtrl->getSelectedValue(); + MediaClass choice = (MediaClass)choice_llsd.asInteger(); + + switch (choice) + { + case MEDIA_CLASS_ALL: + return true; + break; + case MEDIA_CLASS_WITHIN_PARCEL: + return impl->isInAgentParcel(); + break; + case MEDIA_CLASS_OUTSIDE_PARCEL: + return ! impl->isInAgentParcel(); + break; + case MEDIA_CLASS_ON_OTHERS: + return impl->isAttachedToAnotherAvatar(); + break; + default: + break; + } + return true; +} + +void LLPanelNearByMedia::onAdvancedButtonClick() +{ + // bring up the prefs floater + LLFloaterPreference* prefsfloater = dynamic_cast<LLFloaterPreference*>(LLFloaterReg::showInstance("preferences")); + if (prefsfloater) + { + // grab the 'audio' panel from the preferences floater and + // bring it the front! + LLTabContainer* tabcontainer = prefsfloater->getChild<LLTabContainer>("pref core"); + LLPanel* audiopanel = prefsfloater->getChild<LLPanel>("audio"); + if (tabcontainer && audiopanel) + { + tabcontainer->selectTabPanel(audiopanel); + } + } +} + +void LLPanelNearByMedia::onMoreLess() +{ + bool is_more = getChild<LLUICtrl>("more_less_btn")->getValue(); + mNearbyMediaPanel->setVisible(is_more); + + // enable resizing when expanded + getChildView("resizebar_bottom")->setEnabled(is_more); + + LLRect new_rect = is_more ? mMoreRect : mLessRect; + new_rect.translate(getRect().mRight - new_rect.mRight, getRect().mTop - new_rect.mTop); + + setShape(new_rect); +} + +void LLPanelNearByMedia::updateControls() +{ + LLUUID selected_media_id = mMediaList->getValue().asUUID(); + + if (selected_media_id == PARCEL_AUDIO_LIST_ITEM_UUID) + { + if (!LLViewerMedia::hasParcelAudio() || !gSavedSettings.getBOOL("AudioStreamingMusic")) + { + // disable controls if audio streaming music is disabled from preference + showDisabledControls(); + } + else { + showTimeBasedControls(LLViewerMedia::isParcelAudioPlaying(), + false, // include_zoom + false, // is_zoomed + gSavedSettings.getBOOL("MuteMusic"), + gSavedSettings.getF32("AudioLevelMusic") ); + } + } + else if (selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID) + { + if (!LLViewerMedia::hasParcelMedia() || !gSavedSettings.getBOOL("AudioStreamingMedia")) + { + // disable controls if audio streaming media is disabled from preference + showDisabledControls(); + } + else { + LLViewerMediaImpl* impl = LLViewerParcelMedia::getParcelMedia(); + if (NULL == impl) + { + // Just means it hasn't started yet + showBasicControls(false, false, false); + } + else if (impl->isMediaTimeBased()) + { + showTimeBasedControls(impl->isMediaPlaying(), + false, // include_zoom + false, // is_zoomed + impl->getVolume() == 0.0, + impl->getVolume() ); + } + else { + // non-time-based parcel media + showBasicControls(LLViewerMedia::isParcelMediaPlaying(), false, false); + } + } + } + else { + LLViewerMediaImpl* impl = LLViewerMedia::getMediaImplFromTextureID(selected_media_id); + + if (NULL == impl || !gSavedSettings.getBOOL("AudioStreamingMedia")) + { + showDisabledControls(); + } + else { + if (impl->isMediaTimeBased()) + { + showTimeBasedControls(impl->isMediaPlaying(), + ! impl->isParcelMedia(), // include_zoom + LLViewerMediaFocus::getInstance()->isZoomed(), + impl->getVolume() == 0.0, + impl->getVolume()); + } + else { + showBasicControls(!impl->isMediaDisabled(), + ! impl->isParcelMedia(), // include_zoom + LLViewerMediaFocus::getInstance()->isZoomed()); + } + } + } +} + +void LLPanelNearByMedia::showBasicControls(bool playing, bool include_zoom, bool is_zoomed) +{ + mStopCtrl->setVisible(playing); + mPlayCtrl->setVisible(!playing); + mPauseCtrl->setVisible(false); + mMuteCtrl->setVisible(false); + mVolumeSliderCtrl->setVisible(false); + mZoomCtrl->setVisible(include_zoom && !is_zoomed); + mUnzoomCtrl->setVisible(include_zoom && is_zoomed); + mStopCtrl->setEnabled(true); + mZoomCtrl->setEnabled(true); +} + +void LLPanelNearByMedia::showTimeBasedControls(bool playing, bool include_zoom, bool is_zoomed, bool muted, F32 volume) +{ + mStopCtrl->setVisible(true); + mPlayCtrl->setVisible(!playing); + mPauseCtrl->setVisible(playing); + mMuteCtrl->setVisible(true); + mVolumeSliderCtrl->setVisible(true); + mZoomCtrl->setVisible(include_zoom); + mZoomCtrl->setVisible(include_zoom && !is_zoomed); + mUnzoomCtrl->setVisible(include_zoom && is_zoomed); + mStopCtrl->setEnabled(true); + mZoomCtrl->setEnabled(true); + mMuteBtn->setValue(muted); + mVolumeSlider->setValue(volume); +} + +void LLPanelNearByMedia::showDisabledControls() +{ + mStopCtrl->setVisible(true); + mPlayCtrl->setVisible(false); + mPauseCtrl->setVisible(false); + mMuteCtrl->setVisible(false); + mVolumeSliderCtrl->setVisible(false); + mZoomCtrl->setVisible(true); + mUnzoomCtrl->setVisible(false); + mStopCtrl->setEnabled(false); + mZoomCtrl->setEnabled(false); +} + +void LLPanelNearByMedia::onClickSelectedMediaStop() +{ + setDisabled(mMediaList->getValue().asUUID(), true); +} + +void LLPanelNearByMedia::onClickSelectedMediaPlay() +{ + LLUUID selected_media_id = mMediaList->getValue().asUUID(); + + // First enable it + setDisabled(selected_media_id, false); + + // Special code to make play "unpause" if time-based and playing + if (selected_media_id != PARCEL_AUDIO_LIST_ITEM_UUID) + { + LLViewerMediaImpl *impl = (selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID) ? + ((LLViewerMediaImpl*)LLViewerParcelMedia::getParcelMedia()) : LLViewerMedia::getMediaImplFromTextureID(selected_media_id); + if (NULL != impl) + { + if (impl->isMediaTimeBased() && impl->isMediaPaused()) + { + // Aha! It's really time-based media that's paused, so unpause + impl->play(); + return; + } + else if (impl->isParcelMedia()) + { + LLViewerParcelMedia::play(LLViewerParcelMgr::getInstance()->getAgentParcel()); + } + } + } +} + +void LLPanelNearByMedia::onClickSelectedMediaPause() +{ + LLUUID selected_media_id = mMediaList->getValue().asUUID(); + if (selected_media_id == PARCEL_AUDIO_LIST_ITEM_UUID) + { + onClickParcelAudioPause(); + } + else if (selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID) + { + onClickParcelMediaPause(); + } + else { + LLViewerMediaImpl* impl = LLViewerMedia::getMediaImplFromTextureID(selected_media_id); + if (NULL != impl && impl->isMediaTimeBased() && impl->isMediaPlaying()) + { + impl->pause(); + } + } +} + +void LLPanelNearByMedia::onClickSelectedMediaMute() +{ + LLUUID selected_media_id = mMediaList->getValue().asUUID(); + if (selected_media_id == PARCEL_AUDIO_LIST_ITEM_UUID) + { + gSavedSettings.setBOOL("MuteMusic", mMuteBtn->getValue()); + } + else { + LLViewerMediaImpl* impl = (selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID) ? + ((LLViewerMediaImpl*)LLViewerParcelMedia::getParcelMedia()) : LLViewerMedia::getMediaImplFromTextureID(selected_media_id); + if (NULL != impl && impl->isMediaTimeBased()) + { + F32 volume = impl->getVolume(); + if(volume > 0.0) + { + impl->setVolume(0.0); + } + else if (mVolumeSlider->getValueF32() == 0.0) + { + impl->setVolume(1.0); + mVolumeSlider->setValue(1.0); + } + else + { + impl->setVolume(mVolumeSlider->getValueF32()); + } + } + } +} + +void LLPanelNearByMedia::onCommitSelectedMediaVolume() +{ + LLUUID selected_media_id = mMediaList->getValue().asUUID(); + if (selected_media_id == PARCEL_AUDIO_LIST_ITEM_UUID) + { + F32 vol = mVolumeSlider->getValueF32(); + gSavedSettings.setF32("AudioLevelMusic", vol); + } + else { + LLViewerMediaImpl* impl = (selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID) ? + ((LLViewerMediaImpl*)LLViewerParcelMedia::getParcelMedia()) : LLViewerMedia::getMediaImplFromTextureID(selected_media_id); + if (NULL != impl && impl->isMediaTimeBased()) + { + impl->setVolume(mVolumeSlider->getValueF32()); + } + } +} + +void LLPanelNearByMedia::onClickSelectedMediaZoom() +{ + LLUUID selected_media_id = mMediaList->getValue().asUUID(); + if (selected_media_id == PARCEL_AUDIO_LIST_ITEM_UUID || selected_media_id == PARCEL_MEDIA_LIST_ITEM_UUID) + return; + LLViewerMediaFocus::getInstance()->focusZoomOnMedia(selected_media_id); +} + +void LLPanelNearByMedia::onClickSelectedMediaUnzoom() +{ + LLViewerMediaFocus::getInstance()->unZoom(); +} + + +// static +void LLPanelNearByMedia::getNameAndUrlHelper(LLViewerMediaImpl* impl, std::string& name, std::string & url, const std::string &defaultName) +{ + if (NULL == impl) return; + + name = impl->getName(); + url = impl->getCurrentMediaURL(); // This is the URL the media impl actually has loaded + if (url.empty()) + { + url = impl->getMediaEntryURL(); // This is the current URL from the media data + } + if (url.empty()) + { + url = impl->getHomeURL(); // This is the home URL from the media data + } + if (name.empty()) + { + name = url; + } + if (name.empty()) + { + name = defaultName; + } +} + diff --git a/indra/newview/llpanelnearbymedia.h b/indra/newview/llpanelnearbymedia.h new file mode 100644 index 0000000000..4f864519f5 --- /dev/null +++ b/indra/newview/llpanelnearbymedia.h @@ -0,0 +1,185 @@ +/** + * @file llpanelnearbymedia.h + * @brief Management interface for muting and controlling nearby media + * + * $LicenseInfo:firstyear=2005&license=viewergpl$ + * + * Copyright (c) 2005-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_LLPANELNEARBYMEDIA_H +#define LL_LLPANELNEARBYMEDIA_H + +#include "llpanel.h" + +class LLPanelNearbyMedia; +class LLButton; +class LLScrollListCtrl; +class LLSlider; +class LLSliderCtrl; +class LLCheckBoxCtrl; +class LLTextBox; +class LLComboBox; +class LLViewerMediaImpl; + +class LLPanelNearByMedia : public LLPanel +{ +public: + + /*virtual*/ BOOL postBuild(); + /*virtual*/ void draw(); + /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask); + /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); + /*virtual*/ void handleVisibilityChange ( BOOL new_visibility ); + /*virtual*/ void onTopLost (); + /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent); + /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask); + + // this is part of the nearby media *dialog* so we can track whether + // the user *implicitly* wants audio on or off via their *explicit* + // interaction with our buttons. + bool getParcelAudioAutoStart(); + + LLPanelNearByMedia(); + virtual ~LLPanelNearByMedia(); + +private: + + enum ColumnIndex { + CHECKBOX_COLUMN = 0, + PROXIMITY_COLUMN = 1, + VISIBILITY_COLUMN = 2, + CLASS_COLUMN = 3, + NAME_COLUMN = 4, + DEBUG_COLUMN = 5 + }; + + // Media "class" enumeration + enum MediaClass { + MEDIA_CLASS_ALL = 0, + MEDIA_CLASS_FOCUSED = 1, + MEDIA_CLASS_WITHIN_PARCEL = 2, + MEDIA_CLASS_OUTSIDE_PARCEL = 3, + MEDIA_CLASS_ON_OTHERS = 4 + }; + + // Add/remove an LLViewerMediaImpl to/from the list + LLScrollListItem* addListItem(const LLUUID &id); + void updateListItem(LLScrollListItem* item, LLViewerMediaImpl* impl); + void updateListItem(LLScrollListItem* item, + const std::string &item_name, + const std::string &item_tooltip, + S32 proximity, + bool is_disabled, + bool has_media, + bool is_time_based_and_playing, + MediaClass media_class, + const std::string &debug_str); + void removeListItem(const LLUUID &id); + + // Refresh the list in the UI + void refreshList(); + + void refreshParcelItems(); + + // UI Callbacks + void onClickEnableAll(); + void onClickDisableAll(); + void onClickEnableParcelMedia(); + void onClickDisableParcelMedia(); + void onClickMuteParcelMedia(); + void onParcelMediaVolumeSlider(); + void onClickParcelMediaPlay(); + void onClickParcelMediaStop(); + void onClickParcelMediaPause(); + void onClickParcelAudioPlay(); + void onClickParcelAudioStop(); + void onClickParcelAudioStart(); + void onClickParcelAudioPause(); + void onCheckAutoPlay(); + void onAdvancedButtonClick(); + void onMoreLess(); + + void onCheckItem(LLUICtrl* ctrl, const LLUUID &row_id); + + static void onZoomMedia(void* user_data); + +private: + bool setDisabled(const LLUUID &id, bool disabled); + + static void getNameAndUrlHelper(LLViewerMediaImpl* impl, std::string& name, std::string & url, const std::string &defaultName); + + void updateColumns(); + + bool shouldShow(LLViewerMediaImpl* impl); + + void showBasicControls(bool playing, bool include_zoom, bool is_zoomed); + void showTimeBasedControls(bool playing, bool include_zoom, bool is_zoomed, bool muted, F32 volume); + void showDisabledControls(); + void updateControls(); + + void onClickSelectedMediaStop(); + void onClickSelectedMediaPlay(); + void onClickSelectedMediaPause(); + void onClickSelectedMediaMute(); + void onCommitSelectedMediaVolume(); + void onClickSelectedMediaZoom(); + void onClickSelectedMediaUnzoom(); + + LLUICtrl* mNearbyMediaPanel; + LLScrollListCtrl* mMediaList; + LLUICtrl* mEnableAllCtrl; + LLUICtrl* mDisableAllCtrl; + LLComboBox* mShowCtrl; + + // Dynamic (selection-dependent) controls + LLUICtrl* mStopCtrl; + LLUICtrl* mPlayCtrl; + LLUICtrl* mPauseCtrl; + LLUICtrl* mMuteCtrl; + LLUICtrl* mVolumeSliderCtrl; + LLUICtrl* mZoomCtrl; + LLUICtrl* mUnzoomCtrl; + LLSlider* mVolumeSlider; + LLButton* mMuteBtn; + + bool mAllMediaDisabled; + bool mDebugInfoVisible; + bool mParcelAudioAutoStart; + std::string mEmptyNameString; + std::string mPlayingString; + std::string mParcelMediaName; + std::string mParcelAudioName; + + LLRect mMoreRect; + LLRect mLessRect; + LLFrameTimer mHoverTimer; + LLScrollListItem* mParcelMediaItem; + LLScrollListItem* mParcelAudioItem; +}; + + +#endif // LL_LLPANELNEARBYMEDIA_H diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp index 6a61e0f02f..30221da12a 100644 --- a/indra/newview/llpanelobject.cpp +++ b/indra/newview/llpanelobject.cpp @@ -73,7 +73,7 @@ #include "pipeline.h" #include "llviewercontrol.h" #include "lluictrlfactory.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "lldrawpool.h" @@ -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) { } @@ -682,7 +685,7 @@ void LLPanelObject::getState( ) if (objectp->getParameterEntryInUse(LLNetworkData::PARAMS_SCULPT)) { selected_item = MI_SCULPT; - LLFirstUse::useSculptedPrim(); + //LLFirstUse::useSculptedPrim(); } diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index 43366ef814..5ddbdf7f01 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -117,7 +117,7 @@ public: virtual BOOL isItemRenameable() const; virtual BOOL renameItem(const std::string& new_name); virtual BOOL isItemMovable() const; - virtual BOOL isItemRemovable(); + virtual BOOL isItemRemovable() const; virtual BOOL removeItem(); virtual void removeBatch(LLDynamicArray<LLFolderViewEventListener*>& batch); virtual void move(LLFolderViewEventListener* parent_listener); @@ -412,9 +412,9 @@ BOOL LLTaskInvFVBridge::isItemMovable() const return TRUE; } -BOOL LLTaskInvFVBridge::isItemRemovable() +BOOL LLTaskInvFVBridge::isItemRemovable() const { - LLViewerObject* object = gObjectList.findObject(mPanel->getTaskUUID()); + const LLViewerObject* object = gObjectList.findObject(mPanel->getTaskUUID()); if(object && (object->permModify() || object->permYouOwner())) { @@ -445,7 +445,7 @@ bool remove_task_inventory_callback(const LLSD& notification, const LLSD& respon } // helper for remove -// ! REFACTOR ! two_uuids_list_t is also defined in llinevntorybridge.h, but differently. +// ! REFACTOR ! two_uuids_list_t is also defined in llinventorybridge.h, but differently. typedef std::pair<LLUUID, std::list<LLUUID> > panel_two_uuids_list_t; typedef std::pair<LLPanelObjectInventory*, panel_two_uuids_list_t> remove_data_t; BOOL LLTaskInvFVBridge::removeItem() @@ -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); @@ -714,7 +710,7 @@ public: virtual BOOL isItemRenameable() const; // virtual BOOL isItemCopyable() const { return FALSE; } virtual BOOL renameItem(const std::string& new_name); - virtual BOOL isItemRemovable(); + virtual BOOL isItemRemovable() const; virtual void buildContextMenu(LLMenuGL& menu, U32 flags); virtual BOOL hasChildren() const; virtual BOOL startDrag(EDragAndDropType* type, LLUUID* id) const; @@ -746,7 +742,7 @@ BOOL LLTaskCategoryBridge::renameItem(const std::string& new_name) return FALSE; } -BOOL LLTaskCategoryBridge::isItemRemovable() +BOOL LLTaskCategoryBridge::isItemRemovable() const { return FALSE; } @@ -1572,7 +1568,7 @@ void LLPanelObjectInventory::reset() { clearContents(); - setBorderVisible(FALSE); + //setBorderVisible(FALSE); mCommitCallbackRegistrar.pushScope(); // push local callbacks @@ -1587,10 +1583,16 @@ void LLPanelObjectInventory::reset() mFolders->getFilter()->setShowFolderState(LLInventoryFilter::SHOW_ALL_FOLDERS); mFolders->setCallbackRegistrar(&mCommitCallbackRegistrar); + if (hasFocus()) + { + LLEditMenuHandler::gEditMenuHandler = mFolders; + } + LLRect scroller_rect(0, getRect().getHeight(), getRect().getWidth(), 0); LLScrollContainer::Params scroll_p; scroll_p.name("task inventory scroller"); scroll_p.rect(scroller_rect); + scroll_p.tab_stop(true); scroll_p.follows.flags(FOLLOWS_ALL); mScroller = LLUICtrlFactory::create<LLScrollContainer>(scroll_p); addChild(mScroller); diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index 8e14074de1..c2f2d32142 100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -35,6 +35,7 @@ #include "llagent.h" #include "llagentwearables.h" +#include "llappearancemgr.h" #include "llbutton.h" #include "llfloaterreg.h" @@ -44,6 +45,8 @@ #include "llinventoryfunctions.h" #include "llinventorypanel.h" #include "lllandmark.h" +#include "lllineeditor.h" +#include "llmodaldialog.h" #include "llsidepanelappearance.h" #include "llsidetray.h" #include "lltabcontainer.h" @@ -58,15 +61,81 @@ #include "llviewercontrol.h" +static const std::string OUTFITS_TAB_NAME = "outfitslist_tab"; +static const std::string COF_TAB_NAME = "cof_tab"; + static LLRegisterPanelClassWrapper<LLPanelOutfitsInventory> t_inventory("panel_outfits_inventory"); bool LLPanelOutfitsInventory::sShowDebugEditor = false; +class LLOutfitSaveAsDialog : public LLModalDialog +{ +private: + std::string mItemName; + std::string mTempItemName; + + boost::signals2::signal<void (const std::string&)> mSaveAsSignal; + +public: + LLOutfitSaveAsDialog( const LLSD& key ) + : LLModalDialog( key ), + mTempItemName(key.asString()) + { + } + + BOOL postBuild() + { + getChild<LLUICtrl>("Save")->setCommitCallback(boost::bind(&LLOutfitSaveAsDialog::onSave, this )); + getChild<LLUICtrl>("Cancel")->setCommitCallback(boost::bind(&LLOutfitSaveAsDialog::onCancel, this )); + + childSetTextArg("name ed", "[DESC]", mTempItemName); + return TRUE; + } + + void setSaveAsCommit( const boost::signals2::signal<void (const std::string&)>::slot_type& cb ) + { + mSaveAsSignal.connect(cb); + } + + virtual void onOpen(const LLSD& key) + { + LLLineEditor* edit = getChild<LLLineEditor>("name ed"); + if (edit) + { + edit->setFocus(TRUE); + edit->selectAll(); + } + } + + void onSave() + { + mItemName = childGetValue("name ed").asString(); + LLStringUtil::trim(mItemName); + if( !mItemName.empty() ) + { + mSaveAsSignal(mItemName); + closeFloater(); // destroys this object + } + } + + void onCancel() + { + closeFloater(); // destroys this object + } +}; + LLPanelOutfitsInventory::LLPanelOutfitsInventory() : mActivePanel(NULL), mParent(NULL) { mSavedFolderState = new LLSaveFolderState(); mSavedFolderState->setApply(FALSE); + + static bool registered_dialog = false; + if (!registered_dialog) + { + LLFloaterReg::add("outfit_save_as", "floater_outfit_save_as.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutfitSaveAsDialog>); + registered_dialog = true; + } } LLPanelOutfitsInventory::~LLPanelOutfitsInventory() @@ -84,6 +153,35 @@ BOOL LLPanelOutfitsInventory::postBuild() return TRUE; } +// virtual +void LLPanelOutfitsInventory::onOpen(const LLSD& key) +{ + // Make sure we know which tab is selected, update the filter, + // and update verbs. + onTabChange(); + + // Auto open the first outfit newly created so new users can see sample outfit contents + static bool should_open_outfit = true; + if (should_open_outfit && gAgent.isFirstLogin()) + { + LLInventoryPanel* outfits_panel = getChild<LLInventoryPanel>(OUTFITS_TAB_NAME); + if (outfits_panel) + { + LLUUID my_outfits_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_MY_OUTFITS); + LLFolderViewFolder* my_outfits_folder = outfits_panel->getRootFolder()->getFolderByID(my_outfits_id); + if (my_outfits_folder) + { + LLFolderViewFolder* first_outfit = dynamic_cast<LLFolderViewFolder*>(my_outfits_folder->getFirstChild()); + if (first_outfit) + { + first_outfit->setOpen(TRUE); + } + } + } + } + should_open_outfit = false; +} + void LLPanelOutfitsInventory::updateVerbs() { if (mParent) @@ -94,6 +192,7 @@ void LLPanelOutfitsInventory::updateVerbs() if (mListCommands) { mListCommands->childSetVisible("look_edit_btn",sShowDebugEditor); + updateListCommands(); } } @@ -168,15 +267,36 @@ void LLPanelOutfitsInventory::onEdit() { } -void LLPanelOutfitsInventory::onNew() +void LLPanelOutfitsInventory::onSave() +{ + std::string outfit_name; + + if (!LLAppearanceManager::getInstance()->getBaseOutfitName(outfit_name)) + { + outfit_name = LLViewerFolderType::lookupNewCategoryName(LLFolderType::FT_OUTFIT); + } + + LLOutfitSaveAsDialog* save_as_dialog = LLFloaterReg::showTypedInstance<LLOutfitSaveAsDialog>("outfit_save_as", LLSD(outfit_name), TRUE); + if (save_as_dialog) + { + save_as_dialog->setSaveAsCommit(boost::bind(&LLPanelOutfitsInventory::onSaveCommit, this, _1 )); + } +} + +void LLPanelOutfitsInventory::onSaveCommit(const std::string& outfit_name) { - const std::string& outfit_name = LLViewerFolderType::lookupNewCategoryName(LLFolderType::FT_OUTFIT); LLUUID outfit_folder = gAgentWearables.makeNewOutfitLinks(outfit_name); + LLSD key; + LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key); + + if (mAppearanceTabs) + { + mAppearanceTabs->selectTabByName(OUTFITS_TAB_NAME); + } } void LLPanelOutfitsInventory::onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action) { - updateListCommands(); updateVerbs(); if (getRootFolder()->needsAutoRename() && items.size()) { @@ -264,9 +384,12 @@ void LLPanelOutfitsInventory::updateListCommands() { bool trash_enabled = isActionEnabled("delete"); bool wear_enabled = isActionEnabled("wear"); + bool make_outfit_enabled = isActionEnabled("make_outfit"); mListCommands->childSetEnabled("trash_btn", trash_enabled); mListCommands->childSetEnabled("wear_btn", wear_enabled); + mListCommands->childSetVisible("wear_btn", wear_enabled); + mListCommands->childSetEnabled("make_outfit_btn", make_outfit_enabled); } void LLPanelOutfitsInventory::onGearButtonClick() @@ -276,7 +399,7 @@ void LLPanelOutfitsInventory::onGearButtonClick() void LLPanelOutfitsInventory::onAddButtonClick() { - onNew(); + onSave(); } void LLPanelOutfitsInventory::showActionMenu(LLMenuGL* menu, std::string spawning_view_name) @@ -303,6 +426,8 @@ void LLPanelOutfitsInventory::onClipboardAction(const LLSD& userdata) { std::string command_name = userdata.asString(); getActivePanel()->getRootFolder()->doToSelected(getActivePanel()->getModel(),command_name); + updateListCommands(); + updateVerbs(); } void LLPanelOutfitsInventory::onCustomAction(const LLSD& userdata) @@ -313,7 +438,7 @@ void LLPanelOutfitsInventory::onCustomAction(const LLSD& userdata) const std::string command_name = userdata.asString(); if (command_name == "new") { - onNew(); + onSave(); } if (command_name == "edit") { @@ -323,6 +448,7 @@ void LLPanelOutfitsInventory::onCustomAction(const LLSD& userdata) { onWearButtonClick(); } + // Note: This option has been removed from the gear menu. if (command_name == "add") { onAdd(); @@ -343,20 +469,22 @@ void LLPanelOutfitsInventory::onCustomAction(const LLSD& userdata) { onClipboardAction("delete"); } + updateListCommands(); + updateVerbs(); } BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata) { const std::string command_name = userdata.asString(); - if (command_name == "delete") + if (command_name == "delete" || command_name == "remove") { BOOL can_delete = FALSE; LLFolderView *folder = getActivePanel()->getRootFolder(); if (folder) { - can_delete = TRUE; std::set<LLUUID> selection_set; folder->getSelectionList(selection_set); + can_delete = (selection_set.size() > 0); for (std::set<LLUUID>::iterator iter = selection_set.begin(); iter != selection_set.end(); ++iter) @@ -375,9 +503,9 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata) LLFolderView *folder = getActivePanel()->getRootFolder(); if (folder) { - can_delete = TRUE; std::set<LLUUID> selection_set; folder->getSelectionList(selection_set); + can_delete = (selection_set.size() > 0); for (std::set<LLUUID>::iterator iter = selection_set.begin(); iter != selection_set.end(); ++iter) @@ -391,10 +519,26 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata) } return FALSE; } + if (command_name == "rename" || + command_name == "delete_outfit") + { + return (getCorrectListenerForAction() != NULL) && hasItemsSelected(); + } + + if (command_name == "wear") + { + if (isCOFPanelActive()) + { + return FALSE; + } + } + if (command_name == "make_outfit") + { + return TRUE; + } + if (command_name == "edit" || - command_name == "wear" || - command_name == "add" || - command_name == "remove" + command_name == "add" ) { return (getCorrectListenerForAction() != NULL); @@ -402,6 +546,19 @@ BOOL LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata) return TRUE; } +bool LLPanelOutfitsInventory::hasItemsSelected() +{ + bool has_items_selected = false; + LLFolderView *folder = getActivePanel()->getRootFolder(); + if (folder) + { + std::set<LLUUID> selection_set; + folder->getSelectionList(selection_set); + has_items_selected = (selection_set.size() > 0); + } + return has_items_selected; +} + bool LLPanelOutfitsInventory::handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept) { *accept = ACCEPT_NO; @@ -424,19 +581,15 @@ bool LLPanelOutfitsInventory::handleDragAndDropToTrash(BOOL drop, EDragAndDropTy void LLPanelOutfitsInventory::initTabPanels() { - mTabPanels.resize(2); - - LLInventoryPanel *myoutfits_panel = getChild<LLInventoryPanel>("outfitslist_accordionpanel"); - myoutfits_panel->setFilterTypes(1LL << LLFolderType::FT_OUTFIT, LLInventoryFilter::FILTERTYPE_CATEGORY); - myoutfits_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); - mTabPanels[0] = myoutfits_panel; - mActivePanel = myoutfits_panel; - - - LLInventoryPanel *cof_panel = getChild<LLInventoryPanel>("cof_accordionpanel"); + LLInventoryPanel *cof_panel = getChild<LLInventoryPanel>(COF_TAB_NAME); cof_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); - mTabPanels[1] = cof_panel; + mTabPanels.push_back(cof_panel); + LLInventoryPanel *myoutfits_panel = getChild<LLInventoryPanel>(OUTFITS_TAB_NAME); + myoutfits_panel->setFilterTypes(1LL << LLFolderType::FT_OUTFIT, LLInventoryFilter::FILTERTYPE_CATEGORY); + myoutfits_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); + mTabPanels.push_back(myoutfits_panel); + for (tabpanels_vec_t::iterator iter = mTabPanels.begin(); iter != mTabPanels.end(); ++iter) @@ -447,6 +600,7 @@ void LLPanelOutfitsInventory::initTabPanels() mAppearanceTabs = getChild<LLTabContainer>("appearance_tabs"); mAppearanceTabs->setCommitCallback(boost::bind(&LLPanelOutfitsInventory::onTabChange, this)); + mActivePanel = (LLInventoryPanel*)mAppearanceTabs->getCurrentPanel(); } void LLPanelOutfitsInventory::onTabSelectionChange(LLInventoryPanel* tab_panel, const std::deque<LLFolderViewItem*> &items, BOOL user_action) @@ -479,24 +633,22 @@ void LLPanelOutfitsInventory::onTabChange() return; } mActivePanel->setFilterSubString(mFilterSubString); - - bool is_my_outfits = (mActivePanel->getName() == "outfitslist_accordionpanel"); - mListCommands->childSetEnabled("make_outfit_btn", is_my_outfits); -} - -LLInventoryPanel* LLPanelOutfitsInventory::getActivePanel() -{ - return mActivePanel; + updateVerbs(); } -bool LLPanelOutfitsInventory::isTabPanel(LLInventoryPanel *panel) +BOOL LLPanelOutfitsInventory::isTabPanel(LLInventoryPanel *panel) const { - for(tabpanels_vec_t::iterator it = mTabPanels.begin(); + for(tabpanels_vec_t::const_iterator it = mTabPanels.begin(); it != mTabPanels.end(); ++it) { if (*it == panel) - return true; + return TRUE; } - return false; + return FALSE; +} + +BOOL LLPanelOutfitsInventory::isCOFPanelActive() const +{ + return (getActivePanel()->getName() == COF_TAB_NAME); } diff --git a/indra/newview/llpaneloutfitsinventory.h b/indra/newview/llpaneloutfitsinventory.h index 1e084750a0..ab25ef0a49 100644 --- a/indra/newview/llpaneloutfitsinventory.h +++ b/indra/newview/llpaneloutfitsinventory.h @@ -53,12 +53,15 @@ public: virtual ~LLPanelOutfitsInventory(); /*virtual*/ BOOL postBuild(); + /*virtual*/ void onOpen(const LLSD& key); void onSearchEdit(const std::string& string); void onAdd(); void onRemove(); void onEdit(); - void onNew(); + void onSave(); + + void onSaveCommit(const std::string& item_name); void onSelectionChange(const std::deque<LLFolderViewItem*> &items, BOOL user_action); void onSelectorButtonClicked(); @@ -75,24 +78,26 @@ protected: bool getIsCorrectType(const LLFolderViewEventListener *listenerp) const; private: - LLSidepanelAppearance* mParent; - LLSaveFolderState* mSavedFolderState; - LLTabContainer* mAppearanceTabs; - std::string mFilterSubString; + LLSidepanelAppearance* mParent; + LLSaveFolderState* mSavedFolderState; + LLTabContainer* mAppearanceTabs; + std::string mFilterSubString; public: ////////////////////////////////////////////////////////////////////////////////// // tab panels - LLInventoryPanel* getActivePanel(); - bool isTabPanel(LLInventoryPanel *panel); + LLInventoryPanel* getActivePanel() { return mActivePanel; } + const LLInventoryPanel* getActivePanel() const { return mActivePanel; } + BOOL isTabPanel(LLInventoryPanel *panel) const; protected: - void initTabPanels(); - void onTabSelectionChange(LLInventoryPanel* tab_panel, const std::deque<LLFolderViewItem*> &items, BOOL user_action); - void onTabChange(); - + void initTabPanels(); + void onTabSelectionChange(LLInventoryPanel* tab_panel, const std::deque<LLFolderViewItem*> &items, BOOL user_action); + void onTabChange(); + BOOL isCOFPanelActive() const; + private: - LLInventoryPanel* mActivePanel; + LLInventoryPanel* mActivePanel; typedef std::vector<LLInventoryPanel *> tabpanels_vec_t; tabpanels_vec_t mTabPanels; @@ -114,6 +119,7 @@ protected: BOOL isActionEnabled(const LLSD& command_name); void onCustomAction(const LLSD& command_name); bool handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept); + bool hasItemsSelected(); private: LLPanel* mListCommands; LLMenuGL* mMenuGearDefault; diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 249a9ca1a0..d2a518a06a 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -35,6 +35,8 @@ // libs #include "llfloaterreg.h" #include "llmenugl.h" +#include "llnotificationsutil.h" +#include "lleventtimer.h" #include "llfiltereditor.h" #include "lltabcontainer.h" #include "lluictrlfactory.h" @@ -461,6 +463,11 @@ LLPanelPeople::~LLPanelPeople() delete mFriendListUpdater; delete mRecentListUpdater; + if(LLVoiceClient::instanceExists()) + { + LLVoiceClient::getInstance()->removeObserver(this); + } + LLView::deleteViewByHandle(mGroupPlusMenuHandle); LLView::deleteViewByHandle(mNearbyViewSortMenuHandle); LLView::deleteViewByHandle(mFriendsViewSortMenuHandle); @@ -512,7 +519,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); @@ -531,10 +537,10 @@ BOOL LLPanelPeople::postBuild() friends_panel->childSetAction("add_btn", boost::bind(&LLPanelPeople::onAddFriendWizButtonClicked, this)); friends_panel->childSetAction("del_btn", boost::bind(&LLPanelPeople::onDeleteFriendButtonClicked, this)); - mOnlineFriendList->setDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, mOnlineFriendList)); - mAllFriendList->setDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, mAllFriendList)); - mNearbyList->setDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, mNearbyList)); - mRecentList->setDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, mRecentList)); + mOnlineFriendList->setItemDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, _1)); + mAllFriendList->setItemDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, _1)); + mNearbyList->setItemDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, _1)); + mRecentList->setItemDoubleClickCallback(boost::bind(&LLPanelPeople::onAvatarListDoubleClicked, this, _1)); mOnlineFriendList->setCommitCallback(boost::bind(&LLPanelPeople::onAvatarListCommitted, this, mOnlineFriendList)); mAllFriendList->setCommitCallback(boost::bind(&LLPanelPeople::onAvatarListCommitted, this, mAllFriendList)); @@ -574,7 +580,7 @@ BOOL LLPanelPeople::postBuild() getChild<LLPanel>(GROUP_TAB_NAME)->childSetAction("groups_viewsort_btn",boost::bind(&LLPanelPeople::onGroupsViewSortButtonClicked, this)); // Must go after setting commit callback and initializing all pointers to children. - mTabContainer->selectTabByName(FRIENDS_TAB_NAME); + mTabContainer->selectTabByName(NEARBY_TAB_NAME); // Create menus. LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; @@ -611,6 +617,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(); @@ -620,6 +628,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) @@ -651,6 +670,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) { @@ -750,7 +774,6 @@ void LLPanelPeople::updateButtons() LLPanel* groups_panel = mTabContainer->getCurrentPanel(); groups_panel->childSetEnabled("activate_btn", item_selected && !cur_group_active); // "none" or a non-active group selected - groups_panel->childSetEnabled("plus_btn", item_selected); groups_panel->childSetEnabled("minus_btn", item_selected && selected_id.notNull()); } else @@ -775,41 +798,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(); @@ -1005,12 +1007,15 @@ void LLPanelPeople::onTabSelected(const LLSD& param) mFilterEditor->setLabel(getString("people_filter_label")); } -void LLPanelPeople::onAvatarListDoubleClicked(LLAvatarList* list) +void LLPanelPeople::onAvatarListDoubleClicked(LLUICtrl* ctrl) { - LLUUID clicked_id = list->getSelectedUUID(); - - if (clicked_id.isNull()) + LLAvatarListItem* item = dynamic_cast<LLAvatarListItem*>(ctrl); + if(!item) + { return; + } + + LLUUID clicked_id = item->getAvatarId(); #if 0 // SJB: Useful for testing, but not currently functional or to spec LLAvatarActions::showProfile(clicked_id); @@ -1138,6 +1143,12 @@ void LLPanelPeople::onAvatarPicked( void LLPanelPeople::onGroupPlusButtonClicked() { + if (!gAgent.canJoinGroups()) + { + LLNotificationsUtil::add("JoinedTooManyGroups"); + return; + } + LLMenuGL* plus_menu = (LLMenuGL*)mGroupPlusMenuHandle.get(); if (!plus_menu) return; diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h index da2c0e368c..6d3d436156 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 @@ public: /*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 @@ private: bool isFriendOnline(const LLUUID& id); bool isItemsFreeOfFriends(const std::vector<LLUUID>& uuids); - bool canCall(); void updateButtons(); std::string getActiveTabName() const; @@ -109,7 +114,7 @@ private: void onNearbyViewSortButtonClicked(); void onFriendsViewSortButtonClicked(); void onGroupsViewSortButtonClicked(); - void onAvatarListDoubleClicked(LLAvatarList* list); + void onAvatarListDoubleClicked(LLUICtrl* ctrl); void onAvatarListCommitted(LLAvatarList* list); void onGroupPlusButtonClicked(); void onGroupMinusButtonClicked(); diff --git a/indra/newview/llpanelpeoplemenus.cpp b/indra/newview/llpanelpeoplemenus.cpp index c1c10e6022..854651cd01 100644 --- a/indra/newview/llpanelpeoplemenus.cpp +++ b/indra/newview/llpanelpeoplemenus.cpp @@ -39,6 +39,7 @@ #include "llpanelpeoplemenus.h" // newview +#include "llagent.h" #include "llagentdata.h" // for gAgentID #include "llavataractions.h" #include "llviewermenu.h" // for gMenuHolder @@ -55,6 +56,22 @@ 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 + + // 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) { if (mMenu) @@ -77,6 +94,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); } @@ -104,10 +122,11 @@ LLContextMenu* NearbyMenu::createMenu() const LLUUID& id = mUUIDs.front(); registrar.add("Avatar.Profile", boost::bind(&LLAvatarActions::showProfile, id)); registrar.add("Avatar.AddFriend", boost::bind(&LLAvatarActions::requestFriendshipDialog, id)); + registrar.add("Avatar.RemoveFriend", boost::bind(&LLAvatarActions::removeFriendDialog, id)); registrar.add("Avatar.IM", boost::bind(&LLAvatarActions::startIM, id)); registrar.add("Avatar.Call", boost::bind(&LLAvatarActions::startCall, id)); registrar.add("Avatar.OfferTeleport", boost::bind(&NearbyMenu::offerTeleport, this)); - registrar.add("Avatar.ShowOnMap", boost::bind(&LLAvatarActions::startIM, id)); // *TODO: unimplemented + registrar.add("Avatar.ShowOnMap", boost::bind(&LLAvatarActions::showOnMap, id)); registrar.add("Avatar.Share", boost::bind(&LLAvatarActions::share, id)); registrar.add("Avatar.Pay", boost::bind(&LLAvatarActions::pay, id)); registrar.add("Avatar.BlockUnblock", boost::bind(&LLAvatarActions::toggleBlock, id)); @@ -126,6 +145,7 @@ LLContextMenu* NearbyMenu::createMenu() // registrar.add("Avatar.AddFriend", boost::bind(&LLAvatarActions::requestFriendshipDialog, mUUIDs)); // *TODO: unimplemented registrar.add("Avatar.IM", boost::bind(&LLAvatarActions::startConference, mUUIDs)); registrar.add("Avatar.Call", boost::bind(&LLAvatarActions::startAdhocCall, mUUIDs)); + registrar.add("Avatar.RemoveFriend",boost::bind(&LLAvatarActions::removeFriendsDialog, mUUIDs)); // registrar.add("Avatar.Share", boost::bind(&LLAvatarActions::startIM, mUUIDs)); // *TODO: unimplemented // registrar.add("Avatar.Pay", boost::bind(&LLAvatarActions::pay, mUUIDs)); // *TODO: unimplemented enable_registrar.add("Avatar.EnableItem", boost::bind(&NearbyMenu::enableContextMenuItem, this, _2)); @@ -147,11 +167,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")) { @@ -178,26 +194,38 @@ bool NearbyMenu::enableContextMenuItem(const LLSD& userdata) } else if (item == std::string("can_delete")) { - const LLUUID& id = mUUIDs.front(); - return LLAvatarActions::isFriend(id); - } - else if (item == std::string("can_call")) - { - bool result = false; + // We can remove friends if: + // - there are selected people + // - and there are only friends among selection. + + bool result = (mUUIDs.size() > 0); + std::vector<LLUUID>::const_iterator id = mUUIDs.begin(), uuids_end = mUUIDs.end(); for (;id != uuids_end; ++id) { - if (LLAvatarActions::canCall(*id)) + if ( !LLAvatarActions::isFriend(*id) ) { - result = true; + result = false; break; } } + return result; } + else if (item == std::string("can_call")) + { + return LLAvatarActions::canCall(); + } + else if (item == std::string("can_show_on_map")) + { + const LLUUID& id = mUUIDs.front(); + + return (LLAvatarTracker::instance().isBuddyOnline(id) && is_agent_mappable(id)) + || gAgent.isGodlike(); + } return false; } diff --git a/indra/newview/llpanelpeoplemenus.h b/indra/newview/llpanelpeoplemenus.h index 14ae2985f0..913638d8c8 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. @@ -62,6 +62,7 @@ protected: std::vector<LLUUID> mUUIDs; LLContextMenu* mMenu; + LLHandle<LLView> mMenuHandle; }; /** diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp index 8b8b1bed37..01b6e8ffad 100644 --- a/indra/newview/llpanelpermissions.cpp +++ b/indra/newview/llpanelpermissions.cpp @@ -142,9 +142,9 @@ LLPanelPermissions::LLPanelPermissions() : BOOL LLPanelPermissions::postBuild() { childSetCommitCallback("Object Name",LLPanelPermissions::onCommitName,this); - childSetPrevalidate("Object Name",LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("Object Name",LLTextValidate::validateASCIIPrintableNoPipe); childSetCommitCallback("Object Description",LLPanelPermissions::onCommitDesc,this); - childSetPrevalidate("Object Description",LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("Object Description",LLTextValidate::validateASCIIPrintableNoPipe); getChild<LLUICtrl>("button set group")->setCommitCallback(boost::bind(&LLPanelPermissions::onClickGroup,this)); diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp index 7a4dd3569d..5ac0587550 100644 --- a/indra/newview/llpanelpick.cpp +++ b/indra/newview/llpanelpick.cpp @@ -35,24 +35,30 @@ // profile. #include "llviewerprecompiledheaders.h" -#include "llpanel.h" + +#include "llpanelpick.h" + #include "message.h" -#include "llagent.h" -#include "llagentpicksinfo.h" + +#include "llparcel.h" + #include "llbutton.h" +#include "llfloaterreg.h" #include "lliconctrl.h" #include "lllineeditor.h" -#include "llparcel.h" -#include "llviewerparcelmgr.h" +#include "llpanel.h" +#include "llscrollcontainer.h" #include "lltexteditor.h" + +#include "llagent.h" +#include "llagentpicksinfo.h" +#include "llavatarpropertiesprocessor.h" +#include "llfloaterworldmap.h" #include "lltexturectrl.h" #include "lluiconstants.h" +#include "llviewerparcelmgr.h" #include "llviewerregion.h" #include "llworldmap.h" -#include "llfloaterworldmap.h" -#include "llfloaterreg.h" -#include "llavatarpropertiesprocessor.h" -#include "llpanelpick.h" #define XML_PANEL_EDIT_PICK "panel_edit_pick.xml" @@ -93,6 +99,10 @@ LLPanelPickInfo::LLPanelPickInfo() , mPickId(LLUUID::null) , mParcelId(LLUUID::null) , mRequestedId(LLUUID::null) + , mScrollingPanelMinHeight(0) + , mScrollingPanelWidth(0) + , mScrollingPanel(NULL) + , mScrollContainer(NULL) { } @@ -146,9 +156,35 @@ BOOL LLPanelPickInfo::postBuild() childSetAction("show_on_map_btn", boost::bind(&LLPanelPickInfo::onClickMap, this)); childSetAction("back_btn", boost::bind(&LLPanelPickInfo::onClickBack, this)); + mScrollingPanel = getChild<LLPanel>("scroll_content_panel"); + mScrollContainer = getChild<LLScrollContainer>("profile_scroll"); + + mScrollingPanelMinHeight = mScrollContainer->getScrolledViewRect().getHeight(); + mScrollingPanelWidth = mScrollingPanel->getRect().getWidth(); + return TRUE; } +void LLPanelPickInfo::reshape(S32 width, S32 height, BOOL called_from_parent) +{ + LLPanel::reshape(width, height, called_from_parent); + + if (!mScrollContainer || !mScrollingPanel) + return; + + static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0); + + S32 scroll_height = mScrollContainer->getRect().getHeight(); + if (mScrollingPanelMinHeight >= scroll_height) + { + mScrollingPanel->reshape(mScrollingPanelWidth, mScrollingPanelMinHeight); + } + else + { + mScrollingPanel->reshape(mScrollingPanelWidth + scrollbar_size, scroll_height); + } +} + void LLPanelPickInfo::processProperties(void* data, EAvatarProcessorType type) { if(APT_PICK_INFO != type) @@ -284,7 +320,6 @@ void LLPanelPickInfo::setPickName(const std::string& name) void LLPanelPickInfo::setPickDesc(const std::string& desc) { childSetValue(XML_DESC, desc); - updateContentPanelRect(); } void LLPanelPickInfo::setPickLocation(const std::string& location) @@ -292,31 +327,6 @@ void LLPanelPickInfo::setPickLocation(const std::string& location) childSetValue(XML_LOCATION, location); } -void LLPanelPickInfo::updateContentPanelRect() -{ - LLTextBox* desc = getChild<LLTextBox>(XML_DESC); - - S32 text_height = desc->getTextPixelHeight(); - LLRect text_rect = desc->getRect(); - - // let text-box height fit text height - text_rect.set(text_rect.mLeft, text_rect.mTop, text_rect.mRight, text_rect.mTop - text_height); - desc->setRect(text_rect); - desc->reshape(text_rect.getWidth(), text_rect.getHeight()); - // force reflow - desc->setText(desc->getText()); - - // bottom of description text-box will be bottom of content panel - desc->localRectToOtherView(desc->getLocalRect(), &text_rect, getChild<LLView>("profile_scroll")); - - LLPanel* content_panel = getChild<LLPanel>("scroll_content_panel"); - LLRect content_rect = content_panel->getRect(); - content_rect.set(content_rect.mLeft, content_rect.mTop, content_rect.mRight, text_rect.mBottom); - // Somehow setRect moves all elements down. - // Single reshape() updates rect and does not move anything. - content_panel->reshape(content_rect.getWidth(), content_rect.getHeight()); -} - void LLPanelPickInfo::onClickMap() { LLFloaterWorldMap::getInstance()->trackLocation(getPosGlobal()); @@ -438,7 +448,7 @@ BOOL LLPanelPickEdit::postBuild() { LLPanelPickInfo::postBuild(); - mSnapshotCtrl->setOnSelectCallback(boost::bind(&LLPanelPickEdit::onPickChanged, this, _1)); + mSnapshotCtrl->setCommitCallback(boost::bind(&LLPanelPickEdit::onSnapshotChanged, this)); LLLineEditor* line_edit = getChild<LLLineEditor>("pick_name"); line_edit->setKeystrokeCallback(boost::bind(&LLPanelPickEdit::onPickChanged, this, _1), NULL); @@ -527,16 +537,14 @@ void LLPanelPickEdit::sendUpdate() } } +void LLPanelPickEdit::onSnapshotChanged() +{ + enableSaveButton(true); +} + void LLPanelPickEdit::onPickChanged(LLUICtrl* ctrl) { - if(isDirty()) - { - enableSaveButton(true); - } - else - { - enableSaveButton(false); - } + enableSaveButton(isDirty()); } void LLPanelPickEdit::resetData() @@ -603,10 +611,6 @@ void LLPanelPickEdit::initTexturePickerMouseEvents() mSnapshotCtrl->setMouseEnterCallback(boost::bind(&LLPanelPickEdit::onTexturePickerMouseEnter, this, _1)); mSnapshotCtrl->setMouseLeaveCallback(boost::bind(&LLPanelPickEdit::onTexturePickerMouseLeave, this, _1)); - // *WORKAROUND: Needed for EXT-1625: enabling save button each time when picker is opened, even if - // texture wasn't changed (see Steve's comment). - mSnapshotCtrl->setMouseDownCallback(boost::bind(&LLPanelPickEdit::enableSaveButton, this, true)); - text_icon->setVisible(FALSE); } diff --git a/indra/newview/llpanelpick.h b/indra/newview/llpanelpick.h index 12b5a116b4..4f27760a8d 100644 --- a/indra/newview/llpanelpick.h +++ b/indra/newview/llpanelpick.h @@ -43,6 +43,7 @@ class LLIconCtrl; class LLTextureCtrl; +class LLScrollContainer; class LLMessageSystem; class LLAvatarPropertiesObserver; @@ -69,6 +70,8 @@ public: /*virtual*/ BOOL postBuild(); + /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); + /*virtual*/ void processProperties(void* data, EAvatarProcessorType type); /** @@ -140,15 +143,6 @@ protected: virtual LLVector3d& getPosGlobal() { return mPosGlobal; } /** - * Reshapes content panel to fit all elements. - * - * Assume that description text-box is the last element of panel. - * Reshape text-box to fit text height and then reshape content panel to fit - * text-box bottom. EXT-1326 - */ - void updateContentPanelRect(); - - /** * Callback for "Map" button, opens Map */ void onClickMap(); @@ -162,7 +156,11 @@ protected: protected: - LLTextureCtrl* mSnapshotCtrl; + S32 mScrollingPanelMinHeight; + S32 mScrollingPanelWidth; + LLScrollContainer* mScrollContainer; + LLPanel* mScrollingPanel; + LLTextureCtrl* mSnapshotCtrl; LLUUID mAvatarId; LLVector3d mPosGlobal; @@ -224,6 +222,11 @@ protected: void sendUpdate(); /** + * Called when snapshot image changes. + */ + void onSnapshotChanged(); + + /** * Callback for Pick snapshot, name and description changed event. */ void onPickChanged(LLUICtrl* ctrl); diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index 751705dd57..2ff2597f08 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -351,7 +351,14 @@ void LLPanelPicks::processProperties(void* data, EAvatarProcessorType type) if (mNoPicks && mNoClassifieds) { - childSetValue("picks_panel_text", LLTrans::getString("NoPicksClassifiedsText")); + if(getAvatarId() == gAgentID) + { + childSetValue("picks_panel_text", LLTrans::getString("NoPicksClassifiedsText")); + } + else + { + childSetValue("picks_panel_text", LLTrans::getString("NoAvatarPicksClassifiedsText")); + } } } @@ -411,6 +418,7 @@ BOOL LLPanelPicks::postBuild() LLUICtrl::CommitCallbackRegistry::ScopedRegistrar plus_registar; plus_registar.add("Picks.Plus.Action", boost::bind(&LLPanelPicks::onPlusMenuItemClicked, this, _2)); + mEnableCallbackRegistrar.add("Picks.Plus.Enable", boost::bind(&LLPanelPicks::isActionEnabled, this, _2)); mPlusMenu = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_picks_plus.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); return TRUE; @@ -430,6 +438,18 @@ void LLPanelPicks::onPlusMenuItemClicked(const LLSD& param) } } +bool LLPanelPicks::isActionEnabled(const LLSD& userdata) const +{ + std::string command_name = userdata.asString(); + + if (command_name == "new_pick" && LLAgentPicksInfo::getInstance()->isPickLimitReached()) + { + return false; + } + + return true; +} + void LLPanelPicks::onAccordionStateChanged(const LLAccordionCtrlTab* acc_tab) { if(!mPicksAccTab->getDisplayChildren()) @@ -652,7 +672,6 @@ void LLPanelPicks::updateButtons() if (getAvatarId() == gAgentID) { - childSetEnabled(XML_BTN_NEW, !LLAgentPicksInfo::getInstance()->isPickLimitReached()); childSetEnabled(XML_BTN_DELETE, has_selected); } @@ -831,10 +850,13 @@ void LLPanelPicks::onPanelClassifiedClose(LLPanelClassifiedInfo* panel) { LLClassifiedItem* c_item = dynamic_cast<LLClassifiedItem*>( mClassifiedsList->getItemByValue(values[n])); - - c_item->setClassifiedName(panel->getClassifiedName()); - c_item->setDescription(panel->getDescription()); - c_item->setSnapshotId(panel->getSnapshotId()); + llassert(c_item); + if (c_item) + { + c_item->setClassifiedName(panel->getClassifiedName()); + c_item->setDescription(panel->getDescription()); + c_item->setSnapshotId(panel->getSnapshotId()); + } } } } diff --git a/indra/newview/llpanelpicks.h b/indra/newview/llpanelpicks.h index 1b2e35ca46..3f757e482e 100644 --- a/indra/newview/llpanelpicks.h +++ b/indra/newview/llpanelpicks.h @@ -97,6 +97,7 @@ private: void onClickMap(); void onPlusMenuItemClicked(const LLSD& param); + bool isActionEnabled(const LLSD& userdata) const; void onListCommit(const LLFlatListView* f_list); void onAccordionStateChanged(const LLAccordionCtrlTab* acc_tab); diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp index b80eb9db38..f6133d4446 100644 --- a/indra/newview/llpanelplaceinfo.cpp +++ b/indra/newview/llpanelplaceinfo.cpp @@ -34,26 +34,22 @@ #include "llpanelplaceinfo.h" -#include "roles_constants.h" #include "llsdutil.h" -#include "llsecondlifeurls.h" #include "llsdutil_math.h" + #include "llregionhandle.h" -#include "message.h" #include "lliconctrl.h" #include "lltextbox.h" +#include "lltrans.h" + #include "llagent.h" -#include "llavatarpropertiesprocessor.h" #include "llexpandabletextbox.h" #include "llpanelpick.h" #include "lltexturectrl.h" -#include "llviewerinventory.h" -#include "llviewerparcelmgr.h" #include "llviewerregion.h" -#include "llviewertexteditor.h" LLPanelPlaceInfo::LLPanelPlaceInfo() : LLPanel(), @@ -62,6 +58,7 @@ LLPanelPlaceInfo::LLPanelPlaceInfo() mPosRegion(), mScrollingPanelMinHeight(0), mScrollingPanelWidth(0), + mInfoType(UNKNOWN), mScrollingPanel(NULL), mScrollContainer(NULL) {} @@ -105,12 +102,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"); @@ -124,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); @@ -212,6 +209,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; @@ -255,7 +256,7 @@ void LLPanelPlaceInfo::reshape(S32 width, S32 height, BOOL called_from_parent) static LLUICachedControl<S32> scrollbar_size ("UIScrollbarSize", 0); S32 scroll_height = mScrollContainer->getRect().getHeight(); - if (mScrollingPanelMinHeight >= scroll_height) + if (mScrollingPanelMinHeight > scroll_height) { mScrollingPanel->reshape(mScrollingPanelWidth, mScrollingPanelMinHeight); } @@ -265,25 +266,6 @@ void LLPanelPlaceInfo::reshape(S32 width, S32 height, BOOL called_from_parent) } } -// virtual -void LLPanelPlaceInfo::handleVisibilityChange(BOOL new_visibility) -{ - LLPanel::handleVisibilityChange(new_visibility); - - LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance(); - if (!parcel_mgr) - return; - - // Remove land selection when panel hides. - if (!new_visibility) - { - if (!parcel_mgr->selectionEmpty()) - { - parcel_mgr->deselectLand(); - } - } -} - void LLPanelPlaceInfo::createPick(const LLVector3d& pos_global, LLPanelPickEdit* pick_panel) { std::string region_name = mRegionName->getText(); diff --git a/indra/newview/llpanelplaceinfo.h b/indra/newview/llpanelplaceinfo.h index 7dfc7b2444..deedbd2b0f 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 @@ public: // 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(); @@ -94,7 +96,6 @@ public: /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); - /*virtual*/ void handleVisibilityChange (BOOL new_visibility); // Create a pick for the location specified // by global_pos. @@ -115,7 +116,7 @@ protected: 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 402d50ba9c..9e5f9da0ea 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,49 +165,49 @@ 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 -void LLPanelPlaceProfile::setInfoType(INFO_TYPE type) +void LLPanelPlaceProfile::setInfoType(EInfoType type) { bool is_info_type_agent = type == AGENT; @@ -257,6 +259,25 @@ void LLPanelPlaceProfile::processParcelInfo(const LLParcelData& parcel_data) } } +// virtual +void LLPanelPlaceProfile::handleVisibilityChange(BOOL new_visibility) +{ + LLPanel::handleVisibilityChange(new_visibility); + + LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance(); + if (!parcel_mgr) + return; + + // Remove land selection when panel hides. + if (!new_visibility) + { + if (!parcel_mgr->selectionEmpty()) + { + parcel_mgr->deselectUnused(); + } + } +} + void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, LLViewerRegion* region, const LLVector3d& pos_global, @@ -319,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 (parcel->getParcelFlagAllowVoice()) + if (vpm->allowAgentVoice(region, parcel)) { mVoiceIcon->setValue(icon_voice); mVoiceText->setText(on); @@ -331,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); @@ -342,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); @@ -364,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); @@ -440,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/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h index 8c30ca92fb..e77b441567 100644 --- a/indra/newview/llpanelplaceprofile.h +++ b/indra/newview/llpanelplaceprofile.h @@ -48,10 +48,12 @@ public: /*virtual*/ void resetLocation(); - /*virtual*/ void setInfoType(INFO_TYPE type); + /*virtual*/ void setInfoType(EInfoType type); /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data); + /*virtual*/ void handleVisibilityChange(BOOL new_visibility); + // Displays information about the currently selected parcel // without sending a request to the server. // If is_current_parcel true shows "You Are Here" banner. diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index 685104a8b1..26b57c003b 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" @@ -68,11 +70,13 @@ #include "lltoggleablemenu.h" #include "llviewerinventory.h" #include "llviewermenu.h" +#include "llviewermessage.h" #include "llviewerparcelmgr.h" #include "llviewerregion.h" #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"; @@ -102,22 +106,35 @@ private: 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 @@ -269,11 +286,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); @@ -289,89 +306,95 @@ BOOL LLPanelPlaces::postBuild() void LLPanelPlaces::onOpen(const LLSD& key) { - if(!mPlaceProfile || !mLandmarkInfo || key.size() == 0) + if (!mPlaceProfile || !mLandmarkInfo) return; - mFilterEditor->clear(); - onFilterEdit("", false); - - mPlaceInfoType = key["type"].asString(); - mPosGlobal.setZero(); - mItem = NULL; - isLandmarkEditModeOn = false; - togglePlaceInfoPanel(TRUE); - - if (mPlaceInfoType == AGENT_INFO_TYPE) - { - mPlaceProfile->setInfoType(LLPanelPlaceInfo::AGENT); - } - else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE) + if (key.size() != 0) { - mLandmarkInfo->setInfoType(LLPanelPlaceInfo::CREATE_LANDMARK); + mFilterEditor->clear(); + onFilterEdit("", false); - if (key.has("x") && key.has("y") && key.has("z")) + mPlaceInfoType = key["type"].asString(); + mPosGlobal.setZero(); + mItem = NULL; + isLandmarkEditModeOn = false; + togglePlaceInfoPanel(TRUE); + + if (mPlaceInfoType == AGENT_INFO_TYPE) { - mPosGlobal = LLVector3d(key["x"].asReal(), - key["y"].asReal(), - key["z"].asReal()); + mPlaceProfile->setInfoType(LLPanelPlaceInfo::AGENT); } - else + else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE) { - mPosGlobal = gAgent.getPositionGlobal(); - } - - mLandmarkInfo->displayParcelInfo(LLUUID(), mPosGlobal); + mLandmarkInfo->setInfoType(LLPanelPlaceInfo::CREATE_LANDMARK); - // Disable Save button because there is no item to save yet. - // The button will be enabled in onLandmarkLoaded callback. - mSaveBtn->setEnabled(FALSE); - } - else if (mPlaceInfoType == LANDMARK_INFO_TYPE) - { - mLandmarkInfo->setInfoType(LLPanelPlaceInfo::LANDMARK); + if (key.has("x") && key.has("y") && key.has("z")) + { + mPosGlobal = LLVector3d(key["x"].asReal(), + key["y"].asReal(), + key["z"].asReal()); + } + else + { + mPosGlobal = gAgent.getPositionGlobal(); + } - LLInventoryItem* item = gInventory.getItem(key["id"].asUUID()); - if (!item) - return; + mLandmarkInfo->displayParcelInfo(LLUUID(), mPosGlobal); - setItem(item); - } - else if (mPlaceInfoType == REMOTE_PLACE_INFO_TYPE) - { - if (key.has("id")) + // 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) { - LLUUID parcel_id = key["id"].asUUID(); - mPlaceProfile->setParcelID(parcel_id); + mLandmarkInfo->setInfoType(LLPanelPlaceInfo::LANDMARK); + + LLInventoryItem* item = gInventory.getItem(key["id"].asUUID()); + if (!item) + return; - // query the server to get the global 3D position of this - // parcel - we need this for teleport/mapping functions. - mRemoteParcelObserver->setParcelID(parcel_id); + setItem(item); } - else + else if (mPlaceInfoType == REMOTE_PLACE_INFO_TYPE) { - mPosGlobal = LLVector3d(key["x"].asReal(), - key["y"].asReal(), - key["z"].asReal()); - mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal); + if (key.has("id")) + { + LLUUID parcel_id = key["id"].asUUID(); + mPlaceProfile->setParcelID(parcel_id); + + // query the server to get the global 3D position of this + // parcel - we need this for teleport/mapping functions. + mRemoteParcelObserver->setParcelID(parcel_id); + } + else + { + mPosGlobal = LLVector3d(key["x"].asReal(), + key["y"].asReal(), + key["z"].asReal()); + mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal); + } + + mPlaceProfile->setInfoType(LLPanelPlaceInfo::PLACE); } + else if (mPlaceInfoType == TELEPORT_HISTORY_INFO_TYPE) + { + S32 index = key["id"].asInteger(); - mPlaceProfile->setInfoType(LLPanelPlaceInfo::PLACE); - } - else if (mPlaceInfoType == TELEPORT_HISTORY_INFO_TYPE) - { - S32 index = key["id"].asInteger(); + const LLTeleportHistoryStorage::slurl_list_t& hist_items = + LLTeleportHistoryStorage::getInstance()->getItems(); - const LLTeleportHistoryStorage::slurl_list_t& hist_items = - LLTeleportHistoryStorage::getInstance()->getItems(); + mPosGlobal = hist_items[index].mGlobalPos; - mPosGlobal = hist_items[index].mGlobalPos; + mPlaceProfile->setInfoType(LLPanelPlaceInfo::TELEPORT_HISTORY); + mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal); + } - mPlaceProfile->setInfoType(LLPanelPlaceInfo::TELEPORT_HISTORY); - mPlaceProfile->displayParcelInfo(LLUUID(), mPosGlobal); + updateVerbs(); } - updateVerbs(); - LLViewerParcelMgr* parcel_mgr = LLViewerParcelMgr::getInstance(); if (!parcel_mgr) return; @@ -381,6 +404,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()); } @@ -388,9 +415,12 @@ void LLPanelPlaces::onOpen(const LLSD& key) { parcel_mgr->removeObserver(mParcelObserver); + // Clear the reference to selection to allow its removal in deselectUnused(). + mParcel.clear(); + if (!parcel_mgr->selectionEmpty()) { - parcel_mgr->deselectLand(); + parcel_mgr->deselectUnused(); } } } @@ -424,6 +454,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) { @@ -449,6 +481,22 @@ void LLPanelPlaces::setItem(LLInventoryItem* item) } } +S32 LLPanelPlaces::notifyParent(const LLSD& info) +{ + if(info.has("update_verbs")) + { + if(mPosGlobal.isExactlyZero()) + { + mPosGlobal.setVec(info["global_x"], info["global_y"], info["global_z"]); + } + + updateVerbs(); + + return 1; + } + return LLPanel::notifyParent(info); +} + void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark) { if (!mLandmarkInfo) @@ -459,7 +507,7 @@ void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark) landmark->getGlobalPos(mPosGlobal); mLandmarkInfo->displayParcelInfo(region_id, mPosGlobal); - mSaveBtn->setEnabled(TRUE); + updateVerbs(); } void LLPanelPlaces::onFilterEdit(const std::string& search_string, bool force_filter) @@ -747,23 +795,23 @@ void LLPanelPlaces::onOverflowMenuItemClicked(const LLSD& param) mPickPanel->reshape(rect.getWidth(), rect.getHeight()); mPickPanel->setRect(rect); } - else if (item == "add_to_favbar") - { - if ( mItem.notNull() ) - { - const LLUUID& favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); - if ( favorites_id.notNull() ) - { - copy_inventory_item(gAgent.getID(), - mItem->getPermissions().getOwner(), - mItem->getUUID(), - favorites_id, - std::string(), - LLPointer<LLInventoryCallback>(NULL)); - llinfos << "Copied inventory item #" << mItem->getUUID() << " to favorites." << llendl; - } - } - } + else if (item == "add_to_favbar") + { + if ( mItem.notNull() ) + { + const LLUUID& favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); + if ( favorites_id.notNull() ) + { + copy_inventory_item(gAgent.getID(), + mItem->getPermissions().getOwner(), + mItem->getUUID(), + favorites_id, + std::string(), + LLPointer<LLInventoryCallback>(NULL)); + llinfos << "Copied inventory item #" << mItem->getUUID() << " to favorites." << llendl; + } + } + } } void LLPanelPlaces::onBackButtonClicked() @@ -802,12 +850,24 @@ 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()); mLandmarkInfo->setVisible(FALSE); } + else if (mPlaceInfoType == AGENT_INFO_TYPE) + { + LLViewerParcelMgr::getInstance()->removeObserver(mParcelObserver); + + // Clear reference to parcel selection when closing place profile panel. + // LLViewerParcelMgr removes the selection if it has 1 reference to it. + mParcel.clear(); + } } else if (mPlaceInfoType == CREATE_LANDMARK_INFO_TYPE || mPlaceInfoType == LANDMARK_INFO_TYPE) @@ -824,6 +884,33 @@ void LLPanelPlaces::togglePlaceInfoPanel(BOOL visible) mPlaceProfile->setVisible(FALSE); } + else + { + LLLandmarksPanel* landmarks_panel = + dynamic_cast<LLLandmarksPanel*>(mTabContainer->getPanelByName("Landmarks")); + if (landmarks_panel && mItem.notNull()) + { + // If a landmark info is being closed we open the landmarks tab + // and set this landmark selected. + mTabContainer->selectTabPanel(landmarks_panel); + + landmarks_panel->setItemSelected(mItem->getUUID(), TRUE); + } + } + } +} + +// virtual +void LLPanelPlaces::handleVisibilityChange(BOOL new_visibility) +{ + LLPanel::handleVisibilityChange(new_visibility); + + if (!new_visibility && mPlaceInfoType == AGENT_INFO_TYPE) + { + LLViewerParcelMgr::getInstance()->removeObserver(mParcelObserver); + + // Clear reference to parcel selection when closing places panel. + mParcel.clear(); } } @@ -839,6 +926,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); @@ -855,13 +944,20 @@ void LLPanelPlaces::changedParcelSelection() } } - mPlaceProfile->resetLocation(); + // 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); updateVerbs(); } -void LLPanelPlaces::changedInventory(U32 mask) +void LLPanelPlaces::createTabs() { if (!(gInventory.isInventoryUsable() && LLTeleportHistory::getInstance())) return; @@ -897,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) @@ -909,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); + + llassert(item); + if (item && (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); + } + } + } +} + void LLPanelPlaces::updateVerbs() { bool is_place_info_visible; @@ -929,14 +1048,13 @@ void LLPanelPlaces::updateVerbs() mTeleportBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn); mShowOnMapBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn); - mOverflowBtn->setVisible(!is_create_landmark_visible && !isLandmarkEditModeOn); + mOverflowBtn->setVisible(is_place_info_visible && !is_create_landmark_visible && !isLandmarkEditModeOn); mEditBtn->setVisible(mPlaceInfoType == LANDMARK_INFO_TYPE && !isLandmarkEditModeOn); mSaveBtn->setVisible(isLandmarkEditModeOn); mCancelBtn->setVisible(isLandmarkEditModeOn); mCloseBtn->setVisible(is_create_landmark_visible && !isLandmarkEditModeOn); mShowOnMapBtn->setEnabled(!is_create_landmark_visible && !isLandmarkEditModeOn && have_3d_pos); - mOverflowBtn->setEnabled(is_place_info_visible && !is_create_landmark_visible); if (is_place_info_visible) { @@ -951,6 +1069,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 5ee8704992..78fcbbb11d 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -32,6 +32,8 @@ #ifndef LL_LLPANELPLACES_H #define LL_LLPANELPLACES_H +#include "lltimer.h" + #include "llpanel.h" class LLInventoryItem; @@ -64,13 +66,23 @@ public: // 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; } + + std::string getPlaceInfoType() { return mPlaceInfoType; } + + /*virtual*/ S32 notifyParent(const LLSD& info); + private: void onLandmarkLoaded(LLLandmark* landmark); void onFilterEdit(const std::string& search_string, bool force_filter); @@ -91,6 +103,8 @@ private: void togglePickPanel(BOOL visible); void togglePlaceInfoPanel(BOOL visible); + /*virtual*/ void handleVisibilityChange(BOOL new_visibility); + void updateVerbs(); LLPanelPlaceInfo* getCurrentInfoPanel(); @@ -105,6 +119,8 @@ private: LLToggleableMenu* mPlaceMenu; LLToggleableMenu* mLandmarkMenu; + LLButton* mPlaceProfileBackBtn; + LLButton* mLandmarkInfoBackBtn; LLButton* mTeleportBtn; LLButton* mShowOnMapBtn; LLButton* mEditBtn; @@ -124,6 +140,10 @@ private: // 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; diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index 5cc9c1951b..a53a3ba1ad 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -127,7 +127,11 @@ LLPanelPrimMediaControls::LLPanelPrimMediaControls() : mScrollState = SCROLL_NONE; mPanelHandle.bind(this); + + mInactiveTimeout = gSavedSettings.getF32("MediaControlTimeout"); + mControlFadeTime = gSavedSettings.getF32("MediaControlFadeTime"); } + LLPanelPrimMediaControls::~LLPanelPrimMediaControls() { } @@ -156,8 +160,6 @@ BOOL LLPanelPrimMediaControls::postBuild() mSkipBackCtrl = getChild<LLUICtrl>("skip_back"); mVolumeCtrl = getChild<LLUICtrl>("media_volume"); mMuteBtn = getChild<LLButton>("media_mute_button"); - mVolumeUpCtrl = getChild<LLUICtrl>("volume_up"); - mVolumeDownCtrl = getChild<LLUICtrl>("volume_down"); mVolumeSliderCtrl = getChild<LLSliderCtrl>("volume_slider"); mWhitelistIcon = getChild<LLIconCtrl>("media_whitelist_flag"); mSecureLockIcon = getChild<LLIconCtrl>("media_secure_lock_flag"); @@ -172,6 +174,7 @@ BOOL LLPanelPrimMediaControls::postBuild() LLStringUtil::convertToF32(getString("zoom_near_padding"), mZoomNearPadding); LLStringUtil::convertToF32(getString("zoom_medium_padding"), mZoomMediumPadding); LLStringUtil::convertToF32(getString("zoom_far_padding"), mZoomFarPadding); + LLStringUtil::convertToS32(getString("top_world_view_avoid_zone"), mTopWorldViewAvoidZone); // These are currently removed...but getChild creates a "dummy" widget. // This class handles them missing. @@ -207,11 +210,9 @@ BOOL LLPanelPrimMediaControls::postBuild() } mMediaAddress->setFocusReceivedCallback(boost::bind(&LLPanelPrimMediaControls::onInputURL, _1, this )); - mInactiveTimeout = gSavedSettings.getF32("MediaControlTimeout"); - mControlFadeTime = gSavedSettings.getF32("MediaControlFadeTime"); - + mCurrentZoom = ZOOM_NONE; - // clicks on HUD buttons do not remove keyboard focus from media + // clicks on buttons do not remove keyboard focus from media setIsChrome(TRUE); return TRUE; } @@ -336,8 +337,6 @@ void LLPanelPrimMediaControls::updateShape() mMediaAddressCtrl->setVisible(has_focus && !mini_controls); mMediaPlaySliderPanel->setVisible(has_focus && !mini_controls); mVolumeCtrl->setVisible(false); - mVolumeUpCtrl->setVisible(false); - mVolumeDownCtrl->setVisible(false); mWhitelistIcon->setVisible(!mini_controls && (media_data)?media_data->getWhiteListEnable():false); // Disable zoom if HUD @@ -370,11 +369,9 @@ void LLPanelPrimMediaControls::updateShape() mSkipBackCtrl->setEnabled(has_focus && !mini_controls); mVolumeCtrl->setVisible(has_focus); - mVolumeUpCtrl->setVisible(has_focus); - mVolumeDownCtrl->setVisible(has_focus); mVolumeCtrl->setEnabled(has_focus); - mVolumeSliderCtrl->setEnabled(has_focus && mVolumeSliderVisible > 0); - mVolumeSliderCtrl->setVisible(has_focus && mVolumeSliderVisible > 0); + mVolumeSliderCtrl->setEnabled(has_focus && shouldVolumeSliderBeVisible()); + mVolumeSliderCtrl->setVisible(has_focus && shouldVolumeSliderBeVisible()); mWhitelistIcon->setVisible(false); mSecureLockIcon->setVisible(false); @@ -414,21 +411,15 @@ void LLPanelPrimMediaControls::updateShape() // video vloume if(volume <= 0.0) { - mVolumeUpCtrl->setEnabled(TRUE); - mVolumeDownCtrl->setEnabled(FALSE); mMuteBtn->setToggleState(true); } else if (volume >= 1.0) { - mVolumeUpCtrl->setEnabled(FALSE); - mVolumeDownCtrl->setEnabled(TRUE); mMuteBtn->setToggleState(false); } else { mMuteBtn->setToggleState(false); - mVolumeUpCtrl->setEnabled(TRUE); - mVolumeDownCtrl->setEnabled(TRUE); } switch(result) @@ -473,12 +464,8 @@ void LLPanelPrimMediaControls::updateShape() mSkipBackCtrl->setEnabled(FALSE); mVolumeCtrl->setVisible(FALSE); - mVolumeUpCtrl->setVisible(FALSE); - mVolumeDownCtrl->setVisible(FALSE); mVolumeSliderCtrl->setVisible(FALSE); mVolumeCtrl->setEnabled(FALSE); - mVolumeUpCtrl->setEnabled(FALSE); - mVolumeDownCtrl->setEnabled(FALSE); mVolumeSliderCtrl->setEnabled(FALSE); if (mMediaPanelScroll) @@ -627,36 +614,45 @@ void LLPanelPrimMediaControls::updateShape() update_min_max(min, max, LLVector3(screen_vert.v)); } + // convert screenspace bbox to pixels (in screen coords) + LLRect window_rect = gViewerWindow->getWorldViewRectScaled(); LLCoordGL screen_min; - screen_min.mX = llround((F32)gViewerWindow->getWorldViewWidthScaled() * (min.mV[VX] + 1.f) * 0.5f); - screen_min.mY = llround((F32)gViewerWindow->getWorldViewHeightScaled() * (min.mV[VY] + 1.f) * 0.5f); + screen_min.mX = llround((F32)window_rect.getWidth() * (min.mV[VX] + 1.f) * 0.5f); + screen_min.mY = llround((F32)window_rect.getHeight() * (min.mV[VY] + 1.f) * 0.5f); LLCoordGL screen_max; - screen_max.mX = llround((F32)gViewerWindow->getWorldViewWidthScaled() * (max.mV[VX] + 1.f) * 0.5f); - screen_max.mY = llround((F32)gViewerWindow->getWorldViewHeightScaled() * (max.mV[VY] + 1.f) * 0.5f); + screen_max.mX = llround((F32)window_rect.getWidth() * (max.mV[VX] + 1.f) * 0.5f); + screen_max.mY = llround((F32)window_rect.getHeight() * (max.mV[VY] + 1.f) * 0.5f); - // grow panel so that screenspace bounding box fits inside "media_region" element of HUD - LLRect media_controls_rect; - S32 volume_slider_height = mVolumeSliderCtrl->getRect().getHeight() - /*fudge*/ 2; - getParent()->screenRectToLocal(LLRect(screen_min.mX, screen_max.mY, screen_max.mX, screen_min.mY), &media_controls_rect); - media_controls_rect.mLeft -= mMediaRegion->getRect().mLeft; - media_controls_rect.mBottom -= mMediaRegion->getRect().mBottom - volume_slider_height; - media_controls_rect.mTop += getRect().getHeight() - mMediaRegion->getRect().mTop; - media_controls_rect.mRight += getRect().getWidth() - mMediaRegion->getRect().mRight; + // grow panel so that screenspace bounding box fits inside "media_region" element of panel + LLRect media_panel_rect; + // Get the height of the controls (less the volume slider) + S32 controls_height = mMediaControlsStack->getRect().getHeight() - mVolumeSliderCtrl->getRect().getHeight(); + getParent()->screenRectToLocal(LLRect(screen_min.mX, screen_max.mY, screen_max.mX, screen_min.mY), &media_panel_rect); + media_panel_rect.mTop += controls_height; - // keep all parts of HUD on-screen - LLRect window_rect = getParent()->getLocalRect(); - media_controls_rect.intersectWith(window_rect); + // keep all parts of panel on-screen + // Area of the top of the world view to avoid putting the controls + window_rect.mTop -= mTopWorldViewAvoidZone; + // Don't include "spacing" bookends on left & right of the media controls + window_rect.mLeft -= mLeftBookend->getRect().getWidth(); + window_rect.mRight += mRightBookend->getRect().getWidth(); + // Don't include the volume slider + window_rect.mBottom -= mVolumeSliderCtrl->getRect().getHeight(); + media_panel_rect.intersectWith(window_rect); // clamp to minimum size, keeping rect inside window - S32 centerX = media_controls_rect.getCenterX(); - S32 centerY = media_controls_rect.getCenterY(); + S32 centerX = media_panel_rect.getCenterX(); + S32 centerY = media_panel_rect.getCenterY(); + // Shrink screen rect by min width and height, to ensure containment window_rect.stretch(-mMinWidth/2, -mMinHeight/2); window_rect.clampPointToRect(centerX, centerY); - media_controls_rect.setCenterAndSize(centerX, centerY, - llmax(mMinWidth, media_controls_rect.getWidth()), llmax(mMinHeight, media_controls_rect.getHeight())); + media_panel_rect.setCenterAndSize(centerX, centerY, + llmax(mMinWidth, media_panel_rect.getWidth()), + llmax(mMinHeight, media_panel_rect.getHeight())); - setShape(media_controls_rect, true); + // Finally set the size of the panel + setShape(media_panel_rect, true); // Test mouse position to see if the cursor is stationary LLCoordWindow cursor_pos_window; @@ -699,13 +695,13 @@ void LLPanelPrimMediaControls::updateShape() /*virtual*/ void LLPanelPrimMediaControls::draw() { - F32 alpha = 1.f; + F32 alpha = getDrawContext().mAlpha; if(mFadeTimer.getStarted()) { F32 time = mFadeTimer.getElapsedTimeF32(); - alpha = llmax(lerp(1.0, 0.0, time / mControlFadeTime), 0.0f); + alpha *= llmax(lerp(1.0, 0.0, time / mControlFadeTime), 0.0f); - if(mFadeTimer.getElapsedTimeF32() >= mControlFadeTime) + if(time >= mControlFadeTime) { if(mClearFaceOnFade) { @@ -726,27 +722,30 @@ void LLPanelPrimMediaControls::draw() // Build rect for icon area in coord system of this panel // Assumes layout_stack is a direct child of this panel mMediaControlsStack->updateLayout(); - LLRect icon_area = mMediaControlsStack->getRect(); - + + // adjust for layout stack spacing + S32 space = mMediaControlsStack->getPanelSpacing() + 2; + LLRect controls_bg_area = mMediaControlsStack->getRect(); + + controls_bg_area.mTop += space + 2; + // adjust to ignore space from volume slider - icon_area.mTop -= mVolumeSliderCtrl->getRect().getHeight(); + controls_bg_area.mBottom += mVolumeSliderCtrl->getRect().getHeight(); // adjust to ignore space from left bookend padding - icon_area.mLeft += mLeftBookend->getRect().getWidth(); + controls_bg_area.mLeft += mLeftBookend->getRect().getWidth() - space; // ignore space from right bookend padding - icon_area.mRight -= mRightBookend->getRect().getWidth(); + controls_bg_area.mRight -= mRightBookend->getRect().getWidth() - space - 2; // draw control background UI image - mBackgroundImage->draw( icon_area, UI_VERTEX_COLOR % alpha); + mBackgroundImage->draw( controls_bg_area, UI_VERTEX_COLOR % alpha); // draw volume slider background UI image if (mVolumeSliderCtrl->getVisible()) { - LLRect volume_slider_rect = mVolumeSliderCtrl->getRect(); - // For some reason the rect is not in the right place (??) - // This translates the bg to under the slider - volume_slider_rect.translate(mVolumeSliderCtrl->getParent()->getRect().mLeft, icon_area.getHeight()); + LLRect volume_slider_rect; + screenRectToLocal(mVolumeSliderCtrl->calcScreenRect(), &volume_slider_rect); mVolumeSliderBackgroundImage->draw(volume_slider_rect, UI_VERTEX_COLOR % alpha); } @@ -1037,8 +1036,9 @@ void LLPanelPrimMediaControls::updateZoom() } if (zoom_padding > 0.0f) - { - LLViewerMediaFocus::setCameraZoom(getTargetObject(), mTargetObjectNormal, zoom_padding); + { + // since we only zoom into medium for now, always set zoom_in constraint to true + LLViewerMediaFocus::setCameraZoom(getTargetObject(), mTargetObjectNormal, zoom_padding, true); } // Remember the object ID/face we zoomed into, so we can update the zoom icon appropriately @@ -1259,6 +1259,11 @@ void LLPanelPrimMediaControls::onToggleMute() { media_impl->setVolume(0.0); } + else if (mVolumeSliderCtrl->getValueF32() == 0.0) + { + media_impl->setVolume(1.0); + mVolumeSliderCtrl->setValue(1.0); + } else { media_impl->setVolume(mVolumeSliderCtrl->getValueF32()); @@ -1271,8 +1276,12 @@ void LLPanelPrimMediaControls::showVolumeSlider() mVolumeSliderVisible++; } - void LLPanelPrimMediaControls::hideVolumeSlider() { mVolumeSliderVisible--; } + +bool LLPanelPrimMediaControls::shouldVolumeSliderBeVisible() +{ + return mVolumeSliderVisible > 0; +} diff --git a/indra/newview/llpanelprimmediacontrols.h b/indra/newview/llpanelprimmediacontrols.h index d899ee4473..2e0de7866c 100644 --- a/indra/newview/llpanelprimmediacontrols.h +++ b/indra/newview/llpanelprimmediacontrols.h @@ -58,6 +58,16 @@ public: void updateShape(); bool isMouseOver(); + + enum EZoomLevel + { + ZOOM_NONE = 0, + ZOOM_FAR, + ZOOM_MEDIUM, + ZOOM_NEAR + }; + + EZoomLevel getZoomLevel() const { return mCurrentZoom; } void nextZoomLevel(); void resetZoomLevel(bool reset_camera = true); void close(); @@ -66,13 +76,6 @@ public: void setMediaFace(LLPointer<LLViewerObject> objectp, S32 face, viewer_media_t media_impl, LLVector3 pick_normal = LLVector3::zero); - enum EZoomLevel - { - ZOOM_NONE = 0, - ZOOM_FAR, - ZOOM_MEDIUM, - ZOOM_NEAR - }; static const EZoomLevel kZoomLevels[]; static const int kNumZoomLevels; @@ -111,6 +114,7 @@ private: void onToggleMute(); void showVolumeSlider(); void hideVolumeSlider(); + bool shouldVolumeSliderBeVisible(); static void onScrollUp(void* user_data); static void onScrollUpHeld(void* user_data); @@ -155,8 +159,6 @@ private: LLUICtrl *mMediaPlaySliderCtrl; LLUICtrl *mVolumeCtrl; LLButton *mMuteBtn; - LLUICtrl *mVolumeUpCtrl; - LLUICtrl *mVolumeDownCtrl; LLSliderCtrl *mVolumeSliderCtrl; LLIconCtrl *mWhitelistIcon; LLIconCtrl *mSecureLockIcon; @@ -171,6 +173,7 @@ private: F32 mZoomNearPadding; F32 mZoomMediumPadding; F32 mZoomFarPadding; + S32 mTopWorldViewAvoidZone; LLUICtrl *mMediaPanelScroll; LLButton *mScrollUpCtrl; diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index c73ade53c8..b5d85dfd4b 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -197,11 +197,7 @@ void LLPanelProfile::togglePanel(LLPanel* panel, const LLSD& key) } else { - panel->setVisible(FALSE); - if (panel->getParent() == this) - { - removeChild(panel); - } + closePanel(panel); getTabCtrl()->getCurrentPanel()->onOpen(getAvatarId()); } @@ -248,6 +244,16 @@ void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params) panel->setRect(new_rect); } +void LLPanelProfile::closePanel(LLPanel* panel) +{ + panel->setVisible(FALSE); + + if (panel->getParent() == this) + { + removeChild(panel); + } +} + S32 LLPanelProfile::notifyParent(const LLSD& info) { std::string action = info["action"]; diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h index bcf4bdd0ec..f1aa3f10f8 100644 --- a/indra/newview/llpanelprofile.h +++ b/indra/newview/llpanelprofile.h @@ -55,6 +55,8 @@ public: virtual void openPanel(LLPanel* panel, const LLSD& params); + virtual void closePanel(LLPanel* panel); + S32 notifyParent(const LLSD& info); protected: diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp index 7832f63e6a..044036ea50 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 5dc617d4a0..9b87e146a8 100644 --- a/indra/newview/llpanelprofileview.h +++ b/indra/newview/llpanelprofileview.h @@ -64,8 +64,6 @@ public: /*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 @@ public: 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 @@ private: LLTextBox* mStatusText; AvatarStatusObserver* mAvatarStatusObserver; - bool mAvatarIsOnline; }; #endif //LL_LLPANELPROFILEVIEW_H diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 77c2fb7c8c..90c8f2551f 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" @@ -308,7 +307,7 @@ void LLTeleportHistoryFlatItemStorage::purge() //////////////////////////////////////////////////////////////////////////////// LLTeleportHistoryPanel::ContextMenu::ContextMenu() : - mMenu(NULL) + mMenu(NULL), mIndex(0) { } @@ -452,6 +451,7 @@ BOOL LLTeleportHistoryPanel::postBuild() registrar.add("TeleportHistory.ExpandAllFolders", boost::bind(&LLTeleportHistoryPanel::onExpandAllFolders, this)); registrar.add("TeleportHistory.CollapseAllFolders", boost::bind(&LLTeleportHistoryPanel::onCollapseAllFolders, this)); registrar.add("TeleportHistory.ClearTeleportHistory", boost::bind(&LLTeleportHistoryPanel::onClearTeleportHistory, this)); + mEnableCallbackRegistrar.add("TeleportHistory.GearMenu.Enable", boost::bind(&LLTeleportHistoryPanel::isActionEnabled, this, _2)); LLMenuGL* gear_menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_teleport_history_gear.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); if(gear_menu) @@ -549,7 +549,7 @@ void LLTeleportHistoryPanel::updateVerbs() LLTeleportHistoryFlatItem* itemp = dynamic_cast<LLTeleportHistoryFlatItem *> (mLastSelectedFlatlList->getSelectedItem()); - mTeleportBtn->setEnabled(NULL != itemp && itemp->getIndex() < (S32)mTeleportHistory->getItems().size() - 1); + mTeleportBtn->setEnabled(NULL != itemp); mShowOnMapBtn->setEnabled(NULL != itemp); } @@ -722,7 +722,10 @@ void LLTeleportHistoryPanel::onTeleportHistoryChange(S32 removed_index) if (-1 == removed_index) showTeleportHistory(); // recreate all items else + { replaceItem(removed_index); // replace removed item by most recent + updateVerbs(); + } } void LLTeleportHistoryPanel::replaceItem(S32 removed_index) @@ -937,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(); @@ -979,6 +985,49 @@ void LLTeleportHistoryPanel::onGearButtonClicked() LLMenuGL::showPopup(this, menu, menu_x, menu_y); } +bool LLTeleportHistoryPanel::isActionEnabled(const LLSD& userdata) const +{ + S32 tabs_cnt = mItemContainers.size(); + + bool has_expanded_tabs = false; + bool has_collapsed_tabs = false; + + for (S32 n = 0; n < tabs_cnt; n++) + { + LLAccordionCtrlTab* tab = mItemContainers.get(n); + if (!tab->getVisible()) + continue; + + if (tab->getDisplayChildren()) + { + has_expanded_tabs = true; + } + else + { + has_collapsed_tabs = true; + } + + if (has_expanded_tabs && has_collapsed_tabs) + { + break; + } + } + + std::string command_name = userdata.asString(); + + if (has_expanded_tabs && command_name == "collapse_all") + { + return true; + } + + if (has_collapsed_tabs && command_name == "expand_all") + { + return true; + } + + return false; +} + void LLTeleportHistoryPanel::setAccordionCollapsedByUser(LLUICtrl* acc_tab, bool collapsed) { LLSD param = acc_tab->getValue(); @@ -989,7 +1038,7 @@ void LLTeleportHistoryPanel::setAccordionCollapsedByUser(LLUICtrl* acc_tab, bool bool LLTeleportHistoryPanel::isAccordionCollapsedByUser(LLUICtrl* acc_tab) { LLSD param = acc_tab->getValue(); - if(!param.has("acc_collapsed")) + if(!param.has(COLLAPSED_BY_USER)) { return false; } @@ -1001,4 +1050,11 @@ void LLTeleportHistoryPanel::onAccordionExpand(LLUICtrl* ctrl, const LLSD& param bool expanded = param.asBoolean(); // Save accordion tab state to restore it in refresh() setAccordionCollapsedByUser(ctrl, !expanded); + + // Reset selection upon accordion being collapsed + // to disable "Teleport" and "Map" buttons for hidden item. + if (!expanded && mLastSelectedFlatlList) + { + mLastSelectedFlatlList->resetSelection(); + } } diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h index 0c0f891f32..4eeaec7705 100644 --- a/indra/newview/llpanelteleporthistory.h +++ b/indra/newview/llpanelteleporthistory.h @@ -97,6 +97,7 @@ private: void handleItemSelect(LLFlatListView* ); LLFlatListView* getFlatListViewFromTab(LLAccordionCtrlTab *); void onGearButtonClicked(); + bool isActionEnabled(const LLSD& userdata) const; void setAccordionCollapsedByUser(LLUICtrl* acc_tab, bool collapsed); bool isAccordionCollapsedByUser(LLUICtrl* acc_tab); diff --git a/indra/newview/llpanelvolume.cpp b/indra/newview/llpanelvolume.cpp index 5a70842a73..fbe68b4d92 100644 --- a/indra/newview/llpanelvolume.cpp +++ b/indra/newview/llpanelvolume.cpp @@ -54,7 +54,7 @@ #include "llcolorswatch.h" #include "lltexturectrl.h" #include "llcombobox.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llfocusmgr.h" #include "llmanipscale.h" #include "llpreviewscript.h" @@ -470,7 +470,7 @@ void LLPanelVolume::sendIsFlexible() if (is_flexible) { - LLFirstUse::useFlexible(); + //LLFirstUse::useFlexible(); if (objectp->getClickAction() == CLICK_ACTION_SIT) { diff --git a/indra/newview/llpanelvolumepulldown.cpp b/indra/newview/llpanelvolumepulldown.cpp new file mode 100644 index 0000000000..559997254e --- /dev/null +++ b/indra/newview/llpanelvolumepulldown.cpp @@ -0,0 +1,152 @@ +/** + * @file llpanelvolumepulldown.cpp + * @author Tofu Linden + * @brief A floater showing the master volume pull-down + * + * $LicenseInfo:firstyear=2008&license=viewergpl$ + * + * Copyright (c) 2008-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 "llviewerprecompiledheaders.h" + +#include "llpanelvolumepulldown.h" + +// Viewer libs +#include "llviewercontrol.h" +#include "llstatusbar.h" + +// Linden libs +#include "llbutton.h" +#include "lltabcontainer.h" +#include "llfloaterreg.h" +#include "llfloaterpreference.h" +#include "llslider.h" + +/* static */ const F32 LLPanelVolumePulldown::sAutoCloseFadeStartTimeSec = 4.0f; +/* static */ const F32 LLPanelVolumePulldown::sAutoCloseTotalTimeSec = 5.0f; + +///---------------------------------------------------------------------------- +/// Class LLPanelVolumePulldown +///---------------------------------------------------------------------------- + +// Default constructor +LLPanelVolumePulldown::LLPanelVolumePulldown() +{ + mCommitCallbackRegistrar.add("Vol.setControlFalse", boost::bind(&LLPanelVolumePulldown::setControlFalse, this, _2)); + mCommitCallbackRegistrar.add("Vol.GoAudioPrefs", boost::bind(&LLPanelVolumePulldown::onAdvancedButtonClick, this, _2)); + LLUICtrlFactory::instance().buildPanel(this, "panel_volume_pulldown.xml"); +} + +BOOL LLPanelVolumePulldown::postBuild() +{ + // set the initial volume-slider's position to reflect reality + LLSlider* volslider = getChild<LLSlider>( "mastervolume" ); + volslider->setValue(gSavedSettings.getF32("AudioLevelMaster")); + + return LLPanel::postBuild(); +} + +/*virtual*/ +void LLPanelVolumePulldown::onMouseEnter(S32 x, S32 y, MASK mask) +{ + mHoverTimer.stop(); + LLPanel::onMouseEnter(x,y,mask); +} + + +/*virtual*/ +void LLPanelVolumePulldown::onMouseLeave(S32 x, S32 y, MASK mask) +{ + mHoverTimer.start(); + LLPanel::onMouseLeave(x,y,mask); +} + +/*virtual*/ +void LLPanelVolumePulldown::handleVisibilityChange ( BOOL new_visibility ) +{ + if (new_visibility) + { + mHoverTimer.start(); // timer will be stopped when mouse hovers over panel + } + else + { + mHoverTimer.stop(); + } +} + +/*virtual*/ +void LLPanelVolumePulldown::onTopLost() +{ + setVisible(FALSE); +} + +void LLPanelVolumePulldown::onAdvancedButtonClick(const LLSD& user_data) +{ + // close the global volume minicontrol, we're bringing up the big one + setVisible(FALSE); + + // bring up the prefs floater + LLFloaterPreference* prefsfloater = dynamic_cast<LLFloaterPreference*> + (LLFloaterReg::showInstance("preferences")); + if (prefsfloater) + { + // grab the 'audio' panel from the preferences floater and + // bring it the front! + LLTabContainer* tabcontainer = prefsfloater->getChild<LLTabContainer>("pref core"); + LLPanel* audiopanel = prefsfloater->getChild<LLPanel>("audio"); + if (tabcontainer && audiopanel) + { + tabcontainer->selectTabPanel(audiopanel); + } + } +} + +void LLPanelVolumePulldown::setControlFalse(const LLSD& user_data) +{ + std::string control_name = user_data.asString(); + LLControlVariable* control = findControl(control_name); + + if (control) + control->set(LLSD(FALSE)); +} + +//virtual +void LLPanelVolumePulldown::draw() +{ + F32 alpha = mHoverTimer.getStarted() + ? clamp_rescale(mHoverTimer.getElapsedTimeF32(), sAutoCloseFadeStartTimeSec, sAutoCloseTotalTimeSec, 1.f, 0.f) + : 1.0f; + LLViewDrawContext context(alpha); + + LLPanel::draw(); + + if (alpha == 0.f) + { + setVisible(FALSE); + } +} + diff --git a/indra/newview/llpanelvolumepulldown.h b/indra/newview/llpanelvolumepulldown.h new file mode 100644 index 0000000000..9f20caa1a8 --- /dev/null +++ b/indra/newview/llpanelvolumepulldown.h @@ -0,0 +1,64 @@ +/** + * @file llpanelvolumepulldown.h + * @author Tofu Linden + * @brief A panel showing the master volume pull-down + * + * $LicenseInfo:firstyear=2008&license=viewergpl$ + * + * Copyright (c) 2008-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_LLPANELVOLUMEPULLDOWN_H +#define LL_LLPANELVOLUMEPULLDOWN_H + +#include "linden_common.h" + +#include "llpanel.h" + +class LLFrameTimer; + +class LLPanelVolumePulldown : public LLPanel +{ + public: + LLPanelVolumePulldown(); + /*virtual*/ void draw(); + /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask); + /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); + /*virtual*/ void handleVisibilityChange ( BOOL new_visibility ); + /*virtual*/ void onTopLost(); + /*virtual*/ BOOL postBuild(); + + private: + void setControlFalse(const LLSD& user_data); + void onAdvancedButtonClick(const LLSD& user_data); + + LLFrameTimer mHoverTimer; + static const F32 sAutoCloseFadeStartTimeSec; + static const F32 sAutoCloseTotalTimeSec; +}; + + +#endif // LL_LLPANELVOLUMEPULLDOWN_H diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp index db4f9a2d95..2748daaffa 100644 --- a/indra/newview/llparticipantlist.cpp +++ b/indra/newview/llparticipantlist.cpp @@ -70,7 +70,9 @@ LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* av mSpeakerMgr->addListener(mSpeakerModeratorListener, "update_moderator"); mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData")); - mAvatarListDoubleClickConnection = mAvatarList->setDoubleClickCallback(boost::bind(&LLParticipantList::onAvatarListDoubleClicked, this, mAvatarList)); + LL_DEBUGS("SpeakingIndicator") << "Set session for speaking indicators: " << mSpeakerMgr->getSessionID() << LL_ENDL; + mAvatarList->setSessionID(mSpeakerMgr->getSessionID()); + mAvatarListDoubleClickConnection = mAvatarList->setItemDoubleClickCallback(boost::bind(&LLParticipantList::onAvatarListDoubleClicked, this, _1)); mAvatarListRefreshConnection = mAvatarList->setRefreshCompleteCallback(boost::bind(&LLParticipantList::onAvatarListRefreshed, this, _1, _2)); // Set onAvatarListDoubleClicked as default on_return action. mAvatarListReturnConnection = mAvatarList->setReturnCallback(boost::bind(&LLParticipantList::onAvatarListDoubleClicked, this, mAvatarList)); @@ -125,6 +127,8 @@ LLParticipantList::~LLParticipantList() delete mParticipantListMenu; mParticipantListMenu = NULL; } + + mAvatarList->setContextMenu(NULL); } void LLParticipantList::setSpeakingIndicatorsVisible(BOOL visible) @@ -132,10 +136,15 @@ void LLParticipantList::setSpeakingIndicatorsVisible(BOOL visible) mAvatarList->setSpeakingIndicatorsVisible(visible); }; -void LLParticipantList::onAvatarListDoubleClicked(LLAvatarList* list) +void LLParticipantList::onAvatarListDoubleClicked(LLUICtrl* ctrl) { - // NOTE(EM): Should we check if there is multiple selection and start conference if it is so? - LLUUID clicked_id = list->getSelectedUUID(); + LLAvatarListItem* item = dynamic_cast<LLAvatarListItem*>(ctrl); + if(!item) + { + return; + } + + LLUUID clicked_id = item->getAvatarId(); if (clicked_id.isNull() || clicked_id == gAgent.getID()) return; @@ -166,7 +175,6 @@ void LLParticipantList::onAvatarListRefreshed(LLUICtrl* ctrl, const LLSD& param) { name.erase(found, moderator_indicator_len); item->setName(name); - item->reshapeAvatarName(); } } } @@ -188,7 +196,6 @@ void LLParticipantList::onAvatarListRefreshed(LLUICtrl* ctrl, const LLSD& param) name += " "; name += moderator_indicator; item->setName(name); - item->reshapeAvatarName(); } } } @@ -229,7 +236,7 @@ bool LLParticipantList::onAddItemEvent(LLPointer<LLOldEvents::LLEvent> event, co { LLUUID uu_id = event->getValue().asUUID(); - if (mValidateSpeakerCallback && mValidateSpeakerCallback(uu_id)) + if (mValidateSpeakerCallback && !mValidateSpeakerCallback(uu_id)) { return true; } @@ -279,6 +286,9 @@ bool LLParticipantList::onModeratorUpdateEvent(LLPointer<LLOldEvents::LLEvent> e mModeratorList.erase(id); } } + + // apply changes immediately + onAvatarListRefreshed(mAvatarList, LLSD()); } } return true; @@ -425,6 +435,10 @@ LLContextMenu* LLParticipantList::LLParticipantListMenu::createMenu() LLContextMenu* main_menu = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>( "menu_participant_list.xml", LLMenuGL::sMenuContainer, LLViewerMenuHolderGL::child_registry_t::instance()); + // 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); + main_menu->setItemVisible("SortByRecentSpeakers", is_sort_visible); main_menu->setItemVisible("Moderator Options", isGroupModerator()); main_menu->arrangeAndClear(); @@ -450,11 +464,6 @@ void LLParticipantList::LLParticipantListMenu::show(LLView* spawning_view, const LLMenuGL::sMenuContainer->childSetVisible("ModerateVoiceUnMuteSelected", false); LLMenuGL::sMenuContainer->childSetVisible("ModerateVoiceUnMuteOthers", false); } - - // Don't show sort options for P2P chat - bool is_sort_visible = (mParent.mAvatarList && mParent.mAvatarList->size() > 1); - LLMenuGL::sMenuContainer->childSetVisible("SortByName", is_sort_visible); - LLMenuGL::sMenuContainer->childSetVisible("SortByRecentSpeakers", is_sort_visible); } void LLParticipantList::LLParticipantListMenu::sortParticipantList(const LLSD& userdata) @@ -576,7 +585,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) + if (item == "can_mute_text" || "can_block" == item || "can_share" == item || "can_im" == item + || "can_pay" == item) { return mUUIDs.front() != gAgentID; } @@ -592,8 +602,7 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& if (speakerp.notNull()) { // not in voice participants can not be moderated - return speakerp->mStatus == LLSpeaker::STATUS_VOICE_ACTIVE - || speakerp->mStatus == LLSpeaker::STATUS_MUTED; + return speakerp->isInVoiceChannel(); } } return false; @@ -612,7 +621,7 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& for (;id != uuids_end; ++id) { - if ( LLAvatarActions::isFriend(*id) ) + if ( *id == gAgentID || LLAvatarActions::isFriend(*id) ) { result = false; break; @@ -622,7 +631,9 @@ bool LLParticipantList::LLParticipantListMenu::enableContextMenuItem(const LLSD& } else if (item == "can_call") { - return LLVoiceClient::voiceEnabled(); + 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/llparticipantlist.h b/indra/newview/llparticipantlist.h index 70badbc40d..e1b1b5af00 100644 --- a/indra/newview/llparticipantlist.h +++ b/indra/newview/llparticipantlist.h @@ -232,7 +232,7 @@ class LLParticipantList }; private: - void onAvatarListDoubleClicked(LLAvatarList* list); + void onAvatarListDoubleClicked(LLUICtrl* ctrl); void onAvatarListRefreshed(LLUICtrl* ctrl, const LLSD& param); /** diff --git a/indra/newview/llplacesinventorybridge.cpp b/indra/newview/llplacesinventorybridge.cpp index 83443687c9..4fe69f295c 100644 --- a/indra/newview/llplacesinventorybridge.cpp +++ b/indra/newview/llplacesinventorybridge.cpp @@ -66,7 +66,7 @@ void LLPlacesLandmarkBridge::buildContextMenu(LLMenuGL& menu, U32 flags) std::vector<std::string> items; std::vector<std::string> disabled_items; - if(isInTrash()) + if(isItemInTrash()) { items.push_back(std::string("Purge Item")); if (!isItemRemovable()) diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp index 4de953a59d..f1e450a083 100644 --- a/indra/newview/llplacesinventorypanel.cpp +++ b/indra/newview/llplacesinventorypanel.cpp @@ -118,6 +118,7 @@ BOOL LLPlacesInventoryPanel::postBuild() mScroller->addChild(mFolders); mFolders->setScrollContainer(mScroller); + mFolders->addChild(mFolders->mStatusTextBox); // cut subitems @@ -143,6 +144,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 */ /************************************************************************/ @@ -157,6 +175,15 @@ void LLPlacesInventoryPanel::restoreFolderState() // PUBLIC METHODS ////////////////////////////////////////////////////////////////////////// +LLPlacesFolderView::LLPlacesFolderView(const LLFolderView::Params& p) +: LLFolderView(p) +{ + // we do not need auto select functionality in places landmarks, so override default behavior. + // this disables applying of the LLSelectFirstFilteredItem in LLFolderView::doIdle. + // Fixed issues: EXT-1631, EXT-4994. + mAutoSelectOverride = TRUE; +} + BOOL LLPlacesFolderView::handleRightMouseDown(S32 x, S32 y, MASK mask) { // let children to change selection first diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h index 7b34045d32..04c6758eae 100644 --- a/indra/newview/llplacesinventorypanel.h +++ b/indra/newview/llplacesinventorypanel.h @@ -57,6 +57,8 @@ public: void saveFolderState(); void restoreFolderState(); + virtual S32 notify(const LLSD& info) ; + private: LLSaveFolderState* mSavedFolderState; }; @@ -65,7 +67,7 @@ private: class LLPlacesFolderView : public LLFolderView { public: - LLPlacesFolderView(const LLFolderView::Params& p) : LLFolderView(p) {}; + LLPlacesFolderView(const LLFolderView::Params& p); /** * Handles right mouse down * diff --git a/indra/newview/llpreview.h b/indra/newview/llpreview.h index 3b9f7f9882..551e247d8c 100644 --- a/indra/newview/llpreview.h +++ b/indra/newview/llpreview.h @@ -74,7 +74,7 @@ public: /*virtual*/ BOOL postBuild(); - void setObjectID(const LLUUID& object_id); + virtual void setObjectID(const LLUUID& object_id); void setItem( LLInventoryItem* item ); void setAssetId(const LLUUID& asset_id); diff --git a/indra/newview/llpreviewanim.cpp b/indra/newview/llpreviewanim.cpp index 92bd4dc62b..0cc747f789 100644 --- a/indra/newview/llpreviewanim.cpp +++ b/indra/newview/llpreviewanim.cpp @@ -79,7 +79,7 @@ BOOL LLPreviewAnim::postBuild() childSetAction("Anim audition btn",auditionAnim, this); childSetCommitCallback("desc", LLPreview::onText, this); - childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe); return LLPreview::postBuild(); } diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index 2a40cbaba0..57a8ca3d12 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) { @@ -364,6 +370,12 @@ BOOL LLPreviewGesture::postBuild() LLTextBox* text; LLCheckBoxCtrl* check; + edit = getChild<LLLineEditor>("name"); + edit->setKeystrokeCallback(onKeystrokeCommit, this); + + edit = getChild<LLLineEditor>("desc"); + edit->setKeystrokeCallback(onKeystrokeCommit, this); + edit = getChild<LLLineEditor>("trigger_editor"); edit->setKeystrokeCallback(onKeystrokeCommit, this); edit->setCommitCallback(onCommitSetDirty, this); @@ -460,7 +472,7 @@ BOOL LLPreviewGesture::postBuild() edit = getChild<LLLineEditor>("wait_time_editor"); edit->setEnabled(FALSE); edit->setVisible(FALSE); - edit->setPrevalidate(LLLineEditor::prevalidateFloat); + edit->setPrevalidate(LLTextValidate::validateFloat); // edit->setKeystrokeCallback(onKeystrokeCommit, this); edit->setCommitOnFocusLost(TRUE); edit->setCommitCallback(onCommitWaitTime, this); @@ -491,13 +503,11 @@ BOOL LLPreviewGesture::postBuild() if (item) { - childSetCommitCallback("desc", LLPreview::onText, this); childSetText("desc", item->getDescription()); - childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe); - childSetCommitCallback("name", LLPreview::onText, this); childSetText("name", item->getName()); - childSetPrevalidate("name", &LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("name", &LLTextValidate::validateASCIIPrintableNoPipe); } return LLPreview::postBuild(); @@ -1071,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 19fa1dcc37..5968e936ef 100644 --- a/indra/newview/llpreviewgesture.h +++ b/indra/newview/llpreviewgesture.h @@ -60,6 +60,7 @@ public: 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, diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp index 95756ac5f3..ee8e3f1db6 100644 --- a/indra/newview/llpreviewnotecard.cpp +++ b/indra/newview/llpreviewnotecard.cpp @@ -55,7 +55,6 @@ #include "llviewerobjectlist.h" #include "llviewerregion.h" #include "lldir.h" -//#include "llfloaterchat.h" #include "llviewerstats.h" #include "llviewercontrol.h" // gSavedSettings #include "llappviewer.h" // app_abort_quit() @@ -96,7 +95,7 @@ BOOL LLPreviewNotecard::postBuild() childSetCommitCallback("desc", LLPreview::onText, this); if (item) childSetText("desc", item->getDescription()); - childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe); return LLPreview::postBuild(); } diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index 646c9fb6a4..f5a9f82d50 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -79,7 +79,6 @@ #include "llslider.h" #include "lldir.h" #include "llcombobox.h" -//#include "llfloaterchat.h" #include "llviewerstats.h" #include "llviewertexteditor.h" #include "llviewerwindow.h" @@ -662,7 +661,9 @@ void LLScriptEdCore::onBtnDynamicHelp() live_help_floater = new LLFloater(LLSD()); LLUICtrlFactory::getInstance()->buildFloater(live_help_floater, "floater_lsl_guide.xml", NULL); LLFloater* parent = dynamic_cast<LLFloater*>(getParent()); - parent->addDependentFloater(live_help_floater, TRUE); + llassert(parent); + if (parent) + parent->addDependentFloater(live_help_floater, TRUE); live_help_floater->childSetCommitCallback("lock_check", onCheckLock, this); live_help_floater->childSetValue("lock_check", gSavedSettings.getBOOL("ScriptHelpFollowsCursor")); live_help_floater->childSetCommitCallback("history_combo", onHelpComboCommit, this); @@ -954,9 +955,13 @@ BOOL LLPreviewLSL::postBuild() { const LLInventoryItem* item = getItem(); + llassert(item); + if (item) + { + childSetText("desc", item->getDescription()); + } childSetCommitCallback("desc", LLPreview::onText, this); - childSetText("desc", item->getDescription()); - childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe); return LLPreview::postBuild(); } @@ -1905,7 +1910,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/llpreviewsound.cpp b/indra/newview/llpreviewsound.cpp index d7fd252fb6..44b828854b 100644 --- a/indra/newview/llpreviewsound.cpp +++ b/indra/newview/llpreviewsound.cpp @@ -75,7 +75,7 @@ BOOL LLPreviewSound::postBuild() button->setSoundFlags(LLView::SILENT); childSetCommitCallback("desc", LLPreview::onText, this); - childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe); return LLPreview::postBuild(); } diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index 26368fb0a8..22a1ef94a7 100644 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -74,22 +74,10 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key) mLastHeight(0), mLastWidth(0), mAspectRatio(0.f), - mPreviewToSave(FALSE) + mPreviewToSave(FALSE), + mImage(NULL) { - const LLViewerInventoryItem *item = static_cast<const LLViewerInventoryItem*>(getItem()); - if(item) - { - mShowKeepDiscard = item->getPermissions().getCreator() != gAgent.getID(); - mImageID = item->getAssetUUID(); - mIsCopyable = item->checkPermissionsSet(PERM_ITEM_UNRESTRICTED); - } - else // not an item, assume it's an asset id - { - mImageID = mItemUUID; - mCopyToInv = TRUE; - mIsCopyable = TRUE; - } - + updateImageID(); if (key.has("save_as")) { mPreviewToSave = TRUE; @@ -97,7 +85,6 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key) //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_texture.xml", FALSE); } - LLPreviewTexture::~LLPreviewTexture() { if( mLoadingFullImage ) @@ -129,7 +116,8 @@ BOOL LLPreviewTexture::postBuild() } childSetAction("save_tex_btn", LLPreviewTexture::onSaveAsBtn, this); - childSetVisible("save_tex_btn", canSaveAs()); + childSetVisible("save_tex_btn", true); + childSetEnabled("save_tex_btn", canSaveAs()); if (!mCopyToInv) { @@ -139,7 +127,7 @@ BOOL LLPreviewTexture::postBuild() { childSetCommitCallback("desc", LLPreview::onText, this); childSetText("desc", item->getDescription()); - childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("desc", &LLTextValidate::validateASCIIPrintableNoPipe); } } @@ -261,6 +249,7 @@ void LLPreviewTexture::draw() } } } + } @@ -295,18 +284,52 @@ void LLPreviewTexture::saveAs() // virtual void LLPreviewTexture::reshape(S32 width, S32 height, BOOL called_from_parent) { -// mLastHeight = 0; -// mLastWidth = 0; - mUpdateDimensions = TRUE; LLPreview::reshape(width, height, called_from_parent); + + LLRect dim_rect; + childGetRect("dimensions", dim_rect); + + S32 horiz_pad = 2 * (LLPANEL_BORDER_WIDTH + PREVIEW_PAD) + PREVIEW_RESIZE_HANDLE_SIZE; + + // add space for dimensions and aspect ratio + S32 info_height = dim_rect.mTop + CLIENT_RECT_VPAD; + + LLRect client_rect(horiz_pad, getRect().getHeight(), getRect().getWidth() - horiz_pad, 0); + client_rect.mTop -= (PREVIEW_HEADER_SIZE + CLIENT_RECT_VPAD); + client_rect.mBottom += PREVIEW_BORDER + CLIENT_RECT_VPAD + info_height ; + + S32 client_width = client_rect.getWidth(); + S32 client_height = client_rect.getHeight(); + + if (mAspectRatio > 0.f) + { + if(mAspectRatio > 1.f) + { + client_height = llceil((F32)client_width / mAspectRatio); + if(client_height > client_rect.getHeight()) + { + client_height = client_rect.getHeight(); + client_width = llceil((F32)client_height * mAspectRatio); + } + } + else//mAspectRatio < 1.f + { + client_width = llceil((F32)client_height * mAspectRatio); + if(client_width > client_rect.getWidth()) + { + client_width = client_rect.getWidth(); + client_height = llceil((F32)client_width / mAspectRatio); + } + } + } + + mClientRect.setLeftTopAndSize(client_rect.getCenterX() - (client_width / 2), client_rect.getCenterY() + (client_height / 2), client_width, client_height); + } // virtual void LLPreviewTexture::onFocusReceived() { - mLastHeight = 0; - mLastWidth = 0; - mUpdateDimensions = TRUE; LLPreview::onFocusReceived(); } @@ -317,12 +340,12 @@ void LLPreviewTexture::openToSave() // static void LLPreviewTexture::onFileLoadedForSave(BOOL success, - LLViewerFetchedTexture *src_vi, - LLImageRaw* src, - LLImageRaw* aux_src, - S32 discard_level, - BOOL final, - void* userdata) + LLViewerFetchedTexture *src_vi, + LLImageRaw* src, + LLImageRaw* aux_src, + S32 discard_level, + BOOL final, + void* userdata) { LLUUID* item_uuid = (LLUUID*) userdata; @@ -377,143 +400,96 @@ void LLPreviewTexture::updateDimensions() { if (!mImage) return; - - mUpdateDimensions = FALSE; - - S32 image_height = llmax(1, mImage->getFullHeight()); - S32 image_width = llmax(1, mImage->getFullWidth()); - // Attempt to make the image 1:1 on screen. - // If that fails, cut width by half. - S32 client_width = image_width; - S32 client_height = image_height; - S32 horiz_pad = 2 * (LLPANEL_BORDER_WIDTH + PREVIEW_PAD) + PREVIEW_RESIZE_HANDLE_SIZE; - S32 vert_pad = PREVIEW_HEADER_SIZE + 2 * CLIENT_RECT_VPAD + LLPANEL_BORDER_WIDTH; - S32 max_client_width = gViewerWindow->getWindowWidthScaled() - horiz_pad; - S32 max_client_height = gViewerWindow->getWindowHeightScaled() - vert_pad; - if (mAspectRatio > 0.f) + if(mImage->getFullWidth() == 0 || mImage->getFullHeight() == 0) { - client_height = llceil((F32)client_width / mAspectRatio); + return; } - while ((client_width > max_client_width) || - (client_height > max_client_height )) - { - client_width /= 2; - client_height /= 2; - } - S32 view_width = client_width + horiz_pad; - S32 view_height = client_height + vert_pad; - - // set text on dimensions display (should be moved out of here and into a callback of some sort) + mUpdateDimensions = FALSE; + childSetTextArg("dimensions", "[WIDTH]", llformat("%d", mImage->getFullWidth())); childSetTextArg("dimensions", "[HEIGHT]", llformat("%d", mImage->getFullHeight())); + + LLRect dim_rect; + childGetRect("dimensions", dim_rect); + + S32 horiz_pad = 2 * (LLPANEL_BORDER_WIDTH + PREVIEW_PAD) + PREVIEW_RESIZE_HANDLE_SIZE; + // add space for dimensions and aspect ratio - S32 info_height = 0; - LLRect aspect_rect; - childGetRect("combo_aspect_ratio", aspect_rect); - S32 aspect_height = aspect_rect.getHeight(); - info_height += aspect_height + CLIENT_RECT_VPAD; - view_height += info_height; - - S32 button_height = 0; - if (mShowKeepDiscard || mCopyToInv) { //mCopyToInvBtn + S32 info_height = dim_rect.mTop + CLIENT_RECT_VPAD; - // add space for buttons - view_height += (BTN_HEIGHT + CLIENT_RECT_VPAD) * 3; - button_height = (BTN_HEIGHT + PREVIEW_PAD) * 3; - } + S32 screen_width = gFloaterView->getSnapRect().getWidth(); + S32 screen_height = gFloaterView->getSnapRect().getHeight(); - view_width = llmax(view_width, getMinWidth()); - view_height = llmax(view_height, getMinHeight()); - - if (view_height != mLastHeight || view_width != mLastWidth) + S32 max_image_width = screen_width - 2*horiz_pad; + S32 max_image_height = screen_height - (PREVIEW_HEADER_SIZE + CLIENT_RECT_VPAD) + - (PREVIEW_BORDER + CLIENT_RECT_VPAD + info_height); + + S32 client_width = llmin(max_image_width,mImage->getFullWidth()); + S32 client_height = llmin(max_image_height,mImage->getFullHeight()); + + if (mAspectRatio > 0.f) { - if (getHost()) + if(mAspectRatio > 1.f) { - getHost()->growToFit(view_width, view_height); - reshape( view_width, view_height ); - setOrigin( 0, getHost()->getRect().getHeight() - (view_height + PREVIEW_HEADER_SIZE) ); + client_height = llceil((F32)client_width / mAspectRatio); + if(client_height > max_image_height) + { + client_height = max_image_height; + client_width = llceil((F32)client_height * mAspectRatio); + } } - else + else//mAspectRatio < 1.f { - S32 old_top = getRect().mTop; - S32 old_left = getRect().mLeft; - reshape( view_width, view_height ); - S32 new_bottom = old_top - getRect().getHeight(); - setOrigin( old_left, new_bottom ); - } - - // Try to keep whole view onscreen, don't allow partial offscreen. - if (getHost()) - gFloaterView->adjustToFitScreen(getHost(), FALSE); - else - gFloaterView->adjustToFitScreen(this, FALSE); - - if (image_height > 1 && image_width > 1) - { - // Resize until we know the image's height - mLastWidth = view_width; - mLastHeight = view_height; + client_width = llceil((F32)client_height * mAspectRatio); + if(client_width > max_image_width) + { + client_width = max_image_width; + client_height = llceil((F32)client_width / mAspectRatio); + } } } - - if (!mUserResized) - { - // clamp texture size to fit within actual size of floater after attempting resize - client_width = llmin(client_width, getRect().getWidth() - horiz_pad); - client_height = llmin(client_height, getRect().getHeight() - PREVIEW_HEADER_SIZE - - (2 * CLIENT_RECT_VPAD) - LLPANEL_BORDER_WIDTH - info_height); - - - } else { - client_width = getRect().getWidth() - horiz_pad; - if (mAspectRatio > 0) + + if(client_height > max_image_height) { - client_height = llround(client_width / mAspectRatio); + F32 ratio = (F32)max_image_height/client_height; + client_height = max_image_height; + client_width = llceil((F32)client_height * ratio); } - else + + if(client_width > max_image_width) { - client_height = getRect().getHeight() - vert_pad; + F32 ratio = (F32)max_image_width/client_width; + client_width = max_image_width; + client_height = llceil((F32)client_width * ratio); } } - S32 max_height = getRect().getHeight() - PREVIEW_BORDER - button_height - - CLIENT_RECT_VPAD - info_height - CLIENT_RECT_VPAD - PREVIEW_HEADER_SIZE; + //now back to whole floater + S32 floater_width = llmax(getMinWidth(),client_width + 2*horiz_pad); + S32 floater_height = llmax(getMinHeight(),client_height + (PREVIEW_HEADER_SIZE + CLIENT_RECT_VPAD) + + (PREVIEW_BORDER + CLIENT_RECT_VPAD + info_height)); - if (mAspectRatio > 0.f) - { - max_height = llmax(max_height, 1); + //reshape floater + reshape( floater_width, floater_height ); + gFloaterView->adjustToFitScreen(this, FALSE); - if (client_height > max_height) - { - client_height = max_height; - client_width = llround(client_height * mAspectRatio); - } - } - else - { - S32 max_width = getRect().getWidth() - horiz_pad; + //setup image rect... + LLRect client_rect(horiz_pad, getRect().getHeight(), getRect().getWidth() - horiz_pad, 0); + client_rect.mTop -= (PREVIEW_HEADER_SIZE + CLIENT_RECT_VPAD); + client_rect.mBottom += PREVIEW_BORDER + CLIENT_RECT_VPAD + info_height ; - client_height = llclamp(client_height, 1, max_height); - client_width = llclamp(client_width, 1, max_width); - } - - LLRect window_rect(0, getRect().getHeight(), getRect().getWidth(), 0); - window_rect.mTop -= (PREVIEW_HEADER_SIZE + CLIENT_RECT_VPAD); - window_rect.mBottom += PREVIEW_BORDER + button_height + CLIENT_RECT_VPAD + info_height + CLIENT_RECT_VPAD; + mClientRect.setLeftTopAndSize(client_rect.getCenterX() - (client_width / 2), client_rect.getCenterY() + (client_height / 2), client_width, client_height); - mClientRect.setLeftTopAndSize(window_rect.getCenterX() - (client_width / 2), window_rect.mTop, client_width, client_height); - // Hide the aspect ratio label if the window is too narrow // Assumes the label should be to the right of the dimensions - LLRect dim_rect, aspect_label_rect; + LLRect aspect_label_rect; childGetRect("aspect_ratio", aspect_label_rect); - childGetRect("dimensions", dim_rect); childSetVisible("aspect_ratio", dim_rect.mRight < aspect_label_rect.mLeft); } @@ -568,8 +544,9 @@ void LLPreviewTexture::loadAsset() mImage->setBoostLevel(LLViewerTexture::BOOST_PREVIEW); mImage->forceToSaveRawImage(0) ; mAssetStatus = PREVIEW_ASSET_LOADING; + mUpdateDimensions = TRUE; updateDimensions(); - childSetVisible("save_tex_btn", canSaveAs()); + childSetEnabled("save_tex_btn", canSaveAs()); } LLPreview::EAssetStatus LLPreviewTexture::getAssetStatus() @@ -580,3 +557,47 @@ LLPreview::EAssetStatus LLPreviewTexture::getAssetStatus() } return mAssetStatus; } + +void LLPreviewTexture::updateImageID() +{ + const LLViewerInventoryItem *item = static_cast<const LLViewerInventoryItem*>(getItem()); + if(item) + { + mImageID = item->getAssetUUID(); + + // here's the old logic... + //mShowKeepDiscard = item->getPermissions().getCreator() != gAgent.getID(); + // here's the new logic... 'cos we hate disappearing buttons. + mShowKeepDiscard = TRUE; + + mCopyToInv = FALSE; + mIsCopyable = item->checkPermissionsSet(PERM_ITEM_UNRESTRICTED); + } + else // not an item, assume it's an asset id + { + mImageID = mItemUUID; + mShowKeepDiscard = FALSE; + mCopyToInv = TRUE; + mIsCopyable = TRUE; + } + +} + +/* virtual */ +void LLPreviewTexture::setObjectID(const LLUUID& object_id) +{ + mObjectUUID = object_id; + + const LLUUID old_image_id = mImageID; + + // Update what image we're pointing to, such as if we just specified the mObjectID + // that this mItemID is part of. + updateImageID(); + + // If the imageID has changed, start over and reload the new image. + if (mImageID != old_image_id) + { + mAssetStatus = PREVIEW_ASSET_UNLOADED; + loadAsset(); + } +} diff --git a/indra/newview/llpreviewtexture.h b/indra/newview/llpreviewtexture.h index 980aecee6d..7cd2adad56 100644 --- a/indra/newview/llpreviewtexture.h +++ b/indra/newview/llpreviewtexture.h @@ -69,6 +69,8 @@ public: void openToSave(); static void onSaveAsBtn(void* data); + + /*virtual*/ void setObjectID(const LLUUID& object_id); protected: void init(); /* virtual */ BOOL postBuild(); @@ -76,6 +78,7 @@ protected: static void onAspectRatioCommit(LLUICtrl*,void* userdata); private: + void updateImageID(); // set what image is being uploaded. void updateDimensions(); LLUUID mImageID; LLPointer<LLViewerFetchedTexture> mImage; diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp index 7a48f890e0..0476e785a5 100644 --- a/indra/newview/llprogressview.cpp +++ b/indra/newview/llprogressview.cpp @@ -223,7 +223,10 @@ void LLProgressView::setCancelButtonVisible(BOOL b, const std::string& label) // static void LLProgressView::onCancelButtonClicked(void*) { - if (gAgent.getTeleportState() == LLAgent::TELEPORT_NONE) + // Quitting viewer here should happen only when "Quit" button is pressed while starting up. + // Check for startup state is used here instead of teleport state to avoid quitting when + // cancel is pressed while teleporting inside region (EXT-4911) + if (LLStartUp::getStartupState() < STATE_STARTED) { LLAppViewer::instance()->requestQuit(); } diff --git a/indra/newview/llrootview.h b/indra/newview/llrootview.h index 760b1a7a4c..38029e3a9d 100644 --- a/indra/newview/llrootview.h +++ b/indra/newview/llrootview.h @@ -35,6 +35,7 @@ #include "llview.h" #include "lluictrlfactory.h" +#include "lltooltip.h" class LLRootViewRegistry : public LLChildRegistry<LLRootViewRegistry> {}; diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index 8c3f3dc5fb..c75d90be6f 100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -47,6 +47,7 @@ #include "llsyswellwindow.h" #include "llimfloater.h" #include "llscriptfloater.h" +#include "llfontgl.h" #include <algorithm> @@ -59,17 +60,14 @@ bool LLScreenChannel::mWasStartUpToastShown = false; // LLScreenChannelBase ////////////////////// LLScreenChannelBase::LLScreenChannelBase(const LLUUID& id) : - mOverflowToastPanel(NULL) - ,mToastAlignment(NA_BOTTOM) + mToastAlignment(NA_BOTTOM) ,mCanStoreToasts(true) ,mHiddenToastsNum(0) - ,mOverflowToastHidden(false) ,mHoveredToast(NULL) ,mControlHovering(false) ,mShowToasts(true) { mID = id; - mOverflowFormatString = LLTrans::getString("OverflowInfoChannelString"); mWorldViewRectConnection = gViewerWindow->setOnWorldViewRectUpdated(boost::bind(&LLScreenChannelBase::updatePositionAndSize, this, _1, _2)); setMouseOpaque( false ); setVisible(FALSE); @@ -81,17 +79,12 @@ LLScreenChannelBase::~LLScreenChannelBase() bool LLScreenChannelBase::isHovering() { - bool res = mHoveredToast != NULL; - if (!res) + if (!mHoveredToast) { - return res; + return false; } - S32 x, y; - mHoveredToast->screenPointToLocal(gViewerWindow->getCurrentMouseX(), - gViewerWindow->getCurrentMouseY(), &x, &y); - res = mHoveredToast->pointInView(x, y) == TRUE; - return res; + return mHoveredToast->isHovered(); } void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect) @@ -217,11 +210,6 @@ void LLScreenChannel::addToast(const LLToast::Params& p) ToastElem new_toast_elem(p); - // reset HIDDEN flags for the Overflow Toast - mOverflowToastHidden = false; - if(mOverflowToastPanel) - mOverflowToastPanel->setIsHidden(false); - new_toast_elem.toast->setOnFadeCallback(boost::bind(&LLScreenChannel::onToastFade, this, _1)); new_toast_elem.toast->setOnToastDestroyedCallback(boost::bind(&LLScreenChannel::onToastDestroyed, this, _1)); if(mControlHovering) @@ -234,6 +222,11 @@ void LLScreenChannel::addToast(const LLToast::Params& p) if(show_toast) { mToastList.push_back(new_toast_elem); + if(p.can_be_stored) + { + // store toasts immediately - EXT-3762 + storeToast(new_toast_elem); + } updateShowToastsState(); redrawToasts(); } @@ -253,6 +246,13 @@ void LLScreenChannel::onToastDestroyed(LLToast* toast) { mToastList.erase(it); } + + it = find(mStoredToastList.begin(), mStoredToastList.end(), static_cast<LLPanel*>(toast)); + + if(it != mStoredToastList.end()) + { + mStoredToastList.erase(it); + } } @@ -282,6 +282,11 @@ void LLScreenChannel::onToastFade(LLToast* toast) //-------------------------------------------------------------------------- void LLScreenChannel::deleteToast(LLToast* toast) { + if (toast->isDead()) + { + return; + } + // send signal to observers about destroying of a toast toast->mOnDeleteToastSignal(toast); @@ -306,7 +311,6 @@ void LLScreenChannel::storeToast(ToastElem& toast_elem) if( it != mStoredToastList.end() ) return; - toast_elem.toast->stopTimer(); mStoredToastList.push_back(toast_elem); mOnStoreToast(toast_elem.toast->getPanel(), toast_elem.id); } @@ -318,8 +322,6 @@ void LLScreenChannel::loadStoredToastsToChannel() if(mStoredToastList.size() == 0) return; - - mOverflowToastHidden = false; for(it = mStoredToastList.begin(); it != mStoredToastList.end(); ++it) { @@ -340,13 +342,17 @@ void LLScreenChannel::loadStoredToastByNotificationIDToChannel(LLUUID id) if( it == mStoredToastList.end() ) return; - mOverflowToastHidden = false; - LLToast* toast = (*it).toast; + + if(toast->getVisible()) + { + // toast is already in channel + return; + } + toast->setIsHidden(false); toast->resetTimer(); mToastList.push_back((*it)); - mStoredToastList.erase(it); redrawToasts(); } @@ -468,7 +474,8 @@ void LLScreenChannel::showToastsBottom() { if(it != mToastList.rbegin()) { - bottom = (*(it-1)).toast->getRect().mTop; + LLToast* toast = (*(it-1)).toast; + bottom = toast->getRect().mTop - toast->getTopPad(); toast_margin = gSavedSettings.getS32("ToastGap"); } @@ -476,11 +483,22 @@ 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(); - if(toast_rect.mTop + getOverflowToastHeight() + toast_margin > world_rect.mTop) + // don't show toasts if there is not enough space + if(toast_rect.mTop > world_rect.mTop) { break; } @@ -511,12 +529,16 @@ void LLScreenChannel::showToastsBottom() // HACK // EXT-2653: it is necessary to prevent overlapping for secondary showed toasts (*it).toast->setVisible(TRUE); - // Show toast behind floaters. (EXT-3089) - gFloaterView->sendChildToBack((*it).toast); } + if(!(*it).toast->hasFocus()) + { + // Fixing Z-order of toasts (EXT-4862) + // Next toast will be positioned under this one. + gFloaterView->sendChildToBack((*it).toast); + } } - if(it != mToastList.rend() && !mOverflowToastHidden) + if(it != mToastList.rend()) { mHiddenToastsNum = 0; for(; it != mToastList.rend(); it++) @@ -525,7 +547,6 @@ void LLScreenChannel::showToastsBottom() (*it).toast->setVisible(FALSE); mHiddenToastsNum++; } - createOverflowToast(bottom, gSavedSettings.getS32("NotificationTipToastLifeTime")); } else { @@ -556,97 +577,10 @@ void LLScreenChannel::showToastsTop() } //-------------------------------------------------------------------------- -void LLScreenChannel::createOverflowToast(S32 bottom, F32 timer) -{ - LLRect toast_rect; - LLToast::Params p; - p.lifetime_secs = timer; - - if(!mOverflowToastPanel) - mOverflowToastPanel = new LLToast(p); - - if(!mOverflowToastPanel) - return; - - mOverflowToastPanel->startFading(); - mOverflowToastPanel->setOnFadeCallback(boost::bind(&LLScreenChannel::onOverflowToastHide, this)); - - LLTextBox* text_box = mOverflowToastPanel->getChild<LLTextBox>("toast_text"); - std::string text = llformat(mOverflowFormatString.c_str(),mHiddenToastsNum); - if(mHiddenToastsNum == 1) - { - text += "."; - } - else - { - text += "s."; - } - - toast_rect = mOverflowToastPanel->getRect(); - mOverflowToastPanel->reshape(getRect().getWidth(), toast_rect.getHeight(), true); - toast_rect.setLeftTopAndSize(getRect().mLeft, bottom + toast_rect.getHeight()+gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight()); - mOverflowToastPanel->setRect(toast_rect); - - // don't show overflow toast if there is not enough space for it. - LLDockableFloater* floater = dynamic_cast<LLDockableFloater*>(LLDockableFloater::getInstanceHandle().get()); - if(floater && floater->overlapsScreenChannel()) - { - LLRect world_rect = gViewerWindow->getWorldViewRectScaled(); - if(toast_rect.mTop > world_rect.mTop) - { - closeOverflowToastPanel(); - return; - } - } - - text_box->setValue(text); - text_box->setVisible(TRUE); - - mOverflowToastPanel->setVisible(TRUE); -} - -//-------------------------------------------------------------------------- -void LLScreenChannel::onOverflowToastHide() -{ - mOverflowToastHidden = true; - - // remove all hidden toasts from channel and save interactive notifications - for(std::vector<ToastElem>::iterator it = mToastList.begin(); it != mToastList.end();) - { - if(!(*it).toast->getVisible()) - { - if((*it).toast->getCanBeStored()) - { - storeToast((*it)); - } - else - { - deleteToast((*it).toast); - } - - it = mToastList.erase(it); - } - else - { - ++it; - } - } -} - -//-------------------------------------------------------------------------- -void LLScreenChannel::closeOverflowToastPanel() -{ - if(mOverflowToastPanel != NULL) - { - mOverflowToastPanel->setVisible(FALSE); - mOverflowToastPanel->stopFading(); - } -} - -//-------------------------------------------------------------------------- void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer) { LLRect toast_rect; + LLRect tbox_rect; LLToast::Params p; p.lifetime_secs = timer; p.enable_hide_btn = false; @@ -661,9 +595,26 @@ void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer) std::string text = LLTrans::getString("StartUpNotifications"); + tbox_rect = text_box->getRect(); + S32 tbox_width = tbox_rect.getWidth(); + S32 tbox_vpad = text_box->getVPad(); + S32 text_width = text_box->getDefaultFont()->getWidth(text); + S32 text_height = text_box->getTextPixelHeight(); + + // EXT - 3703 (Startup toast message doesn't fit toast width) + // Calculating TextBox HEIGHT needed to include the whole string according to the given WIDTH of the TextBox. + S32 new_tbox_height = (text_width/tbox_width + 1) * text_height; + // Calculating TOP position of TextBox + S32 new_tbox_top = new_tbox_height + tbox_vpad + gSavedSettings.getS32("ToastGap"); + // Calculating toast HEIGHT according to the new TextBox size + S32 toast_height = new_tbox_height + tbox_vpad * 2; + + tbox_rect.setLeftTopAndSize(tbox_rect.mLeft, new_tbox_top, tbox_rect.getWidth(), new_tbox_height); + text_box->setRect(tbox_rect); + toast_rect = mStartUpToastPanel->getRect(); mStartUpToastPanel->reshape(getRect().getWidth(), toast_rect.getHeight(), true); - toast_rect.setLeftTopAndSize(0, toast_rect.getHeight()+gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight()); + toast_rect.setLeftTopAndSize(0, toast_height + gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_height); mStartUpToastPanel->setRect(toast_rect); text_box->setValue(text); @@ -688,24 +639,6 @@ F32 LLScreenChannel::getHeightRatio() return ratio; } -S32 LLScreenChannel::getOverflowToastHeight() -{ - if(mOverflowToastPanel) - { - return mOverflowToastPanel->getRect().getHeight(); - } - - static S32 height = 0; - if(0 == height) - { - LLToast::Params p; - LLToast* toast = new LLToast(p); - height = toast->getRect().getHeight(); - delete toast; - } - return height; -} - //-------------------------------------------------------------------------- void LLScreenChannel::updateStartUpString(S32 num) { @@ -768,6 +701,19 @@ void LLScreenChannel::hideToastsFromScreen() } //-------------------------------------------------------------------------- +void LLScreenChannel::hideToast(const LLUUID& notification_id) +{ + std::vector<ToastElem>::iterator it = find(mToastList.begin(), mToastList.end(), notification_id); + if(mToastList.end() != it) + { + ToastElem te = *it; + te.toast->setVisible(FALSE); + te.toast->stopTimer(); + mToastList.erase(it); + } +} + +//-------------------------------------------------------------------------- void LLScreenChannel::removeToastsFromChannel() { hideToastsFromScreen(); @@ -827,23 +773,16 @@ void LLScreenChannel::onToastHover(LLToast* toast, bool mouse_enter) { // because of LLViewerWindow::updateUI() that NOT ALWAYS calls onMouseEnter BEFORE onMouseLeave // we must check hovering directly to prevent incorrect setting for hovering in a channel - S32 x,y; if (mouse_enter) { - toast->screenPointToLocal(gViewerWindow->getCurrentMouseX(), - gViewerWindow->getCurrentMouseY(), &x, &y); - bool hover = toast->pointInView(x, y) == TRUE; - if (hover) + if (toast->isHovered()) { mHoveredToast = toast; } } else if (mHoveredToast != NULL) { - mHoveredToast->screenPointToLocal(gViewerWindow->getCurrentMouseX(), - gViewerWindow->getCurrentMouseY(), &x, &y); - bool hover = mHoveredToast->pointInView(x, y) == TRUE; - if (!hover) + if (!mHoveredToast->isHovered()) { mHoveredToast = NULL; } @@ -867,16 +806,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)); @@ -885,3 +814,13 @@ void LLScreenChannel::updateShowToastsState() //-------------------------------------------------------------------------- +LLToast* LLScreenChannel::getToastByNotificationID(LLUUID id) +{ + std::vector<ToastElem>::iterator it = find(mStoredToastList.begin(), + mStoredToastList.end(), id); + + if (it == mStoredToastList.end()) + return NULL; + + return it->toast; +} diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h index 38f27f756b..88053d87d9 100644 --- a/indra/newview/llscreenchannel.h +++ b/indra/newview/llscreenchannel.h @@ -72,8 +72,7 @@ public: virtual void setToastAlignment(EToastAlignment align) {mToastAlignment = align;} virtual void setChannelAlignment(EChannelAlignment align) {mChannelAlignment = align;} - virtual void setOverflowFormatString ( const std::string& str) { mOverflowFormatString = str; } - + // kill or modify a toast by its ID virtual void killToastByNotificationID(LLUUID id) {}; virtual void modifyToastNotificationByID(LLUUID id, LLSD data) {}; @@ -121,17 +120,13 @@ protected: LLToast* mHoveredToast; bool mCanStoreToasts; bool mDisplayToastsAlways; - bool mOverflowToastHidden; // controls whether a channel shows toasts or not bool mShowToasts; // EToastAlignment mToastAlignment; EChannelAlignment mChannelAlignment; - // attributes for the Overflow Toast S32 mHiddenToastsNum; - LLToast* mOverflowToastPanel; - std::string mOverflowFormatString; // channel's ID LLUUID mID; @@ -176,6 +171,8 @@ public: void modifyToastByNotificationID(LLUUID id, LLPanel* panel); // hide all toasts from screen, but not remove them from a channel void hideToastsFromScreen(); + // hide toast by notification id + void hideToast(const LLUUID& notification_id); // removes all toasts from a channel void removeToastsFromChannel(); // show all toasts in a channel @@ -190,8 +187,6 @@ public: void removeToastsBySessionID(LLUUID id); // remove all storable toasts from screen and store them void removeAndStoreAllStorableToasts(); - // close the Overflow Toast - void closeOverflowToastPanel(); // close the StartUp Toast void closeStartUpToast(); @@ -214,6 +209,8 @@ public: // update number of notifications in the StartUp Toast void updateStartUpString(S32 num); + LLToast* getToastByNotificationID(LLUUID id); + // Channel's signals // signal on storing of faded toasts event typedef boost::function<void (LLPanel* info_panel, const LLUUID id)> store_tost_callback_t; @@ -257,7 +254,6 @@ private: void onToastHover(LLToast* toast, bool mouse_enter); void onToastFade(LLToast* toast); void onToastDestroyed(LLToast* toast); - void onOverflowToastHide(); void onStartUpToastHide(); // @@ -270,9 +266,6 @@ private: void showToastsCentre(); void showToastsTop(); - // create the Overflow Toast - void createOverflowToast(S32 bottom, F32 timer); - // create the StartUp Toast void createStartUpToast(S32 notif_num, F32 timer); @@ -281,8 +274,6 @@ private: */ static F32 getHeightRatio(); - S32 getOverflowToastHeight(); - // Channel's flags static bool mWasStartUpToastShown; diff --git a/indra/newview/llscriptfloater.cpp b/indra/newview/llscriptfloater.cpp index cf62d47362..eb71cc52c8 100644 --- a/indra/newview/llscriptfloater.cpp +++ b/indra/newview/llscriptfloater.cpp @@ -38,9 +38,11 @@ #include "llchiclet.h" #include "llfloaterreg.h" #include "llnotifications.h" +#include "llnotificationsutil.h" #include "llscreenchannel.h" #include "llsyswellwindow.h" #include "lltoastnotifypanel.h" +#include "lltrans.h" #include "llviewerwindow.h" #include "llimfloater.h" @@ -65,14 +67,14 @@ LLUUID notification_id_to_object_id(const LLUUID& notification_id) LLScriptFloater::LLScriptFloater(const LLSD& key) : LLDockableFloater(NULL, true, key) , mScriptForm(NULL) +, mSaveFloaterPosition(false) { setMouseDownCallback(boost::bind(&LLScriptFloater::onMouseDown, this)); setOverlapsScreenChannel(true); } -bool LLScriptFloater::toggle(const LLUUID& object_id) +bool LLScriptFloater::toggle(const LLUUID& notification_id) { - LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id); LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id); // show existing floater @@ -86,51 +88,57 @@ bool LLScriptFloater::toggle(const LLUUID& object_id) else { floater->setVisible(TRUE); - floater->setFocus(TRUE); - return true; + floater->setFocus(FALSE); } } // create and show new floater else { - show(object_id); - return true; + show(notification_id); } + + LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(notification_id, true); + return true; } -LLScriptFloater* LLScriptFloater::show(const LLUUID& object_id) +LLScriptFloater* LLScriptFloater::show(const LLUUID& notification_id) { - LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id); - - LLScriptFloater* floater = LLFloaterReg::showTypedInstance<LLScriptFloater>("script_floater", notification_id); - floater->setObjectId(object_id); - floater->createForm(object_id); + LLScriptFloater* floater = LLFloaterReg::getTypedInstance<LLScriptFloater>("script_floater", notification_id); + floater->setNotificationId(notification_id); + floater->createForm(notification_id); - if (floater->getDockControl() == NULL) - { - LLChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(object_id); - if (chiclet == NULL) - { - llerror("Dock chiclet for LLScriptFloater doesn't exist", 0); - } - else - { - LLBottomTray::getInstance()->getChicletPanel()->scrollToChiclet(chiclet); - } + //LLDialog(LLGiveInventory and LLLoadURL) should no longer steal focus (see EXT-5445) + floater->setAutoFocus(FALSE); - floater->setDockControl(new LLDockControl(chiclet, floater, floater->getDockTongue(), - LLDockControl::TOP, boost::bind(&LLScriptFloater::getAllowedRect, floater, _1))); + if(LLScriptFloaterManager::OBJ_SCRIPT == LLScriptFloaterManager::getObjectType(notification_id)) + { + floater->setSavePosition(true); + floater->restorePosition(); } + else + { + floater->dockToChiclet(true); + } + + //LLDialog(LLGiveInventory and LLLoadURL) should no longer steal focus (see EXT-5445) + LLFloaterReg::showTypedInstance<LLScriptFloater>("script_floater", notification_id, FALSE); return floater; } +void LLScriptFloater::setNotificationId(const LLUUID& id) +{ + mNotificationId = id; + // Lets save object id now while notification exists + mObjectId = notification_id_to_object_id(id); +} + void LLScriptFloater::getAllowedRect(LLRect& rect) { - rect = gViewerWindow->getWorldViewRectRaw(); + rect = gViewerWindow->getWorldViewRectScaled(); } -void LLScriptFloater::createForm(const LLUUID& object_id) +void LLScriptFloater::createForm(const LLUUID& notification_id) { // delete old form if(mScriptForm) @@ -139,8 +147,7 @@ void LLScriptFloater::createForm(const LLUUID& object_id) mScriptForm->die(); } - LLNotificationPtr notification = LLNotifications::getInstance()->find( - LLScriptFloaterManager::getInstance()->findNotificationId(object_id)); + LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id); if(NULL == notification) { return; @@ -162,9 +169,11 @@ void LLScriptFloater::createForm(const LLUUID& object_id) void LLScriptFloater::onClose(bool app_quitting) { - if(getObjectId().notNull()) + savePosition(); + + if(getNotificationId().notNull()) { - LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(getObjectId()); + LLScriptFloaterManager::getInstance()->onRemoveNotification(getNotificationId()); } } @@ -172,6 +181,8 @@ void LLScriptFloater::setDocked(bool docked, bool pop_on_undock /* = true */) { LLDockableFloater::setDocked(docked, pop_on_undock); + savePosition(); + hideToastsIfNeeded(); } @@ -180,14 +191,23 @@ void LLScriptFloater::setVisible(BOOL visible) LLDockableFloater::setVisible(visible); hideToastsIfNeeded(); + + if(!visible) + { + LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId()); + if(chiclet) + { + chiclet->setToggleState(false); + } + } } void LLScriptFloater::onMouseDown() { - if(getObjectId().notNull()) + if(getNotificationId().notNull()) { // Remove new message icon - LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getObjectId()); + LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(getNotificationId()); if (chiclet == NULL) { llerror("Dock chiclet for LLScriptFloater doesn't exist", 0); @@ -199,6 +219,79 @@ void LLScriptFloater::onMouseDown() } } +void LLScriptFloater::savePosition() +{ + if(getSavePosition() && mObjectId.notNull()) + { + LLScriptFloaterManager::FloaterPositionInfo fpi = {getRect(), isDocked()}; + LLScriptFloaterManager::getInstance()->saveFloaterPosition(mObjectId, fpi); + } +} + +void LLScriptFloater::restorePosition() +{ + LLScriptFloaterManager::FloaterPositionInfo fpi; + if(LLScriptFloaterManager::getInstance()->getFloaterPosition(mObjectId, fpi)) + { + dockToChiclet(fpi.mDockState); + if(!fpi.mDockState) + { + // Un-docked floater is opened in 0,0, now move it to saved position + translate(fpi.mRect.mLeft - getRect().mLeft, fpi.mRect.mTop - getRect().mTop); + } + } + else + { + dockToChiclet(true); + } +} + +void LLScriptFloater::onFocusLost() +{ + if(getNotificationId().notNull()) + { + LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), false); + } +} + +void LLScriptFloater::onFocusReceived() +{ + // first focus will be received before setObjectId() call - don't toggle chiclet + if(getNotificationId().notNull()) + { + LLBottomTray::getInstance()->getChicletPanel()->setChicletToggleState(getNotificationId(), true); + } +} + +void LLScriptFloater::dockToChiclet(bool dock) +{ + if (getDockControl() == NULL) + { + LLChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLChiclet>(getNotificationId()); + if (chiclet == NULL) + { + llwarns << "Dock chiclet for LLScriptFloater doesn't exist" << llendl; + return; + } + else + { + LLBottomTray::getInstance()->getChicletPanel()->scrollToChiclet(chiclet); + } + + // Stop saving position while we dock floater + bool save = getSavePosition(); + setSavePosition(false); + + setDockControl(new LLDockControl(chiclet, this, getDockTongue(), + LLDockControl::TOP, boost::bind(&LLScriptFloater::getAllowedRect, this, _1))); + + setDocked(dock); + + // Restore saving + setSavePosition(save); + } +} + void LLScriptFloater::hideToastsIfNeeded() { using namespace LLNotificationsUI; @@ -220,200 +313,227 @@ void LLScriptFloater::hideToastsIfNeeded() void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id) { - // get scripted Object's ID - LLUUID object_id = notification_id_to_object_id(notification_id); - if(object_id.isNull()) + if(notification_id.isNull()) { - llwarns << "Invalid notification, no object id" << llendl; + llwarns << "Invalid notification ID" << llendl; return; } + // get scripted Object's ID + LLUUID object_id = notification_id_to_object_id(notification_id); + // Need to indicate of "new message" for object chiclets according to requirements // specified in the Message Bar design specification. See EXT-3142. bool set_new_message = false; + EObjectType obj_type = getObjectType(notification_id); - // If an Object spawns more-than-one floater, only the newest one is shown. - // The previous is automatically closed. - script_notification_map_t::iterator it = mNotifications.find(object_id); - if(it != mNotifications.end()) + // LLDialog can spawn only one instance, LLLoadURL and LLGiveInventory can spawn unlimited number of instances + if(OBJ_SCRIPT == obj_type) { - LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(object_id); - if(chiclet) + // If an Object spawns more-than-one floater, only the newest one is shown. + // The previous is automatically closed. + script_notification_map_t::const_iterator it = findUsingObjectId(object_id); + if(it != mNotifications.end()) { - // Pass the new_message icon state further. - set_new_message = chiclet->getShowNewMessagesIcon(); - } + LLIMChiclet* chiclet = LLBottomTray::getInstance()->getChicletPanel()->findChiclet<LLIMChiclet>(it->first); + if(chiclet) + { + // Pass the new_message icon state further. + set_new_message = chiclet->getShowNewMessagesIcon(); + } - LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", it->second.notification_id); - if(floater) - { - // Generate chiclet with a "new message" indicator if a docked window was opened but not in focus. See EXT-3142. - set_new_message |= !floater->hasFocus(); - } + LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", it->first); + if(floater) + { + // Generate chiclet with a "new message" indicator if a docked window was opened but not in focus. See EXT-3142. + set_new_message |= !floater->hasFocus(); + } - onRemoveNotification(it->second.notification_id); + onRemoveNotification(it->first); + } } - LLNotificationData nd = {notification_id}; - mNotifications.insert(std::make_pair(object_id, nd)); + mNotifications.insert(std::make_pair(notification_id, object_id)); // Create inventory offer chiclet for offer type notifications - LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id); - if( notification && notification->getType() == "offer" ) + if( OBJ_GIVE_INVENTORY == obj_type ) { - LLBottomTray::instance().getChicletPanel()->createChiclet<LLInvOfferChiclet>(object_id); + LLBottomTray::instance().getChicletPanel()->createChiclet<LLInvOfferChiclet>(notification_id); } else { - LLBottomTray::getInstance()->getChicletPanel()->createChiclet<LLScriptChiclet>(object_id); + LLBottomTray::getInstance()->getChicletPanel()->createChiclet<LLScriptChiclet>(notification_id); } - LLIMWellWindow::getInstance()->addObjectRow(object_id, set_new_message); + LLIMWellWindow::getInstance()->addObjectRow(notification_id, set_new_message); LLSD data; - data["object_id"] = object_id; + data["notification_id"] = notification_id; data["new_message"] = set_new_message; data["unread"] = 1; // each object has got only one floater mNewObjectSignal(data); - toggleScriptFloater(object_id, set_new_message); + toggleScriptFloater(notification_id, set_new_message); } void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id) { - LLUUID object_id = findObjectId(notification_id); - if(object_id.isNull()) + if(notification_id.isNull()) { - llwarns << "Invalid notification, no object id" << llendl; + llwarns << "Invalid notification ID" << llendl; return; } - using namespace LLNotificationsUI; - - // remove related toast - LLUUID channel_id(gSavedSettings.getString("NotificationChannelUUID")); - LLScreenChannel* channel = dynamic_cast<LLScreenChannel*> - (LLChannelManager::getInstance()->findChannelByID(channel_id)); - LLUUID n_toast_id = findNotificationToastId(object_id); - if(channel && n_toast_id.notNull()) - { - channel->killToastByNotificationID(n_toast_id); - } - // remove related chiclet - LLBottomTray::getInstance()->getChicletPanel()->removeChiclet(object_id); + LLBottomTray::getInstance()->getChicletPanel()->removeChiclet(notification_id); - LLIMWellWindow::getInstance()->removeObjectRow(object_id); + LLIMWellWindow::getInstance()->removeObjectRow(notification_id); // close floater LLScriptFloater* floater = LLFloaterReg::findTypedInstance<LLScriptFloater>("script_floater", notification_id); if(floater) { - floater->setObjectId(LLUUID::null); + floater->savePosition(); + floater->setNotificationId(LLUUID::null); floater->closeFloater(); } - mNotifications.erase(object_id); -} - -void LLScriptFloaterManager::removeNotificationByObjectId(const LLUUID& object_id) -{ - // Check we have not removed notification yet - LLNotificationPtr notification = LLNotifications::getInstance()->find( - findNotificationId(object_id)); - if(notification) - { - onRemoveNotification(notification->getID()); - } + mNotifications.erase(notification_id); } -void LLScriptFloaterManager::toggleScriptFloater(const LLUUID& object_id, bool set_new_message) +void LLScriptFloaterManager::toggleScriptFloater(const LLUUID& notification_id, bool set_new_message) { - // kill toast - using namespace LLNotificationsUI; - LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(LLChannelManager::getInstance()->findChannelByID( - LLUUID(gSavedSettings.getString("NotificationChannelUUID")))); - if(channel) - { - channel->killToastByNotificationID(findNotificationToastId(object_id)); - } - LLSD data; - data["object_id"] = object_id; + data["notification_id"] = notification_id; data["new_message"] = set_new_message; mToggleFloaterSignal(data); // toggle floater - LLScriptFloater::toggle(object_id); + LLScriptFloater::toggle(notification_id); } -void LLScriptFloaterManager::setNotificationToastId(const LLUUID& object_id, const LLUUID& notification_id) +LLUUID LLScriptFloaterManager::findObjectId(const LLUUID& notification_id) { - script_notification_map_t::iterator it = mNotifications.find(object_id); + script_notification_map_t::const_iterator it = mNotifications.find(notification_id); if(mNotifications.end() != it) { - it->second.toast_notification_id = notification_id; + return it->second; } + return LLUUID::null; } -LLUUID LLScriptFloaterManager::findObjectId(const LLUUID& notification_id) +LLUUID LLScriptFloaterManager::findNotificationId(const LLUUID& object_id) { - if(notification_id.notNull()) + if(object_id.notNull()) { - script_notification_map_t::const_iterator it = mNotifications.begin(); - for(; mNotifications.end() != it; ++it) + script_notification_map_t::const_iterator it = findUsingObjectId(object_id); + if(mNotifications.end() != it) { - if(notification_id == it->second.notification_id) - { - return it->first; - } + return it->first; } } return LLUUID::null; } -LLUUID LLScriptFloaterManager::findNotificationId(const LLUUID& object_id) +// static +LLScriptFloaterManager::EObjectType LLScriptFloaterManager::getObjectType(const LLUUID& notification_id) { - script_notification_map_t::const_iterator it = mNotifications.find(object_id); - if(mNotifications.end() != it) + if(notification_id.isNull()) { - return it->second.notification_id; + llwarns << "Invalid notification ID" << llendl; + return OBJ_UNKNOWN; } - return LLUUID::null; -} -LLUUID LLScriptFloaterManager::findNotificationToastId(const LLUUID& object_id) -{ - script_notification_map_t::const_iterator it = mNotifications.find(object_id); - if(mNotifications.end() != it) + static const object_type_map TYPE_MAP = initObjectTypeMap(); + + LLNotificationPtr notification = LLNotificationsUtil::find(notification_id); + object_type_map::const_iterator it = TYPE_MAP.find(notification->getName()); + if(it != TYPE_MAP.end()) { - return it->second.toast_notification_id; + return it->second; } - return LLUUID::null; + + llwarns << "Unknown object type" << llendl; + return OBJ_UNKNOWN; } -//static -void LLScriptFloaterManager::onToastButtonClick(const LLSD¬ification, const LLSD&response) +// static +std::string LLScriptFloaterManager::getObjectName(const LLUUID& notification_id) { - S32 option = LLNotification::getSelectedOption(notification, response); - LLUUID object_id = notification["payload"]["object_id"].asUUID(); + using namespace LLNotificationsUI; + LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id); + if(!notification) + { + llwarns << "Invalid notification" << llendl; + return LLStringUtil::null; + } - switch(option) + std::string text; + + switch(LLScriptFloaterManager::getObjectType(notification_id)) { - case 0: // "Open" - LLScriptFloaterManager::getInstance()->toggleScriptFloater(object_id); + case LLScriptFloaterManager::OBJ_SCRIPT: + text = notification->getSubstitutions()["TITLE"].asString(); break; - case 1: // "Ignore" - LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(object_id); + case LLScriptFloaterManager::OBJ_LOAD_URL: + text = notification->getSubstitutions()["OBJECTNAME"].asString(); break; - case 2: // "Block" - LLMuteList::getInstance()->add(LLMute(object_id, notification["substitutions"]["TITLE"], LLMute::OBJECT)); - LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(object_id); + case LLScriptFloaterManager::OBJ_GIVE_INVENTORY: + text = notification->getSubstitutions()["NAME"].asString(); break; default: - llwarns << "Unexpected value" << llendl; + text = LLTrans::getString("object"); break; } + + return text; +} + +//static +LLScriptFloaterManager::object_type_map LLScriptFloaterManager::initObjectTypeMap() +{ + object_type_map type_map; + type_map["ScriptDialog"] = OBJ_SCRIPT; + type_map["ScriptDialogGroup"] = OBJ_SCRIPT; + type_map["LoadWebPage"] = OBJ_LOAD_URL; + type_map["ObjectGiveItem"] = OBJ_GIVE_INVENTORY; + return type_map; +} + +LLScriptFloaterManager::script_notification_map_t::const_iterator LLScriptFloaterManager::findUsingObjectId(const LLUUID& object_id) +{ + script_notification_map_t::const_iterator it = mNotifications.begin(); + for(; mNotifications.end() != it; ++it) + { + if(object_id == it->second) + { + return it; + } + } + return mNotifications.end(); +} + +void LLScriptFloaterManager::saveFloaterPosition(const LLUUID& object_id, const FloaterPositionInfo& fpi) +{ + if(object_id.notNull()) + { + LLScriptFloaterManager::getInstance()->mFloaterPositions[object_id] = fpi; + } + else + { + llwarns << "Invalid object id" << llendl; + } +} + +bool LLScriptFloaterManager::getFloaterPosition(const LLUUID& object_id, FloaterPositionInfo& fpi) +{ + floater_position_map_t::const_iterator it = mFloaterPositions.find(object_id); + if(LLScriptFloaterManager::getInstance()->mFloaterPositions.end() != it) + { + fpi = it->second; + return true; + } + return false; } // EOF diff --git a/indra/newview/llscriptfloater.h b/indra/newview/llscriptfloater.h index ed10dc5fe9..ec3ec4b540 100644 --- a/indra/newview/llscriptfloater.h +++ b/indra/newview/llscriptfloater.h @@ -48,6 +48,15 @@ class LLScriptFloaterManager : public LLSingleton<LLScriptFloaterManager> // know how script notifications should look like. public: + typedef enum e_object_type + { + OBJ_SCRIPT, + OBJ_GIVE_INVENTORY, + OBJ_LOAD_URL, + + OBJ_UNKNOWN + }EObjectType; + /** * Handles new notifications. * Saves notification and object ids, removes old notification if needed, creates script chiclet @@ -62,11 +71,6 @@ public: void onRemoveNotification(const LLUUID& notification_id); /** - * Wrapper for onRemoveNotification, removes notification by object id. - */ - void removeNotificationByObjectId(const LLUUID& object_id); - - /** * Toggles script floater. * Removes "new message" icon from chiclet and removes notification toast. */ @@ -76,38 +80,47 @@ public: LLUUID findNotificationId(const LLUUID& object_id); - LLUUID findNotificationToastId(const LLUUID& object_id); + static EObjectType getObjectType(const LLUUID& notification_id); - /** - * Associate notification toast id with object id. - */ - void setNotificationToastId(const LLUUID& object_id, const LLUUID& notification_id); - - /** - * Callback for notification toast buttons. - */ - static void onToastButtonClick(const LLSD¬ification, const LLSD&response); + static std::string getObjectName(const LLUUID& notification_id); typedef boost::signals2::signal<void(const LLSD&)> object_signal_t; boost::signals2::connection addNewObjectCallback(const object_signal_t::slot_type& cb) { return mNewObjectSignal.connect(cb); } boost::signals2::connection addToggleObjectFloaterCallback(const object_signal_t::slot_type& cb) { return mToggleFloaterSignal.connect(cb); } -private: - - struct LLNotificationData + struct FloaterPositionInfo { - LLUUID notification_id; - LLUUID toast_notification_id; + LLRect mRect; + bool mDockState; }; - // <object_id, notification_data> - typedef std::map<LLUUID, LLNotificationData> script_notification_map_t; + void saveFloaterPosition(const LLUUID& object_id, const FloaterPositionInfo& fpi); + + bool getFloaterPosition(const LLUUID& object_id, FloaterPositionInfo& fpi); + +protected: + + typedef std::map<std::string, EObjectType> object_type_map; + + static object_type_map initObjectTypeMap(); + + // <notification_id, object_id> + typedef std::map<LLUUID, LLUUID> script_notification_map_t; + + script_notification_map_t::const_iterator findUsingObjectId(const LLUUID& object_id); + +private: script_notification_map_t mNotifications; object_signal_t mNewObjectSignal; object_signal_t mToggleFloaterSignal; + + // <object_id, floater position> + typedef std::map<LLUUID, FloaterPositionInfo> floater_position_map_t; + + floater_position_map_t mFloaterPositions; }; /** @@ -136,9 +149,9 @@ public: */ static LLScriptFloater* show(const LLUUID& object_id); - const LLUUID& getObjectId() { return mObjectId; } + const LLUUID& getNotificationId() { return mNotificationId; } - void setObjectId(const LLUUID& id) { mObjectId = id; } + void setNotificationId(const LLUUID& id); /** * Close notification if script floater is closed. @@ -155,6 +168,14 @@ public: */ /*virtual*/ void setVisible(BOOL visible); + bool getSavePosition() { return mSaveFloaterPosition; } + + void setSavePosition(bool save) { mSaveFloaterPosition = save; } + + void savePosition(); + + void restorePosition(); + protected: /** @@ -174,9 +195,17 @@ protected: */ void onMouseDown(); + /*virtual*/ void onFocusLost(); + + /*virtual*/ void onFocusReceived(); + + void dockToChiclet(bool dock); + private: LLToastNotifyPanel* mScriptForm; + LLUUID mNotificationId; LLUUID mObjectId; + bool mSaveFloaterPosition; }; #endif //LL_SCRIPTFLOATER_H diff --git a/indra/newview/llsearchcombobox.cpp b/indra/newview/llsearchcombobox.cpp index 93a70b6471..a130878176 100644 --- a/indra/newview/llsearchcombobox.cpp +++ b/indra/newview/llsearchcombobox.cpp @@ -78,6 +78,7 @@ LLSearchComboBox::LLSearchComboBox(const Params&p) button_params.click_callback.function(boost::bind(&LLSearchComboBox::onSelectionCommit, this)); mSearchButton = LLUICtrlFactory::create<LLButton>(button_params); mTextEntry->addChild(mSearchButton); + mTextEntry->setPassDelete(TRUE); setButtonVisible(p.dropdown_button_visible); mTextEntry->setCommitCallback(boost::bind(&LLComboBox::onTextCommit, this, _2)); diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 60a095506b..d733574a9d 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -41,6 +41,7 @@ #include "lldbstrings.h" #include "lleconomy.h" #include "llgl.h" +#include "llmediaentry.h" #include "llrender.h" #include "llnotifications.h" #include "llpermissions.h" @@ -218,7 +219,8 @@ LLSelectMgr::LLSelectMgr() mHoverObjects = new LLObjectSelection(); mHighlightedObjects = new LLObjectSelection(); - + mForceSelection = FALSE; + mShowSelection = FALSE; } @@ -1738,70 +1740,70 @@ void LLSelectMgr::selectionSetFullbright(U8 fullbright) getSelection()->applyToObjects(&sendfunc); } -void LLSelectMgr::selectionSetMedia(U8 media_type) -{ - - struct f : public LLSelectedTEFunctor - { - U8 mMediaFlags; - f(const U8& t) : mMediaFlags(t) {} - bool apply(LLViewerObject* object, S32 te) - { - if (object->permModify()) - { - // update viewer has media - object->setTEMediaFlags(te, mMediaFlags); - } - return true; - } - } setfunc(media_type); - getSelection()->applyToTEs(&setfunc); - struct f2 : public LLSelectedObjectFunctor - { - virtual bool apply(LLViewerObject* object) - { - if (object->permModify()) - { - object->sendTEUpdate(); - } - return true; - } - } func2; - mSelectedObjects->applyToObjects( &func2 ); -} - // This function expects media_data to be a map containing relevant // media data name/value pairs (e.g. home_url, etc.) -void LLSelectMgr::selectionSetMediaData(const LLSD &media_data) -{ - +void LLSelectMgr::selectionSetMedia(U8 media_type, const LLSD &media_data) +{ struct f : public LLSelectedTEFunctor { + U8 mMediaFlags; const LLSD &mMediaData; - f(const LLSD& t) : mMediaData(t) {} + f(const U8& t, const LLSD& d) : mMediaFlags(t), mMediaData(d) {} bool apply(LLViewerObject* object, S32 te) { if (object->permModify()) { - LLVOVolume *vo = dynamic_cast<LLVOVolume*>(object); - if (NULL != vo) - { - vo->syncMediaData(te, mMediaData, true/*merge*/, true/*ignore_agent*/); - } + // If we are adding media, then check the current state of the + // media data on this face. + // - If it does not have media, AND we are NOT setting the HOME URL, then do NOT add media to this + // face. + // - If it does not have media, and we ARE setting the HOME URL, add media to this face. + // - If it does already have media, add/update media to/on this face + // If we are removing media, just do it (ignore the passed-in LLSD). + if (mMediaFlags & LLTextureEntry::MF_HAS_MEDIA) + { + llassert(mMediaData.isMap()); + const LLTextureEntry *texture_entry = object->getTE(te); + if (!mMediaData.isMap() || + (NULL != texture_entry) && !texture_entry->hasMedia() && !mMediaData.has(LLMediaEntry::HOME_URL_KEY)) + { + // skip adding/updating media + } + else { + // Add/update media + object->setTEMediaFlags(te, mMediaFlags); + LLVOVolume *vo = dynamic_cast<LLVOVolume*>(object); + llassert(NULL != vo); + if (NULL != vo) + { + vo->syncMediaData(te, mMediaData, true/*merge*/, true/*ignore_agent*/); + } + } + } + else + { + // delete media (or just set the flags) + object->setTEMediaFlags(te, mMediaFlags); + } } return true; } - } setfunc(media_data); + } setfunc(media_type, media_data); getSelection()->applyToTEs(&setfunc); - + struct f2 : public LLSelectedObjectFunctor { virtual bool apply(LLViewerObject* object) { if (object->permModify()) { - LLVOVolume *vo = dynamic_cast<LLVOVolume*>(object); - if (NULL != vo) + object->sendTEUpdate(); + LLVOVolume *vo = dynamic_cast<LLVOVolume*>(object); + llassert(NULL != vo); + // It's okay to skip this object if hasMedia() is false... + // the sendTEUpdate() above would remove all media data if it were + // there. + if (NULL != vo && vo->hasMedia()) { // Send updated media data FOR THE ENTIRE OBJECT vo->sendMediaDataUpdate(); @@ -1810,11 +1812,9 @@ void LLSelectMgr::selectionSetMediaData(const LLSD &media_data) return true; } } func2; - getSelection()->applyToObjects(&func2); + mSelectedObjects->applyToObjects( &func2 ); } - - void LLSelectMgr::selectionSetGlow(F32 glow) { struct f1 : public LLSelectedTEFunctor @@ -4919,13 +4919,15 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud) // set up transform to encompass bounding box of HUD glMatrixMode(GL_PROJECTION); - glPushMatrix(); + gGL.pushMatrix(); glLoadIdentity(); F32 depth = llmax(1.f, hud_bbox.getExtentLocal().mV[VX] * 1.1f); glOrtho(-0.5f * LLViewerCamera::getInstance()->getAspect(), 0.5f * LLViewerCamera::getInstance()->getAspect(), -0.5f, 0.5f, 0.f, depth); glMatrixMode(GL_MODELVIEW); - glPushMatrix(); + gGL.pushMatrix(); + gGL.pushUIMatrix(); + gGL.loadUIIdentity(); glLoadIdentity(); glLoadMatrixf(OGL_TO_CFR_ROTATION); // Load Cory's favorite reference frame glTranslatef(-hud_bbox.getCenterLocal().mV[VX] + (depth *0.5f), 0.f, 0.f); @@ -5022,10 +5024,11 @@ void LLSelectMgr::renderSilhouettes(BOOL for_hud) if (for_hud && avatar) { glMatrixMode(GL_PROJECTION); - glPopMatrix(); + gGL.popMatrix(); glMatrixMode(GL_MODELVIEW); - glPopMatrix(); + gGL.popMatrix(); + gGL.popUIMatrix(); stop_glerror(); } @@ -5093,6 +5096,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; @@ -5373,7 +5377,10 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color) } glMatrixMode(GL_MODELVIEW); - glPushMatrix(); + gGL.pushMatrix(); + gGL.pushUIMatrix(); + gGL.loadUIIdentity(); + if (!is_hud_object) { glLoadIdentity(); @@ -5492,7 +5499,8 @@ void LLSelectNode::renderOneSilhouette(const LLColor4 &color) gGL.end(); gGL.flush(); } - glPopMatrix(); + gGL.popMatrix(); + gGL.popUIMatrix(); } // diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index f8ecfd0674..00474827ca 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -502,8 +502,7 @@ public: void selectionSetTexGen( U8 texgen ); void selectionSetShiny( U8 shiny ); void selectionSetFullbright( U8 fullbright ); - void selectionSetMedia( U8 media_type ); - void selectionSetMediaData(const LLSD &media_data); // NOTE: modifies media_data!!! + void selectionSetMedia( U8 media_type, const LLSD &media_data ); void selectionSetClickAction(U8 action); void selectionSetIncludeInSearch(bool include_in_search); void selectionSetGlow(const F32 glow); diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index 30b0075c4b..cd4a821774 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -62,6 +62,7 @@ public: { mPanel->inventoryFetched(); gInventory.removeObserver(this); + delete this; } private: LLSidepanelAppearance *mPanel; @@ -86,7 +87,7 @@ void LLWatchForOutfitRenameObserver::changed(U32 mask) mPanel->refreshCurrentOutfitName(); } } - + LLSidepanelAppearance::LLSidepanelAppearance() : LLPanel(), mFilterSubString(LLStringUtil::null), @@ -94,14 +95,12 @@ LLSidepanelAppearance::LLSidepanelAppearance() : mLookInfo(NULL), mCurrOutfitPanel(NULL) { - //LLUICtrlFactory::getInstance()->buildPanel(this, "panel_appearance.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder() - mFetchWorn = new LLCurrentlyWornFetchObserver(this); - - mOutfitRenameWatcher = new LLWatchForOutfitRenameObserver(this); } LLSidepanelAppearance::~LLSidepanelAppearance() { + gInventory.removeObserver(mOutfitRenameWatcher); + delete mOutfitRenameWatcher; } // virtual @@ -151,9 +150,12 @@ BOOL LLSidepanelAppearance::postBuild() } mCurrentLookName = getChild<LLTextBox>("currentlook_name"); + + mOutfitDirtyTag = getChild<LLTextBox>("currentlook_title"); mCurrOutfitPanel = getChild<LLPanel>("panel_currentlook"); + mOutfitRenameWatcher = new LLWatchForOutfitRenameObserver(this); gInventory.addObserver(mOutfitRenameWatcher); return TRUE; @@ -166,6 +168,11 @@ void LLSidepanelAppearance::onOpen(const LLSD& key) refreshCurrentOutfitName(); updateVerbs(); + if (mPanelOutfitsInventory) + { + mPanelOutfitsInventory->onOpen(key); + } + if(key.size() == 0) return; @@ -198,7 +205,7 @@ void LLSidepanelAppearance::onFilterEdit(const std::string& search_string) void LLSidepanelAppearance::onOpenOutfitButtonClicked() { - const LLViewerInventoryItem *outfit_link = LLAppearanceManager::getInstance()->getCurrentOutfitLink(); + const LLViewerInventoryItem *outfit_link = LLAppearanceManager::getInstance()->getBaseOutfitLink(); if (!outfit_link) return; if (!outfit_link->getIsLinkType()) @@ -208,7 +215,7 @@ void LLSidepanelAppearance::onOpenOutfitButtonClicked() if (tab_outfits) { tab_outfits->changeOpenClose(FALSE); - LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_accordionpanel"); + LLInventoryPanel *inventory_panel = tab_outfits->findChild<LLInventoryPanel>("outfitslist_tab"); if (inventory_panel) { LLFolderView *folder = inventory_panel->getRootFolder(); @@ -248,7 +255,7 @@ void LLSidepanelAppearance::onNewOutfitButtonClicked() { if (!mLookInfo->getVisible()) { - mPanelOutfitsInventory->onNew(); + mPanelOutfitsInventory->onSave(); } } @@ -271,7 +278,7 @@ void LLSidepanelAppearance::toggleLookInfoPanel(BOOL visible) return; mLookInfo->setVisible(visible); - mPanelOutfitsInventory->setVisible(!visible); + if (mPanelOutfitsInventory) mPanelOutfitsInventory->setVisible(!visible); mFilterEditor->setVisible(!visible); mEditBtn->setVisible(!visible); mNewOutfitBtn->setVisible(!visible); @@ -298,7 +305,7 @@ void LLSidepanelAppearance::updateVerbs() { bool is_look_info_visible = mLookInfo->getVisible(); - if (!is_look_info_visible) + if (mPanelOutfitsInventory && !is_look_info_visible) { const bool is_correct_type = (mPanelOutfitsInventory->getCorrectListenerForAction() != NULL); mEditBtn->setEnabled(is_correct_type); @@ -311,17 +318,14 @@ void LLSidepanelAppearance::updateVerbs() void LLSidepanelAppearance::refreshCurrentOutfitName(const std::string& name) { + mOutfitDirtyTag->setVisible(LLAppearanceManager::getInstance()->isOutfitDirty()); if (name == "") { - const LLViewerInventoryItem *outfit_link = LLAppearanceManager::getInstance()->getCurrentOutfitLink(); - if (outfit_link) + std::string outfit_name; + if (LLAppearanceManager::getInstance()->getBaseOutfitName(outfit_name)) { - const LLViewerInventoryCategory *cat = outfit_link->getLinkedCategory(); - if (cat && cat->getPreferredType() == LLFolderType::FT_OUTFIT) - { - mCurrentLookName->setText(cat->getName()); + mCurrentLookName->setText(outfit_name); return; - } } mCurrentLookName->setText(getString("No Outfit")); mOpenOutfitBtn->setEnabled(FALSE); @@ -381,16 +385,17 @@ void LLSidepanelAppearance::fetchInventory() } } - mFetchWorn->fetchItems(ids); + LLCurrentlyWornFetchObserver *fetch_worn = new LLCurrentlyWornFetchObserver(this); + fetch_worn->fetchItems(ids); // If no items to be fetched, done will never be triggered. // TODO: Change LLInventoryFetchObserver::fetchItems to trigger done() on this condition. - if (mFetchWorn->isEverythingComplete()) + if (fetch_worn->isEverythingComplete()) { - mFetchWorn->done(); + fetch_worn->done(); } else { - gInventory.addObserver(mFetchWorn); + gInventory.addObserver(fetch_worn); } } diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h index 8ef2088eda..aa2e67fd16 100644 --- a/indra/newview/llsidepanelappearance.h +++ b/indra/newview/llsidepanelappearance.h @@ -61,6 +61,7 @@ public: void fetchInventory(); void inventoryFetched(); void updateVerbs(); + void onNewOutfitButtonClicked(); private: void onFilterEdit(const std::string& search_string); @@ -68,7 +69,6 @@ private: void onOpenOutfitButtonClicked(); void onEditAppearanceButtonClicked(); void onEditButtonClicked(); - void onNewOutfitButtonClicked(); void onBackButtonClicked(); void onEditWearBackClicked(); void toggleLookInfoPanel(BOOL visible); @@ -86,6 +86,7 @@ private: LLPanel* mCurrOutfitPanel; LLTextBox* mCurrentLookName; + LLTextBox* mOutfitDirtyTag; // Used to make sure the user's inventory is in memory. LLCurrentlyWornFetchObserver* mFetchWorn; diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 5383158cd3..73880563d7 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -62,7 +62,7 @@ BOOL LLSidepanelInventory::postBuild() // UI elements from inventory panel { mInventoryPanel = getChild<LLPanel>("sidepanel__inventory_panel"); - + mInfoBtn = mInventoryPanel->getChild<LLButton>("info_btn"); mInfoBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onInfoButtonClicked, this)); @@ -83,6 +83,14 @@ BOOL LLSidepanelInventory::postBuild() mPanelMainInventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory"); mPanelMainInventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2)); + + /* + EXT-4846 : "Can we suppress the "Landmarks" and "My Favorites" folder since they have their own Task Panel?" + Deferring this until 2.1. + LLInventoryPanel *my_inventory_panel = mPanelMainInventory->getChild<LLInventoryPanel>("All Items"); + my_inventory_panel->addHideFolderType(LLFolderType::FT_LANDMARK); + my_inventory_panel->addHideFolderType(LLFolderType::FT_FAVORITE); + */ } // UI elements from item panel @@ -164,7 +172,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("open"); + break; + } } void LLSidepanelInventory::onTeleportButtonClicked() diff --git a/indra/newview/llsidepanelinventorysubpanel.cpp b/indra/newview/llsidepanelinventorysubpanel.cpp index 56e342c3ce..f51462dcce 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/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp index 1965e634b6..0275736f6d 100644 --- a/indra/newview/llsidepaneliteminfo.cpp +++ b/indra/newview/llsidepaneliteminfo.cpp @@ -109,9 +109,9 @@ BOOL LLSidepanelItemInfo::postBuild() { LLSidepanelInventorySubpanel::postBuild(); - childSetPrevalidate("LabelItemName",&LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("LabelItemName",&LLTextValidate::validateASCIIPrintableNoPipe); getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitName,this)); - childSetPrevalidate("LabelItemDesc",&LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("LabelItemDesc",&LLTextValidate::validateASCIIPrintableNoPipe); getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLSidepanelItemInfo:: onCommitDescription, this)); // Creator information getChild<LLUICtrl>("BtnCreator")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onClickCreator,this)); @@ -157,22 +157,22 @@ void LLSidepanelItemInfo::reset() void LLSidepanelItemInfo::refresh() { - LLInventoryItem* item = findItem(); + LLViewerInventoryItem* item = findItem(); if(item) { refreshFromItem(item); updateVerbs(); + return; } else { if (getIsEditing()) { setIsEditing(FALSE); - return; } } - if (!getIsEditing() || !item) + if (!getIsEditing()) { const std::string no_item_names[]={ "LabelItemName", @@ -225,24 +225,29 @@ void LLSidepanelItemInfo::refresh() updateVerbs(); } -void LLSidepanelItemInfo::refreshFromItem(LLInventoryItem* item) +void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item) { //////////////////////// // PERMISSIONS LOOKUP // //////////////////////// + llassert(item); + if (!item) return; + // do not enable the UI for incomplete items. - LLViewerInventoryItem* i = (LLViewerInventoryItem*)item; - BOOL is_complete = i->isComplete(); - const BOOL cannot_restrict_permissions = LLInventoryType::cannotRestrictPermissions(i->getInventoryType()); - const BOOL is_calling_card = (i->getInventoryType() == LLInventoryType::IT_CALLINGCARD); + BOOL is_complete = item->isComplete(); + const BOOL cannot_restrict_permissions = LLInventoryType::cannotRestrictPermissions(item->getInventoryType()); + const BOOL is_calling_card = (item->getInventoryType() == LLInventoryType::IT_CALLINGCARD); const LLPermissions& perm = item->getPermissions(); const BOOL can_agent_manipulate = gAgent.allowOperation(PERM_OWNER, perm, - GP_OBJECT_MANIPULATE); + GP_OBJECT_MANIPULATE); const BOOL can_agent_sell = gAgent.allowOperation(PERM_OWNER, perm, - GP_OBJECT_SET_SALE) && + GP_OBJECT_SET_SALE) && !cannot_restrict_permissions; - const BOOL is_link = i->getIsLinkType(); + const BOOL is_link = item->getIsLinkType(); + + const LLUUID trash_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_TRASH); + bool not_in_trash = (item->getUUID() != trash_id) && !gInventory.isObjectDescendentOf(item->getUUID(), trash_id); // You need permission to modify the object to modify an inventory // item in it. @@ -259,7 +264,7 @@ void LLSidepanelItemInfo::refreshFromItem(LLInventoryItem* item) ////////////////////// BOOL is_modifiable = gAgent.allowOperation(PERM_MODIFY, perm, GP_OBJECT_MANIPULATE) - && is_obj_modify && is_complete; + && is_obj_modify && is_complete && not_in_trash; childSetEnabled("LabelItemNameTitle",TRUE); childSetEnabled("LabelItemName",is_modifiable && !is_calling_card); // for now, don't allow rename of calling cards @@ -336,6 +341,64 @@ void LLSidepanelItemInfo::refreshFromItem(LLInventoryItem* item) LLStringUtil::format (timeStr, substitution); childSetText ("LabelAcquiredDate", timeStr); } + + ///////////////////////////////////// + // PERMISSIONS AND SALE ITEM HIDING + ///////////////////////////////////// + + const std::string perm_and_sale_items[]={ + "perms_inv", + "OwnerLabel", + "perm_modify", + "CheckOwnerModify", + "CheckOwnerCopy", + "CheckOwnerTransfer", + "GroupLabel", + "CheckShareWithGroup", + "AnyoneLabel", + "CheckEveryoneCopy", + "NextOwnerLabel", + "CheckNextOwnerModify", + "CheckNextOwnerCopy", + "CheckNextOwnerTransfer", + "CheckPurchase", + "SaleLabel", + "RadioSaleType", + "combobox sale copy", + "Edit Cost", + "TextPrice" + }; + + const std::string debug_items[]={ + "BaseMaskDebug", + "OwnerMaskDebug", + "GroupMaskDebug", + "EveryoneMaskDebug", + "NextMaskDebug" + }; + + // Hide permissions checkboxes and labels and for sale info if in the trash + // or ui elements don't apply to these objects and return from function + if (!not_in_trash || cannot_restrict_permissions) + { + for(size_t t=0; t<LL_ARRAY_SIZE(perm_and_sale_items); ++t) + { + childSetVisible(perm_and_sale_items[t],false); + } + + for(size_t t=0; t<LL_ARRAY_SIZE(debug_items); ++t) + { + childSetVisible(debug_items[t],false); + } + return; + } + else // Make sure perms and sale ui elements are visible + { + for(size_t t=0; t<LL_ARRAY_SIZE(perm_and_sale_items); ++t) + { + childSetVisible(perm_and_sale_items[t],true); + } + } /////////////////////// // OWNER PERMISSIONS // @@ -539,7 +602,7 @@ void LLSidepanelItemInfo::refreshFromItem(LLInventoryItem* item) void LLSidepanelItemInfo::onClickCreator() { - LLInventoryItem* item = findItem(); + LLViewerInventoryItem* item = findItem(); if(!item) return; if(!item->getCreatorUUID().isNull()) { @@ -550,7 +613,7 @@ void LLSidepanelItemInfo::onClickCreator() // static void LLSidepanelItemInfo::onClickOwner() { - LLInventoryItem* item = findItem(); + LLViewerInventoryItem* item = findItem(); if(!item) return; if(item->getPermissions().isGroupOwned()) { @@ -566,7 +629,7 @@ void LLSidepanelItemInfo::onClickOwner() void LLSidepanelItemInfo::onCommitName() { //llinfos << "LLSidepanelItemInfo::onCommitName()" << llendl; - LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem(); + LLViewerInventoryItem* item = findItem(); if(!item) { return; @@ -602,7 +665,7 @@ void LLSidepanelItemInfo::onCommitName() void LLSidepanelItemInfo::onCommitDescription() { //llinfos << "LLSidepanelItemInfo::onCommitDescription()" << llendl; - LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem(); + LLViewerInventoryItem* item = findItem(); if(!item) return; LLLineEditor* labelItemDesc = getChild<LLLineEditor>("LabelItemDesc"); @@ -640,7 +703,7 @@ void LLSidepanelItemInfo::onCommitDescription() void LLSidepanelItemInfo::onCommitPermissions() { //llinfos << "LLSidepanelItemInfo::onCommitPermissions()" << llendl; - LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem(); + LLViewerInventoryItem* item = findItem(); if(!item) return; LLPermissions perm(item->getPermissions()); @@ -749,7 +812,7 @@ void LLSidepanelItemInfo::onCommitSaleType() void LLSidepanelItemInfo::updateSaleInfo() { - LLViewerInventoryItem* item = (LLViewerInventoryItem*)findItem(); + LLViewerInventoryItem* item = findItem(); if(!item) return; LLSaleInfo sale_info(item->getSaleInfo()); if(!gAgent.allowOperation(PERM_TRANSFER, item->getPermissions(), GP_OBJECT_SET_SALE)) @@ -849,9 +912,9 @@ void LLSidepanelItemInfo::updateSaleInfo() } } -LLInventoryItem* LLSidepanelItemInfo::findItem() const +LLViewerInventoryItem* LLSidepanelItemInfo::findItem() const { - LLInventoryItem* item = NULL; + LLViewerInventoryItem* item = NULL; if(mObjectID.isNull()) { // it is in agent inventory @@ -862,7 +925,7 @@ LLInventoryItem* LLSidepanelItemInfo::findItem() const LLViewerObject* object = gObjectList.findObject(mObjectID); if(object) { - item = (LLInventoryItem*)object->getInventoryObject(mItemID); + item = static_cast<LLViewerInventoryItem*>(object->getInventoryObject(mItemID)); } } return item; diff --git a/indra/newview/llsidepaneliteminfo.h b/indra/newview/llsidepaneliteminfo.h index 21002327bc..e6dbf400ee 100644 --- a/indra/newview/llsidepaneliteminfo.h +++ b/indra/newview/llsidepaneliteminfo.h @@ -41,7 +41,7 @@ //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ class LLButton; -class LLInventoryItem; +class LLViewerInventoryItem; class LLItemPropertiesObserver; class LLViewerObject; class LLPermissions; @@ -63,10 +63,10 @@ protected: /*virtual*/ void refresh(); /*virtual*/ void save(); - LLInventoryItem* findItem() const; + LLViewerInventoryItem* findItem() const; LLViewerObject* findObject() const; - void refreshFromItem(LLInventoryItem* item); + void refreshFromItem(LLViewerInventoryItem* item); private: LLUUID mItemID; // inventory UUID for the inventory item. diff --git a/indra/newview/llsidepaneltaskinfo.cpp b/indra/newview/llsidepaneltaskinfo.cpp index 50cec3184d..0630981d7e 100644 --- a/indra/newview/llsidepaneltaskinfo.cpp +++ b/indra/newview/llsidepaneltaskinfo.cpp @@ -104,9 +104,9 @@ BOOL LLSidepanelTaskInfo::postBuild() mLabelGroupName = getChild<LLNameBox>("Group Name Proxy"); childSetCommitCallback("Object Name", LLSidepanelTaskInfo::onCommitName,this); - childSetPrevalidate("Object Name", LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("Object Name", LLTextValidate::validateASCIIPrintableNoPipe); childSetCommitCallback("Object Description", LLSidepanelTaskInfo::onCommitDesc,this); - childSetPrevalidate("Object Description", LLLineEditor::prevalidateASCIIPrintableNoPipe); + childSetPrevalidate("Object Description", LLTextValidate::validateASCIIPrintableNoPipe); getChild<LLUICtrl>("button set group")->setCommitCallback(boost::bind(&LLSidepanelTaskInfo::onClickGroup,this)); childSetCommitCallback("checkbox share with group", &LLSidepanelTaskInfo::onCommitGroupShare,this); childSetAction("button deed", &LLSidepanelTaskInfo::onClickDeedToGroup,this); @@ -215,6 +215,10 @@ void LLSidepanelTaskInfo::disableAll() childSetVisible("E:", FALSE); childSetVisible("N:", FALSE); childSetVisible("F:", FALSE); + + mOpenBtn->setEnabled(FALSE); + mPayBtn->setEnabled(FALSE); + mBuyBtn->setEnabled(FALSE); } void LLSidepanelTaskInfo::refresh() @@ -1119,6 +1123,8 @@ void LLSidepanelTaskInfo::updateVerbs() */ mOpenBtn->setEnabled(enable_object_open()); + mPayBtn->setEnabled(enable_pay_object()); + mBuyBtn->setEnabled(enable_buy_object()); } void LLSidepanelTaskInfo::onOpenButtonClicked() diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp index 608165022f..fba1503b4a 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -46,7 +46,7 @@ #include "llaccordionctrltab.h" #include "llfloater.h" //for gFloaterView -#include "lliconctrl.h"//for Home tab icon +#include "lliconctrl.h"//for OpenClose tab icon #include "llsidetraypanelcontainer.h" #include "llwindow.h"//for SetCursor #include "lltransientfloatermgr.h" @@ -214,7 +214,7 @@ LLPanel* LLSideTrayTab::getPanel() LLSideTrayTab* LLSideTrayTab::createInstance () { LLSideTrayTab::Params tab_params; - tab_params.tab_title("Home"); + tab_params.tab_title("openclose"); LLSideTrayTab* tab = LLUICtrlFactory::create<LLSideTrayTab>(tab_params); return tab; @@ -248,6 +248,11 @@ LLSideTray::LLSideTray(Params& params) // panel_name should be specified via "parameter" attribute. commit.add("SideTray.ShowPanel", boost::bind(&LLSideTray::showPanel, this, _2, LLUUID::null)); LLTransientFloaterMgr::getInstance()->addControlView(this); + LLView* side_bar_tabs = gViewerWindow->getRootView()->getChildView("side_bar_tabs"); + if (side_bar_tabs != NULL) + { + LLTransientFloaterMgr::getInstance()->addControlView(side_bar_tabs); + } LLPanel::Params p; p.name = "buttons_panel"; @@ -389,9 +394,8 @@ void LLSideTray::createButtons () std::string name = sidebar_tab->getName(); - // The "home" button will open/close the whole panel, this will need to - // change if the home screen becomes its own tab. - if (name == "sidebar_home") + // The "OpenClose" button will open/close the whole panel + if (name == "sidebar_openclose") { mCollapseButton = createButton("",sidebar_tab->mImage,sidebar_tab->getTabTitle(), boost::bind(&LLSideTray::onToggleCollapse, this)); @@ -427,7 +431,6 @@ void LLSideTray::processTriState () void LLSideTray::onTabButtonClick(string name) { LLSideTrayTab* side_bar = getTab(name); - if(side_bar == mActiveTab) { processTriState (); @@ -443,7 +446,7 @@ void LLSideTray::onToggleCollapse() if(mCollapsed) { expandSideBar(); - selectTabByName("sidebar_home"); + //selectTabByName("sidebar_openclose"); } else collapseSideBar(); @@ -534,11 +537,11 @@ void LLSideTray::collapseSideBar() } } - // Home tab doesn't put its button in mTabButtons - LLSideTrayTab* home_tab = getTab("sidebar_home"); - if (home_tab) + // OpenClose tab doesn't put its button in mTabButtons + LLSideTrayTab* openclose_tab = getTab("sidebar_openclose"); + if (openclose_tab) { - mCollapseButton->setImageOverlay( home_tab->mImage ); + mCollapseButton->setImageOverlay( openclose_tab->mImage ); } //mActiveTab->setVisible(FALSE); reflectCollapseChange(); @@ -549,10 +552,10 @@ void LLSideTray::collapseSideBar() void LLSideTray::expandSideBar() { mCollapsed = false; - LLSideTrayTab* home_tab = getTab("sidebar_home"); - if (home_tab) + LLSideTrayTab* openclose_tab = getTab("sidebar_openclose"); + if (openclose_tab) { - mCollapseButton->setImageOverlay( home_tab->mImageSelected ); + mCollapseButton->setImageOverlay( openclose_tab->mImageSelected ); } LLSD key;//empty mActiveTab->onOpen(key); @@ -641,24 +644,66 @@ LLPanel* LLSideTray::showPanel (const std::string& panel_name, const LLSD& para return NULL; } -LLPanel* LLSideTray::getPanel (const std::string& panel_name) +void LLSideTray::togglePanel(LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params) { - child_vector_const_iter_t child_it; - for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) + if(!sub_panel) + return; + + if (sub_panel->isInVisibleChain()) { - LLView* view = (*child_it)->findChildView(panel_name,true); - if(view) + LLSideTray::getInstance()->collapseSideBar(); + } + else + { + LLSideTray::getInstance()->showPanel(panel_name, params); + } +} + +// This is just LLView::findChildView specialized to restrict the search to LLPanels. +// Optimization for EXT-4068 to avoid searching down to the individual item level +// when inventories are large. +LLPanel *findChildPanel(LLPanel *panel, const std::string& name, bool recurse) +{ + for (LLView::child_list_const_iter_t child_it = panel->beginChild(); + child_it != panel->endChild(); ++child_it) + { + LLPanel *child_panel = dynamic_cast<LLPanel*>(*child_it); + if (!child_panel) + continue; + if (child_panel->getName() == name) + return child_panel; + } + if (recurse) + { + for (LLView::child_list_const_iter_t child_it = panel->beginChild(); + child_it != panel->endChild(); ++child_it) { - LLPanel* panel = dynamic_cast<LLPanel*>(view); - if(panel) + LLPanel *child_panel = dynamic_cast<LLPanel*>(*child_it); + if (!child_panel) + continue; + LLPanel *found_panel = findChildPanel(child_panel,name,recurse); + if (found_panel) { - return panel; + return found_panel; } } } return NULL; } +LLPanel* LLSideTray::getPanel(const std::string& panel_name) +{ + for ( child_vector_const_iter_t child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) + { + LLPanel *panel = findChildPanel(*child_it,panel_name,true); + if(panel) + { + return panel; + } + } + return NULL; +} + LLPanel* LLSideTray::getActivePanel() { if (mActiveTab && !mCollapsed) diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h index de2cfe9711..140a9c818a 100644 --- a/indra/newview/llsidetray.h +++ b/indra/newview/llsidetray.h @@ -94,7 +94,15 @@ public: * if no such tab - return NULL, otherwise a pointer to the panel * Pass params as array, or they may be overwritten(example - params["name"]="nearby") */ - LLPanel* showPanel (const std::string& panel_name, const LLSD& params); + LLPanel* showPanel (const std::string& panel_name, const LLSD& params); + + /** + * Toggling Side Tray tab which contains "sub_panel" child of "panel_name" panel. + * If "sub_panel" is not visible Side Tray is opened to display it, + * otherwise Side Tray is collapsed. + * params are passed to "panel_name" panel onOpen(). + */ + void togglePanel (LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params); /* * get the panel (don't show it or do anything else with it) @@ -131,6 +139,8 @@ public: LLPanel* getButtonsPanel() { return mButtonsPanel; } + bool getCollapsed() { return mCollapsed; } + public: virtual ~LLSideTray(){}; diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp index 37e268ad34..5d20e280b5 100644 --- a/indra/newview/llslurl.cpp +++ b/indra/newview/llslurl.cpp @@ -36,10 +36,19 @@ #include "llweb.h" +#include "llurlregistry.h" + 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/"; + +// For DnD - even though www.slurl.com redirects to slurl.com in a browser, you can copy and drag +// text with www.slurl.com or a link explicitly pointing at www.slurl.com so testing for this +// version is required also. +const std::string LLSLURL::PREFIX_SLURL_WWW = "http://www.slurl.com/secondlife/"; + +const std::string LLSLURL::PREFIX_SLURL = "http://maps.secondlife.com/secondlife/"; const std::string LLSLURL::APP_TOKEN = "app/"; @@ -63,6 +72,14 @@ 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()); + } + else if (matchPrefix(stripped, PREFIX_SLURL_WWW)) + { + stripped.erase(0, PREFIX_SLURL_WWW.length()); + } return stripped; } @@ -74,16 +91,34 @@ 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; + if (matchPrefix(url, PREFIX_SLURL_WWW)) return true; return false; } +bool LLSLURL::isValidSLURL(const std::string& url) +{ + std::string temp_url(url); + //"www." may appear in DnD- see description of PREFIX_SLURL_WWW. + // If it is found, we remove it because it isn't expected in regexp. + if (matchPrefix(url, PREFIX_SLURL_WWW)) + { + size_t position = url.find("www."); + temp_url.erase(position,4); + } + + return LLUrlRegistry::getInstance()->isUrl(temp_url); +} + // static 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_WWW + APP_TOKEN) || + matchPrefix(url, PREFIX_SLURL_OLD + APP_TOKEN) ) { return true; } diff --git a/indra/newview/llslurl.h b/indra/newview/llslurl.h index 05b0143e72..a79a8fc97c 100644 --- a/indra/newview/llslurl.h +++ b/indra/newview/llslurl.h @@ -50,6 +50,8 @@ public: 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 PREFIX_SLURL_WWW; static const std::string APP_TOKEN; @@ -59,6 +61,11 @@ public: static bool isSLURL(const std::string& url); /** + * Returns true if url is proven valid by regexp check from LLUrlRegistry + */ + static bool isValidSLURL(const std::string& url); + + /** * Is this a special secondlife://app/ URL? */ static bool isSLURLCommand(const std::string& url); diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index 6ca6734598..d6e9256fee 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]); } @@ -2460,7 +2460,6 @@ void renderOctree(LLSpatialGroup* group) gGL.color4fv(col.mV); drawBox(group->mObjectBounds[0], group->mObjectBounds[1]*1.01f+LLVector3(0.001f, 0.001f, 0.001f)); - glDepthMask(GL_TRUE); gGL.setSceneBlendType(LLRender::BT_ALPHA); if (group->mBuilt <= 0.f) @@ -2608,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; @@ -3380,7 +3380,8 @@ LLDrawInfo::LLDrawInfo(U16 start, U16 end, U32 count, U32 offset, mVSize(0.f), mGroup(NULL), mFace(NULL), - mDistance(0.f) + mDistance(0.f), + mDrawMode(LLRender::TRIANGLES) { mDebugColor = (rand() << 16) + rand(); if (mStart >= mVertexBuffer->getRequestedVerts() || diff --git a/indra/newview/llspatialpartition.h b/indra/newview/llspatialpartition.h index 64c2a9acbc..7896488379 100644 --- a/indra/newview/llspatialpartition.h +++ b/indra/newview/llspatialpartition.h @@ -93,6 +93,7 @@ public: LLFace* mFace; //associated face F32 mDistance; LLVector3 mExtents[2]; + U32 mDrawMode; struct CompareTexture { diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp index 8f2c877c7a..c5c311ed33 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 6660b50240..85c97f1a2c 100644 --- a/indra/newview/llspeakbutton.h +++ b/indra/newview/llspeakbutton.h @@ -61,6 +61,10 @@ public: /*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. diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index 010dfd1b33..717a8bda1e 100644 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -44,7 +44,6 @@ #include "llvoavatar.h" #include "llworld.h" -const F32 SPEAKER_TIMEOUT = 10.f; // seconds of not being on voice channel before removed from list of active speakers const LLColor4 INACTIVE_COLOR(0.3f, 0.3f, 0.3f, 0.5f); const LLColor4 ACTIVE_COLOR(0.5f, 0.5f, 0.5f, 1.f); @@ -71,10 +70,6 @@ LLSpeaker::LLSpeaker(const LLUUID& id, const std::string& name, const ESpeakerTy { mDisplayName = name; } - - gVoiceClient->setUserVolume(id, LLMuteList::getInstance()->getSavedResidentVolume(id)); - - mActivityTimer.resetWithExpiry(SPEAKER_TIMEOUT); } @@ -88,6 +83,11 @@ void LLSpeaker::onAvatarNameLookup(const LLUUID& id, const std::string& first, c mDisplayName = first + " " + last; } +bool LLSpeaker::isInVoiceChannel() +{ + return mStatus == LLSpeaker::STATUS_VOICE_ACTIVE || mStatus == LLSpeaker::STATUS_MUTED; +} + LLSpeakerUpdateModeratorEvent::LLSpeakerUpdateModeratorEvent(LLSpeaker* source) : LLEvent(source, "Speaker add moderator event"), mSpeakerID (source->mID), @@ -159,6 +159,92 @@ bool LLSortRecentSpeakers::operator()(const LLPointer<LLSpeaker> lhs, const LLPo return( lhs->mDisplayName.compare(rhs->mDisplayName) < 0 ); } +LLSpeakerActionTimer::LLSpeakerActionTimer(action_callback_t action_cb, F32 action_period, const LLUUID& speaker_id) +: LLEventTimer(action_period) +, mActionCallback(action_cb) +, mSpeakerId(speaker_id) +{ +} + +BOOL LLSpeakerActionTimer::tick() +{ + if (mActionCallback) + { + return (BOOL)mActionCallback(mSpeakerId); + } + return TRUE; +} + +void LLSpeakerActionTimer::unset() +{ + mActionCallback = 0; +} + +LLSpeakersDelayActionsStorage::LLSpeakersDelayActionsStorage(LLSpeakerActionTimer::action_callback_t action_cb, F32 action_delay) +: mActionCallback(action_cb) +, mActionDelay(action_delay) +{ +} + +LLSpeakersDelayActionsStorage::~LLSpeakersDelayActionsStorage() +{ + removeAllTimers(); +} + +void LLSpeakersDelayActionsStorage::setActionTimer(const LLUUID& speaker_id) +{ + bool not_found = true; + if (mActionTimersMap.size() > 0) + { + not_found = mActionTimersMap.find(speaker_id) == mActionTimersMap.end(); + } + + // If there is already a started timer for the passed UUID don't do anything. + if (not_found) + { + // Starting a timer to remove an participant after delay is completed + mActionTimersMap.insert(LLSpeakerActionTimer::action_value_t(speaker_id, + new LLSpeakerActionTimer( + boost::bind(&LLSpeakersDelayActionsStorage::onTimerActionCallback, this, _1), + mActionDelay, speaker_id))); + } +} + +void LLSpeakersDelayActionsStorage::unsetActionTimer(const LLUUID& speaker_id) +{ + if (mActionTimersMap.size() == 0) return; + + LLSpeakerActionTimer::action_timer_iter_t it_speaker = mActionTimersMap.find(speaker_id); + + if (it_speaker != mActionTimersMap.end()) + { + it_speaker->second->unset(); + mActionTimersMap.erase(it_speaker); + } +} + +void LLSpeakersDelayActionsStorage::removeAllTimers() +{ + LLSpeakerActionTimer::action_timer_iter_t iter = mActionTimersMap.begin(); + for (; iter != mActionTimersMap.end(); ++iter) + { + delete iter->second; + } + mActionTimersMap.clear(); +} + +bool LLSpeakersDelayActionsStorage::onTimerActionCallback(const LLUUID& speaker_id) +{ + unsetActionTimer(speaker_id); + + if (mActionCallback) + { + mActionCallback(speaker_id); + } + + return true; +} + // // LLSpeakerMgr @@ -167,10 +253,14 @@ bool LLSortRecentSpeakers::operator()(const LLPointer<LLSpeaker> lhs, const LLPo LLSpeakerMgr::LLSpeakerMgr(LLVoiceChannel* channelp) : mVoiceChannel(channelp) { + static LLUICachedControl<F32> remove_delay ("SpeakerParticipantRemoveDelay", 10.0); + + mSpeakerDelayRemover = new LLSpeakersDelayActionsStorage(boost::bind(&LLSpeakerMgr::removeSpeaker, this, _1), remove_delay); } LLSpeakerMgr::~LLSpeakerMgr() { + delete mSpeakerDelayRemover; } LLPointer<LLSpeaker> LLSpeakerMgr::setSpeaker(const LLUUID& id, const std::string& name, LLSpeaker::ESpeakerStatus status, LLSpeaker::ESpeakerType type) @@ -193,7 +283,6 @@ LLPointer<LLSpeaker> LLSpeakerMgr::setSpeaker(const LLUUID& id, const std::strin { // keep highest priority status (lowest value) instead of overriding current value speakerp->mStatus = llmin(speakerp->mStatus, status); - speakerp->mActivityTimer.resetWithExpiry(SPEAKER_TIMEOUT); // RN: due to a weird behavior where IMs from attached objects come from the wearer's agent_id // we need to override speakers that we think are objects when we find out they are really // residents @@ -205,6 +294,7 @@ LLPointer<LLSpeaker> LLSpeakerMgr::setSpeaker(const LLUUID& id, const std::strin } } + mSpeakerDelayRemover->unsetActionTimer(speakerp->mID); return speakerp; } @@ -309,7 +399,7 @@ void LLSpeakerMgr::update(BOOL resort_ok) S32 sort_index = 0; speaker_list_t::iterator sorted_speaker_it; for(sorted_speaker_it = mSpeakersSorted.begin(); - sorted_speaker_it != mSpeakersSorted.end(); ) + sorted_speaker_it != mSpeakersSorted.end(); ++sorted_speaker_it) { LLPointer<LLSpeaker> speakerp = *sorted_speaker_it; @@ -322,19 +412,6 @@ void LLSpeakerMgr::update(BOOL resort_ok) // stuff sort ordinal into speaker so the ui can sort by this value speakerp->mSortIndex = sort_index++; - - // remove speakers that have been gone too long - if (speakerp->mStatus == LLSpeaker::STATUS_NOT_IN_CHANNEL && speakerp->mActivityTimer.hasExpired()) - { - fireEvent(new LLSpeakerListChangeEvent(this, speakerp->mID), "remove"); - - mSpeakers.erase(speakerp->mID); - sorted_speaker_it = mSpeakersSorted.erase(sorted_speaker_it); - } - else - { - ++sorted_speaker_it; - } } } @@ -358,6 +435,35 @@ void LLSpeakerMgr::updateSpeakerList() } } +void LLSpeakerMgr::setSpeakerNotInChannel(LLSpeaker* speakerp) +{ + speakerp->mStatus = LLSpeaker::STATUS_NOT_IN_CHANNEL; + speakerp->mDotColor = INACTIVE_COLOR; + mSpeakerDelayRemover->setActionTimer(speakerp->mID); +} + +bool LLSpeakerMgr::removeSpeaker(const LLUUID& speaker_id) +{ + mSpeakers.erase(speaker_id); + + speaker_list_t::iterator sorted_speaker_it = mSpeakersSorted.begin(); + + for(; sorted_speaker_it != mSpeakersSorted.end(); ++sorted_speaker_it) + { + if (speaker_id == (*sorted_speaker_it)->mID) + { + mSpeakersSorted.erase(sorted_speaker_it); + break; + } + } + + fireEvent(new LLSpeakerListChangeEvent(this, speaker_id), "remove"); + + update(TRUE); + + return false; +} + LLPointer<LLSpeaker> LLSpeakerMgr::findSpeaker(const LLUUID& speaker_id) { //In some conditions map causes crash if it is empty(Windows only), adding check (EK) @@ -506,9 +612,7 @@ void LLIMSpeakerMgr::updateSpeakers(const LLSD& update) { if (agent_data["transition"].asString() == "LEAVE" && speakerp.notNull()) { - speakerp->mStatus = LLSpeaker::STATUS_NOT_IN_CHANNEL; - speakerp->mDotColor = INACTIVE_COLOR; - speakerp->mActivityTimer.resetWithExpiry(SPEAKER_TIMEOUT); + setSpeakerNotInChannel(speakerp); } else if (agent_data["transition"].asString() == "ENTER") { @@ -558,9 +662,7 @@ void LLIMSpeakerMgr::updateSpeakers(const LLSD& update) std::string agent_transition = update_it->second.asString(); if (agent_transition == "LEAVE" && speakerp.notNull()) { - speakerp->mStatus = LLSpeaker::STATUS_NOT_IN_CHANNEL; - speakerp->mDotColor = INACTIVE_COLOR; - speakerp->mActivityTimer.resetWithExpiry(SPEAKER_TIMEOUT); + setSpeakerNotInChannel(speakerp); } else if ( agent_transition == "ENTER") { @@ -729,12 +831,13 @@ void LLActiveSpeakerMgr::updateSpeakerList() mVoiceChannel = LLVoiceChannel::getCurrentVoiceChannel(); // always populate from active voice channel - if (LLVoiceChannel::getCurrentVoiceChannel() != mVoiceChannel) + if (LLVoiceChannel::getCurrentVoiceChannel() != mVoiceChannel) //MA: seems this is always false { fireEvent(new LLSpeakerListChangeEvent(this, LLUUID::null), "clear"); mSpeakers.clear(); mSpeakersSorted.clear(); mVoiceChannel = LLVoiceChannel::getCurrentVoiceChannel(); + mSpeakerDelayRemover->removeAllTimers(); } LLSpeakerMgr::updateSpeakerList(); @@ -795,9 +898,7 @@ void LLLocalSpeakerMgr::updateSpeakerList() LLVOAvatar* avatarp = (LLVOAvatar*)gObjectList.findObject(speaker_id); if (!avatarp || dist_vec(avatarp->getPositionAgent(), gAgent.getPositionAgent()) > CHAT_NORMAL_RADIUS) { - speakerp->mStatus = LLSpeaker::STATUS_NOT_IN_CHANNEL; - speakerp->mDotColor = INACTIVE_COLOR; - speakerp->mActivityTimer.resetWithExpiry(SPEAKER_TIMEOUT); + setSpeakerNotInChannel(speakerp); } } } diff --git a/indra/newview/llspeakers.h b/indra/newview/llspeakers.h index 1a8c23f56a..b924fb2f2c 100644 --- a/indra/newview/llspeakers.h +++ b/indra/newview/llspeakers.h @@ -34,6 +34,7 @@ #define LL_LLSPEAKERS_H #include "llevent.h" +#include "lleventtimer.h" #include "llspeakers.h" #include "llvoicechannel.h" @@ -67,11 +68,12 @@ public: void onAvatarNameLookup(const LLUUID& id, const std::string& first, const std::string& last, BOOL is_group); + bool isInVoiceChannel(); + ESpeakerStatus mStatus; // current activity status in speech group F32 mLastSpokeTime; // timestamp when this speaker last spoke F32 mSpeechVolume; // current speech amplitude (timea average rms amplitude?) std::string mDisplayName; // cache user name for this speaker - LLFrameTimer mActivityTimer; // time out speakers when they are not part of current voice channel BOOL mHasSpoken; // has this speaker said anything this session? BOOL mHasLeftCurrentCall; // has this speaker left the current voice call? LLColor4 mDotColor; @@ -118,6 +120,98 @@ private: const LLUUID& mSpeakerID; }; +/** + * class LLSpeakerActionTimer + * + * Implements a timer that calls stored callback action for stored speaker after passed period. + * + * Action is called until callback returns "true". + * In this case the timer will be removed via LLEventTimer::updateClass(). + * Otherwise it should be deleted manually in place where it is used. + * If action callback is not set timer will tick only once and deleted. + */ +class LLSpeakerActionTimer : public LLEventTimer +{ +public: + typedef boost::function<bool(const LLUUID&)> action_callback_t; + typedef std::map<LLUUID, LLSpeakerActionTimer*> action_timers_map_t; + typedef action_timers_map_t::value_type action_value_t; + typedef action_timers_map_t::const_iterator action_timer_const_iter_t; + typedef action_timers_map_t::iterator action_timer_iter_t; + + /** + * Constructor. + * + * @param action_cb - callback which will be called each time after passed action period. + * @param action_period - time in seconds timer should tick. + * @param speaker_id - LLUUID of speaker which will be passed into action callback. + */ + LLSpeakerActionTimer(action_callback_t action_cb, F32 action_period, const LLUUID& speaker_id); + virtual ~LLSpeakerActionTimer() {}; + + /** + * Implements timer "tick". + * + * If action callback is not specified returns true. Instance will be deleted by LLEventTimer::updateClass(). + */ + virtual BOOL tick(); + + /** + * Clears the callback. + * + * Use this instead of deleteing this object. + * The next call to tick() will return true and that will destroy this object. + */ + void unset(); +private: + action_callback_t mActionCallback; + LLUUID mSpeakerId; +}; + +/** + * Represents a functionality to store actions for speakers with delay. + * Is based on LLSpeakerActionTimer. + */ +class LLSpeakersDelayActionsStorage +{ +public: + LLSpeakersDelayActionsStorage(LLSpeakerActionTimer::action_callback_t action_cb, F32 action_delay); + ~LLSpeakersDelayActionsStorage(); + + /** + * Sets new LLSpeakerActionTimer with passed speaker UUID. + */ + void setActionTimer(const LLUUID& speaker_id); + + /** + * Removes stored LLSpeakerActionTimer for passed speaker UUID from internal map and optionally deletes it. + * + * @see onTimerActionCallback() + */ + void unsetActionTimer(const LLUUID& speaker_id); + + void removeAllTimers(); +private: + /** + * Callback of the each instance of LLSpeakerActionTimer. + * + * Unsets an appropriate timer instance and calls action callback for specified speacker_id. + * + * @see unsetActionTimer() + */ + bool onTimerActionCallback(const LLUUID& speaker_id); + + LLSpeakerActionTimer::action_timers_map_t mActionTimersMap; + LLSpeakerActionTimer::action_callback_t mActionCallback; + + /** + * Delay to call action callback for speakers after timer was set. + */ + F32 mActionDelay; + +}; + + class LLSpeakerMgr : public LLOldEvents::LLObservable { public: @@ -142,6 +236,8 @@ public: protected: virtual void updateSpeakerList(); + void setSpeakerNotInChannel(LLSpeaker* speackerp); + bool removeSpeaker(const LLUUID& speaker_id); typedef std::map<LLUUID, LLPointer<LLSpeaker> > speaker_map_t; speaker_map_t mSpeakers; @@ -149,6 +245,11 @@ protected: speaker_list_t mSpeakersSorted; LLFrameTimer mSpeechTimer; LLVoiceChannel* mVoiceChannel; + + /** + * time out speakers when they are not part of current session + */ + LLSpeakersDelayActionsStorage* mSpeakerDelayRemover; }; class LLIMSpeakerMgr : public LLSpeakerMgr diff --git a/indra/newview/llspeakingindicatormanager.cpp b/indra/newview/llspeakingindicatormanager.cpp new file mode 100644 index 0000000000..cc06179481 --- /dev/null +++ b/indra/newview/llspeakingindicatormanager.cpp @@ -0,0 +1,321 @@ +/** + * @file llspeakingindicatormanager.cpp + * @author Mike Antipov + * @brief Implementation of SpeackerIndicatorManager class to process registered LLSpeackerIndicator + * depend on avatars are in the same voice channel. + * + * $LicenseInfo:firstyear=2010&license=viewergpl$ + * + * Copyright (c) 2010, 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 "llviewerprecompiledheaders.h" +#include "llspeakingindicatormanager.h" + + +#include "llvoicechannel.h" +#include "llvoiceclient.h" + +/** + * This class intended to control visibility of avatar speaking indicators depend on whether avatars + * are in the same voice channel. + * + * Speaking indicator should be visible for avatars in the same voice channel. See EXT-3976. + * + * It stores passed instances of LLOutputMonitorCtrl in a multimap by avatar LLUUID. + * It observes changing of voice channel and changing of participant list in voice channel. + * When voice channel or voice participant list is changed it updates visibility of an appropriate + * speaking indicator. + * + * Several indicators can be registered for the same avatar. + */ +class SpeakingIndicatorManager : public LLSingleton<SpeakingIndicatorManager>, LLVoiceClientParticipantObserver +{ + LOG_CLASS(SpeakingIndicatorManager); +public: + + /** + * Stores passed speaking indicator to control its visibility. + * + * Registered indicator is set visible if an appropriate avatar is in the same voice channel with Agent. + * It ignores instances of Agent's indicator. + * + * @param speaker_id LLUUID of an avatar whose speaking indicator is registered. + * @param speaking_indicator instance of the speaking indicator to be registered. + * @param session_id session UUID for which indicator should be shown only. + * If this parameter is set registered indicator will be shown only in voice channel + * which has the same session id (EXT-5562). + */ + void registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator, + const LLUUID& session_id = LLUUID::null); + + /** + * Removes passed speaking indicator from observing. + * + * @param speaker_id LLUUID of an avatar whose speaking indicator should be unregistered. + * @param speaking_indicator instance of the speaking indicator to be unregistered. + */ + void unregisterSpeakingIndicator(const LLUUID& speaker_id, const LLSpeakingIndicator* const speaking_indicator); + +private: + typedef std::set<LLUUID> speaker_ids_t; + typedef std::multimap<LLUUID, LLSpeakingIndicator*> speaking_indicators_mmap_t; + typedef speaking_indicators_mmap_t::value_type speaking_indicator_value_t; + typedef speaking_indicators_mmap_t::const_iterator indicator_const_iterator; + typedef std::pair<indicator_const_iterator, indicator_const_iterator> indicator_range_t; + + friend class LLSingleton<SpeakingIndicatorManager>; + SpeakingIndicatorManager(); + ~SpeakingIndicatorManager(); + + /** + * Callback to determine when voice channel is changed. + * + * It switches all registered speaking indicators off. + * To reduce overheads only switched on indicators are processed. + */ + void sOnCurrentChannelChanged(const LLUUID& session_id); + + /** + * Callback of changing voice participant list (from LLVoiceClientParticipantObserver). + * + * Switches off indicators had been switched on and switches on indicators of current participants list. + * There is only a few indicators in lists should be switched off/on. + * So, method does not calculate difference between these list it only switches off already + * switched on indicators and switches on indicators of voice channel participants + */ + void onChange(); + + /** + * Changes state of indicators specified by LLUUIDs + * + * @param speakers_uuids - avatars' LLUUIDs whose speaking indicators should be switched + * @param switch_on - if TRUE specified indicator will be switched on, off otherwise. + */ + 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 + */ + speaking_indicators_mmap_t mSpeakingIndicators; + + /** + * LUUIDs of avatar for which we have speaking indicators switched on. + * + * Is used to switch off all previously ON indicators when voice participant list is changed. + * + * @see onChange() + */ + speaker_ids_t mSwitchedIndicatorsOn; +}; + +////////////////////////////////////////////////////////////////////////// +// PUBLIC SECTION +////////////////////////////////////////////////////////////////////////// +void SpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator, + const LLUUID& session_id) +{ + // 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 << "|"<< speaking_indicator << ", session: " << session_id << LL_ENDL; + + + ensureInstanceDoesNotExist(speaking_indicator); + + speaking_indicator->setTargetSessionID(session_id); + + speaking_indicator_value_t value_type(speaker_id, speaking_indicator); + mSpeakingIndicators.insert(value_type); + + speaker_ids_t speakers_uuids; + BOOL is_in_same_voice = LLVoiceClient::getInstance()->findParticipantByID(speaker_id) != NULL; + + speakers_uuids.insert(speaker_id); + switchSpeakerIndicators(speakers_uuids, is_in_same_voice); +} + +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; + } + } +} + +////////////////////////////////////////////////////////////////////////// +// PRIVATE SECTION +////////////////////////////////////////////////////////////////////////// +SpeakingIndicatorManager::SpeakingIndicatorManager() +{ + LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&SpeakingIndicatorManager::sOnCurrentChannelChanged, this, _1)); + LLVoiceClient::getInstance()->addObserver(this); +} + +SpeakingIndicatorManager::~SpeakingIndicatorManager() +{ + // Don't use LLVoiceClient::getInstance() here without check + // singleton MAY have already been destroyed. + if(LLVoiceClient::instanceExists()) + { + LLVoiceClient::getInstance()->removeObserver(this); + } +} + +void SpeakingIndicatorManager::sOnCurrentChannelChanged(const LLUUID& /*session_id*/) +{ + switchSpeakerIndicators(mSwitchedIndicatorsOn, FALSE); + mSwitchedIndicatorsOn.clear(); +} + +void SpeakingIndicatorManager::onChange() +{ + LL_DEBUGS("SpeakingIndicator") << "Voice participant list was changed, updating indicators" << LL_ENDL; + + speaker_ids_t speakers_uuids; + LLVoiceClient::getInstance()->getParticipantsUUIDSet(speakers_uuids); + + LL_DEBUGS("SpeakingIndicator") << "Switching all OFF, count: " << mSwitchedIndicatorsOn.size() << LL_ENDL; + // switch all indicators off + switchSpeakerIndicators(mSwitchedIndicatorsOn, FALSE); + mSwitchedIndicatorsOn.clear(); + + LL_DEBUGS("SpeakingIndicator") << "Switching all ON, count: " << speakers_uuids.size() << LL_ENDL; + // then switch current voice participants indicators on + switchSpeakerIndicators(speakers_uuids, TRUE); +} + +void SpeakingIndicatorManager::switchSpeakerIndicators(const speaker_ids_t& speakers_uuids, BOOL switch_on) +{ + LLVoiceChannel* voice_channel = LLVoiceChannel::getCurrentVoiceChannel(); + LLUUID session_id; + if (voice_channel) + { + session_id = voice_channel->getSessionID(); + } + + speaker_ids_t::const_iterator it_uuid = speakers_uuids.begin(); + for (; it_uuid != speakers_uuids.end(); ++it_uuid) + { + LL_DEBUGS("SpeakingIndicator") << "Looking for indicator: " << *it_uuid << LL_ENDL; + indicator_range_t it_range = mSpeakingIndicators.equal_range(*it_uuid); + indicator_const_iterator it_indicator = it_range.first; + bool was_found = false; + bool was_switched_on = false; + for (; it_indicator != it_range.second; ++it_indicator) + { + was_found = true; + LLSpeakingIndicator* indicator = (*it_indicator).second; + + BOOL switch_current_on = switch_on; + + // we should show indicator for specified voice session only if this is current channel. EXT-5562. + if (switch_current_on && indicator->getTargetSessionID().notNull()) + { + switch_current_on = indicator->getTargetSessionID() == session_id; + LL_DEBUGS("SpeakingIndicator") << "Session: " << session_id << ", target: " << indicator->getTargetSessionID() << ", the same? = " << switch_current_on << LL_ENDL; + } + was_switched_on = was_switched_on || switch_current_on; + + indicator->switchIndicator(switch_current_on); + + } + + if (was_found) + { + LL_DEBUGS("SpeakingIndicator") << mSpeakingIndicators.count(*it_uuid) << " indicators where found" << LL_ENDL; + + if (switch_on && !was_switched_on) + { + LL_DEBUGS("SpeakingIndicator") << "but non of them where switched on" << LL_ENDL; + } + + if (was_switched_on) + { + // store switched on indicator to be able switch it off + mSwitchedIndicatorsOn.insert(*it_uuid); + } + } + } +} + +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 */ +/************************************************************************/ + +void LLSpeakingIndicatorManager::registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator, + const LLUUID& session_id) +{ + SpeakingIndicatorManager::instance().registerSpeakingIndicator(speaker_id, speaking_indicator, session_id); +} + +void LLSpeakingIndicatorManager::unregisterSpeakingIndicator(const LLUUID& speaker_id, const LLSpeakingIndicator* const speaking_indicator) +{ + SpeakingIndicatorManager::instance().unregisterSpeakingIndicator(speaker_id, speaking_indicator); +} + +// EOF + diff --git a/indra/newview/llspeakingindicatormanager.h b/indra/newview/llspeakingindicatormanager.h new file mode 100644 index 0000000000..8d7aba1d6c --- /dev/null +++ b/indra/newview/llspeakingindicatormanager.h @@ -0,0 +1,89 @@ +/** + * @file llspeakingindicatormanager.h + * @author Mike Antipov + * @brief Interfeace of LLSpeackerIndicator class to be processed depend on avatars are in the same voice channel. + * Also register/unregister methods for this class are declared + * + * $LicenseInfo:firstyear=2010&license=viewergpl$ + * + * Copyright (c) 2010, 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_LLSPEAKINGINDICATORMANAGER_H +#define LL_LLSPEAKINGINDICATORMANAGER_H + +class SpeakingIndicatorManager; + +class LLSpeakingIndicator +{ +public: + virtual ~LLSpeakingIndicator(){} + virtual void switchIndicator(bool switch_on) = 0; + +private: + friend class SpeakingIndicatorManager; + // Accessors for target voice session UUID. + // They are intended to be used only from SpeakingIndicatorManager to ensure target session is + // the same indicator was registered with. + void setTargetSessionID(const LLUUID& session_id) { mTargetSessionID = session_id; } + const LLUUID& getTargetSessionID() { return mTargetSessionID; } + + /** + * session UUID for which indicator should be shown only. + * If it is set, registered indicator will be shown only in voice channel + * which has the same session id (EXT-5562). + */ + LLUUID mTargetSessionID; +}; + +// See EXT-3976. +namespace LLSpeakingIndicatorManager +{ + /** + * Stores passed speaking indicator to control its visibility. + * + * Registered indicator is set visible if an appropriate avatar is in the same voice channel with Agent. + * It ignores instances of Agent's indicator. + * + * @param speaker_id LLUUID of an avatar whose speaker indicator is registered. + * @param speaking_indicator instance of the speaker indicator to be registered. + * @param session_id session UUID for which indicator should be shown only. + * If this parameter is set registered indicator will be shown only in voice channel + * which has the same session id (EXT-5562). + */ + void registerSpeakingIndicator(const LLUUID& speaker_id, LLSpeakingIndicator* const speaking_indicator, + const LLUUID& session_id); + + /** + * Removes passed speaking indicator from observing. + * + * @param speaker_id LLUUID of an avatar whose speaker indicator should be unregistered. + * @param speaking_indicator instance of the speaker indicator to be unregistered. + */ + void unregisterSpeakingIndicator(const LLUUID& speaker_id, const LLSpeakingIndicator* const speaking_indicator); +} + +#endif // LL_LLSPEAKINGINDICATORMANAGER_H diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index eb2275bff0..025dd6029a 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" @@ -100,8 +101,7 @@ #include "lleventnotifier.h" #include "llface.h" #include "llfeaturemanager.h" -#include "llfirstuse.h" -#include "llfloaterchat.h" +//#include "llfirstuse.h" #include "llfloaterhud.h" #include "llfloaterland.h" #include "llfloaterpreference.h" @@ -121,9 +121,8 @@ #include "lllogininstance.h" // Host the login module. #include "llpanellogin.h" #include "llmutelist.h" -#include "llpanelavatar.h" #include "llavatarpropertiesprocessor.h" -#include "llpanelevent.h" +#include "llfloaterevent.h" #include "llpanelclassified.h" #include "llpanelpick.h" #include "llpanelplace.h" @@ -135,13 +134,14 @@ #include "llsecondlifeurls.h" #include "llselectmgr.h" #include "llsky.h" +#include "llsidetray.h" #include "llstatview.h" -#include "lltrans.h" #include "llstatusbar.h" // sendMoneyBalanceRequest(), owns L$ balance #include "llsurface.h" #include "lltexturecache.h" #include "lltexturefetch.h" #include "lltoolmgr.h" +#include "lltrans.h" #include "llui.h" #include "llurldispatcher.h" #include "llurlsimstring.h" @@ -199,10 +199,6 @@ #include "lldxhardware.h" #endif -#if (LL_LINUX || LL_SOLARIS) && LL_GTK -#include <glib/gspawn.h> -#endif - // // exported globals // @@ -308,59 +304,6 @@ void update_texture_fetch() gTextureList.updateImages(0.10f); } -//Copies landmarks from the "Library" to "My Favorites" -void populate_favorites_bar() -{ - //*TODO consider extending LLInventoryModel::findCategoryUUIDForType(...) to support both root's - LLInventoryModel::cat_array_t* lib_cats = NULL; - LLInventoryModel::item_array_t* lib_items = NULL; - gInventory.getDirectDescendentsOf(gInventory.getLibraryRootFolderID(), lib_cats, lib_items); - if (!lib_cats) return; - - LLUUID lib_landmarks(LLUUID::null); - S32 count = lib_cats->count(); - for(S32 i = 0; i < count; ++i) - { - if(lib_cats->get(i)->getPreferredType() == LLFolderType::FT_LANDMARK) - { - lib_landmarks = lib_cats->get(i)->getUUID(); - break; - } - } - if (lib_landmarks.isNull()) - { - llerror("Library inventory is missing Landmarks", 0); - return; - } - - LLInventoryModel::cat_array_t* lm_cats = NULL; - LLInventoryModel::item_array_t* lm_items = NULL; - gInventory.getDirectDescendentsOf(lib_landmarks, lm_cats, lm_items); - if (!lm_items) return; - - const LLUUID favorites_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_FAVORITE); - if (favorites_id.isNull()) - { - llerror("My Inventory is missing My Favorites", 0); - return; - } - - S32 lm_count = lm_items->count(); - for (S32 i = 0; i < lm_count; ++i) - { - LLInventoryItem* item = lm_items->get(i); - if (item->getUUID().isNull()) continue; - - copy_inventory_item(gAgent.getID(), - item->getPermissions().getOwner(), - item->getUUID(), - favorites_id, - std::string(), - LLPointer<LLInventoryCallback>(NULL)); - } -} - - // Returns false to skip other idle processing. Should only return // true when all initialization done. bool idle_startup() @@ -853,6 +796,9 @@ bool idle_startup() gLoginMenuBarView->setVisible( TRUE ); gLoginMenuBarView->setEnabled( TRUE ); + // Hide the splash screen + LLSplashScreen::hide(); + // Push our window frontmost gViewerWindow->getWindow()->show(); display_startup(); @@ -920,9 +866,9 @@ bool idle_startup() // create necessary directories // *FIX: these mkdir's should error check gDirUtilp->setLindenUserDir(gFirstname, gLastname); - LLFile::mkdir(gDirUtilp->getLindenUserDir()); - - // Set PerAccountSettingsFile to the default value. + LLFile::mkdir(gDirUtilp->getLindenUserDir()); + + // Set PerAccountSettingsFile to the default value. gSavedSettings.setString("PerAccountSettingsFile", gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, LLAppViewer::instance()->getSettingsFilename("Default", "PerAccount"))); @@ -958,14 +904,8 @@ bool idle_startup() LLFile::mkdir(gDirUtilp->getChatLogsDir()); LLFile::mkdir(gDirUtilp->getPerAccountChatLogsDir()); - // chat history must be loaded AFTER chat directories are defined. - if (!gNoRender && gSavedPerAccountSettings.getBOOL("LogShowHistory")) - { - LLFloaterChat::loadHistory(); - } - - - //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()); @@ -1257,6 +1197,7 @@ bool idle_startup() display_startup(); LLStartUp::setStartupState( STATE_MULTIMEDIA_INIT ); + return FALSE; } @@ -1309,6 +1250,7 @@ bool idle_startup() // Move the progress view in front of the UI gViewerWindow->moveProgressViewToFront(); + // direct logging to the debug console's line buffer LLError::logToFixedBuffer(gDebugView->mDebugConsolep); // set initial visibility of debug console @@ -1344,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 @@ -1712,12 +1662,6 @@ bool idle_startup() llinfos << "Creating Inventory Views" << llendl; LLFloaterReg::getInstance("inventory"); - //default initial content for Favorites Bar - if (gAgent.isFirstLogin()) - { - populate_favorites_bar(); - } - LLStartUp::setStartupState( STATE_MISC ); return FALSE; } @@ -1756,6 +1700,13 @@ bool idle_startup() << " kbps" << LL_ENDL; gViewerThrottle.setMaxBandwidth(FAST_RATE_BPS / 1024.f); } + + // Set the show start location to true, now that the user has logged + // on with this install. + gSavedSettings.setBOOL("ShowStartLocation", TRUE); + + LLSideTray::getInstance()->showPanel("panel_home", LLSD()); + } // We're successfully logged in. @@ -1915,21 +1866,6 @@ bool idle_startup() LLStartUp::loadInitialOutfit( sInitialOutfit, sInitialOutfitGender ); } - - // 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 ); - } - // wait precache-delay and for agent's avatar or a lot longer. if(((timeout_frac > 1.f) && gAgent.getAvatarObject()) || (timeout_frac > 3.f)) @@ -1949,7 +1885,7 @@ bool idle_startup() LLViewerShaderMgr::instance()->setShaders(); } } - + return TRUE; } @@ -2532,7 +2468,7 @@ void register_viewer_callbacks(LLMessageSystem* msg) msg->setHandlerFunc("MapBlockReply", LLWorldMapMessage::processMapBlockReply); msg->setHandlerFunc("MapItemReply", LLWorldMapMessage::processMapItemReply); - msg->setHandlerFunc("EventInfoReply", LLPanelEvent::processEventInfoReply); + msg->setHandlerFunc("EventInfoReply", LLFloaterEvent::processEventInfoReply); msg->setHandlerFunc("PickInfoReply", &LLAvatarPropertiesProcessor::processPickInfoReply); // msg->setHandlerFunc("ClassifiedInfoReply", LLPanelClassified::processClassifiedInfoReply); msg->setHandlerFunc("ClassifiedInfoReply", LLAvatarPropertiesProcessor::processClassifiedInfoReply); @@ -2592,6 +2528,13 @@ bool callback_choose_gender(const LLSD& notification, const LLSD& response) void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name, const std::string& gender_name ) { + llinfos << "starting" << llendl; + + // 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") @@ -2607,24 +2550,53 @@ void LLStartUp::loadInitialOutfit( const std::string& outfit_folder_name, // try to find the outfit - if not there, create some default // wearables. - LLInventoryModel::cat_array_t cat_array; - LLInventoryModel::item_array_t item_array; - LLNameCategoryCollector has_name(outfit_folder_name); - gInventory.collectDescendentsIf(LLUUID::null, - cat_array, - item_array, - LLInventoryModel::EXCLUDE_TRASH, - has_name); - if (0 == cat_array.count()) + LLUUID cat_id = findDescendentCategoryIDByName( + gInventory.getLibraryRootFolderID(), + outfit_folder_name); + if (cat_id.isNull()) { gAgentWearables.createStandardWearables(gender); } else { - LLAppearanceManager::instance().wearOutfitByName(outfit_folder_name); + bool do_copy = true; + bool do_append = false; + LLViewerInventoryCategory *cat = gInventory.getCategory(cat_id); + LLAppearanceManager::instance().wearInventoryCategory(cat, do_copy, do_append); + } + + // Copy gestures + LLUUID dst_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_GESTURE); + LLPointer<LLInventoryCallback> cb(NULL); + LLAppearanceManager *app_mgr = &(LLAppearanceManager::instance()); + + // - Copy gender-specific gestures. + LLUUID gestures_cat_id = findDescendentCategoryIDByName( + gInventory.getLibraryRootFolderID(), + gestures); + if (gestures_cat_id.notNull()) + { + callAfterCategoryFetch(gestures_cat_id, + boost::bind(&LLAppearanceManager::shallowCopyCategory, + app_mgr, + gestures_cat_id, + dst_id, + cb)); + } + + // - Copy common gestures. + LLUUID common_gestures_cat_id = findDescendentCategoryIDByName( + gInventory.getLibraryRootFolderID(), + COMMON_GESTURES_FOLDER); + if (common_gestures_cat_id.notNull()) + { + callAfterCategoryFetch(common_gestures_cat_id, + boost::bind(&LLAppearanceManager::shallowCopyCategory, + app_mgr, + common_gestures_cat_id, + dst_id, + cb)); } - LLAppearanceManager::instance().wearOutfitByName(gestures); - LLAppearanceManager::instance().wearOutfitByName(COMMON_GESTURES_FOLDER); // This is really misnamed -- it means we have started loading // an outfit/shape that will give the avatar a gender eventually. JC @@ -2922,7 +2894,9 @@ bool process_login_success_response() text = response["agent_region_access"].asString(); if (!text.empty()) { - int preferredMaturity = LLAgent::convertTextToMaturity(text[0]); + U32 preferredMaturity = + llmin((U32)LLAgent::convertTextToMaturity(text[0]), + gSavedSettings.getU32("PreferredMaturity")); gSavedSettings.setU32("PreferredMaturity", preferredMaturity); } // During the AO transition, this flag will be true. Then the flag will diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index 5ce3bbb9f6..9fb496c214 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -40,9 +40,9 @@ #include "llcommandhandler.h" #include "llviewercontrol.h" #include "llfloaterbuycurrency.h" -#include "llfloaterchat.h" #include "llfloaterlagmeter.h" -#include "llfloatervolumepulldown.h" +#include "llpanelnearbymedia.h" +#include "llpanelvolumepulldown.h" #include "llfloaterregioninfo.h" #include "llfloaterscriptdebug.h" #include "llhudicon.h" @@ -50,6 +50,7 @@ #include "llkeyboard.h" #include "lllineeditor.h" #include "llmenugl.h" +#include "llrootview.h" #include "llsd.h" #include "lltextbox.h" #include "llui.h" @@ -62,6 +63,7 @@ #include "llresmgr.h" #include "llworld.h" #include "llstatgraph.h" +#include "llviewermedia.h" #include "llviewermenu.h" // for gMenuBarView #include "llviewerparcelmgr.h" #include "llviewerthrottle.h" @@ -107,7 +109,6 @@ const F32 ICON_TIMER_EXPIRY = 3.f; // How long the balance and health icons sho const F32 ICON_FLASH_FREQUENCY = 2.f; const S32 TEXT_HEIGHT = 18; -static void onClickBuyCurrency(void*); static void onClickHealth(void*); static void onClickScriptDebug(void*); static void onClickVolume(void*); @@ -122,7 +123,6 @@ LLStatusBar::LLStatusBar(const LLRect& rect) mTextTime(NULL), mSGBandwidth(NULL), mSGPacketLoss(NULL), - mBtnBuyCurrency(NULL), mBtnVolume(NULL), mBalance(0), mHealth(100), @@ -133,7 +133,6 @@ LLStatusBar::LLStatusBar(const LLRect& rect) // status bar can possible overlay menus? setMouseOpaque(FALSE); - setIsChrome(TRUE); // size of day of the weeks and year sDays.reserve(7); @@ -143,9 +142,39 @@ LLStatusBar::LLStatusBar(const LLRect& rect) mHealthTimer = new LLFrameTimer(); LLUICtrlFactory::getInstance()->buildPanel(this,"panel_status_bar.xml"); +} + +LLStatusBar::~LLStatusBar() +{ + delete mBalanceTimer; + mBalanceTimer = NULL; - // status bar can never get a tab - setFocusRoot(FALSE); + delete mHealthTimer; + mHealthTimer = NULL; + + // LLView destructor cleans up children +} + +//----------------------------------------------------------------------- +// Overrides +//----------------------------------------------------------------------- + +// virtual +void LLStatusBar::draw() +{ + refresh(); + LLPanel::draw(); +} + +BOOL LLStatusBar::handleRightMouseDown(S32 x, S32 y, MASK mask) +{ + show_navbar_context_menu(this,x,y); + return TRUE; +} + +BOOL LLStatusBar::postBuild() +{ + gMenuBarView->setRightMouseDownCallback(boost::bind(&show_navbar_context_menu, _1, _2, _3)); // build date necessary data (must do after panel built) setupDate(); @@ -153,13 +182,18 @@ LLStatusBar::LLStatusBar(const LLRect& rect) mTextHealth = getChild<LLTextBox>("HealthText" ); mTextTime = getChild<LLTextBox>("TimeText" ); - mBtnBuyCurrency = getChild<LLButton>( "buycurrency" ); - mBtnBuyCurrency->setClickedCallback( onClickBuyCurrency, this ); + getChild<LLUICtrl>("buycurrency")->setCommitCallback( + boost::bind(&LLStatusBar::onClickBuyCurrency, this)); + getChild<LLUICtrl>("buyL")->setCommitCallback( + boost::bind(&LLStatusBar::onClickBuyCurrency, this)); mBtnVolume = getChild<LLButton>( "volume_btn" ); mBtnVolume->setClickedCallback( onClickVolume, this ); mBtnVolume->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterVolume, this)); - mBtnVolume->setIsChrome(TRUE); + + mMediaToggle = getChild<LLButton>("media_toggle_btn"); + mMediaToggle->setClickedCallback( &LLStatusBar::onClickMediaToggle, this ); + mMediaToggle->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterNearbyMedia, this)); gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&LLStatusBar::onVolumeChanged, this, _2)); @@ -204,39 +238,20 @@ LLStatusBar::LLStatusBar(const LLRect& rect) addChild(mSGPacketLoss); childSetActionTextbox("stat_btn", onClickStatGraph); -} - -LLStatusBar::~LLStatusBar() -{ - delete mBalanceTimer; - mBalanceTimer = NULL; - - delete mHealthTimer; - mHealthTimer = NULL; - // LLView destructor cleans up children -} + LLView* popup_holder = gViewerWindow->getRootView()->getChildView("popup_holder"); -//----------------------------------------------------------------------- -// Overrides -//----------------------------------------------------------------------- + mPanelVolumePulldown = new LLPanelVolumePulldown(); + popup_holder->addChild(mPanelVolumePulldown); -// virtual -void LLStatusBar::draw() -{ - refresh(); - LLPanel::draw(); -} - -BOOL LLStatusBar::handleRightMouseDown(S32 x, S32 y, MASK mask) -{ - show_navbar_context_menu(this,x,y); - return TRUE; -} + mPanelNearByMedia = new LLPanelNearByMedia(); + popup_holder->addChild(mPanelNearByMedia); + gViewerWindow->getRootView()->addMouseDownCallback(boost::bind(&LLStatusBar::onClickScreen, this, _1, _2)); + mPanelNearByMedia->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT); + mPanelNearByMedia->setVisible(FALSE); -BOOL LLStatusBar::postBuild() -{ - gMenuBarView->setRightMouseDownCallback(boost::bind(&show_navbar_context_menu, _1, _2, _3)); + mPanelVolumePulldown->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT); + mPanelVolumePulldown->setVisible(FALSE); return TRUE; } @@ -340,14 +355,26 @@ 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); + + // Disable media toggle if there's no media, parcel media, and no parcel audio + // (or if media is disabled) + bool button_enabled = (gSavedSettings.getBOOL("AudioStreamingMusic")||gSavedSettings.getBOOL("AudioStreamingMedia")) && + (LLViewerMedia::hasInWorldMedia() || LLViewerMedia::hasParcelMedia() || LLViewerMedia::hasParcelAudio()); + mMediaToggle->setEnabled(button_enabled); + // Note the "sense" of the toggle is opposite whether media is playing or not + bool any_media_playing = (LLViewerMedia::isAnyMediaShowing() || + LLViewerMedia::isParcelMediaPlaying() || + LLViewerMedia::isParcelAudioPlaying()); + mMediaToggle->setValue(!any_media_playing); } void LLStatusBar::setVisibleForMouselook(bool visible) { mTextTime->setVisible(visible); - mBtnBuyCurrency->setVisible(visible); + getChild<LLUICtrl>("buycurrency")->setVisible(visible); + getChild<LLUICtrl>("buyL")->setVisible(visible); mSGBandwidth->setVisible(visible); mSGPacketLoss->setVisible(visible); setBackgroundVisible(visible); @@ -367,17 +394,18 @@ void LLStatusBar::setBalance(S32 balance) { std::string money_str = LLResMgr::getInstance()->getMonetaryString( balance ); + LLButton* btn_buy_currency = getChild<LLButton>("buycurrency"); LLStringUtil::format_map_t string_args; string_args["[AMT]"] = llformat("%s", money_str.c_str()); - std::string labe_str = getString("buycurrencylabel", string_args); - mBtnBuyCurrency->setLabel(labe_str); + std::string label_str = getString("buycurrencylabel", string_args); + btn_buy_currency->setLabel(label_str); // Resize the balance button so that the label fits it, and the button expands to the left. // *TODO: LLButton should have an option where to expand. { - S32 saved_right = mBtnBuyCurrency->getRect().mRight; - mBtnBuyCurrency->autoResize(); - mBtnBuyCurrency->translate(saved_right - mBtnBuyCurrency->getRect().mRight, 0); + S32 saved_right = btn_buy_currency->getRect().mRight; + btn_buy_currency->autoResize(); + btn_buy_currency->translate(saved_right - btn_buy_currency->getRect().mRight, 0); } if (mBalance && (fabs((F32)(mBalance - balance)) > gSavedSettings.getF32("UISndMoneyChangeThreshold"))) @@ -482,7 +510,7 @@ S32 LLStatusBar::getSquareMetersLeft() const return mSquareMetersCredit - mSquareMetersCommitted; } -static void onClickBuyCurrency(void* data) +void LLStatusBar::onClickBuyCurrency() { LLFloaterBuyCurrency::buyCurrency(); } @@ -497,18 +525,60 @@ static void onClickScriptDebug(void*) LLFloaterScriptDebug::show(LLUUID::null); } -//static -void LLStatusBar::onMouseEnterVolume(LLUICtrl* ctrl) +void LLStatusBar::onMouseEnterVolume() +{ + LLButton* volbtn = getChild<LLButton>( "volume_btn" ); + LLRect vol_btn_screen_rect = volbtn->calcScreenRect(); + LLRect volume_pulldown_rect = mPanelVolumePulldown->getRect(); + volume_pulldown_rect.setLeftTopAndSize(vol_btn_screen_rect.mLeft - + (volume_pulldown_rect.getWidth() - vol_btn_screen_rect.getWidth())/2, + vol_btn_screen_rect.mBottom, + volume_pulldown_rect.getWidth(), + volume_pulldown_rect.getHeight()); + + mPanelVolumePulldown->setShape(volume_pulldown_rect); + + + // show the master volume pull-down + mPanelVolumePulldown->setVisible(TRUE); + mPanelNearByMedia->setVisible(FALSE); +} + +void LLStatusBar::onMouseEnterNearbyMedia() { + LLView* popup_holder = gViewerWindow->getRootView()->getChildView("popup_holder"); + LLRect nearby_media_rect = mPanelNearByMedia->getRect(); + LLButton* nearby_media_btn = getChild<LLButton>( "media_toggle_btn" ); + LLRect nearby_media_btn_rect = nearby_media_btn->calcScreenRect(); + nearby_media_rect.setLeftTopAndSize(nearby_media_btn_rect.mLeft - + (nearby_media_rect.getWidth() - nearby_media_btn_rect.getWidth())/2, + nearby_media_btn_rect.mBottom, + nearby_media_rect.getWidth(), + nearby_media_rect.getHeight()); + // force onscreen + nearby_media_rect.translate(popup_holder->getRect().getWidth() - nearby_media_rect.mRight, 0); + // show the master volume pull-down - LLFloaterReg::showInstance("volume_pulldown"); + mPanelNearByMedia->setShape(nearby_media_rect); + mPanelNearByMedia->setVisible(TRUE); + mPanelVolumePulldown->setVisible(FALSE); } + 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); +} + +//static +void LLStatusBar::onClickMediaToggle(void* data) +{ + LLStatusBar *status_bar = (LLStatusBar*)data; + // "Selected" means it was showing the "play" icon (so media was playing), and now it shows "pause", so turn off media + bool enable = ! status_bar->mMediaToggle->getValue(); + LLViewerMedia::setAllMediaEnabled(enable); } // sets the static variables necessary for the date @@ -580,6 +650,18 @@ void LLStatusBar::onClickStatGraph(void* data) LLFloaterReg::showInstance("lagmeter"); } +void LLStatusBar::onClickScreen(S32 x, S32 y) +{ + if (mPanelNearByMedia->getVisible()) + { + LLRect screen_rect = mPanelNearByMedia->calcScreenRect(); + if (!screen_rect.pointInRect(x, y)) + { + mPanelNearByMedia->setVisible(FALSE); + } + } +} + BOOL can_afford_transaction(S32 cost) { return((cost <= 0)||((gStatusBar) && (gStatusBar->getBalance() >=cost))); diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h index f77cc1acb8..e5240fcc3e 100644 --- a/indra/newview/llstatusbar.h +++ b/indra/newview/llstatusbar.h @@ -48,6 +48,7 @@ class LLUUID; class LLFrameTimer; class LLStatGraph; class LLPanelVolumePulldown; +class LLPanelNearByMedia; class LLStatusBar : public LLPanel @@ -87,15 +88,22 @@ public: S32 getSquareMetersCommitted() const; S32 getSquareMetersLeft() const; + LLPanelNearByMedia* getNearbyMediaPanel() { return mPanelNearByMedia; } + private: // simple method to setup the part that holds the date void setupDate(); + void onClickBuyCurrency(); void onVolumeChanged(const LLSD& newvalue); - static void onMouseEnterVolume(LLUICtrl* ctrl); + void onMouseEnterVolume(); + void onMouseEnterNearbyMedia(); + void onClickScreen(S32 x, S32 y); static void onClickStatGraph(void* data); + static void onClickMediaToggle(void* data); + private: LLTextBox *mTextHealth; LLTextBox *mTextTime; @@ -103,8 +111,8 @@ private: LLStatGraph *mSGBandwidth; LLStatGraph *mSGPacketLoss; - LLButton *mBtnBuyCurrency; LLButton *mBtnVolume; + LLButton *mMediaToggle; S32 mBalance; S32 mHealth; @@ -112,7 +120,8 @@ private: S32 mSquareMetersCommitted; LLFrameTimer* mBalanceTimer; LLFrameTimer* mHealthTimer; - + LLPanelVolumePulldown* mPanelVolumePulldown; + LLPanelNearByMedia* mPanelNearByMedia; static std::vector<std::string> sDays; static std::vector<std::string> sMonths; static const U32 MAX_DATE_STRING_LENGTH; diff --git a/indra/newview/llstylemap.cpp b/indra/newview/llstylemap.cpp index 2485563cbc..61705c4eb3 100644 --- a/indra/newview/llstylemap.cpp +++ b/indra/newview/llstylemap.cpp @@ -49,6 +49,7 @@ const LLStyle::Params &LLStyleMap::lookupAgent(const LLUUID &source) if (source != LLUUID::null && source != gAgent.getID() ) { style_params.color.control = "HTMLLinkColor"; + style_params.readonly_color.control = "HTMLLinkColor"; style_params.link_href = LLSLURL::buildCommand("agent", source, "inspect"); } @@ -56,6 +57,7 @@ const LLStyle::Params &LLStyleMap::lookupAgent(const LLUUID &source) { // Make the resident's own name white and don't make the name clickable. style_params.color = LLColor4::white; + style_params.readonly_color = LLColor4::white; } mMap[source] = style_params; @@ -75,11 +77,13 @@ const LLStyle::Params &LLStyleMap::lookup(const LLUUID& id, const std::string& l if (id != LLUUID::null && !link.empty()) { style_params.color.control = "HTMLLinkColor"; + style_params.readonly_color.control = "HTMLLinkColor"; style_params.link_href = link; } else { style_params.color = LLColor4::white; + style_params.readonly_color = LLColor4::white; } mMap[id] = style_params; } diff --git a/indra/newview/llsurfacepatch.cpp b/indra/newview/llsurfacepatch.cpp index 0ce794addb..48e4a6ccc7 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; diff --git a/indra/newview/llsyswellitem.cpp b/indra/newview/llsyswellitem.cpp index eef8435006..0cfcfdc634 100644 --- a/indra/newview/llsyswellitem.cpp +++ b/indra/newview/llsyswellitem.cpp @@ -77,10 +77,11 @@ void LLSysWellItem::onClickCloseBtn() //--------------------------------------------------------------------------------- BOOL LLSysWellItem::handleMouseDown(S32 x, S32 y, MASK mask) { + BOOL res = LLPanel::handleMouseDown(x, y, mask); if(!mCloseBtn->getRect().pointInRect(x, y)) mOnItemClick(this); - return LLPanel::handleMouseDown(x, y, mask); + return res; } //--------------------------------------------------------------------------------- diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index 26d8338b24..66373feb93 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -106,15 +106,15 @@ void LLSysWellWindow::onStartUpToastClick(S32 x, S32 y, MASK mask) setVisible(TRUE); } -//--------------------------------------------------------------------------------- -LLSysWellWindow::~LLSysWellWindow() -{ +void LLSysWellWindow::setSysWellChiclet(LLSysWellChiclet* chiclet) +{ + mSysWellChiclet = chiclet; + if(mSysWellChiclet) + mSysWellChiclet->updateWidget(isWindowEmpty()); } - //--------------------------------------------------------------------------------- -void LLSysWellWindow::clear() +LLSysWellWindow::~LLSysWellWindow() { - mMessageList->clear(); } //--------------------------------------------------------------------------------- @@ -211,22 +211,25 @@ void LLSysWellWindow::reshapeWindow() // it includes height from floater top to list top and from floater bottom and list bottom static S32 parent_list_delta_height = getRect().getHeight() - mMessageList->getRect().getHeight(); - S32 notif_list_height = mMessageList->getItemsRect().getHeight() + 2 * mMessageList->getBorderWidth(); + if (isDocked()) // Don't reshape undocked Well window. See EXT-5715. + { + S32 notif_list_height = mMessageList->getItemsRect().getHeight() + 2 * mMessageList->getBorderWidth(); - LLRect curRect = getRect(); + LLRect curRect = getRect(); - S32 new_window_height = notif_list_height + parent_list_delta_height; + S32 new_window_height = notif_list_height + parent_list_delta_height; - if (new_window_height > MAX_WINDOW_HEIGHT) - { - new_window_height = MAX_WINDOW_HEIGHT; - } - S32 newY = curRect.mTop + new_window_height - curRect.getHeight(); - S32 newWidth = curRect.getWidth() < MIN_WINDOW_WIDTH ? MIN_WINDOW_WIDTH + if (new_window_height > MAX_WINDOW_HEIGHT) + { + new_window_height = MAX_WINDOW_HEIGHT; + } + S32 newY = curRect.mTop + new_window_height - curRect.getHeight(); + S32 newWidth = curRect.getWidth() < MIN_WINDOW_WIDTH ? MIN_WINDOW_WIDTH : curRect.getWidth(); - curRect.setLeftTopAndSize(curRect.mLeft, newY, newWidth, new_window_height); - reshape(curRect.getWidth(), curRect.getHeight(), TRUE); - setRect(curRect); + curRect.setLeftTopAndSize(curRect.mLeft, newY, newWidth, new_window_height); + reshape(curRect.getWidth(), curRect.getHeight(), TRUE); + setRect(curRect); + } // update notification channel state // update on a window reshape is important only when a window is visible and docked @@ -281,6 +284,7 @@ void LLSysWellWindow::handleItemAdded(EItemType added_item_type) setResizeLimits(min_width,min_height); } + mSysWellChiclet->updateWidget(isWindowEmpty()); } void LLSysWellWindow::handleItemRemoved(EItemType removed_item_type) @@ -294,6 +298,7 @@ void LLSysWellWindow::handleItemRemoved(EItemType removed_item_type) // refresh list to recalculate mSeparator position mMessageList->reshape(mMessageList->getRect().getWidth(), mMessageList->getRect().getHeight()); } + mSysWellChiclet->updateWidget(isWindowEmpty()); } bool LLSysWellWindow::anotherTypeExists(EItemType item_type) @@ -347,7 +352,6 @@ LLIMWellWindow::RowPanel::RowPanel(const LLSysWellWindow* parent, const LLUUID& } // Initialize chiclet. - mChiclet->setRect(LLRect(5, 28, 30, 3)); // *HACK: workaround for (EXT-3599) mChiclet->setChicletSizeChangedCallback(boost::bind(&LLIMWellWindow::RowPanel::onChicletSizeChanged, this, mChiclet, _2)); mChiclet->enableCounterControl(true); mChiclet->setCounter(chicletCounter); @@ -403,25 +407,33 @@ BOOL LLIMWellWindow::RowPanel::handleMouseDown(S32 x, S32 y, MASK mask) { // Pass the mouse down event to the chiclet (EXT-596). if (!mChiclet->pointInView(x, y) && !mCloseBtn->getRect().pointInRect(x, y)) // prevent double call of LLIMChiclet::onMouseDown() + { mChiclet->onMouseDown(); + return TRUE; + } return LLPanel::handleMouseDown(x, y, mask); } +// virtual +BOOL LLIMWellWindow::RowPanel::handleRightMouseDown(S32 x, S32 y, MASK mask) +{ + return mChiclet->handleRightMouseDown(x, y, mask); +} /************************************************************************/ /* ObjectRowPanel implementation */ /************************************************************************/ -LLIMWellWindow::ObjectRowPanel::ObjectRowPanel(const LLUUID& object_id, bool new_message/* = false*/) +LLIMWellWindow::ObjectRowPanel::ObjectRowPanel(const LLUUID& notification_id, bool new_message/* = false*/) : LLPanel() , mChiclet(NULL) { LLUICtrlFactory::getInstance()->buildPanel(this, "panel_active_object_row.xml", NULL); - initChiclet(object_id); + initChiclet(notification_id); LLTextBox* obj_name = getChild<LLTextBox>("object_name"); - obj_name->setValue(getObjectName(object_id)); + obj_name->setValue(LLScriptFloaterManager::getObjectName(notification_id)); mCloseBtn = getChild<LLButton>("hide_btn"); mCloseBtn->setCommitCallback(boost::bind(&LLIMWellWindow::ObjectRowPanel::onClosePanel, this)); @@ -432,90 +444,18 @@ LLIMWellWindow::ObjectRowPanel::~ObjectRowPanel() { } -std::string LLIMWellWindow::ObjectRowPanel::getObjectName(const LLUUID& object_id) -{ - using namespace LLNotificationsUI; - LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id); - LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id); - if(!notification) - { - llwarns << "Invalid notification" << llendl; - return LLStringUtil::null; - } - - std::string text; - - switch(getObjectType(notification)) - { - case OBJ_SCRIPT: - text = notification->getSubstitutions()["TITLE"].asString(); - break; - case OBJ_LOAD_URL: - text = notification->getSubstitutions()["OBJECTNAME"].asString(); - break; - case OBJ_GIVE_INVENTORY: - text = notification->getSubstitutions()["NAME"].asString(); - break; - default: - text = getString("unknown_obj"); - break; - } - - return text; -} - //--------------------------------------------------------------------------------- void LLIMWellWindow::ObjectRowPanel::onClosePanel() { - LLScriptFloaterManager::getInstance()->removeNotificationByObjectId(mChiclet->getSessionId()); + LLScriptFloaterManager::getInstance()->onRemoveNotification(mChiclet->getSessionId()); } -//static -LLIMWellWindow::ObjectRowPanel::object_type_map LLIMWellWindow::ObjectRowPanel::initObjectTypeMap() -{ - object_type_map type_map; - type_map["ScriptDialog"] = OBJ_SCRIPT; - type_map["LoadWebPage"] = OBJ_LOAD_URL; - type_map["ObjectGiveItem"] = OBJ_GIVE_INVENTORY; - return type_map; -} - -// static -LLIMWellWindow::ObjectRowPanel::EObjectType LLIMWellWindow::ObjectRowPanel::getObjectType(const LLNotificationPtr& notification) +void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& notification_id, bool new_message/* = false*/) { - if(!notification) - { - llwarns << "Invalid notification" << llendl; - return OBJ_UNKNOWN; - } - - static object_type_map type_map = initObjectTypeMap(); - std::string name = notification->getName(); - object_type_map::const_iterator it = type_map.find(name); - if(it != type_map.end()) - { - return it->second; - } - - llwarns << "Unknown object type" << llendl; - return OBJ_UNKNOWN; -} - -void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& object_id, bool new_message/* = false*/) -{ - using namespace LLNotificationsUI; - LLUUID notification_id = LLScriptFloaterManager::getInstance()->findNotificationId(object_id); - LLNotificationPtr notification = LLNotifications::getInstance()->find(notification_id); - if(!notification) - { - llwarns << "Invalid notification" << llendl; - return; - } - // Choose which of the pre-created chiclets to use. - switch(getObjectType(notification)) + switch(LLScriptFloaterManager::getObjectType(notification_id)) { - case OBJ_GIVE_INVENTORY: + case LLScriptFloaterManager::OBJ_GIVE_INVENTORY: mChiclet = getChild<LLInvOfferChiclet>("inv_offer_chiclet"); break; default: @@ -524,8 +464,7 @@ void LLIMWellWindow::ObjectRowPanel::initChiclet(const LLUUID& object_id, bool n } mChiclet->setVisible(true); - mChiclet->setSessionId(object_id); -// mChiclet->setShowNewMessagesIcon(new_message); + mChiclet->setSessionId(notification_id); } //--------------------------------------------------------------------------------- @@ -546,11 +485,20 @@ BOOL LLIMWellWindow::ObjectRowPanel::handleMouseDown(S32 x, S32 y, MASK mask) { // Pass the mouse down event to the chiclet (EXT-596). if (!mChiclet->pointInView(x, y) && !mCloseBtn->getRect().pointInRect(x, y)) // prevent double call of LLIMChiclet::onMouseDown() + { mChiclet->onMouseDown(); + return TRUE; + } return LLPanel::handleMouseDown(x, y, mask); } +// virtual +BOOL LLIMWellWindow::ObjectRowPanel::handleRightMouseDown(S32 x, S32 y, MASK mask) +{ + return mChiclet->handleRightMouseDown(x, y, mask); +} + /************************************************************************/ /* LLNotificationWellWindow implementation */ /************************************************************************/ @@ -688,8 +636,7 @@ void LLNotificationWellWindow::connectListUpdaterToSignal(std::string notificati void LLNotificationWellWindow::onItemClick(LLSysWellItem* item) { LLUUID id = item->getID(); - if(mChannel) - mChannel->loadStoredToastByNotificationIDToChannel(id); + LLFloaterReg::showInstance("inspect_toast", id); } void LLNotificationWellWindow::onItemClose(LLSysWellItem* item) @@ -769,10 +716,10 @@ void LLIMWellWindow::sessionIDUpdated(const LLUUID& old_session_id, const LLUUID } } -LLChiclet* LLIMWellWindow::findObjectChiclet(const LLUUID& object_id) +LLChiclet* LLIMWellWindow::findObjectChiclet(const LLUUID& notification_id) { LLChiclet* res = NULL; - ObjectRowPanel* panel = mMessageList->getTypedItemByValue<ObjectRowPanel>(object_id); + ObjectRowPanel* panel = mMessageList->getTypedItemByValue<ObjectRowPanel>(notification_id); if (panel != NULL) { res = panel->mChiclet; @@ -850,33 +797,33 @@ void LLIMWellWindow::delIMRow(const LLUUID& sessionId) } } -void LLIMWellWindow::addObjectRow(const LLUUID& object_id, bool new_message/* = false*/) +void LLIMWellWindow::addObjectRow(const LLUUID& notification_id, bool new_message/* = false*/) { - if (mMessageList->getItemByValue(object_id) == NULL) + if (mMessageList->getItemByValue(notification_id) == NULL) { - ObjectRowPanel* item = new ObjectRowPanel(object_id, new_message); - if (mMessageList->insertItemAfter(mSeparator, item, object_id)) + ObjectRowPanel* item = new ObjectRowPanel(notification_id, new_message); + if (mMessageList->insertItemAfter(mSeparator, item, notification_id)) { handleItemAdded(IT_INSTANT_MESSAGE); } else { - llwarns << "Unable to add Object Row into the list, objectID: " << object_id << llendl; + llwarns << "Unable to add Object Row into the list, notificationID: " << notification_id << llendl; item->die(); } reshapeWindow(); } } -void LLIMWellWindow::removeObjectRow(const LLUUID& object_id) +void LLIMWellWindow::removeObjectRow(const LLUUID& notification_id) { - if (mMessageList->removeItemByValue(object_id)) + if (mMessageList->removeItemByValue(notification_id)) { handleItemRemoved(IT_INSTANT_MESSAGE); } else { - llwarns << "Unable to remove Object Row from the list, objectID: " << object_id << llendl; + llwarns << "Unable to remove Object Row from the list, notificationID: " << notification_id << llendl; } reshapeWindow(); @@ -956,8 +903,7 @@ void LLIMWellWindow::closeAllImpl() ObjectRowPanel* obj_panel = dynamic_cast <ObjectRowPanel*> (panel); if (obj_panel) { - LLScriptFloaterManager::instance() - .removeNotificationByObjectId(*iter); + LLScriptFloaterManager::instance().onRemoveNotification(*iter); } } } diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h index d21d095d1a..3790aa3ea9 100644 --- a/indra/newview/llsyswellwindow.h +++ b/indra/newview/llsyswellwindow.h @@ -62,7 +62,6 @@ public: bool isWindowEmpty(); // Operating with items - void clear( void ); void removeItemByID(const LLUUID& id); // Operating with outfit @@ -74,7 +73,7 @@ public: void onStartUpToastClick(S32 x, S32 y, MASK mask); - void setSysWellChiclet(LLSysWellChiclet* chiclet) { mSysWellChiclet = chiclet; } + void setSysWellChiclet(LLSysWellChiclet* chiclet); // size constants for the window and for its elements static const S32 MAX_WINDOW_HEIGHT = 200; @@ -163,6 +162,9 @@ private: void onItemClick(LLSysWellItem* item); void onItemClose(LLSysWellItem* item); + // ID of a toast loaded by user (by clicking notification well item) + LLUUID mLoadedToastId; + }; /** @@ -186,8 +188,8 @@ public: /*virtual*/ void sessionRemoved(const LLUUID& session_id); /*virtual*/ void sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id); - void addObjectRow(const LLUUID& object_id, bool new_message = false); - void removeObjectRow(const LLUUID& object_id); + void addObjectRow(const LLUUID& notification_id, bool new_message = false); + void removeObjectRow(const LLUUID& notification_id); void addIMRow(const LLUUID& session_id); bool hasIMRow(const LLUUID& session_id); @@ -199,7 +201,7 @@ protected: private: LLChiclet * findIMChiclet(const LLUUID& sessionId); - LLChiclet* findObjectChiclet(const LLUUID& object_id); + LLChiclet* findObjectChiclet(const LLUUID& notification_id); void addIMRow(const LLUUID& sessionId, S32 chicletCounter, const std::string& name, const LLUUID& otherParticipantId); void delIMRow(const LLUUID& sessionId); @@ -218,6 +220,8 @@ private: void onMouseEnter(S32 x, S32 y, MASK mask); void onMouseLeave(S32 x, S32 y, MASK mask); BOOL handleMouseDown(S32 x, S32 y, MASK mask); + BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); + private: static const S32 CHICLET_HPAD = 10; void onChicletSizeChanged(LLChiclet* ctrl, const LLSD& param); @@ -231,29 +235,18 @@ private: class ObjectRowPanel: public LLPanel { - typedef enum e_object_type - { - OBJ_UNKNOWN, - - OBJ_SCRIPT, - OBJ_GIVE_INVENTORY, - OBJ_LOAD_URL - }EObjectType; - public: - ObjectRowPanel(const LLUUID& object_id, bool new_message = false); + ObjectRowPanel(const LLUUID& notification_id, bool new_message = false); virtual ~ObjectRowPanel(); /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask); /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); + private: void onClosePanel(); - static EObjectType getObjectType(const LLNotificationPtr& notification); - void initChiclet(const LLUUID& object_id, bool new_message = false); - std::string getObjectName(const LLUUID& object_id); + void initChiclet(const LLUUID& notification_id, bool new_message = false); - typedef std::map<std::string, EObjectType> object_type_map; - static object_type_map initObjectTypeMap(); public: LLIMChiclet* mChiclet; private: diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp index 1315887c37..dcc85392f7 100644 --- a/indra/newview/llteleporthistory.cpp +++ b/indra/newview/llteleporthistory.cpp @@ -39,7 +39,6 @@ #include "llagent.h" #include "llslurl.h" -#include "llurlsimstring.h" #include "llviewercontrol.h" // for gSavedSettings #include "llviewerparcelmgr.h" #include "llviewerregion.h" @@ -174,6 +173,8 @@ void LLTeleportHistory::purgeItems() // reset the count mRequestedItem = -1; mCurrentItem = 0; + + onHistoryChanged(); } // static diff --git a/indra/newview/llteleporthistorystorage.cpp b/indra/newview/llteleporthistorystorage.cpp index d3bbda1c72..c635f91423 100644 --- a/indra/newview/llteleporthistorystorage.cpp +++ b/indra/newview/llteleporthistorystorage.cpp @@ -246,13 +246,6 @@ void LLTeleportHistoryStorage::goToItem(S32 idx) dump(); return; } - - if (idx == (S32)mItems.size() - 1) - { - llwarns << "Will not teleport to the same location." << llendl; - dump(); - return; - } // Attempt to teleport to the requested item. gAgent.teleportViaLocation(mItems[idx].mGlobalPos); diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index 72ef383be9..6ed95f2cbf 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -167,8 +167,8 @@ void LLTexLayerSetBuffer::popProjection() const BOOL LLTexLayerSetBuffer::needsRender() { const LLVOAvatarSelf* avatar = mTexLayerSet->getAvatar(); - BOOL upload_now = mNeedsUpload && mTexLayerSet->isLocalTextureDataFinal(); - BOOL needs_update = gAgentQueryManager.hasNoPendingQueries() && (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating; + BOOL upload_now = mNeedsUpload && mTexLayerSet->isLocalTextureDataFinal() && gAgentQueryManager.hasNoPendingQueries(); + BOOL needs_update = (mNeedsUpdate || upload_now) && !avatar->mAppearanceAnimating; if (needs_update) { BOOL invalid_skirt = avatar->getBakedTE(mTexLayerSet) == LLVOAvatarDefines::TEX_SKIRT_BAKED && !avatar->isWearingWearableType(WT_SKIRT); @@ -567,6 +567,7 @@ LLTexLayerSet::LLTexLayerSet(LLVOAvatarSelf* const avatar) : mAvatar( avatar ), mUpdatesEnabled( FALSE ), mIsVisible( TRUE ), + mBakedTexIndex(LLVOAvatarDefines::BAKED_HEAD), mInfo( NULL ) { } @@ -1129,7 +1130,8 @@ LLTexLayerInterface::LLTexLayerInterface(LLTexLayerSet* const layer_set): } LLTexLayerInterface::LLTexLayerInterface(const LLTexLayerInterface &layer, LLWearable *wearable): - mTexLayerSet( layer.mTexLayerSet ) + mTexLayerSet( layer.mTexLayerSet ), + mInfo(NULL) { // don't add visual params for cloned layers setInfo(layer.getInfo(), wearable); @@ -1139,7 +1141,12 @@ LLTexLayerInterface::LLTexLayerInterface(const LLTexLayerInterface &layer, LLWea BOOL LLTexLayerInterface::setInfo(const LLTexLayerInfo *info, LLWearable* wearable ) // This sets mInfo and calls initialization functions { - llassert(mInfo == NULL); + // setInfo should only be called once. Code is not robust enough to handle redefinition of a texlayer. + // Not a critical warning, but could be useful for debugging later issues. -Nyx + if (mInfo != NULL) + { + llwarns << "mInfo != NULL" << llendl; + } mInfo = info; //mID = info->mID; // No ID @@ -1856,7 +1863,7 @@ U32 LLTexLayerTemplate::updateWearableCache() } LLTexLayer* LLTexLayerTemplate::getLayer(U32 i) { - if (mWearableCache.size() <= i || i < 0) + if (mWearableCache.size() <= i) { return NULL; } diff --git a/indra/newview/lltexturecache.cpp b/indra/newview/lltexturecache.cpp index 845e71378a..91c303c79e 100644 --- a/indra/newview/lltexturecache.cpp +++ b/indra/newview/lltexturecache.cpp @@ -51,7 +51,8 @@ // cache/textures/[0-F]/UUID.texture // Actual texture body files -const S32 TEXTURE_CACHE_ENTRY_SIZE = 1024; +//note: there is no good to define 1024 for TEXTURE_CACHE_ENTRY_SIZE while FIRST_PACKET_SIZE is 600 on sim side. +const S32 TEXTURE_CACHE_ENTRY_SIZE = FIRST_PACKET_SIZE;//1024; const F32 TEXTURE_CACHE_PURGE_AMOUNT = .20f; // % amount to reduce the cache by when it exceeds its limit const F32 TEXTURE_CACHE_LRU_SIZE = .10f; // % amount for LRU list (low overhead to regenerate) @@ -934,6 +935,8 @@ void LLTextureCache::setDirNames(ELLPath location) void LLTextureCache::purgeCache(ELLPath location) { + LLMutexLock lock(&mHeaderMutex); + if (!mReadOnly) { setDirNames(location); @@ -1615,20 +1618,20 @@ 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) - { - mWriters.erase(handle); - unlockWorkers(); - worker->scheduleDelete(); - return true; - } - else + llassert(iter != mWriters.end()); + if (iter != mWriters.end()) { - 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) diff --git a/indra/newview/lltexturecache.h b/indra/newview/lltexturecache.h index 4203cbbc43..64ec881fc3 100644 --- a/indra/newview/lltexturecache.h +++ b/indra/newview/lltexturecache.h @@ -59,7 +59,12 @@ private: }; 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; } diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 25e5e23e6f..2b846d33fc 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -878,6 +878,7 @@ LLTextureCtrl::LLTextureCtrl(const LLTextureCtrl::Params& p) { setAllowNoTexture(p.allow_no_texture); setCanApplyImmediately(p.can_apply_immediately); + mCommitOnSelection = !p.no_commit_on_selection; LLTextBox::Params params(p.caption_text); params.name(p.label); @@ -1102,7 +1103,10 @@ void LLTextureCtrl::onFloaterCommit(ETexturePickOp op) { if (op == TEXTURE_CANCEL) mViewModel->resetDirty(); - else + // If the "no_commit_on_selection" parameter is set + // we get dirty only when user presses OK in the picker + // (i.e. op == TEXTURE_SELECT) or texture changes via DnD. + else if (mCommitOnSelection || op == TEXTURE_SELECT) mViewModel->setDirty(); // *TODO: shouldn't we be using setValue() here? if( floaterp->isDirty() ) @@ -1122,7 +1126,11 @@ void LLTextureCtrl::onFloaterCommit(ETexturePickOp op) } else { - onCommit(); + // If the "no_commit_on_selection" parameter is set + // we commit only when user presses OK in the picker + // (i.e. op == TEXTURE_SELECT) or texture changes via DnD. + if (mCommitOnSelection || op == TEXTURE_SELECT) + onCommit(); } } } @@ -1160,6 +1168,9 @@ BOOL LLTextureCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask, { if(doDrop(item)) { + if (!mCommitOnSelection) + mViewModel->setDirty(); + // This removes the 'Multiple' overlay, since // there is now only one texture selected. setTentative( FALSE ); @@ -1190,8 +1201,12 @@ void LLTextureCtrl::draw() } else if (!mImageAssetID.isNull()) { - mTexturep = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES); - mTexturep->setBoostLevel(LLViewerTexture::BOOST_PREVIEW); + LLPointer<LLViewerFetchedTexture> texture = LLViewerTextureManager::getFetchedTexture(mImageAssetID, MIPMAP_YES,LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); + + texture->setBoostLevel(LLViewerTexture::BOOST_PREVIEW); + texture->forceToSaveRawImage(0) ; + + mTexturep = texture; } else if (!mFallbackImageName.empty()) { @@ -1242,11 +1257,11 @@ void LLTextureCtrl::draw() (mTexturep->getDiscardLevel() != 1) && (mTexturep->getDiscardLevel() != 0)) { - LLFontGL* font = LLFontGL::getFontSansSerifBig(); + LLFontGL* font = LLFontGL::getFontSansSerif(); font->renderUTF8( mLoadingPlaceholderString, 0, - llfloor(interior.mLeft+10), - llfloor(interior.mTop-20), + llfloor(interior.mLeft+3), + llfloor(interior.mTop-25), LLColor4::white, LLFontGL::LEFT, LLFontGL::BASELINE, diff --git a/indra/newview/lltexturectrl.h b/indra/newview/lltexturectrl.h index fb1d591e32..8ca92c3d87 100644 --- a/indra/newview/lltexturectrl.h +++ b/indra/newview/lltexturectrl.h @@ -74,6 +74,8 @@ public: Optional<std::string> default_image_name; Optional<bool> allow_no_texture; Optional<bool> can_apply_immediately; + Optional<bool> no_commit_on_selection; // alternative mode: commit occurs and the widget gets dirty + // only on DnD or when OK is pressed in the picker Optional<S32> label_width; Optional<LLUIColor> border_color; @@ -88,6 +90,7 @@ public: default_image_name("default_image_name"), allow_no_texture("allow_no_texture"), can_apply_immediately("can_apply_immediately"), + no_commit_on_selection("no_commit_on_selection", false), label_width("label_width", -1), border_color("border_color"), multiselect_text("multiselect_text"), @@ -204,6 +207,7 @@ private: PermissionMask mImmediateFilterPermMask; PermissionMask mNonImmediateFilterPermMask; BOOL mCanApplyImmediately; + BOOL mCommitOnSelection; BOOL mNeedsRawImageData; LLViewBorder* mBorder; BOOL mValid; diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index a75f631769..0053ce8df8 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -73,13 +73,11 @@ private: } virtual void completed(bool success) { - mFetcher->lockQueue(); LLTextureFetchWorker* worker = mFetcher->getWorker(mID); if (worker) { worker->callbackCacheRead(success, mFormattedImage, mImageSize, mImageLocal); } - mFetcher->unlockQueue(); } private: LLTextureFetch* mFetcher; @@ -95,13 +93,11 @@ private: } virtual void completed(bool success) { - mFetcher->lockQueue(); LLTextureFetchWorker* worker = mFetcher->getWorker(mID); if (worker) { worker->callbackCacheWrite(success); } - mFetcher->unlockQueue(); } private: LLTextureFetch* mFetcher; @@ -117,13 +113,11 @@ private: } virtual void completed(bool success, LLImageRaw* raw, LLImageRaw* aux) { - mFetcher->lockQueue(); LLTextureFetchWorker* worker = mFetcher->getWorker(mID); if (worker) { worker->callbackDecoded(success, raw, aux); } - mFetcher->unlockQueue(); } private: LLTextureFetch* mFetcher; @@ -166,6 +160,8 @@ public: void setGetStatus(U32 status, const std::string& reason) { + LLMutexLock lock(&mWorkMutex); + mGetStatus = status; mGetReason = reason; } @@ -307,7 +303,6 @@ public: } lldebugs << "HTTP COMPLETE: " << mID << llendl; - mFetcher->lockQueue(); LLTextureFetchWorker* worker = mFetcher->getWorker(mID); if (worker) { @@ -339,7 +334,6 @@ public: mFetcher->removeFromHTTPQueue(mID); llwarns << "Worker not found: " << mID << llendl; } - mFetcher->unlockQueue(); } private: @@ -494,9 +488,10 @@ void LLTextureFetchWorker::setupPacketData() U32 LLTextureFetchWorker::calcWorkPriority() { -// llassert_always(mImagePriority >= 0 && mImagePriority <= LLViewerTexture::maxDecodePriority()); - F32 priority_scale = (F32)LLWorkerThread::PRIORITY_LOWBITS / LLViewerFetchedTexture::maxDecodePriority(); - mWorkPriority = (U32)(mImagePriority * priority_scale); + //llassert_always(mImagePriority >= 0 && mImagePriority <= LLViewerFetchedTexture::maxDecodePriority()); + static const F32 PRIORITY_SCALE = (F32)LLWorkerThread::PRIORITY_LOWBITS / LLViewerFetchedTexture::maxDecodePriority(); + + mWorkPriority = llmin((U32)LLWorkerThread::PRIORITY_LOWBITS, (U32)(mImagePriority * PRIORITY_SCALE)); return mWorkPriority; } @@ -574,7 +569,7 @@ bool LLTextureFetchWorker::doWork(S32 param) { LLMutexLock lock(&mWorkMutex); - if ((mFetcher->isQuitting() || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED))) + if ((mFetcher->isQuitting() || mImagePriority < 1.0f || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED))) { if (mState < WRITE_TO_CACHE) { @@ -661,6 +656,8 @@ bool LLTextureFetchWorker::doWork(S32 param) } setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority); mState = SEND_HTTP_REQ; + delete responder; + responder = NULL; } } @@ -962,6 +959,15 @@ bool LLTextureFetchWorker::doWork(S32 param) if (mState == DECODE_IMAGE) { + static LLCachedControl<bool> textures_decode_disabled(gSavedSettings,"TextureDecodeDisabled"); + if(textures_decode_disabled) + { + // for debug use, don't decode + mState = DONE; + setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); + return true; + } + if (mDesiredDiscard < 0) { // We aborted, don't decode @@ -976,7 +982,12 @@ bool LLTextureFetchWorker::doWork(S32 param) } if (mLoadedDiscard < 0) { - llerrs << "Decode entered with invalid mLoadedDiscard. ID = " << mID << llendl; + //llerrs << "Decode entered with invalid mLoadedDiscard. ID = " << mID << llendl; + + //abort, don't decode + mState = DONE; + setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); + return true; } setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); // Set priority first since Responder may change it mRawImage = NULL; @@ -1429,12 +1440,9 @@ bool LLTextureFetch::createRequest(const std::string& url, const LLUUID& id, con return false; } - LLTextureFetchWorker* worker = NULL; - LLMutexLock lock(&mQueueMutex); - map_t::iterator iter = mRequestMap.find(id); - if (iter != mRequestMap.end()) + LLTextureFetchWorker* worker = getWorker(id) ; + if (worker) { - worker = iter->second; if (worker->mHost != host) { llwarns << "LLTextureFetch::createRequest " << id << " called with multiple hosts: " @@ -1483,41 +1491,48 @@ bool LLTextureFetch::createRequest(const std::string& url, const LLUUID& id, con return false; // need to wait for previous aborted request to complete } worker->lockWorkMutex(); + worker->mActiveCount++; + worker->mNeedsAux = needs_aux; worker->setImagePriority(priority); worker->setDesiredDiscard(desired_discard, desired_size); - worker->unlockWorkMutex(); if (!worker->haveWork()) { worker->mState = LLTextureFetchWorker::INIT; + worker->unlockWorkMutex(); + worker->addWork(0, LLWorkerThread::PRIORITY_HIGH | worker->mWorkPriority); } + else + { + worker->unlockWorkMutex(); + } } else { worker = new LLTextureFetchWorker(this, url, id, host, priority, desired_discard, desired_size); + lockQueue() ; mRequestMap[id] = worker; + unlockQueue() ; + + worker->lockWorkMutex(); + worker->mActiveCount++; + worker->mNeedsAux = needs_aux; + worker->unlockWorkMutex(); } - worker->mActiveCount++; - worker->mNeedsAux = needs_aux; + // llinfos << "REQUESTED: " << id << " Discard: " << desired_discard << llendl; return true; } -void LLTextureFetch::deleteRequest(const LLUUID& id, bool cancel) -{ - LLMutexLock lock(&mQueueMutex); - LLTextureFetchWorker* worker = getWorker(id); - if (worker) - { - removeRequest(worker, cancel); - } -} - // protected void LLTextureFetch::addToNetworkQueue(LLTextureFetchWorker* worker) { + lockQueue() ; + bool in_request_map = (mRequestMap.find(worker->mID) != mRequestMap.end()) ; + unlockQueue() ; + LLMutexLock lock(&mNetworkQueueMutex); - if (mRequestMap.find(worker->mID) != mRequestMap.end()) + if (in_request_map) { // only add to the queue if in the request map // i.e. a delete has not been requested @@ -1553,10 +1568,34 @@ void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id) mHTTPTextureQueue.erase(id); } -// call lockQueue() first! +void LLTextureFetch::deleteRequest(const LLUUID& id, bool cancel) +{ + lockQueue() ; + LLTextureFetchWorker* worker = getWorkerAfterLock(id); + if (worker) + { + size_t erased_1 = mRequestMap.erase(worker->mID); + unlockQueue() ; + + llassert_always(erased_1 > 0) ; + + removeFromNetworkQueue(worker, cancel); + llassert_always(!(worker->getFlags(LLWorkerClass::WCF_DELETE_REQUESTED))) ; + + worker->scheduleDelete(); + } + else + { + unlockQueue() ; + } +} + void LLTextureFetch::removeRequest(LLTextureFetchWorker* worker, bool cancel) { + lockQueue() ; size_t erased_1 = mRequestMap.erase(worker->mID); + unlockQueue() ; + llassert_always(erased_1 > 0) ; removeFromNetworkQueue(worker, cancel); llassert_always(!(worker->getFlags(LLWorkerClass::WCF_DELETE_REQUESTED))) ; @@ -1564,8 +1603,26 @@ void LLTextureFetch::removeRequest(LLTextureFetchWorker* worker, bool cancel) worker->scheduleDelete(); } +S32 LLTextureFetch::getNumRequests() +{ + lockQueue() ; + S32 size = (S32)mRequestMap.size(); + unlockQueue() ; + + return size ; +} + +S32 LLTextureFetch::getNumHTTPRequests() +{ + mNetworkQueueMutex.lock() ; + S32 size = (S32)mHTTPTextureQueue.size(); + mNetworkQueueMutex.unlock() ; + + return size ; +} + // call lockQueue() first! -LLTextureFetchWorker* LLTextureFetch::getWorker(const LLUUID& id) +LLTextureFetchWorker* LLTextureFetch::getWorkerAfterLock(const LLUUID& id) { LLTextureFetchWorker* res = NULL; map_t::iterator iter = mRequestMap.find(id); @@ -1576,12 +1633,18 @@ LLTextureFetchWorker* LLTextureFetch::getWorker(const LLUUID& id) return res; } +LLTextureFetchWorker* LLTextureFetch::getWorker(const LLUUID& id) +{ + LLMutexLock lock(&mQueueMutex) ; + + return getWorkerAfterLock(id) ; +} + bool LLTextureFetch::getRequestFinished(const LLUUID& id, S32& discard_level, LLPointer<LLImageRaw>& raw, LLPointer<LLImageRaw>& aux) { bool res = false; - LLMutexLock lock(&mQueueMutex); LLTextureFetchWorker* worker = getWorker(id); if (worker) { @@ -1633,7 +1696,6 @@ bool LLTextureFetch::getRequestFinished(const LLUUID& id, S32& discard_level, bool LLTextureFetch::updateRequestPriority(const LLUUID& id, F32 priority) { bool res = false; - LLMutexLock lock(&mQueueMutex); LLTextureFetchWorker* worker = getWorker(id); if (worker) { @@ -1749,8 +1811,6 @@ void LLTextureFetch::sendRequestListToSimulators() } timer.reset(); - LLMutexLock lock(&mQueueMutex); - // Send requests typedef std::set<LLTextureFetchWorker*,LLTextureFetchWorker::Compare> request_list_t; typedef std::map< LLHost, request_list_t > work_request_map_t; @@ -1959,7 +2019,6 @@ bool LLTextureFetchWorker::insertPacket(S32 index, U8* data, S32 size) bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8 codec, U16 packets, U32 totalbytes, U16 data_size, U8* data) { - LLMutexLock lock(&mQueueMutex); LLTextureFetchWorker* worker = getWorker(id); bool res = true; @@ -1992,7 +2051,9 @@ bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8 if (!res) { ++mBadPacketCount; + mNetworkQueueMutex.lock() ; mCancelQueue[host].insert(id); + mNetworkQueueMutex.unlock() ; return false; } @@ -2013,7 +2074,6 @@ bool LLTextureFetch::receiveImageHeader(const LLHost& host, const LLUUID& id, U8 bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U16 packet_num, U16 data_size, U8* data) { - LLMutexLock lock(&mQueueMutex); LLTextureFetchWorker* worker = getWorker(id); bool res = true; @@ -2037,7 +2097,9 @@ bool LLTextureFetch::receiveImagePacket(const LLHost& host, const LLUUID& id, U1 if (!res) { ++mBadPacketCount; + mNetworkQueueMutex.lock() ; mCancelQueue[host].insert(id); + mNetworkQueueMutex.unlock() ; return false; } @@ -2077,7 +2139,6 @@ BOOL LLTextureFetch::isFromLocalCache(const LLUUID& id) { BOOL from_cache = FALSE ; - LLMutexLock lock(&mQueueMutex); LLTextureFetchWorker* worker = getWorker(id); if (worker) { @@ -2099,7 +2160,6 @@ S32 LLTextureFetch::getFetchState(const LLUUID& id, F32& data_progress_p, F32& r F32 request_dtime = 999999.f; U32 fetch_priority = 0; - LLMutexLock lock(&mQueueMutex); LLTextureFetchWorker* worker = getWorker(id); if (worker && worker->haveWork()) { diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h index 373e38a83c..5213c4f488 100644 --- a/indra/newview/lltexturefetch.h +++ b/indra/newview/lltexturefetch.h @@ -77,13 +77,14 @@ public: S32 getFetchState(const LLUUID& id, F32& decode_progress_p, F32& requested_priority_p, U32& fetch_priority_p, F32& fetch_dtime_p, F32& request_dtime_p); void dump(); - S32 getNumRequests() { return mRequestMap.size(); } - S32 getNumHTTPRequests() { return mHTTPTextureQueue.size(); } + S32 getNumRequests() ; + S32 getNumHTTPRequests() ; // Public for access by callbacks void lockQueue() { mQueueMutex.lock(); } void unlockQueue() { mQueueMutex.unlock(); } LLTextureFetchWorker* getWorker(const LLUUID& id); + LLTextureFetchWorker* getWorkerAfterLock(const LLUUID& id); LLTextureInfo* getTextureInfo() { return &mTextureInfo; } @@ -92,7 +93,7 @@ protected: void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel); void addToHTTPQueue(const LLUUID& id); void removeFromHTTPQueue(const LLUUID& id); - S32 getHTTPQueueSize() { return (S32)mHTTPTextureQueue.size(); } + S32 getHTTPQueueSize() { return getNumHTTPRequests(); } void removeRequest(LLTextureFetchWorker* worker, bool cancel); // Called from worker thread (during doWork) void processCurlRequests(); @@ -111,8 +112,8 @@ public: S32 mBadPacketCount; private: - LLMutex mQueueMutex; - LLMutex mNetworkQueueMutex; + LLMutex mQueueMutex; //to protect mRequestMap only + LLMutex mNetworkQueueMutex; //to protect mNetworkQueue, mHTTPTextureQueue and mCancelQueue. LLTextureCache* mTextureCache; LLImageDecodeThread* mImageDecodeThread; diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp index 96d1624cd4..60a89c02e4 100644 --- a/indra/newview/lltoast.cpp +++ b/indra/newview/lltoast.cpp @@ -68,12 +68,17 @@ LLToast::LLToast(const LLToast::Params& p) mNotification(p.notification), mIsHidden(false), mHideBtnPressed(false), - mIsTip(p.is_tip) + mIsTip(p.is_tip), + mWrapperPanel(NULL) { LLUICtrlFactory::getInstance()->buildFloater(this, "panel_toast.xml", NULL); setCanDrag(FALSE); + mWrapperPanel = getChild<LLPanel>("wrapper_panel"); + mWrapperPanel->setMouseEnterCallback(boost::bind(&LLToast::onToastMouseEnter, this)); + mWrapperPanel->setMouseLeaveCallback(boost::bind(&LLToast::onToastMouseLeave, this)); + if(mPanel) { insertPanel(mPanel); @@ -83,6 +88,8 @@ LLToast::LLToast(const LLToast::Params& p) { mHideBtn = getChild<LLButton>("hide_btn"); mHideBtn->setClickedCallback(boost::bind(&LLToast::hide,this)); + mHideBtn->setMouseEnterCallback(boost::bind(&LLToast::onToastMouseEnter, this)); + mHideBtn->setMouseLeaveCallback(boost::bind(&LLToast::onToastMouseLeave, this)); } // init callbacks if present @@ -174,6 +181,42 @@ void LLToast::hide() mOnFadeSignal(this); } +void LLToast::onFocusLost() +{ + if(mWrapperPanel && !isBackgroundVisible()) + { + // Lets make wrapper panel behave like a floater + setBackgroundOpaque(FALSE); + } +} + +void LLToast::onFocusReceived() +{ + if(mWrapperPanel && !isBackgroundVisible()) + { + // Lets make wrapper panel behave like a floater + setBackgroundOpaque(TRUE); + } +} + +S32 LLToast::getTopPad() +{ + if(mWrapperPanel) + { + return getRect().getHeight() - mWrapperPanel->getRect().getHeight(); + } + return 0; +} + +S32 LLToast::getRightPad() +{ + if(mWrapperPanel) + { + return getRect().getWidth() - mWrapperPanel->getRect().getWidth(); + } + return 0; +} + //-------------------------------------------------------------------------- void LLToast::setCanFade(bool can_fade) { @@ -199,22 +242,21 @@ void LLToast::reshapeToPanel() if(!panel) return; - LLRect panel_rect; + LLRect panel_rect = panel->getRect(); - panel_rect = panel->getRect(); - reshape(panel_rect.getWidth(), panel_rect.getHeight()); panel_rect.setLeftTopAndSize(0, panel_rect.getHeight(), panel_rect.getWidth(), panel_rect.getHeight()); - panel->setRect(panel_rect); + panel->setShape(panel_rect); LLRect toast_rect = getRect(); - toast_rect.setLeftTopAndSize(toast_rect.mLeft,toast_rect.mTop,panel_rect.getWidth(), panel_rect.getHeight()); - setRect(toast_rect); + toast_rect.setLeftTopAndSize(toast_rect.mLeft, toast_rect.mTop, + panel_rect.getWidth() + getRightPad(), panel_rect.getHeight() + getTopPad()); + setShape(toast_rect); } void LLToast::insertPanel(LLPanel* panel) { - addChild(panel); + mWrapperPanel->addChild(panel); reshapeToPanel(); } @@ -227,6 +269,19 @@ void LLToast::draw() } LLFloater::draw(); + + if(!isBackgroundVisible()) + { + // Floater background is invisible, lets make wrapper panel look like a + // floater - draw shadow. + drawShadow(mWrapperPanel); + + // Shadow will probably overlap close button, lets redraw the button + if(mHideBtn) + { + drawChild(mHideBtn); + } + } } //-------------------------------------------------------------------------- @@ -261,41 +316,78 @@ void LLToast::setVisible(BOOL show) } } -//-------------------------------------------------------------------------- -void LLToast::onMouseEnter(S32 x, S32 y, MASK mask) +void LLToast::onToastMouseEnter() { - mOnToastHoverSignal(this, MOUSE_ENTER); + LLRect panel_rc = mWrapperPanel->calcScreenRect(); + LLRect button_rc; + if(mHideBtn) + { + button_rc = mHideBtn->calcScreenRect(); + } - //toasts fading is management by Screen Channel - - sendChildToFront(mHideBtn); - if(mHideBtn && mHideBtn->getEnabled()) - mHideBtn->setVisible(TRUE); - mOnMouseEnterSignal(this); + S32 x, y; + LLUI::getMousePositionScreen(&x, &y); + + if(panel_rc.pointInRect(x, y) || button_rc.pointInRect(x, y)) + { + mOnToastHoverSignal(this, MOUSE_ENTER); + + setBackgroundOpaque(TRUE); + + //toasts fading is management by Screen Channel - LLModalDialog::onMouseEnter(x, y, mask); + sendChildToFront(mHideBtn); + if(mHideBtn && mHideBtn->getEnabled()) + { + mHideBtn->setVisible(TRUE); + } + mOnMouseEnterSignal(this); + mToastMouseEnterSignal(this, getValue()); + } } -//-------------------------------------------------------------------------- -void LLToast::onMouseLeave(S32 x, S32 y, MASK mask) -{ - mOnToastHoverSignal(this, MOUSE_LEAVE); +void LLToast::onToastMouseLeave() +{ + LLRect panel_rc = mWrapperPanel->calcScreenRect(); + LLRect button_rc; + if(mHideBtn) + { + button_rc = mHideBtn->calcScreenRect(); + } - //toasts fading is management by Screen Channel + S32 x, y; + LLUI::getMousePositionScreen(&x, &y); - if(mHideBtn && mHideBtn->getEnabled()) + if( !panel_rc.pointInRect(x, y) && !button_rc.pointInRect(x, y)) { - if( mHideBtnPressed ) + mOnToastHoverSignal(this, MOUSE_LEAVE); + + //toasts fading is management by Screen Channel + + if(mHideBtn && mHideBtn->getEnabled()) { - mHideBtnPressed = false; - return; + if( mHideBtnPressed ) + { + mHideBtnPressed = false; + return; + } + mHideBtn->setVisible(FALSE); } - mHideBtn->setVisible(FALSE); + mToastMouseLeaveSignal(this, getValue()); } - - LLModalDialog::onMouseLeave(x, y, mask); } +void LLToast::setBackgroundOpaque(BOOL b) +{ + if(mWrapperPanel && !isBackgroundVisible()) + { + mWrapperPanel->setBackgroundOpaque(b); + } + else + { + LLModalDialog::setBackgroundOpaque(b); + } +} void LLNotificationsUI::LLToast::stopFading() { @@ -313,6 +405,13 @@ void LLNotificationsUI::LLToast::startFading() } } +bool LLToast::isHovered() +{ + S32 x, y; + LLUI::getMousePositionScreen(&x, &y); + return mWrapperPanel->calcScreenRect().pointInRect(x, y); +} + //-------------------------------------------------------------------------- BOOL LLToast::handleMouseDown(S32 x, S32 y, MASK mask) diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h index 3d25fd4f02..64855020a9 100644 --- a/indra/newview/lltoast.h +++ b/indra/newview/lltoast.h @@ -86,8 +86,6 @@ public: // Toast handlers virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); - virtual void onMouseEnter(S32 x, S32 y, MASK mask); - virtual void onMouseLeave(S32 x, S32 y, MASK mask); //Fading @@ -97,6 +95,7 @@ public: /** Start fading timer */ virtual void startFading(); + bool isHovered(); // Operating with toasts // insert a panel to a toast @@ -118,10 +117,22 @@ public: virtual void draw(); // virtual void setVisible(BOOL show); + + /*virtual*/ void setBackgroundOpaque(BOOL b); // virtual void hide(); + /*virtual*/ void onFocusLost(); + + /*virtual*/ void onFocusReceived(); + /** + * Returns padding between floater top and wrapper_panel top. + * This padding should be taken into account when positioning or reshaping toasts + */ + S32 getTopPad(); + + S32 getRightPad(); // get/set Toast's flags or states // get information whether the notification corresponding to the toast is valid or not @@ -154,9 +165,15 @@ public: toast_hover_check_signal_t mOnToastHoverSignal; boost::signals2::connection setOnToastHoverCallback(toast_hover_check_callback_t cb) { return mOnToastHoverSignal.connect(cb); } + boost::signals2::connection setMouseEnterCallback( const commit_signal_t::slot_type& cb ) { return mToastMouseEnterSignal.connect(cb); }; + boost::signals2::connection setMouseLeaveCallback( const commit_signal_t::slot_type& cb ) { return mToastMouseLeaveSignal.connect(cb); }; private: + void onToastMouseEnter(); + + void onToastMouseLeave(); + void handleTipToastClick(S32 x, S32 y, MASK mask); // check timer @@ -168,6 +185,8 @@ private: LLUUID mSessionID; LLNotificationPtr mNotification; + LLPanel* mWrapperPanel; + // timer counts a lifetime of a toast LLTimer mTimer; F32 mToastLifetime; // in seconds @@ -184,6 +203,9 @@ private: bool mHideBtnPressed; bool mIsHidden; // this flag is TRUE when a toast has faded or was hidden with (x) button (EXT-1849) bool mIsTip; + + commit_signal_t mToastMouseEnterSignal; + commit_signal_t mToastMouseLeaveSignal; }; } diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp index e49044cdca..add61c00cf 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/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp index d62017cc2f..26d3bd5192 100644 --- a/indra/newview/lltoastimpanel.cpp +++ b/indra/newview/lltoastimpanel.cpp @@ -33,22 +33,30 @@ #include "llviewerprecompiledheaders.h" #include "lltoastimpanel.h" +#include "llagent.h" +#include "llfloaterreg.h" +#include "llgroupactions.h" +#include "llgroupiconctrl.h" +#include "llimview.h" #include "llnotifications.h" #include "llinstantmessage.h" +#include "lltooltip.h" + #include "llviewerchat.h" const S32 LLToastIMPanel::DEFAULT_MESSAGE_MAX_LINE_COUNT = 6; //-------------------------------------------------------------------------- LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notification), - mAvatar(NULL), mUserName(NULL), - mTime(NULL), mMessage(NULL) + mAvatarIcon(NULL), mAvatarName(NULL), + mTime(NULL), mMessage(NULL), mGroupIcon(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"); + 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"); @@ -58,12 +66,13 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif std::string font_size = LLFontGL::sizeFromFont(fontp); style_params.font.name(font_name); style_params.font.size(font_size); - style_params.font.style = "UNDERLINE"; + //Handle IRC styled /me messages. std::string prefix = p.message.substr(0, 4); if (prefix == "/me " || prefix == "/me'") { + //style_params.font.style = "UNDERLINE"; mMessage->clear(); style_params.font.style ="ITALIC"; @@ -74,26 +83,17 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif } else { - mMessage->setValue(p.message); + style_params.font.style = "NORMAL"; + mMessage->setText(p.message, style_params); } - mUserName->setValue(p.from); + mAvatarName->setValue(p.from); mTime->setValue(p.time); mSessionID = p.session_id; + mAvatarID = p.avatar_id; mNotification = p.notification; - if(p.from == SYSTEM_FROM) - { - mAvatar->setVisible(FALSE); - sys_msg_icon->setVisible(TRUE); - } - else - { - mAvatar->setVisible(TRUE); - sys_msg_icon->setVisible(FALSE); - - mAvatar->setValue(p.avatar_id); - } + initIcon(); S32 maxLinesCount; std::istringstream ss( getString("message_max_lines_count") ); @@ -119,3 +119,116 @@ 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 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::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); + LLCoordGL pos(icon_x, sticky_rect.mTop); + + LLToolTip::Params params; + params.background_visible(false); + params.click_callback(boost::bind(&LLFloaterReg::showInstance, "inspect_avatar", LLSD().with("avatar_id", mAvatarID), FALSE)); + 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); +} + +void LLToastIMPanel::spawnGroupIconToolTip() +{ + // 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(&LLFloaterReg::showInstance, "inspect_group", LLSD().with("group_id", mSessionID), FALSE)); + 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); +} + +void LLToastIMPanel::initIcon() +{ + mAvatarIcon->setVisible(FALSE); + mGroupIcon->setVisible(FALSE); + mAdhocIcon->setVisible(FALSE); + + if(mAvatarName->getValue().asString() == SYSTEM_FROM) + { + // "sys_msg_icon" was disabled by Erica in the changeset: 5109 (85181bc92cbe) + // and "dummy widget" warnings appeared in log. + // It does not make sense to have such image with empty name. Removed for EXT-5057. + } + 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 53661f2cf6..cf4ad80637 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 { @@ -58,13 +59,24 @@ public: 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(); + + void spawnNameToolTip(); + void spawnGroupIconToolTip(); + + void initIcon(); + static const S32 DEFAULT_MESSAGE_MAX_LINE_COUNT; LLNotificationPtr mNotification; LLUUID mSessionID; - LLAvatarIconCtrl* mAvatar; - LLTextBox* mUserName; + LLUUID mAvatarID; + LLAvatarIconCtrl* mAvatarIcon; + LLGroupIconCtrl* mGroupIcon; + LLAvatarIconCtrl* mAdhocIcon; + LLTextBox* mAvatarName; LLTextBox* mTime; LLTextBox* mMessage; }; diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index 766cf83a01..c47c017143 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -43,9 +43,11 @@ #include "lluiconstants.h" #include "llrect.h" #include "lltrans.h" +#include "llnotificationsutil.h" const S32 BOTTOM_PAD = VPAD * 3; -const S32 BUTTON_WIDTH = 90; +const S32 IGNORE_BTN_TOP_DELTA = 3*VPAD;//additional ignore_btn padding +S32 BUTTON_WIDTH = 90; //static const LLFontGL* LLToastNotifyPanel::sFont = NULL; @@ -63,7 +65,7 @@ mAddedDefaultBtn(false) LLUICtrlFactory::getInstance()->buildPanel(this, "panel_notification.xml"); mInfoPanel = getChild<LLPanel>("info_panel"); mControlPanel = getChild<LLPanel>("control_panel"); - + BUTTON_WIDTH = gSavedSettings.getS32("ToastButtonWidth"); // customize panel's attributes // is it intended for displaying a tip mIsTip = notification->getType() == "notifytip"; @@ -96,7 +98,8 @@ mAddedDefaultBtn(false) // customize panel's outfit // preliminary adjust panel's layout - mIsTip ? adjustPanelForTipNotice() : adjustPanelForScriptNotice(form); + //move to the end + //mIsTip ? adjustPanelForTipNotice() : adjustPanelForScriptNotice(form); // adjust text options according to the notification type // add a caution textbox at the top of a caution notification @@ -117,8 +120,16 @@ mAddedDefaultBtn(false) mTextBox->setValue(notification->getMessage()); // add buttons for a script notification - if (!mIsTip) + if (mIsTip) + { + adjustPanelForTipNotice(); + } + else { + std::vector<index_button_pair_t> buttons; + buttons.reserve(mNumOptions); + S32 buttons_width = 0; + // create all buttons and accumulate they total width to reshape mControlPanel for (S32 i = 0; i < mNumOptions; i++) { LLSD form_element = form->getElement(i); @@ -126,70 +137,200 @@ mAddedDefaultBtn(false) { continue; } - - addButton(form_element["name"].asString(), form_element["text"].asString(), TRUE, form_element["default"].asBoolean()); + LLButton* new_button = createButton(form_element, TRUE); + buttons_width += new_button->getRect().getWidth(); + S32 index = form_element["index"].asInteger(); + buttons.push_back(index_button_pair_t(index,new_button)); } - - if (mNumButtons == 0) + if (buttons.empty()) { - addButton("OK", LLTrans::getString("ok"), FALSE, TRUE); - mAddedDefaultBtn = true; + addDefaultButton(); + } + else + { + const S32 button_panel_width = mControlPanel->getRect().getWidth();// do not change width of the panel + S32 button_panel_height = mControlPanel->getRect().getHeight(); + //try get an average h_pad to spread out buttons + S32 h_pad = (button_panel_width - buttons_width) / (S32(buttons.size())); + if(h_pad < 2*HPAD) + { + /* + * Probably it is a scriptdialog toast + * for a scriptdialog toast h_pad can be < 2*HPAD if we have a lot of buttons. + * In last case set default h_pad to avoid heaping of buttons + */ + h_pad = 2*HPAD; + } + if (mIsScriptDialog) + { + // we are using default width for script buttons so we can determinate button_rows + //to get a number of rows we divide the required width of the buttons to button_panel_width + S32 button_rows = llceil(F32(buttons.size() - 1) * (BUTTON_WIDTH + h_pad) / button_panel_width); + //S32 button_rows = (buttons.size() - 1) * (BUTTON_WIDTH + h_pad) / button_panel_width; + //reserve one row for the ignore_btn + button_rows++; + //calculate required panel height for scripdialog notification. + button_panel_height = button_rows * (BTN_HEIGHT + VPAD) + IGNORE_BTN_TOP_DELTA + BOTTOM_PAD; + } + else + { + // in common case buttons can have different widths so we need to calculate button_rows according to buttons_width + //S32 button_rows = llceil(F32(buttons.size()) * (buttons_width + h_pad) / button_panel_width); + S32 button_rows = llceil(F32((buttons.size() - 1) * h_pad + buttons_width) / button_panel_width); + //calculate required panel height + button_panel_height = button_rows * (BTN_HEIGHT + VPAD) + BOTTOM_PAD; + } + + // we need to keep min width and max height to make visible all buttons, because width of the toast can not be changed + adjustPanelForScriptNotice(button_panel_width, button_panel_height); + updateButtonsLayout(buttons, h_pad); } } - // adjust panel's height to the text size mInfoPanel->setFollowsAll(); snapToMessageHeight(mTextBox, MAX_LENGTH); } +void LLToastNotifyPanel::addDefaultButton() +{ + LLSD form_element; + form_element.with("name", "OK").with("text", LLTrans::getString("ok")).with("default", true); + LLButton* ok_btn = createButton(form_element, FALSE); + LLRect new_btn_rect(ok_btn->getRect()); + + new_btn_rect.setOriginAndSize(llabs(getRect().getWidth() - BUTTON_WIDTH)/ 2, BOTTOM_PAD, + //auto_size for ok button makes it very small, so let's make it wider + BUTTON_WIDTH, new_btn_rect.getHeight()); + ok_btn->setRect(new_btn_rect); + addChild(ok_btn, -1); + mNumButtons = 1; + mAddedDefaultBtn = true; +} +LLButton* LLToastNotifyPanel::createButton(const LLSD& form_element, BOOL is_option) +{ + + InstanceAndS32* userdata = new InstanceAndS32; + userdata->mSelf = this; + userdata->mButtonName = is_option ? form_element["name"].asString() : ""; + + mBtnCallbackData.push_back(userdata); + + LLButton::Params p; + bool is_ignore_btn = form_element["index"].asInteger() == -1; + const LLFontGL* font = is_ignore_btn ? sFontSmall: sFont; // for ignore button in script dialog + p.name(form_element["name"].asString()); + p.label(form_element["text"].asString()); + p.font(font); + p.rect.height = BTN_HEIGHT; + p.click_callback.function(boost::bind(&LLToastNotifyPanel::onClickButton, userdata)); + p.rect.width = BUTTON_WIDTH; + p.auto_resize = false; + p.follows.flags(FOLLOWS_RIGHT | FOLLOWS_LEFT | FOLLOWS_BOTTOM); + if (mIsCaution) + { + p.image_color(LLUIColorTable::instance().getColor("ButtonCautionImageColor")); + p.image_color_disabled(LLUIColorTable::instance().getColor("ButtonCautionImageColor")); + } + // for the scriptdialog buttons we use fixed button size. This is a limit! + if (!mIsScriptDialog && font->getWidth(form_element["text"].asString()) > BUTTON_WIDTH) + { + p.rect.width = 1; + p.auto_resize = true; + } + else if (mIsScriptDialog && is_ignore_btn) + { + // this is ignore button,make it smaller + p.rect.height = BTN_HEIGHT_SMALL; + p.rect.width = 1; + p.auto_resize = true; + } + LLButton* btn = LLUICtrlFactory::create<LLButton>(p); + mNumButtons++; + btn->autoResize(); + if (form_element["default"].asBoolean()) + { + setDefaultBtn(btn); + } + + return btn; +} LLToastNotifyPanel::~LLToastNotifyPanel() { std::for_each(mBtnCallbackData.begin(), mBtnCallbackData.end(), DeletePointer()); + if (LLNotificationsUtil::find(mNotification->getID()) != NULL) + { + LLNotifications::getInstance()->cancel(mNotification); + } } - -void LLToastNotifyPanel::adjustPanelForScriptNotice(const LLNotificationFormPtr form) +void LLToastNotifyPanel::updateButtonsLayout(const std::vector<index_button_pair_t>& buttons, S32 h_pad) { - F32 buttons_num = 0; - S32 button_rows = 0; - - // calculate number of buttons - for (S32 i = 0; i < mNumOptions; i++) + S32 left = 0; + //reserve place for ignore button + S32 bottom_offset = mIsScriptDialog ? (BTN_HEIGHT + IGNORE_BTN_TOP_DELTA + BOTTOM_PAD) : BOTTOM_PAD; + S32 max_width = mControlPanel->getRect().getWidth(); + LLButton* ignore_btn = NULL; + for (std::vector<index_button_pair_t>::const_iterator it = buttons.begin(); it != buttons.end(); it++) { - if (form->getElement(i)["type"].asString() == "button") + if (it->first == -1) { - buttons_num++; + ignore_btn = it->second; + continue; } + LLButton* btn = it->second; + LLRect btn_rect(btn->getRect()); + if (left + btn_rect.getWidth() > max_width)// whether there is still some place for button+h_pad in the mControlPanel + { + // looks like we need to add button to the next row + left = 0; + bottom_offset += (BTN_HEIGHT + VPAD); + } + //we arrange buttons from bottom to top for backward support of old script + btn_rect.setOriginAndSize(left, bottom_offset, btn_rect.getWidth(), btn_rect.getHeight()); + btn->setRect(btn_rect); + left = btn_rect.mLeft + btn_rect.getWidth() + h_pad; + mControlPanel->addChild(btn, -1); } - - // calculate necessary height for the button panel - // if notification form contains no buttons - reserve a place for OK button - // script notifications have extra line for an IGNORE button - if(mIsScriptDialog) - { - button_rows = llceil((buttons_num - 1) / 3.0f) + 1; - } - else + if (mIsScriptDialog && ignore_btn != NULL) { - button_rows = llmax( 1, llceil(buttons_num / 3.0f)); + LLRect ignore_btn_rect(ignore_btn->getRect()); + S32 buttons_per_row = max_width / BUTTON_WIDTH; //assume that h_pad far less than BUTTON_WIDTH + S32 ignore_btn_left = buttons_per_row * BUTTON_WIDTH + (buttons_per_row - 1) * h_pad - ignore_btn_rect.getWidth(); + if (ignore_btn_left + ignore_btn_rect.getWidth() > max_width)// make sure that the ignore button is in panel + { + ignore_btn_left = max_width - ignore_btn_rect.getWidth() - 2 * HPAD; + } + ignore_btn_rect.setOriginAndSize(ignore_btn_left, BOTTOM_PAD,// always move ignore button at the bottom + ignore_btn_rect.getWidth(), ignore_btn_rect.getHeight()); + ignore_btn->setRect(ignore_btn_rect); + mControlPanel->addChild(ignore_btn, -1); } +} - S32 button_panel_height = button_rows * BTN_HEIGHT + (button_rows + 1) * VPAD + BOTTOM_PAD; - +void LLToastNotifyPanel::adjustPanelForScriptNotice(S32 button_panel_width, S32 button_panel_height) +{ //adjust layout - LLRect button_rect = mControlPanel->getRect(); - reshape(getRect().getWidth(), mInfoPanel->getRect().getHeight() + button_panel_height); - mControlPanel->reshape(button_rect.getWidth(), button_panel_height); + // we need to keep min width and max height to make visible all buttons, because width of the toast can not be changed + reshape(getRect().getWidth(), mInfoPanel->getRect().getHeight() + button_panel_height + VPAD); + mControlPanel->reshape( button_panel_width, button_panel_height); } -// static void LLToastNotifyPanel::adjustPanelForTipNotice() { LLRect info_rect = mInfoPanel->getRect(); LLRect this_rect = getRect(); - + //we don't need display ControlPanel for tips because they doesn't contain any buttons. mControlPanel->setVisible(FALSE); reshape(getRect().getWidth(), mInfoPanel->getRect().getHeight()); + + if (mNotification->getPayload().has("respond_on_mousedown") + && mNotification->getPayload()["respond_on_mousedown"] ) + { + mInfoPanel->setMouseDownCallback( + boost::bind(&LLNotification::respond, + mNotification, + mNotification->getResponseTemplate())); + } } // static @@ -205,65 +346,7 @@ void LLToastNotifyPanel::onClickButton(void* data) response[button_name] = true; } self->mNotification->respond(response); -} - -// virtual -LLButton* LLToastNotifyPanel::addButton(const std::string& name, const std::string& label, BOOL is_option, BOOL is_default) -{ - LLRect btn_rect; - LLButton* btn; - S32 btn_height= BTN_HEIGHT; - const LLFontGL* font = sFont; - S32 ignore_pad = 0; - S32 button_index = mNumButtons; - S32 index = button_index; - S32 x = (HPAD * 4) + 32; - - if (mIsScriptDialog) - { - // Add two "blank" option spaces, before the "Ignore" button - index = button_index + 2; - if (button_index == 0) - { - // Ignore button is smaller, less wide - btn_height = BTN_HEIGHT_SMALL; - font = sFontSmall; - ignore_pad = 10; - } - } - btn_rect.setOriginAndSize(x + (index % 3) * (BUTTON_WIDTH+HPAD+HPAD) + ignore_pad, - BOTTOM_PAD + (index / 3) * (BTN_HEIGHT+VPAD), - BUTTON_WIDTH - 2*ignore_pad, - btn_height); - - InstanceAndS32* userdata = new InstanceAndS32; - userdata->mSelf = this; - userdata->mButtonName = is_option ? name : ""; - - mBtnCallbackData.push_back(userdata); - - LLButton::Params p; - p.name(name); - p.label(label); - p.rect(btn_rect); - p.click_callback.function(boost::bind(&LLToastNotifyPanel::onClickButton, userdata)); - p.font(font); - if (mIsCaution) - { - p.image_color(LLUIColorTable::instance().getColor("ButtonCautionImageColor")); - p.image_color_disabled(LLUIColorTable::instance().getColor("ButtonCautionImageColor")); - } - btn = LLUICtrlFactory::create<LLButton>(p); - - - mControlPanel->addChild(btn, -1); - - if (is_default) - { - setDefaultBtn(btn); - } - - mNumButtons++; - return btn; + // disable all buttons + self->mControlPanel->setEnabled(FALSE); } diff --git a/indra/newview/lltoastnotifypanel.h b/indra/newview/lltoastnotifypanel.h index 04525387b3..e791eea469 100644 --- a/indra/newview/lltoastnotifypanel.h +++ b/indra/newview/lltoastnotifypanel.h @@ -55,9 +55,10 @@ class LLToastNotifyPanel: public LLToastPanel public: LLToastNotifyPanel(LLNotificationPtr&); virtual ~LLToastNotifyPanel(); + LLPanel * getControlPanel() { return mControlPanel; } protected: - LLButton* addButton(std::string const &name, const std::string& label, BOOL is_option, BOOL is_default); + LLButton* createButton(const LLSD& form_element, BOOL is_option); // Used for callbacks struct InstanceAndS32 @@ -69,8 +70,17 @@ protected: private: - void adjustPanelForScriptNotice(const boost::shared_ptr<LLNotificationForm> form); + typedef std::pair<int,LLButton*> index_button_pair_t; + void adjustPanelForScriptNotice(S32 max_width, S32 max_height); void adjustPanelForTipNotice(); + void addDefaultButton(); + /* + * It lays out buttons of the notification in mControlPanel. + * Buttons will be placed from BOTTOM to TOP. + * @param h_pad horizontal space between buttons. It is depent on number of buttons. + * @param buttons vector of button to be added. + */ + void updateButtonsLayout(const std::vector<index_button_pair_t>& buttons, S32 h_pad); // panel elements LLTextBase* mTextBox; diff --git a/indra/newview/lltoolbar.cpp b/indra/newview/lltoolbar.cpp index bf6d715c31..404eab9249 100644 --- a/indra/newview/lltoolbar.cpp +++ b/indra/newview/lltoolbar.cpp @@ -54,13 +54,12 @@ #include "lltooldraganddrop.h" #include "llfloaterinventory.h" #include "llfloaterchatterbox.h" -#include "llfloaterfriends.h" #include "llfloatersnapshot.h" #include "llinventorypanel.h" #include "lltoolmgr.h" #include "llui.h" #include "llviewermenu.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llpanelblockedlist.h" #include "llscrolllistctrl.h" #include "llscrolllistitem.h" @@ -70,8 +69,6 @@ #include "llviewerwindow.h" #include "lltoolgrab.h" #include "llcombobox.h" -#include "llfloaterchat.h" -#include "llimpanel.h" #include "lllayoutstack.h" #if LL_DARWIN @@ -96,7 +93,10 @@ F32 LLToolBar::sInventoryAutoOpenTime = 1.f; // LLToolBar::LLToolBar() -: LLPanel() + : LLPanel(), + + mInventoryAutoOpen(FALSE), + mNumUnreadIMs(0) #if LL_DARWIN , mResizeHandle(NULL) #endif // LL_DARWIN @@ -263,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"; @@ -278,24 +278,9 @@ void LLToolBar::updateCommunicateList() { selected = "contacts"; } - } + }*/ itemp = communicate_button->addElement(contact_sd, ADD_TOP); - LLSD communicate_sd; - communicate_sd["value"] = "local chat"; - communicate_sd["columns"][0]["value"] = LLFloaterChat::getInstance()->getShortTitle(); - - if (LLFloaterChat::getInstance() == frontmost_floater) - { - communicate_sd["columns"][0]["font"]["name"] = "SANSSERIF_SMALL"; - communicate_sd["columns"][0]["font"]["style"] = "BOLD"; - if (selected.isUndefined()) - { - selected = "local chat"; - } - } - itemp = communicate_button->addElement(communicate_sd, ADD_TOP); - communicate_button->addSeparator(ADD_TOP); communicate_button->add(getString("Redock Windows"), LLSD("redock"), ADD_TOP); communicate_button->addSeparator(ADD_TOP); @@ -303,7 +288,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); } @@ -329,7 +314,7 @@ void LLToolBar::updateCommunicateList() } itemp = communicate_button->addElement(im_sd, ADD_TOP); } - } + }*/ communicate_button->setValue(selected); } @@ -353,12 +338,11 @@ 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); - chatterbox_instance->addFloater(LLFloaterChat::getInstance(), FALSE); - + LLUUID session_to_show; std::set<LLHandle<LLFloater> >::const_iterator floater_handle_it; @@ -375,7 +359,7 @@ void LLToolBar::onClickCommunicate(LLUICtrl* ctrl, const LLSD& user_data) } } LLFloaterReg::showInstance("communicate", session_to_show); - } + }*/ } else if (selected_option.asString() == "mute list") { @@ -383,11 +367,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);*/ } } diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index aa35f22930..125c62474e 100644 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -41,7 +41,7 @@ #include "llagentwearables.h" #include "llappearancemgr.h" #include "lldictionary.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llfloaterreg.h" #include "llfloatertools.h" #include "llgesturemgr.h" @@ -1199,11 +1199,11 @@ void LLToolDragAndDrop::dropObject(LLViewerObject* raycast_target, locateInventory(item, cat); if(!item || !item->isComplete()) return; - if (regionp - && (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX)) - { - LLFirstUse::useSandbox(); - } + //if (regionp + // && (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX)) + //{ + // LLFirstUse::useSandbox(); + //} // check if it cannot be copied, and mark as remove if it is - // this will remove the object from inventory after rez. Only // bother with this check if we would not normally remove from @@ -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; diff --git a/indra/newview/lltoolgrab.cpp b/indra/newview/lltoolgrab.cpp index 26dbe6a489..d837a334f1 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/lltoolmgr.cpp b/indra/newview/lltoolmgr.cpp index 26b3bdb82e..fd12163fd3 100644 --- a/indra/newview/lltoolmgr.cpp +++ b/indra/newview/lltoolmgr.cpp @@ -38,7 +38,7 @@ #include "llmenugl.h" #include "llfloaterreg.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" // tools and manipulators #include "lltool.h" #include "llmanipscale.h" @@ -301,7 +301,7 @@ void LLToolMgr::toggleBuildMode() getCurrentToolset()->selectTool( LLToolCompCreate::getInstance() ); // Could be first use - LLFirstUse::useBuild(); + //LLFirstUse::useBuild(); gAgent.resetView(false); diff --git a/indra/newview/lltoolmorph.cpp b/indra/newview/lltoolmorph.cpp index 4fb75f7a49..5f825b461e 100644 --- a/indra/newview/lltoolmorph.cpp +++ b/indra/newview/lltoolmorph.cpp @@ -167,13 +167,16 @@ BOOL LLVisualParamHint::render() LLVisualParamReset::sDirty = TRUE; LLVOAvatar* avatarp = gAgent.getAvatarObject(); + gGL.pushUIMatrix(); + gGL.loadUIIdentity(); + glMatrixMode(GL_PROJECTION); - glPushMatrix(); + gGL.pushMatrix(); glLoadIdentity(); glOrtho(0.0f, mFullWidth, 0.0f, mFullHeight, -1.0f, 1.0f); glMatrixMode(GL_MODELVIEW); - glPushMatrix(); + gGL.pushMatrix(); glLoadIdentity(); LLGLSUIDefault gls_ui; @@ -181,10 +184,10 @@ BOOL LLVisualParamHint::render() mBackgroundp->draw(0, 0, mFullWidth, mFullHeight); glMatrixMode(GL_PROJECTION); - glPopMatrix(); + gGL.popMatrix(); glMatrixMode(GL_MODELVIEW); - glPopMatrix(); + gGL.popMatrix(); mNeedsUpdate = FALSE; mIsVisible = TRUE; @@ -247,6 +250,7 @@ BOOL LLVisualParamHint::render() mVisualParam->setWeight(mLastParamWeight, FALSE); gGL.color4f(1,1,1,1); mGLTexturep->setGLTextureCreated(true); + gGL.popUIMatrix(); return TRUE; } diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index b1d09eccba..fb78b6a415 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -41,7 +41,7 @@ #include "llagent.h" #include "llviewercontrol.h" #include "llfocusmgr.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llfloaterland.h" #include "llfloaterreg.h" #include "llfloaterscriptdebug.h" @@ -101,16 +101,13 @@ BOOL LLToolPie::handleAnyMouseClick(S32 x, S32 y, MASK mask, EClickType clicktyp BOOL LLToolPie::handleMouseDown(S32 x, S32 y, MASK mask) { //left mouse down always picks transparent - gViewerWindow->pickAsync(x, y, mask, leftMouseCallback, TRUE); + mPick = gViewerWindow->pickImmediate(x, y, TRUE); + mPick.mKeyMask = mask; mGrabMouseButtonDown = TRUE; - return TRUE; -} + + pickLeftMouseDownCallback(); -// static -void LLToolPie::leftMouseCallback(const LLPickInfo& pick_info) -{ - LLToolPie::getInstance()->mPick = pick_info; - LLToolPie::getInstance()->pickLeftMouseDownCallback(); + return TRUE; } // Spawn context menus on right mouse down so you can drag over and select @@ -118,8 +115,13 @@ void LLToolPie::leftMouseCallback(const LLPickInfo& pick_info) BOOL LLToolPie::handleRightMouseDown(S32 x, S32 y, MASK mask) { // don't pick transparent so users can't "pay" transparent objects - gViewerWindow->pickAsync(x, y, mask, rightMouseCallback, FALSE); + mPick = gViewerWindow->pickImmediate(x, y, FALSE); + mPick.mKeyMask = mask; + // claim not handled so UI focus stays same + + pickRightMouseDownCallback(); + return FALSE; } @@ -134,13 +136,6 @@ BOOL LLToolPie::handleScrollWheel(S32 x, S32 y, S32 clicks) return LLViewerMediaFocus::getInstance()->handleScrollWheel(x, y, clicks); } -// static -void LLToolPie::rightMouseCallback(const LLPickInfo& pick_info) -{ - LLToolPie::getInstance()->mPick = pick_info; - LLToolPie::getInstance()->pickRightMouseDownCallback(); -} - // True if you selected an object. BOOL LLToolPie::pickLeftMouseDownCallback() { @@ -663,339 +658,360 @@ static bool needs_tooltip(LLSelectNode* nodep) return false; } -BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) -{ - if (!LLUI::sSettingGroups["config"]->getBOOL("ShowHoverTips")) return TRUE; - if (!mHoverPick.isValid()) return TRUE; - - LLViewerObject* hover_object = mHoverPick.getObject(); - - // update hover object and hover parcel - LLSelectMgr::getInstance()->setHoverObject(hover_object, mHoverPick.mObjectFace); - if (mHoverPick.mPickType == LLPickInfo::PICK_LAND) +BOOL LLToolPie::handleTooltipLand(std::string line, std::string tooltip_msg) +{ + LLViewerParcelMgr::getInstance()->setHoverParcel( mHoverPick.mPosGlobal ); + // + // Do not show hover for land unless prefs are set to allow it. + // + + if (!gSavedSettings.getBOOL("ShowLandHoverTip")) return TRUE; + + // Didn't hit an object, but since we have a land point we + // must be hovering over land. + + LLParcel* hover_parcel = LLViewerParcelMgr::getInstance()->getHoverParcel(); + LLUUID owner; + S32 width = 0; + S32 height = 0; + + if ( hover_parcel ) { - LLViewerParcelMgr::getInstance()->setHoverParcel( mHoverPick.mPosGlobal ); + owner = hover_parcel->getOwnerID(); + width = S32(LLViewerParcelMgr::getInstance()->getHoverParcelWidth()); + height = S32(LLViewerParcelMgr::getInstance()->getHoverParcelHeight()); } - - std::string tooltip_msg; - std::string line; - - if ( hover_object ) + + // Line: "Land" + line.clear(); + line.append(LLTrans::getString("TooltipLand")); + if (hover_parcel) + { + line.append(hover_parcel->getName()); + } + tooltip_msg.append(line); + tooltip_msg.push_back('\n'); + + // Line: "Owner: James Linden" + line.clear(); + line.append(LLTrans::getString("TooltipOwner") + " "); + + if ( hover_parcel ) { - if ( hover_object->isHUDAttachment() ) + std::string name; + if (LLUUID::null == owner) { - // no hover tips for HUD elements, since they can obscure - // what the HUD is displaying - return TRUE; + line.append(LLTrans::getString("TooltipPublic")); } - - if ( hover_object->isAttachment() ) + else if (hover_parcel->getIsGroupOwned()) { - // get root of attachment then parent, which is avatar - LLViewerObject* root_edit = hover_object->getRootEdit(); - if (!root_edit) + if (gCacheName->getGroupName(owner, name)) { - // Strange parenting issue, don't show any text - return TRUE; + line.append(name); + line.append(LLTrans::getString("TooltipIsGroup")); } - hover_object = (LLViewerObject*)root_edit->getParent(); - if (!hover_object) + else { - // another strange parenting issue, bail out - return TRUE; + line.append(LLTrans::getString("RetrievingData")); } } - - line.clear(); - if (hover_object->isAvatar()) + else if(gCacheName->getFullName(owner, name)) { - // only show tooltip if same inspector not already open - LLFloater* existing_inspector = LLFloaterReg::findInstance("inspect_avatar"); - if (!existing_inspector - || !existing_inspector->getVisible() - || existing_inspector->getKey()["avatar_id"].asUUID() != hover_object->getID()) - { - std::string avatar_name; - LLNameValue* firstname = hover_object->getNVPair("FirstName"); - LLNameValue* lastname = hover_object->getNVPair("LastName"); - if (firstname && lastname) - { - avatar_name = llformat("%s %s", firstname->getString(), lastname->getString()); - } - else - { - avatar_name = LLTrans::getString("TooltipPerson"); - } - - // *HACK: We may select this object, so pretend it was clicked - mPick = mHoverPick; - LLInspector::Params p; - p.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>()); - p.message(avatar_name); - p.image(LLUI::getUIImage("Info")); - p.click_callback(boost::bind(showAvatarInspector, hover_object->getID())); - p.visible_time_near(6.f); - p.visible_time_far(3.f); - p.wrap(false); - - LLToolTipMgr::instance().show(p); - } + line.append(name); } else { - // - // We have hit a regular object (not an avatar or attachment) - // - - // - // Default prefs will suppress display unless the object is interactive - // - bool show_all_object_tips = - (bool)gSavedSettings.getBOOL("ShowAllObjectHoverTip"); - LLSelectNode *nodep = LLSelectMgr::getInstance()->getHoverNode(); - - // only show tooltip if same inspector not already open - LLFloater* existing_inspector = LLFloaterReg::findInstance("inspect_object"); - if (nodep && - (!existing_inspector - || !existing_inspector->getVisible() - || existing_inspector->getKey()["object_id"].asUUID() != hover_object->getID())) - { - if (nodep->mName.empty()) - { - tooltip_msg.append(LLTrans::getString("TooltipNoName")); - } - else - { - tooltip_msg.append( nodep->mName ); - } - - bool is_time_based_media = false; - bool is_web_based_media = false; - bool is_media_playing = false; - - // Does this face have media? - const LLTextureEntry* tep = hover_object->getTE(mHoverPick.mObjectFace); - - if(tep) - { - const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; - if (mep) - { - viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL; - LLPluginClassMedia* media_plugin = NULL; - - if (media_impl.notNull() && (media_impl->hasMedia())) - { - 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(); - } - //tooltip_msg.append(LLTrans::getString("CurrentURL", args)); - } - } - } - } - - // also check the primary node since sometimes it can have an action even though - // the root node doesn't - bool needs_tip = needs_tooltip(nodep) || - needs_tooltip(LLSelectMgr::getInstance()->getPrimaryHoverNode()); - - if (show_all_object_tips || needs_tip) - { - // We may select this object, so pretend it was clicked - mPick = mHoverPick; - LLInspector::Params p; - p.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>()); - p.message(tooltip_msg); - p.image(LLUI::getUIImage("Info_Off")); - p.click_callback(boost::bind(showObjectInspector, hover_object->getID(), mHoverPick.mObjectFace)); - p.time_based_media(is_time_based_media); - p.web_based_media(is_web_based_media); - p.media_playing(is_media_playing); - p.click_playmedia_callback(boost::bind(playCurrentMedia, mHoverPick)); - p.click_homepage_callback(boost::bind(VisitHomePage, mHoverPick)); - p.visible_time_near(6.f); - p.visible_time_far(3.f); - p.wrap(false); - - LLToolTipMgr::instance().show(p); - } - } + line.append(LLTrans::getString("RetrievingData")); } } - else if ( mHoverPick.mPickType == LLPickInfo::PICK_LAND ) + else { - // - // Do not show hover for land unless prefs are set to allow it. - // + line.append(LLTrans::getString("RetrievingData")); + } + tooltip_msg.append(line); + tooltip_msg.push_back('\n'); + + // Line: "no fly, not safe, no build" + + // Don't display properties for your land. This is just + // confusing, because you can do anything on your own land. + if ( hover_parcel && owner != gAgent.getID() ) + { + S32 words = 0; - if (!gSavedSettings.getBOOL("ShowLandHoverTip")) return TRUE; - - // Didn't hit an object, but since we have a land point we - // must be hovering over land. - - LLParcel* hover_parcel = LLViewerParcelMgr::getInstance()->getHoverParcel(); - LLUUID owner; - S32 width = 0; - S32 height = 0; - - if ( hover_parcel ) - { - owner = hover_parcel->getOwnerID(); - width = S32(LLViewerParcelMgr::getInstance()->getHoverParcelWidth()); - height = S32(LLViewerParcelMgr::getInstance()->getHoverParcelHeight()); - } - - // Line: "Land" line.clear(); - line.append(LLTrans::getString("TooltipLand")); - if (hover_parcel) + // JC - Keep this in the same order as the checkboxes + // on the land info panel + if ( !hover_parcel->getAllowModify() ) { - line.append(hover_parcel->getName()); - } - tooltip_msg.append(line); - tooltip_msg.push_back('\n'); - - // Line: "Owner: James Linden" - line.clear(); - line.append(LLTrans::getString("TooltipOwner") + " "); - - if ( hover_parcel ) - { - std::string name; - if (LLUUID::null == owner) + if ( hover_parcel->getAllowGroupModify() ) { - line.append(LLTrans::getString("TooltipPublic")); + line.append(LLTrans::getString("TooltipFlagGroupBuild")); } - else if (hover_parcel->getIsGroupOwned()) + else { - if (gCacheName->getGroupName(owner, name)) - { - line.append(name); - line.append(LLTrans::getString("TooltipIsGroup")); - } - else - { - line.append(LLTrans::getString("RetrievingData")); - } + line.append(LLTrans::getString("TooltipFlagNoBuild")); } - else if(gCacheName->getFullName(owner, name)) + words++; + } + + if ( !hover_parcel->getAllowTerraform() ) + { + if (words) line.append(", "); + line.append(LLTrans::getString("TooltipFlagNoEdit")); + words++; + } + + if ( hover_parcel->getAllowDamage() ) + { + if (words) line.append(", "); + line.append(LLTrans::getString("TooltipFlagNotSafe")); + words++; + } + + // Maybe we should reflect the estate's block fly bit here as well? DK 12/1/04 + if ( !hover_parcel->getAllowFly() ) + { + if (words) line.append(", "); + line.append(LLTrans::getString("TooltipFlagNoFly")); + words++; + } + + if ( !hover_parcel->getAllowOtherScripts() ) + { + if (words) line.append(", "); + if ( hover_parcel->getAllowGroupScripts() ) { - line.append(name); + line.append(LLTrans::getString("TooltipFlagGroupScripts")); } else { - line.append(LLTrans::getString("RetrievingData")); + line.append(LLTrans::getString("TooltipFlagNoScripts")); } + + words++; } - else + + if (words) { - line.append(LLTrans::getString("RetrievingData")); + tooltip_msg.append(line); + tooltip_msg.push_back('\n'); } + } + + if (hover_parcel && hover_parcel->getParcelFlag(PF_FOR_SALE)) + { + LLStringUtil::format_map_t args; + args["[AMOUNT]"] = llformat("%d", hover_parcel->getSalePrice()); + line = LLTrans::getString("TooltipForSaleL$", args); tooltip_msg.append(line); tooltip_msg.push_back('\n'); + } + + // trim last newlines + if (!tooltip_msg.empty()) + { + tooltip_msg.erase(tooltip_msg.size() - 1); + LLToolTipMgr::instance().show(tooltip_msg); + } + + return TRUE; +} - // Line: "no fly, not safe, no build" - - // Don't display properties for your land. This is just - // confusing, because you can do anything on your own land. - if ( hover_parcel && owner != gAgent.getID() ) +BOOL LLToolPie::handleTooltipObject( LLViewerObject* hover_object, std::string line, std::string tooltip_msg) +{ + if ( hover_object->isHUDAttachment() ) + { + // no hover tips for HUD elements, since they can obscure + // what the HUD is displaying + return TRUE; + } + + if ( hover_object->isAttachment() ) + { + // get root of attachment then parent, which is avatar + LLViewerObject* root_edit = hover_object->getRootEdit(); + if (!root_edit) { - S32 words = 0; - - line.clear(); - // JC - Keep this in the same order as the checkboxes - // on the land info panel - if ( !hover_parcel->getAllowModify() ) + // Strange parenting issue, don't show any text + return TRUE; + } + hover_object = (LLViewerObject*)root_edit->getParent(); + if (!hover_object) + { + // another strange parenting issue, bail out + return TRUE; + } + } + + line.clear(); + if (hover_object->isAvatar()) + { + // only show tooltip if same inspector not already open + LLFloater* existing_inspector = LLFloaterReg::findInstance("inspect_avatar"); + if (!existing_inspector + || !existing_inspector->getVisible() + || existing_inspector->getKey()["avatar_id"].asUUID() != hover_object->getID()) + { + std::string avatar_name; + LLNameValue* firstname = hover_object->getNVPair("FirstName"); + LLNameValue* lastname = hover_object->getNVPair("LastName"); + if (firstname && lastname) { - if ( hover_parcel->getAllowGroupModify() ) - { - line.append(LLTrans::getString("TooltipFlagGroupBuild")); - } - else - { - line.append(LLTrans::getString("TooltipFlagNoBuild")); - } - words++; + avatar_name = llformat("%s %s", firstname->getString(), lastname->getString()); } - - if ( !hover_parcel->getAllowTerraform() ) + else { - if (words) line.append(", "); - line.append(LLTrans::getString("TooltipFlagNoEdit")); - words++; + avatar_name = LLTrans::getString("TooltipPerson"); } - - if ( hover_parcel->getAllowDamage() ) + + // *HACK: We may select this object, so pretend it was clicked + mPick = mHoverPick; + LLInspector::Params p; + p.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>()); + p.message(avatar_name); + p.image.name("Inspector_I"); + p.click_callback(boost::bind(showAvatarInspector, hover_object->getID())); + p.visible_time_near(6.f); + p.visible_time_far(3.f); + p.delay_time(0.35f); + p.wrap(false); + + LLToolTipMgr::instance().show(p); + } + } + else + { + // + // We have hit a regular object (not an avatar or attachment) + // + + // + // Default prefs will suppress display unless the object is interactive + // + bool show_all_object_tips = + (bool)gSavedSettings.getBOOL("ShowAllObjectHoverTip"); + LLSelectNode *nodep = LLSelectMgr::getInstance()->getHoverNode(); + + // only show tooltip if same inspector not already open + LLFloater* existing_inspector = LLFloaterReg::findInstance("inspect_object"); + if (nodep && + (!existing_inspector + || !existing_inspector->getVisible() + || existing_inspector->getKey()["object_id"].asUUID() != hover_object->getID())) + { + if (nodep->mName.empty()) { - if (words) line.append(", "); - line.append(LLTrans::getString("TooltipFlagNotSafe")); - words++; + tooltip_msg.append(LLTrans::getString("TooltipNoName")); } - - // Maybe we should reflect the estate's block fly bit here as well? DK 12/1/04 - if ( !hover_parcel->getAllowFly() ) + else { - if (words) line.append(", "); - line.append(LLTrans::getString("TooltipFlagNoFly")); - words++; + tooltip_msg.append( nodep->mName ); } - - if ( !hover_parcel->getAllowOtherScripts() ) + + 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) { - if (words) line.append(", "); - if ( hover_parcel->getAllowGroupScripts() ) - { - line.append(LLTrans::getString("TooltipFlagGroupScripts")); - } - else + has_media = tep->hasMedia(); + const LLMediaEntry* mep = has_media ? tep->getMediaData() : NULL; + if (mep) { - line.append(LLTrans::getString("TooltipFlagNoScripts")); + viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); + LLPluginClassMedia* media_plugin = NULL; + + 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(); + } + //tooltip_msg.append(LLTrans::getString("CurrentURL", args)); + } + } } - - words++; } - - if (words) + + // 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 = !is_media_displaying && + (has_media || + needs_tooltip(nodep) || + needs_tooltip(LLSelectMgr::getInstance()->getPrimaryHoverNode())); + + if (show_all_object_tips || needs_tip) { - tooltip_msg.append(line); - tooltip_msg.push_back('\n'); + // We may select this object, so pretend it was clicked + mPick = mHoverPick; + LLInspector::Params p; + p.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>()); + p.message(tooltip_msg); + p.image.name("Inspector_I"); + p.click_callback(boost::bind(showObjectInspector, hover_object->getID(), mHoverPick.mObjectFace)); + p.time_based_media(is_time_based_media); + p.web_based_media(is_web_based_media); + p.media_playing(is_media_playing); + p.click_playmedia_callback(boost::bind(playCurrentMedia, mHoverPick)); + p.click_homepage_callback(boost::bind(VisitHomePage, mHoverPick)); + p.visible_time_near(6.f); + p.visible_time_far(3.f); + p.delay_time(0.35f); + p.wrap(false); + + LLToolTipMgr::instance().show(p); } } + } + + return TRUE; +} - if (hover_parcel && hover_parcel->getParcelFlag(PF_FOR_SALE)) - { - LLStringUtil::format_map_t args; - args["[AMOUNT]"] = llformat("%d", hover_parcel->getSalePrice()); - line = LLTrans::getString("TooltipForSaleL$", args); - tooltip_msg.append(line); - tooltip_msg.push_back('\n'); - } +BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) +{ + if (!LLUI::sSettingGroups["config"]->getBOOL("ShowHoverTips")) return TRUE; + if (!mHoverPick.isValid()) return TRUE; - // trim last newlines - if (!tooltip_msg.empty()) - { - tooltip_msg.erase(tooltip_msg.size() - 1); - LLToolTipMgr::instance().show(tooltip_msg); - } - } + LLViewerObject* hover_object = mHoverPick.getObject(); + + // update hover object and hover parcel + LLSelectMgr::getInstance()->setHoverObject(hover_object, mHoverPick.mObjectFace); + + + std::string tooltip_msg; + std::string line; + if ( hover_object ) + { + handleTooltipObject(hover_object, line, tooltip_msg ); + } + else if (mHoverPick.mPickType == LLPickInfo::PICK_LAND) + { + handleTooltipLand(line, tooltip_msg); + } return TRUE; } @@ -1247,11 +1263,10 @@ bool LLToolPie::handleMediaClick(const LLPickInfo& pick) return false; LLMediaEntry* mep = (tep->hasMedia()) ? tep->getMediaData() : NULL; - if(!mep) return false; - viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL; + viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); if (gSavedSettings.getBOOL("MediaOnAPrimUI")) { @@ -1469,6 +1484,12 @@ BOOL LLToolPie::pickRightMouseDownCallback() while( object && object->isAttachment()) { object = (LLViewerObject*)object->getParent(); + llassert(object); + } + + if (!object) + { + return TRUE; // unexpected, but escape } // Object is an avatar, so check for mute by id. @@ -1515,7 +1536,7 @@ BOOL LLToolPie::pickRightMouseDownCallback() } else { - mute_msg = LLTrans::getString("MuteObject"); + mute_msg = LLTrans::getString("MuteObject2"); } gMenuHolder->childSetText("Object Mute", mute_msg); diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h index 3660c68552..8a4c949aef 100644 --- a/indra/newview/lltoolpie.h +++ b/indra/newview/lltoolpie.h @@ -71,9 +71,6 @@ public: LLObjectSelection* getLeftClickSelection() { return (LLObjectSelection*)mLeftClickSelection; } void resetSelection(); - static void leftMouseCallback(const LLPickInfo& pick_info); - static void rightMouseCallback(const LLPickInfo& pick_info); - static void selectionPropertiesReceived(); static void showAvatarInspector(const LLUUID& avatar_id); @@ -92,7 +89,9 @@ private: bool handleMediaClick(const LLPickInfo& info); bool handleMediaHover(const LLPickInfo& info); - bool handleMediaMouseUp(); + bool handleMediaMouseUp(); + BOOL handleTooltipLand(std::string line, std::string tooltip_msg); + BOOL handleTooltipObject( LLViewerObject* hover_object, std::string line, std::string tooltip_msg); private: BOOL mGrabMouseButtonDown; diff --git a/indra/newview/lltoolplacer.cpp b/indra/newview/lltoolplacer.cpp index a7f4cb558e..612bcc03bd 100644 --- a/indra/newview/lltoolplacer.cpp +++ b/indra/newview/lltoolplacer.cpp @@ -38,7 +38,7 @@ // viewer headers #include "llbutton.h" #include "llviewercontrol.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llfloatertools.h" #include "llselectmgr.h" #include "llstatusbar.h" @@ -188,7 +188,7 @@ BOOL LLToolPlacer::addObject( LLPCode pcode, S32 x, S32 y, U8 use_physics ) if (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX) { - LLFirstUse::useSandbox(); + //LLFirstUse::useSandbox(); } // Set params for new object based on its PCode. @@ -491,7 +491,7 @@ BOOL LLToolPlacer::addDuplicate(S32 x, S32 y) if (regionp && (regionp->getRegionFlags() & REGION_FLAGS_SANDBOX)) { - LLFirstUse::useSandbox(); + //LLFirstUse::useSandbox(); } return TRUE; diff --git a/indra/newview/lltoolplacer.h b/indra/newview/lltoolplacer.h index b7422380d4..df07f1854c 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" diff --git a/indra/newview/lltransientdockablefloater.cpp b/indra/newview/lltransientdockablefloater.cpp index 7e4d4988d1..9d39aa5182 100644 --- a/indra/newview/lltransientdockablefloater.cpp +++ b/indra/newview/lltransientdockablefloater.cpp @@ -42,11 +42,20 @@ LLTransientDockableFloater::LLTransientDockableFloater(LLDockControl* dockContro LLDockableFloater(dockControl, uniqueDocking, key, params) { LLTransientFloaterMgr::getInstance()->registerTransientFloater(this); + LLTransientFloater::init(this); } 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) @@ -54,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); } } @@ -77,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/lltransientdockablefloater.h b/indra/newview/lltransientdockablefloater.h index 6e8a3afd22..e0541d6597 100644 --- a/indra/newview/lltransientdockablefloater.h +++ b/indra/newview/lltransientdockablefloater.h @@ -37,12 +37,13 @@ #include "llfloater.h" #include "lldockcontrol.h" #include "lldockablefloater.h" +#include "lltransientfloatermgr.h" /** * Represents floater that can dock and managed by transient floater manager. * Transient floaters should be hidden if user click anywhere except defined view list. */ -class LLTransientDockableFloater : public LLDockableFloater +class LLTransientDockableFloater : public LLDockableFloater, LLTransientFloater { public: LOG_CLASS(LLTransientDockableFloater); @@ -52,6 +53,7 @@ public: /*virtual*/ void setVisible(BOOL visible); /* virtual */void setDocked(bool docked, bool pop_on_undock = true); + virtual LLTransientFloaterMgr::ETransientGroup getGroup() { return LLTransientFloaterMgr::GLOBAL; } }; #endif /* LL_TRANSIENTDOCKABLEFLOATER_H */ diff --git a/indra/newview/lltransientfloatermgr.cpp b/indra/newview/lltransientfloatermgr.cpp index 347399f239..d82403070b 100644 --- a/indra/newview/lltransientfloatermgr.cpp +++ b/indra/newview/lltransientfloatermgr.cpp @@ -44,57 +44,69 @@ LLTransientFloaterMgr::LLTransientFloaterMgr() { gViewerWindow->getRootView()->addMouseDownCallback(boost::bind( &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*>())); } -void LLTransientFloaterMgr::registerTransientFloater(LLFloater* floater) +void LLTransientFloaterMgr::registerTransientFloater(LLTransientFloater* floater) { mTransSet.insert(floater); } -void LLTransientFloaterMgr::unregisterTransientFloater(LLFloater* floater) +void LLTransientFloaterMgr::unregisterTransientFloater(LLTransientFloater* floater) { mTransSet.erase(floater); } +void LLTransientFloaterMgr::addControlView(ETransientGroup group, LLView* view) +{ + mGroupControls.find(group)->second.insert(view); +} + +void LLTransientFloaterMgr::removeControlView(ETransientGroup group, LLView* view) +{ + mGroupControls.find(group)->second.erase(view); +} + void LLTransientFloaterMgr::addControlView(LLView* view) { - mControlsSet.insert(view); + addControlView(GLOBAL, view); } void LLTransientFloaterMgr::removeControlView(LLView* view) { // we will still get focus lost callbacks on this view, but that's ok // since we run sanity checking logic every time - mControlsSet.erase(view); + removeControlView(GLOBAL, view); } -void LLTransientFloaterMgr::hideTransientFloaters() +void LLTransientFloaterMgr::hideTransientFloaters(S32 x, S32 y) { - for (std::set<LLFloater*>::iterator it = mTransSet.begin(); it + for (std::set<LLTransientFloater*>::iterator it = mTransSet.begin(); it != mTransSet.end(); it++) { - LLFloater* floater = *it; - if (floater->isDocked()) + LLTransientFloater* floater = *it; + if (floater->isTransientDocked()) { - floater->setVisible(FALSE); + ETransientGroup group = floater->getGroup(); + + bool hide = isControlClicked(mGroupControls.find(group)->second, x, y); + if (hide) + { + floater->setTransientVisible(FALSE); + } } } } -void LLTransientFloaterMgr::leftMouseClickCallback(S32 x, S32 y, - MASK mask) +bool LLTransientFloaterMgr::isControlClicked(std::set<LLView*>& set, S32 x, S32 y) { - bool hide = true; - for (controls_set_t::iterator it = mControlsSet.begin(); it - != mControlsSet.end(); it++) + bool res = true; + for (controls_set_t::iterator it = set.begin(); it + != set.end(); it++) { - // don't hide transient floater if any context menu opened - if (LLMenuGL::sMenuContainer->getVisibleMenu() != NULL) - { - hide = false; - break; - } - LLView* control_view = *it; if (!control_view->getVisible()) { @@ -105,14 +117,33 @@ void LLTransientFloaterMgr::leftMouseClickCallback(S32 x, S32 y, // if click inside view rect if (rect.pointInRect(x, y)) { - hide = false; + res = false; break; } } + return res; +} + +void LLTransientFloaterMgr::leftMouseClickCallback(S32 x, S32 y, + MASK mask) +{ + // don't hide transient floater if any context menu opened + if (LLMenuGL::sMenuContainer->getVisibleMenu() != NULL) + { + return; + } + bool hide = isControlClicked(mGroupControls.find(DOCKED)->second, x, y) + && isControlClicked(mGroupControls.find(GLOBAL)->second, x, y); if (hide) { - hideTransientFloaters(); + hideTransientFloaters(x, y); } } +void LLTransientFloater::init(LLFloater* thiz) +{ + // used since LLTransientFloater(this) can't be used in descendant constructor parameter initialization. + mFloater = thiz; +} + diff --git a/indra/newview/lltransientfloatermgr.h b/indra/newview/lltransientfloatermgr.h index cef6e1fe45..9c5ae295f2 100644 --- a/indra/newview/lltransientfloatermgr.h +++ b/indra/newview/lltransientfloatermgr.h @@ -37,27 +37,60 @@ #include "llsingleton.h" #include "llfloater.h" +class LLTransientFloater; /** * Provides functionality to hide transient floaters. */ class LLTransientFloaterMgr: public LLSingleton<LLTransientFloaterMgr> { -public: +protected: LLTransientFloaterMgr(); - void registerTransientFloater(LLFloater* floater); - void unregisterTransientFloater(LLFloater* floater); + friend class LLSingleton<LLTransientFloaterMgr>; + +public: + enum ETransientGroup + { + GLOBAL, DOCKED, IM + }; + + void registerTransientFloater(LLTransientFloater* floater); + void unregisterTransientFloater(LLTransientFloater* floater); + void addControlView(ETransientGroup group, LLView* view); + void removeControlView(ETransientGroup group, LLView* view); void addControlView(LLView* view); void removeControlView(LLView* view); private: - void hideTransientFloaters(); + void hideTransientFloaters(S32 x, S32 y); void leftMouseClickCallback(S32 x, S32 y, MASK mask); - + bool isControlClicked(std::set<LLView*>& set, S32 x, S32 y); private: - std::set<LLFloater*> mTransSet; + std::set<LLTransientFloater*> mTransSet; + typedef std::set<LLView*> controls_set_t; - controls_set_t mControlsSet; + typedef std::map<ETransientGroup, std::set<LLView*> > group_controls_t; + group_controls_t mGroupControls; +}; + +/** + * An abstract class declares transient floater interfaces. + */ +class LLTransientFloater +{ +protected: + /** + * Class initialization method. + * Should be called from descendant constructor. + */ + void init(LLFloater* thiz); +public: + virtual LLTransientFloaterMgr::ETransientGroup getGroup() = 0; + bool isTransientDocked() { return mFloater->isDocked(); }; + void setTransientVisible(BOOL visible) {mFloater->setVisible(visible); } + +private: + LLFloater* mFloater; }; #endif // LL_LLTRANSIENTFLOATERMGR_H diff --git a/indra/newview/llurlhistory.cpp b/indra/newview/llurlhistory.cpp index e8b5aa7c74..08dd82ab86 100644 --- a/indra/newview/llurlhistory.cpp +++ b/indra/newview/llurlhistory.cpp @@ -77,7 +77,7 @@ bool LLURLHistory::saveFile(const std::string& filename) std::string temp_str = gDirUtilp->getLindenUserDir(); if( temp_str.empty() ) { - llwarns << "Can't save. No user directory set." << llendl; + llinfos << "Can't save URL history - no user directory set yet." << llendl; return false; } diff --git a/indra/newview/llurlwhitelist.cpp b/indra/newview/llurlwhitelist.cpp index da69039cf9..46bc9276c1 100644 --- a/indra/newview/llurlwhitelist.cpp +++ b/indra/newview/llurlwhitelist.cpp @@ -121,6 +121,12 @@ bool LLUrlWhiteList::save () // build filename for each user std::string resolvedFilename = gDirUtilp->getExpandedFilename ( LL_PATH_PER_SL_ACCOUNT, mFilename ); + if (resolvedFilename.empty()) + { + llinfos << "No per-user dir for saving URL whitelist - presumably not logged in yet. Skipping." << llendl; + return false; + } + // open a file for writing llofstream file ( resolvedFilename ); if ( file.is_open () ) diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp index e7f904023a..1d935f5ab8 100644 --- a/indra/newview/llvieweraudio.cpp +++ b/indra/newview/llvieweraudio.cpp @@ -211,29 +211,60 @@ void audio_update_wind(bool force_update) // if (force_update || (last_camera_water_height * camera_water_height) < 0.f) { + static LLUICachedControl<F32> rolloff("AudioLevelRolloff", 1.0f); if (camera_water_height < 0.f) { - gAudiop->setRolloffFactor(gSavedSettings.getF32("AudioLevelRolloff") * LL_ROLLOFF_MULTIPLIER_UNDER_WATER); + gAudiop->setRolloffFactor(rolloff * LL_ROLLOFF_MULTIPLIER_UNDER_WATER); } else { - gAudiop->setRolloffFactor(gSavedSettings.getF32("AudioLevelRolloff")); + gAudiop->setRolloffFactor(rolloff); } } - // this line rotates the wind vector to be listener (agent) relative - // Only use the agent's motion to compute wind noise, otherwise the world - // feels desolate on login when you are standing still. - gRelativeWindVec = gAgent.getFrameAgent().rotateToLocal( -gAgent.getVelocity() ); + + // Scale down the contribution of weather-simulation wind to the + // ambient wind noise. Wind velocity averages 3.5 m/s, with gusts to 7 m/s + // whereas steady-state avatar walk velocity is only 3.2 m/s. + // Without this the world feels desolate on first login when you are + // standing still. + static LLUICachedControl<F32> wind_level("AudioLevelWind", 0.5f); + LLVector3 scaled_wind_vec = gWindVec * wind_level; + + // Mix in the avatar's motion, subtract because when you walk north, + // the apparent wind moves south. + LLVector3 final_wind_vec = scaled_wind_vec - gAgent.getVelocity(); + + // rotate the wind vector to be listener (agent) relative + gRelativeWindVec = gAgent.getFrameAgent().rotateToLocal( final_wind_vec ); // don't use the setter setMaxWindGain() because we don't // want to screw up the fade-in on startup by setting actual source gain // 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 = 1.f; + } + + // 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); diff --git a/indra/newview/llviewercamera.cpp b/indra/newview/llviewercamera.cpp index bd4f172907..0051f46716 100644 --- a/indra/newview/llviewercamera.cpp +++ b/indra/newview/llviewercamera.cpp @@ -338,7 +338,12 @@ void LLViewerCamera::setPerspective(BOOL for_selection, { // make a tiny little viewport // anything drawn into this viewport will be "selected" - GLint* viewport = (GLint*) gGLViewport; + + GLint viewport[4]; + viewport[0] = gViewerWindow->getWorldViewRectRaw().mLeft; + viewport[1] = gViewerWindow->getWorldViewRectRaw().mBottom; + viewport[2] = gViewerWindow->getWorldViewRectRaw().getWidth(); + viewport[3] = gViewerWindow->getWorldViewRectRaw().getHeight(); proj_mat = gl_pick_matrix(x+width/2.f, y_from_bot+height/2.f, (GLfloat) width, (GLfloat) height, viewport); @@ -405,6 +410,9 @@ void LLViewerCamera::setPerspective(BOOL for_selection, if (for_selection && (width > 1 || height > 1)) { + // NB: as of this writing, i believe the code below is broken (doesn't take into account the world view, assumes entire window) + // however, it is also unused (the GL matricies are used for selection, (see LLCamera::sphereInFrustum())) and so i'm not + // comfortable hacking on it. calculateFrustumPlanesFromWindow((F32)(x - width / 2) / (F32)gViewerWindow->getWindowWidthScaled() - 0.5f, (F32)(y_from_bot - height / 2) / (F32)gViewerWindow->getWindowHeightScaled() - 0.5f, (F32)(x + width / 2) / (F32)gViewerWindow->getWindowWidthScaled() - 0.5f, diff --git a/indra/newview/llviewerchat.cpp b/indra/newview/llviewerchat.cpp index 8de87eb602..320456e1e2 100644 --- a/indra/newview/llviewerchat.cpp +++ b/indra/newview/llviewerchat.cpp @@ -37,6 +37,7 @@ #include "llagent.h" // gAgent #include "lluicolortable.h" #include "llviewercontrol.h" // gSavedSettings +#include "llinstantmessage.h" //SYSTEM_FROM // LLViewerChat @@ -55,7 +56,7 @@ void LLViewerChat::getChatColor(const LLChat& chat, LLColor4& r_color) r_color = LLUIColorTable::instance().getColor("SystemChatColor"); break; case CHAT_SOURCE_AGENT: - if (chat.mFromID.isNull()) + if (chat.mFromID.isNull() || SYSTEM_FROM == chat.mFromName) { r_color = LLUIColorTable::instance().getColor("SystemChatColor"); } diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 57434bd1e4..5daea96123 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 @@ -540,6 +510,7 @@ void settings_setup_listeners() gSavedSettings.getControl("FirstPersonAvatarVisible")->getSignal()->connect(boost::bind(&handleRenderAvatarMouselookChanged, _2)); gSavedSettings.getControl("RenderFarClip")->getSignal()->connect(boost::bind(&handleRenderFarClipChanged, _2)); gSavedSettings.getControl("RenderTerrainDetail")->getSignal()->connect(boost::bind(&handleTerrainDetailChanged, _2)); + gSavedSettings.getControl("RenderUseTriStrips")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2)); gSavedSettings.getControl("RenderAnimateTrees")->getSignal()->connect(boost::bind(&handleResetVertexBuffersChanged, _2)); gSavedSettings.getControl("RenderAvatarVP")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2)); gSavedSettings.getControl("VertexShaderEnable")->getSignal()->connect(boost::bind(&handleSetShaderChanged, _2)); @@ -592,7 +563,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/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 3dac0ee452..6c1c1d1096 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -45,7 +45,7 @@ #include "lldynamictexture.h" #include "lldrawpoolalpha.h" #include "llfeaturemanager.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llhudmanager.h" #include "llimagebmp.h" #include "llmemory.h" @@ -113,7 +113,6 @@ void render_hud_attachments(); void render_ui_3d(); void render_ui_2d(); void render_disconnected_background(); -void render_hud_elements(); void display_startup() { @@ -404,7 +403,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) if( arrival_fraction > 1.f ) { arrival_fraction = 1.f; - LLFirstUse::useTeleport(); + //LLFirstUse::useTeleport(); gAgent.setTeleportState( LLAgent::TELEPORT_NONE ); } gViewerWindow->setProgressCancelButtonVisible(FALSE, LLTrans::getString("Cancel")); @@ -483,7 +482,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) { LLAppViewer::instance()->pingMainloopTimeout("Display:Disconnected"); render_ui(); - render_disconnected_background(); } ////////////////////////// @@ -991,6 +989,7 @@ void render_hud_attachments() LLSpatialGroup::sNoDelete = FALSE; render_hud_elements(); + //restore type mask gPipeline.setRenderTypeMask(mask); if (has_ui) @@ -1011,7 +1010,7 @@ void render_hud_attachments() LLRect get_whole_screen_region() { - LLRect whole_screen = gViewerWindow->getWindowRectScaled(); + LLRect whole_screen = gViewerWindow->getWorldViewRectScaled(); // apply camera zoom transform (for high res screenshots) F32 zoom_factor = LLViewerCamera::getInstance()->getZoomFactor(); @@ -1019,13 +1018,13 @@ LLRect get_whole_screen_region() if (zoom_factor > 1.f) { S32 num_horizontal_tiles = llceil(zoom_factor); - S32 tile_width = llround((F32)gViewerWindow->getWindowWidthScaled() / zoom_factor); - S32 tile_height = llround((F32)gViewerWindow->getWindowHeightScaled() / zoom_factor); + S32 tile_width = llround((F32)gViewerWindow->getWorldViewWidthScaled() / zoom_factor); + S32 tile_height = llround((F32)gViewerWindow->getWorldViewHeightScaled() / zoom_factor); int tile_y = sub_region / num_horizontal_tiles; int tile_x = sub_region - (tile_y * num_horizontal_tiles); glh::matrix4f mat; - whole_screen.setLeftTopAndSize(tile_x * tile_width, gViewerWindow->getWindowHeightScaled() - (tile_y * tile_height), tile_width, tile_height); + whole_screen.setLeftTopAndSize(tile_x * tile_width, gViewerWindow->getWorldViewHeightScaled() - (tile_y * tile_height), tile_width, tile_height); } return whole_screen; } @@ -1045,12 +1044,12 @@ bool get_hud_matrices(const LLRect& screen_region, glh::matrix4f &proj, glh::mat F32 aspect_ratio = LLViewerCamera::getInstance()->getAspect(); glh::matrix4f mat; - F32 scale_x = (F32)gViewerWindow->getWindowWidthScaled() / (F32)screen_region.getWidth(); - F32 scale_y = (F32)gViewerWindow->getWindowHeightScaled() / (F32)screen_region.getHeight(); + F32 scale_x = (F32)gViewerWindow->getWorldViewWidthScaled() / (F32)screen_region.getWidth(); + F32 scale_y = (F32)gViewerWindow->getWorldViewHeightScaled() / (F32)screen_region.getHeight(); mat.set_scale(glh::vec3f(scale_x, scale_y, 1.f)); mat.set_translate( - glh::vec3f(clamp_rescale((F32)screen_region.getCenterX(), 0.f, (F32)gViewerWindow->getWindowWidthScaled(), 0.5f * scale_x * aspect_ratio, -0.5f * scale_x * aspect_ratio), - clamp_rescale((F32)screen_region.getCenterY(), 0.f, (F32)gViewerWindow->getWindowHeightScaled(), 0.5f * scale_y, -0.5f * scale_y), + glh::vec3f(clamp_rescale((F32)screen_region.getCenterX(), 0.f, (F32)gViewerWindow->getWorldViewWidthScaled(), 0.5f * scale_x * aspect_ratio, -0.5f * scale_x * aspect_ratio), + clamp_rescale((F32)screen_region.getCenterY(), 0.f, (F32)gViewerWindow->getWorldViewHeightScaled(), 0.5f * scale_y, -0.5f * scale_y), 0.f)); proj *= mat; @@ -1130,7 +1129,6 @@ void render_ui(F32 zoom_factor, int subfield) } { - gGL.color4f(1,1,1,1); if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) { @@ -1141,6 +1139,10 @@ void render_ui(F32 zoom_factor, int subfield) render_ui_3d(); LLGLState::checkStates(); } + else + { + render_disconnected_background(); + } render_ui_2d(); LLGLState::checkStates(); @@ -1300,8 +1302,8 @@ void render_ui_2d() if (gAgent.getAvatarObject() && gAgent.mHUDCurZoom < 0.98f) { glPushMatrix(); - S32 half_width = (gViewerWindow->getWindowWidthScaled() / 2); - S32 half_height = (gViewerWindow->getWindowHeightScaled() / 2); + S32 half_width = (gViewerWindow->getWorldViewWidthScaled() / 2); + S32 half_height = (gViewerWindow->getWorldViewHeightScaled() / 2); glScalef(LLUI::sGLScaleFactor.mV[0], LLUI::sGLScaleFactor.mV[1], 1.f); glTranslatef((F32)half_width, (F32)half_height, 0.f); F32 zoom = gAgent.mHUDCurZoom; diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 00db11a767..8370c98470 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -53,11 +53,9 @@ #include "llfloaterbuyland.h" #include "llfloaterbulkpermission.h" #include "llfloaterbump.h" -#include "llfloatercall.h" #include "llfloatercamera.h" -#include "llfloaterchat.h" -#include "llfloaterchatterbox.h" #include "llfloaterdaycycle.h" +#include "llfloaterevent.h" #include "llfloatersearch.h" #include "llfloaterenvsettings.h" #include "llfloaterfonttest.h" @@ -71,7 +69,6 @@ #include "llfloaterhud.h" #include "llfloaterimagepreview.h" #include "llimfloater.h" -#include "llimpanel.h" #include "llfloaterinspect.h" #include "llfloaterinventory.h" #include "llfloaterjoystick.h" @@ -81,7 +78,6 @@ #include "llfloatermap.h" #include "llfloatermemleak.h" #include "llfloaternamedesc.h" -#include "llfloaternearbymedia.h" #include "llfloaternotificationsconsole.h" #include "llfloateropenobject.h" #include "llfloaterpay.h" @@ -107,17 +103,17 @@ #include "llfloateruipreview.h" #include "llfloaterurldisplay.h" #include "llfloatervoicedevicesettings.h" -#include "llfloatervolumepulldown.h" #include "llfloaterwater.h" #include "llfloaterwhitelistentry.h" #include "llfloaterwindlight.h" +#include "llfloaterwindowsize.h" #include "llfloaterworldmap.h" #include "llimfloatercontainer.h" #include "llinspectavatar.h" #include "llinspectgroup.h" #include "llinspectobject.h" #include "llinspectremoteobject.h" -#include "llmediaremotectrl.h" +#include "llinspecttoast.h" #include "llmoveview.h" #include "llnearbychat.h" #include "llpanelblockedlist.h" @@ -154,17 +150,18 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("bumps", "floater_bumps.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterBump>); LLFloaterReg::add("camera", "floater_camera.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterCamera>); - LLFloaterReg::add("chat", "floater_chat_history.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterChat>); + //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("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>); LLFloaterReg::add("env_settings", "floater_env_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEnvSettings>); LLFloaterReg::add("env_water", "floater_water.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWater>); LLFloaterReg::add("env_windlight", "floater_windlight_options.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWindLight>); + + LLFloaterReg::add("event", "floater_event.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterEvent>); LLFloaterReg::add("font_test", "floater_font_test.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterFontTest>); @@ -185,6 +182,7 @@ void LLViewerFloaterReg::registerFloaters() LLInspectGroupUtil::registerFloater(); LLInspectObjectUtil::registerFloater(); LLInspectRemoteObjectUtil::registerFloater(); + LLNotificationsUI::registerFloater(); LLFloaterReg::add("lagmeter", "floater_lagmeter.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLagMeter>); LLFloaterReg::add("land_holdings", "floater_land_holdings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLandHoldings>); @@ -198,7 +196,6 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("mute_object_by_name", "floater_mute_object.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterGetBlockedObjectName>); LLFloaterReg::add("mini_map", "floater_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMap>); - LLFloaterReg::add("nearby_media", "floater_nearby_media.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNearbyMedia>); LLFloaterReg::add("notifications_console", "floater_notifications_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotificationConsole>); LLFloaterReg::add("notification_well_window", "floater_sys_well.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLNotificationWellWindow>); @@ -256,16 +253,13 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("upload_image", "floater_image_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterImagePreview>, "upload"); LLFloaterReg::add("upload_sound", "floater_sound_preview.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundPreview>, "upload"); - LLFloaterReg::add("volume_pulldown", "floater_volume_pulldown.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterVolumePulldown>); LLFloaterReg::add("voice_controls", "floater_voice_controls.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallFloater>); LLFloaterReg::add("whitelist_entry", "floater_whitelist_entry.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWhiteListEntry>); + LLFloaterWindowSizeUtil::registerFloater(); LLFloaterReg::add("world_map", "floater_world_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterWorldMap>); // *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/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp index 5af79b4fd3..b82538dacb 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 @@ -65,18 +93,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 diff --git a/indra/newview/llviewerhelputil.cpp b/indra/newview/llviewerhelputil.cpp index 5ba4fc834c..967a2925e3 100644 --- a/indra/newview/llviewerhelputil.cpp +++ b/indra/newview/llviewerhelputil.cpp @@ -34,6 +34,7 @@ #include "llviewerprecompiledheaders.h" #include "llviewerhelputil.h" +#include "llagent.h" #include "llsd.h" #include "llstring.h" #include "lluri.h" @@ -63,6 +64,7 @@ std::string LLViewerHelpUtil::buildHelpURL( const std::string &topic) { LLSD substitution; substitution["TOPIC"] = helpURLEncode(topic); + substitution["DEBUG_MODE"] = gAgent.isGodlike() ? "/debug" : ""; // get the help URL and expand all of the substitutions // (also adds things like [LANGUAGE], [VERSION], [OS], etc.) diff --git a/indra/newview/llviewerhome.cpp b/indra/newview/llviewerhome.cpp index 6299b4fabd..8fdbe0a4ae 100644 --- a/indra/newview/llviewerhome.cpp +++ b/indra/newview/llviewerhome.cpp @@ -50,9 +50,18 @@ std::string LLViewerHome::getHomeURL() LLSD substitution; substitution["AUTH_TOKEN"] = LLURI::escape(getAuthKey()); - // get the home URL and expand all of the substitutions - // (also adds things like [LANGUAGE], [VERSION], [OS], etc.) + // get the home URL from the settings.xml file std::string homeURL = gSavedSettings.getString("HomeSidePanelURL"); + + // support a grid-level override of the URL from login.cgi + LLSD grid_url = LLLoginInstance::getInstance()->getResponse("home_sidetray_url"); + if (! grid_url.asString().empty()) + { + homeURL = grid_url.asString(); + } + + // expand all substitution strings in the URL and return it + // (also adds things like [LANGUAGE], [VERSION], [OS], etc.) return LLWeb::expandURLSubstitutions(homeURL, substitution); } diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 5605f425e0..f02e854db6 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" @@ -44,6 +45,7 @@ #include "llconsole.h" #include "llinventorymodel.h" #include "llgesturemgr.h" +#include "llsidetray.h" #include "llinventorybridge.h" #include "llfloaterinventory.h" @@ -72,7 +74,23 @@ public: bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web) { - if (params.size() < 2) return false; + if (params.size() < 1) + { + return false; + } + + // support secondlife:///app/inventory/show + if (params[0].asString() == "show") + { + LLSideTray::getInstance()->showPanel("sidepanel_inventory", LLSD()); + return true; + } + + // otherwise, we need a UUID and a verb... + if (params.size() < 2) + { + return false; + } LLUUID inventory_id; if (!inventory_id.set(params[0], FALSE)) { @@ -631,6 +649,8 @@ bool LLViewerInventoryCategory::exportFileLocal(LLFILE* fp) const void LLViewerInventoryCategory::determineFolderType() { + /* Do NOT uncomment this code. This is for future 2.1 support of ensembles. + llassert(FALSE); LLFolderType::EType original_type = getPreferredType(); if (LLFolderType::lookupIsProtectedType(original_type)) return; @@ -674,6 +694,8 @@ void LLViewerInventoryCategory::determineFolderType() { changeType(LLFolderType::FT_NONE); } + llassert(FALSE); + */ } void LLViewerInventoryCategory::changeType(LLFolderType::EType new_folder_type) @@ -823,6 +845,13 @@ void CreateGestureCallback::fire(const LLUUID& inv_item) gFloaterView->adjustToFitScreen(preview, FALSE); } +void AddFavoriteLandmarkCallback::fire(const LLUUID& inv_item_id) +{ + if (mTargetLandmarkId.isNull()) return; + + gInventory.rearrangeFavoriteLandmarks(inv_item_id, mTargetLandmarkId); +} + LLInventoryCallbackManager gInventoryCallbacks; void create_inventory_item(const LLUUID& agent_id, const LLUUID& session_id, @@ -1136,6 +1165,40 @@ const LLUUID& LLViewerInventoryItem::getAssetUUID() const return LLInventoryItem::getAssetUUID(); } +const LLUUID& LLViewerInventoryItem::getProtectedAssetUUID() const +{ + if (const LLViewerInventoryItem *linked_item = getLinkedItem()) + { + return linked_item->getProtectedAssetUUID(); + } + + // check for conditions under which we may return a visible UUID to the user + bool item_is_fullperm = getIsFullPerm(); + bool agent_is_godlike = gAgent.isGodlikeWithoutAdminMenuFakery(); + if (item_is_fullperm || agent_is_godlike) + { + return LLInventoryItem::getAssetUUID(); + } + + return LLUUID::null; +} + +const bool LLViewerInventoryItem::getIsFullPerm() const +{ + LLPermissions item_permissions = getPermissions(); + + // modify-ok & copy-ok & transfer-ok + return ( item_permissions.allowOperationBy(PERM_MODIFY, + gAgent.getID(), + gAgent.getGroupID()) && + item_permissions.allowOperationBy(PERM_COPY, + gAgent.getID(), + gAgent.getGroupID()) && + item_permissions.allowOperationBy(PERM_TRANSFER, + gAgent.getID(), + gAgent.getGroupID()) ); +} + const std::string& LLViewerInventoryItem::getName() const { if (const LLViewerInventoryItem *linked_item = getLinkedItem()) @@ -1147,72 +1210,196 @@ const std::string& LLViewerInventoryItem::getName() const return linked_category->getName(); } - return getDisplayName(); + return LLInventoryItem::getName(); } -const std::string& LLViewerInventoryItem::getDisplayName() 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> { - std::string result; - BOOL hasSortField = extractSortFieldAndDisplayName(0, &result); +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); + + /** + * 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() : mIsDirty(false) { 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(); + void save(); + + 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) + : mFavoriteItems(items) + { - return mDisplayName = hasSortField ? result : LLInventoryItem::getName(); -} + } -S32 LLViewerInventoryItem::getSortField() const -{ - S32 result; - BOOL hasSortField = extractSortFieldAndDisplayName(&result, 0); + /** + * 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"; +const S32 LLFavoritesOrderStorage::NO_INDEX = -1; - return hasSortField ? result : -1; +void LLFavoritesOrderStorage::setSortIndex(const LLUUID& inv_item_id, S32 sort_index) +{ + mSortIndexes[inv_item_id] = sort_index; + mIsDirty = true; } -void LLViewerInventoryItem::setSortField(S32 sortField) +S32 LLFavoritesOrderStorage::getSortIndex(const LLUUID& inv_item_id) { - using std::string; + sort_index_map_t::const_iterator it = mSortIndexes.find(inv_item_id); + if (it != mSortIndexes.end()) + { + return it->second; + } + return NO_INDEX; +} - std::stringstream ss; - ss << sortField; +void LLFavoritesOrderStorage::removeSortIndex(const LLUUID& inv_item_id) +{ + mSortIndexes.erase(inv_item_id); + mIsDirty = true; +} - string newSortField = ss.str(); +// static +void LLFavoritesOrderStorage::destroyClass() +{ + LLFavoritesOrderStorage::instance().cleanup(); +} - const char separator = getSeparator(); - const string::size_type separatorPos = mName.find(separator, 0); +void LLFavoritesOrderStorage::load() +{ + // load per-resident sorting information + std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, SORTING_DATA_FILE_NAME); - if (separatorPos < string::npos) + LLSD settings_llsd; + llifstream file; + file.open(filename); + if (file.is_open()) { - // the name of the LLViewerInventoryItem already consists of sort field and display name. - mName = newSortField + separator + mName.substr(separatorPos + 1, string::npos); + LLSDSerialize::fromXML(settings_llsd, file); } - else + + for (LLSD::map_const_iterator iter = settings_llsd.beginMap(); + iter != settings_llsd.endMap(); ++iter) { - // there is no sort field in the name of LLViewerInventoryItem, we should add it - mName = newSortField + separator + mName; + mSortIndexes.insert(std::make_pair(LLUUID(iter->first), (S32)iter->second.asInteger())); } } -void LLViewerInventoryItem::rename(const std::string& n) +void LLFavoritesOrderStorage::save() { - using std::string; + // nothing to save if clean + if (!mIsDirty) return; - 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); + // 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; - const char separator = getSeparator(); - const string::size_type separatorPos = mName.find(separator, 0); + for(sort_index_map_t::const_iterator iter = mSortIndexes.begin(); iter != mSortIndexes.end(); ++iter) + { + settings_llsd[iter->first.asString()] = iter->second; + } - if (separatorPos < string::npos) - { - mName.replace(separatorPos + 1, string::npos, new_name); - } - else - { - mName = new_name; + llofstream file; + file.open(filename); + LLSDSerialize::toPrettyXML(settings_llsd, file); } } +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; + 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); +} + + +S32 LLViewerInventoryItem::getSortField() const +{ + return LLFavoritesOrderStorage::instance().getSortIndex(mUUID); +} + +void LLViewerInventoryItem::setSortField(S32 sortField) +{ + LLFavoritesOrderStorage::instance().setSortIndex(mUUID, sortField); +} + const LLPermissions& LLViewerInventoryItem::getPermissions() const { // Use the actual permissions of the symlink, not its parent. @@ -1301,6 +1488,8 @@ U32 LLViewerInventoryItem::getCRC32() const return LLInventoryItem::getCRC32(); } +// *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; @@ -1336,12 +1525,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 412a2c66e6..3d3f80b9b5 100644 --- a/indra/newview/llviewerinventory.h +++ b/indra/newview/llviewerinventory.h @@ -58,18 +58,17 @@ public: 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: virtual LLAssetType::EType getType() const; virtual const LLUUID& getAssetUUID() const; + virtual const LLUUID& getProtectedAssetUUID() const; // returns LLUUID::null if current agent does not have permission to expose this asset's UUID to the user virtual const std::string& getName() const; - virtual const std::string& getDisplayName() const; virtual S32 getSortField() const; virtual void setSortField(S32 sortField); - virtual void rename(const std::string& new_name); virtual const LLPermissions& getPermissions() const; + virtual const bool getIsFullPerm() const; // 'fullperm' in the popular sense: modify-ok & copy-ok & transfer-ok, no special god rules applied virtual const LLUUID& getCreatorUUID() const; virtual const std::string& getDescription() const; virtual const LLSaleInfo& getSaleInfo() const; @@ -81,7 +80,6 @@ public: 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, @@ -279,6 +277,18 @@ public: void fire(const LLUUID& inv_item); }; +class AddFavoriteLandmarkCallback : public LLInventoryCallback +{ +public: + AddFavoriteLandmarkCallback() : mTargetLandmarkId(LLUUID::null) {} + void setTargetLandmarkId(const LLUUID& target_uuid) { mTargetLandmarkId = target_uuid; } + +private: + void fire(const LLUUID& inv_item); + + LLUUID mTargetLandmarkId; +}; + // misc functions //void inventory_reliable_callback(void**, S32 status); diff --git a/indra/newview/llviewerjoint.cpp b/indra/newview/llviewerjoint.cpp index c2591ac8d7..95f05b5f5f 100644 --- a/indra/newview/llviewerjoint.cpp +++ b/indra/newview/llviewerjoint.cpp @@ -59,13 +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; + init(); } @@ -73,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(); +} + + +void 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/llviewerjoint.h b/indra/newview/llviewerjoint.h index 08c4ec36fd..0d3092a044 100644 --- a/indra/newview/llviewerjoint.h +++ b/indra/newview/llviewerjoint.h @@ -142,6 +142,8 @@ public: void setMeshID( S32 id ) {mMeshID = id;} protected: + void init(); + BOOL mValid; U32 mComponents; F32 mMinPixelArea; diff --git a/indra/newview/llviewerjointmesh.cpp b/indra/newview/llviewerjointmesh.cpp index 5b8902dec4..7225aa1523 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) { @@ -625,7 +626,7 @@ U32 LLViewerJointMesh::drawShape( F32 pixelArea, BOOL first_pass, BOOL is_dummy) mFace->mVertexBuffer->drawRange(LLRender::TRIANGLES, start, end, count, offset); glPopMatrix(); } - gPipeline.addTrianglesDrawn(count/3); + gPipeline.addTrianglesDrawn(count); triangle_count += count; diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 4d912c6c11..344c4c469b 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -48,17 +48,28 @@ #include "llviewerwindow.h" #include "llfocusmgr.h" #include "llcallbacklist.h" +#include "llparcel.h" +#include "llaudioengine.h" // for gAudiop +#include "llvoavatar.h" +#include "llvoavatarself.h" +#include "llviewerregion.h" #include "llevent.h" // LLSimpleListener #include "llnotificationsutil.h" #include "lluuid.h" #include "llkeyboard.h" #include "llmutelist.h" +//#include "llfirstuse.h" +#include "llwindow.h" #include <boost/bind.hpp> // for SkinFolder listener #include <boost/signals2.hpp> /*static*/ const char* LLViewerMedia::AUTO_PLAY_MEDIA_SETTING = "ParcelMediaAutoPlayEnable"; +/*static*/ const char* LLViewerMedia::SHOW_MEDIA_ON_OTHERS_SETTING = "MediaShowOnOthers"; +/*static*/ const char* LLViewerMedia::SHOW_MEDIA_WITHIN_PARCEL_SETTING = "MediaShowWithinParcel"; +/*static*/ const char* LLViewerMedia::SHOW_MEDIA_OUTSIDE_PARCEL_SETTING = "MediaShowOutsideParcel"; + // Move this to its own file. @@ -168,12 +179,19 @@ public: // 499 is the error code for host not found, timeout, etc. // 500 means "Internal Server error" but we decided it's okay to // accept this and go past it in the MIME type probe - if( ((status >= 200) && (status < 300)) || - ((status >= 400) && (status < 499)) || - (status == 500) ) + // 302 means the resource can be found temporarily in a different place - added this for join.secondlife.com + // 499 is a code specifc to join.secondlife.com (????) apparently safe to ignore +// if( ((status >= 200) && (status < 300)) || +// ((status >= 400) && (status < 499)) || +// (status == 500) || +// (status == 302) || +// (status == 499) +// ) + // We now no longer check the error code returned from the probe. + // If we have a mime type, use it. If not, default to the web plugin and let it handle error reporting. + if(1) { // The probe was successful. - if(mime_type.empty()) { // Some sites don't return any content-type header at all. @@ -243,6 +261,8 @@ static LLTimer sMediaCreateTimer; static const F32 LLVIEWERMEDIA_CREATE_DELAY = 1.0f; static F32 sGlobalVolume = 1.0f; static F64 sLowestLoadableImplInterest = 0.0f; +static bool sAnyMediaShowing = false; +static boost::signals2::connection sTeleportFinishConnection; ////////////////////////////////////////////////////////////////////////////////////////// static void add_media_impl(LLViewerMediaImpl* media) @@ -355,8 +375,7 @@ viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const s // The current media URL is not empty. // If (the media was already loaded OR the media was set to autoplay) AND this update didn't come from this agent, // do a navigate. - bool auto_play = (media_impl->mMediaAutoPlay && gSavedSettings.getBOOL(AUTO_PLAY_MEDIA_SETTING)); - + bool auto_play = media_impl->isAutoPlayable(); if((was_loaded || auto_play) && !update_from_self) { needs_navigate = url_changed; @@ -380,7 +399,7 @@ viewer_media_t LLViewerMedia::updateMediaImpl(LLMediaEntry* media_entry, const s media_impl->mMediaAutoPlay = media_entry->getAutoPlay(); media_impl->mMediaEntryURL = media_entry->getCurrentURL(); - if(media_impl->mMediaAutoPlay && gSavedSettings.getBOOL(AUTO_PLAY_MEDIA_SETTING)) + if(media_impl->isAutoPlayable()) { needs_navigate = true; } @@ -677,6 +696,7 @@ static bool proximity_comparitor(const LLViewerMediaImpl* i1, const LLViewerMedi // static void LLViewerMedia::updateMedia(void *dummy_arg) { + sAnyMediaShowing = false; impl_list::iterator iter = sViewerMediaImplList.begin(); impl_list::iterator end = sViewerMediaImplList.end(); @@ -701,6 +721,8 @@ void LLViewerMedia::updateMedia(void *dummy_arg) std::vector<LLViewerMediaImpl*> proximity_order; + bool inworld_media_enabled = gSavedSettings.getBOOL("AudioStreamingMedia"); + bool inworld_audio_enabled = gSavedSettings.getBOOL("AudioStreamingMusic"); U32 max_instances = gSavedSettings.getU32("PluginInstancesTotal"); U32 max_normal = gSavedSettings.getU32("PluginInstancesNormal"); U32 max_low = gSavedSettings.getU32("PluginInstancesLow"); @@ -740,6 +762,11 @@ void LLViewerMedia::updateMedia(void *dummy_arg) new_priority = LLPluginClassMedia::PRIORITY_NORMAL; impl_count_interest_normal++; } + else if(pimpl->isParcelMedia()) + { + new_priority = LLPluginClassMedia::PRIORITY_NORMAL; + impl_count_interest_normal++; + } else { // Look at interest and CPU usage for instances that aren't in any of the above states. @@ -801,7 +828,7 @@ void LLViewerMedia::updateMedia(void *dummy_arg) impl_count_total++; } - + // Overrides if the window is minimized or we lost focus (taking care // not to accidentally "raise" the priority either) if (!gViewerWindow->getActive() /* viewer window minimized? */ @@ -815,6 +842,22 @@ void LLViewerMedia::updateMedia(void *dummy_arg) new_priority = LLPluginClassMedia::PRIORITY_LOW; } + if(!inworld_media_enabled) + { + // If inworld media is locked out, force all inworld media to stay unloaded. + if(!pimpl->getUsedInUI()) + { + new_priority = LLPluginClassMedia::PRIORITY_UNLOADED; + } + } + // update the audio stream here as well + if( !inworld_audio_enabled) + { + if(LLViewerMedia::isParcelAudioPlaying() && gAudiop && LLViewerMedia::hasParcelAudio()) + { + gAudiop->stopInternetStream(); + } + } pimpl->setPriority(new_priority); if(pimpl->getUsedInUI()) @@ -828,6 +871,12 @@ void LLViewerMedia::updateMedia(void *dummy_arg) } total_cpu += pimpl->getCPUUsage(); + + if (!pimpl->getUsedInUI() && pimpl->hasMedia()) + { + sAnyMediaShowing = true; + } + } // Re-calculate this every time. @@ -869,9 +918,115 @@ void LLViewerMedia::updateMedia(void *dummy_arg) ////////////////////////////////////////////////////////////////////////////////////////// // static +bool LLViewerMedia::isAnyMediaShowing() +{ + return sAnyMediaShowing; +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static +void LLViewerMedia::setAllMediaEnabled(bool val) +{ + // Set "tentative" autoplay first. We need to do this here or else + // re-enabling won't start up the media below. + gSavedSettings.setBOOL("MediaTentativeAutoPlay", val); + + // Then + impl_list::iterator iter = sViewerMediaImplList.begin(); + impl_list::iterator end = sViewerMediaImplList.end(); + + for(; iter != end; iter++) + { + LLViewerMediaImpl* pimpl = *iter; + if (!pimpl->getUsedInUI()) + { + pimpl->setDisabled(!val); + } + } + + // Also do Parcel Media and Parcel Audio + if (val) + { + if (!LLViewerMedia::isParcelMediaPlaying() && LLViewerMedia::hasParcelMedia()) + { + LLViewerParcelMedia::play(LLViewerParcelMgr::getInstance()->getAgentParcel()); + } + + if (gSavedSettings.getBOOL("AudioStreamingMusic") && + !LLViewerMedia::isParcelAudioPlaying() && + gAudiop && + LLViewerMedia::hasParcelAudio()) + { + gAudiop->startInternetStream(LLViewerMedia::getParcelAudioURL()); + } + } + else { + // This actually unloads the impl, as opposed to "stop"ping the media + LLViewerParcelMedia::stop(); + if (gAudiop) gAudiop->stopInternetStream(); + } +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static +bool LLViewerMedia::isParcelMediaPlaying() +{ + return (LLViewerMedia::hasParcelMedia() && LLViewerParcelMedia::getParcelMedia() && LLViewerParcelMedia::getParcelMedia()->hasMedia()); +} + +///////////////////////////////////////////////////////////////////////////////////////// +// static +bool LLViewerMedia::isParcelAudioPlaying() +{ + return (LLViewerMedia::hasParcelAudio() && gAudiop && LLAudioEngine::AUDIO_PLAYING == gAudiop->isInternetStreamPlaying()); +} + +bool LLViewerMedia::hasInWorldMedia() +{ + if (sInWorldMediaDisabled) return false; + impl_list::iterator iter = sViewerMediaImplList.begin(); + impl_list::iterator end = sViewerMediaImplList.end(); + // This should be quick, because there should be very few non-in-world-media impls + for (; iter != end; iter++) + { + LLViewerMediaImpl* pimpl = *iter; + if (!pimpl->getUsedInUI() && !pimpl->isParcelMedia()) + { + // Found an in-world media impl + return true; + } + } + return false; +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static +bool LLViewerMedia::hasParcelMedia() +{ + return !LLViewerParcelMedia::getURL().empty(); +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static +bool LLViewerMedia::hasParcelAudio() +{ + return !LLViewerMedia::getParcelAudioURL().empty(); +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static +std::string LLViewerMedia::getParcelAudioURL() +{ + return LLViewerParcelMgr::getInstance()->getAgentParcel()->getMusicURL(); +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static void LLViewerMedia::initClass() { - gIdleCallbacks.addFunction(LLViewerMedia::updateMedia, NULL); + gIdleCallbacks.addFunction(LLViewerMedia::updateMedia, NULL); + sTeleportFinishConnection = LLViewerParcelMgr::getInstance()-> + setTeleportFinishedCallback(boost::bind(&LLViewerMedia::onTeleportFinished)); } ////////////////////////////////////////////////////////////////////////////////////////// @@ -879,6 +1034,15 @@ void LLViewerMedia::initClass() void LLViewerMedia::cleanupClass() { gIdleCallbacks.deleteFunction(LLViewerMedia::updateMedia, NULL); + sTeleportFinishConnection.disconnect(); +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static +void LLViewerMedia::onTeleportFinished() +{ + // On teleport, clear this setting (i.e. set it to true) + gSavedSettings.setBOOL("MediaTentativeAutoPlay", true); } ////////////////////////////////////////////////////////////////////////////////////////// @@ -923,6 +1087,9 @@ LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id, mMediaAutoPlay(false), mInNearbyMediaList(false), mClearCache(false), + mBackgroundColor(LLColor4::white), + mNavigateSuspended(false), + mNavigateSuspendedDeferred(false), mIsUpdated(false) { @@ -983,7 +1150,7 @@ void LLViewerMediaImpl::emitEvent(LLPluginClassMedia* plugin, LLViewerMediaObser bool LLViewerMediaImpl::initializeMedia(const std::string& mime_type) { bool mimeTypeChanged = (mMimeType != mime_type); - bool pluginChanged = (LLMIMETypes::implType(mMimeType) != LLMIMETypes::implType(mime_type)); + bool pluginChanged = (LLMIMETypes::implType(mCurrentMimeType) != LLMIMETypes::implType(mime_type)); if(!mMediaSource || pluginChanged) { @@ -1123,6 +1290,9 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) // If we got here, we want to ignore previous init failures. mMediaSourceFailed = false; + // Save the MIME type that really caused the plugin to load + mCurrentMimeType = mMimeType; + LLPluginClassMedia* media_source = newSourceFromMediaType(mMimeType, this, mMediaWidth, mMediaHeight); if (media_source) @@ -1132,6 +1302,7 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) media_source->setAutoScale(mMediaAutoScale); media_source->setBrowserUserAgent(LLViewerMedia::getCurrentUserAgent()); media_source->focus(mHasFocus); + media_source->setBackgroundColor(mBackgroundColor); if(mClearCache) { @@ -1157,7 +1328,27 @@ void LLViewerMediaImpl::loadURI() { if(mMediaSource) { - mMediaSource->loadURI( mMediaURL ); + // trim whitespace from front and back of URL - fixes EXT-5363 + LLStringUtil::trim( mMediaURL ); + + // *HACK: we don't know if the URI coming in is properly escaped + // (the contract doesn't specify whether it is escaped or not. + // but LLQtWebKit expects it to be, so we do our best to encode + // special characters) + // The strings below were taken right from http://www.ietf.org/rfc/rfc1738.txt + // Note especially that '%' and '/' are there. + std::string uri = LLURI::escape(mMediaURL, + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + "0123456789" + "$-_.+" + "!*'()," + "{}|\\^~[]`" + "<>#%" + ";/?:@&=", + false); + llinfos << "Asking media source to load URI: " << uri << llendl; + + mMediaSource->loadURI( uri ); if(mPreviousMediaState == MEDIA_PLAYING) { @@ -1559,6 +1750,7 @@ void LLViewerMediaImpl::unload() mMediaURL.clear(); mMimeType.clear(); mCurrentMediaURL.clear(); + mCurrentMimeType.clear(); } ////////////////////////////////////////////////////////////////////////////////////////// @@ -1608,6 +1800,13 @@ void LLViewerMediaImpl::navigateInternal() // Helpful to have media urls in log file. Shouldn't be spammy. llinfos << "media id= " << mTextureId << " url=" << mMediaURL << " mime_type=" << mMimeType << llendl; + if(mNavigateSuspended) + { + llwarns << "Deferring navigate." << llendl; + mNavigateSuspendedDeferred = true; + return; + } + if(mMimeTypeProbe != NULL) { llwarns << "MIME type probe already in progress -- bailing out." << llendl; @@ -1694,11 +1893,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) { @@ -1727,9 +1921,12 @@ bool LLViewerMediaImpl::handleKeyHere(KEY key, MASK mask) if(!result) { - result = mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_DOWN ,key, mask); + + LLSD native_key_data = gViewerWindow->getWindow()->getNativeKeyData(); + + result = mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_DOWN ,key, mask, native_key_data); // Since the viewer internal event dispatching doesn't give us key-up events, simulate one here. - (void)mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_UP ,key, mask); + (void)mMediaSource->keyEvent(LLPluginClassMedia::KEY_EVENT_UP ,key, mask, native_key_data); } } @@ -1747,7 +1944,9 @@ bool LLViewerMediaImpl::handleUnicodeCharHere(llwchar uni_char) if (uni_char >= 32 // discard 'control' characters && uni_char != 127) // SDL thinks this is 'delete' - yuck. { - mMediaSource->textInput(wstring_to_utf8str(LLWString(1, uni_char)), gKeyboard->currentMask(FALSE)); + LLSD native_key_data = gViewerWindow->getWindow()->getNativeKeyData(); + + mMediaSource->textInput(wstring_to_utf8str(LLWString(1, uni_char)), gKeyboard->currentMask(FALSE), native_key_data); } } @@ -1814,7 +2013,17 @@ void LLViewerMediaImpl::update() return; } + // Make sure a navigate doesn't happen during the idle -- it can cause mMediaSource to get destroyed, which can cause a crash. + setNavigateSuspended(true); + mMediaSource->idle(); + + setNavigateSuspended(false); + + if(mMediaSource == NULL) + { + return; + } if(mMediaSource->isPluginExited()) { @@ -1897,8 +2106,8 @@ LLViewerMediaTexture* LLViewerMediaImpl::updatePlaceholderImage() || placeholder_image->getUseMipMaps() || (placeholder_image->getWidth() != mMediaSource->getTextureWidth()) || (placeholder_image->getHeight() != mMediaSource->getTextureHeight()) - || (mTextureUsedWidth > mMediaSource->getWidth()) - || (mTextureUsedHeight > mMediaSource->getHeight()) + || (mTextureUsedWidth != mMediaSource->getWidth()) + || (mTextureUsedHeight != mMediaSource->getHeight()) ) { LL_DEBUGS("Media") << "initializing media placeholder" << LL_ENDL; @@ -1916,7 +2125,9 @@ LLViewerMediaTexture* LLViewerMediaImpl::updatePlaceholderImage() // MEDIAOPT: seems insane that we actually have to make an imageraw then // immediately discard it LLPointer<LLImageRaw> raw = new LLImageRaw(texture_width, texture_height, texture_depth); - raw->clear(0x00, 0x00, 0x00, 0xff); + // Clear the texture to the background color, ignoring alpha. + // convert background color channels from [0.0, 1.0] to [0, 255]; + raw->clear(int(mBackgroundColor.mV[VX] * 255.0f), int(mBackgroundColor.mV[VY] * 255.0f), int(mBackgroundColor.mV[VZ] * 255.0f), 0xff); int discard_level = 0; // ask media source for correct GL image format constants @@ -1987,6 +2198,21 @@ void LLViewerMediaImpl::scaleMouse(S32 *mouse_x, S32 *mouse_y) #endif } + + +////////////////////////////////////////////////////////////////////////////////////////// +bool LLViewerMediaImpl::isMediaTimeBased() +{ + bool result = false; + + if(mMediaSource) + { + result = mMediaSource->pluginSupportsMediaTime(); + } + + return result; +} + ////////////////////////////////////////////////////////////////////////////////////////// bool LLViewerMediaImpl::isMediaPlaying() { @@ -2033,7 +2259,7 @@ void LLViewerMediaImpl::resetPreviousMediaState() ////////////////////////////////////////////////////////////////////////////////////////// // -void LLViewerMediaImpl::setDisabled(bool disabled) +void LLViewerMediaImpl::setDisabled(bool disabled, bool forcePlayOnEnable) { if(mIsDisabled != disabled) { @@ -2048,7 +2274,7 @@ void LLViewerMediaImpl::setDisabled(bool disabled) else { // We just (re)enabled this media. Do a navigate if auto-play is in order. - if(mMediaAutoPlay && gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING)) + if(isAutoPlayable() || forcePlayOnEnable) { navigateTo(mMediaEntryURL, "", true, true); } @@ -2075,6 +2301,12 @@ bool LLViewerMediaImpl::isForcedUnloaded() const } } + // If this media's class is not supposed to be shown, unload + if (!shouldShowBasedOnClass()) + { + return true; + } + return false; } @@ -2119,7 +2351,7 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla // TODO: may want a different message for this case? LLSD args; - args["PLUGIN"] = LLMIMETypes::implType(mMimeType); + args["PLUGIN"] = LLMIMETypes::implType(mCurrentMimeType); LLNotificationsUtil::add("MediaPluginFailed", args); } break; @@ -2133,7 +2365,7 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla resetPreviousMediaState(); LLSD args; - args["PLUGIN"] = LLMIMETypes::implType(mMimeType); + args["PLUGIN"] = LLMIMETypes::implType(mCurrentMimeType); // SJB: This is getting called every frame if the plugin fails to load, continuously respawining the alert! //LLNotificationsUtil::add("MediaPluginFailed", args); } @@ -2329,16 +2561,25 @@ void LLViewerMediaImpl::calculateInterest() for(; iter != mObjectList.end() ; ++iter) { LLVOVolume *obj = *iter; - if(LLMuteList::getInstance()->isMuted(obj->getID())) + llassert(obj); + if (!obj) continue; + if(LLMuteList::getInstance() && + LLMuteList::getInstance()->isMuted(obj->getID())) + { mIsMuted = true; + } else { // We won't have full permissions data for all objects. Attempt to mute objects when we can tell their owners are muted. - LLPermissions* obj_perm = LLSelectMgr::getInstance()->findObjectPermissions(obj); - if(obj_perm) + if (LLSelectMgr::getInstance()) { - if(LLMuteList::getInstance()->isMuted(obj_perm->getOwner())) - mIsMuted = true; + LLPermissions* obj_perm = LLSelectMgr::getInstance()->findObjectPermissions(obj); + if(obj_perm) + { + if(LLMuteList::getInstance() && + LLMuteList::getInstance()->isMuted(obj_perm->getOwner())) + mIsMuted = true; + } } } } @@ -2387,6 +2628,16 @@ void LLViewerMediaImpl::setUsedInUI(bool used_in_ui) } }; +void LLViewerMediaImpl::setBackgroundColor(LLColor4 color) +{ + mBackgroundColor = color; + + if(mMediaSource) + { + mMediaSource->setBackgroundColor(mBackgroundColor); + } +}; + F64 LLViewerMediaImpl::getCPUUsage() const { F64 result = 0.0f; @@ -2459,6 +2710,23 @@ void LLViewerMediaImpl::setNavState(EMediaNavState state) } } +void LLViewerMediaImpl::setNavigateSuspended(bool suspend) +{ + if(mNavigateSuspended != suspend) + { + mNavigateSuspended = suspend; + if(!suspend) + { + // We're coming out of suspend. If someone tried to do a navigate while suspended, do one now instead. + if(mNavigateSuspendedDeferred) + { + mNavigateSuspendedDeferred = false; + navigateInternal(); + } + } + } +} + void LLViewerMediaImpl::cancelMimeTypeProbe() { if(mMimeTypeProbe != NULL) @@ -2533,76 +2801,112 @@ void LLViewerMediaImpl::setTextureID(LLUUID id) } } +////////////////////////////////////////////////////////////////////////////////////////// +// +bool LLViewerMediaImpl::isAutoPlayable() const +{ + return (mMediaAutoPlay && + gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING) && + gSavedSettings.getBOOL("MediaTentativeAutoPlay")); +} ////////////////////////////////////////////////////////////////////////////////////////// -//static -void LLViewerMedia::toggleMusicPlay(void*) +// +bool LLViewerMediaImpl::shouldShowBasedOnClass() const { -// FIXME: This probably doesn't belong here -#if 0 - if (mMusicState != PLAYING) - { - mMusicState = PLAYING; // desired state - if (gAudiop) - { - LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); - if ( parcel ) - { - gAudiop->startInternetStream(parcel->getMusicURL()); - } - } - } - else + // If this is parcel media or in the UI, return true always + if (getUsedInUI() || isParcelMedia()) return true; + + bool attached_to_another_avatar = isAttachedToAnotherAvatar(); + bool inside_parcel = isInAgentParcel(); + + // llinfos << " hasFocus = " << hasFocus() << + // " others = " << (attached_to_another_avatar && gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_ON_OTHERS_SETTING)) << + // " within = " << (inside_parcel && gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_WITHIN_PARCEL_SETTING)) << + // " outside = " << (!inside_parcel && gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_OUTSIDE_PARCEL_SETTING)) << llendl; + + // If it has focus, we should show it + if (hasFocus()) + return true; + + // If it is attached to an avatar and the pref is off, we shouldn't show it + if (attached_to_another_avatar) + return gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_ON_OTHERS_SETTING); + + if (inside_parcel) + return gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_WITHIN_PARCEL_SETTING); + else + return gSavedSettings.getBOOL(LLViewerMedia::SHOW_MEDIA_OUTSIDE_PARCEL_SETTING); +} + +////////////////////////////////////////////////////////////////////////////////////////// +// +bool LLViewerMediaImpl::isAttachedToAnotherAvatar() const +{ + bool result = false; + + std::list< LLVOVolume* >::const_iterator iter = mObjectList.begin(); + std::list< LLVOVolume* >::const_iterator end = mObjectList.end(); + for ( ; iter != end; iter++) { - mMusicState = STOPPED; // desired state - if (gAudiop) + if (isObjectAttachedToAnotherAvatar(*iter)) { - gAudiop->stopInternetStream(); + result = true; + break; } } -#endif + return result; } ////////////////////////////////////////////////////////////////////////////////////////// +// //static -void LLViewerMedia::toggleMediaPlay(void*) +bool LLViewerMediaImpl::isObjectAttachedToAnotherAvatar(LLVOVolume *obj) { -// FIXME: This probably doesn't belong here -#if 0 - if (LLViewerMedia::isMediaPaused()) - { - LLViewerParcelMedia::start(); - } - else if(LLViewerMedia::isMediaPlaying()) - { - LLViewerParcelMedia::pause(); - } - else + bool result = false; + LLXform *xform = obj; + // Walk up parent chain + while (NULL != xform) { - LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); - if (parcel) + LLViewerObject *object = dynamic_cast<LLViewerObject*> (xform); + if (NULL != object) { - LLViewerParcelMedia::play(parcel); + LLVOAvatar *avatar = object->asAvatar(); + if (NULL != avatar && avatar != gAgent.getAvatarObject()) + { + result = true; + break; + } } + xform = xform->getParent(); } -#endif + return result; } ////////////////////////////////////////////////////////////////////////////////////////// -//static -void LLViewerMedia::mediaStop(void*) +// +bool LLViewerMediaImpl::isInAgentParcel() const { -// FIXME: This probably doesn't belong here -#if 0 - LLViewerParcelMedia::stop(); -#endif + bool result = false; + + std::list< LLVOVolume* >::const_iterator iter = mObjectList.begin(); + std::list< LLVOVolume* >::const_iterator end = mObjectList.end(); + for ( ; iter != end; iter++) + { + LLVOVolume *object = *iter; + if (LLViewerMediaImpl::isObjectInAgentParcel(object)) + { + result = true; + break; + } + } + return result; } ////////////////////////////////////////////////////////////////////////////////////////// -//static -bool LLViewerMedia::isMusicPlaying() -{ -// FIXME: This probably doesn't belong here -// FIXME: make this work - return false; +// +// static +bool LLViewerMediaImpl::isObjectInAgentParcel(LLVOVolume *obj) +{ + return (LLViewerParcelMgr::getInstance()->inAgentParcel(obj->getPositionGlobal())); } diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 28fb379960..9dbffa78b3 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -42,12 +42,13 @@ #include "llviewermediaobserver.h" #include "llpluginclassmedia.h" +#include "v4color.h" class LLViewerMediaImpl; class LLUUID; class LLViewerMediaTexture; class LLMediaEntry; -class LLVOVolume ; +class LLVOVolume; class LLMimeDiscoveryResponder; typedef LLPointer<LLViewerMediaImpl> viewer_media_t; @@ -72,53 +73,68 @@ class LLViewerMediaImpl; class LLViewerMedia { LOG_CLASS(LLViewerMedia); - public: - - // String to get/set media autoplay in gSavedSettings - static const char *AUTO_PLAY_MEDIA_SETTING; - - typedef std::vector<LLViewerMediaImpl*> impl_list; - - typedef std::map<LLUUID, LLViewerMediaImpl*> impl_id_map; - - // Special case early init for just web browser component - // so we can show login screen. See .cpp file for details. JC - - static viewer_media_t newMediaImpl(const LLUUID& texture_id, - S32 media_width = 0, - S32 media_height = 0, - U8 media_auto_scale = false, - U8 media_loop = false); - - static viewer_media_t updateMediaImpl(LLMediaEntry* media_entry, const std::string& previous_url, bool update_from_self); - static LLViewerMediaImpl* getMediaImplFromTextureID(const LLUUID& texture_id); - static std::string getCurrentUserAgent(); - static void updateBrowserUserAgent(); - static bool handleSkinCurrentChanged(const LLSD& /*newvalue*/); - static bool textureHasMedia(const LLUUID& texture_id); - static void setVolume(F32 volume); - - static void updateMedia(void* dummy_arg = NULL); - static bool isMusicPlaying(); - - static void initClass(); - static void cleanupClass(); - - static void toggleMusicPlay(void*); - static void toggleMediaPlay(void*); - static void mediaStop(void*); - static F32 getVolume(); - static void muteListChanged(); - static void setInWorldMediaDisabled(bool disabled); - static bool getInWorldMediaDisabled(); - - static bool isInterestingEnough(const LLVOVolume* object, const F64 &object_interest); - - // Returns the priority-sorted list of all media impls. - static impl_list &getPriorityList(); - - // This is the comparitor used to sort the list. - static bool priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2); +public: + + // String to get/set media autoplay in gSavedSettings + static const char* AUTO_PLAY_MEDIA_SETTING; + static const char* SHOW_MEDIA_ON_OTHERS_SETTING; + static const char* SHOW_MEDIA_WITHIN_PARCEL_SETTING; + static const char* SHOW_MEDIA_OUTSIDE_PARCEL_SETTING; + + typedef std::vector<LLViewerMediaImpl*> impl_list; + + typedef std::map<LLUUID, LLViewerMediaImpl*> impl_id_map; + + // Special case early init for just web browser component + // so we can show login screen. See .cpp file for details. JC + + static viewer_media_t newMediaImpl(const LLUUID& texture_id, + S32 media_width = 0, + S32 media_height = 0, + U8 media_auto_scale = false, + U8 media_loop = false); + + static viewer_media_t updateMediaImpl(LLMediaEntry* media_entry, const std::string& previous_url, bool update_from_self); + static LLViewerMediaImpl* getMediaImplFromTextureID(const LLUUID& texture_id); + static std::string getCurrentUserAgent(); + static void updateBrowserUserAgent(); + static bool handleSkinCurrentChanged(const LLSD& /*newvalue*/); + static bool textureHasMedia(const LLUUID& texture_id); + static void setVolume(F32 volume); + + // Is any media currently "showing"? Includes Parcel Media. Does not include media in the UI. + static bool isAnyMediaShowing(); + // Set all media enabled or disabled, depending on val. Does not include media in the UI. + static void setAllMediaEnabled(bool val); + + static void updateMedia(void* dummy_arg = NULL); + + static void initClass(); + static void cleanupClass(); + + static F32 getVolume(); + static void muteListChanged(); + static void setInWorldMediaDisabled(bool disabled); + static bool getInWorldMediaDisabled(); + + static bool isInterestingEnough(const LLVOVolume* object, const F64 &object_interest); + + // Returns the priority-sorted list of all media impls. + static impl_list &getPriorityList(); + + // This is the comparitor used to sort the list. + static bool priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2); + + // These are just helper functions for the convenience of others working with media + static bool hasInWorldMedia(); + static std::string getParcelAudioURL(); + static bool hasParcelMedia(); + static bool hasParcelAudio(); + static bool isParcelMediaPlaying(); + static bool isParcelAudioPlaying(); + +private: + static void onTeleportFinished(); }; // Implementation functions not exported into header file @@ -127,7 +143,10 @@ class LLViewerMediaImpl { LOG_CLASS(LLViewerMediaImpl); public: - + + friend class LLViewerMedia; + friend class LLMimeDiscoveryResponder; + LLViewerMediaImpl( const LLUUID& texture_id, S32 media_width, @@ -187,6 +206,7 @@ public: std::string getMediaURL() const { return mMediaURL; } std::string getCurrentMediaURL(); std::string getHomeURL() { return mHomeURL; } + std::string getMediaEntryURL() { return mMediaEntryURL; } void setHomeURL(const std::string& home_url) { mHomeURL = home_url; }; void clearCache(); std::string getMimeType() { return mMimeType; } @@ -197,29 +217,35 @@ public: void updateImagesMediaStreams(); LLUUID getMediaTextureID() const; - void suspendUpdates(bool suspend) { mSuspendUpdates = suspend; }; + void suspendUpdates(bool suspend) { mSuspendUpdates = suspend; } void setVisible(bool visible); - bool getVisible() const { return mVisible; }; + bool getVisible() const { return mVisible; } + bool isVisible() const { return mVisible; } + bool isMediaTimeBased(); bool isMediaPlaying(); bool isMediaPaused(); bool hasMedia() const; - bool isMediaFailed() const { return mMediaSourceFailed; }; + bool isMediaFailed() const { return mMediaSourceFailed; } + void setMediaFailed(bool val) { mMediaSourceFailed = val; } void resetPreviousMediaState(); - void setDisabled(bool disabled); + void setDisabled(bool disabled, bool forcePlayOnEnable = false); bool isMediaDisabled() const { return mIsDisabled; }; - + + void setInNearbyMediaList(bool in_list) { mInNearbyMediaList = in_list; } + bool getInNearbyMediaList() { return mInNearbyMediaList; } + // returns true if this instance should not be loaded (disabled, muted object, crashed, etc.) bool isForcedUnloaded() const; // returns true if this instance could be playable based on autoplay setting, current load state, etc. bool isPlayable() const; - void setIsParcelMedia(bool is_parcel_media) { mIsParcelMedia = is_parcel_media; }; - bool isParcelMedia() const { return mIsParcelMedia; }; + void setIsParcelMedia(bool is_parcel_media) { mIsParcelMedia = is_parcel_media; } + bool isParcelMedia() const { return mIsParcelMedia; } - ECursorType getLastSetCursor() { return mLastSetCursor; }; + ECursorType getLastSetCursor() { return mLastSetCursor; } // utility function to create a ready-to-use media instance from a desired media type. static LLPluginClassMedia* newSourceFromMediaType(std::string media_type, LLPluginClassMediaOwner *owner /* may be NULL */, S32 default_width, S32 default_height); @@ -285,6 +311,8 @@ public: // This will be used as part of the interest sorting algorithm. void setUsedInUI(bool used_in_ui); bool getUsedInUI() const { return mUsedInUI; }; + + void setBackgroundColor(LLColor4 color); F64 getCPUUsage() const; @@ -313,8 +341,24 @@ public: EMediaNavState getNavState() { return mMediaNavState; } void setNavState(EMediaNavState state); + void setNavigateSuspended(bool suspend); + bool isNavigateSuspended() { return mNavigateSuspended; }; + void cancelMimeTypeProbe(); -public: + + // Is this media attached to an avatar *not* self + bool isAttachedToAnotherAvatar() const; + + // Is this media in the agent's parcel? + bool isInAgentParcel() const; + +private: + bool isAutoPlayable() const; + bool shouldShowBasedOnClass() const; + static bool isObjectAttachedToAnotherAvatar(LLVOVolume *obj); + static bool isObjectInAgentParcel(LLVOVolume *obj); + +private: // a single media url with some data and an impl. LLPluginClassMedia* mMediaSource; LLUUID mTextureId; @@ -323,6 +367,7 @@ public: std::string mHomeURL; std::string mMimeType; std::string mCurrentMediaURL; // The most current media url from the plugin (via the "location changed" or "navigate complete" events). + std::string mCurrentMimeType; // The MIME type that caused the currently loaded plugin to be loaded. S32 mLastMouseX; // save the last mouse coord we get, so when we lose capture we can simulate a mouseup at that point. S32 mLastMouseY; S32 mMediaWidth; @@ -355,8 +400,11 @@ public: LLMimeDiscoveryResponder *mMimeTypeProbe; bool mMediaAutoPlay; std::string mMediaEntryURL; - bool mInNearbyMediaList; // used by LLFloaterNearbyMedia::refreshList() for performance reasons + bool mInNearbyMediaList; // used by LLPanelNearbyMedia::refreshList() for performance reasons bool mClearCache; + LLColor4 mBackgroundColor; + bool mNavigateSuspended; + bool mNavigateSuspendedDeferred; private: BOOL mIsUpdated ; diff --git a/indra/newview/llviewermedia_streamingaudio.cpp b/indra/newview/llviewermedia_streamingaudio.cpp index e9293ac5a4..67b051e536 100644 --- a/indra/newview/llviewermedia_streamingaudio.cpp +++ b/indra/newview/llviewermedia_streamingaudio.cpp @@ -62,7 +62,7 @@ void LLStreamingAudio_MediaPlugins::start(const std::string& url) if (!mMediaPlugin) // lazy-init the underlying media plugin { mMediaPlugin = initializeMedia("audio/mpeg"); // assumes that whatever media implementation supports mp3 also supports vorbis. - llinfos << "steaming audio mMediaPlugin is now " << mMediaPlugin << llendl; + llinfos << "streaming audio mMediaPlugin is now " << mMediaPlugin << llendl; } if(!mMediaPlugin) diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index a0ac9c2091..b8179f7fc2 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -126,7 +126,7 @@ void LLViewerMediaFocus::setFocusFace(LLPointer<LLViewerObject> objectp, S32 fac if(face_auto_zoom && ! parcel->getMediaPreventCameraZoom()) { // Zoom in on this face - mMediaControls.get()->resetZoomLevel(); + mMediaControls.get()->resetZoomLevel(false); mMediaControls.get()->nextZoomLevel(); } else @@ -157,7 +157,6 @@ void LLViewerMediaFocus::setFocusFace(LLPointer<LLViewerObject> objectp, S32 fac mFocusedObjectFace = 0; } } - } void LLViewerMediaFocus::clearFocus() @@ -198,7 +197,7 @@ bool LLViewerMediaFocus::getFocus() } // This function selects an ideal viewing distance based on the focused object, pick normal, and padding value -void LLViewerMediaFocus::setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor) +void LLViewerMediaFocus::setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor, bool zoom_in_only) { if (object) { @@ -269,7 +268,16 @@ void LLViewerMediaFocus::setCameraZoom(LLViewerObject* object, LLVector3 normal, camera_pos += 0.01 * len * delta; } + // If we are not allowing zooming out and the old camera position is closer to + // the center then the new intended camera position, don't move camera and return + if (zoom_in_only && + (dist_vec_squared(gAgent.getCameraPositionGlobal(), target_pos) < dist_vec_squared(camera_pos, target_pos))) + { + return; + } + gAgent.setCameraPosAndFocusGlobal(camera_pos, target_pos, object->getID() ); + } else { @@ -551,6 +559,19 @@ void LLViewerMediaFocus::focusZoomOnMedia(LLUUID media_id) } } +void LLViewerMediaFocus::unZoom() +{ + if(mMediaControls.get()) + { + mMediaControls.get()->resetZoomLevel(); + } +} + +bool LLViewerMediaFocus::isZoomed() const +{ + return (mMediaControls.get() && mMediaControls.get()->getZoomLevel() != LLPanelPrimMediaControls::ZOOM_NONE); +} + LLUUID LLViewerMediaFocus::getControlsMediaID() { if(getFocusedMediaImpl()) diff --git a/indra/newview/llviewermediafocus.h b/indra/newview/llviewermediafocus.h index 89ee0ae283..d9ddc7432b 100644 --- a/indra/newview/llviewermediafocus.h +++ b/indra/newview/llviewermediafocus.h @@ -66,7 +66,7 @@ public: void update(); - static void setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor); + static void setCameraZoom(LLViewerObject* object, LLVector3 normal, F32 padding_factor, bool zoom_in_only = false); static F32 getBBoxAspectRatio(const LLBBox& bbox, const LLVector3& normal, F32* height, F32* width, F32* depth); bool isFocusedOnFace(LLPointer<LLViewerObject> objectp, S32 face); @@ -85,6 +85,9 @@ public: // Try to focus/zoom on the specified media (if it's on an object in world). void focusZoomOnMedia(LLUUID media_id); + // Are we zoomed in? + bool isZoomed() const; + void unZoom(); // Return the ID of the media instance the controls are currently attached to (either focus or hover). LLUUID getControlsMediaID(); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 15855f154d..bc3b8ac9d6 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -44,17 +44,16 @@ #include "llagent.h" #include "llagentwearables.h" #include "llagentpilot.h" +#include "llbottomtray.h" #include "llcompilequeue.h" #include "llconsole.h" #include "lldebugview.h" #include "llfilepicker.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llfloaterbuy.h" #include "llfloaterbuycontents.h" #include "llfloaterbuycurrency.h" -#include "llfloaterchat.h" #include "llfloatercustomize.h" -#include "llfloaterchatterbox.h" #include "llfloatergodtools.h" #include "llfloaterinventory.h" #include "llfloaterland.h" @@ -62,6 +61,7 @@ #include "llfloaterreporter.h" #include "llfloatersearch.h" #include "llfloaterscriptdebug.h" +#include "llfloatersnapshot.h" #include "llfloatertools.h" #include "llfloaterworldmap.h" #include "llavataractions.h" @@ -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" @@ -436,17 +435,7 @@ void init_menus() gMenuBarView->setBackgroundColor( color ); gMenuHolder->addChild(gMenuBarView); - - // menu holder appears on top of menu bar so you can see the menu title - // flash when an item is triggered (the flash occurs in the holder) - gViewerWindow->getRootView()->addChild(gMenuHolder); - - // This removes tool tip view from main view and adds it - // to root view in front of menu holder. - // Otherwise tool tips for menu items would be overlapped by menu, since - // main view is behind of menu holder now. - gViewerWindow->getRootView()->addChild(gToolTipView); - + gViewerWindow->setMenuBackgroundColor(false, LLViewerLogin::getInstance()->isInProductionGrid()); @@ -615,6 +604,10 @@ class LLAdvancedToggleHUDInfo : public view_listener_t { gDisplayFOV = !(gDisplayFOV); } + else if ("badge" == info_type) + { + gDisplayBadge = !(gDisplayBadge); + } return true; } }; @@ -637,6 +630,10 @@ class LLAdvancedCheckHUDInfo : public view_listener_t { new_value = gDisplayFOV; } + else if ("badge" == info_type) + { + new_value = gDisplayBadge; + } return new_value; } }; @@ -2466,7 +2463,7 @@ class LLViewJoystickFlycam : public view_listener_t class LLViewCheckJoystickFlycam : public view_listener_t { bool handleEvent(const LLSD& userdata) - { + { bool new_value = LLViewerJoystick::getInstance()->getOverrideCamera(); return new_value; } @@ -2500,7 +2497,7 @@ class LLObjectBuild : public view_listener_t LLToolMgr::getInstance()->getCurrentToolset()->selectTool( LLToolCompCreate::getInstance() ); // Could be first use - LLFirstUse::useBuild(); + //LLFirstUse::useBuild(); return true; } }; @@ -2545,7 +2542,7 @@ void handle_object_edit() LLViewerJoystick::getInstance()->setNeedsReset(true); // Could be first use - LLFirstUse::useBuild(); + //LLFirstUse::useBuild(); return; } @@ -2559,7 +2556,7 @@ void handle_object_inspect() key["task"] = "task"; LLSideTray::getInstance()->showPanel("sidepanel_inventory", key); } - + /* // Old floater properties LLFloaterReg::showInstance("inspect", LLSD()); @@ -2596,7 +2593,7 @@ class LLLandBuild : public view_listener_t LLToolMgr::getInstance()->getCurrentToolset()->selectTool( LLToolCompCreate::getInstance() ); // Could be first use - LLFirstUse::useBuild(); + //LLFirstUse::useBuild(); return true; } }; @@ -2833,7 +2830,7 @@ bool handle_go_to() } // Could be first use - LLFirstUse::useGoTo(); + //LLFirstUse::useGoTo(); return true; } @@ -3374,14 +3371,49 @@ void handle_show_side_tray() root->addChild(side_tray); } -class LLShowPanelPeopleTab : public view_listener_t +// Toggle one of "People" panel tabs in side tray. +class LLTogglePanelPeopleTab : public view_listener_t { bool handleEvent(const LLSD& userdata) { - // Open tab of the "People" panel in side tray. + std::string panel_name = userdata.asString(); + LLSD param; - param["people_panel_tab_name"] = userdata.asString(); - LLSideTray::getInstance()->showPanel("panel_people", param); + param["people_panel_tab_name"] = panel_name; + + static LLPanel* friends_panel = NULL; + static LLPanel* groups_panel = NULL; + static LLPanel* nearby_panel = NULL; + + if (panel_name == "friends_panel") + { + return togglePeoplePanel(friends_panel, panel_name, param); + } + else if (panel_name == "groups_panel") + { + return togglePeoplePanel(groups_panel, panel_name, param); + } + else if (panel_name == "nearby_panel") + { + return togglePeoplePanel(nearby_panel, panel_name, param); + } + else + { + return false; + } + } + + static bool togglePeoplePanel(LLPanel* &panel, const std::string& panel_name, const LLSD& param) + { + if(!panel) + { + panel = LLSideTray::getInstance()->getPanel(panel_name); + if(!panel) + return false; + } + + LLSideTray::getInstance()->togglePanel(panel, "panel_people", param); + return true; } }; @@ -3523,9 +3555,15 @@ bool LLHaveCallingcard::operator()(LLInventoryCategory* cat, BOOL is_agent_mappable(const LLUUID& agent_id) { - return (LLAvatarActions::isFriend(agent_id) && - LLAvatarTracker::instance().getBuddyInfo(agent_id)->isOnline() && - LLAvatarTracker::instance().getBuddyInfo(agent_id)->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION) + const LLRelationship* buddy_info = NULL; + bool is_friend = LLAvatarActions::isFriend(agent_id); + + if (is_friend) + buddy_info = LLAvatarTracker::instance().getBuddyInfo(agent_id); + + return (buddy_info && + buddy_info->isOnline() && + buddy_info->isRightGrantedFrom(LLRelationship::GRANT_MAP_LOCATION) ); } @@ -3635,7 +3673,7 @@ void near_sit_down_point(BOOL success, void *) gAgent.setControlFlags(AGENT_CONTROL_SIT_ON_GROUND); // Might be first sit - LLFirstUse::useSit(); + //LLFirstUse::useSit(); } } @@ -3704,6 +3742,7 @@ void reset_view_final( BOOL proceed ) } gAgent.resetView(TRUE, TRUE); + gAgent.setLookAt(LOOKAT_TARGET_CLEAR); } class LLViewLookAtLastChatter : public view_listener_t @@ -4383,35 +4422,22 @@ bool visible_take_object() return !is_selection_buy_not_take() && enable_take(); } +bool tools_visible_buy_object() +{ + return is_selection_buy_not_take(); +} + +bool tools_visible_take_object() +{ + return !is_selection_buy_not_take(); +} + class LLToolsEnableBuyOrTake : public view_listener_t { bool handleEvent(const LLSD& userdata) { bool is_buy = is_selection_buy_not_take(); bool new_value = is_buy ? enable_buy_object() : enable_take(); - - // Update label - std::string label; - std::string buy_text; - std::string take_text; - std::string param = userdata.asString(); - std::string::size_type offset = param.find(","); - if (offset != param.npos) - { - buy_text = param.substr(0, offset); - take_text = param.substr(offset+1); - } - if (is_buy) - { - label = buy_text; - } - else - { - label = take_text; - } - gMenuHolder->childSetText("Pie Object Take", label); - gMenuHolder->childSetText("Menu Object Take", label); - return new_value; } }; @@ -4810,9 +4836,10 @@ class LLToolsEnableUnlink : public view_listener_t { bool handleEvent(const LLSD& userdata) { + LLViewerObject* first_editable_object = LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject(); bool new_value = LLSelectMgr::getInstance()->selectGetAllRootsValid() && - LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject() && - !LLSelectMgr::getInstance()->getSelection()->getFirstEditableObject()->isAttachment(); + first_editable_object && + !first_editable_object->isAttachment(); return new_value; } }; @@ -5152,7 +5179,7 @@ void toggle_debug_menus(void*) gSavedSettings.setBOOL("UseDebugMenus", visible); if(visible) { - LLFirstUse::useDebugMenus(); + //LLFirstUse::useDebugMenus(); } show_debug_menus(); } @@ -5300,7 +5327,7 @@ class LLWorldCreateLandmark : public view_listener_t void handle_look_at_selection(const LLSD& param) { - const F32 PADDING_FACTOR = 2.f; + const F32 PADDING_FACTOR = 1.75f; BOOL zoom = (param.asString() == "zoom"); if (!LLSelectMgr::getInstance()->getSelection()->isEmpty()) { @@ -5320,14 +5347,19 @@ void handle_look_at_selection(const LLSD& param) } if (zoom) { + // Make sure we are not increasing the distance between the camera and object + LLVector3d orig_distance = gAgent.getCameraPositionGlobal() - LLSelectMgr::getInstance()->getSelectionCenterGlobal(); + distance = llmin(distance, (F32) orig_distance.length()); + gAgent.setCameraPosAndFocusGlobal(LLSelectMgr::getInstance()->getSelectionCenterGlobal() + LLVector3d(obj_to_cam * distance), - LLSelectMgr::getInstance()->getSelectionCenterGlobal(), - object_id ); + LLSelectMgr::getInstance()->getSelectionCenterGlobal(), + object_id ); + } else { gAgent.setFocusGlobal( LLSelectMgr::getInstance()->getSelectionCenterGlobal(), object_id ); - } + } } } @@ -5469,6 +5501,37 @@ bool enable_pay_object() return false; } +bool visible_object_stand_up() +{ + // 'Object Stand Up' menu item is visible when agent is sitting on selection + return sitting_on_selection(); +} + +bool visible_object_sit() +{ + // 'Object Sit' menu item is visible when agent is not sitting on selection + bool is_sit_visible = !sitting_on_selection(); + if (is_sit_visible) + { + LLMenuItemGL* sit_menu_item = gMenuHolder->getChild<LLMenuItemGL>("Object Sit"); + // Init default 'Object Sit' menu item label + static const LLStringExplicit sit_text(sit_menu_item->getLabel()); + // Update label + std::string label; + LLSelectNode* node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode(); + if (node && node->mValid && !node->mSitName.empty()) + { + label.assign(node->mSitName); + } + else + { + label = sit_text; + } + sit_menu_item->setLabel(label); + } + return is_sit_visible; +} + class LLObjectEnableSitOrStand : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -5483,34 +5546,6 @@ class LLObjectEnableSitOrStand : public view_listener_t new_value = true; } } - // Update label - std::string label; - std::string sit_text; - std::string stand_text; - std::string param = userdata.asString(); - std::string::size_type offset = param.find(","); - if (offset != param.npos) - { - sit_text = param.substr(0, offset); - stand_text = param.substr(offset+1); - } - if (sitting_on_selection()) - { - label = stand_text; - } - else - { - LLSelectNode* node = LLSelectMgr::getInstance()->getSelection()->getFirstRootNode(); - if (node && node->mValid && !node->mSitName.empty()) - { - label.assign(node->mSitName); - } - else - { - label = sit_text; - } - } - gMenuHolder->childSetText("Object Sit", label); return new_value; } @@ -5562,8 +5597,6 @@ void handle_buy_currency() LLFloaterBuyCurrency::buyCurrency(); } - - class LLFloaterVisible : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -5593,19 +5626,39 @@ class LLShowSidetrayPanel : public view_listener_t bool handleEvent(const LLSD& userdata) { std::string panel_name = userdata.asString(); - // Open up either the sidepanel or new floater. - if (LLSideTray::getInstance()->isPanelActive(panel_name)) + // Toggle the panel + if (!LLSideTray::getInstance()->isPanelActive(panel_name)) { - LLFloaterInventory::showAgentInventory(); + // LLFloaterInventory::showAgentInventory(); + LLSideTray::getInstance()->showPanel(panel_name, LLSD()); } else { - LLSideTray::getInstance()->showPanel(panel_name, LLSD()); + LLSideTray::getInstance()->collapseSideBar(); } return true; } }; +class LLSidetrayPanelVisible : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + std::string panel_name = userdata.asString(); + // Toggle the panel + if (LLSideTray::getInstance()->isPanelActive(panel_name)) + { + return true; + } + else + { + return false; + } + + } +}; + + bool callback_show_url(const LLSD& notification, const LLSD& response) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); @@ -5856,8 +5909,12 @@ void confirm_replace_attachment(S32 option, void* user_data) } } -bool callback_attachment_drop(const LLSD& notification, const LLSD& response) +void callback_attachment_drop(const LLSD& notification, const LLSD& response) { + // Ensure user confirmed the drop + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option != 0) return; + // Called when the user clicked on an object attached to them // and selected "Drop". LLUUID object_id = notification["payload"]["object_id"].asUUID(); @@ -5866,7 +5923,7 @@ bool callback_attachment_drop(const LLSD& notification, const LLSD& response) if (!object) { llwarns << "handle_drop_attachment() - no object to drop" << llendl; - return true; + return; } LLViewerObject *parent = (LLViewerObject*)object->getParent(); @@ -5883,13 +5940,13 @@ bool callback_attachment_drop(const LLSD& notification, const LLSD& response) if (!object) { llwarns << "handle_detach() - no object to detach" << llendl; - return true; + return; } if (object->isAvatar()) { llwarns << "Trying to detach avatar from avatar." << llendl; - return true; + return; } // reselect the object @@ -5897,7 +5954,7 @@ bool callback_attachment_drop(const LLSD& notification, const LLSD& response) LLSelectMgr::getInstance()->sendDropAttachment(); - return true; + return; } class LLAttachmentDrop : public view_listener_t @@ -6069,7 +6126,8 @@ class LLAttachmentEnableDrop : public view_listener_t LLViewerJointAttachment* attachment = NULL; LLInventoryItem* item = NULL; - if (object) + // Do not enable drop if all faces of object are not enabled + if (object && LLSelectMgr::getInstance()->getSelection()->contains(object,SELECT_ALL_TES )) { S32 attachmentID = ATTACHMENT_ID_FROM_STATE(object->getState()); attachment = get_if_there(gAgent.getAvatarObject()->mAttachmentPoints, attachmentID, (LLViewerJointAttachment*)NULL); @@ -6111,8 +6169,14 @@ class LLAttachmentEnableDrop : public view_listener_t BOOL enable_detach(const LLSD&) { LLViewerObject* object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject(); - if (!object) return FALSE; - if (!object->isAttachment()) return FALSE; + + // Only enable detach if all faces of object are selected + if (!object || + !object->isAttachment() || + !LLSelectMgr::getInstance()->getSelection()->contains(object,SELECT_ALL_TES )) + { + return FALSE; + } // Find the avatar who owns this attachment LLViewerObject* avatar = object; @@ -6335,7 +6399,6 @@ class LLToolsSelectedScriptAction : public view_listener_t else { llwarns << "Failed to generate LLFloaterScriptQueue with action: " << action << llendl; - delete queue; } return true; } @@ -6344,49 +6407,53 @@ class LLToolsSelectedScriptAction : public view_listener_t void handle_selected_texture_info(void*) { for (LLObjectSelection::valid_iterator iter = LLSelectMgr::getInstance()->getSelection()->valid_begin(); - iter != LLSelectMgr::getInstance()->getSelection()->valid_end(); iter++) + iter != LLSelectMgr::getInstance()->getSelection()->valid_end(); iter++) { LLSelectNode* node = *iter; - - std::string msg; - msg.assign("Texture info for: "); - msg.append(node->mName); - LLChat chat(msg); - LLFloaterChat::addChat(chat); - - U8 te_count = node->getObject()->getNumTEs(); - // map from texture ID to list of faces using it - typedef std::map< LLUUID, std::vector<U8> > map_t; - map_t faces_per_texture; - for (U8 i = 0; i < te_count; i++) - { - if (!node->isTESelected(i)) continue; - - LLViewerTexture* img = node->getObject()->getTEImage(i); - LLUUID image_id = img->getID(); - faces_per_texture[image_id].push_back(i); - } - // Per-texture, dump which faces are using it. - map_t::iterator it; - for (it = faces_per_texture.begin(); it != faces_per_texture.end(); ++it) - { - LLUUID image_id = it->first; - U8 te = it->second[0]; - LLViewerTexture* img = node->getObject()->getTEImage(te); - S32 height = img->getHeight(); - S32 width = img->getWidth(); - S32 components = img->getComponents(); - msg = llformat("%dx%d %s on face ", - width, - height, - (components == 4 ? "alpha" : "opaque")); - for (U8 i = 0; i < it->second.size(); ++i) - { - msg.append( llformat("%d ", (S32)(it->second[i]))); - } - LLChat chat(msg); - LLFloaterChat::addChat(chat); - } + + std::string msg; + msg.assign("Texture info for: "); + msg.append(node->mName); + + 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 + typedef std::map< LLUUID, std::vector<U8> > map_t; + map_t faces_per_texture; + for (U8 i = 0; i < te_count; i++) + { + if (!node->isTESelected(i)) continue; + + LLViewerTexture* img = node->getObject()->getTEImage(i); + LLUUID image_id = img->getID(); + faces_per_texture[image_id].push_back(i); + } + // Per-texture, dump which faces are using it. + map_t::iterator it; + for (it = faces_per_texture.begin(); it != faces_per_texture.end(); ++it) + { + LLUUID image_id = it->first; + U8 te = it->second[0]; + LLViewerTexture* img = node->getObject()->getTEImage(te); + S32 height = img->getHeight(); + S32 width = img->getWidth(); + S32 components = img->getComponents(); + msg = llformat("%dx%d %s on face ", + width, + height, + (components == 4 ? "alpha" : "opaque")); + for (U8 i = 0; i < it->second.size(); ++i) + { + msg.append( llformat("%d ", (S32)(it->second[i]))); + } + + LLSD args; + args["MESSAGE"] = msg; + LLNotificationsUtil::add("SystemMessage", args); + } } } @@ -6820,7 +6887,8 @@ class LLToolsEditLinkedParts : public view_listener_t { bool handleEvent(const LLSD& userdata) { - BOOL select_individuals = gSavedSettings.getBOOL("EditLinkedParts"); + BOOL select_individuals = !gSavedSettings.getBOOL("EditLinkedParts"); + gSavedSettings.setBOOL( "EditLinkedParts", select_individuals ); if (select_individuals) { LLSelectMgr::getInstance()->demoteSelectionToIndividuals(); @@ -7140,25 +7208,7 @@ void handle_buy_currency_test(void*) LLStringUtil::format_map_t replace; replace["[AGENT_ID]"] = gAgent.getID().asString(); replace["[SESSION_ID]"] = gAgent.getSecureSessionID().asString(); - - // *TODO: Replace with call to LLUI::getLanguage() after windows-setup - // branch merges in. JC - std::string language = "en"; - language = gSavedSettings.getString("Language"); - if (language.empty() || language == "default") - { - language = gSavedSettings.getString("InstallLanguage"); - } - if (language.empty() || language == "default") - { - language = gSavedSettings.getString("SystemLanguage"); - } - if (language.empty() || language == "default") - { - language = "en"; - } - - replace["[LANGUAGE]"] = language; + replace["[LANGUAGE]"] = LLUI::getLanguage(); LLStringUtil::format(url, replace); llinfos << "buy currency url " << url << llendl; @@ -7573,6 +7623,24 @@ class LLWorldDayCycle : public view_listener_t } }; +class LLWorldToggleMovementControls : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + LLBottomTray::getInstance()->toggleMovementControls(); + return true; + } +}; + +class LLWorldToggleCameraControls : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + LLBottomTray::getInstance()->toggleCameraControls(); + return true; + } +}; + void show_navbar_context_menu(LLView* ctrl, S32 x, S32 y) { static LLMenuGL* show_navbar_context_menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_hide_navbar.xml", @@ -7692,6 +7760,9 @@ void initialize_menus() view_listener_t::addMenu(new LLWorldPostProcess(), "World.PostProcess"); view_listener_t::addMenu(new LLWorldDayCycle(), "World.DayCycle"); + view_listener_t::addMenu(new LLWorldToggleMovementControls(), "World.Toggle.MovementControls"); + view_listener_t::addMenu(new LLWorldToggleCameraControls(), "World.Toggle.CameraControls"); + // Tools menu view_listener_t::addMenu(new LLToolsSelectTool(), "Tools.SelectTool"); view_listener_t::addMenu(new LLToolsSelectOnlyMyObjects(), "Tools.SelectOnlyMyObjects"); @@ -7721,12 +7792,11 @@ void initialize_menus() view_listener_t::addMenu(new LLToolsEnableUnlink(), "Tools.EnableUnlink"); view_listener_t::addMenu(new LLToolsEnableBuyOrTake(), "Tools.EnableBuyOrTake"); enable.add("Tools.EnableTakeCopy", boost::bind(&enable_object_take_copy)); + enable.add("Tools.VisibleBuyObject", boost::bind(&tools_visible_buy_object)); + enable.add("Tools.VisibleTakeObject", boost::bind(&tools_visible_take_object)); view_listener_t::addMenu(new LLToolsEnableSaveToInventory(), "Tools.EnableSaveToInventory"); view_listener_t::addMenu(new LLToolsEnableSaveToObjectInventory(), "Tools.EnableSaveToObjectInventory"); - /*view_listener_t::addMenu(new LLToolsVisibleBuyObject(), "Tools.VisibleBuyObject"); - view_listener_t::addMenu(new LLToolsVisibleTakeObject(), "Tools.VisibleTakeObject");*/ - // Help menu // most items use the ShowFloater method @@ -7902,7 +7972,7 @@ void initialize_menus() view_listener_t::addMenu(new LLSelfEnableRemoveAllAttachments(), "Self.EnableRemoveAllAttachments"); // we don't use boost::bind directly to delay side tray construction - view_listener_t::addMenu( new LLShowPanelPeopleTab(), "SideTray.PanelPeopleTab"); + view_listener_t::addMenu( new LLTogglePanelPeopleTab(), "SideTray.PanelPeopleTab"); // Avatar pie menu view_listener_t::addMenu(new LLObjectMute(), "Avatar.Mute"); @@ -7916,6 +7986,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"); @@ -7948,13 +8019,16 @@ void initialize_menus() enable.add("Object.EnableDelete", boost::bind(&enable_object_delete)); enable.add("Object.EnableWear", boost::bind(&object_selected_and_point_valid)); + enable.add("Object.StandUpVisible", boost::bind(&visible_object_stand_up)); + enable.add("Object.SitVisible", boost::bind(&visible_object_sit)); + view_listener_t::addMenu(new LLObjectEnableReturn(), "Object.EnableReturn"); view_listener_t::addMenu(new LLObjectEnableReportAbuse(), "Object.EnableReportAbuse"); enable.add("Avatar.EnableMute", boost::bind(&enable_object_mute)); enable.add("Object.EnableMute", boost::bind(&enable_object_mute)); - enable.add("Object.EnableBuy", boost::bind(&enable_buy_object)); + commit.add("Object.ZoomIn", boost::bind(&handle_look_at_selection, "zoom")); // Attachment pie menu enable.add("Attachment.Label", boost::bind(&onEnableAttachmentLabel, _1, _2)); @@ -7992,6 +8066,7 @@ void initialize_menus() view_listener_t::addMenu(new LLFloaterVisible(), "FloaterVisible"); view_listener_t::addMenu(new LLShowSidetrayPanel(), "ShowSidetrayPanel"); + view_listener_t::addMenu(new LLSidetrayPanelVisible(), "SidetrayPanelVisible"); view_listener_t::addMenu(new LLSomethingSelected(), "SomethingSelected"); view_listener_t::addMenu(new LLSomethingSelectedNoHUD(), "SomethingSelectedNoHUD"); view_listener_t::addMenu(new LLEditableSelected(), "EditableSelected"); diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 6bad8843fd..84b270f8cc 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -796,84 +796,88 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt //LLAssetType::EType pref_loc = data->mPreferredLocation; BOOL is_balance_sufficient = TRUE; - if(result >= 0) + if(data) { - LLFolderType::EType dest_loc = (data->mPreferredLocation == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(data->mAssetInfo.mType) : data->mPreferredLocation; - - if (LLAssetType::AT_SOUND == data->mAssetInfo.mType || - LLAssetType::AT_TEXTURE == data->mAssetInfo.mType || - LLAssetType::AT_ANIMATION == data->mAssetInfo.mType) + if (result >= 0) { - // Charge the user for the upload. - LLViewerRegion* region = gAgent.getRegion(); - - if(!(can_afford_transaction(expected_upload_cost))) - { - LLFloaterBuyCurrency::buyCurrency( - llformat(LLTrans::getString("UploadingCosts").c_str(), - data->mAssetInfo.getName().c_str()), - expected_upload_cost); - is_balance_sufficient = FALSE; - } - else if(region) + LLFolderType::EType dest_loc = (data->mPreferredLocation == LLFolderType::FT_NONE) ? LLFolderType::assetTypeToFolderType(data->mAssetInfo.mType) : data->mPreferredLocation; + + if (LLAssetType::AT_SOUND == data->mAssetInfo.mType || + LLAssetType::AT_TEXTURE == data->mAssetInfo.mType || + LLAssetType::AT_ANIMATION == data->mAssetInfo.mType) { - // Charge user for upload - gStatusBar->debitBalance(expected_upload_cost); + // Charge the user for the upload. + LLViewerRegion* region = gAgent.getRegion(); - LLMessageSystem* msg = gMessageSystem; - msg->newMessageFast(_PREHASH_MoneyTransferRequest); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - msg->nextBlockFast(_PREHASH_MoneyData); - msg->addUUIDFast(_PREHASH_SourceID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_DestID, LLUUID::null); - msg->addU8("Flags", 0); - // we tell the sim how much we were expecting to pay so it - // can respond to any discrepancy - msg->addS32Fast(_PREHASH_Amount, expected_upload_cost); - msg->addU8Fast(_PREHASH_AggregatePermNextOwner, (U8)LLAggregatePermissions::AP_EMPTY); - msg->addU8Fast(_PREHASH_AggregatePermInventory, (U8)LLAggregatePermissions::AP_EMPTY); - msg->addS32Fast(_PREHASH_TransactionType, TRANS_UPLOAD_CHARGE); - msg->addStringFast(_PREHASH_Description, NULL); - msg->sendReliable(region->getHost()); + if(!(can_afford_transaction(expected_upload_cost))) + { + LLFloaterBuyCurrency::buyCurrency( + llformat(LLTrans::getString("UploadingCosts").c_str(), + data->mAssetInfo.getName().c_str()), + expected_upload_cost); + is_balance_sufficient = FALSE; + } + else if(region) + { + // Charge user for upload + gStatusBar->debitBalance(expected_upload_cost); + + LLMessageSystem* msg = gMessageSystem; + msg->newMessageFast(_PREHASH_MoneyTransferRequest); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->nextBlockFast(_PREHASH_MoneyData); + msg->addUUIDFast(_PREHASH_SourceID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_DestID, LLUUID::null); + msg->addU8("Flags", 0); + // we tell the sim how much we were expecting to pay so it + // can respond to any discrepancy + msg->addS32Fast(_PREHASH_Amount, expected_upload_cost); + msg->addU8Fast(_PREHASH_AggregatePermNextOwner, (U8)LLAggregatePermissions::AP_EMPTY); + msg->addU8Fast(_PREHASH_AggregatePermInventory, (U8)LLAggregatePermissions::AP_EMPTY); + msg->addS32Fast(_PREHASH_TransactionType, TRANS_UPLOAD_CHARGE); + msg->addStringFast(_PREHASH_Description, NULL); + msg->sendReliable(region->getHost()); + } } - } - if(is_balance_sufficient) - { - // Actually add the upload to inventory - llinfos << "Adding " << uuid << " to inventory." << llendl; - const LLUUID folder_id = gInventory.findCategoryUUIDForType(dest_loc); - if(folder_id.notNull()) + if(is_balance_sufficient) { - U32 next_owner_perms = data->mNextOwnerPerm; - if(PERM_NONE == next_owner_perms) + // Actually add the upload to inventory + llinfos << "Adding " << uuid << " to inventory." << llendl; + const LLUUID folder_id = gInventory.findCategoryUUIDForType(dest_loc); + if(folder_id.notNull()) { - next_owner_perms = PERM_MOVE | PERM_TRANSFER; + U32 next_owner_perms = data->mNextOwnerPerm; + if(PERM_NONE == next_owner_perms) + { + next_owner_perms = PERM_MOVE | PERM_TRANSFER; + } + create_inventory_item(gAgent.getID(), gAgent.getSessionID(), + folder_id, data->mAssetInfo.mTransactionID, data->mAssetInfo.getName(), + data->mAssetInfo.getDescription(), data->mAssetInfo.mType, + data->mInventoryType, NOT_WEARABLE, next_owner_perms, + LLPointer<LLInventoryCallback>(NULL)); + } + else + { + llwarns << "Can't find a folder to put it in" << llendl; } - create_inventory_item(gAgent.getID(), gAgent.getSessionID(), - folder_id, data->mAssetInfo.mTransactionID, data->mAssetInfo.getName(), - data->mAssetInfo.getDescription(), data->mAssetInfo.mType, - data->mInventoryType, NOT_WEARABLE, next_owner_perms, - LLPointer<LLInventoryCallback>(NULL)); - } - else - { - llwarns << "Can't find a folder to put it in" << llendl; } } - } - else // if(result >= 0) - { - LLSD args; - args["FILE"] = LLInventoryType::lookupHumanReadable(data->mInventoryType); - args["REASON"] = std::string(LLAssetStorage::getErrorString(result)); - LLNotificationsUtil::add("CannotUploadReason", args); + else // if(result >= 0) + { + LLSD args; + args["FILE"] = LLInventoryType::lookupHumanReadable(data->mInventoryType); + args["REASON"] = std::string(LLAssetStorage::getErrorString(result)); + LLNotificationsUtil::add("CannotUploadReason", args); + } } LLUploadDialog::modalUploadFinished(); delete data; + data = NULL; // *NOTE: This is a pretty big hack. What this does is check the // file picker if there are any more pending uploads. If so, diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index f9f778449b..ae31c9732c 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -35,8 +35,10 @@ #include "llanimationstates.h" #include "llaudioengine.h" +#include "llavataractions.h" #include "lscript_byteformat.h" #include "lleconomy.h" +#include "lleventtimer.h" #include "llfloaterreg.h" #include "llfollowcamparams.h" #include "llregionhandle.h" @@ -50,10 +52,9 @@ #include "llagent.h" #include "llcallingcard.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llfloaterbuycurrency.h" #include "llfloaterbuyland.h" -#include "llfloaterchat.h" #include "llfloaterland.h" #include "llfloaterregioninfo.h" #include "llfloaterlandholdings.h" @@ -78,6 +79,7 @@ #include "llstatenums.h" #include "llstatusbar.h" #include "llimview.h" +#include "llspeakers.h" #include "lltrans.h" #include "llviewerfoldertype.h" #include "lluri.h" @@ -191,21 +193,39 @@ bool friendship_offer_callback(const LLSD& notification, const LLSD& response) msg->nextBlockFast(_PREHASH_FolderData); msg->addUUIDFast(_PREHASH_FolderID, fid); msg->sendReliable(LLHost(payload["sender"].asString())); + + LLSD payload = notification["payload"]; + payload["SUPPRESS_TOAST"] = true; + LLNotificationsUtil::add("FriendshipAcceptedByMe", + notification["substitutions"], payload); break; } - case 1: - { - // decline - // We no longer notify other viewers, but we DO still send - // the rejection to the simulator to delete the pending userop. - msg->newMessageFast(_PREHASH_DeclineFriendship); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - msg->nextBlockFast(_PREHASH_TransactionBlock); - msg->addUUIDFast(_PREHASH_TransactionID, payload["session_id"]); - msg->sendReliable(LLHost(payload["sender"].asString())); - break; + case 1: // Decline + { + LLSD payload = notification["payload"]; + payload["SUPPRESS_TOAST"] = true; + LLNotificationsUtil::add("FriendshipDeclinedByMe", + notification["substitutions"], payload); + } + // fall-through + case 2: // Send IM - decline and start IM session + { + // decline + // We no longer notify other viewers, but we DO still send + // the rejection to the simulator to delete the pending userop. + msg->newMessageFast(_PREHASH_DeclineFriendship); + msg->nextBlockFast(_PREHASH_AgentData); + msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); + msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + msg->nextBlockFast(_PREHASH_TransactionBlock); + msg->addUUIDFast(_PREHASH_TransactionID, payload["session_id"]); + msg->sendReliable(LLHost(payload["sender"].asString())); + + // start IM session + if(2 == option) + { + LLAvatarActions::startIM(payload["from_id"].asUUID()); + } } default: // close button probably, possibly timed out @@ -623,7 +643,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"]); } } @@ -704,6 +723,18 @@ protected: } }; +class LLOpenTaskGroupOffer : public LLInventoryAddedObserver +{ +protected: + /*virtual*/ void done() + { + open_inventory_offer(mAdded, "group_offer"); + mAdded.clear(); + gInventory.removeObserver(this); + delete this; + } +}; + //one global instance to bind them LLOpenTaskOffer* gNewInventoryObserver=NULL; @@ -719,6 +750,7 @@ void start_new_inventory_observer() class LLDiscardAgentOffer : public LLInventoryFetchComboObserver { + LOG_CLASS(LLDiscardAgentOffer); public: LLDiscardAgentOffer(const LLUUID& folder_id, const LLUUID& object_id) : mFolderID(folder_id), @@ -815,9 +847,13 @@ bool check_offer_throttle(const std::string& from_name, bool check_only) } message << ", automatic preview disabled for " << OFFER_THROTTLE_TIME << " seconds."; - chat.mText = message.str(); + //this is kinda important, so actually put it on screen - LLFloaterChat::addChat(chat, FALSE, FALSE); + std::string log_msg = message.str(); + LLSD args; + args["MESSAGE"] = log_msg; + LLNotificationsUtil::add("SystemMessage", args); + throttle_logged=true; } return false; @@ -837,28 +873,15 @@ 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). - const BOOL user_is_away = gAwayTimer.getStarted(); - if(!user_is_away) - { - 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); + llassert(item); + if (!item) { + continue; } //////////////////////////////////////////////////////////////////////////////// @@ -882,9 +905,17 @@ 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) + { + // do not open inventory when we open group notice attachment because + // we already opened landmark info panel + // "group_offer" is passed by LLOpenTaskGroupOffer + + continue; + } else if(from_name.empty()) { // we receive a message from LLOpenTaskOffer, it mean that new landmark has been added. @@ -893,11 +924,26 @@ 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) { - places_panel->setItem(item); + // 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); + //} + //else + // we are opening a group notice attachment + if("create_landmark" != places_panel->getPlaceInfoType()) + { + LLSD args; + args["type"] = "landmark"; + args["id"] = item_id; + LLSideTray::getInstance()->showPanel("panel_places", args); + } } } } @@ -910,9 +956,6 @@ void open_inventory_offer(const std::vector<LLUUID>& items, const std::string& f case LLAssetType::AT_ANIMATION: LLFloaterReg::showInstance("preview_anim", LLSD(item_id), take_focus); break; - case LLAssetType::AT_GESTURE: - LLFloaterReg::showInstance("preview_gesture", LLSD(item_id), take_focus); - break; case LLAssetType::AT_SCRIPT: LLFloaterReg::showInstance("preview_script", LLSD(item_id), take_focus); break; @@ -941,6 +984,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, @@ -1086,33 +1157,11 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& // * callback may be called immediately, // * adding the mute sends a message, // * we can't build two messages at once. - if (2 == button) + if (2 == button) // Block { gCacheName->get(mFromID, mFromGroup, boost::bind(&inventory_offer_mute_callback,_1,_2,_3,_4,this)); } - // *NOTE dzaporozhan - // Restored from viewer-1-23 to fix EXT-3520 - // Saves Group Notice Attachments to inventory. - LLMessageSystem* msg = gMessageSystem; - msg->newMessageFast(_PREHASH_ImprovedInstantMessage); - msg->nextBlockFast(_PREHASH_AgentData); - msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); - msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); - msg->nextBlockFast(_PREHASH_MessageBlock); - msg->addBOOLFast(_PREHASH_FromGroup, FALSE); - msg->addUUIDFast(_PREHASH_ToAgentID, mFromID); - msg->addU8Fast(_PREHASH_Offline, IM_ONLINE); - msg->addUUIDFast(_PREHASH_ID, mTransactionID); - msg->addU32Fast(_PREHASH_Timestamp, NO_TIMESTAMP); // no timestamp necessary - std::string name; - LLAgentUI::buildFullname(name); - msg->addStringFast(_PREHASH_FromAgentName, name); - msg->addStringFast(_PREHASH_Message, ""); - msg->addU32Fast(_PREHASH_ParentEstateID, 0); - msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null); - msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent()); - std::string from_string; // Used in the pop-up. std::string chatHistory_string; // Used in chat history. @@ -1148,8 +1197,11 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& } } break; - case IM_TASK_INVENTORY_OFFERED: case IM_GROUP_NOTICE: + opener = new LLOpenTaskGroupOffer; + send_auto_receive_response(); + break; + case IM_TASK_INVENTORY_OFFERED: case IM_GROUP_NOTICE_REQUESTED: // This is an offer from a task or group. // We don't use a new instance of an opener @@ -1164,16 +1216,13 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& // end switch (mIM) case IOR_ACCEPT: - msg->addU8Fast(_PREHASH_Dialog, (U8)(mIM + 1)); - msg->addBinaryDataFast(_PREHASH_BinaryBucket, &(mFolderID.mData), sizeof(mFolderID.mData)); - msg->sendReliable(mHost); - //don't spam them if they are getting flooded if (check_offer_throttle(mFromName, true)) { log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + mDesc + LLTrans::getString("."); - chat.mText = log_message; - LLFloaterChat::addChatHistory(chat); + LLSD args; + args["MESSAGE"] = log_message; + LLNotificationsUtil::add("SystemMessage", args); } break; @@ -1190,7 +1239,10 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& { chat.mMuted = TRUE; } - LLFloaterChat::addChatHistory(chat); + + // *NOTE dzaporozhan + // Disabled logging to old chat floater to fix crash in group notices - EXT-4149 + // LLFloaterChat::addChatHistory(chat); LLInventoryFetchComboObserver::folder_ref_t folders; LLInventoryFetchComboObserver::item_ref_t items; @@ -1227,10 +1279,6 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& gInventory.addObserver(opener); } - // Remove script dialog because there is no need in it no more. - LLUUID object_id = notification["payload"]["object_id"].asUUID(); - LLScriptFloaterManager::instance().removeNotificationByObjectId(object_id); - delete this; return false; } @@ -1270,13 +1318,6 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null); msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent()); LLInventoryObserver* opener = NULL; - LLViewerInventoryCategory* catp = NULL; - catp = (LLViewerInventoryCategory*)gInventory.getCategory(mObjectID); - LLViewerInventoryItem* itemp = NULL; - if(!catp) - { - itemp = (LLViewerInventoryItem*)gInventory.getItem(mObjectID); - } std::string from_string; // Used in the pop-up. std::string chatHistory_string; // Used in chat history. @@ -1343,8 +1384,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("."); - chat.mText = log_message; - LLFloaterChat::addChatHistory(chat); + LLSD args; + args["MESSAGE"] = log_message; + LLNotificationsUtil::add("SystemMessage", args); } // we will want to open this item when it comes back. @@ -1387,12 +1429,9 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const msg->sendReliable(mHost); log_message = LLTrans::getString("InvOfferYouDecline") + " " + mDesc + " " + LLTrans::getString("InvOfferFrom") + " " + mFromName +"."; - chat.mText = log_message; - if( LLMuteList::getInstance()->isMuted(mFromID ) && ! LLMuteList::getInstance()->isLinden(mFromName) ) // muting for SL-42269 - { - chat.mMuted = TRUE; - } - LLFloaterChat::addChatHistory(chat); + LLSD args; + args["MESSAGE"] = log_message; + LLNotificationsUtil::add("SystemMessage", args); if (busy && (!mFromGroup && !mFromObject)) { @@ -1406,10 +1445,6 @@ bool LLOfferInfo::inventory_task_offer_callback(const LLSD& notification, const gInventory.addObserver(opener); } - // Remove script dialog because there is no need in it no more. - LLUUID object_id = notification["payload"]["object_id"].asUUID(); - LLScriptFloaterManager::instance().removeNotificationByObjectId(object_id); - delete this; return false; } @@ -1446,11 +1481,16 @@ 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); } - + LLSD args; args["[OBJECTNAME]"] = msg; @@ -1555,7 +1595,6 @@ void inventory_offer_handler(LLOfferInfo* info) { payload["give_inventory_notification"] = TRUE; LLNotificationPtr notification = LLNotifications::instance().add(p.payload(payload)); - LLScriptFloaterManager::getInstance()->setNotificationToastId(object_id, notification->getID()); } } } @@ -1754,17 +1793,12 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) region_id, position, true); - - // pretend this is chat generated by self, so it does not show up on screen - chat.mText = std::string("IM: ") + name + separator_string + message; - LLFloaterChat::addChat( chat, TRUE, TRUE ); } else if (from_id.isNull()) { - // Messages from "Second Life" ID don't go to IM history - // messages which should be routed to IM window come from a user ID with name=SYSTEM_NAME - chat.mText = name + ": " + message; - LLFloaterChat::addChat(chat, FALSE, FALSE); + LLSD args; + args["MESSAGE"] = message; + LLNotificationsUtil::add("SystemMessage", args); } else if (to_id.isNull()) { @@ -1814,19 +1848,22 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) region_id, position, true); - chat.mText = std::string("IM: ") + name + separator_string + saved + message; - - BOOL local_agent = FALSE; - LLFloaterChat::addChat( chat, TRUE, local_agent ); } else { + /* + EXT-5099 + currently there is no way to store in history only... + using LLNotificationsUtil::add will add message to Nearby Chat + // muted user, so don't start an IM session, just record line in chat // history. Pretend the chat is from a local agent, // so it will go into the history but not be shown on screen. - chat.mText = buffer; - BOOL local_agent = TRUE; - LLFloaterChat::addChat( chat, TRUE, local_agent ); + + LLSD args; + args["MESSAGE"] = buffer; + LLNotificationsUtil::add("SystemMessageTip", args); + */ } } break; @@ -1890,7 +1927,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; @@ -1944,6 +1981,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: @@ -1993,7 +2034,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) // Someone has offered us some inventory. { LLOfferInfo* info = new LLOfferInfo; - bool mute_im = false; if (IM_INVENTORY_OFFERED == dialog) { struct offer_agent_bucket_t @@ -2005,22 +2045,19 @@ 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]; info->mType = (LLAssetType::EType) bucketp->asset_type; info->mObjectID = bucketp->object_id; - - if(accept_im_from_only_friend&&!is_friend) - { - mute_im = true; - } } else { 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]; @@ -2045,8 +2082,15 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) info->mDesc = message; info->mHost = msg->getSender(); //if (((is_busy && !is_owned_by_me) || is_muted)) - if ( is_muted || mute_im) + if (is_muted) { + // Prefetch the offered item so that it can be discarded by the appropriate observer. (EXT-4331) + LLInventoryFetchObserver::item_ref_t items; + items.push_back(info->mObjectID); + LLInventoryFetchObserver* fetch_item = new LLInventoryFetchObserver(); + fetch_item->fetchItems(items); + delete fetch_item; + // Same as closing window info->forceResponse(IOR_DECLINE); } @@ -2123,9 +2167,6 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) region_id, position, true); - - chat.mText = std::string("IM: ") + name + separator_string + saved + message; - LLFloaterChat::addChat(chat, TRUE, is_this_agent); } break; @@ -2139,6 +2180,58 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) // Build a link to open the object IM info window. std::string location = ll_safe_string((char*)binary_bucket, binary_bucket_size-1); + if (session_id.notNull()) + { + chat.mFromID = session_id; + } + else + { + // This message originated on a region without the updated code for task id and slurl information. + // We just need a unique ID for this object that isn't the owner ID. + // If it is the owner ID it will overwrite the style that contains the link to that owner's profile. + // This isn't ideal - it will make 1 style for all objects owned by the the same person/group. + // This works because the only thing we can really do in this case is show the owner name and link to their profile. + 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; + query_string["name"] = name; + if (from_group) + { + query_string["groupowned"] = "true"; + } + + std::ostringstream link; + link << "secondlife:///app/objectim/" << session_id << LLURI::mapToQueryString(query_string); + + chat.mURL = link.str(); + chat.mText = message; + chat.mSourceType = CHAT_SOURCE_OBJECT; + + // Note: lie to Nearby Chat, pretending that this is NOT an IM, because + // IMs from obejcts don't open IM sessions. + LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); + if(nearby_chat) + { + LLSD args; + args["owner_id"] = from_id; + args["slurl"] = location; + args["type"] = LLNotificationsUI::NT_NEARBYCHAT; + LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args); + } + + + //Object IMs send with from name: 'Second Life' need to be displayed also in notification toasts (EXT-1590) + if (SYSTEM_FROM != name) break; + LLSD substitutions; substitutions["NAME"] = name; substitutions["MSG"] = message; @@ -2154,7 +2247,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); } @@ -2456,7 +2549,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; @@ -2485,7 +2578,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) @@ -2630,25 +2723,13 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data) chat.mMuted = is_muted && !is_linden; - if (!visible_in_chat_bubble - && (is_linden || !is_busy || is_owned_by_me)) - { - // show on screen and add to history - 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; - // adding temporarily so that communications window chat bar - // works until the new chat window is ready - chat.mText = from_name + ": " + chat.mText; - LLFloaterChat::addChat(chat, FALSE, FALSE); - } - else - { - LLNotificationsUI::LLNotificationManager::instance().onChat( - chat, LLNotificationsUI::NT_NEARBYCHAT); - // adding temporarily - LLFloaterChat::addChatHistory(chat); - } + LLNotificationsUI::LLNotificationManager::instance().onChat(chat, args); } } @@ -3033,9 +3114,10 @@ void process_agent_movement_complete(LLMessageSystem* msg, void**) if (avatarp) { // Chat the "back" SLURL. (DEV-4907) - LLChat chat("Teleport completed from " + gAgent.getTeleportSourceSLURL()); - chat.mSourceType = CHAT_SOURCE_SYSTEM; - LLFloaterChat::addChatHistory(chat); + + LLSD args; + args["MESSAGE"] = "Teleport completed from " + gAgent.getTeleportSourceSLURL(); + LLNotificationsUtil::add("SystemMessageTip", args); // Set the new position avatarp->setPositionAgent(agent_pos); @@ -3947,6 +4029,7 @@ void process_avatar_animation(LLMessageSystem *mesgsys, void **user_data) // flying animation from server, the AGENT_CONTROL_FLY flag remains set but the // avatar does not play flying animation, so we switch flying mode off. // See LLAgent::setFlying(). This may cause "Stop Flying" button to blink. + // See EXT-2781. if (animation_id == ANIM_AGENT_STANDUP && gAgent.getFlying()) { gAgent.setFlying(FALSE); @@ -4340,10 +4423,10 @@ void process_money_balance_reply( LLMessageSystem* msg, void** ) if (gStatusBar) { - S32 old_balance = gStatusBar->getBalance(); + // S32 old_balance = gStatusBar->getBalance(); // This is an update, not the first transmission of balance - if (old_balance != 0) + /* if (old_balance != 0) { // this is actually an update if (balance > old_balance) @@ -4355,7 +4438,7 @@ void process_money_balance_reply( LLMessageSystem* msg, void** ) LLFirstUse::useBalanceDecrease(balance - old_balance); } } - + */ gStatusBar->setBalance(balance); gStatusBar->setLandCredit(credit); gStatusBar->setLandCommitted(committed); @@ -5365,8 +5448,24 @@ bool handle_lure_callback(const LLSD& notification, const LLSD& response) it != notification["payload"]["ids"].endArray(); ++it) { + LLUUID target_id = it->asUUID(); + msg->nextBlockFast(_PREHASH_TargetData); - msg->addUUIDFast(_PREHASH_TargetID, it->asUUID()); + msg->addUUIDFast(_PREHASH_TargetID, target_id); + + // Record the offer. + { + std::string target_name; + gCacheName->getFullName(target_id, target_name); + LLSD args; + args["TO_NAME"] = target_name; + + LLSD payload; + payload["from_id"] = target_id; + payload["SESSION_NAME"] = target_name; + payload["SUPPRESS_TOAST"] = true; + LLNotificationsUtil::add("TeleportOfferSent", args, payload); + } } gAgent.sendReliableMessage(); } diff --git a/indra/newview/llviewermessage.h b/indra/newview/llviewermessage.h index 8404d6fde0..7dd629dcfd 100644 --- a/indra/newview/llviewermessage.h +++ b/indra/newview/llviewermessage.h @@ -203,9 +203,16 @@ 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() {}; + LLOfferInfo() + : mFromGroup(FALSE), mFromObject(FALSE), + mIM(IM_NOTHING_SPECIAL), mType(LLAssetType::AT_NONE) {}; LLOfferInfo(const LLSD& sd); void forceResponse(InventoryOfferResponse response); diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp index d7b55d7e97..987d23630a 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) diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 3c79045cc5..b5642d07a5 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); @@ -1172,6 +1174,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 +1214,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; @@ -1997,6 +2001,9 @@ BOOL LLViewerObject::isActive() const BOOL LLViewerObject::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) { + static LLFastTimer::DeclareTimer ftm("Viewer Object"); + LLFastTimer t(ftm); + if (mDead) { // It's dead. Don't update it. @@ -4015,9 +4022,14 @@ LLBBox LLViewerObject::getBoundingBoxAgent() const { LLVector3 position_agent; LLQuaternion rot; + LLViewerObject* avatar_parent = NULL; LLViewerObject* root_edit = (LLViewerObject*)getRootEdit(); - LLViewerObject* avatar_parent = (LLViewerObject*)root_edit->getParent(); - if (avatar_parent && avatar_parent->isAvatar() && root_edit->mDrawable.notNull()) + if (root_edit) + { + avatar_parent = (LLViewerObject*)root_edit->getParent(); + } + + if (avatar_parent && avatar_parent->isAvatar() && root_edit && root_edit->mDrawable.notNull()) { LLXform* parent_xform = root_edit->mDrawable->getXform()->getParent(); position_agent = (getPositionEdit() * parent_xform->getWorldRotation()) + parent_xform->getWorldPosition(); diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 96828ee1b6..6347090f71 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -93,7 +93,7 @@ extern LLPipeline gPipeline; // Statics for object lookup tables. U32 LLViewerObjectList::sSimulatorMachineIndex = 1; // Not zero deliberately, to speed up index check. -LLMap<U64, U32> LLViewerObjectList::sIPAndPortToIndex; +std::map<U64, U32> LLViewerObjectList::sIPAndPortToIndex; std::map<U64, LLUUID> LLViewerObjectList::sIndexAndLocalIDToUUID; LLViewerObjectList::LLViewerObjectList() @@ -571,10 +571,9 @@ void LLViewerObjectList::processCachedObjectUpdate(LLMessageSystem *mesgsys, void LLViewerObjectList::dirtyAllObjectInventory() { - S32 count = mObjects.count(); - for(S32 i = 0; i < count; ++i) + for (vobj_list_t::iterator iter = mObjects.begin(); iter != mObjects.end(); ++iter) { - mObjects[i]->dirtyInventory(); + (*iter)->dirtyInventory(); } } @@ -587,14 +586,14 @@ void LLViewerObjectList::updateApparentAngles(LLAgent &agent) S32 num_updates, max_value; if (NUM_BINS - 1 == mCurBin) { - num_updates = mObjects.count() - mCurLazyUpdateIndex; - max_value = mObjects.count(); + num_updates = (S32) mObjects.size() - mCurLazyUpdateIndex; + max_value = (S32) mObjects.size(); gTextureList.setUpdateStats(TRUE); } else { - num_updates = (mObjects.count() / NUM_BINS) + 1; - max_value = llmin(mObjects.count(), mCurLazyUpdateIndex + num_updates); + num_updates = ((S32) mObjects.size() / NUM_BINS) + 1; + max_value = llmin((S32) mObjects.size(), mCurLazyUpdateIndex + num_updates); } @@ -647,7 +646,7 @@ void LLViewerObjectList::updateApparentAngles(LLAgent &agent) } mCurLazyUpdateIndex = max_value; - if (mCurLazyUpdateIndex == mObjects.count()) + if (mCurLazyUpdateIndex == mObjects.size()) { mCurLazyUpdateIndex = 0; } @@ -694,20 +693,26 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world) // Make a copy of the list in case something in idleUpdate() messes with it std::vector<LLViewerObject*> idle_list; - idle_list.reserve( mActiveObjects.size() ); + + static LLFastTimer::DeclareTimer idle_copy("Idle Copy"); - for (std::set<LLPointer<LLViewerObject> >::iterator active_iter = mActiveObjects.begin(); - active_iter != mActiveObjects.end(); active_iter++) { - objectp = *active_iter; - if (objectp) + LLFastTimer t(idle_copy); + idle_list.reserve( mActiveObjects.size() ); + + for (std::set<LLPointer<LLViewerObject> >::iterator active_iter = mActiveObjects.begin(); + active_iter != mActiveObjects.end(); active_iter++) { - idle_list.push_back( objectp ); - } - else - { // There shouldn't be any NULL pointers in the list, but they have caused - // crashes before. This may be idleUpdate() messing with the list. - llwarns << "LLViewerObjectList::update has a NULL objectp" << llendl; + objectp = *active_iter; + if (objectp) + { + idle_list.push_back( objectp ); + } + else + { // There shouldn't be any NULL pointers in the list, but they have caused + // crashes before. This may be idleUpdate() messing with the list. + llwarns << "LLViewerObjectList::update has a NULL objectp" << llendl; + } } } @@ -807,7 +812,7 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world) } */ - LLViewerStats::getInstance()->mNumObjectsStat.addValue(mObjects.count()); + LLViewerStats::getInstance()->mNumObjectsStat.addValue((S32) mObjects.size()); LLViewerStats::getInstance()->mNumActiveObjectsStat.addValue(num_active_objects); LLViewerStats::getInstance()->mNumSizeCulledStat.addValue(mNumSizeCulled); LLViewerStats::getInstance()->mNumVisCulledStat.addValue(mNumVisCulled); @@ -815,9 +820,9 @@ void LLViewerObjectList::update(LLAgent &agent, LLWorld &world) void LLViewerObjectList::clearDebugText() { - for (S32 i = 0; i < mObjects.count(); i++) + for (vobj_list_t::iterator iter = mObjects.begin(); iter != mObjects.end(); ++iter) { - mObjects[i]->setDebugText(""); + (*iter)->setDebugText(""); } } @@ -856,7 +861,7 @@ void LLViewerObjectList::cleanupReferences(LLViewerObject *objectp) if (objectp->isOnMap()) { - mMapObjects.removeObj(objectp); + removeFromMap(objectp); } // Don't clean up mObject references, these will be cleaned up more efficiently later! @@ -913,10 +918,10 @@ void LLViewerObjectList::killObjects(LLViewerRegion *regionp) { LLViewerObject *objectp; - S32 i; - for (i = 0; i < mObjects.count(); i++) + + for (vobj_list_t::iterator iter = mObjects.begin(); iter != mObjects.end(); ++iter) { - objectp = mObjects[i]; + objectp = *iter; if (objectp->mRegionp == regionp) { @@ -933,10 +938,9 @@ void LLViewerObjectList::killAllObjects() // Used only on global destruction. LLViewerObject *objectp; - for (S32 i = 0; i < mObjects.count(); i++) + for (vobj_list_t::iterator iter = mObjects.begin(); iter != mObjects.end(); ++iter) { - objectp = mObjects[i]; - + objectp = *iter; killObject(objectp); llassert(objectp->isDead()); } @@ -945,7 +949,7 @@ void LLViewerObjectList::killAllObjects() if(!mObjects.empty()) { - llwarns << "LLViewerObjectList::killAllObjects still has entries in mObjects: " << mObjects.count() << llendl; + llwarns << "LLViewerObjectList::killAllObjects still has entries in mObjects: " << mObjects.size() << llendl; mObjects.clear(); } @@ -970,16 +974,15 @@ void LLViewerObjectList::cleanDeadObjects(BOOL use_timer) return; } - S32 i = 0; S32 num_removed = 0; LLViewerObject *objectp; - while (i < mObjects.count()) + for (vobj_list_t::iterator iter = mObjects.begin(); iter != mObjects.end(); ) { // Scan for all of the dead objects and remove any "global" references to them. - objectp = mObjects[i]; + objectp = *iter; if (objectp->isDead()) { - mObjects.remove(i); + iter = mObjects.erase(iter); num_removed++; if (num_removed == mNumDeadObjects) @@ -990,8 +993,7 @@ void LLViewerObjectList::cleanDeadObjects(BOOL use_timer) } else { - // iterate, this isn't a dead object. - i++; + ++iter; } } @@ -1041,12 +1043,11 @@ void LLViewerObjectList::shiftObjects(const LLVector3 &offset) } LLViewerObject *objectp; - S32 i; - for (i = 0; i < mObjects.count(); i++) + for (vobj_list_t::iterator iter = mObjects.begin(); iter != mObjects.end(); ++iter) { - objectp = getObject(i); + objectp = *iter; // There could be dead objects on the object list, so don't update stuff if the object is dead. - if (objectp) + if (!objectp->isDead()) { objectp->updatePositionCaches(); @@ -1076,9 +1077,9 @@ void LLViewerObjectList::renderObjectsForMap(LLNetMap &netmap) F32 max_radius = gSavedSettings.getF32("MiniMapPrimMaxRadius"); - for (S32 i = 0; i < mMapObjects.count(); i++) + for (vobj_list_t::iterator iter = mMapObjects.begin(); iter != mMapObjects.end(); ++iter) { - LLViewerObject* objectp = mMapObjects[i]; + LLViewerObject* objectp = *iter; if (!objectp->getRegion() || objectp->isOrphaned() || objectp->isAttachment()) { continue; @@ -1144,21 +1145,14 @@ void LLViewerObjectList::renderObjectBounds(const LLVector3 ¢er) { } -void LLViewerObjectList::renderObjectsForSelect(LLCamera &camera, const LLRect& screen_rect, BOOL pick_parcel_wall, BOOL render_transparent) -{ - generatePickList(camera); - renderPickList(screen_rect, pick_parcel_wall, render_transparent); -} - void LLViewerObjectList::generatePickList(LLCamera &camera) { LLViewerObject *objectp; S32 i; // Reset all of the GL names to zero. - for (i = 0; i < mObjects.count(); i++) + for (vobj_list_t::iterator iter = mObjects.begin(); iter != mObjects.end(); ++iter) { - objectp = mObjects[i]; - objectp->mGLName = 0; + (*iter)->mGLName = 0; } mSelectPickList.clear(); @@ -1321,17 +1315,19 @@ void LLViewerObjectList::addDebugBeacon(const LLVector3 &pos_agent, const LLColor4 &text_color, S32 line_width) { - LLDebugBeacon *beaconp = mDebugBeacons.reserve_block(1); - beaconp->mPositionAgent = pos_agent; - beaconp->mString = string; - beaconp->mColor = color; - beaconp->mTextColor = text_color; - beaconp->mLineWidth = line_width; + LLDebugBeacon beacon; + beacon.mPositionAgent = pos_agent; + beacon.mString = string; + beacon.mColor = color; + beacon.mTextColor = text_color; + beacon.mLineWidth = line_width; + + mDebugBeacons.push_back(beacon); } void LLViewerObjectList::resetObjectBeacons() { - mDebugBeacons.reset(); + mDebugBeacons.clear(); } LLViewerObject *LLViewerObjectList::createObjectViewer(const LLPCode pcode, LLViewerRegion *regionp) @@ -1349,7 +1345,7 @@ LLViewerObject *LLViewerObjectList::createObjectViewer(const LLPCode pcode, LLVi mUUIDObjectMap[fullid] = objectp; - mObjects.put(objectp); + mObjects.push_back(objectp); updateActive(objectp); @@ -1388,7 +1384,7 @@ LLViewerObject *LLViewerObjectList::createObject(const LLPCode pcode, LLViewerRe gMessageSystem->getSenderIP(), gMessageSystem->getSenderPort()); - mObjects.put(objectp); + mObjects.push_back(objectp); updateActive(objectp); @@ -1411,11 +1407,11 @@ LLViewerObject *LLViewerObjectList::replaceObject(const LLUUID &id, const LLPCod S32 LLViewerObjectList::findReferences(LLDrawable *drawablep) const { LLViewerObject *objectp; - S32 i; S32 num_refs = 0; - for (i = 0; i < mObjects.count(); i++) + + for (vobj_list_t::const_iterator iter = mObjects.begin(); iter != mObjects.end(); ++iter) { - objectp = mObjects[i]; + objectp = *iter; if (objectp->mDrawable.notNull()) { num_refs += objectp->mDrawable->findReferences(drawablep); @@ -1460,15 +1456,15 @@ void LLViewerObjectList::orphanize(LLViewerObject *childp, U32 parent_id, U32 ip // Unknown parent, add to orpaned child list U64 parent_info = getIndex(parent_id, ip, port); - if (-1 == mOrphanParents.find(parent_info)) + if (std::find(mOrphanParents.begin(), mOrphanParents.end(), parent_info) == mOrphanParents.end()) { - mOrphanParents.put(parent_info); + mOrphanParents.push_back(parent_info); } LLViewerObjectList::OrphanInfo oi(parent_info, childp->mID); - if (-1 == mOrphanChildren.find(oi)) + if (std::find(mOrphanChildren.begin(), mOrphanChildren.end(), oi) == mOrphanChildren.end()) { - mOrphanChildren.put(oi); + mOrphanChildren.push_back(oi); mNumOrphans++; } } @@ -1491,28 +1487,29 @@ void LLViewerObjectList::findOrphans(LLViewerObject* objectp, U32 ip, U32 port) // See if we are a parent of an orphan. // Note: This code is fairly inefficient but it should happen very rarely. // It can be sped up if this is somehow a performance issue... - if (0 == mOrphanParents.count()) + if (mOrphanParents.empty()) { // no known orphan parents return; } - if (-1 == mOrphanParents.find(getIndex(objectp->mLocalID, ip, port))) + if (std::find(mOrphanParents.begin(), mOrphanParents.end(), getIndex(objectp->mLocalID, ip, port)) == mOrphanParents.end()) { // did not find objectp in OrphanParent list return; } - S32 i; U64 parent_info = getIndex(objectp->mLocalID, ip, port); BOOL orphans_found = FALSE; // Iterate through the orphan list, and set parents of matching children. - for (i = 0; i < mOrphanChildren.count(); i++) - { - if (mOrphanChildren[i].mParentInfo != parent_info) + + for (std::vector<OrphanInfo>::iterator iter = mOrphanChildren.begin(); iter != mOrphanChildren.end(); ) + { + if (iter->mParentInfo != parent_info) { + ++iter; continue; } - LLViewerObject *childp = findObject(mOrphanChildren[i].mChildInfo); + LLViewerObject *childp = findObject(iter->mChildInfo); if (childp) { if (childp == objectp) @@ -1546,29 +1543,35 @@ void LLViewerObjectList::findOrphans(LLViewerObject* objectp, U32 ip, U32 port) objectp->addChild(childp); orphans_found = TRUE; + ++iter; } else { llinfos << "Missing orphan child, removing from list" << llendl; - mOrphanChildren.remove(i); - i--; + + iter = mOrphanChildren.erase(iter); } } // Remove orphan parent and children from lists now that they've been found - mOrphanParents.remove(mOrphanParents.find(parent_info)); - - i = 0; - while (i < mOrphanChildren.count()) { - if (mOrphanChildren[i].mParentInfo == parent_info) + std::vector<U64>::iterator iter = std::find(mOrphanParents.begin(), mOrphanParents.end(), parent_info); + if (iter != mOrphanParents.end()) + { + mOrphanParents.erase(iter); + } + } + + for (std::vector<OrphanInfo>::iterator iter = mOrphanChildren.begin(); iter != mOrphanChildren.end(); ) + { + if (iter->mParentInfo == parent_info) { - mOrphanChildren.remove(i); + iter = mOrphanChildren.erase(iter); mNumOrphans--; } else { - i++; + ++iter; } } diff --git a/indra/newview/llviewerobjectlist.h b/indra/newview/llviewerobjectlist.h index ace5c5038e..706966deae 100644 --- a/indra/newview/llviewerobjectlist.h +++ b/indra/newview/llviewerobjectlist.h @@ -38,8 +38,6 @@ // common includes #include "llstat.h" -#include "lldarrayptr.h" -#include "llmap.h" // *TODO: switch to std::map #include "llstring.h" // project includes @@ -50,7 +48,7 @@ class LLNetMap; class LLDebugBeacon; const U32 CLOSE_BIN_SIZE = 10; -const U32 NUM_BINS = 16; +const U32 NUM_BINS = 128; // GL name = position in object list + GL_NAME_INDEX_OFFSET so that // we can have special numbers like zero. @@ -111,13 +109,12 @@ public: void updateAvatarVisibility(); // Selection related stuff - void renderObjectsForSelect(LLCamera &camera, const LLRect& screen_rect, BOOL pick_parcel_wall = FALSE, BOOL render_transparent = TRUE); void generatePickList(LLCamera &camera); void renderPickList(const LLRect& screen_rect, BOOL pick_parcel_wall, BOOL render_transparent); LLViewerObject *getSelectedObject(const U32 object_id); - inline S32 getNumObjects() { return mObjects.count(); } + inline S32 getNumObjects() { return (S32) mObjects.size(); } void addToMap(LLViewerObject *objectp); void removeFromMap(LLViewerObject *objectp); @@ -131,7 +128,7 @@ public: S32 findReferences(LLDrawable *drawablep) const; // Find references to drawable in all objects, and return value. - S32 getOrphanParentCount() const { return mOrphanParents.count(); } + S32 getOrphanParentCount() const { return (S32) mOrphanParents.size(); } S32 getOrphanCount() const { return mNumOrphans; } void orphanize(LLViewerObject *childp, U32 parent_id, U32 ip, U32 port); void findOrphans(LLViewerObject* objectp, U32 ip, U32 port); @@ -179,26 +176,28 @@ public: S32 mNumUnknownKills; S32 mNumDeadObjects; protected: - LLDynamicArray<U64> mOrphanParents; // LocalID/ip,port of orphaned objects - LLDynamicArray<OrphanInfo> mOrphanChildren; // UUID's of orphaned objects + std::vector<U64> mOrphanParents; // LocalID/ip,port of orphaned objects + std::vector<OrphanInfo> mOrphanChildren; // UUID's of orphaned objects S32 mNumOrphans; - LLDynamicArrayPtr<LLPointer<LLViewerObject>, 256> mObjects; + typedef std::vector<LLPointer<LLViewerObject> > vobj_list_t; + + vobj_list_t mObjects; std::set<LLPointer<LLViewerObject> > mActiveObjects; - LLDynamicArrayPtr<LLPointer<LLViewerObject> > mMapObjects; + vobj_list_t mMapObjects; typedef std::map<LLUUID, LLPointer<LLViewerObject> > vo_map; vo_map mDeadObjects; // Need to keep multiple entries per UUID std::map<LLUUID, LLPointer<LLViewerObject> > mUUIDObjectMap; - LLDynamicArray<LLDebugBeacon> mDebugBeacons; + std::vector<LLDebugBeacon> mDebugBeacons; S32 mCurLazyUpdateIndex; static U32 sSimulatorMachineIndex; - static LLMap<U64, U32> sIPAndPortToIndex; + static std::map<U64, U32> sIPAndPortToIndex; static std::map<U64, LLUUID> sIndexAndLocalIDToUUID; @@ -233,6 +232,10 @@ public: extern LLViewerObjectList gObjectList; // Inlines +/** + * Note: + * it will return NULL for offline avatar_id + */ inline LLViewerObject *LLViewerObjectList::findObject(const LLUUID &id) { std::map<LLUUID, LLPointer<LLViewerObject> >::iterator iter = mUUIDObjectMap.find(id); @@ -260,12 +263,16 @@ inline LLViewerObject *LLViewerObjectList::getObject(const S32 index) inline void LLViewerObjectList::addToMap(LLViewerObject *objectp) { - mMapObjects.put(objectp); + mMapObjects.push_back(objectp); } inline void LLViewerObjectList::removeFromMap(LLViewerObject *objectp) { - mMapObjects.removeObj(objectp); + std::vector<LLPointer<LLViewerObject> >::iterator iter = std::find(mMapObjects.begin(), mMapObjects.end(), objectp); + if (iter != mMapObjects.end()) + { + mMapObjects.erase(iter); + } } diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index 90a7ee98b9..2c5c0a37e8 100644 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -34,6 +34,7 @@ #include "llviewerparcelmedia.h" #include "llagent.h" +#include "llaudioengine.h" #include "llviewercontrol.h" #include "llviewermedia.h" #include "llviewerregion.h" @@ -44,7 +45,7 @@ #include "llviewermediafocus.h" #include "llviewerparcelmediaautoplay.h" #include "llnotificationsutil.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llpluginclassmedia.h" #include "llviewertexture.h" @@ -55,10 +56,6 @@ LLUUID LLViewerParcelMedia::sMediaRegionID; viewer_media_t LLViewerParcelMedia::sMediaImpl; -// Local functions -bool callback_play_media(const LLSD& notification, const LLSD& response, LLParcel* parcel); - - // static void LLViewerParcelMedia::initClass() { @@ -108,15 +105,6 @@ void LLViewerParcelMedia::update(LLParcel* parcel) std::string mediaUrl = std::string ( parcel->getMediaURL () ); std::string mediaCurrentUrl = std::string( parcel->getMediaCurrentURL()); - // First use warning - if( ! mediaUrl.empty() && gWarningSettings.getBOOL("FirstStreamingVideo") ) - { - LLNotificationsUtil::add("ParcelCanPlayMedia", LLSD(), LLSD(), - boost::bind(callback_play_media, _1, _2, parcel)); - return; - - } - // if we have a current (link sharing) url, use it instead if (mediaCurrentUrl != "" && parcel->getMediaType() == "text/html") { @@ -182,7 +170,7 @@ void LLViewerParcelMedia::play(LLParcel* parcel) if (!parcel) return; - if (!gSavedSettings.getBOOL("AudioSteamingMedia") || !gSavedSettings.getBOOL("AudioStreamingVideo")) + if (!gSavedSettings.getBOOL("AudioStreamingMedia")) return; std::string media_url = parcel->getMediaURL(); @@ -215,22 +203,15 @@ void LLViewerParcelMedia::play(LLParcel* parcel) else { // Since the texture id is different, we need to generate a new impl - LL_DEBUGS("Media") << "new media impl with mime type " << mime_type << ", url " << media_url << LL_ENDL; // Delete the old one first so they don't fight over the texture. sMediaImpl = NULL; - - sMediaImpl = LLViewerMedia::newMediaImpl( - placeholder_texture_id, - media_width, - media_height, - media_auto_scale, - media_loop); - sMediaImpl->setIsParcelMedia(true); - sMediaImpl->navigateTo(media_url, mime_type, true); + + // A new impl will be created below. } } - else + + if(!sMediaImpl) { LL_DEBUGS("Media") << "new media impl with mime type " << mime_type << ", url " << media_url << LL_ENDL; @@ -245,7 +226,7 @@ void LLViewerParcelMedia::play(LLParcel* parcel) sMediaImpl->navigateTo(media_url, mime_type, true); } - LLFirstUse::useMedia(); + //LLFirstUse::useMedia(); LLViewerParcelMediaAutoPlay::playStarted(); } @@ -284,7 +265,7 @@ void LLViewerParcelMedia::start() } sMediaImpl->start(); - LLFirstUse::useMedia(); + //LLFirstUse::useMedia(); LLViewerParcelMediaAutoPlay::playStarted(); } @@ -588,24 +569,6 @@ void LLViewerParcelMedia::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent }; } -bool callback_play_media(const LLSD& notification, const LLSD& response, LLParcel* parcel) -{ - S32 option = LLNotificationsUtil::getSelectedOption(notification, response); - if (option == 0) - { - gSavedSettings.setBOOL("AudioStreamingVideo", TRUE); - if(!gSavedSettings.getBOOL("AudioSteamingMedia")) - gSavedSettings.setBOOL("AudioSteamingMedia", TRUE); - LLViewerParcelMedia::play(parcel); - } - else - { - gSavedSettings.setBOOL("AudioStreamingVideo", FALSE); - } - gWarningSettings.setBOOL("FirstStreamingVideo", FALSE); - return false; -} - // TODO: observer /* void LLViewerParcelMediaNavigationObserver::onNavigateComplete( const EventType& event_in ) diff --git a/indra/newview/llviewerparcelmediaautoplay.cpp b/indra/newview/llviewerparcelmediaautoplay.cpp index 1b79b47905..ad2723b66b 100644 --- a/indra/newview/llviewerparcelmediaautoplay.cpp +++ b/indra/newview/llviewerparcelmediaautoplay.cpp @@ -35,6 +35,7 @@ #include "llviewerparcelmedia.h" #include "llviewercontrol.h" #include "llviewermedia.h" +#include "llviewerregion.h" #include "llparcel.h" #include "llviewerparcelmgr.h" #include "lluuid.h" @@ -48,6 +49,8 @@ const F32 AUTOPLAY_SPEED = 0.1f; // how slow should the agent be moving t LLViewerParcelMediaAutoPlay::LLViewerParcelMediaAutoPlay() : LLEventTimer(1), + + mLastParcelID(-1), mPlayed(FALSE), mTimeInParcel(0) { @@ -81,9 +84,18 @@ void LLViewerParcelMediaAutoPlay::playStarted() BOOL LLViewerParcelMediaAutoPlay::tick() { LLParcel *this_parcel = NULL; + LLViewerRegion *this_region = NULL; std::string this_media_url; LLUUID this_media_texture_id; S32 this_parcel_id = 0; + LLUUID this_region_id; + + this_region = gAgent.getRegion(); + + if (this_region) + { + this_region_id = this_region->getRegionID(); + } this_parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); @@ -96,12 +108,14 @@ BOOL LLViewerParcelMediaAutoPlay::tick() this_parcel_id = this_parcel->getLocalID(); } - if (this_parcel_id != mLastParcelID) + if (this_parcel_id != mLastParcelID || + this_region_id != mLastRegionID) { // we've entered a new parcel mPlayed = FALSE; // we haven't autoplayed yet mTimeInParcel = 0; // reset our timer mLastParcelID = this_parcel_id; + mLastRegionID = this_region_id; } mTimeInParcel += mPeriod; // increase mTimeInParcel by the amount of time between ticks diff --git a/indra/newview/llviewerparcelmediaautoplay.h b/indra/newview/llviewerparcelmediaautoplay.h index 16279e7f1f..40142c1dd1 100644 --- a/indra/newview/llviewerparcelmediaautoplay.h +++ b/indra/newview/llviewerparcelmediaautoplay.h @@ -33,7 +33,8 @@ #ifndef LLVIEWERPARCELMEDIAAUTOPLAY_H #define LLVIEWERPARCELMEDIAAUTOPLAY_H -#include "lltimer.h" +#include "lleventtimer.h" +#include "lluuid.h" // timer to automatically play media class LLViewerParcelMediaAutoPlay : LLEventTimer @@ -47,6 +48,7 @@ class LLViewerParcelMediaAutoPlay : LLEventTimer private: S32 mLastParcelID; + LLUUID mLastRegionID; BOOL mPlayed; F32 mTimeInParcel; }; diff --git a/indra/newview/llviewerparcelmgr.cpp b/indra/newview/llviewerparcelmgr.cpp index be68a2ef42..1f6bbcbae8 100644 --- a/indra/newview/llviewerparcelmgr.cpp +++ b/indra/newview/llviewerparcelmgr.cpp @@ -44,14 +44,16 @@ #include "llparcel.h" #include "llsecondlifeurls.h" #include "message.h" +#include "llfloaterreg.h" // Viewer includes #include "llagent.h" #include "llviewerwindow.h" #include "llviewercontrol.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llfloaterbuyland.h" #include "llfloatergroups.h" +#include "llpanelnearbymedia.h" #include "llfloatersellland.h" #include "llfloatertools.h" #include "llparcelselection.h" @@ -67,7 +69,6 @@ #include "llviewerparceloverlay.h" #include "llviewerregion.h" #include "llworld.h" -#include "lloverlaybar.h" #include "roles_constants.h" #include "llweb.h" @@ -665,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 @@ -697,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(); + return (region && region->getAllowDamage()) + || (parcel && parcel->getAllowDamage()); } BOOL LLViewerParcelMgr::isOwnedAt(const LLVector3d& pos_global) const @@ -1318,14 +1325,37 @@ void LLViewerParcelMgr::sendParcelPropertiesUpdate(LLParcel* parcel, bool use_ag void LLViewerParcelMgr::setHoverParcel(const LLVector3d& pos) { - //FIXME: only request parcel info when tooltip is shown - return; - /*LLViewerRegion* region = LLWorld::getInstance()->getRegionFromPosGlobal( pos ); + static U32 last_west, last_south; + + + // only request parcel info when tooltip is shown + if (!gSavedSettings.getBOOL("ShowLandHoverTip")) + { + return; + } + + // only request parcel info if position has changed outside of the + // last parcel grid step + U32 west_parcel_step = (U32) floor( pos.mdV[VX] / PARCEL_GRID_STEP_METERS ); + U32 south_parcel_step = (U32) floor( pos.mdV[VY] / PARCEL_GRID_STEP_METERS ); + + if ((west_parcel_step == last_west) && (south_parcel_step == last_south)) + { + return; + } + else + { + last_west = west_parcel_step; + last_south = south_parcel_step; + } + + LLViewerRegion* region = LLWorld::getInstance()->getRegionFromPosGlobal( pos ); if (!region) { return; } + // Send a rectangle around the point. // This means the parcel sent back is at least a rectangle around the point, // which is more efficient for public land. Fewer requests are sent. JC @@ -1352,7 +1382,7 @@ void LLViewerParcelMgr::setHoverParcel(const LLVector3d& pos) msg->addBOOL("SnapSelection", FALSE ); msg->sendReliable( region->getHost() ); - mHoverRequestResult = PARCEL_RESULT_NO_DATA;*/ + mHoverRequestResult = PARCEL_RESULT_NO_DATA; } @@ -1732,10 +1762,16 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use { optionally_start_music(music_url); } + else + { + llinfos << "Stopping parcel music (invalid audio stream URL)" << llendl; + // clears the URL + gAudiop->startInternetStream(LLStringUtil::null); + } } else if (!gAudiop->getInternetStreamURL().empty()) { - llinfos << "Stopping parcel music" << llendl; + llinfos << "Stopping parcel music (parcel stream URL is empty)" << llendl; gAudiop->startInternetStream(LLStringUtil::null); } } @@ -1754,15 +1790,20 @@ void LLViewerParcelMgr::processParcelProperties(LLMessageSystem *msg, void **use void optionally_start_music(const std::string& music_url) { - if (gSavedSettings.getBOOL("AudioStreamingMusic") && gSavedSettings.getBOOL("AudioSteamingMedia")) - { - // Make the user click the start button on the overlay bar. JC - // llinfos << "Starting parcel music " << music_url << llendl; - - // now only play music when you enter a new parcel if the control is in PLAY state - // changed as part of SL-4878 - if ( gOverlayBar && gOverlayBar->musicPlaying()) + if (gSavedSettings.getBOOL("AudioStreamingMusic") && + gSavedSettings.getBOOL("AudioStreamingMedia")) + { + // only play music when you enter a new parcel if the UI control for this + // was not *explicitly* stopped by the user. (part of SL-4878) + LLPanelNearByMedia* nearby_media_panel = gStatusBar->getNearbyMediaPanel();; + if ((nearby_media_panel && + nearby_media_panel->getParcelAudioAutoStart()) || + // or they have expressed no opinion in the UI, but have autoplay on... + (!nearby_media_panel && + gSavedSettings.getBOOL(LLViewerMedia::AUTO_PLAY_MEDIA_SETTING) && + gSavedSettings.getBOOL("MediaTentativeAutoPlay"))) { + llinfos << "Starting parcel music " << music_url << llendl; gAudiop->startInternetStream(music_url); } } @@ -1786,7 +1827,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; } diff --git a/indra/newview/llviewerparcelmgr.h b/indra/newview/llviewerparcelmgr.h index 379190789b..98be8e2c7b 100644 --- a/indra/newview/llviewerparcelmgr.h +++ b/indra/newview/llviewerparcelmgr.h @@ -171,26 +171,28 @@ public: // 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]); } diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp index 841a7ccc5e..6b480ccf8e 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) { diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index 77d2d493bd..ce627494c8 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -49,6 +49,7 @@ #include "llagent.h" #include "llcallingcard.h" #include "llcaphttpsender.h" +#include "llcommandhandler.h" #include "lldir.h" #include "lleventpoll.h" #include "llfloatergodtools.h" @@ -58,6 +59,7 @@ #include "llsdutil.h" #include "llstartup.h" #include "lltrans.h" +#include "llurldispatcher.h" #include "llviewerobjectlist.h" #include "llviewerparceloverlay.h" #include "llvlmanager.h" @@ -82,6 +84,45 @@ extern BOOL gNoRender; const F32 WATER_TEXTURE_SCALE = 8.f; // Number of times to repeat the water texture across a region const S16 MAX_MAP_DIST = 10; +// support for secondlife:///app/region/{REGION} SLapps +// N.B. this is defined to work exactly like the classic secondlife://{REGION} +// However, the later syntax cannot support spaces in the region name because +// spaces (and %20 chars) are illegal in the hostname of an http URL. Some +// browsers let you get away with this, but some do not (such as Qt's Webkit). +// Hence we introduced the newer secondlife:///app/region alternative. +class LLRegionHandler : public LLCommandHandler +{ +public: + // requests will be throttled from a non-trusted browser + LLRegionHandler() : LLCommandHandler("region", UNTRUSTED_THROTTLE) {} + + bool handle(const LLSD& params, const LLSD& query_map, LLMediaCtrl* web) + { + // make sure that we at least have a region name + int num_params = params.size(); + if (num_params < 1) + { + return false; + } + + // build a secondlife://{PLACE} SLurl from this SLapp + std::string url = "secondlife://"; + for (int i = 0; i < num_params; i++) + { + if (i > 0) + { + url += "/"; + } + url += params[i].asString(); + } + + // Process the SLapp as if it was a secondlife://{PLACE} SLurl + LLURLDispatcher::dispatch(url, web, true); + return true; + } +}; +LLRegionHandler gRegionHandler; + class BaseCapabilitiesComplete : public LLHTTPClient::Responder { LOG_CLASS(BaseCapabilitiesComplete); diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index 6dc9f5c465..86b1a8c910 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); diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp index 300aea1620..ea8af223c3 100644 --- a/indra/newview/llviewertexteditor.cpp +++ b/indra/newview/llviewertexteditor.cpp @@ -37,7 +37,6 @@ #include "llagent.h" #include "llaudioengine.h" #include "llavataractions.h" -#include "llfloaterchat.h" #include "llfloaterreg.h" #include "llfloaterworldmap.h" #include "llfocusmgr.h" @@ -247,7 +246,7 @@ public: return FALSE; } - /*virtual*/ const LLStyleSP getStyle() const { return mStyle; } + /*virtual*/ LLStyleConstSP getStyle() const { return mStyle; } private: LLUIImagePtr mImage; diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index ae9db94000..01d437f9eb 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -293,6 +293,8 @@ void LLViewerTextureManager::init() } } imagep->createGLTexture(0, image_raw); + //cache the raw image + imagep->setCachedRawImage(0, image_raw) ; image_raw = NULL; #else LLViewerFetchedTexture::sDefaultImagep = LLViewerTextureManager::getFetchedTexture(IMG_DEFAULT, TRUE, LLViewerTexture::BOOST_UI); @@ -495,6 +497,10 @@ void LLViewerTexture::init(bool firstinit) mNeedsResetMaxVirtualSize = FALSE ; mAdditionalDecodePriority = 0.f ; mParcelMedia = NULL ; + mNumFaces = 0 ; + mNumVolumes = 0; + mFaceList.clear() ; + mVolumeList.clear(); } //virtual @@ -506,7 +512,7 @@ S8 LLViewerTexture::getType() const void LLViewerTexture::cleanup() { mFaceList.clear() ; - + mVolumeList.clear(); if(mGLTexturep) { mGLTexturep->cleanup(); @@ -627,16 +633,115 @@ void LLViewerTexture::setKnownDrawSize(S32 width, S32 height) //virtual void LLViewerTexture::addFace(LLFace* facep) { - mFaceList.push_back(facep) ; + if(mNumFaces >= mFaceList.size()) + { + mFaceList.resize(2 * mNumFaces + 1) ; + } + mFaceList[mNumFaces] = facep ; + facep->setIndexInTex(mNumFaces) ; + mNumFaces++ ; + mLastFaceListUpdateTimer.reset() ; } //virtual void LLViewerTexture::removeFace(LLFace* facep) { - mFaceList.remove(facep) ; + if(mNumFaces > 1) + { + S32 index = facep->getIndexInTex() ; + mFaceList[index] = mFaceList[--mNumFaces] ; + mFaceList[index]->setIndexInTex(index) ; + } + else + { + mFaceList.clear() ; + mNumFaces = 0 ; + } + mLastFaceListUpdateTimer.reset() ; +} + +S32 LLViewerTexture::getNumFaces() const +{ + return mNumFaces ; +} + + +//virtual +void LLViewerTexture::addVolume(LLVOVolume* volumep) +{ + if( mNumVolumes >= mVolumeList.size()) + { + mVolumeList.resize(2 * mNumVolumes + 1) ; + } + mVolumeList[mNumVolumes] = volumep ; + volumep->setIndexInTex(mNumVolumes) ; + mNumVolumes++ ; + mLastVolumeListUpdateTimer.reset() ; } //virtual +void LLViewerTexture::removeVolume(LLVOVolume* volumep) +{ + if(mNumVolumes > 1) + { + S32 index = volumep->getIndexInTex() ; + mVolumeList[index] = mVolumeList[--mNumVolumes] ; + mVolumeList[index]->setIndexInTex(index) ; + } + else + { + mVolumeList.clear() ; + mNumVolumes = 0 ; + } + mLastVolumeListUpdateTimer.reset() ; +} + +S32 LLViewerTexture::getNumVolumes() const +{ + return mNumVolumes ; +} + +void LLViewerTexture::reorganizeFaceList() +{ + static const F32 MAX_WAIT_TIME = 20.f; // seconds + static const U32 MAX_EXTRA_BUFFER_SIZE = 4 ; + + if(mNumFaces + MAX_EXTRA_BUFFER_SIZE > mFaceList.size()) + { + return ; + } + + if(mLastFaceListUpdateTimer.getElapsedTimeF32() < MAX_WAIT_TIME) + { + return ; + } + + mLastFaceListUpdateTimer.reset() ; + mFaceList.erase(mFaceList.begin() + mNumFaces, mFaceList.end()); +} + +void LLViewerTexture::reorganizeVolumeList() +{ + static const F32 MAX_WAIT_TIME = 20.f; // seconds + static const U32 MAX_EXTRA_BUFFER_SIZE = 4 ; + + if(mNumVolumes + MAX_EXTRA_BUFFER_SIZE > mVolumeList.size()) + { + return ; + } + + if(mLastVolumeListUpdateTimer.getElapsedTimeF32() < MAX_WAIT_TIME) + { + return ; + } + + mLastVolumeListUpdateTimer.reset() ; + mVolumeList.erase(mVolumeList.begin() + mNumVolumes, mVolumeList.end()); +} + + + +//virtual void LLViewerTexture::switchToCachedImage() { //nothing here. @@ -671,7 +776,7 @@ void LLViewerTexture::generateGLTexture() LLImageGL* LLViewerTexture::getGLTexture() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep ; } @@ -688,7 +793,7 @@ BOOL LLViewerTexture::createGLTexture() BOOL LLViewerTexture::createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename, BOOL to_create, S32 category) { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; BOOL ret = mGLTexturep->createGLTexture(discard_level, imageraw, usename, to_create, category) ; @@ -696,63 +801,69 @@ BOOL LLViewerTexture::createGLTexture(S32 discard_level, const LLImageRaw* image { mFullWidth = mGLTexturep->getCurrentWidth() ; mFullHeight = mGLTexturep->getCurrentHeight() ; - mComponents = mGLTexturep->getComponents() ; + mComponents = mGLTexturep->getComponents() ; } return ret ; } +//virtual +void LLViewerTexture::setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) +{ + //nothing here. +} + void LLViewerTexture::setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format, BOOL swap_bytes) { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; mGLTexturep->setExplicitFormat(internal_format, primary_format, type_format, swap_bytes) ; } void LLViewerTexture::setAddressMode(LLTexUnit::eTextureAddressMode mode) { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; mGLTexturep->setAddressMode(mode) ; } void LLViewerTexture::setFilteringOption(LLTexUnit::eTextureFilterOptions option) { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; mGLTexturep->setFilteringOption(option) ; } //virtual S32 LLViewerTexture::getWidth(S32 discard_level) const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getWidth(discard_level) ; } //virtual S32 LLViewerTexture::getHeight(S32 discard_level) const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getHeight(discard_level) ; } S32 LLViewerTexture::getMaxDiscardLevel() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getMaxDiscardLevel() ; } S32 LLViewerTexture::getDiscardLevel() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getDiscardLevel() ; } S8 LLViewerTexture::getComponents() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getComponents() ; } LLGLuint LLViewerTexture::getTexName() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getTexName() ; } @@ -777,124 +888,124 @@ BOOL LLViewerTexture::getBoundRecently() const LLTexUnit::eTextureType LLViewerTexture::getTarget(void) const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getTarget() ; } BOOL LLViewerTexture::setSubImage(const LLImageRaw* imageraw, S32 x_pos, S32 y_pos, S32 width, S32 height) { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->setSubImage(imageraw, x_pos, y_pos, width, height) ; } BOOL LLViewerTexture::setSubImage(const U8* datap, S32 data_width, S32 data_height, S32 x_pos, S32 y_pos, S32 width, S32 height) { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->setSubImage(datap, data_width, data_height, x_pos, y_pos, width, height) ; } void LLViewerTexture::setGLTextureCreated (bool initialized) { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; mGLTexturep->setGLTextureCreated (initialized) ; } void LLViewerTexture::setCategory(S32 category) { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; mGLTexturep->setCategory(category) ; } LLTexUnit::eTextureAddressMode LLViewerTexture::getAddressMode(void) const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getAddressMode() ; } S32 LLViewerTexture::getTextureMemory() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->mTextureMemory ; } LLGLenum LLViewerTexture::getPrimaryFormat() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getPrimaryFormat() ; } BOOL LLViewerTexture::getIsAlphaMask() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getIsAlphaMask() ; } BOOL LLViewerTexture::getMask(const LLVector2 &tc) { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getMask(tc) ; } F32 LLViewerTexture::getTimePassedSinceLastBound() { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getTimePassedSinceLastBound() ; } BOOL LLViewerTexture::getMissed() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getMissed() ; } BOOL LLViewerTexture::isJustBound() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->isJustBound() ; } void LLViewerTexture::forceUpdateBindStats(void) const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->forceUpdateBindStats() ; } U32 LLViewerTexture::getTexelsInAtlas() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getTexelsInAtlas() ; } U32 LLViewerTexture::getTexelsInGLTexture() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getTexelsInGLTexture() ; } BOOL LLViewerTexture::isGLTextureCreated() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->isGLTextureCreated() ; } S32 LLViewerTexture::getDiscardLevelInAtlas() const { - llassert_always(mGLTexturep.notNull()) ; + llassert(mGLTexturep.notNull()) ; return mGLTexturep->getDiscardLevelInAtlas() ; } @@ -930,12 +1041,6 @@ void LLViewerTexture::updateBindStatsForTester() //start of LLViewerFetchedTexture //---------------------------------------------------------------------------------------------- -//static -F32 LLViewerFetchedTexture::maxDecodePriority() -{ - return 6000000.f; -} - LLViewerFetchedTexture::LLViewerFetchedTexture(const LLUUID& id, const LLHost& host, BOOL usemipmaps) : LLViewerTexture(id, usemipmaps), mTargetHost(host) @@ -985,6 +1090,8 @@ void LLViewerFetchedTexture::init(bool firstinit) // does not contain this image. mIsMissingAsset = FALSE; + mLoadedCallbackDesiredDiscardLevel = 0; + mNeedsCreateTexture = FALSE; mIsRawImageValid = FALSE; @@ -997,6 +1104,7 @@ void LLViewerFetchedTexture::init(bool firstinit) mFetchPriority = 0; mDownloadProgress = 0.f; mFetchDeltaTime = 999999.f; + mRequestDeltaTime = 0.f; mForSculpt = FALSE ; mIsFetched = FALSE ; @@ -1149,20 +1257,30 @@ void LLViewerFetchedTexture::destroyTexture() mFullyLoaded = FALSE ; } -// -//do not change the discard level of the loaded texture image. -BOOL LLViewerFetchedTexture::keepReuestedDiscardLevel() +void LLViewerFetchedTexture::addToCreateTexture() { - if (!mLoadedCallbackList.empty()) + bool force_update = false ; + if (getComponents() != mRawImage->getComponents()) { - return TRUE ; - } + // We've changed the number of components, so we need to move any + // objects using this pool to a different pool. + mComponents = mRawImage->getComponents(); + mGLTexturep->setComponents(mComponents) ; + force_update = true ; - return FALSE ; -} + for(U32 i = 0 ; i < mNumFaces ; i++) + { + mFaceList[i]->dirtyTexture() ; + } + + //discard the cached raw image and the saved raw image + mCachedRawImageReady = FALSE ; + mCachedRawDiscardLevel = -1 ; + mCachedRawImage = NULL ; + mSavedRawDiscardLevel = -1 ; + mSavedRawImage = NULL ; + } -void LLViewerFetchedTexture::addToCreateTexture() -{ if(isForSculptOnly()) { //just update some variables, not to create a real GL texture. @@ -1170,6 +1288,11 @@ void LLViewerFetchedTexture::addToCreateTexture() mNeedsCreateTexture = FALSE ; destroyRawImage(); } + else if(!force_update && getDiscardLevel() > -1 && getDiscardLevel() <= mRawDiscardLevel) + { + mNeedsCreateTexture = FALSE ; + destroyRawImage(); + } else { #if 1 @@ -1178,7 +1301,7 @@ void LLViewerFetchedTexture::addToCreateTexture() //so do not scale down the over qualified image. //Note: scaling down image is expensensive. Do it only when very necessary. // - if(mRequestedDiscardLevel <= mDesiredDiscardLevel && !keepReuestedDiscardLevel()) + if(mRequestedDiscardLevel <= mDesiredDiscardLevel && !mForceToSaveRawImage) { S32 w = mFullWidth >> mRawDiscardLevel; S32 h = mFullHeight >> mRawDiscardLevel; @@ -1291,28 +1414,12 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/) setActive() ; } - // - // Iterate through the list of image loading callbacks to see - // what sort of data they need. - // - // *TODO: Fix image callback code - BOOL imageraw_callbacks = FALSE; - for(callback_list_t::iterator iter = mLoadedCallbackList.begin(); - iter != mLoadedCallbackList.end(); ) - { - LLLoadedCallbackEntry *entryp = *iter++; - if (entryp->mNeedsImageRaw) - { - imageraw_callbacks = TRUE; - break; - } - } - - if (!imageraw_callbacks) + if (!mForceToSaveRawImage) { mNeedsAux = FALSE; - destroyRawImage(); } + destroyRawImage(); + return res; } @@ -1379,6 +1486,13 @@ void LLViewerFetchedTexture::processTextureStats() } } +const F32 MAX_PRIORITY_PIXEL = 999.f ; //pixel area +const F32 PRIORITY_BOOST_LEVEL_FACTOR = 1000.f ; //boost level +const F32 PRIORITY_DELTA_DISCARD_LEVEL_FACTOR = 100000.f ; //delta discard +const S32 MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY = 4 ; +const F32 PRIORITY_ADDITIONAL_FACTOR = 1000000.f ; //additional +const S32 MAX_ADDITIONAL_LEVEL_FOR_PRIORITY = 8 ; +const F32 PRIORITY_BOOST_HIGH_FACTOR = 10000000.f ;//boost high F32 LLViewerFetchedTexture::calcDecodePriority() { #ifndef LL_RELEASE_FOR_DOWNLOAD @@ -1388,25 +1502,20 @@ F32 LLViewerFetchedTexture::calcDecodePriority() } #endif - if(mFullyLoaded)//already loaded for static texture - { - return -4.0f ; //alreay fetched - } - if (mNeedsCreateTexture) { return mDecodePriority; // no change while waiting to create } - if(mForceToSaveRawImage) + if(mFullyLoaded && !mForceToSaveRawImage)//already loaded for static texture { - return maxDecodePriority() ; + return -4.0f ; //alreay fetched } - - S32 cur_discard = getDiscardLevel(); + + S32 cur_discard = getCurrentDiscardLevelForFetching(); bool have_all_data = (cur_discard >= 0 && (cur_discard <= mDesiredDiscardLevel)); F32 pixel_priority = fsqrtf(mMaxVirtualSize); - F32 priority; + F32 priority = 0.f; if (mIsMissingAsset) { priority = 0.0f; @@ -1449,8 +1558,8 @@ F32 LLViewerFetchedTexture::calcDecodePriority() static const F64 log_2 = log(2.0); F32 desired = (F32)(log(32.0/pixel_priority) / log_2); S32 ddiscard = MAX_DISCARD_LEVEL - (S32)desired; - ddiscard = llclamp(ddiscard, 0, 4); - priority = (ddiscard+1)*100000.f; + ddiscard = llclamp(ddiscard, 0, MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY); + priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR; } else if ((mMinDiscardLevel > 0) && (cur_discard <= mMinDiscardLevel)) { @@ -1469,50 +1578,66 @@ F32 LLViewerFetchedTexture::calcDecodePriority() { desired_discard -= 2; } - else if (!isJustBound() && mCachedRawImageReady && !mBoostLevel) - { - // We haven't rendered this in the last half second, and we have a cached raw image, leave the desired discard as-is - desired_discard = cur_discard; - } - else if (mGLTexturep.notNull() && !mGLTexturep->getBoundRecently() && mBoostLevel == LLViewerTexture::BOOST_NONE) + else if (!isJustBound() && mCachedRawImageReady) { - // We haven't rendered this in a while, de-prioritize it - desired_discard += 2; + //if(mBoostLevel < BOOST_HIGH) + //{ + // // We haven't rendered this in a while, de-prioritize it + // desired_discard += 2; + //} + //else + { + // We haven't rendered this in the last half second, and we have a cached raw image, leave the desired discard as-is + desired_discard = cur_discard; + } } + S32 ddiscard = cur_discard - desired_discard; - ddiscard = llclamp(ddiscard, 0, 4); - priority = (ddiscard+1)*100000.f; + ddiscard = llclamp(ddiscard, 0, MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY); + priority = (ddiscard + 1) * PRIORITY_DELTA_DISCARD_LEVEL_FACTOR; } // Priority Formula: // BOOST_HIGH + ADDITIONAL PRI + DELTA DISCARD + BOOST LEVEL + PIXELS - // [10,000,000] + [1-9,000,000] + [1-400,000] + [1-20,000] + [0-999] + // [10,000,000] + [1,000,000-9,000,000] + [100,000-500,000] + [1-20,000] + [0-999] if (priority > 0.0f) { - pixel_priority = llclamp(pixel_priority, 0.0f, 999.f); + pixel_priority = llclamp(pixel_priority, 0.0f, MAX_PRIORITY_PIXEL); - priority = pixel_priority + 1000.f * mBoostLevel; + priority += pixel_priority + PRIORITY_BOOST_LEVEL_FACTOR * mBoostLevel; if ( mBoostLevel > BOOST_HIGH) { - priority += 10000000.f; + priority += PRIORITY_BOOST_HIGH_FACTOR; } if(mAdditionalDecodePriority > 0.0f) { - // 1-9 - S32 additional_priority = (S32)(1.0f + mAdditionalDecodePriority*8.0f + .5f); // round - // priority range += 0-9,000,000 - priority += 1000000.f * (F32)additional_priority; + // priority range += 1,000,000.f-9,000,000.f + priority += PRIORITY_ADDITIONAL_FACTOR * (1.0 + mAdditionalDecodePriority * MAX_ADDITIONAL_LEVEL_FOR_PRIORITY); } } return priority; } + +//static +F32 LLViewerFetchedTexture::maxDecodePriority() +{ + static const F32 max_priority = PRIORITY_BOOST_HIGH_FACTOR + //boost_high + PRIORITY_ADDITIONAL_FACTOR * (MAX_ADDITIONAL_LEVEL_FOR_PRIORITY + 1) + //additional (view dependent factors) + PRIORITY_DELTA_DISCARD_LEVEL_FACTOR * (MAX_DELTA_DISCARD_LEVEL_FOR_PRIORITY + 1) + //delta discard + PRIORITY_BOOST_LEVEL_FACTOR * (BOOST_MAX_LEVEL - 1) + //boost level + MAX_PRIORITY_PIXEL + 1.0f ; //pixel area. + + return max_priority ; +} + //============================================================================ void LLViewerFetchedTexture::setDecodePriority(F32 priority) { - llassert(!mInImageList); + llassert(!mInImageList); + mDecodePriority = priority; } @@ -1531,23 +1656,52 @@ void LLViewerFetchedTexture::updateVirtualSize() { addTextureStats(0.f, FALSE) ;//reset } - if(mFaceList.size() > 0) + + if(mForceToSaveRawImage) + { + setAdditionalDecodePriority(0.75f) ; //boost the fetching priority + } + + for(U32 i = 0 ; i < mNumFaces ; i++) { - for(std::list<LLFace*>::iterator iter = mFaceList.begin(); iter != mFaceList.end(); ++iter) + LLFace* facep = mFaceList[i] ; + if(facep->getDrawable()->isRecentlyVisible()) { - LLFace* facep = *iter ; - if(facep->getDrawable()->isRecentlyVisible()) - { - addTextureStats(facep->getVirtualSize()) ; - setAdditionalDecodePriority(facep->getImportanceToCamera()) ; - } - } + addTextureStats(facep->getVirtualSize()) ; + setAdditionalDecodePriority(facep->getImportanceToCamera()) ; + } } mNeedsResetMaxVirtualSize = TRUE ; + reorganizeFaceList() ; + reorganizeVolumeList(); +} + +S32 LLViewerFetchedTexture::getCurrentDiscardLevelForFetching() +{ + S32 current_discard = getDiscardLevel() ; + if(mForceToSaveRawImage) + { + if(mSavedRawDiscardLevel < 0 || current_discard < 0) + { + current_discard = -1 ; + } + else + { + current_discard = llmax(current_discard, mSavedRawDiscardLevel) ; + } + } + + return current_discard ; } bool LLViewerFetchedTexture::updateFetch() { + static LLCachedControl<bool> textures_decode_disabled(gSavedSettings,"TextureDecodeDisabled"); + if(textures_decode_disabled) + { + return false ; + } + mFetchState = 0; mFetchPriority = 0; mFetchDeltaTime = 999999.f; @@ -1576,24 +1730,16 @@ bool LLViewerFetchedTexture::updateFetch() return false; // process any raw image data in callbacks before replacing } - S32 current_discard = getDiscardLevel() ; + S32 current_discard = getCurrentDiscardLevelForFetching() ; S32 desired_discard = getDesiredDiscardLevel(); F32 decode_priority = getDecodePriority(); decode_priority = llmax(decode_priority, 0.0f); - + if (mIsFetching) { // Sets mRawDiscardLevel, mRawImage, mAuxRawImage S32 fetch_discard = current_discard; - if(mForceToSaveRawImage) - { - if(fetch_discard >= 0) - { - fetch_discard = llmax(fetch_discard, mSavedRawDiscardLevel) ; - } - } - if (mRawImage.notNull()) sRawCount--; if (mAuxRawImage.notNull()) sAuxCount--; bool finished = LLAppViewer::getTextureFetch()->getRequestFinished(getID(), fetch_discard, mRawImage, mAuxRawImage); @@ -1621,18 +1767,6 @@ bool LLViewerFetchedTexture::updateFetch() if ((mRawImage->getDataSize() > 0 && mRawDiscardLevel >= 0) && (current_discard < 0 || mRawDiscardLevel < current_discard)) { - if (getComponents() != mRawImage->getComponents()) - { - // We've changed the number of components, so we need to move any - // objects using this pool to a different pool. - mComponents = mRawImage->getComponents(); - mGLTexturep->setComponents(mComponents) ; - - for(ll_face_list_t::iterator iter = mFaceList.begin(); iter != mFaceList.end(); ++iter) - { - (*iter)->dirtyTexture() ; - } - } mFullWidth = mRawImage->getWidth() << mRawDiscardLevel; mFullHeight = mRawImage->getHeight() << mRawDiscardLevel; @@ -1698,18 +1832,6 @@ bool LLViewerFetchedTexture::updateFetch() } } - if (!mDontDiscard) - { - if (mBoostLevel == 0) - { - desired_discard = llmax(desired_discard, current_discard-1); - } - else - { - desired_discard = llmax(desired_discard, current_discard-2); - } - } - bool make_request = true; if (decode_priority <= 0) { @@ -1723,12 +1845,24 @@ bool LLViewerFetchedTexture::updateFetch() { make_request = false; } - else if (!isJustBound() && mCachedRawImageReady) - { - make_request = false; - } - else + //else if (!isJustBound() && mCachedRawImageReady) + //{ + // make_request = false; + //} + + if(make_request) { + //load the texture progressively. + S32 delta_level = (mBoostLevel > LLViewerTexture::BOOST_NONE) ? 2 : 1 ; + if(current_discard < 0) + { + desired_discard = llmax(desired_discard, getMaxDiscardLevel() - delta_level); + } + else + { + desired_discard = llmax(desired_discard, current_discard - delta_level); + } + if (mIsFetching) { if (mRequestedDiscardLevel <= desired_discard) @@ -1748,7 +1882,7 @@ bool LLViewerFetchedTexture::updateFetch() if (make_request) { S32 w=0, h=0, c=0; - if (current_discard >= 0) + if (getDiscardLevel() >= 0) { w = mGLTexturep->getWidth(0); h = mGLTexturep->getHeight(0); @@ -1789,72 +1923,6 @@ bool LLViewerFetchedTexture::updateFetch() return mIsFetching ? true : false; } -// -//force to fetch a new raw image for this texture -// -BOOL LLViewerFetchedTexture::forceFetch() -{ - if(!mForceToSaveRawImage) - { - return false ; - } - if(mDesiredSavedRawDiscardLevel < getDiscardLevel()) - { - //no need to force fetching. normal fetching flow will do the work. - //return false ; - } - if (mNeedsCreateTexture) - { - // We may be fetching still (e.g. waiting on write) - // but don't check until we've processed the raw data we have - //return false; - } - if(mIsFetching) - { - return false ; - } - if (mIsMissingAsset) - { - mForceToSaveRawImage = false ; - llassert_always(!mHasFetcher); - return false; // skip - } - if (!mLoadedCallbackList.empty() && mRawImage.notNull()) - { - return false; // process any raw image data in callbacks before replacing - } - if(mRawImage.notNull() && mRawDiscardLevel <= mDesiredSavedRawDiscardLevel) - { - return false ; // mRawImage is enough - } - - S32 desired_discard = mDesiredSavedRawDiscardLevel ; - S32 current_discard = getDiscardLevel(); - - bool fetch_request_created = false; - S32 w=0, h=0, c=0; - if (current_discard >= 0) - { - w = getWidth(0); - h = getHeight(0); - c = getComponents(); - } - fetch_request_created = LLAppViewer::getTextureFetch()->createRequest(mUrl, getID(),getTargetHost(), maxDecodePriority(), - w, h, c, desired_discard, needsAux()); - - if (fetch_request_created) - { - mHasFetcher = TRUE; - mIsFetching = TRUE; - mRequestedDiscardLevel = desired_discard ; - - mFetchState = LLAppViewer::getTextureFetch()->getFetchState(mID, mDownloadProgress, mRequestedDownloadPriority, - mFetchPriority, mFetchDeltaTime, mRequestDeltaTime); - } - - return mIsFetching ? true : false; -} - void LLViewerFetchedTexture::setIsMissingAsset() { if (mUrl.empty()) @@ -1896,6 +1964,10 @@ void LLViewerFetchedTexture::setLoadedCallback( loaded_callback_func loaded_call LLLoadedCallbackEntry* entryp = new LLLoadedCallbackEntry(loaded_callback, discard_level, keep_imageraw, userdata); mLoadedCallbackList.push_back(entryp); mNeedsAux |= needs_aux; + if(keep_imageraw) + { + forceToSaveRawImage(discard_level) ; + } if (mNeedsAux && mAuxRawImage.isNull() && getDiscardLevel() >= 0) { // We need aux data, but we've already loaded the image, and it didn't have any @@ -2144,8 +2216,15 @@ LLImageRaw* LLViewerFetchedTexture::reloadRawImage(S8 discard_level) if(mSavedRawDiscardLevel >= 0 && mSavedRawDiscardLevel <= discard_level) { - mRawImage = new LLImageRaw(getWidth(discard_level), getHeight(discard_level), getComponents()) ; - mRawImage->copy(getSavedRawImage()) ; + if(mSavedRawDiscardLevel != discard_level) + { + mRawImage = new LLImageRaw(getWidth(discard_level), getHeight(discard_level), getComponents()) ; + mRawImage->copy(getSavedRawImage()) ; + } + else + { + mRawImage = getSavedRawImage() ; + } mRawDiscardLevel = discard_level ; } else @@ -2155,13 +2234,18 @@ LLImageRaw* LLViewerFetchedTexture::reloadRawImage(S8 discard_level) { mRawImage = mCachedRawImage ; mRawDiscardLevel = mCachedRawDiscardLevel; - - forceToSaveRawImage(discard_level) ; } else //cached raw image is good enough, copy it. { - mRawImage = new LLImageRaw(getWidth(discard_level), getHeight(discard_level), getComponents()) ; - mRawImage->copy(mCachedRawImage) ; + if(mCachedRawDiscardLevel != discard_level) + { + mRawImage = new LLImageRaw(getWidth(discard_level), getHeight(discard_level), getComponents()) ; + mRawImage->copy(mCachedRawImage) ; + } + else + { + mRawImage = mCachedRawImage ; + } mRawDiscardLevel = discard_level ; } } @@ -2177,24 +2261,19 @@ void LLViewerFetchedTexture::destroyRawImage() if (mRawImage.notNull()) { - sRawCount--; - setCachedRawImage() ; + sRawCount--; if(mForceToSaveRawImage) { saveRawImage() ; } + setCachedRawImage() ; } mRawImage = NULL; mAuxRawImage = NULL; mIsRawImageValid = FALSE; mRawDiscardLevel = INVALID_DISCARD_LEVEL; - - if(mForceToSaveRawImage) - { - forceFetch() ; - } } //use the mCachedRawImage to (re)generate the gl texture. @@ -2221,6 +2300,18 @@ void LLViewerFetchedTexture::switchToCachedImage() } } +//cache the imageraw forcefully. +//virtual +void LLViewerFetchedTexture::setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) +{ + if(imageraw != mRawImage.get()) + { + mCachedRawImage = imageraw ; + mCachedRawDiscardLevel = discard_level ; + mCachedRawImageReady = TRUE ; + } +} + void LLViewerFetchedTexture::setCachedRawImage() { if(mRawImage == mCachedRawImage) @@ -2269,17 +2360,12 @@ void LLViewerFetchedTexture::setCachedRawImage() { --i ; } - //if(mForSculpt) - //{ - // mRawImage->scaleDownWithoutBlending(w >> i, h >> i) ; - //} - //else - { - mRawImage->scale(w >> i, h >> i) ; - } + + mRawImage->scale(w >> i, h >> i) ; } mCachedRawImage = mRawImage ; - mCachedRawDiscardLevel = mRawDiscardLevel + i ; + mRawDiscardLevel += i ; + mCachedRawDiscardLevel = mRawDiscardLevel ; } } @@ -2300,7 +2386,7 @@ void LLViewerFetchedTexture::checkCachedRawSculptImage() void LLViewerFetchedTexture::saveRawImage() { - if(mRawImage.isNull() || mSavedRawDiscardLevel == mRawDiscardLevel) + if(mRawImage.isNull() || mRawImage == mSavedRawImage || (mSavedRawDiscardLevel >= 0 && mSavedRawDiscardLevel <= mRawDiscardLevel)) { return ; } @@ -2318,12 +2404,22 @@ void LLViewerFetchedTexture::saveRawImage() void LLViewerFetchedTexture::forceToSaveRawImage(S32 desired_discard) { - if(!mForceToSaveRawImage && (mDesiredSavedRawDiscardLevel < 0 || mDesiredSavedRawDiscardLevel > desired_discard)) + if(!mForceToSaveRawImage || mDesiredSavedRawDiscardLevel < 0 || mDesiredSavedRawDiscardLevel > desired_discard) { mForceToSaveRawImage = TRUE ; mDesiredSavedRawDiscardLevel = desired_discard ; - forceFetch() ; + //copy from the cached raw image if exists. + if(mCachedRawImage.notNull() && mRawImage.isNull() ) + { + mRawImage = mCachedRawImage ; + mRawDiscardLevel = mCachedRawDiscardLevel ; + + saveRawImage() ; + + mRawImage = NULL ; + mRawDiscardLevel = INVALID_DISCARD_LEVEL ; + } } } void LLViewerFetchedTexture::destroySavedRawImage() @@ -2349,7 +2445,7 @@ BOOL LLViewerFetchedTexture::hasSavedRawImage() const F32 LLViewerFetchedTexture::getElapsedLastReferencedSavedRawImageTime() const { - return mLastReferencedSavedRawImageTime - sCurrentTime ; + return sCurrentTime - mLastReferencedSavedRawImageTime ; } //---------------------------------------------------------------------------------------------- //atlasing @@ -2362,16 +2458,13 @@ void LLViewerFetchedTexture::resetFaceAtlas() //invalidate all atlas slots for this image. void LLViewerFetchedTexture::invalidateAtlas(BOOL rebuild_geom) { - for(ll_face_list_t::iterator iter = mFaceList.begin(); iter != mFaceList.end(); ++iter) + for(U32 i = 0 ; i < mNumFaces ; i++) { - if(*iter) + LLFace* facep = mFaceList[i] ; + facep->removeAtlas() ; + if(rebuild_geom && facep->getDrawable() && facep->getDrawable()->getSpatialGroup()) { - LLFace* facep = (LLFace*)*iter ; - facep->removeAtlas() ; - if(rebuild_geom && facep->getDrawable() && facep->getDrawable()->getSpatialGroup()) - { - facep->getDrawable()->getSpatialGroup()->setState(LLSpatialGroup::GEOM_DIRTY); - } + facep->getDrawable()->getSpatialGroup()->setState(LLSpatialGroup::GEOM_DIRTY); } } } @@ -2382,7 +2475,7 @@ BOOL LLViewerFetchedTexture::insertToAtlas() { return FALSE ; } - if(mFaceList.size() < 1) + if(getNumFaces() < 1) { return FALSE ; } @@ -2406,12 +2499,10 @@ BOOL LLViewerFetchedTexture::insertToAtlas() //if the atlas slot pointers for some faces are null, process them later. ll_face_list_t waiting_list ; - - for(ll_face_list_t::iterator iter = mFaceList.begin(); iter != mFaceList.end(); ++iter) + for(U32 i = 0 ; i < mNumFaces ; i++) { - if(*iter) { - facep = (LLFace*)*iter ; + facep = mFaceList[i] ; //face can not use atlas. if(!facep->canUseAtlas()) @@ -2631,7 +2722,7 @@ void LLViewerLODTexture::processTextureStats() } else { - if(isLargeImage() && !isJustBound() && mAdditionalDecodePriority < 1.0f) + if(isLargeImage() && !isJustBound() && mAdditionalDecodePriority < 0.3f) { //if is a big image and not being used recently, nor close to the view point, do not load hi-res data. mMaxVirtualSize = llmin(mMaxVirtualSize, (F32)LLViewerTexture::sMinLargeImageSize) ; @@ -2695,6 +2786,11 @@ void LLViewerLODTexture::processTextureStats() } } } + + if(mForceToSaveRawImage && mDesiredSavedRawDiscardLevel >= 0) + { + mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S8)mDesiredSavedRawDiscardLevel) ; + } } void LLViewerLODTexture::scaleDown() @@ -2723,8 +2819,7 @@ void LLViewerMediaTexture::updateClass() #if 0 //force to play media. - gSavedSettings.setBOOL("AudioSteamingMedia", true) ; - gSavedSettings.setBOOL("AudioStreamingVideo", true) ; + gSavedSettings.setBOOL("AudioStreamingMedia", true) ; #endif for(media_map_t::iterator iter = sMediaMap.begin() ; iter != sMediaMap.end(); ) @@ -2818,12 +2913,11 @@ LLViewerMediaTexture::~LLViewerMediaTexture() void LLViewerMediaTexture::reinit(BOOL usemipmaps /* = TRUE */) { - mGLTexturep = NULL ; - init(false); + llassert(mGLTexturep.notNull()) ; + mUseMipMaps = usemipmaps ; getLastReferencedTimer()->reset() ; - - generateGLTexture() ; + mGLTexturep->setUseMipMaps(mUseMipMaps) ; mGLTexturep->setNeedsAlphaAndPickMask(FALSE) ; } @@ -2869,9 +2963,10 @@ BOOL LLViewerMediaTexture::findFaces() if(tex) //this media is a parcel media for tex. { const ll_face_list_t* face_list = tex->getFaceList() ; - for(ll_face_list_t::const_iterator iter = face_list->begin(); iter != face_list->end(); ++iter) + U32 end = tex->getNumFaces() ; + for(U32 i = 0 ; i < end ; i++) { - mMediaFaceList.push_back(*iter) ; + mMediaFaceList.push_back((*face_list)[i]) ; } } @@ -2927,6 +3022,10 @@ void LLViewerMediaTexture::initVirtualSize() void LLViewerMediaTexture::addMediaToFace(LLFace* facep) { + if(facep) + { + facep->setHasMedia(true) ; + } if(!mIsPlaying) { return ; //no need to add the face because the media is not in playing. @@ -2937,20 +3036,22 @@ void LLViewerMediaTexture::addMediaToFace(LLFace* facep) void LLViewerMediaTexture::removeMediaFromFace(LLFace* facep) { - if(!mIsPlaying) - { - return ; //no need to remove the face because the media is not in playing. - } if(!facep) { return ; } + facep->setHasMedia(false) ; + + if(!mIsPlaying) + { + return ; //no need to remove the face because the media is not in playing. + } mIsPlaying = FALSE ; //set to remove the media from the face. switchTexture(facep) ; mIsPlaying = TRUE ; //set the flag back. - if(mFaceList.empty()) //no face referencing to this media + if(getNumFaces() < 1) //no face referencing to this media { stopPlaying() ; } @@ -2962,7 +3063,7 @@ void LLViewerMediaTexture::addFace(LLFace* facep) LLViewerTexture::addFace(facep) ; const LLTextureEntry* te = facep->getTextureEntry() ; - if(te) + if(te && te->getID().notNull()) { LLViewerTexture* tex = gTextureList.findImage(te->getID()) ; if(tex) @@ -2979,7 +3080,10 @@ void LLViewerMediaTexture::addFace(LLFace* facep) return ; } - llerrs << "The face does not have a valid texture before media texture." << llendl ; + if(te && te->getID().notNull()) //should have a texture + { + llerrs << "The face does not have a valid texture before media texture." << llendl ; + } } //virtual @@ -2988,7 +3092,7 @@ void LLViewerMediaTexture::removeFace(LLFace* facep) LLViewerTexture::removeFace(facep) ; const LLTextureEntry* te = facep->getTextureEntry() ; - if(te) + if(te && te->getID().notNull()) { LLViewerTexture* tex = gTextureList.findImage(te->getID()) ; if(tex) @@ -3006,17 +3110,17 @@ void LLViewerMediaTexture::removeFace(LLFace* facep) // //we have some trouble here: the texture of the face is changed. //we need to find the former texture, and remove it from the list to avoid memory leaking. - if(mFaceList.empty()) + if(!mNumFaces) { mTextureList.clear() ; return ; } - S32 end = mFaceList.size() ; + S32 end = getNumFaces() ; std::vector<const LLTextureEntry*> te_list(end) ; S32 i = 0 ; - for(ll_face_list_t::iterator iter = mFaceList.begin(); iter != mFaceList.end(); ++iter) + for(U32 j = 0 ; j < mNumFaces ; j++) { - te_list[i++] = (*iter)->getTextureEntry() ;//all textures are in use. + te_list[i++] = mFaceList[j]->getTextureEntry() ;//all textures are in use. } for(std::list< LLPointer<LLViewerTexture> >::iterator iter = mTextureList.begin(); iter != mTextureList.end(); ++iter) @@ -3049,7 +3153,10 @@ void LLViewerMediaTexture::removeFace(LLFace* facep) } } - llerrs << "mTextureList texture reference number is corrupted." << llendl ; + if(te && te->getID().notNull()) //should have a texture + { + llerrs << "mTextureList texture reference number is corrupted." << llendl ; + } } void LLViewerMediaTexture::stopPlaying() @@ -3085,11 +3192,15 @@ void LLViewerMediaTexture::switchTexture(LLFace* facep) const LLTextureEntry* te = facep->getTextureEntry() ; if(te) { - LLViewerTexture* tex = gTextureList.findImage(te->getID()) ; + LLViewerTexture* tex = te->getID().notNull() ? gTextureList.findImage(te->getID()) : NULL ; if(!tex && te->getID() != mID)//try parcel media. { tex = gTextureList.findImage(mID) ; } + if(!tex) + { + tex = LLViewerFetchedTexture::sDefaultImagep ; + } facep->switchTexture(tex) ; } } @@ -3134,16 +3245,9 @@ void LLViewerMediaTexture::setPlaying(BOOL playing) } else //stop playing this media { - if(mFaceList.empty()) + for(U32 i = mNumFaces ; i ; i--) { - return ; - } - - ll_face_list_t::iterator cur ; - for(ll_face_list_t::iterator iter = mFaceList.begin(); iter!= mFaceList.end(); ) - { - cur = iter++ ; - switchTexture(*cur) ; //cur could be removed in this function. + switchTexture(mFaceList[i - 1]) ; //current face could be removed in this function. } } return ; @@ -3165,17 +3269,14 @@ F32 LLViewerMediaTexture::getMaxVirtualSize() if(mIsPlaying) //media is playing { - if(mFaceList.size() > 0) - { - for(std::list<LLFace*>::iterator iter = mFaceList.begin(); iter != mFaceList.end(); ++iter) + for(U32 i = 0 ; i < mNumFaces ; i++) + { + LLFace* facep = mFaceList[i] ; + if(facep->getDrawable()->isRecentlyVisible()) { - LLFace* facep = *iter ; - if(facep->getDrawable()->isRecentlyVisible()) - { - addTextureStats(facep->getVirtualSize()) ; - } - } - } + addTextureStats(facep->getVirtualSize()) ; + } + } } else //media is not in playing { @@ -3195,6 +3296,8 @@ F32 LLViewerMediaTexture::getMaxVirtualSize() } mNeedsResetMaxVirtualSize = TRUE ; + reorganizeFaceList() ; + reorganizeVolumeList(); return mMaxVirtualSize ; } diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index d6fbd5d570..84377198eb 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -134,7 +134,9 @@ public: static S32 getIndexFromCategory(S32 category) ; static S32 getCategoryFromIndex(S32 index) ; - typedef std::list<LLFace*> ll_face_list_t ; + typedef std::vector<LLFace*> ll_face_list_t; + typedef std::vector<LLVOVolume*> ll_volume_list_t; + protected: virtual ~LLViewerTexture(); @@ -175,7 +177,13 @@ public: virtual void addFace(LLFace* facep) ; virtual void removeFace(LLFace* facep) ; - const ll_face_list_t* getFaceList() const {return &mFaceList ;} + S32 getNumFaces() const; + const ll_face_list_t* getFaceList() const {return &mFaceList;} + + virtual void addVolume(LLVOVolume* volumep); + virtual void removeVolume(LLVOVolume* volumep); + S32 getNumVolumes() const; + const ll_volume_list_t* getVolumeList() const { return &mVolumeList; } void generateGLTexture() ; void destroyGLTexture() ; @@ -190,6 +198,7 @@ public: LLGLuint getTexName() const ; BOOL createGLTexture() ; BOOL createGLTexture(S32 discard_level, const LLImageRaw* imageraw, S32 usename = 0, BOOL to_create = TRUE, S32 category = LLViewerTexture::OTHER); + virtual void setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) ; void setFilteringOption(LLTexUnit::eTextureFilterOptions option); void setExplicitFormat(LLGLint internal_format, LLGLenum primary_format, LLGLenum type_format = 0, BOOL swap_bytes = FALSE); @@ -239,13 +248,14 @@ public: /*virtual*/ void updateBindStatsForTester() ; protected: void cleanup() ; - void init(bool firstinit) ; - + void init(bool firstinit) ; + void reorganizeFaceList() ; + void reorganizeVolumeList() ; private: //note: do not make this function public. /*virtual*/ LLImageGL* getGLTexture() const ; virtual void switchToCachedImage(); - + protected: LLUUID mID; S32 mBoostLevel; // enum describing priority level @@ -257,14 +267,20 @@ protected: mutable S8 mNeedsGLTexture; mutable BOOL mNeedsResetMaxVirtualSize ; mutable F32 mAdditionalDecodePriority; // priority add to mDecodePriority. - LLFrameTimer mLastReferencedTimer; - - ll_face_list_t mFaceList ; //reverse pointer pointing to the faces using this image as texture + LLFrameTimer mLastReferencedTimer; //GL texture LLPointer<LLImageGL> mGLTexturep ; S8 mDontDiscard; // Keep full res version of this image (for UI, etc) + ll_face_list_t mFaceList ; //reverse pointer pointing to the faces using this image as texture + U32 mNumFaces ; + LLFrameTimer mLastFaceListUpdateTimer ; + + ll_volume_list_t mVolumeList; + U32 mNumVolumes; + LLFrameTimer mLastVolumeListUpdateTimer; + //do not use LLPointer here. LLViewerMediaTexture* mParcelMedia ; @@ -380,8 +396,6 @@ public: void updateVirtualSize() ; - // setDesiredDiscardLevel is only used by LLViewerTextureList - void setDesiredDiscardLevel(S32 discard) { mDesiredDiscardLevel = discard; } S32 getDesiredDiscardLevel() { return mDesiredDiscardLevel; } void setMinDiscardLevel(S32 discard) { mMinDesiredDiscardLevel = llmin(mMinDesiredDiscardLevel,(S8)discard); } @@ -434,6 +448,7 @@ public: BOOL isCachedRawImageReady() const {return mCachedRawImageReady ;} BOOL isRawImageValid()const { return mIsRawImageValid ; } void forceToSaveRawImage(S32 desired_discard = 0) ; + /*virtual*/ void setCachedRawImage(S32 discard_level, LLImageRaw* imageraw) ; void destroySavedRawImage() ; LLImageRaw* getSavedRawImage() ; BOOL hasSavedRawImage() const ; @@ -442,15 +457,14 @@ public: protected: /*virtual*/ void switchToCachedImage(); + S32 getCurrentDiscardLevelForFetching() ; private: void init(bool firstinit) ; void cleanup() ; void saveRawImage() ; - BOOL forceFetch() ; void setCachedRawImage() ; - BOOL keepReuestedDiscardLevel(); //for atlas void resetFaceAtlas() ; diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 8252b7df00..d8918bdb73 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -178,7 +178,7 @@ static std::string get_texture_list_name() void LLViewerTextureList::doPrefetchImages() { - if (LLAppViewer::instance()->getPurgeCache()) + if (LLAppViewer::instance()->getPurgeCache()) { // cache was purged, no point return; @@ -502,7 +502,11 @@ void LLViewerTextureList::addImageToList(LLViewerFetchedTexture *image) { llerrs << "LLViewerTextureList::addImageToList - Image already in list" << llendl; } - llverify((mImageList.insert(image)).second == true); + if((mImageList.insert(image)).second != true) + { + llerrs << "Error happens when insert image to mImageList!" << llendl ; + } + image->setInImageList(TRUE) ; } @@ -519,7 +523,11 @@ void LLViewerTextureList::removeImageFromList(LLViewerFetchedTexture *image) } llerrs << "LLViewerTextureList::removeImageFromList - Image not in list" << llendl; } - llverify(mImageList.erase(image) == 1); + if(mImageList.erase(image) != 1) + { + llerrs << "Error happens when remove image from mImageList!" << llendl ; + } + image->setInImageList(FALSE) ; } diff --git a/indra/newview/llviewervisualparam.cpp b/indra/newview/llviewervisualparam.cpp index b088ef0730..fad398e00b 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 ), diff --git a/indra/newview/llviewervisualparam.h b/indra/newview/llviewervisualparam.h index 3550a46fbf..1a3975eb99 100644 --- a/indra/newview/llviewervisualparam.h +++ b/indra/newview/llviewervisualparam.h @@ -111,6 +111,7 @@ public: F32 getSimpleMax() const { return getInfo()->mSimpleMax; } BOOL getCrossWearable() const { return getInfo()->mCrossWearable; } + }; #endif // LL_LLViewerVisualParam_H diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 5c86822787..f1ec489a20 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -51,6 +51,7 @@ #include "llviewquery.h" #include "llxmltree.h" +#include "llslurl.h" //#include "llviewercamera.h" #include "llrender.h" @@ -80,6 +81,9 @@ #include "timing.h" #include "llviewermenu.h" #include "lltooltip.h" +#include "llmediaentry.h" +#include "llurldispatcher.h" +#include "llurlsimstring.h" // newview includes #include "llagent.h" @@ -101,8 +105,6 @@ #include "llfloaterbuildoptions.h" #include "llfloaterbuyland.h" #include "llfloatercamera.h" -#include "llfloaterchat.h" -#include "llfloaterchatterbox.h" #include "llfloatercustomize.h" #include "llfloaterland.h" #include "llfloaterinspect.h" @@ -129,7 +131,6 @@ #include "llmorphview.h" #include "llmoveview.h" #include "llnavigationbar.h" -#include "lloverlaybar.h" #include "llpreviewtexture.h" #include "llprogressview.h" #include "llresmgr.h" @@ -148,7 +149,6 @@ #include "lltexturefetch.h" #include "lltextureview.h" #include "lltool.h" -#include "lltoolbar.h" #include "lltoolcomp.h" #include "lltooldraganddrop.h" #include "lltoolface.h" @@ -182,7 +182,6 @@ #include "llworldmapview.h" #include "pipeline.h" #include "llappviewer.h" -#include "llurlsimstring.h" #include "llviewerdisplay.h" #include "llspatialpartition.h" #include "llviewerjoystick.h" @@ -234,6 +233,7 @@ S32 gDebugRaycastFaceHit; BOOL gDisplayWindInfo = FALSE; BOOL gDisplayCameraPos = FALSE; BOOL gDisplayFOV = FALSE; +BOOL gDisplayBadge = FALSE; S32 CHAT_BAR_HEIGHT = 28; S32 OVERLAY_BAR_HEIGHT = 20; @@ -423,6 +423,11 @@ public: addText(xpos, ypos, llformat("FOV: %2.1f deg", RAD_TO_DEG * LLViewerCamera::getInstance()->getView())); ypos += y_inc; } + if (gDisplayBadge) + { + addText(xpos, ypos+(y_inc/2), llformat("Hippos!", RAD_TO_DEG * LLViewerCamera::getInstance()->getView())); + ypos += y_inc * 2; + } /*if (LLViewerJoystick::getInstance()->getOverrideCamera()) { @@ -481,6 +486,10 @@ public: } ypos += y_inc; + addText(xpos, ypos, llformat("UI Verts/Calls: %d/%d", LLRender::sUIVerts, LLRender::sUICalls)); + LLRender::sUICalls = LLRender::sUIVerts = 0; + ypos += y_inc; + addText(xpos,ypos, llformat("%d/%d Nodes visible", gPipeline.mNumVisibleNodes, LLSpatialGroup::sNodeCount)); ypos += y_inc; @@ -605,7 +614,6 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK { const char* buttonname = ""; const char* buttonstatestr = ""; - BOOL handled = FALSE; S32 x = pos.mX; S32 y = pos.mY; x = llround((F32)x / mDisplayScale.mV[VX]); @@ -700,7 +708,10 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK } else { - handled = top_ctrl->pointInView(local_x, local_y) && top_ctrl->handleMouseUp(local_x, local_y, mask); + if (top_ctrl->pointInView(local_x, local_y) && top_ctrl->handleMouseUp(local_x, local_y, mask)) + { + return TRUE; + } } } @@ -718,34 +729,12 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK llinfos << buttonname << " Mouse " << buttonstatestr << " not handled by view" << llendl; } - if (down) + // Do not allow tool manager to handle mouseclicks if we have disconnected + if(!gDisconnected && LLToolMgr::getInstance()->getCurrentTool()->handleAnyMouseClick( x, y, mask, clicktype, down ) ) { - if (gDisconnected) - { - return FALSE; - } - - if(LLToolMgr::getInstance()->getCurrentTool()->handleAnyMouseClick( x, y, mask, clicktype, down ) ) - { - return TRUE; - } + return TRUE; } - else - { - if( !handled ) - { - handled = mRootView->handleAnyMouseClick(x, y, mask, clicktype, down); - } - if( !handled ) - { - LLTool *tool = LLToolMgr::getInstance()->getCurrentTool(); - if (tool) - { - handled = tool->handleAnyMouseClick(x, y, mask, clicktype, down); - } - } - } // If we got this far on a down-click, it wasn't handled. // Up-clicks, though, are always handled as far as the OS is concerned. @@ -820,6 +809,154 @@ BOOL LLViewerWindow::handleMiddleMouseDown(LLWindow *window, LLCoordGL pos, MAS // Always handled as far as the OS is concerned. return TRUE; } + +LLWindowCallbacks::DragNDropResult LLViewerWindow::handleDragNDrop( LLWindow *window, LLCoordGL pos, MASK mask, LLWindowCallbacks::DragNDropAction action, std::string data) +{ + LLWindowCallbacks::DragNDropResult result = LLWindowCallbacks::DND_NONE; + + 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) + { + // 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); + + if (slurl_dnd_enabled) + { + + // special case SLURLs + // isValidSLURL() call was added here to make sure that dragged SLURL is valid (EXT-4964) + if ( LLSLURL::isSLURL( data ) && LLSLURL::isValidSLURL( data ) ) + { + if (drop) + { + LLURLDispatcher::dispatch( data, NULL, true ); + LLURLSimString::setStringRaw( LLSLURL::stripProtocol( data ) ); + LLPanelLogin::refreshLocation( true ); + LLPanelLogin::updateLocationUI(); + } + return LLWindowCallbacks::DND_MOVE; + }; + } + + 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; + + 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->getRegion()->getCapability("ObjectMedia").empty()) + { + LLTextureEntry *te = obj->getTE(object_face); + if (te) + { + if (drop) + { + // object does NOT have media already + if ( ! te->hasMedia() ) + { + // we are allowed to modify the object + if ( obj->permModify() ) + { + // 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 + // object HAS media already + { + // URL passes the whitelist + if (te->getMediaData()->checkCandidateUrl( url ) ) + { + // we are allowed to modify the object or we have navigate permissions + // NOTE: Design states you you can change the URL if you have media + // navigate permissions even if you do not have prim modify rights + if ( obj->permModify() || obj->hasMediaPermission( te->getMediaData(), LLVOVolume::MEDIA_PERM_INTERACT ) ) + { + // 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; + } + } + } + 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) + { + // Highlight the dragged object + LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); + mDragHoveredObject = obj; + LLSelectMgr::getInstance()->highlightObjectOnly(mDragHoveredObject); + } + result = (! te->hasMedia()) ? LLWindowCallbacks::DND_COPY : LLWindowCallbacks::DND_LINK; + } + } + } + } + } + } + break; + + case LLWindowCallbacks::DNDA_STOP_TRACKING: + // The cleanup case below will make sure things are unhilighted if necessary. + break; + } + + if (prim_media_dnd_enabled && + result == LLWindowCallbacks::DND_NONE && !mDragHoveredObject.isNull()) + { + LLSelectMgr::getInstance()->unhighlightObjectOnly(mDragHoveredObject); + mDragHoveredObject = NULL; + } + } + + return result; +} BOOL LLViewerWindow::handleMiddleMouseUp(LLWindow *window, LLCoordGL pos, MASK mask) { @@ -866,6 +1003,7 @@ void LLViewerWindow::handleMouseLeave(LLWindow *window) // Note: we won't get this if we have captured the mouse. llassert( gFocusMgr.getMouseCapture() == NULL ); mMouseInWindow = FALSE; + LLToolTipMgr::instance().blockToolTips(); } BOOL LLViewerWindow::handleCloseRequest(LLWindow *window) @@ -1485,10 +1623,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; @@ -1614,7 +1748,11 @@ void LLViewerWindow::shutdownViews() // destroy the nav bar, not currently part of gViewerWindow // *TODO: Make LLNavigationBar part of gViewerWindow delete LLNavigationBar::getInstance(); - + + // destroy menus after instantiating navbar above, as it needs + // access to gMenuHolder + cleanup_menus(); + // Delete all child views. delete mRootView; mRootView = NULL; @@ -1659,7 +1797,7 @@ void LLViewerWindow::shutdownGL() LLViewerTextureManager::cleanup() ; LLImageGL::cleanupClass() ; - llinfos << "All texturs and llimagegl images are destroyed!" << llendl ; + llinfos << "All textures and llimagegl images are destroyed!" << llendl ; llinfos << "Cleaning up select manager" << llendl; LLSelectMgr::getInstance()->cleanup(); @@ -1681,6 +1819,9 @@ LLViewerWindow::~LLViewerWindow() { llinfos << "Destroying Window" << llendl; destroyWindow(); + + delete mDebugText; + mDebugText = NULL; } @@ -1869,12 +2010,15 @@ void LLViewerWindow::drawDebugText() { gGL.color4f(1,1,1,1); gGL.pushMatrix(); + gGL.pushUIMatrix(); { // scale view by UI global scale factor and aspect ratio correction factor - glScalef(mDisplayScale.mV[VX], mDisplayScale.mV[VY], 1.f); + gGL.scaleUI(mDisplayScale.mV[VX], mDisplayScale.mV[VY], 1.f); mDebugText->draw(); } + gGL.popUIMatrix(); gGL.popMatrix(); + gGL.flush(); } @@ -1898,7 +2042,7 @@ void LLViewerWindow::draw() if (!gSavedSettings.getBOOL("RenderUIBuffer")) { - LLUI::sDirtyRect = this->getWindowRectRaw(); + LLUI::sDirtyRect = getWindowRectScaled(); } // HACK for timecode debugging @@ -1922,9 +2066,11 @@ void LLViewerWindow::draw() // No translation needed, this view is glued to 0,0 gGL.pushMatrix(); + LLUI::pushMatrix(); { + // scale view by UI global scale factor and aspect ratio correction factor - glScalef(mDisplayScale.mV[VX], mDisplayScale.mV[VY], 1.f); + gGL.scaleUI(mDisplayScale.mV[VX], mDisplayScale.mV[VY], 1.f); LLVector2 old_scale_factor = LLUI::sGLScaleFactor; // apply camera zoom transform (for high res screenshots) @@ -1990,6 +2136,7 @@ void LLViewerWindow::draw() LLUI::sGLScaleFactor = old_scale_factor; } + LLUI::popMatrix(); gGL.popMatrix(); #if LL_DEBUG @@ -2288,15 +2435,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); + } } @@ -2339,8 +2489,13 @@ void append_xui_tooltip(LLView* viewp, LLToolTip::Params& params) // event processing. void LLViewerWindow::updateUI() { + static LLFastTimer::DeclareTimer ftm("Update UI"); + LLFastTimer t(ftm); + static std::string last_handle_msg; + LLConsole::updateClass(); + // animate layout stacks so we have up to date rect for world view LLLayoutStack::updateClass(); @@ -2868,17 +3023,16 @@ void LLViewerWindow::updateWorldViewRect(bool use_full_window) if (mWorldViewRectRaw != new_world_rect) { - LLRect old_world_rect = mWorldViewRectRaw; mWorldViewRectRaw = new_world_rect; gResizeScreenTexture = TRUE; LLViewerCamera::getInstance()->setViewHeightInPixels( mWorldViewRectRaw.getHeight() ); LLViewerCamera::getInstance()->setAspect( getWorldViewAspectRatio() ); + LLRect old_world_rect_scaled = mWorldViewRectScaled; mWorldViewRectScaled = calcScaledRect(mWorldViewRectRaw, mDisplayScale); // sending a signal with a new WorldView rect - old_world_rect = calcScaledRect(old_world_rect, mDisplayScale); - mOnWorldViewRectUpdated(old_world_rect, mWorldViewRectScaled); + mOnWorldViewRectUpdated(old_world_rect_scaled, mWorldViewRectScaled); } } @@ -2918,7 +3072,6 @@ void LLViewerWindow::saveLastMouse(const LLCoordGL &point) // Must be called after displayObjects is called, which sets the mGLName parameter // NOTE: This function gets called 3 times: // render_ui_3d: FALSE, FALSE, TRUE -// renderObjectsForSelect: TRUE, pick_parcel_wall, FALSE // render_hud_elements: FALSE, FALSE, FALSE void LLViewerWindow::renderSelections( BOOL for_gl_pick, BOOL pick_parcel_walls, BOOL for_hud ) { @@ -4868,10 +5021,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 b488276a18..bfce65f2ba 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -126,9 +126,6 @@ private: 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; }; @@ -169,7 +166,8 @@ public: /*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*/ 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); /*virtual*/ void handleFocus(LLWindow *window); @@ -475,6 +473,10 @@ protected: static std::string sSnapshotDir; static std::string sMovieBaseName; + +private: + // Object temporarily hovered over while dragging + LLPointer<LLViewerObject> mDragHoveredObject; }; void toggle_flying(void*); @@ -504,5 +506,6 @@ extern S32 CHAT_BAR_HEIGHT; extern BOOL gDisplayCameraPos; extern BOOL gDisplayWindInfo; extern BOOL gDisplayFOV; +extern BOOL gDisplayBadge; #endif diff --git a/indra/newview/llviewerwindowlistener.cpp b/indra/newview/llviewerwindowlistener.cpp index de57788271..fae98cf49a 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; } diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 6e93bf1bf2..72b9c6df98 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -56,7 +56,7 @@ #include "lldriverparam.h" #include "lleditingmotion.h" #include "llemote.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" #include "llheadrotmotion.h" #include "llhudeffecttrail.h" #include "llhudmanager.h" @@ -1492,9 +1492,9 @@ BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename) //------------------------------------------------------------------------- // parse the file //------------------------------------------------------------------------- - BOOL success = sSkeletonXMLTree.parseFile( filename, FALSE ); + BOOL parsesuccess = sSkeletonXMLTree.parseFile( filename, FALSE ); - if (!success) + if (!parsesuccess) { llerrs << "Can't parse skeleton file: " << filename << llendl; return FALSE; @@ -1505,11 +1505,13 @@ BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename) if (!root) { llerrs << "No root node found in avatar skeleton file: " << filename << llendl; + return FALSE; } if( !root->hasName( "linden_skeleton" ) ) { llerrs << "Invalid avatar skeleton file header: " << filename << llendl; + return FALSE; } std::string version; @@ -1517,6 +1519,7 @@ BOOL LLVOAvatar::parseSkeletonFile(const std::string& filename) if( !root->getFastAttributeString( version_string, version ) || (version != "1.0") ) { llerrs << "Invalid avatar skeleton file version: " << version << " in file: " << filename << llendl; + return FALSE; } return TRUE; @@ -2192,13 +2195,16 @@ BOOL LLVOAvatar::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) // store off last frame's root position to be consistent with camera position LLVector3 root_pos_last = mRoot.getWorldPosition(); BOOL detailed_update = updateCharacter(agent); - BOOL voice_enabled = gVoiceClient->getVoiceEnabled( mID ) && gVoiceClient->inProximalChannel(); if (gNoRender) { return TRUE; } + static LLUICachedControl<bool> visualizers_in_calls("ShowVoiceVisualizersInCalls", false); + bool voice_enabled = (visualizers_in_calls || gVoiceClient->inProximalChannel()) && + gVoiceClient->getVoiceEnabled(mID); + idleUpdateVoiceVisualizer( voice_enabled ); idleUpdateMisc( detailed_update ); idleUpdateAppearanceAnimation(); @@ -2532,9 +2538,21 @@ void LLVOAvatar::idleUpdateLoadingEffect() // update visibility when avatar is partially loaded if (updateIsFullyLoaded()) // changed? { + if (isFullyLoaded() && isSelf()) + { + static bool first_fully_visible = true; + if (first_fully_visible) + { + llinfos << "self isFullyLoaded, first_fully_visible" << llendl; + + first_fully_visible = false; + LLAppearanceManager::instance().onFirstFullyVisible(); + } + } if (isFullyLoaded()) { deleteParticleSource(); + updateLOD(); } else { @@ -3078,7 +3096,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent) if (!visible) { - //updateMotions(LLCharacter::HIDDEN_UPDATE); + updateMotions(LLCharacter::HIDDEN_UPDATE); return FALSE; } @@ -4047,6 +4065,7 @@ void LLVOAvatar::updateTextures() // Spam if this is a baked texture, not set to default image, without valid host info if (isIndexBakedTexture((ETextureIndex)texture_index) && imagep->getID() != IMG_DEFAULT_AVATAR + && imagep->getID() != IMG_INVISIBLE && !imagep->getTargetHost().isOk()) { LL_WARNS_ONCE("Texture") << "LLVOAvatar::updateTextures No host for texture " @@ -5603,7 +5622,7 @@ void LLVOAvatar::sitOnObject(LLViewerObject *sit_object) if (isSelf()) { // Might be first sit - LLFirstUse::useSit(); + //LLFirstUse::useSit(); gAgent.setFlying(FALSE); gAgent.setThirdPersonHeadOffset(LLVector3::zero); @@ -6822,7 +6841,7 @@ void LLVOAvatar::useBakedTexture( const LLUUID& id ) local_tex_iter != baked_dict->mLocalTextures.end(); ++local_tex_iter) { - setBakedReady(*local_tex_iter, TRUE); + if (isSelf()) setBakedReady(*local_tex_iter, TRUE); } // ! BACKWARDS COMPATIBILITY ! diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index a5815df20a..b5f0ec7176 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -565,7 +565,7 @@ public: void updateMeshData(); protected: void releaseMeshData(); - /*virtual*/ void restoreMeshData(); + virtual void restoreMeshData(); private: BOOL mDirtyMesh; BOOL mMeshTexturesDirty; diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index ecd6b05ded..131c6ac1a1 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -211,6 +211,8 @@ BOOL LLVOAvatarSelf::buildSkeletonSelf(const LLVOAvatarSkeletonInfo *info) LLVector3 scale(1.f, aspect, 1.f); mScreenp->setScale(scale); mScreenp->setWorldPosition(LLVector3::zero); + // need to update screen agressively when sidebar opens/closes, for example + mScreenp->mUpdateXform = TRUE; return TRUE; } @@ -510,8 +512,12 @@ BOOL LLVOAvatarSelf::buildMenus() LLVOAvatarSelf::~LLVOAvatarSelf() { - gAgent.setAvatarObject(NULL); - gAgentWearables.setAvatarObject(NULL); + // gAgents pointer might have been set to a different Avatar Self, don't get rid of it if so. + if (gAgent.getAvatarObject() == this) + { + gAgent.setAvatarObject(NULL); + gAgentWearables.setAvatarObject(NULL); + } delete mScreenp; mScreenp = NULL; } @@ -928,6 +934,13 @@ void LLVOAvatarSelf::wearableUpdated( EWearableType type, BOOL upload_result ) { const LLVOAvatarDictionary::BakedEntry *baked_dict = baked_iter->second; const LLVOAvatarDefines::EBakedTextureIndex index = baked_iter->first; + + // if we're editing our appearance, ensure that we're not using baked textures + // The baked texture for alpha masks is set explicitly when you hit "save" + if (gAgent.cameraCustomizeAvatar()) + { + setNewBakedTexture(index,IMG_DEFAULT_AVATAR); + } if (baked_dict) { for (LLVOAvatarDefines::wearables_vec_t::const_iterator type_iter = baked_dict->mWearables.begin(); @@ -1642,8 +1655,11 @@ BOOL LLVOAvatarSelf::updateIsFullyLoaded() { BOOL loading = FALSE; - // do we have a shape? - if (visualParamWeightsAreDefault()) + // do we have our body parts? + if (gAgentWearables.getWearableCount(WT_SHAPE) == 0 || + gAgentWearables.getWearableCount(WT_HAIR) == 0 || + gAgentWearables.getWearableCount(WT_EYES) == 0 || + gAgentWearables.getWearableCount(WT_SKIN) == 0) { loading = TRUE; } @@ -1748,14 +1764,8 @@ BOOL LLVOAvatarSelf::canGrabLocalTexture(ETextureIndex type, U32 index) const // search for full permissions version for (S32 i = 0; i < items.count(); i++) { - LLInventoryItem* itemp = items[i]; - LLPermissions item_permissions = itemp->getPermissions(); - if ( item_permissions.allowOperationBy( - PERM_MODIFY, gAgent.getID(), gAgent.getGroupID()) && - item_permissions.allowOperationBy( - PERM_COPY, gAgent.getID(), gAgent.getGroupID()) && - item_permissions.allowOperationBy( - PERM_TRANSFER, gAgent.getID(), gAgent.getGroupID()) ) + LLViewerInventoryItem* itemp = items[i]; + if (itemp->getIsFullPerm()) { can_grab = TRUE; break; @@ -1966,6 +1976,7 @@ void LLVOAvatarSelf::forceBakeAllTextures(bool slam_for_debug) // Don't know if this is needed updateMeshTextures(); + } //----------------------------------------------------------------------------- diff --git a/indra/newview/llvoclouds.cpp b/indra/newview/llvoclouds.cpp index 177cb16c50..5153cef709 100644 --- a/indra/newview/llvoclouds.cpp +++ b/indra/newview/llvoclouds.cpp @@ -77,9 +77,11 @@ BOOL LLVOClouds::isActive() const return TRUE; } - BOOL LLVOClouds::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) { + static LLFastTimer::DeclareTimer ftm("Idle Clouds"); + LLFastTimer t(ftm); + if (!(gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_CLOUDS))) { return TRUE; diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index 993853b9a6..fac7fa6a18 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -33,7 +33,6 @@ #include "llviewerprecompiledheaders.h" #include "llagent.h" -#include "llfloatercall.h" #include "llfloaterreg.h" #include "llimview.h" #include "llnotifications.h" @@ -123,7 +122,8 @@ LLVoiceChannel::LLVoiceChannel(const LLUUID& session_id, const std::string& sess mState(STATE_NO_CHANNEL_INFO), mSessionName(session_name), mCallDirection(OUTGOING_CALL), - mIgnoreNextSessionLeave(FALSE) + mIgnoreNextSessionLeave(FALSE), + mCallEndedByAgent(false) { mNotifyArgs["VOICE_CHANNEL_NAME"] = mSessionName; @@ -140,7 +140,10 @@ LLVoiceChannel::LLVoiceChannel(const LLUUID& session_id, const std::string& sess LLVoiceChannel::~LLVoiceChannel() { // Don't use LLVoiceClient::getInstance() here -- this can get called during atexit() time and that singleton MAY have already been destroyed. - if(gVoiceClient) + // Using call of instanceExists() instead of gVoiceClient in check to avoid crash in LLVoiceClient::removeObserver() + // when quitting viewer by closing console window before login (though in case of such quit crash will occur + // later in other destructors anyway). EXT-5524 + if(LLVoiceClient::instanceExists()) { gVoiceClient->removeObserver(this); } @@ -279,10 +282,14 @@ void LLVoiceChannel::deactivate() if (callStarted()) { setState(STATE_HUNG_UP); - // mute the microphone if required when returning to the proximal channel - if (gSavedSettings.getBOOL("AutoDisengageMic") && sCurrentVoiceChannel == this) + + //Default mic is OFF when leaving voice calls + if (gSavedSettings.getBOOL("AutoDisengageMic") && + sCurrentVoiceChannel == this && + gVoiceClient->getUserPTTState()) { gSavedSettings.setBOOL("PTTCurrentlyEnabled", true); + gVoiceClient->inputUserControlState(true); } } @@ -386,13 +393,16 @@ void LLVoiceChannel::setState(EState state) switch(state) { case STATE_RINGING: - gIMMgr->addSystemMessage(mSessionID, "ringing", mNotifyArgs); + //TODO: remove or redirect this call status notification +// LLCallInfoDialog::show("ringing", mNotifyArgs); break; case STATE_CONNECTED: - gIMMgr->addSystemMessage(mSessionID, "connected", mNotifyArgs); + //TODO: remove or redirect this call status notification +// LLCallInfoDialog::show("connected", mNotifyArgs); break; case STATE_HUNG_UP: - gIMMgr->addSystemMessage(mSessionID, "hang_up", mNotifyArgs); + //TODO: remove or redirect this call status notification +// LLCallInfoDialog::show("hang_up", mNotifyArgs); break; default: break; @@ -406,7 +416,7 @@ void LLVoiceChannel::doSetState(const EState& new_state) EState old_state = mState; mState = new_state; if (!mStateChangedCallback.empty()) - mStateChangedCallback(old_state, mState, mCallDirection); + mStateChangedCallback(old_state, mState, mCallDirection, mCallEndedByAgent); } //static @@ -499,6 +509,13 @@ void LLVoiceChannelGroup::activate() LLRecentPeople::instance().add(buddy_id); } #endif + + //Mic default state is OFF on initiating/joining Ad-Hoc/Group calls + if (gVoiceClient->getUserPTTState() && gVoiceClient->getPTTIsToggle()) + { + gVoiceClient->inputUserControlState(true); + } + } } @@ -625,7 +642,8 @@ void LLVoiceChannelGroup::setState(EState state) case STATE_RINGING: if ( !mIsRetrying ) { - gIMMgr->addSystemMessage(mSessionID, "ringing", mNotifyArgs); + //TODO: remove or redirect this call status notification +// LLCallInfoDialog::show("ringing", mNotifyArgs); } doSetState(state); @@ -688,7 +706,12 @@ void LLVoiceChannelProximal::handleStatusChange(EStatusType status) // do not notify user when leaving proximal channel return; case STATUS_VOICE_DISABLED: - gIMMgr->addSystemMessage(LLUUID::null, "unavailable", mNotifyArgs); + //skip showing "Voice not available at your current location" when agent voice is disabled (EXT-4749) + if(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking()) + { + //TODO: remove or redirect this call status notification +// LLCallInfoDialog::show("unavailable", mNotifyArgs); + } return; default: break; @@ -760,7 +783,8 @@ void LLVoiceChannelP2P::handleStatusChange(EStatusType type) } else { - // other user hung up + // other user hung up, so we didn't end the call + mCallEndedByAgent = false; } deactivate(); } @@ -791,6 +815,9 @@ void LLVoiceChannelP2P::activate() { if (callStarted()) return; + //call will be counted as ended by user unless this variable is changed in handleStatusChange() + mCallEndedByAgent = true; + LLVoiceChannel::activate(); if (callStarted()) @@ -812,6 +839,12 @@ void LLVoiceChannelP2P::activate() // Add the party to the list of people with which we've recently interacted. LLRecentPeople::instance().add(mOtherUserID); + + //Default mic is ON on initiating/joining P2P calls + if (!gVoiceClient->getUserPTTState() && gVoiceClient->getPTTIsToggle()) + { + gVoiceClient->inputUserControlState(true); + } } } @@ -881,7 +914,8 @@ void LLVoiceChannelP2P::setState(EState state) // so provide a special purpose message here if (mReceivedCall && state == STATE_RINGING) { - gIMMgr->addSystemMessage(mSessionID, "answering", mNotifyArgs); + //TODO: remove or redirect this call status notification +// LLCallInfoDialog::show("answering", mNotifyArgs); doSetState(state); return; } diff --git a/indra/newview/llvoicechannel.h b/indra/newview/llvoicechannel.h index cb86671305..941cccacc3 100644 --- a/indra/newview/llvoicechannel.h +++ b/indra/newview/llvoicechannel.h @@ -58,7 +58,7 @@ public: OUTGOING_CALL } EDirection; - typedef boost::signals2::signal<void(const EState& old_state, const EState& new_state, const EDirection& direction)> state_changed_signal_t; + typedef boost::signals2::signal<void(const EState& old_state, const EState& new_state, const EDirection& direction, bool ended_by_agent)> state_changed_signal_t; // on current channel changed signal typedef boost::function<void(const LLUUID& session_id)> channel_changed_callback_t; @@ -122,6 +122,8 @@ protected: std::string mSessionName; LLSD mNotifyArgs; LLSD mCallDialogPayload; + // true if call was ended by agent + bool mCallEndedByAgent; BOOL mIgnoreNextSessionLeave; LLHandle<LLPanel> mLoginNotificationHandle; diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index c2d26a1971..5ba13efca2 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" @@ -62,16 +64,14 @@ #include "llimview.h" // for LLIMMgr #include "llparcel.h" #include "llviewerparcelmgr.h" -#include "llfirstuse.h" +//#include "llfirstuse.h" +#include "llspeakers.h" #include "lltrans.h" #include "llviewerwindow.h" #include "llviewercamera.h" #include "llvoavatarself.h" #include "llvoicechannel.h" -#include "llfloaterfriends.h" //VIVOX, inorder to refresh communicate panel -#include "llfloaterchat.h" // for LLFloaterChat::addChat() - // for base64 decoding #include "apr_base64.h" @@ -102,6 +102,13 @@ const F32 UPDATE_THROTTLE_SECONDS = 0.1f; const F32 LOGIN_RETRY_SECONDS = 10.0f; const int MAX_LOGIN_RETRIES = 12; +// Defines the maximum number of times(in a row) "stateJoiningSession" case for spatial channel is reached in stateMachine() +// which is treated as normal. If this number is exceeded we suspect there is a problem with connection +// to voice server (EXT-4313). When voice works correctly, there is from 1 to 15 times. 50 was chosen +// to make sure we don't make mistake when slight connection problems happen- situation when connection to server is +// blocked is VERY rare and it's better to sacrifice response time in this situation for the sake of stability. +const int MAX_NORMAL_JOINING_SPATIAL_NUM = 50; + static void setUUIDFromStringHash(LLUUID &uuid, const std::string &str) { LLMD5 md5_uuid; @@ -294,8 +301,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; @@ -1092,6 +1105,121 @@ 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 - external (vivox) volume level to be stored for user. + */ + void storeSpeakerVolume(const LLUUID& speaker_id, F32 volume); + + /** + * Gets stored external (vivox) volume level for specified speaker and + * transforms it into internal (viewer) level. + * + * If specified user is not found -1 will be returned. + * Internal level is calculated as: internal = 400 * external^2 + * Maps 0.0 to 1.0 to internal values 0-400 + * + * @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, F32> 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, F32 volume) +{ + mSpeakersData[speaker_id] = volume; +} + +S32 LLSpeakerVolumeStorage::getSpeakerVolume(const LLUUID& speaker_id) +{ + // Return value of -1 indicates no level is stored for this speaker + S32 ret_val = -1; + speaker_data_map_t::const_iterator it = mSpeakersData.find(speaker_id); + + if (it != mSpeakersData.end()) + { + F32 f_val = it->second; + // volume can amplify by as much as 4x! + S32 ivol = (S32)(400.f * f_val * f_val); + ret_val = llclamp(ivol, 0, 400); + } + 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), (F32)iter->second.asReal())); + } +} + +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() : @@ -1100,6 +1228,7 @@ LLVoiceClient::LLVoiceClient() : mRelogRequested(false), mConnected(false), mPump(NULL), + mSpatialJoiningNum(0), mTuningMode(false), mTuningEnergy(0.0f), @@ -1139,7 +1268,6 @@ LLVoiceClient::LLVoiceClient() : mEarLocation(0), mSpeakerVolumeDirty(true), mSpeakerMuteDirty(true), - mSpeakerVolume(0), mMicVolume(0), mMicVolumeDirty(true), @@ -1152,6 +1280,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. @@ -2101,6 +2231,8 @@ void LLVoiceClient::stateMachine() //MARK: stateNoChannel case stateNoChannel: + + mSpatialJoiningNum = 0; // Do this here as well as inside sendPositionalUpdate(). // Otherwise, if you log in but don't join a proximal channel (such as when your login location has voice disabled), your friends list won't sync. sendFriendsListUpdates(); @@ -2157,6 +2289,23 @@ void LLVoiceClient::stateMachine() //MARK: stateJoiningSession case stateJoiningSession: // waiting for session handle + + // If this is true we have problem with connection to voice server (EXT-4313). + // See descriptions of mSpatialJoiningNum and MAX_NORMAL_JOINING_SPATIAL_NUM. + if(mSpatialJoiningNum == MAX_NORMAL_JOINING_SPATIAL_NUM) + { + // Notify observers to let them know there is problem with voice + notifyStatusObservers(LLVoiceClientStatusObserver::STATUS_VOICE_DISABLED); + llwarns << "There seems to be problem with connection to voice server. Disabling voice chat abilities." << llendl; + } + + // Increase mSpatialJoiningNum only for spatial sessions- it's normal to reach this case for + // example for p2p many times while waiting for response, so it can't be used to detect errors + if(mAudioSession && mAudioSession->mIsSpatial) + { + mSpatialJoiningNum++; + } + // joinedAudioSession() will transition from here to stateSessionJoined. if(!mVoiceEnabled) { @@ -2180,6 +2329,8 @@ void LLVoiceClient::stateMachine() //MARK: stateSessionJoined case stateSessionJoined: // session handle received + + mSpatialJoiningNum = 0; // It appears that I need to wait for BOTH the SessionGroup.AddSession response and the SessionStateChangeEvent with state 4 // before continuing from this state. They can happen in either order, and if I don't wait for both, things can get stuck. // For now, the SessionGroup.AddSession response handler sets mSessionHandle and the SessionStateChangeEvent handler transitions to stateSessionJoined. @@ -3320,12 +3471,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; @@ -3401,7 +3557,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; @@ -4445,7 +4601,7 @@ void LLVoiceClient::participantUpdatedEvent( participant->mVolume = volume; - // *HACH: mantipov: added while working on EXT-3544 + // *HACK: mantipov: added while working on EXT-3544 /* Sometimes LLVoiceClient::participantUpdatedEvent callback is called BEFORE LLViewerChatterBoxSessionAgentListUpdates::post() sometimes AFTER. @@ -4462,7 +4618,9 @@ void LLVoiceClient::participantUpdatedEvent( in LLCallFloater::draw() */ LLVoiceChannel* voice_cnl = LLVoiceChannel::getCurrentVoiceChannel(); - if (voice_cnl) + + // ignore session ID of local chat + if (voice_cnl && voice_cnl->getSessionID().notNull()) { LLSpeakerMgr* speaker_manager = LLIMModel::getInstance()->getSpeakerManager(voice_cnl->getSessionID()); if (speaker_manager) @@ -4707,10 +4865,6 @@ void LLVoiceClient::messageEvent( LLUUID::null, // default arg LLVector3::zero, // default arg true); // prepend name and make it a link to the user's profile - - chat.mText = std::string("IM: ") + session->mName + std::string(": ") + message; - // If the chat should come in quietly (i.e. we're in busy mode), pretend it's from a local agent. - LLFloaterChat::addChat( chat, TRUE, quiet_chat ); } } } @@ -4916,7 +5070,14 @@ LLVoiceClient::participantState *LLVoiceClient::sessionState::addParticipant(con } mParticipantsByUUID.insert(participantUUIDMap::value_type(&(result->mAvatarID), result)); - + + result->mUserVolume = LLSpeakerVolumeStorage::getInstance()->getSpeakerVolume(result->mAvatarID); + if (result->mUserVolume != -1) + { + result->mVolumeDirty = true; + mVolumeDirty = true; + } + LL_DEBUGS("Voice") << "participant \"" << result->mURI << "\" added." << LL_ENDL; } @@ -5002,6 +5163,17 @@ LLVoiceClient::participantMap *LLVoiceClient::getParticipantList(void) return result; } +void LLVoiceClient::getParticipantsUUIDSet(std::set<LLUUID>& participant_uuids) +{ + if (NULL == mAudioSession) return; + + participantUUIDMap::const_iterator it = mAudioSession->mParticipantsByUUID.begin(), + it_end = mAudioSession->mParticipantsByUUID.end(); + for (; it != it_end; ++it) + { + participant_uuids.insert((*(*it).first)); + } +} LLVoiceClient::participantState *LLVoiceClient::sessionState::findParticipant(const std::string &uri) { @@ -5237,24 +5409,25 @@ LLVoiceClient::sessionState* LLVoiceClient::startUserIMSession(const LLUUID &uui // No session with user, need to start one. std::string uri = sipURIFromID(uuid); session = addSession(uri); + + llassert(session); + if (!session) return NULL; + session->mIsSpatial = false; session->mReconnect = false; session->mIsP2P = true; session->mCallerID = uuid; } - if(session) + if(session->mHandle.empty()) { - if(session->mHandle.empty()) - { - // Session isn't active -- start it up. - sessionCreateSendMessage(session, false, true); - } - else - { - // Session is already active -- start up text. - sessionTextConnectSendMessage(session); - } + // Session isn't active -- start it up. + sessionCreateSendMessage(session, false, true); + } + else + { + // Session is already active -- start up text. + sessionTextConnectSendMessage(session); } return session; @@ -5844,6 +6017,15 @@ 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) + // Condition with joining spatial num was added to take into account possible problems with connection to voice + // server(EXT-4313). See bug descriptions and comments for MAX_NORMAL_JOINING_SPATIAL_NUM for more info. + return (mSpatialJoiningNum < MAX_NORMAL_JOINING_SPATIAL_NUM) && (stateLoggedIn <= mState) && (mState <= stateSessionTerminated); +} + void LLVoiceClient::setLipSyncEnabled(BOOL enabled) { mLipSyncEnabled = enabled; @@ -5883,6 +6065,10 @@ void LLVoiceClient::setPTTIsToggle(bool PTTIsToggle) mPTTIsToggle = PTTIsToggle; } +bool LLVoiceClient::getPTTIsToggle() +{ + return mPTTIsToggle; +} void LLVoiceClient::setPTTKey(std::string &key) { @@ -5918,7 +6104,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; } @@ -6140,6 +6327,9 @@ void LLVoiceClient::setUserVolume(const LLUUID& id, F32 volume) participantState *participant = findParticipantByID(id); if (participant) { + // store this volume setting for future sessions + LLSpeakerVolumeStorage::getInstance()->storeSpeakerVolume(id, volume); + // volume can amplify by as much as 4x! S32 ivol = (S32)(400.f * volume * volume); participant->mUserVolume = llclamp(ivol, 0, 400); @@ -6270,6 +6460,7 @@ void LLVoiceClient::filePlaybackSetMode(bool vox, float speed) } LLVoiceClient::sessionState::sessionState() : + mErrorStatusCode(0), mMediaStreamState(streamStateUnknown), mTextStreamState(streamStateUnknown), mCreateInProgress(false), diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index 347fae6156..aaacab69e0 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -191,8 +191,12 @@ 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 + // Returns true if vivox has successfully logged in and is not in error state + bool voiceWorking(); void setUsePTT(bool usePTT); void setPTTIsToggle(bool PTTIsToggle); + bool getPTTIsToggle(); void setPTTKey(std::string &key); void setEarLocation(S32 loc); void setVoiceVolume(F32 volume); @@ -353,6 +357,7 @@ static void updatePosition(void); participantState *findParticipantByID(const LLUUID& id); participantMap *getParticipantList(void); + void getParticipantsUUIDSet(std::set<LLUUID>& participant_uuids); typedef std::map<const std::string*, sessionState*, stringMapComparitor> sessionMap; typedef std::set<sessionState*> sessionSet; @@ -581,6 +586,10 @@ static void updatePosition(void); state mState; bool mSessionTerminateRequested; bool mRelogRequested; + // Number of times (in a row) "stateJoiningSession" case for spatial channel is reached in stateMachine(). + // The larger it is the greater is possibility there is a problem with connection to voice server. + // Introduced while fixing EXT-4313. + int mSpatialJoiningNum; void setState(state inState); state getState(void) { return mState; }; diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index 5ff8f0d267..0550ed770b 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 ef74324e58..8366909755 100644 --- a/indra/newview/llvosky.h +++ b/indra/newview/llvosky.h @@ -613,7 +613,7 @@ protected: LLColor3 mLastTotalAmbient; F32 mAmbientScale; LLColor3 mNightColorShift; - F32 sInterpVal; + F32 mInterpVal; LLColor4 mFogColor; LLColor4 mGLFogCol; @@ -636,8 +636,8 @@ protected: 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() ; diff --git a/indra/newview/llvotextbubble.cpp b/indra/newview/llvotextbubble.cpp index 75beab519e..428ef20006 100644 --- a/indra/newview/llvotextbubble.cpp +++ b/indra/newview/llvotextbubble.cpp @@ -84,6 +84,9 @@ BOOL LLVOTextBubble::isActive() const BOOL LLVOTextBubble::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) { + static LLFastTimer::DeclareTimer ftm("Text Bubble"); + LLFastTimer t(ftm); + F32 dt = mUpdateTimer.getElapsedTimeF32(); // Die after a few seconds. if (dt > 1.5f) diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp index 24f1c4bd24..55e2c58a52 100644 --- a/indra/newview/llvotree.cpp +++ b/indra/newview/llvotree.cpp @@ -1141,7 +1141,7 @@ U32 LLVOTree::drawBranchPipeline(LLMatrix4& matrix, U16* indicesp, S32 trunk_LOD glLoadMatrixf((F32*) scale_mat.mMatrix); glDrawElements(GL_TRIANGLES, sLODIndexCount[trunk_LOD], GL_UNSIGNED_SHORT, indicesp + sLODIndexOffset[trunk_LOD]); - gPipeline.addTrianglesDrawn(LEAF_INDICES/3); + gPipeline.addTrianglesDrawn(LEAF_INDICES); stop_glerror(); ret += sLODIndexCount[trunk_LOD]; } @@ -1191,7 +1191,7 @@ U32 LLVOTree::drawBranchPipeline(LLMatrix4& matrix, U16* indicesp, S32 trunk_LOD glLoadMatrixf((F32*) scale_mat.mMatrix); glDrawElements(GL_TRIANGLES, LEAF_INDICES, GL_UNSIGNED_SHORT, indicesp); - gPipeline.addTrianglesDrawn(LEAF_INDICES/3); + gPipeline.addTrianglesDrawn(LEAF_INDICES); stop_glerror(); ret += LEAF_INDICES; } @@ -1216,7 +1216,7 @@ U32 LLVOTree::drawBranchPipeline(LLMatrix4& matrix, U16* indicesp, S32 trunk_LOD glLoadMatrixf((F32*) scale_mat.mMatrix); glDrawElements(GL_TRIANGLES, LEAF_INDICES, GL_UNSIGNED_SHORT, indicesp); - gPipeline.addTrianglesDrawn(LEAF_INDICES/3); + gPipeline.addTrianglesDrawn(LEAF_INDICES); stop_glerror(); ret += LEAF_INDICES; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index 70bfc67523..86d8204473 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; @@ -190,6 +192,7 @@ LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *re mMediaImplList.resize(getNumTEs()); mLastFetchedMediaVersion = -1; + mIndexInTex = 0; } LLVOVolume::~LLVOVolume() @@ -224,6 +227,11 @@ void LLVOVolume::markDead() { removeMediaImpl(i); } + + if (mSculptTexture.notNull()) + { + mSculptTexture->removeVolume(this); + } } LLViewerObject::markDead(); @@ -595,6 +603,9 @@ BOOL LLVOVolume::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) { LLViewerObject::idleUpdate(agent, world, time); + static LLFastTimer::DeclareTimer ftm("Volume"); + LLFastTimer t(ftm); + if (mDead || mDrawable.isNull()) { return TRUE; @@ -616,6 +627,18 @@ BOOL LLVOVolume::idleUpdate(LLAgent &agent, LLWorld &world, const F64 &time) mVolumeImpl->doIdleUpdate(agent, world, time); } + const S32 MAX_ACTIVE_OBJECT_QUIET_FRAMES = 40; + + if (mDrawable->isActive()) + { + if (mDrawable->isRoot() && + mDrawable->mQuietCount++ > MAX_ACTIVE_OBJECT_QUIET_FRAMES && + (!mDrawable->getParent() || !mDrawable->getParent()->isActive())) + { + mDrawable->makeStatic(); + } + } + return TRUE; } @@ -677,6 +700,7 @@ void LLVOVolume::updateTextureVirtualSize() vsize = area; imagep->setBoostLevel(LLViewerTexture::BOOST_HUD); face->setPixelArea(area); // treat as full screen + face->setVirtualSize(vsize); } else { @@ -693,8 +717,7 @@ void LLVOVolume::updateTextureVirtualSize() gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_TCOORD, FALSE); } } - - face->setVirtualSize(vsize); + if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_TEXTURE_AREA)) { if (vsize < min_vsize) min_vsize = vsize; @@ -723,7 +746,9 @@ void LLVOVolume::updateTextureVirtualSize() { LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT); LLUUID id = sculpt_params->getSculptTexture(); - mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); + + updateSculptTexture(); + if (mSculptTexture.notNull()) { mSculptTexture->setBoostLevel(llmax((S32)mSculptTexture->getBoostLevel(), @@ -912,35 +937,53 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &volume_params, const S32 detail { mVolumeImpl->onSetVolume(volume_params, detail); } - + + updateSculptTexture(); + if (isSculpted()) { - mSculptTexture = LLViewerTextureManager::getFetchedTexture(volume_params.getSculptID(), TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); + updateSculptTexture(); + if (mSculptTexture.notNull()) { - //ignore sculpt GL usage since bao fixed this in a separate branch - if (!gGLActive) - { - gGLActive = TRUE; - sculpt(); - gGLActive = FALSE; - } - else - { - sculpt(); - } + sculpt(); } } - else - { - mSculptTexture = NULL; - } return TRUE; } return FALSE; } +void LLVOVolume::updateSculptTexture() +{ + LLPointer<LLViewerFetchedTexture> old_sculpt = mSculptTexture; + + if (isSculpted()) + { + LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT); + LLUUID id = sculpt_params->getSculptTexture(); + mSculptTexture = LLViewerTextureManager::getFetchedTexture(id, TRUE, LLViewerTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); + } + else + { + mSculptTexture = NULL; + } + + if (mSculptTexture != old_sculpt) + { + if (old_sculpt.notNull()) + { + old_sculpt->removeVolume(this); + } + if (mSculptTexture.notNull()) + { + mSculptTexture->addVolume(this); + } + } + +} + // sculpt replaces generate() for sculpted surfaces void LLVOVolume::sculpt() { @@ -981,6 +1024,8 @@ void LLVOVolume::sculpt() if(!raw_image) { + llassert(discard_level < 0) ; + sculpt_width = 0; sculpt_height = 0; sculpt_data = NULL ; @@ -1004,6 +1049,16 @@ void LLVOVolume::sculpt() } } getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level); + + //notify rebuild any other VOVolumes that reference this sculpty volume + for (S32 i = 0; i < mSculptTexture->getNumVolumes(); ++i) + { + LLVOVolume* volume = (*(mSculptTexture->getVolumeList()))[i]; + if (volume != this && volume->getVolume() == getVolume()) + { + gPipeline.markRebuild(volume->mDrawable, LLDrawable::REBUILD_GEOMETRY, FALSE); + } + } } } @@ -1033,7 +1088,7 @@ BOOL LLVOVolume::calcLOD() S32 cur_detail = 0; F32 radius = getVolume()->mLODScaleBias.scaledVec(getScale()).length(); - F32 distance = llmin(mDrawable->mDistanceWRTCamera, MAX_LOD_DISTANCE); + F32 distance = mDrawable->mDistanceWRTCamera; //llmin(mDrawable->mDistanceWRTCamera, MAX_LOD_DISTANCE); distance *= sDistanceFactor; F32 rampDist = LLVOVolume::sLODFactor * 2; @@ -1357,7 +1412,7 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable) return res; } - dirtySpatialGroup(); + dirtySpatialGroup(drawable->isState(LLDrawable::IN_REBUILD_Q1)); BOOL compiled = FALSE; @@ -1460,7 +1515,14 @@ void LLVOVolume::updateFaceSize(S32 idx) else { const LLVolumeFace& vol_face = getVolume()->getVolumeFace(idx); - facep->setSize(vol_face.mVertices.size(), vol_face.mIndices.size()); + if (LLPipeline::sUseTriStrips) + { + facep->setSize(vol_face.mVertices.size(), vol_face.mTriStrip.size()); + } + else + { + facep->setSize(vol_face.mVertices.size(), vol_face.mIndices.size()); + } } } @@ -1852,12 +1914,32 @@ void LLVOVolume::mediaNavigateBounceBack(U8 texture_index) if (mep && impl) { std::string url = mep->getCurrentURL(); - if (url.empty()) + // Look for a ":", if not there, assume "http://" + if (!url.empty() && std::string::npos == url.find(':')) + { + url = "http://" + url; + } + // If the url we're trying to "bounce back" to is either empty or not + // allowed by the whitelist, try the home url. If *that* doesn't work, + // set the media as failed and unload it + if (url.empty() || !mep->checkCandidateUrl(url)) { url = mep->getHomeURL(); + // Look for a ":", if not there, assume "http://" + if (!url.empty() && std::string::npos == url.find(':')) + { + url = "http://" + url; + } } - if (! url.empty()) - { + if (url.empty() || !mep->checkCandidateUrl(url)) + { + // The url to navigate back to is not good, and we have nowhere else + // to go. + LL_WARNS("MediaOnAPrim") << "FAILED to bounce back URL \"" << url << "\" -- unloading impl" << LL_ENDL; + impl->setMediaFailed(true); + } + else { + // Okay, navigate now LL_INFOS("MediaOnAPrim") << "bouncing back to URL: " << url << LL_ENDL; impl->navigateTo(url, "", false, true); } @@ -2106,11 +2188,19 @@ viewer_media_t LLVOVolume::getMediaImpl(U8 face_id) const F64 LLVOVolume::getTotalMediaInterest() const { + // If this object is currently focused, this object has "high" interest if (LLViewerMediaFocus::getInstance()->getFocusedObjectID() == getID()) return F64_MAX; F64 interest = (F64)-1.0; // means not interested; - int i = 0; + + // If this object is selected, this object has "high" interest, but since + // there can be more than one, we still add in calculated impl interest + // XXX Sadly, 'contains()' doesn't take a const :( + if (LLSelectMgr::getInstance()->getSelection()->contains(const_cast<LLVOVolume*>(this))) + interest = F64_MAX / 2.0; + + int i = 0; const int end = getNumTEs(); for ( ; i < end; ++i) { @@ -2689,13 +2779,16 @@ U32 LLVOVolume::getRenderCost(std::set<LLUUID> &textures) const const LLTextureEntry* te = face->getTextureEntry(); const LLViewerTexture* img = face->getTexture(); - textures.insert(img->getID()); + if (img) + { + textures.insert(img->getID()); + } if (face->getPoolType() == LLDrawPool::POOL_ALPHA) { alpha++; } - else if (img->getPrimaryFormat() == GL_ALPHA) + else if (img && img->getPrimaryFormat() == GL_ALPHA) { invisi = 1; } @@ -3179,6 +3272,11 @@ void LLVolumeGeometryManager::registerFace(LLSpatialGroup* group, LLFace* facep, draw_info->mExtents[0] = facep->mExtents[0]; draw_info->mExtents[1] = facep->mExtents[1]; validate_draw_info(*draw_info); + + if (LLPipeline::sUseTriStrips) + { + draw_info->mDrawMode = LLRender::TRIANGLE_STRIP; + } } } @@ -3263,7 +3361,7 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) drawablep->updateFaceSize(i); LLFace* facep = drawablep->getFace(i); - if (cur_total > max_total) + if (cur_total > max_total || facep->getIndicesCount() <= 0 || facep->getGeomCount() <= 0) { facep->mVertexBuffer = NULL; facep->mLastVertexBuffer = NULL; @@ -3424,7 +3522,8 @@ static LLFastTimer::DeclareTimer FTM_VOLUME_GEOM("Volume Geometry"); void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group) { llpushcallstacks ; - if (group->isState(LLSpatialGroup::MESH_DIRTY) && !group->isState(LLSpatialGroup::GEOM_DIRTY)) + llassert(group); + if (group && group->isState(LLSpatialGroup::MESH_DIRTY) && !group->isState(LLSpatialGroup::GEOM_DIRTY)) { LLFastTimer tm(FTM_VOLUME_GEOM); S32 num_mapped_veretx_buffer = LLVertexBuffer::sMappedCount ; @@ -3478,9 +3577,9 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group) } // don't forget alpha - if( group != NULL && - !group->mVertexBuffer.isNull() && - group->mVertexBuffer->isLocked()) + if(group != NULL && + !group->mVertexBuffer.isNull() && + group->mVertexBuffer->isLocked()) { group->mVertexBuffer->setBuffer(0); } @@ -3506,7 +3605,7 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group) group->clearState(LLSpatialGroup::MESH_DIRTY | LLSpatialGroup::NEW_DRAWINFO); } - if (group->isState(LLSpatialGroup::NEW_DRAWINFO)) + if (group && group->isState(LLSpatialGroup::NEW_DRAWINFO)) { llerrs << "WTF?" << llendl; } diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h index a287d34402..a8bb597f93 100644 --- a/indra/newview/llvovolume.h +++ b/indra/newview/llvovolume.h @@ -179,8 +179,10 @@ public: /*virtual*/ BOOL setMaterial(const U8 material); void setTexture(const S32 face); - + S32 getIndexInTex() const {return mIndexInTex ;} /*virtual*/ BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false); + void updateSculptTexture(); + void setIndexInTex(S32 index) { mIndexInTex = index ;} void sculpt(); void updateRelativeXform(); /*virtual*/ BOOL updateGeometry(LLDrawable *drawable); @@ -303,7 +305,7 @@ private: LLPointer<LLViewerFetchedTexture> mLightTexture; media_list_t mMediaImplList; S32 mLastFetchedMediaVersion; // as fetched from the server, starts as -1 - + S32 mIndexInTex; // statics public: static F32 sLODSlopDistanceFactor;// Changing this to zero, effectively disables the LOD transition slop diff --git a/indra/newview/llvowlsky.cpp b/indra/newview/llvowlsky.cpp index d3238f16a8..1749ccef94 100644 --- a/indra/newview/llvowlsky.cpp +++ b/indra/newview/llvowlsky.cpp @@ -491,7 +491,7 @@ void LLVOWLSky::drawStars(void) if (mStarsVerts.notNull()) { mStarsVerts->setBuffer(LLDrawPoolWLSky::STAR_VERTEX_DATA_MASK); - mStarsVerts->draw(LLRender::POINTS, getStarsNumIndices(), 0); + mStarsVerts->drawArrays(LLRender::QUADS, 0, getStarsNumVerts()*4); } } @@ -519,7 +519,7 @@ void LLVOWLSky::drawDome(void) LLRender::TRIANGLE_STRIP, 0, strips_segment->getRequestedVerts()-1, strips_segment->getRequestedIndices(), 0); - gPipeline.addTrianglesDrawn(strips_segment->getRequestedIndices() - 2); + gPipeline.addTrianglesDrawn(strips_segment->getRequestedIndices(), LLRender::TRIANGLE_STRIP); } #else @@ -546,6 +546,7 @@ void LLVOWLSky::initStars() std::vector<F32>::iterator v_i = mStarIntensities.begin(); U32 i; + for (i = 0; i < getStarsNumVerts(); ++i) { v_p->mV[VX] = ll_frand() - 0.5f; @@ -771,17 +772,17 @@ BOOL LLVOWLSky::updateStarGeometry(LLDrawable *drawable) { LLStrider<LLVector3> verticesp; LLStrider<LLColor4U> colorsp; - LLStrider<U16> indicesp; + LLStrider<LLVector2> texcoordsp; if (mStarsVerts.isNull()) { mStarsVerts = new LLVertexBuffer(LLDrawPoolWLSky::STAR_VERTEX_DATA_MASK, GL_DYNAMIC_DRAW); - mStarsVerts->allocateBuffer(getStarsNumVerts(), getStarsNumIndices(), TRUE); + mStarsVerts->allocateBuffer(getStarsNumVerts()*4, 0, TRUE); } - + BOOL success = mStarsVerts->getVertexStrider(verticesp) - && mStarsVerts->getIndexStrider(indicesp) - && mStarsVerts->getColorStrider(colorsp); + && mStarsVerts->getColorStrider(colorsp) + && mStarsVerts->getTexCoord0Strider(texcoordsp); if(!success) { @@ -791,11 +792,37 @@ BOOL LLVOWLSky::updateStarGeometry(LLDrawable *drawable) // *TODO: fix LLStrider with a real prefix increment operator so it can be // used as a model of OutputIterator. -Brad // std::copy(mStarVertices.begin(), mStarVertices.end(), verticesp); + + if (mStarVertices.size() < getStarsNumVerts()) + { + llerrs << "Star reference geometry insufficient." << llendl; + } + for (U32 vtx = 0; vtx < getStarsNumVerts(); ++vtx) { + LLVector3 at = mStarVertices[vtx]; + at.normVec(); + LLVector3 left = at%LLVector3(0,0,1); + LLVector3 up = at%left; + + F32 sc = 0.5f+ll_frand()*1.25f; + left *= sc; + up *= sc; + *(verticesp++) = mStarVertices[vtx]; + *(verticesp++) = mStarVertices[vtx]+left; + *(verticesp++) = mStarVertices[vtx]+left+up; + *(verticesp++) = mStarVertices[vtx]+up; + + *(texcoordsp++) = LLVector2(0,0); + *(texcoordsp++) = LLVector2(0,1); + *(texcoordsp++) = LLVector2(1,1); + *(texcoordsp++) = LLVector2(1,0); + + *(colorsp++) = LLColor4U(mStarColors[vtx]); + *(colorsp++) = LLColor4U(mStarColors[vtx]); + *(colorsp++) = LLColor4U(mStarColors[vtx]); *(colorsp++) = LLColor4U(mStarColors[vtx]); - *(indicesp++) = vtx; } mStarsVerts->setBuffer(0); diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index b789bd3650..acfbc23f62 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -625,7 +625,9 @@ void LLWearable::writeToAvatar() // Pull params for( LLVisualParam* param = avatar->getFirstVisualParam(); param; param = avatar->getNextVisualParam() ) { - if( (((LLViewerVisualParam*)param)->getWearableType() == mType) ) + // cross-wearable parameters are not authoritative, as they are driven by a different wearable. So don't copy the values to the + // avatar object if cross wearable. Cross wearable params get their values from the avatar, they shouldn't write the other way. + if( (((LLViewerVisualParam*)param)->getWearableType() == mType) && (!((LLViewerVisualParam*)param)->getCrossWearable()) ) { S32 param_id = param->getID(); F32 weight = getVisualParamWeight(param_id); @@ -818,16 +820,13 @@ 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() ) { mTEMap.erase(index); } - if( lto ) - { - mTEMap[index] = new LLLocalTextureObject(*lto); - } + mTEMap[index] = new LLLocalTextureObject(lto); } @@ -1088,6 +1087,26 @@ void LLWearable::destroyTextures() mSavedTEMap.clear(); } +void LLWearable::pullCrossWearableValues() +{ + // scan through all of the avatar's visual parameters + LLVOAvatar* avatar = gAgent.getAvatarObject(); + for (LLViewerVisualParam* param = (LLViewerVisualParam*) avatar->getFirstVisualParam(); + param; + param = (LLViewerVisualParam*) avatar->getNextVisualParam()) + { + if( param ) + { + LLDriverParam *driver_param = dynamic_cast<LLDriverParam*>(param); + if(driver_param) + { + // parameter is a driver parameter, have it update its + driver_param->updateCrossDrivenParams(getType()); + } + } + } +} + void LLWearable::setLabelUpdated() const { diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h index 7a579b248e..7bd5305079 100644 --- a/indra/newview/llwearable.h +++ b/indra/newview/llwearable.h @@ -114,7 +114,7 @@ public: 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); @@ -128,6 +128,7 @@ public: void revertValues(); void saveValues(); + void pullCrossWearableValues(); BOOL isOnTop() const; @@ -145,7 +146,7 @@ private: void createLayers(S32 te); void createVisualParams(); void syncImages(te_map_t &src, te_map_t &dst); - void destroyTextures(); + void destroyTextures(); static S32 sCurrentDefinitionVersion; // Depends on the current state of the avatar_lad.xml. S32 mDefinitionVersion; // Depends on the state of the avatar_lad.xml when this asset was created. diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp index 5636256856..d6a9837b86 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" diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index 7866f735c5..3385b75c65 100644 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -145,10 +145,20 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url, substitution["VERSION_PATCH"] = LLVersionInfo::getPatch(); substitution["VERSION_BUILD"] = LLVersionInfo::getBuild(); substitution["CHANNEL"] = LLVersionInfo::getChannel(); - substitution["LANGUAGE"] = LLUI::getLanguage(); substitution["GRID"] = LLViewerLogin::getInstance()->getGridLabel(); substitution["OS"] = LLAppViewer::instance()->getOSInfo().getOSStringSimple(); substitution["SESSION_ID"] = gAgent.getSessionID(); + substitution["FIRST_LOGIN"] = gAgent.isFirstLogin(); + + // work out the current language + std::string lang = LLUI::getLanguage(); + if (lang == "en-us") + { + // *HACK: the correct fix is to change English.lproj/language.txt, + // but we're late in the release cycle and this is a less risky fix + lang = "en"; + } + substitution["LANGUAGE"] = lang; // find the region ID LLUUID region_id; @@ -159,14 +169,14 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url, } substitution["REGION_ID"] = region_id; - // find the parcel ID - LLUUID parcel_id; + // find the parcel local ID + S32 parcel_id = 0; LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); if (parcel) { - parcel_id = parcel->getID(); + parcel_id = parcel->getLocalID(); } - substitution["PARCEL_ID"] = parcel_id; + substitution["PARCEL_ID"] = llformat("%d", parcel_id); // expand all of the substitution strings and escape the url std::string expanded_url = url; diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp index 118d7f8d08..d7e5b464a6 100644 --- a/indra/newview/llworld.cpp +++ b/indra/newview/llworld.cpp @@ -657,6 +657,9 @@ void LLWorld::updateParticles() void LLWorld::updateClouds(const F32 dt) { + static LLFastTimer::DeclareTimer ftm("World Clouds"); + LLFastTimer t(ftm); + if (gSavedSettings.getBOOL("FreezeTime") || !gSavedSettings.getBOOL("SkyUseClassicClouds")) { diff --git a/indra/newview/llworldmap.h b/indra/newview/llworldmap.h index 7e37727b86..e4e677eb64 100644 --- a/indra/newview/llworldmap.h +++ b/indra/newview/llworldmap.h @@ -123,6 +123,7 @@ public: bool isName(const std::string& name) const; bool isDown() { return (mAccess == SIM_ACCESS_DOWN); } bool isPG() { return (mAccess <= SIM_ACCESS_PG); } + bool isAdult() { return (mAccess == SIM_ACCESS_ADULT); } // Debug only void dump() const; // Print the region info to the standard output diff --git a/indra/newview/llworldmapview.cpp b/indra/newview/llworldmapview.cpp index 1940d65ae4..5edf72d4ae 100644 --- a/indra/newview/llworldmapview.cpp +++ b/indra/newview/llworldmapview.cpp @@ -128,10 +128,10 @@ void LLWorldMapView::initClass() sHomeImage = LLUI::getUIImage("map_home.tga"); sTelehubImage = LLUI::getUIImage("map_telehub.tga"); sInfohubImage = LLUI::getUIImage("map_infohub.tga"); - sEventImage = LLUI::getUIImage("map_event.tga"); - sEventMatureImage = LLUI::getUIImage("map_event_mature.tga"); + sEventImage = LLUI::getUIImage("Parcel_PG_Dark"); + sEventMatureImage = LLUI::getUIImage("Parcel_M_Dark"); // To Do: update the image resource for adult events. - sEventAdultImage = LLUI::getUIImage("map_event_adult.tga"); + sEventAdultImage = LLUI::getUIImage("Parcel_R_Dark"); sTrackCircleImage = LLUI::getUIImage("map_track_16.tga"); sTrackArrowImage = LLUI::getUIImage("direction_arrow.tga"); diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp index 70859e8ea5..c19be37e75 100644 --- a/indra/newview/llxmlrpctransaction.cpp +++ b/indra/newview/llxmlrpctransaction.cpp @@ -252,9 +252,8 @@ void LLXMLRPCTransaction::Impl::init(XMLRPC_REQUEST request, bool useGzip) // mCurlRequest->setopt(CURLOPT_VERBOSE, 1); // usefull for debugging mCurlRequest->setopt(CURLOPT_NOSIGNAL, 1); mCurlRequest->setWriteCallback(&curlDownloadCallback, (void*)this); - BOOL vefifySSLCert = !gSavedSettings.getBOOL("NoVerifySSLCert"); - mCurlRequest->setopt(CURLOPT_SSL_VERIFYPEER, vefifySSLCert); - mCurlRequest->setopt(CURLOPT_SSL_VERIFYHOST, vefifySSLCert ? 2 : 0); + mCurlRequest->setopt(CURLOPT_SSL_VERIFYPEER, LLCurl::getSSLVerify()); + mCurlRequest->setopt(CURLOPT_SSL_VERIFYHOST, LLCurl::getSSLVerify() ? 2 : 0); // Be a little impatient about establishing connections. mCurlRequest->setopt(CURLOPT_CONNECTTIMEOUT, 40L); diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 4f4fc83819..259ca21e93 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -116,7 +116,6 @@ const F32 BACKLIGHT_DAY_MAGNITUDE_AVATAR = 0.2f; const F32 BACKLIGHT_NIGHT_MAGNITUDE_AVATAR = 0.1f; const F32 BACKLIGHT_DAY_MAGNITUDE_OBJECT = 0.1f; const F32 BACKLIGHT_NIGHT_MAGNITUDE_OBJECT = 0.08f; -const S32 MAX_ACTIVE_OBJECT_QUIET_FRAMES = 40; const S32 MAX_OFFSCREEN_GEOMETRY_CHANGES_PER_FRAME = 10; const U32 REFLECTION_MAP_RES = 128; @@ -271,6 +270,7 @@ BOOL LLPipeline::sDelayVBUpdate = TRUE; BOOL LLPipeline::sFastAlpha = TRUE; BOOL LLPipeline::sDisableShaders = FALSE; BOOL LLPipeline::sRenderBump = TRUE; +BOOL LLPipeline::sUseTriStrips = TRUE; BOOL LLPipeline::sUseFarClip = TRUE; BOOL LLPipeline::sShadowRender = FALSE; BOOL LLPipeline::sWaterReflections = FALSE; @@ -359,6 +359,7 @@ void LLPipeline::init() sDynamicLOD = gSavedSettings.getBOOL("RenderDynamicLOD"); sRenderBump = gSavedSettings.getBOOL("RenderObjectBump"); + sUseTriStrips = gSavedSettings.getBOOL("RenderUseTriStrips"); sRenderAttachedLights = gSavedSettings.getBOOL("RenderAttachedLights"); sRenderAttachedParticles = gSavedSettings.getBOOL("RenderAttachedParticles"); @@ -477,8 +478,6 @@ void LLPipeline::cleanup() releaseGLBuffers(); - mBloomImagep = NULL; - mBloomImage2p = NULL; mFaceSelectImagep = NULL; mMovedBridge.clear(); @@ -1355,6 +1354,7 @@ void LLPipeline::updateMoveNormalAsync(LLDrawable* drawablep) if (!drawablep) { llerrs << "updateMove called with NULL drawablep" << llendl; + return; } if (drawablep->isState(LLDrawable::EARLY_MOVE)) { @@ -1411,38 +1411,26 @@ void LLPipeline::updateMove() assertInitialized(); - for (LLDrawable::drawable_set_t::iterator iter = mRetexturedList.begin(); - iter != mRetexturedList.end(); ++iter) { - LLDrawable* drawablep = *iter; - if (drawablep && !drawablep->isDead()) - { - drawablep->updateTexture(); - } - } - mRetexturedList.clear(); + static LLFastTimer::DeclareTimer ftm("Retexture"); + LLFastTimer t(ftm); - updateMovedList(mMovedList); - - for (LLDrawable::drawable_set_t::iterator iter = mActiveQ.begin(); - iter != mActiveQ.end(); ) - { - LLDrawable::drawable_set_t::iterator curiter = iter++; - LLDrawable* drawablep = *curiter; - if (drawablep && !drawablep->isDead()) + for (LLDrawable::drawable_set_t::iterator iter = mRetexturedList.begin(); + iter != mRetexturedList.end(); ++iter) { - if (drawablep->isRoot() && - drawablep->mQuietCount++ > MAX_ACTIVE_OBJECT_QUIET_FRAMES && - (!drawablep->getParent() || !drawablep->getParent()->isActive())) + LLDrawable* drawablep = *iter; + if (drawablep && !drawablep->isDead()) { - drawablep->makeStatic(); // removes drawable and its children from mActiveQ - iter = mActiveQ.upper_bound(drawablep); // next valid entry + drawablep->updateTexture(); } } - else - { - mActiveQ.erase(curiter); - } + mRetexturedList.clear(); + } + + { + static LLFastTimer::DeclareTimer ftm("Moved List"); + LLFastTimer t(ftm); + updateMovedList(mMovedList); } //balance octrees @@ -1970,7 +1958,7 @@ void LLPipeline::markVisible(LLDrawable *drawablep, LLCamera& camera) if (root && root->getParent() && root->getVObj() && root->getVObj()->isAttachment()) { LLVOAvatar* av = root->getParent()->getVObj()->asAvatar(); - if (av->isImpostor()) + if (av && av->isImpostor()) { return; } @@ -2789,10 +2777,8 @@ void render_hud_elements() LLViewerParcelMgr::getInstance()->render(); LLViewerParcelMgr::getInstance()->renderParcelCollision(); - // Render debugging beacons. - //gObjectList.renderObjectBeacons(); - //LLHUDObject::renderAll(); - //gObjectList.resetObjectBeacons(); + // Render name tags. + LLHUDObject::renderAll(); } else if (gForceRenderLandFence) { @@ -3058,12 +3044,6 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) } } - if (gPipeline.hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PICKING)) - { - LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderForSelect"); - gObjectList.renderObjectsForSelect(camera, gViewerWindow->getWindowRectScaled()); - } - else { LLFastTimer t(FTM_POOLS); @@ -3203,7 +3183,6 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) { // Render debugging beacons. gObjectList.renderObjectBeacons(); - LLHUDObject::renderAll(); gObjectList.resetObjectBeacons(); } @@ -3435,7 +3414,6 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera) { // Render debugging beacons. gObjectList.renderObjectBeacons(); - LLHUDObject::renderAll(); gObjectList.resetObjectBeacons(); } @@ -3514,9 +3492,19 @@ void LLPipeline::renderGeomShadow(LLCamera& camera) } -void LLPipeline::addTrianglesDrawn(S32 count) +void LLPipeline::addTrianglesDrawn(S32 index_count, U32 render_type) { assertInitialized(); + S32 count = 0; + if (render_type == LLRender::TRIANGLE_STRIP) + { + count = index_count-2; + } + else + { + count = index_count/3; + } + mTrianglesDrawn += count; mBatchCount++; mMaxBatchSize = llmax(mMaxBatchSize, count); @@ -4797,10 +4785,6 @@ void LLPipeline::findReferences(LLDrawable *drawablep) llinfos << "In mRetexturedList" << llendl; } - if (mActiveQ.find(drawablep) != mActiveQ.end()) - { - llinfos << "In mActiveQ" << llendl; - } if (std::find(mBuildQ1.begin(), mBuildQ1.end(), drawablep) != mBuildQ1.end()) { llinfos << "In mBuildQ1" << llendl; @@ -4957,19 +4941,6 @@ void LLPipeline::setLight(LLDrawable *drawablep, BOOL is_light) } } -void LLPipeline::setActive(LLDrawable *drawablep, BOOL active) -{ - assertInitialized(); - if (active) - { - mActiveQ.insert(drawablep); - } - else - { - mActiveQ.erase(drawablep); - } -} - //static void LLPipeline::toggleRenderType(U32 type) { @@ -5385,6 +5356,7 @@ void LLPipeline::resetVertexBuffers(LLDrawable* drawable) void LLPipeline::resetVertexBuffers() { sRenderBump = gSavedSettings.getBOOL("RenderObjectBump"); + sUseTriStrips = gSavedSettings.getBOOL("RenderUseTriStrips"); for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); iter != LLWorld::getInstance()->getRegionList().end(); ++iter) diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index 67004a5f2d..6aecc23aac 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -270,15 +270,14 @@ public: void shiftObjects(const LLVector3 &offset); void setLight(LLDrawable *drawablep, BOOL is_light); - void setActive(LLDrawable *drawablep, BOOL active); - + BOOL hasRenderBatches(const U32 type) const; LLCullResult::drawinfo_list_t::iterator beginRenderMap(U32 type); LLCullResult::drawinfo_list_t::iterator endRenderMap(U32 type); LLCullResult::sg_list_t::iterator beginAlphaGroups(); LLCullResult::sg_list_t::iterator endAlphaGroups(); - void addTrianglesDrawn(S32 count); + void addTrianglesDrawn(S32 index_count, U32 render_type = LLRender::TRIANGLES); BOOL hasRenderType(const U32 type) const { return (type && (mRenderTypeMask & (1<<type))) ? TRUE : FALSE; } BOOL hasRenderDebugFeatureMask(const U32 mask) const { return (mRenderDebugFeatureMask & mask) ? TRUE : FALSE; } BOOL hasRenderDebugMask(const U32 mask) const { return (mRenderDebugMask & mask) ? TRUE : FALSE; } @@ -448,7 +447,7 @@ public: static BOOL sFastAlpha; static BOOL sDisableShaders; // if TRUE, rendering will be done without shaders static BOOL sRenderBump; - static BOOL sUseFBO; + static BOOL sUseTriStrips; static BOOL sUseFarClip; static BOOL sShadowRender; static BOOL sWaterReflections; @@ -589,8 +588,6 @@ protected: LLViewerObject::vobj_list_t mCreateQ; - LLDrawable::drawable_set_t mActiveQ; - LLDrawable::drawable_set_t mRetexturedList; class HighlightItem @@ -676,8 +673,6 @@ protected: std::vector<LLFace*> mSelectedFaces; LLPointer<LLViewerFetchedTexture> mFaceSelectImagep; - LLPointer<LLViewerTexture> mBloomImagep; - LLPointer<LLViewerTexture> mBloomImage2p; U32 mLightMask; U32 mLightMovingMask; @@ -694,6 +689,7 @@ public: }; void render_bbox(const LLVector3 &min, const LLVector3 &max); +void render_hud_elements(); extern LLPipeline gPipeline; extern BOOL gRenderForSelect; diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index cb511c2f0b..c617dacec5 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 @@ -57,30 +57,46 @@ name="Black_50" value="0 0 0 0.5" /> <color + name="FrogGreen" + value="0.26 0.345 0.263 1" /> + <color name="Red" - value="1 0 0 1" /> + value="0.729 0 0.121 1" /> <color name="Blue" value="0 0 1 1" /> <color name="Yellow" - value="0.114 0.65 0.1" /> + value="1 1 0 1" /> <color name="Green" - value="0 .39 .10 1" /> + value="0 1 0 1" /> <color name="Transparent" value="0 0 0 0" /> - <!-- Make potentially unused colors show up bright purple. + <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. --> <color name="Unused?" - value="1 0 1 1" /> + value=".831 1 0 1" /> <!-- UI Definitions --> - <color + <color name="AgentChatColor" reference="White" /> <color @@ -91,7 +107,7 @@ value="1 0.82 0.46 1" /> <color name="AlertCautionTextColor" - reference="Black" /> + reference="LtYellow" /> <color name="AgentLinkColor" reference="White" /> @@ -168,11 +184,14 @@ name="ChatHistoryTextColor" reference="LtGray" /> <color + name="ChicletFlashColor" + value="0.114 0.65 0.1" /> + <color name="ColorDropShadow" reference="Black_50" /> <color name="ColorPaletteEntry01" - value="0 0 0 1" /> + reference="Black" /> <color name="ColorPaletteEntry02" value="0.5 0.5 0.5 1" /> @@ -214,34 +233,34 @@ value="0.5 0.25 0 1" /> <color name="ColorPaletteEntry15" - value="1 1 1 1" /> + reference="White" /> <color name="ColorPaletteEntry16" - value="1 1 1 1" /> + reference="LtYellow" /> <color name="ColorPaletteEntry17" - value="1 1 1 1" /> + reference="LtGreen" /> <color name="ColorPaletteEntry18" - value="0.75 0.75 0.75 1" /> + reference="LtGray" /> <color name="ColorPaletteEntry19" - value="1 0 0 1" /> + reference="Red" /> <color name="ColorPaletteEntry20" - reference="Unused?" /> + reference=".5 .5 1 0" /> <color name="ColorPaletteEntry21" - value="0 1 0 1" /> + reference="Green" /> <color name="ColorPaletteEntry22" value="0 1 1 1" /> <color name="ColorPaletteEntry23" - value="0 0 1 1" /> + reference="Blue" /> <color name="ColorPaletteEntry24" - value="1 0 1 1" /> + reference="Purple" /> <color name="ColorPaletteEntry25" value="1 1 0.5 1" /> @@ -262,16 +281,19 @@ value="1 0.5 0 1" /> <color name="ColorPaletteEntry31" - value="1 1 1 1" /> + reference="White" /> <color name="ColorPaletteEntry32" - value="1 1 1 1" /> + reference="White" /> + <color + name="ComboListBgColor" + reference="DkGray" /> <color name="ConsoleBackground" reference="Black" /> <color name="ContextSilhouetteColor" - value="0.94 0.61 0 1" /> + reference="EmphasisColor" /> <color name="DefaultHighlightDark" reference="White_10" /> @@ -289,7 +311,7 @@ reference="White" /> <color name="FilterBackgroundColor" - reference="MouseGray" /> + reference="Black" /> <color name="FilterTextColor" value="0.38 0.69 0.57 1" /> @@ -322,7 +344,7 @@ value="0.92 0.92 1 0.78" /> <color name="GridlineColor" - value="1 0 0 1" /> + reference="Red" /> <color name="GridlineShadowColor" value="0 0 0 0.31" /> @@ -334,10 +356,10 @@ value="0.3344 0.5456 0.5159 1" /> <color name="GroupNotifyTextColor" - reference="White"/> + reference="White"/> <color name="GroupNotifyDimmedTextColor" - reference="DkGray"/> + reference="LtGray" /> <color name="GroupOverTierColor" value="0.43 0.06 0.06 1" /> @@ -367,7 +389,7 @@ reference="Unused?" /> <color name="HighlightChildColor" - reference="Unused?" /> + reference="Yellow" /> <color name="HighlightInspectColor" value="1 0.5 0 1" /> @@ -391,7 +413,10 @@ reference="White" /> <color name="InventoryBackgroundColor" - reference="Unused?" /> + reference="DkGray2" /> + <color + name="InventoryFocusOutlineColor" + reference="White_25" /> <color name="InventoryItemSuffixColor" reference="White_25" /> @@ -454,7 +479,7 @@ reference="DkGray" /> <color name="MenuBarGodBgColor" - reference="Green" /> + reference="FrogGreen" /> <color name="MenuDefaultBgColor" reference="DkGray2" /> @@ -475,7 +500,7 @@ reference="Black" /> <color name="MenuNonProductionGodBgColor" - value="0 0.5 0 1" /> + value="0.263 0.325 0.345 1" /> <color name="MenuPopupBgColor" reference="DkGray2" /> @@ -502,7 +527,7 @@ value="0 0 0 0.3" /> <color name="NetMapGroupOwnAboveWater" - value="1 0 1 1" /> + reference="Purple" /> <color name="NetMapGroupOwnBelowWater" value="0.78 0 0.78 1" /> @@ -535,7 +560,7 @@ reference="EmphasisColor" /> <color name="OverdrivenColor" - value="1 0 0 1" /> + reference="Red" /> <color name="PanelDefaultBackgroundColor" reference="DkGray" /> @@ -580,7 +605,7 @@ value="0.39 0.39 0.39 1" /> <color name="ScriptErrorColor" - value="0.82 0.27 0.27 1" /> + reference="Red" /> <color name="ScrollBGStripeColor" reference="Transparent" /> @@ -619,7 +644,7 @@ value="0.13 0.42 0.77 1" /> <color name="SilhouetteParentColor" - reference="Unused?" /> + reference="Yellow" /> <color name="SliderDisabledThumbColor" reference="White_25" /> @@ -634,10 +659,10 @@ reference="Unused?" /> <color name="SpeakingColor" - value="0 1 0 1" /> + reference="FrogGreen" /> <color name="SystemChatColor" - reference="White" /> + reference="LtGray" /> <color name="TextBgFocusColor" reference="White" /> @@ -652,7 +677,7 @@ reference="Black" /> <color name="TextDefaultColor" - value="Black" /> + reference="Black" /> <color name="TextEmbeddedItemColor" value="0 0 0.5 1" /> @@ -691,7 +716,7 @@ reference="White" /> <color name="llOwnerSayChatColor" - reference="LtGray" /> + reference="LtYellow" /> <!-- New Colors --> <color @@ -703,7 +728,7 @@ <color name="SysWellItemSelected" value="0.3 0.3 0.3 1.0" /> - <color + <color name="ChatToastAgentNameColor" reference="EmphasisColor" /> <color diff --git a/indra/newview/skins/default/html/da/loading/loading.html b/indra/newview/skins/default/html/da/loading/loading.html index cdad5702b9..5f3426eb60 100644 --- a/indra/newview/skins/default/html/da/loading/loading.html +++ b/indra/newview/skins/default/html/da/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Indlæser...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Indlæser... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/de/loading/loading.html b/indra/newview/skins/default/html/de/loading/loading.html index 3eddbc24f5..44a621b216 100644 --- a/indra/newview/skins/default/html/de/loading/loading.html +++ b/indra/newview/skins/default/html/de/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Wird geladen...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Wird geladen... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/en-us/loading/loading.html b/indra/newview/skins/default/html/en-us/loading/loading.html index 34e5c84c4d..1c62d2f73e 100644 --- a/indra/newview/skins/default/html/en-us/loading/loading.html +++ b/indra/newview/skins/default/html/en-us/loading/loading.html @@ -1,9 +1,9 @@ -<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="sl_logo_rotate_black.gif" align="absmiddle"><br/> loading...
- </td>
- </tr>
-</table>
-</body>
+<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="sl_logo_rotate_black.gif" align="absmiddle"><br/> loading... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/es/loading/loading.html b/indra/newview/skins/default/html/es/loading/loading.html index f03284ba8c..c4260b34c0 100644 --- a/indra/newview/skins/default/html/es/loading/loading.html +++ b/indra/newview/skins/default/html/es/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Cargando...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Cargando... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/fr/loading/loading.html b/indra/newview/skins/default/html/fr/loading/loading.html index 23c0ef03bc..b3953448e9 100644 --- a/indra/newview/skins/default/html/fr/loading/loading.html +++ b/indra/newview/skins/default/html/fr/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Chargement...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Chargement... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/hu/loading/loading.html b/indra/newview/skins/default/html/hu/loading/loading.html index ade91f76c2..ab15a073ba 100644 --- a/indra/newview/skins/default/html/hu/loading/loading.html +++ b/indra/newview/skins/default/html/hu/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Betöltés folyamatban...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Betöltés folyamatban... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/it/loading/loading.html b/indra/newview/skins/default/html/it/loading/loading.html index 0f9af31f6e..ab37e41f04 100644 --- a/indra/newview/skins/default/html/it/loading/loading.html +++ b/indra/newview/skins/default/html/it/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Attendi...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Attendi... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/ja/loading/loading.html b/indra/newview/skins/default/html/ja/loading/loading.html index 069dc5d12f..35cf74a35f 100644 --- a/indra/newview/skins/default/html/ja/loading/loading.html +++ b/indra/newview/skins/default/html/ja/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> ロード中...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> ロード中... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/nl/loading/loading.html b/indra/newview/skins/default/html/nl/loading/loading.html index 39a8691f3f..0215bd7e47 100644 --- a/indra/newview/skins/default/html/nl/loading/loading.html +++ b/indra/newview/skins/default/html/nl/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Laden...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Laden... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/pl/loading/loading.html b/indra/newview/skins/default/html/pl/loading/loading.html index 515890c2d5..50f3dfb0c5 100644 --- a/indra/newview/skins/default/html/pl/loading/loading.html +++ b/indra/newview/skins/default/html/pl/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Ładowanie...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Ładowanie... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/pt/loading/loading.html b/indra/newview/skins/default/html/pt/loading/loading.html index 635ea62406..a83e1123d0 100644 --- a/indra/newview/skins/default/html/pt/loading/loading.html +++ b/indra/newview/skins/default/html/pt/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Carregando...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Carregando... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/ru/loading/loading.html b/indra/newview/skins/default/html/ru/loading/loading.html index dcc0d73c1a..892c0b9f7f 100644 --- a/indra/newview/skins/default/html/ru/loading/loading.html +++ b/indra/newview/skins/default/html/ru/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Загрузка...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Загрузка... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/tr/loading/loading.html b/indra/newview/skins/default/html/tr/loading/loading.html index e7812e7c8e..1ac07bff34 100644 --- a/indra/newview/skins/default/html/tr/loading/loading.html +++ b/indra/newview/skins/default/html/tr/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Yükleniyor...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Yükleniyor... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/uk/loading/loading.html b/indra/newview/skins/default/html/uk/loading/loading.html index 0f67994635..3b5b8679b4 100644 --- a/indra/newview/skins/default/html/uk/loading/loading.html +++ b/indra/newview/skins/default/html/uk/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Завантаж...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> Завантаж... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/html/zh/loading/loading.html b/indra/newview/skins/default/html/zh/loading/loading.html index 462ea291d9..d1d5d25c92 100644 --- a/indra/newview/skins/default/html/zh/loading/loading.html +++ b/indra/newview/skins/default/html/zh/loading/loading.html @@ -1,10 +1,10 @@ -<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
-<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;">
-<table width="100%" height="100%" border="0">
- <tr>
- <td align="center" valign="middle" style="font-size:0.8em;">
- <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> 请等待...
- </td>
- </tr>
-</table>
-</body>
+<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head> +<body style="background-color:#000000;font-family:verdana,helvetica,sans-serif;font-size:62.5%;color:#e9f1f8;"> +<table width="100%" height="100%" border="0"> + <tr> + <td align="center" valign="middle" style="font-size:0.8em;"> + <img src="../../en-us/loading/sl_logo_rotate_black.gif" align="absmiddle"><br/> 请等待... + </td> + </tr> +</table> +</body> diff --git a/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png b/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png Binary files differindex 28ff6ba976..9e7291d6fb 100644 --- a/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png +++ b/indra/newview/skins/default/textures/bottomtray/Move_Fly_Off.png diff --git a/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png Binary files differnew file mode 100644 index 0000000000..e8fe243dc7 --- /dev/null +++ b/indra/newview/skins/default/textures/bottomtray/Unread_Chiclet.png diff --git a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png Binary files differindex dd9133bcc4..6cb33efb93 100644 --- a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png +++ b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit.png diff --git a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png Binary files differindex 0080e71f41..6cb33efb93 100644 --- a/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_Selected.png +++ b/indra/newview/skins/default/textures/bottomtray/WellButton_Lit_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 Binary files differnew file mode 100644 index 0000000000..d50dc69ffe --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Cone_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Cube_Selected.png b/indra/newview/skins/default/textures/build/Object_Cube_Selected.png Binary files differnew file mode 100644 index 0000000000..3d6964530d --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Cube_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png b/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png Binary files differnew file mode 100644 index 0000000000..3ed0389961 --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Cylinder_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Grass_Selected.png b/indra/newview/skins/default/textures/build/Object_Grass_Selected.png Binary files differnew file mode 100644 index 0000000000..3ebd5ea7a1 --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Grass_Selected.png 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 Binary files differnew file mode 100644 index 0000000000..3bdc4d1fd5 --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Hemi_Cone_Selected.png 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 Binary files differnew file mode 100644 index 0000000000..0912442e29 --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Hemi_Cylinder_Selected.png 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 Binary files differnew file mode 100644 index 0000000000..33db4a2de8 --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Hemi_Sphere_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Prism_Selected.png b/indra/newview/skins/default/textures/build/Object_Prism_Selected.png Binary files differnew file mode 100644 index 0000000000..9e80fe2b84 --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Prism_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png b/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png Binary files differnew file mode 100644 index 0000000000..d36bfa55d4 --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Pyramid_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Ring_Selected.png b/indra/newview/skins/default/textures/build/Object_Ring_Selected.png Binary files differnew file mode 100644 index 0000000000..962f6efb93 --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Ring_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png b/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png Binary files differnew file mode 100644 index 0000000000..715d597144 --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Sphere_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png b/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png Binary files differnew file mode 100644 index 0000000000..b2ea680f23 --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Tetrahedron_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Torus_Selected.png b/indra/newview/skins/default/textures/build/Object_Torus_Selected.png Binary files differnew file mode 100644 index 0000000000..1fc22686eb --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Torus_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Tree_Selected.png b/indra/newview/skins/default/textures/build/Object_Tree_Selected.png Binary files differnew file mode 100644 index 0000000000..5bd87f8a2f --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Tree_Selected.png diff --git a/indra/newview/skins/default/textures/build/Object_Tube_Selected.png b/indra/newview/skins/default/textures/build/Object_Tube_Selected.png Binary files differnew file mode 100644 index 0000000000..a4c3f39e14 --- /dev/null +++ b/indra/newview/skins/default/textures/build/Object_Tube_Selected.png diff --git a/indra/newview/skins/default/textures/icons/Generic_Group.png b/indra/newview/skins/default/textures/icons/Generic_Group.png Binary files differindex fdd65b49e1..9d76f75d0f 100644 --- a/indra/newview/skins/default/textures/icons/Generic_Group.png +++ b/indra/newview/skins/default/textures/icons/Generic_Group.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Landmark.png b/indra/newview/skins/default/textures/icons/Inv_Landmark.png Binary files differindex f8ce765c50..76df984596 100644 --- a/indra/newview/skins/default/textures/icons/Inv_Landmark.png +++ b/indra/newview/skins/default/textures/icons/Inv_Landmark.png diff --git a/indra/newview/skins/default/textures/icons/Inv_Shoe.png b/indra/newview/skins/default/textures/icons/Inv_Shoe.png Binary files differindex 51e1c7bbb7..1f52b0a6b6 100644 --- a/indra/newview/skins/default/textures/icons/Inv_Shoe.png +++ b/indra/newview/skins/default/textures/icons/Inv_Shoe.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_Damage_Light_Alt.png b/indra/newview/skins/default/textures/icons/Parcel_Damage_Light_Alt.png Binary files differnew file mode 100644 index 0000000000..d72f02f708 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Parcel_Damage_Light_Alt.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png Binary files differindex 0455a52fdc..e0b18b2451 100644 --- a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png Binary files differindex be0c379d84..101aaa42b1 100644 --- a/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_FlyNo_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png Binary files differindex ed4a512e04..c27f18e3c7 100644 --- a/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_Fly_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png Binary files differindex 2f5871b8ff..60e6a00a25 100644 --- a/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_M_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_M_Light.png b/indra/newview/skins/default/textures/icons/Parcel_M_Light.png Binary files differindex 724ac22744..55f97f3b4e 100644 --- a/indra/newview/skins/default/textures/icons/Parcel_M_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_M_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png Binary files differindex f0565f02dd..11ab1f1e60 100644 --- a/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_PG_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png b/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png Binary files differindex f32b0570a1..b536762ddc 100644 --- a/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_PG_Light.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png b/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png Binary files differindex e0e6e14cca..bf618752f6 100644 --- a/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png +++ b/indra/newview/skins/default/textures/icons/Parcel_R_Dark.png diff --git a/indra/newview/skins/default/textures/icons/Parcel_R_Light.png b/indra/newview/skins/default/textures/icons/Parcel_R_Light.png Binary files differindex efca6776da..a67bbd0cc5 100644 --- a/indra/newview/skins/default/textures/icons/Parcel_R_Light.png +++ b/indra/newview/skins/default/textures/icons/Parcel_R_Light.png diff --git a/indra/newview/skins/default/textures/icons/object_icon.png b/indra/newview/skins/default/textures/icons/object_icon.png Binary files differnew file mode 100644 index 0000000000..223874e631 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/object_icon.png diff --git a/indra/newview/skins/default/textures/icons/unknown_icon.png b/indra/newview/skins/default/textures/icons/unknown_icon.png Binary files differnew file mode 100644 index 0000000000..8441d86596 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/unknown_icon.png diff --git a/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png b/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png Binary files differindex 41cb88628a..605073d786 100644 --- a/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png +++ b/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png diff --git a/indra/newview/skins/default/textures/navbar/NavBar_BG.png b/indra/newview/skins/default/textures/navbar/NavBar_BG.png Binary files differindex 1df61751a8..38eea783e6 100644 --- a/indra/newview/skins/default/textures/navbar/NavBar_BG.png +++ b/indra/newview/skins/default/textures/navbar/NavBar_BG.png diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png Binary files differindex ada28e01da..f5a5f7a846 100644 --- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png +++ b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Off.png diff --git a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.png b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.png Binary files differindex 0f8d5619ec..8e0fb9661e 100644 --- a/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.png +++ b/indra/newview/skins/default/textures/taskpanel/TabIcon_Places_Selected.png diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index b5f6109b1b..4768cf14fb 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -71,7 +71,7 @@ with the same filename but different name <texture name="Audio_Press" file_name="icons/Audio_Press.png" preload="false" /> <texture name="Avaline_Icon" file_name="icons/avaline_default_icon.jpg" preload="true" /> - + <texture name="BackArrow_Disabled" file_name="icons/BackArrow_Disabled.png" preload="false" /> <texture name="BackArrow_Off" file_name="icons/BackArrow_Off.png" preload="false" /> <texture name="BackArrow_Press" file_name="icons/BackArrow_Press.png" preload="false" /> @@ -143,12 +143,12 @@ with the same filename but different name <texture name="DownArrow" file_name="bottomtray/DownArrow.png" preload="false" /> - <texture name="DropDown_Disabled" file_name="widgets/DropDown_Disabled.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> - <texture name="DropDown_Over" file_name="widgets/DropDown_Over.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> - <texture name="DropDown_Press" file_name="widgets/DropDown_Press.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> - <texture name="DropDown_Selected" file_name="widgets/DropDown_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> - <texture name="DropDown_On" file_name="widgets/DropDown_On.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> - <texture name="DropDown_Off" file_name="widgets/DropDown_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> + <texture name="DropDown_Disabled" file_name="widgets/DropDown_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" /> + <texture name="DropDown_Over" file_name="widgets/DropDown_Over.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" /> + <texture name="DropDown_Press" file_name="widgets/DropDown_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" /> + <texture name="DropDown_Selected" file_name="widgets/DropDown_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" /> + <texture name="DropDown_On" file_name="widgets/DropDown_On.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" /> + <texture name="DropDown_Off" file_name="widgets/DropDown_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="99" scale.bottom="4" /> <texture name="DropTarget" file_name="widgets/DropTarget.png" preload="false" /> @@ -167,11 +167,13 @@ with the same filename but different name <texture name="Flag" file_name="navbar/Flag.png" preload="false" /> + <texture name="Folder_Arrow" file_name="folder_arrow.tga" preload="false" /> <texture name="ForSale_Badge" file_name="icons/ForSale_Badge.png" preload="false" /> <texture name="ForwardArrow_Off" file_name="icons/ForwardArrow_Off.png" preload="false" /> <texture name="ForwardArrow_Press" file_name="icons/ForwardArrow_Press.png" preload="false" /> <texture name="Generic_Group" file_name="icons/Generic_Group.png" preload="false" /> + <texture name="icon_group.tga" file_name="icons/Generic_Group.png" preload="false" /> <texture name="Generic_Group_Large" file_name="icons/Generic_Group_Large.png" preload="false" /> <texture name="Generic_Object_Medium" file_name="icons/Generic_Object_Medium.png" preload="false" /> <texture name="Generic_Object_Small" file_name="icons/Generic_Object_Small.png" preload="false" /> @@ -221,6 +223,7 @@ with the same filename but different name <texture name="Inspector_Background" file_name="windows/Inspector_Background.png" preload="false" scale.left="4" scale.top="28" scale.right="60" scale.bottom="4" /> <texture name="Inspector_Hover" file_name="windows/Inspector_Hover.png" preload="false" /> + <texture name="Inspector_I" file_name="windows/Inspector_I.png" preload="false" /> <texture name="Inv_Acessories" file_name="icons/Inv_Accessories.png" preload="false" /> <texture name="Inv_Alpha" file_name="icons/Inv_Alpha.png" preload="false" /> @@ -262,8 +265,8 @@ with the same filename but different name <texture name="Linden_Dollar_Alert" file_name="widgets/Linden_Dollar_Alert.png"/> <texture name="Linden_Dollar_Background" file_name="widgets/Linden_Dollar_Background.png"/> - <texture name="ListItem_Select" file_name="widgets/ListItem_Select.png" preload="true" /> - <texture name="ListItem_Over" file_name="widgets/ListItem_Over.png" preload="true" /> + <texture name="ListItem_Select" file_name="widgets/ListItem_Select.png" preload="true" scale.left="2" scale.bottom="2" scale.top="22" scale.right="278" /> + <texture name="ListItem_Over" file_name="widgets/ListItem_Over.png" preload="true" scale.left="2" scale.bottom="2" scale.top="22" scale.right="278" /> <texture name="Lock" file_name="icons/Lock.png" preload="false" /> <texture name="Lock2" file_name="navbar/Lock.png" preload="false" /> @@ -304,8 +307,8 @@ with the same filename but different name <texture name="Movement_Up_Off" file_name="bottomtray/Movement_Up_Off.png" preload="false" /> <texture name="Movement_Up_On" file_name="bottomtray/Movement_Up_On.png" preload="false" /> - <texture name="NavBar_BG_NoFav" file_name="navbar/NavBar_BG_NoFav.png" preload="false" /> - <texture name="NavBar_BG" file_name="navbar/NavBar_BG.png" preload="false" /> + <texture name="NavBar_BG_NoFav" file_name="navbar/NavBar_BG_NoFav.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" /> + <texture name="NavBar_BG" file_name="navbar/NavBar_BG.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" /> <texture name="NearbyVoice_Lvl1" file_name="bottomtray/NearbyVoice_Lvl1.png" preload="false" /> <texture name="NearbyVoice_Lvl2" file_name="bottomtray/NearbyVoice_Lvl2.png" preload="false" /> @@ -314,21 +317,39 @@ with the same filename but different name <texture name="Notices_Unread" file_name="bottomtray/Notices_Unread.png" preload="true" /> + <texture name="NoEntryLines" file_name="world/NoEntryLines.png" use_mips="true" preload="false" /> + <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" /> @@ -355,6 +376,7 @@ with the same filename but different name <texture name="Parcel_FlyNo_Dark" file_name="icons/Parcel_FlyNo_Dark.png" preload="false" /> <texture name="Parcel_ForSale_Dark" file_name="icons/Parcel_ForSale_Dark.png" preload="false" /> <texture name="Parcel_ForSaleNo_Dark" file_name="icons/Parcel_ForSaleNo_Dark.png" preload="false" /> + <texture name="Parcel_Health_Dark" file_name="icons/Parcel_Health_Dark.png" preload="false" /> <texture name="Parcel_M_Dark" file_name="icons/Parcel_M_Dark.png" preload="false" /> <texture name="Parcel_PG_Dark" file_name="icons/Parcel_PG_Dark.png" preload="false" /> <texture name="Parcel_Push_Dark" file_name="icons/Parcel_Push_Dark.png" preload="false" /> @@ -434,6 +456,7 @@ with the same filename but different name <texture name="Resize_Corner" file_name="windows/Resize_Corner.png" preload="true" /> + <texture name="Rounded_Square" file_name="rounded_square.j2c" preload="true" scale.left="16" scale.top="16" scale.right="112" scale.bottom="16" /> <texture name="Row_Selection" file_name="navbar/Row_Selection.png" preload="false" /> <texture name="ScrollArrow_Down" file_name="widgets/ScrollArrow_Down.png" preload="true" scale.left="2" scale.top="13" scale.right="13" scale.bottom="2" /> @@ -492,6 +515,8 @@ with the same filename but different name <texture name="SliderThumb_Press" file_name="widgets/SliderThumb_Press.png" /> <texture name="SL_Logo" file_name="icons/SL_Logo.png" preload="true" /> + <texture name="OBJECT_Icon" file_name="icons/object_icon.png" preload="true" /> + <texture name="Unknown_Icon" file_name="icons/unknown_icon.png" preload="true" /> <texture name="Snapshot_Off" file_name="bottomtray/Snapshot_Off.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" /> <texture name="Snapshot_Over" file_name="bottomtray/Snapshot_Over.png" preload="false" /> @@ -519,13 +544,14 @@ with the same filename but different name <texture name="TabIcon_Appearance_Selected" file_name="taskpanel/TabIcon_Appearance_Selected.png" preload="false" /> <texture name="TabIcon_Close_Off" file_name="taskpanel/TabIcon_Close_Off.png" preload="false" /> <texture name="TabIcon_Close_Over" file_name="taskpanel/TabIcon_Close_Over.png" preload="false" /> - <texture name="TabIcon_Home_Off" file_name="taskpanel/TabIcon_Home_Off.png" preload="false" /> - <texture name="TabIcon_Home_Over" file_name="taskpanel/TabIcon_Home_Over.png" preload="false" /> - <texture name="TabIcon_Home_Selected" file_name="taskpanel/TabIcon_Home_Selected.png" preload="false" /> <texture name="TabIcon_Inventory_Large" file_name="taskpanel/TabIcon_Inventory_Large.png" preload="false" /> <texture name="TabIcon_Inventory_Off" file_name="taskpanel/TabIcon_Inventory_Off.png" preload="false" /> <texture name="TabIcon_Inventory_Over" file_name="taskpanel/TabIcon_Inventory_Over.png" preload="false" /> <texture name="TabIcon_Inventory_Selected" file_name="taskpanel/TabIcon_Inventory_Selected.png" preload="false" /> + <texture name="TabIcon_Home_Large" file_name="taskpanel/TabIcon_Home_Large.png" preload="false" /> + <texture name="TabIcon_Home_Off" file_name="taskpanel/TabIcon_Home_Off.png" preload="false" /> + <texture name="TabIcon_Home_Over" file_name="taskpanel/TabIcon_Home_Over.png" preload="false" /> + <texture name="TabIcon_Home_Selected" file_name="taskpanel/TabIcon_Home_Selected.png" preload="false" /> <texture name="TabIcon_Me_Large" file_name="taskpanel/TabIcon_Me_Large.png" preload="false" /> <texture name="TabIcon_Me_Off" file_name="taskpanel/TabIcon_Me_Off.png" preload="false" /> <texture name="TabIcon_Me_Over" file_name="taskpanel/TabIcon_Me_Over.png" preload="false" /> @@ -548,13 +574,13 @@ with the same filename but different name <texture name="TabTop_Divider" file_name="containers/TabTop_Divider.png" preload="false" /> <texture name="TabTop_Left_Press" file_name="containers/TabTop_Left_Press.png" preload="false" /> <texture name="TabTop_Middle_Press" file_name="containers/TabTop_Middle_Press.png" preload="false" /> - <texture name="TabTop_Right_Off" file_name="containers/TabTop_Right_Off.png" preload="false" /> + <texture name="TabTop_Right_Off" file_name="containers/TabTop_Right_Off.png" preload="false" scale.left="8" scale.top="8" scale.right="62" scale.bottom="9" /> <texture name="TabTop_Right_Press" file_name="containers/TabTop_Right_Press.png" preload="false" /> - <texture name="TabTop_Right_Selected" file_name="containers/TabTop_Right_Selected.png" preload="false" /> + <texture name="TabTop_Right_Selected" file_name="containers/TabTop_Right_Selected.png" preload="false" scale.left="8" scale.top="8" scale.right="62" scale.bottom="9" /> <texture name="TabTop_Middle_Off" file_name="containers/TabTop_Middle_Off.png" preload="false" scale.left="8" scale.top="8" scale.right="120" scale.bottom="9" /> <texture name="TabTop_Middle_Selected" file_name="containers/TabTop_Middle_Selected.png" preload="false" scale.left="8" scale.top="8" scale.right="96" scale.bottom="9" /> - <texture name="TabTop_Left_Off" file_name="containers/TabTop_Left_Off.png" preload="false" scale.left="8" scale.top="8" scale.right="120" scale.bottom="9" /> - <texture name="TabTop_Left_Selected" file_name="containers/TabTop_Left_Selected.png" preload="false" scale.left="8" scale.top="8" scale.right="96" scale.bottom="9" /> + <texture name="TabTop_Left_Off" file_name="containers/TabTop_Left_Off.png" preload="false" scale.left="8" scale.top="8" scale.right="120" scale.bottom="9" /> + <texture name="TabTop_Left_Selected" file_name="containers/TabTop_Left_Selected.png" preload="false" scale.left="8" scale.top="8" scale.right="96" scale.bottom="9" /> <texture name="TaskPanel_Tab_Off" file_name="taskpanel/TaskPanel_Tab_Off.png" preload="false" scale.left="4" scale.top="29" scale.right="36" scale.bottom="4" /> <texture name="TaskPanel_Tab_Selected" file_name="taskpanel/TaskPanel_Tab_Selected.png" preload="false" scale.left="5" scale.top="30" scale.right="36" scale.bottom="5" /> @@ -570,7 +596,6 @@ with the same filename but different name <texture name="TimeBasedMediaBackground" file_name="windows/TimeBasedMediaBackground.png" preload="false" /> - <texture name="Toast_CloseBtn" file_name="windows/Toast_CloseBtn.png" preload="true" /> <texture name="Toast_Background" file_name="windows/Toast_Background.png" preload="true" scale.left="4" scale.top="28" scale.right="60" scale.bottom="4" /> @@ -578,21 +603,26 @@ 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" /> - <texture name="Toolbar_Left_Press" file_name="containers/Toolbar_Left_Press.png" preload="false" /> - <texture name="Toolbar_Left_Selected" file_name="containers/Toolbar_Left_Selected.png" preload="false" /> - <texture name="Toolbar_Middle_Off" file_name="containers/Toolbar_Middle_Off.png" preload="false" /> - <texture name="Toolbar_Middle_Press" file_name="containers/Toolbar_Middle_Press.png" preload="false" /> - <texture name="Toolbar_Middle_Selected" file_name="containers/Toolbar_Middle_Selected.png" preload="false" /> - <texture name="Toolbar_Right_Off" file_name="containers/Toolbar_Right_Off.png" preload="false" /> - <texture name="Toolbar_Right_Press" file_name="containers/Toolbar_Right_Press.png" preload="false" /> - <texture name="Toolbar_Right_Selected" file_name="containers/Toolbar_Right_Selected.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" /> + <texture name="Toolbar_Left_Press" file_name="containers/Toolbar_Left_Press.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" /> + <texture name="Toolbar_Left_Selected" file_name="containers/Toolbar_Left_Selected.png" preload="false" scale.left="5" scale.bottom="4" scale.top="24" scale.right="30" /> + <texture name="Toolbar_Middle_Off" file_name="containers/Toolbar_Middle_Off.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" /> + <texture name="Toolbar_Middle_Press" file_name="containers/Toolbar_Middle_Press.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" /> + <texture name="Toolbar_Middle_Selected" file_name="containers/Toolbar_Middle_Selected.png" preload="false" scale.left="1" scale.bottom="2" scale.top="24" scale.right="30" /> + <texture name="Toolbar_Right_Off" file_name="containers/Toolbar_Right_Off.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" /> + <texture name="Toolbar_Right_Press" file_name="containers/Toolbar_Right_Press.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" /> + <texture name="Toolbar_Right_Selected" file_name="containers/Toolbar_Right_Selected.png" preload="false" scale.left="1" scale.bottom="4" scale.top="24" scale.right="26" /> <texture name="Tooltip" file_name="widgets/Tooltip.png" preload="true" scale.left="2" scale.top="16" scale.right="100" scale.bottom="3" /> @@ -600,11 +630,12 @@ with the same filename but different name <texture name="TrashItem_Off" file_name="icons/TrashItem_Off.png" preload="false" /> <texture name="TrashItem_Press" file_name="icons/TrashItem_Press.png" preload="false" /> - <texture name="Unread_IM" file_name="bottomtray/Unread_IM.png" preload="false" /> + <texture name="Unread_Chiclet" file_name="bottomtray/Unread_Chiclet.png" preload="false" /> <texture name="Unread_Msg" file_name="bottomtray/Unread_Msg.png" preload="false" /> + <texture name="Unread_IM" file_name="bottomtray/Unread_IM.png" preload="false" /> - <texture name="WellButton_Lit" file_name="bottomtray/WellButton_Lit.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" /> - <texture name="WellButton_Lit_Selected" file_name="bottomtray/WellButton_Lit_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" /> + <texture name="Volume_Background" file_name="windows/Volume_Background.png" preload="false" + scale.left="6" scale.top="33" scale.right="63" scale.bottom="10" /> <texture name="VoicePTT_Lvl1" file_name="bottomtray/VoicePTT_Lvl1.png" preload="false" /> <texture name="VoicePTT_Lvl2" file_name="bottomtray/VoicePTT_Lvl2.png" preload="false" /> @@ -612,6 +643,9 @@ with the same filename but different name <texture name="VoicePTT_Off" file_name="bottomtray/VoicePTT_Off.png" preload="false" /> <texture name="VoicePTT_On" file_name="bottomtray/VoicePTT_On.png" preload="false" /> + <texture name="WellButton_Lit" file_name="bottomtray/WellButton_Lit.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" /> + <texture name="WellButton_Lit_Selected" file_name="bottomtray/WellButton_Lit_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" /> + <texture name="WebBasedMediaBackground" file_name="windows/WebBasedMediaBackground.png" preload="false" /> <texture name="Widget_DownArrow" file_name="icons/Widget_DownArrow.png" preload="true" /> @@ -641,98 +675,54 @@ with the same filename but different name <texture name="PowerOff_Over" file_name="icons/PowerOff_Over.png" preload="false" /> <texture name="PowerOff_Press" file_name="icons/PowerOff_Press.png" preload="false" /> - <!--WARNING OLD ART *do not use*--> - - <texture name="btn_chatbar.tga" scale.left="20" scale.top="24" scale.right="44" scale.bottom="0" /> - <texture name="btn_chatbar_selected.tga" scale.left="20" scale.top="24" scale.right="44" scale.bottom="0" /> - - <texture name="cam_rotate_out.tga" preload="false" /> - <texture name="cam_rotate_in.tga" preload="false" /> - <texture name="cam_zoom_out.tga" preload="false" /> - <texture name="cam_zoom_plus_in.tga" preload="false" /> - <texture name="cam_zoom_minus_in.tga" preload="false" /> + <texture name="pixiesmall.j2c" use_mips="true" /> + <texture name="script_error.j2c" use_mips="true" /> + <texture name="silhouette.j2c" use_mips="true" /> + <texture name="foot_shadow.j2c" use_mips="true" /> + <texture name="cloud-particle.j2c" use_mips="true" /> + <texture name="transparent.j2c" use_mips="true" /> + <!--WARNING OLD ART BELOW *do not use*--> <texture name="icn_chatbar.tga" /> - <texture name="icn_media-pause.tga" /> - <texture name="icn_media-play.tga" /> - <texture name="icn_music-play.tga" /> - <texture name="icn_music-pause.tga" /> <texture name="icn_media_web.tga" preload="true" /> <texture name="icn_media_movie.tga" preload="true" /> - <texture name="icn_speaker-muted_dark.tga" /> <texture name="icn_speaker_dark.tga" /> - <texture name="icn_voice-localchat.tga" /> <texture name="icn_voice-groupfocus.tga" /> <texture name="icn_voice-pvtfocus.tga" /> - <texture name="jump_left_out.tga" /> - <texture name="jump_left_in.tga" /> - <texture name="jump_right_out.tga" /> - <texture name="jump_right_in.tga" /> - - <texture name="move_forward_out.tga" preload="false" /> - <texture name="move_forward_in.tga" preload="false" /> - <texture name="move_left_out.tga" preload="false" /> - <texture name="move_left_in.tga" preload="false" /> - <texture name="move_turn_left_out.tga" preload="false" /> - <texture name="move_turn_left_in.tga" preload="false" /> - <texture name="move_turn_right_out.tga" preload="false" /> - <texture name="move_turn_right_in.tga" preload="false" /> - <texture name="move_right_out.tga" preload="false" /> - <texture name="move_right_in.tga" preload="false" /> - <texture name="move_up_in.tga" preload="false" /> - <texture name="move_up_out.tga" preload="false" /> - <texture name="move_down_in.tga" preload="false" /> - <texture name="move_down_out.tga" preload="false" /> + <texture name="jump_left_out.tga" file_name="widgets/jump_left_out.png" /> + <texture name="jump_left_in.tga" file_name="widgets/jump_left_in.png" /> + <texture name="jump_right_out.tga" file_name="widgets/jump_right_out.png" /> + <texture name="jump_right_in.tga" file_name="widgets/jump_right_in.png" /> + + <texture name="scrollbutton_left_out_blue.tga" file_name="widgets/ScrollArrow_Left_Opaque.png" /> + <texture name="scrollbutton_left_in_blue.tga" file_name="widgets/ScrollArrow_Left_Over_Opaque.png" /> + <texture name="scrollbutton_right_out_blue.tga" file_name="widgets/ScrollArrow_Right_Opaque.png" /> + <texture name="scrollbutton_right_in_blue.tga" file_name="widgets/ScrollArrow_Right_Over_Opaque.png" /> <texture name="up_arrow.tga" file_name="up_arrow.png" /> <texture name="down_arrow.tga" file_name="down_arrow.png" /> + <texture name="arrow_down.tga" /> <texture name="tearoffbox.tga" /> <texture name="tearoff_pressed.tga" /> <texture name="icn_label_music.tga" /> <texture name="icn_label_media.tga" /> - <texture name="arrow_down.tga" /> - <texture name="cloud-particle.j2c" use_mips="true" /> - - <texture name="skin_thumbnail_default.png" preload="false" /> - - <texture name="icn_textfield_enabled.tga" scale.left="5" scale.top="5" scale.bottom="5" scale.right="5" /> <texture name="icn_rounded-text-field.tga" scale.left="14" scale.bottom="16" scale.top="16" scale.right="114" /> - <texture name="toolbar_btn_enabled.tga" scale.left="7" scale.top="32" scale.right="121" scale.bottom="0" /> - <texture name="toolbar_btn_disabled.tga" scale.left="7" scale.top="32" scale.right="121" scale.bottom="0" /> - <texture name="toolbar_btn_selected.tga" scale.left="7" scale.top="32" scale.right="121" scale.bottom="0" /> - <texture name="toggle_button_off" file_name="toggle_button_off.png" preload="true" /> <texture name="toggle_button_selected" file_name="toggle_button_selected.png" preload="true" /> - - <texture name="sm_rounded_corners_simple.tga" scale.left="4" scale.top="4" scale.bottom="4" scale.right="4" /> - - <texture name="rounded_square.tga" file_name="rounded_square.j2c" preload="true" scale.left="16" scale.top="16" scale.right="112" scale.bottom="16" /> - - <texture name="rounded_square_soft.tga" file_name="rounded_square_soft.j2c" preload="true" scale.left="16" scale.top="16" scale.right="112" scale.bottom="16" /> - - <texture name="toolbar_tab.tga" preload="true" scale.left="6" scale.top="42" scale.right="104" scale.bottom="8" /> - <texture name="toolbar_bg.tga" preload="true" scale.left="6" scale.top="42" scale.right="96" scale.bottom="16" /> - - <texture name="tab_top_blue.tga" preload="false" scale.left="8" scale.top="8" scale.right="120" scale.bottom="9" /> - <texture name="tab_top_selected_blue.tga" preload="false" scale.left="8" scale.top="8" scale.right="96" scale.bottom="9" /> - <texture name="color_swatch_alpha.tga" preload="true" /> <texture name="button_anim_pause.tga" /> <texture name="button_anim_pause_selected.tga" /> <texture name="button_anim_play.tga" /> <texture name="button_anim_play_selected.tga" /> - <texture name="button_anim_stop.tga" /> - <texture name="button_anim_stop_selected.tga" /> <texture name="crosshairs.tga" /> - <texture name="direction_arrow.tga" /> - <texture name="foot_shadow.j2c" use_mips="true" /> + <texture name="direction_arrow.tga" file_name="world/BeaconArrow.png" /> <texture name="icon_auction.tga" /> <texture name="icon_avatar_offline.tga" /> @@ -742,12 +732,7 @@ with the same filename but different name <texture name="icon_event.tga" /> <texture name="icon_event_mature.tga" /> <texture name="icon_for_sale.tga" /> - <texture name="icon_group.tga" /> - <texture name="icon_groupnotice.tga" /> - <texture name="icon_groupnoticeinventory.tga" /> - <texture name="icon_place.tga" /> <texture name="icon_place_for_sale.tga" /> - <texture name="icon_popular.tga" /> <texture name="icon_top_pick.tga" /> <texture name="lag_status_critical.tga" /> @@ -766,31 +751,10 @@ with the same filename but different name <texture name="map_telehub.tga" /> <texture name="map_track_16.tga" /> - <texture name="media_icon.tga" file_name="icn_label_media.tga" /> - <texture name="music_icon.tga" file_name="icn_label_music.tga" /> - <texture name="NoEntryLines" file_name="world/NoEntryLines.png" use_mips="true" preload="false" /> - <texture name="NoEntryPassLines" file_name="world/NoEntryPassLines.png" use_mips="true" preload="false" /> - - <texture name="notify_tip_icon.tga" /> <texture name="notify_caution_icon.tga" /> <texture name="notify_next.png" preload="true" /> <texture name="notify_box_icon.tga" /> - <texture name="pixiesmall.j2c" use_mips="true" /> - <texture name="script_error.j2c" use_mips="true" /> - <texture name="silhouette.j2c" use_mips="true" /> - - <texture name="status_no_build.tga" /> - <texture name="status_voice.tga" /> - <texture name="status_buy_currency.tga" /> - <texture name="status_buy_currency_pressed.tga" /> - <texture name="status_buy_land.tga" /> - <texture name="status_buy_land_pressed.tga" /> - <texture name="status_no_fly.tga" /> - <texture name="status_health.tga" /> - <texture name="status_no_push.tga" /> - <texture name="status_no_scripts.tga" /> - <texture name="icn_active-speakers-dot-lvl0.tga" /> <texture name="icn_active-speakers-dot-lvl1.tga" /> <texture name="icn_active-speakers-dot-lvl2.tga" /> @@ -812,23 +776,5 @@ with the same filename but different name <texture name="default_profile_picture.j2c" /> <texture name="locked_image.j2c" /> - <texture name="media_btn_back.png" /> - <texture name="media_btn_done.png" /> - <texture name="media_btn_forward.png" /> - <texture name="media_btn_home.png" /> - <texture name="media_btn_newwindow.png" /> - <texture name="media_btn_optimalzoom.png" /> - <texture name="media_btn_reload.png" /> - <texture name="media_btn_scrolldown.png" /> - <texture name="media_btn_scrollleft.png" /> - <texture name="media_btn_scrollright.png" /> - <texture name="media_btn_scrollup.png" /> - <texture name="media_btn_stoploading.png" /> - <texture name="media_panel_divider.png" /> - <texture name="media_floater_border_16.png" scale_top="12" scale_left="4" scale_bottom="4" scale_right="12" /> - - <texture name="media_panel_bg.png" preload="true" scale_left="9" scale_top="9" scale_right="9" scale_bottom="9" /> - <texture name="media_panel_hoverrectangle.png" preload="true" scale_left="9" scale_top="9" scale_right="9" scale_bottom="9" /> - </textures> diff --git a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png Binary files differindex a1d602f6f0..61f9b076ce 100644 --- a/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png +++ b/indra/newview/skins/default/textures/widgets/Linden_Dollar_Background.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.png Binary files differnew file mode 100644 index 0000000000..549b3980f6 --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Opaque.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.png Binary files differnew file mode 100644 index 0000000000..a74abd5d8a --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Left_Over_Opaque.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.png Binary files differnew file mode 100644 index 0000000000..36056d0ad9 --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Opaque.png diff --git a/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.png b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.png Binary files differnew file mode 100644 index 0000000000..0c1fd6956b --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/ScrollArrow_Right_Over_Opaque.png diff --git a/indra/newview/skins/default/textures/widgets/jump_left_in.png b/indra/newview/skins/default/textures/widgets/jump_left_in.png Binary files differnew file mode 100644 index 0000000000..a1425ccfa0 --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/jump_left_in.png diff --git a/indra/newview/skins/default/textures/widgets/jump_left_out.png b/indra/newview/skins/default/textures/widgets/jump_left_out.png Binary files differnew file mode 100644 index 0000000000..38edf47d19 --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/jump_left_out.png diff --git a/indra/newview/skins/default/textures/widgets/jump_right_in.png b/indra/newview/skins/default/textures/widgets/jump_right_in.png Binary files differnew file mode 100644 index 0000000000..39359ab2e2 --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/jump_right_in.png diff --git a/indra/newview/skins/default/textures/widgets/jump_right_out.png b/indra/newview/skins/default/textures/widgets/jump_right_out.png Binary files differnew file mode 100644 index 0000000000..3f76bbffac --- /dev/null +++ b/indra/newview/skins/default/textures/widgets/jump_right_out.png diff --git a/indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.png b/indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.png Binary files differnew file mode 100644 index 0000000000..361fab59e0 --- /dev/null +++ b/indra/newview/skins/default/textures/windows/Flyout_Pointer_Up.png diff --git a/indra/newview/skins/default/textures/windows/Inspector_I.png b/indra/newview/skins/default/textures/windows/Inspector_I.png Binary files differnew file mode 100644 index 0000000000..b4875fd638 --- /dev/null +++ b/indra/newview/skins/default/textures/windows/Inspector_I.png diff --git a/indra/newview/skins/default/textures/windows/Volume_Background.png b/indra/newview/skins/default/textures/windows/Volume_Background.png Binary files differnew file mode 100644 index 0000000000..43aaa441f5 --- /dev/null +++ b/indra/newview/skins/default/textures/windows/Volume_Background.png diff --git a/indra/newview/skins/default/textures/world/BeaconArrow.png b/indra/newview/skins/default/textures/world/BeaconArrow.png Binary files differnew file mode 100644 index 0000000000..54934f738a --- /dev/null +++ b/indra/newview/skins/default/textures/world/BeaconArrow.png diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml index cdf1915d5e..eb63b5c975 100644 --- a/indra/newview/skins/default/xui/da/floater_about.xml +++ b/indra/newview/skins/default/xui/da/floater_about.xml @@ -1,81 +1,81 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_about" title="OM [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">
- Bygget med [COMPILER] version [COMPILER_VERSION]
- </floater.string>
- <floater.string name="AboutPosition">
- Du er ved [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] i [REGION] lokaliseret på [HOSTNAME] ([HOSTIP])
-[SERVER_VERSION]
-[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]]
- </floater.string>
- <floater.string name="AboutSystem">
- CPU: [CPU]
-Memory: [MEMORY_MB] MB
-OS Version: [OS_VERSION]
-Grafik kort mærke: [GRAPHICS_CARD_VENDOR]
-Grafik kort: [GRAPHICS_CARD]
- </floater.string>
- <floater.string name="AboutDriver">
- Windows Graphics Driver Version: [GRAPHICS_DRIVER_VERSION]
- </floater.string>
- <floater.string name="AboutLibs">
- OpenGL Version: [OPENGL_VERSION]
-
-libcurl Version: [LIBCURL_VERSION]
-J2C Decoder Version: [J2C_VERSION]
-Audio Driver Version: [AUDIO_DRIVER_VERSION]
-Qt Webkit Version: [QT_WEBKIT_VERSION]
-Vivox Version: [VIVOX_VERSION]
- </floater.string>
- <floater.string name="none">
- (ingen)
- </floater.string>
- <floater.string name="AboutTraffic">
- Pakker tabt: [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="Kopiér til udklipsholder" name="copy_btn"/>
- </panel>
- <panel label="Tak til" name="credits_panel">
- <text_editor name="credits_editor">
- Second Life er gjort muligt for dig af 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.
-
-Tak til følgende beboerne for at bidrage til at sikre, at dette er den bedste version til dato: 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 label="Licenser" 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.
- expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd.
- FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org).
- GL Copyright (C) 1999-2004 Brian Paul.
- Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited.
- jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW)
- jpeglib Copyright (C) 1991-1998, Thomas G. Lane.
- ogg/vorbis Copyright (C) 2001, Xiphophorus
- OpenSSL Copyright (C) 1998-2002 The OpenSSL Project.
- SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
- SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- xmlrpc-epi Copyright (C) 2000 Epinions, Inc.
- zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler.
- google-perftools Copyright (c) 2005, Google Inc.
-
-Alle rettigheder forbeholdes. Se licenses.txt for detaljer.
-
-Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
- </text_editor>
- </panel>
- </tab_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_about" title="OM [CAPITALIZED_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"> + Bygget med [COMPILER] version [COMPILER_VERSION] + </floater.string> + <floater.string name="AboutPosition"> + Du er ved [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] i [REGION] lokaliseret på [HOSTNAME] ([HOSTIP]) +[SERVER_VERSION] +[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]] + </floater.string> + <floater.string name="AboutSystem"> + CPU: [CPU] +Memory: [MEMORY_MB] MB +OS Version: [OS_VERSION] +Grafik kort mærke: [GRAPHICS_CARD_VENDOR] +Grafik kort: [GRAPHICS_CARD] + </floater.string> + <floater.string name="AboutDriver"> + Windows Graphics Driver Version: [GRAPHICS_DRIVER_VERSION] + </floater.string> + <floater.string name="AboutLibs"> + OpenGL Version: [OPENGL_VERSION] + +libcurl Version: [LIBCURL_VERSION] +J2C Decoder Version: [J2C_VERSION] +Audio Driver Version: [AUDIO_DRIVER_VERSION] +Qt Webkit Version: [QT_WEBKIT_VERSION] +Vivox Version: [VIVOX_VERSION] + </floater.string> + <floater.string name="none"> + (ingen) + </floater.string> + <floater.string name="AboutTraffic"> + Pakker tabt: [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="Kopiér til udklipsholder" name="copy_btn"/> + </panel> + <panel label="Tak til" name="credits_panel"> + <text_editor name="credits_editor"> + Second Life er gjort muligt for dig af 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. + +Tak til følgende beboerne for at bidrage til at sikre, at dette er den bedste version til dato: 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 label="Licenser" 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. + expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. + FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). + GL Copyright (C) 1999-2004 Brian Paul. + Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. + jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) + jpeglib Copyright (C) 1991-1998, Thomas G. Lane. + ogg/vorbis Copyright (C) 2001, Xiphophorus + OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. + SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga + SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) + xmlrpc-epi Copyright (C) 2000 Epinions, Inc. + zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. + google-perftools Copyright (c) 2005, Google Inc. + +Alle rettigheder forbeholdes. Se licenses.txt for detaljer. + +Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) + </text_editor> + </panel> + </tab_container> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_about_land.xml b/indra/newview/skins/default/xui/da/floater_about_land.xml index cb5d618dde..b4af427538 100644 --- a/indra/newview/skins/default/xui/da/floater_about_land.xml +++ b/indra/newview/skins/default/xui/da/floater_about_land.xml @@ -1,7 +1,59 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floaterland" title="OM LAND"> + <floater.string name="Minutes"> + [MINUTES] minutter + </floater.string> + <floater.string name="Minute"> + minut + </floater.string> + <floater.string name="Seconds"> + [SECONDS] sekunder + </floater.string> + <floater.string name="Remaining"> + mangler + </floater.string> <tab_container name="landtab"> - <panel label="Generelt" name="land_general_panel"> + <panel label="GENERELT" name="land_general_panel"> + <panel.string name="new users only"> + Kun nye brugere + </panel.string> + <panel.string name="anyone"> + Alle + </panel.string> + <panel.string name="area_text"> + Størrelse + </panel.string> + <panel.string name="area_size_text"> + [AREA] m² + </panel.string> + <panel.string name="auction_id_text"> + Auktion nr: [ID] + </panel.string> + <panel.string name="need_tier_to_modify"> + Du skal godkende dit køb for at kunne æmdre på dette land. + </panel.string> + <panel.string name="group_owned_text"> + (Gruppe ejet) + </panel.string> + <panel.string name="profile_text"> + Profil... + </panel.string> + <panel.string name="info_text"> + Info... + </panel.string> + <panel.string name="public_text"> + (offentlig) + </panel.string> + <panel.string name="none_text"> + (ingen) + </panel.string> + <panel.string name="sale_pending_text"> + (Salg i gang) + </panel.string> + <panel.string name="no_selection_text"> + Pacel ikke valgt. +Gå til 'Verden' > 'Om land' eller vælg en anden parcel for at se detaljer. + </panel.string> <text name="Name:"> Navn: </text> @@ -26,7 +78,6 @@ <text name="OwnerText"> Leyla Linden </text> - <button label="Profil..." label_selected="Profil..." name="Profile..."/> <text name="Group:"> Gruppe: </text> @@ -78,54 +129,23 @@ <button label="Efterlad land..." label_selected="Efterlad land..." name="Abandon Land..."/> <button label="Kræv tilbage..." label_selected="Kræv tilbage..." name="Reclaim Land..."/> <button label="Linden salg..." label_selected="Linden salg..." name="Linden Sale..." tool_tip="Land skal være ejet, indholdsrating sat og ikke allerede på auktion."/> - <panel.string name="new users only"> - Kun nye brugere - </panel.string> - <panel.string name="anyone"> - Alle - </panel.string> - <panel.string name="area_text"> - Størrelse - </panel.string> - <panel.string name="area_size_text"> - [AREA] m² - </panel.string> - <panel.string name="auction_id_text"> - Auktion nr: [ID] - </panel.string> - <panel.string name="need_tier_to_modify"> - Du skal godkende dit køb for at kunne æmdre på dette land. - </panel.string> - <panel.string name="group_owned_text"> - (Gruppe ejet) - </panel.string> - <panel.string name="profile_text"> - Profil... - </panel.string> - <panel.string name="info_text"> - Info... - </panel.string> - <panel.string name="public_text"> - (offentlig) + </panel> + <panel label="REGLER" name="land_covenant_panel"> + <panel.string name="can_resell"> + Købt land i denne region må sælges videre </panel.string> - <panel.string name="none_text"> - (ingen) + <panel.string name="can_not_resell"> + Købt land i denne region må ikke sælges videre </panel.string> - <panel.string name="sale_pending_text"> - (Salg i gang) + <panel.string name="can_change"> + Købt jord i denne region må gerne samles eller opdeles. </panel.string> - <panel.string name="no_selection_text"> - Pacel ikke valgt. -Gå til 'Verden' > 'Om land' eller vælg en anden parcel for at se detaljer. + <panel.string name="can_not_change"> + Købt jord i denne region må íkke samles eller opdeles. </panel.string> - </panel> - <panel label="Regler" name="land_covenant_panel"> <text name="estate_section_lbl"> Estate: </text> - <text name="estate_name_lbl"> - Navn: - </text> <text name="estate_name_text"> Hovedland </text> @@ -144,9 +164,6 @@ Gå til 'Verden' > 'Om land' eller vælg en anden parcel <text name="region_section_lbl"> Region: </text> - <text name="region_name_lbl"> - Navn: - </text> <text name="region_name_text"> leyla </text> @@ -174,35 +191,23 @@ Gå til 'Verden' > 'Om land' eller vælg en anden parcel <text name="changeable_clause"> Land i denne region må ikke samles/opdeles. </text> - <panel.string name="can_resell"> - Købt land i denne region må sælges videre - </panel.string> - <panel.string name="can_not_resell"> - Købt land i denne region må ikke sælges videre - </panel.string> - <panel.string name="can_change"> - Købt jord i denne region må gerne samles eller opdeles. + </panel> + <panel label="OBJEKTER" name="land_objects_panel"> + <panel.string name="objects_available_text"> + [COUNT] ud af [MAX] ([AVAILABLE] ledige) </panel.string> - <panel.string name="can_not_change"> - Købt jord i denne region må íkke samles eller opdeles. + <panel.string name="objects_deleted_text"> + [COUNT] ud af [MAX] ([DELETED] bliver slettet) </panel.string> - </panel> - <panel label="Objekter" name="land_objects_panel"> <text name="parcel_object_bonus"> Region objekt bonus faktor: [BONUS] </text> <text name="Simulator primitive usage:"> - Prims brugt i denne Sim: + Prim forbrug: </text> <text name="objects_available"> [COUNT] ud af [MAX] ([AVAILABLE] ledige) </text> - <panel.string name="objects_available_text"> - [COUNT] ud af [MAX] ([AVAILABLE] ledige) - </panel.string> - <panel.string name="objects_deleted_text"> - [COUNT] ud af [MAX] ([DELETED] bliver slettet) - </panel.string> <text name="Primitives parcel supports:"> Prims til rådighed: </text> @@ -251,33 +256,63 @@ Gå til 'Verden' > 'Om land' eller vælg en anden parcel <text name="Object Owners:"> Objekt ejere: </text> - <button label="Gentegn liste" label_selected="Gentegn liste" name="Refresh List"/> + <button label="Gentegn liste" label_selected="Gentegn liste" name="Refresh List" tool_tip="Refresh Object List"/> <button label="Returnér objekter..." label_selected="Returnér objekter..." name="Return objects..."/> <name_list name="owner list"> - <column label="Type" name="type"/> - <column label="Navn" name="name"/> - <column label="Antal" name="count"/> - <column label="Nyeste" name="mostrecent"/> + <name_list.columns label="Type" name="type"/> + <name_list.columns label="Navn" name="name"/> + <name_list.columns label="Antal" name="count"/> + <name_list.columns label="Nyeste" name="mostrecent"/> </name_list> </panel> - <panel label="Indstillinger" name="land_options_panel"> + <panel label="INDSTILLINGER" name="land_options_panel"> + <panel.string name="search_enabled_tooltip"> + Lad beboere se denne parcel i søgeresultater + </panel.string> + <panel.string name="search_disabled_small_tooltip"> + Denne mulighed er ikke til stede da parcellens område er 128 m² eller mindre. +Kun større parceller kan vises i søgning. + </panel.string> + <panel.string name="search_disabled_permissions_tooltip"> + Dette valg er lukket da du ikke kan ændre på denne parcels opsætning. + </panel.string> + <panel.string name="mature_check_mature"> + Mature indhold + </panel.string> + <panel.string name="mature_check_adult"> + Adult indhold + </panel.string> + <panel.string name="mature_check_mature_tooltip"> + Din parcel information eller indhold anses for at være 'adult'. + </panel.string> + <panel.string name="mature_check_adult_tooltip"> + Din parcel information eller indhold anses for at være 'adult'. + </panel.string> + <panel.string name="landing_point_none"> + (ingen) + </panel.string> + <panel.string name="push_restrict_text"> + Skub forbudt + </panel.string> + <panel.string name="push_restrict_region_text"> + Skub forbudt (Uanset region indstilling) + </panel.string> <text name="allow_label"> Tillad andre beboere at: </text> <check_box label="Redigere terræn" name="edit land check" tool_tip="Hvis dette er valg, kan enhver redigere dit land. Det er bedst ikke at vælge her, da det altid er muligt for dig som ejer at ændre terræn på dit eget land."/> - <check_box label="Lave landemærker" name="check landmark"/> <check_box label="Flyve" name="check fly" tool_tip="Hvis valgt, kan beboere flyve på dit land. Hvis ikke valgt kan beboere kun flyve ind på dit land og over dit land."/> - <text name="allow_label2" left="194"> + <text left="194" name="allow_label2"> Lave objekter: </text> <check_box label="Alle beboere" name="edit objects check"/> <check_box label="Gruppe" name="edit group objects check"/> - <text name="allow_label3" left="170"> + <text left="170" name="allow_label3"> Anbringe objekter: </text> <check_box label="Alle beboere" name="all object entry check"/> <check_box label="Gruppe" name="group object entry check"/> - <text name="allow_label4" left="200"> + <text left="200" name="allow_label4"> Køre scripts: </text> <check_box label="Alle beboere" name="check other scripts"/> @@ -287,73 +322,37 @@ Gå til 'Verden' > 'Om land' eller vælg en anden parcel </text> <check_box label="Sikker (ingen skade)" name="check safe" tool_tip="Hvis valgt, er det ikke muligt at forårsage skade på andre beboere. Hvis fravalgt er det muligt at få skader (f.eks. ved kamp)."/> <check_box label="Skub forbudt" name="PushRestrictCheck" tool_tip="Forhindrer scripts i at skubbe. Valg af denne mulighed, kan være nyttigt for at forhindre forstyrrende adfærd på dit land."/> - <check_box label="Vis sted i søgning (L$30/uge) i kategorien:" name="ShowDirectoryCheck" tool_tip="Lad dit parcel blive vist i søge resultaterne"/> - <panel.string name="search_enabled_tooltip"> - Lad beboere se denne parcel i søgeresultater - </panel.string> - <panel.string name="search_disabled_small_tooltip"> - Denne mulighed er ikke til stede da parcellens område er 128 m² eller mindre. -Kun større parceller kan vises i søgning. - </panel.string> - <panel.string name="search_disabled_permissions_tooltip"> - Dette valg er lukket da du ikke kan ændre på denne parcels opsætning. - </panel.string> + <check_box label="Vis sted i søgning (L$30/uge)" name="ShowDirectoryCheck" tool_tip="Lad dit parcel blive vist i søge resultaterne"/> <combo_box name="land category with adult"> - <combo_box.item name="item0" label="Enhver kategori" - /> - <combo_box.item name="item1" label="Linden sted" - /> - <combo_box.item name="item2" label="Adult" - /> - <combo_box.item name="item3" label="Kunst & kultur" - /> - <combo_box.item name="item4" label="Business" - /> - <combo_box.item name="item5" label="Uddannelse" - /> - <combo_box.item name="item6" label="Spil" - /> - <combo_box.item name="item7" label="Afslapning" - /> - <combo_box.item name="item8" label="Nybegynder venligt" - /> - <combo_box.item name="item9" label="Parker & natur" - /> - <combo_box.item name="item10" label="Beboelse" - /> - <combo_box.item name="item11" label="Indkøb" - /> - <combo_box.item name="item12" label="Andet" - /> + <combo_box.item label="Enhver kategori" name="item0"/> + <combo_box.item label="Linden sted" name="item1"/> + <combo_box.item label="Adult" name="item2"/> + <combo_box.item label="Kunst & kultur" name="item3"/> + <combo_box.item label="Business" name="item4"/> + <combo_box.item label="Uddannelse" name="item5"/> + <combo_box.item label="Spil" name="item6"/> + <combo_box.item label="Afslapning" name="item7"/> + <combo_box.item label="Nybegynder venligt" name="item8"/> + <combo_box.item label="Parker & natur" name="item9"/> + <combo_box.item label="Beboelse" name="item10"/> + <combo_box.item label="Indkøb" name="item11"/> + <combo_box.item label="Andet" name="item12"/> </combo_box> <combo_box name="land category"> - <combo_box.item name="item0" label="Enhver kategori" /> - <combo_box.item name="item1" label="Linden sted" /> - <combo_box.item name="item3" label="Kunst & kultur" /> - <combo_box.item name="item4" label="Business" /> - <combo_box.item name="item5" label="Uddannelse" /> - <combo_box.item name="item6" label="Spil" /> - <combo_box.item name="item7" label="Afslapning" /> - <combo_box.item name="item8" label="Nybegynder venligt" /> - <combo_box.item name="item9" label="Parker & natur" /> - <combo_box.item name="item10" label="Beboelse" /> - <combo_box.item name="item11" label="Indkøb" /> - <combo_box.item name="item12" label="Andet" /> + <combo_box.item label="Enhver kategori" name="item0"/> + <combo_box.item label="Linden sted" name="item1"/> + <combo_box.item label="Kunst & kultur" name="item3"/> + <combo_box.item label="Business" name="item4"/> + <combo_box.item label="Uddannelse" name="item5"/> + <combo_box.item label="Spil" name="item6"/> + <combo_box.item label="Afslapning" name="item7"/> + <combo_box.item label="Nybegynder venligt" name="item8"/> + <combo_box.item label="Parker & natur" name="item9"/> + <combo_box.item label="Beboelse" name="item10"/> + <combo_box.item label="Indkøb" name="item11"/> + <combo_box.item label="Andet" name="item12"/> </combo_box> - <button label="?" label_selected="?" name="?"/> <check_box label="Mature indhold" name="MatureCheck" tool_tip=""/> - <panel.string name="mature_check_mature"> - Mature indhold - </panel.string> - <panel.string name="mature_check_adult"> - Adult indhold - </panel.string> - <panel.string name="mature_check_mature_tooltip"> - Din parcel information eller indhold anses for at være 'adult'. - </panel.string> - <panel.string name="mature_check_adult_tooltip"> - Din parcel information eller indhold anses for at være 'adult'. - </panel.string> <text name="Snapshot:"> Foto: </text> @@ -361,40 +360,35 @@ Kun større parceller kan vises i søgning. <text name="landing_point"> Landingspunkt: [LANDING] </text> - <panel.string name="landing_point_none"> - (ingen) - </panel.string> <button label="Vælg" label_selected="Vælg" name="Set" tool_tip="Indstiller landingspunkt, hvor de besøgende ankommer. Sættes til din avatars aktuelle placering i denne parcel."/> <button label="Fjern" label_selected="Fjern" name="Clear" tool_tip="Fjerner oplysning om landingspunkt."/> <text name="Teleport Routing: "> Teleport valg: </text> <combo_box name="landing type" tool_tip="Vælg hvordan du vil håndtere teleporteringer til dit land."> - <combo_box.item name="Blocked" label="Blokeret" /> - <combo_box.item name="LandingPoint" label="Landingspunkt" /> - <combo_box.item name="Anywhere" label="Hvor som helst" /> + <combo_box.item label="Blokeret" name="Blocked"/> + <combo_box.item label="Landingspunkt" name="LandingPoint"/> + <combo_box.item label="Hvor som helst" name="Anywhere"/> </combo_box> - <panel.string name="push_restrict_text"> - Skub forbudt - </panel.string> - <panel.string name="push_restrict_region_text"> - Skub forbudt (Uanset region indstilling) - </panel.string> </panel> - <panel label="Medier" name="land_media_panel"> - <text name="with media:" left="4"> + <panel label="MEDIA" name="land_media_panel"> + <text left="4" name="with media:"> Medie type: </text> <combo_box name="media type" tool_tip="Specificer om URL-adressen er til en film, hjemmeside eller et andet medie."/> - <text name="at URL:" left="4"> + <text left="4" name="at URL:"> Medie URL: </text> <button label="Vælg..." label_selected="Vælg..." name="set_media_url"/> - <text name="Description:" left="4"> + <text name="CurrentURL:"> + Nuværende side: + </text> + <check_box label="Skjul medie URL" name="hide_media_url" tool_tip="Klik her for at skjule medie adressen så det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den."/> + <text left="4" name="Description:"> Beskrivelse: </text> <line_editor name="url_description" tool_tip="Tekst vist ved siden af Afspil/Hent knappen"/> - <text name="Media texture:" left="4"> + <text left="4" name="Media texture:"> Erstat tekstur: </text> <texture_picker label="" name="media texture" tool_tip="Klik for at vælge billede"/> @@ -402,13 +396,7 @@ Kun større parceller kan vises i søgning. (Objekter der har denne tekstur vil vise filmen eller web-siden, efter du klikker på play knappen.) </text> - <text name="Options:"> - Medie valg: - </text> <check_box label="Auto skalér" name="media_auto_scale" tool_tip="Vælg denne mulighed for at skalere indholdet for dette parcel automatisk. Det kan være lidt langsommere og have lavere kvalitet, men ingen anden tekstur skalering eller tilpasning vil være nødvendigt."/> - <check_box label="Gentag afspil" name="media_loop" tool_tip="Gentager automatisk medie, når det er færdigt med at spille starter det automatisk forfra."/> - <check_box label="Skjul medie URL" name="hide_media_url" tool_tip="Klik her for at skjule medie adressen så det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den."/> - <check_box label="Skjul musik URL" name="hide_music_url" tool_tip="Klik her for at skjule musik adressen så det kun er dig og evt. parcel gruppens ejer/administratorer der kan se den."/> <text name="media_size" tool_tip="Størrelse for rendering af Web medie, benyt 0 for standard." width="105"> Medie Størrelse: </text> @@ -417,56 +405,42 @@ web-siden, efter du klikker på play knappen.) <text name="pixels"> pixels </text> - <text name="MusicURL:"> - Musik URL: - </text> - <text name="Sound:"> - Lyd: - </text> - <check_box label="Begræns lyde fra bevægelser og objekter til denne parcel" name="check sound local"/> - <button label="?" label_selected="?" name="?" left="400"/> - <text name="Voice settings:"> - Stemme: + <text name="Options:"> + Medie valg: </text> - <radio_group name="parcel_voice_channel"> - <radio_item name="Estate" label="Brug Estate kanalen" /> - <radio_item name="Private" label="Brug en privat kanal" /> - <radio_item name="Disabled" label="Slå stemme chat fra på denne parcel" /> - </radio_group> + <check_box label="Gentag afspil" name="media_loop" tool_tip="Gentager automatisk medie, når det er færdigt med at spille starter det automatisk forfra."/> + </panel> + <panel label="LYD" name="land_audio_panel"> + <check_box label="Tillad stemmer" name="parcel_enable_voice_channel"/> + <check_box label="Tillad stemmer (håndteret af estate)" name="parcel_enable_voice_channel_is_estate_disabled"/> </panel> - <panel label="Adgang" name="land_access_panel"> + <panel label="ADGANG" name="land_access_panel"> + <panel.string name="access_estate_defined"> + (Defineret via estate) + </panel.string> + <panel.string name="estate_override"> + En eller flere af disse valg er indstillet på estate niveau + </panel.string> <text name="Limit access to this parcel to:"> Adgang til denne parcel </text> - <check_box label="Tillad offentlig adgang" name="public_access"/> + <check_box label="Tillad offentlig adgang [MATURITY]" name="public_access"/> <text name="Only Allow"> - Blokér adgang for: + Blokér adgang for:: </text> - <check_box label="Beboere der ikke har givet betalings oplysninger til Linden Lab" name="limit_payment" tool_tip="Blokér beboere der ikke har afgivet identifikationsoplysninger."/> - <check_box label="Beboere der ikke er godkendt som voksne" name="limit_age_verified" tool_tip="Blokér beboere der ikke har verificeret deres alder. Se support.secondlife.com for mere information."/> - <panel.string name="estate_override"> - En eller flere af disse valg er indstillet på estate niveau - </panel.string> + <check_box label="Beboere der ikke har givet betalings oplysninger til Linden Lab [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Blokér beboere der ikke har afgivet identifikationsoplysninger."/> + <check_box label="Alders verifikation [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Blokér beboere der ikke har verificeret deres alder. Se support.secondlife.com for mere information."/> <check_box label="Tillad adgang til gruppen: [GROUP]" name="GroupCheck" tool_tip="Vælg gruppe under fanen 'generelt'."/> <check_box label="Sælg adgang til:" name="PassCheck" tool_tip="Tillader midlertidig adgang til denne parcel"/> <combo_box name="pass_combo"> - <combo_box.item name="Anyone" label="Alle" /> - <combo_box.item name="Group" label="Gruppe" /> + <combo_box.item label="Alle" name="Anyone"/> + <combo_box.item label="Gruppe" name="Group"/> </combo_box> <spinner label="Pris i L$:" name="PriceSpin"/> <spinner label="Timers adgang:" name="HoursSpin"/> - <text label="Tillad altid" name="AllowedText"> - Altid godkendte beboere - </text> - <name_list name="AccessList" tool_tip="([LISTED] vist, [MAX] max)"/> - <button label="Tilføj..." label_selected="Tilføj..." name="add_allowed"/> - <button label="Fjern" label_selected="Fjern" name="remove_allowed"/> - <text label="Blokér" name="BanCheck"> - Blokerede beboere - </text> - <name_list name="BannedList" tool_tip="([LISTED] vist, [MAX] max)"/> - <button label="Tilføj..." label_selected="Tilføj..." name="add_banned"/> - <button label="Fjern" label_selected="Fjern" name="remove_banned"/> + <panel name="Allowed_layout_panel"> + <name_list name="AccessList" tool_tip="([LISTED] vist, [MAX] maks.)"/> + </panel> </panel> </tab_container> </floater> 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 0000000000..6fdac8d880 --- /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_animation_preview.xml b/indra/newview/skins/default/xui/da/floater_animation_preview.xml index 8cb0eee601..47e02f0704 100644 --- a/indra/newview/skins/default/xui/da/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/da/floater_animation_preview.xml @@ -1,97 +1,184 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Animation Preview" title=""> + <floater.string name="failed_to_initialize"> + Fejlede at starte bevægelse + </floater.string> + <floater.string name="anim_too_long"> + Animations filen er [LENGTH] sekunder lang. + +Maksimal animations længde er [MAX_LENGTH] sekunder. + </floater.string> + <floater.string name="failed_file_read"> + Kan ikke læse animations fil. + +[STATUS] + </floater.string> + <floater.string name="E_ST_OK"> + OK + </floater.string> + <floater.string name="E_ST_EOF"> + Fil afsluttet for tidligt. + </floater.string> + <floater.string name="E_ST_NO_CONSTRAINT"> + Kan ikke læse "constraint definition". + </floater.string> + <floater.string name="E_ST_NO_FILE"> + Kan ikke åbne BVH fil. + </floater.string> + <floater.string name="E_ST_NO_HIER"> + Ugyldig header i HIERARCHY. + </floater.string> + <floater.string name="E_ST_NO_JOINT"> + Kan ikke finde "ROOT" eller "JOINT". + </floater.string> + <floater.string name="E_ST_NO_NAME"> + Kan ikke finde JOINT navn. + </floater.string> + <floater.string name="E_ST_NO_OFFSET"> + Kan ikke finde OFFSET. + </floater.string> + <floater.string name="E_ST_NO_CHANNELS"> + Kan ikke finde CHANNELS. + </floater.string> + <floater.string name="E_ST_NO_ROTATION"> + Kan ikke læse "rotation order". + </floater.string> + <floater.string name="E_ST_NO_AXIS"> + Kan ikke finde rotationsakser. + </floater.string> + <floater.string name="E_ST_NO_MOTION"> + Kan ikke finde MOTION. + </floater.string> + <floater.string name="E_ST_NO_FRAMES"> + Kan ikke læse antal "frames". + </floater.string> + <floater.string name="E_ST_NO_FRAME_TIME"> + Kan ikke læse "frame time". + </floater.string> + <floater.string name="E_ST_NO_POS"> + Kan ikke læse positionsværdier. + </floater.string> + <floater.string name="E_ST_NO_ROT"> + Kan ikke læse rotationsværdier. + </floater.string> + <floater.string name="E_ST_NO_XLT_FILE"> + kan ikke åbne "translation file". + </floater.string> + <floater.string name="E_ST_NO_XLT_HEADER"> + Kan ikke læse "translation header. + </floater.string> + <floater.string name="E_ST_NO_XLT_NAME"> + Kan ikke aflæse "translation" navne. + </floater.string> + <floater.string name="E_ST_NO_XLT_IGNORE"> + Kan ikke læse "translation ignore" værdi. + </floater.string> + <floater.string name="E_ST_NO_XLT_RELATIVE"> + Kan ikke læse "translation relative" værdi. + </floater.string> + <floater.string name="E_ST_NO_XLT_OUTNAME"> + Kan ikke læse "translation outname" værdi. + </floater.string> + <floater.string name="E_ST_NO_XLT_MATRIX"> + Kan ikke læse "translation matrix". + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGECHILD"> + Kan ikke læse "mergechild" navn. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGEPARENT"> + Kan ikke læse "mergeparent" navn. + </floater.string> + <floater.string name="E_ST_NO_XLT_PRIORITY"> + Kan ikke finde prioritetsværdi. + </floater.string> + <floater.string name="E_ST_NO_XLT_LOOP"> + Kan ikke læse "loop" værdi. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEIN"> + kan ikke læse "easeIn" værdier. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEOUT"> + Kan ikke læse "easeOut" værdier. + </floater.string> + <floater.string name="E_ST_NO_XLT_HAND"> + Kan ikke læse "hand morph" værdi. + </floater.string> + <floater.string name="E_ST_NO_XLT_EMOTE"> + kan ikke læse "emote" navn. + </floater.string> <text name="name_label"> Navn: </text> <text name="description_label"> Beskrivelse: </text> - <spinner label="Prioritet" name="priority" - tool_tip="Vælg hvilke andre animationer der har lavere prioritet end denne." /> - <check_box label="Gentag" name="loop_check" tool_tip="Gentager animationen konstant." /> - <spinner left="76" label_width="40" width="105" label="Ind(%)" name="loop_in_point" tool_tip="Sætter punktet hvor gentagelsen genstarter fra."/> - <spinner label="Ud (%)" name="loop_out_point" - tool_tip="Sætter punktet i animationen der afslutter gentagelsen." /> + <spinner label="Prioritet" name="priority" tool_tip="Vælg hvilke andre animationer der "overstyres" af denne"/> + <check_box label="Gentag" name="loop_check" tool_tip="Gentager animationen konstant"/> + <spinner label="Ind(%)" label_width="40" left="76" name="loop_in_point" tool_tip="Sætter punktet hvor gentagelsen genstarter fra" width="105"/> + <spinner label="Ud (%)" name="loop_out_point" tool_tip="Sætter punktet i animationen der afslutter gentagelsen"/> <text name="hand_label"> Hånd posering </text> - <combo_box label="" name="hand_pose_combo" - tool_tip="Kontrollerer hvad hænderne går i løbet af animationen." width="140"> - <combo_box.item name="Spread" label="Spredt" /> - <combo_box.item name="Relaxed" label="Afslappet" /> - <combo_box.item name="PointBoth" label="Peg begge" /> - <combo_box.item name="Fist" label="Knytnæver" /> - <combo_box.item name="RelaxedLeft" label="Afslappet venstre" /> - <combo_box.item name="PointLeft" label="Peg venstre" /> - <combo_box.item name="FistLeft" label="Knytnæve venstre" /> - <combo_box.item name="RelaxedRight" label="Afslappet højre" /> - <combo_box.item name="PointRight" label="Peg højre" /> - <combo_box.item name="FistRight" label="Knytnæve højre" /> - <combo_box.item name="SaluteRight" label="Honnør højre" /> - <combo_box.item name="Typing" label="Skriver" /> - <combo_box.item name="PeaceRight" label="Fredstegn højre" /> + <combo_box label="" name="hand_pose_combo" tool_tip="Kontrollerer hvad hænderne går i løbet af animationen" width="140"> + <combo_box.item label="Spredt" name="Spread"/> + <combo_box.item label="Afslappet" name="Relaxed"/> + <combo_box.item label="Peg begge" name="PointBoth"/> + <combo_box.item label="Knytnæver" name="Fist"/> + <combo_box.item label="Afslappet venstre" name="RelaxedLeft"/> + <combo_box.item label="Peg venstre" name="PointLeft"/> + <combo_box.item label="Knytnæve venstre" name="FistLeft"/> + <combo_box.item label="Afslappet højre" name="RelaxedRight"/> + <combo_box.item label="peg højre" name="PointRight"/> + <combo_box.item label="knytnæve højre" name="FistRight"/> + <combo_box.item label="Honnør højre" name="SaluteRight"/> + <combo_box.item label="Skrivende" name="Typing"/> + <combo_box.item label="Fredstegn højre" name="PeaceRight"/> </combo_box> <text name="emote_label"> Ansigtsudtryk </text> - <combo_box label="" name="emote_combo" - tool_tip="Angiver hvad ansigtet gør under animationen" width="140"> - <combo_box.item name="[None]" label="Intet]" /> - <combo_box.item name="Aaaaah" label="Aaaaah" /> - <combo_box.item name="Afraid" label="Bange" /> - <combo_box.item name="Angry" label="Vred" /> - <combo_box.item name="BigSmile" label="Stort smil" /> - <combo_box.item name="Bored" label="Keder sig" /> - <combo_box.item name="Cry" label="Græder" /> - <combo_box.item name="Disdain" label="Forarget" /> - <combo_box.item name="Embarrassed" label="Flov" /> - <combo_box.item name="Frown" label="Skuler" /> - <combo_box.item name="Kiss" label="Kysser" /> - <combo_box.item name="Laugh" label="Griner" /> - <combo_box.item name="Plllppt" label="Plllppt" /> - <combo_box.item name="Repulsed" label="Frastødt" /> - <combo_box.item name="Sad" label="Ked af det" /> - <combo_box.item name="Shrug" label="Skuldertræk" /> - <combo_box.item name="Smile" label="Smiler" /> - <combo_box.item name="Surprise" label="Overrasket" /> - <combo_box.item name="Wink" label="Blinker" /> - <combo_box.item name="Worry" label="Bekymret" /> + <combo_box label="" name="emote_combo" tool_tip="Angiver hvad ansigtet gør under animationen" width="140"> + <combo_box.item label="(Intet)" name="[None]"/> + <combo_box.item label="Aaaaah" name="Aaaaah"/> + <combo_box.item label="Bange" name="Afraid"/> + <combo_box.item label="Vred" name="Angry"/> + <combo_box.item label="Stort smil" name="BigSmile"/> + <combo_box.item label="Keder sig" name="Bored"/> + <combo_box.item label="Græder" name="Cry"/> + <combo_box.item label="Forarget" name="Disdain"/> + <combo_box.item label="Flov" name="Embarrassed"/> + <combo_box.item label="Skuler" name="Frown"/> + <combo_box.item label="Kysser" name="Kiss"/> + <combo_box.item label="Griner" name="Laugh"/> + <combo_box.item label="Plllppt" name="Plllppt"/> + <combo_box.item label="Frastødt" name="Repulsed"/> + <combo_box.item label="Ked af det" name="Sad"/> + <combo_box.item label="Skuldertræk" name="Shrug"/> + <combo_box.item label="Smil" name="Smile"/> + <combo_box.item label="Overrasket" name="Surprise"/> + <combo_box.item label="Blinker" name="Wink"/> + <combo_box.item label="Bekymret" name="Worry"/> </combo_box> <text name="preview_label"> Vis mens </text> - <combo_box label="" name="preview_base_anim" - tool_tip="Se hvordan animation ser ud i forskellige typiske avatar-situationer." width="140"> - <combo_box.item name="Standing" label="Står" /> - <combo_box.item name="Walking" label="Går" /> - <combo_box.item name="Sitting" label="Sidder" /> - <combo_box.item name="Flying" label="Flyver" /> + <combo_box label="" name="preview_base_anim" tool_tip="Se hvordan animation ser ud i forskellige typiske avatar-situationer." width="140"> + <combo_box.item label="Stående" name="Standing"/> + <combo_box.item label="Gående" name="Walking"/> + <combo_box.item label="Sidder" name="Sitting"/> + <combo_box.item label="Flyver" name="Flying"/> </combo_box> - <spinner label="start (sec)" name="ease_in_time" - tool_tip="Tid i sekunder animationen bruger på at komme i gang." /> - <spinner label="Afslut (sec)" name="ease_out_time" - tool_tip="Tid i sekunder animationen bruger på at afslutte." /> - <button label="" name="play_btn" tool_tip="Start/pause din animation." /> - <button label="" name="stop_btn" tool_tip="Stop afspilning af animation" /> - <slider label="" name="playback_slider" /> + <spinner label="start (sec)" name="ease_in_time" tool_tip="Tid (i sekunder) animationen bruger på at komme i gang."/> + <spinner label="Afslut (sec)" name="ease_out_time" tool_tip="Tid (i sekunder) animationen bruger på at afslutte"/> + <button label="" name="play_btn" tool_tip="Start din animation"/> + <button name="pause_btn" tool_tip="Pause din animation"/> + <button label="" name="stop_btn" tool_tip="Stop afspilning af animation"/> + <slider label="" name="playback_slider"/> <text name="bad_animation_text"> Kan ikke læse animations fil. Vi anbefaler BVH filer der er exporteret fra Poser 4. </text> - <button label="Annullér" name="cancel_btn" /> - <button label="Hent (L$[AMOUNT])" name="ok_btn" /> - <string name="failed_to_initialize"> - Fejlede at starte bevægelse - </string> - <string name="anim_too_long"> - Animations filen er [LENGTH] sekunder lang. - -Maksimal animations længde er [MAX_LENGTH] sekunder. - </string> - <string name="failed_file_read"> - Kan ikke læse animations fil. - -[STATUS] - </string> + <button label="Hent (L$[AMOUNT])" name="ok_btn"/> + <button label="Annullér" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_auction.xml b/indra/newview/skins/default/xui/da/floater_auction.xml index 8f793557be..e74e8a991b 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 0ddb6e9dbe..a337da9b51 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_avatar_textures.xml b/indra/newview/skins/default/xui/da/floater_avatar_textures.xml index 27bfa367f6..1111c5e18b 100644 --- a/indra/newview/skins/default/xui/da/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/da/floater_avatar_textures.xml @@ -1,30 +1,32 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatar_texture_debug" title="AVATAR TEKSTURER"> - <text name="baked_label"> - Faste teksturer - </text> + <floater.string name="InvalidAvatar"> + UGYLDING AVATAR + </floater.string> <text name="composite_label"> Blandede teksturer </text> - <texture_picker label="Hoved" name="baked_head" /> - <texture_picker label="Makeup" name="head_bodypaint" /> - <texture_picker label="Hår" name="hair" /> - <button label="Drop" label_selected="Dump" name="Dump" /> - <texture_picker label="øjne" name="baked_eyes" /> - <texture_picker label="øje" name="eye_texture" /> - <texture_picker label="Overkrop" name="baked_upper_body" /> - <texture_picker label="Tatovering overkrop" name="upper_bodypaint" /> - <texture_picker label="Undertrøje" name="undershirt" /> - <texture_picker label="Handsker" name="gloves" /> - <texture_picker label="Trøje" name="shirt" /> - <texture_picker label="øvre jakke" name="upper_jacket" /> - <texture_picker label="Underkrop" name="baked_lower_body" /> - <texture_picker label="Tatovering underkrop" name="lower_bodypaint" /> - <texture_picker label="Underbukser" name="underpants" /> - <texture_picker label="Strømper" name="socks" /> - <texture_picker label="Sko" name="shoes" /> - <texture_picker label="Bukser" name="pants" /> - <texture_picker label="Jakke" name="jacket" /> - <texture_picker label="Nederdel" name="baked_skirt" /> - <texture_picker label="Nederdel" name="skirt_texture" /> + <button label="Drop" label_selected="Dump" name="Dump"/> + <texture_picker label="Hår" name="hair_grain"/> + <texture_picker label="Alpha - hår" name="hair_alpha"/> + <texture_picker label="Makeup" name="head_bodypaint"/> + <texture_picker label="Alpha - hoved" name="head_alpha"/> + <texture_picker label="Tatovering hovede" name="head_tattoo"/> + <texture_picker label="Øje" name="eyes_iris"/> + <texture_picker label="Alpha - øjne" name="eyes_alpha"/> + <texture_picker label="Bodypaint - overkrop" name="upper_bodypaint"/> + <texture_picker label="Undertrøje" name="upper_undershirt"/> + <texture_picker label="Handsker" name="upper_gloves"/> + <texture_picker label="Trøje" name="upper_shirt"/> + <texture_picker label="Øvre jakke" name="upper_jacket"/> + <texture_picker label="Alpha - øvre" name="upper_alpha"/> + <texture_picker label="Øvre tatovering" name="upper_tattoo"/> + <texture_picker label="Bodypaint - underkrop" name="lower_bodypaint"/> + <texture_picker label="Undertøj" name="lower_underpants"/> + <texture_picker label="Strømper" name="lower_socks"/> + <texture_picker label="Sko" name="lower_shoes"/> + <texture_picker label="Bukser" name="lower_pants"/> + <texture_picker label="Jakke" name="lower_jacket"/> + <texture_picker label="Alpha - nedre" name="lower_alpha"/> + <texture_picker label="Nedre tatovering" name="lower_tattoo"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_beacons.xml b/indra/newview/skins/default/xui/da/floater_beacons.xml index 18bc7aeb31..d67d859e7b 100644 --- a/indra/newview/skins/default/xui/da/floater_beacons.xml +++ b/indra/newview/skins/default/xui/da/floater_beacons.xml @@ -1,15 +1,21 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="beacons" title="PEJLELYS"> <panel name="beacons_panel"> - <check_box label="Kun scriptede objekter med "rør"" name="touch_only" /> - <check_box label="Scriptede objekter" name="scripted" /> - <check_box label="Fysiske objekter" name="physical" /> - <check_box label="Lyd kilder" name="sounds" /> - <check_box label="Partikel kilder" name="particles" /> - <check_box label="Rendér highlights" name="highlights" /> - <check_box label="Rendér pejlelys" name="beacons" /> - <text name="beacon_width_label"> - Pejlelys bredde: + <text name="label_show"> + Vis: </text> + <check_box label="Pejlelys" name="beacons"/> + <check_box label="Fremhævninger" name="highlights"/> + <text name="beacon_width_label" tool_tip="Pejlelys bredde"> + Bredde: + </text> + <text name="label_objects"> + For disse objekter: + </text> + <check_box label="Fysisk" name="physical"/> + <check_box label="Scriptet" name="scripted"/> + <check_box label="Kun berøring" name="touch_only"/> + <check_box label="Lydkilder" name="sounds"/> + <check_box label="Partikel kilder" name="particles"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_build_options.xml b/indra/newview/skins/default/xui/da/floater_build_options.xml index 7eb0d4c035..9196f19b78 100644 --- a/indra/newview/skins/default/xui/da/floater_build_options.xml +++ b/indra/newview/skins/default/xui/da/floater_build_options.xml @@ -1,8 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="build options floater" title="GITTER INDSTILLINGER"> - <spinner label="Gitter enhed (meter)" name="GridResolution" width="200" label_width="136"/> - <spinner label="Gitter rækkevidde (meter)" name="GridDrawSize" width="200" label_width="136"/> - <check_box label="Aktiver låsning til under-enheder" name="GridSubUnit" /> - <check_box label="Vis 'cross sections'" name="GridCrossSection" /> - <slider label="Gitter synlighed" name="GridOpacity" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="build options floater" title="GITTER VALG"> + <spinner label="Gitter enheder (meter)" label_width="136" name="GridResolution" width="200"/> + <spinner label="Gitter rækkevidde (meter)" label_width="136" name="GridDrawSize" width="200"/> + <check_box label="Aktivér låsning til underenheder" name="GridSubUnit"/> + <check_box label="Vis 'cross-sections'" name="GridCrossSection"/> + <text name="grid_opacity_label" tool_tip="Gitter synlighed"> + Uigennemsigtighed: + </text> + <slider label="Gitter synlighed" name="GridOpacity"/> </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 9cf44d6479..0dd1a4f6ba 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 704e6c3608..d22de6e7f1 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_contents.xml b/indra/newview/skins/default/xui/da/floater_buy_contents.xml index 8dccf32304..c2b2ccc244 100644 --- a/indra/newview/skins/default/xui/da/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/da/floater_buy_contents.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="floater_buy_contents" title="KØB INDHOLD"> <text name="contains_text"> [NAME] indeholder: @@ -6,9 +6,9 @@ <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" /> - <check_box label="Tag tøj på nu" name="wear_check" /> + <button label="Annullér" label_selected="Annullér" name="cancel_btn"/> + <button label="Køb" label_selected="Køb" name="buy_btn"/> + <check_box label="Tag tøj på nu" name="wear_check"/> <string name="no_copy_text"> (kopiér ej) </string> diff --git a/indra/newview/skins/default/xui/da/floater_buy_currency.xml b/indra/newview/skins/default/xui/da/floater_buy_currency.xml index d1fca8984d..18ee0e0597 100644 --- a/indra/newview/skins/default/xui/da/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/da/floater_buy_currency.xml @@ -1,68 +1,66 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="buy currency" title="KØB VALUTA"> - <text name="info_buying"> - Køber valuta: - </text> - <text name="info_cannot_buy"> - Kan ikke købe nu: - </text> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="buy currency" title="KØB L$"> + <floater.string name="buy_currency"> + Køb L$ [LINDENS] for ca. [LOCALAMOUNT] + </floater.string> <text name="info_need_more"> - Du har ikke penge nok: + Du skal bruge flere L$ </text> - <text name="error_message"> - Noget er gået galt. - </text> - <button label="Gå til hjemmeside" name="error_web" /> <text name="contacting"> Kontakter LindeX... </text> - <text name="buy_action_unknown"> - Køb L$ på LindeX valuta marked + <text name="info_buying"> + Køb L$ </text> - <text name="buy_action"> - [NAME] L$ [PRICE] + <text name="balance_label"> + Jeg har + </text> + <text name="balance_amount"> + L$ [AMT] </text> <text name="currency_action"> - Køb L$ + Jeg ønsker at købe </text> - <line_editor name="currency_amt"> + <text name="currency_label"> + L$ + </text> + <line_editor label="L$" name="currency_amt"> 1234 </line_editor> + <text name="buying_label"> + Til prisen + </text> <text name="currency_est"> - for ca. [LOCALAMOUNT] + ca. [LOCALAMOUNT] </text> <text name="getting_data"> - Henter data... - </text> - <text name="balance_label"> - Du har i øjeblikket - </text> - <text name="balance_amount"> - L$ [AMT] - </text> - <text name="buying_label"> - Du køber + Estimerer... </text> - <text name="buying_amount"> - L$ [AMT] + <text name="buy_action"> + [NAME] L$ [PRICE] </text> <text name="total_label"> - Din balance bliver + Min nye beholdning vil være </text> <text name="total_amount"> L$ [AMT] </text> + <text name="currency_links"> + [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"> + Indtast beløbet for at se nyeste valutakurs. + </text> <text name="purchase_warning_repurchase"> - Bekræfter at denne handel kun omfatter valuta. -Gentag operationen venligst igen. + Bekræftelse af dette køb medfører kun køb af L$, ikke objektet. </text> <text name="purchase_warning_notenough"> - Du køber ikke nok valuta, tast et større beløb -og prøv igen. + Du køber ikke nok L$. Forøg venligst beløbet. </text> - <button label="Annullér" name="cancel_btn" /> - <button label="Køb" name="buy_btn" /> - <string name="buy_currency"> - Køb L$ [LINDENS] for ca. [LOCALAMOUNT] - </string> + <button label="Køb nu" name="buy_btn"/> + <button label="Annullér" name="cancel_btn"/> + <text name="info_cannot_buy"> + Kan ikke købe + </text> + <button label="Fortsæt til web" name="error_web"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_buy_land.xml b/indra/newview/skins/default/xui/da/floater_buy_land.xml index 71e6eaa7f7..987ad6585f 100644 --- a/indra/newview/skins/default/xui/da/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/da/floater_buy_land.xml @@ -59,7 +59,7 @@ <text left_delta="62" name="info_price"> L$ 1500 (L$ 1.1/m²) -sælges med objekter +solgt med objekter </text> <text name="info_action"> Køb af dette land vil: @@ -75,16 +75,16 @@ sælges med objekter Kun premium medlemmer kan eje land. </text> <combo_box name="account_level"> - <combo_box.item name="US$9.95/month,billedmonthly" label="US$9.95/md, månedlig afregning" /> - <combo_box.item name="US$7.50/month,billedquarterly" label="US$7.50/md, kvartalsvis afregning" /> - <combo_box.item name="US$6.00/month,billedannually" label="US$6.00/md, årlig afregning" /> + <combo_box.item label="US$9.95 pr. måned, faktureret månedligt" name="US$9.95/month,billedmonthly"/> + <combo_box.item label="US$7.50 pr. måned, faktureret kvartalsvist" name="US$7.50/month,billedquarterly"/> + <combo_box.item label="US$6.00 pr. måned, faktureret årligt" name="US$6.00/month,billedannually"/> </combo_box> <text name="land_use_action"> Forøg dine månedlige arealanvendelse gebyrer til US $ 40/måned. </text> <text name="land_use_reason"> - You hold 1309 m² of land. -This parcel is 512 m² of land. + Du ejer 1309 m² land. +Denne parcel er på 512 m². </text> <text name="purchase_action"> Betal Joe Resident L$ 4000 dette areal @@ -99,12 +99,12 @@ This parcel is 512 m² of land. 1000 </line_editor> <text name="currency_est"> - for ca. US$ [AMOUNT2] + for ca. [LOCAL_AMOUNT] </text> <text name="currency_balance"> Du har L$2,100. </text> - <check_box label="Fjern [AMOUNT] kvadratmeter af bidrag fra gruppe." name="remove_contribution"/> + <check_box label="Fjern [AMOUNT] m² af bidrag fra gruppe." name="remove_contribution"/> <button label="Køb" name="buy_btn"/> <button label="Annullér" name="cancel_btn"/> <string name="can_resell"> @@ -181,16 +181,16 @@ Prøv at vælge et mindre område. Din konto kan eje jord. </string> <string name="land_holdings"> - Du har [BUYER] m² jord. + Du ejer [BUYER] m² land. </string> <string name="pay_to_for_land"> Betal L$ [AMOUNT] til [SELLER] for dette stykke jord </string> <string name="buy_for_US"> - Køb L$ [AMOUNT] for ca. US$ [AMOUNT2], + Køb L$ [AMOUNT] for ca. [LOCAL_AMOUNT], </string> <string name="parcel_meters"> - Denne parcel er [AMOUNT] m². + Denne parcel er på [AMOUNT] m² </string> <string name="premium_land"> Dette stykke jord er premium, og vil tælle som [AMOUNT] m². @@ -200,7 +200,7 @@ Prøv at vælge et mindre område. </string> <string name="meters_supports_object"> [AMOUNT] m² -kan indeholder [AMOUNT2] objekter +kan indeholde [AMOUNT2] objekter </string> <string name="sold_with_objects"> solgt med objekter 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 266753902b..f9e18dcf65 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 c52f7ab832..2596559609 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_choose_group.xml b/indra/newview/skins/default/xui/da/floater_choose_group.xml index 9f02f281db..1ccda4f1d7 100644 --- a/indra/newview/skins/default/xui/da/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/da/floater_choose_group.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="groups" title="GRUPPER"> <text name="groupdesc"> Vælg en gruppe: </text> - <button label="OK" label_selected="OK" name="OK" /> - <button label="Annullér" label_selected="Annullér" name="Cancel" /> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Annullér" label_selected="Annullér" name="Cancel"/> </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 d0a47b76e0..514b2c4331 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_customize.xml b/indra/newview/skins/default/xui/da/floater_customize.xml index b2409f1682..379302ef6a 100644 --- a/indra/newview/skins/default/xui/da/floater_customize.xml +++ b/indra/newview/skins/default/xui/da/floater_customize.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="APPEARANCE" width="509"> +<floater name="floater customize" title="UDSEENDE" width="509"> <tab_container name="customize tab container" width="507"> <placeholder label="Krops Dele" name="body_parts_placeholder"/> <panel label="Kropsbygning" name="Shape"> @@ -14,8 +14,8 @@ <button label="Overkrop" label_selected="Overkrop" name="Torso"/> <button label="Ben" label_selected="Ben" name="Legs"/> <radio_group name="sex radio"> - <radio_item name="radio" label="Kvinde" /> - <radio_item name="radio2" label="Mand" /> + <radio_item label="Kvinde" name="radio"/> + <radio_item label="Mand" name="radio2"/> </radio_group> <text name="title"> [DESC] @@ -78,9 +78,9 @@ og bagefter 'tage den på'. <text name="Item Action Label"> Hud: </text> - <texture_picker width="98" label="Tatoveringer hoved" name="Head Tattoos" tool_tip="Klik for at vælge et billede"/> - <texture_picker width="98" label="Tatover. overkrop" name="Upper Tattoos" tool_tip="Klik for at vælge et billede"/> - <texture_picker width="98" label="Tatover. underkrop" name="Lower Tattoos" tool_tip="Klik for at vælge et billede"/> + <texture_picker label="Tatoveringer hoved" name="Head Tattoos" tool_tip="Klik for at vælge et billede" width="98"/> + <texture_picker label="Tatover. overkrop" name="Upper Tattoos" tool_tip="Klik for at vælge et billede" width="98"/> + <texture_picker label="Tatover. underkrop" name="Lower Tattoos" tool_tip="Klik for at vælge et billede" width="98"/> <button label="Lav ny hud" label_selected="Lav nyt hud" name="Create New"/> <button label="Gem" label_selected="Gem" name="Save"/> <button label="Gem som..." label_selected="Gem som..." name="Save As"/> @@ -156,7 +156,7 @@ og bagefter 'tage dem på'. <button label="Gem som..." label_selected="Gem som..." name="Save As"/> <button label="Annullér" label_selected="Annullér" name="Revert"/> </panel> - <panel label="Tøje" name="clothes_placeholder"/> + <placeholder label="Tøje" name="clothes_placeholder"/> <panel label="Trøje" name="Shirt"> <texture_picker label="Stof" name="Fabric" tool_tip="Klik for at vælge et billede"/> <color_swatch label="Farve" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/> @@ -471,9 +471,81 @@ og bagefter 'tage den på'. <button label="Gem som..." label_selected="Gem som..." name="Save As"/> <button label="Annullér" label_selected="Annullér" name="Revert"/> </panel> + <panel label="Alpha" name="Alpha"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: kan ikke ændre + </text> + <text name="title_loading"> + [DESC]: indlæser... + </text> + <text name="title_not_worn"> + [DESC]: ikke båret + </text> + <text name="path"> + Placeret i [PATH] + </text> + <text name="not worn instructions"> + Brug en ny "alpha mask" ved at trække en fra din beholding til din avatar. +Alternativt kan du lave en fra bunden og bære denne. + </text> + <text name="no modify instructions"> + Du har ikke rettigheder til at ændre denne. + </text> + <text name="Item Action Label"> + Alpha: + </text> + <texture_picker label="Alpha - nedre" name="Lower Alpha" tool_tip="Klik for at vælge et billede"/> + <texture_picker label="Øvre alpha" name="Upper Alpha" tool_tip="Klik for at vælge et billede"/> + <texture_picker label="Alpha - hoved" name="Head Alpha" tool_tip="Klik for at vælge et billede"/> + <texture_picker label="Alpha - øjne" name="Eye Alpha" tool_tip="Klik for at vælge et billede"/> + <texture_picker label="Alpha - hår" name="Hair Alpha" tool_tip="Klik for at vælge et billede"/> + <button label="Lav ny "Alpha"" label_selected="Lav ny "Alpha"" name="Create New"/> + <button label="Tag af" label_selected="Tag af" name="Take Off"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Vend tilbage" label_selected="Vend tilbage" name="Revert"/> + </panel> + <panel label="Tatovering" name="Tattoo"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: kan ikke ændre + </text> + <text name="title_loading"> + [DESC]: indlæser... + </text> + <text name="title_not_worn"> + [DESC]: ikke båret + </text> + <text name="path"> + Placeret i [PATH] + </text> + <text name="not worn instructions"> + Brug en ny tatovering ved at trække en fra din beholding til din avatar. +Alternativt kan du lave en fra bunden og bære denne. + </text> + <text name="no modify instructions"> + Du har ikke rettigheder til at ændre denne. + </text> + <text name="Item Action Label"> + Tatovering: + </text> + <texture_picker label="Tatovering - hovede" 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"/> + <button label="lav ny tatovering" label_selected="Lav ny tatovering" name="Create New"/> + <button label="Tag af" label_selected="Tag af" name="Take Off"/> + <button label="Gem" label_selected="Gem" name="Save"/> + <button label="Gem som..." label_selected="Gem som..." name="Save As"/> + <button label="Vend tilbage" label_selected="Vend tilbage" name="Revert"/> + </panel> </tab_container> <scroll_container left="212" name="panel_container"/> + <button label="Lav sæt" label_selected="Lav sæt" name="make_outfit_btn"/> <button label="Annullér" label_selected="Annullér" name="Cancel"/> <button label="OK" label_selected="OK" name="Ok"/> - <button label="Opret sæt..." label_selected="Opret sæt..." name="Make Outfit"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_device_settings.xml b/indra/newview/skins/default/xui/da/floater_device_settings.xml index 5e53a697f2..06d431a8f9 100644 --- a/indra/newview/skins/default/xui/da/floater_device_settings.xml +++ b/indra/newview/skins/default/xui/da/floater_device_settings.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_device_settings" title="STEMME CHAT INDSTILLINGER" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_device_settings" title="STEMME CHAT ENHEDSOPSÆTNING"/> diff --git a/indra/newview/skins/default/xui/da/floater_env_settings.xml b/indra/newview/skins/default/xui/da/floater_env_settings.xml index 6c5b6d3b6b..8d9c05500b 100644 --- a/indra/newview/skins/default/xui/da/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/da/floater_env_settings.xml @@ -1,26 +1,28 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Environment Editor Floater" title="REDIGERING AF OMGIVELSER"> + <floater.string name="timeStr"> + [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc] + </floater.string> <text name="EnvTimeText"> Tid på dagen </text> <text name="EnvTimeText2"> 00:00 </text> - <slider label="" name="EnvTimeSlider" /> + <slider label="" name="EnvTimeSlider"/> <text name="EnvCloudText"> Skydække </text> - <slider label="" name="EnvCloudSlider" /> + <slider label="" name="EnvCloudSlider"/> <text name="EnvWaterColorText"> Farve på vand </text> - <color_swatch label="" name="EnvWaterColor" tool_tip="Klik for at åbne farvevælger" /> + <color_swatch label="" name="EnvWaterColor" tool_tip="Klik for at åbne farvevælger"/> <text name="EnvWaterFogText"> Tåge på vand </text> - <slider label="" name="EnvWaterFogSlider" /> - <button label="Benyt tid fra estate" name="EnvUseEstateTimeButton" /> - <button label="Avanceret himmel" name="EnvAdvancedSkyButton" /> - <button label="Avanceret vand" name="EnvAdvancedWaterButton" /> - <button label="?" name="EnvSettingsHelpButton" /> + <slider label="" name="EnvWaterFogSlider"/> + <button label="Benyt tid fra estate" name="EnvUseEstateTimeButton"/> + <button label="Avanceret himmel" name="EnvAdvancedSkyButton"/> + <button label="Avanceret vand" name="EnvAdvancedWaterButton"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_gesture.xml b/indra/newview/skins/default/xui/da/floater_gesture.xml index 11ecc8bd9a..b7075e356a 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_hardware_settings.xml b/indra/newview/skins/default/xui/da/floater_hardware_settings.xml index fc1231ceef..2b10afe7e3 100644 --- a/indra/newview/skins/default/xui/da/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/da/floater_hardware_settings.xml @@ -1,30 +1,28 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Hardware Settings Floater" title="HARDWARE OPSÆTNING"> <text name="Filtering:"> Filtrering: </text> - <check_box label="Anisotropic filtrering (langsommere når aktiveret)" name="ani" /> + <check_box label="Anisotropic filtrering (langsommere når aktiveret)" name="ani"/> <text name="Antialiasing:"> Antialiasing: </text> <combo_box label="Antialiasing" name="fsaa" width="100"> - <combo_box.item name="FSAADisabled" label="Slået fra"/> - <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="Slået fra" 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" /> + <spinner label="Gamma:" name="gamma"/> <text name="(brightness, lower is brighter)"> (Lysstyrke, lavere er lysere, 0=benyt standard) </text> <text name="Enable VBO:"> Aktivér VBO: </text> - <check_box label="Aktivér OpenGL Vertex Buffer objekter" name="vbo" - tool_tip="Aktivér af dette på nyere hardware giver performance forbedring. På ældre hardware kan aktivering medfø nedbrud." /> - <slider label="Tekstur hukommelse (MB):" name="GrapicsCardTextureMemory" - tool_tip="Mængde hukommelse der skal allokeres til teksturer (textures). Standardindstilling er hukommelse på grafikkortet. Reduktion kan medfø bedre ydeevne, men kan samtidig gøre teksturer mere udflydende." /> - <spinner label="Tåge: afstandsforhold:" name="fog" /> - <button label="OK" label_selected="OK" name="OK" /> + <check_box initial_value="true" label="Aktivér OpenGL Vertex Buffer objekter" name="vbo" tool_tip="Aktivér af dette på nyere hardware giver performance forbedring. På ældre hardware kan aktivering medfø nedbrud."/> + <slider label="Tekstur hukommelse (MB):" name="GraphicsCardTextureMemory" tool_tip="Mængde hukommelse der skal allokeres til teksturer (textures). Standardindstilling er hukommelse på grafikkortet. Reduktion kan medfø bedre ydeevne, men kan samtidig gøre teksturer mere udflydende."/> + <spinner label="Tåge: afstandsforhold:" name="fog"/> + <button label="OK" label_selected="OK" name="OK"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_help_browser.xml b/indra/newview/skins/default/xui/da/floater_help_browser.xml new file mode 100644 index 0000000000..fc52796344 --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_help_browser.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_help_browser" title="HJÆLP"> + <layout_stack name="stack1"> + <layout_panel name="external_controls"> + <button label="Åben i min web browser" name="open_browser"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_hud.xml b/indra/newview/skins/default/xui/da/floater_hud.xml index 18584e57ca..c70da45955 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.xml b/indra/newview/skins/default/xui/da/floater_im.xml index 0b42b78706..519a70d1d9 100644 --- a/indra/newview/skins/default/xui/da/floater_im.xml +++ b/indra/newview/skins/default/xui/da/floater_im.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <multi_floater name="im_floater" title="Personlig samtale (IM)"> <string name="only_user_message"> Du er den eneste deltager i denne samtale @@ -10,7 +10,7 @@ Tryk på [BUTTON NAME] knappen for at acceptére/tilslutte til denne stemme chat. </string> <string name="muted_message"> - Du har blokeret denne beboer. Hvis du starter en samtale vil denne blokering automatisk blive fjernet. + Du har blokeret denne beboer. Hvis du sender besked vil denne blokering fjernes. </string> <string name="generic_request_error"> Kunne ikke etablere forbindelse, prøv igen senere diff --git a/indra/newview/skins/default/xui/da/floater_im_container.xml b/indra/newview/skins/default/xui/da/floater_im_container.xml new file mode 100644 index 0000000000..da6f877f56 --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_im_container.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<multi_floater name="floater_im_box" title="Personlige beskeder"/> 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 0000000000..aa7df6ad2b --- /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_image_preview.xml b/indra/newview/skins/default/xui/da/floater_image_preview.xml index 345c9aa6d1..52fd9f80c0 100644 --- a/indra/newview/skins/default/xui/da/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/da/floater_image_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="Image Preview" title=""> <text name="name_label"> Navn: @@ -10,23 +10,23 @@ Se billede som: </text> <combo_box label="Tøj type" name="clothing_type_combo"> - <combo_box.item name="Image" label="Billede"/> - <combo_box.item name="Hair" label="Hår"/> - <combo_box.item name="FemaleHead" label="Kvinde - hoved"/> - <combo_box.item name="FemaleUpperBody" label="Kvinde - overkrop"/> - <combo_box.item name="FemaleLowerBody" label="Kvinde - underkrop"/> - <combo_box.item name="MaleHead" label="Mand - hoved"/> - <combo_box.item name="MaleUpperBody" label="Mand - overkrop"/> - <combo_box.item name="MaleLowerBody" label="Mand - underkrop"/> - <combo_box.item name="Skirt" label="Nederdel"/> - <combo_box.item name="SculptedPrim" label="Sculpted prim"/> + <combo_box.item label="Billede" name="Image"/> + <combo_box.item label="Hår" name="Hair"/> + <combo_box.item label="Kvinde - hoved" name="FemaleHead"/> + <combo_box.item label="Kvinde - overkrop" name="FemaleUpperBody"/> + <combo_box.item label="Kvinde - underkrop" name="FemaleLowerBody"/> + <combo_box.item label="Mand - hoved" name="MaleHead"/> + <combo_box.item label="Mand - overkrop" name="MaleUpperBody"/> + <combo_box.item label="Mand - underkrop" name="MaleLowerBody"/> + <combo_box.item label="Nederdel" name="Skirt"/> + <combo_box.item label="Sculpted Prim" name="SculptedPrim"/> </combo_box> <text name="bad_image_text"> Kunne ikke læse billede. Prøv at gemme billede som en 24 bit Targa fil (.tga). </text> - <check_box label="Benyt komprimering uden tab" name="lossless_check" /> - <button label="Annullér" name="cancel_btn" /> - <button label="Hent (L$[AMOUNT])" name="ok_btn" /> + <check_box label="Benyt komprimering uden tab" name="lossless_check"/> + <button label="Annullér" name="cancel_btn"/> + <button label="Hent (L$[AMOUNT])" name="ok_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_incoming_call.xml b/indra/newview/skins/default/xui/da/floater_incoming_call.xml new file mode 100644 index 0000000000..3a1ef2e47d --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_incoming_call.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="incoming call" title="UKENDT PERSON KALDER OP"> + <floater.string name="localchat"> + Stemme chat nærved + </floater.string> + <floater.string name="anonymous"> + anonym + </floater.string> + <floater.string name="VoiceInviteP2P"> + kalder op. + </floater.string> + <floater.string name="VoiceInviteAdHoc"> + har sluttet sig til stemme chat opkald med en konference chat. + </floater.string> + <text name="question"> + Ønsker du at forlade [CURRENT_CHAT] og slutte dig til denne stemme chat? + </text> + <button label="Acceptér" label_selected="Acceptér" name="Accept"/> + <button label="Afvis" label_selected="Afvis" name="Reject"/> + <button label="Start IM" name="Start IM"/> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_inspect.xml b/indra/newview/skins/default/xui/da/floater_inspect.xml index 0610e9408f..d0dca8863a 100644 --- a/indra/newview/skins/default/xui/da/floater_inspect.xml +++ b/indra/newview/skins/default/xui/da/floater_inspect.xml @@ -1,10 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="inspect" title="INSPECÉR OBJEKTER"> +<floater name="inspect" title="UNDERSØG OBJEKT"> + <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="Vælg et objekt fra listen for at markere det"> - <column label="Objekt navn" name="object_name"/> - <column label="Objekt ejer" name="owner_name"/> - <column label="Bygget af" name="creator_name"/> - <column label="Lavet den " name="creation_date"/> + <scroll_list.columns label="Objekt navn" name="object_name"/> + <scroll_list.columns label="Objekt ejer" name="owner_name"/> + <scroll_list.columns label="Bygget af" name="creator_name"/> + <scroll_list.columns label="Lavet den " name="creation_date"/> </scroll_list> <button label="Se profil for ejer..." label_selected="" name="button owner" tool_tip="Se profilen for ejeren af det markerede objekt på listen"/> <button label="Se profil for bygger..." label_selected="" name="button creator" tool_tip="Se profilen for den beboer der har bygget det markerede objekt på listen"/> diff --git a/indra/newview/skins/default/xui/da/floater_inventory.xml b/indra/newview/skins/default/xui/da/floater_inventory.xml index 8bfe7164d0..d80051fb84 100644 --- a/indra/newview/skins/default/xui/da/floater_inventory.xml +++ b/indra/newview/skins/default/xui/da/floater_inventory.xml @@ -1,47 +1,16 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Inventory" title="BEHOLDNING"> - <search_editor label="Skriv her for at søge" name="inventory search editor" /> - <tab_container name="inventory filter tabs"> - <inventory_panel label="Alle ting" name="All Items" /> - <inventory_panel label="Nye ting" name="Recent Items" /> - </tab_container> - <menu_bar name="Inventory Menu"> - <menu label="Filer" name="File"> - <menu_item_call label="Åben" name="Open" /> - <menu_item_call label="Nyt vindue" name="New Window" /> - <menu_item_call label="Vis filtre" name="Show Filters" /> - <menu_item_call label="Nulstil filtre" name="Reset Current" /> - <menu_item_call label="Luk alle mapper" name="Close All Folders" /> - <menu_item_call label="Tøm papirkurv" name="Empty Trash" /> - </menu> - <menu label="Opret" name="Create"> - <menu_item_call label="Ny mappe" name="New Folder" /> - <menu_item_call label="Nyt script" name="New Script" /> - <menu_item_call label="Ny note" name="New Note" /> - <menu_item_call label="Ny bevægelse" name="New Gesture" /> - <menu name="New Clothes"> - <menu_item_call label="Ny trøje" name="New Shirt" /> - <menu_item_call label="Nye bukser" name="New Pants" /> - <menu_item_call label="Nye sko" name="New Shoes" /> - <menu_item_call label="Nye strømper" name="New Socks" /> - <menu_item_call label="Ny jakke" name="New Jacket" /> - <menu_item_call label="Ny nederdel" name="New Skirt" /> - <menu_item_call label="Nye handsker" name="New Gloves" /> - <menu_item_call label="Ny undertrøje" name="New Undershirt" /> - <menu_item_call label="Nye underbukser" name="New Underpants" /> - </menu> - <menu name="New Body Parts"> - <menu_item_call label="Ny figur" name="New Shape" /> - <menu_item_call label="Ny hud" name="New Skin" /> - <menu_item_call label="Nyt hår" name="New Hair" /> - <menu_item_call label="Nye øjne" name="New Eyes" /> - </menu> - </menu> - <menu label="Sortér" name="Sort"> - <menu_item_check label="Efter navn" name="By Name" /> - <menu_item_check label="Efter dato" name="By Date" /> - <menu_item_check label="Altid mapper efter navn" name="Folders Always By Name" /> - <menu_item_check label="System-mapper i toppen" name="System Folders To Top" /> - </menu> - </menu_bar> + <floater.string name="Title"> + Beholdning + </floater.string> + <floater.string name="TitleFetching"> + Beholdning (henter [ITEM_COUNT] genstande...) [FILTER] + </floater.string> + <floater.string name="TitleCompleted"> + Beholdning ([ITEM_COUNT] genstande) [FILTER] + </floater.string> + <floater.string name="Fetched"> + Hentet + </floater.string> + <panel label="Beholdningspanel" name="Inventory Panel"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml index fbcf202c54..fa36fab762 100644 --- a/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/da/floater_inventory_item_properties.xml @@ -1,5 +1,20 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="item properties" title="EGENSKABER FOR OBJEKT I BEHOLDNING"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="item properties" title="OPLYSNINGER OM BEHOLDNINGSGENSTAND"> + <floater.string name="unknown"> + (ukendt) + </floater.string> + <floater.string name="public"> + (offentlig) + </floater.string> + <floater.string name="you_can"> + Du kan: + </floater.string> + <floater.string name="owner_can"> + Ejer kan: + </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"> Navn: </text> @@ -12,14 +27,14 @@ <text name="LabelCreatorName"> Nicole Linden </text> - <button label="Profil..." label_selected="" name="BtnCreator" /> + <button label="Profil..." label_selected="" name="BtnCreator"/> <text name="LabelOwnerTitle"> Ejer: </text> <text name="LabelOwnerName"> Thrax Linden </text> - <button label="Profil..." label_selected="" name="BtnOwner" /> + <button label="Profil..." label_selected="" name="BtnOwner"/> <text name="LabelAcquiredTitle"> Erhvervet: </text> @@ -27,55 +42,32 @@ Wed May 24 12:50:46 2006 </text> <text name="OwnerLabel"> - Du kan: - </text> - <check_box label="Redigere" name="CheckOwnerModify" /> - <check_box label="Kopiere" name="CheckOwnerCopy" /> - <check_box label="Sælge/give væk" name="CheckOwnerTransfer" /> - <text name="BaseMaskDebug"> - S: - </text> - <text name="OwnerMaskDebug"> - E: + Dig: </text> - <text name="GroupMaskDebug"> - G: + <check_box label="Redigér" name="CheckOwnerModify"/> + <check_box label="Kopiere" name="CheckOwnerCopy"/> + <check_box label="Sælg" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Enhver: </text> - <text name="EveryoneMaskDebug"> - A: + <check_box label="Kopiér" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Gruppe: </text> - <text name="NextMaskDebug"> - N: - </text> - <check_box label="Del med gruppe" name="CheckShareWithGroup" /> - <check_box label="Tillad alle at kopiere" name="CheckEveryoneCopy" /> + <check_box label="Del" name="CheckShareWithGroup"/> <text name="NextOwnerLabel"> - Næste ejer kan: - </text> - <check_box label="Redigere" name="CheckNextOwnerModify" /> - <check_box label="Kopiere" name="CheckNextOwnerCopy" /> - <check_box label="Sælge/Give væk" name="CheckNextOwnerTransfer" /> - <text name="SaleLabel"> - Markér ting: + Næste ejer: + </text> + <check_box label="Redigér" name="CheckNextOwnerModify"/> + <check_box label="Kopiere" 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> - <check_box label="Til salg" name="CheckPurchase" /> - <radio_group name="RadioSaleType"> - <radio_item name="radio" label="Original" /> - <radio_item name="radio2" label="Kopi" /> - </radio_group> - <text name="TextPrice"> - Pris: L$ - </text> - <string name="unknown"> - (ukendt) - </string> - <string name="public"> - (offentlig) - </string> - <string name="you_can"> - Du kan: - </string> - <string name="owner_can"> - Ejer kan: - </string> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_joystick.xml b/indra/newview/skins/default/xui/da/floater_joystick.xml index 4954b7b619..49e1397e9f 100644 --- a/indra/newview/skins/default/xui/da/floater_joystick.xml +++ b/indra/newview/skins/default/xui/da/floater_joystick.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Joystick" title="JOYSTICK OPSÆTNING"> - <check_box name="enable_joystick" label="Aktiver Joystick:"/> + <check_box label="Aktiver Joystick:" name="enable_joystick"/> <spinner label="X akse mapping" name="JoystickAxis1"/> <spinner label="Y akse mapping" name="JoystickAxis2"/> <spinner label="Z akse mapping" name="JoystickAxis0"/> @@ -14,9 +14,9 @@ <text name="Control Modes:"> Kontrollér: </text> - <check_box name="JoystickAvatarEnabled" label="Avatar"/> - <check_box name="JoystickBuildEnabled" label="Build"/> - <check_box name="JoystickFlycamEnabled" label="Flycam"/> + <check_box label="Avatar" name="JoystickAvatarEnabled"/> + <check_box label="Build" name="JoystickBuildEnabled"/> + <check_box label="Flycam" name="JoystickFlycamEnabled"/> <text name="XScale"> X følsomhed </text> diff --git a/indra/newview/skins/default/xui/da/floater_lagmeter.xml b/indra/newview/skins/default/xui/da/floater_lagmeter.xml index bcf15ea926..149d174c34 100644 --- a/indra/newview/skins/default/xui/da/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/da/floater_lagmeter.xml @@ -1,152 +1,151 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_lagmeter" title="LAG MÅLER"> - <button label="" label_selected="" name="client_lagmeter" tool_tip="Status for klient lag"/> - <text name="client"> - Klient: - </text> - <text name="client_text"> - Normal - </text> - <button label="" label_selected="" name="network_lagmeter" tool_tip="Network lag status"/> - <text name="network"> - Netværk: - </text> - <text name="network_text"> - Normal - </text> - <button label="" label_selected="" name="server_lagmeter" tool_tip="Status for server lag"/> - <text name="server"> - Server: - </text> - <text name="server_text"> - Normal - </text> - <button label="?" name="server_help"/> - <button label=">>" name="minimize"/> - <string name="max_title_msg"> +<floater name="floater_lagmeter" title="LAG METER"> + <floater.string name="max_title_msg"> Lag måler - </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"> Klient - </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"> Normal, vindue i baggrund - </string> - <string name="client_frame_time_critical_msg"> + </floater.string> + <floater.string name="client_frame_time_critical_msg"> Klients billeder/sek under [CLIENT_FRAME_RATE_CRITICAL] - </string> - <string name="client_frame_time_warning_msg"> + </floater.string> + <floater.string name="client_frame_time_warning_msg"> Klients billeder/sek mellem [CLIENT_FRAME_RATE_CRITICAL] og [CLIENT_FRAME_RATE_WARNING] - </string> - <string name="client_frame_time_normal_msg"> + </floater.string> + <floater.string name="client_frame_time_normal_msg"> Normal - </string> - <string name="client_draw_distance_cause_msg"> + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> Mulig årsag: 'Vis afstand' sat for højt i grafik indstillinger - </string> - <string name="client_texture_loading_cause_msg"> + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> Mulig årsag: Billeder hentes - </string> - <string name="client_texture_memory_cause_msg"> + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> Mulig årsag: For mange billeder i hukommelse - </string> - <string name="client_complex_objects_cause_msg"> + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> Mulig årsag: For mange komplekse objekter i scenariet - </string> - <string name="network_text_msg"> + </floater.string> + <floater.string name="network_text_msg"> Netværk - </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"> Forbindelsen mister over [NETWORK_PACKET_LOSS_CRITICAL]% pakker - </string> - <string name="network_packet_loss_warning_msg"> + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> Forbindelsen mister [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% pakker - </string> - <string name="network_performance_normal_msg"> + </floater.string> + <floater.string name="network_performance_normal_msg"> Normal - </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"> Forbindelsens ping tider er over [NETWORK_PING_CRITICAL] ms - </string> - <string name="network_ping_warning_msg"> + </floater.string> + <floater.string name="network_ping_warning_msg"> Forbindelsens ping tider er [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"> Muligvis dårlig forbindelse eller 'båndbredde' sat for højt i netværksopsætning. - </string> - <string name="network_ping_cause_msg"> + </floater.string> + <floater.string name="network_ping_cause_msg"> Muligvis dårlig forbindelse eller fil delings program. - </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"> Simulator framerate er under [SERVER_FRAME_RATE_CRITICAL] - </string> - <string name="server_frame_time_warning_msg"> + </floater.string> + <floater.string name="server_frame_time_warning_msg"> Simulator framerate er mellem [SERVER_FRAME_RATE_CRITICAL] og [SERVER_FRAME_RATE_WARNING] - </string> - <string name="server_frame_time_normal_msg"> + </floater.string> + <floater.string name="server_frame_time_normal_msg"> Normal - </string> - <string name="server_physics_cause_msg"> + </floater.string> + <floater.string name="server_physics_cause_msg"> Mulig årsag: For mange fysiske objekter - </string> - <string name="server_scripts_cause_msg"> + </floater.string> + <floater.string name="server_scripts_cause_msg"> Mulig årsag: For mange objekter med script - </string> - <string name="server_net_cause_msg"> + </floater.string> + <floater.string name="server_net_cause_msg"> Mulig årsag: For meget netværks trafik - </string> - <string name="server_agent_cause_msg"> + </floater.string> + <floater.string name="server_agent_cause_msg"> Mulig årsag: For mange avatarer i bevægelse i regionen - </string> - <string name="server_images_cause_msg"> + </floater.string> + <floater.string name="server_images_cause_msg"> Mulig årsag: For mange billed udregninger - </string> - <string name="server_generic_cause_msg"> + </floater.string> + <floater.string name="server_generic_cause_msg"> Mulig årsag: Simulator belastning for stor - </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="Status for klient lag"/> + <text name="client"> + Klient + </text> + <text name="client_text"> + Normal + </text> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Network lag status"/> + <text name="network"> + Netværk + </text> + <text name="network_text"> + Normal + </text> + <button label="" label_selected="" name="server_lagmeter" tool_tip="Status for server lag"/> + <text name="server"> + Server + </text> + <text name="server_text"> + Normal + </text> + <button label=">>" name="minimize" tool_tip="Ændre størrelse"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_land_holdings.xml b/indra/newview/skins/default/xui/da/floater_land_holdings.xml index 39c906eb18..b3c12627f7 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 cfc5fb8860..4079ff9f38 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_lsl_guide.xml b/indra/newview/skins/default/xui/da/floater_lsl_guide.xml index ebc86c5c73..2b008f133c 100644 --- a/indra/newview/skins/default/xui/da/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/da/floater_lsl_guide.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="script ed float" title="LSL WIKI"> - <check_box label="Følg markøreren" name="lock_check" /> - <combo_box label="Lås" name="history_combo" left_delta="114" width="70"/> - <button label="Tilbage" name="back_btn" /> - <button label="Frem" name="fwd_btn" /> + <check_box label="Følg markøreren" name="lock_check"/> + <combo_box label="Lås" left_delta="114" name="history_combo" width="70"/> + <button label="Tilbage" name="back_btn"/> + <button label="Frem" name="fwd_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_media_settings.xml b/indra/newview/skins/default/xui/da/floater_media_settings.xml new file mode 100644 index 0000000000..67c122b9d5 --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_media_settings.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="media_settings" title="MEDIA INDSTILLINGER"> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Annullér" label_selected="Annullér" name="Cancel"/> + <button label="Anvend" label_selected="Anvend" name="Apply"/> +</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 e7ad821d40..60bb3149a5 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 2b50528881..b00dc6bf4d 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_mute_object.xml b/indra/newview/skins/default/xui/da/floater_mute_object.xml index edda8b44e9..3b3f670792 100644 --- a/indra/newview/skins/default/xui/da/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/da/floater_mute_object.xml @@ -1,14 +1,14 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="mute by name" title="BLOKÉR OBJEKT VIA NAVN">
- <text name="message">
- Blokér et objekt:
- </text>
- <line_editor name="object_name">
- Objekt navn
- </line_editor>
- <text name="note">
- * Blokérer kun tekst fra objekt, ikke lyde
- </text>
- <button label="OK" name="OK"/>
- <button label="Annullér" name="Cancel"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="mute by name" title="BLOKÉR OBJEKT VIA NAVN"> + <text name="message"> + Blokér et objekt: + </text> + <line_editor name="object_name"> + Objekt navn + </line_editor> + <text name="note"> + * Blokérer kun tekst fra objekt, ikke lyde + </text> + <button label="OK" name="OK"/> + <button label="Annullér" name="Cancel"/> +</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 54b401076c..c3db53ce63 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_nearby_chat.xml b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml new file mode 100644 index 0000000000..ef4e4cbe7e --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="nearby_chat" title="CHAT NÆRVED"/> diff --git a/indra/newview/skins/default/xui/da/floater_openobject.xml b/indra/newview/skins/default/xui/da/floater_openobject.xml index 5875b7a967..92fdd1e0a6 100644 --- a/indra/newview/skins/default/xui/da/floater_openobject.xml +++ b/indra/newview/skins/default/xui/da/floater_openobject.xml @@ -1,10 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="objectcontents" title="OBJEKT INDHOLD"> <text name="object_name"> [DESC]: </text> - <button label="Kopiér til beholdning" label_selected="Kopiér til beholdning" - name="copy_to_inventory_button" /> - <button label="Kopiér og tag på" label_selected="Kopiér og tag på" - name="copy_and_wear_button" /> + <button label="Kopiér til beholdning" label_selected="Kopiér til beholdning" name="copy_to_inventory_button"/> + <button label="Kopiér og tag på" label_selected="Kopiér og tag på" name="copy_and_wear_button"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_outgoing_call.xml b/indra/newview/skins/default/xui/da/floater_outgoing_call.xml new file mode 100644 index 0000000000..5c98d9855f --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_outgoing_call.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="outgoing call" title="KALDER"> + <floater.string name="localchat"> + Stemme chat nærved + </floater.string> + <floater.string name="anonymous"> + anonym + </floater.string> + <floater.string name="VoiceInviteP2P"> + kalder op. + </floater.string> + <floater.string name="VoiceInviteAdHoc"> + har sluttet sig til stemmechat med en konference chat. + </floater.string> + <text name="connecting"> + Tilslutter til [CALLEE_NAME] + </text> + <text name="calling"> + Kalder [CALLEE_NAME] + </text> + <text name="noanswer"> + Intet svar. Prøv igen senere. + </text> + <text name="leaving"> + Forlader [CURRENT_CHAT]. + </text> + <button label="Annullér" label_selected="Annullér" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_pay.xml b/indra/newview/skins/default/xui/da/floater_pay.xml index f39cfa4871..b2cdc0bfe7 100644 --- a/indra/newview/skins/default/xui/da/floater_pay.xml +++ b/indra/newview/skins/default/xui/da/floater_pay.xml @@ -1,21 +1,25 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <button label="L$1" label_selected="L$1" name="fastpay 1" /> - <button label="L$5" label_selected="L$5" name="fastpay 5" /> - <button label="L$10" label_selected="L$10" name="fastpay 10" /> - <button label="L$20" label_selected="L$20" name="fastpay 20" /> - <button label="Betal" label_selected="Betal" name="pay btn" /> - <button label="Annullér" label_selected="Annullér" name="cancel btn" /> - <text name="payee_label" left="5" width="81"> - Betal beboer: + <string name="payee_group"> + Betal gruppe + </string> + <string name="payee_resident"> + Betal beboer + </string> + <text left="5" name="payee_label" width="81"> + Betal: </text> + <icon name="icon_person" tool_tip="Person"/> <text name="payee_name"> [FIRST] [LAST] </text> - <text name="fastpay text"> - Hurtig betal: - </text> - <text name="amount text" left="4" > - Beløb: + <button label="L$1" label_selected="L$1" name="fastpay 1"/> + <button label="L$5" label_selected="L$5" name="fastpay 5"/> + <button label="L$10" label_selected="L$10" name="fastpay 10"/> + <button label="L$20" label_selected="L$20" name="fastpay 20"/> + <text left="4" name="amount text"> + eler vælg beløb: </text> + <button label="Betal" label_selected="Betal" name="pay btn"/> + <button label="Annullér" label_selected="Annullér" name="cancel btn"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_pay_object.xml b/indra/newview/skins/default/xui/da/floater_pay_object.xml index 09e2e3f5d0..f74e097da2 100644 --- a/indra/newview/skins/default/xui/da/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/da/floater_pay_object.xml @@ -1,30 +1,29 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <text name="payee_group"> - Betal gruppe: - </text> - <text name="payee_resident"> - Betal beboer: - </text> + <string name="payee_group"> + Betal gruppe + </string> + <string name="payee_resident"> + Betal beboer + </string> + <icon name="icon_person" tool_tip="Person"/> <text name="payee_name"> [FIRST] [LAST] </text> <text name="object_name_label"> Via objekt: </text> + <icon name="icon_object" tool_tip="Objekter"/> <text name="object_name_text"> ... </text> - <text name="fastpay text"> - Hurtig betal: - </text> + <button label="L$1" label_selected="L$1" name="fastpay 1"/> + <button label="L$5" label_selected="L$5" name="fastpay 5"/> + <button label="L$10" label_selected="L$10" name="fastpay 10"/> + <button label="L$20" label_selected="L$20" name="fastpay 20"/> <text name="amount text"> - Beløb: + Eller vælg beløb: </text> - <button label="L$1" label_selected="L$1" name="fastpay 1" /> - <button label="L$5" label_selected="L$5" name="fastpay 5" /> - <button label="L$10" label_selected="L$10" name="fastpay 10" /> - <button label="L$20" label_selected="L$20" name="fastpay 20" /> - <button label="Betal" label_selected="Betal" name="pay btn" /> - <button label="Annullér" label_selected="Annullér" name="cancel btn" /> + <button label="Betal" label_selected="Betal" name="pay btn"/> + <button label="Annullér" label_selected="Annullér" name="cancel btn"/> </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 69a8d3af94..eecddbcdb0 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 cd61e7ac97..44b0fd4faa 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 e251c9ad2c..f0fe3472d0 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 1494bf36d0..436843decc 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 cf2d14b80a..bc232f3e9f 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_event.xml b/indra/newview/skins/default/xui/da/floater_preview_event.xml index 584085fea0..3e870b58ae 100644 --- a/indra/newview/skins/default/xui/da/floater_preview_event.xml +++ b/indra/newview/skins/default/xui/da/floater_preview_event.xml @@ -1,2 +1,6 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="event_preview" title="EVENT INFORMATION" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="event_preview" title="EVENT INFORMATION"> + <floater.string name="Title"> + Event: [NAME] + </floater.string> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture.xml index 0053cb852f..bfa3c150a9 100644 --- a/indra/newview/skins/default/xui/da/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/da/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"> + Animation til afspilning: + </floater.string> + <floater.string name="step_sound"> + Lyd til afspilning: + </floater.string> + <floater.string name="step_chat"> + Sig: + </floater.string> + <floater.string name="step_wait"> + Vent: + </floater.string> + <floater.string name="stop_txt"> Stop - </string> - <string name="preview_txt"> + </floater.string> + <floater.string name="preview_txt"> Vis - </string> - <string name="none_text"> + </floater.string> + <floater.string name="none_text"> -- Intet -- - </string> + </floater.string> + <floater.string name="Title"> + Bevægelse: [NAME] + </floater.string> <text name="desc_label"> Beskrivelse: </text> @@ -23,33 +38,27 @@ Genvejstast: </text> <combo_box label="Ingen" name="modifier_combo" width="60"/> - <combo_box label="Ingen" name="key_combo" left_delta="70" width="60"/> + <combo_box label="Ingen" left_delta="70" name="key_combo" width="60"/> <text name="library_label"> Type: </text> + <scroll_list name="library_list"/> + <button label="Tilføj >>" name="add_btn"/> <text name="steps_label"> Trin: </text> - <scroll_list name="library_list"> - Animation -Lyd -Chat -Vent - </scroll_list> - <button label="Tilføj >>" name="add_btn"/> - <button label="Flyt op" name="up_btn"/> - <button label="Flyt ned" name="down_btn"/> + <button label="Op" name="up_btn"/> + <button label="Ned" name="down_btn"/> <button label="Fjern" name="delete_btn"/> - <text name="help_label"> - Alle trin vil ske samtidigt, -medmindre du tilføjer vente trin. - </text> <radio_group name="animation_trigger_type"> - <radio_item name="start" label="Start" /> - <radio_item name="stop" label="Stop" /> + <radio_item label="Start" name="start"/> + <radio_item label="Stop" name="stop"/> </radio_group> <check_box label="Indtil animation er færdig" name="wait_anim_check"/> <check_box label="tid i sekunder" name="wait_time_check"/> + <text name="help_label"> + Alle trin vil ske samtidigt, medmindre du tilføjer vente trin. + </text> <check_box label="Aktiv" name="active_check" tool_tip="Aktive bevægelser kan blive aktiveret ved at skrive deress udløser tekst eller ved at trykke på genvejstaste. Bevægelser vil normalt være inaktive hvis der allerede findes en tilsvarende genvejstaste."/> <button label="Vis" name="preview_btn"/> <button label="Gem" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml new file mode 100644 index 0000000000..9892a92e4c --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="BEVÆGELSE GENVEJ"/> diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml new file mode 100644 index 0000000000..4d4cca1d90 --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="GENVEJ BEVÆGELSER"> + <text name="trigger_label"> + Chat: + </text> + <text name="key_label"> + Tastatur: + </text> + <combo_box label="Intet" name="modifier_combo"/> + <combo_box label="Intet" name="key_combo"/> + <text name="replace_text" tool_tip="Erstat udløser ord med disse ord. For eksempel uløser "hello" erstat med "hej" vil ændre chat 'Jeg ville bare sige hello' til 'Jeg ville bare sige hej' samtidig med bevægelsen afspilles!"> + Erstat: + </text> + <line_editor name="replace_editor" tool_tip="Erstat udløser ord med disse ord. For eksempel uløser "hello" erstat med "hej" vil ændre chat 'Jeg ville bare sige hello' til 'Jeg ville bare sige hej' samtidig med bevægelsen afspilles!"/> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml new file mode 100644 index 0000000000..9892a92e4c --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="BEVÆGELSE GENVEJ"/> diff --git a/indra/newview/skins/default/xui/da/floater_preview_notecard.xml b/indra/newview/skins/default/xui/da/floater_preview_notecard.xml index 7258824878..2ebec4462f 100644 --- a/indra/newview/skins/default/xui/da/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/da/floater_preview_notecard.xml @@ -1,16 +1,22 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview notecard" title="NOTE:"> - <button label="Gem" label_selected="Gem" name="Save"/> + <floater.string name="no_object"> + Kunne ikke finde objekt der indeholder denne note. + </floater.string> + <floater.string name="not_allowed"> + Du har ikke rettigheder til at se denne note. + </floater.string> + <floater.string name="Title"> + Note: [NAME] + </floater.string> + <floater.string label="Gem" label_selected="Gem" name="Save"> + Gem + </floater.string> <text name="desc txt"> Beskrivelse: </text> <text_editor name="Notecard Editor"> Indlæser... </text_editor> - <string name="no_object"> - Kunne ikke finde objekt der indeholder denne note. - </string> - <string name="not_allowed"> - Du har ikke tilladelse til at læse denne note. - </string> + <button label="Gem" label_selected="Gem" name="Save"/> </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 9fbfba88b5..21f7656462 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_preview_texture.xml b/indra/newview/skins/default/xui/da/floater_preview_texture.xml index 250659f249..ab7ddbcc72 100644 --- a/indra/newview/skins/default/xui/da/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/da/floater_preview_texture.xml @@ -1,9 +1,44 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview_texture"> + <floater.string name="Title"> + Tekstur: [NAME] + </floater.string> + <floater.string name="Copy"> + Kopiér til beholdning + </floater.string> <text name="desc txt"> Beskrivelse: </text> <text name="dimensions"> - Størrelse: [WIDTH] x [HEIGHT] + [WIDTH]px x [HEIGHT]px </text> + <combo_box name="combo_aspect_ratio" tool_tip="Forhåndsvisning med et bestemt billedformat"> + <combo_item name="Unconstrained"> + Ikke låst + </combo_item> + <combo_item name="1:1" tool_tip="Typisk valg til gruppe logo eller "Real world" profil billede"> + 1:1 + </combo_item> + <combo_item name="4:3" tool_tip="Typisk valg til din "Second Life Profil" billede"> + 4:3 + </combo_item> + <combo_item name="10:7" tool_tip="Typisk valg til billeder i annoncer, landemærker og søgninger"> + 10:7 + </combo_item> + <combo_item name="3:2" tool_tip="Typisk valg til "Om land" billede"> + 3:2 + </combo_item> + <combo_item name="16:10"> + 16:10 + </combo_item> + <combo_item name="16:9" tool_tip="Typisk valg til favorit billeder i profil"> + 16:9 + </combo_item> + <combo_item name="2:1"> + 2:1 + </combo_item> + </combo_box> + <button label="OK" name="keep"/> + <button label="Annullér" name="discard"/> + <button label="Gem som" name="save_tex_btn"/> </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 5c95c8ed5e..ae00f90f16 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_report_abuse.xml b/indra/newview/skins/default/xui/da/floater_report_abuse.xml index b249fc5654..9ef17a3cbb 100644 --- a/indra/newview/skins/default/xui/da/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/da/floater_report_abuse.xml @@ -1,103 +1,103 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="floater_report_abuse" title="RAPPORTÉR MISBRUG">
- <floater.string name="Screenshot">
- Screenshot
- </floater.string>
- <check_box label="Inkludér billede" name="screen_check"/>
- <text name="reporter_title">
- Anmelder:
- </text>
- <text name="reporter_field">
- Loremipsum Dolorsitamut Longnamez
- </text>
- <text name="sim_title">
- Region:
- </text>
- <text name="sim_field">
- Region navn
- </text>
- <text name="pos_title">
- Position:
- </text>
- <text name="pos_field">
- {128.1, 128.1, 15.4}
- </text>
- <text name="select_object_label">
- Klik på knappen derefter objektet:
- </text>
- <button label="" label_selected="" name="pick_btn" tool_tip="Objekt vælger - Identificér et objekt denne rapport omhandler"/>
- <text name="object_name_label">
- Navn:
- </text>
- <text left_delta="64" name="object_name" width="140">
- Consetetur Sadipscing
- </text>
- <text name="owner_name_label">
- Ejer:
- </text>
- <text left_delta="64" name="owner_name">
- Hendrerit Vulputate Kamawashi Longname
- </text>
- <combo_box name="category_combo" tool_tip="Kategori -- Vælg en kategori der passer bedst på denne rapport">
- <combo_box.item label="Vælg kategori" name="Select_category"/>
- <combo_box.item label="Alder > Falsk alder" name="Age__Age_play"/>
- <combo_box.item label="Alder > Voksen beboer på Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/>
- <combo_box.item label="Alder > Mindreårig beboer udenfor Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/>
- <combo_box.item label="Overfald > Kamp sandkasse / Usikkert område" name="Assault__Combat_sandbox___unsafe_area"/>
- <combo_box.item label="Overfald > Sikkert område" name="Assault__Safe_area"/>
- <combo_box.item label="Overfald > Sandkasse til våbentest" name="Assault__Weapons_testing_sandbox"/>
- <combo_box.item label="Handel > Vare eller ydelse ikke leveret" name="Commerce__Failure_to_deliver_product_or_service"/>
- <combo_box.item label="Offentliggørelse > Om oplysninger i den virkelige verden" name="Disclosure__Real_world_information"/>
- <combo_box.item label="Offentliggørelse > Fjernaflytning af chat" name="Disclosure__Remotely_monitoring chat"/>
- <combo_box.item label="Offentliggørelse > Information/chat/IM fra Second Life" name="Disclosure__Second_Life_information_chat_IMs"/>
- <combo_box.item label="Forstyrrelse af fred > Unfair brug af region ressourcer" name="Disturbing_the_peace__Unfair_use_of_region_resources"/>
- <combo_box.item label="Forstyrrelse af fred > Overdreven brug af objekter med script" name="Disturbing_the_peace__Excessive_scripted_objects"/>
- <combo_box.item label="Forstyrrelse af fred > Object affald" name="Disturbing_the_peace__Object_littering"/>
- <combo_box.item label="Forstyrring af fred > Gentagen spam" name="Disturbing_the_peace__Repetitive_spam"/>
- <combo_box.item label="Forstyrrelse af fred > Uønsket reklame spam" name="Disturbing_the_peace__Unwanted_advert_spam"/>
- <combo_box.item label="Bedrageri > L$" name="Fraud__L$"/>
- <combo_box.item label="Bedrageri > Land" name="Fraud__Land"/>
- <combo_box.item label="Bedrageri > Pyramide spil eller kædebreve" name="Fraud__Pyramid_scheme_or_chain_letter"/>
- <combo_box.item label="Bedrageri > US$" name="Fraud__US$"/>
- <combo_box.item label="Chikane > reklame farm / billedeligt spam" name="Harassment__Advert_farms___visual_spam"/>
- <combo_box.item label="Chikane > Injurier/bagvask enkeltpersoner eller grupper" name="Harassment__Defaming_individuals_or_groups"/>
- <combo_box.item label="Chikane > Hindre bevægelse" name="Harassment__Impeding_movement"/>
- <combo_box.item label="Chikane > Sex chikane" name="Harassment__Sexual_harassment"/>
- <combo_box.item label="Chikane > Opfordrer/kræver at andre overtræder licensbetingelser" name="Harassment__Solicting_inciting_others_to_violate_ToS"/>
- <combo_box.item label="Chikane > Verbalt chikane" name="Harassment__Verbal_abuse"/>
- <combo_box.item label="Uanstændighed > Meget stødende indhold eller adfærd" name="Indecency__Broadly_offensive_content_or_conduct"/>
- <combo_box.item label="Uanstændighed > Upassende avatar navn" name="Indecency__Inappropriate_avatar_name"/>
- <combo_box.item label="Usømmelighed > Upassende inhold eller opførsel i en 'PG' region" name="Indecency__Mature_content_in_PG_region"/>
- <combo_box.item label="Usømmelighed > Upassende inhold eller opførsel i en 'Mature' region" name="Indecency__Inappropriate_content_in_Mature_region"/>
- <combo_box.item label="Krænkelse af intellektuelle ejendomsrettigheder > Indholds fjernelse" name="Intellectual_property_infringement_Content_Removal"/>
- <combo_box.item label="Krænkelse af intellektuelle ejendomsrettigheder > CopyBot eller omgåelse af rettighedsbeskyttelse" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/>
- <combo_box.item label="Intolerance" name="Intolerance"/>
- <combo_box.item label="Land > Misbrug af sandkasse resourcer" name="Land__Abuse_of_sandbox_resources"/>
- <combo_box.item label="Land > Overgreb > Objekter/teksturer" name="Land__Encroachment__Objects_textures"/>
- <combo_box.item label="Land > Overgreb > Partikler" name="Land__Encroachment__Particles"/>
- <combo_box.item label="Land > Overgreb > Træer/planter" name="Land__Encroachment__Trees_plants"/>
- <combo_box.item label="Væddemål/gambling" name="Wagering_gambling"/>
- <combo_box.item label="Andet" name="Other"/>
- </combo_box>
- <text name="abuser_name_title">
- Udøvers navn:
- </text>
- <button label="Vælg beboer" label_selected="" name="select_abuser" tool_tip="Vælg navnet på udøveren fra denne liste"/>
- <text name="abuser_name_title2">
- Sted for misbrug/overgreb:
- </text>
- <text name="sum_title">
- Opsummering:
- </text>
- <text name="dscr_title">
- Detaljer:
- </text>
- <text name="bug_aviso">
- Vær venligst så præcis som muligt
- </text>
- <text name="incomplete_title">
- * Note: Ufuldstændige rapporter vil ikke blive undersøgt.
- </text>
- <button label="Rapporter misbrug" label_selected="Rapporter misbrug" name="send_btn"/>
- <button label="Annullér" label_selected="Annullér" name="cancel_btn"/>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_report_abuse" title="RAPPORTÉR MISBRUG"> + <floater.string name="Screenshot"> + Screenshot + </floater.string> + <check_box label="Inkludér billede" name="screen_check"/> + <text name="reporter_title"> + Anmelder: + </text> + <text name="reporter_field"> + Loremipsum Dolorsitamut Longnamez + </text> + <text name="sim_title"> + Region: + </text> + <text name="sim_field"> + Region navn + </text> + <text name="pos_title"> + Position: + </text> + <text name="pos_field"> + {128.1, 128.1, 15.4} + </text> + <text name="select_object_label"> + Klik på knappen derefter objektet: + </text> + <button label="" label_selected="" name="pick_btn" tool_tip="Objekt vælger - Identificér et objekt denne rapport omhandler"/> + <text name="object_name_label"> + Navn: + </text> + <text left_delta="64" name="object_name" width="140"> + Consetetur Sadipscing + </text> + <text name="owner_name_label"> + Ejer: + </text> + <text left_delta="64" name="owner_name"> + Hendrerit Vulputate Kamawashi Longname + </text> + <combo_box name="category_combo" tool_tip="Kategori -- Vælg en kategori der passer bedst på denne rapport"> + <combo_box.item label="Vælg kategori" name="Select_category"/> + <combo_box.item label="Alder > Falsk alder" name="Age__Age_play"/> + <combo_box.item label="Alder > Voksen beboer på Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/> + <combo_box.item label="Alder > Mindreårig beboer udenfor Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> + <combo_box.item label="Overfald > Kamp sandkasse / Usikkert område" name="Assault__Combat_sandbox___unsafe_area"/> + <combo_box.item label="Overfald > Sikkert område" name="Assault__Safe_area"/> + <combo_box.item label="Overfald > Sandkasse til våbentest" name="Assault__Weapons_testing_sandbox"/> + <combo_box.item label="Handel > Vare eller ydelse ikke leveret" name="Commerce__Failure_to_deliver_product_or_service"/> + <combo_box.item label="Offentliggørelse > Om oplysninger i den virkelige verden" name="Disclosure__Real_world_information"/> + <combo_box.item label="Offentliggørelse > Fjernaflytning af chat" name="Disclosure__Remotely_monitoring chat"/> + <combo_box.item label="Offentliggørelse > Information/chat/IM fra Second Life" name="Disclosure__Second_Life_information_chat_IMs"/> + <combo_box.item label="Forstyrrelse af fred > Unfair brug af region ressourcer" name="Disturbing_the_peace__Unfair_use_of_region_resources"/> + <combo_box.item label="Forstyrrelse af fred > Overdreven brug af objekter med script" name="Disturbing_the_peace__Excessive_scripted_objects"/> + <combo_box.item label="Forstyrrelse af fred > Object affald" name="Disturbing_the_peace__Object_littering"/> + <combo_box.item label="Forstyrring af fred > Gentagen spam" name="Disturbing_the_peace__Repetitive_spam"/> + <combo_box.item label="Forstyrrelse af fred > Uønsket reklame spam" name="Disturbing_the_peace__Unwanted_advert_spam"/> + <combo_box.item label="Bedrageri > L$" name="Fraud__L$"/> + <combo_box.item label="Bedrageri > Land" name="Fraud__Land"/> + <combo_box.item label="Bedrageri > Pyramide spil eller kædebreve" name="Fraud__Pyramid_scheme_or_chain_letter"/> + <combo_box.item label="Bedrageri > US$" name="Fraud__US$"/> + <combo_box.item label="Chikane > reklame farm / billedeligt spam" name="Harassment__Advert_farms___visual_spam"/> + <combo_box.item label="Chikane > Injurier/bagvask enkeltpersoner eller grupper" name="Harassment__Defaming_individuals_or_groups"/> + <combo_box.item label="Chikane > Hindre bevægelse" name="Harassment__Impeding_movement"/> + <combo_box.item label="Chikane > Sex chikane" name="Harassment__Sexual_harassment"/> + <combo_box.item label="Chikane > Opfordrer/kræver at andre overtræder licensbetingelser" name="Harassment__Solicting_inciting_others_to_violate_ToS"/> + <combo_box.item label="Chikane > Verbalt chikane" name="Harassment__Verbal_abuse"/> + <combo_box.item label="Uanstændighed > Meget stødende indhold eller adfærd" name="Indecency__Broadly_offensive_content_or_conduct"/> + <combo_box.item label="Uanstændighed > Upassende avatar navn" name="Indecency__Inappropriate_avatar_name"/> + <combo_box.item label="Usømmelighed > Upassende inhold eller opførsel i en 'PG' region" name="Indecency__Mature_content_in_PG_region"/> + <combo_box.item label="Usømmelighed > Upassende inhold eller opførsel i en 'Mature' region" name="Indecency__Inappropriate_content_in_Mature_region"/> + <combo_box.item label="Krænkelse af intellektuelle ejendomsrettigheder > Indholds fjernelse" name="Intellectual_property_infringement_Content_Removal"/> + <combo_box.item label="Krænkelse af intellektuelle ejendomsrettigheder > CopyBot eller omgåelse af rettighedsbeskyttelse" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/> + <combo_box.item label="Intolerance" name="Intolerance"/> + <combo_box.item label="Land > Misbrug af sandkasse resourcer" name="Land__Abuse_of_sandbox_resources"/> + <combo_box.item label="Land > Overgreb > Objekter/teksturer" name="Land__Encroachment__Objects_textures"/> + <combo_box.item label="Land > Overgreb > Partikler" name="Land__Encroachment__Particles"/> + <combo_box.item label="Land > Overgreb > Træer/planter" name="Land__Encroachment__Trees_plants"/> + <combo_box.item label="Væddemål/gambling" name="Wagering_gambling"/> + <combo_box.item label="Andet" name="Other"/> + </combo_box> + <text name="abuser_name_title"> + Udøvers navn: + </text> + <button label="Vælg beboer" label_selected="" name="select_abuser" tool_tip="Vælg navnet på udøveren fra denne liste"/> + <text name="abuser_name_title2"> + Sted for misbrug/overgreb: + </text> + <text name="sum_title"> + Opsummering: + </text> + <text name="dscr_title"> + Detaljer: + </text> + <text name="bug_aviso"> + Vær venligst så præcis som muligt + </text> + <text name="incomplete_title"> + * Note: Ufuldstændige rapporter vil ikke blive undersøgt. + </text> + <button label="Rapporter misbrug" label_selected="Rapporter misbrug" name="send_btn"/> + <button label="Annullér" label_selected="Annullér" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/da/floater_script_debug_panel.xml new file mode 100644 index 0000000000..e70a30fa24 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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/da/floater_script_preview.xml b/indra/newview/skins/default/xui/da/floater_script_preview.xml index ede277bbd2..1e8d869716 100644 --- a/indra/newview/skins/default/xui/da/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/da/floater_script_preview.xml @@ -1,5 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="preview lsl text" title="SCRIPT: ROTATION SCRIPT"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="preview lsl text" title="SCRIPT: ROTATIONS SCRIPT"> + <floater.string name="Title"> + Script: [NAME] + </floater.string> <text name="desc txt"> Beskrivelse: </text> 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 3f54c92426..1ff5494458 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_script_search.xml b/indra/newview/skins/default/xui/da/floater_script_search.xml index 62f311be6e..f1605cac34 100644 --- a/indra/newview/skins/default/xui/da/floater_script_search.xml +++ b/indra/newview/skins/default/xui/da/floater_script_search.xml @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="script search" title="SCRIPT SØGNING"> - <check_box label="Store/små bogstaver har ingen betydning" name="case_text" /> - <button label="Søg" label_selected="Søg" name="search_btn" /> - <button label="Erstat" label_selected="Erstat" name="replace_btn" /> - <button label="Erstat alle" label_selected="Erstat alle" name="replace_all_btn" /> + <check_box label="Store/små bogstaver har ingen betydning" name="case_text"/> + <button label="Søg" label_selected="Søg" name="search_btn"/> + <button label="Erstat" label_selected="Erstat" name="replace_btn"/> + <button label="Erstat alle" label_selected="Erstat alle" name="replace_all_btn"/> <text name="txt"> Søg </text> 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 0000000000..80a30b1aa1 --- /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 7fa868a3a9..fe0d31c6c3 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_sell_land.xml b/indra/newview/skins/default/xui/da/floater_sell_land.xml index fcbe0abe08..873e6d7995 100644 --- a/indra/newview/skins/default/xui/da/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/da/floater_sell_land.xml @@ -1,62 +1,65 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="sell land" title="SÆLG LAND"> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <text name="info_parcel_label"> - Parcel: - </text> - <text name="info_parcel"> - PARCEL NAME - </text> - <text name="info_size_label"> - Størrelse: - </text> - <text name="info_size"> - [AREA] m² - </text> - <text name="info_action"> - Sælg denne parcel: - </text> - <text name="price_label"> - Sæt en pris: - </text> - <text name="price_text"> - Vælg en passende pris for jorden. - </text> - <text name="price_ld"> - L$ - </text> - <text name="price_per_m"> - (L$[PER_METER] pr. kvadratmeter) - </text> - <text name="sell_to_label"> - Sælg denne jord til: - </text> - <text name="sell_to_text"> - Vælg om du vil sælge til hvem som helst eller en specifik køber. - </text> - <combo_box name="sell_to"> - <combo_box.item name="--selectone--" label="Vælg --" /> - <combo_box.item name="Anyone" label="Alle" /> - <combo_box.item name="Specificuser:" label="Specifik bruger:" /> - </combo_box> - <button label="Vælg..." name="sell_to_select_agent" /> - <text name="sell_objects_label"> - Sælg objekter sammen med jorden? - </text> - <text name="sell_objects_text"> - Dine objekter der kan videregives sælges med jorden. - </text> - <radio_group name="sell_objects"> - <radio_item name="no" label="Nej, behold ejerskab til objekterne" /> - <radio_item name="yes" label="Ja, sælg objekter med jorden" /> - </radio_group> - <button label="Vis objekter" name="show_objects" /> - <text name="nag_message_label"> - HUSK: Alle salg er endegyldige. - </text> - <button label="Sæt land til salg" name="sell_btn" /> - <button label="Annullér" name="cancel_btn" /> - </panel> - </scroll_container> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text name="info_parcel_label"> + Parcel: + </text> + <text name="info_parcel"> + PARCEL + </text> + <text name="info_size_label"> + Størrelse: + </text> + <text name="info_size"> + [AREA] m² + </text> + <text name="info_action"> + For at sælge: + </text> + <text name="price_label"> + 1. Sæt en pris: + </text> + <text name="price_text"> + Vælg en passende pris for jorden. + </text> + <text name="price_ld"> + L$ + </text> + <line_editor name="price"> + 0 + </line_editor> + <text name="price_per_m"> + (L$[PER_METER] pr. m²) + </text> + <text name="sell_to_label"> + 2. Sælg denne parcel til: + </text> + <text name="sell_to_text"> + Vælg om du vil sælge til hvem som helst eller en specifik køber. + </text> + <combo_box name="sell_to"> + <combo_box.item label="- Vælg -" name="--selectone--"/> + <combo_box.item label="Enhver" name="Anyone"/> + <combo_box.item label="Specifik person:" name="Specificuser:"/> + </combo_box> + <button label="Vælg" name="sell_to_select_agent"/> + <text name="sell_objects_label"> + 3. Sælg objekter sammen med jorden? + </text> + <text name="sell_objects_text"> + Objekter der kan vidergives og som tilhører ejer af land på parcel vil skifte ejerskab + </text> + <radio_group name="sell_objects"> + <radio_item label="Nej, behold ejerskab til objekter" name="no"/> + <radio_item label="Ja, sælg objekter med jorden" name="yes"/> + </radio_group> + <button label="Vis objekter" name="show_objects"/> + <text name="nag_message_label"> + HUSK: Alle salg er endegyldige. + </text> + <button label="Sæt land til salg" name="sell_btn"/> + <button label="Annullér" name="cancel_btn"/> + </panel> + </scroll_container> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_settings_debug.xml b/indra/newview/skins/default/xui/da/floater_settings_debug.xml index c1429ed3a3..41cf100d94 100644 --- a/indra/newview/skins/default/xui/da/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/da/floater_settings_debug.xml @@ -1,13 +1,13 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="settings_debug" title="TEKNISKE INDSTILLINGER"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="settings_debug" title="DEBUG INDSTILLINGER"> <combo_box name="boolean_combo"> - <combo_box.item name="TRUE" label="TRUE (Valgt)" /> - <combo_box.item name="FALSE" label="FALSE (Fravalgt)" /> + <combo_box.item label="SANDT" name="TRUE"/> + <combo_box.item label="FALSK" name="FALSE"/> </combo_box> - <color_swatch label="Farve" name="color_swatch" /> - <spinner label="x" name="val_spinner_1" /> - <spinner label="x" name="val_spinner_2" /> - <spinner label="x" name="val_spinner_3" /> - <spinner label="x" name="val_spinner_4" /> - <button label="Sæt til standard" name="default_btn" /> + <color_swatch label="Farve" 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"/> + <spinner label="x" name="val_spinner_4"/> + <button label="Sæt til standard" name="default_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_snapshot.xml b/indra/newview/skins/default/xui/da/floater_snapshot.xml index 3eed869db4..5e8c64e21f 100644 --- a/indra/newview/skins/default/xui/da/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/da/floater_snapshot.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Snapshot" title="SE FOTO"> +<floater name="Snapshot" title="FOTO FORHÅNDSVINSNING"> <text name="type_label"> Hvor skal foto hen? </text> <radio_group label="Snapshot type" name="snapshot_type_radio"> - <radio_item name="postcard" label="Send via e-mail" /> - <radio_item name="texture" label="Gem i din beholdning (L$[AMOUNT])" /> - <radio_item name="local" label="Gem på din computer" /> + <radio_item label="Send via e-mail" name="postcard"/> + <radio_item label="Gem i din beholdning (L$[AMOUNT])" name="texture"/> + <radio_item label="Gem på din computer" name="local"/> </radio_group> <text name="file_size_label"> Fil størrelse: [SIZE] KB @@ -15,12 +15,12 @@ <button label="Send" name="send_btn"/> <button label="Gem (L$[AMOUNT])" name="upload_btn"/> <flyout_button label="Gem" name="save_btn" tool_tip="Gem billede i på din computer"> - <flyout_button_item name="save_item" label="Gem"/> - <flyout_button_item name="saveas_item" label="Gem som..."/> + <flyout_button_item label="Gem" name="save_item"/> + <flyout_button_item label="Gem som..." name="saveas_item"/> </flyout_button> <button label="Annullér" name="discard_btn"/> - <button label="Mere >>" name="more_btn" tool_tip="Avancerede valg"/> - <button label="<< Mindre" name="less_btn" tool_tip="Avancerede valg"/> + <button label="Mere >>" name="more_btn" tool_tip="Avancerede muligheder"/> + <button label="<< Mindre" name="less_btn" tool_tip="Avancerede muligheder"/> <text name="type_label2"> Størrelse </text> @@ -28,45 +28,45 @@ Format </text> <combo_box label="Opløsning" name="postcard_size_combo"> - <combo_box.item name="CurrentWindow" label="Aktuelle vindue"/> - <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="Manuel"/> + <combo_box.item label="Aktuelle vindue" 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="Manuel" name="Custom"/> </combo_box> <combo_box label="Opløsning" name="texture_size_combo"> - <combo_box.item name="CurrentWindow" label="Aktuelle vindue"/> - <combo_box.item name="Small(128x128)" label="Lille (128x128)"/> - <combo_box.item name="Medium(256x256)" label="Medium (256x256)"/> - <combo_box.item name="Large(512x512)" label="Stor (512x512)"/> - <combo_box.item name="Custom" label="Manuel"/> + <combo_box.item label="Aktuelle vindue" name="CurrentWindow"/> + <combo_box.item label="Lille (128x128)" name="Small(128x128)"/> + <combo_box.item label="Medium (256x256)" name="Medium(256x256)"/> + <combo_box.item label="Stor (512x512)" name="Large(512x512)"/> + <combo_box.item label="Manuel" name="Custom"/> </combo_box> <combo_box label="Opløsning" name="local_size_combo"> - <combo_box.item name="CurrentWindow" label="Aktuelle vindue"/> - <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="Manuelt"/> + <combo_box.item label="Aktuelle vindue" 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="Manuelt" name="Custom"/> </combo_box> <combo_box label="Fil-format" name="local_format_combo" width="76"> - <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="Bredde" name="snapshot_width" label_width="41" width="101"/> - <spinner label="Højde" name="snapshot_height" label_width="32" width="92" left="117"/> + <spinner label="Bredde" label_width="41" name="snapshot_width" width="101"/> + <spinner label="Højde" label_width="32" left="117" name="snapshot_height" width="92"/> <check_box label="Fasthold proportioner" name="keep_aspect_check"/> <slider label="Billed-kvalitet" name="image_quality_slider"/> <text name="layer_type_label"> Benyt: </text> <combo_box label="Billedlag" name="layer_types"> - <combo_box.item name="Colors" label="Farver"/> - <combo_box.item name="Depth" label="Dybde"/> - <combo_box.item name="ObjectMattes" label="Materinger"/> + <combo_box.item label="Farver" name="Colors"/> + <combo_box.item label="Dybde" name="Depth"/> + <combo_box.item label="Materinger" name="ObjectMattes"/> </combo_box> <check_box label="Vis brugerflade på foto" name="ui_check"/> <check_box label="Vis HUD objekter på foto" name="hud_check"/> 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 e54bdf4f42..5f74f28a23 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_stats.xml b/indra/newview/skins/default/xui/da/floater_stats.xml index 06b795c3b9..fe3fa9626e 100644 --- a/indra/newview/skins/default/xui/da/floater_stats.xml +++ b/indra/newview/skins/default/xui/da/floater_stats.xml @@ -1,71 +1,71 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Statistics" title="STATISTIK">
- <scroll_container name="statistics_scroll">
- <container_view name="statistics_view">
- <stat_view label="Grundlæggende" name="basic">
- <stat_bar label="FPS" name="fps"/>
- <stat_bar label="Båndbredde" name="bandwidth"/>
- <stat_bar label="Pakketab" name="packet_loss"/>
- <stat_bar label="Ping Sim" name="ping"/>
- </stat_view>
- <stat_view label="Avanceret" name="advanced">
- <stat_view label="Render" name="render">
- <stat_bar label="KTris tegnet" name="ktrisframe"/>
- <stat_bar label="KTris tegnet" name="ktrissec"/>
- <stat_bar label="Total antal objekter" name="objs"/>
- <stat_bar label="Nye objekter" name="newobjs"/>
- </stat_view>
- <stat_view label="Texture" name="texture">
- <stat_bar label="Count" name="numimagesstat"/>
- <stat_bar label="Raw Count" name="numrawimagesstat"/>
- <stat_bar label="GL Mem" name="gltexmemstat"/>
- <stat_bar label="Formatted Mem" name="formattedmemstat"/>
- <stat_bar label="Raw Mem" name="rawmemstat"/>
- <stat_bar label="Bound Mem" name="glboundmemstat"/>
- </stat_view>
- <stat_view label="Netværk" name="network">
- <stat_bar label="Packets In" name="packetsinstat"/>
- <stat_bar label="Packets Out" name="packetsoutstat"/>
- <stat_bar label="Objekter" name="objectkbitstat"/>
- <stat_bar label="Texture" name="texturekbitstat"/>
- <stat_bar label="Asset" name="assetkbitstat"/>
- <stat_bar label="Layers" name="layerskbitstat"/>
- <stat_bar label="Actual In" name="actualinkbitstat"/>
- <stat_bar label="Actual Out" name="actualoutkbitstat"/>
- <stat_bar label="VFS Pending Ops" name="vfspendingoperations"/>
- </stat_view>
- </stat_view>
- <stat_view label="Simulator" name="sim">
- <stat_bar label="Time Dilation" name="simtimedilation"/>
- <stat_bar label="Sim FPS" name="simfps"/>
- <stat_bar label="Physics FPS" name="simphysicsfps"/>
- <stat_view label="Physics Details" name="physicsdetail">
- <stat_bar label="Pinned Objects" name="physicspinnedtasks"/>
- <stat_bar label="Low LOD Objects" name="physicslodtasks"/>
- <stat_bar label="Memory Allocated" name="physicsmemoryallocated"/>
- <stat_bar label="Agent Updates/Sec" name="simagentups"/>
- <stat_bar label="Main Agents" name="simmainagents"/>
- <stat_bar label="Child Agents" name="simchildagents"/>
- <stat_bar label="Objects" name="simobjects"/>
- <stat_bar label="Active Objects" name="simactiveobjects"/>
- <stat_bar label="Active Scripts" name="simactivescripts"/>
- <stat_bar label="Script Events" name="simscripteps"/>
- <stat_bar label="Packets In" name="siminpps"/>
- <stat_bar label="Packets Out" name="simoutpps"/>
- <stat_bar label="Pending Downloads" name="simpendingdownloads"/>
- <stat_bar label="Pending Uploads" name="simpendinguploads"/>
- <stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/>
- </stat_view>
- <stat_view label="Time (ms)" name="simperf">
- <stat_bar label="Total Frame Time" name="simframemsec"/>
- <stat_bar label="Net Time" name="simnetmsec"/>
- <stat_bar label="Physics Time" name="simsimphysicsmsec"/>
- <stat_bar label="Simulation Time" name="simsimothermsec"/>
- <stat_bar label="Agent Time" name="simagentmsec"/>
- <stat_bar label="Images Time" name="simimagesmsec"/>
- <stat_bar label="Script Time" name="simscriptmsec"/>
- </stat_view>
- </stat_view>
- </container_view>
- </scroll_container>
-</floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Statistics" title="STATISTIK"> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="Grundlæggende" name="basic"> + <stat_bar label="FPS" name="fps"/> + <stat_bar label="Båndbredde" name="bandwidth"/> + <stat_bar label="Pakketab" name="packet_loss"/> + <stat_bar label="Ping Sim" name="ping"/> + </stat_view> + <stat_view label="Avanceret" name="advanced"> + <stat_view label="Render" name="render"> + <stat_bar label="KTris tegnet" name="ktrisframe"/> + <stat_bar label="KTris tegnet" name="ktrissec"/> + <stat_bar label="Total antal objekter" name="objs"/> + <stat_bar label="Nye objekter" name="newobjs"/> + </stat_view> + <stat_view label="Texture" name="texture"> + <stat_bar label="Count" name="numimagesstat"/> + <stat_bar label="Raw Count" name="numrawimagesstat"/> + <stat_bar label="GL Mem" name="gltexmemstat"/> + <stat_bar label="Formatted Mem" name="formattedmemstat"/> + <stat_bar label="Raw Mem" name="rawmemstat"/> + <stat_bar label="Bound Mem" name="glboundmemstat"/> + </stat_view> + <stat_view label="Netværk" name="network"> + <stat_bar label="Packets In" name="packetsinstat"/> + <stat_bar label="Packets Out" name="packetsoutstat"/> + <stat_bar label="Objekter" name="objectkbitstat"/> + <stat_bar label="Texture" name="texturekbitstat"/> + <stat_bar label="Asset" name="assetkbitstat"/> + <stat_bar label="Layers" name="layerskbitstat"/> + <stat_bar label="Actual In" name="actualinkbitstat"/> + <stat_bar label="Actual Out" name="actualoutkbitstat"/> + <stat_bar label="VFS Pending Ops" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="Simulator" name="sim"> + <stat_bar label="Time Dilation" name="simtimedilation"/> + <stat_bar label="Sim FPS" name="simfps"/> + <stat_bar label="Physics FPS" name="simphysicsfps"/> + <stat_view label="Physics Details" name="physicsdetail"> + <stat_bar label="Pinned Objects" name="physicspinnedtasks"/> + <stat_bar label="Low LOD Objects" name="physicslodtasks"/> + <stat_bar label="Memory Allocated" name="physicsmemoryallocated"/> + <stat_bar label="Agent Updates/Sec" name="simagentups"/> + <stat_bar label="Main Agents" name="simmainagents"/> + <stat_bar label="Child Agents" name="simchildagents"/> + <stat_bar label="Objects" name="simobjects"/> + <stat_bar label="Active Objects" name="simactiveobjects"/> + <stat_bar label="Active Scripts" name="simactivescripts"/> + <stat_bar label="Script Events" name="simscripteps"/> + <stat_bar label="Packets In" name="siminpps"/> + <stat_bar label="Packets Out" name="simoutpps"/> + <stat_bar label="Pending Downloads" name="simpendingdownloads"/> + <stat_bar label="Pending Uploads" name="simpendinguploads"/> + <stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/> + </stat_view> + <stat_view label="Time (ms)" name="simperf"> + <stat_bar label="Total Frame Time" name="simframemsec"/> + <stat_bar label="Net Time" name="simnetmsec"/> + <stat_bar label="Physics Time" name="simsimphysicsmsec"/> + <stat_bar label="Simulation Time" name="simsimothermsec"/> + <stat_bar label="Agent Time" name="simagentmsec"/> + <stat_bar label="Images Time" name="simimagesmsec"/> + <stat_bar label="Script Time" name="simscriptmsec"/> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_sys_well.xml b/indra/newview/skins/default/xui/da/floater_sys_well.xml new file mode 100644 index 0000000000..b5cecf93e9 --- /dev/null +++ b/indra/newview/skins/default/xui/da/floater_sys_well.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="sys_well_window" title="BESKEDER"> + <string name="title_im_well_window"> + IM SESSIONER + </string> + <string name="title_notification_well_window"> + BESKEDER + </string> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_telehub.xml b/indra/newview/skins/default/xui/da/floater_telehub.xml index bf31da9515..5a0e89aa98 100644 --- a/indra/newview/skins/default/xui/da/floater_telehub.xml +++ b/indra/newview/skins/default/xui/da/floater_telehub.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="telehub" title="TELEHUB"> <text name="status_text_connected"> Telehub forbundet til objekt [OBJECT] @@ -12,17 +12,14 @@ <text name="help_text_not_connected"> 230;lg objekt og klik 'Forbind telehub'. </text> - <button label="Forbind telehub" name="connect_btn" /> - <button label="Afslut" name="disconnect_btn" /> + <button label="Forbind telehub" name="connect_btn"/> + <button label="Afslut" name="disconnect_btn"/> <text name="spawn_points_text" width="300"> Ankomst punkter (positioner, ikke objekter): </text> - <button label="Tilføj punkt" name="add_spawn_point_btn" /> - <button label="Fjern punkt" name="remove_spawn_point_btn" /> + <button label="Tilføj punkt" name="add_spawn_point_btn"/> + <button label="Fjern punkt" name="remove_spawn_point_btn"/> <text name="spawn_point_help"> - Vælg objekt og klik på 'Tilføj punkt'for at angive -position. Du kan derefter flytte eller slette -objektet. Positioner er i forhold til telehub center. -Vælg emne i listen for at vise position i verden. + Vælg objekt og klik på 'Tilføj punkt' for at angive position. Du kan derefter flytte eller slette objektet. Positioner er i forhold til telehub center. Vælg emne i listen for at vise position i verden. </text> </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 4167e2938a..00b49a9df9 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 c3287bac84..77459aca67 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_top_objects.xml b/indra/newview/skins/default/xui/da/floater_top_objects.xml index 0cfbe77def..3f19350e30 100644 --- a/indra/newview/skins/default/xui/da/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/da/floater_top_objects.xml @@ -1,33 +1,33 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="top_objects" title="INDLÆSER..."> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="top_objects" title="Top objekter"> <text name="title_text"> Henter... </text> <scroll_list name="objects_list"> - <column label="Point" name="score" /> - <column label="Navn" name="name" /> - <column label="Ejer" name="owner" /> - <column label="Lokation" name="location" /> - <column label="Tid" name="time" /> - <column label="Mono tid" name="mono_time" /> + <column label="Point" name="score"/> + <column label="Navn" name="name"/> + <column label="Ejer" name="owner"/> + <column label="Lokation" name="location"/> + <column label="Tid" name="time"/> + <column label="Mono tid" name="mono_time"/> </scroll_list> <text name="id_text"> Objekt ID: </text> - <button label="Vis pejlelys" name="show_beacon_btn" /> + <button label="Vis pejlelys" name="show_beacon_btn"/> <text name="obj_name_text"> Objekt navn: </text> - <button label="Filter" name="filter_object_btn" /> + <button label="Filter" name="filter_object_btn"/> <text name="owner_name_text"> - Ejers navn: + Ejer: </text> - <button label="Filter" name="filter_owner_btn" /> - <button label="Returnér valgte" name="return_selected_btn" /> - <button label="Returnér alle" name="return_all_btn" /> - <button label="Afbryd valgte" name="disable_selected_btn" /> - <button label="Afbryd alle" name="disable_all_btn" /> - <button label="Genopfrisk" name="refresh_btn" /> + <button label="Filter" name="filter_owner_btn"/> + <button label="Returnér valgte" name="return_selected_btn"/> + <button label="Returnér alle" name="return_all_btn"/> + <button label="Afbryd valgte" name="disable_selected_btn"/> + <button label="Afbryd alle" name="disable_all_btn"/> + <button label="Genopfrisk" name="refresh_btn"/> <string name="top_scripts_title"> Mest krævende scripts </string> diff --git a/indra/newview/skins/default/xui/da/floater_tos.xml b/indra/newview/skins/default/xui/da/floater_tos.xml index 9a348ca7bf..77906f0f46 100644 --- a/indra/newview/skins/default/xui/da/floater_tos.xml +++ b/indra/newview/skins/default/xui/da/floater_tos.xml @@ -1,11 +1,10 @@ -<?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="Fortsæt" label_selected="Fortsæt" name="Continue" /> - <button label="Annullér" label_selected="Annullér" name="Cancel" /> - <check_box label="Jeg accepterer vilkårene for brug af tjenesten" name="agree_chk" /> + <button label="Fortsæt" label_selected="Fortsæt" name="Continue"/> + <button label="Annullér" label_selected="Annullér" name="Cancel"/> + <check_box label="Jeg accepterer vilkårene for brug af tjenesten" name="agree_chk"/> <text name="tos_heading"> - Læs venligst de almindelige bestemmelser og vilkår igennem, for at fortsætte til [SECOND_LIFE] -skal du acceptere vilkårene. + Læs venligst de almindelige bestemmelser og vilkår igennem, for at fortsætte til [SECOND LIFE] skal du acceptere vilkårene. </text> <text_editor name="tos_text"> TOS_TEXT 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 0000000000..8651851233 --- /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_water.xml b/indra/newview/skins/default/xui/da/floater_water.xml index 63880b4a69..103feaa879 100644 --- a/indra/newview/skins/default/xui/da/floater_water.xml +++ b/indra/newview/skins/default/xui/da/floater_water.xml @@ -1,32 +1,32 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Water Floater" title="AVANCERET OPSÆTNING AF VAND"> <text name="KeyFramePresetsText"> Vand opsætninger: </text> - <button label="Ny" label_selected="Ny" name="WaterNewPreset" /> - <button label="Gem" label_selected="Gem" name="WaterSavePreset" /> - <button label="Slet" label_selected="Slet" name="WaterDeletePreset" /> + <button label="Ny" label_selected="Ny" name="WaterNewPreset"/> + <button label="Gem" label_selected="Gem" name="WaterSavePreset"/> + <button label="Slet" label_selected="Slet" name="WaterDeletePreset"/> <tab_container name="Water Tabs"> <panel label="Opsætning" name="Settings"> <text name="BHText"> Vandtåge farve </text> - <button label="?" name="WaterFogColorHelp" /> - <color_swatch label="" name="WaterFogColor" tool_tip="Click to open Color Picker" /> + <button label="?" name="WaterFogColorHelp"/> + <color_swatch label="" name="WaterFogColor" tool_tip="Klik for at åbne farvevælger"/> <text name="WaterFogDensText"> Tåge tæthedskarakteristik </text> - <button label="?" name="WaterFogDensityHelp" /> - <slider label="" name="WaterFogDensity" /> + <button label="?" name="WaterFogDensityHelp"/> + <slider label="" name="WaterFogDensity"/> <text name="WaterUnderWaterFogModText"> Tilretning undervandståge </text> - <button label="?" name="WaterUnderWaterFogModHelp" /> - <slider label="" name="WaterUnderWaterFogMod" /> + <button label="?" name="WaterUnderWaterFogModHelp"/> + <slider label="" name="WaterUnderWaterFogMod"/> <text name="BDensText"> Lille bølge reflektionsskala </text> - <button label="?" name="WaterNormalScaleHelp" /> + <button label="?" name="WaterNormalScaleHelp"/> <text name="BHText2"> 1 </text> @@ -36,65 +36,65 @@ <text name="BHText4"> 3 </text> - <slider label="" name="WaterNormalScaleX" /> - <slider label="" name="WaterNormalScaleY" /> - <slider label="" name="WaterNormalScaleZ" /> + <slider label="" name="WaterNormalScaleX"/> + <slider label="" name="WaterNormalScaleY"/> + <slider label="" name="WaterNormalScaleZ"/> <text name="HDText"> Spredningsskala </text> - <button label="?" name="WaterFresnelScaleHelp" /> - <slider label="" name="WaterFresnelScale" /> + <button label="?" name="WaterFresnelScaleHelp"/> + <slider label="" name="WaterFresnelScale"/> <text name="FresnelOffsetText"> Spredning offset </text> - <button label="?" name="WaterFresnelOffsetHelp" /> - <slider label="" name="WaterFresnelOffset" /> + <button label="?" name="WaterFresnelOffsetHelp"/> + <slider label="" name="WaterFresnelOffset"/> <text name="DensMultText"> Lysbrydning fra oven </text> - <button label="?" name="WaterScaleAboveHelp" /> - <slider label="" name="WaterScaleAbove" /> + <button label="?" name="WaterScaleAboveHelp"/> + <slider label="" name="WaterScaleAbove"/> <text name="WaterScaleBelowText"> Lysbrydning fra neden </text> - <button label="?" name="WaterScaleBelowHelp" /> - <slider label="" name="WaterScaleBelow" /> + <button label="?" name="WaterScaleBelowHelp"/> + <slider label="" name="WaterScaleBelow"/> <text name="MaxAltText"> Udviskning </text> - <button label="?" name="WaterBlurMultiplierHelp" /> - <slider label="" name="WaterBlurMult" /> + <button label="?" name="WaterBlurMultiplierHelp"/> + <slider label="" name="WaterBlurMult"/> </panel> <panel label="Billede" name="Waves"> <text name="BHText"> Retning for store bølger </text> - <button label="?" name="WaterWave1Help" /> + <button label="?" name="WaterWave1Help"/> <text name="WaterWave1DirXText"> X </text> <text name="WaterWave1DirYText"> Y </text> - <slider label="" name="WaterWave1DirX" /> - <slider label="" name="WaterWave1DirY" /> + <slider label="" name="WaterWave1DirX"/> + <slider label="" name="WaterWave1DirY"/> <text name="BHText2"> Retning for små bølger </text> - <button label="?" name="WaterWave2Help" /> + <button label="?" name="WaterWave2Help"/> <text name="WaterWave2DirXText"> X </text> <text name="WaterWave2DirYText"> Y </text> - <slider label="" name="WaterWave2DirX" /> - <slider label="" name="WaterWave2DirY" /> + <slider label="" name="WaterWave2DirX"/> + <slider label="" name="WaterWave2DirY"/> <text name="BHText3"> Tekstur map </text> - <button label="?" name="WaterNormalMapHelp" /> - <texture_picker label="" name="WaterNormalMap" /> + <button label="?" name="WaterNormalMapHelp"/> + <texture_picker label="" name="WaterNormalMap"/> </panel> </tab_container> <string name="WLDefaultWaterNames"> diff --git a/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/da/floater_whitelist_entry.xml new file mode 100644 index 0000000000..d2f618579d --- /dev/null +++ b/indra/newview/skins/default/xui/da/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"> + Indtast en URL eller et URL mønster for at tilføje til listen med godkendte domæner + </text> + <line_editor name="whitelist_entry" tool_tip="Indtast en URL eller et URL mønster for at godkende side(r)"/> + <button label="OK" name="ok_btn"/> + <button label="Annullér" name="cancel_btn"/> +</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 62930716ce..137e8509a4 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 0000000000..1b85544303 --- /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 0000000000..486c5d8784 --- /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_object.xml b/indra/newview/skins/default/xui/da/inspect_object.xml new file mode 100644 index 0000000000..8cbcf6cac8 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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"> + Af [CREATOR] + </string> + <string name="CreatorAndOwner"> + af [CREATOR] +ejer [OWNER] + </string> + <string name="Price"> + L$[AMOUNT] + </string> + <string name="PriceFree"> + Gratis! + </string> + <string name="Touch"> + Berør + </string> + <string name="Sit"> + Sid + </string> + <button label="Køb" name="buy_btn"/> + <button label="Betal" name="pay_btn"/> + <button label="Tag kopi" name="take_free_copy_btn"/> + <button label="Berør" name="touch_btn"/> + <button label="Sid" name="sit_btn"/> + <button label="Åben" name="open_btn"/> + <icon name="secure_browsing" tool_tip="Sikker Browsing"/> + <button label="Mere" name="more_info_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 0000000000..a06452afe6 --- /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 0000000000..2cc23e27c7 --- /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 0000000000..306ae96d49 --- /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 0000000000..26b58ce1ab --- /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 0000000000..66d357e7e2 --- /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 0000000000..29620fca27 --- /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 0000000000..dbdeefeaff --- /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 0000000000..a4793e294c --- /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 0000000000..a9010e99b6 --- /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 0000000000..97fbec1ed1 --- /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 0000000000..45276adda4 --- /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 0000000000..f64a6ad455 --- /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 0000000000..b89d9a5789 --- /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 0000000000..6ebc40a8dd --- /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 0000000000..5b8089bfe0 --- /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 0000000000..c7bb2a9ead --- /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 0000000000..cfe455e21d --- /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.xml b/indra/newview/skins/default/xui/da/menu_inventory.xml index b24fd80607..376af507d0 100644 --- a/indra/newview/skins/default/xui/da/menu_inventory.xml +++ b/indra/newview/skins/default/xui/da/menu_inventory.xml @@ -1,82 +1,82 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="Popup">
- <menu_item_call label="Køb" name="Task Buy"/>
- <menu_item_call label="åben" name="Task Open"/>
- <menu_item_call label="Afspil" name="Task Play"/>
- <menu_item_call label="Egenskaber" name="Task Properties"/>
- <menu_item_call label="Omdøb" name="Task Rename"/>
- <menu_item_call label="Slet" name="Task Remove"/>
- <menu_item_call label="Tøm papirkurv" name="Empty Trash"/>
- <menu_item_call label="Tøm 'Lost and found'" name="Empty Lost And Found"/>
- <menu_item_call label="Ny mappe" name="New Folder"/>
- <menu_item_call label="Nyt script" name="New Script"/>
- <menu_item_call label="Ny note" name="New Note"/>
- <menu_item_call label="Ny bevægelse" name="New Gesture"/>
- <menu label="Nyt tøj" name="New Clothes">
- <menu_item_call label="Ny trøje" name="New Shirt"/>
- <menu_item_call label="Nye bukser" name="New Pants"/>
- <menu_item_call label="Nye sko" name="New Shoes"/>
- <menu_item_call label="Nye strømper" name="New Socks"/>
- <menu_item_call label="Ny jakke" name="New Jacket"/>
- <menu_item_call label="Ny nederdel" name="New Skirt"/>
- <menu_item_call label="Nye handsker" name="New Gloves"/>
- <menu_item_call label="Ny undertrøje" name="New Undershirt"/>
- <menu_item_call label="Nye underbukser" name="New Underpants"/>
- <menu_item_call label="Nyt alpha lag" name="New Alpha Mask"/>
- <menu_item_call label="Ny tatovering" name="New Tattoo"/>
- </menu>
- <menu label="Nye kropsdele" name="New Body Parts">
- <menu_item_call label="Ny figur" name="New Shape"/>
- <menu_item_call label="Nyt hud" name="New Skin"/>
- <menu_item_call label="Nyt hår" name="New Hair"/>
- <menu_item_call label="Nye øjne" name="New Eyes"/>
- </menu>
- <menu label="Ændre type" name="Change Type">
- <menu_item_call label="Standard" name="Default"/>
- <menu_item_call label="Handsker" name="Gloves"/>
- <menu_item_call label="Jakke" name="Jacket"/>
- <menu_item_call label="Bukser" name="Pants"/>
- <menu_item_call label="Kropsbygning" name="Shape"/>
- <menu_item_call label="Sko" name="Shoes"/>
- <menu_item_call label="Trøje" name="Shirt"/>
- <menu_item_call label="Nederdel" name="Skirt"/>
- <menu_item_call label="Underbukser" name="Underpants"/>
- <menu_item_call label="Undertrøje" name="Undershirt"/>
- </menu>
- <menu_item_call label="Teleport" name="Landmark Open"/>
- <menu_item_call label="åben" name="Animation Open"/>
- <menu_item_call label="åben" name="Sound Open"/>
- <menu_item_call label="Slet ting" name="Purge Item"/>
- <menu_item_call label="Genskab ting" name="Restore Item"/>
- <menu_item_call label="Gå til link" name="Goto Link"/>
- <menu_item_call label="åben" name="Open"/>
- <menu_item_call label="Egenskaber" name="Properties"/>
- <menu_item_call label="Omdøb" name="Rename"/>
- <menu_item_call label="Kopiér asset UUID" name="Copy Asset UUID"/>
- <menu_item_call label="Kopiér" name="Copy"/>
- <menu_item_call label="Indsæt" name="Paste"/>
- <menu_item_call label="Sæt ind som link" name="Paste As Link"/>
- <menu_item_call label="Slet" name="Delete"/>
- <menu_item_call label="Tag ting af" name="Take Off Items"/>
- <menu_item_call label="Tilføj til påklædning" name="Add To Outfit"/>
- <menu_item_call label="Erstat påklædning" name="Replace Outfit"/>
- <menu_item_call label="start konference chat" name="Conference Chat Folder"/>
- <menu_item_call label="Afspil" name="Sound Play"/>
- <menu_item_call label="Om landemærke" name="About Landmark"/>
- <menu_item_call label="Afspil offentligt" name="Animation Play"/>
- <menu_item_call label="Afspil lokalt" name="Animation Audition"/>
- <menu_item_call label="Send privat besked (IM)" name="Send Instant Message"/>
- <menu_item_call label="Tilbyd teleport..." name="Offer Teleport..."/>
- <menu_item_call label="start konference Chat" name="Conference Chat"/>
- <menu_item_call label="Aktivér" name="Activate"/>
- <menu_item_call label="Deaktivér" name="Deactivate"/>
- <menu_item_call label="Gem som" name="Save As"/>
- <menu_item_call label="Tag af dig selv" name="Detach From Yourself"/>
- <menu_item_call label="Tag på" name="Object Wear"/>
- <menu label="Vedhæft" name="Attach To"/>
- <menu label="Vedhæft til HUD" name="Attach To HUD"/>
- <menu_item_call label="Redigér" name="Wearable Edit"/>
- <menu_item_call label="Tag på" name="Wearable Wear"/>
- <menu_item_call label="Tag af" name="Take Off"/>
- <menu_item_call label="--ingen valg--" name="--no options--"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Køb" name="Task Buy"/> + <menu_item_call label="åben" name="Task Open"/> + <menu_item_call label="Afspil" name="Task Play"/> + <menu_item_call label="Egenskaber" name="Task Properties"/> + <menu_item_call label="Omdøb" name="Task Rename"/> + <menu_item_call label="Slet" name="Task Remove"/> + <menu_item_call label="Tøm papirkurv" name="Empty Trash"/> + <menu_item_call label="Tøm 'Lost and found'" name="Empty Lost And Found"/> + <menu_item_call label="Ny mappe" name="New Folder"/> + <menu_item_call label="Nyt script" name="New Script"/> + <menu_item_call label="Ny note" name="New Note"/> + <menu_item_call label="Ny bevægelse" name="New Gesture"/> + <menu label="Nyt tøj" name="New Clothes"> + <menu_item_call label="Ny trøje" name="New Shirt"/> + <menu_item_call label="Nye bukser" name="New Pants"/> + <menu_item_call label="Nye sko" name="New Shoes"/> + <menu_item_call label="Nye strømper" name="New Socks"/> + <menu_item_call label="Ny jakke" name="New Jacket"/> + <menu_item_call label="Ny nederdel" name="New Skirt"/> + <menu_item_call label="Nye handsker" name="New Gloves"/> + <menu_item_call label="Ny undertrøje" name="New Undershirt"/> + <menu_item_call label="Nye underbukser" name="New Underpants"/> + <menu_item_call label="Nyt alpha lag" name="New Alpha Mask"/> + <menu_item_call label="Ny tatovering" name="New Tattoo"/> + </menu> + <menu label="Nye kropsdele" name="New Body Parts"> + <menu_item_call label="Ny figur" name="New Shape"/> + <menu_item_call label="Nyt hud" name="New Skin"/> + <menu_item_call label="Nyt hår" name="New Hair"/> + <menu_item_call label="Nye øjne" name="New Eyes"/> + </menu> + <menu label="Ændre type" name="Change Type"> + <menu_item_call label="Standard" name="Default"/> + <menu_item_call label="Handsker" name="Gloves"/> + <menu_item_call label="Jakke" name="Jacket"/> + <menu_item_call label="Bukser" name="Pants"/> + <menu_item_call label="Kropsbygning" name="Shape"/> + <menu_item_call label="Sko" name="Shoes"/> + <menu_item_call label="Trøje" name="Shirt"/> + <menu_item_call label="Nederdel" name="Skirt"/> + <menu_item_call label="Underbukser" name="Underpants"/> + <menu_item_call label="Undertrøje" name="Undershirt"/> + </menu> + <menu_item_call label="Teleport" name="Landmark Open"/> + <menu_item_call label="åben" name="Animation Open"/> + <menu_item_call label="åben" name="Sound Open"/> + <menu_item_call label="Slet ting" name="Purge Item"/> + <menu_item_call label="Genskab ting" name="Restore Item"/> + <menu_item_call label="Gå til link" name="Goto Link"/> + <menu_item_call label="åben" name="Open"/> + <menu_item_call label="Egenskaber" name="Properties"/> + <menu_item_call label="Omdøb" name="Rename"/> + <menu_item_call label="Kopiér asset UUID" name="Copy Asset UUID"/> + <menu_item_call label="Kopiér" name="Copy"/> + <menu_item_call label="Indsæt" name="Paste"/> + <menu_item_call label="Sæt ind som link" name="Paste As Link"/> + <menu_item_call label="Slet" name="Delete"/> + <menu_item_call label="Tag ting af" name="Take Off Items"/> + <menu_item_call label="Tilføj til påklædning" name="Add To Outfit"/> + <menu_item_call label="Erstat påklædning" name="Replace Outfit"/> + <menu_item_call label="start konference chat" name="Conference Chat Folder"/> + <menu_item_call label="Afspil" name="Sound Play"/> + <menu_item_call label="Om landemærke" name="About Landmark"/> + <menu_item_call label="Afspil offentligt" name="Animation Play"/> + <menu_item_call label="Afspil lokalt" name="Animation Audition"/> + <menu_item_call label="Send privat besked (IM)" name="Send Instant Message"/> + <menu_item_call label="Tilbyd teleport..." name="Offer Teleport..."/> + <menu_item_call label="start konference Chat" name="Conference Chat"/> + <menu_item_call label="Aktivér" name="Activate"/> + <menu_item_call label="Deaktivér" name="Deactivate"/> + <menu_item_call label="Gem som" name="Save As"/> + <menu_item_call label="Tag af dig selv" name="Detach From Yourself"/> + <menu_item_call label="Tag på" name="Object Wear"/> + <menu label="Vedhæft" name="Attach To"/> + <menu label="Vedhæft til HUD" name="Attach To HUD"/> + <menu_item_call label="Redigér" name="Wearable Edit"/> + <menu_item_call label="Tag på" name="Wearable Wear"/> + <menu_item_call label="Tag af" name="Take Off"/> + <menu_item_call label="--ingen valg--" name="--no options--"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_inventory_add.xml b/indra/newview/skins/default/xui/da/menu_inventory_add.xml index b2a144c9f0..dc79e4109e 100644 --- a/indra/newview/skins/default/xui/da/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/da/menu_inventory_add.xml @@ -1,32 +1,32 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_inventory_add">
- <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] pr. fil)..." name="Bulk Upload"/>
- </menu>
- <menu_item_call label="Ny mappe" name="New Folder"/>
- <menu_item_call label="Nyt script" name="New Script"/>
- <menu_item_call label="Ny note" name="New Note"/>
- <menu_item_call label="Ny bevægelse" name="New Gesture"/>
- <menu label="Nyt tøj" name="New Clothes">
- <menu_item_call label="Ny trøje" name="New Shirt"/>
- <menu_item_call label="Nye bukser" name="New Pants"/>
- <menu_item_call label="Nye sko" name="New Shoes"/>
- <menu_item_call label="Nye strømper" name="New Socks"/>
- <menu_item_call label="Ny jakke" name="New Jacket"/>
- <menu_item_call label="Ny nederdel" name="New Skirt"/>
- <menu_item_call label="Nye handsker" name="New Gloves"/>
- <menu_item_call label="Ny undertrøje" name="New Undershirt"/>
- <menu_item_call label="Nye underbukser" name="New Underpants"/>
- <menu_item_call label="Nyt alpha lag" name="New Alpha"/>
- <menu_item_call label="Ny tatovering" name="New Tattoo"/>
- </menu>
- <menu label="Nye kropsdele" name="New Body Parts">
- <menu_item_call label="Ny kropsbygning" name="New Shape"/>
- <menu_item_call label="Ny hud" name="New Skin"/>
- <menu_item_call label="Nyt hår" name="New Hair"/>
- <menu_item_call label="Nye øjne" name="New Eyes"/>
- </menu>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_inventory_add"> + <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] pr. fil)..." name="Bulk Upload"/> + </menu> + <menu_item_call label="Ny mappe" name="New Folder"/> + <menu_item_call label="Nyt script" name="New Script"/> + <menu_item_call label="Ny note" name="New Note"/> + <menu_item_call label="Ny bevægelse" name="New Gesture"/> + <menu label="Nyt tøj" name="New Clothes"> + <menu_item_call label="Ny trøje" name="New Shirt"/> + <menu_item_call label="Nye bukser" name="New Pants"/> + <menu_item_call label="Nye sko" name="New Shoes"/> + <menu_item_call label="Nye strømper" name="New Socks"/> + <menu_item_call label="Ny jakke" name="New Jacket"/> + <menu_item_call label="Ny nederdel" name="New Skirt"/> + <menu_item_call label="Nye handsker" name="New Gloves"/> + <menu_item_call label="Ny undertrøje" name="New Undershirt"/> + <menu_item_call label="Nye underbukser" name="New Underpants"/> + <menu_item_call label="Nyt alpha lag" name="New Alpha"/> + <menu_item_call label="Ny tatovering" name="New Tattoo"/> + </menu> + <menu label="Nye kropsdele" name="New Body Parts"> + <menu_item_call label="Ny kropsbygning" name="New Shape"/> + <menu_item_call label="Ny hud" name="New Skin"/> + <menu_item_call label="Nyt hår" name="New Hair"/> + <menu_item_call label="Nye øjne" name="New Eyes"/> + </menu> +</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 0000000000..e643498822 --- /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 0000000000..1548f18f89 --- /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 0000000000..3cf2ffe375 --- /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 9d9dcd4b2e..0942f1b807 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 2a711dc5be..667638c529 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 0000000000..c04206824a --- /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 0000000000..be532ad406 --- /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 0000000000..0714b67ec3 --- /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 0000000000..08aeb633b6 --- /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 0000000000..44a016026c --- /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 0000000000..525450f23f --- /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 0000000000..0b9a791530 --- /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 0000000000..224190149b --- /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 0000000000..92c6d2c960 --- /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 0000000000..2f35ff3c92 --- /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 0000000000..d081f637f2 --- /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.xml b/indra/newview/skins/default/xui/da/menu_picks.xml index a47ef49ca0..81ee900773 100644 --- a/indra/newview/skins/default/xui/da/menu_picks.xml +++ b/indra/newview/skins/default/xui/da/menu_picks.xml @@ -1,8 +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="Redigér" name="pick_edit"/>
- <menu_item_call label="Teleportér" name="pick_teleport"/>
- <menu_item_call label="Vis på kort" name="pick_map"/>
- <menu_item_call label="Slet" name="pick_delete"/>
-</context_menu>
+<?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="Redigér" name="pick_edit"/> + <menu_item_call label="Teleportér" name="pick_teleport"/> + <menu_item_call label="Vis på kort" name="pick_map"/> + <menu_item_call label="Slet" name="pick_delete"/> +</context_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 0000000000..d95071fbbb --- /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 0000000000..b87964ac14 --- /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 0000000000..7ad2253550 --- /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 0000000000..3ee3c02fb1 --- /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_places_gear_landmark.xml b/indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml index ed00c91508..21f425c49d 100644 --- a/indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml +++ b/indra/newview/skins/default/xui/da/menu_places_gear_landmark.xml @@ -1,18 +1,18 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
- <menu_item_call label="Teleportér" name="teleport"/>
- <menu_item_call label="Mere information" name="more_info"/>
- <menu_item_call label="Vis på kort" name="show_on_map"/>
- <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 landemærke" name="copy_landmark"/>
- <menu_item_call label="Kopiér SLurl" name="copy_slurl"/>
- <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="Åben 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_item_call label="Opret favorit" name="create_pick"/>
-</menu>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_ladmark_gear"> + <menu_item_call label="Teleportér" name="teleport"/> + <menu_item_call label="Mere information" name="more_info"/> + <menu_item_call label="Vis på kort" name="show_on_map"/> + <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 landemærke" name="copy_landmark"/> + <menu_item_call label="Kopiér SLurl" name="copy_slurl"/> + <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="Åben 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_item_call label="Opret favorit" name="create_pick"/> +</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 0000000000..58fbc62643 --- /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 ef5cfd7200..a9302e111e 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 0000000000..a1c25fea69 --- /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 0000000000..dbaec62087 --- /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 0000000000..c4d4bb4b5b --- /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 0000000000..3ff31ea232 --- /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 0000000000..491586f3b4 --- /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 0000000000..c776159b0a --- /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 0000000000..4398777a39 --- /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 0000000000..9a7de23e06 --- /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 0000000000..ff4a4d5174 --- /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 0000000000..e27cf84959 --- /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 0000000000..0f21e14f66 --- /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 0000000000..dd25db2aa7 --- /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 0000000000..8d84a138bb --- /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 0000000000..e0ca7b920d --- /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 6a75e27381..ec0631d54f 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_linux.xml b/indra/newview/skins/default/xui/da/mime_types_linux.xml new file mode 100644 index 0000000000..69a0fb23f6 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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 indhold + </label> + <tooltip name="web_tooltip"> + Dette sted har ikke noget 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 er en film der kan afspilles her + </tooltip> + <playtip name="movie_playtip"> + Afspil film + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Billede + </label> + <tooltip name="image_tooltip"> + Der er et billede på dette sted + </tooltip> + <playtip name="image_playtip"> + Vis stedets billede + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Lyd + </label> + <tooltip name="audio_tooltip"> + Der er lyd på dette sted + </tooltip> + <playtip name="audio_playtip"> + Afspil lyden for dette sted + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Realtids 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 Lyd/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"> + Hjemmeside (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"> + Hjemmeside + </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/mime_types_mac.xml b/indra/newview/skins/default/xui/da/mime_types_mac.xml new file mode 100644 index 0000000000..bd9981b045 --- /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 42f55d4678..42eac1be7a 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_active_object_row.xml b/indra/newview/skins/default/xui/da/panel_active_object_row.xml new file mode 100644 index 0000000000..9c27ea7fe2 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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"> + Ukendt objekt + </string> + <text name="object_name"> + Unavngivet objekt + </text> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/da/panel_adhoc_control_panel.xml new file mode 100644 index 0000000000..ab2e7a6e31 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="Opkald" name="call_btn"/> + <button label="Forlad samtale" name="end_call_btn"/> + <button label="Stemmekontroller" name="voice_ctrls_btn"/> + </panel> +</panel> 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 0000000000..a9d5ba73ac --- /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_block_list_sidetray.xml b/indra/newview/skins/default/xui/da/panel_block_list_sidetray.xml index d16f7535fc..986a4131de 100644 --- a/indra/newview/skins/default/xui/da/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/da/panel_block_list_sidetray.xml @@ -1,10 +1,10 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="block_list_panel">
- <text name="title_text">
- Blokérede avatarer
- </text>
- <scroll_list name="blocked" tool_tip="Vis liste over blokerede avatarer"/>
- <button label="Blokér beboer..." label_selected="Blokér beboer..." name="Block resident..." tool_tip="Vælg en beboer der skal blokeres"/>
- <button label="Blokér objekt via navn..." label_selected="Blokér objekt via navn..." name="Block object by name..."/>
- <button label="Fjern blokering" label_selected="Fjern blokering" name="Unblock" tool_tip="Fjern beboer fra liste med blokeringer"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="block_list_panel"> + <text name="title_text"> + Blokérede avatarer + </text> + <scroll_list name="blocked" tool_tip="Vis liste over blokerede avatarer"/> + <button label="Blokér beboer..." label_selected="Blokér beboer..." name="Block resident..." tool_tip="Vælg en beboer der skal blokeres"/> + <button label="Blokér objekt via navn..." label_selected="Blokér objekt via navn..." name="Block object by name..."/> + <button label="Fjern blokering" label_selected="Fjern blokering" name="Unblock" tool_tip="Fjern beboer fra liste med blokeringer"/> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_bottomtray.xml b/indra/newview/skins/default/xui/da/panel_bottomtray.xml new file mode 100644 index 0000000000..2085840bb5 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_bottomtray.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="bottom_tray"> + <string name="SpeakBtnToolTip"> + Slukker/tænder mikrofon + </string> + <string name="VoiceControlBtnToolTip"> + Skjuler/viser stemme kontrol panel + </string> + <layout_stack name="toolbar_stack"> + <layout_panel name="gesture_panel"> + <gesture_combo_box label="Bevægelse" name="Gesture" tool_tip="Skjuler/viser bevægelser"/> + </layout_panel> + <layout_panel name="movement_panel"> + <button label="Flyt" name="movement_btn" tool_tip="Vis/skjul bevægelseskontroller"/> + </layout_panel> + <layout_panel name="cam_panel"> + <button label="Vis" name="camera_btn" tool_tip="Vis/Skjul kamerakontroller"/> + </layout_panel> + <layout_panel name="snapshot_panel"> + <button label="" name="snapshots" tool_tip="Tag foto"/> + </layout_panel> + </layout_stack> +</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 0000000000..a9cce7bf45 --- /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_alpha.xml b/indra/newview/skins/default/xui/da/panel_edit_alpha.xml new file mode 100644 index 0000000000..3826e8a228 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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 - nedre" name="Lower Alpha" tool_tip="Klik for at vælge et billede"/> + <texture_picker label="Alpha - øvre" name="Upper Alpha" tool_tip="Klik for at vælge et billede"/> + <texture_picker label="Alpha - hoved" name="Head Alpha" tool_tip="Klik for at vælge et billede"/> + <texture_picker label="Alpha - øje" name="Eye Alpha" tool_tip="Klik for at vælge et billede"/> + <texture_picker label="Alpha - hår" name="Hair Alpha" tool_tip="Klik for at vælge et billede"/> + </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 0000000000..18689105ae --- /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_eyes.xml b/indra/newview/skins/default/xui/da/panel_edit_eyes.xml new file mode 100644 index 0000000000..9c0d77c370 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="Iris" name="Iris" tool_tip="Klik for at vælge billede"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="eyes_main_tab" title="Øjne"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_gloves.xml b/indra/newview/skins/default/xui/da/panel_edit_gloves.xml new file mode 100644 index 0000000000..1d3ba061bc --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="Stof" name="Fabric" tool_tip="Klik for at vælge bilede"/> + <color_swatch label="Farve/nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="gloves_main_tab" title="Handsker"/> + </accordion> +</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 0000000000..14511d51d5 --- /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_jacket.xml b/indra/newview/skins/default/xui/da/panel_edit_jacket.xml new file mode 100644 index 0000000000..4c9973c0bd --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="Stof foroven" name="Upper Fabric" tool_tip="Klik for at vælge et billede"/> + <texture_picker label="Stof forneden" name="Lower 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="jacket_main_tab" title="Jakke"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_pants.xml b/indra/newview/skins/default/xui/da/panel_edit_pants.xml new file mode 100644 index 0000000000..bcb1450258 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="Stof" name="Fabric" tool_tip="Klik for at vælge et bilede"/> + <color_swatch label="Farve/Nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="pants_main_tab" title="Bukser"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_pick.xml b/indra/newview/skins/default/xui/da/panel_edit_pick.xml new file mode 100644 index 0000000000..41db2be5e8 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_edit_pick.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Redigér Pick" name="panel_edit_pick"> + <text name="title"> + Redigér favorit + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="Klik for at vælge billede"/> + <text name="Name:"> + Titel: + </text> + <text name="description_label"> + Beskrivelse: + </text> + <text name="location_label"> + Lokation: + </text> + <text name="pick_location"> + henter... + </text> + <button label="Sæt til nuværende lokation" name="set_to_curr_location_btn"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="Gem [WHAT]" name="save_changes_btn"/> + <button label="Annullér" name="cancel_btn"/> + </panel> +</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 a8a02a34b7..d3cfdbba52 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 0000000000..19c27748ca --- /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 0000000000..cd2e8d8cb3 --- /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_shoes.xml b/indra/newview/skins/default/xui/da/panel_edit_shoes.xml new file mode 100644 index 0000000000..54a0cc01a4 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="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="shoes_main_tab" title="Sko"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_skin.xml b/indra/newview/skins/default/xui/da/panel_edit_skin.xml new file mode 100644 index 0000000000..46dce354a9 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="Hoved tatoveringer" name="Head Tattoos" tool_tip="Klik for at vælge et bilede"/> + <texture_picker label="Øvre tatoveringer" name="Upper Tattoos" tool_tip="Klik for at vælge et bilede"/> + <texture_picker label="Nedre tatoveringer" name="Lower Tattoos" tool_tip="Klik for at vælge et bilede"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skin_color_tab" title="Hudfarve"/> + <accordion_tab name="skin_face_tab" title="Ansigtsdetaljer"/> + <accordion_tab name="skin_makeup_tab" title="Makeup"/> + <accordion_tab name="skin_body_tab" title="Kropsdetaljer"/> + </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 0000000000..4407c87d36 --- /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_socks.xml b/indra/newview/skins/default/xui/da/panel_edit_socks.xml new file mode 100644 index 0000000000..6ef6dad86c --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="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="socks_main_tab" title="Strømper"/> + </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 0000000000..4a133d8693 --- /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_edit_underpants.xml b/indra/newview/skins/default/xui/da/panel_edit_underpants.xml new file mode 100644 index 0000000000..de52146e29 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="Stof" name="Fabric" tool_tip="Klik for at vælge bilede"/> + <color_swatch label="Farve/nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="underpants_main_tab" title="Underbukser"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/da/panel_edit_undershirt.xml new file mode 100644 index 0000000000..6c2e1f5833 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="Stof" name="Fabric" tool_tip="Klik for at vælge bilede"/> + <color_swatch label="Farve/nuance" name="Color/Tint" tool_tip="Klik for at åbne farvevælger"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="undershirt_main_tab" title="Undertrøje"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_wearable.xml b/indra/newview/skins/default/xui/da/panel_edit_wearable.xml new file mode 100644 index 0000000000..12bc120c45 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_edit_wearable.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Kan bæres" name="panel_edit_wearable"> + <string name="edit_shape_title"> + Redigerer kropsbygning + </string> + <string name="edit_skin_title"> + Redigerer hud + </string> + <string name="edit_hair_title"> + Redigerer hår + </string> + <string name="edit_eyes_title"> + Redigerer øjne + </string> + <string name="edit_shirt_title"> + Redigerer trøje + </string> + <string name="edit_pants_title"> + Redigerer bukser + </string> + <string name="edit_shoes_title"> + Redigerer sko + </string> + <string name="edit_socks_title"> + Redigerer strømper + </string> + <string name="edit_jacket_title"> + Redigerer jakke + </string> + <string name="edit_skirt_title"> + Redigerer nederdel + </string> + <string name="edit_gloves_title"> + Redigerer handsker + </string> + <string name="edit_undershirt_title"> + Redigerer undertrøje + </string> + <string name="edit_underpants_title"> + Redigerer underbukser + </string> + <string name="edit_alpha_title"> + Redigerer Alpha maske + </string> + <string name="edit_tattoo_title"> + Redigerer tatovering + </string> + <string name="shape_desc_text"> + Kropsbygning: + </string> + <string name="skin_desc_text"> + Hud: + </string> + <string name="hair_desc_text"> + Hår: + </string> + <string name="eyes_desc_text"> + Øjne: + </string> + <string name="shirt_desc_text"> + Trøje: + </string> + <string name="pants_desc_text"> + Bukser: + </string> + <string name="shoes_desc_text"> + Sko: + </string> + <string name="socks_desc_text"> + Strømper: + </string> + <string name="jacket_desc_text"> + Jakke: + </string> + <string name="skirt_skirt_desc_text"> + Nederdel: + </string> + <string name="gloves_desc_text"> + Handsker: + </string> + <string name="undershirt_desc_text"> + Undertrøje: + </string> + <string name="underpants_desc_text"> + Underbukser: + </string> + <string name="alpha_desc_text"> + Alpha maske: + </string> + <string name="tattoo_desc_text"> + Tatovering: + </string> + <text name="edit_wearable_title" value="Redigerer kropsbygning"/> + <panel label="Trøje" name="wearable_type_panel"> + <text name="description_text" value="Kropsbygning:"/> + </panel> + <panel name="button_panel"> + <button label="Gem som" name="save_as_button"/> + <button label="Vend tilbage" name="revert_button"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_friends.xml b/indra/newview/skins/default/xui/da/panel_friends.xml index 2644b80968..a41eaf20c1 100644 --- a/indra/newview/skins/default/xui/da/panel_friends.xml +++ b/indra/newview/skins/default/xui/da/panel_friends.xml @@ -1,26 +1,20 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="friends"> <string name="Multiple"> - Flere venner... + Flere venner </string> - <scroll_list name="friend_list" - tool_tip="Hold Shift eller Ctrl nede imens du klikker for at vælge flere venner"> - <column name="icon_online_status" tool_tip="Online status" /> - <column label="Name" name="friend_name" tool_tip="Navn" /> - <column name="icon_visible_online" tool_tip="Venner kan se at du er online" /> - <column name="icon_visible_map" tool_tip="Venner kan finde dig på kortet" /> - <column name="icon_edit_mine" - tool_tip="Venner kan rette i, slette eller tage dine objekter" /> - <column name="icon_edit_theirs" tool_tip="Du kan rette i denne vens objekter" /> + <scroll_list name="friend_list" tool_tip="Hold Shift eller Ctrl nede imens du klikker for at vælge flere venner"> + <column name="icon_online_status" tool_tip="Online status"/> + <column label="Name" name="friend_name" tool_tip="Navn"/> + <column name="icon_visible_online" tool_tip="Venner kan se at du er online"/> + <column name="icon_visible_map" tool_tip="Venner kan finde dig på kortet"/> + <column name="icon_edit_mine" tool_tip="Venner kan rette i, slette eller tage dine objekter"/> + <column name="icon_edit_theirs" tool_tip="Du kan rette i denne vens objekter"/> </scroll_list> - <button label="IM" name="im_btn" tool_tip="Skriv en personlig besked (IM)" /> - <button label="Profil" name="profile_btn" - tool_tip="Vis billede, grupper og anden information" /> - <button label="Teleport..." name="offer_teleport_btn" - tool_tip="Tilbyd denne ven at blive teleporteret til din nuværende position" /> - <button label="Betal..." name="pay_btn" - tool_tip="Giv Linden dollars (L$) til denne ven" /> - <button label="Fjern..." name="remove_btn" - tool_tip="Fjern denne beboer fra din venneliste" /> - <button label="Tilføj..." name="add_btn" tool_tip="Tilbyd venskab til denne beboer" /> + <button label="IM" name="im_btn" tool_tip="Skriv en personlig besked (IM)"/> + <button label="Profil" name="profile_btn" tool_tip="Vis billede, grupper og anden information"/> + <button label="Teleport" name="offer_teleport_btn" tool_tip="Tilbyd denne ven at blive teleporteret til din nuværende position"/> + <button label="Betal" name="pay_btn" tool_tip="Giv Linden dollars (L$) til denne ven"/> + <button label="Fjern" name="remove_btn" tool_tip="Fjern denne beboer fra din venneliste"/> + <button label="Tilføj" name="add_btn" tool_tip="Tilbyd venskab til denne beboer"/> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_control_panel.xml b/indra/newview/skins/default/xui/da/panel_group_control_panel.xml new file mode 100644 index 0000000000..1db2db45af --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="Group Profile" name="group_info_btn"/> + <panel name="panel_call_buttons"> + <button label="Opkaldsgruppe" name="call_btn"/> + <button label="Forlad samtale" name="end_call_btn"/> + <button label="Kontroller for åben stemmechat" name="voice_ctrls_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_general.xml b/indra/newview/skins/default/xui/da/panel_group_general.xml index 4e98ca2bc2..ec957e6094 100644 --- a/indra/newview/skins/default/xui/da/panel_group_general.xml +++ b/indra/newview/skins/default/xui/da/panel_group_general.xml @@ -1,72 +1,35 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Generelt" name="general_tab"> - <string name="help_text"> - Generel-fanen indeholder generel information om denne gruppe, en liste med ejere og synlige medlemmer, generel-gruppeindstillinger og medlemsmuligheder. - -Bevæg din mus over mulighederne for mere hjælp. - </string> - <string name="group_info_unchanged"> - Generel gruppeinformation er ændret. - </string> - <button label="?" label_selected="?" name="help_button"/> - <line_editor label="Indtast nyt gruppenavn her" name="group_name_editor"/> - <text name="group_name"> - Skriv det nye gruppenavn her - </text> - <text name="prepend_founded_by"> - Grundlagt af - </text> - <text name="founder_name" left_delta="70" > - (venter) - </text> - <text name="group_charter_label"> - Gruppens formål - </text> - <texture_picker label="Gruppe distinktioner" name="insignia" tool_tip="Klik for at vælge et billede"/> + <panel.string name="help_text"> + Generelt-fanen indeholder generel information om denne gruppe, en liste med ejere og synlige medlemmer, generel-gruppeindstillinger og medlemsmuligheder. Bevæg din mus over mulighederne for mere hjælp. + </panel.string> + <panel.string name="group_info_unchanged"> + Generel gruppeinformation er ændret + </panel.string> + <panel.string name="incomplete_member_data_str"> + Henter medlemsinformationer + </panel.string> <text_editor name="charter"> Gruppens formål </text_editor> - <button label="Tilmeld (L$0)" label_selected="Tilmeld (L$0)" name="join_button"/> - <button label="Detaljeret visning" label_selected="Detaljeret visning" name="info_button"/> - <text name="text_owners_and_visible_members"> - Ejere & synlige medlemmer - </text> - <text name="text_owners_are_shown_in_bold"> - (Ejere er vist med fed skrift) - </text> <name_list name="visible_members"> - <name_list.columns label="Medlemsnavn" name="name"/> + <name_list.columns label="Medlem" name="name"/> <name_list.columns label="Titel" name="title"/> - <name_list.columns label="Senest på d." name="online"/> </name_list> - <text name="text_group_preferences"> - Gruppeindstillinger + <text name="active_title_label"> + Min titel </text> + <combo_box name="active_title" tool_tip="Angiver den titel der vises i din avatars navnefelt, når denne gruppe er aktiv"/> + <check_box label="Modtag gruppeinformationer" name="receive_notices" tool_tip="Angiver om du vil modtage informationer fra denne gruppe. Fjern markeringen i boksen hvis gruppen spammer dig."/> + <check_box label="Vis gruppen i min profil" name="list_groups_in_profile" tool_tip="Angiver om du vil vise denne gruppe i dine profilinformationer"/> <panel name="preferences_container"> - <check_box label="Vis i søgning" name="show_in_group_list" tool_tip="Lad folk se denne gruppe i søgeresultater."/> <check_box label="Åben tilmelding" name="open_enrollement" tool_tip="Angiver om denne gruppe tillader nye medlemmer at tilmelde sig, uden de er inviteret."/> - <check_box label="Tilmeldingsgebyr:" name="check_enrollment_fee" tool_tip="Angiver om der kræves et gebyr, for at tilmelde sig gruppen."/> - <spinner name="spin_enrollment_fee" tool_tip="Nye medlemmer skal betale dette gebyr for at tilmelde sig gruppen, når Tilmeldingsgebyr er valgt." width="60" left_delta="130"/> + <check_box label="Tilmeldingsgebyr" name="check_enrollment_fee" tool_tip="Angiver om der kræves et gebyr, for at tilmelde sig gruppen"/> + <spinner label="L$" left_delta="130" name="spin_enrollment_fee" tool_tip="Nye medlemmer skal betale dette gebyr for at tilmelde sig gruppen, når "Tilmeldingsgebyr" er valgt." width="60"/> <combo_box name="group_mature_check" tool_tip="Angiver om din gruppes information anses som 'mature'." width="150"> - <combo_box.item name="select_mature" label="- Vælg indholdsrating -"/> - <combo_box.item name="mature" label="Mature indhold"/> - <combo_box.item name="pg" label="PG indhold"/> + <combo_box.item label="PG indhold" name="pg"/> + <combo_box.item label="Mature indhold" name="mature"/> </combo_box> - <panel name="title_container"> - <text name="active_title_label"> - Min aktive titel - </text> - <combo_box name="active_title" tool_tip="Angiver den titel der vises i din avatars navnefelt, når denne gruppe er aktiv."/> - </panel> - <check_box label="Modtag gruppeinformationer" name="receive_notices" tool_tip="Angiver om du vil modtage informationer fra denne gruppe. Fjern markeringen i boksen hvis gruppen spammer dig."/> - <check_box label="Vis gruppen i min profil" name="list_groups_in_profile" tool_tip="Angiver om du vil vise denne gruppe i dine profilinformationer"/> + <check_box initial_value="true" label="Vis i søgning" name="show_in_group_list" tool_tip="Lad folk se denne gruppe i søgeresultater."/> </panel> - <string name="incomplete_member_data_str"> - Henter medlemsinformationer - </string> - <string name="confirm_group_create_str"> - Creating this group will cost L$100. -Er du virkelig, virkelig, VIRKELIG sikker på, at du vil bruge L$100 på at lave denne gruppe? -Du skal være opmærksom på, at hvis ingen andre indmelder sig i denne gruppe indenfor 48 timer, så vil gruppen blive opløst, og gruppens navn vil ikke være tilgængelig i fremtiden. - </string> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml new file mode 100644 index 0000000000..9940ebbd4d --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Gruppe info" name="GroupInfo"> + <panel.string name="default_needs_apply_text"> + Der er ændringer på denne fane der ikke er gemt + </panel.string> + <panel.string name="want_apply_text"> + Ønsker du at gemme disse ændringer? + </panel.string> + <panel.string name="group_join_btn"> + Tilmeld (L$[AMOUNT]) + </panel.string> + <panel.string name="group_join_free"> + Gratis + </panel.string> + <text name="group_name" value="(Henter...)"/> + <line_editor label="Indtast dit nye gruppenavn her" name="group_name_editor"/> + <texture_picker label="" name="insignia" tool_tip="Klik for at vælge bilede"/> + <text name="prepend_founded_by"> + Grundlægger: + </text> + <name_box initial_value="(finder)" name="founder_name"/> + <text name="join_cost_text"> + Gratis + </text> + <button label="MELD IND NU!" name="btn_join"/> + <accordion name="groups_accordion"> + <accordion_tab name="group_general_tab" title="Generelt"/> + <accordion_tab name="group_roles_tab" title="Roller"/> + <accordion_tab name="group_notices_tab" title="Beskeder"/> + <accordion_tab name="group_land_tab" title="Land/Aktiver"/> + </accordion> + <panel name="button_row"> + <button label="Lav" label_selected="Ny gruppe" name="btn_create"/> + <button label="Gem" label_selected="Gem" name="btn_apply"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_invite.xml b/indra/newview/skins/default/xui/da/panel_group_invite.xml index 813007aee0..1e00642c29 100644 --- a/indra/newview/skins/default/xui/da/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/da/panel_group_invite.xml @@ -1,31 +1,30 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Invitér et medlem" name="invite_panel"> + <panel.string name="confirm_invite_owner_str"> + Er du sikker på, at du vil invitere ny(e) ejer(e)? Denne handling er permanent! + </panel.string> + <panel.string name="loading"> + (indlæser...) + </panel.string> + <panel.string name="already_in_group"> + Nogen af avatarerne var allerede i gruppen og blev ikke inviteret + </panel.string> <text name="help_text"> Du kan invitere flere beboere ad gangen til at blive medlem af din gruppe. Klik 'Åben personvælger' for at begynde. </text> - <button label="Åben personvælger" name="add_button" bottom_delta="-30"/> - <name_list name="invitee_list" - tool_tip="Hold Ctrl-tasten nede og klik på beboere for at vælge flere." /> - <button label="Fjern valgte fra listen" name="remove_button" - tool_tip="Fjerner beboere, der er valgt på ovenstående invitationsliste." /> + <button bottom_delta="-30" label="Åben personvælger" name="add_button"/> + <name_list name="invitee_list" tool_tip="Hold Ctrl knappen nede og klik på beboer navne for at vælge flere"/> + <button label="Fjern valgte fra listen" name="remove_button" tool_tip="Fjern beboere valgt ovenfor fra invitationslisten"/> <text name="role_text"> Vælg hvilken rolle, du vil tildele dem: </text> - <combo_box name="role_name" - tool_tip="Vælg fra listen med roller, du har tilladelse til at tildele medlemmerne." /> - <button label="Send invitationer" name="ok_button" /> - <button label="Annullér" name="cancel_button" /> - <string name="confirm_invite_owner_str"> - Er du sikker på, at du vil invitere ny(e) ejer(e)? Denne handling er permanent! - </string> - <!--button bottom="25" font="SansSerifSmall" halign="center" height="20" - label="Send invitationer" left="65" name="ok_button" width="140" /> - <button bottom_delta="-22" font="SansSerifSmall" halign="center" height="20" - label="Annullér" left_delta="0" name="cancel_button" width="140" /--> - <string name="loading"> - (indlæser...) + <combo_box name="role_name" tool_tip="Vælg fra en liste med roller du har ret til at tildele medlemmer"/> + <button label="Send invitationer" name="ok_button"/> + <button label="Annullér" name="cancel_button"/> + <string name="GroupInvitation"> + Gruppe invitation </string> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_land_money.xml b/indra/newview/skins/default/xui/da/panel_group_land_money.xml index 636a16f97b..c73d7c807d 100644 --- a/indra/newview/skins/default/xui/da/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/da/panel_group_land_money.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Land & L$" name="land_money_tab"> <string name="help_text"> - Grunde ejet af gruppen er vist sammen med bidragsdetaljer. En advarsel vises indtil Total land i brug er mindre end eller lig med det totale bidrag. Planlægning, detaljer og salgsfaneblade viser information om gruppens økonomi. + En advarsel vises indtil Total land i brug er mindre end eller lig med det totale bidrag. </string> <button label="?" name="help_button"/> <string name="cant_view_group_land_text"> @@ -17,27 +17,27 @@ Gruppeejet land </text> <scroll_list name="group_parcel_list"> - <column label="Grundens 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="Vis på kort" label_selected="Vis på kort" name="map_button"/> + <button label="Kort" label_selected="Kort" name="map_button"/> <text name="total_contributed_land_label"> - Total bidrag: + Totalt bidrag: </text> <text name="total_contributed_land_value"> [AREA] m² </text> <text name="total_land_in_use_label"> - Total land i brug: + Totalt land i brug: </text> <text name="total_land_in_use_value"> [AREA] m² </text> <text name="land_available_label"> - Tilgængeligt land: + Ledigt land: </text> <text name="land_available_value"> [AREA] m² @@ -46,40 +46,39 @@ Dit bidrag: </text> <string name="land_contrib_error"> - Ikke muligt at lave dit bidrag til landet. + Ikke muligt at lave dit bidrag til landet </string> <text name="your_contribution_units"> - ( m² ) + m² </text> <text name="your_contribution_max_value"> ([AMOUNT] maks.) </text> <text name="group_over_limit_text"> - Gruppemedlemmer må bidrag med mere, for at understøtte -med det land der bliver brugt. + Gruppemedlemmer må bidrag med mere, for at understøtte med det land der bliver brugt </text> <text name="group_money_heading"> Gruppe L$ </text> <tab_container name="group_money_tab_container"> - <panel label="Planlægning" name="group_money_planning_tab"> + <panel label="PLANLÆGNING" name="group_money_planning_tab"> <text_editor name="group_money_planning_text"> - Beregner... + Henter... </text_editor> </panel> - <panel label="Detaljer" name="group_money_details_tab"> + <panel label="DETALJER" name="group_money_details_tab"> <text_editor name="group_money_details_text"> - Beregner... + Henter... </text_editor> - <button label="< Før" label_selected="< Før" name="earlier_details_button" tool_tip="Gå tilbage i tid"/> - <button label="Efter >" label_selected="Efter >" name="later_details_button" tool_tip="Gå frem i tid"/> + <button label="< Før" label_selected="< Før" name="earlier_details_button" tool_tip="Tilbage"/> + <button label="Efter >" label_selected="Efter >" name="later_details_button" tool_tip="Næste"/> </panel> - <panel label="Salg" name="group_money_sales_tab"> + <panel label="SALG" name="group_money_sales_tab"> <text_editor name="group_money_sales_text"> - Beregner... + Henter... </text_editor> - <button label="< Før" label_selected="< Før" name="earlier_sales_button" tool_tip="Gå tilbage i tid"/> - <button label="Efter >" label_selected="Efter >" name="later_sales_button" tool_tip="Gå frem i tid"/> + <button label="< Før" label_selected="< Før" name="earlier_sales_button" tool_tip="Tilbage"/> + <button label="Efter >" label_selected="Efter >" name="later_sales_button" tool_tip="Næste"/> </panel> </tab_container> </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 0000000000..bfffdccc5e --- /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_notices.xml b/indra/newview/skins/default/xui/da/panel_group_notices.xml index 9e6aa9eb7c..ec503c37dc 100644 --- a/indra/newview/skins/default/xui/da/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/da/panel_group_notices.xml @@ -1,42 +1,35 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Beskeder" name="notices_tab"> - <string name="help_text"> + <panel.string name="help_text"> Beskeder er en hurtig måde at kommunikere på på tværs i gruppen ved at sende en meddelelse eller en eventuel vedlagt genstand. beskeder sendes kun til gruppemedlemmer i roller som giver evnen til at modtage dem. Du kan slå beskeder fra i Generel-fanebladet. - </string> - <string name="no_notices_text"> - Der er ingen tidligere beskeder. - </string> - <button label="?" label_selected="?" name="help_button" /> - <text name="lbl"> - Arkiv med gruppebeskeder - </text> + </panel.string> + <panel.string name="no_notices_text"> + Der er ikke nogen tidligere beskeder + </panel.string> <text name="lbl2"> - Beskeder er gemt i 14 dage. -Listen er begrænset til 200 beskeder pr. gruppe hver dag. + Beskeder gemmes i 14 dage. +Maksimum er 200 pr. gruppe pr. dag </text> <scroll_list name="notice_list"> - <column label="" name="icon" /> - <column label="Emne" name="subject" /> - <column label="Fra" name="from" /> - <column label="Dato" name="date" /> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="Emne" name="subject"/> + <scroll_list.columns label="Fra" name="from"/> + <scroll_list.columns label="Dato" name="date"/> </scroll_list> <text name="notice_list_none_found"> - Ingen fundet. + Ingen fundet </text> - <button label="Lav ny besked" label_selected="Lav ny besked" name="create_new_notice" /> - <button label="Genopfrisk" label_selected="Genopfrisk liste" name="refresh_notices" /> + <button label="Lav en ny besked" label_selected="Lav ny besked" name="create_new_notice" tool_tip="Lav en ny besked"/> + <button label="Genopfrisk" label_selected="Genopfrisk liste" name="refresh_notices" tool_tip="Genopfrisk beskedliste"/> <panel label="Lav ny besked" name="panel_create_new_notice"> <text name="lbl"> Lav en besked </text> - <text name="lbl2"> - Du kan tilføje et bilag til beskeden ved at trække den fra beholdningen til dette felt. Vedhæftede objekter skal være sat til at kunne kopieres og overføres, og du kan ikke sende en mappe. - </text> <text name="lbl3"> Emne: </text> @@ -46,17 +39,19 @@ Listen er begrænset til 200 beskeder pr. gruppe hver dag. <text name="lbl5"> Vedhæft: </text> - <button label="Fjern bilag" label_selected="Fjern bilag" name="remove_attachment" /> - <button label="Afsend" label_selected="Afsend" name="send_notice" /> - <panel name="drop_target" - tool_tip="Træk en genstand fra beholdningen over på denne boks for at sende den sammen med beskeden. Du skal have tilladelse til at kopiere og overføre genstanden, for at kunne sende den med beskeden." /> + <text name="string"> + Træk og slip en gensand for at vedhæfte den: + </text> + <button label="Fjern" label_selected="Fjern bilag" name="remove_attachment"/> + <button label="Send" label_selected="Send" name="send_notice"/> + <group_drop_target name="drop_target" tool_tip="Træk en genstand fra din beholdning til dette felt for at sende den med denne besked. Du skal have rettigheder til at kopiere og overdrage denne genstand for at kunne vedhæfte den."/> </panel> <panel label="Se tidligere beskeder" name="panel_view_past_notice"> <text name="lbl"> Arkiverede beskeder </text> <text name="lbl2"> - For at sende en ny besked, klik på 'Lav ny besked'-knappen foroven. + For at sende en ny besked, tryk på + knappen </text> <text name="lbl3"> Emne: @@ -64,6 +59,6 @@ Listen er begrænset til 200 beskeder pr. gruppe hver dag. <text name="lbl4"> Besked: </text> - <button label="åben bilag" label_selected="åben bilag" name="open_attachment" /> + <button label="Åben bilag" label_selected="åben bilag" name="open_attachment"/> </panel> </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 0000000000..43a84298e2 --- /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 99f5bac89d..74bea831fb 100644 --- a/indra/newview/skins/default/xui/da/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/da/panel_group_roles.xml @@ -1,121 +1,121 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Medlemmer & roller" name="roles_tab">
- <panel.string name="default_needs_apply_text">
- Der er ændringer her, der ikke er gemt.
- </panel.string>
- <panel.string name="want_apply_text">
- Vil du gemme disse ændringer?
- </panel.string>
- <tab_container name="roles_tab_container">
- <panel label="MEDLEMMER" name="members_sub_tab" tool_tip="Medlemmer">
- <panel.string name="help_text">
- Du kan tilføje eller fjerne roller, der er tildelt medlemmerne.
-Vælg flere medlemmer ved at holde Ctrl-tasten nede og
-klik på deres navne.
- </panel.string>
- <filter_editor label="Filtrér medlemmer" name="filter_input"/>
- <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>
- <button label="Invitér nyt medlem" name="member_invite"/>
- <button label="Udmeld" name="member_eject"/>
- </panel>
- <panel label="ROLLER" name="roles_sub_tab">
- <panel.string name="help_text">
- Roller har en titel og en tilladelsesliste med rettigheder,
-som medlemmerne kan bruge. Medlemmer kan høre til
-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.
- </panel.string>
- <panel.string name="power_folder_icon">
- Inv_FolderClosed
- </panel.string>
- <filter_editor label="Filtrér roller" name="filter_input"/>
- <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>
- <button label="Opret ny rolle" name="role_create"/>
- <button label="Slet rolle" name="role_delete"/>
- </panel>
- <panel label="RETTIGHEDER" name="actions_sub_tab" tool_tip="Du kan se beskrivelse af rettighed og hvilke roller og medlemmer der har denne rettighed.">
- <panel.string name="help_text">
- Rettigheder giver medlemmer i roller mulighed for at gøre specifikke
-ting i denne gruppe. Der er en bred vifte af rettigheder.
- </panel.string>
- <filter_editor label="Filtrér rettigheder" name="filter_input"/>
- <scroll_list name="action_list" tool_tip="Vælg en rettighed for at se flere detaljer">
- <scroll_list.columns label="" name="icon"/>
- <scroll_list.columns label="" name="action"/>
- </scroll_list>
- </panel>
- </tab_container>
- <panel name="members_footer">
- <text name="static">
- Tildelte roller
- </text>
- <scroll_list name="member_assigned_roles">
- <scroll_list.columns label="" name="checkbox"/>
- <scroll_list.columns label="" name="role"/>
- </scroll_list>
- <text name="static2">
- Tilladte rettigheder
- </text>
- <scroll_list name="member_allowed_actions" tool_tip="For detaljer om hver tilladte rettighed, se rettighedsfanebladet.">
- <scroll_list.columns label="" name="icon"/>
- <scroll_list.columns label="" name="action"/>
- </scroll_list>
- </panel>
- <panel name="roles_footer">
- <text name="static">
- Navn
- </text>
- <line_editor name="role_name">
- Ansatte
- </line_editor>
- <text name="static3">
- Titel
- </text>
- <line_editor name="role_title">
- (venter)
- </line_editor>
- <text name="static2">
- Beskrivelse
- </text>
- <text_editor name="role_description">
- (venter)
- </text_editor>
- <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."/>
- <text name="static5" tool_tip="A list of Abilities the currently selected role can perform.">
- Tilladte rettigheder
- </text>
- <scroll_list name="role_allowed_actions" tool_tip="For detaljer om hver rettighed se under rettigheder fanebladet.">
- <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">
- Beskrivelse
- </text>
- <text_editor name="action_description">
- Denne rettigheder 'Udmeld medlemmer fra denne gruppe'. Kun en ejer kan udmelde en anden ejer.
- </text_editor>
- <text name="static2">
- Roller med rettighed
- </text>
- <text name="static3">
- Medlemmer med rettighed
- </text>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Medlemmer & roller" name="roles_tab"> + <panel.string name="default_needs_apply_text"> + Der er ændringer her, der ikke er gemt. + </panel.string> + <panel.string name="want_apply_text"> + Vil du gemme disse ændringer? + </panel.string> + <tab_container name="roles_tab_container"> + <panel label="MEDLEMMER" name="members_sub_tab" tool_tip="Medlemmer"> + <panel.string name="help_text"> + Du kan tilføje eller fjerne roller, der er tildelt medlemmerne. +Vælg flere medlemmer ved at holde Ctrl-tasten nede og +klik på deres navne. + </panel.string> + <filter_editor label="Filtrér medlemmer" name="filter_input"/> + <name_list name="member_list"> + <name_list.columns label="Medlemsnavn" name="name"/> + <name_list.columns label="Doneret leje" name="donated"/> + <name_list.columns label="Status" name="online"/> + </name_list> + <button label="Invitér nyt medlem" name="member_invite"/> + <button label="Udmeld" name="member_eject"/> + </panel> + <panel label="ROLLER" name="roles_sub_tab"> + <panel.string name="help_text"> + Roller har en titel og en tilladelsesliste med rettigheder, +som medlemmerne kan bruge. Medlemmer kan høre til +en eller flere roller. En gruppe kan have op til 10 roller, +inkluderet alle- og ejerroller. + </panel.string> + <panel.string name="cant_delete_role"> + Rollerne 'Everyone' og 'Owners' er specielle og kan ikke slettes + </panel.string> + <panel.string name="power_folder_icon"> + Inv_FolderClosed + </panel.string> + <filter_editor label="Filtrér roller" name="filter_input"/> + <scroll_list name="role_list"> + <scroll_list.columns label="Rollenavn" name="name"/> + <scroll_list.columns label="Titel" name="title"/> + <scroll_list.columns label="#" name="members"/> + </scroll_list> + <button label="Opret ny rolle" name="role_create"/> + <button label="Slet rolle" name="role_delete"/> + </panel> + <panel label="RETTIGHEDER" name="actions_sub_tab" tool_tip="Du kan se beskrivelse af rettighed og hvilke roller og medlemmer der har denne rettighed."> + <panel.string name="help_text"> + Rettigheder giver medlemmer i roller mulighed for at gøre specifikke +ting i denne gruppe. Der er en bred vifte af rettigheder. + </panel.string> + <filter_editor label="Filtrér rettigheder" name="filter_input"/> + <scroll_list name="action_list" tool_tip="Vælg en rettighed for at se flere detaljer"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="action"/> + </scroll_list> + </panel> + </tab_container> + <panel name="members_footer"> + <text name="static"> + Medlemmer + </text> + <scroll_list name="member_assigned_roles"> + <scroll_list.columns label="" name="checkbox"/> + <scroll_list.columns label="" name="role"/> + </scroll_list> + <text name="static2"> + Tilladte rettigheder + </text> + <scroll_list name="member_allowed_actions" tool_tip="For detaljer om hver tilladte rettighed, se rettighedsfanebladet."> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="action"/> + </scroll_list> + </panel> + <panel name="roles_footer"> + <text name="static"> + Rolle navn + </text> + <line_editor name="role_name"> + Ansatte + </line_editor> + <text name="static3"> + Rolle titel + </text> + <line_editor name="role_title"> + (venter) + </line_editor> + <text name="static2"> + Beskrivelse + </text> + <text_editor name="role_description"> + (venter) + </text_editor> + <text name="static4"> + Tildelte roller + </text> + <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> + <scroll_list name="role_allowed_actions" tool_tip="For detaljer om hver rettighed se under rettigheder fanebladet."> + <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"> + Beskrivelse + </text> + <text_editor name="action_description"> + Denne rettigheder 'Udmeld medlemmer fra denne gruppe'. Kun en ejer kan udmelde en anden ejer. + </text_editor> + <text name="static2"> + Roller med rettighed + </text> + <text name="static3"> + Medlemmer med rettighed + </text> + </panel> +</panel> 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 0000000000..0384652e5d --- /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 0000000000..202a4d4664 --- /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 0000000000..47487832cb --- /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 fbef93de69..c8c275d84d 100644 --- a/indra/newview/skins/default/xui/da/panel_login.xml +++ b/indra/newview/skins/default/xui/da/panel_login.xml @@ -1,38 +1,34 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_login">
- <panel.string name="real_url">
- http://secondlife.com/app/login/
- </panel.string>
- <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>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_login"> + <panel.string name="real_url"> + http://secondlife.com/app/login/ + </panel.string> + <panel.string name="forgot_password_url"> + http://secondlife.com/account/request.php + </panel.string> + <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_main_inventory.xml b/indra/newview/skins/default/xui/da/panel_main_inventory.xml index e0f99bee93..ac3a2844db 100644 --- a/indra/newview/skins/default/xui/da/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/da/panel_main_inventory.xml @@ -1,64 +1,64 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Ting" name="main inventory panel">
- <panel.string name="Title">
- Ting
- </panel.string>
- <filter_editor label="Filter" name="inventory search editor"/>
- <tab_container name="inventory filter tabs">
- <inventory_panel label="Alle ting" name="All Items"/>
- <inventory_panel label="Nye ting" name="Recent Items"/>
- </tab_container>
- <panel name="bottom_panel">
- <button name="options_gear_btn" tool_tip="Vis flere valgmuligheder"/>
- <button name="add_btn" tool_tip="Opret ny genstand"/>
- <dnd_button name="trash_btn" tool_tip="Fjern valgt genstand"/>
- </panel>
- <menu_bar name="Inventory Menu">
- <menu label="Filer" name="File">
- <menu_item_call label="Åben" name="Open"/>
- <menu label="Send fil" 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="Flere filer (L$[COST] pr. fil)..." name="Bulk Upload"/>
- </menu>
- <menu_item_call label="Nyt vindue" name="New Window"/>
- <menu_item_call label="Vis filtre" name="Show Filters"/>
- <menu_item_call label="Nulstil filtre" name="Reset Current"/>
- <menu_item_call label="Luk alle mapper" name="Close All Folders"/>
- <menu_item_call label="Tøm papirkurv" name="Empty Trash"/>
- <menu_item_call label="Tøm fundne genstande" name="Empty Lost And Found"/>
- </menu>
- <menu label="Opret" name="Create">
- <menu_item_call label="Ny mappe" name="New Folder"/>
- <menu_item_call label="Nyt script" name="New Script"/>
- <menu_item_call label="Ny note" name="New Note"/>
- <menu_item_call label="Ny bevægelse" name="New Gesture"/>
- <menu label="Nyt tøj" name="New Clothes">
- <menu_item_call label="Ny trøje" name="New Shirt"/>
- <menu_item_call label="Nye bukser" name="New Pants"/>
- <menu_item_call label="Nye sko" name="New Shoes"/>
- <menu_item_call label="Nye strømper" name="New Socks"/>
- <menu_item_call label="Ny jakke" name="New Jacket"/>
- <menu_item_call label="Ny nederdel" name="New Skirt"/>
- <menu_item_call label="Nye handsker" name="New Gloves"/>
- <menu_item_call label="Ny undertrøje" name="New Undershirt"/>
- <menu_item_call label="Nye underbukser" name="New Underpants"/>
- <menu_item_call label="Nyt alpha lag" name="New Alpha"/>
- <menu_item_call label="Ny tatovering" name="New Tattoo"/>
- </menu>
- <menu label="Nye kropsdele" name="New Body Parts">
- <menu_item_call label="Ny kropsbygning" name="New Shape"/>
- <menu_item_call label="Ny hud" name="New Skin"/>
- <menu_item_call label="Nyt hår" name="New Hair"/>
- <menu_item_call label="Nye øjne" name="New Eyes"/>
- </menu>
- </menu>
- <menu label="Sortér" name="Sort">
- <menu_item_check label="Efter navn" name="By Name"/>
- <menu_item_check label="Efter dato" name="By Date"/>
- <menu_item_check label="Altid mapper efter navn" name="Folders Always By Name"/>
- <menu_item_check label="System-mapper i toppen" name="System Folders To Top"/>
- </menu>
- </menu_bar>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Ting" name="main inventory panel"> + <panel.string name="Title"> + Ting + </panel.string> + <filter_editor label="Filter" name="inventory search editor"/> + <tab_container name="inventory filter tabs"> + <inventory_panel label="Alle ting" name="All Items"/> + <inventory_panel label="Nye ting" name="Recent Items"/> + </tab_container> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Vis flere valgmuligheder"/> + <button name="add_btn" tool_tip="Opret ny genstand"/> + <dnd_button name="trash_btn" tool_tip="Fjern valgt genstand"/> + </panel> + <menu_bar name="Inventory Menu"> + <menu label="Filer" name="File"> + <menu_item_call label="Åben" name="Open"/> + <menu label="Send fil" 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="Flere filer (L$[COST] pr. fil)..." name="Bulk Upload"/> + </menu> + <menu_item_call label="Nyt vindue" name="New Window"/> + <menu_item_call label="Vis filtre" name="Show Filters"/> + <menu_item_call label="Nulstil filtre" name="Reset Current"/> + <menu_item_call label="Luk alle mapper" name="Close All Folders"/> + <menu_item_call label="Tøm papirkurv" name="Empty Trash"/> + <menu_item_call label="Tøm fundne genstande" name="Empty Lost And Found"/> + </menu> + <menu label="Opret" name="Create"> + <menu_item_call label="Ny mappe" name="New Folder"/> + <menu_item_call label="Nyt script" name="New Script"/> + <menu_item_call label="Ny note" name="New Note"/> + <menu_item_call label="Ny bevægelse" name="New Gesture"/> + <menu label="Nyt tøj" name="New Clothes"> + <menu_item_call label="Ny trøje" name="New Shirt"/> + <menu_item_call label="Nye bukser" name="New Pants"/> + <menu_item_call label="Nye sko" name="New Shoes"/> + <menu_item_call label="Nye strømper" name="New Socks"/> + <menu_item_call label="Ny jakke" name="New Jacket"/> + <menu_item_call label="Ny nederdel" name="New Skirt"/> + <menu_item_call label="Nye handsker" name="New Gloves"/> + <menu_item_call label="Ny undertrøje" name="New Undershirt"/> + <menu_item_call label="Nye underbukser" name="New Underpants"/> + <menu_item_call label="Nyt alpha lag" name="New Alpha"/> + <menu_item_call label="Ny tatovering" name="New Tattoo"/> + </menu> + <menu label="Nye kropsdele" name="New Body Parts"> + <menu_item_call label="Ny kropsbygning" name="New Shape"/> + <menu_item_call label="Ny hud" name="New Skin"/> + <menu_item_call label="Nyt hår" name="New Hair"/> + <menu_item_call label="Nye øjne" name="New Eyes"/> + </menu> + </menu> + <menu label="Sortér" name="Sort"> + <menu_item_check label="Efter navn" name="By Name"/> + <menu_item_check label="Efter dato" name="By Date"/> + <menu_item_check label="Altid mapper efter navn" name="Folders Always By Name"/> + <menu_item_check label="System-mapper i toppen" name="System Folders To Top"/> + </menu> + </menu_bar> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_me.xml b/indra/newview/skins/default/xui/da/panel_me.xml new file mode 100644 index 0000000000..2cfd358d13 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_me.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Min profil" name="panel_me"> + <tab_container name="tabs"> + <panel label="PROFIL" name="panel_profile"/> + <panel label="FAVORITTER" name="panel_picks"/> + </tab_container> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_media_settings_general.xml b/indra/newview/skins/default/xui/da/panel_media_settings_general.xml new file mode 100644 index 0000000000..7f1581888d --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_media_settings_general.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Generelt" name="Media Settings General"> + <text name="home_label"> + Hjemmeside: + </text> + <text name="home_fails_whitelist_label"> + (Denne side optræder ikke i godkendte sider) + </text> + <line_editor name="home_url" tool_tip="Hjemmesiden for kilden til dette media"/> + <text name="preview_label"> + Vis + </text> + <text name="current_url_label"> + Nuværende side: + </text> + <text name="current_url" tool_tip="Den nuværende hjemmeside for kilden til dette media" value=""/> + <button label="Nulstil" name="current_url_reset_btn"/> + <check_box initial_value="false" label="Gentag afspil" name="auto_loop"/> + <check_box initial_value="false" label="Første klik medfører interaktion" name="first_click_interact"/> + <check_box initial_value="false" label="Auto zoom" name="auto_zoom"/> + <check_box initial_value="false" label="Afspil automatisk media" name="auto_play"/> + <text name="media_setting_note"> + Note: Beboere kan selv ændre denne indstilling + </text> + <check_box initial_value="false" label="Auto skalér media på objektets overflade" name="auto_scale"/> + <text name="size_label"> + Størrelse: + </text> + <text name="X_label"> + X + </text> +</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 0000000000..70570920cd --- /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_media_settings_security.xml b/indra/newview/skins/default/xui/da/panel_media_settings_security.xml new file mode 100644 index 0000000000..ee341f9142 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_media_settings_security.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Sikkerhed" name="Media Settings Security"> + <check_box initial_value="false" label="Tillad kun adgang til specifikke URL'er (via "prefix")" name="whitelist_enable"/> + <text name="home_url_fails_some_items_in_whitelist"> + Opslag som hjemmesiden fejler ved er markeret: + </text> + <button label="Tilføj" name="whitelist_add"/> + <button label="Slet" name="whitelist_del"/> + <text name="home_url_fails_whitelist"> + Advarsel: Hjemmesiden angive i "Generelt" fanen er ikke indeholdt i godkendte sider. Den er slået fra, indtil en gyldig værdi er tilføjet. + </text> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_my_profile.xml b/indra/newview/skins/default/xui/da/panel_my_profile.xml new file mode 100644 index 0000000000..1dffc73239 --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_my_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"> + <icon label="" name="2nd_life_edit_icon" tool_tip="Klik på Rediger Profil knappen nedenfor for at ændre billede"/> + </panel> + <panel name="first_life_image_panel"> + <icon label="" name="real_world_edit_icon" tool_tip="Klik på Rediger Profil knappen nedenfor for at ændre billede"/> + <text name="title_rw_descr_text" value="RL:"/> + </panel> + <text name="me_homepage_text"> + Web: + </text> + <text name="title_member_text" value="Medlem siden:"/> + <text name="title_acc_status_text" value="Konto:"/> + <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"/> + <button label="IM" name="im"/> + <button label="Opkald" name="call"/> + <button label="Kort" name="show_on_map_btn"/> + <button label="Teleportér" name="teleport"/> + </panel> + <panel name="profile_me_buttons_panel"> + <button label="Rediger profil" name="edit_profile_btn" tool_tip="Redigér personlig information"/> + <button label="Ændre udseende" name="edit_appearance_btn" tool_tip="Ændre dit udseende: fysiske data, tøj m.v."/> + </panel> +</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 0000000000..465bc75a1b --- /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_nearby_chat.xml b/indra/newview/skins/default/xui/da/panel_nearby_chat.xml new file mode 100644 index 0000000000..7f94345976 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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 NÆRVED + </text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml new file mode 100644 index 0000000000..949cbcbd7b --- /dev/null +++ b/indra/newview/skins/default/xui/da/panel_nearby_chat_bar.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="chat_bar"> + <line_editor label="Klik her for at chatte." name="chat_box" tool_tip="Tryk på enter for at tale, Ctrl-Enter for at råbe."/> + <button name="show_nearby_chat" tool_tip="Viser/skjuler log for chat nærved"/> +</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 0000000000..f8d911b9e5 --- /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 0000000000..7d6401283e --- /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 0000000000..a6a796f612 --- /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 0000000000..07b7f60810 --- /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_pick_info.xml b/indra/newview/skins/default/xui/da/panel_pick_info.xml new file mode 100644 index 0000000000..ce05018b5b --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="Favorit info"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text name="pick_name" value="[name]"/> + <text name="pick_location" value="[loading...]"/> + <text name="pick_desc" value="[description]"/> + </panel> + </scroll_container> + <panel name="buttons"> + <button label="Teleportér" 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_picks.xml b/indra/newview/skins/default/xui/da/panel_picks.xml new file mode 100644 index 0000000000..ee3c59b88a --- /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_place_profile.xml b/indra/newview/skins/default/xui/da/panel_place_profile.xml new file mode 100644 index 0000000000..24316fea14 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="Til"/> + <string name="off" value="Fra"/> + <string name="anyone" value="Enhver"/> + <string name="available" value="ledig"/> + <string name="allocated" value="fordelt"/> + <string name="title_place" value="Sted profil"/> + <string name="title_teleport_history" value="Teleport historik sted"/> + <string name="not_available" value="(N\A)"/> + <string name="unknown" value="(ukendt)"/> + <string name="public" value="(offentlig)"/> + <string name="none_text" value="(ingen)"/> + <string name="sale_pending_text" value="(Salg igang)"/> + <string name="group_owned_text" value="(Gruppe ejet)"/> + <string name="price_text" value="L$"/> + <string name="area_text" value="m²"/> + <string name="all_residents_text" value="Alle beboere"/> + <string name="group_text" value="Gruppe"/> + <string name="can_resell"> + Købt land i denne region må sælges videre + </string> + <string name="can_not_resell"> + Købt land i denne region må ikke sælges videre + </string> + <string name="can_change"> + Købt jord i denne region må gerne samles eller opdeles. + </string> + <string name="can_not_change"> + Købt jord i denne region må ikke samles eller opdeles. + </string> + <string name="server_update_text"> + Information om dette sted er ikke tilgængelig før en server opdatering. + </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 adgangsbegrænsninger. Check venligst dine rettigheder med stedets ejer. + </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="owner_label" value="Ejer:"/> + <text name="maturity_value" value="ukendt"/> + <accordion name="advanced_info_accordion"> + <accordion_tab name="parcel_characteristics_tab" title="Parcel"> + <panel> + <text name="rating_label" value="Rating:"/> + <text name="rating_value" value="ukendt"/> + <text name="voice_label" value="Stem:"/> + <text name="voice_value" value="Til"/> + <text name="fly_label" value="Flyve:"/> + <text name="fly_value" value="Til"/> + <text name="push_label" value="Skub:"/> + <text name="push_value" value="Fra"/> + <text name="build_label" value="Byg:"/> + <text name="build_value" value="Til"/> + <text name="scripts_label" value="Scripts:"/> + <text name="scripts_value" value="Til"/> + <text name="damage_label" value="Skade:"/> + <text name="damage_value" value="Fra"/> + <button label="Om land" name="about_land_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="region_information_tab" title="Region"> + <panel> + <text name="region_name_label" value="Region:"/> + <text name="region_type_label" value="Type:"/> + <text name="region_rating_label" value="Rating:"/> + <text name="region_owner_label" value="Ejer:"/> + <text name="region_group_label" value="Gruppe:"/> + <button label="Region/Estate" name="region_info_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="estate_information_tab" title="Estate"> + <panel> + <text name="estate_name_label" value="Estate:"/> + <text name="estate_rating_label" value="Rating:"/> + <text name="estate_owner_label" value="Ejer:"/> + <text name="covenant_label" value="Regler:"/> + </panel> + </accordion_tab> + <accordion_tab name="sales_tab" title="Til salg"> + <panel> + <text name="sales_price_label" value="Pris:"/> + <text name="area_label" value="Areal:"/> + <text name="traffic_label" value="Trafik:"/> + <text name="primitives_label" value="Prims:"/> + <text name="parcel_scripts_label" value="Scripts:"/> + <text name="terraform_limits_label" value="Terraform begrænsninger:"/> + <text name="subdivide_label" value="Mulighed for at Opdele/samle:"/> + <text name="resale_label" value="Mulighed for videresalg:"/> + <text name="sale_to_label" value="Til salg til:"/> + </panel> + </accordion_tab> + </accordion> + </panel> + </scroll_container> +</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 0000000000..052bf749cb --- /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_advanced.xml b/indra/newview/skins/default/xui/da/panel_preferences_advanced.xml index e8f30c185d..87b749b4eb 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_advanced.xml @@ -1,48 +1,48 @@ -<?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="Talebobler" name="bubble_text_chat"/>
- <color_swatch name="background" tool_tip="Vælg farve for talebobler"/>
- <slider label="Gennemsigtighed" name="bubble_chat_opacity"/>
- <text name="AspectRatioLabel1" tool_tip="bredde / højde">
- Format
- </text>
- <combo_box name="aspect_ratio" tool_tip="bredde/ højde">
- <combo_box.item label="4:3 (Standard CRT)" name="item1"/>
- <combo_box.item label="5:4 (1280x1024 LCD)" name="item2"/>
- <combo_box.item label="8:5 (Widescreen)" name="item3"/>
- <combo_box.item label="16:9 (Widescreen)" name="item4"/>
- </combo_box>
- <check_box label="Registrér automatisk" name="aspect_auto_detect"/>
- <text name="heading1">
- Kamera:
- </text>
- <slider label="Synsvinkel" name="camera_fov"/>
- <slider label="Distance" name="camera_offset_scale"/>
- <text name="heading2">
- Automatisk positionering for:
- </text>
- <check_box label="Byg/Redigér" name="edit_camera_movement" tool_tip="Benyt automatisk kamera positionering ved start og slut af editerings modus"/>
- <check_box label="Udseende" name="appearance_camera_movement" tool_tip="Benyt automatisk kamera positionering ved redigering"/>
- <text name="heading3">
- Avatarer:
- </text>
- <check_box label="Vis avatar i førsteperson" name="first_person_avatar_visible"/>
- <check_box label="Piletaster bruges altid til bevægelse" name="arrow_keys_move_avatar_check"/>
- <check_box label="Tast-tast-hold for at løbe" name="tap_tap_hold_to_run"/>
- <check_box label="Bevæg avatarlæber når der tales" name="enable_lip_sync"/>
- <check_box label="Vis scriptfejl" name="show_script_errors"/>
- <radio_group name="show_location">
- <radio_item label="I chat" name="0"/>
- <radio_item label="I et vindue" name="1"/>
- </radio_group>
- <check_box label="Knap til aktivering af mikrofon:" name="push_to_talk_toggle_check" tool_tip="I walkie-talkie-modus sendes stemme kun når knappen er trykket ned, ellers vil tryk på knap tænde og slukke mikrofon."/>
- <line_editor label="Brug walkie-talkie modus" name="modifier_combo"/>
- <button label="Angiv taste" name="set_voice_hotkey_button"/>
- <button label="Midterste museknap" name="set_voice_middlemouse_button"/>
-</panel>
+<?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="Talebobler" name="bubble_text_chat"/> + <color_swatch name="background" tool_tip="Vælg farve for talebobler"/> + <slider label="Gennemsigtighed" name="bubble_chat_opacity"/> + <text name="AspectRatioLabel1" tool_tip="bredde / højde"> + Format + </text> + <combo_box name="aspect_ratio" tool_tip="bredde/ højde"> + <combo_box.item label="4:3 (Standard CRT)" name="item1"/> + <combo_box.item label="5:4 (1280x1024 LCD)" name="item2"/> + <combo_box.item label="8:5 (Widescreen)" name="item3"/> + <combo_box.item label="16:9 (Widescreen)" name="item4"/> + </combo_box> + <check_box label="Registrér automatisk" name="aspect_auto_detect"/> + <text name="heading1"> + Kamera: + </text> + <slider label="Synsvinkel" name="camera_fov"/> + <slider label="Distance" name="camera_offset_scale"/> + <text name="heading2"> + Automatisk positionering for: + </text> + <check_box label="Byg/Redigér" name="edit_camera_movement" tool_tip="Benyt automatisk kamera positionering ved start og slut af editerings modus"/> + <check_box label="Udseende" name="appearance_camera_movement" tool_tip="Benyt automatisk kamera positionering ved redigering"/> + <text name="heading3"> + Avatarer: + </text> + <check_box label="Vis avatar i førsteperson" name="first_person_avatar_visible"/> + <check_box label="Piletaster bruges altid til bevægelse" name="arrow_keys_move_avatar_check"/> + <check_box label="Tast-tast-hold for at løbe" name="tap_tap_hold_to_run"/> + <check_box label="Bevæg avatarlæber når der tales" name="enable_lip_sync"/> + <check_box label="Vis scriptfejl" name="show_script_errors"/> + <radio_group name="show_location"> + <radio_item label="I chat" name="0"/> + <radio_item label="I et vindue" name="1"/> + </radio_group> + <check_box label="Knap til aktivering af mikrofon:" name="push_to_talk_toggle_check" tool_tip="I walkie-talkie-modus sendes stemme kun når knappen er trykket ned, ellers vil tryk på knap tænde og slukke mikrofon."/> + <line_editor label="Brug walkie-talkie modus" name="modifier_combo"/> + <button label="Angiv taste" name="set_voice_hotkey_button"/> + <button label="Midterste museknap" name="set_voice_middlemouse_button"/> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/da/panel_preferences_alerts.xml index cc3972238e..4791033757 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_alerts.xml @@ -1,14 +1,14 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Popups" name="popups" title="Popups">
- <text name="tell_me_label">
- Vis mig når:
- </text>
- <check_box label="Når jeg bruger eller får L$" name="notify_money_change_checkbox"/>
- <check_box label="Når mine venner logger af eller på" name="friends_online_notify_checkbox"/>
- <text name="show_label">
- Vis altid disse beskeder:
- </text>
- <text name="dont_show_label">
- Vis aldrig disse beskeder:
- </text>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Popups" name="popups" title="Popups"> + <text name="tell_me_label"> + Vis mig når: + </text> + <check_box label="Når jeg bruger eller får L$" name="notify_money_change_checkbox"/> + <check_box label="Når mine venner logger af eller på" name="friends_online_notify_checkbox"/> + <text name="show_label"> + Vis altid disse beskeder: + </text> + <text name="dont_show_label"> + Vis aldrig disse beskeder: + </text> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml index b141998451..609512bc1b 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml @@ -1,42 +1,46 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Tekst chat" name="chat">
- <radio_group name="chat_font_size">
- <radio_item label="Lille" name="radio"/>
- <radio_item label="Mellem" name="radio2"/>
- <radio_item label="Stor" name="radio3"/>
- </radio_group>
- <color_swatch label="Dig" name="user"/>
- <text name="text_box1">
- Dig
- </text>
- <color_swatch label="Andre" name="agent"/>
- <text name="text_box2">
- Andre
- </text>
- <color_swatch label="IM" name="im"/>
- <text name="text_box3">
- IM
- </text>
- <color_swatch label="System" name="system"/>
- <text name="text_box4">
- System
- </text>
- <color_swatch label="Fejl" name="script_error"/>
- <text name="text_box5">
- Fejl
- </text>
- <color_swatch label="Objekter" name="objects"/>
- <text name="text_box6">
- Objekter
- </text>
- <color_swatch label="Ejer" name="owner"/>
- <text name="text_box7">
- Ejer
- </text>
- <color_swatch label="URL'er" name="links"/>
- <text name="text_box9">
- URL'er
- </text>
- <check_box initial_value="true" label="Afspil skrive animation ved chat" name="play_typing_animation"/>
- <check_box label="Send e-mail til mig når jeg modtager IM og er offline" name="send_im_to_email"/>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Tekst chat" name="chat"> + <radio_group name="chat_font_size"> + <radio_item label="Lille" name="radio"/> + <radio_item label="Mellem" name="radio2"/> + <radio_item label="Stor" name="radio3"/> + </radio_group> + <color_swatch label="Dig" name="user"/> + <text name="text_box1"> + Dig + </text> + <color_swatch label="Andre" name="agent"/> + <text name="text_box2"> + Andre + </text> + <color_swatch label="IM" name="im"/> + <text name="text_box3"> + IM + </text> + <color_swatch label="System" name="system"/> + <text name="text_box4"> + System + </text> + <color_swatch label="Fejl" name="script_error"/> + <text name="text_box5"> + Fejl + </text> + <color_swatch label="Objekter" name="objects"/> + <text name="text_box6"> + Objekter + </text> + <color_swatch label="Ejer" name="owner"/> + <text name="text_box7"> + Ejer + </text> + <color_swatch label="URL'er" name="links"/> + <text name="text_box9"> + URL'er + </text> + <check_box initial_value="true" label="Afspil skrive animation ved chat" name="play_typing_animation"/> + <check_box label="Send e-mail til mig når jeg modtager IM og er offline" name="send_im_to_email"/> + <radio_group name="chat_window" tool_tip="Vis dine personlige beskeder i separate vinduer eller i ét vindue med mange faner (ændring kræver genstart)"> + <radio_item label="Flere vinduer" name="radio"/> + <radio_item label="Et vindue" name="radio2"/> + </radio_group> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_general.xml b/indra/newview/skins/default/xui/da/panel_preferences_general.xml index ed23a9a706..e17ccca4a1 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_general.xml @@ -1,85 +1,62 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Generelt" name="general_panel"> - <combo_box name="start_location_combo"> - <combo_box.item name="MyHome" tool_tip="Log ind til min hjemme lokation som standard." label="Mit hjem" /> - <combo_box.item name="MyLastLocation" tool_tip="Log ind til min sidste lokation som standard." label="Min sidste lokation" /> - </combo_box> - <check_box label="Vis start lokation på login billedet" name="show_location_checkbox"/> - <combo_box name="fade_out_combobox"> - <combo_box.item name="Never" label="Aldrig"/> - <combo_box.item name="Show Temporarily" label="Vis midlertidigt"/> - <combo_box.item name="Always" label="Altid"/> - </combo_box> - <check_box label="Små avatar navne" name="small_avatar_names_checkbox"/> - <check_box label="Skjul mit navn på min skærm" name="show_my_name_checkbox"/> - <text name="group_titles_textbox"> - Gruppe titler: - </text> - <check_box label="Skjul alle gruppe titler" name="show_all_title_checkbox"/> - <check_box label="Gem min gruppe titel" name="show_my_title_checkbox"/> - <color_swatch label="" name="effect_color_swatch" tool_tip="Klik for at åbne farvevælger"/> - <text name="UI Size:"> - UI Størrelse: + <text name="language_textbox"> + Sprog: </text> - <check_box label="Brug opløsnings uafhængig skalering" name="ui_auto_scale"/> - <spinner label="Tid før inaktiv:" name="afk_timeout_spinner"/> - <check_box label="Giv besked når Linden dollars (L$) bliver brugt eller modtaget" name="notify_money_change_checkbox"/> - <text name="maturity_desired_label"> - Rating: + <combo_box name="language_combobox"> + <combo_box.item label="System standard" name="System Default Language"/> + <combo_box.item label="English (Engelsk)" name="English"/> + <combo_box.item label="Dansk - Beta" name="Danish"/> + <combo_box.item label="Deutsch (Tysk) - Beta" name="Deutsch(German)"/> + <combo_box.item label="Español (Spansk) - Beta" name="Spanish"/> + <combo_box.item label="Français (Fransk) - Beta" name="French"/> + <combo_box.item label="Polski (Polsk) - Beta" name="Polish"/> + <combo_box.item label="Portugués (Portugisisk) - Beta" name="Portugese"/> + <combo_box.item label="日本語 (Japansk) - Beta" name="(Japanese)"/> + </combo_box> + <text name="language_textbox2"> + (Kræver genstart) </text> <text name="maturity_desired_prompt"> Jeg ønsker adgang til inhold med rating: </text> + <text name="maturity_desired_textbox"/> <combo_box name="maturity_desired_combobox"> - <combo_box.item name="Desired_Adult" label="PG, Mature og Adult"/> - <combo_box.item name="Desired_Mature" label="PG and Mature"/> - <combo_box.item name="Desired_PG" label="PG"/> + <combo_box.item label="PG, Mature og Adult" name="Desired_Adult"/> + <combo_box.item label="PG and 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"> Start lokation: </text> - <text name="show_names_textbox"> - Vis navne: - </text> + <combo_box name="start_location_combo"> + <combo_box.item label="Min sidste lokation" name="MyLastLocation" tool_tip="Log ind til min sidste lokation som standard."/> + <combo_box.item label="Mit hjem" name="MyHome" tool_tip="Log ind til min hjemme lokation som standard."/> + </combo_box> + <check_box initial_value="true" label="Vis start lokation på login billedet" name="show_location_checkbox"/> + <text name="name_tags_textbox"> + Navneskilte: + </text> + <radio_group name="Name_Tag_Preference"> + <radio_item label="Skjul" name="radio"/> + <radio_item label="Vis" name="radio2"/> + <radio_item label="Vis et øjeblik" name="radio3"/> + </radio_group> + <check_box label="Vis mit navn" name="show_my_name_checkbox1"/> + <check_box initial_value="true" label="Små avatar navne" name="small_avatar_names_checkbox"/> + <check_box label="Gruppetitler" name="show_all_title_checkbox1"/> <text name="effects_color_textbox"> Farve til mine effekter: </text> + <color_swatch label="" name="effect_color_swatch" tool_tip="Klik for at åbne farvevælger"/> + <text name="title_afk_text"> + Tid inden "væk": + </text> + <spinner label="Tid før inaktiv:" name="afk_timeout_spinner"/> <text name="seconds_textbox"> sekunder </text> - <text name="crash_report_textbox"> - Nedbrudsrapporter: + <text name="text_box3"> + Optaget autosvar: </text> - <text name="language_textbox"> - Sprog: - </text> - <text name="language_textbox2"> - (Kræver genstart for at virke optimalt) - </text> - <string name="region_name_prompt"> - <Skriv regions navn> - </string> - <combo_box name="crash_behavior_combobox"> - <combo_box.item name="Askbeforesending" label="Bed om bekræftigelse"/> - <combo_box.item name="Alwayssend" label="Send altid"/> - <combo_box.item name="Neversend" label="Send aldrig"/> - </combo_box> - <combo_box name="language_combobox"> - <combo_box.item name="System Default Language" label="System standard"/> - <combo_box.item name="English" label="English (Engelsk)"/> - <combo_box.item name="Danish" label="Dansk - Beta"/> - <combo_box.item name="Deutsch(German)" label="Deutsch (Tysk) - Beta"/> - <combo_box.item name="Spanish" label="Español (Spansk) - Beta"/> - <combo_box.item name="French" label="Français (Fransk) - Beta"/> - <combo_box.item name="Hungarian" label="Magyar (Ungarsk) - Beta"/> - <combo_box.item name="Polish" label="Polski (Polsk) - Beta"/> - <combo_box.item name="Portugese" label="Portugués (Portugisisk) - Beta"/> - <combo_box.item name="Chinese" label="中文 (简体) (Kinesisk) - Beta"/> - <combo_box.item name="(Japanese)" label="日本語 (Japansk) - Beta"/> - <combo_box.item name="(Korean)" label="한국어 (Koreansk) - Beta"/> - </combo_box> - <check_box label="Del sprog med objekter" name="language_is_public" tool_tip="Dette lader objekter i verden vide hvad dit foretrukne sprog er."/> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml index 4dac7be413..bb1cacc773 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml @@ -1,42 +1,18 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Grafik" name="Display panel"> - <button label="?" name="GraphicsPreferencesHelpButton" /> - <check_box label="Kør Second Life i et vindue" name="windowed mode" /> - <text_editor name="FullScreenInfo"> - Hvis dette ikke er valgt kører Second Life i Fuld skærm. - </text_editor> - <text name="WindowSizeLabel"> - Opløsning: + <text name="UI Size:"> + UI størrelse: </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"> - Skærm opløsning: - </text> - <text name="AspectRatioLabel1" tool_tip="bredde / højde"> - Format: - </text> - <combo_box name="aspect_ratio" tool_tip="bredde/ højde"> - <combo_box.item name="4:3(StandardCRT)" label="4:3 (Standard CRT)" /> - <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="Auto-detect format" name="aspect_auto_detect" /> - <text name="HigherText"> - Kvalitet og - </text> - <text name="QualityText"> - Ydelse: + <text name="QualitySpeed"> + Kvalitet og hastighed: </text> <text name="FasterText"> Hurtigere </text> + <text name="BetterText"> + Bedre + </text> + <slider label="" name="QualityPerformanceSelection"/> <text name="ShadersPrefText"> Lav </text> @@ -49,99 +25,82 @@ <text name="ShadersPrefText4"> Ultra </text> - <text name="HigherText2"> - Højere - </text> - <text name="QualityText2"> - Kvalitet - </text> - <slider label="" name="QualityPerformanceSelection" /> - <check_box label="Manuelt" name="CustomSettings" /> - <panel name="CustomGraphics Panel"> - <text name="ShadersText"> - Overflader: - </text> - <check_box label="Glatte flader og skin" name="BumpShiny" /> - <check_box label="Basale flader" name="BasicShaders" - tool_tip="Ved at slå dette valg fra, kan det forhindres at visse grafikkort drivere crasher." /> - <check_box label="Atmosfæriske flader" name="WindLightUseAtmosShaders" /> - <check_box label="Reflektioner i vand" name="Reflections" /> - <text name="ReflectionDetailText"> - Spejlnings detaljer: - </text> - <radio_group name="ReflectionDetailRadio"> - <radio_item name="0" label="Terræn og træer" /> - <radio_item name="1" label="Alle statiske objekter" /> - <radio_item name="2" label="Alle avatarer og objekter" /> - <radio_item name="3" label="Alt" /> - </radio_group> - <text name="AvatarRenderingText"> - Avatar gengivelse - </text> - <check_box label="Mini-figurer på lang afstand" name="AvatarImpostors" /> - <check_box label="Hardware Skinning" name="AvatarVertexProgram" /> - <check_box label="Avatar tøj" name="AvatarCloth" /> - <text name="DrawDistanceMeterText1"> - m - </text> - <text name="DrawDistanceMeterText2"> - m - </text> - <slider label="Maks. visnings-afstand:" name="DrawDistance" /> - <slider label="Maks. antal partikler:" name="MaxParticleCount" /> - <slider label="Efterbehandlingskvalitet:" name="RenderPostProcess" /> - <text name="MeshDetailText"> - Netmaske detaljer: - </text> - <slider label=" Objekter:" name="ObjectMeshDetail" /> - <slider label=" Flexiprims:" name="FlexibleMeshDetail" /> - <slider label=" Træer:" name="TreeMeshDetail" /> - <slider label=" Avatarer:" name="AvatarMeshDetail" /> - <slider label=" Terræn:" name="TerrainMeshDetail" /> - <slider label=" Himmel:" name="SkyMeshDetail" /> - <text name="PostProcessText"> - Lav - </text> - <text name="ObjectMeshDetailText"> - Lav - </text> - <text name="FlexibleMeshDetailText"> - Lav - </text> - <text name="TreeMeshDetailText"> - Lav - </text> - <text name="AvatarMeshDetailText"> - Lav - </text> - <text name="TerrainMeshDetailText"> - Lav - </text> - <text name="SkyMeshDetailText"> - Lav - </text> - <text name="LightingDetailText"> - Lys detaljer: - </text> - <radio_group name="LightingDetailRadio"> - <radio_item name="SunMoon" label="Kun sol og måne" /> - <radio_item name="LocalLights" label="Lys i nærheden" /> - </radio_group> - <text name="TerrainDetailText"> - Terræn detaljer: - </text> - <radio_group name="TerrainDetailRadio"> - <radio_item name="0" label="Lav" /> - <radio_item name="2" label="Høj" /> - </radio_group> + <panel label="CustomGraphics" name="CustomGraphics Panel"> + <text name="ShadersText"> + Overflader: + </text> + <check_box initial_value="true" label="Glatte flader og skin" name="BumpShiny"/> + <check_box initial_value="true" label="Basale flader" name="BasicShaders" tool_tip="Ved at slå dette valg fra, kan det forhindres at visse grafikkort drivere crasher."/> + <check_box initial_value="true" label="Atmosfæriske flader" name="WindLightUseAtmosShaders"/> + <check_box initial_value="true" label="Reflektioner i vand" name="Reflections"/> + <text name="ReflectionDetailText"> + Spejlnings detaljer: + </text> + <radio_group name="ReflectionDetailRadio"> + <radio_item label="Terræn og træer" name="0"/> + <radio_item label="Alle statiske objekter" name="1"/> + <radio_item label="Alle avatarer og objekter" name="2"/> + <radio_item label="Alt" name="3"/> + </radio_group> + <text name="AvatarRenderingText"> + Avatar gengivelse + </text> + <check_box initial_value="true" label="Mini-figurer på lang afstand" name="AvatarImpostors"/> + <check_box initial_value="true" label="Hardware Skinning" name="AvatarVertexProgram"/> + <check_box initial_value="true" label="Avatar tøj" name="AvatarCloth"/> + <slider label="Maks. visnings-afstand:" name="DrawDistance"/> + <text name="DrawDistanceMeterText2"> + m + </text> + <slider label="Maks. antal partikler:" name="MaxParticleCount"/> + <slider label="Efterbehandlingskvalitet:" name="RenderPostProcess"/> + <text name="MeshDetailText"> + Netmaske detaljer: + </text> + <slider label=" Objekter:" name="ObjectMeshDetail"/> + <slider label=" Flexiprims:" name="FlexibleMeshDetail"/> + <slider label=" Træer:" name="TreeMeshDetail"/> + <slider label=" Avatarer:" name="AvatarMeshDetail"/> + <slider label=" Terræn:" name="TerrainMeshDetail"/> + <slider label=" Himmel:" name="SkyMeshDetail"/> + <text name="PostProcessText"> + Lav + </text> + <text name="ObjectMeshDetailText"> + Lav + </text> + <text name="FlexibleMeshDetailText"> + Lav + </text> + <text name="TreeMeshDetailText"> + Lav + </text> + <text name="AvatarMeshDetailText"> + Lav + </text> + <text name="TerrainMeshDetailText"> + Lav + </text> + <text name="SkyMeshDetailText"> + Lav + </text> + <text name="LightingDetailText"> + Lys detaljer: + </text> + <radio_group name="LightingDetailRadio"> + <radio_item label="Kun sol og måne" name="SunMoon"/> + <radio_item label="Lys i nærheden" name="LocalLights"/> + </radio_group> + <text name="TerrainDetailText"> + Terræn detaljer: + </text> + <radio_group name="TerrainDetailRadio"> + <radio_item label="Lav" name="0"/> + <radio_item label="Høj" name="2"/> + </radio_group> </panel> - <button label="Anbefalede indstillinger" name="Defaults" /> - <button label="Hardware valg" label_selected="Hardware Options" - 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="Benyt" label_selected="Benyt" name="Apply"/> + <button label="Nulstil" name="Defaults"/> + <button label="Avanceret" name="Advanced"/> + <button label="Hardware" label_selected="Hardware" name="GraphicsHardwareButton"/> </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 c62beac899..c382b222ea 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 e826e65315..2dd0b71d8f 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_preferences_sound.xml b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml index c032e414c1..ce77018f72 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml @@ -1,38 +1,38 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel label="Lyde" name="Preference Media panel">
- <slider label="Generel" name="System Volume"/>
- <check_box initial_value="true" label="Sluk lyd når vinduet er minimeret" name="mute_when_minimized"/>
- <slider label="Omgivelser" name="Wind Volume"/>
- <slider label="Knapper" name="UI Volume"/>
- <slider label="Media" name="Media Volume"/>
- <slider label="Effekter" name="SFX Volume"/>
- <slider label="Musik" name="Music Volume"/>
- <check_box label="Tale" name="enable_voice_check"/>
- <slider label="Tale" name="Voice Volume"/>
- <text name="Listen from">
- Hør stemmer fra:
- </text>
- <radio_group name="ear_location">
- <radio_item label="Kamera position" name="0"/>
- <radio_item label="Avatar position" name="1"/>
- </radio_group>
- <button label="Input/Output enheder" name="device_settings_btn"/>
- <panel label="Enhedsopsætning" name="device_settings_panel">
- <panel.string name="default_text">
- Standard
- </panel.string>
- <text name="Input">
- Input
- </text>
- <text name="My volume label">
- Min lydstyrke:
- </text>
- <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Ændre lydstyrke med denne skyder"/>
- <text name="wait_text">
- Vent venligst
- </text>
- <text name="Output">
- Output
- </text>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Lyde" name="Preference Media panel"> + <slider label="Generel" name="System Volume"/> + <check_box initial_value="true" label="Sluk lyd når vinduet er minimeret" name="mute_when_minimized"/> + <slider label="Omgivelser" name="Wind Volume"/> + <slider label="Knapper" name="UI Volume"/> + <slider label="Media" name="Media Volume"/> + <slider label="Effekter" name="SFX Volume"/> + <slider label="Musik" name="Music Volume"/> + <check_box label="Tale" name="enable_voice_check"/> + <slider label="Tale" name="Voice Volume"/> + <text name="Listen from"> + Hør stemmer fra: + </text> + <radio_group name="ear_location"> + <radio_item label="Kamera position" name="0"/> + <radio_item label="Avatar position" name="1"/> + </radio_group> + <button label="Input/Output enheder" name="device_settings_btn"/> + <panel label="Enhedsopsætning" name="device_settings_panel"> + <panel.string name="default_text"> + Standard + </panel.string> + <text name="Input"> + Input + </text> + <text name="My volume label"> + Min lydstyrke: + </text> + <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Ændre lydstyrke med denne skyder"/> + <text name="wait_text"> + Vent venligst + </text> + <text name="Output"> + Output + </text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml new file mode 100644 index 0000000000..987ba2a3f8 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="Godkendt side"/> + </layout_panel> + <layout_panel> + <icon name="media_secure_lock_flag" tool_tip="Sikker 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="Filmafspilning fremskridt"/> + </layout_panel> + <layout_panel name="media_volume"> + <button name="media_mute_button" tool_tip="Sluk for dette media"/> + <slider name="volume_slider" tool_tip="Media lydstyrke"/> + </layout_panel> + </layout_stack> + <layout_stack> + <panel name="media_progress_indicator"> + <progress_bar name="media_progress_bar" tool_tip="Media hentes"/> + </panel> + </layout_stack> +</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 0000000000..ef7110ffcf --- /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_profile_view.xml b/indra/newview/skins/default/xui/da/panel_profile_view.xml new file mode 100644 index 0000000000..23b9d3ba83 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="(Henter...)"/> + <text name="status" value="Online"/> + <tab_container name="tabs"> + <panel label="PROFIL" name="panel_profile"/> + <panel label="FAVORITTER" name="panel_picks"/> + <panel label="NOTER & PRIVATLIV" name="panel_notes"/> + </tab_container> +</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 394664f1f1..0e8ab7556f 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 07e857163a..08e2d1e263 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_estate.xml b/indra/newview/skins/default/xui/da/panel_region_estate.xml index 5d0799cab9..d726fedfe9 100644 --- a/indra/newview/skins/default/xui/da/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/da/panel_region_estate.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="Estate" name="Estate"> <text name="estate_help_text"> Ændringer i dette afsnit vil påvirke alle @@ -11,61 +11,59 @@ regioner i dette estate. (ukendt) </text> <text name="owner_text"> - Ejer: + Estate ejer: </text> <text name="estate_owner"> (ukendt) </text> - <check_box label="Brug global tid" name="use_global_time_check" /> - <button label="?" name="use_global_time_help" /> - <check_box label="Sol i fast position" name="fixed_sun_check" /> - <button label="?" name="fixed_sun_help" /> - <slider label="Fase" name="sun_hour_slider" /> - <check_box label="Tillad offentlig adgang" name="externally_visible_check" /> - <button label="?" name="externally_visible_help" /> + <check_box label="Brug global tid" name="use_global_time_check"/> + <button label="?" name="use_global_time_help"/> + <check_box label="Sol i fast position" name="fixed_sun_check"/> + <button label="?" name="fixed_sun_help"/> + <slider label="Fase" name="sun_hour_slider"/> + <check_box label="Tillad offentlig adgang" name="externally_visible_check"/> + <button label="?" name="externally_visible_help"/> <text name="Only Allow"> Begræns adgang til: </text> - <check_box label="Beboere med betalingsoplysninger" name="limit_payment" - tool_tip="Blokér for brugere uden identifikation" /> - <check_box label="Beboere der er godkendt som voksne" name="limit_age_verified" - tool_tip="Blokér for brugere der ikke har verificéret deres alder. Se support.secondlife.com for mere information." /> - <check_box label="Tillad stemme chat" name="voice_chat_check" /> - <button label="?" name="voice_chat_help" /> - <check_box label="Tillad direkte teleport" name="allow_direct_teleport" /> - <button label="?" name="allow_direct_teleport_help" /> + <check_box label="Beboere med betalingsoplysninger" name="limit_payment" tool_tip="Blokér for brugere uden identifikation"/> + <check_box label="Beboere der er godkendt som voksne" name="limit_age_verified" tool_tip="Blokér for brugere der ikke har verificéret deres alder. Se [SUPPORT_SITE] for mere information."/> + <check_box label="Tillad stemme chat" name="voice_chat_check"/> + <button label="?" name="voice_chat_help"/> + <check_box label="Tillad direkte teleport" name="allow_direct_teleport"/> + <button label="?" name="allow_direct_teleport_help"/> <text name="abuse_email_text" width="260"> Send beskeder misbrug til email adresse: </text> <string name="email_unsupported"> Ikke supporteret </string> - <button label="?" name="abuse_email_address_help" /> - <button label="Gem" name="apply_btn" /> - <button label="Smid bruger ud fra estate..." name="kick_user_from_estate_btn" /> - <button label="Send besked til estate..." name="message_estate_btn" /> + <button label="?" name="abuse_email_address_help"/> + <button label="Gem" name="apply_btn"/> + <button label="Smid bruger ud fra estate..." name="kick_user_from_estate_btn"/> + <button label="Send besked til estate..." name="message_estate_btn"/> <text name="estate_manager_label"> Administratorer: </text> - <button label="?" name="estate_manager_help" /> - <button label="Fjern..." name="remove_estate_manager_btn" /> - <button label="Tilføj..." name="add_estate_manager_btn" /> + <button label="?" name="estate_manager_help"/> + <button label="Fjern..." name="remove_estate_manager_btn"/> + <button label="Tilføj..." name="add_estate_manager_btn"/> <text name="allow_resident_label"> Godkendte beboere: </text> - <button label="?" name="allow_resident_help" /> - <button label="Fjern..." name="remove_allowed_avatar_btn" /> - <button label="Tilføj..." name="add_allowed_avatar_btn" /> + <button label="?" name="allow_resident_help"/> + <button label="Fjern..." name="remove_allowed_avatar_btn"/> + <button label="Tilføj..." name="add_allowed_avatar_btn"/> <text name="allow_group_label"> Tilladte grupper: </text> - <button label="?" name="allow_group_help" /> - <button label="Fjern..." name="remove_allowed_group_btn" /> - <button label="Tilføj..." name="add_allowed_group_btn" /> + <button label="?" name="allow_group_help"/> + <button label="Fjern..." name="remove_allowed_group_btn"/> + <button label="Tilføj..." name="add_allowed_group_btn"/> <text name="ban_resident_label"> Blokérede beboere: </text> - <button label="?" name="ban_resident_help" /> - <button label="Fjern..." name="remove_banned_avatar_btn" /> - <button label="Tilføj..." name="add_banned_avatar_btn" /> + <button label="?" name="ban_resident_help"/> + <button label="Fjern..." name="remove_banned_avatar_btn"/> + <button label="Tilføj..." name="add_banned_avatar_btn"/> </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 65c4743da0..fc597eee15 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 0000000000..0bdfa89d3b --- /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 0000000000..ab4a2a134e --- /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_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml new file mode 100644 index 0000000000..5c0bd829d8 --- /dev/null +++ b/indra/newview/skins/default/xui/da/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="Side bjælke"/> + <button name="show_help" tool_tip="Vis hjælp"/> +</panel> 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 0000000000..f25639d56f --- /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_status_bar.xml b/indra/newview/skins/default/xui/da/panel_status_bar.xml index 20e72827f2..4e45b7e328 100644 --- a/indra/newview/skins/default/xui/da/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/da/panel_status_bar.xml @@ -1,44 +1,29 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <text name="ParcelNameText" - tool_tip="Navn på det land/parcel som du står på. Klik på teksten for yderligere info."> - parcel name goes here - </text> - <text name="BalanceText" tool_tip="Konto balance"> - Henter... - </text> - <button label="" label_selected="" name="buycurrency" tool_tip="Køb valuta" /> - <text name="TimeText" tool_tip="Nuværende [SECOND_LIFE] tid"> - 12:00 - </text> - <string name="StatBarDaysOfWeek"> + <panel.string name="StatBarDaysOfWeek"> Søndag:Mandag:Tirsdag:Onsdag:Torsdag:Fredag:Lørdag - </string> - <string name="StatBarMonthsOfYear"> + </panel.string> + <panel.string name="StatBarMonthsOfYear"> Januar:Februar:Marts:April:Maj:Juni:Juli:August:September:Oktober:November:December - </string> - <button label="" label_selected="" name="scriptout" tool_tip="Script advarsler og fejl" /> - <button label="" label_selected="" name="health" tool_tip="Helbred" /> - <text name="HealthText" tool_tip="Helbred"> - 100% - </text> - <button label="" label_selected="" name="no_fly" tool_tip="Flyvning ikke tilladt" /> - <button label="" label_selected="" name="no_build" - tool_tip="Bygning og placering af objekter ikke tilladt" /> - <button label="" label_selected="" name="no_scripts" - tool_tip="Afvikling af scripts ikke tilladt" /> - <button label="" label_selected="" name="restrictpush" - tool_tip="Ikke tilladt at skubbe" /> - <button label="" label_selected="" name="status_no_voice" - tool_tip="Stemme chat ikke tilgængelig" /> - <button label="" label_selected="" name="buyland" tool_tip="Køb denne parcel" /> - <button label="" name="menubar_search_bevel_bg" /> - <line_editor label="Søg" name="search_editor" tool_tip="Søg [SECOND_LIFE]" /> - <button label="" label_selected="" name="search_btn" tool_tip="Søg [SECOND_LIFE]" /> - <string name="packet_loss_tooltip"> + </panel.string> + <panel.string name="packet_loss_tooltip"> Packet Loss - </string> - <string name="bandwidth_tooltip"> + </panel.string> + <panel.string name="bandwidth_tooltip"> Båndbredde - </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="My Balance: Click to buy more L$"/> + <text name="TimeText" tool_tip="Nuværende tid (Pacific)"> + 12:00 + </text> + <button name="volume_btn" tool_tip="Kontrol for generel lydstyrke"/> </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 0000000000..64b5ecf5cf --- /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/panel_world_map.xml b/indra/newview/skins/default/xui/da/panel_world_map.xml index f8bdaa9953..bea5ea6b36 100644 --- a/indra/newview/skins/default/xui/da/panel_world_map.xml +++ b/indra/newview/skins/default/xui/da/panel_world_map.xml @@ -1,57 +1,57 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="world_map">
- <panel.string name="Loading">
- Henter...
- </panel.string>
- <panel.string name="InvalidLocation">
- Ugyldig lokation
- </panel.string>
- <panel.string name="world_map_north">
- N
- </panel.string>
- <panel.string name="world_map_east">
- Ø
- </panel.string>
- <panel.string name="world_map_west">
- V
- </panel.string>
- <panel.string name="world_map_south">
- S
- </panel.string>
- <panel.string name="world_map_southeast">
- SØ
- </panel.string>
- <panel.string name="world_map_northeast">
- NØ
- </panel.string>
- <panel.string name="world_map_southwest">
- SV
- </panel.string>
- <panel.string name="world_map_northwest">
- NV
- </panel.string>
- <text label="N" name="floater_map_north" text="N">
- N
- </text>
- <text label="Ø" name="floater_map_east" text="Ø">
- Ø
- </text>
- <text label="V" name="floater_map_west" text="V">
- V
- </text>
- <text label="S" name="floater_map_south" text="S">
- S
- </text>
- <text label="SØ" name="floater_map_southeast" text="SØ">
- SØ
- </text>
- <text label="NØ" name="floater_map_northeast" text="NØ">
- NØ
- </text>
- <text label="SV" name="floater_map_southwest" text="SV">
- SV
- </text>
- <text label="NV" name="floater_map_northwest" text="NV">
- NV
- </text>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="world_map"> + <panel.string name="Loading"> + Henter... + </panel.string> + <panel.string name="InvalidLocation"> + Ugyldig lokation + </panel.string> + <panel.string name="world_map_north"> + N + </panel.string> + <panel.string name="world_map_east"> + Ø + </panel.string> + <panel.string name="world_map_west"> + V + </panel.string> + <panel.string name="world_map_south"> + S + </panel.string> + <panel.string name="world_map_southeast"> + SØ + </panel.string> + <panel.string name="world_map_northeast"> + NØ + </panel.string> + <panel.string name="world_map_southwest"> + SV + </panel.string> + <panel.string name="world_map_northwest"> + NV + </panel.string> + <text label="N" name="floater_map_north" text="N"> + N + </text> + <text label="Ø" name="floater_map_east" text="Ø"> + Ø + </text> + <text label="V" name="floater_map_west" text="V"> + V + </text> + <text label="S" name="floater_map_south" text="S"> + S + </text> + <text label="SØ" name="floater_map_southeast" text="SØ"> + SØ + </text> + <text label="NØ" name="floater_map_northeast" text="NØ"> + NØ + </text> + <text label="SV" name="floater_map_southwest" text="SV"> + SV + </text> + <text label="NV" name="floater_map_northwest" text="NV"> + NV + </text> +</panel> diff --git a/indra/newview/skins/default/xui/da/role_actions.xml b/indra/newview/skins/default/xui/da/role_actions.xml index e4c8c4b93b..5ec90a759a 100644 --- a/indra/newview/skins/default/xui/da/role_actions.xml +++ b/indra/newview/skins/default/xui/da/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="Disse rettigheder inkluderer adgang til at tilføje og fjerne gruppe medlemmer og tillade nye medlemmer at melde sig ind uden invitation" - name="Membership"> - <action description="Invitér personer til denne gruppe" - longdescription="Invitér personer til denne gruppe via 'Invitér ny person...' knappen i fanen: medlemmer & roller > underfanen: medlemmer" - name="member invite" /> - <action description="Fjern medlemmer fra denne gruppe" - longdescription="Fjern medlemmer i denne gruppe via 'Fjern fra gruppe' knappen i fanen: medlemmer & roller > underfanen: medlemmer. En ejer kan fjerne alle undtagen en anden ejer. Hvis du ikke er en ejer, kan et medlem kun fjernes fra gruppen hvis, og kun hvis, medlemmet kun findes i Alle rollen, og ikke i andre roller. for at fjerne medlemmer fra roller, skal du have rettigheden 'Fjern medlemmer fra roller'" - name="member eject" /> - <action - description="Åben eller luk for 'fri tilmelding' og ændre 'tilmeldingsgebyr'" - longdescription="Åben for 'fri tilmelding' så alle kan blive medlem af gruppen, eller luk for 'fri tilmelding' så kun inveterede kan blive medlem. ændre 'tilmeldingsgebyr' i gruppe opsætningsbilledet sektionen i Generelt fanen" - name="member options" /> + <action_set description="Disse rettigheder inkluderer adgang til at tilføje og fjerne gruppe medlemmer og tillade nye medlemmer at melde sig ind uden invitation" name="Membership"> + <action description="Invitér personer til denne gruppe" longdescription="Invitér personer til denne gruppe via 'Invitér ny person...' knappen i fanen: medlemmer & roller > underfanen: medlemmer" name="member invite"/> + <action description="Fjern medlemmer fra denne gruppe" longdescription="Fjern medlemmer i denne gruppe via 'Fjern fra gruppe' knappen i fanen: medlemmer & roller > underfanen: medlemmer. En ejer kan fjerne alle undtagen en anden ejer. Hvis du ikke er en ejer, kan et medlem kun fjernes fra gruppen hvis, og kun hvis, medlemmet kun findes i Alle rollen, og ikke i andre roller. for at fjerne medlemmer fra roller, skal du have rettigheden 'Fjern medlemmer fra roller" name="member eject"/> + <action description="Åben eller luk for 'fri tilmelding' og ændre 'tilmeldingsgebyr'" longdescription="Åben for 'fri tilmelding' så alle kan blive medlem af gruppen, eller luk for 'fri tilmelding' så kun inveterede kan blive medlem. ændre 'tilmeldingsgebyr' i gruppe opsætningsbilledet sektionen i Generelt fanen" name="member options"/> </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at tilføje, fjerne og ændre gruppe-roller, tilføje og fjerne medlemmer i roller, og give rettigheder til roller" - name="Roles"> - <action description="Opret nye roller" - longdescription="Opret nye roller i fanen: Medlemmer & roller > under-fanen: Roller." - name="role create" /> - <action description="Slet roller" - longdescription="Slet roller i roller i fanen: Medlemmer & roller > under-fanen: Roller." - name="role delete" /> - <action - description="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen" - longdescription="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen. Dette håndteres i bunden af fanen:: Medlemmer & roller > under-fanen: Roller efter at have valgt en rolle." - name="role properties" /> - <action description="Tildel andre samme roller som dig selv" - longdescription="Tildel andre medlemmer til roller i Tildelte roller sektionen på fanen: Medlemmer & roller > under-fanen: Medlemmer. Et medlem med denne rettighed kan kun tildele andre medlemmer en rolle som tildeleren allerede selv har." - name="role assign member limited" /> - <action description="Tildele medlemmer enhver rolle" - longdescription="Tildel andre medlemmer til en hvilken som helst rolle i Tildelte roller sektionen på fanen: Medlemmer & roller > under-fanen: Medlemmer. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - roller som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." - name="role assign member" /> - <action description="Fjern medlemmer fra roller" - longdescription="Fjern medlemmer fra roller i in Tildelte roller sektionen på fanen: Medlemmer & roller > under-fanen: Medlemmer. Ejere kan ikke fjernes." - name="role remove member" /> - <action description="Tildel og fjern rettigheder for roller" - longdescription="Tildel og fjern rettigheder for roller i tilladte rettigheder sektionen på fanen: Medlemmer & roller > under-fanen: Roller. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - rettigheder som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du gør inden du tildeler denne rettighed." - name="role change actions" /> + <action_set description="Disse rettigheder inkluderer adgang til at tilføje, fjerne og ændre gruppe-roller, tilføje og fjerne medlemmer i roller, og give rettigheder til roller" name="Roles"> + <action description="Opret nye roller" longdescription="Opret nye roller i fanen: Medlemmer & roller > under-fanen: Roller." name="role create"/> + <action description="Slet roller" longdescription="Slet roller i roller i fanen: Medlemmer & roller > under-fanen: Roller." name="role delete"/> + <action description="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen" longdescription="Ændre rolle navne, titler, beskrivelser og angivelse af om rollemedlemmer kan ses af andre udenfor gruppen. Dette håndteres i bunden af fanen:: Medlemmer & roller > under-fanen: Roller efter at have valgt en rolle." name="role properties"/> + <action description="Tildel andre samme roller som dig selv" longdescription="Tildel andre medlemmer til roller i Tildelte roller sektionen på fanen: Medlemmer & roller > under-fanen: Medlemmer. Et medlem med denne rettighed kan kun tildele andre medlemmer en rolle som tildeleren allerede selv har." name="role assign member limited"/> + <action description="Tildele medlemmer enhver rolle" longdescription="Tildel andre medlemmer til en hvilken som helst rolle i Tildelte roller sektionen på fanen: Medlemmer & roller > under-fanen: Medlemmer. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - roller som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="role assign member"/> + <action description="Fjern medlemmer fra roller" longdescription="Fjern medlemmer fra roller i in Tildelte roller sektionen på fanen: Medlemmer & roller > under-fanen: Medlemmer. Ejere kan ikke fjernes." name="role remove member"/> + <action description="Tildel og fjern rettigheder for roller" longdescription="Tildel og fjern rettigheder for roller i tilladte rettigheder sektionen på fanen: Medlemmer & roller > under-fanen: Roller. *ADVARSEL* Ethvert medlem i en rolle med denne rettighed kan tildele sig selv - og enhver anden - rettigheder som giver dem flere rettigheder end de havde tidligere, og dermed potentielt få næsten samme magt som ejer. Vær sikker på at vide hvad du gør inden du tildeler denne rettighed." name="role change actions"/> </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at ændre denne gruppes identitetsoplysninger, som f.eks. om gruppen kan ses af andre, gruppens fundats og billede." - name="Group Identity"> - <action description="Ændre fundats, billede og 'Vis i søgning'" - longdescription="Ændre fundats og 'Vis i søgning'. Dette gøres under fanen Generelt." - name="group change identity" /> + <action_set description="Disse rettigheder inkluderer adgang til at ændre denne gruppes identitetsoplysninger, som f.eks. om gruppen kan ses af andre, gruppens fundats og billede." name="Group Identity"> + <action description="Ændre fundats, billede og 'Vis i søgning'" longdescription="Ændre fundats og 'Vis i søgning'. Dette gøres under fanen Generelt." name="group change identity"/> </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til dedikere, ændre og sælge land fra denne gruppes besiddelser. For at åbne 'Om land...' vinduet, højre-klik på jorden og vælg 'Om land...', eller klik på 'Om land...' i 'Verden' menuen." - name="Parcel Management"> - <action description="Dedikér eller køb land til gruppen" - longdescription="Dedikér eller køb land til gruppen. Dette gøres i fanen Generelt i 'Om land...'." - name="land deed" /> - <action description="Forlad land og overgiv det til guvernør Linden" - longdescription="Forlad land og overgiv det til guvernør Linden. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan overdrage gruppe-ejet land via fanen Generelt i 'Om land...' til Lindens ejerskab uden salg! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." - name="land release" /> - <action description="Sæt land til salg" - longdescription="Sæt land til salg. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan sælge gruppe-ejet land via fanen Generelt i 'Om land...'! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." - name="land set sale info" /> - <action description="Opdel og saml parceller" - longdescription="Opdel og saml parceller. Dette gøres ved at højreklikke på jorden og vælge 'Redigér terræn'" - name="land divide join" /> + <action_set description="Disse rettigheder inkluderer adgang til dedikere, ændre og sælge land fra denne gruppes besiddelser. For at åbne 'Om land...' vinduet, højre-klik på jorden og vælg 'Om land...', eller klik på 'Om land...' i 'Verden' menuen." name="Parcel Management"> + <action description="Dedikér eller køb land til gruppen" longdescription="Dedikér eller køb land til gruppen. Dette gøres i fanen Generelt i 'Om land...'." name="land deed"/> + <action description="Forlad land og overgiv det til guvernør Linden" longdescription="Forlad land og overgiv det til guvernør Linden. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan overdrage gruppe-ejet land via fanen Generelt i 'Om land...' til Lindens ejerskab uden salg! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land release"/> + <action description="Sæt land til salg" longdescription="Sæt land til salg. *ADVARSEL* Ethvert medlem med en rolle med denne rettighed kan sælge gruppe-ejet land via fanen Generelt i 'Om land...'! Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land set sale info"/> + <action description="Opdel og saml parceller" longdescription="Opdel og saml parceller. Dette gøres ved at højreklikke på jorden og vælge 'Redigér terræn'" name="land divide join"/> </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at ændre parcel navn og en række parametre om f.eks. landingspunkt, teleports m.v.." - name="Parcel Identity"> - <action - description="Angive om sted skal vises i 'vis i Søg steder' og angivelse af kategori" - longdescription="Angive om sted skal vises i 'vis i Søg steder' og angivelse af kategori i 'Om land...' > Indstillinger fanen." - name="land find places" /> - <action - description="Ændre parcel navn, beskrivelse, og 'Vis i Søg' opsætning" - longdescription="Ændre parcel navn, beskrivelse, og 'Vis i Søg' opsætning. Dette håndteres i 'Om land...'> Opsætning fanen." - name="land change identity" /> - <action description="Sæt landingspunkt og teleport muligheder" - longdescription="På en gruppe-ejet parcel kan medlemmer, med en rolle med denne rettighed, sætte landingspunktet og dermed angive hvor indkommende teleporte skal ankomme og desuden angive dealjer om teleporte. Dette håndteres i 'Om land...'> Opsætning fanen." - name="land set landing point" /> + <action_set description="Disse rettigheder inkluderer adgang til at ændre parcel navn og en række parametre om f.eks. landingspunkt, teleports m.v.." name="Parcel Identity"> + <action description="Angive om sted skal vises i 'vis i Søg steder' og angivelse af kategori" longdescription="Angive om sted skal vises i 'vis i Søg steder' og angivelse af kategori i 'Om land...' > Indstillinger fanen." name="land find places"/> + <action description="Ændre parcel navn, beskrivelse, og 'Vis i Søg' opsætning" longdescription="Ændre parcel navn, beskrivelse, og 'Vis i Søg' opsætning. Dette håndteres i 'Om land...'> Opsætning fanen." name="land change identity"/> + <action description="Sæt landingspunkt og teleport muligheder" longdescription="På en gruppe-ejet parcel kan medlemmer, med en rolle med denne rettighed, sætte landingspunktet og dermed angive hvor indkommende teleporte skal ankomme og desuden angive dealjer om teleporte. Dette håndteres i 'Om land...'> Opsætning fanen." name="land set landing point"/> </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at opsætte parcel indstillinger som f.eks. 'Lave objekter', 'Redigere terræn', samt musik og media indstillinger." - name="Parcel Settings"> - <action description="Ændre musik og media indstillinger" - longdescription="Ændre oplysninger om streaming musik og film i 'Om land...' > Media fanen." - name="land change media" /> - <action description="Ændre rettighed til 'Redigere terræn'" - longdescription="Ændre rettighed til 'Redigere terræn'. *ADVARSEL*: Redigere terræn' kan give alle og enhver ret til at ændre terræn og opsætte og flytte Linden planter. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." - name="land edit" /> - <action - description="Ændre diverse andre indstillinger i 'Om land...'> indstillinger fanen" - longdescription="Giv adgang til at ændre 'Sikker (ingen skade)', 'Flyve', og tillad andre beboere at: 'Lave objekter', 'Redigere terræn', 'Lave landemærker', og 'Køre scripts' på gruppe-ejet land via About Land > Indstillinger fanen." - name="land options" /> + <action_set description="Disse rettigheder inkluderer adgang til at opsætte parcel indstillinger som f.eks. 'Lave objekter', 'Redigere terræn', samt musik og media indstillinger." name="Parcel Settings"> + <action description="Ændre musik og media indstillinger" longdescription="Ændre oplysninger om streaming musik og film i 'Om land...' > Media fanen." name="land change media"/> + <action description="Ændre rettighed til 'Redigere terræn'" longdescription="Ændre rettighed til 'Redigere terræn'. *ADVARSEL*: Redigere terræn' kan give alle og enhver ret til at ændre terræn og opsætte og flytte Linden planter. Vær sikker på at vide hvad du ør inden du tildeler denne rettighed." name="land edit"/> + <action description="Ændre diverse andre indstillinger i 'Om land...'> indstillinger fanen" longdescription="Giv adgang til at ændre 'Sikker (ingen skade)', 'Flyve', og tillad andre beboere at: 'Lave objekter', 'Redigere terræn', 'Lave landemærker', og 'Køre scripts' på gruppe-ejet land via About Land > Indstillinger fanen." name="land options"/> </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at medlemmer kan omgå restriktioner på gruppe-ejede parceller." - name="Parcel Powers"> - <action description="Tillad altid 'Rediger Terræn'" - longdescription="Medlemmer med denne rolle har adgang til at redigere terræn på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." - name="land allow edit land" /> - <action description="Tillad altid at 'Flyve'" - longdescription="Medlemmer med denne rolle har adgang til at flyve på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." - name="land allow fly" /> - <action description="Tillad altid 'Lave objekter'" - longdescription="Medlemmer med denne rolle har adgang til at lave nye objekter på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." - name="land allow create" /> - <action description="Tillad altid at 'Lave landemærker'" - longdescription="Medlemmer med denne rolle har adgang til at lave landemærker på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." - name="land allow landmark" /> - <action description="Tillad altid 'sæt til hjem' på gruppe-ejet land" - longdescription="Medlemmer med denne rolle har adgang til at benytte 'Verden' menuen og vælge 'sæt til hjem' på en parcel der er dedikeret til gruppen." - name="land allow set home" /> + <action_set description="Disse rettigheder inkluderer adgang til at medlemmer kan omgå restriktioner på gruppe-ejede parceller." name="Parcel Powers"> + <action description="Tillad altid 'Rediger Terræn'" longdescription="Medlemmer med denne rolle har adgang til at redigere terræn på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." name="land allow edit land"/> + <action description="Tillad altid at 'Flyve'" longdescription="Medlemmer med denne rolle har adgang til at flyve på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." name="land allow fly"/> + <action description="Tillad altid 'Lave objekter'" longdescription="Medlemmer med denne rolle har adgang til at lave nye objekter på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." name="land allow create"/> + <action description="Tillad altid at 'Lave landemærker'" longdescription="Medlemmer med denne rolle har adgang til at lave landemærker på gruppe-ejede parceller, også selvom denne mulighed ikke er aktiveret på 'Om land...' > Indstillinger fanen." name="land allow landmark"/> + <action description="Tillad altid 'sæt til hjem' på gruppe-ejet land" longdescription="Medlemmer med denne rolle har adgang til at benytte 'Verden' menuen og vælge 'sæt til hjem' på en parcel der er dedikeret til gruppen." name="land allow set home"/> </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at medlemmer kan tillade eller forbyde adgang til gruppe-ejede parceller, inkluderende at 'fryse' og udsmide beboere." - name="Parcel Access"> - <action description="Administrér adgangsregler for parceller" - longdescription="Administrér adgangsregler for parceller i 'Om land' > 'Adgang' fanen." - name="land manage allowed" /> - <action description="Administrér liste med blokerede beboere på parceller" - longdescription="Administrér liste med blokerede beboere på parceller i 'Om land' > 'Adgang' fanen." - name="land manage banned" /> - <action - description="Ændre indstillinger for at 'Sælge adgang til' parceller" - longdescription="Ændre indstillinger for at 'Sælge adgang til' parceller i 'Om land' > 'Adgang' fanen." - name="land manage passes" /> - <action - description="Adgang til at smide beboere ud og 'fryse' beboere på parceller" - longdescription="Medlermmer med denne rolle kan håndtere beboere som ikke er velkomne på gruppe-ejet parceller ved at højreklikke på dem, vælge Mere>, og vælge 'Smid ud...' eller 'Frys...'." - name="land admin" /> + <action_set description="Disse rettigheder inkluderer adgang til at medlemmer kan tillade eller forbyde adgang til gruppe-ejede parceller, inkluderende at 'fryse' og udsmide beboere." name="Parcel Access"> + <action description="Administrér adgangsregler for parceller" longdescription="Administrér adgangsregler for parceller i 'Om land' > 'Adgang' fanen." name="land manage allowed"/> + <action description="Administrér liste med blokerede beboere på parceller" longdescription="Administrér liste med blokerede beboere på parceller i 'Om land' > 'Adgang' fanen." name="land manage banned"/> + <action description="Ændre indstillinger for at 'Sælge adgang til' parceller" longdescription="Ændre indstillinger for at 'Sælge adgang til' parceller i 'Om land' > 'Adgang' fanen." name="land manage passes"/> + <action description="Adgang til at smide beboere ud og 'fryse' beboere på parceller" longdescription="Medlemmer med denne rolle kan håndtere beboere som ikke er velkomne på gruppe-ejet parceller ved at højreklikke på dem, vælge Mere>, og vælge 'Smid ud...' eller 'Frys...'." name="land admin"/> </action_set> - <action_set - description="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet." - name="Parcel Content"> - <action description="Returnere objekter ejet af gruppen" - longdescription="Returne objekter på gruppe-ejede parceller der er ejet af gruppen. Dette håndteres i 'Om land...'> 'Objekter' fanen." - name="land return group owned" /> - <action description="Returnere objekter der er sat til 'gruppe'" - longdescription="Returnere objekter på gruppe-ejede parceller, der er 'sat til gruppe' i 'Om land...'> 'Objekter' fanen." - name="land return group set" /> - <action description="Returnere objekter der ikke er ejet af andre" - longdescription="Returnere objekter på gruppe-ejede parceller, der er 'Ejet af andre' i 'Om land...'> 'Objekter' fanen." - name="land return non group" /> - <action description="Ændre landskab med Linden planter" - longdescription="Mulighed for at ændre landskabet ved at placere og flytte Linden træer, planter, og græs. Disse genstande kan findes i din beholdnings Library > Objects mappe eller de kan oprettes via 'Byg' knappen." - name="land gardening" /> + <action_set description="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet." name="Parcel Content"> + <action description="Returnere objekter ejet af gruppen" longdescription="Returne objekter på gruppe-ejede parceller der er ejet af gruppen. Dette håndteres i 'Om land...'> 'Objekter' fanen." name="land return group owned"/> + <action description="Returnere objekter der er sat til 'gruppe'" longdescription="Returnere objekter på gruppe-ejede parceller, der er 'sat til gruppe' i 'Om land...'> 'Objekter' fanen." name="land return group set"/> + <action description="Returnere objekter der ikke er ejet af andre" longdescription="Returnere objekter på gruppe-ejede parceller, der er 'Ejet af andre' i 'Om land...'> 'Objekter' fanen." name="land return non group"/> + <action description="Ændre landskab med Linden planter" longdescription="Disse rettigheder inkluderer mulighed til at tillade beboere at returnere objekter og placere og flytte Linden planter. Dette er brugbart for at medlemmer kan holde orden og tilpasse landskabet. Denne mulighed skal benyttes med varsomhed, da der ikke er mulighed for at fortryde returnering af objekter og ændringer i landskabet." name="land gardening"/> </action_set> - <action_set - description="Disse rettigheder inkluderer mulighed til at dedikere, ændre og sælge gruppe-ejede objekter. Disse ændringer sker i 'Rediger'> 'Generelt' fanen." - name="Object Management"> - <action description="Dediker objekter til gruppe" - longdescription="Dediker objekter til gruppe i 'Rediger'> 'Generelt' fanen." - name="object deed" /> - <action description="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter" - longdescription="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter i 'Rediger'> 'Generelt' fanen." - name="object manipulate" /> - <action description="Sæt gruppe-ejede objekter til salg" - longdescription="Sæt gruppe-ejede objekter til salg i 'Rediger'> 'Generelt' fanen." - name="object set sale" /> + <action_set description="Disse rettigheder inkluderer mulighed til at dedikere, ændre og sælge gruppe-ejede objekter. Disse ændringer sker i 'Rediger'> 'Generelt' fanen." name="Object Management"> + <action description="Dediker objekter til gruppe" longdescription="Dediker objekter til gruppe i 'Rediger'> 'Generelt' fanen." name="object deed"/> + <action description="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter" longdescription="Manipulér (flyt, kopiér, ændre) gruppe-ejede objekter i 'Rediger'> 'Generelt' fanen." name="object manipulate"/> + <action description="Sæt gruppe-ejede objekter til salg" longdescription="Sæt gruppe-ejede objekter til salg i 'Rediger'> 'Generelt' fanen." name="object set sale"/> </action_set> - <action_set - description="Disse rettigheder inkluderer mulighed til at håndtere betalinger for gruppen og styre adgang til gruppens kontobevægelser." - name="Accounting"> - <action description="Betale gruppe regninger og modtage gruppe udbytte" - longdescription="Medlemmer med denne rolle vil automatisk betale gruppe regninger og modtage gruppe udbytte. Det betyder at de vil modtager en andel af indtægter fra salg af gruppe-ejet land og bidrage til betaling af gruppe-relaterede betalinger, som f.eks. betaling for at paceller vises i lister. " - name="accounting accountable" /> + <action_set description="Disse rettigheder inkluderer mulighed til at håndtere betalinger for gruppen og styre adgang til gruppens kontobevægelser." name="Accounting"> + <action description="Betale gruppe regninger og modtage gruppe udbytte" longdescription="Medlemmer med denne rolle vil automatisk betale gruppe regninger og modtage gruppe udbytte. Det betyder at de vil modtager en andel af indtægter fra salg af gruppe-ejet land og bidrage til betaling af gruppe-relaterede betalinger, som f.eks. betaling for at paceller vises i lister. " name="accounting accountable"/> </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at kunne sende, modtage og se gruppe beskeder." - name="Notices"> - <action description="Send beskeder" - longdescription="Medlemmer med denne rolle kan sende beskeder i 'Beskeder' fanen." - name="notices send" /> - <action description="Modtage og se tidligere beskeder" - longdescription="Medlemmer med denne rolle kan modtage og se tidligere beskeder i 'Beskeder' fanen." - name="notices receive" /> + <action_set description="Disse rettigheder inkluderer adgang til at kunne sende, modtage og se gruppe beskeder." name="Notices"> + <action description="Send beskeder" longdescription="Medlemmer med denne rolle kan sende beskeder i 'Beskeder' fanen." name="notices send"/> + <action description="Modtage og se tidligere beskeder" longdescription="Medlemmer med denne rolle kan modtage og se tidligere beskeder i 'Beskeder' fanen." name="notices receive"/> </action_set> - <action_set - description="Disse rettigheder inkluderer adgang til at kunne oprette forslag, stemme på forslag og se historik med forslag." - name="Proposals"> - <action description="Opret forslag" - longdescription="Medlemmer med denne rolle kan oprette forslag som der kan stemmes om i 'Forslag' fanen." - name="proposal start" /> - <action description="Stem på forslag" - longdescription="Medlemmer med denne rolle kan stemme på forslag i 'Forslag' fanen." - name="proposal vote" /> + <action_set description="Disse rettigheder inkluderer adgang til at kunne oprette forslag, stemme på forslag og se historik med forslag." name="Proposals"> + <action description="Opret forslag" longdescription="Medlemmer med denne rolle kan oprette forslag som der kan stemmes om i 'Forslag' fanen." name="proposal start"/> + <action description="Stem på forslag" longdescription="Medlemmer med denne rolle kan stemme på forslag i 'Forslag' fanen." name="proposal vote"/> </action_set> - <action_set - description="Disse rettigheder styrer hvem der kan deltage i gruppe-chat og gruppe stemme-chat." - name="Chat"> - <action description="Deltage i gruppe-chat" - longdescription="Medlemmer med denne rolle kan deltage i gruppe-chat sessioner" - name="join group chat" /> - <action description="Deltag i gruppe stemme-chat" - longdescription="Medlemmer med denne rolle kan deltage i gruppe stemme-chat sessioner. BEMÆRK: Medlemmet skal også have rollen 'Deltage i gruppe-chat' for at denne rolle har effekt." - name="join voice chat" /> - <action description="Styr gruppe-chat" - longdescription="Medlemmer med denne rolle kan kontrollere adgang og deltagelse i gruppe-chat og gruppe stemme-chat sessioner." - name="moderate group chat" /> + <action_set description="Disse rettigheder styrer hvem der kan deltage i gruppe-chat og gruppe stemme-chat." name="Chat"> + <action description="Deltage i gruppe-chat" longdescription="Medlemmer med denne rolle kan deltage i gruppe-chat sessioner" name="join group chat"/> + <action description="Deltag i gruppe stemme-chat" longdescription="Medlemmer med denne rolle kan deltage i gruppe stemme-chat sessioner. BEMÆRK: Medlemmet skal også have rollen 'Deltage i gruppe-chat' for at denne rolle har effekt." name="join voice chat"/> + <action description="Styr gruppe-chat" longdescription="Medlemmer med denne rolle kan kontrollere adgang og deltagelse i gruppe-chat og gruppe stemme-chat sessioner." name="moderate group chat"/> </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/da/sidepanel_appearance.xml b/indra/newview/skins/default/xui/da/sidepanel_appearance.xml new file mode 100644 index 0000000000..27708f5c7a --- /dev/null +++ b/indra/newview/skins/default/xui/da/sidepanel_appearance.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Sæt" name="appearance panel"> + <string name="No Outfit" value="Intet sæt"/> + <filter_editor label="Filtrér sæt" name="Filter"/> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Vis flere muligheder"/> + <button name="newlook_btn" tool_tip="Tilføj nyt sæt"/> + <dnd_button name="trash_btn" tool_tip="Fjern valgte del"/> + <button label="Bær" name="wear_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/da/sidepanel_inventory.xml b/indra/newview/skins/default/xui/da/sidepanel_inventory.xml new file mode 100644 index 0000000000..ae029f5939 --- /dev/null +++ b/indra/newview/skins/default/xui/da/sidepanel_inventory.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Ting" name="objects panel"> + <panel label="" name="sidepanel__inventory_panel"> + <panel name="button_panel"> + <button label="Profil" name="info_btn"/> + <button label="Bær" name="wear_btn"/> + <button label="Afspil" name="play_btn"/> + <button label="Teleportér" name="teleport_btn"/> + </panel> + </panel> +</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 0000000000..685601b922 --- /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 0000000000..6ade03ce56 --- /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 155714363e..493bb4cb20 100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml @@ -1,3242 +1,3242 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<!-- This file contains strings that used to be hardcoded in the source.
- It is only for those strings which do not belong in a floater.
- 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">
- Second Life Support Portal
- </string>
- <string name="StartupDetectingHardware">
- Detekterer hardware...
- </string>
- <string name="StartupLoading">
- Indlæser
- </string>
- <string name="LoginInProgress">
- Logger p. [APP_NAME] kan virke laast. Vent venligst.
- </string>
- <string name="LoginInProgressNoFrozen">
- Logger på...
- </string>
- <string name="LoginAuthenticating">
- Validerer adgang
- </string>
- <string name="LoginMaintenance">
- Udfører konto vedligeholdelse...
- </string>
- <string name="LoginAttempt">
- Tidligere forsø på login fejlede. Logger på, forsøg [NUMBER]
- </string>
- <string name="LoginPrecaching">
- verden...
- </string>
- <string name="LoginInitializingBrowser">
- Klargør indbyggede web browser...
- </string>
- <string name="LoginInitializingMultimedia">
- Klargør multimedia...
- </string>
- <string name="LoginInitializingFonts">
- Indlæser fonts...
- </string>
- <string name="LoginVerifyingCache">
- Checker cache filer (kan tage 60-90 sekunder)...
- </string>
- <string name="LoginProcessingResponse">
- Behandler svar ...
- </string>
- <string name="LoginInitializingWorld">
- Initialiserer verden...
- </string>
- <string name="LoginDecodingImages">
- Behandler billeder...
- </string>
- <string name="LoginInitializingQuicktime">
- Initialiserer QuickTime...
- </string>
- <string name="LoginQuicktimeNotFound">
- QuickTime ikke fundet- kunne derfor ikke initialisere.
- </string>
- <string name="LoginQuicktimeOK">
- QuickTime initialiseret.
- </string>
- <string name="LoginWaitingForRegionHandshake">
- Venter på svar fra region...
- </string>
- <string name="LoginConnectingToRegion">
- Tilslutter til region...
- </string>
- <string name="LoginDownloadingClothing">
- Henter tøj...
- </string>
- <string name="LoginFailedNoNetwork">
- Netværksfejl: Kunne ikke etablere forbindelse, check venligst din netværksforbindelse.
- </string>
- <string name="Quit">
- Afslut
- </string>
- <string name="AgentLostConnection">
- Denne region kan have problemer. Tjek venligst din forbindelse til internettet.
- </string>
- <string name="TooltipPerson">
- Person
- </string>
- <string name="TooltipNoName">
- (intet navn)
- </string>
- <string name="TooltipOwner">
- Ejer:
- </string>
- <string name="TooltipPublic">
- Offentlig
- </string>
- <string name="TooltipIsGroup">
- (Gruppe)
- </string>
- <string name="TooltipForSaleL$">
- Til salg: L$[AMOUNT]
- </string>
- <string name="TooltipFlagGroupBuild">
- Gruppe byg
- </string>
- <string name="TooltipFlagNoBuild">
- Må ikke bygge
- </string>
- <string name="TooltipFlagNoEdit">
- Gruppe byg
- </string>
- <string name="TooltipFlagNotSafe">
- Ikke sikker område
- </string>
- <string name="TooltipFlagNoFly">
- Ingen flyvning
- </string>
- <string name="TooltipFlagGroupScripts">
- Gruppe scripts
- </string>
- <string name="TooltipFlagNoScripts">
- Ingen Scripts
- </string>
- <string name="TooltipLand">
- Land:
- </string>
- <string name="TooltipMustSingleDrop">
- Kun et enkelt element kan trækkes ind her
- </string>
- <string name="TooltipHttpUrl">
- Klik for at se denne hjemmeside
- </string>
- <string name="TooltipSLURL">
- Klik for at se information om denne lokation
- </string>
- <string name="TooltipAgentUrl">
- Klik for at denne beboers profil
- </string>
- <string name="TooltipGroupUrl">
- Klik for at se denne gruppes beskrivelse
- </string>
- <string name="TooltipEventUrl">
- Klik for at se beskrivelse af denne event
- </string>
- <string name="TooltipClassifiedUrl">
- Klik for at se denne annonce
- </string>
- <string name="TooltipParcelUrl">
- Klik for at se beskrivelse for denne parcel
- </string>
- <string name="TooltipTeleportUrl">
- Klik for at teleportere til denne lokation
- </string>
- <string name="TooltipObjectIMUrl">
- Klik for at se beskrivelse for dette objekt
- </string>
- <string name="TooltipMapUrl">
- Klik for at se denne lokation på kortet
- </string>
- <string name="TooltipSLAPP">
- Klik for at starte secondlife:// kommando
- </string>
- <string name="CurrentURL" value=" Nuværende URL: [CurrentURL]"/>
- <string name="SLurlLabelTeleport">
- Teleportér til
- </string>
- <string name="SLurlLabelShowOnMap">
- Vis kort for
- </string>
- <string name="BUTTON_CLOSE_DARWIN">
- Luk (⌘W)
- </string>
- <string name="BUTTON_CLOSE_WIN">
- Luk (Ctrl+W)
- </string>
- <string name="BUTTON_RESTORE">
- Gendan
- </string>
- <string name="BUTTON_MINIMIZE">
- Minimér
- </string>
- <string name="BUTTON_TEAR_OFF">
- Løsriv
- </string>
- <string name="BUTTON_DOCK">
- Fastgør
- </string>
- <string name="BUTTON_UNDOCK">
- Frigør
- </string>
- <string name="BUTTON_HELP">
- Vis hjælp
- </string>
- <string name="Searching">
- Søger...
- </string>
- <string name="NoneFound">
- Intet fundet.
- </string>
- <string name="RetrievingData">
- Henter...
- </string>
- <string name="ReleaseNotes">
- Noter om version
- </string>
- <string name="LoadingData">
- Henter...
- </string>
- <string name="AvatarNameNobody">
- (ingen)
- </string>
- <string name="AvatarNameWaiting">
- (venter)
- </string>
- <string name="AvatarNameHippos">
- (hippos)
- </string>
- <string name="GroupNameNone">
- (ingen)
- </string>
- <string name="AssetErrorNone">
- Ingen fejl
- </string>
- <string name="AssetErrorRequestFailed">
- Element forespørgsel: fejlede
- </string>
- <string name="AssetErrorNonexistentFile">
- Element forespørgsel: fil findes ikke
- </string>
- <string name="AssetErrorNotInDatabase">
- Element forespørgsel: element ikke fundet i database
- </string>
- <string name="AssetErrorEOF">
- Slutning af fil
- </string>
- <string name="AssetErrorCannotOpenFile">
- Kan ikke åbne fil
- </string>
- <string name="AssetErrorFileNotFound">
- Fil ikke fundet
- </string>
- <string name="AssetErrorTCPTimeout">
- Tidsgrænse overskredet ved filhentning
- </string>
- <string name="AssetErrorCircuitGone">
- Forbindelsen mistet
- </string>
- <string name="AssetErrorPriceMismatch">
- [APP_NAME] klient og server er uenige om prisen
- </string>
- <string name="AssetErrorUnknownStatus">
- Ukendt status
- </string>
- <string name="texture">
- tekstur
- </string>
- <string name="sound">
- lyd
- </string>
- <string name="calling card">
- visitkort
- </string>
- <string name="landmark">
- landemærke
- </string>
- <string name="legacy script">
- ældre script
- </string>
- <string name="clothing">
- tøj
- </string>
- <string name="object">
- objekt
- </string>
- <string name="note card">
- note
- </string>
- <string name="folder">
- mappe
- </string>
- <string name="root">
- rod
- </string>
- <string name="lsl2 script">
- LSL2 script
- </string>
- <string name="lsl bytecode">
- LSL bytecode
- </string>
- <string name="tga texture">
- tga texture
- </string>
- <string name="body part">
- kropsdel
- </string>
- <string name="snapshot">
- foto
- </string>
- <string name="lost and found">
- Fundne genstande
- </string>
- <string name="targa image">
- targa billede
- </string>
- <string name="trash">
- Papirkurv
- </string>
- <string name="jpeg image">
- jpeg billede
- </string>
- <string name="animation">
- animation
- </string>
- <string name="gesture">
- bevægelse
- </string>
- <string name="simstate">
- simstate
- </string>
- <string name="favorite">
- favorit
- </string>
- <string name="symbolic link">
- link
- </string>
- <string name="AvatarAway">
- Væk
- </string>
- <string name="AvatarBusy">
- Optaget
- </string>
- <string name="AvatarMuted">
- Blokeret
- </string>
- <string name="anim_express_afraid">
- Bange
- </string>
- <string name="anim_express_anger">
- Vred
- </string>
- <string name="anim_away">
- Væk
- </string>
- <string name="anim_backflip">
- Baglæns salto
- </string>
- <string name="anim_express_laugh">
- Hjertelig latter
- </string>
- <string name="anim_express_toothsmile">
- Stort smil
- </string>
- <string name="anim_blowkiss">
- Sende kys
- </string>
- <string name="anim_express_bored">
- Keder sig
- </string>
- <string name="anim_bow">
- Buk
- </string>
- <string name="anim_clap">
- Klap
- </string>
- <string name="anim_courtbow">
- Højtideligt buk
- </string>
- <string name="anim_express_cry">
- Græd
- </string>
- <string name="anim_dance1">
- Dans 1
- </string>
- <string name="anim_dance2">
- Dans 2
- </string>
- <string name="anim_dance3">
- Dans 3
- </string>
- <string name="anim_dance4">
- Dans 4
- </string>
- <string name="anim_dance5">
- Dans 5
- </string>
- <string name="anim_dance6">
- Dans 6
- </string>
- <string name="anim_dance7">
- Dans 7
- </string>
- <string name="anim_dance8">
- Dans 8
- </string>
- <string name="anim_express_disdain">
- Foragt
- </string>
- <string name="anim_drink">
- Drik
- </string>
- <string name="anim_express_embarrased">
- Flov
- </string>
- <string name="anim_angry_fingerwag">
- Løftet finger
- </string>
- <string name="anim_fist_pump">
- Knytnæve
- </string>
- <string name="anim_yoga_float">
- Svævende yoga
- </string>
- <string name="anim_express_frown">
- Mistroisk
- </string>
- <string name="anim_impatient">
- Utålmodig
- </string>
- <string name="anim_jumpforjoy">
- Glædeshop
- </string>
- <string name="anim_kissmybutt">
- Kys min r..
- </string>
- <string name="anim_express_kiss">
- Kys
- </string>
- <string name="anim_laugh_short">
- Grin
- </string>
- <string name="anim_musclebeach">
- Bodybuilder
- </string>
- <string name="anim_no_unhappy">
- Nej (sur)
- </string>
- <string name="anim_no_head">
- Nej
- </string>
- <string name="anim_nyanya">
- Æv-bæv
- </string>
- <string name="anim_punch_onetwo">
- Et-to slag
- </string>
- <string name="anim_express_open_mouth">
- Åben mund
- </string>
- <string name="anim_peace">
- Peace
- </string>
- <string name="anim_point_you">
- Peg på andre
- </string>
- <string name="anim_point_me">
- Peg på dig selv
- </string>
- <string name="anim_punch_l">
- Slå venstre
- </string>
- <string name="anim_punch_r">
- Slå højre
- </string>
- <string name="anim_rps_countdown">
- SSP - Tæl
- </string>
- <string name="anim_rps_paper">
- SSP - Papir
- </string>
- <string name="anim_rps_rock">
- SSP - Sten
- </string>
- <string name="anim_rps_scissors">
- SSP - Saks
- </string>
- <string name="anim_express_repulsed">
- Misfornøjet
- </string>
- <string name="anim_kick_roundhouse_r">
- Karatepark
- </string>
- <string name="anim_express_sad">
- Ked af det
- </string>
- <string name="anim_salute">
- Honnør
- </string>
- <string name="anim_shout">
- Råb
- </string>
- <string name="anim_express_shrug">
- Skuldertræk
- </string>
- <string name="anim_express_smile">
- Smil
- </string>
- <string name="anim_smoke_idle">
- Ryg
- </string>
- <string name="anim_smoke_inhale">
- Indhalér
- </string>
- <string name="anim_smoke_throw_down">
- Smid cigaret
- </string>
- <string name="anim_express_surprise">
- Overrasket
- </string>
- <string name="anim_sword_strike_r">
- Sværdslag
- </string>
- <string name="anim_angry_tantrum">
- Ekstatisk
- </string>
- <string name="anim_express_tongue_out">
- Tunge ud
- </string>
- <string name="anim_hello">
- Vink
- </string>
- <string name="anim_whisper">
- Knib øje i
- </string>
- <string name="anim_whistle">
- Pift
- </string>
- <string name="anim_express_wink">
- Blink
- </string>
- <string name="anim_wink_hollywood">
- Blink (Hollywood)
- </string>
- <string name="anim_express_worry">
- Bekymret
- </string>
- <string name="anim_yes_happy">
- Ja (glad)
- </string>
- <string name="anim_yes_head">
- Ja
- </string>
- <string name="texture_loading">
- Indlæser...
- </string>
- <string name="worldmap_offline">
- Offline
- </string>
- <string name="worldmap_results_none_found">
- Ingen fundet.
- </string>
- <string name="Ok">
- OK
- </string>
- <string name="Premature end of file">
- Fil slutter for tidligt
- </string>
- <string name="ST_NO_JOINT">
- Kan ikke funde ROOT eller JOINT.
- </string>
- <string name="whisper">
- hvisker:
- </string>
- <string name="shout">
- råber:
- </string>
- <string name="ringing">
- Forbinder til stemmechat...
- </string>
- <string name="connected">
- Forbundet
- </string>
- <string name="unavailable">
- Stemmechat er ikke tilladt hvor du befinder dig
- </string>
- <string name="hang_up">
- Stemme chat er afbrudt
- </string>
- <string name="ScriptQuestionCautionChatGranted">
- '[OBJECTNAME]', en genstand, ejet af '[OWNERNAME]', lokaliseret i [REGIONNAME] på [REGIONPOS], har fået tilladelse til: [PERMISSIONS].
- </string>
- <string name="ScriptQuestionCautionChatDenied">
- '[OBJECTNAME]', en genstand, ejet af '[OWNERNAME]', lokaliseret i [REGIONNAME] på [REGIONPOS], er afvist tilladelse til: [PERMISSIONS].
- </string>
- <string name="ScriptTakeMoney">
- Tag Linden dollars (L$) fra dig
- </string>
- <string name="ActOnControlInputs">
- Reagér på dine kontrol-taster
- </string>
- <string name="RemapControlInputs">
- Ændre dine kontrol-taster
- </string>
- <string name="AnimateYourAvatar">
- Animér din avatar
- </string>
- <string name="AttachToYourAvatar">
- Sæt på din avatar
- </string>
- <string name="ReleaseOwnership">
- Fjern ejerskabet og sæt til offentlig
- </string>
- <string name="LinkAndDelink">
- Sammenkæd og adskil andre genstande
- </string>
- <string name="AddAndRemoveJoints">
- Tilføj og fjern sammenkødninger med andre genstande
- </string>
- <string name="ChangePermissions">
- Ændre dens tilladelser
- </string>
- <string name="TrackYourCamera">
- Spor dit kamera
- </string>
- <string name="ControlYourCamera">
- Kontrollér dit kamera
- </string>
- <string name="SIM_ACCESS_PG">
- PG
- </string>
- <string name="SIM_ACCESS_MATURE">
- Mature
- </string>
- <string name="SIM_ACCESS_ADULT">
- Adult
- </string>
- <string name="SIM_ACCESS_DOWN">
- logget af
- </string>
- <string name="SIM_ACCESS_MIN">
- Ukendt
- </string>
- <string name="land_type_unknown">
- (ukendt)
- </string>
- <string name="all_files">
- Alle filer
- </string>
- <string name="sound_files">
- Lyde
- </string>
- <string name="animation_files">
- Animationer
- </string>
- <string name="image_files">
- Billeder
- </string>
- <string name="save_file_verb">
- Gem
- </string>
- <string name="load_file_verb">
- Hent
- </string>
- <string name="targa_image_files">
- Targa billeder
- </string>
- <string name="bitmap_image_files">
- Bitmap billeder
- </string>
- <string name="avi_movie_file">
- AVI film fil
- </string>
- <string name="xaf_animation_file">
- XAF Anim Fil
- </string>
- <string name="xml_file">
- XML Fil
- </string>
- <string name="dot_raw_file">
- RAW Fil
- </string>
- <string name="compressed_image_files">
- Komprimerede billeder
- </string>
- <string name="load_files">
- Hent filer
- </string>
- <string name="choose_the_directory">
- Vælg bibliotek
- </string>
- <string name="AvatarSetNotAway">
- Sæt "til stede"
- </string>
- <string name="AvatarSetAway">
- Sæt "væk"
- </string>
- <string name="AvatarSetNotBusy">
- Sæt "ledig"
- </string>
- <string name="AvatarSetBusy">
- Sæt "optaget"
- </string>
- <string name="shape">
- Form
- </string>
- <string name="skin">
- Hud
- </string>
- <string name="hair">
- Hår
- </string>
- <string name="eyes">
- Øjne
- </string>
- <string name="shirt">
- Trøje
- </string>
- <string name="pants">
- Bukser
- </string>
- <string name="shoes">
- Sko
- </string>
- <string name="socks">
- Strømper
- </string>
- <string name="jacket">
- Jakke
- </string>
- <string name="gloves">
- Handsker
- </string>
- <string name="undershirt">
- Undertrøje
- </string>
- <string name="underpants">
- Underbukser
- </string>
- <string name="skirt">
- Nederdel
- </string>
- <string name="alpha">
- Alpha
- </string>
- <string name="tattoo">
- Tatovering
- </string>
- <string name="invalid">
- ugyldig
- </string>
- <string name="next">
- Næste
- </string>
- <string name="ok">
- OK
- </string>
- <string name="GroupNotifyGroupNotice">
- Gruppe besked
- </string>
- <string name="GroupNotifyGroupNotices">
- Gruppe besked
- </string>
- <string name="GroupNotifySentBy">
- Sendt af
- </string>
- <string name="GroupNotifyAttached">
- Vedhæftet:
- </string>
- <string name="GroupNotifyViewPastNotices">
- Se tidligere beskeder eller slå modtagelse af beskeder fra her.
- </string>
- <string name="GroupNotifyOpenAttachment">
- Åben vedhæng
- </string>
- <string name="GroupNotifySaveAttachment">
- Gem vedhæng
- </string>
- <string name="TeleportOffer">
- Teleport tilbud
- </string>
- <string name="StartUpNotification">
- %d nye besked modtaget mens du var væk...
- </string>
- <string name="StartUpNotifications">
- %d nye beskeder modtaget mens du var væk......
- </string>
- <string name="OverflowInfoChannelString">
- Du har %d mere besked(er)
- </string>
- <string name="BodyPartsRightArm">
- Højre arm
- </string>
- <string name="BodyPartsHead">
- Hoved
- </string>
- <string name="BodyPartsLeftArm">
- Venstre arm
- </string>
- <string name="BodyPartsLeftLeg">
- Venstre ben
- </string>
- <string name="BodyPartsTorso">
- Overkrop
- </string>
- <string name="BodyPartsRightLeg">
- Højre ben
- </string>
- <string name="GraphicsQualityLow">
- Lav
- </string>
- <string name="GraphicsQualityMid">
- Middel
- </string>
- <string name="GraphicsQualityHigh">
- Høj
- </string>
- <string name="LeaveMouselook">
- Tryk ESC for at skift til normalt udsyn
- </string>
- <string name="InventoryNoMatchingItems">
- No matching items found in inventory.
- </string>
- <string name="InventoryNoTexture">
- Du har ikke en kopi af denne
-tekstur i din beholdning.
- </string>
- <string name="no_transfer" value=" (ikke overdragbar)"/>
- <string name="no_modify" value=" (ikke redigere)"/>
- <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="LoadingContents">
- Henter indhold...
- </string>
- <string name="NoContents">
- Intet indhold
- </string>
- <string name="WornOnAttachmentPoint" value=" (båret på [ATTACHMENT_POINT])"/>
- <string name="Chat" value=" Chat : "/>
- <string name="Sound" value=" Lyd : "/>
- <string name="Wait" value=" --- Vent : "/>
- <string name="AnimFlagStop" value=" Stop Animation : "/>
- <string name="AnimFlagStart" value=" Start Animation : "/>
- <string name="Wave" value=" Vink "/>
- <string name="HelloAvatar" value=" Hej, avatar! "/>
- <string name="ViewAllGestures" value=" Se alle >>"/>
- <string name="Animations" value=" Animationer,"/>
- <string name="Calling Cards" value=" Visitkort,"/>
- <string name="Clothing" value=" Tøj,"/>
- <string name="Gestures" value=" Bevægelser,"/>
- <string name="Landmarks" value=" Landemærker,"/>
- <string name="Notecards" value=" Note,"/>
- <string name="Objects" value=" Objekter,"/>
- <string name="Scripts" value=" Scripts,"/>
- <string name="Sounds" value=" Lyde,"/>
- <string name="Textures" value=" Teksturer,"/>
- <string name="Snapshots" value=" Fotos,"/>
- <string name="No Filters" value="Nej "/>
- <string name="Since Logoff" value=" - Siden log ud"/>
- <string name="InvFolder My Inventory">
- Min beholdning
- </string>
- <string name="InvFolder My Favorites">
- Mine favoritter
- </string>
- <string name="InvFolder Library">
- Bibliotek
- </string>
- <string name="InvFolder Textures">
- Teksturer
- </string>
- <string name="InvFolder Sounds">
- Lyde
- </string>
- <string name="InvFolder Calling Cards">
- Visitkort
- </string>
- <string name="InvFolder Landmarks">
- Landemærker
- </string>
- <string name="InvFolder Scripts">
- Scripts
- </string>
- <string name="InvFolder Clothing">
- Tøj
- </string>
- <string name="InvFolder Objects">
- Objekter
- </string>
- <string name="InvFolder Notecards">
- Noter
- </string>
- <string name="InvFolder New Folder">
- Ny mappe
- </string>
- <string name="InvFolder Inventory">
- Beholdning
- </string>
- <string name="InvFolder Uncompressed Images">
- Ukomprimerede billeder
- </string>
- <string name="InvFolder Body Parts">
- Kropsdele
- </string>
- <string name="InvFolder Trash">
- Papirkurv
- </string>
- <string name="InvFolder Photo Album">
- Fotoalbum
- </string>
- <string name="InvFolder Lost And Found">
- Fundne genstande
- </string>
- <string name="InvFolder Uncompressed Sounds">
- Ukomprimerede lyde
- </string>
- <string name="InvFolder Animations">
- Animationer
- </string>
- <string name="InvFolder Gestures">
- Bevægelser
- </string>
- <string name="InvFolder favorite">
- Favoritter
- </string>
- <string name="InvFolder Current Outfit">
- Nuværende sæt
- </string>
- <string name="InvFolder My Outfits">
- Mine sæt
- </string>
- <string name="InvFolder Friends">
- Venner
- </string>
- <string name="InvFolder All">
- Alle
- </string>
- <string name="Buy">
- Køb
- </string>
- <string name="BuyforL$">
- Køb for L$
- </string>
- <string name="Stone">
- Sten
- </string>
- <string name="Metal">
- Metal
- </string>
- <string name="Glass">
- Glas
- </string>
- <string name="Wood">
- Træ
- </string>
- <string name="Flesh">
- Kød
- </string>
- <string name="Plastic">
- Plastik
- </string>
- <string name="Rubber">
- Gummi
- </string>
- <string name="Light">
- Lys
- </string>
- <string name="KBShift">
- Shift
- </string>
- <string name="KBCtrl">
- Ctrl
- </string>
- <string name="Chest">
- Bryst
- </string>
- <string name="Skull">
- Hovedskal
- </string>
- <string name="Left Shoulder">
- Venstre skulder
- </string>
- <string name="Right Shoulder">
- Højre skulder
- </string>
- <string name="Left Hand">
- Venstre hånd
- </string>
- <string name="Right Hand">
- Højre hånd
- </string>
- <string name="Left Foot">
- Venstre fod
- </string>
- <string name="Right Foot">
- Højre fod
- </string>
- <string name="Spine">
- Rygsøjle
- </string>
- <string name="Pelvis">
- Bækken
- </string>
- <string name="Mouth">
- Mund
- </string>
- <string name="Chin">
- Hage
- </string>
- <string name="Left Ear">
- Venstre øre
- </string>
- <string name="Right Ear">
- Højre øre
- </string>
- <string name="Left Eyeball">
- Venstre øje
- </string>
- <string name="Right Eyeball">
- Højre øje
- </string>
- <string name="Nose">
- Næse
- </string>
- <string name="R Upper Arm">
- H overarm
- </string>
- <string name="R Forearm">
- H underarm
- </string>
- <string name="L Upper Arm">
- V overarm
- </string>
- <string name="L Forearm">
- V underarm
- </string>
- <string name="Right Hip">
- Højre hofte
- </string>
- <string name="R Upper Leg">
- Højre lår
- </string>
- <string name="R Lower Leg">
- H underben
- </string>
- <string name="Left Hip">
- Venstre hofte
- </string>
- <string name="L Upper Leg">
- Venstre lår
- </string>
- <string name="L Lower Leg">
- V underben
- </string>
- <string name="Stomach">
- Mave
- </string>
- <string name="Left Pec">
- Venstre bryst
- </string>
- <string name="Right Pec">
- Højre bryst
- </string>
- <string name="YearsMonthsOld">
- [AGEYEARS] [AGEMONTHS] gammel
- </string>
- <string name="YearsOld">
- [AGEYEARS] gammel
- </string>
- <string name="MonthsOld">
- [AGEMONTHS] gammel
- </string>
- <string name="WeeksOld">
- [AGEWEEKS] gammel
- </string>
- <string name="DaysOld">
- [AGEDAYS] gammel
- </string>
- <string name="TodayOld">
- Med fra i dag
- </string>
- <string name="AgeYearsA">
- [COUNT] år
- </string>
- <string name="AgeYearsB">
- [COUNT] år
- </string>
- <string name="AgeYearsC">
- [COUNT] år
- </string>
- <string name="AgeMonthsA">
- [COUNT] måned
- </string>
- <string name="AgeMonthsB">
- [COUNT] måneder
- </string>
- <string name="AgeMonthsC">
- [COUNT] måneder
- </string>
- <string name="AgeWeeksA">
- [COUNT] uge
- </string>
- <string name="AgeWeeksB">
- [COUNT] uger
- </string>
- <string name="AgeWeeksC">
- [COUNT] uger
- </string>
- <string name="AgeDaysA">
- [COUNT] dag
- </string>
- <string name="AgeDaysB">
- [COUNT] dage
- </string>
- <string name="AgeDaysC">
- [COUNT] dage
- </string>
- <string name="GroupMembersA">
- [COUNT] medlem
- </string>
- <string name="GroupMembersB">
- [COUNT] medlemmer
- </string>
- <string name="GroupMembersC">
- [COUNT] medlemmer
- </string>
- <string name="AcctTypeResident">
- Beboer
- </string>
- <string name="AcctTypeTrial">
- På prøve
- </string>
- <string name="AcctTypeCharterMember">
- Æresmedlemmer
- </string>
- <string name="AcctTypeEmployee">
- Linden Lab medarbejder
- </string>
- <string name="PaymentInfoUsed">
- Betalende medlem
- </string>
- <string name="PaymentInfoOnFile">
- Betalingsinfo registreret
- </string>
- <string name="NoPaymentInfoOnFile">
- Ingen betalingsinfo
- </string>
- <string name="AgeVerified">
- Alders-checket
- </string>
- <string name="NotAgeVerified">
- Ikke alders-checket
- </string>
- <string name="Center 2">
- Center 2
- </string>
- <string name="Top Right">
- Øverst højre
- </string>
- <string name="Top">
- Top
- </string>
- <string name="Top Left">
- Øverst venstre
- </string>
- <string name="Center">
- Centrum
- </string>
- <string name="Bottom Left">
- Nederst venstre
- </string>
- <string name="Bottom">
- Nederst midt
- </string>
- <string name="Bottom Right">
- nederst højre
- </string>
- <string name="CompileQueueDownloadedCompiling">
- Hentet, kompilerer nu
- </string>
- <string name="CompileQueueScriptNotFound">
- Script ikke fundet på server.
- </string>
- <string name="CompileQueueProblemDownloading">
- Problem ved download
- </string>
- <string name="CompileQueueInsufficientPermDownload">
- Ikke rettigheder til at downloade script.
- </string>
- <string name="CompileQueueInsufficientPermFor">
- Ikke nok rettigheder til at
- </string>
- <string name="CompileQueueUnknownFailure">
- Ukendt fejl ved download
- </string>
- <string name="CompileQueueTitle">
- Rekompilering fremskridt
- </string>
- <string name="CompileQueueStart">
- Rekompilér
- </string>
- <string name="ResetQueueTitle">
- Nulstil fremskridt
- </string>
- <string name="ResetQueueStart">
- nulstil
- </string>
- <string name="RunQueueTitle">
- Sæt "running" fremskridt
- </string>
- <string name="RunQueueStart">
- sæt til "running"
- </string>
- <string name="NotRunQueueTitle">
- Sæt "Not Running" fremskridt
- </string>
- <string name="NotRunQueueStart">
- sæt til "not running"
- </string>
- <string name="CompileSuccessful">
- Kompleret uden fejl!
- </string>
- <string name="CompileSuccessfulSaving">
- Kompileret uden fejl, gemmer...
- </string>
- <string name="SaveComplete">
- Gemt.
- </string>
- <string name="ObjectOutOfRange">
- Script ("object out of range")
- </string>
- <string name="GodToolsObjectOwnedBy">
- Objekt [OBJECT] ejet af [OWNER]
- </string>
- <string name="GroupsNone">
- ingen
- </string>
- <string name="Group" value=" (gruppe)"/>
- <string name="Unknown">
- (ukendt)
- </string>
- <string name="SummaryForTheWeek" value="Opsummering for denne uge, begyndende med "/>
- <string name="NextStipendDay" value="Næste stipendie dag er "/>
- <string name="GroupIndividualShare" value=" Gruppe Individuel Delt"/>
- <string name="Balance">
- Balance
- </string>
- <string name="Credits">
- Kredit
- </string>
- <string name="Debits">
- Debet
- </string>
- <string name="Total">
- Total
- </string>
- <string name="NoGroupDataFound">
- Ingen gruppedata fundet for gruppe
- </string>
- <string name="IMParentEstate">
- overordnet estate
- </string>
- <string name="IMMainland">
- mainland
- </string>
- <string name="IMTeen">
- teen
- </string>
- <string name="RegionInfoError">
- fejl
- </string>
- <string name="RegionInfoAllEstatesOwnedBy">
- alle estates ejet af [OWNER]
- </string>
- <string name="RegionInfoAllEstatesYouOwn">
- alle estates du ejer
- </string>
- <string name="RegionInfoAllEstatesYouManage">
- alle estates du administrerer for [OWNER]
- </string>
- <string name="RegionInfoAllowedResidents">
- Godkendte beboere: ([ALLOWEDAGENTS], max. [MAXACCESS])
- </string>
- <string name="RegionInfoAllowedGroups">
- Godkendte grupper: ([ALLOWEDGROUPS], max. [MAXACCESS])
- </string>
- <string name="CursorPos">
- Linie [LINE], Kolonne [COLUMN]
- </string>
- <string name="PanelDirCountFound">
- [COUNT] fundet
- </string>
- <string name="PanelContentsNewScript">
- Nyt script
- </string>
- <string name="MuteByName">
- (efter navn)
- </string>
- <string name="MuteAgent">
- (beboer)
- </string>
- <string name="MuteObject">
- (objekt)
- </string>
- <string name="MuteGroup">
- (gruppe)
- </string>
- <string name="RegionNoCovenant">
- Der er ingen regler for dette estate.
- </string>
- <string name="RegionNoCovenantOtherOwner">
- Der er ingen regler for dette estate. Land på dette estate sælges af estate ejeren, ikke af Linden Lab. Kontakt venligst estate ejeren for detaljer om salg.
- </string>
- <string name="covenant_last_modified">
- Sidst ændret:
- </string>
- <string name="none_text" value=" (ingen) "/>
- <string name="never_text" value=" (aldrig) "/>
- <string name="GroupOwned">
- Gruppe ejet
- </string>
- <string name="Public">
- Offentlig
- </string>
- <string name="ClassifiedClicksTxt">
- Klik: [TELEPORT] teleport, [MAP] kort, [PROFILE] profil
- </string>
- <string name="ClassifiedUpdateAfterPublish">
- (vil blive opdateret efter offentliggørelse)
- </string>
- <string name="MultiPreviewTitle">
- Vis først
- </string>
- <string name="MultiPropertiesTitle">
- Egenskaber
- </string>
- <string name="InvOfferAnObjectNamed">
- Et objekt med navnet
- </string>
- <string name="InvOfferOwnedByGroup">
- ejet af gruppen
- </string>
- <string name="InvOfferOwnedByUnknownGroup">
- ejet af en ukendt gruppe
- </string>
- <string name="InvOfferOwnedBy">
- ejet af
- </string>
- <string name="InvOfferOwnedByUnknownUser">
- ejet af en ukendt bruger
- </string>
- <string name="InvOfferGaveYou">
- gav dig
- </string>
- <string name="InvOfferYouDecline">
- Du afslår
- </string>
- <string name="InvOfferFrom">
- fra
- </string>
- <string name="GroupMoneyTotal">
- Total
- </string>
- <string name="GroupMoneyBought">
- købt
- </string>
- <string name="GroupMoneyPaidYou">
- betalte dig
- </string>
- <string name="GroupMoneyPaidInto">
- betalt til
- </string>
- <string name="GroupMoneyBoughtPassTo">
- købte adgang til
- </string>
- <string name="GroupMoneyPaidFeeForEvent">
- betalte gebyr for event
- </string>
- <string name="GroupMoneyPaidPrizeForEvent">
- betalte prisen for event
- </string>
- <string name="GroupMoneyBalance">
- Balance
- </string>
- <string name="GroupMoneyCredits">
- Kredit
- </string>
- <string name="GroupMoneyDebits">
- Debet
- </string>
- <string name="ViewerObjectContents">
- Indhold
- </string>
- <string name="AcquiredItems">
- Anskaffede genstande
- </string>
- <string name="Cancel">
- Annullér
- </string>
- <string name="UploadingCosts">
- Uploader [%s] omkostninger
- </string>
- <string name="UnknownFileExtension">
- Ukendt fil efternavn [.%s]
-Forventet .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
- </string>
- <string name="AddLandmarkNavBarMenu">
- Tilføj landemærke...
- </string>
- <string name="EditLandmarkNavBarMenu">
- Redigér landemærke...
- </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">
- Fil gemt
- </string>
- <string name="Receiving">
- Modtager
- </string>
- <string name="AM">
- AM
- </string>
- <string name="PM">
- PM
- </string>
- <string name="PST">
- PST
- </string>
- <string name="PDT">
- PDT
- </string>
- <string name="Forward">
- Fremad
- </string>
- <string name="Left">
- Venstre
- </string>
- <string name="Right">
- Højre
- </string>
- <string name="Back">
- Bagud
- </string>
- <string name="North">
- Nord
- </string>
- <string name="South">
- Syd
- </string>
- <string name="West">
- Vest
- </string>
- <string name="East">
- Øst
- </string>
- <string name="Up">
- Op
- </string>
- <string name="Down">
- Ned
- </string>
- <string name="Any Category">
- Enhver kategori
- </string>
- <string name="Shopping">
- Shopping
- </string>
- <string name="Land Rental">
- Land til leje
- </string>
- <string name="Property Rental">
- Grunde til leje
- </string>
- <string name="Special Attraction">
- Speciel attraktion
- </string>
- <string name="New Products">
- Nye produkter
- </string>
- <string name="Employment">
- Jobs
- </string>
- <string name="Wanted">
- Søges
- </string>
- <string name="Service">
- Service
- </string>
- <string name="Personal">
- Personlig
- </string>
- <string name="None">
- Ingen
- </string>
- <string name="Linden Location">
- Linden sted
- </string>
- <string name="Adult">
- Adult
- </string>
- <string name="Arts&Culture">
- Kunst & kultur
- </string>
- <string name="Business">
- Business
- </string>
- <string name="Educational">
- Uddannelse
- </string>
- <string name="Gaming">
- Spil
- </string>
- <string name="Hangout">
- Afslapning
- </string>
- <string name="Newcomer Friendly">
- Nybegynder venligt
- </string>
- <string name="Parks&Nature">
- Parker & natur
- </string>
- <string name="Residential">
- Beboelse
- </string>
- <string name="Stage">
- Fase
- </string>
- <string name="Other">
- Andet
- </string>
- <string name="Any">
- Enhver
- </string>
- <string name="You">
- Dig
- </string>
- <string name="Multiple Media">
- Flere medietyper
- </string>
- <string name="Play Media">
- Afspil/Pause medie
- </string>
- <string name="MBCmdLineError">
- Der opstod en fejl ved afvikling af kommandolinie.
-Se venligst: http://wiki.secondlife.com/wiki/Client_parameters
-Fejl:
- </string>
- <string name="MBCmdLineUsg">
- [APP_NAME] Kommando linie brug:
- </string>
- <string name="MBUnableToAccessFile">
- [APP_NAME] kan ikke få adgang til fil den/det skal bruge.
-
-Dette kan skyldes at du har flere kopier kørende eller operativsystemet tror at filen allerede er åben.
-Hvis fejlen bliver ved, genstart computer og prøv igen.
-Hvis fejlen stadig bliver ved, kan det være nødvendigt at afinstallere [APP_NAME] og installere igen.
- </string>
- <string name="MBFatalError">
- Fatal fejl
- </string>
- <string name="MBRequiresAltiVec">
- [APP_NAME] kræver en processor med AltiVec (G4 eller nyere).
- </string>
- <string name="MBAlreadyRunning">
- [APP_NAME] kører allerede.
-Undersøg din "task bar" for at se efter minimeret version af programmet.
-Hvis fejlen fortsætter, prøv at genstarte din computer.
- </string>
- <string name="MBFrozenCrashed">
- [APP_NAME] ser ud til at være "frosset" eller gået ned tidligere.
-Ønsker du at sende en fejlrapport?
- </string>
- <string name="MBAlert">
- Besked
- </string>
- <string name="MBNoDirectX">
- [APP_NAME] kan ikke detektere DirectX 9.0b eller nyere.
-[APP_NAME] benytte DirectX til at detektere hardware og/eller forældede drivere der kan give problemer med stabilitet, dårlig hastighed eller nedbrud. Selvom du kan køre [APP_NAME] uden det, anbefaler vi meget at køre med DirectX 9.0b.
-
-Ønsker du at fortsætte?
- </string>
- <string name="MBWarning">
- Advarsel
- </string>
- <string name="MBNoAutoUpdate">
- Automatisk opdatering er endnu ikke implementeret på Linux.
-Hent venligst den nyeste version på www.secondlife.com.
- </string>
- <string name="MBRegClassFailed">
- RegisterClass fejlede
- </string>
- <string name="MBError">
- Fejl
- </string>
- <string name="MBFullScreenErr">
- Ikke muligt at køre i fuldskærm med [WIDTH] x [HEIGHT].
-Afvikler i vindue.
- </string>
- <string name="MBDestroyWinFailed">
- Nedlukningsfejl ved lukning af vindue (DestroyWindow() fejlede)
- </string>
- <string name="MBShutdownErr">
- Fejl ved nedlukning
- </string>
- <string name="MBDevContextErr">
- Kan ikke oprette "GL device context"
- </string>
- <string name="MBPixelFmtErr">
- Kan ikke finde passende "pixel format"
- </string>
- <string name="MBPixelFmtDescErr">
- Kan ikke finde "pixel format" beskrivelse
- </string>
- <string name="MBTrueColorWindow">
- [APP_NAME] kræver "True Color (32-bit)" for at kunne køre.
-Gå venligst til din computers skærmopsætning og sæt "color mode" til 32-bit.
- </string>
- <string name="MBAlpha">
- [APP_NAME] kan ikke køre, da den ikke kan finde en "8 bit alpha channel". Normalt skyldes dette et problem med en video driver.
-Venligst undersøg om du har de nyeste drivere til dit videokort installeret.
-Din skærm skal også være sat op til at køre "True Color (32-bit)" i din displayopsætning.
-Hvis du bliver ved med at modtage denne besked, kontakt [SUPPORT_SITE].
- </string>
- <string name="MBPixelFmtSetErr">
- Kan ikke sætte "pixel format"
- </string>
- <string name="MBGLContextErr">
- Kan ikke oprette "GL rendering context"
- </string>
- <string name="MBGLContextActErr">
- Kan ikke aktivere "GL rendering context"
- </string>
- <string name="MBVideoDrvErr">
- [APP_NAME] kan ikke afvikles da driverne til dit videokort ikke blev installeret korrekt, er forældede, eller du benytter hardware der ikke er supporteret. Undersøg venligst om du har installeret de nyeste drivere til dit grafikkort, og selv om du har de nyeste, prøv at geninstallere dem.
-
-Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE].
- </string>
- <string name="5 O'Clock Shadow">
- Skægstubbe
- </string>
- <string name="All White">
- Helt hvidt
- </string>
- <string name="Anime Eyes">
- Store øjne
- </string>
- <string name="Arced">
- Spidst
- </string>
- <string name="Arm Length">
- Armængde
- </string>
- <string name="Attached">
- Vedhæftet
- </string>
- <string name="Attached Earlobes">
- Vedhæftede øreflipper
- </string>
- <string name="Back Bangs">
- Nakkehår
- </string>
- <string name="Back Bangs Down">
- Nakkehår langt
- </string>
- <string name="Back Bangs Up">
- Nakkehår kort
- </string>
- <string name="Back Fringe">
- Nakkehår
- </string>
- <string name="Back Hair">
- Volumen
- </string>
- <string name="Back Hair Down">
- Volumen nedad
- </string>
- <string name="Back Hair Up">
- Volumen op
- </string>
- <string name="Baggy">
- Posede
- </string>
- <string name="Bangs">
- Pandehår
- </string>
- <string name="Bangs Down">
- Pandehår ned
- </string>
- <string name="Bangs Up">
- Pandehår op
- </string>
- <string name="Beady Eyes">
- Stikkende øjne
- </string>
- <string name="Belly Size">
- Mave størrelse
- </string>
- <string name="Big">
- Stor
- </string>
- <string name="Big Butt">
- Stor bagdel
- </string>
- <string name="Big Eyeball">
- Store øjenæbler
- </string>
- <string name="Big Hair Back">
- Stort hår: Bag
- </string>
- <string name="Big Hair Front">
- Stort hår: Foran
- </string>
- <string name="Big Hair Top">
- Stort hår: Top
- </string>
- <string name="Big Head">
- Stort hovede
- </string>
- <string name="Big Pectorals">
- Store brystmuskler
- </string>
- <string name="Big Spikes">
- Store spikes
- </string>
- <string name="Black">
- Sort
- </string>
- <string name="Blonde">
- Blond
- </string>
- <string name="Blonde Hair">
- Blondt hår
- </string>
- <string name="Blush">
- Rødmen
- </string>
- <string name="Blush Color">
- Rødme farve
- </string>
- <string name="Blush Opacity">
- Rødme gennemsigtighed
- </string>
- <string name="Body Definition">
- Kropskontur
- </string>
- <string name="Body Fat">
- Kropsfedt
- </string>
- <string name="Body Freckles">
- Fregner på kroppen
- </string>
- <string name="Body Thick">
- Tyk krop
- </string>
- <string name="Body Thickness">
- Kropstykkelse
- </string>
- <string name="Body Thin">
- Tynd krop
- </string>
- <string name="Bow Legged">
- Hjulbenet
- </string>
- <string name="Breast Buoyancy">
- Bryst tyngdepåvirkning
- </string>
- <string name="Breast Cleavage">
- Kavalergang
- </string>
- <string name="Breast Size">
- Bryststørrelse
- </string>
- <string name="Bridge Width">
- Bredde næseryg
- </string>
- <string name="Broad">
- Bred
- </string>
- <string name="Brow Size">
- Størrelse øjenbryn
- </string>
- <string name="Bug Eyes">
- Udstående øjne
- </string>
- <string name="Bugged Eyes">
- Udstående øjne
- </string>
- <string name="Bulbous">
- Kartoffelnæse
- </string>
- <string name="Bulbous Nose">
- Kartoffelnæse
- </string>
- <string name="Bushy Eyebrows">
- Buskede øjenbryn
- </string>
- <string name="Bushy Hair">
- Busket hår
- </string>
- <string name="Butt Size">
- Størrelse bagdel
- </string>
- <string name="bustle skirt">
- Tournure
- </string>
- <string name="no bustle">
- Ingen tournure
- </string>
- <string name="more bustle">
- Mere tournure
- </string>
- <string name="Chaplin">
- Chaplin
- </string>
- <string name="Cheek Bones">
- Kindben
- </string>
- <string name="Chest Size">
- Bryst størrelse
- </string>
- <string name="Chin Angle">
- Hage form
- </string>
- <string name="Chin Cleft">
- Hagekløft
- </string>
- <string name="Chin Curtains">
- Hageskæg
- </string>
- <string name="Chin Depth">
- Hage dybde
- </string>
- <string name="Chin Heavy">
- Stort forneden
- </string>
- <string name="Chin In">
- Vigende hage
- </string>
- <string name="Chin Out">
- Hage frem
- </string>
- <string name="Chin-Neck">
- Hals under hage
- </string>
- <string name="Clear">
- Slet
- </string>
- <string name="Cleft">
- Kløft
- </string>
- <string name="Close Set Eyes">
- Tætsiddende øjne
- </string>
- <string name="Closed">
- Lukket
- </string>
- <string name="Closed Back">
- Lukket bagtil
- </string>
- <string name="Closed Front">
- Lukket foran
- </string>
- <string name="Closed Left">
- Lukket til venstre
- </string>
- <string name="Closed Right">
- Lukket til højre
- </string>
- <string name="Coin Purse">
- Lille
- </string>
- <string name="Collar Back">
- Krave bagtil
- </string>
- <string name="Collar Front">
- Krave foran
- </string>
- <string name="Corner Down">
- Nedadvendt
- </string>
- <string name="Corner Normal">
- Normalt
- </string>
- <string name="Corner Up">
- Opadvendt
- </string>
- <string name="Creased">
- Rynket
- </string>
- <string name="Crooked Nose">
- Skæv næse
- </string>
- <string name="Cropped Hair">
- Kort hår
- </string>
- <string name="Cuff Flare">
- Svaj
- </string>
- <string name="Dark">
- Mørk
- </string>
- <string name="Dark Green">
- Mørkegrøn
- </string>
- <string name="Darker">
- Mørkere
- </string>
- <string name="Deep">
- Dyb
- </string>
- <string name="Default Heels">
- Standard hæle
- </string>
- <string name="Default Toe">
- Standard snude
- </string>
- <string name="Dense">
- Tæt
- </string>
- <string name="Dense hair">
- Tæt hår
- </string>
- <string name="Double Chin">
- Dobbelthage
- </string>
- <string name="Downturned">
- Peger nedad
- </string>
- <string name="Duffle Bag">
- Stort
- </string>
- <string name="Ear Angle">
- Øre vinkel
- </string>
- <string name="Ear Size">
- Øre størrelse
- </string>
- <string name="Ear Tips">
- Ørespidser
- </string>
- <string name="Egg Head">
- Ovalt hovede
- </string>
- <string name="Eye Bags">
- Poser under øjne
- </string>
- <string name="Eye Color">
- Øjenfarve
- </string>
- <string name="Eye Depth">
- Øjendybde
- </string>
- <string name="Eye Lightness">
- Øjennuance
- </string>
- <string name="Eye Opening">
- Øjenåbning
- </string>
- <string name="Eye Pop">
- Øjensymmetri
- </string>
- <string name="Eye Size">
- Øjenstørrelse
- </string>
- <string name="Eye Spacing">
- Øjenafstand
- </string>
- <string name="Eyeball Size">
- Størrelse øjenæble
- </string>
- <string name="Eyebrow Arc">
- Bue på øjenbryn
- </string>
- <string name="Eyebrow Density">
- Tæthed øjenbryn
- </string>
- <string name="Eyebrow Height">
- Højde på øjenbryn
- </string>
- <string name="Eyebrow Points">
- Løftede øjenbryn
- </string>
- <string name="Eyebrow Size">
- Størrelse øjenbryn
- </string>
- <string name="Eyelash Length">
- Længde øjenvipper
- </string>
- <string name="Eyeliner">
- Eyeliner
- </string>
- <string name="Eyeliner Color">
- Eyeliner farve
- </string>
- <string name="Eyes Back">
- Dybtliggende øjne
- </string>
- <string name="Eyes Bugged">
- Udstående øjne
- </string>
- <string name="Eyes Forward">
- Øjne fremme
- </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">
- Stor afstand
- </string>
- <string name="Eyes Sunken">
- Indsunkne øjne
- </string>
- <string name="Eyes Together">
- Tætsiddende
- </string>
- <string name="Face Shear">
- Ansigts symmetri
- </string>
- <string name="Facial Definition">
- Ansigtskonturer
- </string>
- <string name="Far Set Eyes">
- Stor afstand mellem øjne
- </string>
- <string name="Fat">
- Tyk
- </string>
- <string name="Fat Head">
- Tykt hovede
- </string>
- <string name="Fat Lips">
- Tykke læber
- </string>
- <string name="Fat Lower">
- Tyk nedre
- </string>
- <string name="Fat Lower Lip">
- Tyk underlæbe
- </string>
- <string name="Fat Torso">
- Tyk overkrop
- </string>
- <string name="Fat Upper">
- Tyk øvre
- </string>
- <string name="Fat Upper Lip">
- Tyk overlæbe
- </string>
- <string name="Female">
- Kvinde
- </string>
- <string name="Fingerless">
- Fingerløse
- </string>
- <string name="Fingers">
- Fingre
- </string>
- <string name="Flared Cuffs">
- Stor vidde
- </string>
- <string name="Flat">
- Flad
- </string>
- <string name="Flat Butt">
- Flad bagdel
- </string>
- <string name="Flat Head">
- Fladt hovede
- </string>
- <string name="Flat Toe">
- Flad snude
- </string>
- <string name="Foot Size">
- Størrelse fod
- </string>
- <string name="Forehead Angle">
- Pande vinkel
- </string>
- <string name="Forehead Heavy">
- Stort foroven
- </string>
- <string name="Freckles">
- Fregner
- </string>
- <string name="Front Bangs Down">
- Pandehår - ned
- </string>
- <string name="Front Bangs Up">
- Pandehår - op
- </string>
- <string name="Front Fringe">
- Frynser foran
- </string>
- <string name="Front Hair">
- Hår foran
- </string>
- <string name="Front Hair Down">
- Hår foran - ned
- </string>
- <string name="Front Hair Up">
- Hår foran - op
- </string>
- <string name="Full Back">
- Langt ud bagtil
- </string>
- <string name="Full Eyeliner">
- Meget eyeliner
- </string>
- <string name="Full Front">
- Langt frem fortil
- </string>
- <string name="Full Hair Sides">
- Hår i siderne
- </string>
- <string name="Full Sides">
- Meget hår
- </string>
- <string name="Glossy">
- Skinnende
- </string>
- <string name="Glove Fingers">
- Fingre i handsker
- </string>
- <string name="Glove Length">
- Handskelængde
- </string>
- <string name="Hair">
- Hår
- </string>
- <string name="Hair Back">
- Hår: Bagtil
- </string>
- <string name="Hair Front">
- Hår: Foran
- </string>
- <string name="Hair Sides">
- Hår: Siderne
- </string>
- <string name="Hair Sweep">
- Strøget hår
- </string>
- <string name="Hair Thickess">
- Hår tykkelse
- </string>
- <string name="Hair Thickness">
- Hår tykkelse
- </string>
- <string name="Hair Tilt">
- Hældning
- </string>
- <string name="Hair Tilted Left">
- mest hår venstre
- </string>
- <string name="Hair Tilted Right">
- Mest hår højre
- </string>
- <string name="Hair Volume">
- Hår: Volumen
- </string>
- <string name="Hand Size">
- Størrelse hånd
- </string>
- <string name="Handlebars">
- Cykelstyr
- </string>
- <string name="Head Length">
- Længde på hovede
- </string>
- <string name="Head Shape">
- Hovedform
- </string>
- <string name="Head Size">
- Hovedstørrelse
- </string>
- <string name="Head Stretch">
- Hovedhøjde
- </string>
- <string name="Heel Height">
- Hælhøjde
- </string>
- <string name="Heel Shape">
- Hælform
- </string>
- <string name="Height">
- Højde
- </string>
- <string name="High">
- Høj
- </string>
- <string name="High Heels">
- Hæje hæle
- </string>
- <string name="High Jaw">
- Høj kæbe
- </string>
- <string name="High Platforms">
- Høje såle
- </string>
- <string name="High and Tight">
- Høj og tæt
- </string>
- <string name="Higher">
- Højere
- </string>
- <string name="Hip Length">
- Hoftelængde
- </string>
- <string name="Hip Width">
- Hoftebredde
- </string>
- <string name="In">
- Inde
- </string>
- <string name="In Shdw Color">
- Indre skygge farve
- </string>
- <string name="In Shdw Opacity">
- Indre skygge gennemsigtighed
- </string>
- <string name="Inner Eye Corner">
- Inderste del af øje
- </string>
- <string name="Inner Eye Shadow">
- Inderste øjenskygge
- </string>
- <string name="Inner Shadow">
- Indre skygge
- </string>
- <string name="Jacket Length">
- Jakkelængde
- </string>
- <string name="Jacket Wrinkles">
- Jakkerynker
- </string>
- <string name="Jaw Angle">
- Kæbevinkel
- </string>
- <string name="Jaw Jut">
- Kæbefremspring
- </string>
- <string name="Jaw Shape">
- Kæbeform
- </string>
- <string name="Join">
- Saml
- </string>
- <string name="Jowls">
- Kindehud
- </string>
- <string name="Knee Angle">
- Knævinkel
- </string>
- <string name="Knock Kneed">
- Kalveknæet
- </string>
- <string name="Large">
- Stor
- </string>
- <string name="Large Hands">
- Store hænder
- </string>
- <string name="Left Part">
- Venstre side
- </string>
- <string name="Leg Length">
- Benlængde
- </string>
- <string name="Leg Muscles">
- Benmuskler
- </string>
- <string name="Less">
- Mindre
- </string>
- <string name="Less Body Fat">
- Mindre kropsfedt
- </string>
- <string name="Less Curtains">
- Mindre
- </string>
- <string name="Less Freckles">
- Færre fregner
- </string>
- <string name="Less Full">
- Mindre
- </string>
- <string name="Less Gravity">
- Mindre
- </string>
- <string name="Less Love">
- Mindre bildæk
- </string>
- <string name="Less Muscles">
- Færre muskler
- </string>
- <string name="Less Muscular">
- Mindre muskuløs
- </string>
- <string name="Less Rosy">
- Mindre rosa
- </string>
- <string name="Less Round">
- Mindre rund
- </string>
- <string name="Less Saddle">
- Mindre
- </string>
- <string name="Less Square">
- Mindre
- </string>
- <string name="Less Volume">
- Mindre
- </string>
- <string name="Less soul">
- Mindre
- </string>
- <string name="Lighter">
- Lettere
- </string>
- <string name="Lip Cleft">
- Læbekløft
- </string>
- <string name="Lip Cleft Depth">
- Dybde læbekløft
- </string>
- <string name="Lip Fullness">
- Fyldige læber
- </string>
- <string name="Lip Pinkness">
- Lyserøde læber
- </string>
- <string name="Lip Ratio">
- Læbeproportioner
- </string>
- <string name="Lip Thickness">
- Læbetykkelse
- </string>
- <string name="Lip Width">
- Læbebredde
- </string>
- <string name="Lipgloss">
- Lipgloss
- </string>
- <string name="Lipstick">
- Læbestift
- </string>
- <string name="Lipstick Color">
- Læbestift farve
- </string>
- <string name="Long">
- Lang
- </string>
- <string name="Long Head">
- Langt hovede
- </string>
- <string name="Long Hips">
- Lange hofter
- </string>
- <string name="Long Legs">
- Bange ben
- </string>
- <string name="Long Neck">
- Lang hals
- </string>
- <string name="Long Pigtails">
- Lange rottehaler
- </string>
- <string name="Long Ponytail">
- Lang hestehale
- </string>
- <string name="Long Torso">
- Lang overkrop
- </string>
- <string name="Long arms">
- Lange arme
- </string>
- <string name="Longcuffs">
- Longcuffs
- </string>
- <string name="Loose Pants">
- Løse bukser
- </string>
- <string name="Loose Shirt">
- Løs trøje
- </string>
- <string name="Loose Sleeves">
- Løse ærmer
- </string>
- <string name="Love Handles">
- Bildæk
- </string>
- <string name="Low">
- Lav
- </string>
- <string name="Low Heels">
- Flade hæle
- </string>
- <string name="Low Jaw">
- Lav kæbe
- </string>
- <string name="Low Platforms">
- Flade såler
- </string>
- <string name="Low and Loose">
- Lav og løs
- </string>
- <string name="Lower">
- Nedre
- </string>
- <string name="Lower Bridge">
- Nedre næseryg
- </string>
- <string name="Lower Cheeks">
- Nedre kinder
- </string>
- <string name="Male">
- Mand
- </string>
- <string name="Middle Part">
- Midterste del
- </string>
- <string name="More">
- Mere
- </string>
- <string name="More Blush">
- Mere rødmen
- </string>
- <string name="More Body Fat">
- Mere kropsfedt
- </string>
- <string name="More Curtains">
- Mere
- </string>
- <string name="More Eyeshadow">
- Mere øjenskygge
- </string>
- <string name="More Freckles">
- Flere fregner
- </string>
- <string name="More Full">
- Mere
- </string>
- <string name="More Gravity">
- More
- </string>
- <string name="More Lipstick">
- Mere læbestift
- </string>
- <string name="More Love">
- Mere bildæk
- </string>
- <string name="More Lower Lip">
- Mere underlæbe
- </string>
- <string name="More Muscles">
- Flere muskler
- </string>
- <string name="More Muscular">
- Mere muskuløs
- </string>
- <string name="More Rosy">
- Mere rosa
- </string>
- <string name="More Round">
- Mere rund
- </string>
- <string name="More Saddle">
- Mere
- </string>
- <string name="More Sloped">
- Mere skrå
- </string>
- <string name="More Square">
- Mere firkantet
- </string>
- <string name="More Upper Lip">
- Mere overlæbe
- </string>
- <string name="More Vertical">
- Mere lodret
- </string>
- <string name="More Volume">
- Mere
- </string>
- <string name="More soul">
- Mere
- </string>
- <string name="Moustache">
- Overskæg
- </string>
- <string name="Mouth Corner">
- Mundvige
- </string>
- <string name="Mouth Position">
- Position mund
- </string>
- <string name="Mowhawk">
- Intet hår
- </string>
- <string name="Muscular">
- Muskuløs
- </string>
- <string name="Mutton Chops">
- Lange
- </string>
- <string name="Nail Polish">
- Neglelak
- </string>
- <string name="Nail Polish Color">
- Neglelak farve
- </string>
- <string name="Narrow">
- Smal
- </string>
- <string name="Narrow Back">
- Smal bagtil
- </string>
- <string name="Narrow Front">
- Smal fortil
- </string>
- <string name="Narrow Lips">
- Smalle læber
- </string>
- <string name="Natural">
- Naturlig
- </string>
- <string name="Neck Length">
- Halslængde
- </string>
- <string name="Neck Thickness">
- Halstykkelse
- </string>
- <string name="No Blush">
- Ingen rødmen
- </string>
- <string name="No Eyeliner">
- Ingen eyeliner
- </string>
- <string name="No Eyeshadow">
- Ingen øjenskygge
- </string>
- <string name="No Heels">
- Ingen hæle
- </string>
- <string name="No Lipgloss">
- Ingen lipgloss
- </string>
- <string name="No Lipstick">
- Ingen læbestift
- </string>
- <string name="No Part">
- Ingen dele
- </string>
- <string name="No Polish">
- Ingen lak
- </string>
- <string name="No Red">
- Ingen rød
- </string>
- <string name="No Spikes">
- Ingen spikes
- </string>
- <string name="No White">
- Ingen hvid
- </string>
- <string name="No Wrinkles">
- Ingen rynker
- </string>
- <string name="Normal Lower">
- Normal nedre
- </string>
- <string name="Normal Upper">
- Normal øvre
- </string>
- <string name="Nose Left">
- Højre
- </string>
- <string name="Nose Right">
- Venstre
- </string>
- <string name="Nose Size">
- Næse størrelse
- </string>
- <string name="Nose Thickness">
- Næse tykkelse
- </string>
- <string name="Nose Tip Angle">
- Næsetip vinkel
- </string>
- <string name="Nose Tip Shape">
- Næsetip form
- </string>
- <string name="Nose Width">
- Næse bredde
- </string>
- <string name="Nostril Division">
- Næsebor adskillelse
- </string>
- <string name="Nostril Width">
- Næsebor bredde
- </string>
- <string name="Old">
- Gammel
- </string>
- <string name="Opaque">
- Uigennemsigtig
- </string>
- <string name="Open">
- Åben
- </string>
- <string name="Open Back">
- Åben bagtil
- </string>
- <string name="Open Front">
- Åben foran
- </string>
- <string name="Open Left">
- Åben til venstre
- </string>
- <string name="Open Right">
- Åben til højre
- </string>
- <string name="Orange">
- Orange
- </string>
- <string name="Out">
- Ud
- </string>
- <string name="Out Shdw Color">
- Ydre skygge farve
- </string>
- <string name="Out Shdw Opacity">
- Ydre skygge uigennemsigtighed
- </string>
- <string name="Outer Eye Corner">
- Yderste del af øje
- </string>
- <string name="Outer Eye Shadow">
- Ydre øjenskygge
- </string>
- <string name="Outer Shadow">
- Ydre skygge
- </string>
- <string name="Overbite">
- Overbid
- </string>
- <string name="Package">
- Skridt
- </string>
- <string name="Painted Nails">
- Malede negle
- </string>
- <string name="Pale">
- Bleg
- </string>
- <string name="Pants Crotch">
- Bukser skridt
- </string>
- <string name="Pants Fit">
- Pasform bukser
- </string>
- <string name="Pants Length">
- Bukser - længde
- </string>
- <string name="Pants Waist">
- Bukser - vidde
- </string>
- <string name="Pants Wrinkles">
- Bukser - rynker
- </string>
- <string name="Part">
- Skilning
- </string>
- <string name="Part Bangs">
- Skilning
- </string>
- <string name="Pectorals">
- Brystmuskler
- </string>
- <string name="Pigment">
- Pigmentering
- </string>
- <string name="Pigtails">
- Rottehaler
- </string>
- <string name="Pink">
- Pink
- </string>
- <string name="Pinker">
- Mere pink
- </string>
- <string name="Platform Height">
- Højde sål
- </string>
- <string name="Platform Width">
- Bredde sål
- </string>
- <string name="Pointy">
- Spids
- </string>
- <string name="Pointy Heels">
- Spidse hæle
- </string>
- <string name="Pointy Toe">
- Spids snude
- </string>
- <string name="Ponytail">
- Hestehale
- </string>
- <string name="Poofy Skirt">
- Strutskørt
- </string>
- <string name="Pop Left Eye">
- Forstør venstre øje
- </string>
- <string name="Pop Right Eye">
- Forstør højre øje
- </string>
- <string name="Puffy">
- Posede
- </string>
- <string name="Puffy Eyelids">
- Posede øjenlåg
- </string>
- <string name="Rainbow Color">
- Regnbue farver
- </string>
- <string name="Red Hair">
- Rødt hår
- </string>
- <string name="Red Skin">
- Rød hud
- </string>
- <string name="Regular">
- Almindelig
- </string>
- <string name="Regular Muscles">
- Almindelige muskler
- </string>
- <string name="Right Part">
- Højre skildning
- </string>
- <string name="Rosy Complexion">
- Rosa teint
- </string>
- <string name="Round">
- Rund
- </string>
- <string name="Round Forehead">
- Rund pande
- </string>
- <string name="Ruddiness">
- Rødmossethed
- </string>
- <string name="Ruddy">
- Rødmosset
- </string>
- <string name="Rumpled Hair">
- Krøllet hår
- </string>
- <string name="Saddle Bags">
- Ridebukselår
- </string>
- <string name="Saddlebags">
- Ridebukselår
- </string>
- <string name="Scrawny">
- Radmager
- </string>
- <string name="Scrawny Leg">
- Magert ben
- </string>
- <string name="Separate">
- Separat
- </string>
- <string name="Shading">
- Skygger
- </string>
- <string name="Shadow hair">
- Skygge hår
- </string>
- <string name="Shallow">
- Lille
- </string>
- <string name="Shear Back">
- Afklippet bagi
- </string>
- <string name="Shear Face">
- Skævt ansigt
- </string>
- <string name="Shear Front">
- "Måne"
- </string>
- <string name="Shear Left">
- Venstre
- </string>
- <string name="Shear Left Up">
- Venstre op
- </string>
- <string name="Shear Right">
- Højre
- </string>
- <string name="Shear Right Up">
- Højre op
- </string>
- <string name="Sheared Back">
- Afklippet bagtil
- </string>
- <string name="Sheared Front">
- Måne
- </string>
- <string name="Shift Left">
- Mod venstre
- </string>
- <string name="Shift Mouth">
- Flyt mund
- </string>
- <string name="Shift Right">
- Mod højre
- </string>
- <string name="Shirt Bottom">
- Trøje - bund
- </string>
- <string name="Shirt Fit">
- Trøje - pasform
- </string>
- <string name="Shirt Wrinkles">
- Trøje - rynker
- </string>
- <string name="Shoe Height">
- Sko højde
- </string>
- <string name="Short">
- Kort
- </string>
- <string name="Short Arms">
- Korte arme
- </string>
- <string name="Short Legs">
- Korte ben
- </string>
- <string name="Short Neck">
- Kort hals
- </string>
- <string name="Short Pigtails">
- Korte rottehaler
- </string>
- <string name="Short Ponytail">
- Kort hestehale
- </string>
- <string name="Short Sideburns">
- Korte
- </string>
- <string name="Short Torso">
- Kort overkrop
- </string>
- <string name="Short hips">
- Korte hofter
- </string>
- <string name="Shoulders">
- Skuldre
- </string>
- <string name="Side Bangs">
- Sidehår
- </string>
- <string name="Side Bangs Down">
- Ned
- </string>
- <string name="Side Bangs Up">
- Op
- </string>
- <string name="Side Fringe">
- Side frynser
- </string>
- <string name="Sideburns">
- Bakkenbarter
- </string>
- <string name="Sides Hair">
- Sidehår
- </string>
- <string name="Sides Hair Down">
- Ned
- </string>
- <string name="Sides Hair Up">
- Op
- </string>
- <string name="Skinny">
- Tynd
- </string>
- <string name="Skinny Neck">
- Tynd hals
- </string>
- <string name="Skirt Fit">
- Omfang
- </string>
- <string name="Skirt Length">
- Længde nederdel
- </string>
- <string name="Slanted Forehead">
- Skrånende pande
- </string>
- <string name="Sleeve Length">
- Ærmelængde
- </string>
- <string name="Sleeve Looseness">
- Ærmer - stramhed
- </string>
- <string name="Slit Back">
- Slids: Bag
- </string>
- <string name="Slit Front">
- Slids: Foran
- </string>
- <string name="Slit Left">
- Slids: Venstre
- </string>
- <string name="Slit Right">
- Slids: Højre
- </string>
- <string name="Small">
- Lille
- </string>
- <string name="Small Hands">
- Små hænder
- </string>
- <string name="Small Head">
- Lille hovede
- </string>
- <string name="Smooth">
- Glat
- </string>
- <string name="Smooth Hair">
- Glat hår
- </string>
- <string name="Socks Length">
- Strømper - længde
- </string>
- <string name="Some">
- Nogen
- </string>
- <string name="Soulpatch">
- Soulpatch
- </string>
- <string name="Sparse">
- Sparsomt
- </string>
- <string name="Spiked Hair">
- Hår med "spikes"
- </string>
- <string name="Square">
- Firkantet
- </string>
- <string name="Square Toe">
- Firkantet snude
- </string>
- <string name="Squash Head">
- Bredt hovede
- </string>
- <string name="Squash/Stretch Head">
- Sammentryk/stræk hovede
- </string>
- <string name="Stretch Head">
- Stræk hovede
- </string>
- <string name="Sunken">
- Indsunket
- </string>
- <string name="Sunken Chest">
- Indsunket bryst
- </string>
- <string name="Sunken Eyes">
- Dybtliggende øjne
- </string>
- <string name="Sweep Back">
- Stryge tilbage
- </string>
- <string name="Sweep Forward">
- Stryge fremad
- </string>
- <string name="Swept Back">
- Tilbagestrøget
- </string>
- <string name="Swept Back Hair">
- Tilbagestrøget hår
- </string>
- <string name="Swept Forward">
- Fremadstrøget
- </string>
- <string name="Swept Forward Hair">
- Fremadstrøget hår
- </string>
- <string name="Tall">
- Høj
- </string>
- <string name="Taper Back">
- Indsnævring bag
- </string>
- <string name="Taper Front">
- Indsnævring foran
- </string>
- <string name="Thick Heels">
- Brede hæle
- </string>
- <string name="Thick Neck">
- Bred nakke
- </string>
- <string name="Thick Toe">
- Bred snude
- </string>
- <string name="Thickness">
- Tykkelse
- </string>
- <string name="Thin">
- Tynd
- </string>
- <string name="Thin Eyebrows">
- Tynde øjenbryn
- </string>
- <string name="Thin Lips">
- Tynde læber
- </string>
- <string name="Thin Nose">
- Tynd næse
- </string>
- <string name="Tight Chin">
- Stram hage
- </string>
- <string name="Tight Cuffs">
- Smalle bukseben
- </string>
- <string name="Tight Pants">
- Stramme bukser
- </string>
- <string name="Tight Shirt">
- Stram trøje
- </string>
- <string name="Tight Skirt">
- Stram nederdel
- </string>
- <string name="Tight Sleeves">
- Stramme ærmer
- </string>
- <string name="Tilt Left">
- Hæld til venstre
- </string>
- <string name="Tilt Right">
- Hæld til højre
- </string>
- <string name="Toe Shape">
- Sko form
- </string>
- <string name="Toe Thickness">
- Tykkelse af snud
- </string>
- <string name="Torso Length">
- Overkrop - længde
- </string>
- <string name="Torso Muscles">
- Overkrop - muskler
- </string>
- <string name="Torso Scrawny">
- Overkrop - mager
- </string>
- <string name="Unattached">
- Ikke vedhæftet
- </string>
- <string name="Uncreased">
- Glat
- </string>
- <string name="Underbite">
- Underbid
- </string>
- <string name="Unnatural">
- Unaturlig
- </string>
- <string name="Upper Bridge">
- Øverste næseryg
- </string>
- <string name="Upper Cheeks">
- Øvre kinder
- </string>
- <string name="Upper Chin Cleft">
- Øvre hagekløft
- </string>
- <string name="Upper Eyelid Fold">
- Øvre øjenlåg
- </string>
- <string name="Upturned">
- Opadvendt
- </string>
- <string name="Very Red">
- Meget rød
- </string>
- <string name="Waist Height">
- Talje højde
- </string>
- <string name="Well-Fed">
- Velnæret
- </string>
- <string name="White Hair">
- Hvidt hår
- </string>
- <string name="Wide">
- Bred
- </string>
- <string name="Wide Back">
- Bredt
- </string>
- <string name="Wide Front">
- Bredt
- </string>
- <string name="Wide Lips">
- Brede læber
- </string>
- <string name="Wild">
- Vildt
- </string>
- <string name="Wrinkles">
- Rynker
- </string>
- <string name="LocationCtrlAddLandmarkTooltip">
- Tilføj til mine landemærker
- </string>
- <string name="LocationCtrlEditLandmarkTooltip">
- Rediger mit landemærke
- </string>
- <string name="LocationCtrlInfoBtnTooltip">
- Se yderligere information om nuværende lokation
- </string>
- <string name="LocationCtrlComboBtnTooltip">
- Min lokationshistorik
- </string>
- <string name="UpdaterWindowTitle">
- [APP_NAME] Opdatér
- </string>
- <string name="UpdaterNowUpdating">
- Opdaterer nu [APP_NAME]...
- </string>
- <string name="UpdaterNowInstalling">
- Installerer [APP_NAME]...
- </string>
- <string name="UpdaterUpdatingDescriptive">
- Din [APP_NAME] klient bliver opdateret til nyeste version. Dette kan tage noget tid, så venligst vær tålmodig.
- </string>
- <string name="UpdaterProgressBarTextWithEllipses">
- Download færdig...
- </string>
- <string name="UpdaterProgressBarText">
- Downloader opdatering
- </string>
- <string name="UpdaterFailDownloadTitle">
- Download af opdatering fejlede
- </string>
- <string name="UpdaterFailUpdateDescriptive">
- Der opstod en fejl ved opdatering af [APP_NAME]. Hent venligst den nyeste version fra www.secondlife.com.
- </string>
- <string name="UpdaterFailInstallTitle">
- Installation af opdatering fejlede
- </string>
- <string name="UpdaterFailStartTitle">
- Opstart af klient fejlede
- </string>
- <string name="IM_logging_string">
- -- Logning af IM aktiveret --
- </string>
- <string name="IM_typing_start_string">
- [NAME] skriver...
- </string>
- <string name="Unnamed">
- (Uden navn)
- </string>
- <string name="IM_moderated_chat_label">
- (Modereret: Stemmer deaktiveret)
- </string>
- <string name="IM_unavailable_text_label">
- Tekst chat er ikke tilgængelig i denne samtale.
- </string>
- <string name="IM_muted_text_label">
- Din tekst chat er blevet deaktiveret af en gruppe moderator.
- </string>
- <string name="IM_default_text_label">
- Klik her for privat besked (IM).
- </string>
- <string name="IM_to_label">
- Til
- </string>
- <string name="IM_moderator_label">
- (Moderator)
- </string>
- <string name="only_user_message">
- Du er den eneste deltager i denne samtale
- </string>
- <string name="offline_message">
- [FIRST] [LAST] er ikke logget på.
- </string>
- <string name="invite_message">
- Tryk på [BUTTON NAME] knappen for at acceptére/tilslutte til denne stemme chat.
- </string>
- <string name="muted_message">
- Du har blokeret denne beboer. Hvis du starter en samtale vil denne blokering automatisk blive fjernet.
- </string>
- <string name="generic_request_error">
- Kunne ikke etablere forbindelse, prøv igen senere
- </string>
- <string name="insufficient_perms_error">
- Du har ikke de fornødne rettigheder.
- </string>
- <string name="session_does_not_exist_error">
- Denne samtale er lukket ned
- </string>
- <string name="no_ability_error">
- Du har ikke den mulighed.
- </string>
- <string name="no_ability">
- Du har ikke den mulighed.
- </string>
- <string name="not_a_mod_error">
- Du er ikke moderator for denne samtale.
- </string>
- <string name="muted_error">
- Du er blevet "blokeret".
- </string>
- <string name="add_session_event">
- Ikke muligt at tilføge brugere til samtale med [RECIPIENT].
- </string>
- <string name="message_session_event">
- Ikke muligt at sende din besked til samtalen med [RECIPIENT].
- </string>
- <string name="removed_from_group">
- Du er blevet fjernet fra gruppen.
- </string>
- <string name="close_on_no_ability">
- Du har ikke længere mulighed for at deltage i samtalen
- </string>
-</strings>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- This file contains strings that used to be hardcoded in the source. + It is only for those strings which do not belong in a floater. + 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"> + Second Life Support Portal + </string> + <string name="StartupDetectingHardware"> + Detekterer hardware... + </string> + <string name="StartupLoading"> + Indlæser + </string> + <string name="LoginInProgress"> + Logger p. [APP_NAME] kan virke laast. Vent venligst. + </string> + <string name="LoginInProgressNoFrozen"> + Logger på... + </string> + <string name="LoginAuthenticating"> + Validerer adgang + </string> + <string name="LoginMaintenance"> + Udfører konto vedligeholdelse... + </string> + <string name="LoginAttempt"> + Tidligere forsø på login fejlede. Logger på, forsøg [NUMBER] + </string> + <string name="LoginPrecaching"> + verden... + </string> + <string name="LoginInitializingBrowser"> + Klargør indbyggede web browser... + </string> + <string name="LoginInitializingMultimedia"> + Klargør multimedia... + </string> + <string name="LoginInitializingFonts"> + Indlæser fonts... + </string> + <string name="LoginVerifyingCache"> + Checker cache filer (kan tage 60-90 sekunder)... + </string> + <string name="LoginProcessingResponse"> + Behandler svar ... + </string> + <string name="LoginInitializingWorld"> + Initialiserer verden... + </string> + <string name="LoginDecodingImages"> + Behandler billeder... + </string> + <string name="LoginInitializingQuicktime"> + Initialiserer QuickTime... + </string> + <string name="LoginQuicktimeNotFound"> + QuickTime ikke fundet- kunne derfor ikke initialisere. + </string> + <string name="LoginQuicktimeOK"> + QuickTime initialiseret. + </string> + <string name="LoginWaitingForRegionHandshake"> + Venter på svar fra region... + </string> + <string name="LoginConnectingToRegion"> + Tilslutter til region... + </string> + <string name="LoginDownloadingClothing"> + Henter tøj... + </string> + <string name="LoginFailedNoNetwork"> + Netværksfejl: Kunne ikke etablere forbindelse, check venligst din netværksforbindelse. + </string> + <string name="Quit"> + Afslut + </string> + <string name="AgentLostConnection"> + Denne region kan have problemer. Tjek venligst din forbindelse til internettet. + </string> + <string name="TooltipPerson"> + Person + </string> + <string name="TooltipNoName"> + (intet navn) + </string> + <string name="TooltipOwner"> + Ejer: + </string> + <string name="TooltipPublic"> + Offentlig + </string> + <string name="TooltipIsGroup"> + (Gruppe) + </string> + <string name="TooltipForSaleL$"> + Til salg: L$[AMOUNT] + </string> + <string name="TooltipFlagGroupBuild"> + Gruppe byg + </string> + <string name="TooltipFlagNoBuild"> + Må ikke bygge + </string> + <string name="TooltipFlagNoEdit"> + Gruppe byg + </string> + <string name="TooltipFlagNotSafe"> + Ikke sikker område + </string> + <string name="TooltipFlagNoFly"> + Ingen flyvning + </string> + <string name="TooltipFlagGroupScripts"> + Gruppe scripts + </string> + <string name="TooltipFlagNoScripts"> + Ingen Scripts + </string> + <string name="TooltipLand"> + Land: + </string> + <string name="TooltipMustSingleDrop"> + Kun et enkelt element kan trækkes ind her + </string> + <string name="TooltipHttpUrl"> + Klik for at se denne hjemmeside + </string> + <string name="TooltipSLURL"> + Klik for at se information om denne lokation + </string> + <string name="TooltipAgentUrl"> + Klik for at denne beboers profil + </string> + <string name="TooltipGroupUrl"> + Klik for at se denne gruppes beskrivelse + </string> + <string name="TooltipEventUrl"> + Klik for at se beskrivelse af denne event + </string> + <string name="TooltipClassifiedUrl"> + Klik for at se denne annonce + </string> + <string name="TooltipParcelUrl"> + Klik for at se beskrivelse for denne parcel + </string> + <string name="TooltipTeleportUrl"> + Klik for at teleportere til denne lokation + </string> + <string name="TooltipObjectIMUrl"> + Klik for at se beskrivelse for dette objekt + </string> + <string name="TooltipMapUrl"> + Klik for at se denne lokation på kortet + </string> + <string name="TooltipSLAPP"> + Klik for at starte secondlife:// kommando + </string> + <string name="CurrentURL" value=" Nuværende URL: [CurrentURL]"/> + <string name="SLurlLabelTeleport"> + Teleportér til + </string> + <string name="SLurlLabelShowOnMap"> + Vis kort for + </string> + <string name="BUTTON_CLOSE_DARWIN"> + Luk (⌘W) + </string> + <string name="BUTTON_CLOSE_WIN"> + Luk (Ctrl+W) + </string> + <string name="BUTTON_RESTORE"> + Gendan + </string> + <string name="BUTTON_MINIMIZE"> + Minimér + </string> + <string name="BUTTON_TEAR_OFF"> + Løsriv + </string> + <string name="BUTTON_DOCK"> + Fastgør + </string> + <string name="BUTTON_UNDOCK"> + Frigør + </string> + <string name="BUTTON_HELP"> + Vis hjælp + </string> + <string name="Searching"> + Søger... + </string> + <string name="NoneFound"> + Intet fundet. + </string> + <string name="RetrievingData"> + Henter... + </string> + <string name="ReleaseNotes"> + Noter om version + </string> + <string name="LoadingData"> + Henter... + </string> + <string name="AvatarNameNobody"> + (ingen) + </string> + <string name="AvatarNameWaiting"> + (venter) + </string> + <string name="AvatarNameHippos"> + (hippos) + </string> + <string name="GroupNameNone"> + (ingen) + </string> + <string name="AssetErrorNone"> + Ingen fejl + </string> + <string name="AssetErrorRequestFailed"> + Element forespørgsel: fejlede + </string> + <string name="AssetErrorNonexistentFile"> + Element forespørgsel: fil findes ikke + </string> + <string name="AssetErrorNotInDatabase"> + Element forespørgsel: element ikke fundet i database + </string> + <string name="AssetErrorEOF"> + Slutning af fil + </string> + <string name="AssetErrorCannotOpenFile"> + Kan ikke åbne fil + </string> + <string name="AssetErrorFileNotFound"> + Fil ikke fundet + </string> + <string name="AssetErrorTCPTimeout"> + Tidsgrænse overskredet ved filhentning + </string> + <string name="AssetErrorCircuitGone"> + Forbindelsen mistet + </string> + <string name="AssetErrorPriceMismatch"> + [APP_NAME] klient og server er uenige om prisen + </string> + <string name="AssetErrorUnknownStatus"> + Ukendt status + </string> + <string name="texture"> + tekstur + </string> + <string name="sound"> + lyd + </string> + <string name="calling card"> + visitkort + </string> + <string name="landmark"> + landemærke + </string> + <string name="legacy script"> + ældre script + </string> + <string name="clothing"> + tøj + </string> + <string name="object"> + objekt + </string> + <string name="note card"> + note + </string> + <string name="folder"> + mappe + </string> + <string name="root"> + rod + </string> + <string name="lsl2 script"> + LSL2 script + </string> + <string name="lsl bytecode"> + LSL bytecode + </string> + <string name="tga texture"> + tga texture + </string> + <string name="body part"> + kropsdel + </string> + <string name="snapshot"> + foto + </string> + <string name="lost and found"> + Fundne genstande + </string> + <string name="targa image"> + targa billede + </string> + <string name="trash"> + Papirkurv + </string> + <string name="jpeg image"> + jpeg billede + </string> + <string name="animation"> + animation + </string> + <string name="gesture"> + bevægelse + </string> + <string name="simstate"> + simstate + </string> + <string name="favorite"> + favorit + </string> + <string name="symbolic link"> + link + </string> + <string name="AvatarAway"> + Væk + </string> + <string name="AvatarBusy"> + Optaget + </string> + <string name="AvatarMuted"> + Blokeret + </string> + <string name="anim_express_afraid"> + Bange + </string> + <string name="anim_express_anger"> + Vred + </string> + <string name="anim_away"> + Væk + </string> + <string name="anim_backflip"> + Baglæns salto + </string> + <string name="anim_express_laugh"> + Hjertelig latter + </string> + <string name="anim_express_toothsmile"> + Stort smil + </string> + <string name="anim_blowkiss"> + Sende kys + </string> + <string name="anim_express_bored"> + Keder sig + </string> + <string name="anim_bow"> + Buk + </string> + <string name="anim_clap"> + Klap + </string> + <string name="anim_courtbow"> + Højtideligt buk + </string> + <string name="anim_express_cry"> + Græd + </string> + <string name="anim_dance1"> + Dans 1 + </string> + <string name="anim_dance2"> + Dans 2 + </string> + <string name="anim_dance3"> + Dans 3 + </string> + <string name="anim_dance4"> + Dans 4 + </string> + <string name="anim_dance5"> + Dans 5 + </string> + <string name="anim_dance6"> + Dans 6 + </string> + <string name="anim_dance7"> + Dans 7 + </string> + <string name="anim_dance8"> + Dans 8 + </string> + <string name="anim_express_disdain"> + Foragt + </string> + <string name="anim_drink"> + Drik + </string> + <string name="anim_express_embarrased"> + Flov + </string> + <string name="anim_angry_fingerwag"> + Løftet finger + </string> + <string name="anim_fist_pump"> + Knytnæve + </string> + <string name="anim_yoga_float"> + Svævende yoga + </string> + <string name="anim_express_frown"> + Mistroisk + </string> + <string name="anim_impatient"> + Utålmodig + </string> + <string name="anim_jumpforjoy"> + Glædeshop + </string> + <string name="anim_kissmybutt"> + Kys min r.. + </string> + <string name="anim_express_kiss"> + Kys + </string> + <string name="anim_laugh_short"> + Grin + </string> + <string name="anim_musclebeach"> + Bodybuilder + </string> + <string name="anim_no_unhappy"> + Nej (sur) + </string> + <string name="anim_no_head"> + Nej + </string> + <string name="anim_nyanya"> + Æv-bæv + </string> + <string name="anim_punch_onetwo"> + Et-to slag + </string> + <string name="anim_express_open_mouth"> + Åben mund + </string> + <string name="anim_peace"> + Peace + </string> + <string name="anim_point_you"> + Peg på andre + </string> + <string name="anim_point_me"> + Peg på dig selv + </string> + <string name="anim_punch_l"> + Slå venstre + </string> + <string name="anim_punch_r"> + Slå højre + </string> + <string name="anim_rps_countdown"> + SSP - Tæl + </string> + <string name="anim_rps_paper"> + SSP - Papir + </string> + <string name="anim_rps_rock"> + SSP - Sten + </string> + <string name="anim_rps_scissors"> + SSP - Saks + </string> + <string name="anim_express_repulsed"> + Misfornøjet + </string> + <string name="anim_kick_roundhouse_r"> + Karatepark + </string> + <string name="anim_express_sad"> + Ked af det + </string> + <string name="anim_salute"> + Honnør + </string> + <string name="anim_shout"> + Råb + </string> + <string name="anim_express_shrug"> + Skuldertræk + </string> + <string name="anim_express_smile"> + Smil + </string> + <string name="anim_smoke_idle"> + Ryg + </string> + <string name="anim_smoke_inhale"> + Indhalér + </string> + <string name="anim_smoke_throw_down"> + Smid cigaret + </string> + <string name="anim_express_surprise"> + Overrasket + </string> + <string name="anim_sword_strike_r"> + Sværdslag + </string> + <string name="anim_angry_tantrum"> + Ekstatisk + </string> + <string name="anim_express_tongue_out"> + Tunge ud + </string> + <string name="anim_hello"> + Vink + </string> + <string name="anim_whisper"> + Knib øje i + </string> + <string name="anim_whistle"> + Pift + </string> + <string name="anim_express_wink"> + Blink + </string> + <string name="anim_wink_hollywood"> + Blink (Hollywood) + </string> + <string name="anim_express_worry"> + Bekymret + </string> + <string name="anim_yes_happy"> + Ja (glad) + </string> + <string name="anim_yes_head"> + Ja + </string> + <string name="texture_loading"> + Indlæser... + </string> + <string name="worldmap_offline"> + Offline + </string> + <string name="worldmap_results_none_found"> + Ingen fundet. + </string> + <string name="Ok"> + OK + </string> + <string name="Premature end of file"> + Fil slutter for tidligt + </string> + <string name="ST_NO_JOINT"> + Kan ikke funde ROOT eller JOINT. + </string> + <string name="whisper"> + hvisker: + </string> + <string name="shout"> + råber: + </string> + <string name="ringing"> + Forbinder til stemmechat... + </string> + <string name="connected"> + Forbundet + </string> + <string name="unavailable"> + Stemmechat er ikke tilladt hvor du befinder dig + </string> + <string name="hang_up"> + Stemme chat er afbrudt + </string> + <string name="ScriptQuestionCautionChatGranted"> + '[OBJECTNAME]', en genstand, ejet af '[OWNERNAME]', lokaliseret i [REGIONNAME] på [REGIONPOS], har fået tilladelse til: [PERMISSIONS]. + </string> + <string name="ScriptQuestionCautionChatDenied"> + '[OBJECTNAME]', en genstand, ejet af '[OWNERNAME]', lokaliseret i [REGIONNAME] på [REGIONPOS], er afvist tilladelse til: [PERMISSIONS]. + </string> + <string name="ScriptTakeMoney"> + Tag Linden dollars (L$) fra dig + </string> + <string name="ActOnControlInputs"> + Reagér på dine kontrol-taster + </string> + <string name="RemapControlInputs"> + Ændre dine kontrol-taster + </string> + <string name="AnimateYourAvatar"> + Animér din avatar + </string> + <string name="AttachToYourAvatar"> + Sæt på din avatar + </string> + <string name="ReleaseOwnership"> + Fjern ejerskabet og sæt til offentlig + </string> + <string name="LinkAndDelink"> + Sammenkæd og adskil andre genstande + </string> + <string name="AddAndRemoveJoints"> + Tilføj og fjern sammenkødninger med andre genstande + </string> + <string name="ChangePermissions"> + Ændre dens tilladelser + </string> + <string name="TrackYourCamera"> + Spor dit kamera + </string> + <string name="ControlYourCamera"> + Kontrollér dit kamera + </string> + <string name="SIM_ACCESS_PG"> + PG + </string> + <string name="SIM_ACCESS_MATURE"> + Mature + </string> + <string name="SIM_ACCESS_ADULT"> + Adult + </string> + <string name="SIM_ACCESS_DOWN"> + logget af + </string> + <string name="SIM_ACCESS_MIN"> + Ukendt + </string> + <string name="land_type_unknown"> + (ukendt) + </string> + <string name="all_files"> + Alle filer + </string> + <string name="sound_files"> + Lyde + </string> + <string name="animation_files"> + Animationer + </string> + <string name="image_files"> + Billeder + </string> + <string name="save_file_verb"> + Gem + </string> + <string name="load_file_verb"> + Hent + </string> + <string name="targa_image_files"> + Targa billeder + </string> + <string name="bitmap_image_files"> + Bitmap billeder + </string> + <string name="avi_movie_file"> + AVI film fil + </string> + <string name="xaf_animation_file"> + XAF Anim Fil + </string> + <string name="xml_file"> + XML Fil + </string> + <string name="dot_raw_file"> + RAW Fil + </string> + <string name="compressed_image_files"> + Komprimerede billeder + </string> + <string name="load_files"> + Hent filer + </string> + <string name="choose_the_directory"> + Vælg bibliotek + </string> + <string name="AvatarSetNotAway"> + Sæt "til stede" + </string> + <string name="AvatarSetAway"> + Sæt "væk" + </string> + <string name="AvatarSetNotBusy"> + Sæt "ledig" + </string> + <string name="AvatarSetBusy"> + Sæt "optaget" + </string> + <string name="shape"> + Form + </string> + <string name="skin"> + Hud + </string> + <string name="hair"> + Hår + </string> + <string name="eyes"> + Øjne + </string> + <string name="shirt"> + Trøje + </string> + <string name="pants"> + Bukser + </string> + <string name="shoes"> + Sko + </string> + <string name="socks"> + Strømper + </string> + <string name="jacket"> + Jakke + </string> + <string name="gloves"> + Handsker + </string> + <string name="undershirt"> + Undertrøje + </string> + <string name="underpants"> + Underbukser + </string> + <string name="skirt"> + Nederdel + </string> + <string name="alpha"> + Alpha + </string> + <string name="tattoo"> + Tatovering + </string> + <string name="invalid"> + ugyldig + </string> + <string name="next"> + Næste + </string> + <string name="ok"> + OK + </string> + <string name="GroupNotifyGroupNotice"> + Gruppe besked + </string> + <string name="GroupNotifyGroupNotices"> + Gruppe besked + </string> + <string name="GroupNotifySentBy"> + Sendt af + </string> + <string name="GroupNotifyAttached"> + Vedhæftet: + </string> + <string name="GroupNotifyViewPastNotices"> + Se tidligere beskeder eller slå modtagelse af beskeder fra her. + </string> + <string name="GroupNotifyOpenAttachment"> + Åben vedhæng + </string> + <string name="GroupNotifySaveAttachment"> + Gem vedhæng + </string> + <string name="TeleportOffer"> + Teleport tilbud + </string> + <string name="StartUpNotification"> + %d nye besked modtaget mens du var væk... + </string> + <string name="StartUpNotifications"> + %d nye beskeder modtaget mens du var væk...... + </string> + <string name="OverflowInfoChannelString"> + Du har %d mere besked(er) + </string> + <string name="BodyPartsRightArm"> + Højre arm + </string> + <string name="BodyPartsHead"> + Hoved + </string> + <string name="BodyPartsLeftArm"> + Venstre arm + </string> + <string name="BodyPartsLeftLeg"> + Venstre ben + </string> + <string name="BodyPartsTorso"> + Overkrop + </string> + <string name="BodyPartsRightLeg"> + Højre ben + </string> + <string name="GraphicsQualityLow"> + Lav + </string> + <string name="GraphicsQualityMid"> + Middel + </string> + <string name="GraphicsQualityHigh"> + Høj + </string> + <string name="LeaveMouselook"> + Tryk ESC for at skift til normalt udsyn + </string> + <string name="InventoryNoMatchingItems"> + No matching items found in inventory. + </string> + <string name="InventoryNoTexture"> + Du har ikke en kopi af denne +tekstur i din beholdning. + </string> + <string name="no_transfer" value=" (ikke overdragbar)"/> + <string name="no_modify" value=" (ikke redigere)"/> + <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="LoadingContents"> + Henter indhold... + </string> + <string name="NoContents"> + Intet indhold + </string> + <string name="WornOnAttachmentPoint" value=" (båret på [ATTACHMENT_POINT])"/> + <string name="Chat" value=" Chat : "/> + <string name="Sound" value=" Lyd : "/> + <string name="Wait" value=" --- Vent : "/> + <string name="AnimFlagStop" value=" Stop Animation : "/> + <string name="AnimFlagStart" value=" Start Animation : "/> + <string name="Wave" value=" Vink "/> + <string name="HelloAvatar" value=" Hej, avatar! "/> + <string name="ViewAllGestures" value=" Se alle >>"/> + <string name="Animations" value=" Animationer,"/> + <string name="Calling Cards" value=" Visitkort,"/> + <string name="Clothing" value=" Tøj,"/> + <string name="Gestures" value=" Bevægelser,"/> + <string name="Landmarks" value=" Landemærker,"/> + <string name="Notecards" value=" Note,"/> + <string name="Objects" value=" Objekter,"/> + <string name="Scripts" value=" Scripts,"/> + <string name="Sounds" value=" Lyde,"/> + <string name="Textures" value=" Teksturer,"/> + <string name="Snapshots" value=" Fotos,"/> + <string name="No Filters" value="Nej "/> + <string name="Since Logoff" value=" - Siden log ud"/> + <string name="InvFolder My Inventory"> + Min beholdning + </string> + <string name="InvFolder My Favorites"> + Mine favoritter + </string> + <string name="InvFolder Library"> + Bibliotek + </string> + <string name="InvFolder Textures"> + Teksturer + </string> + <string name="InvFolder Sounds"> + Lyde + </string> + <string name="InvFolder Calling Cards"> + Visitkort + </string> + <string name="InvFolder Landmarks"> + Landemærker + </string> + <string name="InvFolder Scripts"> + Scripts + </string> + <string name="InvFolder Clothing"> + Tøj + </string> + <string name="InvFolder Objects"> + Objekter + </string> + <string name="InvFolder Notecards"> + Noter + </string> + <string name="InvFolder New Folder"> + Ny mappe + </string> + <string name="InvFolder Inventory"> + Beholdning + </string> + <string name="InvFolder Uncompressed Images"> + Ukomprimerede billeder + </string> + <string name="InvFolder Body Parts"> + Kropsdele + </string> + <string name="InvFolder Trash"> + Papirkurv + </string> + <string name="InvFolder Photo Album"> + Fotoalbum + </string> + <string name="InvFolder Lost And Found"> + Fundne genstande + </string> + <string name="InvFolder Uncompressed Sounds"> + Ukomprimerede lyde + </string> + <string name="InvFolder Animations"> + Animationer + </string> + <string name="InvFolder Gestures"> + Bevægelser + </string> + <string name="InvFolder favorite"> + Favoritter + </string> + <string name="InvFolder Current Outfit"> + Nuværende sæt + </string> + <string name="InvFolder My Outfits"> + Mine sæt + </string> + <string name="InvFolder Friends"> + Venner + </string> + <string name="InvFolder All"> + Alle + </string> + <string name="Buy"> + Køb + </string> + <string name="BuyforL$"> + Køb for L$ + </string> + <string name="Stone"> + Sten + </string> + <string name="Metal"> + Metal + </string> + <string name="Glass"> + Glas + </string> + <string name="Wood"> + Træ + </string> + <string name="Flesh"> + Kød + </string> + <string name="Plastic"> + Plastik + </string> + <string name="Rubber"> + Gummi + </string> + <string name="Light"> + Lys + </string> + <string name="KBShift"> + Shift + </string> + <string name="KBCtrl"> + Ctrl + </string> + <string name="Chest"> + Bryst + </string> + <string name="Skull"> + Hovedskal + </string> + <string name="Left Shoulder"> + Venstre skulder + </string> + <string name="Right Shoulder"> + Højre skulder + </string> + <string name="Left Hand"> + Venstre hånd + </string> + <string name="Right Hand"> + Højre hånd + </string> + <string name="Left Foot"> + Venstre fod + </string> + <string name="Right Foot"> + Højre fod + </string> + <string name="Spine"> + Rygsøjle + </string> + <string name="Pelvis"> + Bækken + </string> + <string name="Mouth"> + Mund + </string> + <string name="Chin"> + Hage + </string> + <string name="Left Ear"> + Venstre øre + </string> + <string name="Right Ear"> + Højre øre + </string> + <string name="Left Eyeball"> + Venstre øje + </string> + <string name="Right Eyeball"> + Højre øje + </string> + <string name="Nose"> + Næse + </string> + <string name="R Upper Arm"> + H overarm + </string> + <string name="R Forearm"> + H underarm + </string> + <string name="L Upper Arm"> + V overarm + </string> + <string name="L Forearm"> + V underarm + </string> + <string name="Right Hip"> + Højre hofte + </string> + <string name="R Upper Leg"> + Højre lår + </string> + <string name="R Lower Leg"> + H underben + </string> + <string name="Left Hip"> + Venstre hofte + </string> + <string name="L Upper Leg"> + Venstre lår + </string> + <string name="L Lower Leg"> + V underben + </string> + <string name="Stomach"> + Mave + </string> + <string name="Left Pec"> + Venstre bryst + </string> + <string name="Right Pec"> + Højre bryst + </string> + <string name="YearsMonthsOld"> + [AGEYEARS] [AGEMONTHS] gammel + </string> + <string name="YearsOld"> + [AGEYEARS] gammel + </string> + <string name="MonthsOld"> + [AGEMONTHS] gammel + </string> + <string name="WeeksOld"> + [AGEWEEKS] gammel + </string> + <string name="DaysOld"> + [AGEDAYS] gammel + </string> + <string name="TodayOld"> + Med fra i dag + </string> + <string name="AgeYearsA"> + [COUNT] år + </string> + <string name="AgeYearsB"> + [COUNT] år + </string> + <string name="AgeYearsC"> + [COUNT] år + </string> + <string name="AgeMonthsA"> + [COUNT] måned + </string> + <string name="AgeMonthsB"> + [COUNT] måneder + </string> + <string name="AgeMonthsC"> + [COUNT] måneder + </string> + <string name="AgeWeeksA"> + [COUNT] uge + </string> + <string name="AgeWeeksB"> + [COUNT] uger + </string> + <string name="AgeWeeksC"> + [COUNT] uger + </string> + <string name="AgeDaysA"> + [COUNT] dag + </string> + <string name="AgeDaysB"> + [COUNT] dage + </string> + <string name="AgeDaysC"> + [COUNT] dage + </string> + <string name="GroupMembersA"> + [COUNT] medlem + </string> + <string name="GroupMembersB"> + [COUNT] medlemmer + </string> + <string name="GroupMembersC"> + [COUNT] medlemmer + </string> + <string name="AcctTypeResident"> + Beboer + </string> + <string name="AcctTypeTrial"> + På prøve + </string> + <string name="AcctTypeCharterMember"> + Æresmedlemmer + </string> + <string name="AcctTypeEmployee"> + Linden Lab medarbejder + </string> + <string name="PaymentInfoUsed"> + Betalende medlem + </string> + <string name="PaymentInfoOnFile"> + Betalingsinfo registreret + </string> + <string name="NoPaymentInfoOnFile"> + Ingen betalingsinfo + </string> + <string name="AgeVerified"> + Alders-checket + </string> + <string name="NotAgeVerified"> + Ikke alders-checket + </string> + <string name="Center 2"> + Center 2 + </string> + <string name="Top Right"> + Øverst højre + </string> + <string name="Top"> + Top + </string> + <string name="Top Left"> + Øverst venstre + </string> + <string name="Center"> + Centrum + </string> + <string name="Bottom Left"> + Nederst venstre + </string> + <string name="Bottom"> + Nederst midt + </string> + <string name="Bottom Right"> + nederst højre + </string> + <string name="CompileQueueDownloadedCompiling"> + Hentet, kompilerer nu + </string> + <string name="CompileQueueScriptNotFound"> + Script ikke fundet på server. + </string> + <string name="CompileQueueProblemDownloading"> + Problem ved download + </string> + <string name="CompileQueueInsufficientPermDownload"> + Ikke rettigheder til at downloade script. + </string> + <string name="CompileQueueInsufficientPermFor"> + Ikke nok rettigheder til at + </string> + <string name="CompileQueueUnknownFailure"> + Ukendt fejl ved download + </string> + <string name="CompileQueueTitle"> + Rekompilering fremskridt + </string> + <string name="CompileQueueStart"> + Rekompilér + </string> + <string name="ResetQueueTitle"> + Nulstil fremskridt + </string> + <string name="ResetQueueStart"> + nulstil + </string> + <string name="RunQueueTitle"> + Sæt "running" fremskridt + </string> + <string name="RunQueueStart"> + sæt til "running" + </string> + <string name="NotRunQueueTitle"> + Sæt "Not Running" fremskridt + </string> + <string name="NotRunQueueStart"> + sæt til "not running" + </string> + <string name="CompileSuccessful"> + Kompleret uden fejl! + </string> + <string name="CompileSuccessfulSaving"> + Kompileret uden fejl, gemmer... + </string> + <string name="SaveComplete"> + Gemt. + </string> + <string name="ObjectOutOfRange"> + Script ("object out of range") + </string> + <string name="GodToolsObjectOwnedBy"> + Objekt [OBJECT] ejet af [OWNER] + </string> + <string name="GroupsNone"> + ingen + </string> + <string name="Group" value=" (gruppe)"/> + <string name="Unknown"> + (ukendt) + </string> + <string name="SummaryForTheWeek" value="Opsummering for denne uge, begyndende med "/> + <string name="NextStipendDay" value="Næste stipendie dag er "/> + <string name="GroupIndividualShare" value=" Gruppe Individuel Delt"/> + <string name="Balance"> + Balance + </string> + <string name="Credits"> + Kredit + </string> + <string name="Debits"> + Debet + </string> + <string name="Total"> + Total + </string> + <string name="NoGroupDataFound"> + Ingen gruppedata fundet for gruppe + </string> + <string name="IMParentEstate"> + overordnet estate + </string> + <string name="IMMainland"> + mainland + </string> + <string name="IMTeen"> + teen + </string> + <string name="RegionInfoError"> + fejl + </string> + <string name="RegionInfoAllEstatesOwnedBy"> + alle estates ejet af [OWNER] + </string> + <string name="RegionInfoAllEstatesYouOwn"> + alle estates du ejer + </string> + <string name="RegionInfoAllEstatesYouManage"> + alle estates du administrerer for [OWNER] + </string> + <string name="RegionInfoAllowedResidents"> + Godkendte beboere: ([ALLOWEDAGENTS], max. [MAXACCESS]) + </string> + <string name="RegionInfoAllowedGroups"> + Godkendte grupper: ([ALLOWEDGROUPS], max. [MAXACCESS]) + </string> + <string name="CursorPos"> + Linie [LINE], Kolonne [COLUMN] + </string> + <string name="PanelDirCountFound"> + [COUNT] fundet + </string> + <string name="PanelContentsNewScript"> + Nyt script + </string> + <string name="MuteByName"> + (efter navn) + </string> + <string name="MuteAgent"> + (beboer) + </string> + <string name="MuteObject"> + (objekt) + </string> + <string name="MuteGroup"> + (gruppe) + </string> + <string name="RegionNoCovenant"> + Der er ingen regler for dette estate. + </string> + <string name="RegionNoCovenantOtherOwner"> + Der er ingen regler for dette estate. Land på dette estate sælges af estate ejeren, ikke af Linden Lab. Kontakt venligst estate ejeren for detaljer om salg. + </string> + <string name="covenant_last_modified"> + Sidst ændret: + </string> + <string name="none_text" value=" (ingen) "/> + <string name="never_text" value=" (aldrig) "/> + <string name="GroupOwned"> + Gruppe ejet + </string> + <string name="Public"> + Offentlig + </string> + <string name="ClassifiedClicksTxt"> + Klik: [TELEPORT] teleport, [MAP] kort, [PROFILE] profil + </string> + <string name="ClassifiedUpdateAfterPublish"> + (vil blive opdateret efter offentliggørelse) + </string> + <string name="MultiPreviewTitle"> + Vis først + </string> + <string name="MultiPropertiesTitle"> + Egenskaber + </string> + <string name="InvOfferAnObjectNamed"> + Et objekt med navnet + </string> + <string name="InvOfferOwnedByGroup"> + ejet af gruppen + </string> + <string name="InvOfferOwnedByUnknownGroup"> + ejet af en ukendt gruppe + </string> + <string name="InvOfferOwnedBy"> + ejet af + </string> + <string name="InvOfferOwnedByUnknownUser"> + ejet af en ukendt bruger + </string> + <string name="InvOfferGaveYou"> + gav dig + </string> + <string name="InvOfferYouDecline"> + Du afslår + </string> + <string name="InvOfferFrom"> + fra + </string> + <string name="GroupMoneyTotal"> + Total + </string> + <string name="GroupMoneyBought"> + købt + </string> + <string name="GroupMoneyPaidYou"> + betalte dig + </string> + <string name="GroupMoneyPaidInto"> + betalt til + </string> + <string name="GroupMoneyBoughtPassTo"> + købte adgang til + </string> + <string name="GroupMoneyPaidFeeForEvent"> + betalte gebyr for event + </string> + <string name="GroupMoneyPaidPrizeForEvent"> + betalte prisen for event + </string> + <string name="GroupMoneyBalance"> + Balance + </string> + <string name="GroupMoneyCredits"> + Kredit + </string> + <string name="GroupMoneyDebits"> + Debet + </string> + <string name="ViewerObjectContents"> + Indhold + </string> + <string name="AcquiredItems"> + Anskaffede genstande + </string> + <string name="Cancel"> + Annullér + </string> + <string name="UploadingCosts"> + Uploader [%s] omkostninger + </string> + <string name="UnknownFileExtension"> + Ukendt fil efternavn [.%s] +Forventet .wav, .tga, .bmp, .jpg, .jpeg, or .bvh + </string> + <string name="AddLandmarkNavBarMenu"> + Tilføj landemærke... + </string> + <string name="EditLandmarkNavBarMenu"> + Redigér landemærke... + </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"> + Fil gemt + </string> + <string name="Receiving"> + Modtager + </string> + <string name="AM"> + AM + </string> + <string name="PM"> + PM + </string> + <string name="PST"> + PST + </string> + <string name="PDT"> + PDT + </string> + <string name="Forward"> + Fremad + </string> + <string name="Left"> + Venstre + </string> + <string name="Right"> + Højre + </string> + <string name="Back"> + Bagud + </string> + <string name="North"> + Nord + </string> + <string name="South"> + Syd + </string> + <string name="West"> + Vest + </string> + <string name="East"> + Øst + </string> + <string name="Up"> + Op + </string> + <string name="Down"> + Ned + </string> + <string name="Any Category"> + Enhver kategori + </string> + <string name="Shopping"> + Shopping + </string> + <string name="Land Rental"> + Land til leje + </string> + <string name="Property Rental"> + Grunde til leje + </string> + <string name="Special Attraction"> + Speciel attraktion + </string> + <string name="New Products"> + Nye produkter + </string> + <string name="Employment"> + Jobs + </string> + <string name="Wanted"> + Søges + </string> + <string name="Service"> + Service + </string> + <string name="Personal"> + Personlig + </string> + <string name="None"> + Ingen + </string> + <string name="Linden Location"> + Linden sted + </string> + <string name="Adult"> + Adult + </string> + <string name="Arts&Culture"> + Kunst & kultur + </string> + <string name="Business"> + Business + </string> + <string name="Educational"> + Uddannelse + </string> + <string name="Gaming"> + Spil + </string> + <string name="Hangout"> + Afslapning + </string> + <string name="Newcomer Friendly"> + Nybegynder venligt + </string> + <string name="Parks&Nature"> + Parker & natur + </string> + <string name="Residential"> + Beboelse + </string> + <string name="Stage"> + Fase + </string> + <string name="Other"> + Andet + </string> + <string name="Any"> + Enhver + </string> + <string name="You"> + Dig + </string> + <string name="Multiple Media"> + Flere medietyper + </string> + <string name="Play Media"> + Afspil/Pause medie + </string> + <string name="MBCmdLineError"> + Der opstod en fejl ved afvikling af kommandolinie. +Se venligst: http://wiki.secondlife.com/wiki/Client_parameters +Fejl: + </string> + <string name="MBCmdLineUsg"> + [APP_NAME] Kommando linie brug: + </string> + <string name="MBUnableToAccessFile"> + [APP_NAME] kan ikke få adgang til fil den/det skal bruge. + +Dette kan skyldes at du har flere kopier kørende eller operativsystemet tror at filen allerede er åben. +Hvis fejlen bliver ved, genstart computer og prøv igen. +Hvis fejlen stadig bliver ved, kan det være nødvendigt at afinstallere [APP_NAME] og installere igen. + </string> + <string name="MBFatalError"> + Fatal fejl + </string> + <string name="MBRequiresAltiVec"> + [APP_NAME] kræver en processor med AltiVec (G4 eller nyere). + </string> + <string name="MBAlreadyRunning"> + [APP_NAME] kører allerede. +Undersøg din "task bar" for at se efter minimeret version af programmet. +Hvis fejlen fortsætter, prøv at genstarte din computer. + </string> + <string name="MBFrozenCrashed"> + [APP_NAME] ser ud til at være "frosset" eller gået ned tidligere. +Ønsker du at sende en fejlrapport? + </string> + <string name="MBAlert"> + Besked + </string> + <string name="MBNoDirectX"> + [APP_NAME] kan ikke detektere DirectX 9.0b eller nyere. +[APP_NAME] benytte DirectX til at detektere hardware og/eller forældede drivere der kan give problemer med stabilitet, dårlig hastighed eller nedbrud. Selvom du kan køre [APP_NAME] uden det, anbefaler vi meget at køre med DirectX 9.0b. + +Ønsker du at fortsætte? + </string> + <string name="MBWarning"> + Advarsel + </string> + <string name="MBNoAutoUpdate"> + Automatisk opdatering er endnu ikke implementeret på Linux. +Hent venligst den nyeste version på www.secondlife.com. + </string> + <string name="MBRegClassFailed"> + RegisterClass fejlede + </string> + <string name="MBError"> + Fejl + </string> + <string name="MBFullScreenErr"> + Ikke muligt at køre i fuldskærm med [WIDTH] x [HEIGHT]. +Afvikler i vindue. + </string> + <string name="MBDestroyWinFailed"> + Nedlukningsfejl ved lukning af vindue (DestroyWindow() fejlede) + </string> + <string name="MBShutdownErr"> + Fejl ved nedlukning + </string> + <string name="MBDevContextErr"> + Kan ikke oprette "GL device context" + </string> + <string name="MBPixelFmtErr"> + Kan ikke finde passende "pixel format" + </string> + <string name="MBPixelFmtDescErr"> + Kan ikke finde "pixel format" beskrivelse + </string> + <string name="MBTrueColorWindow"> + [APP_NAME] kræver "True Color (32-bit)" for at kunne køre. +Gå venligst til din computers skærmopsætning og sæt "color mode" til 32-bit. + </string> + <string name="MBAlpha"> + [APP_NAME] kan ikke køre, da den ikke kan finde en "8 bit alpha channel". Normalt skyldes dette et problem med en video driver. +Venligst undersøg om du har de nyeste drivere til dit videokort installeret. +Din skærm skal også være sat op til at køre "True Color (32-bit)" i din displayopsætning. +Hvis du bliver ved med at modtage denne besked, kontakt [SUPPORT_SITE]. + </string> + <string name="MBPixelFmtSetErr"> + Kan ikke sætte "pixel format" + </string> + <string name="MBGLContextErr"> + Kan ikke oprette "GL rendering context" + </string> + <string name="MBGLContextActErr"> + Kan ikke aktivere "GL rendering context" + </string> + <string name="MBVideoDrvErr"> + [APP_NAME] kan ikke afvikles da driverne til dit videokort ikke blev installeret korrekt, er forældede, eller du benytter hardware der ikke er supporteret. Undersøg venligst om du har installeret de nyeste drivere til dit grafikkort, og selv om du har de nyeste, prøv at geninstallere dem. + +Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE]. + </string> + <string name="5 O'Clock Shadow"> + Skægstubbe + </string> + <string name="All White"> + Helt hvidt + </string> + <string name="Anime Eyes"> + Store øjne + </string> + <string name="Arced"> + Spidst + </string> + <string name="Arm Length"> + Armængde + </string> + <string name="Attached"> + Vedhæftet + </string> + <string name="Attached Earlobes"> + Vedhæftede øreflipper + </string> + <string name="Back Bangs"> + Nakkehår + </string> + <string name="Back Bangs Down"> + Nakkehår langt + </string> + <string name="Back Bangs Up"> + Nakkehår kort + </string> + <string name="Back Fringe"> + Nakkehår + </string> + <string name="Back Hair"> + Volumen + </string> + <string name="Back Hair Down"> + Volumen nedad + </string> + <string name="Back Hair Up"> + Volumen op + </string> + <string name="Baggy"> + Posede + </string> + <string name="Bangs"> + Pandehår + </string> + <string name="Bangs Down"> + Pandehår ned + </string> + <string name="Bangs Up"> + Pandehår op + </string> + <string name="Beady Eyes"> + Stikkende øjne + </string> + <string name="Belly Size"> + Mave størrelse + </string> + <string name="Big"> + Stor + </string> + <string name="Big Butt"> + Stor bagdel + </string> + <string name="Big Eyeball"> + Store øjenæbler + </string> + <string name="Big Hair Back"> + Stort hår: Bag + </string> + <string name="Big Hair Front"> + Stort hår: Foran + </string> + <string name="Big Hair Top"> + Stort hår: Top + </string> + <string name="Big Head"> + Stort hovede + </string> + <string name="Big Pectorals"> + Store brystmuskler + </string> + <string name="Big Spikes"> + Store spikes + </string> + <string name="Black"> + Sort + </string> + <string name="Blonde"> + Blond + </string> + <string name="Blonde Hair"> + Blondt hår + </string> + <string name="Blush"> + Rødmen + </string> + <string name="Blush Color"> + Rødme farve + </string> + <string name="Blush Opacity"> + Rødme gennemsigtighed + </string> + <string name="Body Definition"> + Kropskontur + </string> + <string name="Body Fat"> + Kropsfedt + </string> + <string name="Body Freckles"> + Fregner på kroppen + </string> + <string name="Body Thick"> + Tyk krop + </string> + <string name="Body Thickness"> + Kropstykkelse + </string> + <string name="Body Thin"> + Tynd krop + </string> + <string name="Bow Legged"> + Hjulbenet + </string> + <string name="Breast Buoyancy"> + Bryst tyngdepåvirkning + </string> + <string name="Breast Cleavage"> + Kavalergang + </string> + <string name="Breast Size"> + Bryststørrelse + </string> + <string name="Bridge Width"> + Bredde næseryg + </string> + <string name="Broad"> + Bred + </string> + <string name="Brow Size"> + Størrelse øjenbryn + </string> + <string name="Bug Eyes"> + Udstående øjne + </string> + <string name="Bugged Eyes"> + Udstående øjne + </string> + <string name="Bulbous"> + Kartoffelnæse + </string> + <string name="Bulbous Nose"> + Kartoffelnæse + </string> + <string name="Bushy Eyebrows"> + Buskede øjenbryn + </string> + <string name="Bushy Hair"> + Busket hår + </string> + <string name="Butt Size"> + Størrelse bagdel + </string> + <string name="bustle skirt"> + Tournure + </string> + <string name="no bustle"> + Ingen tournure + </string> + <string name="more bustle"> + Mere tournure + </string> + <string name="Chaplin"> + Chaplin + </string> + <string name="Cheek Bones"> + Kindben + </string> + <string name="Chest Size"> + Bryst størrelse + </string> + <string name="Chin Angle"> + Hage form + </string> + <string name="Chin Cleft"> + Hagekløft + </string> + <string name="Chin Curtains"> + Hageskæg + </string> + <string name="Chin Depth"> + Hage dybde + </string> + <string name="Chin Heavy"> + Stort forneden + </string> + <string name="Chin In"> + Vigende hage + </string> + <string name="Chin Out"> + Hage frem + </string> + <string name="Chin-Neck"> + Hals under hage + </string> + <string name="Clear"> + Slet + </string> + <string name="Cleft"> + Kløft + </string> + <string name="Close Set Eyes"> + Tætsiddende øjne + </string> + <string name="Closed"> + Lukket + </string> + <string name="Closed Back"> + Lukket bagtil + </string> + <string name="Closed Front"> + Lukket foran + </string> + <string name="Closed Left"> + Lukket til venstre + </string> + <string name="Closed Right"> + Lukket til højre + </string> + <string name="Coin Purse"> + Lille + </string> + <string name="Collar Back"> + Krave bagtil + </string> + <string name="Collar Front"> + Krave foran + </string> + <string name="Corner Down"> + Nedadvendt + </string> + <string name="Corner Normal"> + Normalt + </string> + <string name="Corner Up"> + Opadvendt + </string> + <string name="Creased"> + Rynket + </string> + <string name="Crooked Nose"> + Skæv næse + </string> + <string name="Cropped Hair"> + Kort hår + </string> + <string name="Cuff Flare"> + Svaj + </string> + <string name="Dark"> + Mørk + </string> + <string name="Dark Green"> + Mørkegrøn + </string> + <string name="Darker"> + Mørkere + </string> + <string name="Deep"> + Dyb + </string> + <string name="Default Heels"> + Standard hæle + </string> + <string name="Default Toe"> + Standard snude + </string> + <string name="Dense"> + Tæt + </string> + <string name="Dense hair"> + Tæt hår + </string> + <string name="Double Chin"> + Dobbelthage + </string> + <string name="Downturned"> + Peger nedad + </string> + <string name="Duffle Bag"> + Stort + </string> + <string name="Ear Angle"> + Øre vinkel + </string> + <string name="Ear Size"> + Øre størrelse + </string> + <string name="Ear Tips"> + Ørespidser + </string> + <string name="Egg Head"> + Ovalt hovede + </string> + <string name="Eye Bags"> + Poser under øjne + </string> + <string name="Eye Color"> + Øjenfarve + </string> + <string name="Eye Depth"> + Øjendybde + </string> + <string name="Eye Lightness"> + Øjennuance + </string> + <string name="Eye Opening"> + Øjenåbning + </string> + <string name="Eye Pop"> + Øjensymmetri + </string> + <string name="Eye Size"> + Øjenstørrelse + </string> + <string name="Eye Spacing"> + Øjenafstand + </string> + <string name="Eyeball Size"> + Størrelse øjenæble + </string> + <string name="Eyebrow Arc"> + Bue på øjenbryn + </string> + <string name="Eyebrow Density"> + Tæthed øjenbryn + </string> + <string name="Eyebrow Height"> + Højde på øjenbryn + </string> + <string name="Eyebrow Points"> + Løftede øjenbryn + </string> + <string name="Eyebrow Size"> + Størrelse øjenbryn + </string> + <string name="Eyelash Length"> + Længde øjenvipper + </string> + <string name="Eyeliner"> + Eyeliner + </string> + <string name="Eyeliner Color"> + Eyeliner farve + </string> + <string name="Eyes Back"> + Dybtliggende øjne + </string> + <string name="Eyes Bugged"> + Udstående øjne + </string> + <string name="Eyes Forward"> + Øjne fremme + </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"> + Stor afstand + </string> + <string name="Eyes Sunken"> + Indsunkne øjne + </string> + <string name="Eyes Together"> + Tætsiddende + </string> + <string name="Face Shear"> + Ansigts symmetri + </string> + <string name="Facial Definition"> + Ansigtskonturer + </string> + <string name="Far Set Eyes"> + Stor afstand mellem øjne + </string> + <string name="Fat"> + Tyk + </string> + <string name="Fat Head"> + Tykt hovede + </string> + <string name="Fat Lips"> + Tykke læber + </string> + <string name="Fat Lower"> + Tyk nedre + </string> + <string name="Fat Lower Lip"> + Tyk underlæbe + </string> + <string name="Fat Torso"> + Tyk overkrop + </string> + <string name="Fat Upper"> + Tyk øvre + </string> + <string name="Fat Upper Lip"> + Tyk overlæbe + </string> + <string name="Female"> + Kvinde + </string> + <string name="Fingerless"> + Fingerløse + </string> + <string name="Fingers"> + Fingre + </string> + <string name="Flared Cuffs"> + Stor vidde + </string> + <string name="Flat"> + Flad + </string> + <string name="Flat Butt"> + Flad bagdel + </string> + <string name="Flat Head"> + Fladt hovede + </string> + <string name="Flat Toe"> + Flad snude + </string> + <string name="Foot Size"> + Størrelse fod + </string> + <string name="Forehead Angle"> + Pande vinkel + </string> + <string name="Forehead Heavy"> + Stort foroven + </string> + <string name="Freckles"> + Fregner + </string> + <string name="Front Bangs Down"> + Pandehår - ned + </string> + <string name="Front Bangs Up"> + Pandehår - op + </string> + <string name="Front Fringe"> + Frynser foran + </string> + <string name="Front Hair"> + Hår foran + </string> + <string name="Front Hair Down"> + Hår foran - ned + </string> + <string name="Front Hair Up"> + Hår foran - op + </string> + <string name="Full Back"> + Langt ud bagtil + </string> + <string name="Full Eyeliner"> + Meget eyeliner + </string> + <string name="Full Front"> + Langt frem fortil + </string> + <string name="Full Hair Sides"> + Hår i siderne + </string> + <string name="Full Sides"> + Meget hår + </string> + <string name="Glossy"> + Skinnende + </string> + <string name="Glove Fingers"> + Fingre i handsker + </string> + <string name="Glove Length"> + Handskelængde + </string> + <string name="Hair"> + Hår + </string> + <string name="Hair Back"> + Hår: Bagtil + </string> + <string name="Hair Front"> + Hår: Foran + </string> + <string name="Hair Sides"> + Hår: Siderne + </string> + <string name="Hair Sweep"> + Strøget hår + </string> + <string name="Hair Thickess"> + Hår tykkelse + </string> + <string name="Hair Thickness"> + Hår tykkelse + </string> + <string name="Hair Tilt"> + Hældning + </string> + <string name="Hair Tilted Left"> + mest hår venstre + </string> + <string name="Hair Tilted Right"> + Mest hår højre + </string> + <string name="Hair Volume"> + Hår: Volumen + </string> + <string name="Hand Size"> + Størrelse hånd + </string> + <string name="Handlebars"> + Cykelstyr + </string> + <string name="Head Length"> + Længde på hovede + </string> + <string name="Head Shape"> + Hovedform + </string> + <string name="Head Size"> + Hovedstørrelse + </string> + <string name="Head Stretch"> + Hovedhøjde + </string> + <string name="Heel Height"> + Hælhøjde + </string> + <string name="Heel Shape"> + Hælform + </string> + <string name="Height"> + Højde + </string> + <string name="High"> + Høj + </string> + <string name="High Heels"> + Hæje hæle + </string> + <string name="High Jaw"> + Høj kæbe + </string> + <string name="High Platforms"> + Høje såle + </string> + <string name="High and Tight"> + Høj og tæt + </string> + <string name="Higher"> + Højere + </string> + <string name="Hip Length"> + Hoftelængde + </string> + <string name="Hip Width"> + Hoftebredde + </string> + <string name="In"> + Inde + </string> + <string name="In Shdw Color"> + Indre skygge farve + </string> + <string name="In Shdw Opacity"> + Indre skygge gennemsigtighed + </string> + <string name="Inner Eye Corner"> + Inderste del af øje + </string> + <string name="Inner Eye Shadow"> + Inderste øjenskygge + </string> + <string name="Inner Shadow"> + Indre skygge + </string> + <string name="Jacket Length"> + Jakkelængde + </string> + <string name="Jacket Wrinkles"> + Jakkerynker + </string> + <string name="Jaw Angle"> + Kæbevinkel + </string> + <string name="Jaw Jut"> + Kæbefremspring + </string> + <string name="Jaw Shape"> + Kæbeform + </string> + <string name="Join"> + Saml + </string> + <string name="Jowls"> + Kindehud + </string> + <string name="Knee Angle"> + Knævinkel + </string> + <string name="Knock Kneed"> + Kalveknæet + </string> + <string name="Large"> + Stor + </string> + <string name="Large Hands"> + Store hænder + </string> + <string name="Left Part"> + Venstre side + </string> + <string name="Leg Length"> + Benlængde + </string> + <string name="Leg Muscles"> + Benmuskler + </string> + <string name="Less"> + Mindre + </string> + <string name="Less Body Fat"> + Mindre kropsfedt + </string> + <string name="Less Curtains"> + Mindre + </string> + <string name="Less Freckles"> + Færre fregner + </string> + <string name="Less Full"> + Mindre + </string> + <string name="Less Gravity"> + Mindre + </string> + <string name="Less Love"> + Mindre bildæk + </string> + <string name="Less Muscles"> + Færre muskler + </string> + <string name="Less Muscular"> + Mindre muskuløs + </string> + <string name="Less Rosy"> + Mindre rosa + </string> + <string name="Less Round"> + Mindre rund + </string> + <string name="Less Saddle"> + Mindre + </string> + <string name="Less Square"> + Mindre + </string> + <string name="Less Volume"> + Mindre + </string> + <string name="Less soul"> + Mindre + </string> + <string name="Lighter"> + Lettere + </string> + <string name="Lip Cleft"> + Læbekløft + </string> + <string name="Lip Cleft Depth"> + Dybde læbekløft + </string> + <string name="Lip Fullness"> + Fyldige læber + </string> + <string name="Lip Pinkness"> + Lyserøde læber + </string> + <string name="Lip Ratio"> + Læbeproportioner + </string> + <string name="Lip Thickness"> + Læbetykkelse + </string> + <string name="Lip Width"> + Læbebredde + </string> + <string name="Lipgloss"> + Lipgloss + </string> + <string name="Lipstick"> + Læbestift + </string> + <string name="Lipstick Color"> + Læbestift farve + </string> + <string name="Long"> + Lang + </string> + <string name="Long Head"> + Langt hovede + </string> + <string name="Long Hips"> + Lange hofter + </string> + <string name="Long Legs"> + Bange ben + </string> + <string name="Long Neck"> + Lang hals + </string> + <string name="Long Pigtails"> + Lange rottehaler + </string> + <string name="Long Ponytail"> + Lang hestehale + </string> + <string name="Long Torso"> + Lang overkrop + </string> + <string name="Long arms"> + Lange arme + </string> + <string name="Longcuffs"> + Longcuffs + </string> + <string name="Loose Pants"> + Løse bukser + </string> + <string name="Loose Shirt"> + Løs trøje + </string> + <string name="Loose Sleeves"> + Løse ærmer + </string> + <string name="Love Handles"> + Bildæk + </string> + <string name="Low"> + Lav + </string> + <string name="Low Heels"> + Flade hæle + </string> + <string name="Low Jaw"> + Lav kæbe + </string> + <string name="Low Platforms"> + Flade såler + </string> + <string name="Low and Loose"> + Lav og løs + </string> + <string name="Lower"> + Nedre + </string> + <string name="Lower Bridge"> + Nedre næseryg + </string> + <string name="Lower Cheeks"> + Nedre kinder + </string> + <string name="Male"> + Mand + </string> + <string name="Middle Part"> + Midterste del + </string> + <string name="More"> + Mere + </string> + <string name="More Blush"> + Mere rødmen + </string> + <string name="More Body Fat"> + Mere kropsfedt + </string> + <string name="More Curtains"> + Mere + </string> + <string name="More Eyeshadow"> + Mere øjenskygge + </string> + <string name="More Freckles"> + Flere fregner + </string> + <string name="More Full"> + Mere + </string> + <string name="More Gravity"> + More + </string> + <string name="More Lipstick"> + Mere læbestift + </string> + <string name="More Love"> + Mere bildæk + </string> + <string name="More Lower Lip"> + Mere underlæbe + </string> + <string name="More Muscles"> + Flere muskler + </string> + <string name="More Muscular"> + Mere muskuløs + </string> + <string name="More Rosy"> + Mere rosa + </string> + <string name="More Round"> + Mere rund + </string> + <string name="More Saddle"> + Mere + </string> + <string name="More Sloped"> + Mere skrå + </string> + <string name="More Square"> + Mere firkantet + </string> + <string name="More Upper Lip"> + Mere overlæbe + </string> + <string name="More Vertical"> + Mere lodret + </string> + <string name="More Volume"> + Mere + </string> + <string name="More soul"> + Mere + </string> + <string name="Moustache"> + Overskæg + </string> + <string name="Mouth Corner"> + Mundvige + </string> + <string name="Mouth Position"> + Position mund + </string> + <string name="Mowhawk"> + Intet hår + </string> + <string name="Muscular"> + Muskuløs + </string> + <string name="Mutton Chops"> + Lange + </string> + <string name="Nail Polish"> + Neglelak + </string> + <string name="Nail Polish Color"> + Neglelak farve + </string> + <string name="Narrow"> + Smal + </string> + <string name="Narrow Back"> + Smal bagtil + </string> + <string name="Narrow Front"> + Smal fortil + </string> + <string name="Narrow Lips"> + Smalle læber + </string> + <string name="Natural"> + Naturlig + </string> + <string name="Neck Length"> + Halslængde + </string> + <string name="Neck Thickness"> + Halstykkelse + </string> + <string name="No Blush"> + Ingen rødmen + </string> + <string name="No Eyeliner"> + Ingen eyeliner + </string> + <string name="No Eyeshadow"> + Ingen øjenskygge + </string> + <string name="No Heels"> + Ingen hæle + </string> + <string name="No Lipgloss"> + Ingen lipgloss + </string> + <string name="No Lipstick"> + Ingen læbestift + </string> + <string name="No Part"> + Ingen dele + </string> + <string name="No Polish"> + Ingen lak + </string> + <string name="No Red"> + Ingen rød + </string> + <string name="No Spikes"> + Ingen spikes + </string> + <string name="No White"> + Ingen hvid + </string> + <string name="No Wrinkles"> + Ingen rynker + </string> + <string name="Normal Lower"> + Normal nedre + </string> + <string name="Normal Upper"> + Normal øvre + </string> + <string name="Nose Left"> + Højre + </string> + <string name="Nose Right"> + Venstre + </string> + <string name="Nose Size"> + Næse størrelse + </string> + <string name="Nose Thickness"> + Næse tykkelse + </string> + <string name="Nose Tip Angle"> + Næsetip vinkel + </string> + <string name="Nose Tip Shape"> + Næsetip form + </string> + <string name="Nose Width"> + Næse bredde + </string> + <string name="Nostril Division"> + Næsebor adskillelse + </string> + <string name="Nostril Width"> + Næsebor bredde + </string> + <string name="Old"> + Gammel + </string> + <string name="Opaque"> + Uigennemsigtig + </string> + <string name="Open"> + Åben + </string> + <string name="Open Back"> + Åben bagtil + </string> + <string name="Open Front"> + Åben foran + </string> + <string name="Open Left"> + Åben til venstre + </string> + <string name="Open Right"> + Åben til højre + </string> + <string name="Orange"> + Orange + </string> + <string name="Out"> + Ud + </string> + <string name="Out Shdw Color"> + Ydre skygge farve + </string> + <string name="Out Shdw Opacity"> + Ydre skygge uigennemsigtighed + </string> + <string name="Outer Eye Corner"> + Yderste del af øje + </string> + <string name="Outer Eye Shadow"> + Ydre øjenskygge + </string> + <string name="Outer Shadow"> + Ydre skygge + </string> + <string name="Overbite"> + Overbid + </string> + <string name="Package"> + Skridt + </string> + <string name="Painted Nails"> + Malede negle + </string> + <string name="Pale"> + Bleg + </string> + <string name="Pants Crotch"> + Bukser skridt + </string> + <string name="Pants Fit"> + Pasform bukser + </string> + <string name="Pants Length"> + Bukser - længde + </string> + <string name="Pants Waist"> + Bukser - vidde + </string> + <string name="Pants Wrinkles"> + Bukser - rynker + </string> + <string name="Part"> + Skilning + </string> + <string name="Part Bangs"> + Skilning + </string> + <string name="Pectorals"> + Brystmuskler + </string> + <string name="Pigment"> + Pigmentering + </string> + <string name="Pigtails"> + Rottehaler + </string> + <string name="Pink"> + Pink + </string> + <string name="Pinker"> + Mere pink + </string> + <string name="Platform Height"> + Højde sål + </string> + <string name="Platform Width"> + Bredde sål + </string> + <string name="Pointy"> + Spids + </string> + <string name="Pointy Heels"> + Spidse hæle + </string> + <string name="Pointy Toe"> + Spids snude + </string> + <string name="Ponytail"> + Hestehale + </string> + <string name="Poofy Skirt"> + Strutskørt + </string> + <string name="Pop Left Eye"> + Forstør venstre øje + </string> + <string name="Pop Right Eye"> + Forstør højre øje + </string> + <string name="Puffy"> + Posede + </string> + <string name="Puffy Eyelids"> + Posede øjenlåg + </string> + <string name="Rainbow Color"> + Regnbue farver + </string> + <string name="Red Hair"> + Rødt hår + </string> + <string name="Red Skin"> + Rød hud + </string> + <string name="Regular"> + Almindelig + </string> + <string name="Regular Muscles"> + Almindelige muskler + </string> + <string name="Right Part"> + Højre skildning + </string> + <string name="Rosy Complexion"> + Rosa teint + </string> + <string name="Round"> + Rund + </string> + <string name="Round Forehead"> + Rund pande + </string> + <string name="Ruddiness"> + Rødmossethed + </string> + <string name="Ruddy"> + Rødmosset + </string> + <string name="Rumpled Hair"> + Krøllet hår + </string> + <string name="Saddle Bags"> + Ridebukselår + </string> + <string name="Saddlebags"> + Ridebukselår + </string> + <string name="Scrawny"> + Radmager + </string> + <string name="Scrawny Leg"> + Magert ben + </string> + <string name="Separate"> + Separat + </string> + <string name="Shading"> + Skygger + </string> + <string name="Shadow hair"> + Skygge hår + </string> + <string name="Shallow"> + Lille + </string> + <string name="Shear Back"> + Afklippet bagi + </string> + <string name="Shear Face"> + Skævt ansigt + </string> + <string name="Shear Front"> + "Måne" + </string> + <string name="Shear Left"> + Venstre + </string> + <string name="Shear Left Up"> + Venstre op + </string> + <string name="Shear Right"> + Højre + </string> + <string name="Shear Right Up"> + Højre op + </string> + <string name="Sheared Back"> + Afklippet bagtil + </string> + <string name="Sheared Front"> + Måne + </string> + <string name="Shift Left"> + Mod venstre + </string> + <string name="Shift Mouth"> + Flyt mund + </string> + <string name="Shift Right"> + Mod højre + </string> + <string name="Shirt Bottom"> + Trøje - bund + </string> + <string name="Shirt Fit"> + Trøje - pasform + </string> + <string name="Shirt Wrinkles"> + Trøje - rynker + </string> + <string name="Shoe Height"> + Sko højde + </string> + <string name="Short"> + Kort + </string> + <string name="Short Arms"> + Korte arme + </string> + <string name="Short Legs"> + Korte ben + </string> + <string name="Short Neck"> + Kort hals + </string> + <string name="Short Pigtails"> + Korte rottehaler + </string> + <string name="Short Ponytail"> + Kort hestehale + </string> + <string name="Short Sideburns"> + Korte + </string> + <string name="Short Torso"> + Kort overkrop + </string> + <string name="Short hips"> + Korte hofter + </string> + <string name="Shoulders"> + Skuldre + </string> + <string name="Side Bangs"> + Sidehår + </string> + <string name="Side Bangs Down"> + Ned + </string> + <string name="Side Bangs Up"> + Op + </string> + <string name="Side Fringe"> + Side frynser + </string> + <string name="Sideburns"> + Bakkenbarter + </string> + <string name="Sides Hair"> + Sidehår + </string> + <string name="Sides Hair Down"> + Ned + </string> + <string name="Sides Hair Up"> + Op + </string> + <string name="Skinny"> + Tynd + </string> + <string name="Skinny Neck"> + Tynd hals + </string> + <string name="Skirt Fit"> + Omfang + </string> + <string name="Skirt Length"> + Længde nederdel + </string> + <string name="Slanted Forehead"> + Skrånende pande + </string> + <string name="Sleeve Length"> + Ærmelængde + </string> + <string name="Sleeve Looseness"> + Ærmer - stramhed + </string> + <string name="Slit Back"> + Slids: Bag + </string> + <string name="Slit Front"> + Slids: Foran + </string> + <string name="Slit Left"> + Slids: Venstre + </string> + <string name="Slit Right"> + Slids: Højre + </string> + <string name="Small"> + Lille + </string> + <string name="Small Hands"> + Små hænder + </string> + <string name="Small Head"> + Lille hovede + </string> + <string name="Smooth"> + Glat + </string> + <string name="Smooth Hair"> + Glat hår + </string> + <string name="Socks Length"> + Strømper - længde + </string> + <string name="Some"> + Nogen + </string> + <string name="Soulpatch"> + Soulpatch + </string> + <string name="Sparse"> + Sparsomt + </string> + <string name="Spiked Hair"> + Hår med "spikes" + </string> + <string name="Square"> + Firkantet + </string> + <string name="Square Toe"> + Firkantet snude + </string> + <string name="Squash Head"> + Bredt hovede + </string> + <string name="Squash/Stretch Head"> + Sammentryk/stræk hovede + </string> + <string name="Stretch Head"> + Stræk hovede + </string> + <string name="Sunken"> + Indsunket + </string> + <string name="Sunken Chest"> + Indsunket bryst + </string> + <string name="Sunken Eyes"> + Dybtliggende øjne + </string> + <string name="Sweep Back"> + Stryge tilbage + </string> + <string name="Sweep Forward"> + Stryge fremad + </string> + <string name="Swept Back"> + Tilbagestrøget + </string> + <string name="Swept Back Hair"> + Tilbagestrøget hår + </string> + <string name="Swept Forward"> + Fremadstrøget + </string> + <string name="Swept Forward Hair"> + Fremadstrøget hår + </string> + <string name="Tall"> + Høj + </string> + <string name="Taper Back"> + Indsnævring bag + </string> + <string name="Taper Front"> + Indsnævring foran + </string> + <string name="Thick Heels"> + Brede hæle + </string> + <string name="Thick Neck"> + Bred nakke + </string> + <string name="Thick Toe"> + Bred snude + </string> + <string name="Thickness"> + Tykkelse + </string> + <string name="Thin"> + Tynd + </string> + <string name="Thin Eyebrows"> + Tynde øjenbryn + </string> + <string name="Thin Lips"> + Tynde læber + </string> + <string name="Thin Nose"> + Tynd næse + </string> + <string name="Tight Chin"> + Stram hage + </string> + <string name="Tight Cuffs"> + Smalle bukseben + </string> + <string name="Tight Pants"> + Stramme bukser + </string> + <string name="Tight Shirt"> + Stram trøje + </string> + <string name="Tight Skirt"> + Stram nederdel + </string> + <string name="Tight Sleeves"> + Stramme ærmer + </string> + <string name="Tilt Left"> + Hæld til venstre + </string> + <string name="Tilt Right"> + Hæld til højre + </string> + <string name="Toe Shape"> + Sko form + </string> + <string name="Toe Thickness"> + Tykkelse af snud + </string> + <string name="Torso Length"> + Overkrop - længde + </string> + <string name="Torso Muscles"> + Overkrop - muskler + </string> + <string name="Torso Scrawny"> + Overkrop - mager + </string> + <string name="Unattached"> + Ikke vedhæftet + </string> + <string name="Uncreased"> + Glat + </string> + <string name="Underbite"> + Underbid + </string> + <string name="Unnatural"> + Unaturlig + </string> + <string name="Upper Bridge"> + Øverste næseryg + </string> + <string name="Upper Cheeks"> + Øvre kinder + </string> + <string name="Upper Chin Cleft"> + Øvre hagekløft + </string> + <string name="Upper Eyelid Fold"> + Øvre øjenlåg + </string> + <string name="Upturned"> + Opadvendt + </string> + <string name="Very Red"> + Meget rød + </string> + <string name="Waist Height"> + Talje højde + </string> + <string name="Well-Fed"> + Velnæret + </string> + <string name="White Hair"> + Hvidt hår + </string> + <string name="Wide"> + Bred + </string> + <string name="Wide Back"> + Bredt + </string> + <string name="Wide Front"> + Bredt + </string> + <string name="Wide Lips"> + Brede læber + </string> + <string name="Wild"> + Vildt + </string> + <string name="Wrinkles"> + Rynker + </string> + <string name="LocationCtrlAddLandmarkTooltip"> + Tilføj til mine landemærker + </string> + <string name="LocationCtrlEditLandmarkTooltip"> + Rediger mit landemærke + </string> + <string name="LocationCtrlInfoBtnTooltip"> + Se yderligere information om nuværende lokation + </string> + <string name="LocationCtrlComboBtnTooltip"> + Min lokationshistorik + </string> + <string name="UpdaterWindowTitle"> + [APP_NAME] Opdatér + </string> + <string name="UpdaterNowUpdating"> + Opdaterer nu [APP_NAME]... + </string> + <string name="UpdaterNowInstalling"> + Installerer [APP_NAME]... + </string> + <string name="UpdaterUpdatingDescriptive"> + Din [APP_NAME] klient bliver opdateret til nyeste version. Dette kan tage noget tid, så venligst vær tålmodig. + </string> + <string name="UpdaterProgressBarTextWithEllipses"> + Download færdig... + </string> + <string name="UpdaterProgressBarText"> + Downloader opdatering + </string> + <string name="UpdaterFailDownloadTitle"> + Download af opdatering fejlede + </string> + <string name="UpdaterFailUpdateDescriptive"> + Der opstod en fejl ved opdatering af [APP_NAME]. Hent venligst den nyeste version fra www.secondlife.com. + </string> + <string name="UpdaterFailInstallTitle"> + Installation af opdatering fejlede + </string> + <string name="UpdaterFailStartTitle"> + Opstart af klient fejlede + </string> + <string name="IM_logging_string"> + -- Logning af IM aktiveret -- + </string> + <string name="IM_typing_start_string"> + [NAME] skriver... + </string> + <string name="Unnamed"> + (Uden navn) + </string> + <string name="IM_moderated_chat_label"> + (Modereret: Stemmer deaktiveret) + </string> + <string name="IM_unavailable_text_label"> + Tekst chat er ikke tilgængelig i denne samtale. + </string> + <string name="IM_muted_text_label"> + Din tekst chat er blevet deaktiveret af en gruppe moderator. + </string> + <string name="IM_default_text_label"> + Klik her for privat besked (IM). + </string> + <string name="IM_to_label"> + Til + </string> + <string name="IM_moderator_label"> + (Moderator) + </string> + <string name="only_user_message"> + Du er den eneste deltager i denne samtale + </string> + <string name="offline_message"> + [FIRST] [LAST] er ikke logget på. + </string> + <string name="invite_message"> + Tryk på [BUTTON NAME] knappen for at acceptére/tilslutte til denne stemme chat. + </string> + <string name="muted_message"> + Du har blokeret denne beboer. Hvis du starter en samtale vil denne blokering automatisk blive fjernet. + </string> + <string name="generic_request_error"> + Kunne ikke etablere forbindelse, prøv igen senere + </string> + <string name="insufficient_perms_error"> + Du har ikke de fornødne rettigheder. + </string> + <string name="session_does_not_exist_error"> + Denne samtale er lukket ned + </string> + <string name="no_ability_error"> + Du har ikke den mulighed. + </string> + <string name="no_ability"> + Du har ikke den mulighed. + </string> + <string name="not_a_mod_error"> + Du er ikke moderator for denne samtale. + </string> + <string name="muted_error"> + Du er blevet "blokeret". + </string> + <string name="add_session_event"> + Ikke muligt at tilføge brugere til samtale med [RECIPIENT]. + </string> + <string name="message_session_event"> + Ikke muligt at sende din besked til samtalen med [RECIPIENT]. + </string> + <string name="removed_from_group"> + Du er blevet fjernet fra gruppen. + </string> + <string name="close_on_no_ability"> + Du har ikke længere mulighed for at deltage i samtalen + </string> +</strings> diff --git a/indra/newview/skins/default/xui/da/teleport_strings.xml b/indra/newview/skins/default/xui/da/teleport_strings.xml index 680806c8ac..43f8e5144d 100644 --- a/indra/newview/skins/default/xui/da/teleport_strings.xml +++ b/indra/newview/skins/default/xui/da/teleport_strings.xml @@ -1,79 +1,79 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<teleport_messages>
- <message_set name="errors">
- <message 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å: [SUPPORT_SITE].
- </message>
- <message 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å: [SUPPORT_SITE].
- </message>
- <message 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.
- </message>
- <message name="nolandmark_tport">
- Beklager, systemet kunne ikke finde landmærke destinationen.
- </message>
- <message name="timeout_tport">
- Beklager, systemet kunne ikke fuldføre teleport forbindelse.
-Prøv igen om lidt.
- </message>
- <message name="noaccess_tport">
- Beklager, du har ikke adgang til denne teleport destination.
- </message>
- <message 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.
- </message>
- <message 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.
- </message>
- <message name="expired_tport">
- Beklager, men systemet kunne ikke fuldføre din teleport i rimelig tid. Prøv venligst igen om lidt.
- </message>
- <message name="expired_region_handoff">
- Beklager, men systemet kunne ikke fuldføre skift til anden region i rimelig tid. Prøv venligst igen om lidt.
- </message>
- <message 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.
- </message>
- <message name="no_inventory_host">
- Beholdningssystemet er ikke tilgængelig lige nu.
- </message>
- </message_set>
- <message_set name="progress">
- <message name="sending_dest">
- Sender til destination.
- </message>
- <message name="redirecting">
- Omdirigerer til en anden lokation.
- </message>
- <message name="relaying">
- Overfører til destination.
- </message>
- <message name="sending_home">
- Sender forespørgsel på hjem-position.
- </message>
- <message name="sending_landmark">
- Semder anmodning om landmærke.
- </message>
- <message name="completing">
- Fuldfører teleport.
- </message>
- <message name="resolving">
- Finder destination.
- </message>
- <message name="contacting">
- Kontakter ny region.
- </message>
- <message name="arriving">
- Ankommer...
- </message>
- <message name="requesting">
- Anmoder om teleport...
- </message>
- </message_set>
-</teleport_messages>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<teleport_messages> + <message_set name="errors"> + <message 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å: [SUPPORT_SITE]. + </message> + <message 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å: [SUPPORT_SITE]. + </message> + <message 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. + </message> + <message name="nolandmark_tport"> + Beklager, systemet kunne ikke finde landmærke destinationen. + </message> + <message name="timeout_tport"> + Beklager, systemet kunne ikke fuldføre teleport forbindelse. +Prøv igen om lidt. + </message> + <message name="noaccess_tport"> + Beklager, du har ikke adgang til denne teleport destination. + </message> + <message 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. + </message> + <message 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. + </message> + <message name="expired_tport"> + Beklager, men systemet kunne ikke fuldføre din teleport i rimelig tid. Prøv venligst igen om lidt. + </message> + <message name="expired_region_handoff"> + Beklager, men systemet kunne ikke fuldføre skift til anden region i rimelig tid. Prøv venligst igen om lidt. + </message> + <message 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. + </message> + <message name="no_inventory_host"> + Beholdningssystemet er ikke tilgængelig lige nu. + </message> + </message_set> + <message_set name="progress"> + <message name="sending_dest"> + Sender til destination. + </message> + <message name="redirecting"> + Omdirigerer til en anden lokation. + </message> + <message name="relaying"> + Overfører til destination. + </message> + <message name="sending_home"> + Sender forespørgsel på hjem-position. + </message> + <message name="sending_landmark"> + Semder anmodning om landmærke. + </message> + <message name="completing"> + Fuldfører teleport. + </message> + <message name="resolving"> + Finder destination. + </message> + <message name="contacting"> + Kontakter ny region. + </message> + <message name="arriving"> + Ankommer... + </message> + <message name="requesting"> + Anmoder om teleport... + </message> + </message_set> +</teleport_messages> diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml index ea5c33b3c8..c19f98516d 100644 --- a/indra/newview/skins/default/xui/de/floater_about.xml +++ b/indra/newview/skins/default/xui/de/floater_about.xml @@ -1,6 +1,46 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="ÜBER [APP_NAME]"> +<floater name="floater_about" title="INFO ÜBER [CAPITALIZED_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"> + Kompiliert mit [COMPILER] version [COMPILER_VERSION] + </floater.string> + <floater.string name="AboutPosition"> + Sie befinden sich in [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] in [REGION] auf <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +[SERVER_VERSION] +[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]] + </floater.string> + <floater.string name="AboutSystem"> + CPU: [CPU] +Speicher: [MEMORY_MB] MB +Betriebssystem, Version: [OS_VERSION] +Grafikkarten-Hersteller: [GRAPHICS_CARD_VENDOR] +Grafikkarten: [GRAPHICS_CARD] + </floater.string> + <floater.string name="AboutDriver"> + Windows Grafiktreiber-Version: [GRAPHICS_DRIVER_VERSION] + </floater.string> + <floater.string name="AboutLibs"> + OpenGL Version: [OPENGL_VERSION] + +libcurl-Version: [LIBCURL_VERSION] +J2C-Decoderversion: [J2C_VERSION] +Audio-Treiberversion: [AUDIO_DRIVER_VERSION] +Qt Webkit Version: [QT_WEBKIT_VERSION] +Vivox-Version: [VIVOX_VERSION] + </floater.string> + <floater.string name="none"> + (keiner) + </floater.string> + <floater.string name="AboutTraffic"> + Paketverlust: [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="In Zwischenablage kopieren" name="copy_btn"/> + </panel> <panel label="Danksagung" name="credits_panel"> <text_editor name="credits_editor"> Second Life wird Ihnen präsentiert von 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 und vielen anderen. @@ -33,7 +73,8 @@ google-perftools Copyright (c) 2005, Google Inc. Alle Rechte vorbehalten. Details siehe licenses.txt. -Voice-Chat-Audiocoding: Polycom(R) Siren14(TM) (ITU-T Empf.G.722.1 Anhang C) +Voice-Chat-Audiocoding: Polycom(R) Siren14(TM) +(ITU-T Empf.G.722.1 Anhang C) </text_editor> </panel> </tab_container> 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 d6d7434d58..05e2d4d754 100644 --- a/indra/newview/skins/default/xui/de/floater_about_land.xml +++ b/indra/newview/skins/default/xui/de/floater_about_land.xml @@ -9,8 +9,11 @@ <floater.string name="Seconds"> [SECONDS] Sekunden </floater.string> - <tab_container name="landtab"> - <panel label="Allgemein" name="land_general_panel"> + <floater.string name="Remaining"> + Restzeit + </floater.string> + <tab_container name="landtab" tab_min_width="40" width="489"> + <panel label="ALLGEMEIN" name="land_general_panel"> <panel.string name="new users only"> Nur neue Benutzer </panel.string> @@ -21,7 +24,7 @@ Gebiet: </panel.string> <panel.string name="area_size_text"> - [AREA] qm. + [AREA] m². </panel.string> <panel.string name="auction_id_text"> Auktions-ID: [ID] @@ -33,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) @@ -49,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: @@ -75,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..." width="90"/> <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$/qm.). + 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. + <text left_delta="-50" name="Sell with landowners objects in parcel." width="240"> + Objekte sind im Verkauf eingeschlossen </text> - <text name="Selling with no objects in parcel." width="237"> - Objekte sind im Verkauf nicht eingeschlossen. + <text name="Selling with no objects in parcel." width="260"> + Objekte sind im Verkauf nicht eingeschlossen </text> <button bottom="-222" label="Landverkauf abbrechen" label_selected="Landverkauf abbrechen" name="Cancel Land Sale"/> <text name="Claimed:"> @@ -114,7 +118,7 @@ Gebiet: </text> <text name="PriceText"> - 4048 qm. + 4.048 m² </text> <text name="Traffic:"> Traffic: @@ -122,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> @@ -147,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> @@ -168,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: @@ -200,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> @@ -211,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] @@ -231,11 +230,11 @@ werden. <text left="14" name="Owned by parcel owner:" width="200"> Im Eigentum des Parzellenbesitzers: </text> - <text left="204" name="owner_objects_text" width="48"> + <text left="204" left_delta="200" name="owner_objects_text" width="48"> [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> @@ -243,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> @@ -251,48 +250,48 @@ 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> <text left="204" name="selected_objects_text" width="48"> [COUNT] </text> - <text left="4" name="Autoreturn" width="380"> + <text left="4" name="Autoreturn" width="410"> Objekte anderer Einwohner automatisch zurückgeben (Minuten, 0 für aus): </text> <line_editor name="clean other time" right="-10" width="56"/> <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"/> - <name_list.columns label="Zählen" name="count"/> + <name_list.columns label="Zählen" name="count" width="80"/> <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> <panel.string name="search_disabled_small_tooltip"> - Diese Option ist nicht aktiviert, da diese Parzelle nicht größer als 128 qm ist. + Diese Option ist nicht aktiviert, weil die Parzelle 128 m² oder kleiner ist. Nur große Parzellen können in der Suche aufgeführt werden. </panel.string> <panel.string name="search_disabled_permissions_tooltip"> 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“. @@ -312,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"/> @@ -361,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> @@ -369,44 +368,41 @@ Nur große Parzellen können in der Suche aufgeführt werden. <text name="landing_point"> Landepunkt: [LANDING] </text> - <button label="Festlegen" label_selected="Festlegen" left="234" name="Set" tool_tip="Legt den Landepunkt fest, an dem Besucher ankommen. Legt die Position Ihres Avatars innerhalb dieser Parzelle fest." width="70"/> - <button label="Löschen" label_selected="Löschen" left="312" name="Clear" tool_tip="Landepunkt löschen." width="70"/> + <button label="Festlegen" label_selected="Festlegen" left="234" name="Set" right="-88" tool_tip="Legt den Landepunkt fest, an dem Besucher ankommen. Legt die Position Ihres Avatars innerhalb dieser Parzelle fest." width="70"/> + <button label="Löschen" label_selected="Löschen" left="312" name="Clear" tool_tip="Landepunkt löschen" width="70"/> <text name="Teleport Routing: "> Teleport-Route: </text> - <combo_box name="landing type" tool_tip="Teleport-Route -- festlegen, wie Teleports auf Ihrem Land gehandhabt werden sollen."> + <combo_box name="landing type" tool_tip="Teleport-Route -- festlegen, wie Teleports auf Ihrem Land gehandhabt werden sollen"> <combo_box.item label="Blockiert" name="Blocked"/> <combo_box.item label="Landepunkt" name="LandingPoint"/> <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."> @@ -422,10 +418,11 @@ 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> + <check_box label="URL ausblenden" name="hide_music_url" tool_tip="Aktivieren Sie diese Option, wenn Sie nicht möchten, dass unautorisierte Personen die Musik-URL sehen können"/> <text name="Sound:"> Sound: </text> @@ -435,21 +432,24 @@ Wählen Sie das kleine Bild aus, um eine andere Textur auszuwählen. </text> <check_box label="Voice aktivieren" name="parcel_enable_voice_channel"/> <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"/> + <check_box label="Voice auf diese Parzelle beschränken" name="parcel_enable_voice_channel_local"/> </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"/> - <text name="Only Allow"> - Zugang verweigern für: + <check_box label="Öffentlichen Zugang erlauben [MATURITY]" name="public_access"/> + <text name="Only Allow" width="400"> + 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"> @@ -458,18 +458,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_activeim.xml b/indra/newview/skins/default/xui/de/floater_activeim.xml new file mode 100644 index 0000000000..416e31b2d6 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_activeim.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_activeim" title="AKTIVE IM"/> 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 33ce72855b..0d55ea7413 100644 --- a/indra/newview/skins/default/xui/de/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_animation_preview.xml @@ -106,6 +106,9 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden. <floater.string name="E_ST_NO_XLT_EMOTE"> Emote-Name kann nicht gelesen werden. </floater.string> + <floater.string name="E_ST_BAD_ROOT"> + Falscher Root-Joint-Name, "hip" verwenden. + </floater.string> <text name="name_label"> Name: </text> @@ -113,14 +116,14 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden. <text name="description_label"> Beschreibung: </text> - <spinner label="Priorität" name="priority" tool_tip="Steuert, welche Animationen von dieser Animation überschrieben werden können."/> - <check_box bottom_delta="-18" label="Schleife" name="loop_check" tool_tip="Erzeugt eine Animationsschleife."/> - <spinner label="In (%)" name="loop_in_point" tool_tip="Anfang einer Animationsschleife festlegen."/> - <spinner label="Aus (%)" name="loop_out_point" tool_tip="Ende einer Animationsschleife festlegen."/> + <spinner label="Priorität" name="priority" tool_tip="Steuert, welche Animationen von dieser Animation überschrieben werden können"/> + <check_box bottom_delta="-18" label="Schleife" name="loop_check" tool_tip="Erzeugt eine Animationsschleife"/> + <spinner label="In (%)" name="loop_in_point" tool_tip="Anfang einer Animationsschleife festlegen"/> + <spinner label="Aus (%)" name="loop_out_point" tool_tip="Ende einer Animationsschleife festlegen"/> <text name="hand_label"> Handhaltung </text> - <combo_box label="" name="hand_pose_combo" tool_tip="Steuert während der Animation die Bewegung der Hände."> + <combo_box label="" name="hand_pose_combo" tool_tip="Steuert während der Animation die Bewegung der Hände"> <combo_box.item label="Dehnen" name="Spread"/> <combo_box.item label="Entspannt" name="Relaxed"/> <combo_box.item label="Beide zeigen" name="PointBoth"/> @@ -138,8 +141,8 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden. <text name="emote_label"> Ausdruck </text> - <combo_box label="" name="emote_combo" tool_tip="Steuert Gesichtsregungen während der Animation."> - <combo_box.item label="Keine]" name="[None]"/> + <combo_box label="" name="emote_combo" tool_tip="Steuert Gesichtsregungen während der Animation"> + <combo_box.item label="(Keiner)" name="[None]"/> <combo_box.item label="Aaaaah" name="Aaaaah"/> <combo_box.item label="Ängstlich" name="Afraid"/> <combo_box.item label="Verärgert" name="Angry"/> @@ -152,7 +155,7 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden. <combo_box.item label="Küssen" name="Kiss"/> <combo_box.item label="Lachen" name="Laugh"/> <combo_box.item label="Bäääh" name="Plllppt"/> - <combo_box.item label="Zurückgestoßen" name="Repulsed"/> + <combo_box.item label="Angewidert" name="Repulsed"/> <combo_box.item label="Traurig" name="Sad"/> <combo_box.item label="Schulterzucken" name="Shrug"/> <combo_box.item label="Lächeln" name="Smile"/> @@ -167,11 +170,12 @@ Maximal erlaubt sind [MAX_LENGTH] Sekunden. <combo_box.item label="Stehend" name="Standing"/> <combo_box.item label="Geht" name="Walking"/> <combo_box.item label="Sitzt" name="Sitting"/> - <combo_box.item label="Fliegend" name="Flying"/> + <combo_box.item label="Fliegen" name="Flying"/> </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="Ausblendungsgeschwindigkeit von Animationen (in Sekunden)." width="175"/> - <button bottom_delta="-32" label="" name="play_btn" tool_tip="Animation stoppen/wiedergeben."/> + <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="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 +183,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="Hochladen ([AMOUNT] L$)" name="ok_btn" width="160"/> + <button label="Abbrechen" left="180" name="cancel_btn" width="88"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_auction.xml b/indra/newview/skins/default/xui/de/floater_auction.xml index 9d0db766c9..8ededff319 100644 --- a/indra/newview/skins/default/xui/de/floater_auction.xml +++ b/indra/newview/skins/default/xui/de/floater_auction.xml @@ -1,9 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_auction" title="LINDEN-LANDVERKAUF STARTEN"> - <check_box label="Gelben Auswahlrahmen einschließen" name="fence_check" /> - <button label="Foto" label_selected="Foto" name="snapshot_btn" /> - <button label="OK" label_selected="OK" name="ok_btn" /> - <text name="already for sale"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_auction" title="LINDEN LAND VERKAUF STARTEN"> + <floater.string name="already for sale"> Parzellen, die bereits zum Verkauf stehen, können nicht auktioniert werden. - </text> + </floater.string> + <check_box initial_value="true" label="Gelben Auswahlrahmen einschließen" name="fence_check"/> + <button label="Foto" label_selected="Foto" name="snapshot_btn"/> + <button label="An jeden verkaufen" label_selected="An jeden verkaufen" name="sell_to_anyone_btn"/> + <button label="Einstellungen löschen" label_selected="Einstellungen löschen" name="reset_parcel_btn"/> + <button label="Auktion beginnen" label_selected="Auktion beginnen" name="start_auction_btn"/> </floater> 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 a188a9fd9e..6eb99f8b42 100644 --- a/indra/newview/skins/default/xui/de/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/de/floater_avatar_picker.xml @@ -1,43 +1,66 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatarpicker" title="EINWOHNER AUSWÄHLEN"> + <floater.string name="not_found"> + „[TEXT]“ nicht gefunden + </floater.string> + <floater.string name="no_one_near"> + Keiner in der Nähe + </floater.string> + <floater.string name="no_results"> + Keine Ergebnisse + </floater.string> + <floater.string name="searching"> + Suchen... + </floater.string> + <string label="OK" label_selected="OK" name="Select"> + Auswählen + </string> + <string name="Close"> + Schließen + </string> <tab_container name="ResidentChooserTabs"> <panel label="Suchen" name="SearchPanel"> <text name="InstructSearchResidentName"> - Geben Sie einen Teil des Namens einer Person ein: + Geben Sie einen Teil des Namens einer +Person ein: </text> - <line_editor bottom_delta="-36" name="Edit"/> - <button label="Los" label_selected="Los" name="Find"/> - <scroll_list bottom_delta="-79" height="74" name="SearchResults"/> + <line_editor bottom_delta="-76" name="Edit" top_pad="16"/> + <button label="Los" label_selected="Los" name="Find" top="70"/> + <scroll_list top="80" height="54" name="SearchResults"/> </panel> - <panel label="Visitenkarten" name="CallingCardsPanel"> - <text name="InstructSelectCallingCard"> - Wählen Sie eine Visitenkarte: + <panel label="Freunde" name="FriendsPanel"> + <text name="InstructSelectFriend"> + Wählen Sie eine Person aus: </text> </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> - <button font="SansSerifSmall" label="Liste aktualisieren" label_selected="Liste aktualisieren" left_delta="10" name="Refresh" width="105"/> <slider bottom_delta="-36" label="Bereich" name="near_me_range"/> <text name="meters"> Meter </text> - <scroll_list bottom_delta="-169" height="159" name="NearMe"/> + <button + follows="top|left" + layout="topleft" + left_pad="0" + height="28" + width="28" + name="Refresh" + image_overlay="Refresh_Off" /> + <scroll_list + follows="all" + height="100" + border="false" + layout="topleft" + left="0" + name="NearMe" + sort_column="0" + top="50" + width="132" /> </panel> </tab_container> - <button label="OK" label_selected="OK" name="Select"/> - <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> - <string name="not_found"> - „[TEXT]“ nicht gefunden - </string> - <string name="no_one_near"> - Niemand in der Nähe - </string> - <string name="no_results"> - Keine Ergebnisse - </string> - <string name="searching"> - Suchen... - </string> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Abbrechen" label_selected="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 3072735c66..92c0c4a27a 100644 --- a/indra/newview/skins/default/xui/de/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/de/floater_avatar_textures.xml @@ -1,31 +1,48 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatar_texture_debug" title="AVATAR-TEXTUREN"> - <text name="label"> + <floater.string name="InvalidAvatar"> + UNGÜLTIGER AVATAR + </floater.string> + <text name="label" width="120"> Gebackene Texturen </text> - <text name="composite_label" width="150"> + <text name="composite_label" width="170"> 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="Haar" name="hair"/> - <texture_picker label="Kopf" name="head-baked"/> - <texture_picker label="Make-Uup" name="head bodypaint"/> - <texture_picker label="Augen" name="eyes-baked"/> - <texture_picker label="Auge" name="iris"/> - <texture_picker label="Oberkörper" name="upper-baked"/> - <texture_picker label="Oberkörpertattoo" name="upper bodypaint"/> - <texture_picker label="Unterhemd" name="undershirt"/> - <texture_picker label="Handschuhe" name="gloves"/> - <texture_picker label="Hemd" name="shirt"/> - <texture_picker label="Oberjacke" name="upper jacket"/> - <texture_picker label="Unterkörper" name="lower-baked"/> - <texture_picker label="Unterkörper-Tätowierung" name="lower bodypaint"/> - <texture_picker label="Unterhose" name="underpants"/> - <texture_picker label="Socken" name="socks"/> - <texture_picker label="Schuhe" name="shoes"/> - <texture_picker label="Hose" name="pants"/> - <texture_picker label="Jacke" name="lower jacket"/> - <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-Up" 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" width= + "140"/> + <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" width= + "140"/> + <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_beacons.xml b/indra/newview/skins/default/xui/de/floater_beacons.xml index f407ba6122..6e83e0419b 100644 --- a/indra/newview/skins/default/xui/de/floater_beacons.xml +++ b/indra/newview/skins/default/xui/de/floater_beacons.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="beacons" title="BEACONS"> +<floater name="beacons" title="STRAHLEN"> <panel name="beacons_panel"> <text name="label_show"> Anzeigen: </text> - <check_box label="Beacons" name="beacons"/> - <check_box label="Glanzlichter" name="highlights"/> - <text name="beacon_width_label" tool_tip="Beacon-Breite"> + <check_box label="Strahlen" name="beacons"/> + <check_box label="Hervorhebung" name="highlights"/> + <text name="beacon_width_label" tool_tip="Strahlbreite"> Breite: </text> <text name="label_objects"> diff --git a/indra/newview/skins/default/xui/de/floater_build_options.xml b/indra/newview/skins/default/xui/de/floater_build_options.xml index 932ea160a9..b70c859490 100644 --- a/indra/newview/skins/default/xui/de/floater_build_options.xml +++ b/indra/newview/skins/default/xui/de/floater_build_options.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="build options floater" title="RASTEROPTIONEN"> - <spinner label="Rastereinheit (Meter)" name="GridResolution"/> +<floater name="build options floater" title="RASTER-OPTIONEN"> + <spinner label="Raster-Einheiten (Meter)" name="GridResolution"/> <spinner label="Rastergröße (Meter)" name="GridDrawSize"/> - <check_box label="An Untereinheiten ausrichten" name="GridSubUnit"/> - <check_box label="Querschnitte anzeigen" name="GridCrossSection"/> - <text name="grid_opacity_label" tool_tip="Rasterdeckkraft"> + <check_box label="Einrasten von Untereinheiten aktivieren" name="GridSubUnit"/> + <check_box label="Überschneidungen anzeigen" name="GridCrossSection"/> + <text name="grid_opacity_label" tool_tip="Raster-Deckkraft"> Deckkraft: </text> <slider label="Rasterdeckkraft" name="GridOpacity"/> diff --git a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml index 6c0574dee4..a434b3a2fa 100644 --- a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="Inhalt-Berechtigungen bearbeiten"> +<floater name="floaterbulkperms" title="INHALTS-BERECHTIGUNGEN BEARBEITEN"> <floater.string name="nothing_to_modify_text"> Auswahl enthält keinen Inhalt, der bearbeitet werden kann. </floater.string> @@ -29,6 +29,7 @@ <check_box label="Sounds" name="check_sound"/> <icon name="icon_sound" tool_tip="Sounds"/> <check_box label="Texturen" name="check_texture"/> + <icon name="icon_texture" tool_tip="Texturen"/> <button label="√ Alle" label_selected="Alle" name="check_all"/> <button label="Löschen" label_selected="Keine" name="check_none"/> <text name="newperms"> @@ -37,12 +38,12 @@ <text name="GroupLabel"> Gruppe: </text> - <check_box label="Freigeben" name="share_with_group"/> + <check_box label="Teilen" name="share_with_group"/> <text name="AnyoneLabel"> Jeder: </text> <check_box label="Kopieren" name="everyone_copy"/> - <text name="NextOwnerLabel"> + <text name="NextOwnerLabel" top="160" left="10" width="200"> Nächster Eigentümer: </text> <check_box label="Bearbeiten" name="next_owner_modify"/> diff --git a/indra/newview/skins/default/xui/de/floater_bumps.xml b/indra/newview/skins/default/xui/de/floater_bumps.xml index b7909bf02d..dafca44fa3 100644 --- a/indra/newview/skins/default/xui/de/floater_bumps.xml +++ b/indra/newview/skins/default/xui/de/floater_bumps.xml @@ -1,21 +1,24 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_bumps" title="REMPLER, STÖßE UND SCHLÄGE"> - <text name="none_detected"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_bumps" title="REMPLER, STÖSSE & SCHLÄGE"> + <floater.string name="none_detected"> Nicht erkannt - </text> - <text name="bump"> + </floater.string> + <floater.string name="bump"> [TIME] [FIRST] [LAST] hat Sie gestoßen - </text> - <text name="llpushobject"> + </floater.string> + <floater.string name="llpushobject"> [TIME] [FIRST] [LAST] hat Sie mit einem Skript gestoßen - </text> - <text name="selected_object_collide"> + </floater.string> + <floater.string name="selected_object_collide"> [TIME] [FIRST] [LAST] hat Sie mit einem Objekt getroffen - </text> - <text name="scripted_object_collide"> + </floater.string> + <floater.string name="scripted_object_collide"> [TIME] [FIRST] [LAST] hat Sie mit einem Skript-Objekt getroffen - </text> - <text name="physical_object_collide"> + </floater.string> + <floater.string name="physical_object_collide"> [TIME] [FIRST] [LAST] hat Sie mit einem physischen Objekt getroffen - </text> + </floater.string> + <floater.string name="timeStr"> + [[hour,datetime,slt]:[min,datetime,slt]] + </floater.string> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_buy_contents.xml b/indra/newview/skins/default/xui/de/floater_buy_contents.xml index 47ea6a1bd4..ccafa11cf4 100644 --- a/indra/newview/skins/default/xui/de/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_contents.xml @@ -1,14 +1,14 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_buy_contents" title="INHALTE KAUFEN" min_width="300"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater min_width="300" name="floater_buy_contents" title="INHALT KAUFEN"> <text name="contains_text"> [NAME] enthält: </text> <text name="buy_text"> [AMOUNT] L$ von [NAME] kaufen? </text> - <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn" width="73" /> - <button label="Kaufen" label_selected="Kaufen" name="buy_btn" /> - <check_box label="Kleidung jetzt anziehen" name="wear_check" /> + <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn" width="73"/> + <button label="Kaufen" label_selected="Kaufen" name="buy_btn"/> + <check_box label="Kleidung jetzt anziehen" name="wear_check"/> <text name="no_copy_text"> (kein Kopieren) </text> 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 56b7868c33..72959c7a0c 100644 --- a/indra/newview/skins/default/xui/de/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_currency.xml @@ -1,68 +1,67 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="buy currency" title="GELD KAUFEN"> - <text name="info_buying"> - Kaufe Geld: - </text> - <text name="info_cannot_buy"> - Kaufen jetzt nicht möglich: - </text> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="buy currency" title="L$ kaufen"> + <floater.string name="buy_currency"> + [LINDENS] L$ für ca. [LOCALAMOUNT] kaufen + </floater.string> <text name="info_need_more"> - Sie brauchen mehr Geld: + Sie brauchen mehr Geld </text> - <text name="error_message"> - Irgendetwas stimmt nicht. - </text> - <button label="Gehe zu Website" name="error_web" /> <text name="contacting"> LindeX wird kontaktiert... </text> - <text name="buy_action_unknown"> - L$ an der LindeX kaufen + <text name="info_buying"> + L$ kaufen </text> - <text name="buy_action"> - [NAME] L$ [PRICE] + <text name="balance_label"> + Ich habe + </text> + <text name="balance_amount"> + [AMT] L$ </text> <text name="currency_action" width="90"> - L$ kaufen + Ich möchte kaufen + </text> + <text name="currency_label"> + L$ </text> - <line_editor left_delta="55" name="currency_amt"> + <line_editor label="L$" left_delta="55" name="currency_amt"> 1234 </line_editor> + <text name="buying_label"> + Zum Preis von + </text> <text name="currency_est"> - für ca. [LOCALAMOUNT] + ca. [LOCALAMOUNT] </text> <text name="getting_data"> - Daten werden geladen... - </text> - <text name="balance_label"> - Sie haben zurzeit + Schätzung erfolgt... </text> - <text name="balance_amount"> - [AMT] L$ - </text> - <text name="buying_label"> - Sie kaufen - </text> - <text name="buying_amount"> - [AMT] L$ + <text name="buy_action"> + [NAME] L$ [PRICE] </text> <text name="total_label"> - Ihr neuer Kontostand: + Mein neuer Kontostand wird sein </text> <text name="total_amount"> [AMT] L$ </text> + <text name="currency_links"> + [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. + </text> <text name="purchase_warning_repurchase"> - Dieser Einkauf betrifft ausschließlich Geld. -Wiederholen Sie den Vorgang. + Nach Bestätigung dieses Kaufs werden nur L$ gekauft, nicht das Objekt. </text> <text name="purchase_warning_notenough"> - Sie kaufen nicht genügend Geld. -Kaufen Sie mehr. + Sie kaufen nicht genügend L$. Bitte erhöhen Sie den Betrag. </text> - <button label="Kaufen" name="buy_btn" /> - <button label="Abbrechen" name="cancel_btn" /> - <text name="buy_currency"> - [LINDENS] L$ für ca. [LOCALAMOUNT] kaufen + <button label="Jetzt kaufen" name="buy_btn"/> + <button label="Abbrechen" name="cancel_btn"/> + <text name="info_cannot_buy" left="160" width="200" height="40"> + Kauf nicht +möglich </text> + <button label="Weiter zum Internet" name="error_web"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_buy_land.xml b/indra/newview/skins/default/xui/de/floater_buy_land.xml index 72a35db78c..7426e97d9e 100644 --- a/indra/newview/skins/default/xui/de/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_land.xml @@ -1,43 +1,170 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="buy land" title="LAND KAUFEN"> + <floater.string name="can_resell"> + Verkauf möglich. + </floater.string> + <floater.string name="can_not_resell"> + Verkauf nicht möglich. + </floater.string> + <floater.string name="can_change"> + Zusammenlegen/unterteilen möglich. + </floater.string> + <floater.string name="can_not_change"> + Zusammenlegen/unterteilen nicht möglich. + </floater.string> + <floater.string name="cant_buy_for_group"> + Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen. + </floater.string> + <floater.string name="no_land_selected"> + Kein Land ausgewählt. + </floater.string> + <floater.string name="multiple_parcels_selected"> + Mehrere unterschiedliche Parzellen ausgewählt. +Verkleinern Sie Ihre Auswahl. + </floater.string> + <floater.string name="no_permission"> + Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen. + </floater.string> + <floater.string name="parcel_not_for_sale"> + Die ausgewählte Parzelle steht nicht zum Verkauf. + </floater.string> + <floater.string name="group_already_owns"> + Die Parzelle befindet sich bereits in Gruppenbesitz. + </floater.string> + <floater.string name="you_already_own"> + Die Parzelle gehört Ihnen bereits. + </floater.string> + <floater.string name="set_to_sell_to_other"> + Die ausgewählte Parzelle steht zum Verkauf an Dritte. + </floater.string> + <floater.string name="no_public_land"> + Das ausgewählte Land beinhaltet kein öffentliches Land. + </floater.string> + <floater.string name="not_owned_by_you"> + Sie haben Land ausgewählt, das einer anderen Person gehört. +Verkleinern Sie Ihre Auswahl. + </floater.string> + <floater.string name="processing"> + Kauf wird abgewickelt... + +(Dies kann 1 bis 2 Minuten dauern.) + </floater.string> + <floater.string name="fetching_error"> + Fehler bei Abfrage der Landkauf-Informationen. + </floater.string> + <floater.string name="buying_will"> + Bei Landkauf: + </floater.string> + <floater.string name="buying_for_group"> + Landkauf für Gruppe: + </floater.string> + <floater.string name="cannot_buy_now"> + Kaufen jetzt nicht möglich: + </floater.string> + <floater.string name="not_for_sale"> + Nicht zu verkaufen: + </floater.string> + <floater.string name="none_needed"> + nicht benötigt + </floater.string> + <floater.string name="must_upgrade"> + Sie müssen Ihr Konto upgraden, um Land kaufen zu können. + </floater.string> + <floater.string name="cant_own_land"> + Mit Ihrem Konto können Sie Land kaufen. + </floater.string> + <floater.string name="land_holdings"> + Sie besitzen [BUYER] m² Land. + </floater.string> + <floater.string name="pay_to_for_land"> + [SELLER] [AMOUNT] L$ für das Land bezahlen + </floater.string> + <floater.string name="buy_for_US"> + Kaufen Sie [AMOUNT] L$ für ca. [LOCAL_AMOUNT], + </floater.string> + <floater.string name="parcel_meters"> + Diese Parzelle ist [AMOUNT] m². + </floater.string> + <floater.string name="premium_land"> + Dieses Land ist eine Premium-Immobilie. Es wird mit [AMOUNT] m² angesetzt. + </floater.string> + <floater.string name="discounted_land"> + Dieses Land ist im Angebot. Es wird mit [AMOUNT] m² angesetzt. + </floater.string> + <floater.string name="meters_supports_object"> + [AMOUNT] m² +unterstützt [AMOUNT2] Objekte + </floater.string> + <floater.string name="sold_with_objects"> + mit Objekten verkauft + </floater.string> + <floater.string name="sold_without_objects"> + Objekte nicht im Verkauf mit eingeschlossen + </floater.string> + <floater.string name="info_price_string"> + [PRICE] L$ +([PRICE_PER_SQM] L$/m²) +[SOLD_WITH_OBJECTS] + </floater.string> + <floater.string name="insufficient_land_credits"> + Die Gruppe [GROUP] benötigt ausreichende gespendete Landnutzungsrechte, um die Parzelle abzudecken, bevor der Kauf abgeschlossen werden kann. + </floater.string> + <floater.string name="have_enough_lindens"> + Sie haben [AMOUNT] L$, genug zum Kauf dieses Landes. + </floater.string> + <floater.string name="not_enough_lindens"> + Sie haben nur [AMOUNT] L$, brauchen aber mindestens [AMOUNT2] L$. + </floater.string> + <floater.string name="balance_left"> + Nach dem Einkauf verbleiben Ihnen noch [AMOUNT] L$. + </floater.string> + <floater.string name="balance_needed"> + Für dieses Land müssen Sie mindestens [AMOUNT] L$ kaufen. + </floater.string> + <floater.string name="no_parcel_selected"> + (keine Parzelle ausgewählt) + </floater.string> + <floater.string name="icon_PG" value="Parcel_PG_Dark"/> + <floater.string name="icon_M" value="Parcel_M_Dark"/> + <floater.string name="icon_R" value="Parcel_R_Dark"/> <text name="region_name_label"> Region: </text> - <text left="580" name="region_name_text"> + <text left="680" left_delta="140" name="region_name_text"> (unbekannt) </text> <text name="region_type_label"> Typ: </text> - <text left="580" name="region_type_text"> + <text left="680" left_delta="140" name="region_type_text"> (unbekannt) </text> <text name="estate_name_label"> Grundstück: </text> - <text left="580" name="estate_name_text"> + <text left="680" left_delta="140" name="estate_name_text"> (unbekannt) </text> <text name="estate_owner_label" right="600" width="200"> Grundstückseigentümer: </text> - <text left="580" name="estate_owner_text"> + <text left="680" left_delta="140" name="estate_owner_text"> (unbekannt) </text> - <text name="resellable_changeable_label"> + <text left="410" name="resellable_changeable_label"> Gekauftes Land in dieser Region: </text> - <text name="resellable_clause"> + <text left="410" name="resellable_clause"> Wiederverkauf möglich oder nicht möglich. </text> - <text name="changeable_clause"> + <text left="410" name="changeable_clause"> Darft oder darf nicht zusammengelegt/unterteilt werden. </text> - <text name="covenant_text"> + <text left="410" name="covenant_text"> Sie müssen dem Grundstücksvertrag zustimmen: </text> <text left="470" name="covenant_timestamp_text"/> - <text_editor name="covenant_editor"> + <text_editor left="470" name="covenant_editor"> Wird geladen... </text_editor> <check_box label="Ich stimme dem obigen Vertrag zu." name="agree_covenant"/> @@ -51,14 +178,14 @@ Größe: </text> <text name="info_size"> - 1024 qm. + 1.024 m² </text> <text name="info_price_label"> Preis: </text> <text name="info_price"> 1500 L$ -(L$ 1,1 L$/qm) +(1,1 L$/m²) Objekte im Verkauf eingeschlossen </text> <text name="info_action"> @@ -67,7 +194,7 @@ Objekte im Verkauf eingeschlossen <text name="error_message"> Irgendetwas stimmt nicht. </text> - <button label="Gehe zu Website" name="error_web"/> + <button label="Gehe zu Website" name="error_web" top_delta="136"/> <text name="account_action"> Macht Sie zum Premium-Mitglied. </text> @@ -75,16 +202,17 @@ Objekte im Verkauf eingeschlossen Landbesitz ist Premium-Mitgliedern vorbehalten. </text> <combo_box name="account_level"> - <combo_box.item name="US$9.95/month,billedmonthly" label="9,95 US$/Monat, monatliche Abrechnung" /> - <combo_box.item name="US$7.50/month,billedquarterly" label="7,50 US$/Monat, vierteljährliche Abrechnung" /> - <combo_box.item name="US$6.00/month,billedannually" label="6,00 US$/Monat, jährliche Abrechnung" /> + <combo_box.item label="9,95 US$/Monat, monatliche Abrechnung" name="US$9.95/month,billedmonthly"/> + <combo_box.item label="7,50 US$/Monat, vierteljährliche Abrechnung" name="US$7.50/month,billedquarterly"/> + <combo_box.item label="6,00 US$/Monat, jährliche Abrechnung" name="US$6.00/month,billedannually"/> </combo_box> - <text name="land_use_action"> - Erhöhen Sie Ihre monatlichen Landnutzungsgebühren auf 40 US$/month. + <text height="36" name="land_use_action" top="270"> + Erhöhen Sie Ihre monatlichen Landnutzungsgebühren +auf 40 US$/month. </text> <text name="land_use_reason"> - Sie besitzen 1309 qm Land. -Diese Parzelle ist 512 qm groß. + Sie besitzen 1309 m² Land. +Diese Parzelle ist 512 m² gross. </text> <text name="purchase_action"> Joe Resident 4000 L$ für das Land bezahlen @@ -99,139 +227,12 @@ Diese Parzelle ist 512 qm groß. 1000 </line_editor> <text name="currency_est"> - für ca. [AMOUNT2] US$ + für ca. [LOCAL_AMOUNT] </text> <text name="currency_balance"> Sie haben 2.100 L$. </text> - <check_box label="[AMOUNT] Quadratmeter des Beitrags von Gruppe nehmen." name="remove_contribution"/> + <check_box label="[AMOUNT] m² Beitrag von der Gruppe entfernen." name="remove_contribution"/> <button label="Kaufen" name="buy_btn"/> <button label="Abbrechen" name="cancel_btn"/> - <string name="can_resell"> - Verkauf möglich. - </string> - <string name="can_not_resell"> - Verkauf nicht möglich. - </string> - <string name="can_change"> - Zusammenlegen/unterteilen möglich. - </string> - <string name="can_not_change"> - Zusammenlegen/unterteilen nicht möglich. - </string> - <string name="cant_buy_for_group"> - Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen. - </string> - <string name="no_land_selected"> - Kein Land ausgewählt. - </string> - <string name="multiple_parcels_selected"> - Mehrere unterschiedliche Parzellen ausgewählt. -Verkleinern Sie Ihre Auswahl. - </string> - <string name="no_permission"> - Sie sind nicht berechtigt, Land für die aktive Gruppe zu kaufen. - </string> - <string name="parcel_not_for_sale"> - Die ausgewählte Parzelle steht nicht zum Verkauf. - </string> - <string name="group_already_owns"> - Die Parzelle befindet sich bereits in Gruppenbesitz. - </string> - <string name="you_already_own"> - Die Parzelle gehört Ihnen bereits. - </string> - <string name="set_to_sell_to_other"> - Die ausgewählte Parzelle steht zum Verkauf an Dritte. - </string> - <string name="no_public_land"> - Das ausgewählte Land beinhaltet kein öffentliches Land. - </string> - <string name="not_owned_by_you"> - Sie haben Land ausgewählt, das einer anderen Person gehört. -Verkleinern Sie Ihre Auswahl. - </string> - <string name="processing"> - Kauf wird abgewickelt... - -(Dies kann 1 bis 2 Minuten dauern.) - </string> - <string name="fetching_error"> - Fehler bei Abfrage der Landkauf-Informationen. - </string> - <string name="buying_will"> - Bei Landkauf: - </string> - <string name="buying_for_group"> - Landkauf für Gruppe: - </string> - <string name="cannot_buy_now"> - Kaufen jetzt nicht möglich: - </string> - <string name="not_for_sale"> - Nicht zu verkaufen: - </string> - <string name="none_needed"> - nicht benötigt - </string> - <string name="must_upgrade"> - Sie müssen Ihr Konto upgraden, um Land kaufen zu können. - </string> - <string name="cant_own_land"> - Mit Ihrem Konto können Sie Land kaufen. - </string> - <string name="land_holdings"> - Sie besitzen [BUYER] qm Land. - </string> - <string name="pay_to_for_land"> - [SELLER] [AMOUNT] L$ für das Land bezahlen - </string> - <string name="buy_for_US"> - [AMOUNT] L$ für circa [AMOUNT2] US$ kaufen, - </string> - <string name="parcel_meters"> - Diese Parzelle ist [AMOUNT] qm groß. - </string> - <string name="premium_land"> - Dieses Land ist eine Premium-Immobilie. Es wird mit [AMOUNT] qm angesetzt. - </string> - <string name="discounted_land"> - Dieses Land ist im Angebot. Es wird mit [AMOUNT] qm angesetzt. - </string> - <string name="meters_supports_object"> - [AMOUNT] qm. -unterstützt [AMOUNT2] Objekte - </string> - <string name="sold_with_objects"> - mit Objekten verkauft - </string> - <string name="sold_without_objects"> - Objekte nicht im Verkauf mit eingeschlossen - </string> - <string name="info_price_string"> - [PRICE] L$ -([PRICE_PER_SQM] L$/qm) -[SOLD_WITH_OBJECTS] - </string> - <string name="insufficient_land_credits"> - Die Gruppe [GROUP] benötigt ausreichende gespendete Landnutzungsrechte, um die Parzelle abzudecken, bevor der Kauf abgeschlossen werden kann. - </string> - <string name="have_enough_lindens"> - Sie haben [AMOUNT] L$, genug zum Kauf dieses Landes. - </string> - <string name="not_enough_lindens"> - Sie haben nur [AMOUNT] L$, brauchen aber mindestens [AMOUNT2] L$. - </string> - <string name="balance_left"> - Nach dem Einkauf verbleiben Ihnen noch [AMOUNT] L$. - </string> - <string name="balance_needed"> - Für dieses Land müssen Sie mindestens [AMOUNT] L$ kaufen. - </string> - <string name="no_parcel_selected"> - (keine Parzelle ausgewählt) - </string> - <string name="buy_currency"> - [LINDENS] L$ für ca. [USD] US$ kaufen - </string> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_buy_object.xml b/indra/newview/skins/default/xui/de/floater_buy_object.xml index e35212915f..b23163b4a3 100644 --- a/indra/newview/skins/default/xui/de/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/de/floater_buy_object.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="contents" title="OBJEKTKOPIE KAUFEN"> +<floater name="contents" title="KOPIE DES OBJEKTES KAUFEN"> <text name="contents_text"> Inhalt: </text> diff --git a/indra/newview/skins/default/xui/de/floater_camera.xml b/indra/newview/skins/default/xui/de/floater_camera.xml index 131f077815..b8616ea128 100644 --- a/indra/newview/skins/default/xui/de/floater_camera.xml +++ b/indra/newview/skins/default/xui/de/floater_camera.xml @@ -11,8 +11,16 @@ </floater.string> <panel name="controls"> <joystick_track name="cam_track_stick" tool_tip="Kamera nach oben, unten, links und rechts bewegen"/> - <joystick_zoom name="zoom" tool_tip="Kamera auf Fokus zoomen"/> - <joystick_rotate name="cam_rotate_stick" tool_tip="Kamera um Fokus herum kreisen"/> + <panel name="zoom" tool_tip="Kamera auf Fokus zoomen"> + <slider_bar name="zoom_slider" tool_tip="Kamera auf Fokus zoomen"/> + </panel> + <joystick_rotate name="cam_rotate_stick" tool_tip="Kamera um Fokus kreisen"/> + <panel name="camera_presets"> + <button name="rear_view" tool_tip="Hinteransicht"/> + <button name="group_view" tool_tip="Gruppen-Ansicht"/> + <button name="front_view" tool_tip="Vorderansicht"/> + <button name="mouselook_view" tool_tip="Mouselook"/> + </panel> </panel> <panel name="buttons"> <button label="" name="orbit_btn" tool_tip="Kamera kreisen"/> diff --git a/indra/newview/skins/default/xui/de/floater_choose_group.xml b/indra/newview/skins/default/xui/de/floater_choose_group.xml index 398645347b..3d76b645fe 100644 --- a/indra/newview/skins/default/xui/de/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/de/floater_choose_group.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="groups" title="GRUPPEN"> <text name="groupdesc"> Gruppe wählen: </text> - <button label="OK" label_selected="OK" name="OK" /> - <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" /> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> </floater> 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 9221d1bcf7..aed4bacb30 100644 --- a/indra/newview/skins/default/xui/de/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/de/floater_color_picker.xml @@ -21,12 +21,11 @@ <check_box label="Jetzt übernehmen" name="apply_immediate"/> <button label="" label_selected="" name="color_pipette"/> <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn"/> - <button label="OK" label_selected="Auswählen" name="select_btn"/> + <button label="OK" label_selected="OK" name="select_btn"/> <text name="Current color:"> Aktuelle Farbe: </text> <text name="(Drag below to save.)"> - (Nach unten ziehen, - um zu speichern) + (Nach unten ziehen) </text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_customize.xml b/indra/newview/skins/default/xui/de/floater_customize.xml index f1ecd21c01..cf7b208c1a 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 name="radio" label="Weiblich"/> - <radio_item name="radio2" label="Männlich"/> + <radio_item label="Weiblich" name="radio" value="0"/> + <radio_item label="Männlich" name="radio2" value="1"/> </radio_group> <text name="title"> [DESC] @@ -33,24 +35,22 @@ 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. </text> - <text name="Item Action Label" right="100"> + <text name="Item Action Label"> Form: </text> <button label="Neue Form/Gestalt" label_selected="Neue Form/Gestalt" name="Create New"/> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> - <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> + <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" name="Save"/> + <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." name="Save As"/> </panel> <panel label="Haut" name="Skin"> <button label="Hautfarbe" label_selected="Hautfarbe" left="2" name="Skin Color" width="92"/> <button label="Gesichtsdetails" label_selected="Gesichtsdetails" left="2" name="Face Detail" width="92"/> - <button label="Make-Uup" label_selected="Make-Uup" left="2" name="Makeup" width="92"/> + <button label="Make-Up" label_selected="Make-Up" left="2" name="Makeup" width="92"/> <button label="Körperdetails" label_selected="Körperdetails" left="2" name="Body Detail" width="92"/> <text name="title"> [DESC] @@ -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,12 +150,14 @@ 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> - <panel 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"/> - <button label="Neues Hemd" label_selected="Neues Hemd" name="Create New"/> <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> + <button label="Neues Hemd" label_selected="Neues Hemd" name="Create New"/> <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> <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"/> @@ -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. @@ -195,8 +189,8 @@ und dieses anziehen. <panel label="Hose" name="Pants"> <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"/> - <button label="Neue Hose" label_selected="Neue Hose" name="Create New"/> <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> + <button label="Neue Hose" label_selected="Neue Hose" name="Create New"/> <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> <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"/> @@ -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,10 +236,9 @@ 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> + <button label="Neue Schuhe" label_selected="Neue Schuhe" name="Create New"/> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> @@ -256,7 +247,6 @@ und diese anziehen. </text> <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"/> - <button label="Neue Schuhe" label_selected="Neue Schuhe" name="Create New"/> <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> @@ -279,10 +269,9 @@ 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> + <button label="Neue Socken" label_selected="Neue Socken" name="Create New"/> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> @@ -291,7 +280,6 @@ und diese anziehen. </text> <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"/> - <button label="Neue Socken" label_selected="Neue Socken" name="Create New"/> <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> @@ -314,10 +302,9 @@ 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> + <button label="Neue Jacke" label_selected="Neue Jacke" name="Create New"/> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> @@ -327,7 +314,6 @@ und diese anziehen. <texture_picker label="Oberstoff" name="Upper Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> <texture_picker label="Unterstoff" name="Lower 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"/> - <button label="Neue Jacke" label_selected="Neue Jacke" name="Create New"/> <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> @@ -350,10 +336,9 @@ 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> + <button label="Neue Handschuhe" label_selected="Neue Handschuhe" name="Create New"/> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> @@ -362,7 +347,6 @@ und diese anziehen. </text> <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"/> - <button label="Neue Handschuhe" label_selected="Neue Handschuhe" name="Create New"/> <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> @@ -385,10 +369,9 @@ 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> + <button label="Neues Unterhemd" label_selected="Neues Unterhemd" name="Create New"/> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> @@ -397,7 +380,6 @@ und dieses anziehen. </text> <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"/> - <button label="Neues Unterhemd" label_selected="Neues Unterhemd" name="Create New"/> <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> @@ -420,10 +402,9 @@ 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> + <button label="Neue Unterhose" label_selected="Neue Unterhose" name="Create New"/> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> @@ -432,7 +413,6 @@ und diese anziehen. </text> <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"/> - <button label="Neue Unterhose" label_selected="Neue Unterhose" name="Create New"/> <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." left="194" name="Save As" width="105"/> @@ -455,10 +435,9 @@ 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> + <button label="Neuer Rock" label_selected="Neuer Rock" name="Create New"/> <text name="no modify instructions"> Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. </text> @@ -467,14 +446,84 @@ und diesen anziehen. </text> <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"/> - <button label="Neuer Rock" label_selected="Neuer Rock" name="Create New"/> <button font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" left="107" name="Save"/> <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> + <panel label="Tätowierung" name="Tattoo"> + <text name="title"> + [BESCHR] + </text> + <text name="title_no_modify"> + [BESCHR]: bearbeiten nicht möglich + </text> + <text name="title_loading"> + [BESCHR]: wird geladen... + </text> + <text name="title_not_worn"> + [BESCHR]: nicht getragen + </text> + <text name="path"> + 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. + </text> + <button label="Neue Tätowierung erstellen" label_selected="Neue Tätowierung erstellen" name="Create New"/> + <text name="no modify instructions"> + Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. + </text> + <text name="Item Action Label"> + Tätowierung: + </text> + <texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <button label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> + <button label="Speichern" label_selected="Speichern" name="Save"/> + <button label="Speichern unter..." label_selected="Speichern unter..." name="Save As"/> + <button label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> + </panel> + <panel label="Alpha" name="Alpha"> + <text name="title"> + [BESCHR] + </text> + <text name="title_no_modify"> + [BESCHR]: bearbeiten nicht möglich + </text> + <text name="title_loading"> + [BESCHR]: wird geladen... + </text> + <text name="title_not_worn"> + [BESCHR]: nicht getragen + </text> + <text name="path"> + 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. + </text> + <button label="Neue Alpha erstellen" label_selected="Neue Alpha erstellen" name="Create New"/> + <text name="no modify instructions"> + Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. + </text> + <text name="Item Action Label"> + Alpha: + </text> + <texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Kopf: Alpha" name="Head Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <button label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> + <button label="Speichern" label_selected="Speichern" name="Save"/> + <button label="Speichern unter..." label_selected="Speichern unter..." name="Save As"/> + <button label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> + </panel> </tab_container> + <button label="Skriptinfo" label_selected="Skriptinfo" name="script_info" tool_tip="Skripts, die an Ihren Avatar angehängt sind, anzeigen"/> + <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"/> - <button label="Outfit erstellen..." label_selected="Outfit erstellen..." name="Make Outfit" width="115"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml index 7f4dc4a79e..9baf30fb53 100644 --- a/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml @@ -66,7 +66,7 @@ Key-Zeit: </text> <spinner label="Std." name="WLCurKeyHour" /> - <spinner label="Min." name="WLCurKeyMin" /> + <spinner label="Min." name="WLCurKeyMin" label_width="100" width="66"/> <text name="WLCurKeyTimeText2"> Key-Voreinstellung: </text> @@ -79,8 +79,8 @@ Zykluslänge: </text> <spinner label="Std." name="WLLengthOfDayHour" /> - <spinner label="Min." name="WLLengthOfDayMin" /> - <spinner label="Sek." name="WLLengthOfDaySec" /> + <spinner label="Min." name="WLLengthOfDayMin" label_width="100" width="66"/> + <spinner label="Sek." name="WLLengthOfDaySec" label_width="100" width="66"/> <text name="DayCycleText3"> Vorschau: </text> diff --git a/indra/newview/skins/default/xui/de/floater_device_settings.xml b/indra/newview/skins/default/xui/de/floater_device_settings.xml index 9108f3c2e5..3d7e9c96c1 100644 --- a/indra/newview/skins/default/xui/de/floater_device_settings.xml +++ b/indra/newview/skins/default/xui/de/floater_device_settings.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_device_settings" title="GERÄTE-EINSTELLUNGEN FÜR VOICE-CHAT" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_device_settings" title="EINSTELLUNGEN FÜR VOICE-CHAT"/> diff --git a/indra/newview/skins/default/xui/de/floater_env_settings.xml b/indra/newview/skins/default/xui/de/floater_env_settings.xml index c9afcc8471..0f2370771f 100644 --- a/indra/newview/skins/default/xui/de/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/de/floater_env_settings.xml @@ -1,5 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Environment Editor Floater" title="UMWELT-EDITOR"> + <floater.string name="timeStr"> + [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc] + </floater.string> <text name="EnvTimeText"> Tageszeit </text> @@ -12,13 +15,12 @@ <text name="EnvWaterColorText"> Wasserfarbe </text> - <color_swatch name="EnvWaterColor" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen" /> + <color_swatch name="EnvWaterColor" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> <text name="EnvWaterFogText"> Wasser- trübung </text> - <button label="Grundstückszeit verw." name="EnvUseEstateTimeButton" /> - <button label="Himmel (erweitert)" name="EnvAdvancedSkyButton" /> - <button label="Wasser (erweitert)" name="EnvAdvancedWaterButton" /> - <button label=" ?" name="EnvSettingsHelpButton" /> + <button label="Grundstückszeit verw." name="EnvUseEstateTimeButton"/> + <button label="Himmel (erweitert)" name="EnvAdvancedSkyButton"/> + <button label="Wasser (erweitert)" name="EnvAdvancedWaterButton"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_event.xml b/indra/newview/skins/default/xui/de/floater_event.xml new file mode 100644 index 0000000000..a41ac521a3 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_event.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater label="Event" name="Event" title="EVENT-DETAILS"> + <floater.string name="none"> + keines + </floater.string> + <floater.string name="notify"> + Benachrichtigen + </floater.string> + <floater.string name="dont_notify"> + Nicht benachrichtigen + </floater.string> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <text name="event_name"> + Namenloses Event....namenlos! Tadaaa! Tadatadaaaah! + </text> + <text name="event_category"> + (keine Kategorie) + </text> + <text name="event_runby_label"> + Ausgeführt von: + </text> + <text initial_value="(wird in Datenbank gesucht)" name="event_runby"/> + <text name="event_date"> + 10/10/2010 + </text> + <text name="event_duration"> + 1 Stunde + </text> + <text name="event_cover"> + Kostenlos + </text> + <text name="event_location_label"> + Standort: + </text> + <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/> + <text name="rating_label" value="Einstufung:"/> + <text name="rating_value" value="unbekannt"/> + </layout_panel> + <layout_panel name="button_panel"> + <button name="create_event_btn" tool_tip="Event erstellen"/> + <button name="god_delete_event_btn" tool_tip="Event löschen"/> + <button label="Mich benachrichtigen" name="notify_btn"/> + <button label="Teleportieren" name="teleport_btn"/> + <button label="Karte" name="map_btn"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_first_time_tip.xml b/indra/newview/skins/default/xui/de/floater_first_time_tip.xml new file mode 100644 index 0000000000..9546cc2c42 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_first_time_tip.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="set_name_in_the_cladd"> + <check_box label="Turn off Quick Tips" name="DontShowFirstTimeTip_checkbox"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_font_test.xml b/indra/newview/skins/default/xui/de/floater_font_test.xml index 522d966431..29357b8ee0 100644 --- a/indra/newview/skins/default/xui/de/floater_font_test.xml +++ b/indra/newview/skins/default/xui/de/floater_font_test.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="contents" title="SCHRIFTART-TEST"> +<floater name="contents" title="TEST DER SCHRIFTART"> <text name="linea"> OverrideTest, sollte hier als Times angezeigt werden. (Aus default/xui/en-us) </text> diff --git a/indra/newview/skins/default/xui/de/floater_gesture.xml b/indra/newview/skins/default/xui/de/floater_gesture.xml index aff0a9b92d..0b27b362c3 100644 --- a/indra/newview/skins/default/xui/de/floater_gesture.xml +++ b/indra/newview/skins/default/xui/de/floater_gesture.xml @@ -1,17 +1,27 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="gestures" title="AKTIVE GESTEN"> - <text name="help_label"> - Doppelklicken Sie auf eine Geste, um Animationen und Sound abzuspielen. - </text> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater label="Orte" name="gestures" title="GESTEN"> + <floater.string name="loading"> + Wird geladen... + </floater.string> + <floater.string name="playing"> + (Wird abgespielt) + </floater.string> + <floater.string name="copy_name"> + Kopie von [COPY_NAME] + </floater.string> <scroll_list bottom_delta="-385" height="360" name="gesture_list"> - <column label="Trigger" name="trigger" /> - <column label="Key" name="shortcut" /> - <column label="" name="key" /> - <column label="Name" name="name" /> + <scroll_list.columns label="Name" name="name"/> + <scroll_list.columns label="Chat" name="trigger"/> + <scroll_list.columns label="" name="key"/> + <scroll_list.columns label="Key" name="shortcut"/> </scroll_list> - <button label="Neu" name="new_gesture_btn" /> - <button label="Inventar" name="inventory_btn" /> - <button label="Bearbeiten" name="edit_btn" /> - <button label="Abspielen" name="play_btn" /> - <button label="Stopp" name="stop_btn" /> + <panel label="bottom_panel" name="bottom_panel"> + <menu_button name="gear_btn" tool_tip="Mehr Möglichkeiten"/> + <button name="new_gesture_btn" tool_tip="Neue Geste erstellen"/> + <button name="activate_btn" tool_tip="Ausgewählte Geste aktivieren/deaktivieren"/> + <button name="del_btn" tool_tip="Diese Geste löschen"/> + </panel> + <button label="Bearbeiten" name="edit_btn"/> + <button label="Abspielen" name="play_btn"/> + <button label="Stopp" name="stop_btn"/> </floater> 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 e790420efb..2bb123ad51 100644 --- a/indra/newview/skins/default/xui/de/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_god_tools.xml @@ -7,20 +7,19 @@ </panel> <panel label="Region" name="region"> <text name="Sim Name:" width="55"> - Sim-Name: + Sim: </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 bottom_delta="-32" label="Sichtbar" name="check visible" tool_tip="Diese Region für Nicht-Götter sichtbar machen."/> + <check_box label="Zuhause auf Teleport zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner weg teleportieren, ihr Zuhause auf Zielposition setzen."/> + <check_box 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."/> <check_box label="Terraformen blockieren" name="block terraform" tool_tip="Das Terraformen von Land verbieten (Benutzen Sie dies um Leuten das Terraformen ihres Landes zu verbieten)"/> <check_box label="Sandkasten" name="is sandbox" tool_tip="Sandkastenregion ein-/ausschalten."/> - <button label="Terrain formen" label_selected="Terrain formen" name="Bake Terrain" tool_tip="Das aktuelle Terrain als Standard speichern." width="118"/> - <button label="Terrain zurücksetzen" label_selected="Terrain zurücksetzen" name="Revert Terrain" tool_tip="Das aktuelle Terrain mit dem Standard ersetzen." width="118"/> - <button label="Terrain tauschen" label_selected="Terrain tauschen" name="Swap Terrain" tool_tip="Aktuelles Terrain gegen Standard austauschen." width="118"/> + <button label="Terrain formen" label_selected="Terrain formen" name="Bake Terrain" tool_tip="Das aktuelle Terrain als Standard speichern." width="120"/> + <button label="Terrain zurücksetzen" label_selected="Terrain zurücksetzen" name="Revert Terrain" tool_tip="Das aktuelle Terrain mit dem Standard ersetzen." width="120"/> + <button label="Terrain tauschen" label_selected="Terrain tauschen" name="Swap Terrain" tool_tip="Aktuelles Terrain gegen Standard austauschen." width="120"/> <text name="estate id"> Grundstücks-ID: </text> @@ -33,21 +32,21 @@ zurücksetzen" name="check reset home" tool_tip="Wenn Einwohner wegteleportieren </text> <line_editor left_delta="110" name="gridposx" tool_tip="Die X-Rasterposition dieser Region" width="35"/> <line_editor left_delta="45" name="gridposy" tool_tip="Die Y-Rasterposition dieser Region" width="35"/> - <text name="Redirect to Grid: "> + <text name="Redirect to Grid: " width="110"> Auf Raster umleiten: </text> - <line_editor left_delta="110" name="redirectx" width="35"/> - <line_editor left_delta="45" name="redirecty" width="35"/> + <line_editor left_delta="110" name="redirectx" width="35" left_pad="0"/> + <line_editor left_delta="45" name="redirecty" width="35" /> <text font="SansSerifSmall" name="billable factor text"> Abrechnungsfaktor: </text> <text name="land cost text"> - L$ pro qm: + L$ pro m²: </text> <button label="Aktualisieren" label_selected="Aktualisieren" name="Refresh" tool_tip="Klicken Sie hier, um die obigen Informationen zu aktualisieren."/> <button label="Übernehmen" label_selected="Übernehmen" name="Apply" tool_tip="Klicken Sie hier, um die obigen Änderungen zu übernehmen."/> - <button label="Region auswählen" label_selected="Region auswählen" left="136" name="Select Region" tool_tip="Die gesamte Region mit dem Landwerkzeug auswählen." width="130"/> - <button label="Automatisch speichern" label_selected="Automatisch speichern" left="136" name="Autosave now" tool_tip="gzipped-Status im Autosave-Verzeichnis speichern." width="130"/> + <button label="Region auswählen" label_selected="Region auswählen" left="136" name="Select Region" tool_tip="Die gesamte Region mit dem Landwerkzeug auswählen." width="132"/> + <button label="Automatisch speichern" label_selected="Automatisch speichern" left="136" name="Autosave now" tool_tip="gzipped-Status im Autosave-Verzeichnis speichern." width="132"/> </panel> <panel label="Objekte" name="objects"> <panel.string name="no_target"> @@ -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_hardware_settings.xml b/indra/newview/skins/default/xui/de/floater_hardware_settings.xml index 2936688254..d01ea145f1 100644 --- a/indra/newview/skins/default/xui/de/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/de/floater_hardware_settings.xml @@ -21,8 +21,8 @@ <text name="Enable VBO:"> VBO aktivieren: </text> - <check_box label="OpenGL Vertex-Buffer-Objekte aktivieren" name="vbo" tool_tip="Wenn Sie über moderne Grafikhardware verfügen, können Sie durch Aktivieren dieser Option die Geschwindigkeit verbessern. Bei alter Hardware sind die VBO oft schlecht implementiert, was zu Abstürzen führen kann, wenn diese Option aktiviert ist."/> - <slider label="Texturspeicher (MB):" name="GrapicsCardTextureMemory" tool_tip="Speicherplatz, der für Texturen zur Verfügung steht. In der Regel handelt es sich um Grafikkartenspeicher. Ein kleinerer Wert kann die Geschwindigkeit erhöhen, aber auch zu Texturunschärfen führen."/> + <check_box initial_value="true" label="OpenGL Vertex-Buffer-Objekte aktivieren" name="vbo" tool_tip="Wenn Sie über moderne Grafikhardware verfügen, können Sie durch Aktivieren dieser Option die Geschwindigkeit verbessern. Bei alter Hardware sind die VBO oft schlecht implementiert, was zu Abstürzen führen kann, wenn diese Option aktiviert ist."/> + <slider label="Texturspeicher (MB):" name="GraphicsCardTextureMemory" tool_tip="Speicherplatz, der für Texturen zur Verfügung steht. In der Regel handelt es sich um Grafikkartenspeicher. Ein kleinerer Wert kann die Geschwindigkeit erhöhen, aber auch zu Texturunschärfen führen."/> <spinner label="Nebeldistanzverhältnis:" name="fog"/> <button label="OK" label_selected="OK" name="OK"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_help_browser.xml b/indra/newview/skins/default/xui/de/floater_help_browser.xml new file mode 100644 index 0000000000..d55a3b0a26 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_help_browser.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_help_browser" title="HILFE-BROWSER"> + <floater.string name="loading_text"> + Wird geladen... + </floater.string> + <layout_stack name="stack1"> + <layout_panel name="external_controls"/> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_hud.xml b/indra/newview/skins/default/xui/de/floater_hud.xml index 18584e57ca..8a10eccabe 100644 --- a/indra/newview/skins/default/xui/de/floater_hud.xml +++ b/indra/newview/skins/default/xui/de/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="ANLEITUNG"/> diff --git a/indra/newview/skins/default/xui/de/floater_im.xml b/indra/newview/skins/default/xui/de/floater_im.xml index 9b9bbd0c64..6aa35f2900 100644 --- a/indra/newview/skins/default/xui/de/floater_im.xml +++ b/indra/newview/skins/default/xui/de/floater_im.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <multi_floater name="im_floater" title="Instant Message"> <string name="only_user_message"> Sie sind der einzige Benutzer in dieser Sitzung. @@ -10,7 +10,7 @@ Klicken Sie auf [BUTTON NAME], um eine Verbindung zu diesem Voice-Chat herzustellen. </string> <string name="muted_message"> - Sie haben diesen Einwohner stummgeschaltet.Wenn Sie ihm eine Nachricht senden, wird die Stummschaltung automatisch aufgehoben. + Sie haben diesen Einwohner ignoriert. Wenn Sie eine Nachricht senden, wird dieser freigeschaltet. </string> <string name="generic_request_error"> Fehler bei Anfrage, bitte versuchen Sie es später. diff --git a/indra/newview/skins/default/xui/de/floater_im_container.xml b/indra/newview/skins/default/xui/de/floater_im_container.xml new file mode 100644 index 0000000000..95eda97938 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_im_container.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<multi_floater name="floater_im_box" title="GESPRÄCHE"/> diff --git a/indra/newview/skins/default/xui/de/floater_im_session.xml b/indra/newview/skins/default/xui/de/floater_im_session.xml new file mode 100644 index 0000000000..7bde3a3453 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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 Steuerkonsole" name="panel_im_control_panel"/> + <layout_panel> + <line_editor label="Bis" name="chat_editor"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_image_preview.xml b/indra/newview/skins/default/xui/de/floater_image_preview.xml index 7f66234dab..fd675f8808 100644 --- a/indra/newview/skins/default/xui/de/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_image_preview.xml @@ -28,5 +28,5 @@ Speichern Sie das Bild als 24 Bit Targa (.tga). </text> <check_box label="Verlustfreie Komprimierung verwenden" name="lossless_check"/> <button label="Abbrechen" name="cancel_btn"/> - <button label="Hochladen ([AMOUNT] L$)" name="ok_btn"/> + <button label="Hochladen ([AMOUNT] L$)" name="ok_btn" width="146"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_incoming_call.xml b/indra/newview/skins/default/xui/de/floater_incoming_call.xml new file mode 100644 index 0000000000..740085599f --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_incoming_call.xml @@ -0,0 +1,27 @@ +<?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> + <floater.string name="anonymous"> + Anonym + </floater.string> + <floater.string name="VoiceInviteP2P"> + ruft an. + </floater.string> + <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> + <button label="Akzeptieren" label_selected="Akzeptieren" name="Accept"/> + <button label="Ablehnen" label_selected="Ablehnen" name="Reject"/> + <button label="IM starten" name="Start IM"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_inspect.xml b/indra/newview/skins/default/xui/de/floater_inspect.xml index f9421788bd..da97ceb2d8 100644 --- a/indra/newview/skins/default/xui/de/floater_inspect.xml +++ b/indra/newview/skins/default/xui/de/floater_inspect.xml @@ -1,14 +1,14 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="inspect" title="OBJEKT PRÜFEN" min_width="450" > - <scroll_list name="object_list" - tool_tip="Wählen Sie ein Objekt aus dieser Liste, um es in der Second Life-Welt zu markieren"> - <column label="Objektname" name="object_name" /> - <column label="Besitzer" name="owner_name" /> - <column label="Ersteller" name="creator_name" /> - <column label="Erstellungsdatum" name="creation_date" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater min_width="460" name="inspect" title="OBJEKTE UNTERSUCHEN" width="460"> + <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="Wählen Sie ein Objekt aus dieser Liste, um es in der Second Life-Welt zu markieren"> + <scroll_list.columns label="Objektname" name="object_name"/> + <scroll_list.columns label="Besitzer" name="owner_name" /> + <scroll_list.columns label="Ersteller" name="creator_name"/> + <scroll_list.columns label="Erstellungsdatum" name="creation_date" width="116"/> </scroll_list> - <button label="Besitzerprofil einsehen..." name="button owner" - tool_tip="Profil des Besitzers des markierten Objekts einsehen" width="155" /> - <button label="Erstellerprofil einsehen..." name="button creator" - tool_tip="Profil des ursprünglichen Erstellers des markierten Objekts einsehen" width="155" left="175"/> + <button label="Besitzerprofil einsehen..." name="button owner" tool_tip="Profil des Besitzers des markierten Objekts einsehen" width="155"/> + <button label="Erstellerprofil einsehen..." left="175" name="button creator" tool_tip="Profil des ursprünglichen Erstellers des markierten Objekts einsehen" width="155"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_inventory.xml b/indra/newview/skins/default/xui/de/floater_inventory.xml index 6444e87882..d9b7c30fd2 100644 --- a/indra/newview/skins/default/xui/de/floater_inventory.xml +++ b/indra/newview/skins/default/xui/de/floater_inventory.xml @@ -1,47 +1,16 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Inventory" title="INVENTAR"> - <search_editor label="Suchanfrage hier eintippen" 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" /> - </tab_container> - <menu_bar name="Inventory Menu"> - <menu label="Datei" name="File"> - <menu_item_call label="Öffnen" name="Open" /> - <menu_item_call label="Neues Fenster" name="New Window" /> - <menu_item_call label="Filter anzeigen" name="Show Filters" /> - <menu_item_call label="Filter zurücksetzen" name="Reset Current" /> - <menu_item_call label="Alle Ordner schließen" name="Close All Folders" /> - <menu_item_call label="Papierkorb ausleeren" name="Empty Trash" /> - </menu> - <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 Notiz" name="New Note" /> - <menu_item_call label="Neue Geste" name="New Gesture" /> - <menu name="New Clothes"> - <menu_item_call label="Neues Hemd" name="New Shirt" /> - <menu_item_call label="Neue Hose" name="New Pants" /> - <menu_item_call label="Neue Schuhe" name="New Shoes" /> - <menu_item_call label="Neue Socken" name="New Socks" /> - <menu_item_call label="Neue Jacke" name="New Jacket" /> - <menu_item_call label="Neuer Rock" name="New Skirt" /> - <menu_item_call label="Neue Handschuhe" name="New Gloves" /> - <menu_item_call label="Neues Unterhemd" name="New Undershirt" /> - <menu_item_call label="Neue Unterhose" name="New Underpants" /> - </menu> - <menu name="New Body Parts"> - <menu_item_call label="Neue Form/Gestalt" name="New Shape" /> - <menu_item_call label="Neue Haut" name="New Skin" /> - <menu_item_call label="Neues Haar" name="New Hair" /> - <menu_item_call label="Neue Augen" name="New Eyes" /> - </menu> - </menu> - <menu label="Sortieren" name="Sort"> - <menu_item_check label="Nach Name" name="By Name" /> - <menu_item_check label="Nach Datum" name="By Date" /> - <menu_item_check label="Ordner immer nach Name" name="Folders Always By Name" /> - <menu_item_check label="Systemordner nach oben" name="System Folders To Top" /> - </menu> - </menu_bar> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Inventory" title="MEIN INVENTAR"> + <floater.string name="Title"> + MEIN INVENTAR + </floater.string> + <floater.string name="TitleFetching"> + MEIN INVENTAR ([ITEM_COUNT] Objekte werden abgerufen...) [FILTER] + </floater.string> + <floater.string name="TitleCompleted"> + MEIN INVENTAR ([ITEM_COUNT] Objekte) [FILTER] + </floater.string> + <floater.string name="Fetched"> + Abgerufen + </floater.string> + <panel label="Inventar" name="Inventory Panel"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml index 89771a5289..f98e23bbc4 100644 --- a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="item properties" title="INVENTAROBJEKT-EIGENSCHAFTEN"> +<floater name="item properties" title="EIGENSCHAFTEN: INVENTAROBJEKT"> <floater.string name="unknown"> (unbekannt) </floater.string> @@ -12,6 +12,9 @@ <floater.string name="owner_can"> Eigentümer kann: </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"> Name: </text> @@ -56,12 +59,15 @@ Nächster Eigentümer: </text> <check_box label="Bearbeiten" name="CheckNextOwnerModify"/> - <check_box label="Kopieren" left_delta="85" name="CheckNextOwnerCopy"/> + <check_box label="Kopieren" left_delta="55" name="CheckNextOwnerCopy"/> <check_box label="Wiederverkaufen" name="CheckNextOwnerTransfer"/> <check_box label="Zum Verkauf" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> + <combo_box name="combobox sale copy" left_pad="25"> <combo_box.item label="Kopieren" name="Copy"/> <combo_box.item label="Original" name="Original"/> </combo_box> - <spinner label="Preis: L$" name="Edit Cost"/> + <spinner label="Preis:" name="Edit Cost"/> + <text name="CurrencySymbol"> + L$ + </text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml index 8dfffe06d1..9cc5b92daf 100644 --- a/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/de/floater_inventory_view_finder.xml @@ -1,24 +1,24 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Inventory Finder" title="INVENTAR_LETZTE_OBJEKTE"> - <check_box label="Animation" name="check_animation" /> - <check_box label="Visitenkarten" name="check_calling_card" /> - <check_box label="Kleidung" name="check_clothing" /> - <check_box label="Gesten" name="check_gesture" /> - <check_box label="Landmarken" name="check_landmark" /> - <check_box label="Notizkarten" name="check_notecard" /> - <check_box label="Objekte" name="check_object" /> - <check_box label="Skripts" name="check_script" /> - <check_box label="Sounds" name="check_sound" /> - <check_box label="Texturen" name="check_texture" /> - <check_box label="Fotos" name="check_snapshot" /> - <button label="Alle" label_selected="Alle" name="All" /> - <button label="Keine" label_selected="Keine" name="None" /> - <check_box label="Ordner immer anzeigen" name="check_show_empty" /> - <check_box label="Seit Abmeldung" name="check_since_logoff" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Inventory Finder" title="INVENTORY_RECENT_ITEMS"> + <check_box label="Animation" name="check_animation"/> + <check_box label="Visitenkarten" name="check_calling_card"/> + <check_box label="Kleidung" name="check_clothing"/> + <check_box label="Gesten" name="check_gesture"/> + <check_box label="Landmarken" name="check_landmark"/> + <check_box label="Notizkarten" name="check_notecard"/> + <check_box label="Objekte" name="check_object"/> + <check_box label="Skripts" name="check_script"/> + <check_box label="Sounds" name="check_sound"/> + <check_box label="Texturen" name="check_texture"/> + <check_box label="Fotos" name="check_snapshot"/> + <button label="Alle" label_selected="Alle" name="All"/> + <button label="Keine" label_selected="Keine" name="None"/> + <check_box label="Ordner immer anzeigen" name="check_show_empty"/> + <check_box label="Seit Abmeldung" name="check_since_logoff"/> <text name="- OR -"> - ODER - </text> - <spinner label="Stunden zuvor" label_width="80" name="spin_hours_ago" /> - <spinner label="Tage zuvor" name="spin_days_ago" /> - <button label="Schließen" label_selected="Schließen" name="Close" /> + <spinner label="Stunden zuvor" label_width="80" name="spin_hours_ago"/> + <spinner label="Tage zuvor" name="spin_days_ago"/> + <button label="Schließen" label_selected="Schließen" name="Close"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_joystick.xml b/indra/newview/skins/default/xui/de/floater_joystick.xml index 9507d063d1..2efc11df29 100644 --- a/indra/newview/skins/default/xui/de/floater_joystick.xml +++ b/indra/newview/skins/default/xui/de/floater_joystick.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Joystick" title="JOYSTICK-KONFIGURATION"> - <check_box name="enable_joystick" width="80" label="Joystick aktivieren:"/> + <check_box label="Joystick aktivieren:" name="enable_joystick" width="80"/> <text left="140" name="joystick_type" width="360"/> <spinner label="X-Achse" name="JoystickAxis1"/> <spinner label="Y-Achse" name="JoystickAxis2"/> @@ -15,9 +15,9 @@ <text name="Control Modes:"> Steuermodi: </text> - <check_box name="JoystickAvatarEnabled" label="Avatar"/> - <check_box name="JoystickBuildEnabled" label="Bauen"/> - <check_box name="JoystickFlycamEnabled" label="Flycam"/> + <check_box label="Avatar" name="JoystickAvatarEnabled"/> + <check_box label="Bauen" name="JoystickBuildEnabled"/> + <check_box label="Flycam" name="JoystickFlycamEnabled"/> <text name="XScale"> X-Skala </text> diff --git a/indra/newview/skins/default/xui/de/floater_lagmeter.xml b/indra/newview/skins/default/xui/de/floater_lagmeter.xml index 9468557fc4..45ff37c147 100644 --- a/indra/newview/skins/default/xui/de/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/de/floater_lagmeter.xml @@ -1,152 +1,151 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_lagmeter" title="LAG-ANZEIGE"> - <button name="client_lagmeter" tool_tip="Client-Lag-Status" /> - <text name="client"> - Client: - </text> - <text name="client_text"> - Normal - </text> - <button name="network_lagmeter" tool_tip="Netzwerk-Lag-Status" /> - <text name="network"> - Netzwerk: - </text> - <text name="network_text"> - Normal - </text> - <button name="server_lagmeter" tool_tip="Server-Lag-Status" /> - <text name="server"> - Server: - </text> - <text name="server_text"> - Normal - </text> - <button label="?" name="server_help" /> - <button label=">> " name="minimize" /> - <text name="max_title_msg"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="LAG METER"> + <floater.string name="max_title_msg"> Lag-Anzeige - </text> - <text name="max_width_px"> + </floater.string> + <floater.string name="max_width_px"> 350 - </text> - <text name="min_title_msg"> + </floater.string> + <floater.string name="min_title_msg"> Lag - </text> - <text name="min_width_px"> + </floater.string> + <floater.string name="min_width_px"> 90 - </text> - <text name="client_text_msg"> + </floater.string> + <floater.string name="client_text_msg"> Client - </text> - <text name="client_frame_rate_critical_fps"> + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> 10 - </text> - <text name="client_frame_rate_warning_fps"> + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> 15 - </text> - <text name="client_frame_time_window_bg_msg"> + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> Normal, Fenster im Hintergrund - </text> - <text name="client_frame_time_critical_msg"> + </floater.string> + <floater.string name="client_frame_time_critical_msg"> Client-Frame-Rate unter [CLIENT_FRAME_RATE_CRITICAL] - </text> - <text name="client_frame_time_warning_msg"> + </floater.string> + <floater.string name="client_frame_time_warning_msg"> Client-Frame-Rate zwischen [CLIENT_FRAME_RATE_CRITICAL] und [CLIENT_FRAME_RATE_WARNING] - </text> - <text name="client_frame_time_normal_msg"> + </floater.string> + <floater.string name="client_frame_time_normal_msg"> Normal - </text> - <text name="client_draw_distance_cause_msg"> + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> Mögliche Ursache: Sichtweite zu groß - </text> - <text name="client_texture_loading_cause_msg"> + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> Mögliche Ursache: Bilder werden geladen - </text> - <text name="client_texture_memory_cause_msg"> + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> Mögliche Ursache: Zu viele Bilder im Speicher - </text> - <text name="client_complex_objects_cause_msg"> + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> Mögliche Ursache: Zu viele komplexe Objekte in der Szene - </text> - <text name="network_text_msg"> + </floater.string> + <floater.string name="network_text_msg"> Netzwerk - </text> - <text name="network_packet_loss_critical_pct"> + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> 10 - </text> - <text name="network_packet_loss_warning_pct"> + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> 5 - </text> - <text name="network_packet_loss_critical_msg"> + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> Paketverlust der Verbindung übersteigt [NETWORK_PACKET_LOSS_CRITICAL]% - </text> - <text name="network_packet_loss_warning_msg"> + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> Paketverlust der Verbindung liegt bei [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% - </text> - <text name="network_performance_normal_msg"> + </floater.string> + <floater.string name="network_performance_normal_msg"> Normal - </text> - <text name="network_ping_critical_ms"> + </floater.string> + <floater.string name="network_ping_critical_ms"> 600 - </text> - <text name="network_ping_warning_ms"> + </floater.string> + <floater.string name="network_ping_warning_ms"> 300 - </text> - <text name="network_ping_critical_msg"> + </floater.string> + <floater.string name="network_ping_critical_msg"> Ping-Zeit der Verbindung übersteigt [NETWORK_PING_CRITICAL] ms - </text> - <text name="network_ping_warning_msg"> + </floater.string> + <floater.string name="network_ping_warning_msg"> Ping-Zeit der Verbindung liegt bei [NETWORK_PING_WARNING]-[NETWORK_PING_CRITICAL] ms - </text> - <text name="network_packet_loss_cause_msg"> + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> Möglicherweise schlechte Verbindung oder zu hoher Wert für „Bandbreite“. - </text> - <text name="network_ping_cause_msg"> + </floater.string> + <floater.string name="network_ping_cause_msg"> Möglicherweise schlechte Verbindung oder File-Sharing-Anwendung. - </text> - <text name="server_text_msg"> + </floater.string> + <floater.string name="server_text_msg"> Server - </text> - <text name="server_frame_rate_critical_fps"> + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> 20 - </text> - <text name="server_frame_rate_warning_fps"> + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> 30 - </text> - <text name="server_single_process_max_time_ms"> + </floater.string> + <floater.string name="server_single_process_max_time_ms"> 20 - </text> - <text name="server_frame_time_critical_msg"> + </floater.string> + <floater.string name="server_frame_time_critical_msg"> Simulator-Frame-Rate liegt unter [SERVER_FRAME_RATE_CRITICAL] - </text> - <text name="server_frame_time_warning_msg"> + </floater.string> + <floater.string name="server_frame_time_warning_msg"> Simulator-Frame-Rate liegt zwischen [SERVER_FRAME_RATE_CRITICAL] und [SERVER_FRAME_RATE_WARNING] - </text> - <text name="server_frame_time_normal_msg"> + </floater.string> + <floater.string name="server_frame_time_normal_msg"> Normal - </text> - <text name="server_physics_cause_msg"> + </floater.string> + <floater.string name="server_physics_cause_msg"> Mögliche Ursache: Zu viele physische Objekte - </text> - <text name="server_scripts_cause_msg"> + </floater.string> + <floater.string name="server_scripts_cause_msg"> Mögliche Ursache: Zu viele geskriptete Objekte - </text> - <text name="server_net_cause_msg"> + </floater.string> + <floater.string name="server_net_cause_msg"> Mögliche Ursache: Zu viel Netzwerktraffic - </text> - <text name="server_agent_cause_msg"> + </floater.string> + <floater.string name="server_agent_cause_msg"> Mögliche Ursache: Zu viele Personen in Bewegung in der Region - </text> - <text name="server_images_cause_msg"> + </floater.string> + <floater.string name="server_images_cause_msg"> Mögliche Ursache: Zu viele Bildberechnungen - </text> - <text name="server_generic_cause_msg"> + </floater.string> + <floater.string name="server_generic_cause_msg"> Mögliche Ursache: Zu hohe Simulator-Last + </floater.string> + <floater.string name="smaller_label"> + >> + </floater.string> + <floater.string name="bigger_label"> + << + </floater.string> + <button name="client_lagmeter" tool_tip="Client-Lag-Status"/> + <text name="client"> + Client </text> - <text name="smaller_label"> - >> + <text name="client_text"> + Normal + </text> + <button name="network_lagmeter" tool_tip="Netzwerk-Lag-Status"/> + <text name="network"> + Netzwerk </text> - <text name="bigger_label"> - << + <text name="network_text"> + Normal + </text> + <button name="server_lagmeter" tool_tip="Server-Lag-Status"/> + <text name="server"> + Server + </text> + <text name="server_text"> + Normal </text> + <button label=">> " name="minimize" tool_tip="Fenstergröße ändern"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_land_holdings.xml b/indra/newview/skins/default/xui/de/floater_land_holdings.xml index c612f21a5b..73559407a9 100644 --- a/indra/newview/skins/default/xui/de/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/de/floater_land_holdings.xml @@ -20,21 +20,21 @@ Zulässiger Landbesitz bei aktuellem Zahlungsplan: </text> <text name="allowed_text"> - [AREA] qm + [AREA] m². </text> <text name="current_label"> Aktueller Landbesitz: </text> <text name="current_text"> - [AREA] qm + [AREA] m². </text> <text name="available_label"> Für Landkäufe verfügbar: </text> <text name="available_text"> - [AREA] qm + [AREA] m². </text> <string name="area_string"> - [AREA] qm + [AREA] m². </string> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml index 52e6dccaba..3b42a8b741 100644 --- a/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/de/floater_live_lsleditor.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="script ed float" title="SKRIPT: NEUES SKRIPT"> <floater.string name="not_allowed"> - Dieses Skript kann nicht angezeigt oder bearbeitet werden, da als Berechtigung "kein kopieren" festgelegt wurde. Um ein Skript innerhalb eines Objektes anzuzeigen oder zu bearbeiten, benötigen Sie die vollständige Berechtigung. + Dieses Skript kann nicht angezeigt oder bearbeitet werden, da als Berechtigung „kein kopieren" festgelegt wurde. Um ein Skript innerhalb eines Objektes anzuzeigen oder zu bearbeiten, benötigen Sie die vollständige Berechtigung. </floater.string> <floater.string name="script_running"> Läuft </floater.string> <floater.string name="Title"> - Skript: [NAME] + SKRIPT: [NAME] </floater.string> <button label="Zurücksetzen" label_selected="Zurücksetzen" name="Reset"/> <check_box initial_value="true" label="Läuft" name="running"/> 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 dd6d559c40..73c21edc67 100644 --- a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/de/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="Cursor folgen" name="lock_check" /> - <combo_box label="Sperren" name="history_combo" /> - <button label="Zurück" name="back_btn" /> - <button label="Weiter" name="fwd_btn" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script ed float" title="LSL-REFERENZ"> + <check_box label="Cursor folgen" name="lock_check"/> + <combo_box label="Sperren" name="history_combo" left_pad="50" width="80"/> + <button label="Zurück" name="back_btn"/> + <button label="Weiter" name="fwd_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_map.xml b/indra/newview/skins/default/xui/de/floater_map.xml index b985d1d187..a9a3149177 100644 --- a/indra/newview/skins/default/xui/de/floater_map.xml +++ b/indra/newview/skins/default/xui/de/floater_map.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Map"> +<floater name="Map" title="Minikarte"> <floater.string name="mini_map_north"> N </floater.string> 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 89cce0f6dc..2d438dfe21 100644 --- a/indra/newview/skins/default/xui/de/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/de/floater_media_browser.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="MEDIENBROWSER"> +<floater name="floater_about" title="MEDIEN-BROWSER"> <floater.string name="home_page_url"> http://de.secondlife.com </floater.string> @@ -14,12 +14,12 @@ <button label="Los" name="go"/> </layout_panel> <layout_panel name="time_controls"> - <button label="zurückspulen" name="rewind"/> - <button label="anhalten" name="stop"/> + <button label="zurückspulen" name="rewind" width="100"/> + <button label="anhalten" name="stop" left_pad="20"/> <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_media_settings.xml b/indra/newview/skins/default/xui/de/floater_media_settings.xml new file mode 100644 index 0000000000..1b98ed7973 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_media_settings.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="media_settings" title="MEDIEN-EINSTELLUNGEN"> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> + <button label="Übernehmen" label_selected="Übernehmen" name="Apply"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_mem_leaking.xml b/indra/newview/skins/default/xui/de/floater_mem_leaking.xml index bb40d0b85c..fdc9b950b6 100644 --- a/indra/newview/skins/default/xui/de/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/de/floater_mem_leaking.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="MemLeak" title="Speicherverlust simulieren"> - <spinner label="Verlustgeschwindigkeit (Bytes pro Frame):" name="leak_speed"/> - <spinner label="Max. Speicherverlust (MB):" name="max_leak"/> +<floater name="MemLeak" title="SPEICHERVERLUST SIMULIEREN"> + <spinner label="Verlustgeschwindigkeit (Bytes pro Frame):" name="leak_speed" label_width="224"/> + <spinner label="Max. Speicherverlust (MB):" name="max_leak" label_width="224"/> <text name="total_leaked_label"> Aktueller Speicherverlust:[SIZE] KB </text> diff --git a/indra/newview/skins/default/xui/de/floater_mute_object.xml b/indra/newview/skins/default/xui/de/floater_mute_object.xml index 8cc8a56523..3f1af3dc63 100644 --- a/indra/newview/skins/default/xui/de/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/de/floater_mute_object.xml @@ -1,12 +1,14 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="mute by name" title="OBJEKT NACH NAME STUMMSCHALTEN"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="mute by name" title="OBJEKT NACH NAMEN IGNORIEREN"> <text name="message"> - Stummschalten nach Name betrifft nur Chat und IM, keine -Sounds. Sie müssen den Objektnamen exakt angeben. + Objekt ignorieren: </text> <line_editor name="object_name"> Objektname </line_editor> - <button label="OK" name="OK" /> - <button label="Abbrechen" name="Cancel" /> + <text name="note"> + * Ignoriert nur Objekttext, nicht die Geräusche + </text> + <button label="OK" name="OK"/> + <button label="Abbrechen" name="Cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_my_friends.xml b/indra/newview/skins/default/xui/de/floater_my_friends.xml index 30614b7578..61cb0d5c14 100644 --- a/indra/newview/skins/default/xui/de/floater_my_friends.xml +++ b/indra/newview/skins/default/xui/de/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="KONTAKTE"> <tab_container name="friends_and_groups"> - <panel label="Freunde" name="friends_panel" /> - <panel label="Gruppen" name="groups_panel" /> + <panel label="Freunde" name="friends_panel"/> + <panel label="Gruppen" name="groups_panel"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_nearby_chat.xml b/indra/newview/skins/default/xui/de/floater_nearby_chat.xml new file mode 100644 index 0000000000..e362273396 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_nearby_chat.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="nearby_chat" title="CHAT IN DER NÄHE"/> diff --git a/indra/newview/skins/default/xui/de/floater_notification.xml b/indra/newview/skins/default/xui/de/floater_notification.xml index 48a26a0e98..7752d22b52 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="KONSOLE: MELDUNGEN"> +<floater name="notification" title="MELDUNGEN"> <text_editor name="payload"> Wird geladen... </text_editor> diff --git a/indra/newview/skins/default/xui/de/floater_notifications_console.xml b/indra/newview/skins/default/xui/de/floater_notifications_console.xml index 0c075dd63a..e271cdace2 100644 --- a/indra/newview/skins/default/xui/de/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/de/floater_notifications_console.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="notifications_console" title="KONSOLE: MELDUNGEN"> - <combo_box label="Meldungsart auswählen" name="notification_types" width="412" /> - <button label="Hinzufügen" name="add_notification" left="417" width="78" /> +<floater name="notifications_console" title="BENACHRICHTIGUNGEN"> + <combo_box label="Meldungsart auswählen" name="notification_types" width="412"/> + <button label="Hinzufügen" left="417" name="add_notification" width="78"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_openobject.xml b/indra/newview/skins/default/xui/de/floater_openobject.xml index d7575876e1..c3e7052283 100644 --- a/indra/newview/skins/default/xui/de/floater_openobject.xml +++ b/indra/newview/skins/default/xui/de/floater_openobject.xml @@ -1,10 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="objectcontents" title="OBJEKTINHALTE"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="objectcontents" title="INHALT DES OBJEKTS"> <text name="object_name"> [DESC]: </text> - <button label="In Inventar kopieren" label_selected="In Inventar kopieren" - name="copy_to_inventory_button" width="132" /> - <button label="Kopieren und anziehen" label_selected="Kopieren und anziehen" - name="copy_and_wear_button" width="132" left="150" /> + <button label="In Inventar kopieren" label_selected="In Inventar kopieren" name="copy_to_inventory_button" width="120"/> + <button label="Kopieren und anziehen" label_selected="Kopieren und anziehen" left_pad="6" name="copy_and_wear_button" width="136"/> </floater> 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 0000000000..8c110e5516 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title="Outfit speichern"> + <button label="Speichern" label_selected="Speichern" name="Save"/> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> + <text name="Save item as:"> + Meine aktuelle Kleidung +als neues Outfit speichern: + </text> + <line_editor name="name ed"> + [DESC] (neu) + </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 new file mode 100644 index 0000000000..5372b8387e --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_outgoing_call.xml @@ -0,0 +1,40 @@ +<?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> + <floater.string name="anonymous"> + Anonym + </floater.string> + <floater.string name="VoiceInviteP2P"> + ruft an. + </floater.string> + <floater.string name="VoiceInviteAdHoc"> + ist einem Voice-Konferenz-Chat beigetreten. + </floater.string> + <text name="connecting"> + Verbindung mit [CALLEE_NAME] wird hergestellt. + </text> + <text name="calling"> + [CALLEE_NAME] wird angerufen + </text> + <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. [RECONNECT_NEARBY] + </text> + <text name="nearby_P2P_by_other"> + [VOICE_CHANNEL_NAME] hat den Anruf beendet. [RECONNECT_NEARBY] + </text> + <text name="nearby_P2P_by_agent"> + Sie haben das Gespräch beendet. [RECONNECT_NEARBY] + </text> + <text name="leaving"> + [CURRENT_CHAT] wird verlassen. + </text> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_pay.xml b/indra/newview/skins/default/xui/de/floater_pay.xml index ad7f4a94ab..fb89eeb600 100644 --- a/indra/newview/skins/default/xui/de/floater_pay.xml +++ b/indra/newview/skins/default/xui/de/floater_pay.xml @@ -1,7 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> + <string name="payee_group"> + Gruppe bezahlen + </string> + <string name="payee_resident"> + Einwohner bezahlen + </string> <text name="payee_label" width="130"> - Zahlen: + Bezahlen: </text> <icon name="icon_person" tool_tip="Person"/> <text left="130" name="payee_name"> @@ -14,6 +20,6 @@ <text name="amount text"> Oder Betrag auswählen: </text> - <button label="Zahlen" label_selected="Zahlen" name="pay btn"/> + <button label="Bezahlen" label_selected="Bezahlen" name="pay btn"/> <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_pay_object.xml b/indra/newview/skins/default/xui/de/floater_pay_object.xml index 1bc721aabf..ff85efad50 100644 --- a/indra/newview/skins/default/xui/de/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/de/floater_pay_object.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> <string name="payee_group" width="105"> - Gruppe bezahlen: + Gruppe bezahlen </string> <string name="payee_resident" width="118"> - Einwohner bezahlen: + Einwohner bezahlen </string> <icon name="icon_person" tool_tip="Person"/> <text left="128" name="payee_name" width="168"> @@ -17,13 +17,13 @@ <text left="105" name="object_name_text"> ... </text> - <button label="1 L$" label_selected="1 L$" left="105" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" left="190" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" left="105" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" left="190" name="fastpay 20"/> + <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> + <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> + <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> + <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> <text name="amount text"> Oder Betrag auswählen: </text> - <button label="Zahlen" label_selected="Zahlen" name="pay btn"/> + <button label="Bezahlen" label_selected="Bezahlen" name="pay btn"/> <button label="Abbrechen" label_selected="Abbrechen" name="cancel btn" width="76"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_perm_prefs.xml b/indra/newview/skins/default/xui/de/floater_perm_prefs.xml index 3641f41b8c..fd65987aa9 100644 --- a/indra/newview/skins/default/xui/de/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/de/floater_perm_prefs.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="perm prefs" title="HOCHLADE-BERECHTIGUNGEN (STANDARD)"> +<floater name="perm prefs" title="STANDARD-BERECHTIGUNGEN FÜR HOCHLADEN"> <panel label="Berechtigungen" name="permissions"> <button label="?" label_selected="?" name="help"/> <check_box label="Mit Gruppe teilen" name="share_with_group"/> @@ -9,7 +9,7 @@ </text> <check_box label="Bearbeiten" name="next_owner_modify"/> <check_box label="Kopieren" name="next_owner_copy"/> - <check_box label="Verkaufen/Weggeben" name="next_owner_transfer" left_delta="80"/> + <check_box label="Verkaufen/Weggeben" left_delta="80" name="next_owner_transfer"/> </panel> <button label="OK" label_selected="OK" name="ok"/> <button label="Abbrechen" label_selected="Abbrechen" name="cancel"/> diff --git a/indra/newview/skins/default/xui/de/floater_postcard.xml b/indra/newview/skins/default/xui/de/floater_postcard.xml index fc552339d3..91e0bb8133 100644 --- a/indra/newview/skins/default/xui/de/floater_postcard.xml +++ b/indra/newview/skins/default/xui/de/floater_postcard.xml @@ -1,39 +1,37 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Postcard" title="FOTO PER E-MAIL SENDEN"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Postcard" title="FOTO EMAILEN"> <text name="to_label"> E-Mail des Empfängers: </text> - <line_editor left="145" name="to_form" width="125" /> + <line_editor left_delta="145" name="to_form" width="125"/> <text name="from_label"> Ihre E-Mail: </text> - <line_editor left="145" name="from_form" width="125" /> + <line_editor left_delta="145" name="from_form" width="125"/> <text name="name_label"> Ihr Name: </text> - <line_editor left="145" name="name_form" width="125" /> + <line_editor left_delta="145" name="name_form" width="125"/> <text name="subject_label"> Betreff: </text> - <line_editor label="Betreff hier eingeben." left="145" name="subject_form" width="125" /> + <line_editor label="Betreff hier eingeben." left_delta="145" name="subject_form" width="125"/> <text name="msg_label"> Nachricht: </text> <text_editor name="msg_form"> Nachricht hier eingeben. </text_editor> - <check_box label="Im Web veröffentlichen" name="allow_publish_check" - tool_tip="Veröffentlicht diese Postkarte im Web." /> - <check_box label="Ab-18-Inhalt" name="mature_check" - tool_tip="Diese Postkarte enthält nicht jugendfreie Inhalte." /> - <button label="?" name="publish_help_btn" /> - <text name="fine_print"> + <check_box label="Im Web veröffentlichen" name="allow_publish_check" tool_tip="Veröffentlicht diese Postkarte im Web."/> + <check_box label="Ab-18-Inhalt" name="mature_check" tool_tip="Diese Postkarte enthält nicht jugendfreie Inhalte."/> + <button label="?" name="publish_help_btn"/> + <text name="fine_print" bottom_delta="21" height="140"> Wenn sich der Empfänger bei SL anmeldet, erhalten Sie einen Empfehlungsbonus. </text> - <button label="Abbrechen" name="cancel_btn" /> - <button label="Senden" name="send_btn" /> + <button label="Abbrechen" name="cancel_btn"/> + <button label="Senden" name="send_btn"/> <text name="default_subject"> - Postkarte aus [SECOND_LIFE] + Postkarte aus [SECOND_LIFE]. </text> <text name="default_message"> Sehen Sie hier! diff --git a/indra/newview/skins/default/xui/de/floater_preferences.xml b/indra/newview/skins/default/xui/de/floater_preferences.xml index 02aa440be7..a2712c437b 100644 --- a/indra/newview/skins/default/xui/de/floater_preferences.xml +++ b/indra/newview/skins/default/xui/de/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="EINSTELLUNGEN"> - <button label="OK" label_selected="OK" name="OK" /> - <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" /> - <button label="Übernehmen" label_selected="Übernehmen" name="Apply" /> - <button label="Info" label_selected="Info" name="About..." /> - <button label="Hilfe" label_selected="Hilfe" name="Help" /> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> + <tab_container name="pref core"> + <panel label="Allgemein" name="general"/> + <panel label="Grafik" name="display"/> + <panel label="Privatsphäre" name="im"/> + <panel label="Sound & Medien" name="audio"/> + <panel label="Chat" name="chat"/> + <panel label="Meldungen" name="msgs"/> + <panel label="Konfiguration" name="input"/> + <panel label="Erweitert" name="advanced1"/> + </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_preview_animation.xml b/indra/newview/skins/default/xui/de/floater_preview_animation.xml index ea2e643601..3dcdb52555 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_animation.xml @@ -3,10 +3,10 @@ <floater.string name="Title"> Animation: [NAME] </floater.string> - <text name="desc txt"> + <text name="desc txt" width="140"> Beschreibung: </text> - <line_editor left="98" name="desc" width="189"/> - <button label="In Welt abspielen" label_selected="Stopp" name="Anim play btn" tool_tip="Gibt diese Animation so wieder, dass andere sie sehen können." width="116"/> - <button label="Lokal wiedergeben" label_selected="Stopp" left="171" name="Anim audition btn" tool_tip="Gibt diese Animation so wieder, dass nur Sie sie sehen." width="116"/> + <line_editor left="108" name="desc" width="160"/> + <button label="Inworld abspielen" label_selected="Stopp" name="Anim play btn" tool_tip="Diese Animation so wiedergeben, dass andere sie sehen können." width="116"/> + <button label="Lokal abspielen" label_selected="Stopp" left="171" name="Anim audition btn" tool_tip="Diese Animation so wiedergeben, dass nur Sie sie sehen." width="116"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_preview_classified.xml b/indra/newview/skins/default/xui/de/floater_preview_classified.xml index 10f78207eb..401758769d 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_classified.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_classified.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="VERTRAULICHE INFORMATIONEN"> +<floater name="classified_preview" title="INFORMATIONEN ÜBER ANZEIGE"> <floater.string name="Title"> Anzeige: [NAME] </floater.string> diff --git a/indra/newview/skins/default/xui/de/floater_preview_event.xml b/indra/newview/skins/default/xui/de/floater_preview_event.xml index 44bccc8a06..7e46bbab54 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_event.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_event.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="EVENT-INFORMATIONEN"> +<floater name="event_preview" title="EVENT-INFORMATION"> <floater.string name="Title"> Veranstaltung: [NAME] </floater.string> 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 d72dceec90..1426a33d1d 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml @@ -1,14 +1,32 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="gesture_preview"> - <string name="stop_txt"> + <floater.string name="step_anim"> + Animation abspielen: + </floater.string> + <floater.string name="step_sound"> + Sound abspielen: + </floater.string> + <floater.string name="step_chat"> + Chat sprechen: + </floater.string> + <floater.string name="step_wait"> + Warten: + </floater.string> + <floater.string name="stop_txt"> Stopp - </string> - <string name="preview_txt"> + </floater.string> + <floater.string name="preview_txt"> Vorschau - </string> - <string name="none_text"> + </floater.string> + <floater.string name="none_text"> – Keine – - </string> + </floater.string> + <floater.string name="Title"> + Gesten: [NAME] + </floater.string> + <text name="name_text"> + Name: + </text> <text name="desc_label"> Beschreibung: </text> @@ -18,7 +36,7 @@ <text name="replace_text" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht's“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht's sagen“ und die zugehörige Geste wird abgespielt."> Ersetzen mit: </text> - <line_editor name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht's“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht's sagen“ und die zugehörige Geste wird abgespielt."/> + <line_editor name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht's“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht's sagen“ und die zugehörige Geste wird abgespielt." left_delta="94" width="160"/> <text name="key_label"> Tastenkürzel: </text> @@ -27,30 +45,23 @@ <text name="library_label"> Bibliothek: </text> + <scroll_list name="library_list" width="166"/> + <button label="Hinzufügen >>" name="add_btn" left_pad="6" width="94"/> <text name="steps_label"> Schritte: </text> - <scroll_list name="library_list"> - Animation -Ton -Chat -Warten - </scroll_list> - <button label="Hinzufügen >>" name="add_btn"/> <button label="Nach oben" name="up_btn"/> <button label="Nach unten" name="down_btn"/> <button label="Entfernen" name="delete_btn"/> - <text name="help_label"> - Alle Schritte erfolgen zur selben -Zeit, außer Sie fügen Warteschritte -ein. - </text> <radio_group name="animation_trigger_type"> - <radio_item name="start" label="Start" /> - <radio_item name="stop" label="Stopp" /> + <radio_item label="Start" name="start"/> + <radio_item label="Stopp" name="stop"/> </radio_group> <check_box label="bis alle Animationen beendet sind" name="wait_anim_check"/> <check_box label="Zeit in Sekunden" name="wait_time_check"/> + <text name="help_label"> + Alle Schritte werden gleichzeitig ausgeführt, wenn keine Pausen hinzugefügt wurden. + </text> <check_box label="Aktiv" name="active_check" tool_tip="Aktive Gesten werden durch Chat-Eingabe ihrer Auslösephrasen oder Drücken von Tastenkürzeln ausgelöst. Bei doppelten Tastenzuweisungen funktionieren Gesten in der Regel nicht."/> <button label="Vorschau" name="preview_btn"/> <button label="Speichern" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture_info.xml index 3b86f4b3de..0d0d28f96f 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_gesture_info.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_gesture_info.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="Gesten-Tastaturbefehl"/> +<floater name="Gesture" title="GESTE - SCHNELLTASTE"/> diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture_shortcut.xml new file mode 100644 index 0000000000..0b5df13395 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_preview_gesture_shortcut.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="GESTE - SCHNELLTASTE"> + <text name="trigger_label"> + Chat: + </text> + <text name="key_label"> + Tastatur: + </text> + <combo_box label="Keiner" name="modifier_combo"/> + <combo_box label="Keiner" name="key_combo"/> + <text name="replace_text" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht's“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht's sagen“ und die zugehörige Geste wird abgespielt."> + Ersetzen: + </text> + <line_editor name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht's“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht's sagen“ und die zugehörige Geste wird abgespielt."/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture_steps.xml index 3b86f4b3de..0d0d28f96f 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_gesture_steps.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_gesture_steps.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="Gesten-Tastaturbefehl"/> +<floater name="Gesture" title="GESTE - SCHNELLTASTE"/> 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 a02a58ee0e..62f9e1e9e5 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_sound.xml b/indra/newview/skins/default/xui/de/floater_preview_sound.xml index 17419548bc..4629ec4a04 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_sound.xml @@ -6,6 +6,6 @@ <text name="desc txt"> Beschreibung: </text> - <button label="In Welt abspielen" label_selected="In Welt abspielen" name="Sound play btn" tool_tip="Gibt diesen Sound so wieder, dass andere ihn hören können."/> - <button label="Lokal wiedergeben" label_selected="Lokal wiedergeben" name="Sound audition btn" tool_tip="Gibt diesen Sound so wieder, dass nur Sie ihn hören."/> + <button label="Inworld abspielen" label_selected="Inworld abspielen" name="Sound play btn" tool_tip="Gibt diesen Sound so wieder, dass andere ihn hören können."/> + <button label="Lokal abspielen" label_selected="Lokal abspielen" name="Sound audition btn" tool_tip="Gibt diesen Sound so wieder, dass nur Sie ihn hören."/> </floater> 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 9aa00e7172..526c0813bd 100644 --- a/indra/newview/skins/default/xui/de/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/de/floater_preview_texture.xml @@ -9,9 +9,39 @@ <text name="desc txt"> Beschreibung: </text> - <button label="Speichern" name="Keep"/> - <button label="Löschen" name="Discard"/> <text name="dimensions"> [WIDTH]px x [HEIGHT]px </text> + <text name="aspect_ratio"> + Seitenverhältnis anzeigen + </text> + <combo_box name="combo_aspect_ratio" tool_tip="Mit einem vordefinierten Seitenverhältnis anzeigen"> + <combo_item name="Unconstrained"> + keines + </combo_item> + <combo_item name="1:1" tool_tip="Gruppeninsignien oder Beschreibung"> + 1:1 + </combo_item> + <combo_item name="4:3" tool_tip="[SECOND_LIFE]-Profil"> + 4:3 + </combo_item> + <combo_item name="10:7" tool_tip="Anzeigen und Suchergebnisse, Landmarken"> + 10:7 + </combo_item> + <combo_item name="3:2" tool_tip="Über Land"> + 3:2 + </combo_item> + <combo_item name="16:10"> + 16:10 + </combo_item> + <combo_item name="16:9" tool_tip="Profilauswahl"> + 16:9 + </combo_item> + <combo_item name="2:1"> + 2:1 + </combo_item> + </combo_box> + <button label="OK" name="Keep"/> + <button label="Verwerfen" name="Discard"/> + <button label="Speichern unter" name="save_tex_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_region_info.xml b/indra/newview/skins/default/xui/de/floater_region_info.xml index e7dd09d4da..354cdaa272 100644 --- a/indra/newview/skins/default/xui/de/floater_region_info.xml +++ b/indra/newview/skins/default/xui/de/floater_region_info.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="regioninfo" title="REGION/GRUNDSTÜCK" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="regioninfo" title="REGION/GRUNDSTÜCK"/> 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 84b80e2f6d..49e6d031d6 100644 --- a/indra/newview/skins/default/xui/de/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/de/floater_report_abuse.xml @@ -8,7 +8,7 @@ Melder: </text> <text name="reporter_field"> - Loremipsum Dolorsitamut + Loremipsum Dolorsitamut Longnamez </text> <text name="sim_title"> Region: @@ -23,7 +23,8 @@ {128.1, 128.1, 15.4} </text> <text bottom_delta="-38" height="32" name="select_object_label"> - Klicken Sie auf die Schaltfläche, dann auf das entsprechende Objekt: + Klicken Sie die Schaltfläche, dann das entsprechende +Objekt: </text> <button label="" label_selected="" name="pick_btn" tool_tip="Objektauswahl – Wählen Sie ein Objekt als Thema dieses Berichts aus"/> <text name="object_name_label"> @@ -36,12 +37,12 @@ Eigentümer: </text> <text name="owner_name"> - Hendrerit Vulputate + Hendrerit Vulputate Kamawashi Longname </text> <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 +69,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"/> @@ -93,11 +94,11 @@ Details: </text> <text name="bug_aviso"> - Bitte beschreiben Sie so genau wie möglich. + Detaillierte Beschreibung: </text> - <text_editor bottom_delta="-136" height="130" name="details_edit"/> + <text_editor bottom_delta="-136" height="70" name="details_edit"/> <text bottom_delta="-20" name="incomplete_title"> - Hinweis: Unvollständige Meldungen werden nicht bearbeitet. + * Unvollständige Berichte werden nicht bearbeitet </text> <button label="Missbrauch melden" label_selected="Missbrauch melden" name="send_btn"/> <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn"/> diff --git a/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml index ef021ce713..e70a30fa24 100644 --- a/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/de/floater_script_debug_panel.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script" short_title="[All scripts]" title="[All scripts]"/> +<floater name="script" short_title="[ALL SCRIPTS]" title="[ALL SCRIPTS]"/> 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 0000000000..94a24a97ae --- /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_script_preview.xml b/indra/newview/skins/default/xui/de/floater_script_preview.xml index a895a32e14..e0bcd42523 100644 --- a/indra/newview/skins/default/xui/de/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_script_preview.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview lsl text" title="SKRIPT: ROTATIONSSKRIPT"> +<floater name="preview lsl text" title="SKRIPT: ROTATIONS-SKRIPT"> <floater.string name="Title"> - Skript: [NAME] + SKRIPT: [NAME] </floater.string> - <text name="desc txt"> + <text name="desc txt" width="120"> Beschreibung: </text> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_script_queue.xml b/indra/newview/skins/default/xui/de/floater_script_queue.xml index 4c82aabd47..f267fe4b7c 100644 --- a/indra/newview/skins/default/xui/de/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/de/floater_script_queue.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="queue" title="RÜCKGÄNGIG"> +<floater name="queue" title="ZURÜCKSETZEN"> <floater.string name="Starting"> [START] von [COUNT] Artikeln. </floater.string> diff --git a/indra/newview/skins/default/xui/de/floater_script_search.xml b/indra/newview/skins/default/xui/de/floater_script_search.xml index aae302e230..de959cbb28 100644 --- a/indra/newview/skins/default/xui/de/floater_script_search.xml +++ b/indra/newview/skins/default/xui/de/floater_script_search.xml @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="script search" title="SKRIPTSUCHE"> - <check_box label="Groß-/Kleinschreibung irrelevant" name="case_text" /> - <button label="Suchen" label_selected="Suchen" name="search_btn" /> - <button label="Ersetzen" label_selected="Ersetzen" name="replace_btn" /> - <button label="Alle ersetzen" label_selected="Alle ersetzen" name="replace_all_btn" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script search" title="SKRIPT-SUCHE"> + <check_box label="Groß-/Kleinschreibung irrelevant" name="case_text"/> + <button label="Suchen" label_selected="Suchen" name="search_btn"/> + <button label="Ersetzen" label_selected="Ersetzen" name="replace_btn"/> + <button label="Alle ersetzen" label_selected="Alle ersetzen" name="replace_all_btn"/> <text name="txt"> Suchen </text> diff --git a/indra/newview/skins/default/xui/de/floater_search.xml b/indra/newview/skins/default/xui/de/floater_search.xml new file mode 100644 index 0000000000..d44ad44aea --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_search.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_search" title="SUCHEN"> + <floater.string name="loading_text"> + Wird geladen... + </floater.string> + <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 6094d11359..8ab9db520a 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 6a5f03c661..8f67fae464 100644 --- a/indra/newview/skins/default/xui/de/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/de/floater_sell_land.xml @@ -5,52 +5,50 @@ <text name="info_parcel_label"> Parzelle: </text> - <text bottom_delta="-5" height="16" name="info_parcel"> + <text bottom_delta="-5" height="16" name="info_parcel" left="70"> PARZELLENNAME </text> <text name="info_size_label"> Größe: </text> - <text bottom_delta="-21" height="32" name="info_size"> - [AREA] qm + <text bottom_delta="-21" height="32" name="info_size" left="70"> + [AREA] m². </text> <text bottom_delta="-57" height="28" name="info_action"> - Zum Verkauf -dieser Parzelle: + Zum Verkauf dieser Parzelle: </text> - <icon bottom_delta="-80" name="step_price"/> <text name="price_label"> - Preis festlegen: + 1. Preis festlegen: </text> - <text name="price_text"> - Einen angemessenen Preis auswählen. + <text name="price_text" > + Preis eingeben </text> <text name="price_ld"> L$ </text> + <line_editor name="price"> + 0 + </line_editor> <text name="price_per_m"> - ([PER_METER] L$ pro Quadratmeter) + ([PER_METER] L$ pro m²) </text> - <icon height="64" left="0" name="step_sell_to" width="64"/> <text bottom_delta="38" left="72" name="sell_to_label" right="-20"> - Land verkaufen an: + 2. Land verkaufen an: </text> <text bottom_delta="-16" height="16" left="72" name="sell_to_text" right="-10"> - Wählen Sie, ob der Verkauf offen oder auf eine bestimmte Person -beschränkt ist. + Offener Verkauf oder Verkauf an bestimmte Person? </text> <combo_box bottom_delta="-32" height="16" left="72" name="sell_to" width="140"> - <combo_box.item label="select one --" name="--selectone--"/> - <combo_box.item label="Jeder" name="Anyone"/> - <combo_box.item label="Bestimmte Person:" name="Specificuser:"/> + <combo_box.item label="-- Auswählen --" name="--selectone--"/> + <combo_box.item label="An jeden" name="Anyone"/> + <combo_box.item label="An bestimmte Person:" name="Specificuser:"/> </combo_box> - <button label="Auswählen..." name="sell_to_select_agent"/> + <button label="Auswählen" name="sell_to_select_agent"/> <text name="sell_objects_label"> - Die Objekte mit dem Land verkaufen? + 3. Die Objekte mit dem Land verkaufen? </text> <text name="sell_objects_text"> - Die transferierbaren Landeigentümer-Objekte auf der Parzelle -wechseln den Eigentümer. + Die transferierbaren Landeigentümer-Objekte auf der Parzelle wechseln den Eigentümer. </text> <radio_group bottom_delta="-58" name="sell_objects"> <radio_item label="Nein, Objekte behalten" name="no"/> @@ -60,7 +58,7 @@ wechseln den Eigentümer. <text name="nag_message_label"> ACHTUNG: Verkäufe sind endgültig. </text> - <button label="Land zum Verkauf freigeben" name="sell_btn" width="180"/> + <button label="Zum Verkauf freigeben" name="sell_btn" width="180"/> <button label="Abbrechen" name="cancel_btn"/> </panel> </scroll_container> diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml index 64db511aa9..9ee50c7c5c 100644 --- a/indra/newview/skins/default/xui/de/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml @@ -4,23 +4,23 @@ Zweck des Fotos </text> <radio_group label="Fototyp" name="snapshot_type_radio"> - <radio_item name="postcard" label="Per E-Mail senden"/> - <radio_item name="texture" label="Im Inventar speichern ([AMOUNT] L$)"/> - <radio_item name="local" label="Auf Festplatte speichern"/> + <radio_item label="Emailen" 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"/> <button label="Speichern ([AMOUNT] L$)" name="upload_btn"/> <flyout_button label="Speichern" name="save_btn" tool_tip="Bild als Datei speichern"> - <flyout_button_item name="save_item" label="Speichern"/> - <flyout_button_item name="saveas_item" label="Speichern unter..."/> + <flyout_button_item label="Speichern" name="save_item"/> + <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> @@ -28,74 +28,50 @@ Format </text> <combo_box label="Auflösung" name="postcard_size_combo"> - <combo_box.item name="CurrentWindow" label="Aktuelles Fenster" - /> - <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="Benutzerdefiniert" - /> + <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> + <combo_box.item label="640x480" name="640x480"/> + <combo_box.item label="800x600" name="800x600"/> + <combo_box.item label="1024x768" name="1024x768"/> + <combo_box.item label="Benutzerdefiniert" name="Custom"/> </combo_box> <combo_box label="Auflösung" name="texture_size_combo"> - <combo_box.item name="CurrentWindow" label="Aktuelles Fenster" - /> - <combo_box.item name="Small(128x128)" label="Klein (128x128)" - /> - <combo_box.item name="Medium(256x256)" label="Mittel (256x256)" - /> - <combo_box.item name="Large(512x512)" label="Groß (512x512)" - /> - <combo_box.item name="Custom" label="Benutzerdefiniert" - /> + <combo_box.item label="Aktuelles Fenster" name="CurrentWindow"/> + <combo_box.item label="Klein (128x128)" name="Small(128x128)"/> + <combo_box.item label="Mittel (256x256)" name="Medium(256x256)"/> + <combo_box.item label="Groß (512x512)" name="Large(512x512)"/> + <combo_box.item label="Benutzerdefiniert" name="Custom"/> </combo_box> <combo_box label="Auflösung" name="local_size_combo"> - <combo_box.item name="CurrentWindow" label="Aktuelles Fenster" - /> - <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="Benutzerdefiniert" - /> + <combo_box.item label="Aktuelles Fenster" 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="Benutzerdefiniert" name="Custom"/> </combo_box> <combo_box label="Format" 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="Breite" name="snapshot_width"/> <spinner label="Höhe" name="snapshot_height"/> <check_box label="Seitenverhältnis beibehalten" name="keep_aspect_check"/> <slider label="Bildqualität" name="image_quality_slider"/> - <text name="layer_type_label" width="63"> + <text name="layer_type_label" width="66"> Aufnehmen: </text> - <combo_box label="Bildlayer" name="layer_types" width="132" left="73"> - <combo_box.item name="Colors" label="Farben" - /> - <combo_box.item name="Depth" label="Tiefe" - /> - <combo_box.item name="ObjectMattes" label="Objektmasken" - /> + <combo_box label="Bildlayer" left="73" name="layer_types" width="132"> + <combo_box.item label="Farben" name="Colors"/> + <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="Oberfläche" 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_sound_preview.xml b/indra/newview/skins/default/xui/de/floater_sound_preview.xml index 14126b6a44..1070c93405 100644 --- a/indra/newview/skins/default/xui/de/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/de/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"> Name: @@ -6,15 +6,15 @@ <text name="description_label"> Beschreibung: </text> - <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn" /> - <button label="Hochladen ([AMOUNT] L$)" label_selected="Hochladen ([AMOUNT] L$)" name="ok_btn" /> + <button label="Abbrechen" label_selected="Abbrechen" name="cancel_btn"/> + <button label="Hochladen ([AMOUNT] L$)" label_selected="Hochladen ([AMOUNT] L$)" name="ok_btn"/> <text name="text"> Bitrate (kbit/s): </text> <radio_group name="bitrate"> - <radio_item name="32" label="32" /> - <radio_item name="64" label="64" /> - <radio_item name="96" label="96" /> - <radio_item name="128" label="128" /> + <radio_item label="32" name="32"/> + <radio_item label="64" name="64"/> + <radio_item label="96" name="96"/> + <radio_item label="128" name="128"/> </radio_group> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_statistics.xml b/indra/newview/skins/default/xui/de/floater_statistics.xml index 506c18bd98..72a87a9566 100644 --- a/indra/newview/skins/default/xui/de/floater_statistics.xml +++ b/indra/newview/skins/default/xui/de/floater_statistics.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="stats floater" title="STATISTIKLEISTE"/> +<floater name="stats floater" title="STATISTIKEN"/> diff --git a/indra/newview/skins/default/xui/de/floater_stats.xml b/indra/newview/skins/default/xui/de/floater_stats.xml index 9aa0c028af..1eb2dd4288 100644 --- a/indra/newview/skins/default/xui/de/floater_stats.xml +++ b/indra/newview/skins/default/xui/de/floater_stats.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Statistics" title="Statistik"> - <scroll_container name="statistics_scroll"> - <container_view name="statistics_view"> +<floater name="Statistics" title="STATISTIKEN" width="280"> + <scroll_container name="statistics_scroll" width="280"> + <container_view name="statistics_view" width="280"> <stat_view label="Basic" name="basic"> <stat_bar label="FPS" name="fps"/> <stat_bar label="Bandbreite" name="bandwidth"/> @@ -43,19 +43,19 @@ <stat_bar label="Eingerastete Objekte" name="physicspinnedtasks"/> <stat_bar label="Niedrig LOD-Objekte" name="physicslodtasks"/> <stat_bar label="Zugeordneter Speicher" name="physicsmemoryallocated"/> - <stat_bar label="Agent Updates/Sek" name="simagentups"/> - <stat_bar label="Haupt-Agenten" name="simmainagents"/> - <stat_bar label="Child-Agenten" name="simchildagents"/> - <stat_bar label="Objekte" name="simobjects"/> - <stat_bar label="Aktive Objekte" name="simactiveobjects"/> - <stat_bar label="Aktive Skripts" name="simactivescripts"/> - <stat_bar label="Skript-Events" name="simscripteps"/> - <stat_bar label="Paketeingang" name="siminpps"/> - <stat_bar label="Paketausgang" name="simoutpps"/> - <stat_bar label="Ausstehende Downloads" name="simpendingdownloads"/> - <stat_bar label="Ausstehende Uploads" name="simpendinguploads"/> - <stat_bar label="Gesamtanzahl „Unacked" Bytes" name="simtotalunackedbytes"/> </stat_view> + <stat_bar label="Agent-Aktualisierungen/Sek" name="simagentups"/> + <stat_bar label="Haupt-Agenten" name="simmainagents"/> + <stat_bar label="Child-Agenten" name="simchildagents"/> + <stat_bar label="Objekte" name="simobjects"/> + <stat_bar label="Aktive Objekte" name="simactiveobjects"/> + <stat_bar label="Aktive Skripts" name="simactivescripts"/> + <stat_bar label="Skript-Events" name="simscripteps"/> + <stat_bar label="Paketeingang" name="siminpps"/> + <stat_bar label="Paketausgang" name="simoutpps"/> + <stat_bar label="Ausstehende Downloads" name="simpendingdownloads"/> + <stat_bar label="Ausstehende Uploads" name="simpendinguploads"/> + <stat_bar label="Gesamtanzahl „Unacked" Bytes" name="simtotalunackedbytes"/> <stat_view label="Zeit (ms)" name="simperf"> <stat_bar label="Gesamtzeit Frame" name="simframemsec"/> <stat_bar label="Netto-Zeit" name="simnetmsec"/> diff --git a/indra/newview/skins/default/xui/de/floater_sys_well.xml b/indra/newview/skins/default/xui/de/floater_sys_well.xml new file mode 100644 index 0000000000..d7db97722c --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_sys_well.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="notification_chiclet" title="MELDUNGEN"> + <string name="title_im_well_window"> + GESPRÄCHE + </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 2ba4e575a8..83d37b2ce4 100644 --- a/indra/newview/skins/default/xui/de/floater_telehub.xml +++ b/indra/newview/skins/default/xui/de/floater_telehub.xml @@ -1,32 +1,29 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="telehub" title="TELEHUB" min_height="310" height="310" > +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater height="310" min_height="310" name="telehub" title="TELEHUB"> <text name="status_text_connected"> Telehub verbunden mit Objekt [OBJECT] </text> <text name="status_text_not_connected"> Kein Telehub verbunden. </text> - <text name="help_text_connected"> + <text name="help_text_connected" width="300"> Klicken Sie zum Entfernen auf „Trennen“. </text> - <text name="help_text_not_connected" height="38" bottom_delta="-18" > + <text bottom_delta="-18" height="38" name="help_text_not_connected"> Wählen Sie ein Objekt und klicken Sie auf „Mit Telehub verbinden“. </text> - <button label="Mit Telehub verbinden" name="connect_btn" width="122" /> - <button label="Trennen" name="disconnect_btn" left="142" width="98" /> + <button label="Mit Telehub verbinden" name="connect_btn" width="134"/> + <button label="Trennen" left="152" name="disconnect_btn" width="88"/> <text name="spawn_points_text" width="230"> Spawn-Punkte (Positionen, nicht Objekte): </text> - <button label="Spawn hinzufügen" name="add_spawn_point_btn" /> - <button label="Spawn entfernen" name="remove_spawn_point_btn" /> + <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 Sie 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_texture_ctrl.xml b/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml index 7e2fc26fdf..d20ab8d1c3 100644 --- a/indra/newview/skins/default/xui/de/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/de/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="AUSWÄHLEN: TEXTUR"> <string name="choose_picture"> Zum Auswählen eines Bildes hier klicken </string> <text name="Multiple"> - Mehrfach + Mehrere Texturen </text> <text name="unknown"> - Maße: [DIMENSIONS] + Größe: [DIMENSIONS] </text> - <button label="Standard" label_selected="Standard" name="Default" /> - <button label="Keine" label_selected="Keine" name="None" /> - <button label="Leer" label_selected="Leer" name="Blank" /> - <check_box label="Ordner anzeigen" name="show_folders_check" /> - <search_editor label="Suchanfrage hier eintippen" name="inventory search editor" /> - <check_box label="Sofort übernehmen" name="apply_immediate_check" /> - <button label="" label_selected="" name="Pipette" /> - <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" /> - <button label="Auswählen" label_selected="Auswählen" name="Select" /> + <button label="Standard" label_selected="Standard" name="Default"/> + <button label="Keine" label_selected="Keine" name="None"/> + <button label="Leer" label_selected="Leer" name="Blank"/> + <check_box label="Ordner anzeigen" name="show_folders_check"/> + <search_editor label="Texturen filtern" name="inventory search editor"/> + <check_box label="Jetzt übernehmen" name="apply_immediate_check"/> + <button label="" label_selected="" name="Pipette"/> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> + <button label="OK" label_selected="OK" name="Select"/> <text name="pick title"> Auswählen: </text> diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index f4d1bb4d54..7646efccd4 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="toolbox floater" short_title="Bau-Werkzeuge" title=""> +<floater name="toolbox floater" short_title="BAU-WERKZEUGE" title=""> <floater.string name="status_rotate"> An den farbigen Bändern ziehen, um das Objekt zu drehen </floater.string> @@ -16,7 +16,7 @@ Klicken und ziehen, um Kamera zu bewegen </floater.string> <floater.string name="status_grab"> - Ziehen, um Objekte zu verschieben, Strg zum Heben, Strg-Umschalt zum Drehen + Ziehen, um Objekte zu verschieben, Strg zum Heben, Strg + Umschalt zum Drehen </floater.string> <floater.string name="status_place"> Inworld klicken, um zu bauen. @@ -50,29 +50,32 @@ <radio_group name="focus_radio_group"> <radio_item label="Zoom" name="radio zoom"/> <radio_item label="Orbit (Strg)" name="radio orbit"/> - <radio_item label="Schwenken (Strg-Umschalt)" name="radio pan"/> + <radio_item label="Schwenken (Strg+Umschalt)" name="radio pan"/> </radio_group> <radio_group name="move_radio_group"> <radio_item label="Verschieben" name="radio move"/> <radio_item label="Heben (Strg)" name="radio lift"/> - <radio_item label="Rotieren (Strg-Umschalt)" name="radio spin"/> + <radio_item label="Drehen (Strg+Umschalt)" name="radio spin"/> </radio_group> <radio_group name="edit_radio_group"> <radio_item label="Bewegen" name="radio position"/> <radio_item label="Drehen (Strg)" name="radio rotate"/> - <radio_item label="Dehnen (Strg-Umschalt)" name="radio stretch"/> - <radio_item label="Textur auswählen" name="radio select face"/> + <radio_item label="Dehnen (Strg+Umschalt)" name="radio stretch"/> + <radio_item label="Fläche auswählen" name="radio select face"/> </radio_group> <check_box label="Verknüpfte Teile bearbeiten" name="checkbox edit linked parts"/> + <text name="RenderingCost" tool_tip="Zeigt die errechneten Wiedergabekosten für dieses Objekt"> + þ: [COUNT] + </text> <check_box label="Beide Seiten dehnen" name="checkbox uniform"/> <check_box initial_value="true" label="Texturen dehnen" name="checkbox stretch textures"/> - <check_box initial_value="true" label="An Raster ausrichten" name="checkbox snap to grid"/> - <combo_box name="combobox grid mode"> - <combo_box.item label="Welt-Lineal" name="World"/> - <combo_box.item label="Lokal-Lineal" name="Local"/> - <combo_box.item label="Referenz-Lineal" name="Reference"/> + <check_box initial_value="true" label="An Raster ausrichten" name="checkbox snap to grid" top_pad="10"/> + <combo_box name="combobox grid mode" tool_tip="Wählen Sie das Rasterlineal aus, um das Objekt zu positionieren."> + <combo_box.item label="Globales Raster" name="World"/> + <combo_box.item label="Lokales Raster" name="Local"/> + <combo_box.item label="Referenzraster" name="Reference"/> </combo_box> - <button label="Optionen..." label_selected="Optionen..." name="Options..." tool_tip="Grid-Optionen einstellen"/> + <button label="Optionen..." label_selected="Optionen..." name="Options..." tool_tip="Mehr Raster-Optionen anzeigen"/> <button label="" label_selected="" name="ToolCube" tool_tip="Würfel"/> <button label="" label_selected="" name="ToolPrism" tool_tip="Prisma"/> <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/> @@ -110,7 +113,7 @@ <text name="Strength:"> Stärke </text> - <button label="Übernehmen" label_selected="Übernehmen" name="button apply to selection" tool_tip="Ausgewähltes Land ändern"/> + <button label="Übernehmen" label_selected="Übernehmen" name="button apply to selection" tool_tip="Ausgewähltes Land bearbeiten"/> <text name="obj_count"> Objekte: [COUNT] </text> @@ -126,16 +129,16 @@ Übertragung </panel.string> <panel.string name="text modify info 1"> - Sie können dieses Objekt ändern + Sie können dieses Objekt bearbeiten. </panel.string> <panel.string name="text modify info 2"> - Sie können diese Objekte ändern + Sie können diese Objekte bearbeiten. </panel.string> <panel.string name="text modify info 3"> - Sie können dieses Objekt nicht ändern + Sie können dieses Objekt nicht bearbeiten. </panel.string> <panel.string name="text modify info 4"> - Sie können diese Objekte nicht ändern + Sie können diese Objekte nicht bearbeiten. </panel.string> <panel.string name="text modify warning"> Gesamtes Objekt wählen, um Berechtigungen festzulegen. @@ -165,13 +168,13 @@ Ersteller: </text> <text name="Creator Name"> - Thrax Linden + Esbee Linden </text> <text name="Owner:"> Eigentümer: </text> <text name="Owner Name"> - Thrax Linden + Erica Linden </text> <text name="Group:"> Gruppe: @@ -189,6 +192,7 @@ <combo_box.item label="Objekt kaufen" name="Buyobject"/> <combo_box.item label="Objekt bezahlen" name="Payobject"/> <combo_box.item label="Öffnen" name="Open"/> + <combo_box.item label="Zoom" name="Zoom"/> </combo_box> <check_box label="Zum Verkauf:" name="checkbox for sale"/> <combo_box name="sale type"> @@ -205,6 +209,7 @@ <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:"> Nächster Eigentümer: @@ -235,7 +240,7 @@ <panel label="Objekt" name="Object"> <check_box label="Gesperrt" name="checkbox locked" tool_tip="Verhindert, dass Objekt verschoben oder gelöscht wird. Oft beim Bauen nützlich, um unbeabsichtigte Bearbeitungen zu vermeiden."/> <check_box label="Physisch" name="Physical Checkbox Ctrl" tool_tip="Gestattet, das Objekt geschoben und von Schwerkraft beeinflusst wird"/> - <check_box label="Temporär" name="Temporary Checkbox Ctrl" tool_tip="Verursacht, dass Objekt 1 Minute nach Erstellung gelöscht wird."/> + <check_box label="Temporär" name="Temporary Checkbox Ctrl" tool_tip="Bewirkt, dass das Objekt 1 Minute nach seiner Erstellung gelöscht wird."/> <check_box label="Phantom" name="Phantom Checkbox Ctrl" tool_tip="Verursacht, dass Objekt nicht mit anderen Objekten oder Avataren kollidiert"/> <text name="label position"> Position (Meter) @@ -358,20 +363,24 @@ <text name="edit_object"> Objekteigenschaften bearbeiten: </text> - <check_box label="Flexibler Weg" name="Flexible1D Checkbox Ctrl" tool_tip="Gestattet, dass Objekt um die Z-Achse gebogen wird. (nur Client-Seite)"/> - <spinner label="Weichheit" name="FlexNumSections"/> - <spinner label="Schwerkraft" name="FlexGravity"/> - <spinner label="Ziehen" name="FlexFriction"/> - <spinner label="Wind" name="FlexWind"/> - <spinner label="Spannung" name="FlexTension"/> - <spinner label="Erzwingen X" name="FlexForceX"/> - <spinner label="Erzwingen Y" name="FlexForceY"/> - <spinner label="Erzwingen Z" name="FlexForceZ"/> + <check_box label="Flexibler Pfad" name="Flexible1D Checkbox Ctrl" tool_tip="Bewirkt, dass sich das Objekt um die Z-Achse biegen kann. (Nur Client-Seite)"/> + <spinner label="Weichheit" name="FlexNumSections" width="140"/> + <spinner label="Schwerkraft" name="FlexGravity" width="140"/> + <spinner label="Ziehen" name="FlexFriction" width="140"/> + <spinner label="Wind" name="FlexWind" width="140"/> + <spinner label="Spannung" name="FlexTension" width="140"/> + <spinner label="Erzwingen X" name="FlexForceX" width="140"/> + <spinner label="Erzwingen Y" name="FlexForceY" width="140"/> + <spinner label="Erzwingen Z" name="FlexForceZ" width="140"/> <check_box label="Licht" name="Light Checkbox Ctrl" tool_tip="Verursacht, dass Objekt Licht emittiert"/> - <color_swatch label="" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen"/> + <color_swatch label="" name="colorswatch" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + <texture_picker label="" name="light texture control" tool_tip="Klicken, um eine Bild auszuwählen (dieser Effekt funktioniert nur, wenn zeitversetzte Wiedergabe aktiviert ist)"/> <spinner label="Intensität" name="Light Intensity"/> + <spinner label="FOV" name="Light FOV"/> <spinner label="Radius" name="Light Radius"/> + <spinner label="Fokus" name="Light Focus"/> <spinner label="Abnehmend" name="Light Falloff"/> + <spinner label="Ambiente" name="Light Ambiance"/> </panel> <panel label="Textur" name="Texture"> <panel.string name="string repeats per meter"> @@ -381,7 +390,7 @@ Wiederholungen pro Fläche </panel.string> <texture_picker label="Textur" name="texture control" tool_tip="Klicken, um ein Bild zu wählen"/> - <color_swatch label="Farbe" name="colorswatch" tool_tip="Klicken, um Farbauswahl zu öffnen"/> + <color_swatch label="Farbe" name="colorswatch" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> <text name="color trans"> Transparenz % </text> @@ -429,18 +438,29 @@ <combo_box.item label="gewoben" name="weave"/> </combo_box> <text name="tex scale"> - Wiederholungen + Wiederholungen / Fläche </text> <spinner label="Horizontal (U)" name="TexScaleU"/> <check_box label="Umkehren" name="checkbox flip s"/> <spinner label="Vertikal (V)" name="TexScaleV"/> <check_box label="Umkehren" name="checkbox flip t"/> + <spinner label="Rotation˚" name="TexRot"/> + <spinner label="Wiederholungen / Meter" name="rptctrl"/> <button label="Übernehmen" label_selected="Übernehmen" name="button apply"/> <text name="tex offset"> Texture-Versatz </text> <spinner label="Horizontal (U)" name="TexOffsetU"/> <spinner label="Vertikal (V)" name="TexOffsetV"/> + <panel name="Add_Media"> + <text name="media_tex"> + 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" tool_tip="Medientexturen angleichen (müssen zunächst geladen werden)"/> + </panel> </panel> <panel label="Inhalt" name="Contents"> <button label="Neues Skript" label_selected="Neues Skript" name="button new script"/> @@ -452,20 +472,13 @@ Parzelleninformation </text> <text name="label_area_price"> - Preis: L$ [PRICE] für [AREA] m² + Preis: [PRICE] L$ für [AREA] m² </text> <text name="label_area"> - Fläche: [AREA] m² + Gebiet: [AREA] m². </text> - <button label="Info zu Land..." label_selected="Info zu Land..." name="button about land"/> - <check_box label="Eigentümer anzeigen" name="checkbox show owners" tool_tip="Parzellen nach Eigentümer farbig kennzeichnen: - -Grün = Ihr Land -Blau = Das Land Ihrer Gruppe -Rot = Im Eigentum anderer -Geld = Zum Verkauf -Lila = Zur Auktion -Grau = Öffentlich"/> + <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"/> <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 082eb8894d..dad550227e 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 GELADEN..."> +<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_tos.xml b/indra/newview/skins/default/xui/de/floater_tos.xml index e2ad5ef2f6..e11b453b41 100644 --- a/indra/newview/skins/default/xui/de/floater_tos.xml +++ b/indra/newview/skins/default/xui/de/floater_tos.xml @@ -1,18 +1,17 @@ -<?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="Weiter" label_selected="Weiter" name="Continue" /> - <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" /> + <button label="Weiter" label_selected="Weiter" name="Continue"/> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> <radio_group name="tos_agreement"> - <radio_item name="radio_disagree" label="Ich stimme den Nutzungsbedingungen nicht zu" /> - <radio_item name="radio_agree" label="Ich stimme den Nutzungsbedingungen zu" /> + <radio_item label="Ich stimme den Nutzungsbedingungen nicht zu" name="radio_disagree"/> + <radio_item label="Ich stimme den Nutzungsbedingungen zu" name="radio_agree"/> </radio_group> <text name="tos_title"> Nutzungsvereinbarung </text> - <check_box label="Ich stimme den Nutzungsbedingungen zu" name="agree_chk" /> + <check_box label="Ich stimme den Nutzungsbedingungen zu" name="agree_chk"/> <text name="tos_heading"> - Lesen Sie die folgenden Nutzungsbedingungen sorgfältig durch. Sie müssen dieser Vereinbarung -zustimmen, um [SECOND_LIFE] benutzen zu können. + Lesen Sie die folgenden Servicebedingungen sorgfältig durch. Sie müssen den Servicebedinungen zustimmen, um [SECOND_LIFE] weiterhin verwenden zu können. </text> <text_editor name="tos_text"> TOS_TEXT diff --git a/indra/newview/skins/default/xui/de/floater_url_entry.xml b/indra/newview/skins/default/xui/de/floater_url_entry.xml index 392d53a33d..f5fa449c85 100644 --- a/indra/newview/skins/default/xui/de/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/de/floater_url_entry.xml @@ -3,10 +3,10 @@ <text name="media_label"> Medien-URL: </text> - <button label="OK" name="ok_btn" /> - <button label="Abbrechen" name="cancel_btn" width="75" /> - <button label="Löschen" name="clear_btn" /> - <text name="loading_label"> + <button label="OK" name="ok_btn" width="30"/> + <button label="Abbrechen" name="cancel_btn" width="66" /> + <button label="Löschen" name="clear_btn" left_pad="100"/> + <text name="loading_label" left="120"> Wird geladen... </text> </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 new file mode 100644 index 0000000000..f978042cc2 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_voice_controls.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_voice_controls" title="Voice-Steuerung"> + <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_water.xml b/indra/newview/skins/default/xui/de/floater_water.xml index 0880470c58..ecd6d7ff3e 100644 --- a/indra/newview/skins/default/xui/de/floater_water.xml +++ b/indra/newview/skins/default/xui/de/floater_water.xml @@ -1,66 +1,53 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Water Floater" title="ERWEITERTER WASSER-EDITOR"> - <text name="KeyFramePresetsText"> + <floater.string name="WLDefaultWaterNames"> + Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez + </floater.string> + <text name="KeyFramePresetsText" width="116"> Voreinstellungen: </text> - <button label="Neu" label_selected="Neu" name="WaterNewPreset" /> - <button label="Speichern" label_selected="Speichern" name="WaterSavePreset" /> - <button label="Löschen" label_selected="Löschen" name="WaterDeletePreset" /> + <button label="Neu" label_selected="Neu" name="WaterNewPreset"/> + <button label="Speichern" label_selected="Speichern" name="WaterSavePreset"/> + <button label="Löschen" label_selected="Löschen" name="WaterDeletePreset"/> <tab_container name="Water Tabs"> <panel label="Einstellungen" name="Settings"> <text name="BHText"> Wassertrübungsfarbe </text> - <button label=" ?" name="WaterFogColorHelp" left="175" /> - <color_swatch name="WaterFogColor" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen" /> + <color_swatch name="WaterFogColor" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> <text name="WaterFogDensText"> Wassertrübungsdichte </text> - <button label=" ?" name="WaterFogDensityHelp" left="175" /> <text name="WaterUnderWaterFogModText"> Wassertrübungs-Modifikator </text> - <button label=" ?" name="WaterUnderWaterFogModHelp" left="175" /> - <slider bottom_delta="-34" name="WaterUnderWaterFogMod" /> + <slider bottom_delta="-34" name="WaterUnderWaterFogMod"/> <text name="BDensText"> Reflexionswellengröße </text> - <button label=" ?" name="WaterNormalScaleHelp" /> - <text name="BHText2"> - 1 - </text> - <text name="BHText3"> - 2 - </text> - <text name="BHText4"> - 3 - </text> + <slider label="1" name="WaterNormalScaleX"/> + <slider label="2" name="WaterNormalScaleY"/> + <slider label="3" name="WaterNormalScaleZ"/> <text name="HDText"> Fresnel-Skalierung </text> - <button label=" ?" name="WaterFresnelScaleHelp" /> <text name="FresnelOffsetText"> Fresnel-Versatz </text> - <button label=" ?" name="WaterFresnelOffsetHelp" /> <text name="DensMultText"> Brechungsstärke oben </text> - <button label=" ?" name="WaterScaleAboveHelp" /> <text name="WaterScaleBelowText"> Brechungsstärke unten </text> - <button label=" ?" name="WaterScaleBelowHelp" /> <text name="MaxAltText"> Mischungsmultiplikator </text> - <button label=" ?" name="WaterBlurMultiplierHelp" /> </panel> <panel label="Bild" name="Waves"> <text name="BHText"> Richtung große Welle </text> - <button label=" ?" name="WaterWave1Help" /> <text name="WaterWave1DirXText"> X </text> @@ -70,7 +57,6 @@ <text name="BHText2"> Richtung kleine Welle </text> - <button label=" ?" name="WaterWave2Help" /> <text name="WaterWave2DirXText"> X </text> @@ -80,10 +66,6 @@ <text name="BHText3"> Normal-Map </text> - <button label=" ?" name="WaterNormalMapHelp" /> </panel> </tab_container> - <string name="WLDefaultWaterNames"> - Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez - </string> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml index dad1b62975..f9b3552e8b 100644 --- a/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml +++ b/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml @@ -1,9 +1,9 @@ -<?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="Speichern" label_selected="Speichern" name="Save" /> - <button label="Abbrechen" label_selected="Abbrechen" name="Cancel" /> + <button label="Speichern" label_selected="Speichern" name="Save"/> + <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> <text name="Save item as:"> - Objekt speichern als: + Objekt in meinem Inventar speichern als: </text> <line_editor name="name ed"> Neu [DESC] diff --git a/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml new file mode 100644 index 0000000000..1332509529 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_whitelist_entry.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="whitelist_entry" title="WHITELISTEN-EINTRAG"> + <text name="media_label"> + Eine URL oder URL + </text> + <line_editor name="whitelist_entry" tool_tip="Eine URL oder URL-Patten in die Whitelist eingeben"/> + <button label="OK" name="ok_btn"/> + <button label="Abbrechen" name="cancel_btn" width="80"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_windlight_options.xml b/indra/newview/skins/default/xui/de/floater_windlight_options.xml index df0b513a85..3e06d8f06b 100644 --- a/indra/newview/skins/default/xui/de/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/de/floater_windlight_options.xml @@ -1,19 +1,18 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="WindLight floater" title="ERWEITERTER HIMMEL-EDITOR"> <text name="KeyFramePresetsText"> Voreinstellungen: </text> - <button label="Neu" label_selected="Neu" name="WLNewPreset" /> - <button label="Speichern" label_selected="Speichern" name="WLSavePreset" /> - <button label="Löschen" label_selected="Löschen" name="WLDeletePreset" /> - <button label="Tageszyklus-Editor" label_selected="Tageszyklus-Editor" - name="WLDayCycleMenuButton" /> + <button label="Neu" label_selected="Neu" name="WLNewPreset"/> + <button label="Speichern" label_selected="Speichern" name="WLSavePreset"/> + <button label="Löschen" label_selected="Löschen" name="WLDeletePreset"/> + <button label="Tageszyklus-Editor" label_selected="Tageszyklus-Editor" name="WLDayCycleMenuButton"/> <tab_container name="WindLight Tabs"> <panel label="Atmosphäre" name="Atmosphere"> <text name="BHText"> Horizontfarbe </text> - <button label=" ?" name="WLBlueHorizonHelp" /> + <button label=" ?" name="WLBlueHorizonHelp"/> <text name="BHText2"> R </text> @@ -29,11 +28,11 @@ <text name="BDensText"> Horizonttrübung </text> - <button label=" ?" name="WLHazeHorizonHelp" /> + <button label=" ?" name="WLHazeHorizonHelp"/> <text name="BDensText2"> Farbintensität </text> - <button label=" ?" name="WLBlueDensityHelp" /> + <button label=" ?" name="WLBlueDensityHelp"/> <text name="BHText6"> R </text> @@ -49,25 +48,25 @@ <text name="HDText"> Trübungsintensität </text> - <button label=" ?" name="WLHazeDensityHelp" /> + <button label=" ?" name="WLHazeDensityHelp"/> <text name="DensMultText"> Dichtemultiplikator </text> - <button label=" ?" name="WLDensityMultHelp" /> + <button label=" ?" name="WLDensityMultHelp"/> <text name="WLDistanceMultText"> Entfernungsmultiplikator </text> - <button label=" ?" name="WLDistanceMultHelp" /> + <button label=" ?" name="WLDistanceMultHelp"/> <text name="MaxAltText"> Max. Höhe </text> - <button label=" ?" name="WLMaxAltitudeHelp" /> + <button label=" ?" name="WLMaxAltitudeHelp"/> </panel> <panel label="Licht" name="Lighting"> <text name="SLCText"> Sonne/Mond-Farbe </text> - <button label=" ?" name="WLSunlightColorHelp" /> + <button label=" ?" name="WLSunlightColorHelp"/> <text name="BHText"> R </text> @@ -83,11 +82,11 @@ <text name="TODText"> Sonne/Mond-Stand </text> - <button label=" ?" name="WLTimeOfDayHelp" /> + <button label=" ?" name="WLTimeOfDayHelp"/> <text name="WLAmbientText"> Umgebung </text> - <button label=" ?" name="WLAmbientHelp" /> + <button label=" ?" name="WLAmbientHelp"/> <text name="BHText5"> R </text> @@ -103,27 +102,27 @@ <text name="WLEastAngleText"> Ostausrichtung </text> - <button label=" ?" name="WLEastAngleHelp" /> + <button label=" ?" name="WLEastAngleHelp"/> <text name="SunGlowText"> Sonnenleuchtkraft </text> - <button label=" ?" name="WLSunGlowHelp" /> - <slider label="Fokus " name="WLGlowB" /> - <slider label="Größe " name="WLGlowR" /> + <button label=" ?" name="WLSunGlowHelp"/> + <slider label="Fokus " name="WLGlowB"/> + <slider label="Größe " name="WLGlowR"/> <text name="SceneGammaText"> Gamma in Szene </text> - <button label=" ?" name="WLSceneGammaHelp" /> + <button label=" ?" name="WLSceneGammaHelp"/> <text name="WLStarText"> Sternenleuchtkraft </text> - <button label=" ?" name="WLStarBrightnessHelp" /> + <button label=" ?" name="WLStarBrightnessHelp"/> </panel> <panel label="Wolken" name="Clouds"> <text name="WLCloudColorText"> Wolkenfarbe </text> - <button label=" ?" name="WLCloudColorHelp" /> + <button label=" ?" name="WLCloudColorHelp"/> <text name="BHText"> R </text> @@ -139,7 +138,7 @@ <text name="WLCloudColorText2"> Wolken-XY/Dichte </text> - <button label=" ?" name="WLCloudDensityHelp" /> + <button label=" ?" name="WLCloudDensityHelp"/> <text name="BHText5"> X </text> @@ -152,15 +151,15 @@ <text name="WLCloudCoverageText"> Wolkendichte </text> - <button label=" ?" name="WLCloudCoverageHelp" /> + <button label=" ?" name="WLCloudCoverageHelp"/> <text name="WLCloudScaleText"> Wolkenskalierung </text> - <button label=" ?" name="WLCloudScaleHelp" /> + <button label=" ?" name="WLCloudScaleHelp"/> <text name="WLCloudDetailText"> Wolkendetails (XY/Dichte) </text> - <button label=" ?" name="WLCloudDetailHelp" /> + <button label=" ?" name="WLCloudDetailHelp"/> <text name="BHText8"> X </text> @@ -173,15 +172,15 @@ <text name="WLCloudScrollXText"> Wolkenbewegung X </text> - <button label=" ?" name="WLCloudScrollXHelp" /> - <check_box label="Fest" name="WLCloudLockX" /> + <button label=" ?" name="WLCloudScrollXHelp"/> + <check_box label="Fest" name="WLCloudLockX"/> <text name="WLCloudScrollYText"> Wolkenbewegung Y </text> - <button label=" ?" name="WLCloudScrollYHelp" /> - <check_box label="Fest" name="WLCloudLockY" /> - <check_box label="Klassische Wolken" name="DrawClassicClouds" /> - <button label=" ?" name="WLClassicCloudsHelp" /> + <button label=" ?" name="WLCloudScrollYHelp"/> + <check_box label="Fest" name="WLCloudLockY"/> + <check_box label="Klassische Wolken" name="DrawClassicClouds"/> + <button label=" ?" name="WLClassicCloudsHelp"/> </panel> </tab_container> <string name="WLDefaultSkyNames"> 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 0000000000..a2a53e0567 --- /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 665eafe5b8..7d8a634452 100644 --- a/indra/newview/skins/default/xui/de/floater_world_map.xml +++ b/indra/newview/skins/default/xui/de/floater_world_map.xml @@ -1,57 +1,82 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="worldmap" title="WELTKARTE"> - <tab_container name="maptab"> - <panel label="Objekte" name="objects_mapview"/> - <panel label="Terrain" name="terrain_mapview"/> - </tab_container> - <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="telehubchk"/> - <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 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 name="item1" label="Online-Freunde" /> - </combo_box> - <combo_box label="Landmarken" name="landmark combo" tool_tip="Landmarke, die auf Karte angezeigt werden soll"> - <combo_box.item name="item1" label="Landmarken" /> - </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"> - <column label="" name="icon"/> - <column 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"/> +<floater name="worldmap" title="KARTE"> + <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="Nach Hause 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"/> + <button name="Clear" tool_tip="Karte zurücksetzen"/> + <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 58e0498b05..a0bd24a69f 100644 --- a/indra/newview/skins/default/xui/de/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/de/inspect_avatar.xml @@ -8,9 +8,19 @@ [AGE] </string> <string name="Details"> - [ACCTTYPE], [PAYMENTINFO] -Profil: [SL_PROFILE] + [SL_PROFILE] </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> <slider name="volume_slider" tool_tip="Lautstärke" value="0.5"/> - <button label="Freund hinzufügen" name="add_friend_btn"/> + <button label="Freund hinzufügen" name="add_friend_btn" width="110"/> + <button label="IM" name="im_btn"/> + <button label="Profil" left_delta="120" name="view_profile_btn" width="44"/> + <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 new file mode 100644 index 0000000000..badb47bf08 --- /dev/null +++ b/indra/newview/skins/default/xui/de/inspect_group.xml @@ -0,0 +1,35 @@ +<?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"> + Private Gruppe + </string> + <string name="FreeToJoin"> + Mitgliedschaft kostenlos + </string> + <string name="CostToJoin"> + Mitgliedschaft: [AMOUNT] L$ + </string> + <string name="YouAreMember"> + Sie sind Mitglied + </string> + <text name="group_name"> + Grumpitys schlecht gelaunte Elche + </text> + <text name="group_subtitle"> + 123 Mitglieder + </text> + <text name="group_details"> + Eine Gruppe für Leute, die sich gerne mit Elchen unterhält. +Hoch solln sie leben! Elche forever! Und auch Mungos! + </text> + <text name="group_cost"> + Mitgliedschaft: 123 L$ + </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/inspect_object.xml b/indra/newview/skins/default/xui/de/inspect_object.xml new file mode 100644 index 0000000000..ede14a37d7 --- /dev/null +++ b/indra/newview/skins/default/xui/de/inspect_object.xml @@ -0,0 +1,48 @@ +<?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"> + Von [CREATOR] + </string> + <string name="CreatorAndOwner"> + von [CREATOR] +Besitzer [OWNER] + </string> + <string name="Price"> + [AMOUNT] L$ + </string> + <string name="PriceFree"> + Kostenlos! + </string> + <string name="Touch"> + Berühren + </string> + <string name="Sit"> + Sitzen + </string> + <text name="object_name" value="Wirklich langen Objektnamen als Test eingeben"/> + <text name="object_creator"> + von secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about +Besitzer secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about + </text> + <text name="price_text"> + 300.000 L$ + </text> + <text name="object_description"> + Dies ist eine wirklich lange Beschreibung für ein Objekt, mindestens 80 Zeichen lang oder jetzt schon 120 Zeichen. Niemand weiß es genau. + </text> + <text name="object_media_url"> + http://www.superdupertest.com + </text> + <button label="Kaufen" name="buy_btn"/> + <button label="Bezahlen" name="pay_btn"/> + <button label="Kopie nehmen" name="take_free_copy_btn" width="100"/> + <button label="Berühren" name="touch_btn"/> + <button label="Sitzen" name="sit_btn"/> + <button label="Öffnen" name="open_btn"/> + <icon name="secure_browsing" tool_tip="Sicheres Browsen"/> + <button label="Mehr" name="more_info_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/inspect_remote_object.xml b/indra/newview/skins/default/xui/de/inspect_remote_object.xml new file mode 100644 index 0000000000..9fe05455eb --- /dev/null +++ b/indra/newview/skins/default/xui/de/inspect_remote_object.xml @@ -0,0 +1,25 @@ +<?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_name"> + Wirklich langen Objektnamen als Test eingeben + </text> + <text name="object_owner_label"> + Eigentümer: + </text> + <text name="object_owner"> + Langeravatarname Schmidtmeyermülllermuster + </text> + <text name="object_slurl_label"> + Standort: + </text> + <text name="object_slurl"> + http://slurl.com/Ahern/50/50/50 + </text> + <button label="Karte" name="map_btn"/> + <button label="Ignorieren" name="block_btn"/> + <button label="Schließen" name="close_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 0000000000..d234443fae --- /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="Bezahlen" 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 0000000000..bc33b9b93d --- /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 b1e119c66a..c036cf5515 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 0000000000..05eade1d34 --- /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="Bezahlen" 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 0000000000..3a116b84a2 --- /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 new file mode 100644 index 0000000000..3f12906adc --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Schaltfläche Gesten" name="ShowGestureButton"/> + <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_gesture_gear.xml b/indra/newview/skins/default/xui/de/menu_gesture_gear.xml new file mode 100644 index 0000000000..953c0eeed5 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Zu Favoriten hinzufügen/daraus entfernen" name="activate"/> + <menu_item_call label="Kopieren" name="copy_gesture"/> + <menu_item_call label="Einfügen" name="paste"/> + <menu_item_call label="UUID kopieren" name="copy_uuid"/> + <menu_item_call label="Aktuelles Outfit speichern" name="save_to_outfit"/> + <menu_item_call label="Bearbeiten" name="edit_gesture"/> + <menu_item_call label="Untersuchen" name="inspect"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_hide_navbar.xml b/indra/newview/skins/default/xui/de/menu_hide_navbar.xml new file mode 100644 index 0000000000..32a6823b35 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Navigationsleiste anzeigen" name="ShowNavbarNavigationPanel"/> + <menu_item_check label="Favoritenleiste anzeigen" name="ShowNavbarFavoritesPanel"/> +</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 0000000000..f464b71f4a --- /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 0000000000..11f93f47b4 --- /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_imchiclet_group.xml b/indra/newview/skins/default/xui/de/menu_imchiclet_group.xml new file mode 100644 index 0000000000..81ef3b6569 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Gruppeninfo" name="Show Profile"/> + <menu_item_call label="Sitzung anzeigen" name="Chat"/> + <menu_item_call label="Sitzung beenden" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/de/menu_imchiclet_p2p.xml new file mode 100644 index 0000000000..d123238246 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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 anzeigen" name="Show Profile"/> + <menu_item_call label="Freund hinzufügen" name="Add Friend"/> + <menu_item_call label="Sitzung anzeigen" name="Send IM"/> + <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 new file mode 100644 index 0000000000..6f003dc9a5 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <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="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"/> + <menu_item_call label="Debug" name="debug"/> + <menu_item_call label="Auf Karte anzeigen" name="find_on_map"/> + <menu_item_call label="Hineinzoomen" name="zoom_in"/> + <menu_item_call label="Bezahlen" name="pay"/> + <menu_item_call label="Teilen" name="share"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_object_gear.xml new file mode 100644 index 0000000000..634ef0b198 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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ühren" name="touch"/> + <menu_item_call label="Sitzen" name="sit"/> + <menu_item_call label="Bezahlen" name="pay"/> + <menu_item_call label="Kaufen" name="buy"/> + <menu_item_call label="Nehmen" name="take"/> + <menu_item_call label="Kopie nehmen" name="take_copy"/> + <menu_item_call label="Öffnen" name="open"/> + <menu_item_call label="Bearbeiten" name="edit"/> + <menu_item_call label="Anziehen" name="wear"/> + <menu_item_call label="Melden" name="report"/> + <menu_item_call label="Ignorieren" name="block"/> + <menu_item_call label="Hineinzoomen" name="zoom_in"/> + <menu_item_call label="Entfernen" name="remove"/> + <menu_item_call label="Weitere Infos" name="more_info"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml new file mode 100644 index 0000000000..383ee7831e --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Aufstehen" name="stand_up"/> + <menu_item_call label="Mein Aussehen" name="my_appearance"/> + <menu_item_call label="Mein Profil" name="my_profile"/> + <menu_item_call label="Meine Freunde" name="my_friends"/> + <menu_item_call label="Meine Gruppen" name="my_groups"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_inventory.xml b/indra/newview/skins/default/xui/de/menu_inventory.xml index 7b4335a430..a0625d88a8 100644 --- a/indra/newview/skins/default/xui/de/menu_inventory.xml +++ b/indra/newview/skins/default/xui/de/menu_inventory.xml @@ -2,7 +2,7 @@ <menu name="Popup"> <menu_item_call label="Kaufen" name="Task Buy"/> <menu_item_call label="Öffnen" name="Task Open"/> - <menu_item_call label="Wiedergeben/Abspielen" name="Task Play"/> + <menu_item_call label="Abspielen" name="Task Play"/> <menu_item_call label="Eigenschaften" name="Task Properties"/> <menu_item_call label="Umbenennen" name="Task Rename"/> <menu_item_call label="Löschen" name="Task Remove"/> @@ -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"/> @@ -22,6 +22,8 @@ <menu_item_call label="Neue Handschuhe" name="New Gloves"/> <menu_item_call label="Neues Unterhemd" name="New Undershirt"/> <menu_item_call label="Neue Unterhose" name="New Underpants"/> + <menu_item_call label="Neue Alpha-Maske" name="New Alpha Mask"/> + <menu_item_call label="Neue Tätowierung" name="New Tattoo"/> </menu> <menu label="Neue Körperteile" name="New Body Parts"> <menu_item_call label="Neue Form/Gestalt" name="New Shape"/> @@ -44,27 +46,33 @@ <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"/> <menu_item_call label="Öffnen" name="Open"/> <menu_item_call label="Eigenschaften" name="Properties"/> <menu_item_call label="Umbenennen" name="Rename"/> <menu_item_call label="Asset-UUID kopieren" name="Copy Asset UUID"/> <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="Objekte abnehmen" name="Take Off Items"/> - <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="In Welt abspielen" name="Animation Play"/> - <menu_item_call label="Lokal wiedergeben" name="Animation Audition"/> + <menu_item_call label="Landmarken-Info" name="About Landmark"/> + <menu_item_call label="Inworld abspielen" name="Animation Play"/> + <menu_item_call label="Lokal abspielen" name="Animation Audition"/> <menu_item_call label="Instant Message senden" name="Send Instant Message"/> <menu_item_call label="Teleport anbieten..." name="Offer Teleport..."/> <menu_item_call label="Konferenz-Chat starten" name="Conference Chat"/> <menu_item_call label="Aktivieren" name="Activate"/> <menu_item_call label="Deaktivieren" name="Deactivate"/> + <menu_item_call label="Speichern unter" name="Save As"/> <menu_item_call label="Von Körper abnehmen" name="Detach From Yourself"/> <menu_item_call label="Anziehen" name="Object Wear"/> <menu label="Anhängen an" name="Attach To"/> diff --git a/indra/newview/skins/default/xui/de/menu_inventory_add.xml b/indra/newview/skins/default/xui/de/menu_inventory_add.xml new file mode 100644 index 0000000000..448b1d80bf --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_inventory_add.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_inventory_add"> + <menu label="Hochladen" name="upload"> + <menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/> + <menu_item_call label="Sound ([COST] L$)..." name="Upload Sound"/> + <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/> + </menu> + <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"/> + <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"/> + <menu_item_call label="Neue Hose" name="New Pants"/> + <menu_item_call label="Neue Schuhe" name="New Shoes"/> + <menu_item_call label="Neue Socken" name="New Socks"/> + <menu_item_call label="Neue Jacke" name="New Jacket"/> + <menu_item_call label="Neuer Rock" name="New Skirt"/> + <menu_item_call label="Neue Handschuhe" name="New Gloves"/> + <menu_item_call label="Neues Unterhemd" name="New Undershirt"/> + <menu_item_call label="Neue Unterhose" name="New Underpants"/> + <menu_item_call label="Alpha: Neu" name="New Alpha"/> + <menu_item_call label="Neue Tätowierung" name="New Tattoo"/> + </menu> + <menu label="Neue Körperteile" name="New Body Parts"> + <menu_item_call label="Neue Form/Gestalt" name="New Shape"/> + <menu_item_call label="Neue Haut" name="New Skin"/> + <menu_item_call label="Neues Haar" name="New Hair"/> + <menu_item_call label="Neue Augen" name="New Eyes"/> + </menu> +</menu> 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 new file mode 100644 index 0000000000..e2b980c7b6 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="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"/> + <menu_item_call label="Filter zurücksetzen" name="reset_filters"/> + <menu_item_call label="Alle Ordner schließen" name="close_folders"/> + <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 0000000000..9b1e6727b7 --- /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_landmark.xml b/indra/newview/skins/default/xui/de/menu_landmark.xml index b100ee11d7..2aff0eec95 100644 --- a/indra/newview/skins/default/xui/de/menu_landmark.xml +++ b/indra/newview/skins/default/xui/de/menu_landmark.xml @@ -3,4 +3,5 @@ <menu_item_call label="SLurl kopieren" name="copy"/> <menu_item_call label="Löschen" name="delete"/> <menu_item_call label="Auswahl erstellen" name="pick"/> + <menu_item_call label="Zu Favoritenleiste hinzufügen" name="add_to_favbar"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml index 887d8d1b84..fffa056cac 100644 --- a/indra/newview/skins/default/xui/de/menu_login.xml +++ b/indra/newview/skins/default/xui/de/menu_login.xml @@ -1,13 +1,32 @@ -<?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="Datei" name="File"> - <menu_item_call label="Beenden" name="Quit" /> - </menu> - <menu label="Bearbeiten" name="Edit"> - <menu_item_call label="Einstellungen..." name="Preferences..." /> + <menu label="Ich" name="File"> + <menu_item_call label="Einstellungen" name="Preferences..."/> + <menu_item_call label="[APP_NAME] schließen" name="Quit"/> </menu> <menu label="Hilfe" name="Help"> - <menu_item_call label="Hilfe zu [SECOND_LIFE]" name="Second Life Help" /> - <menu_item_call label="Über [APP_NAME]..." name="About Second Life..." /> + <menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/> + <menu_item_call label="INFO ÜBER [APP_NAME]" name="About Second Life"/> + </menu> + <menu label="Debug" name="Debug"> + <menu label="Bearbeiten" name="Edit"> + <menu_item_call label="Rückgängig" name="Undo"/> + <menu_item_call label="Wiederherstellen" name="Redo"/> + <menu_item_call label="Ausschneiden" name="Cut"/> + <menu_item_call label="Kopieren" name="Copy"/> + <menu_item_call label="Einfügen" name="Paste"/> + <menu_item_call label="Löschen" name="Delete"/> + <menu_item_call label="Duplizieren" name="Duplicate"/> + <menu_item_call label="Alle auswählen" name="Select All"/> + <menu_item_call label="Auswahl aufheben" name="Deselect"/> + </menu> + <menu_item_call label="Debug-Einstellungen anzeigen" name="Debug Settings"/> + <menu_item_call label="UI/Farb-Einstellungen" name="UI/Color Settings"/> + <menu_item_call label="XUI-Editor" name="UI Preview Tool"/> + <menu label="UI-Tests" name="UI Tests"/> + <menu_item_call label="Fenstergröße einstellen..." name="Set Window Size..."/> + <menu_item_call label="Servicebedingungen anzeigen" name="TOS"/> + <menu_item_call label="Wichtige Meldung anzeigen" name="Critical"/> + <menu_item_call label="Web-Browser-Test" name="Web Browser Test"/> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/de/menu_mini_map.xml b/indra/newview/skins/default/xui/de/menu_mini_map.xml index a3179b42f8..a3ebfb3b10 100644 --- a/indra/newview/skins/default/xui/de/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/de/menu_mini_map.xml @@ -3,6 +3,7 @@ <menu_item_call label="Zoom Nah" name="Zoom Close"/> <menu_item_call label="Zoom Mittel" name="Zoom Medium"/> <menu_item_call label="Zoom Weit" name="Zoom Far"/> + <menu_item_check label="Karte drehen" name="Rotate Map"/> <menu_item_call label="Verfolgung abschalten" name="Stop Tracking"/> <menu_item_call label="Weltkarte" name="World Map"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_navbar.xml b/indra/newview/skins/default/xui/de/menu_navbar.xml index 6af01ddcc5..5175f34b41 100644 --- a/indra/newview/skins/default/xui/de/menu_navbar.xml +++ b/indra/newview/skins/default/xui/de/menu_navbar.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Navbar Menu"> <menu_item_check label="Koordinaten anzeigen" name="Show Coordinates"/> + <menu_item_check label="Parzelleneigenschaften anzeigen" name="Show Parcel Properties"/> <menu_item_call label="Landmarke" name="Landmark"/> <menu_item_call label="Ausschneiden" name="Cut"/> <menu_item_call label="Kopieren" name="Copy"/> diff --git a/indra/newview/skins/default/xui/de/menu_nearby_chat.xml b/indra/newview/skins/default/xui/de/menu_nearby_chat.xml new file mode 100644 index 0000000000..99d6428c3f --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Leute in der Nähe anzeigen..." name="nearby_people"/> + <menu_item_check label="Ignorierten Text anzeigen" name="muted_text"/> + <menu_item_check label="Bilder von Freunden anzeigen" name="show_buddy_icons"/> + <menu_item_check label="Namen anzeigen" name="show_names"/> + <menu_item_check label="Namen und Symbole anzeigen" name="show_icons_and_names"/> + <menu_item_call label="Schriftgröße" name="font_size"/> +</menu> 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 0000000000..0f2784f160 --- /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 0000000000..320f93c796 --- /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="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="Nehmen" name="Pie Object Take"/> + <menu_item_call label="Kopie nehmen" name="Take Copy"/> + <menu_item_call label="Bezahlen" name="Pay..."/> + <menu_item_call label="Kaufen" name="Buy..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_object_icon.xml b/indra/newview/skins/default/xui/de/menu_object_icon.xml new file mode 100644 index 0000000000..8b6c558416 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Objektprofil..." name="Object Profile"/> + <menu_item_call label="Ignorieren..." name="Block"/> +</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 new file mode 100644 index 0000000000..5ca4eaaa50 --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_participant_list.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Participant List Context Menu"> + <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="Bezahlen" 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_friends_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_friends_view_sort.xml new file mode 100644 index 0000000000..9d50a42ed4 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Nach Name sortieren" name="sort_name"/> + <menu_item_check label="Nach Status sortieren" name="sort_status"/> + <menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/> + <menu_item_call label="Ignorierte Einwohner & Objekte anzeigen" name="show_blocked_list"/> +</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 0000000000..76225ba241 --- /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="Info anzeigen" 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_groups_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_groups_view_sort.xml new file mode 100644 index 0000000000..b68597d8aa --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Gruppensymbole anzeigen" name="Display Group Icons"/> + <menu_item_call label="Ausgewählte Gruppe verlassen" name="Leave Selected Group"/> +</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 new file mode 100644 index 0000000000..a69ef3891a --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_people_nearby.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Avatar Context Menu"> + <menu_item_call label="Profil anzeigen" name="View Profile"/> + <menu_item_call label="Freund hinzufügen" name="Add Friend"/> + <menu_item_call label="Freund entfernen" name="Remove 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="Bezahlen" 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_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml new file mode 100644 index 0000000000..d978d9e40c --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_people_nearby_multiselect.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Multi-Selected People Context Menu"> + <menu_item_call label="Freunde hinzufügen" name="Add Friends"/> + <menu_item_call label="Freunde entfernen" name="Remove 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="Bezahlen" name="Pay"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml new file mode 100644 index 0000000000..0f252ab46d --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Nach letzten Sprechern sortieren" name="sort_by_recent_speakers"/> + <menu_item_check label="Nach Name sortieren" name="sort_name"/> + <menu_item_check label="Nach Entfernung sortieren" name="sort_distance"/> + <menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/> + <menu_item_call label="Ignorierte Einwohner & Objekte anzeigen" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_recent_view_sort.xml new file mode 100644 index 0000000000..1ef020f5e1 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Nach aktuellesten Sprechern sortieren" name="sort_most"/> + <menu_item_check label="Nach Name sortieren" name="sort_name"/> + <menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/> + <menu_item_call label="Ignorierte Einwohner & Objekte anzeigen" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_picks_plus.xml b/indra/newview/skins/default/xui/de/menu_picks_plus.xml new file mode 100644 index 0000000000..385ff25b95 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Neue Auswahl" name="create_pick"/> + <menu_item_call label="Neue Anzeige" name="create_classified"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/de/menu_place_add_button.xml b/indra/newview/skins/default/xui/de/menu_place_add_button.xml new file mode 100644 index 0000000000..7c0ff4a46a --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Ordner hinzufügen" name="add_folder"/> + <menu_item_call label="Landmarke hinzufügen" name="add_landmark"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/de/menu_places_gear_folder.xml new file mode 100644 index 0000000000..132d3f6466 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Landmarke hinzufügen" name="add_landmark"/> + <menu_item_call label="Ordner hinzufügen" name="add_folder"/> + <menu_item_call label="Ausschneiden" name="cut"/> + <menu_item_call label="Kopieren" name="copy_folder"/> + <menu_item_call label="Einfügen" name="paste"/> + <menu_item_call label="Umbenennen" name="rename"/> + <menu_item_call label="Löschen" name="delete"/> + <menu_item_call label="Erweitern Sie sich" name="expand"/> + <menu_item_call label="Zuklappen" name="collapse"/> + <menu_item_call label="Alle Ordner aufklappen" name="expand_all"/> + <menu_item_call label="Alle Ordner schließen" name="collapse_all"/> + <menu_item_check label="Nach Datum sortieren" name="sort_by_date"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/de/menu_places_gear_landmark.xml new file mode 100644 index 0000000000..6af4d644af --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Teleportieren" name="teleport"/> + <menu_item_call label="Weitere Informationen" name="more_info"/> + <menu_item_call label="Auf Karte zeigen" name="show_on_map"/> + <menu_item_call label="Landmarke hinzufügen" name="add_landmark"/> + <menu_item_call label="Ordner hinzufügen" name="add_folder"/> + <menu_item_call label="Ausschneiden" name="cut"/> + <menu_item_call label="Landmarke kopieren" name="copy_landmark"/> + <menu_item_call label="SLurl kopieren" name="copy_slurl"/> + <menu_item_call label="Einfügen" name="paste"/> + <menu_item_call label="Umbenennen" name="rename"/> + <menu_item_call label="Löschen" name="delete"/> + <menu_item_call label="Alle Ordner aufklappen" name="expand_all"/> + <menu_item_call label="Alle Ordner schließen" name="collapse_all"/> + <menu_item_check label="Nach Datum sortieren" name="sort_by_date"/> + <menu_item_call label="Auswahl erstellen" name="create_pick"/> +</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 new file mode 100644 index 0000000000..03bc19aa3f --- /dev/null +++ b/indra/newview/skins/default/xui/de/menu_profile_overflow.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="profile_overflow_menu"> + <menu_item_call label="Bezahlen" name="pay"/> + <menu_item_call label="Teilen" name="share"/> + <menu_item_call label="Ignorieren" name="block"/> + <menu_item_call label="Freischalten" name="unblock"/> + <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_teleport_history_gear.xml b/indra/newview/skins/default/xui/de/menu_teleport_history_gear.xml new file mode 100644 index 0000000000..68b8e21802 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Alle Ordner aufklappen" name="Expand all folders"/> + <menu_item_call label="Alle Ordner schließen" name="Collapse all folders"/> + <menu_item_call label="Teleport-Liste löschen" name="Clear Teleport History"/> +</menu> diff --git a/indra/newview/skins/default/xui/de/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/de/menu_teleport_history_item.xml new file mode 100644 index 0000000000..ff8fb0b181 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Teleportieren" name="Teleport"/> + <menu_item_call label="Weitere Informationen" name="More Information"/> + <menu_item_call label="In Zwischenablage kopieren" name="CopyToClipboard"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/de/menu_teleport_history_tab.xml new file mode 100644 index 0000000000..194dd16fd1 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Öffnen" name="TabOpen"/> + <menu_item_call label="Schließen" name="TabClose"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_text_editor.xml b/indra/newview/skins/default/xui/de/menu_text_editor.xml new file mode 100644 index 0000000000..c00186c13e --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Ausschneiden" name="Cut"/> + <menu_item_call label="Kopieren" name="Copy"/> + <menu_item_call label="Einfügen" name="Paste"/> + <menu_item_call label="Löschen" name="Delete"/> + <menu_item_call label="Alle auswählen" name="Select All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_url_inventory.xml b/indra/newview/skins/default/xui/de/menu_url_inventory.xml new file mode 100644 index 0000000000..dc069df02b --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Inventarobjekte anzeigen" name="show_item"/> + <menu_item_call label="Name in Zwischenablage kopieren" name="url_copy_label"/> + <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_url_map.xml b/indra/newview/skins/default/xui/de/menu_url_map.xml new file mode 100644 index 0000000000..2f6ffcd450 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Auf Karte zeigen" name="show_on_map"/> + <menu_item_call label="Zu Position teleportieren" name="teleport_to_location"/> + <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_url_objectim.xml b/indra/newview/skins/default/xui/de/menu_url_objectim.xml index 11f242b540..90d3763d9c 100644 --- a/indra/newview/skins/default/xui/de/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/de/menu_url_objectim.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Objektinformationen anzeigen" name="show_object"/> + <menu_item_call label="Auf Karte zeigen" name="show_on_map"/> <menu_item_call label="Zu Objekt-Position teleportieren" name="teleport_to_object"/> <menu_item_call label="Objektname in Zwischenablage kopieren" name="url_copy_label"/> <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/> diff --git a/indra/newview/skins/default/xui/de/menu_url_parcel.xml b/indra/newview/skins/default/xui/de/menu_url_parcel.xml index 707079f8cc..9169bca24f 100644 --- a/indra/newview/skins/default/xui/de/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/de/menu_url_parcel.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Parzelleninformationen anzeigen" name="show_parcel"/> + <menu_item_call label="Auf Karte zeigen" name="show_on_map"/> <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_url_slapp.xml b/indra/newview/skins/default/xui/de/menu_url_slapp.xml new file mode 100644 index 0000000000..72e916b902 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Diesen Befehl ausführen" name="run_slapp"/> + <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_url_slurl.xml b/indra/newview/skins/default/xui/de/menu_url_slurl.xml index 9b6417456c..5d48230ebf 100644 --- a/indra/newview/skins/default/xui/de/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/de/menu_url_slurl.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Ortsinformationen anzeigen" name="show_place"/> + <menu_item_call label="Auf Karte zeigen" name="show_on_map"/> <menu_item_call label="Zu Position teleportieren" name="teleport_to_location"/> <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_url_teleport.xml b/indra/newview/skins/default/xui/de/menu_url_teleport.xml index 306977574c..4cc1ecc70e 100644 --- a/indra/newview/skins/default/xui/de/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/de/menu_url_teleport.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="An diesen Standort teleportieren" name="teleport"/> + <menu_item_call label="Auf Karte zeigen" name="show_on_map"/> <menu_item_call label="SLurl in die Zwischenablage kopieren" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml index 317b525062..a04532376c 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -1,225 +1,416 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Main Menu"> - <menu name="Me"> + <menu label="Ich" name="Me"> <menu_item_call label="Einstellungen" 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=de" /> + <menu_item_call label="Meine Startseite" name="Manage My Account"> + <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=de"/> </menu_item_call> - </menu> - <menu label="Datei" name="File"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu label="Hochladen" name="upload"> - <menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/> - <menu_item_call label="Sound ([COST] L$)..." name="Upload Sound"/> - <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> - <menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Standard-Berechtigungen einstellen..." name="perm prefs"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Fenster schließen" name="Close Window"/> - <menu_item_call label="Alle Fenster schließen" name="Close All Windows"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Textur speichern unter..." name="Save Texture As..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Foto machen" name="Take Snapshot"/> - <menu_item_call label="Foto auf Datenträger" name="Snapshot to Disk"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Beenden" name="Quit"/> - </menu> - <menu label="Bearbeiten" name="Edit"> - <menu_item_call label="Rückgängig" name="Undo"/> - <menu_item_call label="Wiederherstellen" name="Redo"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Ausschneiden" name="Cut"/> - <menu_item_call label="Kopieren" name="Copy"/> - <menu_item_call label="Einfügen" name="Paste"/> - <menu_item_call label="Löschen" name="Delete"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Suchen..." name="Search..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Alle auswählen" name="Select All"/> - <menu_item_call label="Auswahl aufheben" name="Deselect"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Duplizieren" name="Duplicate"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu label="Objekt anhängen" name="Attach Object"/> - <menu label="Objekt abnehmen" name="Detach Object"/> - <menu label="Kleider ausziehen" name="Take Off Clothing"> - <menu_item_call label="Hemd" name="Shirt"/> - <menu_item_call label="Hose" name="Pants"/> - <menu_item_call label="Schuhe" name="Shoes"/> - <menu_item_call label="Socken" name="Socks"/> - <menu_item_call label="Jacke" name="Jacket"/> - <menu_item_call label="Handschuhe" name="Gloves"/> - <menu_item_call label="Unterhemd" name="Menu Undershirt"/> - <menu_item_call label="Unterhose" name="Menu Underpants"/> - <menu_item_call label="Rock" name="Skirt"/> - <menu_item_call label="Alle Kleider" name="All Clothes"/> + <menu_item_call label="L$ kaufen" name="Buy and Sell L$"/> + <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_check label="Mein Inventar" name="ShowSidetrayInventory"/> + <menu_item_check label="Meine Gesten" name="Gestures"/> + <menu label="Mein Status" name="Status"> + <menu_item_call label="Abwesend" name="Set Away"/> + <menu_item_call label="Beschäftigt" name="Set Busy"/> </menu> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Gesten..." name="Gestures..."/> - <menu_item_call label="Profil..." name="Profile..."/> - <menu_item_call label="Aussehen..." name="Appearance..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_check label="Freunde..." name="Friends..."/> - <menu_item_call label="Gruppen..." name="Groups..."/> - <menu_item_separator label="-----------" name="separator8"/> - <menu_item_call label="Einstellungen..." name="Preferences..."/> + <menu_item_call label="Admin-Status anfordern" name="Request Admin Options"/> + <menu_item_call label="Admin-Status verlassen" name="Leave Admin Options"/> + <menu_item_call label="[APP_NAME] schließen" name="Quit"/> </menu> - <menu label="Ansicht" name="View"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_call label="Mouselook" name="Mouselook"/> - <menu_item_check label="Bauen" name="Build"/> - <menu_item_check label="Joystick-Flycam" name="Joystick Flycam"/> - <menu_item_call label="Ansicht zurücksetzen" name="Reset View"/> - <menu_item_call label="Letzten Chatter ansehen" name="Look at Last Chatter"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Symbolleiste" name="Toolbar"/> - <menu_item_check label="Lokaler Chat" name="Chat History"/> - <menu_item_check label="Unterhalten" name="Instant Message"/> - <menu_item_check label="Inventar" name="Inventory"/> - <menu_item_check label="Aktive Sprecher" name="Active Speakers"/> - <menu_item_check label="Stummschalten-Liste" name="Mute List"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Kamerasteuerung" name="Camera Controls"/> - <menu_item_check label="Bewegungssteuerung" name="Movement Controls"/> - <menu_item_check label="Weltkarte" name="World Map"/> - <menu_item_check label="Minikarte" name="Mini-Map"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Statistikleiste" name="Statistics Bar"/> - <menu_item_check label="Grundstücksgrenzen" name="Property Lines"/> - <menu_item_check label="Absperrungen" name="Banlines"/> - <menu_item_check label="Landeigentümer" name="Land Owners"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu label="Schwebe-Tipps" name="Hover Tips"> - <menu_item_check label="Tipps anzeigen" name="Show Tips"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Landtipps" name="Land Tips"/> - <menu_item_check label="Tipps zu allen Objekten" name="Tips On All Objects"/> - </menu> - <menu_item_check label="Durchsichtig hervorheben" name="Highlight Transparent"/> - <menu_item_check label="Beacons" name="beacons"/> - <menu_item_check label="Partikel ausblenden" name="Hide Particles"/> - <menu_item_check label="HUD-Anhänge anzeigen" name="Show HUD Attachments"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Hinein zoomen" name="Zoom In"/> - <menu_item_call label="Zoom-Standard" name="Zoom Default"/> - <menu_item_call label="Wegzoomen" name="Zoom Out"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Vollbild" name="Toggle Fullscreen"/> - <menu_item_call label="UI-Größe auf Standard setzen" name="Set UI Size to Default"/> + <menu label="Unterhalten" name="Communicate"> + <menu_item_call label="Meine Freunde" name="My Friends"/> + <menu_item_call label="Meine Gruppen" name="My Groups"/> + <menu_item_check label="Chat in der Nähe" name="Nearby Chat"/> + <menu_item_call label="Leute in der Nähe" name="Active Speakers"/> </menu> <menu label="Welt" name="World"> - <menu_item_call label="Chat" name="Chat"/> - <menu_item_check label="Immer rennen" name="Always Run"/> - <menu_item_check label="Fliegen" name="Fly"/> - <menu_item_separator label="-----------" name="separator"/> - <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_item_separator label="-----------" name="separator2"/> + <menu_item_check label="Minikarte" name="Mini-Map"/> + <menu_item_check label="Karte" 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_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_item_call label="Teleport nach Hause" name="Teleport Home"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Als abwesend anzeigen" name="Set Away"/> - <menu_item_call label="Als beschäftigt anzeigen" name="Set Busy"/> - <menu_item_call label="Avatar nicht mehr animieren" name="Stop Animating My Avatar"/> - <menu_item_call label="Tasten freigeben" name="Release Keys"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Kontostatistik..." name="Account History..."> - <on_click name="AccountHistory_url" userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php?lang=de"/> - </menu_item_call> - <menu_item_call label="Mein Konto verwalten..." name="Manage My Account..."> - <on_click name="ManageMyAccount_url" userdata="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=de"/> - </menu_item_call> - <menu_item_call label="L$ kaufen..." name="Buy and Sell L$..."/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Mein Land..." name="My Land..."/> - <menu_item_call label="Land-Info..." name="About Land..."/> - <menu_item_call label="Land kaufen..." name="Buy Land..."/> - <menu_item_call label="Region/Grundstück..." name="Region/Estate..."/> - <menu_item_separator label="-----------" name="separator6"/> - <menu label="Umwelt-Einstellungen" name="Environment Settings"> + <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="Auf Regionsstandard zurücksetzen" name="Revert to Region Default"/> - <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Grundstückszeit" name="Revert to Region Default"/> <menu_item_call label="Umwelt-Editor" name="Environment Editor"/> </menu> </menu> - <menu label="Werkzeug" name="Tools"> - <menu label="Fehlermeldungen" name="Select Tool"> + <menu label="Bauen" name="BuildTools"> + <menu_item_check label="Bauen" name="Show Build Tools"/> + <menu label="Bauwerkzeug auswählen" name="Select Tool"> <menu_item_call label="Fokus" name="Focus"/> <menu_item_call label="Verschieben" name="Move"/> <menu_item_call label="Bearbeiten" name="Edit"/> <menu_item_call label="Erstellen" name="Create"/> <menu_item_call label="Land" name="Land"/> </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Nur meine Objekte auswählen" name="Select Only My Objects"/> - <menu_item_check label="Nur bewegliche Objekte auswählen" name="Select Only Movable Objects"/> - <menu_item_check label="Nach Umgebung auswählen" name="Select By Surrounding"/> - <menu_item_check label="Ausgeblendete Auswahl anzeigen" name="Show Hidden Selection"/> - <menu_item_check label="Lichtradius für Auswahl anzeigen" name="Show Light Radius for Selection"/> - <menu_item_check label="Auswahlstrahl anzeigen" name="Show Selection Beam"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="An Raster ausrichten" name="Snap to Grid"/> - <menu_item_call label="Objekt-XY an Raster ausrichten" name="Snap Object XY to Grid"/> - <menu_item_call label="Auswahl für Raster verwenden" name="Use Selection for Grid"/> - <menu_item_call label="Rasteroptionen..." name="Grid Options..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Verknüpfte Teile bearbeiten" name="Edit Linked Parts"/> + <menu label="Bearbeiten" name="Edit"> + <menu_item_call label="Rückgängig" name="Undo"/> + <menu_item_call label="Wiederherstellen" name="Redo"/> + <menu_item_call label="Ausschneiden" name="Cut"/> + <menu_item_call label="Kopieren" name="Copy"/> + <menu_item_call label="Einfügen" name="Paste"/> + <menu_item_call label="Löschen" name="Delete"/> + <menu_item_call label="Duplizieren" name="Duplicate"/> + <menu_item_call label="Alle auswählen" name="Select All"/> + <menu_item_call label="Auswahl aufheben" name="Deselect"/> + </menu> <menu_item_call label="Verknüpfung" name="Link"/> - <menu_item_call label="Verknüpfung aufheben" name="Unlink"/> - <menu_item_separator label="-----------" name="separator4"/> + <menu_item_call label="Verknüpfung auflösen" name="Unlink"/> + <menu_item_check label="Verknüpfte Teile bearbeiten" name="Edit Linked Parts"/> <menu_item_call label="Fokus auf Auswahl" name="Focus on Selection"/> <menu_item_call label="Auf Auswahl zoomen" name="Zoom to Selection"/> - <menu_item_call label="Objekt kaufen" name="Menu Object Take"> - <on_enable userdata="Kaufen,Nehmen" name="EnableBuyOrTake"/> - </menu_item_call> - <menu_item_call label="Kopie nehmen/machen" name="Take Copy"/> - <menu_item_call label="Objekt wieder in Objektinhalt speichern" name="Save Object Back to Object Contents"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Skriptwarnung/Fehlerfenster anzeigen" name="Show Script Warning/Error Window"/> - <menu label="Skripte in Auswahl neu kompilieren" name="Recompile Scripts in Selection"> - <menu_item_call label="Mono" name="Mono"/> - <menu_item_call label="LSL" name="LSL"/> - </menu> - <menu_item_call label="Skripte in Auswahl zurücksetzen" name="Reset Scripts in Selection"/> - <menu_item_call label="Skripte in Auswahl so einstellen, dass sie ausgeführt werden" name="Set Scripts to Running in Selection"/> - <menu_item_call label="Skripte in Auswahl so einstellen, dass sie nicht ausgeführt werden" name="Set Scripts to Not Running in Selection"/> + <menu label="Objekt" name="Object"> + <menu_item_call label="Kaufen" name="Menu Object Take"/> + <menu_item_call label="Kopie nehmen" name="Take Copy"/> + <menu_item_call label="Objekt wieder in meinem Inventar speichern" name="Save Object Back to My Inventory"/> + <menu_item_call label="Wieder in Objektinhalt speichern" name="Save Object Back to Object Contents"/> + </menu> + <menu label="Skripts" name="Scripts"> + <menu_item_call label="Skripts rekompilieren (Mono)" name="Mono"/> + <menu_item_call label="Skripts rekompilieren (LSL)" name="LSL"/> + <menu_item_call label="Skripts zurücksetzen" name="Reset Scripts"/> + <menu_item_call label="Skripts auf ausführen einstellen" name="Set Scripts to Running"/> + <menu_item_call label="Skripts auf nicht ausführen einstellen" name="Set Scripts to Not Running"/> + </menu> + <menu label="Optionen" name="Options"> + <menu_item_call label="Hochlade-Berechtigungen (Standard) festlegen" name="perm prefs"/> + <menu_item_check label="Erweiterte Berechtigungen anzeigen" name="DebugPermissions"/> + <menu_item_check label="Nur meine Objekte auswählen" name="Select Only My Objects"/> + <menu_item_check label="Nur bewegliche Objekte auswählen" name="Select Only Movable Objects"/> + <menu_item_check label="Nach Umgebung auswählen" name="Select By Surrounding"/> + <menu_item_check label="Ausgeblendete Auswahl anzeigen" name="Show Hidden Selection"/> + <menu_item_check label="Lichtradius für Auswahl anzeigen" name="Show Light Radius for Selection"/> + <menu_item_check label="Auswahlstrahl anzeigen" name="Show Selection Beam"/> + <menu_item_check label="An Raster ausrichten" name="Snap to Grid"/> + <menu_item_call label="Objekt-XY an Raster ausrichten" name="Snap Object XY to Grid"/> + <menu_item_call label="Auswahl für Raster verwenden" name="Use Selection for Grid"/> + <menu_item_call label="Rasteroptionen" name="Grid Options"/> + </menu> + <menu label="Verknüpfte Teile auswählen" name="Select Linked Parts"> + <menu_item_call label="Nächstes Teil auswählen" name="Select Next Part"/> + <menu_item_call label="Vorheriges Teil auswählen" name="Select Previous Part"/> + <menu_item_call label="Nächsten Teil mit einsschließen" name="Include Next Part"/> + <menu_item_call label="Vorherige Teile mit einschließen" name="Include Previous Part"/> + </menu> </menu> <menu label="Hilfe" name="Help"> - <menu_item_call label="Hilfe zu [SECOND_LIFE]" name="Second Life Help"/> - <menu_item_call label="Tutorial" name="Tutorial"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Offizielles Linden-Blog..." name="Official Linden Blog..."/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Scripting-Portal..." name="Scripting Portal..."> - <on_click name="ScriptingPortal_url" userdata="WebLaunchLSLWiki,http://wiki.secondlife.com/wiki/LSL_Portal/de" /> - </menu_item_call> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Missbrauch melden..." name="Report Abuse..."/> - <menu_item_call label="Rempler, Stöße und Schläge..." name="Bumps, Pushes &amp; Hits..."/> - <menu_item_call label="Lag-Anzeige" name="Lag Meter"/> - <menu_item_separator label="-----------" name="separator7"/> - <menu label="Fehlermeldungen" name="Bug Reporting"> - <menu_item_call label="Allgemeiner Probleme-Tracker..." name="Public Issue Tracker..."/> - <menu_item_call label="Hilfe zum Allgemeinen Probleme-Tracker..." name="Publc Issue Tracker Help..."> - <on_click name="PublicIssueTrackerHelp_url" userdata="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker/de" /> - </menu_item_call> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_call label="Fehlermeldungs-1x1..." name="Bug Reporing 101..."> - <on_click name="BugReporting101_url" userdata="WebLaunchBugReport101,http://wiki.secondlife.com/wiki/Bug_Reporting_101/de"/> - </menu_item_call> - <menu_item_call label="Sicherheitsfragen..." name="Security Issues..."> - <on_click name="SecurityIssues_url" userdata="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues/de"/> - </menu_item_call> - <menu_item_call label="QA-Wiki..." name="QA Wiki..."/> - <menu_item_separator label="-----------" name="separator9"/> - <menu_item_call label="Fehler melden..." name="Report Bug..."/> - </menu> - <menu_item_call label="Über [APP_NAME]..." name="About Second Life..."/> + <menu_item_call label="[SECOND_LIFE]-Hilfe" name="Second Life Help"/> + <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_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 label="Performance Tools" name="Performance Tools"> + <menu_item_call label="Lag-Anzeige" name="Lag Meter"/> + <menu_item_check label="Statistikleiste" name="Statistics Bar"/> + <menu_item_check label="Avatar-Darstellungskosten anzeigen" name="Avatar Rendering Cost"/> + </menu> + <menu label="Hervorhebung und Sichtbarkeit" name="Highlighting and Visibility"> + <menu_item_check label="Pulsierender Strahl" name="Cheesy Beacon"/> + <menu_item_check label="Partikel ausblenden" name="Hide Particles"/> + <menu_item_check label="Auswahl ausblenden" name="Hide Selected"/> + <menu_item_check label="Durchsichtig hervorheben" name="Highlight Transparent"/> + <menu_item_check label="HUD-Anhänge anzeigen" name="Show HUD Attachments"/> + <menu_item_check label="Fadenkreuz für Mouselook anzeigen" name="ShowCrosshairs"/> + <menu_item_check label="Land-Kurzinfos anzeigen" name="Land Tips"/> + </menu> + <menu label="Darstellungstypen" name="Rendering Types"> + <menu_item_check label="Einfach" name="Simple"/> + <menu_item_check label="Alpha" name="Alpha"/> + <menu_item_check label="Baum" name="Tree"/> + <menu_item_check label="Avatare" name="Character"/> + <menu_item_check label="SurfacePath" name="SurfacePath"/> + <menu_item_check label="Himmel" name="Sky"/> + <menu_item_check label="Wasser" name="Water"/> + <menu_item_check label="Boden" name="Ground"/> + <menu_item_check label="Volumen" name="Volume"/> + <menu_item_check label="Gras" name="Grass"/> + <menu_item_check label="Wolken" name="Clouds"/> + <menu_item_check label="Partikel" name="Particles"/> + <menu_item_check label="Unebenheiten" name="Bump"/> + </menu> + <menu label="Rederning-Eigenschaften" name="Rendering Features"> + <menu_item_check label="UI" name="UI"/> + <menu_item_check label="Ausgewählt" name="Selected"/> + <menu_item_check label="Farblich hervorgehoben" name="Highlighted"/> + <menu_item_check label="Dynamische Texturen" name="Dynamic Textures"/> + <menu_item_check label="Fußschatten" name="Foot Shadows"/> + <menu_item_check label="Nebel" name="Fog"/> + <menu_item_check label="FRInfo testen" name="Test FRInfo"/> + <menu_item_check label="Flexible Objekte" name="Flexible Objects"/> + </menu> + <menu_item_check label="Mehrer Threads ausführen" name="Run Multiple Threads"/> + <menu_item_call label="Gruppen-Cache löschen" name="ClearGroupCache"/> + <menu_item_check label="Weiche Mausbewegung" name="Mouse Smoothing"/> + <menu label="Tastaturkürzel" name="Shortcuts"> + <menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/> + <menu_item_check label="Suchen" name="Search"/> + <menu_item_call label="Tasten freigeben" name="Release Keys"/> + <menu_item_call label="UI-Größe auf Standard setzen" name="Set UI Size to Default"/> + <menu_item_check label="Immer rennen" name="Always Run"/> + <menu_item_check label="Fliegen" name="Fly"/> + <menu_item_call label="Fenster schließen" name="Close Window"/> + <menu_item_call label="Alle Fenster schließen" name="Close All Windows"/> + <menu_item_call label="Foto auf Datenträger" name="Snapshot to Disk"/> + <menu_item_call label="Mouselook" name="Mouselook"/> + <menu_item_check label="Joystick-Flycam" name="Joystick Flycam"/> + <menu_item_call label="Ansicht zurücksetzen" name="Reset View"/> + <menu_item_call label="Letzten Chatter ansehen" name="Look at Last Chatter"/> + <menu label="Bauwerkzeug auswählen" name="Select Tool"> + <menu_item_call label="Fokus-Werkzeug" name="Focus"/> + <menu_item_call label="Werkzeug „Bewegen“" name="Move"/> + <menu_item_call label="Bearbeiten" name="Edit"/> + <menu_item_call label="Werkzeug „Erstellen"" name="Create"/> + <menu_item_call label="Land-Werkzeug" name="Land"/> + </menu> + <menu_item_call label="Hineinzoomen" name="Zoom In"/> + <menu_item_call label="Zoom-Standard" name="Zoom Default"/> + <menu_item_call label="Wegzoomen" name="Zoom Out"/> + <menu_item_call label="Vollbild" name="Toggle Fullscreen"/> + </menu> + <menu_item_call label="Debug-Einstellungen anzeigen" name="Debug Settings"/> + <menu_item_check label="Menü „Entwickler“ anzeigen" name="Debug Mode"/> + </menu> + <menu label="Entwickler" name="Develop"> + <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="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"/> + <menu_item_check label="Speicher" name="Memory"/> + <menu_item_call label="Info zu Region in Fenster Fehler beseitigen" name="Region Info to Debug Console"/> + <menu_item_call label="Gruppeninfo in Fenster Fehler beseitigen" name="Group Info to Debug Console"/> + <menu_item_call label="Info zu Fähigkeiten in Fenster Fehler beseitigen" name="Capabilities Info to Debug Console"/> + <menu_item_check label="Kamera" name="Camera"/> + <menu_item_check label="Wind" name="Wind"/> + <menu_item_check label="FOV" name="FOV"/> + <menu_item_check label="Gütesiegel" name="Badge"/> + </menu> + <menu label="Info anzeigen" name="Display Info"> + <menu_item_check label="Zeit anzeigen" name="Show Time"/> + <menu_item_check label="Render-Info anzeigen" name="Show Render Info"/> + <menu_item_check label="Matrizen anzeigen" name="Show Matrices"/> + <menu_item_check label="Farbe unter Cursor anzeigen" name="Show Color Under Cursor"/> + <menu_item_check label="Akutalisierungen an Objekten anzeigen" name="Show Updates"/> + </menu> + <menu label="Fehler erzwingen" name="Force Errors"> + <menu_item_call label="Haltepunkt erzwingen" name="Force Breakpoint"/> + <menu_item_call label="LLError erzwingen und abstürzen" name="Force LLError And Crash"/> + <menu_item_call label="Erzwinge fehlerhaften Speicherzugriff" name="Force Bad Memory Access"/> + <menu_item_call label="Endlosschleife erzwingen" name="Force Infinite Loop"/> + <menu_item_call label="Treiber-Crash erzwingen" name="Force Driver Carsh"/> + <menu_item_call label="Softwareausnahme erzwingen" name="Force Software Exception"/> + <menu_item_call label="Verbindungsabbruch erzwingen" name="Force Disconnect Viewer"/> + <menu_item_call label="Speicherverlust simulieren" name="Memory Leaking Simulation"/> + </menu> + <menu label="Render-Tests" name="Render Tests"> + <menu_item_check label="Kamera-Versatz" name="Camera Offset"/> + <menu_item_check label="Framerate randomisieren" name="Randomize Framerate"/> + <menu_item_check label="Periodic Slow Frame" name="Periodic Slow Frame"/> + <menu_item_check label="Frame-Test" name="Frame Test"/> + </menu> + <menu label="Metadaten darstellen" name="Render Metadata"> + <menu_item_check label="Bonding Boxes" name="Bounding Boxes"/> + <menu_item_check label="Octree" name="Octree"/> + <menu_item_check label="Shadow Frusta" name="Shadow Frusta"/> + <menu_item_check label="Okklusion" name="Occlusion"/> + <menu_item_check label="Bündel rendern" name="Render Batches"/> + <menu_item_check label="Texture-Anim" name="Texture Anim"/> + <menu_item_check label="Textur-Priorität" name="Texture Priority"/> + <menu_item_check label="Texturbereich" name="Texture Area"/> + <menu_item_check label="Oberflächenbereich" name="Face Area"/> + <menu_item_check label="Lichter" name="Lights"/> + <menu_item_check label="Gelenkpunkte" name="Collision Skeleton"/> + <menu_item_check label="Raycast" name="Raycast"/> + </menu> + <menu label="Rendering" name="Rendering"> + <menu_item_check label="Achsen" name="Axes"/> + <menu_item_check label="Tangentenbasis" name="Tangent Basis"/> + <menu_item_call label="Texturinfo für ausgewähltes Objekt" name="Selected Texture Info Basis"/> + <menu_item_check label="Wireframe" name="Wireframe"/> + <menu_item_check label="Objekt-Objekt Okklusion" name="Object-Object Occlusion"/> + <menu_item_check label="Framebuffer-Objekte" name="Framebuffer Objects"/> + <menu_item_check label="Deferred Rendering" name="Deferred Rendering"/> + <menu_item_check label="Globale Beleuchtung" name="Global Illumination"/> + <menu_item_check label="Fehler in GL beseitigen" name="Debug GL"/> + <menu_item_check label="Fehler in Pipeline beseitigen" name="Debug Pipeline"/> + <menu_item_check label="Schnelles Alpha" name="Fast Alpha"/> + <menu_item_check label="Animationstexturen" name="Animation Textures"/> + <menu_item_check label="Texturen deaktivieren" name="Disable Textures"/> + <menu_item_check label="Voll-Res-Texturen" name="Rull Res Textures"/> + <menu_item_check label="Texturen prüfen" name="Audit Textures"/> + <menu_item_check label="Textur-Atlas" name="Texture Atlas"/> + <menu_item_check label="Angehängte Lichter rendern" name="Render Attached Lights"/> + <menu_item_check label="Angehängte Partikel rendern" name="Render Attached Particles"/> + <menu_item_check label="Leucht-Objekte schweben lassen" name="Hover Glow Objects"/> + </menu> + <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="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"/> + </menu> + <menu_item_call label="Geskriptete Kamera ausgeben" name="Dump Scripted Camera"/> + <menu_item_call label="Rempler, Stöße & Schläge" name="Bumps, Pushes &amp; Hits"/> + <menu label="Rekorder" name="Recorder"> + <menu_item_call label="Wiedergabe starten" name="Start Playback"/> + <menu_item_call label="Wiedergabe stoppen" name="Stop Playback"/> + <menu_item_check label="Wiedergabeschleife" name="Loop Playback"/> + <menu_item_call label="Aufnahme starten" name="Start Record"/> + <menu_item_call label="Aufnahme stoppen" name="Stop Record"/> + </menu> + <menu label="Welt" name="World"> + <menu_item_check label="Sonnen-Override für Sim" name="Sim Sun Override"/> + <menu_item_check label="Pulsierender Strahl" name="Cheesy Beacon"/> + <menu_item_check label="Festgelegtes Wetter" name="Fixed Weather"/> + <menu_item_call label="Regionsobjekt-Cache ausgeben" name="Dump Region Object Cache"/> + </menu> + <menu label="UI" name="UI"> + <menu_item_call label="Web-Browser-Test" name="Web Browser Test"/> + <menu_item_call label="SelectMgr ausgeben" name="Dump SelectMgr"/> + <menu_item_call label="Inventarinfo ausgeben" name="Dump Inventory"/> + <menu_item_call label="Timer ausgeben" name="Dump Timers"/> + <menu_item_call label="Fokus ausgeben" name="Dump Focus Holder"/> + <menu_item_call label="Ausgewählte Objektinfo drucken" name="Print Selected Object Info"/> + <menu_item_call label="Agent-Info drucken" name="Print Agent Info"/> + <menu_item_call label="Speicher-Stats" name="Memory Stats"/> + <menu_item_check label="Double-ClickAuto-Pilot" name="Double-ClickAuto-Pilot"/> + <menu_item_check label="Fehler in SelectMgr beseitigen" name="Debug SelectMgr"/> + <menu_item_check label="Fehler in Klicks beseitigen" name="Debug Clicks"/> + <menu_item_check label="Debug-Ansichten" name="Debug Views"/> + <menu_item_check label="Kurzinfos: Debug-Namen" name="Debug Name Tooltips"/> + <menu_item_check label="Fehler in Maus-Events beseitigen" name="Debug Mouse Events"/> + <menu_item_check label="Fehler in Keys beseitigen" name="Debug Keys"/> + <menu_item_check label="Fehler in WindowProc beseitigen" name="Debug WindowProc"/> + </menu> + <menu label="XUI" name="XUI"> + <menu_item_call label="Farbeinstellungen neu laden" name="Reload Color Settings"/> + <menu_item_call label="Schriftarttest anzeigen" name="Show Font Test"/> + <menu_item_call label="Von XML laden" name="Load from XML"/> + <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> + <menu label="Avatar" name="Character"> + <menu label="Geladene Textur nehmen" name="Grab Baked Texture"> + <menu_item_call label="Iris" name="Iris"/> + <menu_item_call label="Kopf" name="Head"/> + <menu_item_call label="Oberkörper" name="Upper Body"/> + <menu_item_call label="Unterkörper" name="Lower Body"/> + <menu_item_call label="Rock" name="Skirt"/> + </menu> + <menu label="Avatar-Tests" name="Character Tests"> + <menu_item_call label="Aussehen als XML speichern" name="Appearance To XML"/> + <menu_item_call label="Avatargeometry ein-/ausschalten" name="Toggle Character Geometry"/> + <menu_item_call label="Männlich testen" name="Test Male"/> + <menu_item_call label="Weiblich testen" name="Test Female"/> + <menu_item_call label="PG ein-/ausschalten" name="Toggle PG"/> + <menu_item_check label="Avatarauswahl zulassen" name="Allow Select Avatar"/> + </menu> + <menu_item_call label="Param auf Standard erzwingen" name="Force Params to Default"/> + <menu_item_check label="Animations-Info" name="Animation Info"/> + <menu_item_check label="Zeitlupen-Animationen" name="Slow Motion Animations"/> + <menu_item_check label="Kamerafokus anzeigen" name="Show Look At"/> + <menu_item_check label="Klickpunkt anzeigen??" name="Show Point At"/> + <menu_item_check label="Fehler in Landaktualisierung beseitigen" name="Debug Joint Updates"/> + <menu_item_check label="LOD deaktiveren" name="Disable LOD"/> + <menu_item_check label="Fehler für sichtbare Agenten beseitigen" name="Debug Character Vis"/> + <menu_item_check label="Gelenkpunkte anzeigen" name="Show Collision Skeleton"/> + <menu_item_check label="Agent-Ziel anzeigen" name="Display Agent Target"/> + --> + <menu_item_call label="Anhänge ausgeben" name="Dump Attachments"/> + <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"/> + <menu_item_check label="Admin-Menü anzeigen" name="View Admin Options"/> + <menu_item_call label="Admin-Status anfordern" name="Request Admin Options"/> + <menu_item_call label="Admin-Status verlassen" name="Leave Admin Options"/> + </menu> + <menu label="Admin" name="Admin"> + <menu label="Object"> + <menu_item_call label="Kopie nehmen" name="Take Copy"/> + <menu_item_call label="Besitzer zu mir zwingen" name="Force Owner To Me"/> + <menu_item_call label="Erlaubnis des Besitzers erzwingen" name="Force Owner Permissive"/> + <menu_item_call label="Löschen" name="Delete"/> + <menu_item_call label="Fest" name="Lock"/> + <menu_item_call label="Asset-ID zulassen" name="Get Assets IDs"/> + </menu> + <menu label="Parzelle" name="Parcel"> + <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> + <menu label="Region" name="Region"> + <menu_item_call label="Temp-Asset-Daten ausgeben" name="Dump Temp Asset Data"/> + <menu_item_call label="Regions-Status speichern" name="Save Region State"/> + </menu> + <menu_item_call label="Gott-Werkzeuge" name="God Tools"/> + </menu> + <menu label="Admin" name="Deprecated"> + <menu label="Objekt anhängen" name="Attach Object"/> + <menu label="Objekt abnehmen" name="Detach Object"/> + <menu label="Kleider ausziehen" name="Take Off Clothing"> + <menu_item_call label="Hemd" name="Shirt"/> + <menu_item_call label="Hose" name="Pants"/> + <menu_item_call label="Schuhe" name="Shoes"/> + <menu_item_call label="Socken" name="Socks"/> + <menu_item_call label="Jacke" name="Jacket"/> + <menu_item_call label="Handschuhe" name="Gloves"/> + <menu_item_call label="Unterhemd" name="Menu Undershirt"/> + <menu_item_call label="Unterhose" name="Menu Underpants"/> + <menu_item_call label="Rock" name="Skirt"/> + <menu_item_call label="Alpha" name="Alpha"/> + <menu_item_call label="Tätowierung" name="Tattoo"/> + <menu_item_call label="Alle Kleider" name="All Clothes"/> + </menu> + <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"/> + <menu label="Fehlermeldungen" name="Bug Reporting"> + <menu_item_call label="Allgemeine Probleme-Tracker" name="Public Issue Tracker"/> + <menu_item_call label="Hilfe zum Allgemeinen Probleme-Tracker" name="Publc Issue Tracker Help"/> + <menu_item_call label="Fehlermeldungs-1x1" name="Bug Reporing 101"/> + <menu_item_call label="Sicherheitsfragen" name="Security Issues"/> + <menu_item_call label="QA-Wiki" name="QA Wiki"/> + </menu> + </menu> </menu> </menu_bar> 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 0000000000..e4b5c53292 --- /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 0000000000..e4b5c53292 --- /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 8b8a0afa89..da4a96962e 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -11,18 +11,29 @@ </global> <template name="okbutton"> <form> - <button name="OK" text="$yestext"/> + <button name="OK_okbutton" text="$yestext"/> + </form> + </template> + <template name="okignore"> + <form> + <button name="OK_okignore" text="$yestext"/> </form> </template> - <template name="okignore"/> <template name="okcancelbuttons"> <form> - <button name="Cancel" text="$notext"/> + <button name="OK_okcancelbuttons" text="$yestext"/> + <button name="Cancel_okcancelbuttons" text="$notext"/> + </form> + </template> + <template name="okcancelignore"> + <form> + <button name="OK_okcancelignore" text="$yestext"/> + <button name="Cancel_okcancelignore" text="$notext"/> </form> </template> - <template name="okcancelignore"/> <template name="okhelpbuttons"> <form> + <button name="OK_okhelpbuttons" text="$yestext"/> <button name="Help" text="$helptext"/> </form> </template> @@ -30,12 +41,13 @@ <form> <button name="Yes" text="$yestext"/> <button name="No" text="$notext"/> + <button name="Cancel_yesnocancelbuttons" text="$canceltext"/> </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"> @@ -56,12 +68,12 @@ Fehlerdetails: Der Warnhinweis '[_NAME]' wurde in notifications.xml ni <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/> </notification> <notification name="BadInstallation"> - Beim Aktualisieren von [APP_NAME] ist ein Fehler aufgetreten. Bitte laden Sie die aktuellste Version des Viewers herunter. http://get.secondlife.com + Beim Aktualisieren von [APP_NAME] ist ein Fehler aufgetreten. Bitte [http://get.secondlife.com laden Sie die aktuellste Version des Viewers herunter]. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LoginFailedNoNetwork"> Eine Verbindung zum [SECOND_LIFE_GRID] konnte nicht hergestellt werden. - '[DIAGNOSTIC]' +'[DIAGNOSTIC]' Bitte vergewissern Sie sich, dass Ihre Internetverbindung funktioniert. <usetemplate name="okbutton" yestext="OK"/> </notification> @@ -93,13 +105,17 @@ Wählen Sie ein einzelnes Objekt aus und versuchen Sie es erneut. Änderung an Kleidung/Körperteilen speichern? <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Alles speichern"/> </notification> + <notification name="FriendsAndGroupsOnly"> + Leute, die nicht auf Ihrer Freundesliste stehen, werden nicht wissen, dass Sie deren Anrufe oder Sofortnachrichten ignoriert haben. + <usetemplate name="okbutton" yestext="Ja"/> + </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,11 +172,21 @@ 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="JoinGroupCanAfford"> Der Beitritt zu dieser Gruppe kostet [COST] L$. Fortfahren? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Beitreten"/> </notification> + <notification name="JoinGroupNoCost"> + Sie treten der Gruppe [NAME] bei. +Fortfahren? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Zusammenlegen"/> + </notification> <notification name="JoinGroupCannotAfford"> Der Beitritt zu dieser Gruppe kostet [COST] L$. Sie haben nicht genug L$, um dieser Gruppe beizutreten. @@ -186,9 +212,9 @@ Der Verkaufspreis beträgt [SALE_PRICE] L$ und wird automatisch für den Verkauf <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="ConfirmLandSaleToAnyoneChange"> - ACHTUNG: Wenn Sie auf „An jeden verkaufen“ klicken, kann jeder in [SECOND_LIFE] Ihr Land kaufen, auch Einwohner in anderen Regionen. + ACHTUNG: Wenn Sie auf An jeden verkaufen klicken, kann jeder in [SECOND_LIFE] Ihr Land kaufen, auch Einwohner in anderen Regionen. -Die ausgewählten [LAND_SIZE] qm Land werden zum Verkauf freigegeben. +Die ausgewählten [LAND_SIZE] m² Land werden zum Verkauf freigegeben. Der Verkaufspreis beträgt [SALE_PRICE] L$ und wird automatisch für den Verkauf an [NAME] autorisiert. <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> @@ -249,6 +275,12 @@ Objekte: [N] Für die gesamte Region ist Schaden aktiviert. Damit Waffen funktionieren, müssen Skripts erlaubt sein. </notification> + <notification name="MultipleFacesSelected"> + 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="MustBeInParcel"> Sie müssen auf einer Landparzelle stehen, um ihren Landepunkt festzulegen. </notification> @@ -284,6 +316,10 @@ Der Outfit-Ordner enthält keine Kleidung, Körperteile oder Anhänge. <notification name="CannotWearTrash"> Kleider oder Körperteile im Papierkorb können nicht getragen werden </notification> + <notification name="MaxAttachmentsOnOutfit"> + Objekt konnte nicht angehängt werden. +Überschreitet die maximale Anzahl an Objekten [MAX_ATTACHMENTS], die angehängt werden können. Bitte nehmen Sie zunächst ein anderes Objekt ab. + </notification> <notification name="CannotWearInfoNotComplete"> Sie können das Objekt nicht anziehen, weil es noch nicht geladen wurde. Warten Sie kurz und versuchen Sie es dann noch einmal. </notification> @@ -298,7 +334,10 @@ Sie benötigen ein Benutzerkonto, um [SECOND_LIFE] betreten zu können. Möchten <usetemplate name="okcancelbuttons" notext="Erneut versuchen" yestext="Neues Benutzerkonto anlegen"/> </notification> <notification name="AddClassified"> - Anzeigen erscheinen für eine Woche unter „Anzeigen“ im Suchverzeichnis. Füllen Sie Ihre Anzeige aus und klicken Sie auf „Veröffentlichen...“, um sie zum Verzeichnis hinzuzufügen. Sie werden gebeten, einen Preis zu bezahlen, wenn Sie auf „Veröffentlichen“ klicken. Wenn Sie mehr bezahlen oder ein Benutzer nach Ihren Suchbegriffen sucht, erscheint Ihre Anzeige weiter oben in der Liste. + Anzeigen werden im Suchverzeichnis im Abschnitt „Anzeigen" und auf [http://secondlife.com/community/classifieds secondlife.com] für eine Woche angezeigt. +Füllen Sie Ihre Anzeige aus und klicken Sie auf 'Veröffentlichen...', um sie zum Verzeichnis hinzuzufügen. +Sie werden gebeten für die Anzeige zu bezahlen, wenn Sie auf 'Veröffentlichen' klicken. +Wenn Sie mehr bezahlen, erscheint Ihre Anzeige weiter oben in der Liste, ebenso wenn ein Benutzer nach Ihren Suchbegriffen sucht. <usetemplate ignoretext="So wird eine neue Anzeige erstellt" name="okcancelignore" notext="Abbrechen" yestext="OK"/> </notification> <notification name="DeleteClassified"> @@ -306,10 +345,19 @@ Sie benötigen ein Benutzerkonto, um [SECOND_LIFE] betreten zu können. Möchten Gebühren werden nicht rückerstattet. <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> + <notification name="DeleteMedia"> + Sie haben sich entschieden, die Medien auf dieser Seite zu löschen. +Sind Sie sicher, dass Sie fortfahren wollen? + <usetemplate ignoretext="Bestätigen, bevor ich Medien von einem Objekt entferne." name="okcancelignore" notext="Nein" yestext="Ja"/> + </notification> <notification name="ClassifiedSave"> Änderung an Anzeige [NAME] speichern? <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Nicht speichern" yestext="Speichern"/> </notification> + <notification name="ClassifiedInsufficientFunds"> + Sie haben nicht genügend Geld, um eine Anzeige zu erstellen. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="DeleteAvatarPick"> Auswahl [PICK] löschen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> @@ -327,14 +375,6 @@ Gebühren werden nicht rückerstattet. <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> @@ -346,7 +386,7 @@ Hinweis: Der Cache wird dabei gelöscht/geleert. Die Port-Einstellungen werden nach einem Neustart von [APP_NAME] wirksam. </notification> <notification name="ChangeSkin"> - Die neue Benutzeroberfläche wird nach einem Neustart von [APP_NAME] angewendet. + Die neue Benutzeroberfläche wird nach einem Neustart von [APP_NAME] angezeigt. </notification> <notification name="GoToAuctionPage"> Zur [SECOND_LIFE]-Webseite, um Auktionen anzuzeigen oder ein Gebot abzugeben? @@ -398,8 +438,8 @@ Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht. Ein kompiliertes Skript konnte aus folgendem Grund nicht gespeichert werden: [REASON]. Speichern Sie das Skript bitte später. </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. + 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 Zuhause“ als Startposition aus. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="CouldNotStartStopScript"> @@ -413,29 +453,28 @@ Das Objekt ist möglicherweise außer Reichweite oder wurde gelöscht. Datei [[FILE]] kann nicht geschrieben werden </notification> <notification name="UnsupportedHardware"> - Achtung: Ihr System erfüllt nicht die Mindestanforderungen von [APP_NAME]. Dies kann eine schlechte Darstellungsleistung in [APP_NAME] zur Folge haben. Bei nicht unterstützten Systemkonfigurationen kann Ihnen unsere [SUPPORT_SITE] leider nicht helfen. + Ihr Computer entspricht leider nicht den Mindestanforderungen von [APP_NAME]. Dies kann zur Folge haben, dass das Programm nicht sehr gut ausgeführt wird. Bei nicht unterstützten Systemkonfigurationen kann Ihnen unser [SUPPORT_SITE] leider nicht helfen. MINDESTANF. -Die Seite [_URL] für weitere Informationen öffnen? +Weitere Informationen finden Sie auf [_URL]. <url name="url" option="0"> http://secondlife.com/support/sysreqs.php?lang=de </url> <usetemplate ignoretext="Meine Hardware wird nicht unterstützt" name="okcancelignore" notext="Nein" yestext="Ja"/> </notification> <notification name="UnknownGPU"> - Ihr System verwendet eine uns zurzeit unbekannte Grafikkarte. -Dies passiert dann, wenn die neue Hardware noch nicht mit [APP_NAME] getestet wurde. [APP_NAME] wird wahrscheinlich korrekt ausgeführt werden, jedoch sollten Sie Ihre Grafikeinstellungen anpassen, um eine bessere Darstellung zu erzielen. -(Einstellungen > Grafik). + Ihr System verwendet eine Grafikkarte, die [APP_NAME] nicht erkennt. +Dies passiert dann, wenn die neue Hardware noch nicht mit [APP_NAME] getestet wurde. Wahrscheinlich wird das Programm richtig ausgeführt, aber Sie müssen eventuell ein paar Grafikeinstellungen vornehmen. +(Ich > Einstellungen > Grafik). <form name="form"> <ignore name="ignore" text="Meine Grafikkarte konnte nicht identifiziert werden."/> </form> </notification> <notification name="DisplaySettingsNoShaders"> [APP_NAME] ist bei der Initialisierung der Grafiktreiber abgestürzt. -Die Grafikqualität wird auf eine niedrige Stufe zurückgesetzt, um einige typische Treiberfehler zu vermeiden. -Einige Grafikfunktionen werden ausgeschaltet. +Die Grafikqualität wird auf Niedrig gesetzt, um einige typische Treiberfehler zu vermeiden. Einige Grafikfunktionen werden ausgeschaltet. Wir empfehlen die Aktualisierung Ihrer Grafikkartentreiber. -Sie können die Grafikqualität unter „Einstellungen“ > „Grafik“ wieder erhöhen. +Sie können die Grafikqualität unter Einstellungen > Grafik wieder erhöhen. </notification> <notification name="RegionNoTerraforming"> Die Region [REGION] erlaubt kein Terraforming. @@ -486,6 +525,9 @@ Der Avatar wird außer Gefecht gesetzt und kann sich nicht mehr bewegen, chatten [AVATAR_NAME] aus Ihrem Land werfen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Hinauswerfen"/> </notification> + <notification name="EjectAvatarFromGroup"> + Sie haben [AVATAR_NAME] aus der Gruppe [GROUP_NAME] geworfen. + </notification> <notification name="AcquireErrorTooManyObjects"> FEHLER: Zu viele Objekte ausgewählt. </notification> @@ -594,6 +636,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> @@ -616,6 +662,9 @@ Wählen Sie Objekte mit Skripts. Wählen Sie Objekte mit Skripts, die Sie bearbeiten dürfen. </notification> + <notification name="CannotOpenScriptObjectNoMod"> + Das Skript im Objekt kann nicht geöffnet werden, da keine Änderungs-Berechtigungen vorliegen. + </notification> <notification name="CannotSetRunningSelectObjectsNoScripts"> „Ausführen“ von Skripts nicht möglich. @@ -640,7 +689,7 @@ Ihre Suchanfrage: [FINALQUERY] Es wurde keine Suche durchgeführt. </notification> <notification name="CouldNotTeleportReason"> - Teleport fehlgeschlagen. + Teleport ist fehlgeschlagen. [REASON] </notification> <notification name="invalid_tport"> @@ -648,7 +697,7 @@ Es wurde keine Suche durchgeführt. Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE]. </notification> <notification name="invalid_region_handoff"> - Bei der Bearbeitung Ihres Regionswechsels ist ein Problem aufgetreten. Sie müssen sich zum Wechsel der Region eventuell neu anmelden. + Bei der Bearbeitung Ihres Regionswechsels ist ein Problem aufgetreten. Sie müssen eventuell neu anmelden, um die Region wechseln zu können. Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_SITE]. </notification> <notification name="blocked_tport"> @@ -692,7 +741,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"> @@ -720,7 +770,7 @@ Keine Parzelle ausgewählt. Kann die Region nicht finden, in der sich dieses Land befindet. </notification> <notification name="CannotCloseFloaterBuyLand"> - Das Fenster „Land kaufen“ kann erst geschlossen werden, nachdem [APP_NAME] den Transaktionspreis geschätzt hat. + Das Fenster Land kaufen kann nicht geschlossen werden, bevor [APP_NAME] den Preis für diese Transaktion eingeschätzt hat. </notification> <notification name="CannotDeedLandNothingSelected"> Land kann nicht übertragen werden: @@ -740,14 +790,6 @@ Mehrere Parzellen ausgewählt. Wählen Sie eine einzelne Parzelle. </notification> - <notification name="ParcelCanPlayMedia"> - Dieser Ort kann Streaming-Medien abspielen. -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.) - <usetemplate name="okcancelbuttons" notext="Deaktivieren" yestext="Medien wiedergeben"/> - </notification> <notification name="CannotDeedLandWaitingForServer"> Land kann nicht übertragen werden: Warte auf Server für Eigentümerinformationen. @@ -870,9 +912,8 @@ Land zusammenlegen? Dies ist ein temporärer Fehler. Bitte passen Sie das Kleidungsstück in einigen Minuten noch einmal an und speichern Sie es erneut. </notification> <notification name="YouHaveBeenLoggedOut"> - Sie wurden von [SECOND_LIFE] abgemeldet: + Es tut uns leid! Sie wurden von [SECOND_LIFE] abgemeldet. [MESSAGE] -Klicken Sie auf „IM & Chat anzeigen“, um vorhandene Nachrichten und Chat weiterhin anzuzeigen. Klicken Sie andernfalls auf „Beenden“, um [APP_NAME] sofort zu beenden. <usetemplate name="okcancelbuttons" notext="Beenden" yestext="IM & Chat anzeigen"/> </notification> <notification name="OnlyOfficerCanBuyLand"> @@ -1030,6 +1071,7 @@ Der Gruppe „[GROUP_NAME]“ </notification> <notification name="ErrorMessage"> [ERROR_MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="AvatarMovedDesired"> Ihr gewünschter Zielort ist zurzeit nicht verfügbar. @@ -1040,9 +1082,9 @@ Sie wurden zur nächstgelegenen Region teleportiert. Sie wurden zur nächstgelegenen Region teleportiert. </notification> <notification name="AvatarMovedHome"> - Ihr Heimatort ist zurzeit nicht verfügbar. + Ihr Zuhause ist zurzeit nicht verfügbar. Sie wurden zur nächstgelegenen Region teleportiert. -Sie müssen eventuell einen neuen Heimatort festlegen. +Sie müssen eventuell ein neues Zuhause festlegen. </notification> <notification name="ClothingLoading"> Ihre Kleidung wird noch heruntergeladen. @@ -1052,10 +1094,10 @@ Sie können [SECOND_LIFE] normal verwenden. Andere Benutzer können Sie korrekt </form> </notification> <notification name="FirstRun"> - Die Installation von [APP_NAME] ist abgeschlossen. + Installation von [APP_NAME] vollständig abgeschlossen. -Wenn Sie [SECOND_LIFE] das erste Mal verwenden, müssen Sie ein Konto anlegen, bevor Sie sich anmelden können. -Möchten Sie auf [https://join.secondlife.com/index.php?lang=de-DE secondlife.com] ein Konto erstellen? +Falls Sie [SECOND_LIFE] zum ersten Mal verwenden, müssen Sie zuerst ein Konto erstellen, bevor Sie sich anmelden können. +Zurück zu [http://join.secondlife.com secondlife.com], um ein neues Konto zu erstellen? <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Neues Konto..."/> </notification> <notification name="LoginPacketNeverReceived"> @@ -1084,10 +1126,10 @@ Sie können sich später noch umentscheiden. [NAME] [PRICE] L$ Sie haben nicht genügend L$, um diese Aktion auszuführen. </notification> <notification name="GrantedModifyRights"> - [FIRST_NAME] [LAST_NAME] hat Ihnen die Erlaubnis erteilt, ihre/seine Objekte zu bearbeiten. + [NAME] hat Ihnen die Erlaubnis erteilt, ihre/seine Objekte zu bearbeiten. </notification> <notification name="RevokedModifyRights"> - Ihnen wurden die Änderungsrechte für die Objekte von [FIRST_NAME] [LAST_NAME] entzogen. + Ihnen wurden die Änderungsrechte für die Objekte von [NAME] entzogen. </notification> <notification name="FlushMapVisibilityCaches"> Der Kartencache dieser Region wird geleert. @@ -1165,19 +1207,19 @@ Geben Sie das Objekt zum Verkauf frei und versuchen Sie es erneut. [DOWNLOAD_PATH]. </notification> <notification name="DownloadWindowsMandatory"> - Eine neue Version von [APP_NAME] ist verfügbar. + Eine neue Version von [SUPPORT_SITE] ist verfügbar. [MESSAGE] Sie müssen das Update herunterladen, um [APP_NAME] weiter verwenden zu können. <usetemplate name="okcancelbuttons" notext="Beenden" yestext="Herunterladen"/> </notification> <notification name="DownloadWindows"> - Eine aktualisierte Version von [APP_NAME] ist verfügbar. + Eine neue Version von [APP_NAME] ist verfügbar. [MESSAGE] Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden. <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/> </notification> <notification name="DownloadWindowsReleaseForDownload"> - Eine aktualisierte Version von [APP_NAME] ist verfügbar. + Eine neue Version von [APP_NAME] ist verfügbar. [MESSAGE] Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden. <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/> @@ -1201,7 +1243,7 @@ Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität soll <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/> </notification> <notification name="DownloadMacMandatory"> - Eine neue Version von [APP_NAME] ist verfügbar. + Eine neue Version von [SUPPORT_SITE] ist verfügbar. [MESSAGE] Sie müssen das Update herunterladen, um [APP_NAME] weiter verwenden zu können. @@ -1209,7 +1251,7 @@ In Ihren Anwendungsordner herunterladen? <usetemplate name="okcancelbuttons" notext="Beenden" yestext="Herunterladen"/> </notification> <notification name="DownloadMac"> - Eine aktualisierte Version von [APP_NAME] ist verfügbar. + Eine neue Version von [APP_NAME] ist verfügbar. [MESSAGE] Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden. @@ -1217,7 +1259,7 @@ In Ihren Anwendungsordner herunterladen? <usetemplate name="okcancelbuttons" notext="Weiter" yestext="Herunterladen"/> </notification> <notification name="DownloadMacReleaseForDownload"> - Eine aktualisierte Version von [APP_NAME] ist verfügbar. + Eine neue Version von [APP_NAME] ist verfügbar. [MESSAGE] Dieses Update ist nicht erforderlich, für bessere Leistung und Stabilität sollte es jedoch installiert werden. @@ -1234,7 +1276,7 @@ In Ihren Anwendungsordner herunterladen? <usetemplate ignoretext="Meinen Browser starten, um eine Webseite anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="OK"/> </notification> <notification name="WebLaunchJoinNow"> - de.secondlife.com öffnen, um Ihr Konto zu verwalten? + Möchten Sie Ihre [http://secondlife.com/account/ Startseite] aufrufen, um Ihr Konto zu verwalten? <usetemplate ignoretext="Meinen Browser starten, um mein Konto zu verwalten" name="okcancelignore" notext="Abbrechen" yestext="OK"/> </notification> <notification name="WebLaunchSecurityIssues"> @@ -1277,14 +1319,14 @@ Diese Gruppe verlassen? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Alle Benutzer hinauswerfen"/> </notification> <notification name="MuteLinden"> - Lindens können nicht stummgeschaltet werden. + Lindens können nicht ignoriert werden. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="CannotStartAuctionAlreadyForSale"> Eine Parzelle, die bereits zum Verkauf freigegeben ist, kann nicht versteigert werden. Deaktivieren Sie den Landverkauf, wenn Sie das Land zur Versteigerung freigeben möchten. </notification> - <notification label="Objekt nach Name stummschalten fehlgeschlagen" name="MuteByNameFailed"> - Dieser Name ist bereits stummgeschaltet. + <notification label="Objekt nach Name ignorieren ist fehlgeschlagen" name="MuteByNameFailed"> + Dieser Name wird bereits ignoriert. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RemoveItemWarn"> @@ -1307,9 +1349,12 @@ Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachricht <notification name="JoinedTooManyGroupsMember"> Sie haben die maximale Anzahl an Gruppen erreicht. Bitte verlassen Sie eine andere Gruppe, um dieser beitreten zu können oder lehnen Sie das Angebot ab. [NAME] hat Sie eingeladen, einer Gruppe beizutreten. -[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"> @@ -1371,13 +1416,17 @@ Chat und Instant Messages werden ausgeblendet. Instant Messages (Sofortnachricht </form> </notification> <notification name="TeleportFromLandmark"> - Möchten Sie sich wirklich teleportieren? + Sind Sie sicher, dass Sie zu <nolink>[LOCATION]</nolink> teleportieren möchten? <usetemplate ignoretext="Bestätigen, dass ich zu einer Landmarke teleportieren möchte" name="okcancelignore" notext="Abbrechen" yestext="Teleportieren"/> </notification> <notification name="TeleportToPick"> Nach [PICK] teleportieren? <usetemplate ignoretext="Bestätigen, dass ich zu einer Position in Auswahl teleportieren möchte" name="okcancelignore" notext="Abbrechen" yestext="Teleportieren"/> </notification> + <notification name="TeleportToClassified"> + Zu [CLASSIFIED] teleportieren? + <usetemplate ignoretext="Bestätigen, dass ich zu einer Position in Anzeigen teleportieren möchte." name="okcancelignore" notext="Abbrechen" yestext="Teleportieren"/> + </notification> <notification label="Nachricht an alle auf diesem Grundstück" name="MessageEstate"> Geben Sie eine kurze Nachricht ein, die an jede Person auf Ihrem Grundstück gesendet wird. <form name="form"> @@ -1462,7 +1511,7 @@ Möchten Sie unsere Knowledgebase besuchen, um mehr Informationen über Alterein <notification name="RegionEntryAccessBlocked_Change"> Sie dürfen diese Region aufgrund der Einstellung Ihrer Alterseinstufung nicht betreten. -Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten > Einstellungen... > Allgemein. +Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten > Einstellungen > Allgemein. <form name="form"> <button name="OK" text="Einstellung ändern"/> <button name="Cancel" text="Schließen"/> @@ -1490,7 +1539,7 @@ Möchten Sie unsere Knowledgebase besuchen, um mehr Informationen über Alterein <notification name="LandClaimAccessBlocked_Change"> Sie haben aufgrund der Einstellung Ihrer Alterseinstufung keinen Anspruch auf dieses Land. -Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten > Einstellungen... > Allgemein. +Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten > Einstellungen > Allgemein. <usetemplate ignoretext="Meine Alterseinstufung lässt nicht zu, dass ich auf Land Anspruch erhebe" name="okcancelignore" notext="Schließen" yestext="Einstellung ändern"/> </notification> <notification name="LandBuyAccessBlocked"> @@ -1514,11 +1563,11 @@ Möchten Sie unsere Knowledgebase besuchen, um mehr Informationen über Alterein <notification name="LandBuyAccessBlocked_Change"> Sie können aufgrund Ihrer Einstellung für Alterseinstufung dieses Land nicht kaufen. -Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten > Einstellungen... > Allgemein. +Klicken Sie auf „Einstellung ändern“, um Ihre Einstellung für Altereinstufung sofort zu ändern und Zugang zu erhalten. Sie können ab sofort [REGIONMATURITY]-Inhalt suchen und auf diesen zugreifen. Falls Sie diese Einstellung später rückgängig machen möchten, gehen Sie zu Bearbeiten > Einstellungen > Allgemein. <usetemplate ignoretext="Meine Alterseinstufung lässt nicht zu, dass ich Land kaufe" name="okcancelignore" notext="Schließen" yestext="Einstellung ändern"/> </notification> <notification name="TooManyPrimsSelected"> - "Zu viele Prims wurden ausgewählt. Bitte wählen Sie höchstens [MAX_PRIM_COUNT] Prims aus und versuchen Sie es erneut." + Zu viele Prims wurden ausgewählt. Bitte wählen Sie höchstens [MAX_PRIM_COUNT] Prims aus und versuchen Sie es erneut. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ProblemImportingEstateCovenant"> @@ -1550,11 +1599,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"> @@ -1571,10 +1620,12 @@ 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] mit dem Voice-Chat-Feature in dieser Region nicht kompatibel. Damit Voice-Chat funktioniert, müssen Sie [APP_NAME] aktualisieren. + 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. </notification> <notification label="Objekte können nicht gekauft werden" name="BuyObjectOneOwner"> Objekte können nicht von mehreren Eigentümern gleichzeitig gekauft werden. @@ -1682,7 +1733,7 @@ Inventarobjekt(e) verschieben? Sie haben keine Berechtigung zum Kopieren von Elementen in diesem Objekt. </notification> <notification name="WebLaunchAccountHistory"> - de.secondlife.com öffnen, um Ihre Konto-Statistik anzuzeigen? + Möchten Sie Ihre [http://secondlife.com/account/ Startseite] aufrufen, um Ihre Konto-Statistik anzuzeigen? <usetemplate ignoretext="Meinen Browser starten, um meine Konto-Statistik anzuzeigen" name="okcancelignore" notext="Abbrechen" yestext="Gehe zu Seite"/> </notification> <notification name="ConfirmQuit"> @@ -1690,19 +1741,9 @@ Inventarobjekt(e) verschieben? <usetemplate ignoretext="Bestätigen, bevor Sitzung beendet wird" name="okcancelignore" notext="Nicht beenden" yestext="Beenden"/> </notification> <notification name="HelpReportAbuseEmailLL"> - Verwenden Sie dieses Tool, um Verletzungen der [http://secondlife.com/corporate/tos.php?lang=de-DE Servicebedingungen] und [http://secondlife.com/corporate/cs.php?lang=de-DE Community-Standards] zu melden. - -Alle gemeldeten Verletzungen der Servicebedingungen und Community-Standards werden geprüft und geklärt Sie können den Prozess im Incident Report (Vorfallsbericht) verfolgen: + 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. -http://secondlife.com/support/incidentreport.php - </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.) -- -Das Resultat, das sich aus dieser Meldung ergibt, betrifft nur diese Region; der Einwohnerzugang zu anderen Bereichen von [SECOND_LIFE] ist davon nicht betroffen. Nur Linden Lab kann den Zugang zu [SECOND_LIFE] beschränken. +Alle gemeldeten Verstöße werden bearbeitet. </notification> <notification name="HelpReportAbuseSelectCategory"> Wählen Sie eine Missbrauchskategorie aus. @@ -1729,9 +1770,9 @@ Eine möglichst genaue Beschreibung mit Namen und Einzelheiten hilft uns, Fälle Sie melden eine Urheberrechtsverletzung. Sind Sie wirklich sicher, dass Sie eine Verletzung des Urheberrechts melden möchten? -1. Missbrauch melden. Wenn Sie der Meinung sind, ein Einwohner nutzt das Berechtigungssystem von [SECOND_LIFE] auf unerlaubte Weise zu seinem Vorteil aus, indem er zum Beispiel einen CopyBot oder ähnliche Kopiertools verwendet und damit eine Urheberrechtsverletzung begeht, können Sie diesen Missbrauch melden. Das Missbrauchsteam untersucht etwaige Verstöße gegen die [SECOND_LIFE] Community Standards oder die Nutzungsbedingungen und verhängt entsprechende Strafen. Das Missbrauchsteam ist jedoch nicht dafür zuständig, Inhalte aus der [SECOND_LIFE]-Welt zu entfernen und reagiert auch nicht auf entsprechende Anfragen. +1. Missbrauch melden. Wenn Sie der Meinung sind, ein Einwohner nutzt das Berechtigungssystem von [SECOND_LIFE] auf unerlaubte Weise zu seinem Vorteil aus, indem er zum Beispiel einen CopyBot oder ähnliche Kopiertools verwendet und damit eine Urheberrechtsverletzung begeht, können Sie diesen Missbrauch melden. Das Missbrauchsteam untersucht gemeldete Verstöße gegen die [SECOND_LIFE] [http://secondlife.com/corporate/tos.php Servicebedingungen] oder [http://secondlife.com/corporate/cs.php Community-Standards] und verhängt entsprechende Maßnahmen. Das Missbrauchsteam ist jedoch nicht dafür zuständig, Inhalte aus der [SECOND_LIFE]-Welt zu entfernen und reagiert auch nicht auf entsprechende Anfragen. -2. Der DMCA oder das Entfernen von Inhalten. Sie können das Entfernen von Inhalten aus [SECOND_LIFE] beantragen. Dazu MÜSSEN Sie eine Urheberrechtsverletzung gemäß den in unserer DMCA-Richtlinie unter http://secondlife.com/corporate/dmca.php dargelegten Anweisungen einreichen. +2. Der DMCA oder das Entfernen von Inhalten. Sie können das Entfernen von Inhalten aus [SECOND_LIFE] beantragen. Dazu MÜSSEN Sie eine Urheberrechtsverletzung gemäß den in unserer DMCA-Richtlinie unter [http://secondlife.com/corporate/dmca.php] dargelegten Anweisungen einreichen. Wenn Sie mit der Missbrauchmeldung jetzt fortfahren möchten, schließen Sie bitte dieses Fenster und senden Sie Ihren Bericht ein. Möglicherweise müssen Sie Kategorie „CopyBot oder Berechtigungs-Exploit“ auswählen. @@ -1762,13 +1803,17 @@ Möchten Sie den Bechäftigt-Modus verlassen, bevor Sie diese Transaktion abschl <button ignore="Beschäftigt-Modus aktiviert lassen" name="No" text="Abbrechen"/> </form> </notification> + <notification name="ConfirmDeleteProtectedCategory"> + Der Ordner „[FOLDERNAME]“ ist ein Systemordner. Das Löschen von Systemordnern kann zu instabiler Leistung führen. Möchten Sie fortfahren? + <usetemplate ignoretext="Bestätigen, bevor ich einen Systemordner lösche." name="okcancelignore" notext="Abbrechen" yestext="OK"/> + </notification> <notification name="ConfirmEmptyTrash"> Sind Sie sicher, dass Sie den Inhalt Ihres Papierkorbs löschen möchten? <usetemplate ignoretext="Bestätigen, bevor der Ordner Papierkorb im Inventar geleert wird" name="okcancelignore" notext="Abbrechen" yestext="OK"/> </notification> <notification name="ConfirmClearBrowserCache"> Sind Sie sicher, dass Sie Ihren Reise-, Internet- und Suchverlauf löschen möchten? - <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/> + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> <notification name="ConfirmClearCookies"> Sind Sie sicher, dass Sie Ihre Cookies löschen möchten? @@ -1929,11 +1974,10 @@ Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dies Terrain.raw heruntergeladen </notification> <notification name="GestureMissing"> - Geste [NAME] fehlt in Datenbank. + Hmm. Geste [NAME] fehlt in Datenbank. </notification> <notification name="UnableToLoadGesture"> Geste [NAME] konnte nicht geladen werden. -Bitte versuchen Sie es erneut. </notification> <notification name="LandmarkMissing"> Landmarke fehlt in Datenbank. @@ -2003,7 +2047,7 @@ Wählen Sie ein einzelnes Objekt aus. Ihnen fehlt die Berechtigung zum Kopieren. </notification> <notification name="InventoryAccepted"> - [NAME] hat Ihr Inventarangebot akzeptiert. + [NAME] hat Ihr Inventarangebot erhalten. </notification> <notification name="InventoryDeclined"> [NAME] hat Ihr Inventarangebot abgelehnt. @@ -2018,12 +2062,14 @@ Wählen Sie ein einzelnes Objekt aus. Ihre Visitenkarte wurde abgelehnt. </notification> <notification name="TeleportToLandmark"> - Jetzt, nachdem Sie das Mainland erreicht haben, können Sie sich an Positionen wie „[NAME]“ teleportieren, indem Sie unten rechts im Fenster auf „Inventar“ klicken und den Ordner „Landmarken“ auswählen. -Klicken Sie eine Landmarke doppelt an und wählen Sie „Teleportieren“, um an diesen Ort zu gelangen. + Sie können an Positionen wie „[NAME]“ teleportieren, wenn Sie rechts in Ihrem Bildschirm die Tafel „Orte“ öffnen und dann die Registerkarte „Landmarken“ auswählen. +Klicken Sie auf eine Landmarke, um diese auszuwählen. Klicken Sie anschließend auf „Teleport“ unten in der Konsole. +(Sie können auch auf die Landmarke doppelt klicken oder mit rechts auf die Landmarke klicken und dann „Teleport“ auswählen). </notification> <notification name="TeleportToPerson"> - Jetzt, nachdem Sie das Mainland erreicht haben, können Sie mit Einwohnern wie „[NAME]“ Kontakt aufnehmen, indem Sie unten rechts im Fenster auf „Inventar“ klicken und den Ordner „Visitenkarten“ auswählen. -Klicken Sie die Karte doppelt an, wählen Sie „Instant Message“ und geben Sie eine Nachricht ein. + Sie können Einwohner wie „[NAME]“ kontaktieren, wenn Sie die Tafel „Leute“ auf der rechten Seite Ihres Bildschirms öffnen. +Wählen Sie den Einwohner aus der Liste aus und klicken Sie unten auf „IM“. +(Sie können auch auf den Namen doppelt klicken oder mit rechts auf den Namen klicken und dann „IM“ auswählen). </notification> <notification name="CantSelectLandFromMultipleRegions"> Land kann nicht über Servergrenzen hinweg ausgewählt werden. @@ -2033,7 +2079,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: @@ -2046,6 +2092,9 @@ Wählen Sie eine kleinere Landfläche. <notification name="SystemMessage"> [MESSAGE] </notification> + <notification name="PaymentRecived"> + [MESSAGE] + </notification> <notification name="EventNotification"> Event-Benachrichtigung: @@ -2070,8 +2119,8 @@ Wählen Sie eine kleinere Landfläche. [NAMES] </notification> <notification name="NoQuickTime"> - Apple QuickTime ist auf Ihrem System anscheinend nicht installiert. -Laden Sie QuickTime von der QuickTime-Webseite (http://www.apple.com/de/quicktime) herunter, um auf Parzellen, die diese Funktion unterstützen, Streaming-Inhalte wiederzugeben. + AppleQuickTime ist auf Ihrem System anscheinend nicht installiert. +Laden Sie QuickTime von der [http://www.apple.com/quicktime QuickTime-Webseite] herunter, um auf Parzellen, die diese Funktion unterstützen, Streaming-Inhalte wiederzugeben. </notification> <notification name="NoPlugin"> Es wurde kein Medien-Plugin gefunden, das "[MIME_TYPE]" ausführen kann. Medien dieses Dateityps sind nicht verfügbar. @@ -2092,8 +2141,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. @@ -2103,6 +2151,10 @@ Nicht transferierbare an die Gruppe übertragene Objekte wurden gelöscht. <notification name="UnOwnedObjectsReturned"> Alle Objekte auf der ausgewählten Parzelle, die NICHT Ihnen gehören, wurden ihren Eigentümern zurückgegeben. </notification> + <notification name="ServerObjectMessage"> + Nachricht von [NAME]: +<nolink>[MSG]</nolink> + </notification> <notification name="NotSafe"> Auf diesem Land ist Schaden aktiviert. Verletzungen sind möglich. Wenn Sie sterben, werden Sie zu Ihrem Heimatstandort teleportiert. @@ -2112,8 +2164,7 @@ Verletzungen sind möglich. Wenn Sie sterben, werden Sie zu Ihrem Heimatstandort Fliegen ist hier nicht möglich. </notification> <notification name="PushRestricted"> - In diesem Bereich ist Stoßen nicht erlaubt. -Sie können keine anderen Personen stoßen, außer Ihnen gehört das Land. + In diesem Bereich ist Stoßen nicht erlaubt. Sie können keine anderen Personen stoßen, außer Ihnen gehört das Land. </notification> <notification name="NoVoice"> In diesem Bereich ist Voice deaktiviert. Sie werden niemanden sprechen hören. @@ -2149,6 +2200,9 @@ Bitte besuchen Sie unsere Knowledgebase, um mehr Details über Zugang zu Regione <notification name="ImproperPaymentStatus"> Die für den Zutritt zu dieser Region erforderlichen Zahlungsinformationen liegen nicht vor. </notification> + <notification name="MustGetAgeRgion"> + Sie müssen alterüberprüft sein, um diese Region betreten zu können. + </notification> <notification name="MustGetAgeParcel"> Sie müssen alterüberprüft sein, um diese Parzelle betreten zu können. </notification> @@ -2211,30 +2265,35 @@ Versuchen Sie es in einigen Minuten erneut. Es konnte keine gültige Parzelle gefunden werden. </notification> <notification name="ObjectGiveItem"> - Das Objekt [OBJECTFROMNAME] von [FIRST] [LAST] hat Ihnen Folgendes übergeben: [OBJECTTYPE] ([OBJECTNAME]). + Ein Objekt namens [OBJECTFROMNAME] von [NAME_SLURL] hat Ihnen folgendes übergeben [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Behalten"/> <button name="Discard" text="Verwerfen"/> - <button name="Mute" text="Stummschalten"/> + <button name="Mute" text="Ignorieren"/> </form> </notification> <notification name="ObjectGiveItemUnknownUser"> - Das Objekt [OBJECTFROMNAME] von (unbekannt) hat Ihnen Folgendes übergeben: [OBJECTTYPE] ([OBJECTNAME]). + Ein Objekt namens [OBJECTFROMNAME] von (einem unbekannten Einwohner) hat Ihnen folgendes übergeben [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Behalten"/> <button name="Discard" text="Verwerfen"/> - <button name="Mute" text="Stummschalten"/> + <button name="Mute" text="Ignorieren"/> </form> </notification> <notification name="UserGiveItem"> - [NAME] hat Ihnen ein [OBJECTTYPE] namens „[OBJECTNAME]“ gegeben. + [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"> [NAME] + [MESSAGE] </notification> <notification name="JoinGroup"> @@ -2246,7 +2305,7 @@ Versuchen Sie es in einigen Minuten erneut. </form> </notification> <notification name="TeleportOffered"> - [NAME] hat angeboten, Sie zu ihrem/seinem Standort zu teleportieren: + [NAME] hat Ihnen einen Teleport an seine/ihre Position angeboten: [MESSAGE] <form name="form"> @@ -2254,6 +2313,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] @@ -2273,6 +2335,9 @@ Versuchen Sie es in einigen Minuten erneut. <button name="Decline" text="Ablehnen"/> </form> </notification> + <notification name="FriendshipOffered"> + Sie haben [TO_NAME] die Freundschaft angeboten. + </notification> <notification name="OfferFriendshipNoMessage"> [NAME] bietet Ihnen die Freundschaft an. @@ -2289,15 +2354,15 @@ 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"/> </form> </notification> <notification name="RegionRestartMinutes"> - Region wird in [MINUTES] Minuten neu gestartet. + Diese Region wird in [Minuten] neu gestartet. Wenn Sie in dieser Region bleiben, werden Sie abgemeldet. </notification> <notification name="RegionRestartSeconds"> @@ -2322,7 +2387,7 @@ Von Objekt: [OBJECTNAME], Eigentümer: [NAME]? [TYPE] namens [DESC] nicht in Datenbank. </notification> <notification name="InvalidWearable"> - Dieser Artikel verwendet eine Funktion, die Ihr Viewer nicht unterstützt. Bitte aktualisieren Sie Ihre Version von [APP_NAME], um diesen Artikel anziehen zu können. + Dieser Artikel verwendet eine Funktion, die Ihr Viewer nicht unterstützt. Bitte aktualisieren Sie Ihre Version von [APP_NAME], um dieses Objekt anziehen zu können. </notification> <notification name="ScriptQuestion"> Das Objekt „[OBJECTNAME]“, Eigentum von „[NAME]“, möchte: @@ -2332,7 +2397,7 @@ Ist das OK? <form name="form"> <button name="Yes" text="Ja"/> <button name="No" text="Nein"/> - <button name="Mute" text="Stummschalten"/> + <button name="Mute" text="Ignorieren"/> </form> </notification> <notification name="ScriptQuestionCaution"> @@ -2362,29 +2427,20 @@ Anfrage gestatten? <button name="Ignore" 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="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. -Mit Doppelklick können Sie teleportieren. -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 name="ScriptToast"> + [FIRST] [LAST]s '[TITLE]' fordert Eingaben vom Benutzer an. + <form name="form"> + <button name="Open" text="Dialog öffnen"/> + <button name="Ignore" text="Ignorieren"/> + <button name="Block" text="Ignorieren"/> + </form> </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 name="BuyLindenDollarSuccess"> + Vielen Dank für Ihre Zahlung. + +Ihr L$-Kontostand wird aktualisiert, sobald die Bearbeitung abgeschlossen ist. Falls die Bearbeitung länger als 20 min dauert, ist es möglich, dass Ihre Transaktion abgebrochen wird. In diesem Fall wird der Kaufbetrag in US$ auf Ihrem Konto gutgeschrieben. + +Der Zahlungsstatus kann auf Ihrer [http://secondlife.com/account/ Startseite] unter Transaktionsübersicht überprüft werden. </notification> <notification name="FirstOverrideKeys"> Ihre Bewegungstasten werden jetzt von einem Objekt gesteuert. @@ -2392,83 +2448,58 @@ 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 ⌘-Opt-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. </notification> <notification name="VoiceInviteP2P"> [NAME] lädt Sie zu einem Voice-Chat ein. -Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Anrufer stumm zu schalten. +Klicken Sie auf 'Akzeptieren ', um dem Gespräch beizutreten, oder auf 'Ablehnen ', um die Einladung auszuschlagen. Klicken Sie auf Ignorieren, um diesen Anrufer zu ignorieren. <form name="form"> <button name="Accept" text="Akzeptieren"/> <button name="Decline" text="Ablehnen"/> - <button name="Mute" text="Stummschalten"/> + <button name="Mute" text="Ignorieren"/> </form> </notification> <notification name="AutoUnmuteByIM"> - [FIRST] [LAST] hat eine Instant Message erhalten; die Stummschaltung wurde aufgehoben. + [FIRST] [LAST] hat eine Benachrichtigung erhalten und wird nicht länger ignoriert. </notification> <notification name="AutoUnmuteByMoney"> - [FIRST] [LAST] hat Geld erhalten; die Stummschaltung wurde aufgehoben. + [FIRST] [LAST] wurde bezahlt und wird nicht länger ignoriert. </notification> <notification name="AutoUnmuteByInventory"> - [FIRST] [LAST] wurde ein Inventarobjekt angeboten; die Stummschaltung wurde aufgehoben. + [FIRST] [LAST] wurde Inventar angeboten und wird nicht länger ignoriert. </notification> <notification name="VoiceInviteGroup"> [NAME] ist einem Voice-Chat mit der Gruppe [GROUP] beigetreten. -Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Anrufer stumm zu schalten. +Klicken Sie auf 'Akzeptieren ', um dem Gespräch beizutreten, oder auf 'Ablehnen ', um die Einladung auszuschlagen. Klicken Sie auf Ignorieren, um diesen Anrufer zu ignorieren. <form name="form"> <button name="Accept" text="Akzeptieren"/> <button name="Decline" text="Ablehnen"/> - <button name="Mute" text="Stummschalten"/> + <button name="Mute" text="Ignorieren"/> </form> </notification> <notification name="VoiceInviteAdHoc"> - [NAME] ist einem Voice-Konferenz-Chat beigetreten. -Klicken Sie auf „Akzeptieren“, um dem Gespräch beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Benutzer stumm zu schalten. + [NAME] ist einem Voice-Chat mit Konferenzschaltung beigetreten. +Klicken Sie auf 'Akzeptieren ', um dem Gespräch beizutreten, oder auf 'Ablehnen ', um die Einladung auszuschlagen. Klicken Sie auf Ignorieren, um diesen Anrufer zu ignorieren. <form name="form"> <button name="Accept" text="Akzeptieren"/> <button name="Decline" text="Ablehnen"/> - <button name="Mute" text="Stummschalten"/> + <button name="Mute" text="Ignorieren"/> </form> </notification> <notification name="InviteAdHoc"> [NAME] lädt Sie zu einem Konferenz-Chat ein. -Klicken Sie auf „Akzeptieren“, um dem Chat beizutreten, oder auf „Ablehnen“, um die Einladung auszuschlagen. Klicken Sie auf „Stummschalten“, um diesen Benutzer stumm zu schalten. +Klicken Sie auf 'Akzeptieren ', um dem Chat beizutreten, oder auf 'Ablehnen ', um die Einladung auszuschlagen. Klicken Sie auf Ignorieren, um diesen Anrufer zu ignorieren. <form name="form"> <button name="Accept" text="Akzeptieren"/> <button name="Decline" text="Ablehnen"/> - <button name="Mute" text="Stummschalten"/> + <button name="Mute" text="Ignorieren"/> </form> </notification> <notification name="VoiceChannelFull"> @@ -2478,19 +2509,19 @@ Klicken Sie auf „Akzeptieren“, um dem Chat beizutreten, oder auf „Ablehnen Es tut uns Leid. Dieses Gebiet hat seine maximale Kapazität für Voice-Gespräche erreicht. Bitte versuchen Sie es in einem anderen Gebiet. </notification> <notification name="VoiceChannelDisconnected"> - Sie haben [VOICE_CHANNEL_NAME] verlassen. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. + Die Verbindung zu [VOICE_CHANNEL_NAME] wurde abgebrochen. Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden. </notification> <notification name="VoiceChannelDisconnectedP2P"> - [VOICE_CHANNEL_NAME] hat das Gespräch beendet. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. + [VOICE_CHANNEL_NAME] hat den Anruf beendet. Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden. </notification> <notification name="P2PCallDeclined"> - [VOICE_CHANNEL_NAME] hat Ihren Anruf abgelehnt. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. + [VOICE_CHANNEL_NAME] hat ihren Anruf abgelehnt. Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden. </notification> <notification name="P2PCallNoAnswer"> - [VOICE_CHANNEL_NAME] ist zurzeit nicht erreichbar. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. + [VOICE_CHANNEL_NAME] kann Ihren Anruf nicht entgegennehmen. Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden. </notification> <notification name="VoiceChannelJoinFailed"> - Verbindung zu [VOICE_CHANNEL_NAME] nicht möglich. Bitte versuchen Sie es später. Sie werden nun wieder mit dem Umgebungs-Voice-Chat verbunden. + Verbindung zu [VOICE_CHANNEL_NAME] nicht möglich. Bitte versuchen Sie es später. Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden. </notification> <notification name="VoiceLoginRetry"> Wir erstellen einen Voice-Kanal für Sie. Bitte warten Sie einen Moment. @@ -2511,22 +2542,55 @@ Klicken Sie auf „Akzeptieren“, um dem Chat beizutreten, oder auf „Ablehnen Fehler beim Versuch, eine Voice-Chat-Verbindung zu [VOICE_CHANNEL_NAME] herzustellen. Bitte versuchen Sie es erneut. </notification> <notification name="ServerVersionChanged"> - Sie haben eine Region betreten, die eine andere Server-Version verwendet. Dies kann sich auf die Leistung auswirken. Klicken Sie hier, um die Versionshinweise anzuzeigen. + Sie haben eine Region betreten, die eine andere Server-Version verwendet. Dies kann sich auf die Leistung auswirken. [[URL] Versionshinweise anzeigen.] </notification> <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> <notification name="UnableToFindHelpTopic"> Hilfethema für dieses Element wurde nicht gefunden. </notification> + <notification name="ObjectMediaFailure"> + Serverfehler: Medienaktualisierung oder Fehler +'[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 Ihre Teleport-Liste löschen? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> + <notification name="BottomTrayButtonCanNotBeShown"> + Die ausgewählte Schaltfläche kann zur Zeit nicht angezeigt werden. +Die Schaltfläche wird angezeigt, wenn genügend Platz vorhanden ist. + </notification> <global name="UnsupportedCPU"> - Ihre CPU-Geschwindigkeit entspricht nicht den Mindestanforderungen. </global> @@ -2547,14 +2611,8 @@ Sollte das Problem fortbestehen, finden Sie weitere Hilfestellung unter [SUPPORT <global name="UnsupportedRAM"> - Ihr Arbeitsspeicher entspricht nicht den Mindestanforderungen. </global> - <global name="PermYes"> - Ja - </global> - <global name="PermNo"> - Nein - </global> <global name="You can only set your 'Home Location' on your land or at a mainland Infohub."> - Wenn Sie ein Stück Land besitzen, können Sie dies als Ihren Heimatort festlegen. + Wenn Sie ein Stück Land besitzen, können Sie dies als Ihr Zuhause festlegen. Ansonsten können Sie auf der Karte nachsehen und dort Ort suchen, die als „Infohub“ gekennzeichnet sind. </global> </notifications> 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 0000000000..00de705a30 --- /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_activeim_row.xml b/indra/newview/skins/default/xui/de/panel_activeim_row.xml new file mode 100644 index 0000000000..84272752cf --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_activeim_row.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_activeim_row"> + <text name="contact_name"> + Grumpity ProductEngine + </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 new file mode 100644 index 0000000000..6ad18781f5 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_adhoc_control_panel.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_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 new file mode 100644 index 0000000000..0715175dd9 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_avatar_list_item.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="avatar_list_item"> + <string name="FormatSeconds"> + [COUNT]s + </string> + <string name="FormatMinutes"> + [COUNT]min + </string> + <string name="FormatHours"> + [COUNT]h + </string> + <string name="FormatDays"> + [COUNT]d + </string> + <string name="FormatWeeks"> + [COUNT]W + </string> + <string name="FormatMonths"> + [COUNT]M + </string> + <string name="FormatYears"> + [COUNT]J + </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_avatar_tag.xml b/indra/newview/skins/default/xui/de/panel_avatar_tag.xml new file mode 100644 index 0000000000..09f930ec01 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_avatar_tag.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="avatar_tag_notification"> + <panel name="msg_caption"> + <text name="sender_tag_name"> + Angela Tester + </text> + <text name="tag_time" value="23:30"/> + </panel> + <text_editor name="msg_text"> + Zwölf große Boxkämpfer jagen Viktor quer über den großen Sylter Deich. + </text_editor> +</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 new file mode 100644 index 0000000000..2d140515d4 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_block_list_sidetray.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="block_list_panel" width="300"> + <text left_pad="5" name="title_text" width="260"> + Liste der ignorierten Einwohner + </text> + <scroll_list name="blocked" tool_tip="Liste der zur Zeit ignorierten Einwohner" width="290"/> + <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 new file mode 100644 index 0000000000..d3f89b0ad3 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_bottomtray.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="bottom_tray"> + <string name="SpeakBtnToolTip"> + Schaltet Mikrofon ein/aus + </string> + <string name="VoiceControlBtnToolTip"> + Voice-Chat-Steuerung anzeigen/ausblenden + </string> + <layout_stack name="toolbar_stack"> + <layout_panel name="speak_panel"> + <talk_button name="talk"> + <speak_button label="Sprechen" label_selected="Sprechen" name="speak_btn"/> + </talk_button> + </layout_panel> + <layout_panel name="gesture_panel"> + <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"/> + </layout_panel> + <layout_panel name="cam_panel"> + <button label="Ansicht" name="camera_btn" tool_tip="Kamerasteuerung anzeigen/ausblenden"/> + </layout_panel> + <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_bottomtray_lite.xml b/indra/newview/skins/default/xui/de/panel_bottomtray_lite.xml new file mode 100644 index 0000000000..9c84105254 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_bottomtray_lite.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="bottom_tray_lite"> + <layout_stack name="toolbar_stack_lite"> + <layout_panel name="gesture_panel"> + <gesture_combo_list label="Gesten" name="Gesture" tool_tip="Gesten anzeigen/ausblenden"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_chat_header.xml b/indra/newview/skins/default/xui/de/panel_chat_header.xml new file mode 100644 index 0000000000..babbff3132 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_chat_header.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="im_header" name="im_header"> + <text_editor name="user_name" value="Ericag Vader"/> + <text name="time_box" value="23:30"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_classified_info.xml b/indra/newview/skins/default/xui/de/panel_classified_info.xml new file mode 100644 index 0000000000..d824eff338 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_classified_info.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_classified_info"> + <panel.string name="type_mature"> + Moderat + </panel.string> + <panel.string name="type_pg"> + Allgemeiner Inhalt + </panel.string> + <panel.string name="l$_price"> + [PRICE] L$ + </panel.string> + <text name="title" value="Anzeigen-Info"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text_editor name="classified_name" value="[name]"/> + <text_editor name="classified_location" value="[wird geladen...]"/> + <text_editor name="content_type" value="[Inhalts-Art]"/> + <text_editor name="category" value="[Kategorie]"/> + <check_box label="Jede Woche automatisch erneuern" name="auto_renew"/> + <text_editor name="price_for_listing" tool_tip="Preis für Anzeige."/> + <text_editor name="classified_desc" value="[description]"/> + </panel> + </scroll_container> + <panel name="buttons"> + <button label="Teleportieren" name="teleport_btn"/> + <button label="Karte" name="show_on_map_btn"/> + <button label="Bearbeiten" name="edit_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_alpha.xml b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml new file mode 100644 index 0000000000..b6c53be778 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_edit_alpha.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="edit_alpha_panel" width="320"> + <panel name="avatar_alpha_color_panel" width="300"> + <texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/> + <texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="66"/> + <texture_picker label="Kopf: Alpha" name="Head Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="72"/> + <texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken" width="70"/> + </panel> +</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 new file mode 100644 index 0000000000..2e0370c579 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_edit_classified.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Anzeige bearbeiten" name="panel_edit_classified"> + <panel.string name="location_notice"> + (wird nach Speichern aktualisiert) + </panel.string> + <text name="title"> + Anzeige bearbeiten + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="Klicken, um ein Bild auszuwählen"/> + <text name="Name:"> + Titel: + </text> + <text name="description_label"> + Beschreibung: + </text> + <text name="location_label"> + Standort: + </text> + <text name="classified_location"> + wird geladen... + </text> + <button label="Aktuellen Standort verwenden" name="set_to_curr_location_btn"/> + <combo_box name="content_type"> + <combo_item name="mature_ci"> + Moderater Inhalt + </combo_item> + <combo_item name="pg_ci"> + Allgemeiner Inhalt + </combo_item> + </combo_box> + <spinner label="L$" name="price_for_listing" tool_tip="Preis für Anzeige." value="50"/> + <check_box label="Jede Woche automatisch erneuern" name="auto_renew"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="Speichern" name="save_changes_btn"/> + <button label="Abbrechen" name="cancel_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_eyes.xml b/indra/newview/skins/default/xui/de/panel_edit_eyes.xml new file mode 100644 index 0000000000..31251ed48f --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Iris" name="Iris" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="eyes_main_tab" title="Augen"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_gloves.xml b/indra/newview/skins/default/xui/de/panel_edit_gloves.xml new file mode 100644 index 0000000000..2d11befbfd --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Stoff" name="Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="gloves_main_tab" title="Handschuhe"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_hair.xml b/indra/newview/skins/default/xui/de/panel_edit_hair.xml new file mode 100644 index 0000000000..d255b1c16c --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Textur" name="Texture" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="hair_color_tab" title="Farbe"/> + <accordion_tab name="hair_style_tab" title="Stil"/> + <accordion_tab name="hair_eyebrows_tab" title="Augenbrauen"/> + <accordion_tab name="hair_facial_tab" title="Gesicht"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_jacket.xml b/indra/newview/skins/default/xui/de/panel_edit_jacket.xml new file mode 100644 index 0000000000..3752faf48a --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Oberstoff" name="Upper Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Unterstoff" name="Lower Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="jacket_main_tab" title="Jacke"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_pants.xml b/indra/newview/skins/default/xui/de/panel_edit_pants.xml new file mode 100644 index 0000000000..1ff439dc26 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Stoff" name="Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="pants_main_tab" title="Hose"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_pick.xml b/indra/newview/skins/default/xui/de/panel_edit_pick.xml new file mode 100644 index 0000000000..0cb14177af --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_edit_pick.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Auswahl bearbeiten" name="panel_edit_pick"> + <text name="title"> + Auswahl bearbeiten + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="Klicken, um ein Bild auszuwählen"/> + <text name="Name:"> + Titel: + </text> + <text name="description_label"> + Beschreibung: + </text> + <text name="location_label"> + Standort: + </text> + <text name="pick_location"> + wird geladen... + </text> + <button label="Aktuellen Standort verwenden" name="set_to_curr_location_btn"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="[WHAT] speichern" name="save_changes_btn"/> + <button label="Abbrechen" name="cancel_btn"/> + </panel> +</panel> 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 9ddc31aca5..bf74abaeba 100644 --- a/indra/newview/skins/default/xui/de/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_edit_profile.xml @@ -1,7 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Profile Edit" name="edit_profile_panel"> +<panel label="Profil bearbeiten" name="edit_profile_panel"> <string name="CaptionTextAcctInfo"> - [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] + [ACCTTYPE] +[PAYMENTINFO] [AGEVERIFICATION] + </string> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) </string> <string name="AcctTypeResident" value="Einwohner"/> <string name="AcctTypeTrial" value="Test"/> @@ -15,19 +19,36 @@ <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"> <panel name="data_panel"> <panel name="lifes_images_panel"> + <panel name="second_life_image_panel"> + <text name="second_life_photo_title_text" value="[SECOND_LIFE]:"/> + </panel> <icon label="" name="2nd_life_edit_icon" tool_tip="Klicken, um ein Bild auszuwählen"/> </panel> + <panel name="first_life_image_panel"> + <text name="real_world_photo_title_text" value="Echtes Leben:"/> + </panel> <icon label="" name="real_world_edit_icon" tool_tip="Klicken, um ein Bild auszuwählen"/> <text name="title_homepage_text"> Webseite: </text> + <line_editor name="homepage_edit" value="http://"/> <check_box label="In Suchergebnissen anzeigen" name="show_in_search_checkbox"/> - <text name="title_acc_status_text" value="Kontostatus:"/> + <text name="title_acc_status_text" value="Mein Konto:"/> + <text_editor name="acc_status_text" value="Einwohner. Keine Zahlungsinfo archiviert."/> + <text name="my_account_link" value="[[URL] Meine Startseite aufrufen]"/> + <text name="title_partner_text" value="Mein Partner:"/> + <panel name="partner_data_panel"> + <name_box initial_value="(wird in Datenbank gesucht)" name="partner_text" value="[FIRST] [LAST]"/> + </panel> + <text name="partner_edit_link" value="[[URL] bearbeiten]"/> </panel> </panel> </scroll_container> diff --git a/indra/newview/skins/default/xui/de/panel_edit_shape.xml b/indra/newview/skins/default/xui/de/panel_edit_shape.xml new file mode 100644 index 0000000000..37be3c1d90 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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"> + Geschlecht: + </text> + <radio_group name="sex_radio"> + <radio_item label="weiblich" name="radio"/> + <radio_item label="Männlich" name="radio2"/> + </radio_group> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shape_body_tab" title="Körper"/> + <accordion_tab name="shape_head_tab" title="Kopf"/> + <accordion_tab name="shape_eyes_tab" title="Augen"/> + <accordion_tab name="shape_ears_tab" title="Ohren"/> + <accordion_tab name="shape_nose_tab" title="Nase"/> + <accordion_tab name="shape_mouth_tab" title="Mund"/> + <accordion_tab name="shape_chin_tab" title="Kinn"/> + <accordion_tab name="shape_torso_tab" title="Oberkörper"/> + <accordion_tab name="shape_legs_tab" title="Beine"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_shirt.xml b/indra/newview/skins/default/xui/de/panel_edit_shirt.xml new file mode 100644 index 0000000000..6025606777 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Stoff" name="Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shirt_main_tab" title="Hemd"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_shoes.xml b/indra/newview/skins/default/xui/de/panel_edit_shoes.xml new file mode 100644 index 0000000000..15e8a21dd7 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Stoff" name="Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shoes_main_tab" title="Schuhe"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_skin.xml b/indra/newview/skins/default/xui/de/panel_edit_skin.xml new file mode 100644 index 0000000000..90b06a29bc --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Kopftattoo" name="Head Tattoos" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Obere Tattoos" name="Upper Tattoos" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <texture_picker label="Untere Tattoos" name="Lower Tattoos" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skin_color_tab" title="Hautfarbe"/> + <accordion_tab name="skin_face_tab" title="Gesichtsdetails"/> + <accordion_tab name="skin_makeup_tab" title="Make-Up"/> + <accordion_tab name="skin_body_tab" title="Körperdetails"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_skirt.xml b/indra/newview/skins/default/xui/de/panel_edit_skirt.xml new file mode 100644 index 0000000000..4fa9126c37 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Stoff" name="Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skirt_main_tab" title="Rock"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_socks.xml b/indra/newview/skins/default/xui/de/panel_edit_socks.xml new file mode 100644 index 0000000000..c2ecad8642 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Stoff" name="Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="socks_main_tab" title="Socken"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/de/panel_edit_tattoo.xml new file mode 100644 index 0000000000..12649e9251 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/> + <texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/> + <texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken" width="80"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_underpants.xml b/indra/newview/skins/default/xui/de/panel_edit_underpants.xml new file mode 100644 index 0000000000..4484068c1d --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Stoff" name="Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="underpants_main_tab" title="Unterhose"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/de/panel_edit_undershirt.xml new file mode 100644 index 0000000000..847f806fce --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Stoff" name="Fabric" tool_tip="Zum Auswählen eines Bildes hier klicken"/> + <color_swatch label="Farbe/Ton" name="Color/Tint" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="undershirt_main_tab" title="Unterhemd"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_edit_wearable.xml b/indra/newview/skins/default/xui/de/panel_edit_wearable.xml new file mode 100644 index 0000000000..c3ffb2f353 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_edit_wearable.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Tragbar" name="panel_edit_wearable"> + <string name="edit_shape_title"> + Form bearbeiten + </string> + <string name="edit_skin_title"> + Skin (Haut) bearbeiten + </string> + <string name="edit_hair_title"> + Haare bearbeiten + </string> + <string name="edit_eyes_title"> + Augen bearbeiten + </string> + <string name="edit_shirt_title"> + Hemd bearbeiten + </string> + <string name="edit_pants_title"> + Hosen bearbeiten + </string> + <string name="edit_shoes_title"> + Schuhe bearbeiten + </string> + <string name="edit_socks_title"> + Strümpfe bearbeiten + </string> + <string name="edit_jacket_title"> + Jacke bearbeiten + </string> + <string name="edit_skirt_title"> + Rock bearbeiten + </string> + <string name="edit_gloves_title"> + Handschuhe bearbeiten + </string> + <string name="edit_undershirt_title"> + Unterhemd bearbeiten + </string> + <string name="edit_underpants_title"> + Unterhose bearbeiten + </string> + <string name="edit_alpha_title"> + Alpha-Maske bearbeiten + </string> + <string name="edit_tattoo_title"> + Tätowierung bearbeiten + </string> + <string name="shape_desc_text"> + Form: + </string> + <string name="skin_desc_text"> + Haut: + </string> + <string name="hair_desc_text"> + Haare: + </string> + <string name="eyes_desc_text"> + Augen: + </string> + <string name="shirt_desc_text"> + Hemd: + </string> + <string name="pants_desc_text"> + Hose: + </string> + <string name="shoes_desc_text"> + Schuhe: + </string> + <string name="socks_desc_text"> + Socken: + </string> + <string name="jacket_desc_text"> + Jacke: + </string> + <string name="skirt_skirt_desc_text"> + Rock: + </string> + <string name="gloves_desc_text"> + Handschuhe: + </string> + <string name="undershirt_desc_text"> + Unterhemd: + </string> + <string name="underpants_desc_text"> + Unterhose: + </string> + <string name="alpha_desc_text"> + Alpha-Maske: + </string> + <string name="tattoo_desc_text"> + Tätowierung: + </string> + <text name="edit_wearable_title" value="Form bearbeiten"/> + <panel label="Hemd" name="wearable_type_panel"> + <text name="description_text" value="Form:"/> + </panel> + <panel name="button_panel"> + <button label="Speichern unter" name="save_as_button"/> + <button label="Zurücksetzen" name="revert_button"/> + </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 bb2adb36fe..50013a2b24 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="Bezahlen" 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 new file mode 100644 index 0000000000..9cb72fafff --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_group_control_panel.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_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 2acc9e0649..0d3c082a16 100644 --- a/indra/newview/skins/default/xui/de/panel_group_general.xml +++ b/indra/newview/skins/default/xui/de/panel_group_general.xml @@ -1,72 +1,55 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Allgemein" name="general_tab"> - <string name="help_text"> - Die Registerkarte „Allgemein“ enthält Informationen über diese Gruppe, eine Liste der Eigentümer und sichtbaren Mitglieder, allgemeine Gruppeneinstellungen und Mitgliederoptionen. + <panel.string name="help_text"> + Die Registerkarte Allgemein enthält allgemeine Informationen über diese Gruppe, eine Liste der Mitglieder, allgemeine Gruppeneinstellungen und Mitgliederoptionen. Bewegen Sie die Maus über die Optionen, um weitere Informationen anzuzeigen. - </string> - <string name="group_info_unchanged"> + </panel.string> + <panel.string name="group_info_unchanged"> Die allgemeine Gruppeninfo wurde geändert. - </string> - <button label="?" label_selected="?" name="help_button"/> - <line_editor label="Neuen Gruppennamen hier eingeben" name="group_name_editor"/> - <text name="group_name"> - Neuen Gruppennamen hier eingeben - </text> - <text name="prepend_founded_by"> - Gegründet von - </text> - <text left_delta="79" name="founder_name"> - (wartet) - </text> - <text name="group_charter_label"> - Gruppencharta - </text> - <texture_picker label="Gruppeninsignien" name="insignia" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + </panel.string> + <panel.string name="incomplete_member_data_str"> + Mitgliedsdaten werden abgerufen + </panel.string> + <panel name="group_info_top"> + <texture_picker label="" name="insignia" tool_tip="Klicken, um ein Bild auszuwählen"/> + <text name="prepend_founded_by"> + Gründer: + </text> + <name_box initial_value="(wird in Datenbank gesucht)" name="founder_name"/> + <text name="join_cost_text"> + Kostenlos + </text> + <button label="JETZT BEITRETEN!" name="btn_join"/> + </panel> <text_editor name="charter"> Gruppencharta </text_editor> - <button label="Beitreten (0 L$)" label_selected="Beitreten (0 L$)" name="join_button"/> - <button label="Detailansicht" label_selected="Detailansicht" name="info_button"/> - <text name="text_owners_and_visible_members"> - Eigentümer und sichtbare Mitglieder - </text> - <text name="text_owners_are_shown_in_bold"> - (Eigentümer werden fettgedruckt angezeigt) - </text> <name_list name="visible_members"> - <name_list.columns label="Mitgliedsname" name="name" relwidth="0.40"/> + <name_list.columns label="Mitglied" name="name" relwidth="0.40"/> <name_list.columns label="Titel" name="title" relwidth="0.25"/> - <name_list.columns label="Letzte Anmeldung" name="online" relwidth="0.35"/> + <name_list.columns label="Status" name="status"/> </name_list> - <text name="text_group_preferences"> - Gruppeneinstellungen + <text name="my_group_settngs_label"> + Ich </text> + <text name="active_title_label"> + 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="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="In Suche anzeigen" name="show_in_group_list" tool_tip="Diese Gruppe in Suchergebnissen anzeigen."/> - <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 name="spin_enrollment_fee" tool_tip="Wenn „Beitrittsgebühr“ aktiviert ist, müssen neue Mitglieder diesen Betrag zahlen."/> - <combo_box name="group_mature_check" tool_tip="Festlegen, ob die Informationen Ihrer Gruppe „Mature“ sind."> - <combo_box.item name="select_mature" label="- Mature wählen -"/> - <combo_box.item name="mature" label="Mature-Inhalt"/> - <combo_box.item name="pg" label="PG-Inhalt"/> + <text name="group_settngs_label"> + Gruppe + </text> + <check_box label="Jeder kann beitreten" name="open_enrollement" tool_tip="Festlegen, ob der Gruppenbeitritt ohne Einladung zulässig ist."/> + <check_box label="Kosten für Beitritt" 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."/> + <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 name="title_container"> - <text name="active_title_label"> - Mein aktiver Titel - </text> - <combo_box name="active_title" tool_tip="Legt fest, was im Namensschild Ihres Avatars angezeigt wird, wenn diese Gruppe aktiviert ist."/> - </panel> - <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="Gruppe im Profil anzeigen" name="list_groups_in_profile" tool_tip="Steuert, ob diese Gruppe in Ihrem Profil angezeigt wird"/> + <check_box initial_value="true" label="In Suche anzeigen" name="show_in_group_list" tool_tip="Diese Gruppe in Suchergebnissen anzeigen"/> </panel> - <string name="incomplete_member_data_str"> - Mitgliedsdaten werden abgerufen - </string> - <string name="confirm_group_create_str"> - Die Gründung dieser Gruppe kostet 100 L$. -Sind Sie wirklich, WIRKLICH sicher, dass Sie 100 L$ für die Gründung dieser Gruppe ausgeben möchten? -Falls in den nächsten 48 Stunden niemand sonst dieser Gruppe beitritt, wird sie aufgelöst und der Name der Gruppe wird nicht mehr verfügbar sein. - </string> </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 new file mode 100644 index 0000000000..b89e4f90de --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_group_info_sidetray.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Gruppenprofil" name="GroupInfo"> + <panel.string name="default_needs_apply_text"> + Diese Änderungen wurden nicht gespeichert. + </panel.string> + <panel.string name="want_apply_text"> + Möchten Sie diese Änderungen speichern? + </panel.string> + <panel.string name="group_join_btn"> + Beitreten ([AMOUNT]L$) + </panel.string> + <panel.string name="group_join_free"> + Kostenlos + </panel.string> + <panel name="group_info_top"> + <text name="group_name" value="(wird geladen...)"/> + <line_editor label="Neuen Gruppennamen hier eingeben" name="group_name_editor"/> + </panel> + <layout_stack name="layout"> + <layout_panel name="group_accordions"> + <accordion name="groups_accordion"> + <accordion_tab name="group_general_tab" title="Allgemein"/> + <accordion_tab name="group_roles_tab" title="Rollen"/> + <accordion_tab name="group_notices_tab" title="Mitteilungen"/> + <accordion_tab name="group_land_tab" title="Land/Kapital"/> + </accordion> + </layout_panel> + <layout_panel name="button_row"> + <button label="Chat" name="btn_chat"/> + <button label="Gruppe anrufen" name="btn_call" tool_tip="Diese Gruppe anrufen"/> + <button label="Speichern" label_selected="Speichern" name="btn_apply"/> + <button label="Gruppe erstellen" name="btn_create" tool_tip="Neue Gruppe erstellen"/> + </layout_panel> + </layout_stack> +</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 0712722cb3..fb357093bb 100644 --- a/indra/newview/skins/default/xui/de/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/de/panel_group_invite.xml @@ -7,22 +7,20 @@ (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“. + <text name="help_text" top="10"> + 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."/> + <button label="Einwohnerliste öffnen" name="add_button" tool_tip="" top_delta="62"/> + <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: </text> <combo_box name="role_name" tool_tip="Wählen Sie aus der Liste der Rollen, die Sie an Mitglieder vergeben dürfen."/> - <button label="Einladungen versenden" name="ok_button"/> - <button label="Abbrechen" name="cancel_button"/> + <button label="Einladungen versenden" name="ok_button" width="136"/> + <button label="Abbrechen" name="cancel_button" width="66"/> <string name="GroupInvitation"> Gruppeneinladung </string> diff --git a/indra/newview/skins/default/xui/de/panel_group_land_money.xml b/indra/newview/skins/default/xui/de/panel_group_land_money.xml index 2dd9bf8d5f..0c89946987 100644 --- a/indra/newview/skins/default/xui/de/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/de/panel_group_land_money.xml @@ -1,170 +1,81 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Land und L$" name="land_money_tab"> - <string name="help_text"> - Parzellen in Gruppenbesitz werden zusammen mit Beitragsdetails angezeigt. Ein Warnhinweis wird angezeigt, solange der Wert für das insgesamt verwendete Land gleich oder weniger ist als der Gesamtbeitrag. Die Registerkarten „Planung“, „Details“ und „Verkäufe“ enthalten Informationen über die Gruppenfinanzen. - </string> - <button label="?" name="help_button"/> - <string name="cant_view_group_land_text"> + <panel.string name="help_text"> + Ein Warnhinweis wird angezeigt, solange der Wert für das insgesamt verwendete Land gleich oder weniger ist als der Gesamtbeitrag. + </panel.string> + <panel.string name="cant_view_group_land_text"> Sie sind nicht berechtigt, Landeigentum der Gruppe anzuzeigen. - </string> - <string name="cant_view_group_accounting_text"> + </panel.string> + <panel.string name="cant_view_group_accounting_text"> Sie sind nicht berechtigt, die Finanzinformationen der Gruppe anzuzeigen. - </string> - <string name="loading_txt"> + </panel.string> + <panel.string name="loading_txt"> Wird geladen... - </string> - <text name="group_land_heading"> - Land in Gruppenbesitz - </text> - <scroll_list name="group_parcel_list"> - <column label="Parzelle" name="name"/> - <column label="Region" name="location"/> - <column label="Typ" name="type"/> - <column label="Gebiet" name="area"/> - <column label="" name="hidden"/> - </scroll_list> - <button label="Karte" label_selected="Karte" name="map_button"/> - <text name="total_contributed_land_label"> - Gesamtbeitrag: - </text> - <text name="total_contributed_land_value"> - [AREA] qm - </text> - <text name="total_land_in_use_label"> - Insgesamt verwendetes Land: - </text> - <text name="total_land_in_use_value"> - [AREA] qm - </text> - <text name="land_available_label"> - Land verfügbar: - </text> - <text name="land_available_value"> - [AREA] qm - </text> - <text name="your_contribution_label"> - Ihr Beitrag: - </text> - <string name="land_contrib_error"> + </panel.string> + <panel.string name="land_contrib_error"> Ihr Landbeitrag kann nicht festgelegt werden. - </string> - <text name="your_contribution_units"> - ( qm ) - </text> - <text name="your_contribution_max_value"> - (max. [AMOUNT]) - </text> - <text name="group_over_limit_text"> - Die Gruppenmitglieder müssen mehr Landnutzungsrechte spenden, damit das verwendete Land gehalten werden kann. - </text> - <text name="group_money_heading"> - Gruppen-L$ - </text> + </panel.string> + <panel name="layout_panel_landmoney"> + <scroll_list name="group_parcel_list"> + <scroll_list.columns label="Parzelle" name="name"/> + <scroll_list.columns label="Region" name="location"/> + <scroll_list.columns label="Typ" name="type"/> + <scroll_list.columns label="Gebiet" name="area"/> + </scroll_list> + <text name="total_contributed_land_label"> + Gesamtbeitrag: + </text> + <text name="total_contributed_land_value"> + [AREA] m². + </text> + <button label="Karte" label_selected="Karte" name="map_button"/> + <text name="total_land_in_use_label"> + Insgesamt genutztes Land: + </text> + <text name="total_land_in_use_value"> + [AREA] m². + </text> + <text name="land_available_label"> + Land verfügbar: + </text> + <text name="land_available_value"> + [AREA] m². + </text> + <text name="your_contribution_label"> + Ihr Beitrag: + </text> + <text name="your_contribution_units"> + m² + </text> + <text name="your_contribution_max_value"> + ([AMOUNT] max.) + </text> + <text name="group_over_limit_text"> + Um das benutzte Land zu unterstützen, sind weitere Landnutzungsrechte erforderlich. + </text> + <text name="group_money_heading"> + Gruppen-L$ + </text> + </panel> <tab_container name="group_money_tab_container"> - <panel label="Planung" name="group_money_planning_tab"> + <panel label="PLANUNG" name="group_money_planning_tab"> <text_editor name="group_money_planning_text"> - Wird berechnet... + Wird geladen... </text_editor> </panel> - <panel label="Details" name="group_money_details_tab"> + <panel label="DETAILS" name="group_money_details_tab"> <text_editor name="group_money_details_text"> - Wird berechnet... + Wird geladen... </text_editor> - <button label="< Früher" label_selected="< Früher" name="earlier_details_button" tool_tip="Zurück in der Zeit"/> - <button label="Später >" label_selected="Später >" name="later_details_button" tool_tip="Weiter in der Zeit"/> + <button label="< Früher" label_selected="< Früher" name="earlier_details_button" tool_tip="Hinten"/> + <button label="Später >" label_selected="Später >" name="later_details_button" tool_tip="Weiter"/> </panel> - <panel label="Verkäufe" name="group_money_sales_tab"> + <panel label="VERKAUF" name="group_money_sales_tab"> <text_editor name="group_money_sales_text"> - Wird berechnet... + Wird geladen... </text_editor> - <button label="< Früher" label_selected="< Früher" name="earlier_sales_button" tool_tip="Zurück in der Zeit"/> - <button label="Später >" label_selected="Später >" name="later_sales_button" tool_tip="Weiter in der Zeit"/> + <button label="< Früher" label_selected="< Früher" name="earlier_sales_button" tool_tip="Hinten"/> + <button label="Später >" label_selected="Später >" name="later_sales_button" tool_tip="Weiter"/> </panel> </tab_container> </panel> -<!-- - -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Land und L$" name="land_money_tab"> - <string name="help_text"> - Parzellen in Gruppenbesitz werden zusammen mit Beitragsdetails angezeigt. Ein Warnhinweis wird angezeigt, solange der Wert für das insgesamt verwendete Land gleich oder weniger ist als der Gesamtbeitrag. Die Registerkarten „Planung“, „Details“ und „Verkäufe“ enthalten Informationen über die Gruppenfinanzen. - </string> - <button label="?" name="help_button"/> - <string name="cant_view_group_land_text"> - Sie sind nicht berechtigt, Landeigentum der Gruppe anzuzeigen. - </string> - <string name="cant_view_group_accounting_text"> - Sie sind nicht berechtigt, die Finanzinformationen der Gruppe anzuzeigen. - </string> - <string name="loading_txt"> - Wird geladen... - </string> - <text name="group_land_heading"> - Land in Gruppenbesitz - </text> - <scroll_list name="group_parcel_list"> - <column label="Parzellenname" name="name"/> - <column label="Region" name="location"/> - <column label="Typ" name="type"/> - <column label="Gebiet" name="area"/> - <column label="" name="hidden"/> - </scroll_list> - <button label="Auf Karte" label_selected="Auf Karte" name="map_button"/> - <text name="total_contributed_land_label"> - Gesamtbeitrag: - </text> - <text name="total_contributed_land_value"> - [AREA] qm - </text> - <text name="total_land_in_use_label"> - Insgesamt verwendetes Land: - </text> - <text name="total_land_in_use_value"> - [AREA] qm - </text> - <text name="land_available_label"> - Land verfügbar: - </text> - <text name="land_available_value"> - [AREA] qm - </text> - <text name="your_contribution_label"> - Ihr Beitrag: - </text> - <string name="land_contrib_error"> - Ihr Landbeitrag kann nicht festgelegt werden. - </string> - <text name="your_contribution_max_value"> - qm (max. [AMOUNT]) - </text> - <text name="group_over_limit_text"> - Die Gruppenmitglieder müssen mehr Landnutzungsrechte spenden, damit -das verwendete Land gehalten werden kann. - </text> - <text name="group_money_heading"> - Gruppen-L$ - </text> - <tab_container name="group_money_tab_container"> - <panel label="Planung" name="group_money_planning_tab"> - <text_editor name="group_money_planning_text"> - Wird berechnet... - </text_editor> - </panel> - <panel label="Details" name="group_money_details_tab"> - <text_editor name="group_money_details_text"> - Wird berechnet... - </text_editor> - <button label="< Früher" label_selected="< Früher" name="earlier_details_button" tool_tip="Zurück in der Zeit"/> - <button label="Später >" label_selected="Später >" name="later_details_button" tool_tip="Weiter in der Zeit"/> - </panel> - <panel label="Verkäufe" name="group_money_sales_tab"> - <text_editor name="group_money_sales_text"> - Wird berechnet... - </text_editor> - <button label="< Früher" label_selected="< Früher" name="earlier_sales_button" tool_tip="Zurück in der Zeit"/> - <button label="Später >" label_selected="Später >" name="later_sales_button" tool_tip="Weiter in der Zeit"/> - </panel> - </tab_container> -</panel> - ---> 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 new file mode 100644 index 0000000000..d097a2b18c --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_group_list_item.xml @@ -0,0 +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 27a2caf9f0..cc5664bd97 100644 --- a/indra/newview/skins/default/xui/de/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/de/panel_group_notices.xml @@ -1,41 +1,32 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Mitteilungen" name="notices_tab"> - <text name="help_text"> - Mitteilungen sind eine schnelle Möglichkeit, -Mitglieder auf dem Laufenden zu halten und -Objekte im Anhang zu versenden. Mitteilungen werden -nur an Mitglieder mit einer entsprechenden Rolle -gesendet. Mitteilungen können unter -„Allgemein“ ausgeschaltet werden. - </text> - <text name="no_notices_text"> + <panel.string name="help_text"> + 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. - </text> - <button label="?" label_selected="?" name="help_button"/> - <text name="lbl"> - Gruppenmitteilungsarchiv - </text> + </panel.string> <text name="lbl2"> - Mitteilungen werden 14 Tage lang aufbewahrt. Eine Mitteilungsliste speichert maximal 200 Mitteilungen pro Gruppe täglich. + Mitteilungen werden 14 Tage lang aufbewahrt. +Maximal 200 pro Gruppe täglich </text> <scroll_list name="notice_list"> - <column label="" name="icon"/> - <column label="Thema" name="subject"/> - <column label="Von" name="from"/> - <column label="Datum" name="date"/> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="Thema" name="subject"/> + <scroll_list.columns label="Von" name="from"/> + <scroll_list.columns label="Datum" name="date"/> </scroll_list> <text name="notice_list_none_found"> Nicht gefunden. </text> - <button label="Neue Mitteilung" label_selected="Neue Mitteilung" name="create_new_notice"/> - <button label="Aktualisieren" label_selected="Liste aktualisieren" name="refresh_notices"/> + <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" tool_tip="Mitteilungsliste aktualisieren"/> <panel label="Neue Mitteilung" name="panel_create_new_notice"> <text name="lbl"> Mitteilung schreiben </text> - <text name="lbl2"> - Sie können ein Objekt zu einer Mitteilung hinzufügen, wenn Sie es aus Ihrem Inventar auf dieses Feld ziehen. Die angehängten Objekte müssen kopier- und übertragbar sein. Ordner können nicht verschickt werden. - </text> <text name="lbl3"> Betreff: </text> @@ -45,94 +36,19 @@ gesendet. Mitteilungen können unter <text name="lbl5"> Anhängen: </text> - <button label="Anhang entfernen" label_selected="Anhang entfernen" name="remove_attachment"/> - <button label="Senden" label_selected="Senden" name="send_notice"/> - <panel 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."/> - </panel> - <panel label="Ältere Notiz anzeigen" name="panel_view_past_notice"> - <text name="lbl"> - Archivierte Mitteilung - </text> - <text name="lbl2"> - Klicken Sie zum Senden einer Mitteilung auf „Neue Mitteilung“. - </text> - <text name="lbl3"> - Betreff: - </text> - <text name="lbl4"> - Nachricht: - </text> - <button label="Anlage öffnen" label_selected="Anlage öffnen" name="open_attachment"/> - </panel> -</panel> -<!-- original file - -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Mitteilungen" name="notices_tab"> - <text name="help_text"> - Mitteilungen sind eine schnelle Möglichkeit, -Mitglieder auf dem Laufenden zu halten und -Objekte im Anhang zu versenden. Mitteilungen werden -nur an Mitglieder mit einer entsprechenden Rolle -gesendet. Mitteilungen können unter -„Allgemein“ ausgeschaltet werden. - </text> - <text name="no_notices_text"> - Keine älteren Mitteilungen. - </text> - <button label="?" label_selected="?" name="help_button" /> - <text name="lbl"> - Gruppenmitteilungsarchiv - </text> - <text name="lbl2"> - Mitteilungen werden 14 Tage lang aufbewahrt. Klicken Sie auf eine Mitteilung, -um sie anzuzeigen. Klicken Sie „Aktualisieren“, um neue Mitteilungen zu suchen. -Eine Mitteilungsliste speichert maximal 200 Mitteilungen pro Gruppe täglich. - </text> - <scroll_list name="notice_list"> - <column label="" name="icon" /> - <column label="Thema" name="subject" /> - <column label="Von" name="from" /> - <column label="Datum" name="date" /> - </scroll_list> - <text name="notice_list_none_found"> - Nicht gefunden. - </text> - <button label="Neue Mitteilung" label_selected="Neue Mitteilung" - name="create_new_notice" /> - <button label="Aktualisieren" label_selected="Liste aktualisieren" - name="refresh_notices" /> - <panel label="Neue Mitteilung" name="panel_create_new_notice"> - <text name="lbl"> - Mitteilung schreiben - </text> - <text name="lbl2"> - Geben Sie einen Betreff für die Mitteilung ein. Sie können der -Mitteilung ein Objekt anfügen, indem Sie es aus dem Inventar -in dieses Feld ziehen. Angehängte Objekte müssen kopier- -und transferierbar sein. Ordner können nicht gesendet werden. - </text> - <text name="lbl3"> - Betreff: - </text> - <text name="lbl4"> - Nachricht: - </text> - <text name="lbl5"> - Anhängen: + <text name="string"> + Das Objekt hierhin ziehen und ablegen, um es anzuhängen: </text> - <button label="Anhang entfernen" label_selected="Anhang entfernen" - name="remove_attachment" /> - <button label="Mitteilung senden" label_selected="Mitteilung senden" name="send_notice" /> - <panel 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." /> + <button label="Entfernen" label_selected="Anhang entfernen" name="remove_attachment" tool_tip="Anhang von Ihrer Benachrichtigung entfernen"/> + <button label="Senden" label_selected="Senden" name="send_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"> Archivierte Mitteilung </text> <text name="lbl2"> - Klicken Sie zum Senden einer Mitteilung auf „Neue Mitteilung“. + Um eine neue Mitteilung zu senden, klicken Sie die Schaltfläche + </text> <text name="lbl3"> Betreff: @@ -140,8 +56,6 @@ und transferierbar sein. Ordner können nicht gesendet werden. <text name="lbl4"> Nachricht: </text> - <button label="Anlage öffnen" label_selected="Anlage öffnen" name="open_attachment" /> + <button label="Anhang öffnen" label_selected="Anlage öffnen" name="open_attachment"/> </panel> </panel> - ---> diff --git a/indra/newview/skins/default/xui/de/panel_group_notify.xml b/indra/newview/skins/default/xui/de/panel_group_notify.xml new file mode 100644 index 0000000000..9c05e99786 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_group_notify.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="instant_message" name="panel_group_notify"> + <string name="message_max_lines_count" value="7"/> + <string name="subject_font" value="SANSSERIF_BIG"/> + <string name="date_font" value="SANSSERIF"/> + <panel label="Überschrift" name="header"> + <text name="title" value="Absender/Gruppenname"/> + </panel> + <text_editor name="message" value="Nachricht"/> + <text name="attachment" value="Anhang"/> + <button label="OK" name="btn_ok"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_group_roles.xml b/indra/newview/skins/default/xui/de/panel_group_roles.xml index 4095deb16b..db5186e081 100644 --- a/indra/newview/skins/default/xui/de/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/de/panel_group_roles.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Mitglieder und Rollen" name="roles_tab"> <panel.string name="default_needs_apply_text"> - Das Unterregister enthält nicht übernommene Änderungen. + Diese Änderungen wurden nicht gespeichert. </panel.string> <panel.string name="want_apply_text"> - Diese Änderungen übernehmen? + Möchten Sie Ihre Änderungen speichern? </panel.string> <tab_container name="roles_tab_container"> - <panel label="Mitglieder" name="members_sub_tab" tool_tip="Mitglieder"> + <panel label="MITGLIEDER" name="members_sub_tab" tool_tip="Mitglieder"> <panel.string name="help_text"> Sie können Mitgliedern Rollen zuweisen und entziehen. Drücken Sie die Strg-Taste und klicken Sie auf Namen, @@ -15,40 +15,48 @@ um mehrere Mitglieder auszuwählen. </panel.string> <filter_editor label="Mitglieder filtern" name="filter_input"/> <name_list name="member_list"> - <name_list.columns label="Mitglied" name="name"/> - <name_list.columns label="Übereignungen" name="donated"/> - <name_list.columns label="Online" name="online"/> + <name_list.columns label="Mitglied" name="name" relative_width="0.30"/> + <name_list.columns label="Übereignung" name="donated" relative_width="0.33"/> + <name_list.columns label="Status" name="online"/> </name_list> <button label="Einladen" name="member_invite"/> <button label="Hinauswerfen" name="member_eject"/> </panel> - <panel label="Rollen" name="roles_sub_tab"> + <panel label="ROLLEN" name="roles_sub_tab"> <panel.string name="help_text"> Rollen haben einen Titel und umfassen bestimmte -Fähigkeiten. Mitglieder können mehrere +Fähigkeiten. Mitglieder können mehrere Rollen innehaben. Eine Gruppe kann bis zu 10 Rollen -definieren, darunter „Jeder“ und „Eigentümer“. +definieren, darunter 'Jeder ' und 'Eigentümer '. </panel.string> <panel.string name="cant_delete_role"> - Die Rollen „Jeder“ und „Eigentümer“ können nicht gelöscht werden. + Die Rollen „Jeder" und „Eigentuemer" sind besondere Rollen und können nicht gelöscht werden. + </panel.string> + <panel.string name="power_folder_icon"> + Inv_FolderClosed + </panel.string> + <panel.string name="power_all_have_icon"> + Checkbox_On + </panel.string> + <panel.string name="power_partial_icon"> + Checkbox_Off </panel.string> <filter_editor label="Rollen filtern" name="filter_input"/> <scroll_list name="role_list"> <scroll_list.columns label="Rolle" name="name"/> <scroll_list.columns label="Titel" name="title"/> - <scroll_list.columns label="Mitglieder" name="members"/> + <scroll_list.columns label="#" name="members"/> </scroll_list> - <button label="Rolle hinzufügen" name="role_create"/> + <button label="Neue Rolle" name="role_create"/> <button label="Rolle löschen" name="role_delete"/> </panel> - <panel label="Fähigkeiten" name="actions_sub_tab" tool_tip="Sie können Fähigkeiten-Beschreibungen anzeigen und welche Rollen bzw. Mitglieder über diese Fähigkeit verfügen."> + <panel label="FÄHIGKEITEN" name="actions_sub_tab" tool_tip="Sie können eine Beschreibung der Fähigkeit anzeigen und welche Rollen bzw. Mitglieder über diese Fähigkeit verfügen."> <panel.string name="help_text"> Fähigkeiten verleihen Mitgliedern in Rollen bestimmte Rechte in einer Gruppe. Es gibt viele verschiedene Fähigkeiten. </panel.string> <filter_editor label="Fähigkeiten filtern" name="filter_input"/> - <scroll_list name="action_list" tool_tip="Select an Ability to view more details."> - <scroll_list.columns label="" name="icon"/> + <scroll_list name="action_list" tool_tip="Eine Fähigkeit auswählen, um mehr Details anzuzeigen."> <scroll_list.columns label="" name="action"/> </scroll_list> </panel> @@ -64,55 +72,44 @@ Rechte in einer Gruppe. Es gibt viele verschiedene Fähigkeiten. <text name="static2"> Zulässige Fähigkeiten </text> - <scroll_list name="member_allowed_actions" tool_tip="Um detaillierte Informationen zu erlaubten Fähigkeiten anzuzeigen, siehe Reiter Fähigkeiten."> - <scroll_list.columns label="" name="icon"/> + <scroll_list name="member_allowed_actions" tool_tip="Um detaillierte Informationen zu den Fähigkeiten anzuzeigen, siehe Registerkarte Fähigkeiten."> <scroll_list.columns label="" name="action"/> </scroll_list> </panel> <panel name="roles_footer"> <text name="static"> - Name + Rolle: </text> - <line_editor name="role_name"> - Angestellte - </line_editor> + <line_editor name="role_name"/> <text name="static3"> - Titel + Rollentitel </text> - <line_editor name="role_title"> - (wartet) - </line_editor> + <line_editor name="role_title"/> <text name="static2"> Beschreibung </text> - <text_editor name="role_description"> - (wartet) - </text_editor> + <text_editor name="role_description"/> <text name="static4"> Mitglieder in Rolle </text> - <check_box label="Mitglieder sind sichtbar" name="role_visible_in_list" tool_tip="Festlegen, ob Mitglieder in dieser Rolle auf der Registerkarte „Allgemein“ für Personen außerhalb der Gruppe sichtbar sind."/> + <check_box label="Mitglieder anzeigen" name="role_visible_in_list" tool_tip="Festlegen, ob Mitglieder in dieser Rolle auf der Registerkarte 'Allgemein ' für Personen außerhalb der Gruppe sichtbar sind."/> <text name="static5" tool_tip="Eine Liste der Fähigkeiten der aktuell ausgewählten Rolle."> Zulässige Fähigkeiten </text> - <scroll_list name="role_allowed_actions" tool_tip="Um detaillierte Informationen zu erlaubten Fähigkeiten anzuzeigen, siehe Reiter Fähigkeiten."> - <scroll_list.columns label="" name="icon"/> + <scroll_list name="role_allowed_actions" tool_tip="Um detaillierte Informationen zu den Fähigkeiten anzuzeigen, siehe Registerkarte Fähigkeiten."> <scroll_list.columns label="" name="checkbox"/> <scroll_list.columns label="" name="action"/> </scroll_list> </panel> <panel name="actions_footer"> - <text name="static"> - Beschreibung - </text> <text_editor name="action_description"> Diese Fähigkeit heißt „Mitglieder aus dieser Gruppe werfen“. Eigentümer können nur von anderen Eigentümern hinausgeworfen werden. </text_editor> <text name="static2"> - Rollen mit Fähigkeit + Rollen mit Fähigkeiten </text> <text name="static3"> - Mitglieder mit Fähigkeit + Rollen mit dieser Fähigkeit </text> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_groups.xml b/indra/newview/skins/default/xui/de/panel_groups.xml index 95a2ef14f9..f857a6c7ac 100644 --- a/indra/newview/skins/default/xui/de/panel_groups.xml +++ b/indra/newview/skins/default/xui/de/panel_groups.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel name="groups"> - <text name="groupdesc"> + <text name="groupdesc" width="300"> Die derzeit aktive Gruppe ist fett hervorgehoben. </text> - <text name="groupcount"> + <text name="groupcount" width="360"> Sie sind Mitglied bei [COUNT] Gruppen (von max. [MAX]). </text> <button label="IM/Anruf" name="IM" tool_tip="Beginnt eine Instant Message-Sitzung" /> 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 f84bd24413..0dca272633 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,9 +1,30 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <button label="Profil anzeigen" name="view_profile_btn"/> - <button label="Freund hinzufügen" name="add_friend_btn"/> - <button label="Freigeben" name="share_btn"/> - <panel name="panel_call_buttons"> - <button label="Anrufen" name="call_btn"/> - </panel> + <text name="avatar_name" value="Unbekannt"/> + <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" tool_tip="Dieser Person einen Teleport anbieten."/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="Teilen" name="share_btn"/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="Bezahlen" name="pay_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_instant_message.xml b/indra/newview/skins/default/xui/de/panel_instant_message.xml new file mode 100644 index 0000000000..1433552c15 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_instant_message.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="im_panel" name="im_panel"> + <string name="message_max_lines_count"> + 6 + </string> + <panel label="im_header" name="im_header"> + <text name="user_name" value="Erica Vader"/> + <text name="time_box" value="23:30"/> + </panel> + <button label="Antworten" name="reply"/> +</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 new file mode 100644 index 0000000000..9cef7b6d35 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_landmark_info.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="landmark_info"> + <string name="title_create_landmark" value="Landmarken erstellen"/> + <string name="title_edit_landmark" value="Landmarke bearbeiten"/> + <string name="title_landmark" value="Landmarke"/> + <string name="not_available" value="k.A."/> + <string name="unknown" value="(unbekannt)"/> + <string name="public" value="(öffentlich)"/> + <string name="server_update_text"> + Ohne Serverupdate sind keine Ortsinformationen verfügbar. + </string> + <string name="server_error_text"> + Zur Zeit gibt es keine Informationen zu diesem Standort. Bitte versuchen Sie es später. + </string> + <string name="server_forbidden_text"> + Die Informationen über diesen Standort sind zugriffsbeschränkt. Bitte wenden Sie sich bezüglich Ihrer Berechtigungen an den Eigentümer der Parzelle. + </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> + <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"> + <text name="region_title" value="SampleRegion"/> + <text name="parcel_title" value="SampleParcel, Name Long (145, 228, 26)"/> + <expandable_text name="description" value="Du waltz die spritz"/> + <text name="maturity_value" value="unbekannt"/> + <panel name="landmark_info_panel"> + <text name="owner_label" value="Eigentümer:"/> + <text name="creator_label" value="Ersteller:"/> + <text name="created_label" value="Erstellt:"/> + </panel> + <panel name="landmark_edit_panel"> + <text name="title_label" value="Titel:"/> + <text name="notes_label" value="Meine Notizen:"/> + <text name="folder_label" value="Landmarken-Position:"/> + </panel> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_landmarks.xml b/indra/newview/skins/default/xui/de/panel_landmarks.xml new file mode 100644 index 0000000000..db12462a31 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Favoritenleiste"/> + <accordion_tab name="tab_landmarks" title="Meine Landmarken"/> + <accordion_tab name="tab_inventory" title="Mein Inventar"/> + <accordion_tab name="tab_library" title="Bibliothek"/> + </accordion> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> + <button name="add_btn" tool_tip="Neue Landmarke hinzufügen"/> + <dnd_button name="trash_btn" tool_tip="Ausgewählte Landmarke hinzufügen"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml index 534bcfc82b..2a6ea42c73 100644 --- a/indra/newview/skins/default/xui/de/panel_login.xml +++ b/indra/newview/skins/default/xui/de/panel_login.xml @@ -6,14 +6,40 @@ <panel.string name="forgot_password_url"> http://secondlife.com/account/request.php?lang=de </panel.string> - <panel name="login_widgets"> - <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] Vorname"/> - <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] Nachname"/> - <text name="start_location_text"> - Startposition: - </text> - <text name="create_new_account_text"> - Neues Konto erstellen - </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" width="150"> + <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 new file mode 100644 index 0000000000..eed365a1bb --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_main_inventory.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Sonstiges" name="main inventory panel"> + <panel.string name="Title"> + Sonstiges + </panel.string> + <filter_editor label="Inventar filtern" name="inventory search editor"/> + <tab_container name="inventory filter tabs"> + <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"/> + <button name="add_btn" tool_tip="Neues Objekt hinzufügen"/> + <dnd_button name="trash_btn" tool_tip="Auswahl löschen"/> + </panel> + <menu_bar name="Inventory Menu"> + <menu label="Datei" name="File"> + <menu_item_call label="Öffnen" name="Open"/> + <menu label="Hochladen" name="upload"> + <menu_item_call label="Bild ([COST] L$)..." name="Upload Image"/> + <menu_item_call label="Sound ([COST] L$)..." name="Upload Sound"/> + <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/> + </menu> + <menu_item_call label="Neues Fenster" name="New Window"/> + <menu_item_call label="Filter anzeigen" name="Show Filters"/> + <menu_item_call label="Filter zurücksetzen" name="Reset Current"/> + <menu_item_call label="Alle Ordner schließen" name="Close All Folders"/> + <menu_item_call label="Papierkorb ausleeren" name="Empty Trash"/> + <menu_item_call label="Fundstücke ausleeren" name="Empty Lost And Found"/> + </menu> + <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"/> + <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"/> + <menu_item_call label="Neue Hose" name="New Pants"/> + <menu_item_call label="Neue Schuhe" name="New Shoes"/> + <menu_item_call label="Neue Socken" name="New Socks"/> + <menu_item_call label="Neue Jacke" name="New Jacket"/> + <menu_item_call label="Neuer Rock" name="New Skirt"/> + <menu_item_call label="Neue Handschuhe" name="New Gloves"/> + <menu_item_call label="Neues Unterhemd" name="New Undershirt"/> + <menu_item_call label="Neue Unterhose" name="New Underpants"/> + <menu_item_call label="Alpha: Neu" name="New Alpha"/> + <menu_item_call label="Neue Tätowierung" name="New Tattoo"/> + </menu> + <menu label="Neue Körperteile" name="New Body Parts"> + <menu_item_call label="Neue Form/Gestalt" name="New Shape"/> + <menu_item_call label="Neue Haut" name="New Skin"/> + <menu_item_call label="Neues Haar" name="New Hair"/> + <menu_item_call label="Neue Augen" name="New Eyes"/> + </menu> + </menu> + <menu label="Sortieren" name="Sort"> + <menu_item_check label="Nach Name" name="By Name"/> + <menu_item_check label="Nach Datum" name="By Date"/> + <menu_item_check label="Ordner immer nach Namen" name="Folders Always By Name"/> + <menu_item_check label="Systemordner nach oben" name="System Folders To Top"/> + </menu> + </menu_bar> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_me.xml b/indra/newview/skins/default/xui/de/panel_me.xml index a685a430f0..26b9812212 100644 --- a/indra/newview/skins/default/xui/de/panel_me.xml +++ b/indra/newview/skins/default/xui/de/panel_me.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Ich" name="panel_me"> +<panel label="Mein Profil" name="panel_me"> <tab_container name="tabs"> - <panel label="Mein Profil" name="panel_profile"/> - <panel label="Auswahl" name="panel_picks"/> + <panel label="MEIN PROFIL" name="panel_profile"/> + <panel label="MEINE AUSWAHL" name="panel_picks"/> </tab_container> </panel> 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 new file mode 100644 index 0000000000..75c9057571 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_media_settings_general.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Allgemein" name="Media Settings General"> + <text name="home_label"> + Homepage: + </text> + <text name="home_fails_whitelist_label"> + (Diese Seite wird von der angegebenen Whiteliste nicht zugelassen) + </text> + <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"> + Aktuelle Seite: + </text> + <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"/> + <check_box initial_value="false" label="Automatisch zoomen" name="auto_zoom"/> + <check_box initial_value="false" label="Medien automatisch abspielen" name="auto_play"/> + <text name="media_setting_note"> + Hinweis: Einwohner können diese Einstellung überschreiben + </text> + <check_box initial_value="false" label="Medien automatisch auf Objektflächen skalieren" name="auto_scale"/> + <text name="size_label"> + Größe: + </text> + <text name="X_label"> + X + </text> +</panel> 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 new file mode 100644 index 0000000000..7ee0074a3b --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_media_settings_permissions.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<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 new file mode 100644 index 0000000000..adc0d22ce6 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_media_settings_security.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Sicherheit" name="Media Settings Security"> + <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 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"> + 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 new file mode 100644 index 0000000000..55eed89848 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_my_profile.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Profil" name="panel_profile"> + <string name="CaptionTextAcctInfo"> + [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> + <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_editor name="acc_status_text"> + Einwohner. Keine Zahlungsinfo archiviert. + Linden. + </text_editor> + <text name="title_partner_text" value="Partner:"/> + <panel name="partner_data_panel"> + <name_box initial_value="(wird in Datenbank gesucht)" name="partner_text"/> + </panel> + <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 new file mode 100644 index 0000000000..99293edd0f --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_navigation_bar.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="navigation_bar"> + <panel name="navigation_panel"> + <pull_button name="back_btn" tool_tip="Zurück zum vorherigen Standort gehen"/> + <pull_button name="forward_btn" tool_tip="Um einen Standort weiter gehen"/> + <button name="home_btn" tool_tip="Zu meinem Zuhause teleportieren"/> + <location_input label="Standort" name="location_combo"/> + <search_combo_box label="Suche" name="search_combo_box" tool_tip="Suche"> + <combo_editor label="[SECOND_LIFE] durchsuchen" name="search_combo_editor"/> + </search_combo_box> + </panel> + <favorites_bar name="favorite" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!"> + <label name="favorites_bar_label" tool_tip="Ziehen Sie Landmarken hier hin, damit Sie schnell zu Ihren Lieblingsplätzen in Second Life gelangen können!"> + Favoritenleiste + </label> + <chevron_button name=">>" tool_tip="Mehr meiner Favoriten anzeigen"/> + </favorites_bar> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_nearby_chat.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml new file mode 100644 index 0000000000..3f4f5a71b5 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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" width="200"> + CHAT IN DER NÄHE + </text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml index 6e5b35b002..08cc0b0ec8 100644 --- a/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_nearby_chat_bar.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="chat_bar"> <line_editor label="Zum Chatten hier klicken." name="chat_box" tool_tip="Eingabe drücken, um zu sprechen, Strg-Eingabe drücken, um zu Rufen."/> + <button name="show_nearby_chat" tool_tip="Protokoll des Chats in der Nähe anzeigen/ausblenden"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_nearby_media.xml b/indra/newview/skins/default/xui/de/panel_nearby_media.xml new file mode 100644 index 0000000000..2d97a25fa9 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_nearby_media.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="nearby_media"> + <string name="empty_item_text"> + <leer> + </string> + <string name="parcel_media_name"> + Streaming-Medien auf Parzelle + </string> + <string name="parcel_audio_name"> + Streaming-Audio auf Parzelle + </string> + <string name="playing_suffix"> + (wird abgespielt) + </string> + <panel name="minimized_controls"> + <button label="Alle stoppen" name="all_nearby_media_disable_btn" tool_tip="Alle Medien in der Nähe ausschalten"/> + <button label="Alle starten" name="all_nearby_media_enable_btn" tool_tip="Alle Medien in der Nähe einschalten"/> + <button name="open_prefs_btn" tool_tip="Medien-Einstellungen öffnen"/> + <button label="Mehr >>" label_selected="Weniger <<" name="more_less_btn" tool_tip="Erweiterte Steuerung"/> + </panel> + <panel name="nearby_media_panel"> + <combo_box name="show_combo"> + <combo_box.item label="Alle" name="All"/> + <combo_box.item label="Auf dieser Parzelle" name="WithinParcel"/> + <combo_box.item label="Außerhalb dieser Parzelle" name="OutsideParcel"/> + </combo_box> + <scroll_list name="media_list"> + <scroll_list.columns label="Umgebung" name="media_proximity"/> + <scroll_list.columns label="Sichtbar" name="media_visibility"/> + <scroll_list.columns label="Klasse" name="media_class"/> + <scroll_list.columns label="Name" name="media_name"/> + <scroll_list.columns label="Fehler beseitigen" name="media_debug"/> + </scroll_list> + <panel> + <layout_stack name="media_controls"> + <layout_panel name="stop"> + <button name="stop_btn" tool_tip="Ausgewählte Medien stoppen"/> + </layout_panel> + <layout_panel name="play"> + <button name="play_btn" tool_tip="Ausgewählte Medien wiedergeben"/> + </layout_panel> + <layout_panel name="pause"> + <button name="pause_btn" tool_tip="Ausgewählte Medien pausieren"/> + </layout_panel> + <layout_panel name="volume_slider_ctrl"> + <slider_bar initial_value="0.5" name="volume_slider" tool_tip="Lautstärke für ausgewählte Medien"/> + </layout_panel> + <layout_panel name="mute"> + <button name="mute_btn" tool_tip="Audio für ausgewählte Medien stummschalten"/> + </layout_panel> + <layout_panel name="zoom"> + <button name="zoom_btn" tool_tip="Auf ausgewählte Medien zoomen"/> + </layout_panel> + <layout_panel name="unzoom"> + <button name="unzoom_btn" tool_tip="Von ausgewählten Medien wegzoomen"/> + </layout_panel> + </layout_stack> + </panel> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_notes.xml b/indra/newview/skins/default/xui/de/panel_notes.xml new file mode 100644 index 0000000000..374c117cdd --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_notes.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Notizen & Privatsphäre" name="panel_notes"> + <layout_stack name="layout"> + <layout_panel name="notes_stack"> + <scroll_container name="profile_scroll"> + <panel name="profile_scroll_panel"> + <text name="status_message" value="Meine Notizen:"/> + <text name="status_message2" value="Diese Person kann:"/> + <check_box label="meinen Online-Status sehen." name="status_check"/> + <check_box label="mich auf der Karte sehen." name="map_check"/> + <check_box label="meine Objekte bearbeiten, löschen oder nehmen." name="objects_check"/> + </panel> + </scroll_container> + </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" width="109"/> + <button label="IM" name="im" tool_tip="Instant Messenger öffnen" width="24"/> + <button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/> + <button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen" width="40"/> + <button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_online_status.xml b/indra/newview/skins/default/xui/de/panel_online_status.xml new file mode 100644 index 0000000000..7c7448c061 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_online_status.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Freunde_online_Status" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml new file mode 100644 index 0000000000..54c56992fd --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<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_tab"/> + </tab_container> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> + <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 new file mode 100644 index 0000000000..ad0e039070 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_outfits_inventory_gear_default.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_gear_default"> + <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 new file mode 100644 index 0000000000..a119c86b47 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_people.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Side tray panel --> +<panel label="Leute" name="people_panel"> + <string name="no_people" value="Keine Leute"/> + <string name="no_one_near" value="Keiner in der Nähe"/> + <string name="no_friends_online" value="Keine Freunde online"/> + <string name="no_friends" value="Keine Freunde"/> + <string name="people_filter_label" value="Nach Leuten filtern"/> + <string name="groups_filter_label" value="Nach Gruppen filtern"/> + <filter_editor label="Filter" name="filter_input"/> + <tab_container name="tabs"> + <panel label="IN DER NÄHE" name="nearby_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="nearby_view_sort_btn" tool_tip="Optionen"/> + <button name="add_friend_btn" tool_tip="Ausgewählten Einwohner zur Freundeliste hinzufügen"/> + </panel> + </panel> + <panel label="MEINE FREUNDE" name="friends_panel"> + <accordion name="friends_accordion"> + <accordion_tab name="tab_online" title="Online"/> + <accordion_tab name="tab_all" title="Alle"/> + </accordion> + <text name="no_friends_msg"> + Verwenden Sie [secondlife:///app/search/people die globale Suche], um Freunde hinzuzufügen. Oder klicken Sie auf einen Einwohner und fügen Sie diesen als Freund hinzu. +Wenn Sie nach Orten suchen, an denen sich Leute befinden, verwenden Sie [secondlife:///app/worldmap die Karte]. + </text> + <panel label="bottom_panel" name="bottom_panel"> + <button name="friends_viewsort_btn" tool_tip="Optionen"/> + <button name="add_btn" tool_tip="Bieten Sie einem Einwohner die Freundschaft an"/> + <button name="del_btn" tool_tip="Ausgewählte Person von Ihrer Freundesliste entfernen"/> + </panel> + </panel> + <panel label="MEINE GRUPPEN" name="groups_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="groups_viewsort_btn" tool_tip="Optionen"/> + <button name="plus_btn" tool_tip="Gruppe beitreten/Neue Gruppe erstellen"/> + <button name="activate_btn" tool_tip="Ausgewählte Gruppe aktivieren"/> + </panel> + </panel> + <panel label="AKTUELL" name="recent_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="recent_viewsort_btn" tool_tip="Optionen"/> + <button name="add_friend_btn" tool_tip="Ausgewählten Einwohner zur Freundeliste hinzufügen"/> + </panel> + </panel> + </tab_container> + <panel name="button_bar"> + <button label="Profil" name="view_profile_btn" tool_tip="Bilder, Gruppen und andere Einwohner-Informationen anzeigen"/> + <button label="IM" name="im_btn" tool_tip="Instant Messenger öffnen"/> + <button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/> + <button label="Teilen" name="share_btn"/> + <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 e0bc3da88e..df68381082 100644 --- a/indra/newview/skins/default/xui/de/panel_picks.xml +++ b/indra/newview/skins/default/xui/de/panel_picks.xml @@ -1,9 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Auswahl" name="panel_picks"> + <string name="no_picks" value="Keine Auswahl"/> + <string name="no_classifieds" value="Keine Anzeigen"/> + <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="Karte" name="show_on_map_btn"/> + <button label="Info" name="info_btn" tool_tip="Auswahl-Information anzeigen"/> + <button label="Teleportieren" name="teleport_btn" tool_tip="Zu entsprechendem Standort teleportieren" width="100"/> + <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 new file mode 100644 index 0000000000..fd4da94edc --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_place_profile.xml @@ -0,0 +1,130 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="place_profile"> + <string name="on" value="Ein"/> + <string name="off" value="Aus"/> + <string name="anyone" value="Jeder"/> + <string name="available" value="verfügbar"/> + <string name="allocated" value="vergeben"/> + <string name="title_place" value="Ortsprofil"/> + <string name="title_teleport_history" value="Teleport-Liste"/> + <string name="not_available" value="k.A."/> + <string name="unknown" value="(unbekannt)"/> + <string name="public" value="(öffentlich)"/> + <string name="none_text" value="(keiner)"/> + <string name="sale_pending_text" value="(Wird verkauft)"/> + <string name="group_owned_text" value="(In Gruppenbesitz)"/> + <string name="price_text" value="L$"/> + <string name="area_text" value="m²"/> + <string name="all_residents_text" value="Alle Einwohner"/> + <string name="group_text" value="Gruppe"/> + <string name="can_resell"> + Gekauftes Land in dieser Region kann wiederverkauft werden. + </string> + <string name="can_not_resell"> + Gekauftes Land in dieser Region kann nicht wiederverkauft werden. + </string> + <string name="can_change"> + Gekauftes Land in dieser Region kann zusammengelegt und geteilt werden. + </string> + <string name="can_not_change"> + Gekauftes Land in dieser Region kann nicht zusammengelegt und geteilt werden. + </string> + <string name="server_update_text"> + Ohne Serverupdate sind keine Ortsinformationen verfügbar. + </string> + <string name="server_error_text"> + Zur Zeit gibt es keine Informationen zu diesem Standort. Bitte versuchen Sie es später. + </string> + <string name="server_forbidden_text"> + Die Informationen über diesen Standort sind zugriffsbeschränkt. Bitte wenden Sie sich bezüglich Ihrer Berechtigungen an den Eigentümer der Parzelle. + </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> + <string name="icon_PG" value="parcel_drk_PG"/> + <string name="icon_M" value="parcel_drk_M"/> + <string name="icon_R" value="parcel_drk_R"/> + <string name="icon_Voice" value="parcel_drk_Voice"/> + <string name="icon_VoiceNo" value="parcel_drk_VoiceNo"/> + <string name="icon_Fly" value="parcel_drk_Fly"/> + <string name="icon_FlyNo" value="parcel_drk_FlyNo"/> + <string name="icon_Push" value="parcel_drk_Push"/> + <string name="icon_PushNo" value="parcel_drk_PushNo"/> + <string name="icon_Build" value="parcel_drk_Build"/> + <string name="icon_BuildNo" value="parcel_drk_BuildNo"/> + <string name="icon_Scripts" value="parcel_drk_Scripts"/> + <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"> + <text name="region_title" value="SampleRegion"/> + <text name="parcel_title" value="SampleParcel, Name Long (145, 228, 26)"/> + <expandable_text name="description" value="Du waltz die spritz"/> + <text name="owner_label" value="Eigentümer:"/> + <text name="owner_value" value="Alex Superduperlongenamenton"/> + <text name="maturity_value" value="unbekannt"/> + <accordion name="advanced_info_accordion"> + <accordion_tab name="parcel_characteristics_tab" title="Parzelle"> + <panel> + <text name="rating_label" value="Einstufung:"/> + <text name="rating_value" value="unbekannt"/> + <text name="voice_label" value="Voice:"/> + <text name="voice_value" value="Ein"/> + <text name="fly_label" value="Fliegen:"/> + <text name="fly_value" value="Ein"/> + <text name="push_label" value="Stoßen:"/> + <text name="push_value" value="Aus"/> + <text name="build_label" value="Bauen:"/> + <text name="build_value" value="Ein"/> + <text name="scripts_label" value="Skripts:"/> + <text name="scripts_value" value="Ein"/> + <text name="damage_label" value="Schaden:"/> + <text name="damage_value" value="Aus"/> + <button label="Über Land" name="about_land_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="region_information_tab" title="Region"> + <panel> + <text name="region_name_label" value="Region:"/> + <text name="region_name" value="Mooseland"/> + <text name="region_type_label" value="Typ:"/> + <text name="region_type" value="Moose"/> + <text name="region_rating_label" value="Einstufung:"/> + <text name="region_rating" value="Adult"/> + <text name="region_owner_label" value="Eigentümer:"/> + <text name="region_owner" value="moose Van Moose"/> + <text name="region_group_label" value="Gruppe:"/> + <text name="region_group"> + The Mighty Moose of mooseville soundvillemoose + </text> + <button label="Region/Grundstück" name="region_info_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="estate_information_tab" title="Grundstück"> + <panel> + <text name="estate_name_label" value="Grundstück:"/> + <text name="estate_rating_label" value="Einstufung:"/> + <text name="estate_owner_label" value="Eigentümer:"/> + <text name="covenant_label" value="Vertrag:"/> + </panel> + </accordion_tab> + <accordion_tab name="sales_tab" title="Zum Verkauf"> + <panel> + <text name="sales_price_label" value="Preis:"/> + <text name="area_label" value="Gebiet:"/> + <text name="traffic_label" value="Traffic:"/> + <text name="primitives_label" value="Primitive:"/> + <text name="parcel_scripts_label" value="Skripts:"/> + <text name="terraform_limits_label" value="Terraform-Begrenzungen:"/> + <text name="subdivide_label" value="Teilen/Zusammenlegen:"/> + <text name="resale_label" value="Wiederverkaufen:"/> + <text name="sale_to_label" value="Zum Verkauf an:"/> + </panel> + </accordion_tab> + </accordion> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml new file mode 100644 index 0000000000..7359a4fda4 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_places.xml @@ -0,0 +1,15 @@ +<?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-LISTE"/> + <filter_editor label="Meine Orte filtern" name="Filter"/> + <panel name="button_panel"> + <button label="Teleportieren" name="teleport_btn" tool_tip="Zu ausgewähltem Standort teleportieren"/> + <button label="Karte" name="map_btn" width="60"/> + <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" width="66"/> + <button label="Speichern" name="save_btn" width="66"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml index c7833f6936..78c495e377 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml @@ -1,12 +1,29 @@ <?xml version="1.0" encoding="utf-8"?> -<panel name="advanced"> - <text name="AspectRatioLabel1" tool_tip="Breite/Höhe"> - Aspektverhältnis: +<panel label="Erweitert" name="advanced"> + <panel.string name="aspect_ratio_text"> + [NUM]:[DEN] + </panel.string> + <slider label="Sichtwinkel" name="camera_fov"/> + <slider label="Abstand" name="camera_offset_scale"/> + <text name="heading2"> + Automatische Position für: </text> - <combo_box name="aspect_ratio" tool_tip="Breite/Höhe"> - <combo_box.item label="4:3 (Standard-CRT)" name="item1"/> - <combo_box.item label="5:4 (1280x1024 LCD)" name="item2"/> - <combo_box.item label="8:5 (Widescreen)" name="item3"/> - <combo_box.item label="16:9 (Widescreen)" name="item4"/> - </combo_box> + <check_box label="Bauen/Bearbeiten" name="edit_camera_movement" tool_tip="Automatische Kamerapositionierung bei Wechsel in und aus dem Bearbeitungsmodus verwenden"/> + <check_box label="Aussehen" name="appearance_camera_movement" tool_tip="Automatische Kamerapositionierung im Bearbeitenmodus verwenden"/> + <check_box label="Mich im Mouselook anzeigen" name="first_person_avatar_visible"/> + <check_box label="Mit Pfeiltasten bewegen" name="arrow_keys_move_avatar_check"/> + <check_box label="2-mal-drücken-halten, um zu rennen" name="tap_tap_hold_to_run"/> + <check_box label="Avatarlippen beim Sprechen bewegen" name="enable_lip_sync"/> + <check_box label="Blasen-Chat" name="bubble_text_chat"/> + <slider label="Deckkraft" label_width="66" name="bubble_chat_opacity"/> + <color_swatch name="background" tool_tip="Farbe für Blasen-Chat auswählen" left_pad="35"/> + <check_box label="Skript-Fehler anzeigen:" name="show_script_errors"/> + <radio_group name="show_location"> + <radio_item label="Chat in der Nähe" name="0"/> + <radio_item label="Getrenntes Fenster" name="1"/> + </radio_group> + <check_box label="Sprachfunktion ein-/ausschalten, wenn gedrückt wird:" name="push_to_talk_toggle_check" tool_tip="Wenn der Umschaltmodus aktiviert ist, drücken Sie die Auslöse-Taste EINMAL, um Ihr Mikrofon an oder aus zu stellen. Wenn der Umschaltmodus nicht motiviert ist, ist das Mikro nur dann eingeschaltet, wenn Sie die Auslösetaste gedrückt halten."/> + <line_editor label="Auslöser für Zum-Sprechen-drücken:" name="modifier_combo"/> + <button label="Taste festlegen" name="set_voice_hotkey_button"/> + <button label="Mittlere Maustaste" name="set_voice_middlemouse_button" tool_tip="Auf mittlere Maustaste zurücksetzen"/> </panel> 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 0ad6291537..0a0534c739 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_alerts.xml @@ -1,24 +1,14 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Popups" name="popups" title="Popups"> - <text> - Popups nicht anzeigen: - </text> - <text name="dont_show_label"> - Diese Popups nicht anzeigen: - </text> - <button label="Dieses Popup aktivieren" name="enable_popup"/> - <text> - Popups anzeigen: + <text name="tell_me_label"> + Anzeigen: </text> + <check_box label="Wenn ich Geld ausgebe oder L$ erhalte" name="notify_money_change_checkbox"/> + <check_box label="Wenn meine Freunde sich an- oder abmelden" name="friends_online_notify_checkbox"/> <text name="show_label"> - Diese Popups anzeigen: + Immer anzeigen: </text> - <text name="text_box2"> - Anbieten von Notizkarten, Texturen und Landmarken: + <text name="dont_show_label"> + Niemals anzeigen: </text> - <check_box label="Automatisch annehmen" name="accept_new_inventory"/> - <check_box label="Nach Annahme automatisch anzeigen" name="show_new_inventory"/> - <button width="200" label="Alle Popups aktivieren..." name="reset_dialogs_btn" tool_tip="Alle optionalen Popups und „Das erste Mal“-Meldungen aktivieren."/> - <button width="200" label="Alle diese Popups deaktivieren..." name="skip_dialogs_btn" tool_tip="Alle optionalen Popups und „Das erste Mal“-Meldungen deaktivieren."/> - <check_box label="Neue Objekte im Inventar automatisch anzeigen" name="show_in_inventory"/> </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 3fa06b17f7..f580691c0d 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"> @@ -39,4 +39,9 @@ </text> <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="Getrennte Fenster" name="radio" value="0"/> + <radio_item label="Registerkarten" 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 8d9ebe423b..bd9e10b641 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_general.xml @@ -1,90 +1,70 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Allgemein" name="general_panel"> - <combo_box name="start_location_combo"> - <combo_box.item name="MyHome" tool_tip="Als Standardeinstellung in Zuhauseposition anmelden." label="Mein Heimatort"/> - <combo_box.item name="MyLastLocation" tool_tip="Als Standardeinstellung in letztem Standort anmelden." label="Mein letzter Standort"/> - </combo_box> - <check_box label="Startposition auf Anmeldebildschirm anzeigen" name="show_location_checkbox"/> - <combo_box name="fade_out_combobox"> - <combo_box.item name="Never" label="Nie"/> - <combo_box.item name="Show Temporarily" label="Temporär anzeigen"/> - <combo_box.item name="Always" label="Immer"/> - </combo_box> - <check_box label="Kleine Avatarnamen" name="small_avatar_names_checkbox"/> - <check_box label="Meinen Namen auf meinem Bildschirm ausblenden" name="show_my_name_checkbox"/> - <text name="group_titles_textbox"> - Gruppentitel: - </text> - <check_box label="Alle Gruppentitel ausblenden" name="show_all_title_checkbox"/> - <check_box label="Meinen Gruppentitel ausblenden" name="show_my_title_checkbox"/> - <color_swatch label="" name="effect_color_swatch" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/> - <text name="UI Size:"> - UI-Größe: + <text name="language_textbox"> + Sprache: </text> - <check_box label="Auflösungsunabhängigen Maßstab verwenden" name="ui_auto_scale"/> - <spinner label="Timeout für Abwesenheit:" name="afk_timeout_spinner"/> - <check_box label="L$ Eingänge und Ausgaben melden" name="notify_money_change_checkbox"/> - <text name="maturity_desired_label"> - Einstufung: + <combo_box name="language_combobox"> + <combo_box.item label="Systemvorgabe" name="System Default Language"/> + <combo_box.item label="English (Englisch)" name="English"/> + <combo_box.item label="Danks (Dänisch) - Beta" name="Danish"/> + <combo_box.item label="Deutsch - Beta" name="Deutsch(German)"/> + <combo_box.item label="Español (Spanisch) - Beta" name="Spanish"/> + <combo_box.item label="Français (Französisch) - Beta" name="French"/> + <combo_box.item label="Italiano (Italienisch) - Beta" name="Italian"/> + <combo_box.item label="Nederlands (Niederländisch) - Beta" name="Dutch"/> + <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> + <text name="language_textbox2"> + (Erfordert Neustart) </text> - <text name="maturity_desired_prompt"> + <text name="maturity_desired_prompt" width="350"> Ich möchte auf Inhalt mit folgender Alterseinstufung zugreifen: </text> + <text name="maturity_desired_textbox"/> <combo_box name="maturity_desired_combobox"> - <combo_box.item name="Desired_Adult" label="PG, Mature und Adult"/> - <combo_box.item name="Desired_Mature" label="PG und Mature"/> - <combo_box.item name="Desired_PG" label="PG"/> + <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="maturity_desired_textbox"> - PG - </text> <text name="start_location_textbox"> - Startposition: + Startstandort: </text> - <text name="show_names_textbox"> - Namen anzeigen: + <combo_box name="start_location_combo"> + <combo_box.item label="Mein letzter Standort" name="MyLastLocation" tool_tip="Als Standardeinstellung in letztem Standort anmelden."/> + <combo_box.item label="Mein Zuhause" name="MyHome" tool_tip="Als Standardeinstellung in Zuhauseposition anmelden."/> + </combo_box> + <check_box initial_value="true" label="Beim Anmelden anzeigen" name="show_location_checkbox"/> + <text name="name_tags_textbox"> + Avatarnamen: </text> + <radio_group name="Name_Tag_Preference"> + <radio_item label="Aus" name="radio" value="0"/> + <radio_item label="An" name="radio2" value="1"/> + <radio_item label="Kurz 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"/> + <check_box label="Gruppentitel anzeigen" name="show_all_title_checkbox1"/> <text name="effects_color_textbox"> - Farbe für meine Effekte: - </text> - <text name="seconds_textbox"> - Sekunden - </text> - <text name="crash_report_textbox"> - Crash-Berichte: - </text> - <text name="language_textbox"> - Sprache: + Meine Effekte: </text> - <text name="language_textbox2"> - (Erfordert Neustart) + <text name="title_afk_text"> + Zeit bis zur Abwesenheit: </text> - <string name="region_name_prompt"> - <Region eingeben> - </string> - <combo_box name="crash_behavior_combobox"> - <combo_box.item name="Askbeforesending" label="Vor dem Senden fragen"/> - <combo_box.item name="Alwayssend" label="Immer senden"/> - <combo_box.item name="Neversend" label="Nie senden"/> - </combo_box> - <combo_box name="language_combobox"> - <combo_box.item name="System Default Language" label="Betriebssystem-Einstellung"/> - <combo_box.item name="English" label="English (Englisch)"/> - <combo_box.item name="Danish" label="Danks (Dänisch) - Beta"/> - <combo_box.item name="Deutsch(German)" label="Deutsch - Beta"/> - <combo_box.item name="Spanish" label="Español (Spanisch) - Beta"/> - <combo_box.item name="French" label="Français (Französisch) - Beta"/> - <combo_box.item name="Italian" label="Italiano (Italienisch) - Beta"/> - <combo_box.item name="Hungarian" label="Magyar (Ungarisch) - Beta"/> - <combo_box.item name="Dutch" label="Nederlands (Niederländisch) - Beta"/> - <combo_box.item name="Polish" label="Polski (Polnisch) - Beta"/> - <combo_box.item name="Portugese" label="Português (Portugiesisch) - Beta"/> - <combo_box.item name="Russian" label="Русский (Russian) - Beta"/> - <combo_box.item name="Turkish" label="Türkçe (Türkisch) - Beta"/> - <combo_box.item name="Ukrainian" label="Українська (Ukrainisch) - Beta"/> - <combo_box.item name="Chinese" label="中文 (简体) (Chinesisch) - Beta"/> - <combo_box.item name="(Japanese)" label="日本語 (Japanisch) - Beta"/> - <combo_box.item name="(Korean)" label="한국어 (Koreanisch) - Beta"/> + <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> - <check_box label="Objekten Sprache mitteilen" name="language_is_public" tool_tip="In-Welt-Objekten wird Ihre bevorzugte Spracheinstellung mitgeteilt."/> + <text name="text_box3"> + Antwort, wenn im „Beschäftigt“-Modus: + </text> + <text_editor name="busy_response"> + log_in_to_change + </text_editor> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml index ce26e3782b..e7bb768925 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_graphics1.xml @@ -40,7 +40,7 @@ Shader: </text> <check_box initial_value="true" label="Bumpmapping und Glanz" name="BumpShiny"/> - <check_box initial_value="true" label="Einfache Shader" name="BasicShaders" tool_tip="Deaktivieren Sie diese Option, wenn der Grafikkartentreiber Abstürze verursacht."/> + <check_box initial_value="true" label="Einfache Shader" name="BasicShaders" tool_tip="Deaktivieren Sie diese Option, wenn der Grafikkartentreiber Abstürze verursacht"/> <check_box initial_value="true" label="Atmosphären-Shader" name="WindLightUseAtmosShaders"/> <check_box initial_value="true" label="Wasserreflexionen" name="Reflections"/> <text name="ReflectionDetailText"> @@ -55,7 +55,7 @@ <text name="AvatarRenderingText"> Avatar-Darstellung: </text> - <check_box initial_value="true" label="Ersatzavatare" name="AvatarImpostors"/> + <check_box initial_value="true" label="Scheinavatare" name="AvatarImpostors"/> <check_box initial_value="true" label="Hardware-Hautberechnung" name="AvatarVertexProgram"/> <check_box initial_value="true" label="Avatar-Kleidung" name="AvatarCloth"/> <slider label="Sichtweite:" name="DrawDistance"/> 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 30083deea8..42a625fbf6 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_privacy.xml @@ -1,20 +1,25 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Kommunikation" name="im"> <panel.string name="log_in_to_change"> - Zum Ändern anmelden + Anmelden, um Änderungen vorzunehmen </panel.string> - <button label="Cache löschen" name="clear_cache"/> + <button label="Cache leeren" name="clear_cache" tool_tip="Bild bei Anmeldung, letzter Standort, Teleport-Liste, Internet- und Texturen-Cache löschen"/> <text name="cache_size_label_l"> - (Positionen, Bilder, Internet, Suchverlauf) + (Standorte, Bilder, Web, Suchverlauf) </text> - <check_box label="Nur Freunden und Gruppen meinen Online-Status mitteilen" name="online_visibility"/> - <check_box label="Nur IMs und Anrufe von Freunden oder Gruppen durchstellen" name="voice_call_friends_only_check"/> - <check_box label="Nach Beendigung von Anrufen Mikrofon abschalten." name="auto_disengage_mic_check"/> + <check_box label="Nur Freunde und Gruppen wissen, dass ich online bin" name="online_visibility"/> + <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="Protokoll auf meinem Computer speichern" name="log_instant_messages"/> - <radio_group name="ChatIMLogs"> - <radio_item label="Chat" name="radio1"/> - <radio_item label="IM" name="radio2"/> - </radio_group> + <text name="Logs:"> + Protokolle: + </text> + <check_box label="Protokolle von Gesprächen in der Nähe auf meinem Computer speichern" name="log_nearby_chat"/> + <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"> + Protokolle speichern in: + </text> <button label="Durchsuchen" label_selected="Durchsuchen" name="log_path_button"/> + <button label="Ignorierte Einwohner/Objekte" name="block_list" width="180"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_setup.xml b/indra/newview/skins/default/xui/de/panel_preferences_setup.xml index ef28bf4cfe..2516cd3a40 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/Internet" name="Input panel"> <button label="Andere Geräte" name="joystick_setup_button"/> <text name="Mouselook:"> Mouselook: @@ -15,32 +15,32 @@ Maximale Bandbreite </text> <text name="text_box2"> - kbps + kbit/s </text> - <check_box label="Benutzerdefinierter Port" name="connection_port_enabled"/> - <spinner label="Port-Nummer:" name="web_proxy_port"/> + <check_box label="Eigener Port" name="connection_port_enabled"/> + <spinner label="Port-Nummer:" name="connection_port"/> <text name="cache_size_label_l"> - Cache + Cachegröße </text> <text name="text_box5"> MB </text> - <button label="Durchsuchen" label_selected="Durchsuchen" name="set_cache"/> - <button label="Zurücksetzen" label_selected="Festlegen" name="reset_cache"/> <text name="Cache location"> - Cache-Ordner + Cache-Ordner: </text> + <button label="Durchsuchen" label_selected="Durchsuchen" name="set_cache"/> + <button label="Zurücksetzen" label_selected="Zurücksetzen" name="reset_cache"/> <text name="Web:"> - Internet: + Web: </text> <radio_group name="use_external_browser"> - <radio_item label="Integrierten Browser verwenden" name="internal" tool_tip="Den integrierten Browser für Hilfe, Internetlinks, usw. verwenden. Der Browser wird als eigenständiges Fenster in [APP_NAME] geöffnet."/> - <radio_item label="Meinen Browser verwenden (IE, Firefox)" name="external" tool_tip="Standard-Browser für Hilfe, Weblinks usw. verwenden. Im Vollbildmodus nicht empfohlen."/> + <radio_item label="Integrierten Browser verwenden" name="internal" tool_tip="Integrierten Webbrowser verwenden, um die Hilfe, Weblinks usw. anzuzeigen. Dieser Browser öffnet als neues Fenster innerhalb von [APP_NAME]." value="0"/> + <radio_item label="Meinen Browser verwenden (IE, Firefox, Safari)" name="external" tool_tip="Standard Webbrowser des Systems verwenden, um die Hilfe, Weblinks usw. anzuzeigen. Bei Vollbildmodus nicht empfohlen." value="1"/> </radio_group> - <check_box initial_value="false" label="Web-Proxy:" name="web_proxy_enabled"/> - <line_editor name="web_proxy_editor" tool_tip="Name oder IP-Adresse des Proxys"/> - <button label="Durchsuchen" label_selected="Durchsuchen" name="set_proxy"/> + <check_box initial_value="false" label="Web-Proxy aktivieren" name="web_proxy_enabled"/> <text name="Proxy location"> - Proxy-Standort + Proxy-Standort: </text> + <line_editor name="web_proxy_editor" tool_tip="Name oder IP Adresse des Proxyservers, den Sie benutzen möchten"/> + <spinner label="Portnummer:" name="web_proxy_port"/> </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 3c4d8203fb..b01db30c82 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml @@ -1,73 +1,42 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="Audio und Video" name="Preference Media panel"> - <slider label="Master" name="System Volume"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Sounds" name="Preference Media panel"> + <slider label="Master-Lautstärke" name="System Volume"/> + <check_box initial_value="true" label="Stummschalten, wenn minimiert" name="mute_when_minimized"/> + <slider label="Schaltflächen" name="UI Volume"/> <slider label="Umgebung" name="Wind Volume"/> - <slider label="Sounds" name="SFX Volume"/> + <slider label="Soundeffekte" name="SFX Volume"/> + <slider label="Musik wird gestreamt" name="Music Volume"/> + <check_box label="Aktiviert" name="music_enabled"/> <slider label="Medien" name="Media Volume"/> - <slider label="UI" name="UI Volume"/> - <slider label="Musik" name="Music Volume"/> - <slider label="Sprache" name="Voice Volume"/> - <text_editor name="voice_unavailable"> - Voice-Chat ist nicht verfügbar - </text_editor> - <check_box label="Voice-Chat aktivieren" name="enable_voice_check"/> - <radio_group name="ear_location"> - <radio_item name="0" label="Voice-Chat von Kameraposition aus hören" /> - <radio_item name="1" label="Voice-Chat von Avatarposition aus hören" /> - </radio_group> - <button label="Geräte-Einstellungen" name="device_settings_btn"/> - <text name="muting_text"> - Lautstärke: - </text> - <check_box label="Audio stummschalten" name="disable audio" /> - <text name="streaming_prefs_text"> - Streaming-Einstellungen: - </text> - <text name="audio_prefs_text"> - Audio-Einstellungen: - </text> - <panel label="Lautstärke" name="Volume Panel" /> - <check_box label="Medien automatisch wiedergeben" name="auto_streaming_video" /> - <check_box label="Audio stummschalten, wenn Fenster minimiert ist" - name="mute_when_minimized" /> - <text name="streaming_text"> - Streaming: - </text> - <check_box label="Streaming-Musik abspielen" name="streaming_music" /> - <check_box label="Streaming-Media abspielen" name="streaming_video" /> - <text name="system_volume_text"> - Soundeffekte: - </text> - <text name="wind_volume_text"> - Windlautstärke: + <check_box label="Aktiviert" name="enable_media"/> + <slider label="Voice-Chat" name="Voice Volume"/> + <check_box label="Aktiviert" name="enable_voice_check"/> + <check_box label="Automatische Wiedergabe zulassen" name="media_auto_play_btn" tool_tip="Hier aktivieren, um Medien automatisch wiederzugeben." value="wahr"/> + <check_box label="Medien, die an andere Avatare angehängt sind, wiedergeben." name="media_show_on_others_btn" tool_tip="Diese Option deaktivieren, um Medien für andere Avataren, die sich in der Nähe befinden, auszublenden." value="wahr"/> + <text name="Listen from"> + Voice-Chat-Einstellungen </text> - <text name="footsteps_volume_text"> - Schrittlautstärke: - </text> - <text name="ui_volume_text"> - UI-Volumen: - </text> - <slider label="Dopplereffekt" name="Doppler Effect" /> - <slider label="Distanzfaktor" name="Distance Factor" /> - <slider label="Rolloff-Faktor" name="Rolloff Factor" /> - <spinner label="L$ Änderungs-Grenzwert" name="L$ Change Threshold" /> - <spinner label="Gesundheitsschwellwert" name="Health Change Threshold" /> - <text name="doppler_effect_text"> - Audio-Einstellungen: - </text> - <text name="distance_factor_text"> - Distanzfaktor: - </text> - <text name="rolloff_factor_text"> - Rolloff-Faktor: - </text> - <text name="default_upload_bitrate_text"> - Standard-Upload-Bitrate: - </text> - <radio_group name="bitrate"> - <radio_item name="32kbps" label="32 kbit/s" /> - <radio_item name="64kbps" label="64 kbit/s" /> - <radio_item name="96kbps" label="96 kbit/s" /> - <radio_item name="128kbps" label="128 kbit/s" /> + <radio_group name="ear_location"> + <radio_item label="Kameraposition" name="0"/> + <radio_item label="Avatarposition" name="1"/> </radio_group> + <button label="Eingabe-/Ausgabegeräte" name="device_settings_btn"/> + <panel label="Geräte-Einstellungen" name="device_settings_panel"> + <panel.string name="default_text"> + Standard + </panel.string> + <text name="Input"> + Eingabe + </text> + <text name="My volume label"> + Meine Lautstärke: + </text> + <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Ändern Sie die Lautstärke mit dem Regler"/> + <text name="wait_text"> + Bitte warten + </text> + <text name="Output"> + Ausgabe + </text> + </panel> </panel> 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 new file mode 100644 index 0000000000..0a19483f8b --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="MediaControls"> + <string name="control_background_image_name"> + Inspector_Background + </string> + <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"> + <layout_panel> + <icon name="media_whitelist_flag" tool_tip="Whitelist aktiviert"/> + </layout_panel> + <layout_panel> + <icon name="media_secure_lock_flag" tool_tip="Sicheres Browsen"/> + </layout_panel> + </layout_stack> + </layout_panel> + <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_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> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_profile.xml b/indra/newview/skins/default/xui/de/panel_profile.xml index c3274acaae..cb598f89f6 100644 --- a/indra/newview/skins/default/xui/de/panel_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_profile.xml @@ -12,34 +12,45 @@ </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"/> - <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="Echtes Leben:"/> - </panel> - <text name="me_homepage_text"> - Webseite: - </text> - <text name="title_member_text" value="Mitglied seit:"/> - <text name="title_acc_status_text" value="Kontostatus:"/> - <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:"/> - </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="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> + <string name="no_group_text" value="Keiner"/> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) + </string> + <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_editor name="acc_status_text"> + Einwohner. Keine Zahlungsinfo archiviert. + Linden. + </text_editor> + <text name="title_partner_text" value="Partner:"/> + <panel name="partner_data_panel"> + <name_box initial_value="(wird in Datenbank gesucht)" name="partner_text"/> + </panel> + <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" width="109"/> + <button label="IM" name="im" tool_tip="Instant Messenger öffnen" width="24"/> + <button label="Anrufen" name="call" tool_tip="Diesen Einwohner anrufen"/> + <button label="Karte" name="show_on_map_btn" tool_tip="Einwohner auf Karte anzeigen" width="36"/> + <button label="Teleportieren" name="teleport" tool_tip="Teleport anbieten"/> + <button label="▼" name="overflow_btn" tool_tip="Dem Einwohner Geld geben oder Inventar an den Einwohner schicken"/> + </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_profile_view.xml b/indra/newview/skins/default/xui/de/panel_profile_view.xml index 84e1a20bf7..f02457dd80 100644 --- a/indra/newview/skins/default/xui/de/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/de/panel_profile_view.xml @@ -6,10 +6,11 @@ <string name="status_offline"> Offline </string> - <text name="user_name" value="(wird geladen...)"/> + <text_editor name="user_name" value="(wird geladen...)"/> <text name="status" value="Online"/> - <tab_container name="tabs"> - <panel label="Profil" name="panel_profile"/> - <panel label="Auswahl" name="panel_picks"/> + <tab_container name="tabs" tab_min_width="60"> + <panel label="PROFIL" name="panel_profile"/> + <panel label="AUSWAHL" name="panel_picks"/> + <panel label="NOTIZEN & PRIVATSPHÄRE" name="panel_notes"/> </tab_container> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_region_covenant.xml b/indra/newview/skins/default/xui/de/panel_region_covenant.xml index a72f0e4240..153082909a 100644 --- a/indra/newview/skins/default/xui/de/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/de/panel_region_covenant.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Vertrag" name="Covenant"> <text name="estate_section_lbl"> - Grundstück: + Grundstück </text> <text name="estate_name_lbl"> Name: @@ -18,7 +18,7 @@ <text name="estate_cov_lbl"> Vertrag: </text> - <text name="covenant_timestamp_text"> + <text name="covenant_timestamp_text" width="320"> Letzte Änderung am Mittwoch, den 31. Dez. 1969, 16:00:00 </text> <button label="?" name="covenant_help"/> @@ -28,20 +28,19 @@ <button label="Zurücksetzen" name="reset_covenant"/> <text name="covenant_help_text"> Änderungen am Vertrag werden für alle Parzellen auf dem - Grundstück übernommen. +Grundstück übernommen. </text> <text bottom_delta="-36" name="covenant_instructions"> - Ziehen Sie eine Notizkarte an diese Stelle, um den Vertrag für dieses - Grundstück zu ändern. + Ziehen Sie eine Notizkarte an diese Stelle, um den Vertrag für dieses Grundstück zu ändern. </text> <text bottom_delta="-36" name="region_section_lbl"> - Region: + Region </text> <text name="region_name_lbl"> Name: </text> <text name="region_name_text"> - leyla + Erica </text> <text name="region_landtype_lbl"> Typ: @@ -64,7 +63,7 @@ <text name="changeable_lbl"> Unterteilen: </text> - <text name="changeable_clause"> + <text name="changeable_clause" width="366"> Land in dieser Region kann nicht zusammengelegt/geteilt werden. </text> <string name="can_resell"> diff --git a/indra/newview/skins/default/xui/de/panel_region_debug.xml b/indra/newview/skins/default/xui/de/panel_region_debug.xml index 9e03ebeda3..920a513308 100644 --- a/indra/newview/skins/default/xui/de/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/de/panel_region_debug.xml @@ -13,7 +13,7 @@ <check_box label="Physik deaktivieren" name="disable_physics_check" tool_tip="Physik in dieser Region deaktivieren"/> <button label="?" name="disable_physics_help"/> <button label="Übernehmen" name="apply_btn"/> - <text name="objret_text_lbl" width="105"> + <text name="objret_text_lbl" width="110"> Objekt zurückgeben </text> <text name="resident_text_lbl"> @@ -22,13 +22,13 @@ <line_editor name="target_avatar_name"> (keiner) </line_editor> - <button label="Auswählen..." name="choose_avatar_btn"/> + <button label="Auswählen" name="choose_avatar_btn"/> <text name="options_text_lbl"> Optionen: </text> - <check_box label="Nur Objekte mit Skripten zurückgeben" name="return_scripts" tool_tip="Es werden nur die Objekte zurückgegeben, die über Skripte verfügen."/> - <check_box label="Nur Objekte auf dem Land eines anderen Einwohners zurückgeben" name="return_other_land" tool_tip="Es werden nur die Objekte zurückgegeben, die sich auf dem Land eines anderen Einwohners befinden"/> - <check_box label="Objekte in jeder Region dieses Grundstücks zurückgeben" name="return_estate_wide" tool_tip="Es werden die Objekte in allen Regionen dieses Grundstücks zurückgegeben"/> + <check_box label="Mit Skripten" name="return_scripts" tool_tip="Es werden nur die Objekte zurückgegeben, die über Skripte verfügen."/> + <check_box label="Auf dem Land von jemand anderem" name="return_other_land" tool_tip="Es werden nur die Objekte zurückgegeben, die sich auf dem Land eines anderen Einwohners befinden"/> + <check_box label="In jeder Region auf diesem Grundstück" name="return_estate_wide" tool_tip="Es werden die Objekte in allen Regionen dieses Grundstücks zurückgegeben"/> <button label="Zurückgeben" name="return_btn" width="90"/> <button label="Top-Kollisionsobjekte..." name="top_colliders_btn" tool_tip="Liste der Objekte mit den meisten potenziellen Kollisionen"/> <button label="?" name="top_colliders_help"/> 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 ddc5941da6..59a4c148a8 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" ?> +<?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 wirken sich auf alle Regionen des Grundstücks aus. </text> <text name="estate_text"> Grundstück: @@ -11,67 +10,65 @@ auf alle Regionen auf dem Grundstück aus. (unbekannt) </text> <text name="owner_text"> - Eigentümer: + Grundstückseigentümer: </text> <text name="estate_owner"> (unbekannt) </text> <text name="Only Allow"> - Zugang beschränken auf: + Zugang nur dann, wenn überprüft mit: </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 Altersprüfung verbannen. Weitere Informationen finden Sie auf support.secondlife.com." /> - <check_box label="Voice-Chat erlauben" name="voice_chat_check" /> - <button label="?" name="voice_chat_help" /> + <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"> E-Mail-Adresse für Missbrauchsmeldungen: </text> <string name="email_unsupported"> Funktion nicht unterstützt </string> - <button label=" ?" name="abuse_email_address_help" /> - <button label="?" name="estate_manager_help" /> - <button label="Hinzufügen..." name="add_estate_manager_btn" /> - <button label="Entfernen..." name="remove_estate_manager_btn" /> - <check_box label="Globale Zeit verwenden" name="use_global_time_check" /> - <button label="?" name="use_global_time_help" /> - <check_box label="Sonne fest" name="fixed_sun_check" /> - <button label="?" name="fixed_sun_help" /> - <slider label="Phase" name="sun_hour_slider" /> - <check_box label="Freien Zugang erlauben" name="externally_visible_check" /> - <button label="?" name="externally_visible_help" /> - <check_box label="Direktteleport zulassen" name="allow_direct_teleport" /> - <button label="?" name="allow_direct_teleport_help" /> + <button label=" ?" name="abuse_email_address_help"/> + <button label="?" name="estate_manager_help"/> + <button label="Hinzufügen..." name="add_estate_manager_btn"/> + <button label="Entfernen..." name="remove_estate_manager_btn"/> + <check_box label="Globale Zeit verwenden" name="use_global_time_check"/> + <button label="?" name="use_global_time_help"/> + <check_box label="Sonne fest" name="fixed_sun_check"/> + <button label="?" name="fixed_sun_help"/> + <slider label="Phase" name="sun_hour_slider"/> + <check_box label="Freien Zugang erlauben" name="externally_visible_check"/> + <button label="?" name="externally_visible_help"/> + <check_box label="Direktteleport zulassen" name="allow_direct_teleport"/> + <button label="?" name="allow_direct_teleport_help"/> <text name="region_text_lbl"> Zugang nach Zahlungsstatus verweigern: </text> - <check_box label="Verweigern - keine archivierte Zahlungsinfo" name="deny_anonymous" /> - <check_box label="Verweigern - Zahlungsinfo archiviert" name="deny_identified" /> - <check_box label="Verweigern - Zahlungsinfo verwendet" name="deny_transacted" /> - <button label="Übernehmen" name="apply_btn" /> + <check_box label="Verweigern - keine archivierte Zahlungsinfo" name="deny_anonymous"/> + <check_box label="Verweigern - Zahlungsinfo archiviert" name="deny_identified"/> + <check_box label="Verweigern - Zahlungsinfo verwendet" name="deny_transacted"/> + <button label="Übernehmen" name="apply_btn"/> <text name="estate_manager_label"> Grundstücksverwalter: </text> <text name="allow_resident_label"> Zulässige Einwohner: </text> - <button label="?" name="allow_resident_help" /> - <button label="Hinzufügen..." name="add_allowed_avatar_btn" /> - <button label="Entfernen..." name="remove_allowed_avatar_btn" /> + <button label="?" name="allow_resident_help"/> + <button label="Hinzufügen..." name="add_allowed_avatar_btn"/> + <button label="Entfernen..." name="remove_allowed_avatar_btn"/> <text name="allow_group_label"> Zulässige Gruppen: </text> - <button label="?" name="allow_group_help" /> - <button label="Hinzufügen..." name="add_allowed_group_btn" /> - <button label="Entfernen..." name="remove_allowed_group_btn" /> + <button label="?" name="allow_group_help"/> + <button label="Hinzufügen..." name="add_allowed_group_btn"/> + <button label="Entfernen..." name="remove_allowed_group_btn"/> <text name="ban_resident_label"> Verbannte Einwohner: </text> - <button label="?" name="ban_resident_help" /> - <button label="Hinzufügen..." name="add_banned_avatar_btn" /> - <button label="Entfernen..." name="remove_banned_avatar_btn" /> - <button label="Nachricht an Grundstück senden..." name="message_estate_btn" /> - <button label="Benutzer von Grundstück werfen..." name="kick_user_from_estate_btn" /> + <button label="?" name="ban_resident_help"/> + <button label="Hinzufügen..." name="add_banned_avatar_btn"/> + <button label="Entfernen..." name="remove_banned_avatar_btn"/> + <button label="Nachricht an Grundstück" name="message_estate_btn"/> + <button label="Einwohner hinauswerfen" name="kick_user_from_estate_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_region_general.xml b/indra/newview/skins/default/xui/de/panel_region_general.xml index 13df2bfb3b..978b701054 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 0000000000..732249df35 --- /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 df936ff643..f9997f300a 100644 --- a/indra/newview/skins/default/xui/de/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/de/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="Bodentexturen" name="Textures"> <text name="region_text_lbl"> Region: @@ -36,22 +36,22 @@ <text name="height_text_lbl9"> Nordost </text> - <spinner label="Niedrig" name="height_start_spin_0" /> - <spinner label="Niedrig" name="height_start_spin_1" /> - <spinner label="Niedrig" name="height_start_spin_2" /> - <spinner label="Niedrig" name="height_start_spin_3" /> - <spinner label="Hoch" name="height_range_spin_0" /> - <spinner label="Hoch" name="height_range_spin_1" /> - <spinner label="Hoch" name="height_range_spin_2" /> - <spinner label="Hoch" name="height_range_spin_3" /> + <spinner label="Niedrig" name="height_start_spin_0" label_width="40"/> + <spinner label="Niedrig" name="height_start_spin_1" label_width="40"/> + <spinner label="Niedrig" name="height_start_spin_2" label_width="40"/> + <spinner label="Niedrig" name="height_start_spin_3" label_width="40"/> + <spinner label="Hoch" name="height_range_spin_0" label_width="40"/> + <spinner label="Hoch" name="height_range_spin_1" label_width="40"/> + <spinner label="Hoch" name="height_range_spin_2" label_width="40"/> + <spinner label="Hoch" name="height_range_spin_3" label_width="40"/> <text name="height_text_lbl10"> 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 + 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. </text> - <button label="Übernehmen" name="apply_btn" /> + <button label="Übernehmen" name="apply_btn"/> </panel> 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 0000000000..c91eb98e9c --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_script_limits_my_avatar.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="MEIN AVATAR" name="script_limits_my_avatar_panel"> + <text name="script_memory"> + Avatar-Skript-Gebrauch + </text> + <text name="loading_text"> + Wird geladen... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="Größe (KB)" name="size" width="80"/> + <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 0000000000..8d7cc1bf9a --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_script_limits_region_memory.xml @@ -0,0 +1,22 @@ +<?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"/> + <text name="memory_used"/> + <text name="loading_text"> + Wird geladen... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="Größe (KB)" name="size" width="80"/> + <scroll_list.columns label="URLs" name="urls"/> + <scroll_list.columns label="Objektname" name="name"/> + <scroll_list.columns label="Objekteigentümer" name="owner" width="130"/> + <scroll_list.columns label="Parzelle" name="parcel"/> + <scroll_list.columns label="Standort" name="location"/> + </scroll_list> + <button label="Liste aktualisieren" name="refresh_list_btn" width="110"/> + <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 new file mode 100644 index 0000000000..3c81636fa0 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_side_tray.xml @@ -0,0 +1,29 @@ +<?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="Seitenleiste auf-/zuklappen." name="sidebar_openclose" tab_title="Seitenleiste auf-/zuklappen"/> + <sidetray_tab description="Startseite." name="sidebar_home" tab_title="Startseite"> + <panel label="Startseite" name="panel_home"/> + </sidetray_tab> + <sidetray_tab description="Ihr öffentliches Profil und Auswahl bearbeiten." name="sidebar_me" tab_title="Mein Profil"> + <panel_container name="panel_container"> + <panel label="Ich" name="panel_me"/> + </panel_container> + </sidetray_tab> + <sidetray_tab description="Freunde, Kontakte und Leute in Ihrer Nähe finden." name="sidebar_people" tab_title="Leute"> + <panel_container name="panel_container"> + <panel label="Gruppenprofil" name="panel_group_info_sidetray"/> + <panel label="Ignorierte Einwohner & Objekte" name="panel_block_list_sidetray"/> + </panel_container> + </sidetray_tab> + <sidetray_tab description="Hier finden Sie neue Orte und Orte, die Sie bereits besucht haben." label="Orte" name="sidebar_places" tab_title="Orte"> + <panel label="Orte" name="panel_places"/> + </sidetray_tab> + <sidetray_tab description="Inventar durchsuchen." name="sidebar_inventory" tab_title="Mein Inventar"> + <panel label="Inventar bearbeiten" name="sidepanel_inventory"/> + </sidetray_tab> + <sidetray_tab description="Ändern Sie Ihr Aussehen und Ihren aktuellen Look." name="sidebar_appearance" tab_title="Mein Aussehen"> + <panel label="Aussehen bearbeiten" name="sidepanel_appearance"/> + </sidetray_tab> +</side_tray> diff --git a/indra/newview/skins/default/xui/de/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/de/panel_side_tray_tab_caption.xml new file mode 100644 index 0000000000..93fff56f84 --- /dev/null +++ b/indra/newview/skins/default/xui/de/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="Klappmenü??"/> + <button name="show_help" tool_tip="Hilfe anzeigen"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/de/panel_sidetray_home_tab.xml new file mode 100644 index 0000000000..cf3080a4f9 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_sidetray_home_tab.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Part of side tray, see that XML file for panel config --> +<panel label="home_tab" name="home_tab"> + <scroll_container name="profile_scroll"> + <panel name="profile_scroll_panel"> + <panel name="sidebar_people"> + <text name="tab_name" value="Leute"/> + <text name="tab_description"> + Freunde, Gruppen, Kontakte und Leute in Ihrer Nähe finden. + </text> + </panel> + <panel name="sidebar_places"> + <text name="tab_name" value="Orte"/> + <text name="tab_description"> + Hier finden Sie neue Orte und Orte, die Sie bereits besucht haben. + </text> + </panel> + <panel name="sidebar_me"> + <text name="tab_name" value="Mein Profil"/> + <text name="tab_description"> + Öffentliches Profil bearbeiten. + </text> + </panel> + <panel name="sidebar_appearance"> + <text name="tab_name" value="Mein Aussehen"/> + <text name="tab_description"> + Ändern Sie Ihr Aussehen und Ihren aktuellen Look. + </text> + </panel> + <panel name="sidebar_inventory"> + <text name="tab_name" value="Mein Inventar"/> + <text name="tab_description"> + Inventar durchsuchen. + </text> + </panel> + </panel> + </scroll_container> +</panel> 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 4ba867e118..283df990ae 100644 --- a/indra/newview/skins/default/xui/de/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/de/panel_status_bar.xml @@ -12,11 +12,20 @@ <panel.string name="bandwidth_tooltip"> Bandbreite </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"> [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 + 24:00 H PST </text> + <button name="media_toggle_btn" tool_tip="Klicken, um Medien ein-/auszuschalten"/> + <button name="volume_btn" tool_tip="Steuerung der Gesamtlautstärke"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_sys_well_item.xml b/indra/newview/skins/default/xui/de/panel_sys_well_item.xml new file mode 100644 index 0000000000..504f1727e2 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_sys_well_item.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- All our XML is utf-8 encoded. --> +<panel name="sys_well_item" title="sys_well_item"> + <text name="title"> + Achtung Forelle! ACHTUNG! DIE! FORELLE! + </text> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_teleport_history.xml b/indra/newview/skins/default/xui/de/panel_teleport_history.xml new file mode 100644 index 0000000000..4efd83dfff --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_teleport_history.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="Teleport History"> + <accordion name="history_accordion"> + <accordion_tab name="today" title="Heute"/> + <accordion_tab name="yesterday" title="Gestern"/> + <accordion_tab name="2_days_ago" title="Vor 2 Tagen"/> + <accordion_tab name="3_days_ago" title="Vor 3 Tagen"/> + <accordion_tab name="4_days_ago" title="Vor 4 Tagen"/> + <accordion_tab name="5_days_ago" title="Vor 5 Tagen"/> + <accordion_tab name="6_days_and_older" title="6 Tage und älter"/> + <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"> + <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 new file mode 100644 index 0000000000..4b57aa69b6 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_teleport_history_item.xml @@ -0,0 +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 95eb6c5eb2..554a5c27a4 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 new file mode 100644 index 0000000000..7a280bd7ff --- /dev/null +++ b/indra/newview/skins/default/xui/de/sidepanel_appearance.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<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"> + (nicht gespeichert) + </text> + <text name="currentlook_name"> + MyOutfit With a really Long Name like MOOSE + </text> + </panel> + <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 new file mode 100644 index 0000000000..f6cf911bb3 --- /dev/null +++ b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Sonstiges" name="objects panel"> + <panel label="" name="sidepanel__inventory_panel"> + <panel name="button_panel"> + <button label="Profil" name="info_btn"/> + <button label="Anziehen" name="wear_btn"/> + <button label="Wiedergeben" name="play_btn"/> + <button label="Teleportieren" name="teleport_btn"/> + </panel> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/sidepanel_item_info.xml b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml new file mode 100644 index 0000000000..09935019ab --- /dev/null +++ b/indra/newview/skins/default/xui/de/sidepanel_item_info.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="item properties" title="Objektprofil"> + <panel.string name="unknown"> + (unbekannt) + </panel.string> + <panel.string name="public"> + (öffentlich) + </panel.string> + <panel.string name="you_can"> + Sie können: + </panel.string> + <panel.string name="owner_can"> + Eigentümer kann: + </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="Objektprofil"/> + <text name="where" value="(Inventar)"/> + <panel label=""> + <text name="LabelItemNameTitle"> + Name: + </text> + <text name="LabelItemDescTitle"> + Beschreibung: + </text> + <text name="LabelCreatorTitle"> + Ersteller: + </text> + <text name="LabelCreatorName"> + Nicole Linden + </text> + <button label="Profil" name="BtnCreator"/> + <text name="LabelOwnerTitle"> + Eigentümer: + </text> + <text name="LabelOwnerName"> + Thrax Linden + </text> + <button label="Profil" name="BtnOwner"/> + <text name="LabelAcquiredTitle"> + Erworben: + </text> + <text name="LabelAcquiredDate"> + Mittwoch, 24. Mai 2006, 12:50:46 + </text> + <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: L$" name="Edit Cost"/> + </panel> + <panel name="button_panel"> + <button label="Abbrechen" name="cancel_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 new file mode 100644 index 0000000000..825acac79d --- /dev/null +++ b/indra/newview/skins/default/xui/de/sidepanel_task_info.xml @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="object properties" title="Objektprofil"> + <panel.string name="text deed continued"> + Übertragung + </panel.string> + <panel.string name="text deed"> + Übertragung + </panel.string> + <panel.string name="text modify info 1"> + Sie können dieses Objekt bearbeiten. + </panel.string> + <panel.string name="text modify info 2"> + Sie können diese Objekte bearbeiten. + </panel.string> + <panel.string name="text modify info 3"> + Sie können dieses Objekt nicht bearbeiten. + </panel.string> + <panel.string name="text modify info 4"> + Sie können diese Objekte nicht bearbeiten. + </panel.string> + <panel.string name="text modify warning"> + Diese Objekt verfügt über verknüpfte Teile + </panel.string> + <panel.string name="Cost Default"> + Preis: L$ + </panel.string> + <panel.string name="Cost Total"> + Summe: L$ + </panel.string> + <panel.string name="Cost Per Unit"> + Stückpreis: L$ + </panel.string> + <panel.string name="Cost Mixed"> + Mischpreis + </panel.string> + <panel.string name="Sale Mixed"> + Mischverkauf + </panel.string> + <text name="title" value="Objektprofil"/> + <text name="where" value="(inworld)"/> + <panel label=""> + <text name="Name:"> + Name: + </text> + <text name="Description:"> + Beschreibung: + </text> + <text name="CreatorNameLabel"> + Ersteller: + </text> + <text name="Creator Name"> + Erica Linden + </text> + <text name="Owner:"> + Eigentümer: + </text> + <text name="Owner Name"> + Erica Linden + </text> + <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."/> + <text name="label click action"> + Bei Linksklick: + </text> + <combo_box name="clickaction"> + <combo_box.item label="Berühren (Standard)" name="Touch/grab(default)"/> + <combo_box.item label="Auf Objekt setzen" name="Sitonobject"/> + <combo_box.item label="Objekt kaufen" name="Buyobject"/> + <combo_box.item label="Objekt bezahlen" name="Payobject"/> + <combo_box.item label="Öffnen" name="Open"/> + </combo_box> + <panel name="perms_inv"> + <text name="perm_modify"> + Sie können dieses Objekt bearbeiten. + </text> + <text name="Anyone can:"> + Jeder: + </text> + <check_box label="Kopieren" name="checkbox allow everyone copy"/> + <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"/> + </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="Öffnen" name="open_btn"/> + <button label="Bezahlen" name="pay_btn"/> + <button label="Kaufen" name="buy_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 86eb8b1479..e6b841671f 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -1,16 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- This file contains strings that used to be hardcoded in the source. It is only for those strings which do not belong in a floater. - For example, the strings used in avatar chat bubbles, and strings + 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=de-DE</string> <string name="SECOND_LIFE"> Second Life </string> <string name="APP_NAME"> Second Life </string> + <string name="CAPITALIZED_APP_NAME"> + SECOND LIFE + </string> <string name="SECOND_LIFE_GRID"> Second Life-Grid: </string> @@ -50,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> @@ -80,8 +85,17 @@ <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> + <string name="create_account_url"> + http://join.secondlife.com/index.php?lang=de-DE + </string> <string name="AgentLostConnection"> - In dieser Region kann es zu Problemen kommen. Bitte überprüfen Sie Ihre Internetverbindung. + In dieser Region kann es zu Problemen kommen. Bitte überprüfen Sie Ihre Internetverbindung. </string> <string name="TooltipPerson"> Person @@ -155,11 +169,21 @@ <string name="TooltipObjectIMUrl"> Anklicken, um Beschreibung des Objekts anzuzeigen </string> + <string name="TooltipMapUrl"> + Klicken, um diese Position auf der Karte anzuzeigen + </string> <string name="TooltipSLAPP"> Anklicken, um Befehl secondlife:// auszuführen </string> + <string name="CurrentURL" value=" CurrentURL: [CurrentURL]"/> + <string name="SLurlLabelTeleport"> + Teleportieren nach + </string> + <string name="SLurlLabelShowOnMap"> + 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) @@ -176,12 +200,15 @@ <string name="BUTTON_DOCK"> Andocken </string> - <string name="BUTTON_UNDOCK"> - Abkoppeln - </string> <string name="BUTTON_HELP"> Hilfe anzeigen </string> + <string name="Searching"> + Suchen... + </string> + <string name="NoneFound"> + Nicht gefunden. + </string> <string name="RetrievingData"> Laden... </string> @@ -197,8 +224,8 @@ <string name="AvatarNameWaiting"> (wartet) </string> - <string name="AvatarNameHippos"> - (hippos) + <string name="AvatarNameMultiple"> + (mehrere) </string> <string name="GroupNameNone"> (keiner) @@ -308,6 +335,9 @@ <string name="symbolic link"> Link </string> + <string name="AvatarEditingAppearance"> + (Aussehen wird bearbeitet) + </string> <string name="AvatarAway"> Abwesend </string> @@ -315,7 +345,7 @@ Beschäftigt </string> <string name="AvatarMuted"> - Stummgeschaltet + Ignoriert </string> <string name="anim_express_afraid"> Ängstlich @@ -530,6 +560,9 @@ <string name="worldmap_offline"> Offline </string> + <string name="worldmap_results_none_found"> + Nicht gefunden. + </string> <string name="Ok"> OK </string> @@ -557,6 +590,9 @@ <string name="hang_up"> Verbindung mit In-Welt-Voice-Chat getrennt </string> + <string name="reconnect_nearby"> + Sie werden nun wieder mit dem Chat in Ihrer Nähe verbunden + </string> <string name="ScriptQuestionCautionChatGranted"> Dem Objekt „[OBJECTNAME]“, ein Objekt von „[OWNERNAME]“, in [REGIONNAME] [REGIONPOS], wurde folgende Berechtigung erteilt: [PERMISSIONS]. </string> @@ -596,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 @@ -660,16 +699,16 @@ Verzeichnis auswählen </string> <string name="AvatarSetNotAway"> - Als anwesend anzeigen + Nicht abwesend </string> <string name="AvatarSetAway"> - Als abwesend anzeigen + Abwesend </string> <string name="AvatarSetNotBusy"> - Als nicht beschäftigt anzeigen + Nicht beschäftigt </string> <string name="AvatarSetBusy"> - Als beschäftigt anzeigen + Beschäftigt </string> <string name="shape"> Form @@ -710,9 +749,51 @@ <string name="skirt"> Rock </string> + <string name="alpha"> + Alpha + </string> + <string name="tattoo"> + Tätowierung + </string> <string name="invalid"> ungültig </string> + <string name="next"> + Weiter + </string> + <string name="ok"> + OK + </string> + <string name="GroupNotifyGroupNotice"> + Gruppenmitteilung + </string> + <string name="GroupNotifyGroupNotices"> + Gruppenmitteilungen + </string> + <string name="GroupNotifySentBy"> + Gesendet von + </string> + <string name="GroupNotifyAttached"> + Im Anhang: + </string> + <string name="GroupNotifyViewPastNotices"> + Alte Mitteilungen anzeigen oder hier Auswahl treffen, um keine Mitteilungen mehr zu erhalten. + </string> + <string name="GroupNotifyOpenAttachment"> + Anlage öffnen + </string> + <string name="GroupNotifySaveAttachment"> + Siehe Anhang + </string> + <string name="TeleportOffer"> + Teleport-Angebot + </string> + <string name="StartUpNotifications"> + Sie haben neue Benachrichtigungen erhalten, während Sie abwesend waren. + </string> + <string name="OverflowInfoChannelString"> + Sie haben noch %d weitere Benachrichtigungen + </string> <string name="BodyPartsRightArm"> Rechter Arm </string> @@ -744,17 +825,54 @@ 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. Versuchen Sie es mit [secondlife:///app/search/groups „Suche"]. + </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> + <string name="no_transfer" value=" (kein Transferieren)"/> + <string name="no_modify" value=" (kein Bearbeiten)"/> + <string name="no_copy" value=" (kein Kopieren)"/> + <string name="worn" value=" (getragen)"/> + <string name="link" value=" (Link)"/> + <string name="broken_link" value=" (unvollständiger_Link)"/> <string name="LoadingContents"> Inhalte werden geladen... </string> <string name="NoContents"> Keine Inhalte </string> + <string name="WornOnAttachmentPoint" value=" (getragen am [ATTACHMENT_POINT])"/> + <string name="PermYes"> + Ja + </string> + <string name="PermNo"> + Nein + </string> + <string name="Chat" value=" Chat:"/> + <string name="Sound" value=" Sound:"/> + <string name="Wait" value=" --- Warten:"/> + <string name="AnimFlagStop" value=" Animation stoppen:"/> + <string name="AnimFlagStart" value=" Animation starten:"/> + <string name="Wave" value=" Winken"/> + <string name="HelloAvatar" value=" Hallo Avatar!"/> + <string name="ViewAllGestures" value=" Alle anzeigen >>"/> + <string name="Animations" value=" Animationen,"/> + <string name="Calling Cards" value=" Visitenkarten,"/> + <string name="Clothing" value=" Kleidung,"/> + <string name="Gestures" value=" Gesten,"/> + <string name="Landmarks" value=" Landmarken,"/> + <string name="Notecards" value=" Notizkarten,"/> + <string name="Objects" value=" Objekte,"/> + <string name="Scripts" value=" Skripts,"/> + <string name="Sounds" value=" Sounds,"/> + <string name="Textures" value=" Texturen,"/> + <string name="Snapshots" value=" Fotos,"/> + <string name="No Filters" value="Nein "/> + <string name="Since Logoff" value=" - Seit Abmeldung"/> <string name="InvFolder My Inventory"> Mein Inventar </string> @@ -861,7 +979,7 @@ Gummi </string> <string name="Light"> - Licht + Hell </string> <string name="KBShift"> Umschalt-Taste @@ -1013,6 +1131,15 @@ <string name="AgeDaysC"> [COUNT] Tage </string> + <string name="GroupMembersA"> + [COUNT] Mitglied + </string> + <string name="GroupMembersB"> + [COUNT] Mitglieder + </string> + <string name="GroupMembersC"> + [COUNT] Mitglieder + </string> <string name="AcctTypeResident"> Einwohner </string> @@ -1124,9 +1251,13 @@ <string name="GroupsNone"> keine </string> + <string name="Group" value=" (Gruppe)"/> <string name="Unknown"> (unbekannt) </string> + <string name="SummaryForTheWeek" value="Zusammenfassung für diese Woche, beginnend am "/> + <string name="NextStipendDay" value="Der nächste Stipendium-Tag ist "/> + <string name="GroupIndividualShare" value=" Gruppenanteil Einzelanteil"/> <string name="Balance"> Kontostand </string> @@ -1158,10 +1289,10 @@ alle Grundstücke gehören [OWNER] </string> <string name="RegionInfoAllEstatesYouOwn"> - alle Grundstücke, die Ihnen gehört haben + alle Grundstücke, die Sie besitzen </string> <string name="RegionInfoAllEstatesYouManage"> - alle Grundstücke, die Sie für [OWNER] verwaltet haben + alle Grundstücke, die Sie für [OWNER] verwalten </string> <string name="RegionInfoAllowedResidents"> Zulässige Einwohner: ([ALLOWEDAGENTS], max [MAXACCESS]) @@ -1169,12 +1300,171 @@ <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="ScriptLimitsRequestNoParcelSelected"> + Keine Parzellen wurden ausgewählt + </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> <string name="PanelDirCountFound"> [COUNT] gefunden </string> + <string name="PanelDirTimeStr"> + [hour12,datetime,slt]:[min,datetime,slt] [ampm,datetime,slt] + </string> + <string name="PanelDirEventsDateText"> + [mthnum,datetime,slt]/[day,datetime,slt] + </string> <string name="PanelContentsNewScript"> Neues Skript </string> @@ -1199,6 +1489,8 @@ <string name="covenant_last_modified"> Zuletzt geändert: </string> + <string name="none_text" value=" (keiner) "/> + <string name="never_text" value=" (nie) "/> <string name="GroupOwned"> In Gruppenbesitz </string> @@ -1211,23 +1503,11 @@ <string name="ClassifiedUpdateAfterPublish"> (wird nach Veröffentlichung aktualisiert) </string> - <string name="GroupVoteYes"> - Ja - </string> - <string name="GroupVoteNo"> - Nein - </string> - <string name="GroupVoteNoActiveProposals"> - Zurzeit sind keine Umfragen aktiv - </string> - <string name="GroupVoteNoArchivedProposals"> - Zurzeit sind keine Umfragen aktiv + <string name="NoPicksClassifiedsText"> + Sie haben keine Auswahl oder Anzeigen erstelllt. Klicken Sie auf die „Plus"-Schaltfläche, um eine Auswahl oder Anzeige zu erstellen. </string> - <string name="GroupVoteRetrievingArchivedProposals"> - Archivierte Umfragen werden geladen - </string> - <string name="GroupVoteRetrievingActiveProposals"> - Aktive Umfragen werden geladen + <string name="PicksClassifiedsLoadingText"> + Wird geladen... </string> <string name="MultiPreviewTitle"> Vorschau @@ -1305,23 +1585,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+ @@ -1360,7 +1652,7 @@ Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh Rechts </string> <string name="Back"> - Zurück + Hinten </string> <string name="North"> Norden @@ -1408,7 +1700,7 @@ Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh Dienstleistungen </string> <string name="Personal"> - Verschiedenes + Sonstiges </string> <string name="None"> Keiner @@ -1423,7 +1715,7 @@ Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh Kunst & Kultur </string> <string name="Business"> - Business + Firmen </string> <string name="Educational"> Bildung @@ -1482,6 +1774,12 @@ Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh <string name="---"> --- </string> + <string name="Multiple Media"> + Mehrere Medien + </string> + <string name="Play Media"> + Medien Abspielen/Pausieren + </string> <string name="MBCmdLineError"> Beim Parsen der Befehlszeile wurde ein Fehler festgestellt. Weitere Informationen: http://wiki.secondlife.com/wiki/Client_parameters (EN) @@ -1513,7 +1811,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. @@ -1554,9 +1852,8 @@ Ausführung erfolgt in Fenster. Beschreibung für Pixelformat nicht verfügbar </string> <string name="MBTrueColorWindow"> - Um [APP_NAME] in einem Fenster auszuführen, ist True Color (32-bit) erforderlich. -Klicken Sie auf Systemsteuerung > Anzeige > Einstellungen und stellen Sie den Bildschirm auf 32-bit Farbe ein. -Wenn Sie die Anwendung im Modus Vollbildschirm ausführen möchten, dann wird [APP_NAME] den Bildschirm automatisch während der Ausführung anpassen. + Um [APP_NAME] auszuführen, ist True Color (32-bit) erforderlich. +Klicken Sie öffnen Sie auf Ihrem Computer die Einstellungen für die Anzeige und stellen Sie den Bildschirm auf 32-bit Farbe ein. </string> <string name="MBAlpha"> [APP_NAME] kann nicht ausgeführt werden, da kein 8-Bit-Alpha-Kanal verfügbar ist. Dies geschieht normalerweise bei Problemen mit dem Treiber der Video-Karte. @@ -1599,39 +1896,15 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Attached Earlobes"> Angewachsene Ohrläppchen </string> - <string name="Back Bangs"> - Nackenhaar - </string> - <string name="Back Bangs Down"> - Lang - </string> - <string name="Back Bangs Up"> - Kurz - </string> <string name="Back Fringe"> Nackenfransen </string> - <string name="Back Hair"> - Hinterkopfhaar - </string> - <string name="Back Hair Down"> - lang - </string> - <string name="Back Hair Up"> - kurz - </string> <string name="Baggy"> Tränensäcke </string> <string name="Bangs"> Pony </string> - <string name="Bangs Down"> - Pony lang - </string> - <string name="Bangs Up"> - Pony kurz - </string> <string name="Beady Eyes"> Knopfaugen </string> @@ -1644,9 +1917,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Big Butt"> Großer Hintern </string> - <string name="Big Eyeball"> - Großer Augapfel - </string> <string name="Big Hair Back"> Volumen: Hinten </string> @@ -1657,7 +1927,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 @@ -1693,13 +1963,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 @@ -1786,7 +2056,7 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Kinn-Hals </string> <string name="Clear"> - Löschen + Transparent </string> <string name="Cleft"> Spalte @@ -1821,9 +2091,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Corner Down"> Nach unten </string> - <string name="Corner Normal"> - Normal - </string> <string name="Corner Up"> Nach oben </string> @@ -1833,9 +2100,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Crooked Nose"> Krumme Nase </string> - <string name="Cropped Hair"> - Kurze Haare - </string> <string name="Cuff Flare"> Hosenaufschlag </string> @@ -1854,15 +2118,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Default Heels"> Standardabsätze </string> - <string name="Default Toe"> - Standardspitze - </string> <string name="Dense"> Dicht </string> - <string name="Dense hair"> - Dichtes Haar - </string> <string name="Double Chin"> Doppelkinn </string> @@ -1908,9 +2166,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Eye Spacing"> Augenstand </string> - <string name="Eyeball Size"> - Größe des Augapfels - </string> <string name="Eyebrow Arc"> Brauenbogen </string> @@ -1935,36 +2190,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Eyeliner Color"> Farbe des Eyeliners </string> - <string name="Eyes Back"> - Augen zurück - </string> <string name="Eyes Bugged"> Glubschaugen </string> - <string name="Eyes Forward"> - Augen nach vorne - </string> - <string name="Eyes Long Head"> - Augen langer Kopf - </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="Eyes Short Head"> - Augen kurzer Kopf - </string> - <string name="Eyes Spread"> - Augen auseinander - </string> - <string name="Eyes Sunken"> - eingesunkene Augen - </string> - <string name="Eyes Together"> - Augen zusammen - </string> <string name="Face Shear"> Gesichtsverzerrung </string> @@ -1974,30 +2202,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Far Set Eyes"> Weit auseinander </string> - <string name="Fat"> - Dick - </string> - <string name="Fat Head"> - Dicker Kopf - </string> <string name="Fat Lips"> Volle Lippen </string> - <string name="Fat Lower"> - Volle Unterlippe - </string> - <string name="Fat Lower Lip"> - Volle Unterlippe - </string> - <string name="Fat Torso"> - Dicker Körper - </string> - <string name="Fat Upper"> - Volle Oberlippe - </string> - <string name="Fat Upper Lip"> - Volle Oberlippe - </string> <string name="Female"> weiblich </string> @@ -2034,24 +2241,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Freckles"> Sommersprossen </string> - <string name="Front Bangs Down"> - Langer Pony - </string> - <string name="Front Bangs Up"> - Kurzer Pony - </string> <string name="Front Fringe"> Fransen, vorne </string> - <string name="Front Hair"> - Vorderhaar - </string> - <string name="Front Hair Down"> - langes Vorderhaar - </string> - <string name="Front Hair Up"> - Kurzes Vorderhaar - </string> <string name="Full Back"> Hinten volles Haar </string> @@ -2134,7 +2326,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 @@ -2167,16 +2359,16 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Farbe Innenseite </string> <string name="In Shdw Opacity"> - Deckkraft: innerer Lidschatten + Deckkraft: innen </string> <string name="Inner Eye Corner"> Ecke: Nasenseite </string> <string name="Inner Eye Shadow"> - Innerer Lidschatten + Innenlid </string> <string name="Inner Shadow"> - Innerer Lidschatten + Innenlid </string> <string name="Jacket Length"> Jackenlänge @@ -2325,9 +2517,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Long arms"> Lange Arme </string> - <string name="Longcuffs"> - Manschetten - </string> <string name="Loose Pants"> Weite Hosen </string> @@ -2419,16 +2608,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 @@ -2490,9 +2679,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="No Eyeshadow"> Kein Lidschatten </string> - <string name="No Heels"> - Keine Absätze - </string> <string name="No Lipgloss"> Kein Lipgloss </string> @@ -2550,9 +2736,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Nostril Width"> Größe </string> - <string name="Old"> - Alt - </string> <string name="Opaque"> Deckend </string> @@ -2578,10 +2761,10 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ Aus </string> <string name="Out Shdw Color"> - Farbe: Oberer Lidschatten + Farbe: Oben </string> <string name="Out Shdw Opacity"> - Deckkraft: Oberer Lidschatten + Deckkraft: Oben </string> <string name="Outer Eye Corner"> Äußerer Augenwinkel @@ -2652,9 +2835,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Pointy Heels"> Pfennigabsätze </string> - <string name="Pointy Toe"> - Spitz - </string> <string name="Ponytail"> Pferdeschwanz </string> @@ -2679,15 +2859,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Red Hair"> Rote Haare </string> - <string name="Red Skin"> - Rote Haut - </string> <string name="Regular"> Normal </string> - <string name="Regular Muscles"> - Normal muskulös - </string> <string name="Right Part"> Scheitel rechts </string> @@ -2697,9 +2871,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Round"> Rund </string> - <string name="Round Forehead"> - Runde Stirn - </string> <string name="Ruddiness"> Röte </string> @@ -2712,24 +2883,12 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Saddle Bags"> Hüftspeck </string> - <string name="Saddlebags"> - Hüftspeck - </string> - <string name="Scrawny"> - Dürr - </string> <string name="Scrawny Leg"> Dürres Bein </string> <string name="Separate"> Auseinander </string> - <string name="Shading"> - Schattierung - </string> - <string name="Shadow hair"> - Schattenhaar - </string> <string name="Shallow"> Flach </string> @@ -2742,15 +2901,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Shear Front"> Vorne rasiert </string> - <string name="Shear Left"> - Links - </string> <string name="Shear Left Up"> Links </string> - <string name="Shear Right"> - Rechts - </string> <string name="Shear Right Up"> Rechts </string> @@ -2779,10 +2932,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 + Klein </string> <string name="Short Arms"> Kurze Arme @@ -2811,15 +2964,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Shoulders"> Schultern </string> - <string name="Side Bangs"> - Seitlicher Pony - </string> - <string name="Side Bangs Down"> - Lang - </string> - <string name="Side Bangs Up"> - Kurz - </string> <string name="Side Fringe"> Seitliche Fransen </string> @@ -2835,9 +2979,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Sides Hair Up"> Kurz </string> - <string name="Skinny"> - Dünn - </string> <string name="Skinny Neck"> Dünner Hals </string> @@ -2875,7 +3016,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 @@ -2886,9 +3027,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Socks Length"> Strumpflänge </string> - <string name="Some"> - Etwas - </string> <string name="Soulpatch"> Unterlippenbart </string> @@ -2907,9 +3045,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Squash Head"> Gestaucht </string> - <string name="Squash/Stretch Head"> - Gestretcht/Gestaucht - </string> <string name="Stretch Head"> Gestreckt </string> @@ -2928,18 +3063,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Sweep Forward"> Nach vorne </string> - <string name="Swept Back"> - Nach hinten - </string> - <string name="Swept Back Hair"> - Haar nach hinten - </string> - <string name="Swept Forward"> - Haare nach vorne - </string> - <string name="Swept Forward Hair"> - Haare nach vorne - </string> <string name="Tall"> Groß </string> @@ -2958,9 +3081,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Thick Toe"> Dick </string> - <string name="Thickness"> - Dicke - </string> <string name="Thin"> Dünn </string> @@ -2991,12 +3111,6 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="Tight Sleeves"> Enge Ärmel </string> - <string name="Tilt Left"> - Nach links - </string> - <string name="Tilt Right"> - Nach rechts - </string> <string name="Toe Shape"> Spitze </string> @@ -3075,6 +3189,33 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="LocationCtrlEditLandmarkTooltip"> Meine Landmarken bearbeiten </string> + <string name="LocationCtrlInfoBtnTooltip"> + Weitere Informationen über die aktuelle Position + </string> + <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> @@ -3105,6 +3246,60 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="UpdaterFailStartTitle"> Viewer konnte nicht gestartet werden </string> + <string name="IM_logging_string"> + -- Instant-Message-Protokoll aktiviert -- + </string> + <string name="IM_typing_start_string"> + [NAME] tippt... + </string> + <string name="Unnamed"> + (Nicht benannt) + </string> + <string name="IM_moderated_chat_label"> + (Moderiert: Stimmen in der Standardeinstellung stummgeschaltet) + </string> + <string name="IM_unavailable_text_label"> + Für diese Verbindung ist kein Text-Chat verfügbar. + </string> + <string name="IM_muted_text_label"> + Ihr Text-Chat wurde von einem Gruppenmoderator deaktiviert. + </string> + <string name="IM_default_text_label"> + Für Instant Message hier klicken. + </string> + <string name="IM_to_label"> + Bis + </string> + <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> @@ -3114,6 +3309,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> @@ -3132,19 +3333,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> diff --git a/indra/newview/skins/default/xui/en/accordion_drag.xml b/indra/newview/skins/default/xui/en/accordion_drag.xml index 94839a7593..e8a705e744 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 ea34bac0a7..e17a0dd351 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/alert_button.xml b/indra/newview/skins/default/xui/en/alert_button.xml index 48c67a3770..632564d793 100644 --- a/indra/newview/skins/default/xui/en/alert_button.xml +++ b/indra/newview/skins/default/xui/en/alert_button.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <button + name="Alert Button" label_shadow="true" auto_resize="false" image_overlay_alignment="center" diff --git a/indra/newview/skins/default/xui/en/favorites_bar_button.xml b/indra/newview/skins/default/xui/en/favorites_bar_button.xml index dcf9847adb..b365040c20 100644 --- a/indra/newview/skins/default/xui/en/favorites_bar_button.xml +++ b/indra/newview/skins/default/xui/en/favorites_bar_button.xml @@ -3,25 +3,24 @@ <!-- All buttons in the Favorites bar will be created from this one --> <button follows="left|bottom" - font_halign="center" halign="center" height="15" image_disabled="transparent.j2c" image_disabled_selected="transparent.j2c" image_selected="transparent.j2c" image_unselected="transparent.j2c" + image_pressed="Favorite_Link_Over" image_hover_selected="Favorite_Link_Over" image_hover_unselected="Favorite_Link_Over" - image_pressed="Favorite_Link_Over" - image_pressed_selected="Favorite_Link_Over" hover_glow_amount="0.15" label_shadow="false" layout="topleft" left="0" name="favorites_bar_btn" - pad_bottom="-1" + pad_bottom="1" pad_left="11" - pad_right="7" + pad_right="9" + scale_image="true" tab_stop="false" top="0" use_ellipses="true" diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml index cb4cbd229a..b9bc45a10b 100644 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml @@ -17,8 +17,9 @@ save_visibility="true" single_instance="true" width="320"> - <string name="nudge_parabuild">Nudge 1</string> - <string name="test_the_vlt">This string is extracted.</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. changes.</string> <chat_history allow_html="true" bg_readonly_color="ChatHistoryBgColor" @@ -34,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_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml index 2ff99dcf5a..bc67621dfd 100644 --- a/indra/newview/skins/default/xui/en/floater_about.xml +++ b/indra/newview/skins/default/xui/en/floater_about.xml @@ -6,7 +6,7 @@ name="floater_about" help_topic="floater_about" save_rect="true" - title="ABOUT [APP_NAME]" + title="ABOUT [CAPITALIZED_APP_NAME]" width="470"> <floater.string name="AboutHeader"> @@ -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]] @@ -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" @@ -112,7 +112,7 @@ Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number 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. -Thank you to the following residents for helping to ensure that this is the best version yet: (in progress) +Thank you to the following Residents for helping to ensure that this is the best version yet: (in progress) diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index cc955369e2..58ea7cec9c 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -110,7 +110,7 @@ </text> <line_editor follows="left|top" - height="16" + height="23" layout="topleft" left_pad="2" max_length="63" @@ -145,7 +145,7 @@ layout="topleft" left="10" name="LandType" - top="84" + top_pad="5" width="100"> Type: </text> @@ -192,7 +192,7 @@ layout="topleft" left="10" name="Owner:" - top="124" + top_pad="5" width="100"> Owner: </text> @@ -202,14 +202,14 @@ follows="left|top" height="16" layout="topleft" - left_pad="5" + left_pad="2" name="OwnerText" width="240"> Leyla Linden </text> <button follows="right" - height="16" + height="23" image_pressed="Info_Press" image_unselected="Info_Over" left_pad="3" @@ -218,7 +218,7 @@ width="16" /> <!-- <button follows="left|top" - height="16" + height="23" label="Profile" layout="topleft" left_pad="4" @@ -232,6 +232,7 @@ layout="topleft" left="10" name="Group:" + top_pad="7" width="100"> Group: </text> @@ -240,13 +241,14 @@ enabled="false" follows="left|top" height="16" - left_pad="5" + left_pad="2" layout="topleft" name="GroupText" - width="240" /> + width="240"> +Leyla Linden </text> <button follows="right" - height="16" + height="23" image_pressed="Info_Press" image_unselected="Info_Over" left_pad="3" @@ -261,16 +263,17 @@ left_pad="4" right="-10" name="Set..." - width="50" /> + width="50" + top_delta="-2"/> <check_box enabled="false" - height="23" + height="16" label="Allow Deed to Group" layout="topleft" - left="96" + left="108" name="check deed" tool_tip="A group officer can deed this land to the group, so it will be supported by the group's land allocation." - top="164" + top_pad="3" width="146" /> <button enabled="false" @@ -282,17 +285,18 @@ right="-10" name="Deed..." tool_tip="You may only deed land if you are an officer in the selected group." - top_delta="0" + top_delta="-2" width="90" /> <check_box enabled="false" height="16" label="Owner Makes Contribution With Deed" layout="topleft" - left="96" + left="108" name="check contrib" tool_tip="When the land is deeded to the group, the former owner contributes enough land allocation to support it." - width="199" /> + width="199" + top_pad="0"/> <text type="string" length="1" @@ -333,7 +337,7 @@ layout="topleft" left_delta="0" name="SalePending" - top_pad="6" + top_pad="5" width="324" /> <button follows="left|top" @@ -343,7 +347,8 @@ left_pad="5" right="-10" name="Sell Land..." - width="145" /> + width="145" + top_delta="-25"/> <text type="string" length="1" @@ -352,7 +357,7 @@ layout="topleft" left_delta="-199" name="For sale to" - top_delta="6" + top_delta="20" width="186"> For sale to: [BUYER] </text> @@ -364,7 +369,7 @@ layout="topleft" left_delta="0" name="Sell with landowners objects in parcel." - top_pad="8" + top_pad="-2" width="186"> Objects included in sale </text> @@ -389,6 +394,7 @@ right="-10" name="Cancel Land Sale" left_pad="5" + top_pad="-25" width="145" /> <text type="string" @@ -422,7 +428,7 @@ layout="topleft" left="10" name="PriceLabel" - top="288" + top_pad="5" width="100"> Area: </text> @@ -470,7 +476,7 @@ layout="topleft" left_delta="82" name="Buy Land..." - top="328" + top_pad="7" width="100" /> <button enabled="true" @@ -480,7 +486,7 @@ layout="topleft" left="10" name="Scripts..." - top="352" + top_pad="1" width="100" /> <button enabled="false" @@ -490,7 +496,7 @@ layout="topleft" right="-10" name="Buy For Group..." - top="352" + top_delta="0" width="180" /> <button enabled="false" @@ -510,7 +516,7 @@ layout="topleft" right="-10" name="Abandon Land..." - top="328" + top_pad="-47" width="180" /> <button follows="left|top" @@ -519,7 +525,7 @@ layout="topleft" left_delta="0" name="Reclaim Land..." - top_delta="-50" + top_delta="-61" width="180" /> <button enabled="false" @@ -530,7 +536,7 @@ left_delta="0" name="Linden Sale..." tool_tip="Land must be owned, set content, and not already for auction." - top_pad="4" + top_pad="2" width="180" /> </panel> <panel @@ -807,7 +813,7 @@ follows="left|top" height="16" layout="topleft" - left_delta="152" + left_delta="190" name="objects_available" top_delta="0" width="260"> @@ -831,7 +837,7 @@ follows="left|top" height="16" layout="topleft" - left_delta="200" + left_delta="190" name="object_contrib_text" top_delta="0" width="212"> @@ -855,7 +861,7 @@ follows="left|top" height="16" layout="topleft" - left_delta="200" + left_delta="190" name="total_objects_text" top_delta="0" width="48"> @@ -865,7 +871,7 @@ type="string" length="1" follows="left|top" - height="16" + height="23" layout="topleft" left="28" name="Owned by parcel owner:" @@ -877,9 +883,9 @@ type="string" length="1" follows="left|top" - height="16" + height="23" layout="topleft" - left_delta="176" + left_delta="172" name="owner_objects_text" top_delta="0" width="48"> @@ -889,33 +895,35 @@ bottom="100" enabled="false" follows="left|top" - height="20" + height="23" label="Show" label_selected="Show" layout="topleft" name="ShowOwner" right="-140" - width="60" /> + width="60" + top_delta="-6"/> <button bottom="100" enabled="false" follows="left|top" - height="20" + height="23" label="Return" layout="topleft" name="ReturnOwner..." right="-10" tool_tip="Return objects to their owners." - width="119" /> + width="119" + top_delta="0"/> <text type="string" length="1" follows="left|top" - height="16" + height="23" layout="topleft" left="28" name="Set to group:" - top="104" + top_pad="5" width="176"> Set to group: </text> @@ -923,9 +931,9 @@ type="string" length="1" follows="left|top" - height="16" + height="23" layout="topleft" - left_delta="176" + left_delta="172" name="group_objects_text" top_delta="0" width="48"> @@ -936,32 +944,34 @@ enabled="false" follows="left|top" label="Show" - height="20" + height="23" label_selected="Show" layout="topleft" name="ShowGroup" right="-140" - width="60" /> + width="60" + top_delta="-6"/> <button bottom="120" enabled="false" follows="left|top" - height="20" + height="23" label="Return" layout="topleft" name="ReturnGroup..." right="-10" tool_tip="Return objects to their owners." - width="119" /> + width="119" + top_delta="0"/> <text type="string" length="1" follows="left|top" - height="16" + height="23" layout="topleft" left="28" name="Owned by others:" - top="124" + top_pad="5" width="176"> Owned by others: </text> @@ -969,9 +979,9 @@ type="string" length="1" follows="left|top" - height="16" + height="23" layout="topleft" - left_delta="176" + left_delta="172" name="other_objects_text" top_delta="0" width="48"> @@ -981,33 +991,35 @@ bottom="140" enabled="false" follows="left|top" - height="20" + height="23" label="Show" label_selected="Show" layout="topleft" name="ShowOther" right="-140" - width="60" /> + width="60" + top_delta="-6"/> <button bottom="140" enabled="false" follows="left|top" - height="20" + height="23" label="Return" layout="topleft" name="ReturnOther..." right="-10" tool_tip="Return objects to their owners." - width="119" /> + width="119" + top_delta="0"/> <text type="string" length="1" follows="left|top" - height="16" + height="23" layout="topleft" left="28" name="Selected / sat upon:" - top="144" + top_pad="5" width="176"> Selected / sat upon: </text> @@ -1015,9 +1027,9 @@ type="string" length="1" follows="left|top" - height="16" + height="23" layout="topleft" - left_delta="176" + left_delta="172" name="selected_objects_text" top_delta="0" width="48"> @@ -1027,51 +1039,53 @@ type="string" length="1" follows="left|top" - height="16" + height="23" layout="topleft" left="10" name="Autoreturn" - top="164" + top_pad="0" width="294"> - Autoreturn other residents' objects (minutes, 0 for off): + Auto return other Residents' objects (minutes, 0 for off): </text> <line_editor border_style="line" border_thickness="1" bottom="180" follows="left|top" - height="16" + height="23" layout="topleft" max_length="6" name="clean other time" - right="-50" - width="56" /> + right="-72" + width="56" + top_delta="-6"/> <text type="string" length="1" follows="left|top" - height="16" + height="23" layout="topleft" left="10" name="Object Owners:" - top="184" + top_pad="10" width="104"> Object Owners: </text> <button follows="top|right" - height="20" + height="23" image_overlay="Refresh_Off" layout="topleft" name="Refresh List" left_pad="5" right="-183" tool_tip="Refresh Object List" - width="20" /> + width="20" + top_delta="-6"/> <button enabled="false" follows="left|top" - height="20" + height="23" label="Return Objects" layout="topleft" left_pad="6" @@ -1083,7 +1097,7 @@ column_padding="0" draw_heading="true" follows="all" - height="190" + height="180" layout="topleft" left="10" name="owner list" @@ -1172,7 +1186,7 @@ Only large parcels can be listed in search. name="allow_label" top="10" width="278"> - Allow other residents to: + Allow other Residents to: </text> <check_box height="16" @@ -1310,7 +1324,7 @@ Only large parcels can be listed in search. width="430" /> <combo_box enabled="false" - height="20" + height="23" layout="topleft" left="30" name="land category with adult" @@ -1371,7 +1385,7 @@ Only large parcels can be listed in search. </combo_box> <combo_box enabled="false" - height="20" + height="23" layout="topleft" left="30" name="land category" @@ -1460,7 +1474,7 @@ Only large parcels can be listed in search. type="string" length="1" follows="left|top" - height="30" + height="16" layout="topleft" left="220" top="180" @@ -1550,12 +1564,13 @@ Only large parcels can be listed in search. Type: </text> <combo_box - height="20" + height="23" layout="topleft" left_pad="0" name="media type" tool_tip="Specify if the URL is a movie, web page, or other media" - width="120" /> + width="120" + top_delta="0"/> <text follows="left|top" height="16" @@ -1571,71 +1586,49 @@ Only large parcels can be listed in search. layout="topleft" left="10" name="at URL:" - width="100"> + width="100" + top_pad="10"> Home Page: </text> <line_editor follows="left|top" - height="20" + height="23" layout="topleft" left_pad="0" max_length="255" name="media_url" select_on_focus="true" - width="300" /> + width="300" + top_delta="0"/> <button follows="right|top" - height="22" + height="23" label="Set" layout="topleft" left_pad="5" - right="-10" name="set_media_url" - width="50" /> - <text - type="string" - length="1" - follows="left|top" - height="20" - layout="topleft" - left="10" - name="CurrentURL:" - width="100"> - Current Page: - </text> - <button - follows="top|right" - height="20" - image_overlay="Refresh_Off" - layout="topleft" - name="reset_media_url" - left_pad="0" - tool_tip="Refresh URL" - width="20" /> - <text - follows="left|top" - height="16" - layout="topleft" - left_pad="10" - name="current_url" - width="300" /> + width="50" + top_delta="0"/> <check_box + follows="top|left" height="16" label="Hide URL" layout="topleft" left="110" name="hide_media_url" tool_tip="Checking this option will hide the media url to any non-authorized viewers of this parcel information. Note this is not available for HTML types." - width="200" /> + width="50" + top_pad="5"/> <text type="string" length="1" follows="left|top" - height="16" + height="23" layout="topleft" left="10" name="Description:" - width="364"> + width="364" + top_pad="10"> Description: </text> <line_editor @@ -1647,7 +1640,7 @@ Only large parcels can be listed in search. name="url_description" select_on_focus="true" tool_tip="Text displayed next to play/load button" - top_delta="10" + top_delta="0" width="300" /> <text type="string" @@ -1671,7 +1664,7 @@ Only large parcels can be listed in search. left="110" name="media texture" tool_tip="Click to choose a picture" - top_delta="10" + top_delta="0" width="64" /> <text type="string" @@ -1682,16 +1675,17 @@ Only large parcels can be listed in search. left_pad="8" name="replace_texture_help" width="300" - word_wrap="true"> + word_wrap="true" + top_delta="0"> Objects using this texture will show the movie or web page after you click the play arrow. Select the thumbnail to choose a different texture. </text> <check_box height="16" label="Auto scale" layout="topleft" - left="110" + left="107" name="media_auto_scale" - top_pad="0" + top_pad="-10" tool_tip="Checking this option will scale the content for this parcel automatically. It may be slightly slower and lower quality visually but no other texture scaling or alignment will be required." width="200" /> <text @@ -1703,7 +1697,8 @@ Only large parcels can be listed in search. left="10" name="media_size" tool_tip="Size to render Web media, leave 0 for default." - width="100"> + width="100" + top_pad="10"> Size: </text> <spinner @@ -1711,7 +1706,7 @@ Only large parcels can be listed in search. enabled="false" follows="left|top" halign="right" - height="20" + height="23" increment="1" initial_value="0" layout="topleft" @@ -1726,7 +1721,7 @@ Only large parcels can be listed in search. enabled="false" follows="left|top" halign="right" - height="20" + height="23" increment="1" initial_value="0" layout="topleft" @@ -1756,7 +1751,7 @@ Only large parcels can be listed in search. layout="topleft" left="10" name="Options:" - top_pad="8" + top_pad="10" width="100"> Options: </text> @@ -1764,10 +1759,10 @@ Only large parcels can be listed in search. height="16" label="Loop" layout="topleft" - left_pad="0" + left_pad="-3" name="media_loop" tool_tip="Play media in a loop. When the media has finished playing, it will restart from the beginning." - top_delta="0" + top_delta="-1" width="200" /> </panel> <panel @@ -1793,14 +1788,23 @@ Only large parcels can be listed in search. </text> <line_editor follows="left|top" - height="20" + height="23" layout="topleft" left="100" max_length="255" name="music_url" - top_pad="0" + top_delta="0" right="-15" select_on_focus="true" /> + <check_box + height="16" + label="Hide URL" + layout="topleft" + name="hide_music_url" + tool_tip="Checking this option will hide the music url to any non-authorized viewers of this parcel information." + left_delta="10" + top_pad="5" + width="292" /> <text type="string" length="1" @@ -1847,13 +1851,14 @@ Only large parcels can be listed in search. layout="topleft" left="110" name="parcel_enable_voice_channel_is_estate_disabled" + top_delta="0" width="300" /> <check_box height="16" label="Restrict Voice to this parcel" layout="topleft" left="110" - name="parcel_enable_voice_channel_parcel" + name="parcel_enable_voice_channel_local" width="300" /> </panel> <panel @@ -1914,7 +1919,7 @@ Only large parcels can be listed in search. layout="topleft" left_delta="0" name="limit_payment" - tool_tip="Ban unidentified residents." + tool_tip="Ban unidentified Residents." top_pad="4" width="278" /> <check_box @@ -1924,7 +1929,7 @@ Only large parcels can be listed in search. layout="topleft" left_delta="0" name="limit_age_verified" - tool_tip="Ban residents who have not verified their age. See the [SUPPORT_SITE] for more information." + tool_tip="Ban Residents who have not verified their age. See the [SUPPORT_SITE] for more information." top_pad="4" width="278" /> <check_box @@ -1938,7 +1943,7 @@ Only large parcels can be listed in search. width="278" /> <check_box enabled="false" - height="22" + height="16" label="Sell passes to:" layout="topleft" left_delta="0" @@ -1947,7 +1952,7 @@ Only large parcels can be listed in search. top_pad="4" width="120" /> <combo_box - height="20" + height="23" layout="topleft" left_pad="22" name="pass_combo" @@ -1965,7 +1970,7 @@ Only large parcels can be listed in search. <spinner enabled="false" follows="left|top" - height="22" + height="23" increment="1" initial_value="10" label="Price in L$:" @@ -1980,7 +1985,7 @@ Only large parcels can be listed in search. <spinner enabled="false" follows="left|top" - height="22" + height="23" increment="0.25" initial_value="1" label="Hours of access:" @@ -2022,7 +2027,7 @@ Only large parcels can be listed in search. multi_select="true" name="AccessList" tool_tip="([LISTED] listed, [MAX] max)" - width="240" /> + width="230" /> <button follows="bottom" height="23" @@ -2047,7 +2052,7 @@ Only large parcels can be listed in search. follows="top|right" height="170" width="240" - left_pad="8"> + left_pad="2"> <text type="string" length="1" @@ -2071,7 +2076,7 @@ Only large parcels can be listed in search. multi_select="true" name="BannedList" tool_tip="([LISTED] listed, [MAX] max)" - width="240" /> + width="230" /> <button follows="bottom" height="23" 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 4f4288b654..1ffedde29b 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" diff --git a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml index 953bd08dd4..f59badfcb4 100644 --- a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml @@ -47,7 +47,7 @@ label="Search" layout="topleft" left="6" - help_topic="avatarpicker_search_tab" + help_topic="avatarpicker" name="SearchPanel" top="150" width="132"> @@ -98,7 +98,7 @@ label="Friends" layout="topleft" left="6" - help_topic="avatarpicker_friends_tab" + help_topic="avatarpicker" name="FriendsPanel" top="150" width="132"> @@ -144,7 +144,7 @@ label="Near Me" layout="topleft" left="6" - help_topic="avatarpicker_near_me_tab" + help_topic="avatarpicker" name="NearMePanel" top="150" width="132"> diff --git a/indra/newview/skins/default/xui/en/floater_beacons.xml b/indra/newview/skins/default/xui/en/floater_beacons.xml index c8f6c613af..4fc2b698d8 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" > diff --git a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml index 53ae24fe3f..d007ceff98 100644 --- a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml @@ -287,7 +287,7 @@ <button follows="left|top" height="23" - label="Ok" + label="OK" layout="topleft" left="65" name="apply" 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 26b003cafe..961bd6b5e4 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml @@ -107,13 +107,14 @@ height="16" layout="topleft" top_delta="0" - left="242" + left="217" name="currency_label" width="15"> L$ </text> <line_editor type="string" + max_length="10" halign="right" font="SansSerifMedium" select_on_focus="true" @@ -123,7 +124,7 @@ label="L$" left_pad="3" name="currency_amt" - width="60"> + width="85"> 1234 </line_editor> <text @@ -177,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] @@ -222,7 +223,7 @@ width="300" height="30" name="currency_links"> - [http://www.secondlife.com/ payment method] | [http://www.secondlife.com/ currency] | [http://www.secondlife.com/my/account/exchange_rates.php 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 type="string" @@ -304,7 +305,7 @@ Re-enter amount to see the latest exchange rate. </text> <text type="string" - width="175" + width="176" height="125" top="60" left="165" diff --git a/indra/newview/skins/default/xui/en/floater_buy_land.xml b/indra/newview/skins/default/xui/en/floater_buy_land.xml index 6e0c3dfe54..98508e5113 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_land.xml @@ -172,6 +172,15 @@ supports [AMOUNT2] objects name="no_parcel_selected"> (no parcel selected) </floater.string> + <floater.string + name="icon_PG" + value="Parcel_PG_Dark"/> + <floater.string + name="icon_M" + value="Parcel_M_Dark"/> + <floater.string + name="icon_R" + value="Parcel_R_Dark"/> <text type="string" length="1" @@ -195,9 +204,17 @@ supports [AMOUNT2] objects left_delta="110" name="region_name_text" top_delta="0" - width="175"> + use_ellipses="true" + width="155"> (unknown) </text> + <icon + follows="left|top" + height="16" + layout="topleft" + name="rating_icon" + top_delta="-2" + width="18"/> <text type="string" length="1" diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml index a797d54749..b45e39a111 100644 --- a/indra/newview/skins/default/xui/en/floater_camera.xml +++ b/indra/newview/skins/default/xui/en/floater_camera.xml @@ -12,6 +12,7 @@ help_topic="camera_floater" save_rect="true" save_visibility="true" + save_dock_state="true" single_instance="true" width="150"> <floater.string @@ -26,6 +27,22 @@ name="move_tooltip"> Move Camera Up and Down, Left and Right </floater.string> + <floater.string + name="orbit_mode_title"> + Orbit + </floater.string> + <floater.string + name="pan_mode_title"> + Pan + </floater.string> + <floater.string + name="avatar_view_mode_title"> + Presets + </floater.string> + <floater.string + name="free_mode_title"> + View Object + </floater.string> <panel border="false" height="110" @@ -82,6 +99,8 @@ orientation="vertical" tool_tip="Zoom camera toward focus" top_pad="0" + min_val="0" + max_val="1" width="18"> <commit_callback function="Slider.value_changed"/> </slider_bar> @@ -129,6 +148,7 @@ height="40" image_selected="Cam_Preset_Back_On" image_unselected="Cam_Preset_Back_Off" + is_toggle="true" layout="topleft" left="0" name="rear_view" @@ -143,6 +163,7 @@ height="40" image_selected="Cam_Preset_Side_On" image_unselected="Cam_Preset_Side_Off" + is_toggle="true" layout="topleft" left_pad="5" name="group_view" @@ -157,6 +178,7 @@ height="40" image_selected="Cam_Preset_Front_On" image_unselected="Cam_Preset_Front_Off" + is_toggle="true" layout="topleft" left="0" name="front_view" @@ -171,6 +193,7 @@ height="40" image_selected="Cam_Preset_Eye_Off" image_unselected="Cam_Preset_Eye_Off" + is_toggle="true" layout="topleft" left_pad="5" name="mouselook_view" @@ -225,7 +248,7 @@ image_selected="PushButton_Selected_Press" name="avatarview_btn" tab_stop="false" - tool_tip="See as avatar" + tool_tip="Presets" width="25"> </button> <button 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 4380ff8f4b..2fa112af8c 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,24 +159,24 @@ 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" image_unselected="eye_button_inactive.tga" layout="topleft" left_pad="50" - name="Pipette" + name="color_pipette" width="28" /> <button follows="right|bottom" - height="20" - label="Ok" - label_selected="Ok" + height="23" + label="OK" + label_selected="OK" layout="topleft" right="-120" top_delta="9" @@ -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/floater_customize.xml b/indra/newview/skins/default/xui/en/floater_customize.xml index 94686f0bb0..fd10938539 100644 --- a/indra/newview/skins/default/xui/en/floater_customize.xml +++ b/indra/newview/skins/default/xui/en/floater_customize.xml @@ -3,7 +3,7 @@ legacy_header_height="18" can_minimize="false" follows="left|top" - height="607" + height="583" layout="topleft" left_delta="-3" name="floater customize" @@ -12,16 +12,6 @@ title="APPEARANCE" top_delta="-185" width="524"> - <check_box - enabled="true" - height="23" - label="Show Attachments in Previews" - layout="topleft" - left="110" - name="show attachments" - tool_tip="Display attachments on your avatar in the preview panels below." - top="20" - width="146" /> <tab_container height="517" layout="topleft" @@ -30,7 +20,7 @@ tab_min_width="96" tab_position="left" tab_height="50" - top="50" + top="26" width="506"> <text type="string" @@ -194,7 +184,6 @@ layout="topleft" name="radio2" value="1" - top="32" width="82" /> </radio_group> <text @@ -270,10 +259,9 @@ left="10" name="not worn instructions" top="31" + word_wrap="true" width="373"> - Put on a new shape by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on a new shape by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> <text type="string" @@ -281,9 +269,10 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> @@ -297,7 +286,7 @@ scratch and wear it. height="23" layout="topleft" name="Item Action Label" - right="132" + right="90" width="100"> Shape: </text> @@ -310,7 +299,7 @@ scratch and wear it. left="10" name="Create New" top="104" - width="140" /> + width="160" /> <button follows="right|bottom" height="23" @@ -318,7 +307,7 @@ scratch and wear it. label_selected="Save" layout="topleft" name="Save" - right="218" + right="190" top="477" width="82" /> <button @@ -330,7 +319,7 @@ scratch and wear it. name="Save As" top="477" right="304" - width="82" /> + width="110" /> </panel> <panel border="false" @@ -473,10 +462,9 @@ scratch and wear it. left="10" name="not worn instructions" top="31" + word_wrap="true" width="373"> - Put on a new skin by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on a new skin by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> <text type="string" @@ -484,9 +472,10 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> @@ -552,7 +541,7 @@ scratch and wear it. left_delta="0" name="Create New" top_delta="-249" - width="120" /> + width="160" /> <button follows="right|bottom" height="23" @@ -723,10 +712,9 @@ scratch and wear it. left="10" name="not worn instructions" top="31" + word_wrap="true" width="373"> - Put on a new hair by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on a new hair by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> <text type="string" @@ -734,9 +722,10 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> @@ -775,7 +764,7 @@ scratch and wear it. left_delta="0" name="Create New" top_delta="-89" - width="120" /> + width="160" /> <button follows="right|bottom" height="23" @@ -808,16 +797,16 @@ scratch and wear it. width="82" /> </panel> <panel - border="true" + border="false" + background_visible="true" + bg_alpha_color="DkGray2" follows="left|top|right|bottom" - height="481" + height="508" label="Eyes" layout="topleft" - left_delta="0" name="Eyes" help_topic="customize_eyes_tab" - top_delta="0" - width="389"> + width="400"> <icon follows="top|right" height="18" @@ -830,10 +819,10 @@ scratch and wear it. width="18" /> <icon height="16" + top="10" + left="10" layout="topleft" - left_delta="-325" mouse_opaque="true" - top_delta="3" width="16" /> <text type="string" @@ -842,9 +831,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_pad="2" + left="31" name="title" - top_delta="0" + top="10" width="355"> [DESC] </text> @@ -855,9 +844,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_no_modify" - top_delta="0" + top="10" width="355"> [DESC]: cannot modify </text> @@ -868,9 +857,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_loading" - top_delta="0" + top="10" width="355"> [DESC]: loading... </text> @@ -881,21 +870,21 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_not_worn" - top_delta="0" + top="10" width="355"> [DESC]: not worn </text> <text type="string" length="1" - follows="left|top|right" - height="14" + follows="left|top" + height="16" layout="topleft" - left="8" + left="10" name="path" - top="24" + top="36" width="373"> Located in [PATH] </text> @@ -905,13 +894,12 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="not worn instructions" - top_pad="8" + top="31" + word_wrap="true" width="373"> - Put on a new eyes by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on a new set of eyes by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> <text type="string" @@ -919,23 +907,24 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> <text type="string" length="1" - bottom="486" - follows="left|top|right" + bottom="4" + follows="left|bottom|right" font="SansSerif" halign="right" - height="28" - layout="topleft" + height="23" + layout="bottomleft" name="Item Action Label" - right="117" + right="132" width="100"> Eyes: </text> @@ -943,33 +932,32 @@ scratch and wear it. can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" + height="108" label="Iris" layout="topleft" - left="8" + left="10" name="Iris" tool_tip="Click to choose a picture" - top="65" - width="64" /> + top="66" + width="82" /> <button follows="left|top" height="23" label="Create New Eyes" label_selected="Create New Eyes" layout="topleft" - left_delta="0" name="Create New" - top_delta="39" - width="120" /> + top="66" + width="160" /> <button follows="right|bottom" height="23" label="Save" label_selected="Save" layout="topleft" - left="123" + right="218" name="Save" - top="458" + top="477" width="82" /> <button follows="right|bottom" @@ -977,9 +965,9 @@ scratch and wear it. label="Save As..." label_selected="Save As..." layout="topleft" - left_pad="6" + right="304" name="Save As" - top_delta="0" + top="477" width="82" /> <button follows="right|bottom" @@ -987,9 +975,9 @@ scratch and wear it. label="Revert" label_selected="Revert" layout="topleft" - left_pad="6" + right="390" name="Revert" - top_delta="0" + top="477" width="82" /> </panel> <text @@ -1007,85 +995,83 @@ scratch and wear it. </text> <placeholder /> <panel - border="true" + border="false" + background_visible="true" + bg_alpha_color="DkGray2" follows="left|top|right|bottom" - height="481" + height="508" label="Shirt" layout="topleft" - left_delta="0" name="Shirt" help_topic="customize_shirt_tab" top_delta="0" - width="389"> + width="400"> <icon - follows="top|right" + follows="top|left" height="18" image_name="Lock" layout="topleft" - left="315" + left="10" mouse_opaque="true" name="square" - top="4" + top="10" width="18" /> <icon height="16" + top="10" + left="10" layout="topleft" - left="8" mouse_opaque="true" - top_delta="3" width="16" /> <texture_picker can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" + height="108" label="Fabric" layout="topleft" - left_delta="0" + left="10" name="Fabric" tool_tip="Click to choose a picture" - top_pad="41" - width="64" /> + top="66" + width="82" /> <color_swatch can_apply_immediately="true" follows="left|top" - height="80" + height="108" label="Color/Tint" layout="topleft" - left_delta="0" name="Color/Tint" tool_tip="Click to open color picker" - top_delta="80" - width="64" /> - <button - follows="left|top" - height="23" - label="Create New Shirt" - label_selected="Create New Shirt" - layout="topleft" - left_delta="0" - name="Create New" - top_delta="-41" - width="120" /> + top_delta="102" + width="82" /> <button follows="left|top" height="23" label="Take Off" label_selected="Take Off" layout="topleft" - left_delta="0" name="Take Off" - top_pad="102" + top_pad="4" width="82" /> <button + follows="left|top" + height="23" + label="Create New Shirt" + label_selected="Create New Shirt" + layout="topleft" + name="Create New" + top="66" + width="160" /> + <button follows="right|bottom" height="23" label="Save" label_selected="Save" layout="topleft" - left="123" + right="218" name="Save" - top="458" + top="477" width="82" /> <button follows="right|bottom" @@ -1093,9 +1079,9 @@ scratch and wear it. label="Save As..." label_selected="Save As..." layout="topleft" - left_pad="6" + right="304" name="Save As" - top_delta="0" + top="477" width="82" /> <button follows="right|bottom" @@ -1103,9 +1089,9 @@ scratch and wear it. label="Revert" label_selected="Revert" layout="topleft" - left_pad="6" + right="390" name="Revert" - top_delta="0" + top="477" width="82" /> <text type="string" @@ -1114,9 +1100,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left="8" + left="31" name="title" - top="8" + top="10" width="355"> [DESC] </text> @@ -1127,9 +1113,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_no_modify" - top_delta="0" + top="10" width="355"> [DESC]: cannot modify </text> @@ -1140,9 +1126,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_loading" - top_delta="0" + top="10" width="355"> [DESC]: loading... </text> @@ -1153,21 +1139,21 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_not_worn" - top_delta="0" + top="10" width="355"> [DESC]: not worn </text> <text type="string" length="1" - follows="left|top|right" - height="14" + follows="left|top" + height="16" layout="topleft" - left="8" + left="10" name="path" - top="24" + top="36" width="373"> Located in [PATH] </text> @@ -1177,13 +1163,12 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="not worn instructions" - top_pad="8" + top="31" + word_wrap="true" width="373"> - Put on a new shirt by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on a new shirt by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> <text type="string" @@ -1191,107 +1176,105 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> <text type="string" length="1" - bottom="486" - follows="left|top|right" + bottom="4" + follows="left|bottom|right" font="SansSerif" halign="right" - height="28" - layout="topleft" + height="23" + layout="bottomleft" name="Item Action Label" - right="117" + right="132" width="100"> Shirt: </text> </panel> <panel - border="true" + border="false" + background_visible="true" + bg_alpha_color="DkGray2" follows="left|top|right|bottom" - height="481" + height="508" label="Pants" layout="topleft" - left_delta="0" name="Pants" help_topic="customize_pants_tab" - top_delta="0" - width="389"> + width="400"> <icon - follows="top|right" + follows="top|left" height="18" image_name="Lock" layout="topleft" - left="315" + left="10" mouse_opaque="true" name="square" - top="4" + top="10" width="18" /> <icon height="16" layout="topleft" - left="8" + left="10" mouse_opaque="true" - top_delta="3" + top="10" width="16" /> <texture_picker can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" + height="108" label="Fabric" layout="topleft" - left_delta="0" + left="10" name="Fabric" tool_tip="Click to choose a picture" - top_pad="41" - width="64" /> + top="66" + width="82" /> <color_swatch can_apply_immediately="true" follows="left|top" - height="80" + height="108" label="Color/Tint" layout="topleft" - left_delta="0" name="Color/Tint" tool_tip="Click to open color picker" - top_delta="80" - width="64" /> - <button - follows="left|top" - height="23" - label="Create New Pants" - label_selected="Create New Pants" - layout="topleft" - left_delta="0" - name="Create New" - top_delta="-41" - width="120" /> + top_delta="102" + width="82" /> <button follows="left|top" height="23" label="Take Off" label_selected="Take Off" layout="topleft" - left_delta="0" name="Take Off" - top_pad="102" + top_pad="4" width="82" /> <button + follows="left|top" + height="23" + label="Create New Pants" + label_selected="Create New Pants" + layout="topleft" + name="Create New" + top="66" + width="160" /> + <button follows="right|bottom" height="23" label="Save" label_selected="Save" layout="topleft" - left="123" + right="218" name="Save" - top="458" + top="477" width="82" /> <button follows="right|bottom" @@ -1299,9 +1282,9 @@ scratch and wear it. label="Save As..." label_selected="Save As..." layout="topleft" - left_pad="6" + right="304" name="Save As" - top_delta="0" + top="477" width="82" /> <button follows="right|bottom" @@ -1309,9 +1292,9 @@ scratch and wear it. label="Revert" label_selected="Revert" layout="topleft" - left_pad="6" + right="390" name="Revert" - top_delta="0" + top="477" width="82" /> <text type="string" @@ -1320,9 +1303,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left="8" + left="31" name="title" - top="8" + top="10" width="355"> [DESC] </text> @@ -1333,9 +1316,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_no_modify" - top_delta="0" + top="10" width="355"> [DESC]: cannot modify </text> @@ -1346,9 +1329,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_loading" - top_delta="0" + top="10" width="355"> [DESC]: loading... </text> @@ -1359,9 +1342,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_not_worn" - top_delta="0" + top="10" width="355"> [DESC]: not worn </text> @@ -1371,9 +1354,9 @@ scratch and wear it. follows="left|top|right" height="14" layout="topleft" - left="8" + left="10" name="path" - top="24" + top="36" width="373"> Located in [PATH] </text> @@ -1383,13 +1366,12 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="not worn instructions" - top_pad="8" + top="31" + word_wrap="true" width="373"> - Put on a new pants by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on new pants by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> <text type="string" @@ -1397,54 +1379,55 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> <text type="string" length="1" - bottom="486" - follows="left|top|right" + bottom="4" + follows="left|bottom|right" font="SansSerif" halign="right" - height="28" - layout="topleft" + height="23" + layout="bottomleft" name="Item Action Label" - right="117" + right="132" width="100"> Pants: </text> </panel> <panel - border="true" + border="false" + background_visible="true" + bg_alpha_color="DkGray2" follows="left|top|right|bottom" - height="481" + height="508" label="Shoes" layout="topleft" - left_delta="0" name="Shoes" help_topic="customize_shoes_tab" - top_delta="0" - width="389"> + width="400"> <icon - follows="top|right" + follows="top|left" height="18" image_name="Lock" layout="topleft" - left="315" + left="10" mouse_opaque="true" name="square" - top="4" + top="10" width="18" /> <icon height="16" layout="topleft" - left_delta="-325" + left="10" mouse_opaque="true" - top_delta="3" + top="10" width="16" /> <text type="string" @@ -1453,9 +1436,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_pad="2" + left="31" name="title" - top_delta="0" + top="10" width="355"> [DESC] </text> @@ -1466,9 +1449,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_no_modify" - top_delta="0" + top="10" width="355"> [DESC]: cannot modify </text> @@ -1479,9 +1462,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_loading" - top_delta="0" + top="10" width="355"> [DESC]: loading... </text> @@ -1492,9 +1475,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_not_worn" - top_delta="0" + top="10" width="355"> [DESC]: not worn </text> @@ -1504,9 +1487,9 @@ scratch and wear it. follows="left|top|right" height="14" layout="topleft" - left="8" + left="10" name="path" - top="24" + top="36" width="373"> Located in [PATH] </text> @@ -1516,37 +1499,46 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="not worn instructions" - top_pad="8" + top="31" + word_wrap="true" width="373"> - Put on a new shoes by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on a new pair of shoes by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> + <button + follows="left|top" + height="23" + label="Create New Shoes" + label_selected="Create New Shoes" + layout="topleft" + name="Create New" + top_pad="18" + width="160" /> <text type="string" length="1" follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> <text type="string" length="1" - bottom="486" - follows="left|top|right" + bottom="4" + follows="left|bottom|right" font="SansSerif" halign="right" - height="28" - layout="topleft" + height="23" + layout="bottomleft" name="Item Action Label" - right="117" + right="132" width="100"> Shoes: </text> @@ -1554,44 +1546,32 @@ scratch and wear it. can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" + height="108" label="Fabric" layout="topleft" - left="8" + left="10" name="Fabric" tool_tip="Click to choose a picture" - top="65" - width="64" /> + top="66" + width="82" /> <color_swatch can_apply_immediately="true" follows="left|top" - height="80" + height="108" label="Color/Tint" layout="topleft" - left_delta="0" name="Color/Tint" tool_tip="Click to open color picker" - top_delta="80" - width="64" /> - <button - follows="left|top" - height="23" - label="Create New Shoes" - label_selected="Create New Shoes" - layout="topleft" - left_delta="0" - name="Create New" - top_delta="-41" - width="120" /> + top_delta="102" + width="82" /> <button follows="left|top" height="23" label="Take Off" label_selected="Take Off" layout="topleft" - left_delta="0" name="Take Off" - top_pad="102" + top_pad="4" width="82" /> <button follows="right|bottom" @@ -1599,9 +1579,9 @@ scratch and wear it. label="Save" label_selected="Save" layout="topleft" - left="123" + right="218" name="Save" - top="458" + top="477" width="82" /> <button follows="right|bottom" @@ -1609,9 +1589,9 @@ scratch and wear it. label="Save As..." label_selected="Save As..." layout="topleft" - left_pad="6" + right="304" name="Save As" - top_delta="0" + top="477" width="82" /> <button follows="right|bottom" @@ -1619,38 +1599,38 @@ scratch and wear it. label="Revert" label_selected="Revert" layout="topleft" - left_pad="6" + right="390" name="Revert" - top_delta="0" + top="477" width="82" /> </panel> <panel - border="true" + border="false" + background_visible="true" + bg_alpha_color="DkGray2" follows="left|top|right|bottom" - height="481" + height="508" label="Socks" layout="topleft" - left_delta="0" name="Socks" help_topic="customize_socks_tab" - top_delta="0" - width="389"> + width="400"> <icon - follows="top|right" + follows="top|left" height="18" image_name="Lock" layout="topleft" - left="315" + left="10" mouse_opaque="true" name="square" - top="4" + top="10" width="18" /> <icon height="16" layout="topleft" - left_delta="-325" + left="10" mouse_opaque="true" - top_delta="3" + top="10" width="16" /> <text type="string" @@ -1659,9 +1639,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_pad="2" + left="31" name="title" - top_delta="0" + top="10" width="355"> [DESC] </text> @@ -1672,9 +1652,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_no_modify" - top_delta="0" + top="10" width="355"> [DESC]: cannot modify </text> @@ -1685,9 +1665,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_loading" - top_delta="0" + top="10" width="355"> [DESC]: loading... </text> @@ -1698,9 +1678,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_not_worn" - top_delta="0" + top="10" width="355"> [DESC]: not worn </text> @@ -1710,9 +1690,9 @@ scratch and wear it. follows="left|top|right" height="14" layout="topleft" - left="8" + left="10" name="path" - top="24" + top="36" width="373"> Located in [PATH] </text> @@ -1722,37 +1702,46 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="not worn instructions" - top_pad="8" + top="31" + word_wrap="true" width="373"> - Put on a new socks by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on new socks by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> + <button + follows="left|top" + height="23" + label="Create New Socks" + label_selected="Create New Socks" + layout="topleft" + name="Create New" + top_pad="7" + width="160" /> <text type="string" length="1" follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> <text type="string" length="1" - bottom="486" - follows="left|top|right" + bottom="4" + follows="left|bottom|right" font="SansSerif" halign="right" - height="28" - layout="topleft" + height="23" + layout="bottomleft" name="Item Action Label" - right="117" + right="132" width="100"> Socks: </text> @@ -1760,44 +1749,32 @@ scratch and wear it. can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" + height="108" label="Fabric" layout="topleft" - left="8" + left="10" name="Fabric" tool_tip="Click to choose a picture" - top="65" - width="64" /> + top="66" + width="82" /> <color_swatch can_apply_immediately="true" follows="left|top" - height="80" + height="108" label="Color/Tint" layout="topleft" - left_delta="0" name="Color/Tint" tool_tip="Click to open color picker" - top_delta="80" - width="64" /> - <button - follows="left|top" - height="23" - label="Create New Socks" - label_selected="Create New Socks" - layout="topleft" - left_delta="0" - name="Create New" - top_delta="-41" - width="120" /> + top_delta="102" + width="82" /> <button follows="left|top" height="23" label="Take Off" label_selected="Take Off" layout="topleft" - left_delta="0" name="Take Off" - top_pad="102" + top_pad="4" width="82" /> <button follows="right|bottom" @@ -1805,9 +1782,9 @@ scratch and wear it. label="Save" label_selected="Save" layout="topleft" - left="123" + right="218" name="Save" - top="458" + top="477" width="82" /> <button follows="right|bottom" @@ -1815,9 +1792,9 @@ scratch and wear it. label="Save As..." label_selected="Save As..." layout="topleft" - left_pad="6" + right="304" name="Save As" - top_delta="0" + top="477" width="82" /> <button follows="right|bottom" @@ -1825,38 +1802,38 @@ scratch and wear it. label="Revert" label_selected="Revert" layout="topleft" - left_pad="6" + right="390" name="Revert" - top_delta="0" + top="477" width="82" /> </panel> <panel - border="true" + border="false" + background_visible="true" + bg_alpha_color="DkGray2" follows="left|top|right|bottom" - height="481" + height="508" label="Jacket" layout="topleft" - left_delta="0" name="Jacket" help_topic="customize_jacket_tab" - top_delta="0" - width="389"> + width="400"> <icon - follows="top|right" + follows="top|left" height="18" image_name="Lock" layout="topleft" - left="315" + left="10" mouse_opaque="true" name="square" - top="4" + top="10" width="18" /> <icon height="16" layout="topleft" - left_delta="-325" + left="10" mouse_opaque="true" - top_delta="3" + top="10" width="16" /> <text type="string" @@ -1865,9 +1842,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_pad="2" + left="31" name="title" - top_delta="0" + top="10" width="355"> [DESC] </text> @@ -1878,9 +1855,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_no_modify" - top_delta="0" + top="10" width="355"> [DESC]: cannot modify </text> @@ -1891,9 +1868,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_loading" - top_delta="0" + top="10" width="355"> [DESC]: loading... </text> @@ -1904,9 +1881,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_not_worn" - top_delta="0" + top="10" width="355"> [DESC]: not worn </text> @@ -1916,9 +1893,9 @@ scratch and wear it. follows="left|top|right" height="14" layout="topleft" - left="8" + left="10" name="path" - top="24" + top="36" width="373"> Located in [PATH] </text> @@ -1928,37 +1905,46 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="not worn instructions" - top_pad="8" + top="31" + word_wrap="true" width="373"> - Put on a new jacket by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on a new jacket by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> + <button + follows="left|top" + height="23" + label="Create New Jacket" + label_selected="Create New Jacket" + layout="topleft" + name="Create New" + top_pad="7" + width="160" /> <text type="string" length="1" follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> <text type="string" length="1" - bottom="486" - follows="left|top|right" + bottom="4" + follows="left|bottom|right" font="SansSerif" halign="right" - height="28" - layout="topleft" + height="23" + layout="bottomleft" name="Item Action Label" - right="117" + right="132" width="100"> Jacket: </text> @@ -1966,56 +1952,43 @@ scratch and wear it. can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" + height="108" label="Upper Fabric" layout="topleft" - left="8" + left="10" name="Upper Fabric" tool_tip="Click to choose a picture" - top="65" - width="64" /> + top="66" + width="82" /> <texture_picker can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" + height="108" label="Lower Fabric" layout="topleft" - left_delta="0" name="Lower Fabric" tool_tip="Click to choose a picture" - top_delta="80" - width="64" /> + top_delta="102" + width="82" /> <color_swatch can_apply_immediately="true" follows="left|top" - height="80" + height="108" label="Color/Tint" layout="topleft" - left_delta="0" name="Color/Tint" tool_tip="Click to open color picker" - top_delta="80" - width="64" /> - <button - follows="left|top" - height="23" - label="Create New Jacket" - label_selected="Create New Jacket" - layout="topleft" - left_delta="0" - name="Create New" - top_delta="-121" - width="140" /> + top_delta="102" + width="82" /> <button follows="left|top" height="23" label="Take Off" label_selected="Take Off" layout="topleft" - left_delta="0" name="Take Off" - top_pad="182" + top_pad="4" width="82" /> <button follows="right|bottom" @@ -2023,9 +1996,9 @@ scratch and wear it. label="Save" label_selected="Save" layout="topleft" - left="123" + right="218" name="Save" - top="458" + top="477" width="82" /> <button follows="right|bottom" @@ -2033,9 +2006,9 @@ scratch and wear it. label="Save As..." label_selected="Save As..." layout="topleft" - left_pad="6" + right="304" name="Save As" - top_delta="0" + top="477" width="82" /> <button follows="right|bottom" @@ -2043,38 +2016,38 @@ scratch and wear it. label="Revert" label_selected="Revert" layout="topleft" - left_pad="6" + right="390" name="Revert" - top_delta="0" + top="477" width="82" /> </panel> <panel - border="true" + border="false" + background_visible="true" + bg_alpha_color="DkGray2" follows="left|top|right|bottom" - height="481" + height="508" label="Gloves" layout="topleft" - left_delta="0" name="Gloves" help_topic="customize_gloves_tab" - top_delta="0" - width="389"> + width="400"> <icon - follows="top|right" + follows="top|left" height="18" image_name="Lock" layout="topleft" - left="315" + left="10" mouse_opaque="true" name="square" - top="4" + top="10" width="18" /> <icon height="16" layout="topleft" - left_delta="-325" + left="10" mouse_opaque="true" - top_delta="3" + top="10" width="16" /> <text type="string" @@ -2083,9 +2056,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_pad="2" + left="31" name="title" - top_delta="0" + top="10" width="355"> [DESC] </text> @@ -2096,9 +2069,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_no_modify" - top_delta="0" + top="10" width="355"> [DESC]: cannot modify </text> @@ -2109,9 +2082,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_loading" - top_delta="0" + top="10" width="355"> [DESC]: loading... </text> @@ -2122,9 +2095,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_not_worn" - top_delta="0" + top="10" width="355"> [DESC]: not worn </text> @@ -2134,9 +2107,9 @@ scratch and wear it. follows="left|top|right" height="14" layout="topleft" - left="8" + left="10" name="path" - top="24" + top="36" width="373"> Located in [PATH] </text> @@ -2146,37 +2119,46 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="not worn instructions" - top_pad="8" + top="31" + word_wrap="true" width="373"> - Put on a new gloves by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on new gloves by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> + <button + follows="left|top" + height="23" + label="Create New Gloves" + label_selected="Create New Gloves" + layout="topleft" + name="Create New" + top_pad="7" + width="160" /> <text type="string" length="1" follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> <text type="string" length="1" - bottom="486" - follows="left|top|right" + bottom="4" + follows="left|bottom|right" font="SansSerif" halign="right" - height="28" - layout="topleft" + height="23" + layout="bottomleft" name="Item Action Label" - right="117" + right="132" width="100"> Gloves: </text> @@ -2184,44 +2166,32 @@ scratch and wear it. can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" + height="108" label="Fabric" layout="topleft" - left="8" + left="10" name="Fabric" tool_tip="Click to choose a picture" - top="65" - width="64" /> + top="66" + width="82" /> <color_swatch can_apply_immediately="true" follows="left|top" - height="80" + height="108" label="Color/Tint" layout="topleft" - left_delta="0" name="Color/Tint" tool_tip="Click to open color picker" - top_delta="80" - width="64" /> - <button - follows="left|top" - height="23" - label="Create New Gloves" - label_selected="Create New Gloves" - layout="topleft" - left_delta="0" - name="Create New" - top_delta="-41" - width="130" /> + top_delta="102" + width="82" /> <button follows="left|top" height="23" label="Take Off" label_selected="Take Off" layout="topleft" - left_delta="0" name="Take Off" - top_pad="102" + top_pad="4" width="82" /> <button follows="right|bottom" @@ -2229,9 +2199,9 @@ scratch and wear it. label="Save" label_selected="Save" layout="topleft" - left="123" + right="218" name="Save" - top="458" + top="477" width="82" /> <button follows="right|bottom" @@ -2239,9 +2209,9 @@ scratch and wear it. label="Save As..." label_selected="Save As..." layout="topleft" - left_pad="6" + right="304" name="Save As" - top_delta="0" + top="477" width="82" /> <button follows="right|bottom" @@ -2249,38 +2219,38 @@ scratch and wear it. label="Revert" label_selected="Revert" layout="topleft" - left_pad="6" + right="390" name="Revert" - top_delta="0" + top="477" width="82" /> </panel> <panel - border="true" + border="false" + background_visible="true" + bg_alpha_color="DkGray2" follows="left|top|right|bottom" - height="481" + height="508" label="Undershirt" layout="topleft" - left_delta="0" name="Undershirt" help_topic="customize_undershirt_tab" - top_delta="0" - width="389"> + width="400"> <icon - follows="top|right" + follows="top|left" height="18" image_name="Lock" layout="topleft" - left="315" + left="10" mouse_opaque="true" name="square" - top="4" + top="10" width="18" /> <icon height="16" layout="topleft" - left_delta="-325" + left="10" mouse_opaque="true" - top_delta="3" + top="10" width="16" /> <text type="string" @@ -2289,9 +2259,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_pad="2" + left="31" name="title" - top_delta="0" + top="10" width="355"> [DESC] </text> @@ -2302,9 +2272,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_no_modify" - top_delta="0" + top="10" width="355"> [DESC]: cannot modify </text> @@ -2315,9 +2285,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_loading" - top_delta="0" + top="10" width="355"> [DESC]: loading... </text> @@ -2328,9 +2298,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_not_worn" - top_delta="0" + top="10" width="355"> [DESC]: not worn </text> @@ -2340,9 +2310,9 @@ scratch and wear it. follows="left|top|right" height="14" layout="topleft" - left="8" + left="10" name="path" - top="24" + top="36" width="373"> Located in [PATH] </text> @@ -2352,37 +2322,46 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="not worn instructions" - top_pad="8" + top="31" + word_wrap="true" width="373"> - Put on a new undershirt by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on a new undershirt by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> + <button + follows="left|top" + height="23" + label="Create New Undershirt" + label_selected="Create New Undershirt" + layout="topleft" + name="Create New" + top_pad="7" + width="160" /> <text type="string" length="1" follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> <text type="string" length="1" - bottom="486" - follows="left|top|right" + bottom="4" + follows="left|bottom|right" font="SansSerif" halign="right" - height="28" - layout="topleft" + height="23" + layout="bottomleft" name="Item Action Label" - right="117" + right="132" width="100"> Undershirt: </text> @@ -2390,44 +2369,32 @@ scratch and wear it. can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" + height="108" label="Fabric" layout="topleft" - left="8" + left="10" name="Fabric" tool_tip="Click to choose a picture" - top="65" - width="64" /> + top="66" + width="82" /> <color_swatch can_apply_immediately="true" follows="left|top" - height="80" + height="108" label="Color/Tint" layout="topleft" - left_delta="0" name="Color/Tint" tool_tip="Click to open color picker" - top_delta="80" - width="64" /> - <button - follows="left|top" - height="23" - label="Create New Undershirt" - label_selected="Create New Undershirt" - layout="topleft" - left_delta="0" - name="Create New" - top_delta="-41" - width="160" /> + top_delta="102" + width="82" /> <button follows="left|top" height="23" label="Take Off" label_selected="Take Off" layout="topleft" - left_delta="0" name="Take Off" - top_pad="102" + top_pad="4" width="82" /> <button follows="right|bottom" @@ -2435,9 +2402,9 @@ scratch and wear it. label="Save" label_selected="Save" layout="topleft" - left="123" + right="218" name="Save" - top="458" + top="477" width="82" /> <button follows="right|bottom" @@ -2445,9 +2412,9 @@ scratch and wear it. label="Save As..." label_selected="Save As..." layout="topleft" - left_pad="6" + right="304" name="Save As" - top_delta="0" + top="477" width="82" /> <button follows="right|bottom" @@ -2455,38 +2422,38 @@ scratch and wear it. label="Revert" label_selected="Revert" layout="topleft" - left_pad="6" + right="390" name="Revert" - top_delta="0" + top="477" width="82" /> </panel> <panel - border="true" + border="false" + background_visible="true" + bg_alpha_color="DkGray2" follows="left|top|right|bottom" - height="481" + height="508" label="Underpants" layout="topleft" - left_delta="0" name="Underpants" help_topic="customize_underpants_tab" - top_delta="0" - width="389"> + width="400"> <icon - follows="top|right" + follows="top|left" height="18" image_name="Lock" layout="topleft" - left="315" + left="10" mouse_opaque="true" name="square" - top="4" + top="10" width="18" /> <icon height="16" layout="topleft" - left_delta="-325" + left="10" mouse_opaque="true" - top_delta="3" + top="10" width="16" /> <text type="string" @@ -2495,9 +2462,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_pad="2" + left="31" name="title" - top_delta="0" + top="10" width="355"> [DESC] </text> @@ -2508,9 +2475,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_no_modify" - top_delta="0" + top="10" width="355"> [DESC]: cannot modify </text> @@ -2521,9 +2488,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_loading" - top_delta="0" + top="10" width="355"> [DESC]: loading... </text> @@ -2534,9 +2501,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_not_worn" - top_delta="0" + top="10" width="355"> [DESC]: not worn </text> @@ -2546,9 +2513,9 @@ scratch and wear it. follows="left|top|right" height="14" layout="topleft" - left="8" + left="10" name="path" - top="24" + top="36" width="373"> Located in [PATH] </text> @@ -2558,37 +2525,46 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="not worn instructions" - top_pad="8" + top="31" + word_wrap="true" width="373"> - Put on a new underpants by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on new underpants by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> + <button + follows="left|top" + height="23" + label="Create New Underpants" + label_selected="Create New Underpants" + layout="topleft" + name="Create New" + top_pad="7" + width="160" /> <text type="string" length="1" follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> <text type="string" length="1" - bottom="486" - follows="left|top|right" + bottom="4" + follows="left|bottom|right" font="SansSerif" halign="right" - height="28" - layout="topleft" + height="23" + layout="bottomleft" name="Item Action Label" - right="117" + right="132" width="100"> Underpants: </text> @@ -2596,44 +2572,32 @@ scratch and wear it. can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" + height="108" label="Fabric" layout="topleft" - left="8" + left="10" name="Fabric" tool_tip="Click to choose a picture" - top="65" - width="64" /> + top="66" + width="82" /> <color_swatch can_apply_immediately="true" follows="left|top" - height="80" + height="108" label="Color/Tint" layout="topleft" - left_delta="0" name="Color/Tint" tool_tip="Click to open color picker" - top_delta="80" - width="64" /> - <button - follows="left|top" - height="23" - label="Create New Underpants" - label_selected="Create New Underpants" - layout="topleft" - left_delta="0" - name="Create New" - top_delta="-41" - width="160" /> + top_delta="102" + width="82" /> <button follows="left|top" height="23" label="Take Off" label_selected="Take Off" layout="topleft" - left_delta="0" name="Take Off" - top_pad="102" + top_pad="4" width="82" /> <button follows="right|bottom" @@ -2641,9 +2605,9 @@ scratch and wear it. label="Save" label_selected="Save" layout="topleft" - left="123" + right="218" name="Save" - top="458" + top="477" width="82" /> <button follows="right|bottom" @@ -2651,9 +2615,9 @@ scratch and wear it. label="Save As..." label_selected="Save As..." layout="topleft" - left_pad="6" + right="304" name="Save As" - top_delta="0" + top="477" width="82" /> <button follows="right|bottom" @@ -2661,38 +2625,38 @@ scratch and wear it. label="Revert" label_selected="Revert" layout="topleft" - left_pad="6" + right="390" name="Revert" - top_delta="0" + top="477" width="82" /> </panel> <panel - border="true" + border="false" + background_visible="true" + bg_alpha_color="DkGray2" follows="left|top|right|bottom" - height="481" + height="508" label="Skirt" layout="topleft" - left_delta="0" name="Skirt" help_topic="customize_skirt_tab" - top_delta="0" - width="389"> + width="400"> <icon - follows="top|right" + follows="top|left" height="18" image_name="Lock" layout="topleft" - left="315" + left="10" mouse_opaque="true" name="square" - top="4" + top="10" width="18" /> <icon height="16" layout="topleft" - left_delta="-325" + left="10" mouse_opaque="true" - top_delta="3" + top="10" width="16" /> <text type="string" @@ -2701,9 +2665,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_pad="2" + left="31" name="title" - top_delta="0" + top="10" width="355"> [DESC] </text> @@ -2714,9 +2678,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_no_modify" - top_delta="0" + top="10" width="355"> [DESC]: cannot modify </text> @@ -2727,9 +2691,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_loading" - top_delta="0" + top="10" width="355"> [DESC]: loading... </text> @@ -2740,9 +2704,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_not_worn" - top_delta="0" + top="10" width="355"> [DESC]: not worn </text> @@ -2752,9 +2716,9 @@ scratch and wear it. follows="left|top|right" height="14" layout="topleft" - left="8" + left="10" name="path" - top="24" + top="36" width="373"> Located in [PATH] </text> @@ -2764,37 +2728,46 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="not worn instructions" - top_pad="8" + top="31" + word_wrap="true" width="373"> - Put on a new skirt by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on a new skirt by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> + <button + follows="left|top" + height="23" + label="Create New Skirt" + label_selected="Create New Skirt" + layout="topleft" + name="Create New" + top_pad="7" + width="160" /> <text type="string" length="1" follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> <text type="string" length="1" - bottom="486" - follows="left|top|right" + bottom="4" + follows="left|bottom|right" font="SansSerif" halign="right" - height="28" - layout="topleft" + height="23" + layout="bottomleft" name="Item Action Label" - right="117" + right="132" width="100"> Skirt: </text> @@ -2802,44 +2775,32 @@ scratch and wear it. can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" + height="108" label="Fabric" layout="topleft" - left="8" + left="10" name="Fabric" tool_tip="Click to choose a picture" - top="65" - width="64" /> + top="66" + width="82" /> <color_swatch can_apply_immediately="true" follows="left|top" - height="80" + height="108" label="Color/Tint" layout="topleft" - left_delta="0" name="Color/Tint" tool_tip="Click to open color picker" - top_delta="80" - width="64" /> - <button - follows="left|top" - height="23" - label="Create New Skirt" - label_selected="Create New Skirt" - layout="topleft" - left_delta="0" - name="Create New" - top_delta="-41" - width="120" /> + top_delta="102" + width="82" /> <button follows="left|top" height="23" label="Take Off" label_selected="Take Off" layout="topleft" - left_delta="0" name="Take Off" - top_pad="102" + top_pad="4" width="82" /> <button follows="right|bottom" @@ -2847,9 +2808,9 @@ scratch and wear it. label="Save" label_selected="Save" layout="topleft" - left="123" + right="218" name="Save" - top="458" + top="477" width="82" /> <button follows="right|bottom" @@ -2857,9 +2818,9 @@ scratch and wear it. label="Save As..." label_selected="Save As..." layout="topleft" - left_pad="6" + right="304" name="Save As" - top_delta="0" + top="477" width="82" /> <button follows="right|bottom" @@ -2867,38 +2828,38 @@ scratch and wear it. label="Revert" label_selected="Revert" layout="topleft" - left_pad="6" + right="390" name="Revert" - top_delta="0" + top="477" width="82" /> </panel> <panel - border="true" + border="false" + background_visible="true" + bg_alpha_color="DkGray2" follows="left|top|right|bottom" - height="481" - label="Alpha" + height="508" + label="Tattoo" layout="topleft" - left_delta="0" - name="Alpha" - help_topic="customize_alpha_tab" - top_delta="0" - width="389"> + name="Tattoo" + help_topic="customize_tattoo_tab" + width="400"> <icon - follows="top|right" + follows="top|left" height="18" image_name="Lock" layout="topleft" - left="315" + left="10" mouse_opaque="true" name="square" - top="4" + top="10" width="18" /> <icon height="16" layout="topleft" - left_delta="-325" + left="10" mouse_opaque="true" - top_delta="3" + top="10" width="16" /> <text type="string" @@ -2907,9 +2868,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_pad="2" + left="31" name="title" - top_delta="0" + top="10" width="355"> [DESC] </text> @@ -2920,9 +2881,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_no_modify" - top_delta="0" + top="10" width="355"> [DESC]: cannot modify </text> @@ -2933,9 +2894,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_loading" - top_delta="0" + top="10" width="355"> [DESC]: loading... </text> @@ -2946,9 +2907,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_not_worn" - top_delta="0" + top="10" width="355"> [DESC]: not worn </text> @@ -2958,9 +2919,9 @@ scratch and wear it. follows="left|top|right" height="14" layout="topleft" - left="8" + left="10" name="path" - top="24" + top="36" width="373"> Located in [PATH] </text> @@ -2970,164 +2931,92 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="-2" + left="10" name="not worn instructions" - top_delta="2" + top="31" + word_wrap="true" width="373"> - Put on a new alpha mask by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on a new tattoo by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> + <button + follows="left|top" + height="23" + label="Create New Tattoo" + label_selected="Create New Tattoo" + layout="topleft" + name="Create New" + top_pad="7" + width="160" /> <text type="string" length="1" follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> <text type="string" length="1" - bottom="486" - follows="left|top|right" + bottom="4" + follows="left|bottom|right" font="SansSerif" halign="right" - height="28" - layout="topleft" + height="23" + layout="bottomleft" name="Item Action Label" - right="119" + right="132" width="100"> - Alpha: + Tattoo: </text> <texture_picker can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" - label="Lower Alpha" - layout="topleft" - left="8" - name="Lower Alpha" - tool_tip="Click to choose a picture" - top="65" - width="64" /> - <check_box - control_name="LowerAlphaTextureInvisible" - follows="left" - height="16" - layout="topleft" - left_pad="6" - name="lower alpha texture invisible" - top_delta="4" - width="16" /> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="80" - label="Upper Alpha" - layout="topleft" - left="8" - name="Upper Alpha" - tool_tip="Click to choose a picture" - top="145" - width="64" /> - <check_box - control_name="UpperAlphaTextureInvisible" - follows="left" - height="16" - layout="topleft" - left_pad="6" - name="upper alpha texture invisible" - top_delta="4" - width="16" /> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="80" - label="Head Alpha" + height="108" + label="Head Tattoo" layout="topleft" - left="8" - name="Head Alpha" + left="10" + name="Head Tattoo" tool_tip="Click to choose a picture" - top="225" - width="64" /> - <check_box - control_name="HeadAlphaTextureInvisible" - follows="left" - height="16" - layout="topleft" - left_pad="6" - name="head alpha texture invisible" - top_delta="4" - width="16" /> + top="66" + width="82" /> <texture_picker can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" - label="Eye Alpha" + height="108" + label="Upper Tattoo" layout="topleft" - left="8" - name="Eye Alpha" + name="Upper Tattoo" tool_tip="Click to choose a picture" - top="305" - width="64" /> - <check_box - control_name="Eye AlphaTextureInvisible" - follows="left" - height="16" - layout="topleft" - left_pad="6" - name="eye alpha texture invisible" - top_delta="4" - width="16" /> + left_delta="90" + width="82" /> <texture_picker can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" - label="Hair Alpha" + height="108" + label="Lower Tattoo" layout="topleft" - left="8" - name="Hair Alpha" + name="Lower Tattoo" tool_tip="Click to choose a picture" - top="385" - width="64" /> - <check_box - control_name="HairAlphaTextureInvisible" - follows="left" - height="16" - layout="topleft" - left_pad="6" - name="hair alpha texture invisible" - top_delta="4" - width="16" /> - <button - follows="left|top" - height="23" - label="Create New Alpha" - label_selected="Create New Alpha" - layout="topleft" - left="8" - name="Create New" - top="104" - width="120" /> + left_delta="90" + width="82" /> <button follows="left|top" height="23" label="Take Off" label_selected="Take Off" layout="topleft" - left_delta="-4" name="Take Off" - top_pad="332" + top_pad="4" + left="10" width="82" /> <button follows="right|bottom" @@ -3135,9 +3024,9 @@ scratch and wear it. label="Save" label_selected="Save" layout="topleft" - left_pad="37" + right="218" name="Save" - top_delta="-2" + top="477" width="82" /> <button follows="right|bottom" @@ -3145,9 +3034,9 @@ scratch and wear it. label="Save As..." label_selected="Save As..." layout="topleft" - left_pad="6" + right="304" name="Save As" - top_delta="0" + top="477" width="82" /> <button follows="right|bottom" @@ -3155,38 +3044,38 @@ scratch and wear it. label="Revert" label_selected="Revert" layout="topleft" - left_pad="6" + right="390" name="Revert" - top_delta="0" + top="477" width="82" /> </panel> <panel - border="true" + border="false" + background_visible="true" + bg_alpha_color="DkGray2" follows="left|top|right|bottom" - height="481" - label="Tattoo" + height="508" + label="Alpha" layout="topleft" - left_delta="0" - name="Tattoo" - help_topic="customize_tattoo_tab" - top_delta="0" - width="389"> + name="Alpha" + help_topic="customize_alpha_tab" + width="400"> <icon - follows="top|right" + follows="top|left" height="18" image_name="Lock" layout="topleft" - left="315" + left="10" mouse_opaque="true" name="square" - top="4" + top="10" width="18" /> <icon height="16" layout="topleft" - left_delta="-325" + left="10" mouse_opaque="true" - top_delta="3" + top="10" width="16" /> <text type="string" @@ -3195,9 +3084,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_pad="2" + left="31" name="title" - top_delta="0" + top="10" width="355"> [DESC] </text> @@ -3208,9 +3097,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_no_modify" - top_delta="0" + top="10" width="355"> [DESC]: cannot modify </text> @@ -3221,9 +3110,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_loading" - top_delta="0" + top="10" width="355"> [DESC]: loading... </text> @@ -3234,9 +3123,9 @@ scratch and wear it. font="SansSerif" height="16" layout="topleft" - left_delta="0" + left="31" name="title_not_worn" - top_delta="0" + top="10" width="355"> [DESC]: not worn </text> @@ -3246,9 +3135,9 @@ scratch and wear it. follows="left|top|right" height="14" layout="topleft" - left="8" + left="10" name="path" - top="24" + top="36" width="373"> Located in [PATH] </text> @@ -3258,95 +3147,157 @@ scratch and wear it. follows="left|top|right" height="28" layout="topleft" - left_delta="-2" + left="10" name="not worn instructions" - top_delta="2" + top="31" + word_wrap="true" width="373"> - Put on a new tattoo by dragging one from your inventory -to your avatar. Alternately, you create a new one from -scratch and wear it. + Put on a new alpha mask by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. </text> + <button + follows="left|top" + height="23" + label="Create New Alpha" + label_selected="Create New Alpha" + layout="topleft" + name="Create New" + top_pad="18" + width="160" /> <text type="string" length="1" follows="left|top|right" height="28" layout="topleft" - left_delta="0" + left="10" name="no modify instructions" - top_delta="0" + top="31" + word_wrap="true" width="373"> You do not have permission to modify this wearable. </text> <text type="string" length="1" - bottom="486" - follows="left|top|right" + bottom="4" + follows="left|bottom|right" font="SansSerif" halign="right" - height="28" - layout="topleft" + height="23" + layout="bottomleft" name="Item Action Label" - right="119" + right="132" width="100"> - Tattoo: + Alpha: </text> <texture_picker can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" - label="Head Tattoo" + height="108" + label="Lower Alpha" layout="topleft" - left="8" - name="Head Tattoo" + left="10" + name="Lower Alpha" tool_tip="Click to choose a picture" - top="65" - width="64" /> + top="66" + width="82" /> <texture_picker can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" - label="Upper Tattoo" + height="108" + label="Upper Alpha" layout="topleft" - left_delta="0" - name="Upper Tattoo" + name="Upper Alpha" tool_tip="Click to choose a picture" - top_delta="80" - width="64" /> + left_delta="90" + width="82" /> <texture_picker can_apply_immediately="true" default_image_name="Default" follows="left|top" - height="80" - label="Lower Tattoo" + height="108" + label="Head Alpha" layout="topleft" - left_delta="0" - name="Lower Tattoo" + name="Head Alpha" tool_tip="Click to choose a picture" - top_delta="80" - width="64" /> - <button + left_delta="90" + width="82" /> + <check_box + control_name="LowerAlphaTextureInvisible" + follows="left" + height="16" + layout="topleft" + left="43" + name="lower alpha texture invisible" + top_delta="96" + width="16" /> + <check_box + control_name="UpperAlphaTextureInvisible" + follows="left" + height="16" + layout="topleft" + left_pad="72" + name="upper alpha texture invisible" + width="16" /> + <check_box + control_name="HeadAlphaTextureInvisible" + follows="left" + height="16" + layout="topleft" + left_pad="72" + name="head alpha texture invisible" + width="16" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" follows="left|top" - height="23" - label="Create New Tattoo" - label_selected="Create New Tattoo" + height="108" + label="Eye Alpha" layout="topleft" - left_delta="0" - name="Create New" - top_delta="-121" - width="120" /> + name="Eye Alpha" + tool_tip="Click to choose a picture" + left="10" + top_pad="20" + width="82" /> + <texture_picker + can_apply_immediately="true" + default_image_name="Default" + follows="left|top" + height="108" + label="Hair Alpha" + layout="topleft" + name="Hair Alpha" + left_delta="90" + tool_tip="Click to choose a picture" + width="82" /> + <check_box + control_name="Eye AlphaTextureInvisible" + follows="left" + height="16" + layout="topleft" + left="43" + name="eye alpha texture invisible" + top_delta="96" + width="16" /> + <check_box + control_name="HairAlphaTextureInvisible" + follows="left" + height="16" + layout="topleft" + left_pad="72" + name="hair alpha texture invisible" + width="16" /> <button follows="left|top" height="23" label="Take Off" label_selected="Take Off" layout="topleft" - left_delta="-4" name="Take Off" - top_pad="332" + left="10" + top_pad="20" width="82" /> <button follows="right|bottom" @@ -3354,9 +3305,9 @@ scratch and wear it. label="Save" label_selected="Save" layout="topleft" - left_pad="37" + right="218" name="Save" - top_delta="-2" + top="477" width="82" /> <button follows="right|bottom" @@ -3364,9 +3315,9 @@ scratch and wear it. label="Save As..." label_selected="Save As..." layout="topleft" - left_pad="6" + right="304" name="Save As" - top_delta="0" + top="477" width="82" /> <button follows="right|bottom" @@ -3374,9 +3325,9 @@ scratch and wear it. label="Revert" label_selected="Revert" layout="topleft" - left_pad="6" + right="390" name="Revert" - top_delta="0" + top="477" width="82" /> </panel> </tab_container> @@ -3387,7 +3338,7 @@ scratch and wear it. left="211" mouse_opaque="false" name="panel_container" - top="116" + top="92" width="292"> <scrolling_panel_list follows="left|bottom" @@ -3395,17 +3346,18 @@ scratch and wear it. name="panel_list" /> </scroll_container> <button - bottom="598" + bottom="460" follows="right|left" - height="20" + height="23" label="Script Info" label_selected="Script Info" layout="topleft" name="script_info" - left="2" - width="98" /> + tool_tip="Show scripts attached to your avatar" + left="13" + width="90" /> <button - bottom="598" + bottom="574" follows="right|bottom" height="23" label="Make Outfit" @@ -3415,7 +3367,7 @@ scratch and wear it. right="-218" width="100" /> <button - bottom="598" + bottom="574" follows="right|bottom" height="23" label="Cancel" @@ -3425,7 +3377,7 @@ scratch and wear it. right="-10" width="100" /> <button - bottom="598" + bottom="574" follows="right|bottom" height="23" label="OK" diff --git a/indra/newview/skins/default/xui/en/floater_env_settings.xml b/indra/newview/skins/default/xui/en/floater_env_settings.xml index 8c87bd42dd..14f9e2db95 100644 --- a/indra/newview/skins/default/xui/en/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_env_settings.xml @@ -135,28 +135,28 @@ width="210" /> <button follows="left|top" - height="20" + height="23" label="Use Estate Time" layout="topleft" - left="8" + left="10" name="EnvUseEstateTimeButton" top="120" width="137" /> <button follows="left|top" - height="20" + height="23" label="Advanced Sky" layout="topleft" - left_pad="9" + left_pad="3" name="EnvAdvancedSkyButton" top_delta="0" width="137" /> <button follows="left|top" - height="20" + height="23" label="Advanced Water" layout="topleft" - left_pad="9" + left_pad="3" name="EnvAdvancedWaterButton" top_delta="0" width="137" /> diff --git a/indra/newview/skins/default/xui/en/floater_event.xml b/indra/newview/skins/default/xui/en/floater_event.xml new file mode 100644 index 0000000000..bcf15d7193 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_event.xml @@ -0,0 +1,313 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + follows="all" + height="350" + help_topic="event_details" + label="Event" + layout="topleft" + name="Event" + title="EVENT DETAILS" + width="330"> + <floater.string + name="none"> + none + </floater.string> + <floater.string + name="notify"> + Notify + </floater.string> + <floater.string + name="dont_notify"> + Don't Notify + </floater.string> + <floater.string + name="moderate"> + Moderate + </floater.string> + <floater.string + name="adult"> + Adult + </floater.string> + <floater.string + name="general"> + General + </floater.string> + <floater.string + name="unknown"> + Unknown + </floater.string> + <layout_stack + name="layout" + orientation="vertical" + follows="all" + layout="topleft" + left="0" + top="0" + height="350" + width="330" + border_size="0"> + <layout_panel + name="profile_stack" + follows="top|left" + layout="topleft" + top="0" + left="0" + height="305" + width="330"> + <text + follows="top|left|right" + font="SansSerifLarge" + text_color="white" + height="17" + layout="topleft" + left="10" + name="event_name" + top="5" + use_ellipses="true" + width="310"> + Nameless Event...of Doom! De doom! Doom doom. + </text> + <text + type="string" + length="1" + follows="top|left" + height="13" + text_color="LtGray_50" + layout="topleft" + left="25" + name="event_category" + width="300"> + (no category) + </text> + + <text + type="string" + length="1" + follows="top|left" + layout="topleft" + left="10" + top_pad="7" + name="event_runby_label" + width="90"> + Run by: + </text> + <text + follows="left|top" + height="20" + initial_value="(retrieving)" + layout="topleft" + left_pad="0" + link="true" + name="event_runby" + top_delta="0" + use_ellipses="true" + width="240" /> + <text + type="string" + length="1" + follows="top|left" + layout="topleft" + left="10" + top_pad="5" + name="event_date_label" + width="90"> + Date: + </text> + <text + type="string" + length="1" + left_pad="0" + height="17" + top_delta="0" + follows="top|left" + layout="topleft" + name="event_date" + width="240"> + 10/10/2010 + </text> + <text + type="string" + length="1" + follows="top|left" + layout="topleft" + left="10" + top_pad="5" + name="event_duration_label" + width="90"> + Duration: + </text> + <text + type="string" + height="14" + length="1" + left_pad="0" + follows="top|left" + layout="topleft" + name="event_duration" + top_delta="0" + width="240"> + 1 hour + </text> + <text + type="string" + length="1" + follows="top|left" + layout="topleft" + left="10" + top_pad="5" + name="event_covercharge_label" + width="90"> + Cover charge: + </text> + <text + type="string" + follows="left|top" + height="16" + layout="topleft" + left_pad="0" + name="event_cover" + visible="true" + width="240" + top_delta="0"> + Free + </text> + <text + type="string" + length="1" + follows="top|left" + layout="topleft" + left="10" + top_pad="5" + name="event_location_label" + width="90"> + Location: + </text> + <text + type="string" + length="1" + height="20" + left_pad="0" + follows="top|left" + layout="topleft" + name="event_location" + use_ellipses="true" + top_delta="0" + value="SampleParcel, Name Long (145, 228, 26)" + width="240" /> + <icon + follows="top|left" + height="16" + image_name="Parcel_PG_Dark" + layout="topleft" + left="10" + name="rating_icon_pg" + width="18" /> + <icon + follows="top|left" + height="16" + image_name="Parcel_M_Dark" + layout="topleft" + left="10" + name="rating_icon_m" + top_delta="0" + width="18" /> + <icon + follows="top|left" + height="16" + image_name="Parcel_R_Dark" + layout="topleft" + left="10" + name="rating_icon_r" + top_delta="0" + width="18" /> + <text + follows="left|top" + height="16" + layout="topleft" + left_pad="12" + name="rating_label" + top_delta="3" + value="Rating:" + width="58" /> + <text + follows="left|right|top" + height="16" + layout="topleft" + left_pad="2" + name="rating_value" + top_delta="0" + value="unknown" + width="240" /> + <expandable_text + follows="left|top|right" + height="65" + layout="topleft" + left="6" + name="event_desc" + width="322"> + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</expandable_text> + </layout_panel> + <layout_panel + follows="left|right" + height="24" + layout="topleft" + mouse_opaque="false" + name="button_panel" + top="0" + left="0" + user_resize="false"> + <button + follows="left|top" + height="18" + image_selected="AddItem_Press" + image_unselected="AddItem_Off" + image_disabled="AddItem_Disabled" + layout="topleft" + left="6" + name="create_event_btn" + picture_style="true" + tool_tip="Create Event" + width="18" /> + <button + follows="left|top" + height="18" + image_selected="MinusItem_Press" + image_unselected="MinusItem_Off" + image_disabled="MinusItem_Disabled" + layout="topleft" + visible="false" + left="6" + top_pad="-7" + name="god_delete_event_btn" + picture_style="true" + tool_tip="Delete Event" + width="18" /> + <button + follows="left|top" + height="23" + label="Notify Me" + layout="topleft" + left_pad="3" + top_delta="-12" + name="notify_btn" + width="100" /> + <button + follows="left|top" + height="23" + label="Teleport" + layout="topleft" + left_pad="5" + name="teleport_btn" + width="100" /> + <button + follows="left|top" + height="23" + label="Map" + layout="topleft" + left_pad="5" + name="map_btn" + width="85" /> + </layout_panel> + </layout_stack> + </floater> + diff --git a/indra/newview/skins/default/xui/en/floater_god_tools.xml b/indra/newview/skins/default/xui/en/floater_god_tools.xml index b01c0edc8b..0fac6cd5f1 100644 --- a/indra/newview/skins/default/xui/en/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_god_tools.xml @@ -123,7 +123,7 @@ layout="topleft" left_delta="0" name="check reset home" - tool_tip="When resident teleports out, reset their home to the destination position." + tool_tip="When Resident teleports out, reset their home to the destination position." top_pad="4" width="180"> <check_box.commit_callback 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 55a6179afb..214fb6ce54 100644 --- a/indra/newview/skins/default/xui/en/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml @@ -2,69 +2,55 @@ <floater legacy_header_height="18" can_resize="true" - height="400" + height="600" 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" single_instance="true" title="HELP BROWSER" - width="620"> + width="650"> <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="400" + bottom="600" follows="left|right|top|bottom" layout="topleft" - left="10" + left="5" name="stack1" top="20" - width="600"> + width="640"> <layout_panel - height="20" layout="topleft" left_delta="0" - name="external_controls" top_delta="0" + name="external_controls" user_resize="false" - width="570"> + width="620"> <web_browser - bottom="-10" + bottom="-11" follows="left|right|top|bottom" layout="topleft" left="0" name="browser" top="0" - start_url="data:text/html,%3Chtml%3E%3Cbody bgcolor=%22#2A2A2A%22%3E%3C/body%3E%3C/html%3E" - width="570" /> - <button + height="610" + width="620" /> + <text follows="bottom|left" - height="20" - label="Open in My Web Browser" + height="16" layout="topleft" - left_delta="0" - name="open_browser" + left_delta="2" + name="status_text" top_pad="5" - width="185" /> -<!-- - <button - follows="bottom|right" - height="20" - label="Close" - layout="topleft" - left_pad="290" - name="close" - top_delta="0" - width="70" /> ---> + width="150" /> </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_im.xml b/indra/newview/skins/default/xui/en/floater_im.xml index 92a6111759..a21242ffe1 100644 --- a/indra/newview/skins/default/xui/en/floater_im.xml +++ b/indra/newview/skins/default/xui/en/floater_im.xml @@ -26,7 +26,7 @@ </multi_floater.string> <multi_floater.string name="muted_message"> - You have blocked this resident. Sending a message will automatically unblock them. + You have blocked this Resident. Sending a message will automatically unblock them. </multi_floater.string> <multi_floater.string name="generic_request_error"> diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml index cd297af99d..0f098bbb52 100644 --- a/indra/newview/skins/default/xui/en/floater_im_container.xml +++ b/indra/newview/skins/default/xui/en/floater_im_container.xml @@ -1,35 +1,40 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<multi_floater
- can_minimize="false"
- can_resize="true"
- height="390"
- layout="topleft"
- name="floater_im_box"
- help_topic="floater_im_box"
- save_rect="true"
- save_visibility="true"
- single_instance="true"
- title="Instant Messages"
- width="392">
- <tab_container
- follows="left|right|top|bottom"
- height="390"
- layout="topleft"
- left="1"
- name="im_box_tab_container"
- tab_position="bottom"
- tab_width="80"
- top="0"
- width="390" />
- <icon
- color="DefaultShadowLight"
- enabled="false"
- follows="left|right|bottom"
- height="17"
- image_name="tabarea.tga"
- layout="bottomleft"
- left="1"
- name="im_box_tab_container_icon"
- bottom="10"
- width="390" />
-</multi_floater>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<multi_floater + can_close="false" + can_minimize="true" + can_resize="true" + height="390" + layout="topleft" + name="floater_im_box" + help_topic="floater_im_box" + save_rect="true" + save_visibility="true" + single_instance="true" + title="CONVERSATIONS" + width="392"> + <tab_container + follows="left|right|top|bottom" + height="390" + layout="topleft" + left="1" + name="im_box_tab_container" + tab_position="bottom" + tab_width="64" + tab_max_width = "134" + tab_height="16" + halign="center" + use_ellipses="true" + top="0" + width="390" /> + <icon + color="DefaultShadowLight" + enabled="false" + follows="left|right|bottom" + height="17" + image_name="tabarea.tga" + layout="bottomleft" + left="1" + name="im_box_tab_container_icon" + bottom="10" + width="390" /> +</multi_floater> 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 57e92cdeec..d2e5473157 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -11,12 +11,13 @@ can_dock="false" can_minimize="true" can_close="true" - visible="true" + visible="false" width="360" can_resize="true" - min_width="360" - min_height="350"> + min_width="250" + min_height="190"> <layout_stack + animate="false" follows="all" height="320" width="360" diff --git a/indra/newview/skins/default/xui/en/floater_inventory.xml b/indra/newview/skins/default/xui/en/floater_inventory.xml index ff9f0daee6..0d381fe5cb 100644 --- a/indra/newview/skins/default/xui/en/floater_inventory.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory.xml @@ -12,19 +12,19 @@ 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"> - Inventory (Fetching [ITEM_COUNT] Items...) [FILTER] + MY INVENTORY (Fetching [ITEM_COUNT] Items...) [FILTER] </floater.string> <floater.string name="TitleCompleted"> - Inventory ([ITEM_COUNT] Items) [FILTER] + MY INVENTORY ([ITEM_COUNT] Items) [FILTER] </floater.string> <floater.string name="Fetched"> 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 e94717fe32..990be55847 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/floater_lsl_guide.xml b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml index a5b477313c..c9d87f158f 100644 --- a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml @@ -8,9 +8,9 @@ min_height="271" min_width="350" name="script ed float" - help_topic="script_ed_float" + help_topic="lsl_reference" save_rect="true" - title="LSL WIKI" + title="LSL REFERENCE" width="370"> <check_box follows="top|left" diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml index 7b4c5f38a1..5d35275e17 100644 --- a/indra/newview/skins/default/xui/en/floater_map.xml +++ b/indra/newview/skins/default/xui/en/floater_map.xml @@ -1,17 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater legacy_header_height="18" + can_minimize="true" can_resize="true" follows="top|right" - height="225" + height="218" layout="topleft" - min_height="60" + min_height="174" min_width="174" name="Map" + title="Mini Map" help_topic="map" save_rect="true" save_visibility="true" single_instance="true" + left="0" + top="0" width="200"> <floater.string name="mini_map_north"> @@ -51,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> diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml index 4b280ac59f..70dac7e41c 100644 --- a/indra/newview/skins/default/xui/en/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml @@ -80,7 +80,7 @@ height="20" layout="topleft" left_pad="5" - max_chars="255" + max_chars="1024" name="address" top_delta="0" width="540"> diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml index 0bdcbf30df..8e2c57764b 100644 --- a/indra/newview/skins/default/xui/en/floater_moveview.xml +++ b/indra/newview/skins/default/xui/en/floater_moveview.xml @@ -12,6 +12,7 @@ help_topic="move_floater" save_rect="true" save_visibility="true" + save_dock_state="true" width="115"> <string name="walk_forward_tooltip"> @@ -37,6 +38,18 @@ name="fly_back_tooltip"> Fly Backwards (press Down Arrow or S) </string> + <string + name="walk_title"> + Walk + </string> + <string + name="run_title"> + Run + </string> + <string + name="fly_title"> + Fly + </string> <panel border="false" height="83" @@ -83,7 +96,7 @@ left="10" name="move up btn" scale_image="false" - tool_tip="Fly up, press "E"" + tool_tip="Fly up, press E" top="14" width="25" /> <button @@ -96,7 +109,7 @@ left_pad="45" name="move down btn" scale_image="false" - tool_tip="Fly down, press "C"" + tool_tip="Fly down, press C" top_delta="0" width="20" /> <joystick_turn @@ -178,16 +191,5 @@ tool_tip="Flying mode" top="2" width="31" /> - <button - visible="false" - follows="left|bottom" - height="20" - label="Stop Flying" - layout="topleft" - left="0" - name="stop_fly_btn" - tool_tip="Stop flying" - top="2" - width="115" /> </panel> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_mute_object.xml b/indra/newview/skins/default/xui/en/floater_mute_object.xml index 454b1c43b2..22b0a1783f 100644 --- a/indra/newview/skins/default/xui/en/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/en/floater_mute_object.xml @@ -47,7 +47,7 @@ <button follows="bottom|left" height="23" - label="Ok" + label="OK" layout="topleft" left="155" name="OK" diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml index 920f0c909a..28616d503b 100644 --- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml @@ -4,9 +4,9 @@ border_drop_shadow_visible="false" drop_shadow_visible="false" border="false" - bg_opaque_image="Inspector_Background" - bg_alpha_image="Toast_Background" - bg_alpha_color="0 0 0 0" + bg_opaque_image="Window_Foreground" + bg_alpha_image="Window_Background" + bg_alpha_image_overlay="DkGray_66" legacy_header_height="18" can_minimize="true" can_tear_off="false" diff --git a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml new file mode 100644 index 0000000000..a2938e8574 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_close="false" + can_minimize="false" + height="100" + layout="topleft" + title="Save Outfit" + name="modal container" + width="240"> + <button + height="23" + label="Save" + label_selected="Save" + layout="topleft" + left="20" + name="Save" + top="70" + width="82" /> + <button + height="23" + label="Cancel" + label_selected="Cancel" + layout="topleft" + left_pad="36" + name="Cancel" + top_delta="0" + width="82" /> + <text + type="string" + length="1" + follows="left|top" + height="30" + layout="topleft" + left="20" + word_wrap="true" + name="Save item as:" + top="10" + width="200"> + Save what I'm wearing +as a new Outfit: + </text> + <line_editor + type="string" + length="1" + border_style="line" + border_thickness="1" + follows="left|top" + handle_edit_keys_directly="true" + height="23" + layout="topleft" + left_delta="0" + show_text_as_tentative="false" + top_pad="0" + max_length="63" + name="name ed" + width="200"> + [DESC] (new) + </line_editor> +</floater> diff --git a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml index eb772cc0bd..2bafd1bdef 100644 --- a/indra/newview/skins/default/xui/en/floater_outgoing_call.xml +++ b/indra/newview/skins/default/xui/en/floater_outgoing_call.xml @@ -89,18 +89,29 @@ No Answer. Please try again later. top="27" width="315" word_wrap="true"> - You have been disconnected from [VOICE_CHANNEL_NAME]. You will now be reconnected to Nearby Voice Chat. + You have been disconnected from [VOICE_CHANNEL_NAME]. [RECONNECT_NEARBY] </text> <text font="SansSerifLarge" height="40" layout="topleft" left="77" - name="nearby_P2P" + name="nearby_P2P_by_other" top="27" width="315" word_wrap="true"> - [VOICE_CHANNEL_NAME] has ended the call. You will now be reconnected to Nearby Voice Chat. + [VOICE_CHANNEL_NAME] has ended the call. [RECONNECT_NEARBY] + </text> + <text + font="SansSerifLarge" + height="40" + layout="topleft" + left="77" + name="nearby_P2P_by_agent" + top="27" + width="315" + word_wrap="true"> + You have ended the call. [RECONNECT_NEARBY] </text> <text font="SansSerif" 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 1946920a9c..d09a0a0535 100644 --- a/indra/newview/skins/default/xui/en/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/en/floater_pay_object.xml @@ -30,25 +30,25 @@ type="string" length="1" follows="left|top" - font="SansSerif" height="16" layout="topleft" left_pad="7" + top_delta="3" name="payee_name" - width="210"> - [FIRST] [LAST] + width="184"> + [FIRST] [LAST] </text> <text type="string" length="1" follows="left|top" halign="left" - height="16" + height="14" layout="topleft" - left="30" + left="34" name="object_name_label" top_pad="0" - width="150"> + width="180"> Via object: </text> <icon @@ -59,20 +59,21 @@ name="icon_object" tool_tip="Objects" top_pad="0" - left="30" + left="10" /> <text type="string" length="1" follows="left|top" - font="SansSerif" - height="18" + height="16" layout="topleft" - left_pad="5" + left_pad="7" name="object_name_text" - top_delta="0" - width="210"> - ... + top_delta="3" + use_ellipses="true" + word_wrap="false" + width="188"> + My awesome object with a really damn long name </text> <button height="23" @@ -112,7 +113,7 @@ type="string" length="1" follows="left|top" - height="18" + height="14" layout="topleft" left="25" name="amount text" @@ -123,7 +124,7 @@ <line_editor border_style="line" follows="left|top|right" - height="19" + height="21" top_pad="0" layout="topleft" left="120" diff --git a/indra/newview/skins/default/xui/en/floater_postcard.xml b/indra/newview/skins/default/xui/en/floater_postcard.xml index 3a7b6cc832..6f78363b25 100644 --- a/indra/newview/skins/default/xui/en/floater_postcard.xml +++ b/indra/newview/skins/default/xui/en/floater_postcard.xml @@ -128,19 +128,9 @@ width="420"> Type your message here. </text_editor> - <text - type="string" - length="1" - bottom_delta="37" - follows="left|bottom" - layout="topleft" - left="12" - name="fine_print"> - If your recipient joins SL, you'll get a referral bonus. - </text> <button follows="right|bottom" - height="20" + height="23" label="Cancel" layout="topleft" name="cancel_btn" @@ -149,7 +139,7 @@ width="100" /> <button follows="right|bottom" - height="20" + height="23" label="Send" layout="topleft" left_delta="-106" diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml index 15655a920e..d7a7daf30c 100644 --- a/indra/newview/skins/default/xui/en/floater_preferences.xml +++ b/indra/newview/skins/default/xui/en/floater_preferences.xml @@ -46,6 +46,7 @@ tab_group="1" tab_position="left" tab_width="115" + tab_padding_right="5" top="21" width="620"> <panel @@ -56,7 +57,7 @@ help_topic="preferences_general_tab" name="general" /> <panel - class="panel_preference" + class="panel_preference_graphics" filename="panel_preferences_graphics1.xml" label="Graphics" layout="topleft" @@ -72,7 +73,7 @@ <panel class="panel_preference" filename="panel_preferences_sound.xml" - label="Sound" + label="Sound & Media" layout="topleft" help_topic="preferences_audio_tab" name="audio" /> 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 bbfb362337..6dc073728b 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_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml index 06dbdc9539..ead5b8c8f2 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml @@ -11,15 +11,15 @@ min_width="234" name="preview notecard" help_topic="preview_notecard" - title="NOTE:" + title="NOTECARD:" width="400"> <floater.string name="no_object"> - Unable to find object containing this note. + Unable to find object containing this notecard. </floater.string> <floater.string name="not_allowed"> - You do not have permission to view this note. + You do not have permission to view this notecard. </floater.string> <floater.string name="Title"> 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 68a78d5017..f3be8c4131 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/floater_preview_texture.xml b/indra/newview/skins/default/xui/en/floater_preview_texture.xml index 552902d1d9..7fd7eab867 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml @@ -64,7 +64,7 @@ height="16" layout="topleft" left_delta="-110" - name="dimensions" + name="aspect_ratio" top_pad="5" width="200"> Preview aspect ratio @@ -112,18 +112,18 @@ label="OK" layout="topleft" left="6" - name="keep" + name="Keep" top_pad="5" - width="100" /> + width="110" /> <button follows="right|bottom" height="22" - label="Cancel" + label="Discard" layout="topleft" left_pad="5" - name="discard" + name="Discard" top_delta="0" - width="100" /> + width="110" /> <button follows="right|bottom" height="22" @@ -132,5 +132,5 @@ left_pad="5" name="save_tex_btn" top_delta="0" - width="100" /> + width="110" /> </floater> 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 f1a75bfcb4..ac0fca9cce 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 @@ -201,11 +204,11 @@ name="Age__Age_play" value="31" /> <combo_box.item - label="Age > Adult resident on Teen Second Life" + label="Age > Adult Resident on Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life" value="32" /> <combo_box.item - label="Age > Underage resident outside of Teen Second Life" + label="Age > Underage Resident outside of Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life" value="33" /> <combo_box.item diff --git a/indra/newview/skins/default/xui/en/floater_script.xml b/indra/newview/skins/default/xui/en/floater_script.xml index f44ba6d873..663899d4b3 100644 --- a/indra/newview/skins/default/xui/en/floater_script.xml +++ b/indra/newview/skins/default/xui/en/floater_script.xml @@ -7,13 +7,12 @@ layout="topleft" left="0" name="script_floater" - help_topic="script_floater" top="0" can_dock="true" can_minimize="true" - visible="true" + visible="false" width="520" - can_resize="true" + can_resize="false" min_width="350" min_height="369"> </floater> 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 98c44ad1b3..6b36cdfcc5 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/floater_script_preview.xml b/indra/newview/skins/default/xui/en/floater_script_preview.xml index bb0702c353..d0cd00d147 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" /> diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index 5a9e2ebe6e..9ca18d455b 100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml @@ -2,16 +2,16 @@ <floater legacy_header_height="13" can_resize="true" - height="646" + height="600" layout="topleft" - min_height="646" - min_width="670" + min_height="400" + min_width="450" name="floater_search" help_topic="floater_search" save_rect="true" single_instance="true" title="FIND" - width="670"> + width="650"> <floater.string name="loading_text"> Loading... @@ -21,20 +21,20 @@ Done </floater.string> <layout_stack - bottom="641" + bottom="595" follows="left|right|top|bottom" layout="topleft" left="10" name="stack1" top="20" - width="650"> + width="630"> <layout_panel layout="topleft" left_delta="0" top_delta="0" name="browser_layout" user_resize="false" - width="650"> + width="630"> <web_browser bottom="-10" follows="left|right|top|bottom" @@ -42,9 +42,8 @@ left="0" name="browser" top="0" - start_url="data:text/html,%3Chtml%3E%3Cbody bgcolor=%22#2A2A2A%22%3E%3C/body%3E%3C/html%3E" - height="600" - width="650" /> + height="555" + width="630" /> <text follows="bottom|left" height="16" diff --git a/indra/newview/skins/default/xui/en/floater_select_key.xml b/indra/newview/skins/default/xui/en/floater_select_key.xml index 93aa1f0e31..4e89df5a73 100644 --- a/indra/newview/skins/default/xui/en/floater_select_key.xml +++ b/indra/newview/skins/default/xui/en/floater_select_key.xml @@ -15,13 +15,12 @@ follows="left|top" height="30" layout="topleft" - left="10" + left="30" name="Save item as:" top="25" word_wrap="true" - width="220"> - Press a key to set your -Speak button trigger. + width="180"> + Press a key to set your Speak button trigger. </text> <button height="23" @@ -30,5 +29,6 @@ Speak button trigger. layout="topleft" right="-10" name="Cancel" + top_pad="8" width="100" /> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml index a36a1b591b..1ab3dda52c 100644 --- a/indra/newview/skins/default/xui/en/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml @@ -43,6 +43,15 @@ layout="topleft" name="local" /> </radio_group> + <ui_ctrl + height="90" + width="90" + layout="topleft" + name="thumbnail_placeholder" + top_pad="6" + follows="left|top" + left="10" + /> <text type="string" font="SansSerifSmall" @@ -54,7 +63,7 @@ left_delta="0" halign="right" name="file_size_label" - top_pad="106" + top_pad="10" width="195"> [SIZE] KB </text> @@ -345,10 +354,6 @@ label="Depth" name="Depth" value="depth" /> - <combo_box.item - label="Object Mattes" - name="ObjectMattes" - value="objects" /> </combo_box> <check_box label="Interface" diff --git a/indra/newview/skins/default/xui/en/floater_sys_well.xml b/indra/newview/skins/default/xui/en/floater_sys_well.xml index 3fc57372de..005952f3f2 100644 --- a/indra/newview/skins/default/xui/en/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/en/floater_sys_well.xml @@ -3,13 +3,13 @@ legacy_header_height="18" bevel_style="in" left="0" - top="0" + top="0" follows="right|bottom" layout="topleft" name="sys_well_window" help_topic="notification_chiclet" save_rect="true" - title="NOTIFICATIONS" + title="NOTIFICATIONS" width="320" min_width="320" height="23" @@ -23,13 +23,13 @@ > <string name="title_im_well_window"> - IM SESSIONS + CONVERSATIONS </string> <string name="title_notification_well_window"> NOTIFICATIONS </string> - + <flat_list_view color="FloaterDefaultBackgroundColor" follows="all" 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 8c6ad5c0f7..bf0a774e76 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 9977e85a9d..1935edfcc1 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 317d8f5ba8..45e2e34da7 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 9143048aeb..209285da2e 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" @@ -115,10 +116,10 @@ follows="left|top" font="SansSerif" height="20" - left="0" + left="10" max_length="65536" name="slurl" - top_pad="4" + top_pad="20" width="150"> secondlife:///app/agent/00000000-0000-0000-0000-000000000000/inspect </text> @@ -126,12 +127,11 @@ follows="left|top" font="SansSerif" height="20" - left="0" + left="10" max_length="65536" name="slurl_group" - top_pad="4" + top_pad="20" 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 index c6acb7c96e..94f7e0b798 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 fe6ec91709..2894ad2a32 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 247c705687..32ccc31dfd 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 c6b4cca6b9..f4a50ecc96 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 7ef2d97cdc..db14ecae83 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 85d8bb2bb1..20bd555a03 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 3c44a4884d..acd49aa492 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 8be0c28c5c..b730f0e511 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" @@ -27,4 +28,17 @@ width="200"> This contains long text and should scroll horizontally to the right </text_editor> + <text_editor + height="50" + follows="top|left|bottom" + font="SansSerif" + left="10" + name="numeric_text_editor" + tool_tip="text editor for numeric text entry only" + top_pad="10" + text_type="int" + width="200"> + This is text that is NOT a number, so shouldn't appear + </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 index 8fc2677cbe..2df9bb35fe 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 84adabe4fa..80cb2723a0 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 @@ -87,7 +88,6 @@ <!-- First column --> <button - height="20" follows="top|left" label="Button" layout="topleft" @@ -99,7 +99,6 @@ <!-- "flyout_button" is a button that can spawn a menu --> <flyout_button follows="top|left" - height="20" label="Flyout" layout="topleft" left_delta="0" @@ -123,13 +122,18 @@ 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" @@ -336,12 +340,10 @@ line to actually fit <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"> diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml index 695021f755..cad7d72ed7 100644 --- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml @@ -131,8 +131,8 @@ <button follows="right|bottom" height="20" - label="Ok" - label_selected="Ok" + label="OK" + label_selected="OK" layout="topleft" right="-120" name="Select" diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index e55453f772..4e59a9b1ca 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -2,7 +2,7 @@ <floater legacy_header_height="18" follows="left|top|right" - height="570" + height="580" layout="topleft" bg_opaque_image="Window_NoTitle_Foreground" bg_alpha_image="Window_NoTitle_Background" @@ -67,80 +67,75 @@ </floater.string> <button follows="left|top" - height="20" - image_disabled="Tool_Zoom" - image_disabled_selected="Tool_Zoom" - image_selected="Tool_Zoom" - image_unselected="Tool_Zoom" + height="25" + image_bottom_pad="1" + image_overlay="Tool_Zoom" + image_selected="PushButton_Selected_Press" layout="topleft" left="10" name="button focus" tool_tip="Focus" - width="20"> + width="35"> <button.commit_callback function="BuildTool.setTool" parameter="Focus" /> </button> <button follows="left|top" - height="20" - image_disabled="Tool_Grab" - image_disabled_selected="Tool_Grab" - image_selected="Tool_Grab" - image_unselected="Tool_Grab" + height="25" + image_bottom_pad="1" + image_overlay="Tool_Grab" + image_selected="PushButton_Selected_Press" layout="topleft" - left_pad="20" + left_pad="10" name="button move" tool_tip="Move" - width="20"> + width="35"> <button.commit_callback function="BuildTool.setTool" parameter="Move" /> </button> <button follows="left|top" - height="20" - image_disabled="Tool_Face" - image_disabled_selected="Tool_Face" - image_selected="Tool_Face" - image_unselected="Tool_Face" + height="25" + image_bottom_pad="1" + image_overlay="Tool_Face" + image_selected="PushButton_Selected_Press" layout="topleft" - left_pad="20" + left_pad="10" name="button edit" tool_tip="Edit" - width="20"> + width="35"> <button.commit_callback function="BuildTool.setTool" parameter="Edit" /> </button> <button follows="left|top" - height="20" - image_disabled="Tool_Create" - image_disabled_selected="Tool_Create" - image_selected="Tool_Create" - image_unselected="Tool_Create" + height="25" + image_bottom_pad="1" + image_overlay="Tool_Create" + image_selected="PushButton_Selected_Press" layout="topleft" - left_pad="20" + left_pad="10" name="button create" tool_tip="Create" - width="20"> + width="35"> <button.commit_callback function="BuildTool.setTool" parameter="Create" /> </button> <button follows="left|top" - height="20" - image_disabled="Tool_Dozer" - image_disabled_selected="Tool_Dozer" - image_selected="Tool_Dozer" - image_unselected="Tool_Dozer" + height="25" + image_bottom_pad="1" + image_overlay="Tool_Dozer" + image_selected="PushButton_Selected_Press" layout="topleft" - left_pad="20" + left_pad="10" name="button land" tool_tip="Land" - width="20"> + width="35"> <button.commit_callback function="BuildTool.setTool" parameter="Land" /> @@ -344,7 +339,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 +352,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 +365,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 +378,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 +391,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 +404,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 +417,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 +430,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 +443,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 +456,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 +469,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 +482,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 +495,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 +508,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 +521,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" @@ -741,7 +737,7 @@ </text> <tab_container follows="left|top" - height="400" + height="410" halign="center" left="0" name="Object Info Tabs" @@ -1042,7 +1038,7 @@ even though the user gets a free copy. <check_box height="15" width="110" - top_pad="3" + top_pad="5" label="Show in search" layout="topleft" left="100" @@ -1058,7 +1054,7 @@ even though the user gets a free copy. name="perms_build" left="0" top="241" - height="120" + height="130" width="278"> <text type="string" @@ -1139,7 +1135,7 @@ even though the user gets a free copy. left="10" name="B:" height="10" - width="45"> + width="80"> B: </text> <text @@ -1151,7 +1147,7 @@ even though the user gets a free copy. left_pad="0" name="O:" height="10" - width="44"> + width="80"> O: </text> <text @@ -1163,7 +1159,7 @@ even though the user gets a free copy. left_pad="0" name="G:" height="10" - width="43"> + width="80"> G: </text> <text @@ -1171,11 +1167,12 @@ even though the user gets a free copy. text_color="White" length="1" follows="left|top" - left_pad="0" + left="10" + top_pad="2" layout="topleft" name="E:" height="10" - width="43"> + width="80"> E: </text> <text @@ -1187,7 +1184,7 @@ even though the user gets a free copy. left_pad="0" name="N:" height="10" - width="48"> + width="80"> N: </text> <text @@ -1199,7 +1196,7 @@ even though the user gets a free copy. left_pad="0" name="F:" height="10" - width="50"> + width="80"> F: </text> </panel> @@ -1687,6 +1684,7 @@ even though the user gets a free copy. Taper </text> <text + visible="false" type="string" length="1" follows="left|top" @@ -1769,6 +1767,7 @@ even though the user gets a free copy. top_delta="0" width="68" /> <text + visible="false" type="string" length="1" follows="left|top" @@ -1781,6 +1780,7 @@ even though the user gets a free copy. Profile Cut (begin/end) </text> <text + visible="false" type="string" length="1" follows="left|top" @@ -1831,6 +1831,7 @@ even though the user gets a free copy. top_delta="0" width="68" /> <text + visible="false" type="string" length="1" follows="left|top" @@ -1843,6 +1844,7 @@ even though the user gets a free copy. Taper </text> <spinner + visible="false" decimal_digits="2" follows="left|top" height="19" @@ -1857,6 +1859,7 @@ even though the user gets a free copy. top_pad="3" width="68" /> <spinner + visible="false" decimal_digits="2" follows="left|top" height="19" @@ -1871,6 +1874,7 @@ even though the user gets a free copy. top_delta="0" width="68" /> <text + visible="false" type="string" length="1" follows="left|top" @@ -1883,6 +1887,7 @@ even though the user gets a free copy. Radius </text> <text + visible="false" type="string" length="1" follows="left|top" @@ -1894,6 +1899,7 @@ even though the user gets a free copy. Revolutions </text> <spinner + visible="false" follows="left|top" height="19" increment="0.05" @@ -1905,6 +1911,7 @@ even though the user gets a free copy. top_pad="4" width="68" /> <spinner + visible="false" decimal_digits="2" follows="left|top" height="19" @@ -2675,7 +2682,7 @@ even though the user gets a free copy. height="18" layout="topleft" left="10" - use_ellipsis="true" + use_ellipses="true" read_only="true" name="media_info" width="180" /> @@ -2779,6 +2786,9 @@ even though the user gets a free copy. name="button permissions" width="130" /> <panel_inventory_object + border="true" + border_visible="true" + bevel_style="in" follows="left|top" height="325" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_top_objects.xml b/indra/newview/skins/default/xui/en/floater_top_objects.xml index 68bb500c78..b06c6dc215 100644 --- a/indra/newview/skins/default/xui/en/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/en/floater_top_objects.xml @@ -9,7 +9,7 @@ name="top_objects" help_topic="top_objects" title="Top Objects" - width="550"> + width="800"> <floater.string name="top_scripts_title"> Top Scripts @@ -64,7 +64,7 @@ multi_select="true" name="objects_list" top_delta="17" - width="530"> + width="780"> <scroll_list.columns label="Score" name="score" @@ -84,11 +84,15 @@ <scroll_list.columns label="Time" name="time" - width="100" /> + width="150" /> <scroll_list.columns label="Mono Time" name="mono_time" - width="55" /> + width="100" /> + <scroll_list.columns + label="URLs" + name="URLs" + width="100" /> <scroll_list.commit_callback function="TopObjects.CommitObjectsList" /> </scroll_list> @@ -112,7 +116,7 @@ left_pad="3" name="id_editor" top_delta="-3" - width="325" /> + width="575" /> <button follows="bottom|right" height="23" @@ -144,7 +148,7 @@ left_pad="3" name="object_name_editor" top_delta="-3" - width="325" /> + width="575" /> <button follows="bottom|right" height="23" @@ -176,7 +180,7 @@ left_pad="3" name="owner_name_editor" top_delta="-3" - width="325" /> + width="575" /> <button follows="bottom|right" height="23" @@ -190,7 +194,7 @@ function="TopObjects.GetByOwnerName" /> </button> <button - follows="top|left" + follows="bottom|right" height="22" image_overlay="Refresh_Off" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_tos.xml b/indra/newview/skins/default/xui/en/floater_tos.xml index 1adb824e2a..5e168fe4aa 100644 --- a/indra/newview/skins/default/xui/en/floater_tos.xml +++ b/indra/newview/skins/default/xui/en/floater_tos.xml @@ -49,9 +49,9 @@ left_delta="0" name="tos_heading" top_delta="-399" + word_wrap="true" width="552"> - Please read the following Terms of Service carefully. To continue logging in to [SECOND_LIFE], -you must accept the agreement. + Please read the following Terms of Service carefully. To continue logging in to [SECOND_LIFE], you must accept the agreement. </text> <web_browser follows="left|top" @@ -60,6 +60,6 @@ you must accept the agreement. left_delta="0" name="tos_html" start_url="data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody text=%22000000%22%3E%3Ch2%3E Loading %3Ca%20target%3D%22_external%22%20href%3D%22http%3A//secondlife.com/app/tos/%22%3ETerms%20of%20Service%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E" - top_delta="0" + top_delta="40" width="568" /> </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 index 8b2136c2dc..3a981adfdf 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" @@ -111,7 +112,7 @@ 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." + 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 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 47fd03b8f6..114b9a84e3 100644 --- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml @@ -3,11 +3,12 @@ can_resize="true" can_minimize="true" can_close="false" - height="270" + height="202" layout="topleft" - min_height="122" + min_height="124" min_width="190" name="floater_voice_controls" + help_topic="floater_voice_controls" title="Voice Controls" save_visibility="true" single_instance="true" @@ -30,36 +31,32 @@ </string> <string name="no_one_near"> - No one near + No one near has voice enabled </string> - <string - name="max_visible_items"> - 5 - </string> - <panel - bevel_style="out" - border="true" - follows="left|right|top" - height="62" - layout="topleft" - left="0" - name="control_panel" - top="0" - width="282"> - <panel - height="18" - follows="top|left|right" + <layout_stack + clip="false" + follows="all" + height="189" layout="topleft" left="10" - name="my_panel" + mouse_opaque="false" + name="my_call_stack" + orientation="vertical" width="263"> + <layout_panel + follows="top|left|right" + user_resize="false" + auto_resize="false" + layout="topleft" + height="26" + name="my_panel"> <avatar_icon enabled="false" follows="left|top" height="18" default_icon_name="Generic_Person" layout="topleft" - left="0" + left="5" name="user_icon" top="0" width="18" /> @@ -73,53 +70,63 @@ text_color="white" top="4" use_ellipses="true" - value="Mya Avatar:" + value="My Avatar:" width="210" /> <output_monitor auto_update="true" draw_border="false" - follows="right" + follows="top|right" height="16" layout="topleft" + right="-3" name="speaking_indicator" - right="-1" - top="2" + left_pad="5" visible="true" width="20" /> - </panel> - <button + </layout_panel> + <layout_panel + auto_resize="false" + user_resize="false" + follows="top|left" + height="26" + visible="true" + layout="topleft" + name="leave_call_btn_panel" + width="100"> + <button + follows="right|top" + height="23" + top_pad="0" + label="Leave Call" + name="leave_call_btn" + width="100" /> + </layout_panel> + <layout_panel + follows="all" + layout="topleft" + left="2" + top_pad="0" + height="132" + name="callers_panel" + user_resize="false" + width="280"> + <avatar_list + follows="all" + height="132" + ignore_online_status="true" + layout="topleft" + multi_select="true" + name="speakers_list" + width="280" /> + <panel + filename="panel_avatar_list_item.xml" follows="left|right|top" height="24" - label="Leave Call" - left="91" - name="leave_call_btn" - top_pad="6" - width="100" /> - </panel> - <avatar_list - follows="all" - height="197" - ignore_online_status="true" - layout="topleft" - left="0" - multi_select="true" - name="speakers_list" - width="282" /> - <panel - filename="panel_avatar_list_item.xml" - follows="left|right|top" - height="24" - layout="topleft" - left="0" - name="non_avatar_caller" - top="70" - width="282" /> - <view_border - bevel_style="out" - follows="left|top|right|bottom" - height="206" - layout="topleft" - left="0" - top="63" - width="282" /> + layout="topleft" + left="0" + name="non_avatar_caller" + top="10" + width="276" /> + </layout_panel> + </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_water.xml b/indra/newview/skins/default/xui/en/floater_water.xml index 32739ac953..3a44ba3763 100644 --- a/indra/newview/skins/default/xui/en/floater_water.xml +++ b/indra/newview/skins/default/xui/en/floater_water.xml @@ -16,49 +16,49 @@ type="string" length="1" follows="left|top|right" - font.style="BOLD" height="16" layout="topleft" left="10" name="KeyFramePresetsText" top="34" - width="110"> + font="SansSerif" + width="85"> Water Presets: </text> <combo_box - height="18" + height="23" layout="topleft" - left_pad="10" + left_delta="95" name="WaterPresetsCombo" - top_delta="-2" + top_delta="-4" width="150" /> <button - height="20" + height="23" label="New" label_selected="New" layout="topleft" - left_pad="20" + left_pad="3" name="WaterNewPreset" - top_delta="1" - width="90" /> + top_delta="0" + width="70" /> <button - height="20" + height="23" label="Save" label_selected="Save" layout="topleft" - left_pad="10" + left_pad="3" name="WaterSavePreset" top_delta="0" - width="90" /> + width="70" /> <button - height="20" + height="23" label="Delete" label_selected="Delete" layout="topleft" - left_pad="10" + left_pad="3" name="WaterDeletePreset" top_delta="0" - width="90" /> + width="70" /> <tab_container border="false" follows="left|top" @@ -74,7 +74,7 @@ border="true" follows="all" height="180" - label="Settings" + label="SETTINGS" layout="topleft" left="0" mouse_opaque="false" @@ -331,7 +331,7 @@ border="true" follows="all" height="180" - label="Image" + label="IMAGE" layout="topleft" left="0" mouse_opaque="false" @@ -348,7 +348,7 @@ layout="topleft" left="10" name="BHText" - top="10" + top="4" width="200"> Big Wave Direction </text> @@ -361,23 +361,10 @@ layout="topleft" left="10" name="WaterWave1DirXText" - top_pad="4" + top_pad="5" width="10"> X </text> - <text - type="string" - length="1" - follows="left|top|right" - halign="center" - height="16" - layout="topleft" - left_delta="0" - name="WaterWave1DirYText" - top_delta="18" - width="10"> - Y - </text> <slider control_name="WaterWave1DirX" decimal_digits="2" @@ -390,8 +377,22 @@ max_val="4" min_val="-4" name="WaterWave1DirX" - top="55" + left_pad="3" + top_pad="6" width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="-13" + name="WaterWave1DirYText" + top_pad="-15" + width="10"> + Y + </text> <slider control_name="WaterWave1DirY" decimal_digits="2" @@ -404,7 +405,8 @@ max_val="4" min_val="-4" name="WaterWave1DirY" - top_pad="5" + left_pad="3" + top_pad="6" width="200" /> <text type="string" @@ -413,9 +415,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="-14" + left_delta="-13" name="BHText2" - top_delta="3" + top_pad="-10" width="355"> Little Wave Direction </text> @@ -427,24 +429,12 @@ height="16" layout="topleft" left="10" + left_delta="0" name="WaterWave2DirXText" - top="90" + top_pad="5" width="10"> X </text> - <text - type="string" - length="1" - follows="left|top|right" - halign="center" - height="16" - layout="topleft" - left_delta="0" - name="WaterWave2DirYText" - top_delta="20" - width="10"> - Y - </text> <slider control_name="WaterWave2DirX" decimal_digits="2" @@ -457,8 +447,22 @@ max_val="4" min_val="-4" name="WaterWave2DirX" - top="115" + left_pad="3" + top_pad="6" width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="-13" + name="WaterWave2DirYText" + top_pad="-15" + width="10"> + Y + </text> <slider control_name="WaterWave2DirY" decimal_digits="2" @@ -471,7 +475,8 @@ max_val="4" min_val="-4" name="WaterWave2DirY" - top_pad="10" + left_pad="3" + top_pad="6" width="200" /> <text type="string" diff --git a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml index 9a95e3dfef..b4b57f2dbc 100644 --- a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml +++ b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater - legacy_header_height="18" - border="true" + legacy_header_height="0" can_close="false" can_minimize="false" height="100" @@ -9,7 +8,7 @@ name="modal container" width="240"> <button - height="20" + height="23" label="Save" label_selected="Save" layout="topleft" @@ -18,7 +17,7 @@ top="70" width="82" /> <button - height="20" + height="23" label="Cancel" label_selected="Cancel" layout="topleft" @@ -30,14 +29,14 @@ type="string" length="1" follows="left|top" - font="SansSerif" - height="16" + height="30" layout="topleft" + word_wrap="true" left="20" name="Save item as:" top="10" width="200"> - Save item as: + Save item to my inventory as: </text> <line_editor type="string" @@ -45,14 +44,13 @@ border_style="line" border_thickness="1" follows="left|top" - font="SansSerif" handle_edit_keys_directly="true" - height="20" + height="23" layout="topleft" left_delta="0" max_length="63" name="name ed" - top_pad="4" + top_pad="0" width="200"> New [DESC] </line_editor> diff --git a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml index 4ece0fa3ba..897d959b98 100644 --- a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml @@ -5,6 +5,9 @@ height="108" layout="topleft" name="whitelist_entry" + single_instance="true" + help_topic="whitelist_entry" + title="WHITELIST ENTRY" width="390"> <text type="string" length="1" bottom="20" follows="top|left" height="15" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_windlight_options.xml b/indra/newview/skins/default/xui/en/floater_windlight_options.xml index 0cb7814c6a..d09a41978d 100644 --- a/indra/newview/skins/default/xui/en/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/en/floater_windlight_options.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater legacy_header_height="18" - height="220" + height="256" layout="topleft" name="WindLight floater" help_topic="windlight_floater" @@ -22,68 +22,64 @@ left="10" name="KeyFramePresetsText" top="34" - width="110"> + width="85"> Sky Presets: </text> <combo_box - height="18" + height="23" layout="topleft" - left_delta="110" + left_delta="85" name="WLPresetsCombo" - top_delta="-2" + top_delta="-4" width="150" /> <button - height="20" + height="23" label="New" label_selected="New" layout="topleft" - left_pad="20" + left_pad="3" name="WLNewPreset" - top_delta="1" width="70" /> <button - height="20" + height="23" label="Save" label_selected="Save" layout="topleft" - left_pad="10" + left_pad="3" name="WLSavePreset" - top_delta="0" width="70" /> <button - height="20" + height="23" label="Delete" label_selected="Delete" layout="topleft" - left_pad="10" + left_pad="3" name="WLDeletePreset" - top_delta="0" width="70" /> <button - height="20" + height="23" label="Day Cycle Editor" label_selected="Day Cycle Editor" layout="topleft" - left_pad="50" + right="-10" name="WLDayCycleMenuButton" - top_delta="0" + top_pad="-23" width="120" /> <tab_container follows="left|top" - height="160" + height="196" halign="center" layout="topleft" left="0" name="WindLight Tabs" tab_position="top" - tab_height="20" top="60" width="700"> <panel border="true" follows="left|top|right|bottom" - height="160" - label="Atmosphere" + height="196" + label="ATMOSPHERE" layout="topleft" left="1" mouse_opaque="false" @@ -113,10 +109,22 @@ layout="topleft" left="10" name="BHText2" - top="21" + top_pad="5" width="10"> R </text> + <slider + control_name="WLBlueHorizonR" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_pad="3" + top_pad="6" + name="WLBlueHorizonR" + width="200" /> <text type="string" length="1" @@ -124,12 +132,25 @@ halign="center" height="16" layout="topleft" - left_delta="0" + left="10" + top_pad="-15" name="BHText3" - top_delta="11" width="10"> G </text> + <slider + control_name="WLBlueHorizonG" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_delta="0" + name="WLBlueHorizonG" + left_pad="3" + top_pad="6" + width="200" /> <text type="string" length="1" @@ -137,12 +158,24 @@ halign="center" height="16" layout="topleft" - left_delta="0" name="BHText4" - top_delta="11" + left="10" + top_pad="-15" width="10"> B </text> + <slider + control_name="WLBlueHorizonB" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + name="WLBlueHorizonB" + left_pad="3" + top_pad="6" + width="200" /> <text type="string" length="1" @@ -150,49 +183,13 @@ halign="center" height="16" layout="topleft" - left_delta="0" name="BHText5" - top_delta="11" + left="10" + top_pad="-15" width="10"> I </text> <slider - control_name="WLBlueHorizonR" - decimal_digits="2" - follows="left" - height="10" - increment="0.01" - initial_value="0.7" - layout="topleft" - left="24" - name="WLBlueHorizonR" - top="40" - width="200" /> - <slider - control_name="WLBlueHorizonG" - decimal_digits="2" - follows="left" - height="10" - increment="0.01" - initial_value="0.7" - layout="topleft" - left_delta="0" - name="WLBlueHorizonG" - top_pad="1" - width="200" /> - <slider - control_name="WLBlueHorizonB" - decimal_digits="2" - follows="left" - height="10" - increment="0.01" - initial_value="0.7" - layout="topleft" - left_delta="0" - name="WLBlueHorizonB" - top_pad="1" - width="200" /> - <slider control_name="WLBlueHorizonI" decimal_digits="2" follows="left" @@ -200,9 +197,9 @@ increment="0.01" initial_value="1.0" layout="topleft" - left_delta="0" name="WLBlueHorizonI" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> <text type="string" @@ -211,9 +208,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="-14" + left="10" + top_pad="-10" name="BDensText" - top_delta="-2" width="355"> Haze Horizon </text> @@ -225,9 +222,10 @@ increment="0.01" initial_value="0.25" layout="topleft" - left="24" + left="23" + top_delta="0" + top_pad="27" name="WLHazeHorizon" - top="107" width="200" /> <text type="string" @@ -251,10 +249,22 @@ layout="topleft" left="245" name="BHText6" - top="21" + top_pad="5" width="10"> R </text> + <slider + control_name="WLBlueDensityR" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_pad="3" + top_pad="6" + name="WLBlueDensityR" + width="200" /> <text type="string" length="1" @@ -262,50 +272,12 @@ halign="center" height="16" layout="topleft" - left_delta="0" + left="245" name="BHText7" - top_delta="11" + top_pad="-15" width="10"> G </text> - <text - type="string" - length="1" - follows="left|top|right" - halign="center" - height="16" - layout="topleft" - left_delta="0" - name="BHText8" - top_delta="11" - width="10"> - B - </text> - <text - type="string" - length="1" - follows="left|top|right" - halign="center" - height="16" - layout="topleft" - left_delta="0" - name="BHText9" - top_delta="11" - width="10"> - I - </text> - <slider - control_name="WLBlueDensityR" - decimal_digits="2" - follows="left" - height="10" - increment="0.01" - initial_value="0.7" - layout="topleft" - left="259" - name="WLBlueDensityR" - top="40" - width="200" /> <slider control_name="WLBlueDensityG" decimal_digits="2" @@ -316,8 +288,22 @@ layout="topleft" left_delta="0" name="WLBlueDensityG" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left="245" + name="BHText8" + top_pad="-15" + width="10"> + B + </text> <slider control_name="WLBlueDensityB" decimal_digits="2" @@ -328,8 +314,22 @@ layout="topleft" left_delta="0" name="WLBlueDensityB" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left="245" + name="BHText9" + top_pad="-15" + width="10"> + I + </text> <slider control_name="WLBlueDensityI" decimal_digits="2" @@ -340,7 +340,8 @@ layout="topleft" left_delta="0" name="WLBlueDensityI" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> <text type="string" @@ -349,9 +350,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="-14" + left="245" name="HDText" - top_delta="-2" + top_pad="-10" width="355"> Haze Density </text> @@ -363,10 +364,10 @@ increment="0.01" initial_value="0.7" layout="topleft" - left="259" + left="258" max_val="4" name="WLHazeDensity" - top="107" + top_pad="27" width="200" /> <text type="string" @@ -389,10 +390,10 @@ increment="0.01" initial_value="0.1" layout="topleft" - left="494" + left_delta="13" max_val="0.9" name="WLDensityMult" - top="40" + top_pad="27" width="200" /> <text type="string" @@ -401,9 +402,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="-14" + left_delta="-13" name="WLDistanceMultText" - top_delta="-3" + top_pad="-10" width="355"> Distance Multiplier </text> @@ -414,11 +415,11 @@ height="10" initial_value="1.0" layout="topleft" - left="494" + left_delta="13" max_val="100" name="WLDistanceMult" - top="73" - width="207" /> + top_pad="27" + width="200" /> <text type="string" length="1" @@ -426,9 +427,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="-14" + left_delta="-13" name="MaxAltText" - top_delta="-2" + top_pad="-15" width="355"> Max Altitude </text> @@ -440,17 +441,17 @@ increment="1" initial_value="500" layout="topleft" - left="494" + left_delta="13" max_val="4000" name="WLMaxAltitude" - top="107" - width="205" /> + top_pad="27" + width="200" /> </panel> <panel border="true" follows="left|top|right|bottom" - height="160" - label="Lighting" + height="196" + label="LIGHTING" layout="topleft" left_delta="0" help_topic="windlight_lighting_tab" @@ -477,12 +478,24 @@ halign="center" height="16" layout="topleft" - left="10" + left_delta="0" name="BHText" - top="21" + top_pad="5" width="10"> R </text> + <slider + control_name="WLSunlightR" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_pad="3" + top_pad="6" + name="WLSunlightR" + width="200" /> <text type="string" length="1" @@ -490,50 +503,12 @@ halign="center" height="16" layout="topleft" - left_delta="0" + left_delta="-13" name="BHText2" - top_delta="11" + top_pad="-15" width="10"> G </text> - <text - type="string" - length="1" - follows="left|top|right" - halign="center" - height="16" - layout="topleft" - left_delta="0" - name="BHText3" - top_delta="11" - width="10"> - B - </text> - <text - type="string" - length="1" - follows="left|top|right" - halign="center" - height="16" - layout="topleft" - left_delta="0" - name="BHText4" - top_delta="11" - width="10"> - I - </text> - <slider - control_name="WLSunlightR" - decimal_digits="2" - follows="left" - height="10" - increment="0.01" - initial_value="0.7" - layout="topleft" - left="24" - name="WLSunlightR" - top="40" - width="200" /> <slider control_name="WLSunlightG" decimal_digits="2" @@ -544,8 +519,22 @@ layout="topleft" left_delta="0" name="WLSunlightG" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="-13" + name="BHText3" + top_pad="-15" + width="10"> + B + </text> <slider control_name="WLSunlightB" decimal_digits="2" @@ -556,8 +545,22 @@ layout="topleft" left_delta="0" name="WLSunlightB" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="-13" + name="BHText4" + top_pad="-15" + width="10"> + I + </text> <slider control_name="WLSunlightI" decimal_digits="2" @@ -568,7 +571,8 @@ layout="topleft" left_delta="0" name="WLSunlightI" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> <text type="string" @@ -577,9 +581,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="-14" + left_delta="-13" name="TODText" - top_delta="-2" + top_pad="-10" width="355"> Sun/Moon Position </text> @@ -587,9 +591,9 @@ height="20" image_name="icon_diurnal.tga" layout="topleft" - left="30" + left_delta="14" + top_pad="10" name="SkyDayCycle" - top="97" width="148" /> <slider control_name="WLSunAngle" @@ -598,10 +602,10 @@ increment="0.001" initial_value="0.7" layout="topleft" - left="24" + left_delta="-8" name="WLSunAngle" - top="137" - width="204" /> + top_pad="20" + width="207" /> <text type="string" length="1" @@ -622,12 +626,24 @@ halign="center" height="16" layout="topleft" - left="245" + left_delta="0" name="BHText5" - top="21" + top_pad="5" width="10"> R </text> + <slider + control_name="WLAmbientR" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_pad="3" + top_pad="6" + name="WLAmbientR" + width="200" /> <text type="string" length="1" @@ -635,50 +651,12 @@ halign="center" height="16" layout="topleft" - left_delta="0" + left_delta="-13" name="BHText6" - top_delta="11" + top_pad="-15" width="10"> G </text> - <text - type="string" - length="1" - follows="left|top|right" - halign="center" - height="16" - layout="topleft" - left_delta="0" - name="BHText7" - top_delta="11" - width="10"> - B - </text> - <text - type="string" - length="1" - follows="left|top|right" - halign="center" - height="16" - layout="topleft" - left_delta="0" - name="BHText8" - top_delta="11" - width="10"> - I - </text> - <slider - control_name="WLAmbientR" - decimal_digits="2" - follows="left" - height="10" - increment="0.01" - initial_value="0.7" - layout="topleft" - left="259" - name="WLAmbientR" - top="40" - width="200" /> <slider control_name="WLAmbientG" decimal_digits="2" @@ -689,8 +667,22 @@ layout="topleft" left_delta="0" name="WLAmbientG" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="-13" + name="BHText7" + top_pad="-15" + width="10"> + B + </text> <slider control_name="WLAmbientB" decimal_digits="2" @@ -701,8 +693,22 @@ layout="topleft" left_delta="0" name="WLAmbientB" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="-13" + name="BHText8" + top_pad="-15" + width="10"> + I + </text> <slider control_name="WLAmbientI" decimal_digits="2" @@ -713,7 +719,8 @@ layout="topleft" left_delta="0" name="WLAmbientI" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> <text type="string" @@ -722,9 +729,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="-14" + left_delta="-13" name="WLEastAngleText" - top_delta="-2" + top_pad="-10" width="355"> East Angle </text> @@ -736,9 +743,9 @@ increment="0.01" initial_value="0.0" layout="topleft" - left="259" + left_delta="13" name="WLEastAngle" - top="107" + top_pad="27" width="200" /> <text type="string" @@ -762,10 +769,10 @@ initial_value="0.1" label="Focus " layout="topleft" - left="494" + left_delta="0" max_val="0.5" name="WLGlowB" - top="40" + top_pad="27" width="200" /> <slider control_name="WLGlowR" @@ -780,7 +787,7 @@ max_val="1.99" min_val="1" name="WLGlowR" - top_pad="1" + top_pad="6" width="200" /> <text type="string" @@ -789,9 +796,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="-14" + left_delta="0" name="SceneGammaText" - top_delta="0" + top_pad="-10" width="200"> Scene Gamma </text> @@ -803,11 +810,11 @@ increment="0.01" initial_value="2.0" layout="topleft" - left="494" + left_delta="0" max_val="10" name="WLGamma" - top="87" - width="207" /> + top_pad="27" + width="200" /> <text type="string" length="1" @@ -815,9 +822,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="-14" + left_delta="0" name="WLStarText" - top_delta="-1" + top_pad="-10" width="355"> Star Brightness </text> @@ -829,17 +836,17 @@ increment="0.01" initial_value="0" layout="topleft" - left="494" + left_delta="0" max_val="2" name="WLStarAlpha" - top="122" + top_pad="27" width="200" /> </panel> <panel border="true" follows="left|top|right|bottom" - height="160" - label="Clouds" + height="196" + label="CLOUDS" layout="topleft" left_delta="0" mouse_opaque="false" @@ -867,12 +874,24 @@ halign="center" height="16" layout="topleft" - left="10" + left_delta="0" name="BHText" - top="21" + top_pad="5" width="10"> R </text> + <slider + control_name="WLCloudColorR" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.7" + layout="topleft" + left_pad="3" + top_pad="6" + name="WLCloudColorR" + width="200" /> <text type="string" length="1" @@ -880,50 +899,12 @@ halign="center" height="16" layout="topleft" - left_delta="0" + left_delta="-13" name="BHText2" - top_delta="11" + top_pad="-15" width="10"> G </text> - <text - type="string" - length="1" - follows="left|top|right" - halign="center" - height="16" - layout="topleft" - left_delta="0" - name="BHText3" - top_delta="11" - width="10"> - B - </text> - <text - type="string" - length="1" - follows="left|top|right" - halign="center" - height="16" - layout="topleft" - left_delta="0" - name="BHText4" - top_delta="11" - width="10"> - I - </text> - <slider - control_name="WLCloudColorR" - decimal_digits="2" - follows="left" - height="10" - increment="0.01" - initial_value="0.7" - layout="topleft" - left="24" - name="WLCloudColorR" - top="40" - width="200" /> <slider control_name="WLCloudColorG" decimal_digits="2" @@ -934,8 +915,22 @@ layout="topleft" left_delta="0" name="WLCloudColorG" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="-13" + name="BHText3" + top_pad="-15" + width="10"> + B + </text> <slider control_name="WLCloudColorB" decimal_digits="2" @@ -946,8 +941,22 @@ layout="topleft" left_delta="0" name="WLCloudColorB" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="-13" + name="BHText4" + top_pad="-15" + width="10"> + I + </text> <slider control_name="WLCloudColorI" decimal_digits="2" @@ -958,7 +967,8 @@ layout="topleft" left_delta="0" name="WLCloudColorI" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> <text type="string" @@ -967,9 +977,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="-14" + left_delta="-13" name="WLCloudColorText2" - top_delta="-2" + top_pad="-10" width="355"> Cloud XY/Density </text> @@ -980,12 +990,24 @@ halign="center" height="16" layout="topleft" - left="10" + left_delta="0" name="BHText5" - top="87" + top_pad="5" width="10"> X </text> + <slider + control_name="WLCloudX" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.5" + layout="topleft" + left_pad="3" + top_pad="6" + name="WLCloudX" + width="200" /> <text type="string" length="1" @@ -993,12 +1015,24 @@ halign="center" height="16" layout="topleft" - left_delta="0" + left_delta="-13" name="BHText6" - top_delta="11" + top_pad="-15" width="10"> Y </text> + <slider + control_name="WLCloudY" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.5" + layout="topleft" + left_pad="3" + top_pad="6" + name="WLCloudY" + width="200" /> <text type="string" length="1" @@ -1006,37 +1040,13 @@ halign="center" height="16" layout="topleft" - left_delta="0" + left_delta="-13" name="BHText7" - top_delta="11" + top_pad="-15" width="10"> D </text> <slider - control_name="WLCloudX" - decimal_digits="2" - follows="left" - height="10" - increment="0.01" - initial_value="0.5" - layout="topleft" - left_pad="4" - name="WLCloudX" - top_delta="-2" - width="200" /> - <slider - control_name="WLCloudY" - decimal_digits="2" - follows="left" - height="10" - increment="0.01" - initial_value="0.5" - layout="topleft" - left_delta="0" - name="WLCloudY" - top_pad="1" - width="200" /> - <slider control_name="WLCloudDensity" decimal_digits="2" follows="left" @@ -1046,7 +1056,8 @@ layout="topleft" left_delta="0" name="WLCloudDensity" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> <text type="string" @@ -1069,9 +1080,9 @@ increment="0.01" initial_value="0.5" layout="topleft" - left="259" + left_delta="13" name="WLCloudCoverage" - top="40" + top_pad="27" width="200" /> <text type="string" @@ -1080,9 +1091,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="-14" + left_delta="-13" name="WLCloudScaleText" - top_delta="-1" + top_pad="-10" width="355"> Cloud Scale </text> @@ -1094,10 +1105,10 @@ increment="0.01" initial_value="1.0" layout="topleft" - left="259" + left_delta="13" min_val="0.01" name="WLCloudScale" - top="75" + top_pad="27" width="200" /> <text type="string" @@ -1106,9 +1117,9 @@ font="SansSerif" height="16" layout="topleft" - left_delta="-14" + left_delta="-13" name="WLCloudDetailText" - top_delta="-4" + top_pad="-10" width="355"> Cloud Detail (XY/Density) </text> @@ -1119,12 +1130,24 @@ halign="center" height="16" layout="topleft" - left="245" + left_delta="0" name="BHText8" - top="87" + top_pad="5" width="10"> X </text> + <slider + control_name="WLCloudDetailX" + decimal_digits="2" + follows="left" + height="10" + increment="0.01" + initial_value="0.5" + layout="topleft" + left_pad="3" + top_pad="6" + name="WLCloudDetailX" + width="200" /> <text type="string" length="1" @@ -1132,37 +1155,12 @@ halign="center" height="16" layout="topleft" - left_delta="0" + left_delta="-13" name="BHText9" - top_delta="11" + top_pad="-15" width="10"> Y </text> - <text - type="string" - length="1" - follows="left|top|right" - halign="center" - height="16" - layout="topleft" - left_delta="0" - name="BHText10" - top_delta="11" - width="10"> - D - </text> - <slider - control_name="WLCloudDetailX" - decimal_digits="2" - follows="left" - height="10" - increment="0.01" - initial_value="0.5" - layout="topleft" - left_pad="4" - name="WLCloudDetailX" - top_delta="-2" - width="200" /> <slider control_name="WLCloudDetailY" decimal_digits="2" @@ -1173,8 +1171,22 @@ layout="topleft" left_delta="0" name="WLCloudDetailY" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> + <text + type="string" + length="1" + follows="left|top|right" + halign="center" + height="16" + layout="topleft" + left_delta="-13" + name="BHText10" + top_pad="-15" + width="10"> + D + </text> <slider control_name="WLCloudDetailDensity" decimal_digits="2" @@ -1185,7 +1197,8 @@ layout="topleft" left_delta="0" name="WLCloudDetailDensity" - top_pad="1" + left_pad="3" + top_pad="6" width="200" /> <text type="string" diff --git a/indra/newview/skins/default/xui/en/floater_window_size.xml b/indra/newview/skins/default/xui/en/floater_window_size.xml new file mode 100644 index 0000000000..355d257785 --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_window_size.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + can_minimize="false" + can_resize="false" + height="105" + layout="topleft" + name="window_size" + title="WINDOW SIZE" + width="205"> + <string name="resolution_format">[RES_X] x [RES_Y]</string> + <text + follows="top|left" + font="SansSerif" + height="16" + left="15" + top="10" + name="windowsize_text" + width="280"> + Set window size: + </text> + <combo_box + allow_text_entry="true" + height="23" + follows="left|top" + left_delta="0" + max_chars="20" + name="window_size_combo" + tool_tip="width x height" + top_pad="5" + width="179"> + <combo_box.item + label="1000 x 700 (default)" + name="item0" + value="1000 x 700" /> + <combo_box.item + label="1024 x 768" + name="item1" + value="1024 x 768" /> + <combo_box.item + label="1280 x 720 (720p)" + name="item2" + value="1280 x 720" /> + <combo_box.item + label="1920 x 1080 (1080p)" + name="item3" + value="1920 x 1080" /> + </combo_box> + <button + follows="right|bottom" + height="23" + label="Set" + left_delta="0" + name="set_btn" + top_pad="10" + width="85" /> + <button + follows="right|bottom" + height="23" + label="Cancel" + left_pad="5" + name="cancel_btn" + top_delta="0" + width="85" /> +</floater> 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 8904d4f49c..86ac7c8e54 100644 --- a/indra/newview/skins/default/xui/en/floater_world_map.xml +++ b/indra/newview/skins/default/xui/en/floater_world_map.xml @@ -4,7 +4,7 @@ can_resize="true" center_horiz="true" center_vert="true" - height="535" + height="600" layout="topleft" min_height="520" min_width="520" @@ -14,16 +14,16 @@ save_visibility="true" single_instance="true" title="WORLD MAP" - width="800"> + width="650"> <panel filename="panel_world_map.xml" follows="all" - height="500" + height="555" layout="topleft" left="10" name="objects_mapview" top="25" - width="542" /> + width="375" /> <panel name="layout_panel_1" height="22" @@ -77,7 +77,7 @@ top_delta="6" left_pad="5" layout="topleft" - name="person_label" + name="me_label" width="90"> Me </text> @@ -196,7 +196,7 @@ height="16" layout="topleft" left_pad="0" - name="auction_label" + name="by_owner_label" top_delta="3" width="100"> by owner @@ -279,12 +279,12 @@ <icon follows="top|right" height="16" - image_name="map_event.tga" + image_name="Parcel_PG_Dark" layout="topleft" mouse_opaque="true" name="event" left_pad="0" - width="16" /> + width="18" /> <text type="string" length="1" @@ -312,13 +312,13 @@ <icon follows="top|right" height="16" - image_name="map_event_mature.tga" + image_name="Parcel_M_Dark" layout="topleft" mouse_opaque="true" name="events_mature_icon" top_delta="0" left_pad="0" - width="16" /> + width="18" /> <text type="string" length="1" @@ -345,13 +345,13 @@ <icon follows="top|right" height="16" - image_name="map_event_adult.tga" + image_name="Parcel_R_Dark" layout="topleft" left_pad="0" mouse_opaque="true" name="events_adult_icon" top_delta="0" - width="16" /> + width="18" /> <text type="string" length="1" @@ -394,7 +394,7 @@ <panel follows="right|top|bottom" - height="270" + height="310" top_pad="0" width="238"> <icon @@ -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,15 +497,28 @@ <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" follows="all" - height="115" + height="145" 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" diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml index 996d0f1b72..194ae151d2 100644 --- a/indra/newview/skins/default/xui/en/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml @@ -54,18 +54,20 @@ width="175" use_ellipses="true" /> <text - follows="all" + follows="left|top|right" height="35" left="8" name="user_details" + right="-10" word_wrap="true" top_pad="6" + use_ellipses="true" width="220">This is my second life description and I really think it is great. </text> <slider follows="top|left" height="23" - increment="0.05" + increment="0.01" left="1" max_val="0.95" min_val="0.05" @@ -121,7 +123,7 @@ <button follows="top|left" height="20" - label="More" + label="Profile" layout="topleft" name="view_profile_btn" left_delta="96" diff --git a/indra/newview/skins/default/xui/en/inspect_toast.xml b/indra/newview/skins/default/xui/en/inspect_toast.xml new file mode 100644 index 0000000000..0221397a8c --- /dev/null +++ b/indra/newview/skins/default/xui/en/inspect_toast.xml @@ -0,0 +1,19 @@ +<?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 + legacy_header_height="25" + bevel_style="in" + bg_opaque_image="Inspector_Background" + can_close="false" + can_minimize="false" + height="148" + layout="topleft" + name="inspect_toast" + single_instance="true" + sound_flags="0" + visible="true" + width="228"> +</floater> diff --git a/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml new file mode 100644 index 0000000000..39fb54d513 --- /dev/null +++ b/indra/newview/skins/default/xui/en/inspector_info_ctrl.xml @@ -0,0 +1,9 @@ +<button + chrome="true" + image_selected="Info_Small" + image_unselected="Info_Small" + image_pressed="Info_Small" + height="12" + name="inspector_info_ctrl" + width="12" /> +
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml index 65a545d2ed..7b6081d7be 100644 --- a/indra/newview/skins/default/xui/en/main_view.xml +++ b/indra/newview/skins/default/xui/en/main_view.xml @@ -5,6 +5,7 @@ layout="topleft" left="0" mouse_opaque="false" + tab_stop="false" name="main_view" width="1024"> <layout_stack border_size="0" @@ -15,9 +16,10 @@ orientation="vertical" top="19"> <layout_panel auto_resize="false" - height="65" + height="60" mouse_opaque="false" name="nav_bar_container" + tab_stop="false" width="1024" user_resize="false" visible="false"> @@ -27,6 +29,7 @@ height="500" layout="topleft" mouse_opaque="false" + tab_stop="false" name="hud" width="1024"> <layout_stack border_size="0" @@ -38,11 +41,12 @@ orientation="horizontal" top="0" width="1024"> - <panel auto_resize="true" + <layout_panel auto_resize="true" follows="all" height="500" layout="topleft" mouse_opaque="false" + tab_stop="false" name="non_side_tray_view" user_resize="false" width="500"> @@ -60,19 +64,22 @@ left="0" mouse_opaque="false" name="world_stack" - orientation="vertical"> + orientation="vertical" + tab_stop="false"> <panel auto_resize="true" follows="all" height="500" layout="topleft" + tab_stop="false" mouse_opaque="false" - name="hud container" + name="hud container" width="500"> <panel follows="right|top|bottom" height="500" mouse_opaque="false" name="side_bar_tabs" right="500" + tab_stop="false" top="0" width="32"/> <panel bottom="500" @@ -80,6 +87,7 @@ height="25" left="0" mouse_opaque="false" + tab_stop="false" name="stand_stop_flying_container" visible="false" width="500"/> @@ -91,13 +99,14 @@ name="bottom_tray_container" visible="false"/> </layout_stack> - </panel> + </layout_panel> <!-- side tray --> <layout_panel auto_resize="false" follows="all" height="500" min_width="333" mouse_opaque="false" + tab_stop="false" name="side_tray_container" user_resize="false" visible="false" @@ -132,8 +141,9 @@ </layout_panel> </layout_stack> <panel mouse_opaque="false" - follows="left|right|top" + follows="left|right|top" name="status_bar_container" + tab_stop="false" height="19" left="0" top="0" @@ -152,6 +162,12 @@ mouse_opaque="false" name="Menu Holder" width="1024"/> + <panel top="0" + follows="all" + height="768" + mouse_opaque="false" + name="popup_holder" + width="1024"/> <snapshot_floater_view enabled="false" follows="all" height="768" 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 5b94645b60..c5b31c7f63 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 0ad41546d2..ac9101cfd9 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_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml index 9212d2d648..1e32cfd9df 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_gesture_gear.xml b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml index 4642e82c0b..649f0edff7 100644 --- a/indra/newview/skins/default/xui/en/menu_gesture_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_gesture_gear.xml @@ -17,7 +17,7 @@ layout="topleft" name="copy_gesture"> <on_click - function="Gesture.Action.CopyPast" + function="Gesture.Action.CopyPaste" parameter="copy_gesture" /> <on_enable function="Gesture.EnableAction" @@ -28,7 +28,7 @@ layout="topleft" name="paste"> <on_click - function="Gesture.Action.CopyPast" + function="Gesture.Action.CopyPaste" parameter="paste" /> <on_enable function="Gesture.EnableAction" @@ -39,7 +39,7 @@ layout="topleft" name="copy_uuid"> <on_click - function="Gesture.Action.CopyPast" + function="Gesture.Action.CopyPaste" parameter="copy_uuid" /> <on_enable function="Gesture.EnableAction" @@ -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> 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 01df208850..1b002b1c32 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 @@ -30,6 +30,10 @@ label="Call" enabled="true" 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" @@ -112,4 +116,10 @@ <menu_item_call.on_click function="InspectAvatar.Pay"/> </menu_item_call> + <menu_item_call + label="Share" + name="share"> + <menu_item_call.on_click + function="InspectAvatar.Share"/> + </menu_item_call> </menu> diff --git a/indra/newview/skins/default/xui/en/menu_inventory.xml b/indra/newview/skins/default/xui/en/menu_inventory.xml index d29dfa7034..2874151df5 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory.xml @@ -85,7 +85,7 @@ parameter="lsl" /> </menu_item_call> <menu_item_call - label="New Note" + label="New Notecard" layout="topleft" name="New Note"> <menu_item_call.on_click @@ -370,6 +370,14 @@ layout="topleft" name="Outfit Separator" /> <menu_item_call + label="Find Original" + layout="topleft" + name="Find Original"> + <menu_item_call.on_click + function="Inventory.DoToSelected" + parameter="goto" /> + </menu_item_call> + <menu_item_call label="Purge Item" layout="topleft" name="Purge Item"> @@ -386,14 +394,6 @@ parameter="restore" /> </menu_item_call> <menu_item_call - label="Find Original" - layout="topleft" - name="Find Original"> - <menu_item_call.on_click - function="Inventory.DoToSelected" - parameter="goto" /> - </menu_item_call> - <menu_item_call label="Open" layout="topleft" name="Open"> @@ -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/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml index b07a8bb512..5ad099e2d9 100644 --- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml +++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml @@ -71,7 +71,7 @@ parameter="lsl" /> </menu_item_call> <menu_item_call - label="New Note" + label="New Notecard" layout="topleft" name="New Note"> <menu_item_call.on_click diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index 7a0b11872a..ba74104594 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" @@ -58,6 +60,7 @@ </menu_item_call> </menu> <menu + visible="false" create_jump_keys="true" label="Debug" name="Debug" @@ -194,6 +197,7 @@ <menu_item_call label="Textbox" name="Textbox" + translate="false" shortcut="control|1"> <menu_item_call.on_click function="Floater.Show" @@ -202,6 +206,7 @@ <menu_item_call label="Text Editor" name="Text Editor" + translate="false" shortcut="control|2"> <menu_item_call.on_click function="Floater.Show" @@ -210,6 +215,7 @@ <menu_item_call label="Widgets" name="Widgets" + translate="false" shortcut="control|shift|T"> <menu_item_call.on_click function="Floater.Show" @@ -217,12 +223,14 @@ </menu_item_call> <menu_item_call label="Inspectors" + translate="false" name="Inspectors"> <menu_item_call.on_click function="Floater.Show" parameter="test_inspectors" /> </menu_item_call> </menu> +<!-- <menu_item_check label="Reg In Client Test (restart)" name="Reg In Client Test (restart)"> @@ -232,7 +240,15 @@ function="ToggleControl" parameter="RegInClient" /> </menu_item_check> +--> <menu_item_separator /> + <menu_item_call + label="Set Window Size..." + name="Set Window Size..."> + <menu_item_call.on_click + function="Floater.Show" + parameter="window_size" /> + </menu_item_call> <menu_item_call label="Show TOS" name="TOS"> diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml index 62500c5116..2c97112e38 100644 --- a/indra/newview/skins/default/xui/en/menu_object.xml +++ b/indra/newview/skins/default/xui/en/menu_object.xml @@ -44,11 +44,24 @@ name="Object Sit"> <menu_item_call.on_click function="Object.SitOrStand" /> + <menu_item_call.on_visible + function="Object.SitVisible" /> <menu_item_call.on_enable function="Object.EnableSitOrStand" - name="EnableSitOrStand" - parameter="Sit Here,Stand Up" /> - </menu_item_call> + name="EnableSitOrStand" /> + </menu_item_call> + <menu_item_call + enabled="false" + label="Stand Up" + name="Object Stand Up"> + <menu_item_call.on_click + function="Object.SitOrStand" /> + <menu_item_call.on_visible + function="Object.StandUpVisible" /> + <menu_item_call.on_enable + function="Object.EnableSitOrStand" + name="EnableSitOrStand" /> + </menu_item_call> <menu_item_call label="Object Profile" name="Object Inspect"> @@ -57,9 +70,15 @@ <menu_item_call.on_enable function="Object.EnableInspect" /> </menu_item_call> + <menu_item_call + label="Zoom In" + name="Zoom In"> + <menu_item_call.on_click + function="Object.ZoomIn" /> + </menu_item_call> <menu_item_separator layout="topleft" /> <context_menu - label="Put On >" + label="Put On ▶" name="Put On" > <menu_item_call enabled="false" @@ -71,26 +90,16 @@ 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" name="Report Abuse..."> @@ -129,6 +138,28 @@ </context_menu> <menu_item_separator layout="topleft" /> <menu_item_call + label="Buy" + layout="topleft" + name="Pie Object Bye"> + <menu_item_call.on_click + function="Tools.BuyOrTake"/> + <menu_item_call.on_visible + function="Tools.VisibleBuyObject"/> + <menu_item_call.on_enable + function="Tools.EnableBuyOrTake"/> + </menu_item_call> + <menu_item_call + label="Take" + layout="topleft" + name="Pie Object Take"> + <menu_item_call.on_click + function="Tools.BuyOrTake"/> + <menu_item_call.on_visible + function="Tools.VisibleTakeObject"/> + <menu_item_call.on_enable + function="Tools.EnableBuyOrTake"/> + </menu_item_call> + <menu_item_call enabled="false" label="Take Copy" name="Take Copy"> 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 31263fbea8..d03a7e3d41 100644 --- a/indra/newview/skins/default/xui/en/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml @@ -47,6 +47,9 @@ name="IM"> <menu_item_call.on_click function="Avatar.IM" /> + <menu_item_call.on_enable + function="ParticipantList.EnableItem" + parameter="can_im" /> </menu_item_call> <menu_item_call label="Call" @@ -65,6 +68,9 @@ name="Share"> <menu_item_call.on_click function="Avatar.Share" /> + <menu_item_call.on_enable + function="ParticipantList.EnableItem" + parameter="can_share" /> </menu_item_call> <menu_item_call label="Pay" @@ -72,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" /> diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby.xml b/indra/newview/skins/default/xui/en/menu_people_nearby.xml index 5f2e6e0f6c..014a52bb4f 100644 --- a/indra/newview/skins/default/xui/en/menu_people_nearby.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby.xml @@ -20,6 +20,16 @@ parameter="can_add" /> </menu_item_call> <menu_item_call + label="Remove Friend" + layout="topleft" + name="Remove Friend"> + <menu_item_call.on_click + function="Avatar.RemoveFriend" /> + <menu_item_call.on_enable + function="Avatar.EnableItem" + parameter="can_delete" /> + </menu_item_call> + <menu_item_call label="IM" layout="topleft" name="IM"> @@ -37,6 +47,16 @@ parameter="can_call" /> </menu_item_call> <menu_item_call + label="Map" + layout="topleft" + name="Map"> + <menu_item_call.on_click + function="Avatar.ShowOnMap" /> + <menu_item_call.on_enable + function="Avatar.EnableItem" + parameter="can_show_on_map" /> + </menu_item_call> + <menu_item_call label="Share" layout="topleft" name="Share"> @@ -63,4 +83,10 @@ function="Avatar.EnableItem" parameter="can_block" /> </menu_item_check> + <menu_item_call + label="Offer Teleport" + name="teleport"> + <menu_item_call.on_click + function="Avatar.OfferTeleport"/> + </menu_item_call> </context_menu> diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml index 0d3dd3366d..588342595e 100644 --- a/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/en/menu_people_nearby_multiselect.xml @@ -14,6 +14,16 @@ parameter="can_add" /> </menu_item_call> <menu_item_call + label="Remove Friends" + layout="topleft" + name="Remove Friend"> + <menu_item_call.on_click + function="Avatar.RemoveFriend" /> + <menu_item_call.on_enable + function="Avatar.EnableItem" + parameter="can_delete" /> + </menu_item_call> + <menu_item_call label="IM" layout="topleft" name="IM"> diff --git a/indra/newview/skins/default/xui/en/menu_picks_plus.xml b/indra/newview/skins/default/xui/en/menu_picks_plus.xml index 3065239615..f3b207e36c 100644 --- a/indra/newview/skins/default/xui/en/menu_picks_plus.xml +++ b/indra/newview/skins/default/xui/en/menu_picks_plus.xml @@ -11,6 +11,9 @@ <menu_item_call.on_click function="Picks.Plus.Action" userdata="new_pick" /> + <menu_item_call.on_enable + function="Picks.Plus.Enable" + userdata="new_pick" /> </menu_item_call> <menu_item_call name="create_classified" diff --git a/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml index 9b3948b29b..3e38503e43 100644 --- a/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml +++ b/indra/newview/skins/default/xui/en/menu_places_gear_folder.xml @@ -45,6 +45,9 @@ <on_click function="Places.LandmarksGear.CopyPaste.Action" parameter="copy" /> + <on_enable + function="Places.LandmarksGear.Enable" + parameter="copy" /> </menu_item_call> <menu_item_call label="Paste" @@ -88,6 +91,9 @@ <on_click function="Places.LandmarksGear.Folding.Action" parameter="expand" /> + <on_enable + function="Places.LandmarksGear.Enable" + parameter="expand" /> </menu_item_call> <menu_item_call label="Collapse" @@ -96,6 +102,9 @@ <on_click function="Places.LandmarksGear.Folding.Action" parameter="collapse" /> + <on_enable + function="Places.LandmarksGear.Enable" + parameter="collapse" /> </menu_item_call> <menu_item_call label="Expand all folders" 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 1dc1c610cf..5162a4902f 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,22 @@ <menu_item_call.on_click function="Profile.Share" /> </menu_item_call> + <menu_item_call + label="Block" + name="block"> + <menu_item_call.on_click + function="Profile.BlockUnblock"/> + <menu_item_call.on_visible + function="Profile.EnableBlock" /> + </menu_item_call> + <menu_item_call + label="Unblock" + name="unblock"> + <menu_item_call.on_click + function="Profile.BlockUnblock"/> + <menu_item_call.on_visible + function="Profile.EnableUnblock" /> + </menu_item_call> <menu_item_call label="Kick" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml index 6768d7fccb..134b331514 100644 --- a/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml @@ -13,12 +13,18 @@ name="Expand all folders"> <menu_item_call.on_click function="TeleportHistory.ExpandAllFolders" /> + <on_enable + function="TeleportHistory.GearMenu.Enable" + parameter="expand_all" /> </menu_item_call> <menu_item_call label="Collapse all folders" name="Collapse all folders"> <menu_item_call.on_click function="TeleportHistory.CollapseAllFolders" /> + <on_enable + function="TeleportHistory.GearMenu.Enable" + parameter="collapse_all" /> </menu_item_call> <menu_item_separator layout="topleft" /> <menu_item_call diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 0640ae21de..158e764eae 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -55,9 +55,10 @@ </menu_item_call> <menu_item_check label="My Inventory" - layout="topleft" name="Inventory" - shortcut="control|shift|I"> + layout="topleft" + shortcut="control|shift|I" + visible="false"> <menu_item_check.on_check function="Floater.Visible" parameter="inventory" /> @@ -65,24 +66,31 @@ function="Floater.Toggle" parameter="inventory" /> </menu_item_check> - <menu_item_call - label="Show Inventory in Side Tray" + <menu_item_check + label="My Inventory" name="ShowSidetrayInventory" + layout="topleft" shortcut="control|I" - visible="false"> - <menu_item_call.on_click + visible="true"> + <menu_item_check.on_check + function="SidetrayPanelVisible" + parameter="sidepanel_inventory" /> + <menu_item_check.on_click function="ShowSidetrayPanel" parameter="sidepanel_inventory" /> - </menu_item_call> - <menu_item_call + </menu_item_check> + <menu_item_check label="My Gestures" layout="topleft" name="Gestures" shortcut="control|G"> - <menu_item_call.on_click + <menu_item_check.on_check + function="Floater.Visible" + parameter="gestures" /> + <menu_item_check.on_click function="Floater.Toggle" parameter="gestures" /> - </menu_item_call> + </menu_item_check> <menu label="My Status" layout="topleft" @@ -186,52 +194,6 @@ function="SideTray.PanelPeopleTab" parameter="nearby_panel" /> </menu_item_call> - <menu_item_check - label="Nearby Media" - layout="topleft" - name="Nearby Media" - shortcut="control|alt|N"> - <menu_item_check.on_check - function="Floater.Visible" - parameter="nearby_media" /> - <menu_item_check.on_click - function="Floater.Toggle" - parameter="nearby_media" /> - </menu_item_check> - <!--menu_item_check - label="Block List" - layout="topleft" - name="Mute List"> - <menu_item_check.on_check - function="Floater.Visible" - parameter="mute" /> - <menu_item_check.on_click - function="Floater.Toggle" - parameter="mute" /> - </menu_item_check--> - <menu_item_separator - layout="topleft" /> - <menu_item_check - label="(Legacy) Communicate" - layout="topleft" - name="Instant Message" - shortcut="control|T"> - <menu_item_check.on_check - function="Floater.Visible" - parameter="communicate" /> - <menu_item_check.on_click - function="Floater.Toggle" - parameter="communicate" /> - </menu_item_check> - <menu_item_call - label="(Temp) Media Remote Ctrl" - layout="topleft" - name="Preferences" - shortcut="control|alt|M"> - <menu_item_call.on_click - function="Floater.Toggle" - parameter="media_remote_ctrl" /> - </menu_item_call> </menu> <menu label="World" @@ -283,7 +245,7 @@ </menu_item_call> <menu create_jump_keys="true" - label="About This Place" + label="Place Profile" layout="topleft" name="Land" tear_off="true"> @@ -307,7 +269,7 @@ <menu_item_separator layout="topleft" /> <menu_item_call - label="Buy Land" + label="Buy This Land" layout="topleft" name="Buy Land"> <menu_item_call.on_click @@ -327,7 +289,7 @@ create_jump_keys="true" label="Show" layout="topleft" - name="Land" + name="LandShow" tear_off="true"> <menu_item_check label="Move Controls" @@ -337,8 +299,7 @@ function="Floater.Visible" parameter="moveview" /> <menu_item_check.on_click - function="Floater.Toggle" - parameter="moveview" /> + function="World.Toggle.MovementControls" /> </menu_item_check> <menu_item_check label="View Controls" @@ -348,8 +309,7 @@ function="Floater.Visible" parameter="camera" /> <menu_item_check.on_click - function="Floater.Toggle" - parameter="camera" /> + function="World.Toggle.CameraControls" /> </menu_item_check> <menu_item_check label="Ban Lines" @@ -394,6 +354,24 @@ function="ToggleControl" parameter="ShowParcelOwners" /> </menu_item_check> + <menu_item_check + label="Coordinates" + name="Coordinates"> + <menu_item_check.on_click + function="ToggleControl" + parameter="NavBarShowCoordinates" /> + <menu_item_check.on_check + control="NavBarShowCoordinates" /> + </menu_item_check> + <menu_item_check + label="Parcel Properties" + name="Parcel Properties"> + <menu_item_check.on_click + function="ToggleControl" + parameter="NavBarShowParcelProperties" /> + <menu_item_check.on_check + control="NavBarShowParcelProperties" /> + </menu_item_check> </menu> <menu_item_separator layout="topleft" /> @@ -696,6 +674,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 @@ -729,16 +719,26 @@ name="Object" tear_off="true"> <menu_item_call - label="Buy" - layout="topleft" - name="Menu Object Take" - visible="true"> - <menu_item_call.on_click - function="Tools.BuyOrTake" /> - <menu_item_call.on_enable - function="Tools.EnableBuyOrTake" - name="EnableBuyOrTake" - parameter="Buy,Take" /> + label="Buy" + layout="topleft" + name="Menu Object Buy"> + <menu_item_call.on_click + function="Tools.BuyOrTake"/> + <menu_item_call.on_visible + function="Tools.VisibleBuyObject"/> + <menu_item_call.on_enable + function="Tools.EnableBuyOrTake"/> + </menu_item_call> + <menu_item_call + label="Take" + layout="topleft" + name="Menu Object Take"> + <menu_item_call.on_click + function="Tools.BuyOrTake"/> + <menu_item_call.on_visible + function="Tools.VisibleTakeObject"/> + <menu_item_call.on_enable + function="Tools.EnableBuyOrTake"/> </menu_item_call> <menu_item_call label="Take Copy" @@ -833,18 +833,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" @@ -853,10 +841,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" /> @@ -866,13 +854,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"> @@ -900,14 +882,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" @@ -936,13 +913,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" @@ -987,7 +959,6 @@ <menu_item_call.on_enable function="Tools.EnableToolNotPie" /> </menu_item_call> - </menu> </menu> <menu create_jump_keys="true" @@ -1119,6 +1090,13 @@ <menu_item_call.on_click function="View.DefaultUISize" /> </menu_item_call> + <menu_item_call + label="Set Window Size..." + name="Set Window Size..."> + <menu_item_call.on_click + function="Floater.Show" + parameter="window_size" /> + </menu_item_call> <menu_item_separator/> <menu_item_check label="Limit Select Distance" @@ -1630,17 +1608,6 @@ function="ToggleControl" parameter="MouseSmooth" /> </menu_item_check> - <menu_item_check - label="Show IMs in Nearby Chat" - layout="topleft" - name="IMInChat"> - <menu_item_check.on_check - function="CheckControl" - parameter="IMInChat" /> - <menu_item_check.on_click - function="ToggleControl" - parameter="IMInChat" /> - </menu_item_check> <menu_item_separator layout="topleft" /> <menu @@ -1649,6 +1616,17 @@ name="Shortcuts" tear_off="true" visible="false"> + <menu_item_call + label="Image (L$[COST])..." + layout="topleft" + name="Upload Image" + shortcut="control|U"> + <menu_item_call.on_click + function="File.UploadImage" + parameter="" /> + <menu_item_call.on_enable + function="File.EnableUpload" /> + </menu_item_call> <menu_item_check label="Search" layout="topleft" @@ -2053,6 +2031,18 @@ function="Advanced.ToggleHUDInfo" parameter="fov" /> </menu_item_check> + <menu_item_check + label="Badge" + layout="topleft" + name="Badge" + shortcut="alt|control|shift|h"> + <menu_item_check.on_check + function="Advanced.CheckHUDInfo" + parameter="badge" /> + <menu_item_check.on_click + function="Advanced.ToggleHUDInfo" + parameter="badge" /> + </menu_item_check> </menu> <menu create_jump_keys="true" @@ -2809,8 +2799,7 @@ <menu_item_call label="Dump Focus Holder" layout="topleft" - name="Dump Focus Holder" - shortcut="control|alt|F"> + name="Dump Focus Holder"> <menu_item_call.on_click function="Advanced.DumpFocusHolder" /> </menu_item_call> diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 9d3c31c4e6..936f4a3fab 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -19,7 +19,7 @@ <button default="true" index="0" - name="OK" + name="OK_okbutton" text="$yestext"/> </form> </template> @@ -29,7 +29,7 @@ <button default="true" index="0" - name="OK" + name="OK_okignore" text="$yestext"/> <ignore text="$ignoretext"/> </form> @@ -40,11 +40,11 @@ <button default="true" index="0" - name="OK" + name="OK_okcancelbuttons" text="$yestext"/> <button index="1" - name="Cancel" + name="Cancel_okcancelbuttons" text="$notext"/> </form> </template> @@ -54,11 +54,11 @@ <button default="true" index="0" - name="OK" + name="OK_okcancelignore" text="$yestext"/> <button index="1" - name="Cancel" + name="Cancel_okcancelignore" text="$notext"/> <ignore text="$ignoretext"/> </form> @@ -69,7 +69,7 @@ <button default="true" index="0" - name="OK" + name="OK_okhelpbuttons" text="$yestext"/> <button index="1" @@ -91,7 +91,7 @@ text="$notext"/> <button index="2" - name="Cancel" + name="Cancel_yesnocancelbuttons" text="$canceltext"/> </form> </template> @@ -157,7 +157,7 @@ No tutorial is currently available. An error occurred while updating [APP_NAME]. Please [http://get.secondlife.com download the latest version] of the Viewer. <usetemplate name="okbutton" - yestext="Ok"/> + yestext="OK"/> </notification> <notification @@ -169,7 +169,7 @@ Could not connect to the [SECOND_LIFE_GRID]. Make sure your Internet connection is working properly. <usetemplate name="okbutton" - yestext="Ok"/> + yestext="OK"/> </notification> <notification @@ -179,7 +179,7 @@ Make sure your Internet connection is working properly. Message Template [PATH] not found. <usetemplate name="okbutton" - yestext="Ok"/> + yestext="OK"/> </notification> <notification @@ -244,9 +244,19 @@ Save all changes to clothing/body parts? <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" type="alertmodal"> -Granting modify rights to another resident allows them to change, delete or take ANY objects you may have in-world. Be VERY careful when handing out this permission. +Granting modify rights to another Resident allows them to change, delete or take ANY objects you may have in-world. Be VERY careful when handing out this permission. Do you want to grant modify rights for [FIRST_NAME] [LAST_NAME]? <usetemplate name="okcancelbuttons" @@ -258,7 +268,7 @@ Do you want to grant modify rights for [FIRST_NAME] [LAST_NAME]? icon="alertmodal.tga" name="GrantModifyRightsMultiple" type="alertmodal"> -Granting modify rights to another resident allows them to change ANY objects you may have in-world. Be VERY careful when handing out this permission. +Granting modify rights to another Resident allows them to change ANY objects you may have in-world. Be VERY careful when handing out this permission. Do you want to grant modify rights for the selected Residents? <usetemplate name="okcancelbuttons" @@ -381,19 +391,23 @@ Add this Ability to '[ROLE_NAME]'? notext="No" yestext="Yes"/> </notification> - <notification - icon="alertmodal.tga" - name="ClickUnimplemented" - type="alertmodal"> -Sorry, not implemented yet. + icon="alertmodal.tga" + name="JoinGroupCanAfford" + type="alertmodal"> +Joining this group costs L$[COST]. +Do you wish to proceed? + <usetemplate + name="okcancelbuttons" + notext="Cancel" + yestext="Join"/> </notification> <notification icon="alertmodal.tga" - name="JoinGroupCanAfford" + name="JoinGroupNoCost" type="alertmodal"> -Joining this group costs L$[COST]. +You are joining group [NAME]. Do you wish to proceed? <usetemplate name="okcancelbuttons" @@ -401,6 +415,7 @@ Do you wish to proceed? yestext="Join"/> </notification> + <notification icon="alertmodal.tga" name="JoinGroupCannotAfford" @@ -599,7 +614,7 @@ To place the media on only one face, choose Select Face and click on the desired notext="Cancel" yestext="OK"/> </notification> - + <notification icon="alertmodal.tga" name="MustBeInParcel" @@ -773,6 +788,16 @@ Save changes to classified [NAME]? <notification icon="alertmodal.tga" + name="ClassifiedInsufficientFunds" + type="alertmodal"> +Insufficient funds to create classified. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alertmodal.tga" name="DeleteAvatarPick" type="alertmodal"> Delete pick [PICK]? @@ -811,6 +836,7 @@ Please select a proposal to view. Please select a history item to view. </notification> +<!-- <notification icon="alertmodal.tga" name="ResetShowNextTimeDialogs" @@ -832,6 +858,7 @@ Would you like to disable all popups which can be skipped? notext="Cancel" yestext="OK"/> </notification> +--> <notification icon="alertmodal.tga" @@ -1007,10 +1034,9 @@ Unable to write file [[FILE]] icon="alertmodal.tga" name="UnsupportedHardware" type="alertmodal"> -Warning: Your system does not meet [APP_NAME]'s minimum system requirements. If you continue using [APP_NAME], you may experience poor performance. Unfortunately, the [SUPPORT_SITE] cannot provide technical support for unsupported system configurations. +Just so you know, your computer does not meet [APP_NAME]'s minimum system requirements. You may experience poor performance. Unfortunately, the [SUPPORT_SITE] can't provide technical support for unsupported system configurations. -MINSPECS -Do you wish to visit [_URL] for more information? +Visit [_URL] for more information? <url option="0" name="url"> http://www.secondlife.com/corporate/sysreqs.php @@ -1026,8 +1052,8 @@ Do you wish to visit [_URL] for more information? icon="alertmodal.tga" name="UnknownGPU" type="alertmodal"> -Your system contains a graphics card that is unknown to [APP_NAME] at this time. -This is often the case with new hardware that hasn't been tested yet with [APP_NAME]. [APP_NAME] will most likely run properly, but you may need to adjust your graphics settings to something more appropriate. +Your system contains a graphics card that [APP_NAME] doesn't recognize. +This is often the case with new hardware that hasn't been tested yet with [APP_NAME]. It will probably be ok, but you may need to adjust your graphics settings. (Me > Preferences > Graphics). <form name="form"> <ignore name="ignore" @@ -1400,6 +1426,16 @@ You have added "[LANDMARK_NAME]" to your [FOLDER_NAME] folder. </notification> <notification + icon="alert.tga" + name="LandmarkAlreadyExists" + type="alert"> +You already have a landmark for this location. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification icon="alertmodal.tga" name="CannotCreateLandmarkNotOwner" type="alertmodal"> @@ -1495,7 +1531,7 @@ Your search terms were too short so no search was performed. icon="alertmodal.tga" name="CouldNotTeleportReason" type="alertmodal"> -Could not teleport. +Teleport failed. [REASON] </notification> @@ -1597,7 +1633,8 @@ Unable to force land ownership because selection spans multiple regions. Please icon="alertmodal.tga" name="ForceOwnerAuctionWarning" type="alertmodal"> -This parcel is up for auction. Forcing ownership will cancel the auction and potentially make some residents unhappy if bidding has begun. Force ownership? +This parcel is up for auction. Forcing ownership will cancel the auction and potentially make some Residents unhappy if bidding has begun. +Force ownership? <usetemplate name="okcancelbuttons" notext="Cancel" @@ -1695,21 +1732,6 @@ Try selecting a single parcel. <notification icon="alertmodal.tga" - name="ParcelCanPlayMedia" - type="alertmodal"> -This location can play streaming media. -Streaming media requires a fast Internet connection. - -Play streaming media when available? -(You can change this option later under Preferences > Privacy.) - <usetemplate - name="okcancelbuttons" - notext="Disable" - yestext="Play Media"/> - </notification> - - <notification - icon="alertmodal.tga" name="CannotDeedLandWaitingForServer" type="alertmodal"> Unable to deed land: @@ -1947,9 +1969,8 @@ This is usually a temporary failure. Please customize and save the wearable agai icon="alertmodal.tga" name="YouHaveBeenLoggedOut" type="alertmodal"> -You have been logged out of [SECOND_LIFE]: +Darn. You have been logged out of [SECOND_LIFE] [MESSAGE] -You can still look at existing IM and chat by clicking 'View IM & Chat'. Otherwise, click 'Quit' to exit [APP_NAME] immediately. <usetemplate name="okcancelbuttons" notext="Quit" @@ -2275,6 +2296,9 @@ Display settings have been set to recommended levels based on your system config name="ErrorMessage" type="alertmodal"> [ERROR_MESSAGE] + <usetemplate + name="okbutton" + yestext="OK"/> </notification> <notification @@ -2908,7 +2932,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" @@ -2917,6 +2940,16 @@ You have reached your maximum number of groups. Please leave another group befor <notification icon="alert.tga" + name="JoinedTooManyGroups" + type="alert"> +You have reached your maximum number of groups. Please leave some group before joining or creating a new one. + <usetemplate + name="okbutton" + yestext="OK"/> + </notification> + + <notification + icon="alert.tga" name="KickUser" type="alert"> Kick this user with what message? @@ -3045,7 +3078,7 @@ Join me in [REGION] icon="alertmodal.tga" name="TeleportFromLandmark" type="alertmodal"> -Are you sure you want to teleport? +Are you sure you want to teleport to <nolink>[LOCATION]</nolink>? <usetemplate ignoretext="Confirm that I want to teleport to a landmark" name="okcancelignore" @@ -3553,7 +3586,7 @@ Type a short announcement which will be sent to everyone in this region. The maturity rating for this region has been updated. It may take some time for the change to be reflected on the map. -To enter Adult regions, residents must be Account Verified, either by age-verification or payment-verification. +To enter Adult regions, Residents must be Account Verified, either by age-verification or payment-verification. </notification> <notification @@ -3805,10 +3838,10 @@ Are you sure you want to quit? <notification icon="alertmodal.tga" name="HelpReportAbuseEmailLL" - type="alertmodal"> + type="alert"> 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> @@ -4543,8 +4576,8 @@ Click on any landmark to select it, then click 'Teleport' at the botto icon="notifytip.tga" name="TeleportToPerson" type="notifytip"> -You can contact residents like '[NAME]' by opening the People panel on the right side of your screen. -Select the resident from the list, then click 'IM' at the bottom of the panel. +You can contact Residents like '[NAME]' by opening the People panel on the right side of your screen. +Select the Resident from the list, then click 'IM' at the bottom of the panel. (You can also double-click on their name in the list, or right-click and choose 'IM'). </notification> @@ -4601,7 +4634,7 @@ Please select at least one type of content to search (General, Moderate, or Adul type="notify"> [MESSAGE] </notification> - + <notification icon="notify.tga" name="EventNotification" @@ -4693,7 +4726,7 @@ The objects on the selected parcel of land that is owned by [FIRST] [LAST] have icon="notify.tga" name="OtherObjectsReturned2" type="notify"> -The objects on the selected parcel of land owned by the resident '[NAME]' have been returned to their owner. +The objects on the selected parcel of land owned by the Resident '[NAME]' have been returned to their owner. </notification> <notification @@ -4717,7 +4750,7 @@ The objects on the selected parcel that are NOT owned by you have been returned name="ServerObjectMessage" type="notify"> Message from [NAME]: -[MSG] +<nolink>[MSG]</nolink> </notification> <notification @@ -4974,7 +5007,7 @@ No valid parcel could be found. icon="notify.tga" name="ObjectGiveItem" type="offer"> -An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you [OBJECTTYPE]: +An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you this [OBJECTTYPE]: [ITEM_SLURL] <form name="form"> <button @@ -4996,7 +5029,7 @@ An object named [OBJECTFROMNAME] owned by [NAME_SLURL] has given you [OBJECTTYPE icon="notify.tga" name="ObjectGiveItemUnknownUser" type="offer"> -An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you [OBJECTTYPE]: +An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you this [OBJECTTYPE]: [ITEM_SLURL] <form name="form"> <button @@ -5018,7 +5051,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you [O icon="notify.tga" name="UserGiveItem" type="offer"> -[NAME_SLURL] has given you [OBJECTTYPE]: +[NAME_SLURL] has given you this [OBJECTTYPE]: [ITEM_SLURL] <form name="form"> <button @@ -5087,6 +5120,14 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you [O <notification icon="notify.tga" + name="TeleportOfferSent" + type="offer"> + Teleport offer sent to [TO_NAME] + </notification> + + + <notification + icon="notify.tga" name="GotoURL" type="notify"> [MESSAGE] @@ -5106,7 +5147,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you [O <notification icon="notify.tga" name="OfferFriendship" - type="alertmodal"> + type="offer"> [NAME] is offering friendship. [MESSAGE] @@ -5123,7 +5164,7 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you [O text="Decline"/> </form> </notification> - + <notification icon="notify.tga" name="FriendshipOffered" @@ -5163,13 +5204,27 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you [O type="notify"> [NAME] declined your friendship offer. </notification> + + <notification + icon="notify.tga" + name="FriendshipAcceptedByMe" + type="offer"> +Friendship offer accepted. + </notification> <notification icon="notify.tga" + name="FriendshipDeclinedByMe" + type="offer"> +Friendship offer declined. + </notification> + + <notification + icon="notify.tga" name="OfferCallingCard" type="notify"> [FIRST] [LAST] is offering their calling card. -This will add a bookmark in your inventory so you can quickly IM this resident. +This will add a bookmark in your inventory so you can quickly IM this Resident. <form name="form"> <button index="0" @@ -5345,6 +5400,7 @@ Grant this request? </form> </notification> +<!-- <notification icon="notify.tga" name="FirstBalanceIncrease" @@ -5360,6 +5416,7 @@ Your L$ balance is shown in the upper-right. You just paid L$[AMOUNT]. Your L$ balance is shown in the upper-right. </notification> +--> <notification icon="notify.tga" @@ -5371,6 +5428,8 @@ Your L$ balance will be updated when processing completes. If processing takes m The status of your payment can be checked on your Transaction History page on your [http://secondlife.com/account/ Dashboard] </notification> + +<!-- <notification icon="notify.tga" name="FirstSit" @@ -5395,6 +5454,7 @@ Use the controls on the right to find things and display different backgrounds. type="notify"> You have opened the Build Tools. Every object you see around you was created using these tools. </notification> +--> <!-- <notification @@ -5405,7 +5465,7 @@ You have opened the Build Tools. Every object you see around you was created usi If the mouse pointer changes to a hand, you can interact with the object. Right-click always shows a menu of things you can do. </notification> ---> + <notification icon="notify.tga" name="FirstTeleport" @@ -5413,6 +5473,8 @@ You have opened the Build Tools. Every object you see around you was created usi You can only teleport to certain areas in this region. The arrow points to your specific destination. Click the arrow to dismiss it. </notification> +--> + <notification icon="notify.tga" name="FirstOverrideKeys" @@ -5423,6 +5485,7 @@ Some objects (like guns) require you to go into mouselook to use them. Press 'M' to do this. </notification> +<!-- <notification icon="notify.tga" name="FirstAppearance" @@ -5442,6 +5505,7 @@ This is your Inventory, which contains items you own. * To rez something inworld, drag it onto the ground. * To read a notecard, double-click it. </notification> +--> <notification icon="notify.tga" @@ -5452,6 +5516,7 @@ This is a sandbox area, and is meant to help Residents learn how to build. Things you build here will be deleted after you leave, so don't forget to right-click and choose 'Take' to move your creation to your Inventory. </notification> +<!-- <notification icon="notify.tga" name="FirstFlexible" @@ -5477,13 +5542,16 @@ To toggle this menu, type="notify"> You are editing a Sculpted prim. Sculpties require a special texture to define their shape. </notification> +--> - <!--notification + <!-- + <notification icon="notify.tga" name="FirstMedia" type="notify"> You have begun playing media. Media can set to play automatically in the preferences window under Audio / Video. Note that this can be a security risk for media sites you do not trust. - </notification--> + </notification> + --> <notification icon="notifytip.tga" @@ -5763,7 +5831,7 @@ A SLurl was received from an untrusted browser and has been blocked for your sec priority="high" type="notifytip"> Multiple SLurls were received from an untrusted browser within a short period. -They will be blocked for a few seconds for your security. +They will be blocked for a few seconds for your security. </notification> <notification name="IMToast" type="notifytoast"> @@ -5781,7 +5849,8 @@ Are you sure you want to close all IMs? <usetemplate name="okcancelignore" notext="Cancel" - yestext="Ok"/> + yestext="OK" + ignoretext="Confirm before I close all IMs"/> </notification> <notification icon="notifytip.tga" diff --git a/indra/newview/skins/default/xui/en/panel_active_object_row.xml b/indra/newview/skins/default/xui/en/panel_active_object_row.xml index 7657fb8055..bef5f8dafd 100644 --- a/indra/newview/skins/default/xui/en/panel_active_object_row.xml +++ b/indra/newview/skins/default/xui/en/panel_active_object_row.xml @@ -10,10 +10,6 @@ background_opaque="false" background_visible="true" bg_alpha_color="0.0 0.0 0.0 0.0" > - <string - name="unknown_obj"> - Unknown Object - </string> <chiclet_script name="object_chiclet" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml index f3a2297151..28a6995186 100644 --- a/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_adhoc_control_panel.xml @@ -4,57 +4,96 @@ follows="all" height="215" name="panel_im_control_panel" - width="180"> - <avatar_list - color="DkGray2" + width="150"> + <layout_stack + mouse_opaque="false" + border_size="0" + clip="false" follows="all" - height="130" - ignore_online_status="true" + height="215" layout="topleft" left="3" - name="speakers_list" - opaque="false" - show_info_btn="false" - show_profile_btn="false" - show_speaking_indicator="false" - top="10" - width="180" /> - <panel - background_visible="true" - bg_alpha_color="DkGray2" - border="false" - bottom="1" - follows="left|right|bottom" - height="70" - left="0" - left_pad="0" - name="panel_call_buttons" - top_pad="0" - width="180"> - <button - bottom="10" - follows="all" - height="20" - label="Call" - left_delta="10" - name="call_btn" - width="160" /> - <button - bottom="40" - follows="all" - height="20" - label="Leave Call" - name="end_call_btn" - visible="false" - /> - <button - follows="all" - bottom="10" - height="20" - label="Voice Controls" - name="voice_ctrls_btn" - use_ellipses="true" - visible="false" - /> - </panel> + name="vertical_stack" + orientation="vertical" + top="0" + width="147"> + <layout_panel + auto_resize="true" + follows="top|left" + height="130" + layout="topleft" + left="0" + min_height="0" + mouse_opaque="false" + width="147" + top="0" + name="speakers_list_panel" + user_resize="false"> + <avatar_list + color="DkGray2" + follows="all" + height="130" + ignore_online_status="true" + layout="topleft" + name="speakers_list" + opaque="false" + show_info_btn="false" + show_profile_btn="false" + show_speaking_indicator="false" + width="147" /> + </layout_panel> + <layout_panel + auto_resize="false" + follows="top|left|right" + height="25" + layout="topleft" + min_height="25" + width="130" + name="call_btn_panel" + user_resize="false" + visible="false"> + <button + follows="all" + height="20" + label="Call" + name="call_btn" + width="130" + top="5" /> + </layout_panel> + <layout_panel + auto_resize="false" + follows="top|left|right" + height="25" + layout="topleft" + min_height="25" + width="130" + name="end_call_btn_panel" + user_resize="false" + visible="false"> + <button + follows="all" + height="20" + label="Leave Call" + name="end_call_btn" + top="5"/> + </layout_panel> + <layout_panel + auto_resize="false" + follows="top|left|right" + height="25" + layout="topleft" + min_height="25" + width="130" + name="voice_ctrls_btn_panel" + user_resize="false" + visible="false"> + <button + follows="all" + height="20" + label="Voice Controls" + name="voice_ctrls_btn" + top="5" + use_ellipses="true" /> + </layout_panel> + </layout_stack> </panel> 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 45f9d9c7b6..1e2e74f882 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 @@ -58,35 +58,26 @@ top="6" use_ellipses="true" value="Unknown" - width="182" /> + width="180" /> <text follows="right" font="SansSerifSmall" height="15" layout="topleft" - left_pad="8" + 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="0" - mouse_opaque="true" - name="speaking_indicator" - visible="true" - width="20" /> <button follows="right" height="16" image_pressed="Info_Press" image_unselected="Info_Over" + layout="topleft" left_pad="3" - right="-31" + right="-53" name="info_btn" top_delta="-2" width="16" /> @@ -96,8 +87,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> diff --git a/indra/newview/skins/default/xui/en/panel_bars.xml b/indra/newview/skins/default/xui/en/panel_bars.xml index 527ec4e007..96722ce278 100644 --- a/indra/newview/skins/default/xui/en/panel_bars.xml +++ b/indra/newview/skins/default/xui/en/panel_bars.xml @@ -9,7 +9,7 @@ width="1024"> <layout_stack name="menu_stack" orientation="vertical" height="768" border_size="0"> <panel auto_resize="false" width="1024" name="status_bar" filename="panel_status_bar.xml"/> - <panel auto_resize="false" width="1024" height="65" name="navigation bar" filename="panel_navigation_bar.xml"/> + <panel auto_resize="false" width="1024" height="60" name="navigation bar" filename="panel_navigation_bar.xml"/> <layout_stack name="hud_stack" orientation="horizontal" auto_resize="true" width="1024" height="500" follows="all"> <panel auto_resize="true" name="floater_view" height="500"/> <panel auto_resize="false" filename="panel_side_tray.xml" height="500" width="333"/> 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 970a2e6a8a..072ea882e6 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 @@ -5,6 +5,7 @@ height="305" layout="topleft" name="block_list_panel" + help_topic="blocked_list" min_height="350" min_width="240" width="280"> @@ -28,7 +29,7 @@ text_color="white" top="5" width="250"> - Blocked List + Block List </text> <scroll_list follows="all" @@ -36,7 +37,7 @@ layout="topleft" left="5" name="blocked" - tool_tip="List of currently blocked residents" + tool_tip="List of currently blocked Residents" top="30" width="270" /> <button @@ -46,7 +47,7 @@ layout="topleft" left_delta="0" name="Block resident..." - tool_tip="Pick a resident to block" + tool_tip="Pick a Resident to block" top_pad="4" width="210"> <button.commit_callback @@ -73,7 +74,7 @@ layout="topleft" left_delta="0" name="Unblock" - tool_tip="Remove resident or object from blocked list" + tool_tip="Remove Resident or object from blocked list" top_pad="4" width="210" > <button.commit_callback diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index 1ade66f2dd..015a2e91ff 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -33,10 +33,10 @@ height="10" image_name="spacer24.tga" layout="topleft" - min_width="4" + min_width="2" left="0" top="0" - width="4" /> + width="2" /> <layout_panel mouse_opaque="false" auto_resize="false" @@ -47,7 +47,8 @@ min_height="23" width="310" top="4" - min_width="192" + max_width="320" + min_width="216" name="chat_bar" user_resize="false" filename="panel_nearby_chat_bar.xml" /> @@ -60,7 +61,7 @@ min_height="28" width="100" top_delta="0" - min_width="54" + min_width="100" name="speak_panel" user_resize="false"> <talk_button @@ -71,8 +72,13 @@ layout="topleft" left="0" name="talk" - top="4" + top="5" width="100"> + <speak_button + name="speak_btn" + label="Speak" + label_selected="Speak" + /> <show_button> <show_button.init_callback function="Button.SetDockableFloaterToggle" @@ -87,10 +93,10 @@ image_name="spacer24.tga" layout="topleft" left="0" - name="DUMMY" - min_width="4" + name="after_speak_panel" + min_width="3" top="0" - width="4"/> + width="3"/> <layout_panel mouse_opaque="false" auto_resize="false" @@ -100,23 +106,23 @@ min_height="28" width="82" top_delta="0" - min_width="52" + min_width="62" name="gesture_panel" user_resize="false"> - <gesture_combo_box + <gesture_combo_list follows="left|right" height="23" label="Gesture" layout="topleft" name="Gesture" left="0" - top="4" + top="5" width="82" tool_tip="Shows/hides gestures"> - <gesture_combo_box.drop_down_button + <gesture_combo_list.combo_button pad_right="10" use_ellipses="true" /> - </gesture_combo_box> + </gesture_combo_list> </layout_panel> <icon auto_resize="false" @@ -126,10 +132,10 @@ image_name="spacer24.tga" layout="topleft" left="0" - min_width="4" - name="DUMMY" + min_width="3" + name="after_gesture_panel" top="0" - width="4"/> + width="3"/> <layout_panel mouse_opaque="false" auto_resize="false" @@ -153,7 +159,7 @@ layout="topleft" name="movement_btn" tool_tip="Shows/hides movement controls" - top="4" + top="5" width="80"> <button.init_callback function="Button.SetDockableFloaterToggle" @@ -168,10 +174,10 @@ image_name="spacer24.tga" layout="topleft" left="0" - min_width="4" - name="DUMMY" + min_width="3" + name="after_movement_panel" top="0" - width="4"/> + width="3"/> <layout_panel mouse_opaque="false" auto_resize="false" @@ -195,7 +201,7 @@ layout="topleft" left="0" tool_tip="Shows/hides camera controls" - top="4" + top="5" name="camera_btn" width="80"> <button.init_callback @@ -211,10 +217,10 @@ image_name="spacer24.tga" layout="topleft" left="0" - min_width="4" - name="DUMMY" + min_width="3" + name="after_cam_panel" top="0" - width="4"/> + width="3"/> <layout_panel mouse_opaque="false" auto_resize="false" @@ -235,7 +241,7 @@ layout="topleft" name="snapshots" width="36" - top="4" + top="5" is_toggle="true" image_overlay="Snapshot_Off" tool_tip="Take snapshot"> @@ -247,12 +253,12 @@ <layout_panel mouse_opaque="false" follows="left|right" - height="29" + height="30" layout="topleft" top="0" name="chiclet_list_panel" width="189" - min_width="110" + min_width="60" user_resize="false" auto_resize="true"> <!--*NOTE: min_width of the chiclet_panel (chiclet_list) must be the same @@ -260,12 +266,12 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. <chiclet_panel mouse_opaque="false" follows="left|right" - height="23" + height="24" layout="topleft" left="1" - min_width="110" + min_width="60" name="chiclet_list" - top="6" + top="7" chiclet_padding="4" scrolling_offset="40" width="189"> @@ -284,7 +290,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. name="chicklet_left_scroll_button" scale_image="true" tab_stop="false" - top="-2" + top="-4" right_pad="2" visible="false" width="7" /> @@ -303,7 +309,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. name="chicklet_right_scroll_button" scale_image="true" tab_stop="false" - top="-2" + top="-4" visible="false" width="7" /> </chiclet_panel> @@ -317,6 +323,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 @@ -334,14 +341,14 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. max_displayed_count="99" flash_period="0.3" follows="right" - height="23" + height="28" layout="topleft" left="0" name="im_well" - top="4" + top="0" width="35"> <!-- -Emulate 4 states of button by background images, see detains in EXT-3147. The same should be for notification_well button +Emulate 4 states of button by background images, see details in EXT-3147. The same should be for notification_well button xml attribute Description image_unselected "Unlit" - there are no new messages image_selected "Unlit" + "Selected" - there are no new messages and the Well is open @@ -350,7 +357,6 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well --> <button auto_resize="true" - flash_color="Yellow" follows="right" halign="center" height="23" @@ -358,13 +364,12 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well image_overlay_alignment="center" image_pressed="WellButton_Lit" image_pressed_selected="WellButton_Lit_Selected" - image_selected="PushButton_Selected_Press" + image_selected="PushButton_Press" label_color="Black" left="0" name="Unread IM messages" - pad_left="0" - pad_right="0" - width="35" > + tool_tip="Conversations" + width="34" > <button.init_callback function="Button.SetDockableFloaterToggle" parameter="im_well_window" /> @@ -378,11 +383,22 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well layout="topleft" min_height="28" top="0" - left_pad="4" + left_pad="3" name="notification_well_panel" - width="35" - min_width="35" + width="40" + min_width="40" user_resize="false"> + <icon + auto_resize="false" + color="0 0 0 0" + follows="left|right" + height="10" + image_name="spacer24.tga" + layout="topleft" + left="0" + min_width="4" + top="0" + width="5" /> <chiclet_notification flash_period="0.25" follows="right" @@ -391,41 +407,40 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well left="0" max_displayed_count="99" name="notification_well" - top="4" + top="5" width="35"> <button bottom_pad="3" image_pressed="WellButton_Lit" image_pressed_selected="WellButton_Lit_Selected" - image_selected="PushButton_Selected_Press" + image_selected="PushButton_Press" auto_resize="true" halign="center" height="23" follows="right" - flash_color="Yellow" label_color="Black" - left="5" + left="0" name="Unread" image_overlay="Notices_Unread" image_overlay_alignment="center" - pad_right="5" - width="35" > + tool_tip="Notifications" + width="34" > <button.init_callback function="Button.SetDockableFloaterToggle" parameter="notification_well_window" /> </button> - </chiclet_notification> - </layout_panel> - <icon + <icon auto_resize="false" color="0 0 0 0" follows="left|right" height="10" image_name="spacer24.tga" layout="topleft" + left="0" min_width="4" - right="-1" top="0" - width="4"/> + width="5" /> + </chiclet_notification> + </layout_panel> </layout_stack> </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 0000000000..6e9476f814 --- /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> 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 39c4923f12..250dadd390 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml @@ -2,7 +2,8 @@ <panel background_visible="true" bevel_style="in" - bg_alpha_color="black" + bg_opaque_color="Black" + bg_alpha_color="DkGray_66" follows="top|left|right" height="24" label="im_header" @@ -19,21 +20,22 @@ name="avatar_icon" top="3" width="18" /> - <text_editor + <text 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" diff --git a/indra/newview/skins/default/xui/en/panel_chat_separator.xml b/indra/newview/skins/default/xui/en/panel_chat_separator.xml index d0a2ddb289..357dbc07cc 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_separator.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_separator.xml @@ -3,6 +3,6 @@ background_visible="true" bg_alpha_color="black" follows="left|right|top" - height="1" + height="0" layout="topleft" name="chat_separator_panel" /> 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 5c594d3f14..cb1df4249e 100644 --- a/indra/newview/skins/default/xui/en/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/en/panel_classified_info.xml @@ -7,6 +7,7 @@ left="0" min_height="350" name="panel_classified_info" + help_topic="profile_classified_info" top="0" width="333"> <panel.string @@ -17,6 +18,10 @@ name="type_pg"> General Content </panel.string> + <panel.string + name="l$_price"> + L$[PRICE] + </panel.string> <button follows="top|right" height="23" @@ -24,7 +29,7 @@ layout="topleft" name="back_btn" picture_style="true" - left="10" + left="11" tab_stop="false" top="2" width="23" /> @@ -35,7 +40,7 @@ layout="topleft" left_pad="10" name="title" - text_color="white" + text_color="LtGray" top="0" value="Classified Info" use_ellipses="true" @@ -44,13 +49,13 @@ color="DkGray2" opaque="true" follows="all" - height="500" + height="502" layout="topleft" left="10" top_pad="10" name="profile_scroll" reserve_scroll_corner="false" - width="313"> + width="312"> <panel name="scroll_content_panel" follows="left|top" @@ -58,20 +63,23 @@ layout="topleft" top="0" background_visible="false" - height="500" + height="610" left="0" - width="295"> + width="285"> <texture_picker enabled="false" - follows="left|top" + follows="left|top|right" height="197" + width="272" layout="topleft" - left="10" + left="11" name="classified_snapshot" - top="20" - width="290" /> - <text + top="10" /> + <text_editor + allow_scroll="false" + bg_visible="false" follows="left|top|right" + h_pad="0" height="35" width="290" layout="topleft" @@ -80,36 +88,69 @@ 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" + top_pad="15" + 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]" /> + <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." + v_pad="0" + width="105" /> <check_box enabled="false" height="16" @@ -118,63 +159,57 @@ left="10" name="auto_renew" top_pad="5" + v_pad="0" width="290" /> - <text - follows="left|top" - halign="left" - height="16" - layout="topleft" - left="10" - name="price_for_listing" - top_pad="5" - tool_tip="Price for listing." - width="105"> - L$[PRICE] - </text> - <text + <text_editor + allow_html="true" + allow_scroll="true" + bg_visible="false" follows="left|top|right" + h_pad="0" height="200" + width="272" layout="topleft" left="10" + max_length="1023" name="classified_desc" - width="290" + read_only="true" + v_pad="0" value="[description]" word_wrap="true" /> </panel> </scroll_container> <panel follows="left|right|bottom" - height="20" + height="35" layout="topleft" - top_pad="8" - left="10" + top_pad="5" + left="9" name="buttons"> <button follows="bottom|left" - height="19" + height="23" label="Teleport" layout="topleft" left="0" name="teleport_btn" top="0" - width="90" /> + width="101" /> <button follows="bottom|left" - height="19" + height="23" label="Map" layout="topleft" - left_pad="10" + left_pad="3" name="show_on_map_btn" - top="0" - width="90" /> + width="100" /> <button follows="bottom|left" - height="19" + height="23" label="Edit" layout="topleft" - right="-1" name="edit_btn" - top="0" - width="90" /> + left_pad="3" + width="101" /> </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml index b881719e3a..996e28c575 100644 --- a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml @@ -64,6 +64,8 @@ layout="topleft" left="103" name="description" + textbox.max_length="1024" + textbox.show_context_menu="false" top_pad="0" width="178" word_wrap="true" /> @@ -75,6 +77,6 @@ left_pad="5" right="-8" name="info_chevron" - top_delta="15" + top_delta="24" width="20" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_edit_classified.xml b/indra/newview/skins/default/xui/en/panel_edit_classified.xml index 1fbf7abda9..90b0acef26 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_classified.xml @@ -3,12 +3,13 @@ background_visible="true" bevel_style="in" follows="left|top|right|bottom" - height="570" + height="569" label="Edit Classified" layout="topleft" left="0" min_height="350" name="panel_edit_classified" + help_topic="profile_edit_classified" top="0" width="333"> <panel.string @@ -22,7 +23,7 @@ layout="topleft" name="back_btn" picture_style="true" - left="10" + left="12" tab_stop="false" top="2" width="23" /> @@ -30,27 +31,27 @@ type="string" length="1" follows="top" - font="SansSerifHuge" - height="15" + font="SansSerifHugeBold" + height="26" layout="topleft" left_pad="10" name="title" - text_color="white" - top="5" + text_color="LtGray" + top="0" width="250"> Edit Classified </text> <scroll_container - color="DkGray2" - follows="all" - height="510" - layout="topleft" - left="10" - top_pad="10" - name="profile_scroll" - reserve_scroll_corner="false" - opaque="true" - width="313"> + color="DkGray2" + follows="all" + height="502" + layout="topleft" + left="8" + top_pad="10" + name="profile_scroll" + reserve_scroll_corner="false" + opaque="true" + width="312"> <panel name="scroll_content_panel" follows="left|top" @@ -58,27 +59,27 @@ layout="topleft" top="0" background_visible="false" - height="600" + height="610" left="0" - width="295"> - <texture_picker - follows="left|top|right" - height="197" - width="290" - layout="topleft" - top="20" - left="10" - name="classified_snapshot" /> + width="285"> + <texture_picker + follows="left|top|right" + height="197" + width="272" + layout="topleft" + top="10" + left="11" + name="classified_snapshot" /> <icon - height="18" - image_name="AddItem_Off" + height="197" + image_name="spacer24.tga" layout="topleft" - right="-5" name="edit_icon" label="" tool_tip="Click to select an image" - top="27" - width="18" /> + top="10" + left="11" + width="286" /> <text type="string" length="1" @@ -91,7 +92,7 @@ top="215" name="Name:" text_color="white" - width="290"> + width="280"> Title: </text> <line_editor @@ -105,7 +106,7 @@ name="classified_name" prevalidate_callback="ascii" text_color="black" - width="290" /> + width="273" /> <text type="string" length="1" @@ -118,13 +119,13 @@ top_pad="20" name="description_label" text_color="white" - width="290"> + width="280"> Description: </text> <text_editor follows="left|top|right" height="100" - width="290" + width="273" hide_scrollbar="false" layout="topleft" left="10" @@ -145,7 +146,7 @@ name="location_label" text_color="white" top_pad="20" - width="290"> + width="280"> Location: </text> <text @@ -158,35 +159,35 @@ name="classified_location" right="-10" top_pad="2" - width="290" + width="280" word_wrap="true"> loading... </text> <button follows="left|top" - height="20" + height="23" label="Set to Current Location" layout="topleft" - left="8" + left="10" top_pad="5" name="set_to_curr_location_btn" - width="200" /> + width="156" /> <combo_box follows="left|top" - height="18" + height="23" label="" left="10" name="category" top_pad="5" - width="200" /> + width="156" /> <combo_box allow_text_entry="false" follows="left|top" - height="18" + height="23" left="10" name="content_type" top_pad="5" - width="200"> + width="156"> <combo_item name="mature_ci" value="Mature"> @@ -202,10 +203,11 @@ decimal_digits="0" follows="left|top" halign="left" - height="16" + height="23" increment="1" label_width="20" label="L$" + v_pad="10" layout="topleft" left="10" value="50" @@ -223,34 +225,33 @@ name="auto_renew" top_pad="5" width="250" /> - </panel> + </panel> </scroll_container> <panel follows="left|right|bottom" - height="20" + height="23" label="bottom_panel" layout="topleft" - left="10" + left="8" name="bottom_panel" top_pad="5" width="303"> <button follows="bottom|left" - height="19" + height="23" label="Save" layout="topleft" name="save_changes_btn" left="0" top="0" - width="130" /> + width="152" /> <button follows="bottom|left" - height="19" + height="23" label="Cancel" layout="topleft" name="cancel_btn" - left_pad="5" - right="-1" - width="130" /> + left_pad="3" + width="153" /> </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml index d6de5af32d..657e369beb 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml @@ -3,12 +3,13 @@ background_visible="true" bevel_style="in" follows="left|top|right|bottom" - height="570" + height="569" label="Edit Pick" layout="topleft" left="0" min_height="350" name="panel_edit_pick" + help_topic="profile_edit_pick" top="0" width="333"> <button @@ -17,7 +18,7 @@ image_overlay="BackArrow_Off" layout="topleft" name="back_btn" - left="10" + left="12" tab_stop="false" top="2" width="23" /> @@ -25,59 +26,59 @@ type="string" length="1" follows="top" - font="SansSerifHuge" - height="15" + font="SansSerifHugeBold" + height="26" layout="topleft" left_pad="10" name="title" - text_color="white" - top="5" + text_color="LtGray" + top="0" width="250"> Edit Pick </text> <scroll_container color="DkGray2" follows="all" - height="510" + height="502" layout="topleft" - left="10" + left="8" top_pad="10" name="profile_scroll" - reserve_scroll_corner="false" opaque="true" - width="313"> + width="312"> <panel name="scroll_content_panel" - follows="left|top" + follows="left|top|right" min_height="300" layout="topleft" top="0" background_visible="false" - height="510" + height="500" left="0" - width="295"> + width="285"> <texture_picker follows="left|top|right" height="197" - width="290" + width="272" layout="topleft" - top="20" - left="10" + no_commit_on_selection="true" + top="10" + left="11" name="pick_snapshot" /> <icon - height="18" - image_name="AddItem_Off" + height="197" + image_name="spacer24.tga" layout="topleft" - right="-5" name="edit_icon" label="" tool_tip="Click to select an image" - top="27" - width="18" /> + top="10" + left="11" + width="286" /> <text type="string" length="1" - follows="left|top" + follows="left|top|right" height="15" font="SansSerifSmall" font.style="BOLD" @@ -86,7 +87,7 @@ top="215" name="Name:" text_color="white" - width="290"> + width="280"> Title: </text> <line_editor @@ -99,11 +100,11 @@ max_length="63" name="pick_name" text_color="black" - width="290" /> + width="273" /> <text type="string" length="1" - follows="left|top" + follows="left|top|right" height="15" font="SansSerifSmall" font.style="BOLD" @@ -112,13 +113,13 @@ top_pad="20" name="description_label" text_color="white" - width="290"> + width="280"> Description: </text> <text_editor follows="left|top|right" height="100" - width="290" + width="273" hide_scrollbar="false" layout="topleft" left="10" @@ -132,67 +133,65 @@ length="1" font="SansSerifSmall" font.style="BOLD" - follows="left|top" + follows="left|top|right" height="15" layout="topleft" left="10" name="location_label" text_color="white" top_pad="20" - width="290"> + width="280"> Location: </text> <text type="string" length="1" - follows="left|top" + follows="left|top|right" height="50" layout="topleft" left="10" name="pick_location" - right="-10" top_pad="2" - width="290" + width="280" word_wrap="true"> loading... </text> <button follows="left|top" - height="20" + height="23" label="Set to Current Location" layout="topleft" left="8" top_pad="0" name="set_to_curr_location_btn" - width="200" /> + width="156" /> </panel> </scroll_container> <panel follows="left|right|bottom" - height="20" + height="23" label="bottom_panel" layout="topleft" - left="10" + left="8" name="bottom_panel" top_pad="5" width="303"> <button follows="bottom|left" - height="19" + height="23" label="Save [WHAT]" layout="topleft" name="save_changes_btn" left="0" top="0" - width="130" /> + width="152" /> <button follows="bottom|left" - height="19" + height="23" label="Cancel" layout="topleft" name="cancel_btn" - left_pad="5" - right="-1" - width="130" /> + left_pad="3" + width="153" /> </panel> </panel> 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 be3c0bbd96..26be8440e7 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="494" min_height="300" layout="topleft" - left="0" + left="8" + width="292" 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="494" min_height="300" left="0" - width="313"> + width="292"> <panel name="data_panel" follows="left|top|right" layout="topleft" top="0" - height="505" + height="494" min_height="300" left="0" - width="313"> + width="292"> <panel name="lifes_images_panel" follows="left|top|right" @@ -93,7 +94,7 @@ layout="topleft" top="0" left="0" - width="285"> + width="292"> <panel follows="left|top" height="117" @@ -101,52 +102,53 @@ left="10" name="second_life_image_panel" top="0" - width="285"> + width="282"> <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" /> </panel> <icon - height="18" - image_name="AddItem_Off" + height="102" + image_name="spacer24.tga" layout="topleft" name="2nd_life_edit_icon" label="" - left="87" + left="11" + top_pad="-92" tool_tip="Click to select an image" - top="25" - width="18" /> + width="102" /> </panel> <text_editor type="string" 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,44 +165,45 @@ 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" /> </panel> <icon - height="18" - image_name="AddItem_Off" + height="102" + image_name="spacer24.tga" layout="topleft" name="real_world_edit_icon" label="" - left="87" + left="11" + top_pad="-92" tool_tip="Click to select an image" - top="148" - width="18" /> + width="102" /> <text_editor type="string" 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="272"> </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,24 @@ left="10" name="title_acc_status_text" text_color="white" - top_pad="5" + top_pad="10" value="My Account:" - width="285" /> + width="100" /> + <text_editor + allow_scroll="false" + bg_visible="false" + follows="left|top|right" + 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" /> <text type="string" follows="left|top" @@ -261,17 +279,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,64 +289,62 @@ 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"> - <text + width="200"> + <name_box follows="left|top|right" height="30" + initial_value="(retrieving)" layout="topleft" left="0" + link="true" name="partner_text" top="0" - value="[FIRST] [LAST]" - 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="8" 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="3" name="cancel_btn" - right="-1" - width="130" /> + width="153" /> </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_friends.xml b/indra/newview/skins/default/xui/en/panel_friends.xml index ac731bcdf0..c315adb33e 100644 --- a/indra/newview/skins/default/xui/en/panel_friends.xml +++ b/indra/newview/skins/default/xui/en/panel_friends.xml @@ -118,7 +118,7 @@ layout="topleft" left_delta="0" name="add_btn" - tool_tip="Offer friendship to a resident" + tool_tip="Offer friendship to a Resident" top_pad="13" width="80" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml index 86b30ebfce..aa7d621e4c 100644 --- a/indra/newview/skins/default/xui/en/panel_group_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_group_control_panel.xml @@ -4,67 +4,111 @@ follows="all" height="238" name="panel_im_control_panel" - width="180"> - <avatar_list - color="DkGray2" + width="150"> + <layout_stack + mouse_opaque="false" + border_size="0" + clip="false" follows="all" - height="100" - ignore_online_status="true" + height="238" layout="topleft" - left="3" - name="speakers_list" - opaque="false" - show_info_btn="false" - show_profile_btn="false" - show_speaking_indicator="false" - top="10" - width="180" /> - <button - bottom_pad="0" - follows="left|right|bottom" - height="23" - label="Group Profile" - left_delta="10" - name="group_info_btn" - use_ellipses="true" - width="160" /> - <panel - background_visible="true" - bg_alpha_color="DkGray2" - border="false" - follows="left|right|bottom" - height="70" - left="0" - left_pad="0" - name="panel_call_buttons" - top_pad="0" - width="180"> - <button - bottom="10" - follows="all" - height="23" - label="Call Group" - left_delta="10" - name="call_btn" - use_ellipses="true" - width="160" /> - <button - bottom="40" - follows="all" - height="23" - label="Leave Call" - name="end_call_btn" - use_ellipses="true" - visible="false" - /> - <button - bottom="10" - follows="all" - height="23" - label="Open Voice Controls" - name="voice_ctrls_btn" - use_ellipses="true" - visible="false" - /> - </panel> + left="5" + name="vertical_stack" + orientation="vertical" + top="0" + width="145"> + <layout_panel + auto_resize="true" + follows="top|left" + height="100" + layout="topleft" + min_height="0" + mouse_opaque="false" + width="145" + top="0" + name="speakers_list_panel" + user_resize="false"> + <avatar_list + color="DkGray2" + follows="all" + height="100" + ignore_online_status="true" + layout="topleft" + name="speakers_list" + opaque="false" + show_info_btn="false" + show_profile_btn="false" + show_speaking_indicator="false" + width="145" /> + </layout_panel> + <layout_panel + auto_resize="false" + follows="top|left|right" + height="28" + layout="topleft" + min_height="28" + width="130" + name="group_info_btn_panel" + user_resize="false"> + <button + follows="left|right|bottom" + height="23" + label="Group Profile" + name="group_info_btn" + use_ellipses="true" + top="5" + width="130" /> + </layout_panel> + <layout_panel + auto_resize="false" + follows="top|left|right" + height="28" + layout="topleft" + min_height="28" + width="130" + name="call_btn_panel" + user_resize="false"> + <button + follows="all" + height="23" + label="Call Group" + name="call_btn" + use_ellipses="true" + width="130" /> + </layout_panel> + <layout_panel + auto_resize="false" + follows="top|left|right" + height="28" + layout="topleft" + min_height="28" + width="130" + name="end_call_btn_panel" + user_resize="false" + visible="false"> + <button + follows="all" + height="23" + label="Leave Call" + name="end_call_btn" + use_ellipses="true" /> + </layout_panel> + <layout_panel + auto_resize="false" + follows="top|left|right" + height="28" + layout="topleft" + min_height="28" + width="130" + name="voice_ctrls_btn_panel" + user_resize="false" + visible="false"> + <button + follows="all" + height="23" + label="Open Voice Controls" + name="voice_ctrls_btn" + use_ellipses="true" /> + </layout_panel> + </layout_stack> </panel> 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 af73faf9a1..f913c58cc9 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,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel - follows="all" - height="395" label="General" + height="604" + width="304" 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. @@ -21,16 +19,87 @@ Hover your mouse over the options for more help. name="incomplete_member_data_str"> Retrieving member data </panel.string> + <panel + name="group_info_top" + follows="top|left" + top="0" + left="0" + height="129" + width="304" + layout="topleft"> + <texture_picker + follows="left|top" + height="110" + label="" + layout="topleft" + left="10" + name="insignia" + no_commit_on_selection="true" + tool_tip="Click to choose a picture" + top="5" + width="100" /> + <text + font="SansSerifSmall" + text_color="White_50" + width="190" + follows="top|left" + layout="topleft" + mouse_opaque="false" + type="string" + height="16" + length="1" + left_pad="10" + name="prepend_founded_by" + top_delta="0"> + Founder: + </text> + <name_box + follows="left|top" + height="16" + initial_value="(retrieving)" + layout="topleft" + left_delta="0" + link="true" + name="founder_name" + top_pad="2" + use_ellipses="true" + width="190" /> + <text + font="SansSerifMedium" + text_color="EmphasisColor" + type="string" + follows="left|top" + height="16" + layout="topleft" + left_delta="0" + name="join_cost_text" + top_pad="10" + visible="true" + width="190"> + Free + </text> + <button + follows="left|top" + left_delta="0" + top_pad="6" + height="23" + label="JOIN NOW!" + name="btn_join" + visible="true" + width="120" /> + </panel> <text_editor type="string" follows="left|top|right" left="5" - height="60" + height="80" layout="topleft" max_length="511" name="charter" - top="5" + top="105" right="-1" + bg_readonly_color="DkGray2" + text_readonly_color="White" word_wrap="true"> Group Charter </text_editor> @@ -38,21 +107,24 @@ 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="160" 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" @@ -60,17 +132,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 +163,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 +172,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 - background_visible="true" - bevel_style="in" - border="true" + <panel + background_visible="false" + bevel_style="none" + border="false" 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 +220,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 +251,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 +261,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 c0db734f8c..4e57b428bd 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,28 +26,38 @@ background_visible="true" name="group_join_free"> Free </panel.string> + <panel + name="group_info_top" + follows="top|left" + top="0" + left="0" + height="29" + width="313" + layout="topleft"> <button follows="top|right" height="23" image_overlay="BackArrow_Off" layout="topleft" name="back" - left="10" + left="8" tab_stop="false" 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...)" + font="SansSerifHugeBold" + height="26" + left_pad="10" + text_color="LtGray" + top="0" use_ellipses="true" - width="300" /> + width="275" + follows="top|left|right" + word_wrap="false" + mouse_opaque="false"/> <line_editor follows="left|top" font="SansSerif" @@ -57,171 +67,206 @@ background_visible="true" max_length="35" name="group_name_editor" top_delta="5" - width="250" + width="270" height="20" visible="false" /> - <texture_picker - follows="left|top" - height="113" - label="" - layout="topleft" - left="20" - name="insignia" - tool_tip="Click to choose a picture" - top_pad="5" - width="100" /> - <text - type="string" - follows="left|top" - height="16" - length="1" - layout="topleft" - left_pad="10" - name="prepend_founded_by" - top_delta="0" - width="140"> - Founder: - </text> - <name_box - follows="left|top" - height="16" - initial_value="(retrieving)" - layout="topleft" - left_delta="0" - name="founder_name" - top_pad="2" - use_ellipses="true" - width="140" /> - <text - font="SansSerifBig" - text_color="EmphasisColor" - type="string" - follows="left|top" - height="16" - layout="topleft" - left_delta="0" - name="join_cost_text" - top_pad="10" - visible="true" - width="140"> - Free - </text> - <button - follows="left|top" - left_delta="0" - top_pad="6" - height="23" - label="JOIN NOW!" - name="btn_join" - visible="true" - width="120" /> + </panel> + <layout_stack + name="layout" + orientation="vertical" + follows="all" + left="8" + top_pad="0" + height="536" + width="292" + border_size="0"> + <layout_panel + bg_alpha_color="DkGray2" + bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" + name="group_accordions" + follows="all" + layout="topleft" + auto_resize="true"> <accordion - single_expansion="true" - follows="all" - height="478" - layout="topleft" - left="0" - name="groups_accordion" - top_pad="10" - width="323"> - <accordion_tab - expanded="false" + left="0" + top="0" + single_expansion="true" + follows="all" + layout="topleft" + name="groups_accordion"> + <accordion_tab + expanded="true" layout="topleft" name="group_general_tab" title="General"> - <panel - border="false" - class="panel_group_general" - filename="panel_group_general.xml" - layout="topleft" - left="0" - help_topic="group_general_tab" - name="group_general_tab_panel" - top="0" /> + <scroll_container + color="DkGray2" + follows="all" + layout="topleft" + left="0" + name="profile_scroll" + opaque="true" + height="604" + width="304" + top="0"> + <panel + border="false" + class="panel_group_general" + filename="panel_group_general.xml" + layout="topleft" + left="0" + follows="left|top|right" + help_topic="group_general_tab" + name="group_general_tab_panel" + top="0" /> + </scroll_container> </accordion_tab> <accordion_tab - expanded="true" + expanded="false" layout="topleft" name="group_roles_tab" title="Roles"> - <panel - border="false" - class="panel_group_roles" - filename="panel_group_roles.xml" - layout="topleft" - left="0" - help_topic="group_roles_tab" - name="group_roles_tab_panel" - top="0" /> + <scroll_container + color="DkGray2" + follows="all" + layout="topleft" + left="0" + name="profile_scroll" + opaque="true" + height="680" + width="304" + top="0"> + + <panel + border="false" + class="panel_group_roles" + filename="panel_group_roles.xml" + follows="left|top|right" + layout="topleft" + left="0" + name="group_roles_tab_panel" + top="0" /> + </scroll_container> </accordion_tab> <accordion_tab - expanded="false" + expanded="false" + layout="topleft" + name="group_notices_tab" + title="Notices"> + <scroll_container + color="DkGray2" + follows="all" layout="topleft" - name="group_notices_tab" - title="Notices"> - <panel - border="false" - class="panel_group_notices" - filename="panel_group_notices.xml" - layout="topleft" - left="0" - help_topic="group_notices_tab" - name="group_notices_tab_panel" - top="0" /> + left="0" + name="profile_scroll" + opaque="true" + height="530" + width="304" + top="0"> + + <panel + border="false" + class="panel_group_notices" + filename="panel_group_notices.xml" + follows="left|top|right" + layout="topleft" + left="0" + help_topic="group_notices_tab" + name="group_notices_tab_panel" + top="0" /> + </scroll_container> </accordion_tab> - <accordion_tab - expanded="false" + <accordion_tab + expanded="false" + layout="topleft" + name="group_land_tab" + title="Land/Assets"> + <scroll_container + color="DkGray2" + follows="all" layout="topleft" - name="group_land_tab" - title="Land/Assets"> - <panel - border="false" - class="panel_group_land_money" - filename="panel_group_land_money.xml" - layout="topleft" - left="0" - help_topic="group_land_money_tab" - name="group_land_tab_panel" - top="0" /> + left="0" + name="profile_scroll" + opaque="true" + height="500" + width="304" + top="0"> + + <panel + border="false" + class="panel_group_land_money" + filename="panel_group_land_money.xml" + follows="left|top|right" + layout="topleft" + left="0" + name="group_land_tab_panel" + top="0" /> + </scroll_container> </accordion_tab> </accordion> - <panel + </layout_panel> + <layout_panel + height="30" + layout="topleft" + auto_resize="false" + left="0" + top_pad="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="0" + top="5" name="btn_refresh" width="23" /> + <button + follows="bottom|left" + label="Chat" + name="btn_chat" + left_pad="3" + height="23" + width="82" /> + <button + follows="bottom|left" + left_pad="3" + height="23" + name="btn_call" + label="Group Call" + layout="topleft" + tool_tip="Call this group" + width="112" /> + <button + follows="bottom|left" + height="23" + label="Save" + label_selected="Save" + name="btn_apply" + left_pad="3" + width="82" /> <button - height="22" - label="Create" - label_selected="New group" + follows="bottom|left" + height="23" + layout="topleft" + left="0" + label="Create Group" name="btn_create" - left_pad="10" - visible="false" - width="100" /> - <!-- <button - left_pad="10" - height="20" + visible="true" + tool_tip="Create a new Group" + width="103" /> + <!--<button + left_pad="3" + height="23" label="Cancel" label_selected="Cancel" name="btn_cancel" visible="false" width="65" />--> - <button - height="22" - label="Save" - label_selected="Save" - name="btn_apply" - left_pad="10" - right="-10" - width="100" /> - </panel> -</panel>
\ No newline at end of file + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_invite.xml b/indra/newview/skins/default/xui/en/panel_group_invite.xml index 37578eae70..48083b7677 100644 --- a/indra/newview/skins/default/xui/en/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/en/panel_group_invite.xml @@ -17,7 +17,7 @@ </panel.string> <panel.string name="already_in_group"> - Some avatars are already in group and were not invited. + Some Residents you chose are already in the group, and so were not sent an invitation. </panel.string> <text type="string" @@ -26,11 +26,10 @@ layout="topleft" left="7" name="help_text" - top="24" + top="28" + word_wrap="true" width="200"> - You can select multiple residents to -invite to your group. Click 'Open -Resident Chooser' to start. + You can select multiple Residents to invite to your group. Click 'Open Resident Chooser' to start. </text> <button height="20" @@ -48,7 +47,7 @@ Resident Chooser' to start. left_delta="0" multi_select="true" name="invitee_list" - tool_tip="Hold the Ctrl key and click resident names to multi-select" + tool_tip="Hold the Ctrl key and click Resident names to multi-select" top_pad="4" width="200" /> <button @@ -57,7 +56,7 @@ Resident Chooser' to start. layout="topleft" left_delta="0" name="remove_button" - tool_tip="Removes residents selected above from the invite list" + tool_tip="Removes the Residents selected above from the invite list" top_pad="4" width="200" /> <text @@ -68,6 +67,7 @@ Resident Chooser' to start. left_delta="4" name="role_text" top_pad="5" + word_wrap="true" width="200"> Choose what Role to assign them to: </text> 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 2075d7e05b..7996a89e72 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 @@ -1,14 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <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="304"> <panel.string name="help_text"> A warning appears until the Total Land in Use is less than or = to the Total Contribution. @@ -41,16 +40,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 +74,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 +90,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 +125,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 +137,7 @@ type="string" follows="left|top" halign="right" - height="15" + height="16" layout="topleft" left="0" name="land_available_label" @@ -146,7 +149,7 @@ text_color="EmphasisColor" type="string" follows="left|top" - height="15" + height="16" layout="topleft" left_pad="5" name="land_available_value" @@ -158,7 +161,7 @@ type="string" follows="left|top" halign="right" - height="15" + height="16" layout="topleft" left="0" name="your_contribution_label" @@ -190,21 +193,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 +216,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 +238,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 +278,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 +305,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_list_item.xml b/indra/newview/skins/default/xui/en/panel_group_list_item.xml index 5f6b911620..b674b39d9b 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" @@ -65,6 +66,7 @@ left_pad="5" right="-3" name="profile_btn" + tool_tip="View profile" top_delta="-2" width="20" /> </panel> 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 e096715cee..731b3c119c 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,12 @@ <?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="304"> <panel.string name="help_text"> Notices let you send a message and an optionally attached item. @@ -23,26 +22,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="304"> <scroll_list.columns label="" name="icon" @@ -71,8 +72,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 +86,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" @@ -136,6 +138,7 @@ Maximum 200 per group daily left_pad="3" max_length="63" name="create_subject" + prevalidate_callback="ascii" width="220" /> <text follows="left|top" @@ -203,13 +206,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" @@ -230,18 +236,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" @@ -279,7 +286,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" @@ -300,40 +307,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_notify.xml b/indra/newview/skins/default/xui/en/panel_group_notify.xml index 9b0b81cd0a..65b2e81d50 100644 --- a/indra/newview/skins/default/xui/en/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notify.xml @@ -93,7 +93,7 @@ bottom="85" follows="bottom" height="20" - label="Ok" + label="OK" layout="topleft" right="-10" name="btn_ok" 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 9548119d58..19c0da4f08 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,15 @@ <?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="304"> <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 +19,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="304"> <panel border="false" follows="all" @@ -38,39 +38,50 @@ 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. Select multiple Members by holding the Ctrl key and clicking on their names. </panel.string> + <panel.string + name="power_folder_icon" translate="false"> + Inv_FolderClosed + </panel.string> + <panel.string + name="power_all_have_icon" translate="false"> + Checkbox_On + </panel.string> + <panel.string + name="power_partial_icon" translate="false"> + Checkbox_Off + </panel.string> <filter_editor 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 +93,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" @@ -130,37 +141,38 @@ 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 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 +190,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" @@ -210,65 +223,90 @@ including the Everyone and Owner Roles. Abilities allow Members in Roles to do specific things in this group. There's a broad variety of Abilities. </panel.string> + <panel.string + name="power_folder_icon" translate="false"> + Inv_FolderClosed + </panel.string> + <panel.string + name="power_all_have_icon" translate="false"> + Checkbox_On + </panel.string> + <panel.string + name="power_partial_icon" translate="false"> + Checkbox_Off + </panel.string> <filter_editor 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="false" - follows="left|top" - height="200" - layout="topleft" - left="0" - multi_select="true" - name="action_list" - search_column="1" - tool_tip="Select an Ability to view more details" - top_pad="5" - width="300"> - <scroll_list.columns - name="action" - width="300" /> - </scroll_list> + <scroll_list + column_padding="0" + draw_stripes="true" + height="200" + follows="left|top" + layout="topleft" + left="0" + right="-1" + name="action_list" + search_column="2" + tool_tip="Select an Ability to view more details" + top_pad="5" + width="300"> + <scroll_list.columns + label="" + name="icon" + width="2" /> + <scroll_list.columns + label="" + name="checkbox" + width="20" /> + <scroll_list.columns + label="" + name="action" + width="270" /> + </scroll_list> </panel> </tab_container> <panel - height="252" + height="350" + background_visible="false" + 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 Members + 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" @@ -278,58 +316,75 @@ 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 + <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="icon" + width="2" /> + <scroll_list.columns + label="" + name="checkbox" + width="20" /> <scroll_list.columns label="" name="action" - width="300" /> + width="270" /> </scroll_list> </panel> <panel - height="297" + height="550" + background_visible="false" + 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" @@ -337,8 +392,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"> @@ -346,19 +403,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"> @@ -366,11 +426,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" @@ -378,10 +439,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"> @@ -389,15 +451,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." @@ -405,20 +470,23 @@ 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" @@ -439,14 +507,19 @@ things in this group. There's a broad variety of Abilities. </scroll_list> </panel> <panel - height="303" + height="424" + background_visible="false" + 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" @@ -454,44 +527,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_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml index 30e652befd..28c4adf67c 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 @@ -6,84 +6,170 @@ width="110"> <avatar_icon follows="left|top" - height="100" + height="105" left_delta="5" name="avatar_icon" top="-5" - width="100"/> - <text - follows="top|left|right" - font="SansSerifLarge" - height="22" + width="105"/> + <layout_stack + mouse_opaque="false" + border_size="0" + clip="false" + follows="all" + height="168" layout="topleft" - name="avatar_name" - use_ellipses="true" - value="Unknown" - width="100" /> - <button - follows="left|top|right" - height="20" - label="Profile" - name="view_profile_btn" - width="100" /> - <button - follows="left|top|right" - height="20" - label="Add Friend" - name="add_friend_btn" - width="100" /> - <button - follows="left|top|right" - height="20" - label="Teleport" - name="teleport_btn" - width="100" /> - <button - follows="left|top|right" - height="20" - label="Share" - name="share_btn" - width="100" /> - <!--Removing pay button to save space - will update spec - verified by Erica/Steve --> - <!-- <button - follows="left|top|right" - height="20" - label="Pay" - name="pay_btn" - width="100" />--> - <panel - background_visible="true" - bg_alpha_color="DkGray2" - border="false" - top_pad="10" - follows="left|bottom|right" - height="70" - left="1" - name="panel_call_buttons" - width="109"> - <button - bottom="10" - follows="left|top|right" - height="20" - label="Call" - left_delta="5" - name="call_btn" - width="100" /> - <button - bottom="35" - follows="left|top|right" + left="5" + name="button_stack" + orientation="vertical" + top_pad="5" + width="105"> + <layout_panel + mouse_opaque="false" + auto_resize="true" + follows="top|left" + height="0" + layout="topleft" + left="2" + min_height="0" + width="100" + top="0" + name="spacer" + user_resize="false" /> + <layout_panel + auto_resize="false" + follows="top|left|right" height="20" - label="Leave Call" - name="end_call_btn" - visible="false" - width="100" /> + layout="topleft" + min_height="20" + width="100" + name="view_profile_btn_panel" + user_resize="false"> + <button + follows="left|top|right" + height="23" + label="Profile" + name="view_profile_btn" + top="0" + width="100" /> + </layout_panel> + <layout_panel + auto_resize="false" + follows="top|left|right" + height="25" + layout="topleft" + min_height="25" + width="100" + name="add_friend_btn_panel" + user_resize="false"> + <button + follows="left|top|right" + height="23" + label="Add Friend" + name="add_friend_btn" + top="5" + width="100" /> + </layout_panel> + <layout_panel + auto_resize="false" + follows="top|left|right" + height="25" + layout="topleft" + min_height="25" + width="100" + name="teleport_btn_panel" + user_resize="false"> <button - bottom="10" - follows="left|top|right" - height="20" - label="Voice Controls" - name="voice_ctrls_btn" - visible="false" - width="100" /> - </panel> + auto_resize="false" + follows="left|top|right" + height="23" + label="Teleport" + name="teleport_btn" + tool_tip = "Offer to teleport this person" + 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="Share" + 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" + height="25" + layout="topleft" + min_height="25" + width="100" + name="call_btn_panel" + user_resize="false"> + <button + follows="left|top|right" + height="23" + label="Call" + name="call_btn" + width="100" /> + </layout_panel> + <layout_panel + auto_resize="false" + follows="top|left|right" + height="25" + layout="topleft" + min_height="25" + width="100" + name="end_call_btn_panel" + user_resize="false" + visible="false"> + <button + follows="left|top|right" + height="23" + label="Leave Call" + name="end_call_btn" + width="100" /> + </layout_panel> + <layout_panel + auto_resize="false" + follows="top|left|right" + height="25" + layout="topleft" + min_height="25" + width="100" + name="voice_ctrls_btn_panel" + user_resize="false" + visible="false"> + <button + follows="left|top|right" + height="23" + label="Voice Controls" + name="voice_ctrls_btn" + width="100" /> + </layout_panel> + </layout_stack> </panel> 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 ccd754ac5e..34fd3352a3 100644 --- a/indra/newview/skins/default/xui/en/panel_instant_message.xml +++ b/indra/newview/skins/default/xui/en/panel_instant_message.xml @@ -21,6 +21,7 @@ label="im_header" layout="topleft" left="5" + mouse_opaque="false" name="im_header" top="5" width="295"> @@ -30,20 +31,31 @@ image_name="Generic_Person" layout="topleft" left="3" - mouse_opaque="true" + mouse_opaque="false" name="avatar_icon" top="3" width="18" /> - <!--<icon + <group_icon follows="right" - height="20" - image_name="" + height="18" + default_icon_name="Generic_Group" layout="topleft" left="3" - mouse_opaque="true" - name="sys_msg_icon" - top="0" - width="20" />--> + mouse_opaque="false" + 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" /> <text follows="left|right" font.style="BOLD" 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 744ee43f57..befeb182f9 100644 --- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml +++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml @@ -8,7 +8,7 @@ min_height="350" name="landmark_info" top="20" - width="330"> + width="333"> <string name="title_create_landmark" value="Create Landmark" /> @@ -58,11 +58,11 @@ height="23" image_overlay="BackArrow_Off" layout="topleft" - left="10" + left="11" name="back_btn" tool_tip="Back" tab_stop="false" - top="0" + top="4" width="23" /> <text follows="top|left|right" @@ -71,37 +71,37 @@ layout="topleft" left_pad="10" name="title" - text_color="white" - top="0" + text_color="LtGray" + top="2" use_ellipses="true" value="Place Profile" - width="275" /> + width="280" /> <scroll_container color="DkGray2" follows="all" - height="533" + height="532" layout="topleft" - left="10" + left="9" name="place_scroll" opaque="true" - top_pad="5" - width="313"> + top_pad="10" + width="310"> <panel bg_alpha_color="DkGray2" follows="left|top|right" - height="610" + height="630" layout="topleft" left="0" min_height="300" name="scrolling_panel" top="0" - width="313"> + width="310"> <texture_picker enabled="false" - follows="top|left" - height="190" + follows="left|top|right" + height="197" layout="topleft" - left="10" + left="11" name="logo" top="10" width="290" /> @@ -113,29 +113,29 @@ left="10" name="region_title" text_color="white" - top_pad="5" + top_pad="10" use_ellipses="true" value="SampleRegion" - width="290" /> + width="280" /> <text follows="left|top|right" height="14" layout="topleft" left="10" name="parcel_title" - top_pad="4" + top_pad="10" use_ellipses="true" value="SampleParcel, Name Long (145, 228, 26)" - width="285" /> + width="280" /> <expandable_text follows="left|top|right" height="50" layout="topleft" - left="5" + left="10" name="description" top_pad="10" value="Du waltz die spritz" - width="300" /> + width="280" /> <icon follows="top|left" height="16" @@ -149,9 +149,9 @@ follows="left|top|right" height="16" layout="topleft" - left_pad="8" + left_pad="5" name="maturity_value" - top_delta="0" + top_pad="-13" value="unknown" width="268" /> <panel @@ -229,6 +229,7 @@ value="Title:" width="290" /> <text + allow_html="false" follows="left|top" height="22" layout="topleft" @@ -239,7 +240,6 @@ use_ellipses="true" width="290" /> <line_editor - background_image_disabled="task_panel_background.png" follows="left|top|right" height="22" layout="topleft" @@ -269,6 +269,7 @@ name="notes_editor" read_only="true" text_readonly_color="white" + text_type="ascii" top_pad="5" width="290" wrap="true" /> @@ -283,7 +284,7 @@ width="290" /> <combo_box follows="bottom|left|right" - height="20" + height="23" layout="topleft" left="0" name="folder_combo" diff --git a/indra/newview/skins/default/xui/en/panel_landmarks.xml b/indra/newview/skins/default/xui/en/panel_landmarks.xml index c899dcb750..ee8bca6f83 100644 --- a/indra/newview/skins/default/xui/en/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/en/panel_landmarks.xml @@ -7,17 +7,17 @@ left="0" width="380" help_topic="panel_landmarks" - border="true" + border="false" background_visible="true" bg_alpha_color="DkGray2" - follows="left|top|right|bottom"> + follows="all"> <accordion - follows="left|top|right|bottom" - height="368" + follows="all" + height="360" layout="topleft" left="0" name="landmarks_accordion" - top="2" + top="0" width="380"> <accordion_tab layout="topleft" @@ -25,9 +25,9 @@ title="Favorites bar"> <places_inventory_panel allow_multi_select="true" - border="true" + border="false" bottom="0" - follows="left|top|right|bottom" + follows="all" height="126" left="0" mouse_opaque="true" @@ -38,12 +38,12 @@ <accordion_tab layout="topleft" name="tab_landmarks" - title="Landmarks"> + title="My Landmarks"> <places_inventory_panel allow_multi_select="true" - border="true" + border="false" bottom="0" - follows="left|top|right|bottom" + follows="all" height="126" left="0" mouse_opaque="true" @@ -57,9 +57,9 @@ title="My Inventory"> <places_inventory_panel allow_multi_select="true" - border="true" + border="false" bottom="0" - follows="left|top|right|bottom" + follows="all" height="126" left="0" mouse_opaque="true" @@ -73,10 +73,10 @@ title="Library"> <places_inventory_panel allow_multi_select="true" - border="true" + border="false" bottom="0" - follows="left|top|right|bottom" - height="120" + follows="all" + height="126" left="0" mouse_opaque="true" name="library_list" @@ -85,11 +85,14 @@ </accordion_tab> </accordion> <panel - background_visible="true" + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + background_opaque="true" bevel_style="none" bottom="0" follows="left|right|bottom" - height="30" + height="38" layout="bottomleft" left="0" name="bottom_panel" @@ -104,7 +107,7 @@ layout="topleft" left="10" name="options_gear_btn" - top="6" + top="14" width="18" /> <button follows="bottom|left" @@ -113,7 +116,7 @@ image_unselected="AddItem_Off" image_disabled="AddItem_Disabled" layout="topleft" - left_pad="5" + left_pad="10" name="add_btn" tool_tip="Add new landmark" width="18" /> @@ -123,10 +126,10 @@ image_selected="TrashItem_Press" image_unselected="TrashItem_Off" layout="topleft" - right="-5" + right="-8" name="trash_btn" tool_tip="Remove selected landmark" - top="6" + top="14" width="18" /> </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index 6187b8f1e2..627e616af5 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 @@ -24,6 +24,7 @@ top="600" </panel.string> <!-- *NOTE: Custom resize logic for login_html in llpanellogin.cpp --> <web_browser +bg_opaque_color="Black" border_visible="false" bottom="600" follows="all" @@ -117,15 +118,27 @@ control_name="RememberPassword" follows="left|bottom" font="SansSerifSmall" height="16" -label="Remember" +label="Remember password" 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"> @@ -162,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" @@ -185,6 +186,7 @@ height="80"> <text follows="right|bottom" font="SansSerifSmall" +text_color="EmphasisColor" halign="right" height="16" top="12" diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml index 4353b306cd..e6f67078d1 100644 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -2,7 +2,7 @@ <panel background_visible="true" follows="all" - height="400" + height="408" label="Things" layout="topleft" min_height="350" @@ -13,100 +13,6 @@ name="Title"> Things </panel.string> - <filter_editor - text_pad_left="14" - follows="left|top|right" - height="23" - label="Filter Inventory" - layout="topleft" - left="15" -max_length="300" - name="inventory search editor" - top="26" - width="303" /> - <tab_container -follows="all" -halign="center" - height="300" - layout="topleft" - left_delta="-4" - name="inventory filter tabs" - tab_height="30" - tab_position="top" - tab_min_width="100" - top_pad="4" - width="305"> - <inventory_panel - border="false" - follows="all" - height="295" - label="MY INVENTORY" - layout="topleft" - left="0" - name="All Items" - top="16" - width="290" /> - <inventory_panel - border="false" - follows="all" - height="295" - label="RECENT" - layout="topleft" - left_delta="0" - name="Recent Items" - width="290" /> - </tab_container> - - <panel - background_visible="true" - bevel_style="none" - bottom="0" - follows="left|right|bottom" - height="30" - layout="bottomleft" - left="0" - visible="true" - name="bottom_panel" - width="330"> - <button - follows="bottom|left" - tool_tip="Show additional options" - height="18" - image_disabled="OptionsMenu_Disabled" - image_selected="OptionsMenu_Press" - image_unselected="OptionsMenu_Off" - layout="topleft" - left="10" - name="options_gear_btn" - picture_style="true" - top="6" - width="18" /> - <button - follows="bottom|left" - height="18" - image_selected="AddItem_Press" - image_unselected="AddItem_Off" - image_disabled="AddItem_Disabled" - layout="topleft" - left_pad="5" - name="add_btn" - picture_style="true" - tool_tip="Add new item" - width="18" /> - <dnd_button - follows="bottom|right" - height="18" - image_selected="TrashItem_Press" - image_unselected="TrashItem_Off" - layout="topleft" - right="-5" - name="trash_btn" - picture_style="true" - tool_tip="Remove selected item" - top="6" - width="18" /> - </panel> - <menu_bar bg_visible="false" follows="left|top|right" @@ -116,7 +22,7 @@ halign="center" mouse_opaque="false" name="Inventory Menu" top="0" - visible="true" + visible="true" width="290"> <menu height="101" @@ -208,7 +114,7 @@ halign="center" layout="topleft" name="Reset Current"> <menu_item_call.on_click - function="Inventory.ResetFilter" /> + function="Inventory.ResetFilters" /> </menu_item_call> <menu_item_call label="Close All Folders" @@ -262,7 +168,7 @@ halign="center" parameter="lsl" /> </menu_item_call> <menu_item_call - label="New Note" + label="New Notecard" layout="topleft" name="New Note"> <menu_item_call.on_click @@ -468,4 +374,114 @@ halign="center" </menu_item_check> </menu> </menu_bar> + <filter_editor + text_pad_left="10" + follows="left|top|right" + height="23" + label="Filter Inventory" + layout="topleft" + left="10" +max_length="300" + name="inventory search editor" + top="26" + width="303" /> + <tab_container + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + background_opaque="true" +follows="all" +halign="center" + height="305" + layout="topleft" + left="6" + name="inventory filter tabs" + tab_height="30" + tab_position="top" + tab_min_width="100" + top_pad="10" + width="315"> + <inventory_panel + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + background_opaque="true" + border="false" + bevel_style="none" + follows="all" + height="295" + label="MY INVENTORY" + help_topic="my_inventory_tab" + layout="topleft" + left="0" + name="All Items" + top="16" + width="290" /> + <inventory_panel + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + background_opaque="true" + border="false" + bevel_style="none" + follows="all" + height="295" + label="RECENT" + help_topic="recent_inventory_tab" + layout="topleft" + left_delta="0" + name="Recent Items" + width="290" /> + </tab_container> + + <panel + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + background_opaque="true" + bevel_style="none" + follows="left|right|bottom" + height="38" + layout="topleft" + top_pad="-1" + left="9" + name="bottom_panel" + width="310"> + <button + follows="bottom|left" + tool_tip="Show additional options" + height="18" + image_disabled="OptionsMenu_Disabled" + image_selected="OptionsMenu_Press" + image_unselected="OptionsMenu_Off" + layout="topleft" + left="8" + name="options_gear_btn" + top="14" + width="18" /> + <button + follows="bottom|left" + height="18" + image_selected="AddItem_Press" + image_unselected="AddItem_Off" + image_disabled="AddItem_Disabled" + layout="topleft" + left_pad="10" + name="add_btn" + tool_tip="Add new item" + width="18" /> + <dnd_button + follows="bottom|right" + height="18" + image_selected="TrashItem_Press" + image_unselected="TrashItem_Off" + layout="topleft" + right="-7" + name="trash_btn" + tool_tip="Remove selected item" + top="14" + width="18" /> + </panel> + + </panel> diff --git a/indra/newview/skins/default/xui/en/panel_me.xml b/indra/newview/skins/default/xui/en/panel_me.xml index a99777848b..63c522ac69 100644 --- a/indra/newview/skins/default/xui/en/panel_me.xml +++ b/indra/newview/skins/default/xui/en/panel_me.xml @@ -29,23 +29,23 @@ height="575" halign="center" layout="topleft" - left="10" + left="5" name="tabs" tab_min_width="95" tab_height="30" tab_position="top" top_pad="10" - width="313"> + width="317"> <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_media_settings_general.xml b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml index 5217ab3571..38e8b9844f 100644 --- a/indra/newview/skins/default/xui/en/panel_media_settings_general.xml +++ b/indra/newview/skins/default/xui/en/panel_media_settings_general.xml @@ -30,6 +30,7 @@ (This page does not pass the specified whitelist) </text> <line_editor + max_length="1024" bottom_delta="-24" enabled="true" follows="left|top" @@ -72,13 +73,15 @@ Current Page: </text> <text + name="current_url" + max_length="1024" + use_ellipses="true" bottom_delta="-20" enabled="false" follows="left|top" font="SansSerif" height="20" left="10" - name="current_url" tool_tip="The current page for this media source" value="" width="340" /> 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 10381d3987..4112b65635 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] @@ -28,247 +28,211 @@ name="no_partner_text" value="None" /> <string + name="no_group_text" + value="None" /> + <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container - color="DkGray2" + <layout_stack + name="layout" + orientation="vertical" follows="all" - height="485" layout="topleft" - name="profile_scroll" - reserve_scroll_corner="false" - opaque="true" + left="0" top="0" - width="313"> - <panel - name="scroll_content_panel" - follows="left|top|right" - height="485" + height="522" + width="315" + border_size="0"> + <layout_panel + name="profile_stack" + follows="all" layout="topleft" top="0" left="0" - width="297"> - <panel - follows="left|top" - height="117" + height="492" + user_resize="false" + width="315"> + <scroll_container + color="DkGray2" + follows="all" layout="topleft" - left="10" - name="second_life_image_panel" - top="0" - width="280"> - <texture_picker - allow_no_texture="true" - default_image_name="None" - enabled="false" - follows="top|left" + left="0" + name="profile_scroll" + opaque="true" + height="488" + width="315" + top="0"> + <panel + layout="topleft" + follows="left|top|right" + height="488" + name="scroll_content_panel" + top="0" + left="0" + width="297"> + <panel + follows="left|top|right" + height="117" + layout="topleft" + left="10" + name="second_life_image_panel" + top="0" + width="297"> + <texture_picker + allow_no_texture="true" + default_image_name="None" + enabled="false" + follows="top|left" + height="124" + layout="topleft" + left="3" + name="2nd_life_pic" + top="10" + width="102" /> + <icon + height="102" + image_name="Blank" + layout="topleft" + name="2nd_life_edit_icon" + label="" + left="3" + tool_tip="Click the Edit Profile button below to change image" + top="10" + width="102" /> + <text + follows="left|top|right" + font.style="BOLD" + height="15" + layout="topleft" + left_pad="10" + name="title_sl_descr_text" + text_color="white" + top_delta="0" + value="[SECOND_LIFE]:" + width="180" /> + <expandable_text + follows="left|top|right" + height="95" + layout="topleft" + left="107" + textbox.max_length="512" + name="sl_description_edit" + top_pad="-3" + translate="false" + width="181" + expanded_bg_visible="true" + expanded_bg_color="DkGray"> + 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 + follows="left|top|right" height="117" layout="topleft" - left="0" - name="2nd_life_pic" - top="10" - width="102" /> - <icon - height="102" - image_name="Blank" - layout="topleft" - name="2nd_life_edit_icon" - label="" - left="0" - tool_tip="Click the Edit Profile button below to change image" - top="10" - width="102" /> + top_pad="0" + left="10" + name="first_life_image_panel" + width="297"> + <texture_picker + allow_no_texture="true" + default_image_name="None" + enabled="false" + follows="top|left" + height="124" + layout="topleft" + left="3" + name="real_world_pic" + width="102" /> + <icon + height="102" + image_name="Blank" + layout="topleft" + name="real_world_edit_icon" + label="" + left="3" + tool_tip="Click the Edit Profile button below to change image" + top="4" + width="102" /> + <text + follows="left|top|right" + font.style="BOLD" + height="15" + layout="topleft" + left_pad="10" + name="title_rw_descr_text" + text_color="white" + top_delta="0" + value="Real World:" + width="180" /> + <expandable_text + follows="left|top|right" + height="95" + layout="topleft" + left="107" + textbox.max_length="512" + name="fl_description_edit" + top_pad="-3" + translate="false" + width="181" + expanded_bg_visible="true" + expanded_bg_color="DkGray"> + 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 - follows="left|top|right" - font.style="BOLD" + follows="left|top" height="15" + font.style="BOLD" + font="SansSerifMedium" layout="topleft" - left_pad="10" - name="title_sl_descr_text" - text_color="white" - top_delta="0" - value="[SECOND_LIFE]:" - width="165" /> - <expandable_text - follows="left|top|right" - height="95" - layout="topleft" - left="107" - textbox.max_length="512" - name="sl_description_edit" - top_pad="-3" - width="173" - expanded_bg_visible="true" - expanded_bg_color="DkGray"> - 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 - follows="left|top" - height="117" - layout="topleft" - top_pad="10" - left="10" - name="first_life_image_panel" - width="280"> - <texture_picker - allow_no_texture="true" - default_image_name="None" - enabled="false" - follows="top|left" - height="117" - layout="topleft" - left="0" - name="real_world_pic" - width="102" /> - <icon - height="102" - image_name="Blank" - layout="topleft" - name="real_world_edit_icon" - label="" - left="0" - tool_tip="Click the Edit Profile button below to change image" - top="4" - width="102" /> + left="10" + name="homepage_edit" + top_pad="0" + translate="false" + value="http://librarianavengers.org" + width="300" + word_wrap="false" + use_ellipses="true" + /> <text - follows="left|top|right" - font.style="BOLD" - height="15" + follows="left|top" + font.style="BOLD" + height="10" layout="topleft" - left_pad="10" - name="title_rw_descr_text" + left="10" + name="title_member_text" text_color="white" - top_delta="0" - value="Real World:" - width="165" /> - <expandable_text - follows="left|top|right" - height="95" + top_pad="10" + value="Resident Since:" + width="300" /> + <text_editor + allow_scroll="false" + bg_visible="false" + follows="left|top" + h_pad="0" + height="15" layout="topleft" - left="107" - textbox.max_length="512" - name="fl_description_edit" - top_pad="-3" - width="173" - expanded_bg_visible="true" - expanded_bg_color="DkGray"> - 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> - - - <!-- <panel - name="lifes_images_panel" - follows="left|top|right" - height="244" - layout="topleft" - top="0" - left="0" - width="285"> - <panel - follows="left|top" - height="117" - layout="topleft" - left="10" - name="second_life_image_panel" - top="0" - width="285"> - <text - follows="left|top|right" - font.style="BOLD" + left="10" + name="register_date" + read_only="true" + translate="false" + v_pad="0" + value="05/31/2376" + width="300" + word_wrap="true" /> + <text + follows="left|top" + font.style="BOLD" height="15" layout="topleft" - left="0" - name="second_life_photo_title_text" + left="10" + name="title_acc_status_text" text_color="white" - value="[SECOND_LIFE]:" - width="170" /> - <texture_picker - allow_no_texture="true" - default_image_name="None" - enabled="false" - follows="top|left" - height="117" - layout="topleft" - left="0" - name="2nd_life_pic" - top_pad="0" - width="102" /> - </panel> - <icon - height="18" - image_name="AddItem_Off" - layout="topleft" - name="2nd_life_edit_icon" - label="" - left="87" - tool_tip="Click to select an image" - top="25" - width="18" /> - </panel> --> - - - - - <text - type="string" - follows="left|top" - font="SansSerifSmall" - font.style="BOLD" - height="15" - layout="topleft" - left="10" - name="me_homepage_text" - text_color="white" - top_pad="0" - width="280"> - Homepage: - </text> - <text - follows="left|top" - height="15" - layout="topleft" - left="10" - name="homepage_edit" - top_pad="0" - value="http://librarianavengers.org" - width="280" - word_wrap="false" - use_ellipses="true" - /> - <text - follows="left|top" - font.style="BOLD" - height="10" - layout="topleft" - left="10" - name="title_member_text" - text_color="white" - top_pad="10" - value="Member Since:" - width="280" /> - <text - follows="left|top" - height="15" - layout="topleft" - left="10" - name="register_date" - value="05/31/2376" - width="280" - word_wrap="true" /> - <text - follows="left|top" - font.style="BOLD" - height="15" - layout="topleft" - left="10" - name="title_acc_status_text" - text_color="white" - top_pad="10" - value="Account Status:" - width="280" /> - <!-- <text + top_pad="5" + value="Account Status:" + width="300" /> + <!-- <text type="string" follows="left|top" font="SansSerifSmall" @@ -279,81 +243,90 @@ top_delta="0" value="Go to Dashboard" width="100"/> --> - <text - follows="left|top" - height="20" - layout="topleft" - left="10" - name="acc_status_text" - top_pad="0" - value="Resident. No payment info on file." - width="280" - word_wrap="true" /> - <text - follows="left|top" - font.style="BOLD" - height="15" - layout="topleft" - left="10" - name="title_partner_text" - text_color="white" - top_pad="5" - value="Partner:" - width="280" /> - <panel - follows="left|top" - height="15" - layout="topleft" - left="10" - name="partner_data_panel" - top_pad="0" - width="280"> + <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_editor> <text follows="left|top" - height="10" + font.style="BOLD" + height="15" layout="topleft" - left="0" - name="partner_text" - top="0" - value="[FIRST] [LAST]" - width="280" - word_wrap="true" /> - </panel> - <text - follows="left|top" - font.style="BOLD" - height="15" - layout="topleft" - left="10" - name="title_groups_text" - text_color="white" - top_pad="8" - value="Groups:" - width="280" /> - <expandable_text - follows="left|top|bottom" - height="60" - layout="topleft" - left="10" - name="sl_groups" - top_pad="0" - width="280" - expanded_bg_visible="true" - expanded_bg_color="DkGray"> - 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 + left="10" + name="title_partner_text" + text_color="white" + top_pad="3" + value="Partner:" + width="300" /> + <panel + follows="left|top" + height="15" + layout="topleft" + left="10" + name="partner_data_panel" + top_pad="0" + width="300"> + <name_box + follows="left|top" + height="10" + initial_value="(retrieving)" + layout="topleft" + left="0" + link="true" + name="partner_text" + top="0" + width="300" + word_wrap="true" /> + </panel> + <text + follows="left|top" + font.style="BOLD" + height="13" + layout="topleft" + left="10" + name="title_groups_text" + text_color="white" + top_pad="3" + value="Groups:" + width="300" /> + <expandable_text + follows="all" + height="113" + layout="topleft" + left="7" + name="sl_groups" + top_pad="0" + translate="false" + width="298" + expanded_bg_visible="true" + expanded_bg_color="DkGray"> + 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. Aenean viverra tulip moosetop. Slan de heelish marfnik tooplod. Sum sum to whop de wompam booster copm. + </expandable_text> + </panel> + </scroll_container> + </layout_panel> + <!-- <layout_panel follows="bottom|left" layout="topleft" left="0" name="profile_buttons_panel" - top_pad="2" - bottom="10" - height="23" - width="303"> - <button + height="28" + width="313"> + <button follows="bottom|left" height="23" label="Add Friend" @@ -361,8 +334,9 @@ left="0" mouse_opaque="false" name="add_friend" + tool_tip="Offer friendship to the Resident" top="5" - width="75" /> + width="80" /> <button follows="bottom|left" height="23" @@ -370,7 +344,7 @@ layout="topleft" name="im" top="5" - left_pad="5" + left_pad="3" width="45" /> <button follows="bottom|left" @@ -378,7 +352,7 @@ label="Call" layout="topleft" name="call" - left_pad="5" + left_pad="3" top="5" width="45" /> <button @@ -389,7 +363,7 @@ layout="topleft" name="show_on_map_btn" top="5" - left_pad="5" + left_pad="3" width="45" /> <button follows="bottom|left" @@ -397,35 +371,38 @@ label="Teleport" layout="topleft" name="teleport" - left_pad="5" + left_pad="3" top="5" - width="80" /> - </panel> - <panel + width="85" /> + </panel>--> + <layout_panel follows="bottom|left" layout="topleft" left="0" - top_pad="-17" + top_pad="0" name="profile_me_buttons_panel" visible="false" - height="23" - width="303"> + user_resize="false" + auto_resize="false" + height="28" + width="315"> <button follows="bottom|right" height="23" - left="10" + left="6" + top="1" 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="3" name="edit_appearance_btn" tool_tip="Create/edit your appearance: physical data, clothes and etc." - right="-10" - width="130" /> - </panel> + width="153" /> + </layout_panel> +</layout_stack> </panel> 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 74265a51ca..a314cedc21 100644 --- a/indra/newview/skins/default/xui/en/panel_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_navigation_bar.xml @@ -4,7 +4,7 @@ background_visible="true" bg_opaque_color="MouseGray" follows="left|top|right" - height="65" + height="60" layout="topleft" name="navigation_bar" chrome="true" @@ -18,7 +18,7 @@ visible="true" left="0" top="0" - height="65" + height="60" width="600"/> <icon follows="all" @@ -29,41 +29,34 @@ visible="false" left="0" top="0" - height="65" + height="50" width="600"/> <panel background_visible="false" follows="left|top|right" - top="5" + top="3" height="23" layout="topleft" name="navigation_panel" width="600"> - <button + <pull_button follows="left|top" + direction="down" height="23" - image_disabled="PushButton_Disabled" - image_disabled_selected="PushButton_Disabled" image_overlay="Arrow_Left_Off" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" - hover_glow_amount="0.15" + image_bottom_pad="1" layout="topleft" left="10" name="back_btn" tool_tip="Go back to previous location" - top="3" + top="2" width="31" /> - - <button + <pull_button follows="left|top" + direction="down" height="23" - image_disabled="PushButton_Disabled" - image_disabled_selected="PushButton_Disabled" image_overlay="Arrow_Right_Off" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" - hover_glow_amount="0.15" + image_bottom_pad="1" layout="topleft" left_pad="0" name="forward_btn" @@ -73,12 +66,7 @@ <button follows="left|top" height="23" - image_disabled="PushButton_Disabled" - image_disabled_selected="PushButton_Disabled" image_overlay="Home_Off" - image_selected="PushButton_Selected" - image_unselected="PushButton_Off" - hover_glow_amount="0.15" layout="topleft" left_pad="7" name="home_btn" @@ -108,7 +96,6 @@ width="20" /> --> </location_input> - <!-- <button --> <!-- follows="right|top" --> <!-- height="20" --> @@ -124,7 +111,6 @@ <!-- name="search_bg" --> <!-- top_delta="0" --> <!-- width="168" /> --> - <search_combo_box bevel_style="none" border_style="line" @@ -144,26 +130,45 @@ <combo_editor label="Search [SECOND_LIFE]" name="search_combo_editor"/> + <combo_list + draw_border="true" + border.highlight_light_color="FocusColor" + border.highlight_dark_color="FocusColor" + border.shadow_light_color="FocusColor" + border.shadow_dark_color="FocusColor"/> </search_combo_box> </panel> - <favorites_bar follows="left|right|top" - font="SansSerif" + font="SansSerifSmall" height="15" layout="topleft" left="0" name="favorite" - image_drag_indication="arrow_down.tga" - bottom="62" - width="590"> + 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" + 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" tab_stop="false" - follows="left|bottom" - tool_tip="Show more of My Favorites" + follows="left|bottom" + tool_tip="Show more of My Favorites" width="15" + top="15" height="15"/> </favorites_bar> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml index 2543656a8b..1d99de1fa7 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml @@ -8,12 +8,6 @@ name="chat_bar" top="21" width="310"> - <string name="min_width"> - 192 - </string> - <string name="max_width"> - 320 - </string> <line_editor border_style="line" border_thickness="1" @@ -21,14 +15,14 @@ height="23" label="Click here to chat." layout="topleft" - left_delta="7" + left_delta="3" text_pad_right="25" left="0" max_length="512" name="chat_box" tool_tip="Press Enter to say, Ctrl+Enter to shout" - top="1" - width="279" /> + top="2" + width="283" /> <output_monitor auto_update="true" follows="right" @@ -45,7 +39,7 @@ follows="right" is_toggle="true" width="20" - top="1" + top="2" layout="topleft" left_pad="4" image_disabled="ComboButton_UpOff" diff --git a/indra/newview/skins/default/xui/en/panel_nearby_media.xml b/indra/newview/skins/default/xui/en/panel_nearby_media.xml new file mode 100644 index 0000000000..7c0ce9e62e --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_nearby_media.xml @@ -0,0 +1,387 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + can_resize="true" + can_close="false" + mouse_opaque="true" + bg_opaque_image="Volume_Background" + bg_alpha_image="Volume_Background" + background_opaque="true" + background_visible="true" + layout="topleft" + width="270" + height="235" + name="nearby_media" + help_topic="nearby_media"> + <string name="empty_item_text"><empty></string> + <string name="parcel_media_name">Parcel Streaming Media</string> + <string name="parcel_audio_name">Parcel Streaming Audio</string> + <string name="playing_suffix">(playing)</string> + <panel + bevel_style="in" + background_visible="false" + follows="left|right|top" + top="0" + height="30" + name="minimized_controls" + left="0"> + <button + name="all_nearby_media_disable_btn" + follows="left" + tool_tip="Turn all nearby media off" + left="15" + width="60" + height="22" + label="Stop All"> + <button.commit_callback + function="MediaListCtrl.DisableAll" /> + </button> + <button + name="all_nearby_media_enable_btn" + follows="left" + tool_tip="Turn all nearby media on" + left_pad="4" + width="60" + height="22" + label="Start All"> + <button.commit_callback + function="MediaListCtrl.EnableAll" /> + </button> + <button + name="open_prefs_btn" + image_overlay="Icon_Gear_Foreground" + image_disabled="PushButton_Disabled" + image_disabled_selected="PushButton_Disabled" + image_selected="PushButton_Selected" + image_unselected="PushButton_Off" + hover_glow_amount="0.15" + tool_tip = "Bring up media prefs" + top_delta="0" + left_pad="4" + height="22" + min_width="28" + width="28"> + <button.commit_callback + function="MediaListCtrl.GoMediaPrefs" /> + </button> + <button + name="more_less_btn" + follows="right" + tool_tip="Advanced Controls" + top_delta="0" + right="-10" + width="60" + height="22" + toggle="true" + label="More >>" + label_selected="Less <<"> + <button.commit_callback + function="MediaListCtrl.MoreLess" /> + </button> + </panel> + <panel + name="nearby_media_panel" + bevel_style="in" + border_style="line" + bg_alpha_color="0 0 0 0" + bg_opaque_color="0 0 0 0.3" + follows="left|right|top|bottom" + top_delta="30" + right="-1" + left="0" + height="200"> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + left="10" + width="100"> + Nearby Media + </text> + <text + type="string" + length="1" + follows="top|left" + font="SansSerif" + top_pad="15" + left="10" + width="40"> + Show: + </text> + <combo_box + height="23" + left="50" + width="140" + top_delta="-5" + follows="left|top" + name="show_combo"> + <combo_box.item + label="All" + value="0" + name="All" /> + <combo_box.item + label="In this Parcel" + value="2" + name="WithinParcel" /> + <combo_box.item + label="Outside this Parcel" + value="3" + name="OutsideParcel" /> + <combo_box.item + label="On other Avatars" + value="4" + ame="OnOthers" /> + </combo_box> + <scroll_list + name="media_list" + follows="left|top|bottom|right" + column_padding="0" + height="105" + draw_heading="false" + draw_stripes="true" + bg_stripe_color="0.25 0.25 0.25 0.25" + top_pad="8" + left="10" + right="-10"> + <scroll_list.columns + type="checkbox" + width="-1" + label="" + name="media_checkbox_ctrl" /> + <scroll_list.columns + sort_column="media_proximity" + width="-1" + label="Proximity" + name="media_proximity" /> + <scroll_list.columns + sort_column="media_visibility" + width="-1" + label="Visible" + name="media_visibility" /> + <scroll_list.columns + sort_column="media_class" + width="-1" + label="Class" + name="media_class" /> + <scroll_list.columns + label="Name" + name="media_name" /> + <scroll_list.columns + sort_column="media_debug" + width="-1" + label="Debug" + name="media_debug" /> + </scroll_list> + <panel + bevel_style="in" + background_visible="false" + follows="left|right|bottom" + top_pad="5" + height="30" + left="10" + right="-10"> + <layout_stack + name="media_controls" + follows="left|right|top" + animate="false" + height="26" + layout="topleft" + top="4" + left="10" + right="-10" + border_size="0" + orientation="horizontal"> + <layout_panel + name="stop" + auto_resize="false" + user_resize="false" + layout="topleft" + top="0" + height="22" + min_width="22" + width="22"> + <button + name="stop_btn" + follows="top" + image_overlay="Stop_Off" + image_disabled="PushButton_Disabled" + image_disabled_selected="PushButton_Disabled" + image_selected="PushButton_Selected" + image_unselected="PushButton_Off" + hover_glow_amount="0.15" + layout="topleft" + tool_tip="Stop selected media" + top="0" + height="22" + width="22"> + <button.commit_callback + function="SelectedMediaCtrl.Stop" /> + </button> + </layout_panel> + <layout_panel + name="play" + auto_resize="false" + user_resize="false" + layout="topleft" + top="0" + height="22" + min_width="22" + width="22"> + <button + name="play_btn" + follows="top" + image_overlay="Play_Off" + image_disabled="PushButton_Disabled" + image_disabled_selected="PushButton_Disabled" + image_selected="PushButton_Selected" + image_unselected="PushButton_Off" + hover_glow_amount="0.15" + layout="topleft" + tool_tip = "Play selected media" + top="0" + height="22" + width="22"> + <button.commit_callback + function="SelectedMediaCtrl.Play" /> + </button> + </layout_panel> + <layout_panel + name="pause" + auto_resize="false" + user_resize="false" + layout="topleft" + top="0" + min_width="22" + width="22"> + <button + name="pause_btn" + follows="top" + image_overlay="Pause_Off" + image_disabled="PushButton_Disabled" + image_disabled_selected="PushButton_Disabled" + image_selected="PushButton_Selected" + image_unselected="PushButton_Off" + hover_glow_amount="0.15" + layout="topleft" + top="0" + height="22" + width="22" + tool_tip = "Pause selected media"> + <button.commit_callback + function="SelectedMediaCtrl.Pause" /> + </button> + </layout_panel> + <layout_panel + name="volume_slider_ctrl" + auto_resize="true" + user_resize="false" + follows="left|right" + layout="topleft" + top="0" + height="22" + min_width="100" + width="200"> + <slider_bar + name="volume_slider" + follows="left|right|top" + top="0" + height="22" + increment="0.01" + initial_value="0.5" + layout="topleft" + tool_tip="Audio volume for selected media" + width="200"> + <slider_bar.commit_callback + function="SelectedMediaCtrl.Volume" /> + </slider_bar> + </layout_panel> + <layout_panel + name="mute" + auto_resize="false" + user_resize="false" + layout="topleft" + top="0" + height="72" + min_width="22" + width="22"> + <button + name="mute_btn" + follows="top" + image_disabled="PushButton_Disabled" + image_disabled_selected="PushButton_Disabled" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" + hover_glow_amount="0.15" + is_toggle="true" + layout="topleft" + scale_image="false" + tool_tip="Mute audio on selected media" + top="0" + height="20" + width="22" > + <button.commit_callback + function="SelectedMediaCtrl.Mute" /> + </button> + </layout_panel> + <layout_panel + name="zoom" + auto_resize="false" + user_resize="false" + layout="topleft" + top="0" + height="28" + min_width="22" + width="22"> + <button + name="zoom_btn" + follows="top" + image_overlay="Zoom_Off" + image_disabled="PushButton_Disabled" + image_disabled_selected="PushButton_Disabled" + image_selected="PushButton_Selected" + image_unselected="PushButton_Off" + hover_glow_amount="0.15" + top="0" + height="22" + layout="topleft" + tool_tip="Zoom into selected media" + width="22"> + <button.commit_callback + function="SelectedMediaCtrl.Zoom" /> + </button> + </layout_panel> + <layout_panel + name="unzoom" + auto_resize="false" + user_resize="false" + layout="topleft" + top="0" + min_width="21" + width="21" > + <button + name="unzoom_btn" + follows="top" + image_overlay="UnZoom_Off" + image_disabled="PushButton_Disabled" + image_disabled_selected="PushButton_Disabled" + image_selected="PushButton_Selected" + image_unselected="PushButton_Off" + hover_glow_amount="0.15" + top="0" + height="22" + layout="topleft" + tool_tip ="Zoom back from selected media" + top_delta="-4" + width="21" > + <button.commit_callback + function="SelectedMediaCtrl.Unzoom" /> + </button> + </layout_panel> + <layout_panel + name="right_bookend" + width="0" + user_resize="false" /> + </layout_stack> + </panel> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_notes.xml b/indra/newview/skins/default/xui/en/panel_notes.xml index f15e75dee9..cff7b51ce8 100644 --- a/indra/newview/skins/default/xui/en/panel_notes.xml +++ b/indra/newview/skins/default/xui/en/panel_notes.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel follows="all" - height="535" + height="533" label="Notes & Privacy" layout="topleft" left="0" @@ -19,94 +19,94 @@ height="517" width="313" border_size="0"> - <panel - name="notes_stack" + <layout_panel + name="notes_stack" + follows="all" + layout="topleft" + top="0" + left="0" + height="450" + width="313"> + <scroll_container + color="DkGray2" follows="all" layout="topleft" - top="0" left="0" - height="475" - width="313"> - <scroll_container - color="DkGray2" - follows="all" + name="profile_scroll" + opaque="true" + height="450" + width="313" + top="0"> + <panel + height="450" + layout="topleft" + name="profile_scroll_panel" + top="0" + left="0" + width="303"> + <text + follows="left|top" + font.style="BOLD" + height="16" layout="topleft" - left="0" - name="profile_scroll" - opaque="true" - height="475" - width="313" - top="0"> - <panel - height="450" - layout="topleft" - name="profile_scroll_panel" - top="0" - left="0" - width="303"> - <text - follows="left|top" - font="SansSerifBold" - height="16" - layout="topleft" - left="10" - name="status_message" - text_color="white" - top="20" - value="My private notes:" - width="293" /> - <text_editor - follows="left|top" - height="120" - layout="topleft" - left="10" - max_length="1000" - name="notes_edit" - text_color="DkGray" - top_pad="10" - width="280" - word_wrap="true" /> - <text - follows="left|top" - font="SansSerifBold" - height="16" - layout="topleft" - left="10" - name="status_message2" - text_color="white" - top_pad="30" - value="Allow this person to:" - width="293" /> - <check_box - enabled="false" - height="16" - label="See my online status" - layout="topleft" - left="20" - name="status_check" - width="293" /> - <check_box - enabled="false" - height="16" - label="See me on the map" - layout="topleft" - left="20" - name="map_check" - width="293" /> - <check_box - enabled="false" - height="16" - label="Edit, delete or take my objects" - layout="topleft" - left="20" - name="objects_check" - width="293" /> - </panel> - </scroll_container> - </panel> - <panel - follows="bottom|left" - height="30" + left="11" + name="status_message" + text_color="white" + top="10" + value="My private notes:" + width="293" /> + <text_editor + follows="left|top" + height="120" + layout="topleft" + left="12" + max_length="1000" + name="notes_edit" + text_color="DkGray" + top_pad="3" + width="288" + word_wrap="true" /> + <text + follows="left|top" + font.style="BOLD" + height="16" + layout="topleft" + left="11" + name="status_message2" + text_color="white" + top_pad="20" + value="Allow this person to:" + width="293" /> + <check_box + enabled="false" + height="16" + label="See my online status" + layout="topleft" + left="10" + name="status_check" + width="293" /> + <check_box + enabled="false" + height="16" + label="See me on the map" + layout="topleft" + left="10" + name="map_check" + width="293" /> + <check_box + enabled="false" + height="16" + label="Edit, delete or take my objects" + layout="topleft" + left="10" + name="objects_check" + width="293" /> + </panel> + </scroll_container> + </layout_panel> + <layout_panel + follows="bottom|left" + height="30" layout="topleft" left="0" name="notes_buttons_panel" @@ -115,14 +115,14 @@ <button follows="bottom|left" height="23" - label="Add" + label="Add Friend" layout="topleft" - left="0" + left="2" mouse_opaque="false" name="add_friend" - tool_tip="Offer friendship to the resident" + tool_tip="Offer friendship to the Resident" top="5" - width="55" /> + width="80" /> <button follows="bottom|left" height="23" @@ -131,18 +131,18 @@ name="im" tool_tip="Open instant message session" top="5" - left_pad="5" - width="40" /> + left_pad="3" + width="45" /> <button follows="bottom|left" height="23" label="Call" layout="topleft" name="call" - tool_tip="Call this resident" - left_pad="5" + tool_tip="Call this Resident" + left_pad="3" top="5" - width="55" /> + width="46" /> <button enabled="false" follows="bottom|left" @@ -150,10 +150,10 @@ label="Map" layout="topleft" name="show_on_map_btn" - tool_tip="Show the resident on the map" + tool_tip="Show the Resident on the map" top="5" - left_pad="5" - width="50" /> + left_pad="3" + width="45" /> <button follows="bottom|left" height="23" @@ -161,9 +161,9 @@ layout="topleft" name="teleport" tool_tip="Offer teleport" - left_pad="5" + left_pad="3" top="5" - width="90" /> - </panel> + width="80" /> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_notification.xml b/indra/newview/skins/default/xui/en/panel_notification.xml index df37f9973c..34738745eb 100644 --- a/indra/newview/skins/default/xui/en/panel_notification.xml +++ b/indra/newview/skins/default/xui/en/panel_notification.xml @@ -3,14 +3,15 @@ background_opaque="false" border_visible="false" background_visible="true" - bg_alpha_color="0.3 0.3 0.3 0" - bg_opaque_color="0.3 0.3 0.3 0" + bg_alpha_color="1 0.3 0.3 0" + bg_opaque_color="1 0.3 0.3 0" label="notification_panel" layout="topleft" left="0" name="notification_panel" top="0" height="140" + translate="false" width="305"> <!-- THIS PANEL CONTROLS TOAST HEIGHT? --> <panel @@ -82,12 +83,16 @@ <panel background_visible="false" follows="left|right|bottom" - height="40" + height="30" + width="290" label="control_panel" layout="topleft" - left="0" - left_delta="-38" + left="10" name="control_panel" - top_pad="0"> + top_pad="5"> + <!-- + Notes: + This panel holds buttons of notification. Change of its size can affect the layout of buttons. + --> </panel> </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 7b6c0f33da..16593751f7 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_online_status.xml b/indra/newview/skins/default/xui/en/panel_online_status.xml new file mode 100644 index 0000000000..14cb5fffee --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_online_status.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + background_visible="false" + height="152" + label="friend_online_status" + layout="topleft" + left="0" + name="friend_online_status" + top="0" + width="305"> + <avatar_icon + follows="top|left" + height="18" + image_name="Generic_Person" + layout="topleft" + left="3" + mouse_opaque="false" + name="avatar_icon" + top="10" + width="18" /> + <text + font="SansSerifSmall" + follows="all" + height="137" + layout="topleft" + left_pad="5" + name="message" + text_color="white" + top="15" + use_ellipses="true" + value="" + width="285" + word_wrap="true" + max_length="350" /> +</panel>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_online_status_toast.xml b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml new file mode 100644 index 0000000000..14cb5fffee --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_online_status_toast.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + background_visible="false" + height="152" + label="friend_online_status" + layout="topleft" + left="0" + name="friend_online_status" + top="0" + width="305"> + <avatar_icon + follows="top|left" + height="18" + image_name="Generic_Person" + layout="topleft" + left="3" + mouse_opaque="false" + name="avatar_icon" + top="10" + width="18" /> + <text + font="SansSerifSmall" + follows="all" + height="137" + layout="topleft" + left_pad="5" + name="message" + text_color="white" + top="15" + use_ellipses="true" + value="" + width="285" + word_wrap="true" + max_length="350" /> +</panel>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml index d6d8e9562b..cc60b97f92 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory.xml @@ -1,5 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> - <panel name="Outfits" background_visible="true" follows="all" @@ -8,107 +7,123 @@ layout="topleft" min_height="350" min_width="240" - width="330" + width="320" border="false"> <tab_container follows="all" - height="500" + height="490" layout="topleft" - left="10" + left="6" name="appearance_tabs" - tab_min_width="100" + tab_min_width="140" tab_height="30" tab_position="top" halign="center" - width="313"> - <inventory_panel - label="MY OUTFITS" - help_topic="my_outfits_tab" - allow_multi_select="true" - follows="all" - border="false" - left="0" - top="0" - height="500" - width="290" - mouse_opaque="true" - name="outfitslist_accordionpanel" - start_folder="My Outfits" /> + width="315"> <inventory_panel - label="WEARING" - help_topic="now_wearing_tab" - allow_multi_select="true" - border="false" - height="500" - width="290" - left="0" - top="0" - mouse_opaque="true" - name="cof_accordionpanel" - start_folder="Current Outfit" /> + background_visible="true" + background_opaque="true" + label="MY OUTFITS" + help_topic="my_outfits_tab" + allow_multi_select="true" + follows="all" + border="false" + left="0" + top="0" + width="314" + mouse_opaque="true" + name="outfitslist_tab" + start_folder="My Outfits" /> + <inventory_panel + follows="all" + background_visible="true" + background_opaque="true" + label="WEARING" + help_topic="now_wearing_tab" + allow_multi_select="true" + border="false" + left="0" + top="0" + mouse_opaque="true" + name="cof_tab" + start_folder="Current Outfit" + width="313" /> </tab_container> + <panel + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + background_opaque="true" + follows="left|right|bottom" + height="38" + layout="topleft" + left="9" + visible="true" + top_pad="-1" + width="310" /> <panel - background_visible="true" + background_visible="false" follows="bottom|left" - height="50" + height="73" layout="topleft" - left="0" + left="9" visible="true" name="bottom_panel" - top_pad="10" - width="313"> - <button - follows="bottom|left" - tool_tip="Show additional options" - height="18" - image_disabled="OptionsMenu_Disabled" - image_selected="OptionsMenu_Press" - image_unselected="OptionsMenu_Off" - layout="topleft" - left="10" - name="options_gear_btn" - top="6" - width="18" /> - <dnd_button - follows="bottom|left" - height="18" - image_selected="TrashItem_Press" - image_unselected="TrashItem_Off" - layout="topleft" - right="-5" - name="trash_btn" - tool_tip="Remove selected item" - top="6" - width="18" /> + top_pad="-38" + width="310"> + <button + follows="bottom|left" + tool_tip="Show additional options" + height="18" + image_disabled="OptionsMenu_Disabled" + image_selected="OptionsMenu_Press" + image_unselected="OptionsMenu_Off" + layout="topleft" + left="8" + name="options_gear_btn" + top="14" + width="18" /> + <dnd_button + follows="bottom|right" + height="18" + image_selected="TrashItem_Press" + image_unselected="TrashItem_Off" + layout="topleft" + right="-9" + name="trash_btn" + tool_tip="Remove selected item" + top="14" + width="18" /> <button follows="bottom|left" height="23" - label="Edit Look" - layout="topleft" - left="10" - name="look_edit_btn" - top="26" - visible="false" - width="90" /> - <button - follows="bottom|left" - height="23" - label="Make Outfit" + label="Save Outfit" layout="topleft" name="make_outfit_btn" tool_tip="Save appearance as an outfit" - top="26" - right="-110" - width="90" /> + top="43" + left="0" + width="153" /> <button follows="bottom|right" height="23" label="Wear" layout="topleft" name="wear_btn" - right="-10" - top="26" + left_pad="3" + top="43" tool_tip="Wear selected outfit" - width="90" /> + width="152" /> + <button + follows="bottom|left" + height="23" + label="M" + layout="topleft" + right="-140" + name="look_edit_btn" + top="26" + visible="false" + width="20" /> </panel> + </panel> diff --git a/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml index 7b88fca7c3..2c7a51f0e7 100644 --- a/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml +++ b/indra/newview/skins/default/xui/en/panel_outfits_inventory_gear_default.xml @@ -18,17 +18,6 @@ parameter="wear" /> </menu_item_call> <menu_item_call - label="Add To Current Outfit" - layout="topleft" - name="add"> - <on_click - function="panel_outfits_inventory_gear_default.Custom.Action" - parameter="add" /> - <on_enable - function="panel_outfits_inventory_gear_default.Enable" - parameter="add" /> - </menu_item_call> - <menu_item_call label="Remove From Current Outfit" layout="topleft" name="remove"> @@ -54,7 +43,7 @@ parameter="rename" /> </menu_item_call> <menu_item_call - label="Remove" + label="Remove Link" layout="topleft" name="remove_link"> <on_click @@ -65,7 +54,7 @@ parameter="remove_link" /> </menu_item_call> <menu_item_call - label="Delete" + label="Delete Outfit" layout="topleft" name="delete"> <on_click @@ -73,6 +62,6 @@ parameter="delete" /> <on_enable function="panel_outfits_inventory_gear_default.Enable" - parameter="delete" /> + parameter="delete_outfit" /> </menu_item_call> </menu> diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 08a10553a8..540e17e413 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -1,11 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <!-- Side tray panel --> <panel -background_visible="true" follows="all" - height="570" label="People" layout="topleft" + height="449" min_height="350" name="people_panel" top="0" @@ -24,19 +23,17 @@ background_visible="true" name="no_friends" value="No friends" /> <string - name="no_groups" - value="No groups" /> - <string name="people_filter_label" value="Filter People" /> <string name="groups_filter_label" value="Filter Groups" /> <filter_editor + text_pad_left="10" follows="left|top|right" height="23" layout="topleft" - left="15" + left="10" label="Filter" max_length="300" name="filter_input" @@ -45,19 +42,23 @@ background_visible="true" width="303" /> <tab_container follows="all" - height="500" + height="383" layout="topleft" - left="10" + left="5" name="tabs" tab_min_width="70" tab_height="30" tab_position="top" top_pad="10" halign="center" - width="313"> - <panel + width="317"> + <panel + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + background_opaque="true" follows="all" - height="500" + height="383" label="NEARBY" layout="topleft" left="0" @@ -68,7 +69,7 @@ background_visible="true" <avatar_list allow_select="true" follows="all" - height="470" + height="345" ignore_online_status="true" layout="topleft" left="0" @@ -78,7 +79,7 @@ background_visible="true" width="313" /> <panel follows="left|right|bottom" - height="30" + height="38" label="bottom_panel" layout="topleft" left="0" @@ -94,7 +95,7 @@ background_visible="true" layout="topleft" left="10" name="nearby_view_sort_btn" - top="5" + top="10" width="18" /> <button follows="bottom|left" @@ -103,10 +104,9 @@ background_visible="true" image_unselected="AddItem_Off" image_disabled="AddItem_Disabled" layout="topleft" - left_pad="5" + left_pad="10" name="add_friend_btn" - top_delta="0" - tool_tip="Add selected resident to your friends List" + tool_tip="Add selected Resident to your friends List" width="18"> <commit_callback function="People.addFriend" /> @@ -114,9 +114,13 @@ background_visible="true" </panel> </panel> <panel + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + background_opaque="true" follows="all" - height="500" - label="FRIENDS" + height="383" + label="MY FRIENDS" layout="topleft" left="0" help_topic="people_friends_tab" @@ -125,7 +129,7 @@ background_visible="true" width="313"> <accordion follows="all" - height="470" + height="345" layout="topleft" left="0" name="friends_accordion" @@ -133,13 +137,14 @@ background_visible="true" width="313"> <accordion_tab layout="topleft" - height="235" + height="172" min_height="150" name="tab_online" title="Online"> <avatar_list allow_select="true" follows="all" + height="172" layout="topleft" left="0" multi_select="true" @@ -149,12 +154,13 @@ background_visible="true" </accordion_tab> <accordion_tab layout="topleft" - height="235" + height="173" name="tab_all" title="All"> <avatar_list allow_select="true" follows="all" + height="173" layout="topleft" left="0" multi_select="true" @@ -165,7 +171,7 @@ background_visible="true" </accordion> <panel follows="left|right|bottom" - height="30" + height="38" label="bottom_panel" layout="topleft" left="0" @@ -181,7 +187,7 @@ background_visible="true" layout="topleft" left="10" name="friends_viewsort_btn" - top="5" + top="10" width="18" /> <button follows="bottom|left" @@ -190,10 +196,9 @@ background_visible="true" image_unselected="AddItem_Off" image_disabled="AddItem_Disabled" layout="topleft" - left_pad="5" + left_pad="10" name="add_btn" - tool_tip="Offer friendship to a resident" - top_delta="0" + tool_tip="Offer friendship to a Resident" width="18" /> <button follows="bottom|left" @@ -209,11 +214,26 @@ background_visible="true" top_delta="0" width="18" /> </panel> + <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 use right-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> <panel + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + background_opaque="true" follows="all" - height="500" - label="GROUPS" + height="383" + label="MY GROUPS" layout="topleft" left="0" help_topic="people_groups_tab" @@ -222,16 +242,17 @@ background_visible="true" width="313"> <group_list follows="all" - height="470" + height="345" layout="topleft" left="0" name="group_list" + no_filtered_groups_msg="[secondlife:///app/search/groups Try fine the group in search?]" + no_groups_msg="[secondlife:///app/search/groups Try searching for some groups to join.]" top="0" width="313" /> <panel - top_pad="0" follows="left|right|bottom" - height="30" + height="38" label="bottom_panel" layout="topleft" left="0" @@ -247,7 +268,7 @@ background_visible="true" layout="topleft" left="10" name="groups_viewsort_btn" - top="7" + top="10" width="18" /> <button follows="bottom|left" @@ -256,10 +277,9 @@ background_visible="true" image_unselected="AddItem_Off" image_disabled="AddItem_Disabled" layout="topleft" - left_pad="5" + left_pad="10" name="plus_btn" tool_tip="Join group/Create new group" - top_delta="0" width="18" /> <button follows="bottom|left" @@ -268,16 +288,20 @@ background_visible="true" image_selected="Activate_Checkmark" image_unselected="Activate_Checkmark" layout="topleft" - left_pad="24" + left_pad="10" name="activate_btn" tool_tip="Activate selected group" - top_delta="5" + top_delta="4" width="10" /> </panel> </panel> <panel + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + background_opaque="true" follows="all" - height="500" + height="383" label="RECENT" layout="topleft" left="0" @@ -288,7 +312,7 @@ background_visible="true" <avatar_list allow_select="true" follows="all" - height="470" + height="345" layout="topleft" left="0" multi_select="true" @@ -297,9 +321,8 @@ background_visible="true" top="0" width="313" /> <panel - top_pad="0" follows="left|right|bottom" - height="30" + height="38" label="bottom_panel" layout="topleft" left="0" @@ -315,7 +338,7 @@ background_visible="true" layout="topleft" left="10" name="recent_viewsort_btn" - top="7" + top="10" width="18" /> <button follows="bottom|left" @@ -324,10 +347,10 @@ background_visible="true" image_unselected="AddItem_Off" image_disabled="AddItem_Disabled" layout="topleft" - left_pad="5" + left_pad="10" name="add_friend_btn" top_delta="0" - tool_tip="Add selected resident to your friends List" + tool_tip="Add selected Resident to your friends List" width="18"> <commit_callback function="People.addFriend" /> @@ -337,89 +360,82 @@ background_visible="true" </tab_container> <panel follows="bottom|left" - height="25" + height="23" layout="topleft" - left="10" + left="8" + top_pad="0" name="button_bar" width="313"> <button follows="bottom|left" - top="4" - left="0" height="23" label="Profile" layout="topleft" name="view_profile_btn" - tool_tip="Show picture, groups, and other residents information" + tool_tip="Show picture, groups, and other Residents information" width="70" /> <button follows="bottom|left" - top="4" - left_pad="2" + left_pad="3" height="23" label="IM" layout="topleft" name="im_btn" tool_tip="Open instant message session" - width="45" /> + width="43" /> <button follows="bottom|left" - top="4" - left_pad="2" + left_pad="3" height="23" label="Call" layout="topleft" name="call_btn" - tool_tip="Call this resident" - width="50" /> + tool_tip="Call this Resident" + width="51" /> <button - follows="left|top" - top="4" - left_pad="2" + follows="bottom|left" + left_pad="3" height="23" label="Share" layout="topleft" name="share_btn" - width="60" /> + width="62" /> <button follows="bottom|left" - top="4" - left_pad="2" + left_pad="3" height="23" label="Teleport" layout="topleft" name="teleport_btn" tool_tip="Offer teleport" - width="75" /> + width="76" /> <button follows="bottom|left" - top="4" left="0" + top_delta="0" height="23" label="Group Profile" layout="topleft" name="group_info_btn" tool_tip="Show group information" - width="110" /> + width="107" /> <button follows="bottom|left" - top="4" - left_pad="2" + left_pad="3" height="23" label="Group Chat" layout="topleft" name="chat_btn" tool_tip="Open chat session" - width="110" /> + width="100" /> <button follows="bottom|left" - top="4" - left_pad="2" + left_pad="3" height="23" label="Group Call" layout="topleft" name="group_call_btn" tool_tip="Call this group" - width="110" /> + width="95" /> </panel> </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 f68202d287..ecf5516390 100644 --- a/indra/newview/skins/default/xui/en/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml @@ -7,6 +7,7 @@ left="0" min_height="350" name="panel_pick_info" + help_topic="profile_pick_info" top="0" width="333"> <button @@ -15,7 +16,7 @@ image_overlay="BackArrow_Off" layout="topleft" name="back_btn" - left="10" + left="12" tab_stop="false" top="2" width="23" /> @@ -26,7 +27,7 @@ layout="topleft" left_pad="10" name="title" - text_color="white" + text_color="LtGray" top="0" value="Pick Info" use_ellipses="true" @@ -35,71 +36,87 @@ color="DkGray2" opaque="true" follows="all" - height="500" + height="503" layout="topleft" - left="10" + left="8" top_pad="10" name="profile_scroll" - reserve_scroll_corner="false" - width="313"> + width="312"> <panel name="scroll_content_panel" - follows="left|top" + follows="left|top|right" min_height="300" layout="topleft" top="0" background_visible="false" - height="470" + height="400" left="0" - width="295"> + width="285"> <texture_picker enabled="false" - follows="left|top" + follows="left|top|right" height="197" layout="topleft" - left="10" + left="11" name="pick_snapshot" - top="20" - width="290" /> - <text + top="10" + width="272" /> + <text_editor + allow_scroll="false" + bg_visible="false" follows="left|top|right" + h_pad="0" height="35" - width="290" + width="280" layout="topleft" font="SansSerifBig" font.style="BOLD" left="10" top_pad="10" name="pick_name" + read_only="true" text_color="white" + v_pad="0" value="[name]" use_ellipses="true" /> - <text - follows="left|top" + <text_editor + allow_scroll="false" + bg_visible="false" + follows="left|top|right" + h_pad="0" height="25" layout="topleft" left="10" name="pick_location" - width="290" + read_only="true" + width="280" word_wrap="true" + v_pad="0" value="[loading...]" /> - <text - follows="left|top|right" - height="280" + <text_editor + bg_readonly_color="DkGray2" + follows="all" + height="100" + width="280" + allow_html="true" + hide_scrollbar="false" layout="topleft" left="10" + top_pad="2" + max_length="1023" name="pick_desc" - width="290" + read_only="true" + text_readonly_color="white" value="[description]" - word_wrap="true" /> + wrap="true" /> </panel> </scroll_container> <panel follows="left|right|bottom" - height="20" + height="35" layout="topleft" - top_pad="8" - left="10" + top_pad="5" + left="8" name="buttons"> <button follows="bottom|left" @@ -109,24 +126,22 @@ left="0" name="teleport_btn" top="0" - width="90" /> + width="101" /> <button follows="bottom|left" height="23" label="Map" layout="topleft" - left_pad="10" + left_pad="3" name="show_on_map_btn" - top="0" - width="90" /> + width="100" /> <button follows="bottom|left" height="23" label="Edit" layout="topleft" - right="-1" name="edit_btn" - top="0" - width="90" /> + left_pad="3" + width="101" /> </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml index 023b1fc81d..715dc5f23c 100644 --- a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml @@ -64,6 +64,8 @@ layout="topleft" left="103" name="picture_descr" + textbox.max_length="1024" + textbox.show_context_menu="false" top_pad="0" width="178" word_wrap="true" /> @@ -75,6 +77,6 @@ left_pad="5" right="-8" name="info_chevron" - top_delta="15" + top_delta="24" width="20" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml index 1fc553ff36..0093a08e15 100644 --- a/indra/newview/skins/default/xui/en/panel_picks.xml +++ b/indra/newview/skins/default/xui/en/panel_picks.xml @@ -1,7 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel +bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" follows="all" - height="535" + height="548" label="Picks" layout="topleft" left="0" @@ -21,12 +24,13 @@ layout="topleft" left="6" name="picks_panel_text" + wrap="true" top="10" width="313"/> <accordion fit_parent="true" follows="all" - height="465" + height="470" layout="topleft" left="0" name="accordion" @@ -70,17 +74,19 @@ </accordion_tab> </accordion> <panel - background_visible="true" +bg_opaque_color="DkGray2" + background_visible="true" + background_opaque="true" bevel_style="none" enabled="false" auto_resize="false" follows="bottom" - left="0" - height="18" + left="1" + height="27" label="bottom_panel" layout="topleft" name="edit_panel" - top_pad="0" + top_pad="-2" width="313"> <button enabled="false" @@ -90,9 +96,9 @@ image_unselected="OptionsMenu_Off" image_disabled="OptionsMenu_Disabled" layout="topleft" - left="0" + left="10" name="gear_menu_btn" - top="5" + top="9" width="18" /> <button follows="bottom|left" @@ -104,7 +110,7 @@ left_pad="15" name="new_btn" tool_tip="Create a new pick or classified at the current location" - top="5" + top="9" width="18" /> <button follows="bottom|right" @@ -115,16 +121,18 @@ layout="topleft" name="trash_btn" right="-10" - top="5" + top="9" width="18" /> </panel> <panel + bg_opaque_color="DkGray" + background_visible="true" + background_opaque="true" layout="topleft" left="0" - height="25" - top_pad="10" + height="40" + top="502" name="buttons_cucks" - help_topic="picks_button_tab" width="313"> <button enabled="false" @@ -132,35 +140,33 @@ height="23" label="Info" layout="topleft" - left="5" + left="2" name="info_btn" tab_stop="false" tool_tip="Show pick information" - top="0" - width="55" /> + top="5" + width="95" /> <button enabled="false" follows="bottom|left" height="23" label="Teleport" layout="topleft" - left_pad="5" + left_pad="3" name="teleport_btn" tab_stop="false" tool_tip="Teleport to the corresponding area" - top="0" - width="77" /> + width="117" /> <button enabled="false" follows="bottom|left" height="23" label="Map" layout="topleft" - left_pad="5" + left_pad="3" name="show_on_map_btn" tab_stop="false" tool_tip="Show the corresponding area on the World Map" - top="0" - width="50" /> + width="90" /> </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml index 8fc2ae39f0..44b2508e56 100644 --- a/indra/newview/skins/default/xui/en/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml @@ -8,7 +8,7 @@ min_height="350" name="place_profile" top="20" - width="330"> + width="333"> <string name="on" value="On" /> @@ -29,7 +29,7 @@ value="Place Profile" /> <string name="title_teleport_history" - value="Teleport History Location" /> + value="Teleport History" /> <string name="not_available" value="(N\A)" /> @@ -143,11 +143,11 @@ height="23" image_overlay="BackArrow_Off" layout="topleft" - left="10" + left="11" name="back_btn" tool_tip="Back" tab_stop="false" - top="0" + top="4" width="23" /> <text follows="top|left|right" @@ -156,37 +156,37 @@ layout="topleft" left_pad="10" name="title" - text_color="white" - top="0" + text_color="LtGray" + top="2" use_ellipses="true" value="Place Profile" - width="275" /> + width="280" /> <scroll_container color="DkGray2" follows="all" - height="533" + height="532" layout="topleft" - left="10" + left="9" name="place_scroll" opaque="true" - top_pad="5" - width="313"> + top_pad="10" + width="310"> <panel bg_alpha_color="DkGray2" follows="left|top|right" - height="533" + height="540" layout="topleft" left="0" min_height="300" name="scrolling_panel" top="0" - width="313"> + width="310"> <texture_picker enabled="false" - follows="top|left" - height="190" + follows="left|top|right" + height="197" layout="topleft" - left="10" + left="11" name="logo" top="10" width="290" /> @@ -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" @@ -316,7 +318,7 @@ width="268" /> <accordion follows="all" - height="230" + height="223" layout="topleft" left="0" name="advanced_info_accordion" diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml index 8a5c023133..ff5d89470c 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="10" follows="left|top|right" - font="SansSerif" + font="SansSerifSmall" height="23" layout="topleft" - left="15" - label="Filter Places" + left="10" + label="Filter My Places" max_length="300" name="Filter" top="3" @@ -30,15 +31,15 @@ background_visible="true" <tab_container follows="all" halign="center" - height="500" + height="503" layout="topleft" - left="10" + left="6" name="Places Tabs" tab_min_width="80" tab_height="30" tab_position="top" top_pad="10" - width="313" /> + width="315" /> <panel class="panel_place_profile" filename="panel_place_profile.xml" @@ -46,11 +47,11 @@ background_visible="true" height="533" layout="topleft" left="0" - help_topic="places_info_tab" + help_topic="place_profile" name="panel_place_profile" top="5" visible="false" - width="313" /> + width="315" /> <panel class="panel_landmark_info" filename="panel_landmark_info.xml" @@ -58,18 +59,17 @@ background_visible="true" height="533" layout="topleft" left="0" - help_topic="places_info_tab" + help_topic="landmark" name="panel_landmark_info" top="5" visible="false" - width="313" /> + width="315" /> <panel height="19" layout="topleft" - left="0" - help_topic="places_button_tab" + left="4" name="button_panel" - width="313"> + width="315"> <button follows="bottom|left" height="23" @@ -78,65 +78,59 @@ background_visible="true" left="5" name="teleport_btn" tool_tip="Teleport to the selected area" - top="0" - width="100" /> + top="1" + width="108" /> <button follows="bottom|left" height="23" label="Map" layout="topleft" - left_pad="5" + left_pad="3" name="map_btn" - top="0" - width="70" /> + width="85" /> <button follows="bottom|left" height="23" label="Edit" layout="topleft" - left_pad="5" + left_pad="3" name="edit_btn" tool_tip="Edit landmark information" - top="0" - width="70" /> + width="83" /> <button follows="bottom|right" height="23" - image_disabled="ForwardArrow_Off" - image_selected="ForwardArrow_Press" - image_unselected="ForwardArrow_Off" + label="▼" layout="topleft" name="overflow_btn" tool_tip="Show additional options" - right="-10" - top="0" - width="18" /> + left_pad="3" + width="23" /> <button - follows="bottom|right" + follows="bottom|left" height="23" - label="Close" + label="Save" layout="topleft" - name="close_btn" - right="-10" - top="0" - width="60" /> + name="save_btn" + left="5" + top_pad="-23" + width="152" /> <button follows="bottom|right" height="23" label="Cancel" layout="topleft" name="cancel_btn" - right="-10" - top="0" - width="60" /> + left_pad="3" + width="153" /> <button follows="bottom|right" height="23" - label="Save" + label="Close" layout="topleft" - name="save_btn" - right="-75" - top="0" + name="close_btn" + right="-10" + top="1" width="60" /> </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index 426a2b1f9e..4be4d6b432 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -1,140 +1,41 @@ <?xml version="1.0" encoding="UTF-8"?> - <panel border="true" - background_visible="true" - follows="left|top|right|bottom" + follows="all" height="408" + label="Advanced" layout="topleft" left="102" name="advanced" top="1" width="517"> - <panel.string - name="resolution_format"> - [RES_X] x [RES_Y] - </panel.string> <panel.string 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" /> - <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" @@ -163,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" @@ -175,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" @@ -189,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" @@ -240,22 +141,62 @@ 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" + top="190" + 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" @@ -263,7 +204,7 @@ Avatars: width="364"> <radio_item height="16" - label="In chat" + label="Nearby chat" layout="topleft" left="3" name="0" @@ -271,7 +212,7 @@ Avatars: width="315" /> <radio_item height="16" - label="In a window" + label="Separate window" layout="topleft" left_delta="175" name="1" @@ -282,49 +223,47 @@ 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> 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 18d0f8acab..188fd3b7bc 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"> @@ -31,9 +31,8 @@ width="300" /> <check_box control_name="ChatOnlineNotification" - enabled="false" 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" @@ -43,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> @@ -82,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> @@ -100,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_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml index 017c321767..2e81139ef2 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml @@ -9,13 +9,22 @@ name="chat" top="1" width="517"> - <radio_group + <text + follows="left|top" + layout="topleft" + left="30" + height="12" + width="120" + top="10"> + Font size: + </text> + <radio_group height="30" layout="topleft" - left="30" - control_name="ChatFontSize" + left="40" + control_name="ChatFontSize" name="chat_font_size" - top="10" + top_pad="0" width="440"> <radio_item height="16" @@ -23,7 +32,7 @@ layout="topleft" left="0" name="radio" - value="0" + value="0" top="10" width="125" /> <radio_item @@ -32,7 +41,7 @@ layout="topleft" left_delta="145" name="radio2" - value="1" + value="1" top_delta="0" width="125" /> <radio_item @@ -41,16 +50,28 @@ layout="topleft" left_delta="170" name="radio3" - value="2" + value="2" top_delta="0" width="125" /> </radio_group> + + <text + follows="left|top" + layout="topleft" + left="30" + height="12" + top_pad="10" + width="120" + > + Font colors: + </text> + <color_swatch can_apply_immediately="true" follows="left|top" height="47" layout="topleft" - left="30" + left="40" name="user" top_pad="10" width="44" > @@ -79,7 +100,7 @@ follows="left|top" height="47" layout="topleft" - left="180" + left="190" name="agent" top_pad="-17" width="44" > @@ -105,12 +126,12 @@ </text> <color_swatch can_apply_immediately="true" - color="0.6 0.6 1 1" + color="LtGray" follows="left|top" height="47" label_width="60" layout="topleft" - left="350" + left="360" name="im" top_pad="-17" width="44"> @@ -136,12 +157,12 @@ </text> <color_swatch can_apply_immediately="true" - color="0.8 1 1 1" + color="LtGray" follows="left|top" height="47" label_width="44" layout="topleft" - left="30" + left="40" name="system" top_pad="40" width="44" > @@ -167,11 +188,11 @@ </text> <color_swatch can_apply_immediately="true" - color="0.82 0.82 0.99 1" + color="Red" follows="left|top" height="47" layout="topleft" - left="180" + left="190" name="script_error" top_pad="-17" width="44"> @@ -197,11 +218,11 @@ </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" - left="350" + left="360" name="objects" top_pad="-17" width="44" > @@ -227,11 +248,11 @@ </text> <color_swatch can_apply_immediately="true" - color="0.7 0.9 0.7 1" + color="LtYellow" follows="left|top" height="47" layout="topleft" - left="30" + left="40" name="owner" top_pad="40" width="44" > @@ -257,11 +278,11 @@ </text> <color_swatch can_apply_immediately="true" - color="0.6 0.6 1 1" + color="EmphasisColor" follows="left|top" height="47" layout="topleft" - left="180" + left="190" name="links" top_pad="-17" width="44" > @@ -314,24 +335,37 @@ top_pad="5" width="400" /> <text + follows="left|top" + layout="topleft" left="30" height="20" - width="300" + width="120" top_pad="20"> Show IMs in: </text> + <text + follows="left|top" + layout="topleft" + top_delta="0" + left="120" + height="20" + width="100" + text_color="White_25" + > + (requires restart) + </text> <radio_group height="30" layout="topleft" - left="30" + left="40" control_name="ChatWindow" name="chat_window" - top_pad="10" - tool_tip="Show your Instant Messages in separate windows, or in one window with many tabs (Requires restart)" + top_pad="0" + 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,12 +374,12 @@ width="150" /> <radio_item height="16" - label="One window" + label="Tabs" layout="topleft" - left_delta="145" + left_delta="0" name="radio2" value="1" - top_delta="0" + top_pad="5" width="150" /> </radio_group> </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 c98555735a..d11aebe943 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) @@ -140,7 +141,34 @@ label="General" name="Desired_PG" value="13" /> + <combo_box.commit_callback + function="Pref.MaturitySettings"/> </combo_box> + <icon + follows="left|top" + height="16" + image_name="Parcel_PG_Dark" + layout="topleft" + left_pad="5" + name="rating_icon_general" + top_delta="3" + width="18"/> + <icon + follows="left|top" + height="16" + image_name="Parcel_M_Dark" + layout="topleft" + left_pad="2" + name="rating_icon_moderate" + width="18"/> + <icon + follows="left|top" + height="16" + image_name="Parcel_R_Dark" + layout="topleft" + left_pad="2" + name="rating_icon_adult" + width="18"/> <text type="string" length="1" @@ -179,7 +207,7 @@ left_pad="5" name="show_location_checkbox" top_delta="5" - width="256" /> + width="256" /> <text type="string" length="1" @@ -203,21 +231,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" @@ -260,7 +288,7 @@ width="200"> My effects: </text> - <text + <text type="string" length="1" follows="left|top" @@ -270,16 +298,23 @@ name="title_afk_text" width="190"> Away timeout: - </text> + </text> <color_swatch - control_name="EffectColor" + can_apply_immediately="true" follows="left|top" height="50" layout="topleft" left="50" name="effect_color_swatch" tool_tip="Click to open Color Picker" - width="38" /> + width="38"> + <color_swatch.init_callback + function="Pref.getUIColor" + parameter="EffectColor" /> + <color_swatch.commit_callback + function="Pref.applyUIColor" + parameter="EffectColor" /> + </color_swatch> <combo_box height="23" layout="topleft" @@ -316,11 +351,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> @@ -329,18 +363,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_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index f97ccafecc..f20526b491 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -76,7 +76,7 @@ <icon color="0.12 0.12 0.12 1" height="14" - image_name="rounded_square.tga" + image_name="Rounded_Square" layout="topleft" left="128" name="LowGraphicsDivet" @@ -85,7 +85,7 @@ <icon color="0.12 0.12 0.12 1" height="14" - image_name="rounded_square.tga" + image_name="Rounded_Square" layout="topleft" left_pad="83" name="MidGraphicsDivet" @@ -94,7 +94,7 @@ <icon color="0.12 0.12 0.12 1" height="14" - image_name="rounded_square.tga" + image_name="Rounded_Square" layout="topleft" left_pad="85" name="HighGraphicsDivet" @@ -103,7 +103,7 @@ <icon color="0.12 0.12 0.12 1" height="14" - image_name="rounded_square.tga" + image_name="Rounded_Square" layout="topleft" left_pad="83" name="UltraGraphicsDivet" @@ -366,10 +366,7 @@ min_val="64" name="DrawDistance" top="3" - width="255"> - <slider.commit_callback - function="Pref.UpdateMeterText" /> - </slider> + width="255" /> <text type="string" length="1" @@ -378,7 +375,7 @@ layout="topleft" left_delta="250" name="DrawDistanceMeterText2" - top_delta="1" + top_delta="0" width="128"> m </text> @@ -395,7 +392,7 @@ left="216" max_val="8192" name="MaxParticleCount" - top_pad="6" + top_pad="7" width="262" /> <slider control_name="RenderGlowResolutionPow" @@ -707,7 +704,8 @@ top_delta="16" width="315" /> </radio_group> - </panel> + </panel> + <button follows="left|bottom" height="23" @@ -717,7 +715,8 @@ left="10" name="Apply" top="383" - width="115"> + width="115" + > <button.commit_callback function="Pref.Apply" /> </button> 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 25d7ba0903..f232a69482 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml @@ -17,6 +17,7 @@ follows="left|bottom" height="23" label="Clear History" + tool_tip="Clear login image, last location, teleport history, web, and texture cache" layout="topleft" left="30" name="clear_cache" @@ -77,16 +78,7 @@ name="cookies_enabled" top_pad="10" width="350" /> - <check_box - control_name="ParcelMediaAutoPlayEnable" - height="16" - label="Allow Media Autoplay" - layout="topleft" - left="30" - name="autoplay_enabled" - top_pad="10" - width="350" /> - <text + <text type="string" length="1" follows="left|top" @@ -131,18 +123,6 @@ name="show_timestamps_check_im" top_pad="10" width="237" /> - <line_editor - bottom="366" - control_name="InstantMessageLogFolder" - enabled="false" - follows="top|left|right" - halign="right" - height="19" - layout="topleft" - left_delta="0" - mouse_opaque="false" - name="log_path_string" - top_pad="5" /> <text type="string" length="1" @@ -152,11 +132,22 @@ left_delta="0" mouse_opaque="false" name="log_path_desc" - top_pad="1" - width="128" - text_color="LtGray_50"> - Location of logs + top_pad="5" + width="128"> + Location of logs: </text> + <line_editor + bottom="366" + control_name="InstantMessageLogPath" + follows="top|left|right" + halign="right" + height="23" + layout="topleft" + left_delta="0" + mouse_opaque="false" + name="log_path_string" + top_pad="5" + width="250"/> <button enabled="false" follows="right|bottom" @@ -164,9 +155,9 @@ label="Browse" label_selected="Browse" layout="topleft" - left_pad="115" + left_pad="5" name="log_path_button" - top_delta="-21" + top_delta="0" width="145"> <button.commit_callback function="Pref.LogPath" /> 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 34bd6fb091..8723e0a832 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -9,64 +9,64 @@ name="Input panel" top="1" width="517"> - <button - height="23" - label="Other Devices" - layout="topleft" - left="30" - name="joystick_setup_button" - top="10" - width="155"> - <button.commit_callback - function="Floater.Show" - parameter="pref_joystick" /> - </button> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left="30" - name="Mouselook:" - top_pad="10" - width="300"> - Mouselook: - </text> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left_delta="50" - name=" Mouse Sensitivity" - top_pad="10" - width="150"> - Mouse sensitivity - </text> - <slider - control_name="MouseSensitivity" - follows="left|top" - height="15" - initial_value="2" - layout="topleft" - show_text="false" - left_delta="150" - max_val="15" - name="mouse_sensitivity" - top_delta="0" - width="145" /> - <check_box - control_name="InvertMouse" - height="16" - label="Invert" - layout="topleft" - left_pad="2" - name="invert_mouse" - top_delta="0" - width="128" /> - <text + <button + height="23" + label="Other Devices" + layout="topleft" + left="30" + name="joystick_setup_button" + top="10" + width="155"> + <button.commit_callback + function="Floater.Show" + parameter="pref_joystick" /> + </button> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="30" + name="Mouselook:" + top_pad="10" + width="300"> + Mouselook: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="50" + name=" Mouse Sensitivity" + top_pad="10" + width="150"> + Mouse sensitivity + </text> + <slider + control_name="MouseSensitivity" + follows="left|top" + height="15" + initial_value="2" + layout="topleft" + show_text="false" + left_delta="150" + max_val="15" + name="mouse_sensitivity" + top_delta="0" + width="145" /> + <check_box + control_name="InvertMouse" + height="16" + label="Invert" + layout="topleft" + left_pad="2" + name="invert_mouse" + top_delta="0" + width="128" /> + <text type="string" length="1" follows="left|top" @@ -77,267 +77,270 @@ mouse_opaque="false" top_pad="4" width="300"> - Network: - </text> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left_delta="50" - name="Maximum bandwidth" - mouse_opaque="false" - top_pad="10" - width="200"> - Maximum bandwidth - </text> - <slider - can_edit_text="true" - control_name="ThrottleBandwidthKBPS" - decimal_digits="0" - follows="left|top" - height="15" - increment="100" - initial_value="500" - layout="topleft" - left_delta="150" - max_val="10000" - min_val="100" - name="max_bandwidth" - top_delta="0" - width="180" /> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left_pad="6" - mouse_opaque="false" - name="text_box2" - top_delta="1" - width="200"> - kbps - </text> - <check_box - control_name="ConnectionPortEnabled" - height="16" - label="Custom port" - layout="topleft" - left="77" - name="connection_port_enabled" - top_pad="20" - width="256"> - <check_box.commit_callback - function="Notification.Show" - parameter="ChangeConnectionPort" /> - </check_box> - <spinner - control_name="BrowserProxyPort" - enabled_control="BrowserProxyEnabled" - decimal_digits="0" - follows="left|top" - height="23" - increment="1" - initial_value="80" - label="Port number:" - label_width="75" - layout="topleft" - left_delta="160" - max_val="12000" - min_val="10" - name="web_proxy_port" - top_delta="-2" - width="140" /> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left="80" - mouse_opaque="false" - name="cache_size_label_l" - top_pad="20" - width="200"> - Cache size - </text> - <slider - can_edit_text="true" - control_name="CacheSize" - decimal_digits="0" - follows="left|top" - height="15" - increment="16" - initial_value="512" - layout="topleft" - left_delta="150" - max_val="1024" - min_val="32" - name="cache_size" - top_delta="-1" - width="180" /> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left_pad="6" - mouse_opaque="false" - name="text_box5" - top_delta="1" - width="40"> - MB - </text> - <line_editor - control_name="CacheLocationTopFolder" - border_style="line" - border_thickness="1" - enabled="false" - follows="left|top" - font="SansSerif" - handle_edit_keys_directly="true" - height="20" - layout="topleft" - left="80" - max_length="4096" - name="cache_location" - top_pad="20" - width="205" /> - <button - follows="left|top" - height="23" - label="Browse" - label_selected="Browse" - layout="topleft" - left_pad="5" - name="set_cache" - top_delta="-1" - width="100"> - <button.commit_callback - function="Pref.SetCache" /> - </button> - <button - follows="left|top" - height="23" - label="Reset" - label_selected="Reset" - layout="topleft" - left_pad="3" - name="reset_cache" - top_delta="0" - width="100"> - <button.commit_callback - function="Pref.ResetCache" /> - </button> + Network: + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="50" + name="Maximum bandwidth" + mouse_opaque="false" + top_pad="10" + width="200"> + Maximum bandwidth + </text> + <slider + can_edit_text="true" + control_name="ThrottleBandwidthKBPS" + decimal_digits="0" + follows="left|top" + height="15" + increment="100" + initial_value="500" + layout="topleft" + left_delta="150" + max_val="10000" + min_val="100" + name="max_bandwidth" + top_delta="0" + width="180" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_pad="6" + mouse_opaque="false" + name="text_box2" + top_delta="1" + width="200"> + kbps + </text> + <check_box + control_name="ConnectionPortEnabled" + height="16" + label="Custom port" + layout="topleft" + left="77" + name="connection_port_enabled" + top_pad="20" + width="256"> + <check_box.commit_callback + function="Notification.Show" + parameter="ChangeConnectionPort" /> + </check_box> + <spinner + control_name="ConnectionPort" + enabled_control="ConnectionPortEnabled" + decimal_digits="0" + follows="left|top" + height="23" + increment="1" + initial_value="13000" + label="Port number:" + label_width="75" + layout="topleft" + left_delta="160" + max_val="13050" + min_val="13000" + name="connection_port" + top_delta="-2" + width="140" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="80" + mouse_opaque="false" + name="cache_size_label_l" + top_pad="20" + width="200"> + Cache size + </text> + <slider + can_edit_text="true" + control_name="CacheSize" + decimal_digits="0" + follows="left|top" + height="15" + increment="16" + initial_value="512" + layout="topleft" + left_delta="150" + max_val="1024" + min_val="32" + name="cache_size" + top_delta="-2" + width="180" /> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_pad="6" + mouse_opaque="false" + name="text_box5" + top_delta="1" + width="40"> + MB + </text> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="80" + name="Cache location" + top_delta="20" + width="300"> + Cache location: + </text> + <line_editor + control_name="CacheLocationTopFolder" + border_style="line" + border_thickness="1" + enabled="false" + follows="left|top" + font="SansSerif" + handle_edit_keys_directly="true" + height="23" + layout="topleft" + left="80" + max_length="4096" + name="cache_location" + top_pad="5" + width="205" /> + <button + follows="left|top" + height="23" + label="Browse" + label_selected="Browse" + layout="topleft" + left_pad="5" + name="set_cache" + top_delta="-1" + width="100"> + <button.commit_callback + function="Pref.SetCache" /> + </button> + <button + follows="left|top" + height="23" + label="Reset" + label_selected="Reset" + layout="topleft" + left_pad="3" + name="reset_cache" + top_delta="0" + width="100"> + <button.commit_callback + function="Pref.ResetCache" /> + </button> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left="80" - name="Cache location" - top_delta="20" - width="300" - text_color="LtGray_50"> - Cache location - </text> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left="30" - name="Web:" - top_pad="5" - width="300"> - Web: - </text> - <radio_group - control_name="UseExternalBrowser" - draw_border="false" - follows="top|left" - height="40" - layout="topleft" - left_delta="50" - name="use_external_browser" - top_pad="4" - width="480"> - <radio_item - height="20" - label="Use built-in browser" - layout="topleft" - left="0" - name="internal" - value="0" - tool_tip="Use the built-in web browser for help, web links, etc. This browser opens as a new window inside [APP_NAME]." - top="0" - width="480" /> - <radio_item - height="20" - label="Use my browser (IE, Firefox)" - layout="topleft" - left_delta="0" - name="external" - value="1" - tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen." - top_delta="20" - width="480" /> - </radio_group> - - <check_box - top_delta="4" - enabled="true" - follows="left|top" - height="16" - initial_value="false" - label="Web proxy" - left_delta="0" - mouse_opaque="true" - name="web_proxy_enabled" - radio_style="false" - width="400" /> - <line_editor - control_name="BrowserProxyAddress" - enabled_control="BrowserProxyEnabled" - follows="left|top" - font="SansSerif" - height="20" - layout="topleft" - left_delta="1" - name="web_proxy_editor" - tool_tip="The name or IP address of the proxy you would like to use" - top_pad="4" - width="200" /> - <button - follows="left|top" - height="23" - enabled="false" - label="Browse" - label_selected="Browse" - layout="topleft" - left_pad="5" - name="set_proxy" - top_pad="-21" - width="100"> - <button.commit_callback - function="Pref.SetCache" /> - </button> - <text - type="string" - length="1" - follows="left|top" - height="10" - layout="topleft" - left_delta="-203" - name="Proxy location" - top_delta="20" - width="300" - text_color="LtGray_50"> - Proxy location - </text></panel> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left="30" + name="Web:" + top_pad="5" + width="300"> + Web: + </text> + <radio_group + control_name="UseExternalBrowser" + draw_border="false" + follows="top|left" + height="40" + layout="topleft" + left_delta="50" + name="use_external_browser" + top_pad="4" + width="480"> + <radio_item + height="20" + label="Use built-in browser" + layout="topleft" + left="0" + name="internal" + value="0" + tool_tip="Use the built-in web browser for help, web links, etc. This browser opens as a new window inside [APP_NAME]." + top="0" + width="480" /> + <radio_item + height="20" + label="Use my browser (IE, Firefox, Safari)" + layout="topleft" + left_delta="0" + name="external" + value="1" + tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen." + top_delta="20" + width="480" /> + </radio_group> + + <check_box + top_delta="4" + enabled="true" + follows="left|top" + height="16" + initial_value="false" + control_name="BrowserProxyEnabled" + label="Enable Web Proxy" + left_delta="0" + mouse_opaque="true" + name="web_proxy_enabled" + radio_style="false" + width="400" top_pad="5"/> + <text + type="string" + length="1" + follows="left|top" + height="10" + layout="topleft" + left_delta="1" + name="Proxy location" + top_delta="20" + width="300"> + Proxy location: + </text> + <line_editor + control_name="BrowserProxyAddress" + enabled_control="BrowserProxyEnabled" + follows="left|top" + font="SansSerif" + height="23" + layout="topleft" + left_delta="0" + name="web_proxy_editor" + tool_tip="The name or IP address of the proxy you would like to use" + top_pad="4" + width="200" /> + <spinner + control_name="BrowserProxyPort" + enabled_control="BrowserProxyEnabled" + decimal_digits="0" + follows="left|top" + height="23" + increment="1" + initial_value="80" + label="Port number:" + label_width="75" + layout="topleft" + left_delta="230" + max_val="12000" + min_val="10" + name="web_proxy_port" + top_delta="0" + width="140" /> +</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 d8e3f4ccfb..e03ecd8f04 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml @@ -17,7 +17,7 @@ increment="0.05" initial_value="0.5" label="Master volume" - label_width="160" + label_width="120" layout="topleft" left="0" name="System Volume" @@ -25,34 +25,67 @@ slider_label.halign="right" top="10" volume="true" - width="350"> + width="300"> <slider.commit_callback function="Pref.setControlFalse" parameter="MuteAudio" /> </slider> <button control_name="MuteAudio" - follows="top|right" - height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + follows="top|left" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" + left_pad="5" name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <check_box control_name="MuteWhenMinimized" height="15" initial_value="true" - label="Mute if minimized" + label="Mute when minimized" layout="topleft" - left="167" name="mute_when_minimized" - top_pad="5" - width="215" /> + top_delta="3" + left_pad="5" + width="235" /> + <slider + control_name="AudioLevelUI" + disabled_control="MuteAudio" + follows="left|top" + height="15" + increment="0.05" + initial_value="0.5" + label="Buttons" + label_width="120" + layout="topleft" + left="0" + name="UI Volume" + show_text="false" + slider_label.halign="right" + top_pad="7" + volume="true" + width="300"> + <slider.commit_callback + function="Pref.setControlFalse" + parameter="MuteUI" /> + </slider> + <button + control_name="MuteUI" + disabled_control="MuteAudio" + follows="top|left" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" + is_toggle="true" + layout="topleft" + left_pad="5" + name="mute_audio" + tab_stop="false" + width="16" /> <slider control_name="AudioLevelAmbient" disabled_control="MuteAudio" @@ -61,7 +94,7 @@ increment="0.05" initial_value="0.5" label="Ambient" - label_width="160" + label_width="120" layout="topleft" left="0" name="Wind Volume" @@ -69,95 +102,24 @@ slider_label.halign="right" top_pad="7" volume="true" - width="350"> + width="300"> <slider.commit_callback function="Pref.setControlFalse" parameter="MuteAmbient" /> </slider> - <button - control_name="MuteAmbient" - disabled_control="MuteAudio" - follows="top|right" - height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" - is_toggle="true" - layout="topleft" - left_pad="16" - name="mute_wind" - tab_stop="false" - top_delta="-2" - width="22" /> - <slider - control_name="AudioLevelUI" - disabled_control="MuteAudio" - follows="left|top" - height="15" - increment="0.05" - initial_value="0.5" - label="Buttons" - label_width="160" - layout="topleft" - left="0" - name="UI Volume" - show_text="false" - slider_label.halign="right" - top_pad="7" - volume="true" - width="350"> - <slider.commit_callback - function="Pref.setControlFalse" - parameter="MuteUI" /> - </slider> - <button - control_name="MuteUI" - disabled_control="MuteAudio" - follows="top|right" - height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" - is_toggle="true" - layout="topleft" - left_pad="16" - name="mute_ui" - tab_stop="false" - top_delta="-2" - width="22" /> - <slider - control_name="AudioLevelMedia" - disabled_control="MuteAudio" - follows="left|top" - height="15" - increment="0.05" - initial_value="0.5" - label="Media" - label_width="160" - layout="topleft" - left="0" - name="Media Volume" - show_text="false" - slider_label.halign="right" - top_pad="7" - volume="true" - width="350"> - <slider.commit_callback - function="Pref.setControlFalse" - parameter="MuteMedia" /> - </slider> - <button - control_name="MuteMedia" + <button + control_name="MuteAmbient" disabled_control="MuteAudio" - follows="top|right" - height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + follows="top|left" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_media" + left_pad="5" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <slider control_name="AudioLevelSFX" disabled_control="MuteAudio" @@ -165,8 +127,8 @@ height="15" increment="0.05" initial_value="0.5" - label="Sound effects" - label_width="160" + label="Sound Effects" + label_width="120" slider_label.halign="right" layout="topleft" left="0" @@ -174,25 +136,24 @@ show_text="false" top_pad="7" volume="true" - width="350"> + width="300"> <slider.commit_callback 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" + follows="top|left" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_sfx" + left_pad="5" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> + width="16" /> <slider control_name="AudioLevelMusic" disabled_control="MuteAudio" @@ -201,7 +162,7 @@ increment="0.05" initial_value="0.5" label="Streaming music" - label_width="160" + label_width="120" layout="topleft" left="0" name="Music Volume" @@ -209,122 +170,199 @@ show_text="false" top_pad="7" volume="true" - width="350"> + width="300"> <slider.commit_callback function="Pref.setControlFalse" parameter="MuteMusic" /> - </slider> + </slider> <button control_name="MuteMusic" - disabled_control="MuteAudio" - follows="top|right" - height="18" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + disabled_control="MuteAudio" + follows="top|left" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" is_toggle="true" layout="topleft" - left_pad="16" - name="mute_music" + left_pad="5" + name="mute_audio" tab_stop="false" - top_delta="-2" - width="22" /> - <check_box - label_text.halign="left" - follows="left|top" - height="16" - control_name ="EnableVoiceChat" - disabled_control="CmdLineDisableVoice" - label="Enable voice" - layout="topleft" - left="28" - name="enable_voice_check" - top_pad="5" - width="110" - > - </check_box> - <slider - control_name="AudioLevelVoice" - enabled_control="EnableVoiceChat" - disabled_control="MuteAudio" + width="16" /> + <check_box + control_name="AudioStreamingMusic" + height="16" + label="Enabled" + layout="topleft" + left_pad="5" + name="music_enabled" + top_delta="2" + width="350"/> + <slider + control_name="AudioLevelMedia" + disabled_control="MuteAudio" + follows="left|top" + height="16" + increment="0.05" + initial_value="0.5" + label="Media" + label_width="120" + layout="topleft" + left="0" + name="Media Volume" + show_text="false" + slider_label.halign="right" + top_pad="7" + volume="true" + width="300"> + <slider.commit_callback + function="Pref.setControlFalse" + parameter="MuteMedia" /> + </slider> + <button + control_name="MuteMedia" + disabled_control="MuteAudio" + follows="top|left" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" + is_toggle="true" + layout="topleft" + left_pad="5" + name="mute_audio" + tab_stop="false" + width="16" /> + <check_box + label_text.halign="left" + follows="left|top" + height="16" + control_name ="AudioStreamingMedia" + label="Enabled" + layout="topleft" + top_delta="2" + left_pad="5" + name="enable_media" + width="110"/> + <slider + control_name="AudioLevelVoice" + disabled_control="MuteAudio" + follows="left|top" + height="16" + increment="0.05" + initial_value="0.5" + label="Voice Chat" + label_width="120" + layout="topleft" + left="0" + top_delta="20" + name="Voice Volume" + show_text="false" + slider_label.halign="right" + volume="true" + width="300"> + <slider.commit_callback + function="Pref.setControlFalse" + parameter="MuteVoice" /> + </slider> + <button + control_name="MuteVoice" + disabled_control="MuteAudio" + follows="top|left" + height="16" + image_selected="AudioMute_Off" + image_unselected="Audio_Off" + is_toggle="true" + layout="topleft" + left_pad="5" + name="mute_audio" + tab_stop="false" + width="16" /> + <check_box + label_text.halign="left" + follows="left|top" + height="16" + control_name ="EnableVoiceChat" + disabled_control="CmdLineDisableVoice" + label="Enabled" + layout="topleft" + top_delta="2" + left_pad="5" + name="enable_voice_check" + width="110"/> + <!-- --> + <check_box + name="media_auto_play_btn" + control_name="ParcelMediaAutoPlayEnable" + value="true" + follows="left|bottom|right" + height="15" + tool_tip="Check this to let media auto-play if it wants" + label="Allow Media to auto-play" + top_pad="5" + left="25"/> + <check_box + name="media_show_on_others_btn" + control_name="MediaShowOnOthers" + value="true" + follows="left|bottom|right" + height="15" + tool_tip="Uncheck this to hide media attached to other avatars nearby" + label="Play media attached to other avatars" + left="25"/> + + <text + type="string" + length="1" follows="left|top" - height="15" - increment="0.05" - initial_value="0.5" - label="Voice" - label_width="160" - layout="topleft" - left="0" - top_delta="20" - name="Voice Volume" - show_text="false" - slider_label.halign="right" - volume="true" - width="350"> - <slider.commit_callback - function="Pref.setControlFalse" - parameter="MuteVoice" /> - </slider> - <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" - is_toggle="true" + height="20" layout="topleft" - left_pad="16" - name="mute_voice" - tab_stop="false" - top_delta="-2" - width="22" /> + left="25" + name="voice_chat_settings" + width="200" + top="210"> + Voice Chat Settings + </text> <text type="string" length="1" follows="left|top" - height="13" layout="topleft" - left="30" + left="80" + top_delta="16" name="Listen from" - width="200" - top="205"> + width="142"> Listen from: </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="80" - top="219"/> <icon - follows="left|top" - height="18" - image_name="Move_Walk_Off" - layout="topleft" - name="avatar_icon" - mouse_opaque="false" - visible="true" - width="18" - top="239" - left="80" - /> + follows="left|top" + height="18" + image_name="Cam_FreeCam_Off" + layout="topleft" + name="camera_icon" + mouse_opaque="false" + visible="true" + width="18" + left_pad="0" + top_delta="-5"/> + <icon + follows="left|top" + height="18" + image_name="Move_Walk_Off" + layout="topleft" + name="avatar_icon" + mouse_opaque="false" + visible="true" + width="18" + top_delta="20" /> <radio_group enabled_control="EnableVoiceChat" control_name="VoiceEarLocation" draw_border="false" follows="left|top" layout="topleft" - left="100" + left_pad="2" width="221" height="38" - name="ear_location" - top="218"> + name="ear_location"> <radio_item height="16" label="Camera position" @@ -347,8 +385,8 @@ is_toggle="true" label="Input/Output devices" layout="topleft" - left="30" - top="262" + left="80" + top_pad="5" name="device_settings_btn" width="190"> </button> @@ -448,28 +486,28 @@ <locate height="20" layout="topleft" - left_pad="2" + left_pad="5" name="bar1" top_delta="0" width="20" /> <locate height="20" layout="topleft" - left_pad="2" + left_pad="5" name="bar2" top_delta="0" width="20" /> <locate height="20" layout="topleft" - left_pad="2" + left_pad="5" name="bar3" top_delta="0" width="20" /> <locate height="20" layout="topleft" - left_pad="2" + left_pad="5" name="bar4" top_delta="0" width="20" /> @@ -483,7 +521,7 @@ visible="true" width="22" /> <text - font.style="BOLD" + font.style="BOLD" type="string" length="1" follows="left|top" diff --git a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml index b14089c3a2..6b5f0c3896 100644 --- a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml @@ -1,51 +1,99 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel follows="left|right|top|bottom" - name="MediaControls" + name="MediaControlsPanel" background_visible="false" height="200" layout="topleft" help_topic="prim_media_controls" mouse_opaque="false" + min_width="300" width="800"> <string name="control_background_image_name">Inspector_Background</string> <string name="skip_step">0.2</string> - <string name="min_width">400</string> - <string name="min_height">120</string> + <string name="min_width">300</string> + <string name="min_height">75</string> <string name="zoom_near_padding">1.0</string> - <string name="zoom_medium_padding">1.25</string> + <string name="zoom_medium_padding">1.1</string> <string name="zoom_far_padding">1.5</string> - <panel - name="media_region" - height="100" - follows="left|right|top|bottom" + <string name="top_world_view_avoid_zone">50</string> + <layout_stack + name="progress_indicator_area" + follows="left|right|top" + height="8" layout="topleft" - mouse_opaque="false" - top="0" /> + animate="false" + left="0" + orientation="horizontal" + top="22"> + <!-- outer layout_panels center the inner one --> + <layout_panel + width="0" + name="left_bookend_bottom" + mouse_opaque="false" + layout="topleft" + user_resize="false" /> + <panel + name="media_progress_indicator" + mouse_opaque="false" + follows="left|right|top" + height="8" + layout="topleft" + left="0" + top="0" + auto_resize="false" + user_resize="false" + min_width="100" + width="200"> + <progress_bar + name="media_progress_bar" + color_bg="1 1 1 1" + color_bar="1 1 1 0.96" + follows="left|right|top" + height="8" + layout="topleft" + top="0" + left="0" + tool_tip="Media is Loading"/> + </panel> + <layout_panel + name="right_bookend_bottom" + width="0" + mouse_opaque="false" + layout="topleft" + user_resize="false" /> + </layout_stack> <layout_stack name="media_controls" - follows="left|right" + follows="left|right|top" animate="false" height="75" layout="topleft" + top="0" left="0" - orientation="horizontal" - top="100"> + border_size="0" + mouse_opaque="false" + orientation="horizontal"> <!-- outer layout_panels center the inner one --> <layout_panel name="left_bookend" + top="0" width="0" + mouse_opaque="false" layout="topleft" user_resize="false" /> <layout_panel name="back" + top="0" auto_resize="false" user_resize="false" layout="topleft" + mouse_opaque="false" min_width="22" - width="22" - top="4"> + width="22"> <button + name="back_btn" + follows="top" image_overlay="Arrow_Left_Off" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" @@ -53,60 +101,67 @@ image_unselected="PushButton_Off" hover_glow_amount="0.15" auto_resize="false" - height="22" layout="topleft" tool_tip="Navigate back" - width="22" + top="0" left="0" - top_delta="4"> + width="22" + height="22"> <button.commit_callback function="MediaCtrl.Back" /> </button> </layout_panel> <layout_panel name="fwd" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" - top="10" min_width="22" + top="0" + height="22" width="22"> <button + name="fwd_btn" + follows="top" image_overlay="Arrow_Right_Off" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" image_selected="PushButton_Selected" image_unselected="PushButton_Off" hover_glow_amount="0.15" + top="0" height="22" + width="22" layout="topleft" - tool_tip="Navigate forward" - top_delta="0" - min_width="22" - width="22"> + tool_tip="Navigate forward"> <button.commit_callback function="MediaCtrl.Forward" /> </button> </layout_panel> <layout_panel name="home" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" - top="-2" + top="0" + height="22" min_width="22" width="22"> <button + name="home_btn" + follows="top" + image_overlay="Home_Off" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" - image_overlay="Home_Off" image_selected="PushButton_Selected" image_unselected="PushButton_Off" hover_glow_amount="0.15" layout="topleft" tool_tip="Home page" + top="0" height="22" - min_width="22" width="22"> <button.commit_callback function="MediaCtrl.Home" /> @@ -114,23 +169,27 @@ </layout_panel> <layout_panel name="media_stop" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" - top="2" + top="0" + height="22" min_width="22" width="22"> <button + name="media_stop_btn" + follows="top" image_overlay="Stop_Off" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" image_selected="PushButton_Selected" image_unselected="PushButton_Off" hover_glow_amount="0.15" - height="22" layout="topleft" tool_tip="Stop media" - min_width="22" + top="0" + height="22" width="22"> <button.commit_callback function="MediaCtrl.MediaStop" /> @@ -138,14 +197,17 @@ </layout_panel> <layout_panel name="reload" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" - top="6" + top="0" + height="22" min_width="22" width="22"> <button - height="22" + name="reload_btn" + follows="top" image_overlay="Refresh_Off" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" @@ -154,7 +216,8 @@ hover_glow_amount="0.15" layout="topleft" tool_tip="Reload" - min_width="22" + top="0" + height="22" width="22"> <button.commit_callback function="MediaCtrl.Reload" /> @@ -162,14 +225,17 @@ </layout_panel> <layout_panel name="stop" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" - top="10" + top="0" + height="22" min_width="22" width="22"> <button - height="22" + name="stop_btn" + follows="top" image_overlay="StopReload_Off" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" @@ -178,7 +244,8 @@ hover_glow_amount="0.15" layout="topleft" tool_tip = "Stop loading" - min_width="22" + top="0" + height="22" width="22"> <button.commit_callback function="MediaCtrl.Stop" /> @@ -186,13 +253,17 @@ </layout_panel> <layout_panel name="play" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" - top="14" + top="0" + height="22" min_width="22" - width="24"> + width="22"> <button + name="play_btn" + follows="top" image_overlay="Play_Off" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" @@ -201,10 +272,8 @@ hover_glow_amount="0.15" layout="topleft" tool_tip = "Play media" - left_delta="2" - top="4" + top="0" height="22" - min_width="22" width="22"> <button.commit_callback function="MediaCtrl.Play" /> @@ -212,13 +281,16 @@ </layout_panel> <layout_panel name="pause" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" - top="18" + top="0" min_width="22" - width="24"> + width="22"> <button + name="pause_btn" + follows="top" image_overlay="Pause_Off" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" @@ -226,10 +298,9 @@ image_unselected="PushButton_Off" hover_glow_amount="0.15" layout="topleft" + top="0" height="22" width="22" - left_delta="-1" - top="4" tool_tip = "Pause media"> <button.commit_callback function="MediaCtrl.Pause" /> @@ -238,16 +309,19 @@ <!-- media URL entry --> <layout_panel name="media_address" + mouse_opaque="false" auto_resize="true" user_resize="false" height="24" follows="left|right|bottom" layout="topleft" + top="0" width="190" min_width="90"> <line_editor name="media_address_url" - follows="left|right" + max_length="1024" + follows="top|left|right" height="22" top="0" tool_tip="Media URL" @@ -258,15 +332,18 @@ <layout_stack name="media_address_url_icons" animate="false" - follows="right" + follows="top|right" height="20" width="38" - right="-2" - top="-1" + top="0" + right="-1" + border_size="0" + mouse_opaque="false" orientation="horizontal"> <layout_panel layout="topleft" width="16" + mouse_opaque="false" auto_resize="false" user_resize="false"> <icon @@ -276,12 +353,12 @@ image_name="Flag" layout="topleft" tool_tip="White List enabled" - min_width="16" width="16" /> </layout_panel> <layout_panel layout="topleft" width="16" + mouse_opaque="false" auto_resize="false" user_resize="false"> <icon @@ -290,30 +367,30 @@ image_name="Lock2" layout="topleft" tool_tip="Secured Browsing" - min_width="16" width="16" /> </layout_panel> </layout_stack> </layout_panel> <layout_panel name="media_play_position" + mouse_opaque="false" auto_resize="true" user_resize="false" - follows="left|right|top|bottom" + follows="left|right" layout="topleft" - height="16" + top="0" + height="22" min_width="100" width="200"> <slider_bar name="media_play_slider" follows="left|right|top" - height="20" - bottom="88" + top="0" + height="22" increment="0.01" initial_value="0.5" layout="topleft" tool_tip="Movie play progress" - min_width="100" width="200"> <slider_bar.commit_callback function="MediaCtrl.JumpProgress" /> @@ -321,12 +398,16 @@ </layout_panel> <layout_panel name="skip_back" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" + top="0" min_width="22" width="22"> <button + name="skip_back_btn" + follows="top" image_overlay="SkipBackward_Off" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" @@ -337,7 +418,7 @@ height="22" layout="topleft" tool_tip="Step back" - top="-14" + top="0" width="22" left="0"> <button.commit_callback @@ -346,12 +427,16 @@ </layout_panel> <layout_panel name="skip_forward" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" + top="0" min_width="22" width="22"> <button + name="skip_forward_btn" + follows="top" image_overlay="SkipForward_Off" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" @@ -361,8 +446,7 @@ height="22" layout="topleft" tool_tip="Step forward" - top="-14" - min_width="22" + top="0" width="22"> <button.commit_callback function="MediaCtrl.SkipForward" /> @@ -370,30 +454,32 @@ </layout_panel> <layout_panel name="media_volume" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" - top="-50" + top="0" height="72" min_width="22" width="22"> <!-- Note: this is not quite right either...the mute button is not the --> <!-- same as the others because it cannot have the "image_overlay" be --> <!-- two different images. --> + <!-- Note also: the button and the slider must overlap! --> <button + name="media_mute_button" + follows="top" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" image_selected="AudioMute_Off" image_unselected="Audio_Off" hover_glow_amount="0.15" - name="media_mute_button" - height="22" is_toggle="true" layout="topleft" scale_image="false" tool_tip="Mute This Media" - top="118" - min_width="22" + top="0" + height="20" width="22" > <button.commit_callback function="MediaCtrl.ToggleMute" /> @@ -405,7 +491,7 @@ <slider orientation="vertical" left="0" - top="-2" + top="16" height="50" layout="topleft" increment="0.01" @@ -422,39 +508,29 @@ function="MediaCtrl.HideVolumeSlider" /> </slider> </layout_panel> - <panel - height="28" - layout="topleft" - auto_resize="false" - min_width="3" - width="3"> - <icon - height="26" - image_name="media_panel_divider.png" - layout="topleft" - top="0" - min_width="3" - width="3" /> - </panel> <layout_panel name="zoom_frame" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" + top="0" height="28" min_width="22" width="22"> <button + name="zoom_frame_btn" + follows="top" image_overlay="Zoom_Off" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" image_selected="PushButton_Selected" image_unselected="PushButton_Off" hover_glow_amount="0.15" + top="0" height="22" layout="topleft" tool_tip="Zoom into media" - min_width="22" width="22"> <button.commit_callback function="MediaCtrl.Zoom" /> @@ -462,18 +538,23 @@ </layout_panel> <layout_panel name="close" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" + top="0" min_width="21" width="21" > <button + name="close_btn" + follows="top" image_overlay="UnZoom_Off" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" image_selected="PushButton_Selected" image_unselected="PushButton_Off" hover_glow_amount="0.15" + top="0" height="22" layout="topleft" tool_tip ="Zoom Back" @@ -485,12 +566,16 @@ </layout_panel> <layout_panel name="new_window" + mouse_opaque="false" auto_resize="false" user_resize="false" layout="topleft" + top="0" min_width="22" width="22"> <button + name="new_window_btn" + follows="top" image_overlay="ExternalBrowser_Off" image_disabled="PushButton_Disabled" image_disabled_selected="PushButton_Disabled" @@ -500,8 +585,7 @@ height="22" layout="topleft" tool_tip = "Open URL in browser" - top_delta="-4" - min_width="24" + top="0" width="24" > <button.commit_callback function="MediaCtrl.Open" /> @@ -510,46 +594,17 @@ <!-- bookend panel --> <layout_panel name="right_bookend" - width="0" - layout="topleft" - user_resize="false" /> - </layout_stack> - <layout_stack - follows="left|right|bottom" - height="20" - layout="topleft" - animate="false" - left="0" - orientation="horizontal" - top="170"> - <!-- outer layout_panels center the inner one --> - <layout_panel - width="0" - layout="topleft" - user_resize="false" /> - <panel - name="media_progress_indicator" - height="20" - layout="topleft" - left="0" + mouse_opaque="false" top="0" - auto_resize="false" - user_resize="false" - min_width="100" - width="200"> - <progress_bar - name="media_progress_bar" - color_bar="1 1 1 0.96" - follows="left|right|top" - top="5" - height="8" - layout="topleft" - left="0" - tool_tip="Media is Loading"/> - </panel> - <layout_panel width="0" layout="topleft" user_resize="false" /> </layout_stack> + <panel + name="media_region" + height="100" + follows="left|right|top|bottom" + layout="topleft" + mouse_opaque="false" + top="30" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 342cf4144f..412485e03f 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel follows="all" - height="535" + height="540" label="Profile" layout="topleft" left="0" name="panel_profile" top="0" - width="313"> + width="317"> <string name="CaptionTextAcctInfo"> [ACCTTYPE] @@ -27,173 +27,191 @@ <string name="no_partner_text" value="None" /> - <string + <string + name="no_group_text" + value="None" /> + <string name="RegisterDateFormat"> [REG_DATE] ([AGE]) </string> - <scroll_container - color="DkGray2" + <layout_stack + name="layout" + orientation="vertical" follows="all" - height="485" layout="topleft" - name="profile_scroll" - reserve_scroll_corner="true" - opaque="true" + left="0" top="0" - width="313"> - <panel - name="scroll_content_panel" - follows="left|top|right" - height="485" + height="524" + width="317" + border_size="0"> + <layout_panel + name="profile_stack" + follows="all" layout="topleft" top="0" left="0" - width="313"> - <panel - follows="left|top" - height="117" + height="524" + width="317"> + <scroll_container + color="DkGray2" + follows="all" layout="topleft" - left="10" - name="second_life_image_panel" - top="0" - width="280"> - <texture_picker - allow_no_texture="true" - default_image_name="None" - enabled="false" - follows="top|left" - height="102" + left="0" + name="profile_scroll" + opaque="true" + height="527" + width="317" + top="0"> + <panel + layout="topleft" + follows="left|top|right" + height="505" + min_height="505" + name="profile_scroll_panel" + top="0" + left="0" + width="297"> + <panel + follows="left|top|right" + height="124" + layout="topleft" + left="13" + name="second_life_image_panel" + top="0" + width="297"> + <texture_picker + allow_no_texture="true" + default_image_name="None" + enabled="false" + follows="top|left" + height="124" + layout="topleft" + left="0" + name="2nd_life_pic" + top="10" + width="102" /> + <text + follows="left|top|right" + font.style="BOLD" + height="15" + layout="topleft" + left_pad="10" + name="title_sl_descr_text" + text_color="white" + top_delta="0" + value="[SECOND_LIFE]:" + width="180" /> + <expandable_text + follows="left|top|right" + height="97" + layout="topleft" + left="107" + textbox.max_length="512" + name="sl_description_edit" + top_pad="-3" + translate="false" + width="180" + expanded_bg_visible="true" + expanded_bg_color="DkGray"> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean viverra orci et justo sagittis aliquet.Nullamma lesuada mauris sit amet ipsum. adipiscing elit. Ae nean 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 + follows="left|top|right" + height="124" layout="topleft" - left="0" - name="2nd_life_pic" - top="10" - width="102" /> + top_pad="0" + left="13" + name="first_life_image_panel" + width="297"> + <texture_picker + allow_no_texture="true" + default_image_name="None" + enabled="false" + follows="top|left" + height="124" + layout="topleft" + left="0" + name="real_world_pic" + width="102" /> + <text + follows="left|top|right" + font.style="BOLD" + height="15" + layout="topleft" + left_pad="10" + name="title_rw_descr_text" + text_color="white" + top_delta="0" + value="Real World:" + width="180" /> + <expandable_text + follows="left|top|right" + height="97" + layout="topleft" + left="107" + textbox.max_length="512" + name="fl_description_edit" + top_pad="-3" + translate="false" + width="180" + expanded_bg_visible="true" + expanded_bg_color="DkGray"> + 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 - follows="left|top|right" - font.style="BOLD" - height="15" + follows="left|top" + height="15" + font.style="BOLD" + font="SansSerifMedium" + layout="topleft" + left="10" + name="homepage_edit" + top_pad="0" + translate="false" + value="http://librarianavengers.org" + width="300" + word_wrap="false" + use_ellipses="true" /> + <text + follows="left|top" + font.style="BOLD" + height="10" layout="topleft" - left_pad="10" - name="title_sl_descr_text" + left="10" + name="title_member_text" text_color="white" - top_delta="0" - value="[SECOND_LIFE]:" - width="165" /> - <expandable_text - follows="left|top|right" - height="95" - layout="topleft" - left="107" - textbox.max_length="512" - name="sl_description_edit" - top_pad="-3" - width="173" - expanded_bg_visible="true" - expanded_bg_color="DkGray"> - 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 - follows="left|top" - height="117" - layout="topleft" - top_pad="10" - left="10" - name="first_life_image_panel" - width="280"> - <texture_picker - allow_no_texture="true" - default_image_name="None" - enabled="false" - follows="top|left" - height="102" + top_pad="10" + value="Resident Since:" + width="300" /> + <text_editor + allow_scroll="false" + bg_visible="false" + follows="left|top" + h_pad="0" + height="15" layout="topleft" - left="0" - name="real_world_pic" - width="102" /> + left="10" + name="register_date" + read_only="true" + translate="false" + v_pad="0" + value="05/31/2376" + width="300" + word_wrap="true" /> <text - follows="left|top|right" - font.style="BOLD" + follows="left|top" + font.style="BOLD" height="15" layout="topleft" - left_pad="10" - name="title_rw_descr_text" + left="10" + name="title_acc_status_text" text_color="white" - top_delta="0" - value="Real World:" - width="165" /> - <expandable_text - follows="left|top|right" - height="95" - layout="topleft" - left="107" - textbox.max_length="512" - name="fl_description_edit" - top_pad="-3" - width="173" - expanded_bg_visible="true" - expanded_bg_color="DkGray"> - 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 - type="string" - follows="left|top" - font="SansSerifSmall" - font.style="BOLD" - height="15" - layout="topleft" - left="10" - name="me_homepage_text" - text_color="white" - top_pad="0" - width="280"> - Homepage: - </text> - <text - follows="left|top" - height="15" - layout="topleft" - left="10" - name="homepage_edit" - top_pad="0" - value="http://librarianavengers.org" - width="280" - word_wrap="false" - use_ellipses="true" - /> - <text - follows="left|top" - font.style="BOLD" - height="10" - layout="topleft" - left="10" - name="title_member_text" - text_color="white" - top_pad="10" - value="Member Since:" - width="280" /> - <text - follows="left|top" - height="15" - layout="topleft" - left="10" - name="register_date" - value="05/31/1976" - width="280" - word_wrap="true" /> - <text - follows="left|top" - font.style="BOLD" - height="15" - layout="topleft" - left="10" - name="title_acc_status_text" - text_color="white" - top_pad="10" - value="Account Status:" - width="280" /> - <!-- <text + top_pad="5" + value="Account Status:" + width="300" /> + <!-- <text type="string" follows="left|top" font="SansSerifSmall" @@ -204,91 +222,101 @@ top_delta="0" value="Go to Dashboard" width="100"/> --> - <text - follows="left|top" - height="20" - layout="topleft" - left="10" - name="acc_status_text" - top_pad="0" - value="Resident. No payment info on file." - width="280" - word_wrap="true" /> - <text - follows="left|top" - font.style="BOLD" - height="15" - layout="topleft" - left="10" - name="title_partner_text" - text_color="white" - top_pad="5" - value="Partner:" - width="280" /> - <panel - follows="left|top" - height="15" - layout="topleft" - left="10" - name="partner_data_panel" - top_pad="0" - width="280"> + <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_editor> <text follows="left|top" - height="10" + font.style="BOLD" + height="15" layout="topleft" - left="0" - name="partner_text" - top="0" - value="[FIRST] [LAST]" - width="280" - word_wrap="true" /> - </panel> - <text - follows="left|top" - font.style="BOLD" - height="15" - layout="topleft" - left="10" - name="title_groups_text" - text_color="white" - top_pad="8" - value="Groups:" - width="280" /> - <expandable_text - follows="left|top|bottom" - height="60" + left="10" + name="title_partner_text" + text_color="white" + top_pad="3" + value="Partner:" + width="300" /> + <panel + follows="left|top" + height="15" + layout="topleft" + left="10" + name="partner_data_panel" + top_pad="0" + width="300"> + <name_box + follows="left|top" + height="10" + initial_value="(retrieving)" + layout="topleft" + left="0" + link="true" + name="partner_text" + top="0" + width="300" + word_wrap="true" /> + </panel> + <text + follows="left|top" + font.style="BOLD" + height="13" + layout="topleft" + left="10" + name="title_groups_text" + text_color="white" + top_pad="3" + value="Groups:" + width="300" /> + <expandable_text + follows="all" + height="103" + layout="topleft" + left="7" + name="sl_groups" + textbox.max_length="512" + top_pad="0" + translate="false" + width="290" + expanded_bg_visible="true" + expanded_bg_color="DkGray"> + 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. Aenean viverra tulip moosetop. Slan de heelish marfnik tooplod. Sum sum to whop de wompam booster copm. + </expandable_text> + </panel> + </scroll_container> + </layout_panel> + <layout_panel + follows="bottom|left" + height="30" layout="topleft" - left="10" - name="sl_groups" - top_pad="0" - width="280" - expanded_bg_visible="true" - expanded_bg_color="DkGray"> - 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 - follows="bottom|left" - layout="topleft" - left="0" - name="profile_buttons_panel" - top_pad="2" - bottom="0" - height="19" - width="303"> + name="profile_buttons_panel" + auto_resize="false" + 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" + tool_tip="Offer friendship to the Resident" top="5" - width="77" /> + width="80" /> <button follows="bottom|left" height="23" @@ -297,18 +325,18 @@ name="im" tool_tip="Open instant message session" top="5" - left_pad="5" - width="33" /> + left_pad="3" + width="39" /> <button follows="bottom|left" height="23" label="Call" layout="topleft" name="call" - tool_tip="Call this resident" - left_pad="5" + tool_tip="Call this Resident" + left_pad="3" top="5" - width="40" /> + width="43" /> <button enabled="false" follows="bottom|left" @@ -316,10 +344,10 @@ label="Map" layout="topleft" name="show_on_map_btn" - tool_tip="Show the resident on the map" + tool_tip="Show the Resident on the map" top="5" - left_pad="5" - width="44" /> + left_pad="3" + width="41" /> <button follows="bottom|left" height="23" @@ -327,35 +355,36 @@ layout="topleft" name="teleport" tool_tip="Offer teleport" - left_pad="5" + left_pad="3" top="5" - width="67" /> + width="69" /> <button follows="bottom|right" height="23" label="▼" layout="topleft" name="overflow_btn" - tool_tip="Pay money to or share inventory with the resident" + tool_tip="Pay money to or share inventory with the Resident" right="-1" top="5" - width="21" /> - </panel> - <panel - follows="bottom|left" - layout="topleft" - left="0" - top_pad="-17" - name="profile_me_buttons_panel" - visible="false" - height="19" - width="303"> + left_pad="3" + width="23" /> + </layout_panel> + <layout_panel + follows="bottom|left" + height="30" + layout="topleft" + name="profile_me_buttons_panel" + visible="false" + width="313"> <button follows="bottom|right" height="23" - left="10" + left="20" + top="0" label="Edit Profile" name="edit_profile_btn" + tool_tip="Edit your personal information" width="130" /> <button follows="bottom|right" @@ -363,7 +392,9 @@ label="Edit Appearance" left_pad="10" name="edit_appearance_btn" - right="-10" + tool_tip="Create/edit your appearance: physical data, clothes and etc." width="130" /> - </panel> + </layout_panel> + +</layout_stack> </panel> 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 6324ec2bd8..5a96ba2dd2 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml @@ -6,6 +6,7 @@ layout="topleft" min_height="350" name="panel_target_profile" + left="0" width="333"> <string name="status_online"> @@ -21,21 +22,23 @@ image_overlay="BackArrow_Off" layout="topleft" name="back" - left="10" + left="12" tab_stop="false" top="2" width="23" /> <text_editor - allow_scroll="false" - bg_visible="false" + h_pad="0" + v_pad="0" + allow_scroll="false" + bg_visible="false" read_only = "true" follows="top|left|right" font="SansSerifHugeBold" - height="29" + height="26" layout="topleft" left_pad="10" name="user_name" - text_color="white" + text_color="LtGray" top="0" value="(Loading...)" use_ellipses="true" @@ -51,17 +54,17 @@ width="150" /> <tab_container follows="all" - height="535" + height="538" halign="center" layout="topleft" - left="10" - min_width="333" + left="5" + min_width="333" name="tabs" tab_min_width="80" tab_height="30" tab_position="top" - top_pad="10" - width="313"> + top_pad="5" + width="317"> <panel class="panel_profile" filename="panel_profile.xml" diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml index 18c2228906..727c5fb7b2 100644 --- a/indra/newview/skins/default/xui/en/panel_progress.xml +++ b/indra/newview/skins/default/xui/en/panel_progress.xml @@ -54,7 +54,7 @@ color="LoginProgressBoxCenterColor" follows="left|right|bottom|top" height="250" - image_name="rounded_square.tga" + image_name="Rounded_Square" layout="topleft" left="0" top="0" diff --git a/indra/newview/skins/default/xui/en/panel_region_covenant.xml b/indra/newview/skins/default/xui/en/panel_region_covenant.xml index ff55090f16..dc8f71c868 100644 --- a/indra/newview/skins/default/xui/en/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/en/panel_region_covenant.xml @@ -135,7 +135,8 @@ left="120" name="covenant_help_text" top_pad="10" - width="460"> + word_wrap="true" + width="360"> Changes to the covenant will show on all parcels in the estate. </text> <text @@ -145,9 +146,10 @@ left_delta="0" name="covenant_instructions" top_pad="5" - width="465"> - Drag and drop a notecard to change - the Covenant for this Estate. + word_wrap="true" + font.style="ITALIC" + width="360"> + Drag and drop a notecard to change the Covenant for this estate. </text> <text diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml index ba39e88024..d336e18011 100644 --- a/indra/newview/skins/default/xui/en/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml @@ -19,9 +19,9 @@ left="10" name="estate_help_text" top="14" - width="313"> - Changes to settings on this tab will affect all -regions in the estate. + word_wrap="true" + width="275"> + Changes to settings on this tab will affect all regions in the estate. </text> <text type="string" @@ -59,7 +59,7 @@ regions in the estate. left_delta="0" name="owner_text" top_pad="2" - width="80"> + width="180"> Estate owner: </text> <text @@ -138,7 +138,7 @@ regions in the estate. name="Only Allow" top="250" width="278"> - Restrict Access to Accounts Verified by: + Restrict Access to accounts verified by: </text> <check_box follows="top|left" @@ -147,7 +147,7 @@ regions in the estate. layout="topleft" left_delta="0" name="limit_payment" - tool_tip="Ban unidentified residents" + tool_tip="Ban unidentified Residents" top_pad="2" width="278" /> <check_box @@ -157,7 +157,7 @@ regions in the estate. layout="topleft" left_delta="0" name="limit_age_verified" - tool_tip="Ban residents who have not verified their age. See the [SUPPORT_SITE] for more information." + tool_tip="Ban Residents who have not verified their age. See the [SUPPORT_SITE] for more information." top_pad="2" width="278" /> <check_box diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml index 26568c2a28..c06e67a4bb 100644 --- a/indra/newview/skins/default/xui/en/panel_region_general.xml +++ b/indra/newview/skins/default/xui/en/panel_region_general.xml @@ -134,6 +134,7 @@ top="200" width="80" /> <spinner + decimal_digits="0" follows="left|top" height="20" increment="1" diff --git a/indra/newview/skins/default/xui/en/panel_region_texture.xml b/indra/newview/skins/default/xui/en/panel_region_texture.xml index a4d24cb0fc..04dbf73be9 100644 --- a/indra/newview/skins/default/xui/en/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/en/panel_region_texture.xml @@ -136,7 +136,7 @@ layout="topleft" left="10" name="height_text_lbl5" - top="186" + top="170" width="300"> Texture Elevation Ranges </text> @@ -146,7 +146,7 @@ layout="topleft" left="51" name="height_text_lbl6" - top="201" + top="185" width="100"> Southwest </text> @@ -171,7 +171,7 @@ max_val="500" min_val="-500" name="height_start_spin_0" - top_delta="20" + top_delta="15" width="100" /> <spinner follows="left|top" @@ -216,9 +216,9 @@ follows="left|top" height="20" layout="topleft" - left_pad="10" + left="51" name="height_text_lbl8" - top_delta="0" + top_pad="10" width="100"> Southeast </text> @@ -243,7 +243,7 @@ max_val="500" min_val="-500" name="height_start_spin_2" - top_delta="20" + top_delta="15" width="100" /> <spinner follows="left|top" @@ -291,9 +291,9 @@ left="10" name="height_text_lbl10" top_delta="30" - width="270"> - These values represent the blend range - for the textures above. + width="400" + word_wrap="true"> + These values represent the blend range for the textures above. </text> <text follows="left|top" @@ -302,11 +302,9 @@ left_delta="0" name="height_text_lbl11" top_delta="32" - width="270"> - Measured in meters, the LOW value - is the MAXIMUM height of Texture #1, - and the HIGH value is the MINIMUM - height of Texture #4. + width="400" + word_wrap="true"> + Measured in meters, the LOW value is the MAXIMUM height of Texture #1, and the HIGH value is the MINIMUM height of Texture #4. </text> <button enabled="false" 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 765e2ae623..d14355b9f4 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> 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 d98f690339..629d8567d1 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 0fa3c1cf2e..9dff00fa0b 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/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml index 4565663bba..6ef93406ec 100644 --- a/indra/newview/skins/default/xui/en/panel_side_tray.xml +++ b/indra/newview/skins/default/xui/en/panel_side_tray.xml @@ -12,13 +12,27 @@ appearance up to tray panel header word like "Home". Embedded panels are inset by a pixel and so their backgrounds will not block the world fully. --> + + <sidetray_tab + name="sidebar_openclose" + help_topic="sidebar_openclose" + tab_title="Toggle Sidebar" + description="Toggle Sidebar." + image="TabIcon_Open_Off" + image_selected="TabIcon_Close_Off" + mouse_opaque="false" + background_visible="true" + > + <panel /> <!-- dummy panel, never to actually be seen --> + </sidetray_tab> + <sidetray_tab name="sidebar_home" help_topic="sidebar_home" tab_title="Home" description="Home." - image="TabIcon_Open_Off" - image_selected="TabIcon_Close_Off" + image="TabIcon_Home_Off" + image_selected="TabIcon_Home_Selected" mouse_opaque="false" background_visible="true" > @@ -31,6 +45,31 @@ </sidetray_tab> <sidetray_tab + name="sidebar_me" + help_topic="sidebar_me" + tab_title="My Profile" + description="Edit your public profile and Picks." + image="TabIcon_Me_Off" + image_selected="TabIcon_Me_Selected" + mouse_opaque="false" + background_visible="true" + > + <panel_container + name="panel_container" + default_panel_name="panel_me" + width="333" + > + <panel + class="panel_me" + name="panel_me" + filename="panel_me.xml" + label="Me" + /> + + </panel_container> + </sidetray_tab> + + <sidetray_tab name="sidebar_people" help_topic="sidebar_people" tab_title="People" @@ -59,7 +98,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 @@ -94,20 +133,21 @@ </sidetray_tab> <sidetray_tab - name="sidebar_me" - help_topic="sidebar_me" - tab_title="My Profile" - description="Edit your public profile and Picks." - image="TabIcon_Me_Off" - image_selected="TabIcon_Me_Selected" + name="sidebar_inventory" + help_topic="sidebar_inventory" + tab_title="My Inventory" + description="Browse your inventory." + image="TabIcon_Things_Off" + image_selected="TabIcon_Things_Selected" mouse_opaque="false" background_visible="true" > <panel - class="panel_me" - name="panel_me" - filename="panel_me.xml" - label="Me" + class="sidepanel_inventory" + name="sidepanel_inventory" + filename="sidepanel_inventory.xml" + label="Edit Inventory" + font="SansSerifBold" /> </sidetray_tab> @@ -130,23 +170,4 @@ /> </sidetray_tab> - <sidetray_tab - name="sidebar_inventory" - help_topic="sidebar_inventory" - tab_title="My Inventory" - description="Browse your inventory." - image="TabIcon_Things_Off" - image_selected="TabIcon_Things_Selected" - mouse_opaque="false" - background_visible="true" - > - <panel - class="sidepanel_inventory" - name="sidepanel_inventory" - filename="sidepanel_inventory.xml" - label="Edit Inventory" - font="SansSerifBold" - /> - </sidetray_tab> - </side_tray> diff --git a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml index 1dd4eb095c..ab3cc036d5 100644 --- a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml +++ b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml @@ -4,7 +4,6 @@ follows="all" height="570" min_height="350" - label="home_tab" help_topic="sidetray_home" layout="topleft" top="0" 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 3578c4326d..c188c1bf8b 100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -3,13 +3,15 @@ background_opaque="true" background_visible="true" bg_opaque_color="MouseGray" - follows="all" + chrome="true" + follows="top|right" height="19" layout="topleft" left="0" mouse_opaque="false" name="status" top="19" + tab_stop="false" width="1000"> <panel.string name="StatBarDaysOfWeek"> @@ -42,48 +44,81 @@ <button auto_resize="true" halign="right" + font="SansSerifSmall" + follows="right|top" + image_overlay="" + image_selected="spacer35.tga" + image_unselected="spacer35.tga" + image_pressed="spacer35.tga" + height="16" + right="-210" + label_shadow="false" + name="buycurrency" + tool_tip="My Balance" + top="3" + width="110" /> + <button + auto_resize="true" + halign="right" + font="SansSerifSmall" follows="right|top" image_selected="BuyArrow_Over" - image_unselected="BuyArrow_Off" + image_unselected="BuyArrow_Over" image_pressed="BuyArrow_Press" height="16" - right="-120" - name="buycurrency" - pad_right="20px" - tool_tip="My Balance: Click to buy more L$" - top="0" - width="90" /> + label="Buy" + label_color="EmphasisColor" + left_pad="0" + label_shadow="false" + name="buyL" + pad_right="20" + pad_bottom="2" + tool_tip="Click to buy more L$" + top="2" + width="45" /> <text type="string" font="SansSerifSmall" text_readonly_color="TimeTextColor" - follows="right|bottom" + follows="right|top" halign="right" height="16" - top="4" + top="5" layout="topleft" - left_pad="-7" + left_pad="0" name="TimeText" - text_color="TimeTextColor" tool_tip="Current time (Pacific)" width="80"> - 12:00 AM + 24:00 AM PST </text> <button - follows="right|bottom" + follows="right|top" height="16" - image_selected="Parcel_VoiceNo_Dark" - image_unselected="Parcel_Voice_Dark" + image_selected="Pause_Off" + image_unselected="Play_Off" + image_pressed="Play_Press" + image_pressed_selected="Pause_Press" is_toggle="true" - left_pad="18" + left_pad="15" top="1" + name="media_toggle_btn" + tool_tip="Start/Stop All Media (Music, Video, Web pages)" + width="16" > + </button> + <button + follows="right|top" + height="16" + image_selected="AudioMute_Off" + image_pressed="Audio_Press" + image_unselected="Audio_Off" + is_toggle="true" + left_pad="5" + top="2" name="volume_btn" tool_tip="Global Volume Control" width="16" /> - <text - enabled="true" - follows="right|bottom" + follows="right|top" halign="center" height="12" layout="topleft" 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 2822f7b841..5e74689c5a 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_teleport_history.xml b/indra/newview/skins/default/xui/en/panel_teleport_history.xml index 06da64533b..0d4f67f94c 100644 --- a/indra/newview/skins/default/xui/en/panel_teleport_history.xml +++ b/indra/newview/skins/default/xui/en/panel_teleport_history.xml @@ -1,14 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="Teleport History" bottom="0" height="326" left="0" width="380" +<panel name="Teleport History" bottom="0" height="400" left="0" width="380" help_topic="panel_teleport_history" - border="true" follows="left|top|right|bottom"> + border="false" follows="left|top|right|bottom"> <accordion follows="left|top|right|bottom" - height="300" + height="368" layout="topleft" left="0" top="0" name="history_accordion" + background_visible="true" + bg_alpha_color="DkGray2" width="380"> <accordion_tab layout="topleft" @@ -138,20 +140,21 @@ </accordion_tab> </accordion> <panel - background_visible="true" + bg_opaque_color="DkGray2" + bg_alpha_color="DkGray2" + background_visible="true" + background_opaque="true" bevel_style="none" - top_pad="0" + bottom="0" follows="left|right|bottom" - height="30" - label="bottom_panel" - layout="topleft" + height="38" + layout="bottomleft" left="0" name="bottom_panel" width="380"> <button follows="bottom|left" - font="SansSerifBigBold" - tool_tip="Show additional optioins" + tool_tip="Show additional options" height="18" image_disabled="OptionsMenu_Disabled" image_selected="OptionsMenu_Press" @@ -159,7 +162,7 @@ layout="topleft" left="10" name="gear_btn" - top="5" + top="14" width="18" /> </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml index 4f40e00815..c5f3fcc27d 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" diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml index ba2d61afb7..11069b3ac3 100644 --- a/indra/newview/skins/default/xui/en/panel_toast.xml +++ b/indra/newview/skins/default/xui/en/panel_toast.xml @@ -3,17 +3,25 @@ <!-- Don't remove floater's height! It is needed for Overflow and Start-Up toasts!--> +<!-- + This floater is invisible. To make toast look like a floater we render wrapper_panel + like a floater(draw shadows and so on). This is done with one purpose - make close button + look like it is positioned out of floater and able to accept mouse clicks (see EXT-4246) +--> + <floater - legacy_header_height="18" + legacy_header_height="0" + header_height="0" name="toast" title="" visible="false" layout="topleft" - height="40" - width="305" + height="47" + width="310" left="0" top="0" follows="right|bottom" + background_visible="false" bg_opaque_image="Toast_Over" bg_alpha_image="Toast_Background" can_minimize="false" @@ -27,6 +35,21 @@ drop_shadow_visible = "false" border = "false" > + <panel + background_opaque="false" + border_visible="false" + background_visible="true" + bg_opaque_image="Toast_Over" + bg_alpha_image="Toast_Background" + label="wrapper_panel" + layout="topleft" + left="0" + name="wrapper_panel" + top="7" + height="40" + follows="all" + translate="false" + width="305"> <!-- Don't remove this wiget! It is needed for Overflow and Start-Up toasts!--> <text clip_partial="true" @@ -39,15 +62,18 @@ name="toast_text" word_wrap="true" text_color="white" - top="5" - use_ellipses="true" + top="5" + translate="false" + v_pad="5" + use_ellipses="true" width="260"> Toast text; </text> + </panel> <button layout="topleft" - top="-14" - left="293" + top="0" + right="310" width="17" height="17" follows="top|right" diff --git a/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml new file mode 100644 index 0000000000..cd66c56ca1 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_volume_pulldown.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + background_opaque="true" + background_visible="true" + bg_opaque_image="Volume_Background" + bg_alpha_image="Volume_Background" + border_visible="false" + border="false" + chrome="true" + follows="bottom" + height="150" + layout="topleft" + name="volumepulldown_floater" + width="32"> + <slider + control_name="AudioLevelMaster" + follows="left|top" + left="0" + top="1" + orientation="vertical" + height="120" + increment="0.05" + initial_value="0.5" + layout="topleft" + name="mastervolume" + show_text="false" + slider_label.halign="right" + top_pad="2" + volume="true"> + <slider.commit_callback + function="Vol.setControlFalse" + parameter="MuteAudio" /> + </slider> + <button + left="7" + top_pad="9" + width="18" + height="12" + follows="top|left" + name="prefs_btn" + image_unselected="Icon_Gear_Foreground" + image_disabled="Icon_Gear_Background" + image_pressed="Icon_Gear_Press" + scale_image="false"> + <button.commit_callback + function="Vol.GoAudioPrefs" /> + </button> +</panel> diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml index 44248eedd5..b3d55fec65 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml @@ -37,61 +37,61 @@ width="333"> name="openoutfit_btn" /> <icon follows="top|left" - height="30" + height="24" image_name="TabIcon_Appearance_Off" name="outfit_icon" mouse_opaque="false" visible="true" - left="5" + left="9" top="0" - width="30" /> + width="24" /> <text - font="SansSerifHuge" + font="SansSerifHugeBold" height="20" left_pad="5" - text_color="white" - top="3" + text_color="LtGray" + top="0" use_ellipses="true" - width="290" + width="305" follows="top|left" word_wrap="true" mouse_opaque="false" name="currentlook_name"> MyOutfit With a really Long Name like MOOSE </text> - <!-- <text - text_color="LtGray_50" - width="290" - left="40" + <text + font="SansSerifSmall" + text_color="White_50" + width="300" height="1" follows="top|left" layout="topleft" - top_pad="-2" + top_pad="5" mouse_opaque="false" name="currentlook_title" > - (current outfit) - </text>--> + (unsaved) + </text> </panel> <filter_editor height="23" follows="left|top|right" layout="topleft" - left="15" + left="10" label="Filter Outfits" max_length="300" name="Filter" - top_pad="0" + top_pad="10" width="303" /> <panel class="panel_outfits_inventory" filename="panel_outfits_inventory.xml" name="panel_outfits_inventory" - height="515" + height="505" min_height="410" width="320" - top_pad="0" - follows="all" - /> + left="0" + top_pad="6" + follows="all" /> <!-- <button follows="bottom|left" height="23" @@ -120,4 +120,3 @@ width="333"> top="35" visible="false" /> </panel> - diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml index b738e72423..a233d42568 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml @@ -28,15 +28,14 @@ name="panel_main_inventory" top="0" label="" - height="500" + height="545" width="330" /> <panel height="25" - layout="bottomright" - help_topic="item_button_tab" + layout="topleft" name="button_panel" - left="5" - bottom="5" + left="9" + top_pad="-2" width="313"> <button enabled="true" @@ -47,17 +46,17 @@ left="0" name="info_btn" top="0" - width="100" /> + width="153" /> <button enabled="false" follows="bottom|left" height="23" label="Wear" layout="topleft" - left="130" + left="156" name="wear_btn" top="0" - width="100" /> + width="152" /> <button enabled="false" follows="bottom|left" @@ -65,19 +64,19 @@ label="Play" layout="topleft" name="play_btn" - left="130" + left="156" top="0" - width="80" /> + width="152" /> <button enabled="false" follows="bottom|left" height="23" label="Teleport" layout="topleft" - left="130" + left="156" name="teleport_btn" top="0" - width="100" /> + width="152" /> </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml index 790f8afd3a..12c06504ca 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml @@ -43,14 +43,14 @@ height="23" image_overlay="BackArrow_Off" layout="topleft" - left="10" + left="14" name="back_btn" tab_stop="false" - top="0" + top="2" width="23" /> <text follows="top|left|right" - font="SansSerifHuge" + font="SansSerifHugeBold" height="26" layout="topleft" left_pad="10" @@ -71,10 +71,10 @@ width="150" /> <panel follows="all" - height="490" + height="493" label="" layout="topleft" - left="10" + left="9" help_topic="" top="45" width="313" @@ -149,7 +149,7 @@ width="20" /> <text type="string" - follows="left|right" + follows="left|right|top" font="SansSerifSmall" height="15" layout="topleft" @@ -161,13 +161,14 @@ </text> <button follows="top|right" - height="23" - label="Profile" + height="16" + image_selected="Inspector_I" + image_unselected="Inspector_I" layout="topleft" - right="-1" + right="-5" name="BtnCreator" top_delta="-6" - width="78" /> + width="16" /> <text type="string" length="1" @@ -191,7 +192,7 @@ width="20" /> <text type="string" - follows="left|right" + follows="left|right|top" font="SansSerifSmall" height="15" layout="topleft" @@ -203,13 +204,14 @@ </text> <button follows="top|right" - height="23" - label="Profile" + height="16" + image_selected="Inspector_I" + image_unselected="Inspector_I" layout="topleft" - right="-1" + right="-5" name="BtnOwner" top_delta="-3" - width="78" /> + width="16" /> <text type="string" length="1" @@ -239,8 +241,6 @@ top_pad="10" follows="left|top" layout="topleft" mouse_opaque="false" - background_visible="true" - bg_alpha_color="DkGray" name="perms_inv" left="0" top_pad="25" @@ -400,8 +400,7 @@ top_pad="10" </panel> <panel height="30" - layout="bottomright" - help_topic="button_tab" + layout="topleft" name="button_panel" left="5" bottom="2" @@ -414,4 +413,4 @@ top_pad="10" right="-1" width="100" /> </panel> - </panel>
\ No newline at end of file + </panel> 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 d26e855e2f..d2c9e56bc3 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" @@ -153,28 +153,19 @@ layout="topleft" left="5" name="CreatorNameLabel" - top_pad="10" + top_pad="12" width="78"> Creator: </text> - <avatar_icon - follows="top|left" - height="20" - default_icon_name="Generic_Person" - layout="topleft" - left_pad="0" - top_delta="-6" - mouse_opaque="true" - width="20" /> <text type="string" - follows="left|right" + follows="left|right|top" font="SansSerifSmall" height="15" layout="topleft" - left_pad="5" + left_pad="0" name="Creator Name" - top_delta="6" + top_delta="0" width="140"> Erica Linden </text> @@ -186,28 +177,19 @@ layout="topleft" left="5" name="Owner:" - top_pad="10" + top_pad="15" width="78"> Owner: </text> - <avatar_icon - follows="top|left" - height="20" - default_icon_name="Generic_Person" - layout="topleft" - left_pad="0" - top_delta="-6" - mouse_opaque="true" - width="20" /> <text type="string" - follows="left|right" + follows="left|right|top" font="SansSerifSmall" height="15" layout="topleft" - left_pad="5" + left_pad="0" name="Owner Name" - top_delta="6" + top_delta="0" width="140"> Erica Linden </text> @@ -219,7 +201,7 @@ layout="topleft" left="5" name="Group_label" - top_pad="10" + top_pad="15" width="78"> Group: </text> @@ -536,7 +518,6 @@ <panel height="25" layout="bottomright" - help_topic="button_tab" name="button_panel" left="5" bottom="5" @@ -569,4 +550,4 @@ top="0" width="100" /> </panel> -</panel>
\ No newline at end of file +</panel> diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 447901f984..455b4be264 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -8,6 +8,7 @@ <!-- Default Args - these arguments will be replaced in all strings --> <string name="SECOND_LIFE">Second Life</string> <string name="APP_NAME">Second Life</string> + <string name="CAPITALIZED_APP_NAME">SECOND LIFE</string> <string name="SECOND_LIFE_GRID">Second Life Grid</string> <string name="SUPPORT_SITE">Second Life Support Portal</string> @@ -66,7 +67,7 @@ <!-- tooltips for Urls --> <string name="TooltipHttpUrl">Click to view this web page</string> <string name="TooltipSLURL">Click to view this location's information</string> - <string name="TooltipAgentUrl">Click to view this resident's profile</string> + <string name="TooltipAgentUrl">Click to view this Resident's profile</string> <string name="TooltipGroupUrl">Click to view this group's description</string> <string name="TooltipEventUrl">Click to view this event's description</string> <string name="TooltipClassifiedUrl">Click to view this classified</string> @@ -114,9 +115,6 @@ <!-- Avatar name: More than one avatar is selected/used here --> <string name="AvatarNameMultiple">(multiple)</string> - <!-- Avatar name: text shown as an alternative to AvatarNameFetching, easter egg. --> - <string name="AvatarNameHippos">(hippos)</string> - <!-- Group name: text shown for LLUUID::null --> <string name="GroupNameNone">(none)</string> @@ -253,6 +251,7 @@ <string name="connected">Connected</string> <string name="unavailable">Voice not available at your current location</string> <string name="hang_up">Disconnected from in-world Voice Chat</string> + <string name="reconnect_nearby">You will now be reconnected to Nearby Voice Chat</string> <string name="ScriptQuestionCautionChatGranted">'[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been granted permission to: [PERMISSIONS].</string> <string name="ScriptQuestionCautionChatDenied">'[OBJECTNAME]', an object owned by '[OWNERNAME]', located in [REGIONNAME] at [REGIONPOS], has been denied permission to: [PERMISSIONS].</string> <string name="ScriptTakeMoney">Take Linden dollars (L$) from you</string> @@ -1608,11 +1607,11 @@ Sends an HTTP request to the specified url with the body of the request and para </string> <string name="LSLTipText_llResetLandBanList" translate="false"> llResetLandBanList() -Removes all residents from the land ban list +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 +Removes all Residents from the land access/pass list </string> <string name="LSLTipText_llGetObjectPrimCount" translate="false"> integer llGetObjectPrimCount(key object_id) @@ -1620,7 +1619,7 @@ 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. +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"> @@ -1806,12 +1805,9 @@ Clears (deletes) the media and all params from the given face. <string name="LeaveMouselook">Press ESC to return to World View</string> <!-- inventory --> - <string name="InventoryNoMatchingItems">No matching items found in inventory.</string> - <string name="FavoritesNoMatchingItems">Drag and drop a landmark here to add to your favorites.</string> - <string name="InventoryNoTexture"> - You do not have a copy of -this texture in your inventory - </string> + <string name="InventoryNoMatchingItems">No matching items found in inventory. Try [secondlife:///app/search/groups "Search"].</string> + <string name="FavoritesNoMatchingItems">Drag a landmark here to add it to your favorites.</string> + <string name="InventoryNoTexture">You do not have a copy of this texture in your inventory</string> <!-- use value="" because they have preceding spaces --> <string name="no_transfer" value=" (no transfer)" /> <string name="no_modify" value=" (no modify)" /> @@ -2038,7 +2034,7 @@ this texture in your inventory <string name="RegionInfoAllEstatesYouManage"> all estates that you manage for [OWNER] </string> - <string name="RegionInfoAllowedResidents">Allowed residents: ([ALLOWEDAGENTS], max [MAXACCESS])</string> + <string name="RegionInfoAllowedResidents">Allowed Residents: ([ALLOWEDAGENTS], max [MAXACCESS])</string> <string name="RegionInfoAllowedGroups">Allowed groups: ([ALLOWEDGROUPS], max [MAXACCESS])</string> <!-- script limits floater --> @@ -2050,6 +2046,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> @@ -2109,7 +2106,7 @@ this texture in your inventory <!-- Mute --> <string name="MuteByName">(by name)</string> - <string name="MuteAgent">(resident)</string> + <string name="MuteAgent">(Resident)</string> <string name="MuteObject">(object)</string> <string name="MuteGroup">(group)</string> @@ -2129,7 +2126,8 @@ this texture in your inventory <string name="ClassifiedUpdateAfterPublish">(will update after publish)</string> <!-- panel picks --> - <string name="NoPicksClassifiedsText">There are no picks/classifieds here</string> + <string name="NoPicksClassifiedsText">You haven't created any Picks or Classifieds. Click the Plus button below to create a Pick or Classified.</string> + <string name="NoAvatarPicksClassifiedsText">User has no picks or classfields</string> <string name="PicksClassifiedsLoadingText">Loading...</string> <!-- Multi Preview Floater --> @@ -2169,7 +2167,7 @@ this texture in your inventory Unknown file extension .%s Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh </string> - <string name="MuteObject">Block</string> + <string name="MuteObject2">Block</string> <string name="MuteAvatar">Block</string> <string name="UnmuteObject">Unblock</string> <string name="UnmuteAvatar">Unblock</string> @@ -2936,7 +2934,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Click the [BUTTON NAME] button to accept/connect to this voice chat. </string> <string name="muted_message"> - You have blocked this resident. Sending a message will automatically unblock them. + You have blocked this Resident. Sending a message will automatically unblock them. </string> <!--Some times string name is getting from the body of server response. For ex.: from gIMMgr::showSessionStartError in the LLViewerChatterBoxSessionStartReply::post. 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 0000000000..ed8df69bf4 --- /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" + color="DkGray"/> + + <!-- styles for avatar item INVITED to voice call --> + <voice_call_invited_style + font="SansSerifSmall" + font.style="NORMAL" + 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" + color="white"/> + + <!-- styles for avatar item which HAS LEFT voice call --> + <voice_call_left_style + font="SansSerifSmall" + font.style="ITALIC" + color="LtGray_50"/> + + <!-- styles for ONLINE avatar item --> + <online_style + font="SansSerifSmall" + font.style="NORMAL" + color="white"/> + + <!-- styles for OFFLINE avatar item --> + <offline_style + font="SansSerifSmall" + font.style="NORMAL" + color="0.5 0.5 0.5 1.0"/> +</avatar_list_item> diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml index 51f85e65e2..c4f0fe5208 100644 --- a/indra/newview/skins/default/xui/en/widgets/button.xml +++ b/indra/newview/skins/default/xui/en/widgets/button.xml @@ -7,6 +7,9 @@ image_selected="PushButton_Selected" image_disabled_selected="PushButton_Selected_Disabled" image_disabled="PushButton_Disabled" + image_top_pad="0" + image_bottom_pad="0" + imgoverlay_label_space="1" label_color="ButtonLabelColor" label_color_selected="ButtonLabelSelectedColor" label_color_disabled="ButtonLabelDisabledColor" @@ -19,5 +22,6 @@ hover_glow_amount="0.15" halign="center" pad_bottom="3" + height="23" scale_image="true"> </button> diff --git a/indra/newview/skins/default/xui/en/widgets/chat_history.xml b/indra/newview/skins/default/xui/en/widgets/chat_history.xml index 8785dff2ae..ef885e8045 100644 --- a/indra/newview/skins/default/xui/en/widgets/chat_history.xml +++ b/indra/newview/skins/default/xui/en/widgets/chat_history.xml @@ -1,23 +1,24 @@ <?xml version="1.0" encoding="UTF-8"?> <chat_history - message_header="panel_chat_header.xml" - message_separator="panel_chat_separator.xml" - left_text_pad="10" - right_text_pad="15" - left_widget_pad="0" - right_widget_pad="10" - top_separator_pad="5" - bottom_separator_pad="5" - top_header_pad="17" - bottom_header_pad="10" + message_header="panel_chat_header.xml" + message_separator="panel_chat_separator.xml" + left_text_pad="10" + right_text_pad="15" + left_widget_pad="0" + right_widget_pad="10" + top_separator_pad="1" + bottom_separator_pad="1" + top_header_pad="12" + bottom_header_pad="5" max_length="2147483647" track_bottom="true" name="chat_history" type="string" word_wrap="true" + line_spacing.multiple="1.0" font="SansSerif"> <more_chat_text mouse_opaque="true" word_wrap="true" /> -</chat_history> +</chat_history>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml index 7cb973f4c8..63f08a4250 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml @@ -1,41 +1,48 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <chiclet_im_adhoc - font="SansSerif" - height="25" + height="23" name="im_adhoc_chiclet" show_speaker="false" width="25"> + <chiclet_im_adhoc.chiclet_button + height="25" + image_selected="PushButton_On" + image_unselected="PushButton_Off" + name="chiclet_button" + tab_stop="false" + width="25" /> <chiclet_im_adhoc.speaker auto_update="true" draw_border="false" - height="25" + height="23" left="25" name="speaker" visible="false" - width="20"/> + width="20" /> <chiclet_im_adhoc.avatar_icon + bottom="3" follows="left|top|bottom" - height="22" + height="20" + left="2" mouse_opaque="true" name="adhoc_icon" - width="22"/> + width="21" /> <chiclet_im_adhoc.unread_notifications - font="SansSerif" - font_halign="center" - height="25" + halign="center" + height="23" left="25" mouse_opaque="false" name="unread" text_color="white" - v_pad="5" + v_pad="3" visible="false" - width="20"/> + width="20" /> <chiclet_im_adhoc.new_message_icon - bottom="12" - height="13" - image_name="Unread_IM" - left="12" - name="new_message_icon" - visible="false" - width="13" /> + bottom="11" + height="14" + image_name="Unread_Chiclet" + left="12" + name="new_message_icon" + visible="false" + width="14" /> </chiclet_im_adhoc>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml index a9b567225e..372a89cbc7 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml @@ -1,10 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <chiclet_im_group - font="SansSerif" - height="25" + height="23" name="im_group_chiclet" show_speaker="false" width="25"> + <chiclet_im_group.chiclet_button + height="25" + image_selected="PushButton_On" + image_unselected="PushButton_Off" + name="chiclet_button" + tab_stop="false" + width="25" /> <chiclet_im_group.speaker auto_update="true" draw_border="false" @@ -12,31 +18,32 @@ left="25" name="speaker" visible="false" - width="20"/> + width="20" /> <chiclet_im_group.group_icon + bottom="3" default_icon="Generic_Group" follows="left|top|bottom" - height="22" - mouse_opaque="true" + height="20" + left="2" + mouse_opaque="false" name="group_icon" - width="22"/> + width="21" /> <chiclet_im_group.unread_notifications - height="25" - font="SansSerif" - font_halign="center" + height="23" + halign="center" left="25" mouse_opaque="false" name="unread" text_color="white" - v_pad="5" + v_pad="3" visible="false" width="20"/> <chiclet_im_group.new_message_icon - bottom="12" - height="13" - image_name="Unread_IM" - left="12" - name="new_message_icon" - visible="false" - width="13" /> +bottom="11" + height="14" + image_name="Unread_Chiclet" + left="12" + name="new_message_icon" + visible="false" + width="14" /> </chiclet_im_group>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml index 9283594a4c..99807d4717 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml @@ -1,41 +1,48 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <chiclet_im_p2p - font="SansSerif" - height="25" + height="23" name="im_p2p_chiclet" show_speaker="false" width="25"> + <chiclet_im_p2p.chiclet_button + height="25" + image_selected="PushButton_On" + image_unselected="PushButton_Off" + name="chiclet_button" + tab_stop="false" + width="25"/> <chiclet_im_p2p.speaker auto_update="true" draw_border="false" - height="25" + height="23" left="25" name="speaker" visible="false" - width="20"/> + width="20" /> <chiclet_im_p2p.avatar_icon + bottom="3" follows="left|top|bottom" - height="22" - mouse_opaque="true" + height="20" + left="2" + mouse_opaque="false" name="avatar_icon" - width="22"/> + width="21" /> <chiclet_im_p2p.unread_notifications - height="25" - font="SansSerif" - font_halign="center" + height="23" + halign="center" left="25" mouse_opaque="false" name="unread" text_color="white" - v_pad="5" + v_pad="3" visible="false" width="20"/> <chiclet_im_p2p.new_message_icon - bottom="12" - height="13" - image_name="Unread_IM" - left="12" - name="new_message_icon" - visible="false" - width="13" /> -</chiclet_im_p2p>
\ No newline at end of file + bottom="11" + height="14" + image_name="Unread_Chiclet" + left="12" + name="new_message_icon" + visible="false" + width="14" /> +</chiclet_im_p2p> diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml index 5a22563758..4bc295f747 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_offer.xml @@ -1,22 +1,30 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <chiclet_offer - font="SansSerif" - height="25" + height="23" name="offer_chiclet" width="25"> + <chiclet_offer.chiclet_button + height="25" + image_selected="PushButton_On" + image_unselected="PushButton_Off" + name="chiclet_button" + tab_stop="false" + width="25" /> <chiclet_offer.icon - default_icon="Generic_Object_Small" + bottom="3" + default_icon="Generic_Object_Small" follows="all" - height="22" + height="20" + left="2" mouse_opaque="false" name="chiclet_icon" - width="22"/> + width="21" /> <chiclet_offer.new_message_icon - bottom="12" - height="13" - image_name="Unread_IM" + bottom="11" + height="14" + image_name="Unread_Chiclet" left="12" name="new_message_icon" visible="false" - width="13" /> + width="14" /> </chiclet_offer>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml index f3207ddeae..5f51f4afd9 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_panel.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <chiclet_panel - name="chiclet_panel" + name="chiclet_panel" chiclet_padding="3" scrolling_offset="40" - scroll_button_hpad="5" + scroll_button_hpad="0" scroll_ratio="10" min_width="180" />
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml index 05a23b95f9..db6a9434df 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_script.xml @@ -1,22 +1,30 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <chiclet_script - font="SansSerif" - height="25" + height="23" name="script_chiclet" width="25"> + <chiclet_script.chiclet_button + height="25" + image_selected="PushButton_On" + image_unselected="PushButton_Off" + name="chiclet_button" + tab_stop="false" + width="25"/> <chiclet_script.icon + bottom="3" follows="all" - height="22" - image_name="Generic_Object_Small" + height="18" + image_name="Generic_Object_Small" + left="2" mouse_opaque="false" name="chiclet_icon" - width="22"/> + width="21"/> <chiclet_script.new_message_icon - bottom="12" - height="13" - image_name="Unread_IM" + bottom="11" + height="14" + image_name="Unread_Chiclet" left="12" name="new_message_icon" visible="false" - width="13" /> + width="14" /> </chiclet_script>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/color_swatch.xml b/indra/newview/skins/default/xui/en/widgets/color_swatch.xml index bda88857ae..dfd301a770 100644 --- a/indra/newview/skins/default/xui/en/widgets/color_swatch.xml +++ b/indra/newview/skins/default/xui/en/widgets/color_swatch.xml @@ -3,6 +3,6 @@ border_color="ColorSwatchBorderColor" name="color_swatch"> <color_swatch.caption_text name="caption" - font="SansSerifSmall" + halign="center" follows="left|right|bottom"/> </color_swatch> diff --git a/indra/newview/skins/default/xui/en/widgets/combo_box.xml b/indra/newview/skins/default/xui/en/widgets/combo_box.xml index 132bd24bca..d1f68a9ef9 100644 --- a/indra/newview/skins/default/xui/en/widgets/combo_box.xml +++ b/indra/newview/skins/default/xui/en/widgets/combo_box.xml @@ -2,6 +2,7 @@ <combo_box font="SansSerifSmall" list_position="below" max_chars="20" + height="23" follows="right|top"> <combo_box.combo_button name="Combobox Button" hover_glow_amount="0.15" @@ -20,7 +21,7 @@ image_pressed="DropDown_Press" image_pressed_selected="DropDown_Press" image_disabled="DropDown_Disabled" /> - <combo_box.combo_list bg_writeable_color="MenuDefaultBgColor" + <combo_box.combo_list bg_writeable_color="ComboListBgColor" background_visible="true" /> <!-- Text is "tentative" if you have typed in a string that does not match 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 f59c46b2f5..d9b6387f0d 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> 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 48baa2812d..0720621f0b 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" @@ -16,6 +16,6 @@ image_unselected="Search" image_selected="Search" /> <clear_button label="" - image_unselected="Icon_Close_Foreground" - image_selected="Icon_Close_Press" /> + image_unselected="Icon_Close_Toast" + image_selected="Icon_Close_Toast" /> </filter_editor> diff --git a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml index 888b4eaf7c..a71b293f31 100644 --- a/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml +++ b/indra/newview/skins/default/xui/en/widgets/flat_list_view.xml @@ -5,4 +5,12 @@ item_pad="0" keep_one_selected="true" multi_select="false" - opaque="true" />
\ No newline at end of file + opaque="true"> + <flat_list_view.no_items_text + follows="all" + name="no_items_msg" + v_pad="10" + h_pad="10" + value="There are no any items in the list" + wrap="true" /> +</flat_list_view>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml index a5043c5c14..83df10e417 100644 --- a/indra/newview/skins/default/xui/en/widgets/flyout_button.xml +++ b/indra/newview/skins/default/xui/en/widgets/flyout_button.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<flyout_button list_position="below"> +<flyout_button list_position="below" height="23"> <action_button scale_image="true" image_selected="SegmentedBtn_Left_Selected" image_unselected="SegmentedBtn_Left_Off" diff --git a/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml b/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml new file mode 100644 index 0000000000..e6bdcccfdf --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/folder_view_item.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<folder_view_item + folder_arrow_image="Folder_Arrow" + folder_indentation="8" + item_height="20" + item_top_pad="4" + selection_image="Rounded_Square" + /> diff --git a/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml b/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml deleted file mode 100644 index 4229f34c09..0000000000 --- a/indra/newview/skins/default/xui/en/widgets/gesture_combo_box.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<gesture_combo_box - label="Gestures" - list_position="below" - max_chars="20" - follows="right|top"> - <gesture_combo_box.combo_button name="Combobox Button" - label="" - hover_glow_amount="0.15" - scale_image="true" - image_unselected="ComboButton_Off" - image_selected="ComboButton_Selected" - image_disabled="ComboButton_Disabled" - image_disabled_selected="ComboButton_Disabled_Selected" /> - <gesture_combo_box.drop_down_button name="Drop Down Button" - label="" - halign="center" - hover_glow_amount="0.15" - scale_image="true" - image_selected="PushButton_Selected_Press" - image_pressed="PushButton_Press" - image_pressed_selected="PushButton_Selected_Press" - image_unselected="PushButton_Off" - image_disabled="PushButton_Disabled" - image_disabled_selected="PushButton_Selected_Disabled" /> - <gesture_combo_box.combo_list bg_writeable_color="MenuDefaultBgColor" - scroll_bar_bg_visible="false" /> - <gesture_combo_box.combo_editor name="Combo Text Entry" - select_on_focus="true" /> -</gesture_combo_box> diff --git a/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml b/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml new file mode 100644 index 0000000000..808683864d --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/gesture_combo_list.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<gesture_combo_list + follows="right|top"> + <gesture_combo_list.combo_button + name="Combolist Button" + label="" + layout="topleft" + halign="center" + hover_glow_amount="0.15" + mouse_opaque="false" + scale_image="true" + image_selected="PushButton_Selected_Press" + image_pressed="PushButton_Press" + image_pressed_selected="PushButton_Selected_Press" + image_unselected="PushButton_Off" + image_disabled="PushButton_Disabled" + image_disabled_selected="PushButton_Selected_Disabled" /> + <gesture_combo_list.combo_list + bg_writeable_color="MenuDefaultBgColor" + scroll_bar_bg_visible="false" /> +</gesture_combo_list> diff --git a/indra/newview/skins/default/xui/en/widgets/inspector.xml b/indra/newview/skins/default/xui/en/widgets/inspector.xml index 8ec206023e..428b2ce03b 100644 --- a/indra/newview/skins/default/xui/en/widgets/inspector.xml +++ b/indra/newview/skins/default/xui/en/widgets/inspector.xml @@ -1,10 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<!-- See also settings.xml UIFloater* settings for configuration --> <inspector name="inspector" - bg_opaque_color="DkGray_66" - background_visible="true" - bg_opaque_image="none" - background_opaque="true" - bg_alpha_image="none" - text_color="InspectorTipTextColor" - /> + bg_opaque_color="DkGray_66" + background_visible="true" + bg_opaque_image="Inspector_Hover" + background_opaque="true" + bg_alpha_image="none" + mouse_opaque="true" + text_color="InspectorTipTextColor"/> diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml new file mode 100644 index 0000000000..93875d66e6 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + bg_opaque_color="InventoryBackgroundColor" + background_visible="true" + background_opaque="true" + /> 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 7ac44b412d..1d61447e31 100644 --- a/indra/newview/skins/default/xui/en/widgets/location_input.xml +++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml @@ -3,15 +3,14 @@ *TODO: Replace hardcoded buttons width/height with getting this info from the button images. Currently that doesn't work because LLUIImage::getWidth/getHeight() return 1 for the images. --> - - - <location_input font="SansSerifSmall" + icon_maturity_general="Parcel_PG_Light" + icon_maturity_adult="Parcel_R_Light" add_landmark_image_enabled="Favorite_Star_Active" add_landmark_image_disabled="Favorite_Star_Off" add_landmark_image_hover="Favorite_Star_Over" add_landmark_image_selected="Favorite_Star_Press" - add_landmark_hpad="12" + add_landmark_hpad="12" icon_hpad="2" allow_text_entry="true" list_position="below" @@ -26,8 +25,8 @@ name="Place Information" width="16" height="16" - left="4" - top="20" + left="6" + top="20" follows="left|top" hover_glow_amount="0.15" image_unselected="Info_Off" @@ -44,6 +43,13 @@ scale_image="false" top="19" left="-3" /> + <maturity_icon + name="maturity_icon" + width="18" + height="16" + top="20" + follows="left|top" + /> <for_sale_button name="for_sale_btn" image_unselected="Parcel_ForSale_Light" @@ -55,7 +61,7 @@ top="21" /> <voice_icon - enabled="true" + enabled="true" name="voice_icon" width="22" height="18" @@ -95,37 +101,39 @@ follows="right|top" image_name="Parcel_ScriptsNo_Light" /> - <!-- NOTE: Placeholder icon, there is no dark grayscale version --> <damage_icon name="damage_icon" - width="22" - height="18" - top="21" + width="14" + height="13" + top="19" + left="2" follows="right|top" - image_name="Parcel_Damage_Light" + image_name="Parcel_Health_Dark" /> <!-- Default text color is invisible on top of nav bar background --> <damage_text name="damage_text" width="35" height="18" - top="16" + top="17" follows="right|top" halign="right" font="SansSerifSmall" text_color="TextFgColor" /> - - <combo_button name="Location History" - label="" - pad_right="0"/> - <combo_list bg_writeable_color="MenuDefaultBgColor" page_lines="10" + <combo_button + name="Location History" + label="" + pad_right="0"/> + <combo_list + bg_writeable_color="MenuDefaultBgColor" + page_lines="10" scroll_bar_bg_visible="true" /> <combo_editor name="Combo Text Entry" - text_pad_left="22" + text_pad_left="27" select_on_focus="false" font="SansSerifSmall" bevel_style="none" border_style="line" - border.border_thickness="0"/> + border.border_thickness="0" /> </location_input> diff --git a/indra/newview/skins/default/xui/en/widgets/menu.xml b/indra/newview/skins/default/xui/en/widgets/menu.xml index 53034afa61..58543338f6 100644 --- a/indra/newview/skins/default/xui/en/widgets/menu.xml +++ b/indra/newview/skins/default/xui/en/widgets/menu.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <menu bg_color="MenuDefaultBgColor" bg_visible="true" - drop_shadow="false" + drop_shadow="true" tear_off="false" shortcut_pad="15"> </menu> 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 c65244ae22..563f3dc5c2 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" /> diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml index 7262c0dc5c..9bf99fa363 100644 --- a/indra/newview/skins/default/xui/en/widgets/panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/panel.xml @@ -6,6 +6,8 @@ --> <panel bg_opaque_color="PanelFocusBackgroundColor" bg_alpha_color="PanelDefaultBackgroundColor" + bg_opaque_image_overlay="White" + bg_alpha_image_overlay="White" background_visible="false" background_opaque="false" chrome="false"/>
\ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml index 4520768216..63166f32b7 100644 --- a/indra/newview/skins/default/xui/en/widgets/scroll_list.xml +++ b/indra/newview/skins/default/xui/en/widgets/scroll_list.xml @@ -15,4 +15,6 @@ background_visible="true" heading_height="23" draw_border="false" - draw_heading="false" /> + draw_heading="false" + border.name="dig border" + border.bevel_style="in" /> diff --git a/indra/newview/skins/default/xui/en/widgets/search_editor.xml b/indra/newview/skins/default/xui/en/widgets/search_editor.xml index 1616e4c3f7..32e443a058 100644 --- a/indra/newview/skins/default/xui/en/widgets/search_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/search_editor.xml @@ -3,6 +3,7 @@ clear_button_visible="false" search_button_visible="true" text_pad_left="6" + text_pad_right="6" select_on_focus="true" text_tentative_color="TextFgTentativeColor" background_image="TextField_Search_Off" @@ -15,7 +16,12 @@ height="13" image_unselected="Search" image_selected="Search" /> - <clear_button + <clear_button + bottom="4" + height="16" image_unselected="Icon_Close_Foreground" - image_selected="Icon_Close_Press" /> + image_selected="Icon_Close_Press" + pad_right="4" + pad_left="4" + width="16" /> </search_editor> 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 3f5a4b8379..8d6b0c1cfe 100644 --- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml +++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml @@ -5,6 +5,7 @@ label_pad_left - padding to the left of tab button labels --> <tab_container tab_min_width="60" tab_max_width="150" + use_custom_icon_ctrl="false" halign="center" font="SansSerifSmall" tab_height="21" @@ -14,18 +15,18 @@ 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_Selected_Over"/> <middle_tab tab_top_image_unselected="TabTop_Middle_Off" tab_top_image_selected="TabTop_Middle_Selected" tab_bottom_image_unselected="Toolbar_Middle_Off" tab_bottom_image_selected="Toolbar_Middle_Selected" tab_left_image_unselected="SegmentedBtn_Left_Disabled" - tab_left_image_selected="SegmentedBtn_Left_Off"/> + tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/> <last_tab tab_top_image_unselected="TabTop_Right_Off" tab_top_image_selected="TabTop_Right_Selected" tab_bottom_image_unselected="Toolbar_Right_Off" tab_bottom_image_selected="Toolbar_Right_Selected" tab_left_image_unselected="SegmentedBtn_Left_Disabled" - tab_left_image_selected="SegmentedBtn_Left_Off"/> + tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/> </tab_container> diff --git a/indra/newview/skins/default/xui/en/widgets/talk_button.xml b/indra/newview/skins/default/xui/en/widgets/talk_button.xml index 68cf082c35..a7e271a1ff 100644 --- a/indra/newview/skins/default/xui/en/widgets/talk_button.xml +++ b/indra/newview/skins/default/xui/en/widgets/talk_button.xml @@ -11,9 +11,6 @@ image_unselected="SegmentedBtn_Left_Off" image_pressed="SegmentedBtn_Left_Selected_Press" image_pressed_selected="SegmentedBtn_Left_Selected_Press" - name="speak_btn" - label="Speak" - label_selected="Speak" tab_stop="false" /> <show_button diff --git a/indra/newview/skins/default/xui/en/widgets/text_editor.xml b/indra/newview/skins/default/xui/en/widgets/text_editor.xml index 23ca8ea338..2ced8b1b4b 100644 --- a/indra/newview/skins/default/xui/en/widgets/text_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/text_editor.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <!-- Core parameters are in simple_text_editor.xml --> <text_editor - allow_html="false"/> + allow_html="false" + show_context_menu="true"/> diff --git a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml index a19201f7c3..9ca15ae50d 100644 --- a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml +++ b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml @@ -1,12 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<!-- See also settings.xml UIFloater* settings for configuration --> <tool_tip name="tooltip" max_width="200" padding="4" wrap="true" font="SansSerif" + mouse_opaque="false" bg_opaque_image="Tooltip" background_opaque="true" background_visible="true" - text_color="ToolTipTextColor" - /> + text_color="ToolTipTextColor"/> diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml index 5545ab29e0..a42f9a8e3e 100644 --- a/indra/newview/skins/default/xui/es/floater_about.xml +++ b/indra/newview/skins/default/xui/es/floater_about.xml @@ -1,20 +1,66 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="ACERCA DE [APP_NAME]"> -<tab_container name="about_tab"> - <panel name="credits_panel"> - <text_editor name="credits_editor"> - Le ofrecen Second Life 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, y otros muchos. +<floater name="floater_about" title="ACERCA DE [CAPITALIZED_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"> + Compilado con [COMPILER], versión [COMPILER_VERSION] + </floater.string> + <floater.string name="AboutPosition"> + Estás en la posición [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1], de [REGION], alojada en <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +[SERVER_VERSION] +[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]] + </floater.string> + <floater.string name="AboutSystem"> + CPU: [CPU] +Memoria: [MEMORY_MB] MB +Versión del Sistema Operativo: [OS_VERSION] +Fabricante de la tarjeta gráfica: [GRAPHICS_CARD_VENDOR] +Tarjeta gráfica: [GRAPHICS_CARD] + </floater.string> + <floater.string name="AboutDriver"> + Versión de Windows Graphics Driver: [GRAPHICS_DRIVER_VERSION] + </floater.string> + <floater.string name="AboutLibs"> + Versión de OpenGL: [OPENGL_VERSION] - Gracias a todos estos residentes por contribuir a garantizar que esta es la mejor versión: 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 +Versión de libcurl: [LIBCURL_VERSION] +Versión de J2C Decoder: [J2C_VERSION] +Versión de Audio Driver: [AUDIO_DRIVER_VERSION] +Versión de Qt Webkit: [QT_WEBKIT_VERSION] +Versión de Vivox: [VIVOX_VERSION] + </floater.string> + <floater.string name="none"> + (no hay) + </floater.string> + <floater.string name="AboutTraffic"> + Paquetes perdidos: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) + </floater.string> + <tab_container name="about_tab"> + <panel label="Información" name="support_panel"> + <button label="Copiar al portapapeles" name="copy_btn" width="165"/> + </panel> + <panel label="Créditos" name="credits_panel"> + <text_editor name="credits_editor"> + Te ofrecen Second Life 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 y muchos otros. +Gracias a los siguientes Residentes por ayudarnos a estar seguros de que, hoy por hoy, esta es la mejor versión: (pendiente) - Para tener éxito en los negocios, se atrevido, se el primero, se diferente. (Henry Marchant) - </text_editor> - </panel> - <panel name="licenses_panel"> - <text_editor name="credits_editor"> - 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion + + + + + + +No es frecuente el pensamiento que puede hacer que lo que hasta ahora no existía de pronto salte a la vista. Sí es frecuente -y engañoso- gritar 'A mí se me podía haber ocurrido eso', pero el hecho es que no se hizo, un hecho muy significativo y revelador. + -- Douglas Adams + </text_editor> + </panel> + <panel label="Licencias" 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 +81,7 @@ All rights reserved. See licenses.txt for details. Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> - </panel> -</tab_container> - <string name="you_are_at"> - Está en [POSITION] - </string> + </text_editor> + </panel> + </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml index 7575df4b98..bcb970c79d 100644 --- a/indra/newview/skins/default/xui/es/floater_about_land.xml +++ b/indra/newview/skins/default/xui/es/floater_about_land.xml @@ -1,7 +1,59 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floaterland" title="ACERCA DEL TERRENO"> + <floater.string name="Minutes"> + [MINUTES] minutos + </floater.string> + <floater.string name="Minute"> + minuto + </floater.string> + <floater.string name="Seconds"> + [SECONDS] segundos + </floater.string> + <floater.string name="Remaining"> + restantes + </floater.string> <tab_container name="landtab"> - <panel label="General" name="land_general_panel"> + <panel label="GENERAL" name="land_general_panel"> + <panel.string name="new users only"> + Sólo usuarios nuevos + </panel.string> + <panel.string name="anyone"> + Cualquiera + </panel.string> + <panel.string name="area_text"> + Superficie + </panel.string> + <panel.string name="area_size_text"> + [AREA] m² + </panel.string> + <panel.string name="auction_id_text"> + ID de la subasta: [ID] + </panel.string> + <panel.string name="need_tier_to_modify"> + Debe aprobar su compra para modificar este terreno. + </panel.string> + <panel.string name="group_owned_text"> + (Propiedad del grupo) + </panel.string> + <panel.string name="profile_text"> + Perfil... + </panel.string> + <panel.string name="info_text"> + Información... + </panel.string> + <panel.string name="public_text"> + (público) + </panel.string> + <panel.string name="none_text"> + (ninguno) + </panel.string> + <panel.string name="sale_pending_text"> + (Venta pendiente) + </panel.string> + <panel.string name="no_selection_text"> + No se ha seleccionado una parcela. +Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver sus características. + </panel.string> <text name="Name:"> Nombre: </text> @@ -26,10 +78,12 @@ <text name="OwnerText"> Leyla Linden </text> - <button label="Perfil..." label_selected="Perfil..." name="Profile..."/> <text name="Group:"> Grupo: </text> + <text name="GroupText"> + Leyla Linden + </text> <button label="Configurar..." label_selected="Configurar..." name="Set..."/> <check_box label="Permitir transferir al grupo" name="check deed" tool_tip="Un oficial del grupo puede transferir este terreno al grupo. El terreno será apoyado por el grupo en sus asignaciones de terreno."/> <button label="Transferir..." label_selected="Transferir..." name="Deed..." tool_tip="Sólo si es usted un oficial del grupo seleccionado puede transferir terreno."/> @@ -47,13 +101,13 @@ <text name="For sale to"> En venta a: [BUYER] </text> - <text width="216" name="Sell with landowners objects in parcel."> + <text name="Sell with landowners objects in parcel." width="216"> Los objetos se incluyen en la venta. </text> - <text width="216" name="Selling with no objects in parcel."> + <text name="Selling with no objects in parcel." width="216"> Los objetos no se incluyen en la venta. </text> - <button font="SansSerifSmall" bottom="-245" left="275" width="165" label="Cancelar la venta del terreno" label_selected="Cancelar la venta del terreno" name="Cancel Land Sale"/> + <button bottom="-245" font="SansSerifSmall" label="Cancelar la venta del terreno" label_selected="Cancelar la venta del terreno" left="275" name="Cancel Land Sale" width="165"/> <text name="Claimed:"> Reclamada: </text> @@ -73,59 +127,29 @@ 0 </text> <button label="Comprar terreno..." label_selected="Comprar terreno..." left="130" name="Buy Land..." width="125"/> + <button label="Información del script" name="Scripts..."/> <button label="Comprar para el grupo..." label_selected="Comprar para el grupo..." name="Buy For Group..."/> - <button label="Comprar un pase..." label_selected="Comprar un pase..." left="130" width="125" name="Buy Pass..." tool_tip="Un pase le da acceso temporal a este terreno."/> + <button label="Comprar un pase..." label_selected="Comprar un pase..." left="130" name="Buy Pass..." tool_tip="Un pase le da acceso temporal a este terreno." width="125"/> <button label="Abandonar el terreno..." label_selected="Abandonar el terreno..." name="Abandon Land..."/> <button label="Reclamar el terreno..." label_selected="Reclamar el terreno..." name="Reclaim Land..."/> <button label="Venta Linden..." label_selected="Venta Linden..." name="Linden Sale..." tool_tip="El terreno debe estar en propiedad, con contenido, y no estar en subasta."/> - <panel.string name="new users only"> - Sólo usuarios nuevos - </panel.string> - <panel.string name="anyone"> - Cualquiera - </panel.string> - <panel.string name="area_text"> - Superficie - </panel.string> - <panel.string name="area_size_text"> - [AREA] m² - </panel.string> - <panel.string name="auction_id_text"> - ID de la subasta: [ID] - </panel.string> - <panel.string name="need_tier_to_modify"> - Debe aprobar su compra para modificar este terreno. - </panel.string> - <panel.string name="group_owned_text"> - (Propiedad del grupo) - </panel.string> - <panel.string name="profile_text"> - Perfil... - </panel.string> - <panel.string name="info_text"> - Información... - </panel.string> - <panel.string name="public_text"> - (público) + </panel> + <panel label="CONTRATO" name="land_covenant_panel"> + <panel.string name="can_resell"> + El terreno comprado en esta región se podrá revender. </panel.string> - <panel.string name="none_text"> - (ninguno) + <panel.string name="can_not_resell"> + El terreno comprado en esta región no se podrá revender. </panel.string> - <panel.string name="sale_pending_text"> - (Venta pendiente) + <panel.string name="can_change"> + El terreno comprado en esta región se podrá unir o dividir. </panel.string> - <panel.string name="no_selection_text"> - No se ha seleccionado una parcela. -Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver sus características. + <panel.string name="can_not_change"> + El terreno comprado en esta región no se podrá unir o dividir. </panel.string> - </panel> - <panel label="Contrato" name="land_covenant_panel"> <text name="estate_section_lbl"> Estado: </text> - <text name="estate_name_lbl"> - Nombre: - </text> <text name="estate_name_text"> mainland </text> @@ -144,9 +168,6 @@ Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver s <text name="region_section_lbl"> Región: </text> - <text name="region_name_lbl"> - Nombre: - </text> <text name="region_name_text"> leyla </text> @@ -174,121 +195,82 @@ Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver s <text name="changeable_clause"> El terreno de esta región no se podrá unir/dividir. </text> - <panel.string name="can_resell"> - El terreno comprado en esta región se podrá revender. - </panel.string> - <panel.string name="can_not_resell"> - El terreno comprado en esta región no se podrá revender. - </panel.string> - <panel.string name="can_change"> - El terreno comprado en esta región se podrá unir o dividir. + </panel> + <panel label="OBJETOS" name="land_objects_panel"> + <panel.string name="objects_available_text"> + [COUNT] de un máximo de [MAX] ([AVAILABLE] disponibles) </panel.string> - <panel.string name="can_not_change"> - El terreno comprado en esta región no se podrá unir o dividir. + <panel.string name="objects_deleted_text"> + [COUNT] de un máximo de [MAX] ([DELETED] se borrarán) </panel.string> - </panel> - <panel label="Objetos" name="land_objects_panel"> <text name="parcel_object_bonus"> Plus de objetos en la región: [BONUS] </text> <text name="Simulator primitive usage:"> - Simulador de uso de prims: + Uso de primitivas: </text> - <text name="objects_available" left="204" width="250" > + <text left="204" name="objects_available" width="250"> [COUNT] de un máximo de [MAX] ([AVAILABLE] disponibles) </text> - <panel.string name="objects_available_text"> - [COUNT] de un máximo de [MAX] ([AVAILABLE] disponibles) - </panel.string> - <panel.string name="objects_deleted_text"> - [COUNT] de un máximo de [MAX] ([DELETED] se borrarán) - </panel.string> <text name="Primitives parcel supports:" width="200"> Prims que admite la parcela: </text> - <text name="object_contrib_text" left="204" width="152"> + <text left="204" name="object_contrib_text" width="152"> [COUNT] </text> <text name="Primitives on parcel:"> Prims en la parcela: </text> - <text name="total_objects_text" left="204" width="48"> + <text left="204" 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"> Del propietario de la parcela: </text> - <text name="owner_objects_text" left="204" width="48"> + <text left="204" name="owner_objects_text" width="48"> [COUNT] </text> <button label="Mostrar" label_selected="Mostrar" name="ShowOwner" right="-135" width="60"/> - <button label="Devolver..." label_selected="Devolver..." name="ReturnOwner..." tool_tip="Devolver los objetos a sus propietarios." right="-10" width="119"/> - <text name="Set to group:" left="14" width="180"> + <button label="Devolver..." label_selected="Devolver..." name="ReturnOwner..." right="-10" tool_tip="Devolver los objetos a sus propietarios." width="119"/> + <text left="14" name="Set to group:" width="180"> Del grupo: </text> - <text name="group_objects_text" left="204" width="48"> + <text left="204" name="group_objects_text" width="48"> [COUNT] </text> <button label="Mostrar" label_selected="Mostrar" name="ShowGroup" right="-135" width="60"/> - <button label="Devolver..." label_selected="Devolver..." name="ReturnGroup..." tool_tip="Devolver los objetos a sus propietarios." right="-10" width="119"/> - <text name="Owned by others:" left="14" width="128"> + <button label="Devolver..." label_selected="Devolver..." name="ReturnGroup..." right="-10" tool_tip="Devolver los objetos a sus propietarios." width="119"/> + <text left="14" name="Owned by others:" width="128"> Propiedad de otros: </text> - <text name="other_objects_text" left="204" width="48"> + <text left="204" name="other_objects_text" width="48"> [COUNT] </text> <button label="Mostrar" label_selected="Mostrar" name="ShowOther" right="-135" width="60"/> - <button label="Devolver..." label_selected="Devolver..." name="ReturnOther..." tool_tip="Devolver los objetos a sus propietarios." right="-10" width="119"/> - <text name="Selected / sat upon:" left="14" width="193" > + <button label="Devolver..." label_selected="Devolver..." name="ReturnOther..." right="-10" tool_tip="Devolver los objetos a sus propietarios." width="119"/> + <text left="14" name="Selected / sat upon:" width="193"> Seleccionados / con gente sentada: </text> - <text name="selected_objects_text" left="204" width="48"> + <text left="204" name="selected_objects_text" width="48"> [COUNT] </text> - <text name="Autoreturn" left="4" width="412" > - Autodevolución de objetos a otros residentes (minutos; 0 la desactiva): + <text left="4" name="Autoreturn" width="412"> + Devolución automática de objetos de otros Residentes (minutos, 0 para desactivarla): </text> - <line_editor name="clean other time" right="-20" /> + <line_editor name="clean other time" right="-20"/> <text name="Object Owners:" width="150"> Propietarios de los objetos: </text> - <button label="Actualizar la lista" label_selected="Actualizar la lista" name="Refresh List" left="158"/> - <button label="Devolver los objetos..." label_selected="Devolver los objetos..." name="Return objects..." left="270" width="164"/> + <button label="Actualizar la lista" label_selected="Actualizar la lista" left="158" name="Refresh List" tool_tip="Refresh Object List"/> + <button label="Devolver los objetos..." label_selected="Devolver los objetos..." left="270" name="Return objects..." width="164"/> <name_list name="owner list"> - <column label="Tipo" name="type"/> - <column label="Nombre" name="name"/> - <column label="Número" name="count"/> - <column label="Más recientes" name="mostrecent"/> + <name_list.columns label="Tipo" name="type"/> + <name_list.columns label="Nombre" name="name"/> + <name_list.columns label="Número" name="count"/> + <name_list.columns label="Más recientes" name="mostrecent"/> </name_list> </panel> - <panel label="Opciones" name="land_options_panel"> - <text name="allow_label"> - Permitir a otros residentes: - </text> - <check_box label="Editar el terreno" name="edit land check" tool_tip="Si se marca, cualquiera podrá modificar su terreno. Mejor dejarlo desmarcado, pues usted siempre puede modificar su terreno."/> - <check_box label="Crear hitos" name="check landmark"/> - <check_box label="Volar" name="check fly" tool_tip="Si se marca, los residentes podrán volar en su terreno. Si no, sólo podrán volar al cruzarlo o hasta que aterricen en él."/> - <text name="allow_label2" left="162" > - Crear objetos: - </text> - <check_box label="Todos los residentes" name="edit objects check" left="255" /> - <check_box label="El grupo" name="edit group objects check" left="385" /> - <text name="allow_label3" left="162"> - Dejar objetos: - </text> - <check_box label="Todos los residentes" name="all object entry check" left="255"/> - <check_box label="El grupo" name="group object entry check" left="385"/> - <text name="allow_label4" left="162"> - Ejecutar scripts: - </text> - <check_box label="Todos los residentes" name="check other scripts" left="255"/> - <check_box label="El grupo" name="check group scripts" left="385"/> - <text name="land_options_label"> - Opciones del terreno: - </text> - <check_box label="Seguro (sin daño)" name="check safe" tool_tip="Si se marca, convierte el terreno en 'seguro', desactivando el daño en combate. Si no, se activa el daño en combate."/> - <check_box label="Sin 'empujones'" name="PushRestrictCheck" tool_tip="Previene scripts que empujen. Marcando esta opción prevendrá que en su terreno haya comportamientos destructivos."/> - <check_box label="Mostrar la parcela en Buscar (30 L$/semana) en" name="ShowDirectoryCheck" tool_tip="Let people see this parcel in search results"/> + <panel label="OPCIONES" name="land_options_panel"> <panel.string name="search_enabled_tooltip"> Permitir que aparezca esta parcela en los resultados de la búsqueda </panel.string> @@ -299,62 +281,6 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda. <panel.string name="search_disabled_permissions_tooltip"> Esta opción no esta activada porque usted no puede modificar las opciones de la parcela. </panel.string> - <combo_box name="land category with adult" left="282" width="140"> - <combo_box.item name="item0" label="Cualquier categoría" - /> - <combo_box.item name="item1" label="Localización Linden" - /> - <combo_box.item name="item2" label="'Adult'" - /> - <combo_box.item name="item3" label="Arte y Cultura" - /> - <combo_box.item name="item4" label="Negocios" - /> - <combo_box.item name="item5" label="Educativo" - /> - <combo_box.item name="item6" label="Juegos de azar" - /> - <combo_box.item name="item7" label="Entretenimiento" - /> - <combo_box.item name="item8" label="Para recién llegados" - /> - <combo_box.item name="item9" label="Parques y Naturaleza" - /> - <combo_box.item name="item10" label="Residencial" - /> - <combo_box.item name="item11" label="Compras" - /> - <combo_box.item name="item12" label="Otra" - /> - </combo_box> - <combo_box name="land category" left="282" width="140"> - <combo_box.item name="item0" label="Cualquier categoría" - /> - <combo_box.item name="item1" label="Localización Linden" - /> - <combo_box.item name="item3" label="Arte y Cultura" - /> - <combo_box.item name="item4" label="Negocios" - /> - <combo_box.item name="item5" label="Educativo" - /> - <combo_box.item name="item6" label="Juegos de azar" - /> - <combo_box.item name="item7" label="Entretenimiento" - /> - <combo_box.item name="item8" label="Para recién llegados" - /> - <combo_box.item name="item9" label="Parques y Naturaleza" - /> - <combo_box.item name="item10" label="Residencial" - /> - <combo_box.item name="item11" label="Compras" - /> - <combo_box.item name="item12" label="Otra" - /> - </combo_box> - <button label="?" label_selected="?" name="?" left="427"/> - <check_box label="Contenido 'Mature'" name="MatureCheck" tool_tip=""/> <panel.string name="mature_check_mature"> Contenido 'Mature' </panel.string> @@ -367,6 +293,71 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda. <panel.string name="mature_check_adult_tooltip"> La información o el contenido de su parcela se considera 'Adult'. </panel.string> + <panel.string name="landing_point_none"> + (ninguno) + </panel.string> + <panel.string name="push_restrict_text"> + Sin 'empujones' + </panel.string> + <panel.string name="push_restrict_region_text"> + Sin 'empujones' (prevalece lo marcado en la región) + </panel.string> + <text name="allow_label"> + Permitir a otros Residentes: + </text> + <check_box label="Editar el terreno" name="edit land check" tool_tip="Si se marca, cualquiera podrá modificar su terreno. Mejor dejarlo desmarcado, pues usted siempre puede modificar su terreno."/> + <check_box label="Volar" name="check fly" tool_tip="Si se marca, los residentes podrán volar en su terreno. Si no, sólo podrán volar al cruzarlo o hasta que aterricen en él."/> + <text left="162" name="allow_label2"> + Crear objetos: + </text> + <check_box label="Todos los residentes" left="255" name="edit objects check"/> + <check_box label="El grupo" left="385" name="edit group objects check"/> + <text left="162" name="allow_label3"> + Dejar objetos: + </text> + <check_box label="Todos los residentes" left="255" name="all object entry check"/> + <check_box label="El grupo" left="385" name="group object entry check"/> + <text left="162" name="allow_label4"> + Ejecutar scripts: + </text> + <check_box label="Todos los residentes" left="255" name="check other scripts"/> + <check_box label="El grupo" left="385" name="check group scripts"/> + <text name="land_options_label"> + Opciones del terreno: + </text> + <check_box label="Seguro (sin daño)" name="check safe" tool_tip="Si se marca, convierte el terreno en 'seguro', desactivando el daño en combate. Si no, se activa el daño en combate."/> + <check_box label="Sin 'empujones'" name="PushRestrictCheck" tool_tip="Previene scripts que empujen. Marcando esta opción prevendrá que en su terreno haya comportamientos destructivos."/> + <check_box label="Mostrar el sitio en la búsqueda (30 L$/semana)" name="ShowDirectoryCheck" tool_tip="Let people see this parcel in search results"/> + <combo_box left="282" name="land category with adult" width="140"> + <combo_box.item label="Cualquier categoría" name="item0"/> + <combo_box.item label="Localización Linden" name="item1"/> + <combo_box.item label="'Adult'" name="item2"/> + <combo_box.item label="Arte y Cultura" name="item3"/> + <combo_box.item label="Negocios" name="item4"/> + <combo_box.item label="Educativo" name="item5"/> + <combo_box.item label="Juegos de azar" name="item6"/> + <combo_box.item label="Entretenimiento" name="item7"/> + <combo_box.item label="Para recién llegados" name="item8"/> + <combo_box.item label="Parques y Naturaleza" name="item9"/> + <combo_box.item label="Residencial" name="item10"/> + <combo_box.item label="Compras" name="item11"/> + <combo_box.item label="Otra" name="item12"/> + </combo_box> + <combo_box left="282" name="land category" width="140"> + <combo_box.item label="Cualquier categoría" name="item0"/> + <combo_box.item label="Localización Linden" name="item1"/> + <combo_box.item label="Arte y Cultura" name="item3"/> + <combo_box.item label="Negocios" name="item4"/> + <combo_box.item label="Educativo" name="item5"/> + <combo_box.item label="Juegos de azar" name="item6"/> + <combo_box.item label="Entretenimiento" name="item7"/> + <combo_box.item label="Para recién llegados" name="item8"/> + <combo_box.item label="Parques y Naturaleza" name="item9"/> + <combo_box.item label="Residencial" name="item10"/> + <combo_box.item label="Compras" name="item11"/> + <combo_box.item label="Otra" name="item12"/> + </combo_box> + <check_box label="Contenido 'Mature'" name="MatureCheck" tool_tip=""/> <text name="Snapshot:"> Foto: </text> @@ -374,61 +365,42 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda. <text name="landing_point"> Punto de llegada: [LANDING] </text> - <panel.string name="landing_point_none"> - (ninguno) - </panel.string> <button label="Definir" label_selected="Definir" name="Set" tool_tip="Configura el punto de llegada donde aparecerán los visitantes. Configúrelo a la posición de su avatar dentro de esta parcela."/> <button label="Borrar" label_selected="Borrar" name="Clear" tool_tip="Borrar el punto de llegada."/> <text name="Teleport Routing: "> Punto de teleporte: </text> <combo_box name="landing type" tool_tip="Punto de teleporte: defina cómo manejar en su terreno los teleportes."> - <combo_box.item name="Blocked" label="Bloqueado" - /> - <combo_box.item name="LandingPoint" label="Punto de llegada" - /> - <combo_box.item name="Anywhere" label="Cualquiera" - /> + <combo_box.item label="Bloqueado" name="Blocked"/> + <combo_box.item label="Punto de llegada" name="LandingPoint"/> + <combo_box.item label="Cualquiera" name="Anywhere"/> </combo_box> - <panel.string name="push_restrict_text"> - Sin 'empujones' - </panel.string> - <panel.string name="push_restrict_region_text"> - Sin 'empujones' (prevalece lo marcado en la región) - </panel.string> </panel> - <panel label="Media" name="land_media_panel"> + <panel label="MEDIA" name="land_media_panel"> <text name="with media:" width="85"> Tipo de media: </text> - <combo_box name="media type" tool_tip="Especifique si la URL es una película, una web, u otro media" left="97" /> + <combo_box left="97" name="media type" tool_tip="Especifique si la URL es una película, una web, u otro media"/> <text name="at URL:" width="85"> - URL del media: + Página inicial: </text> <line_editor left="97" name="media_url"/> <button label="Definir..." label_selected="Definir..." name="set_media_url"/> + <check_box label="Ocultar la URL del media" left="97" name="hide_media_url" tool_tip="Marcando esta opción esconderá en la información de esta parcela -a quien no esté autorizado a verla- la URL del media. Note que esto no está disponible para HTML."/> <text name="Description:"> Descripción: </text> - <line_editor name="url_description" tool_tip="Texto a mostrar cerca del botón play/cargar" left="97" /> + <line_editor left="97" name="url_description" tool_tip="Texto a mostrar cerca del botón play/cargar"/> <text name="Media texture:"> Cambiar la textura: </text> - <texture_picker label="" name="media texture" tool_tip="Pulse para elegir una imagen" left="97" /> + <texture_picker label="" left="97" name="media texture" tool_tip="Pulse para elegir una imagen"/> <text name="replace_texture_help" width="285"> - (Los objetos que usen esta textura mostrarán la -película o la web cuando pulse la flecha de play.) - </text> - <text name="Options:"> - Opciones de -los media: + Cuando pulses la flecha 'play', los objetos que usen esta textura mostrarán la película o la página web. Selecciona la miniatura para elegir una textura distinta. </text> - <check_box left="97" label="Escala automática" name="media_auto_scale" tool_tip="Marcando esta opción, se ajustará el tamaño del contenido automáticamente. Puede ser ligeramente más lento y con menor calidad visual, pero no tendrá que ajustar ni alinear ninguna textura."/> - <check_box label="Media en bucle" name="media_loop" tool_tip="Ejecuta el media en bucle: cuando acaba su ejecución, vuelve a empezar."/> - <check_box left="97" label="Ocultar la URL del media" name="hide_media_url" tool_tip="Marcando esta opción esconderá en la información de esta parcela -a quien no esté autorizado a verla- la URL del media. Note que esto no está disponible para HTML."/> - <check_box label="Ocultar la URL de la música" name="hide_music_url" tool_tip="Marcando esta opción esconderá en la información de esta parcela -a quien no esté autorizado a verla- la URL de la música"/> - <text name="media_size" tool_tip="Tamaño en el que mostrar las web (marque 0 para por defecto)." left="102" width="120"> + <check_box label="Escala automática" left="97" name="media_auto_scale" tool_tip="Marcando esta opción, se ajustará el tamaño del contenido automáticamente. Puede ser ligeramente más lento y con menor calidad visual, pero no tendrá que ajustar ni alinear ninguna textura."/> + <text left="102" name="media_size" tool_tip="Tamaño en el que mostrar las web (marque 0 para por defecto)." width="120"> Tamaño del media: </text> <spinner left_delta="104" name="media_size_width" tool_tip="Tamaño en el que mostrar las web (marque 0 para por defecto)."/> @@ -436,58 +408,45 @@ los media: <text name="pixels"> píxeles </text> - <text name="MusicURL:" bottom_delta="-28" > - URL de la -música: - </text> - <line_editor bottom_delta="-12" left="97" name="music_url"/> - <text name="Sound:"> - Sonido: - </text> - <check_box left="97" label="Limitar los gestos y los sonidos de objetos a esta parcela" name="check sound local"/> - <button label="?" label_selected="?" name="?" left="424"/> - <text name="Voice settings:"> - Voz: + <text name="Options:"> + Opciones de +los media: </text> - <check_box left="97" label="Activar la voz" name="parcel_enable_voice_channel"/> - <check_box left="97" label="Activar la voz (establecido por el Estado)" name="parcel_enable_voice_channel_is_estate_disabled"/> - <check_box left="117" label="Limitar la voz a esta parcela" name="parcel_enable_voice_channel_parcel"/> + <check_box label="Media en bucle" name="media_loop" tool_tip="Ejecuta el media en bucle: cuando acaba su ejecución, vuelve a empezar."/> </panel> - <panel label="Acceso" name="land_access_panel"> + <panel label="SONIDO" name="land_audio_panel"> + <check_box label="Ocultar la URL" name="hide_music_url" tool_tip="Marcando esta opción se ocultará la URL de la música a quien no esté autorizado a ver la información de esta parcela."/> + <check_box label="Activar la voz" name="parcel_enable_voice_channel"/> + <check_box label="Autorizar la voz (establecido por el Estado)" name="parcel_enable_voice_channel_is_estate_disabled"/> + <check_box label="Limitar la voz a esta parcela" name="parcel_enable_voice_channel_local"/> + </panel> + <panel label="ACCESO" name="land_access_panel"> + <panel.string name="access_estate_defined"> + (Definido por el Estado) + </panel.string> + <panel.string name="estate_override"> + Una o más de esta opciones está configurada a nivel del estado + </panel.string> <text name="Limit access to this parcel to:"> Acceso a esta parcela </text> - <check_box label="Permitir el acceso público" name="public_access"/> + <check_box label="Permitir el acceso público [MATURITY]" name="public_access"/> <text name="Only Allow"> - Impedir el acceso a: + Restringir el acceso a residentes verificados con: </text> - <check_box label="Residentes que no hayan dado a Linden Lab información de su forma de pago" name="limit_payment" tool_tip="Impedir el acceso a los residentes no identificados."/> - <check_box label="Residentes de los que no se ha verificado si son adultos" name="limit_age_verified" tool_tip="Residentes que no hayan verificado su edad. Para más información, vea support.secondlife.com"/> - <panel.string name="estate_override"> - Una o más de esta opciones está configurada a nivel del estado - </panel.string> + <check_box label="Información de pago aportada [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Expulsa a los Residentes no identificados."/> + <check_box label="Verificación de edad [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Expulsa a los Residentes que no hayan verificado su edad. Para más información, véase [SUPPORT_SITE]."/> <check_box label="Acceso permitido al grupo: [GROUP]" name="GroupCheck" tool_tip="Elija el grupo en la pestaña General."/> <check_box label="Vender pases a:" name="PassCheck" tool_tip="Permitir acceso temporal a esta parcela"/> <combo_box name="pass_combo"> - <combo_box.item name="Anyone" label="Cualquiera" - /> - <combo_box.item name="Group" label="Grupo" - /> + <combo_box.item label="Cualquiera" name="Anyone"/> + <combo_box.item label="Grupo" name="Group"/> </combo_box> <spinner label="Precio en L$:" name="PriceSpin"/> <spinner label="Horas de acceso:" name="HoursSpin"/> - <text label="Permitir siempre" name="AllowedText"> - Residentes autorizados - </text> - <name_list name="AccessList" tool_tip="([LISTED] listados, el máx. es de [MAX])"/> - <button label="Añadir..." label_selected="Añadir..." name="add_allowed"/> - <button label="Quitar" label_selected="Quitar" name="remove_allowed"/> - <text label="Prohibir el acceso" name="BanCheck"> - Residentes con el acceso prohibido - </text> - <name_list name="BannedList" tool_tip="([LISTED] listados, el máx. es de [MAX])"/> - <button label="Añadir..." label_selected="Añadir..." name="add_banned"/> - <button label="Quitar" label_selected="Quitar" name="remove_banned"/> + <panel name="Allowed_layout_panel"> + <name_list name="AccessList" tool_tip="([LISTED] listados de un máx. de [MAX])"/> + </panel> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_activeim.xml b/indra/newview/skins/default/xui/es/floater_activeim.xml new file mode 100644 index 0000000000..988786c1ae --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_activeim.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_activeim" title="MI activo"/> diff --git a/indra/newview/skins/default/xui/es/floater_animation_preview.xml b/indra/newview/skins/default/xui/es/floater_animation_preview.xml index 5a03aa6370..2fc18e55f6 100644 --- a/indra/newview/skins/default/xui/es/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/es/floater_animation_preview.xml @@ -1,70 +1,180 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Animation Preview" title=""> + <floater.string name="failed_to_initialize"> + Fallo al iniciar el movimiento + </floater.string> + <floater.string name="anim_too_long"> + El archivo de la animación dura [LENGTH] segundos. + +La duración máxima de una animación es de [MAX_LENGTH] segundos. + </floater.string> + <floater.string name="failed_file_read"> + No se ha podido leer el archivo de la animación. + +[STATUS] + </floater.string> + <floater.string name="E_ST_OK"> + OK + </floater.string> + <floater.string name="E_ST_EOF"> + Fin prematuro del archivo. + </floater.string> + <floater.string name="E_ST_NO_CONSTRAINT"> + No se puede leer la definición de la restricción. + </floater.string> + <floater.string name="E_ST_NO_FILE"> + No se puede abrir el archivo BVH. + </floater.string> + <floater.string name="E_ST_NO_HIER"> + 'HIERARCHY header' inválido. + </floater.string> + <floater.string name="E_ST_NO_JOINT"> + No se pueden encontrar 'ROOT' o 'JOINT'. + </floater.string> + <floater.string name="E_ST_NO_NAME"> + No se puede obtener el nombre 'JOINT'. + </floater.string> + <floater.string name="E_ST_NO_OFFSET"> + No se puede encontrar 'OFFSET'. + </floater.string> + <floater.string name="E_ST_NO_CHANNELS"> + No se puede encontrar 'CHANNELS'. + </floater.string> + <floater.string name="E_ST_NO_ROTATION"> + No se puede conseguir el orden de la rotación. + </floater.string> + <floater.string name="E_ST_NO_AXIS"> + No se puede encontrar el eje de rotación. + </floater.string> + <floater.string name="E_ST_NO_MOTION"> + No se puede encontrar 'MOTION'. + </floater.string> + <floater.string name="E_ST_NO_FRAMES"> + No se puede conseguir el número de frames. + </floater.string> + <floater.string name="E_ST_NO_FRAME_TIME"> + No se puede conseguir el tiempo del frame. + </floater.string> + <floater.string name="E_ST_NO_POS"> + No se pueden conseguir los valores de la posición. + </floater.string> + <floater.string name="E_ST_NO_ROT"> + No se pueden conseguir los valores de la rotación. + </floater.string> + <floater.string name="E_ST_NO_XLT_FILE"> + No se puede abrir el archivo de traducción. + </floater.string> + <floater.string name="E_ST_NO_XLT_HEADER"> + No se puede leer el encabezamiento de la traducción. + </floater.string> + <floater.string name="E_ST_NO_XLT_NAME"> + No se puede leer la traducción de los nombres. + </floater.string> + <floater.string name="E_ST_NO_XLT_IGNORE"> + No se puede leer la traducción de los valores ignorados. + </floater.string> + <floater.string name="E_ST_NO_XLT_RELATIVE"> + No se puede leer el valor relativo de la traducción. + </floater.string> + <floater.string name="E_ST_NO_XLT_OUTNAME"> + No se puede leer la traducción del valor 'outname' + </floater.string> + <floater.string name="E_ST_NO_XLT_MATRIX"> + No se puede leer la matriz de traducciones. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGECHILD"> + No se puede conseguir el nombre 'mergechild'. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGEPARENT"> + No se puede conseguir el nombre 'mergeparent'. + </floater.string> + <floater.string name="E_ST_NO_XLT_PRIORITY"> + No se puede obtener el valor prioritario. + </floater.string> + <floater.string name="E_ST_NO_XLT_LOOP"> + No se puede conseguir el valor del bucle. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEIN"> + No se pueden conseguir los valores 'easeIn'. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEOUT"> + No se pueden conseguir los valores 'easeOut'. + </floater.string> + <floater.string name="E_ST_NO_XLT_HAND"> + No se puede conseguir el valor de 'hand morph'. + </floater.string> + <floater.string name="E_ST_NO_XLT_EMOTE"> + No se puede leer el nombre del gesto. + </floater.string> + <floater.string name="E_ST_BAD_ROOT"> + Nombre incorrecto de 'root joint', usa "hip". + </floater.string> <text name="name_label"> Nombre: </text> <text name="description_label"> Descripción: </text> - <spinner label_width="72" width="110" label="Prioridad:" name="priority" tool_tip="Controle qué otras animaciones pueden ser anuladas por ésta."/> - <check_box left="8" label="Bucle:" name="loop_check" tool_tip="Haga esta animación en bucle."/> - <spinner label_width="65" left="65" width="116" label="Empieza(%)" name="loop_in_point" tool_tip="Indique el punto en el que la animación empieza el bucle."/> - <spinner label_width="50" left="185" label="Acaba(%)" name="loop_out_point" tool_tip="Indique el punto en el que la animación acaba el bucle."/> + <spinner label="Prioridad:" label_width="72" name="priority" tool_tip="Controla qué otras animaciones pueden ser anuladas por ésta" width="110"/> + <check_box label="Bucle:" left="8" name="loop_check" tool_tip="Hace esta animación en bucle"/> + <spinner label="Empieza(%)" label_width="65" left="65" name="loop_in_point" tool_tip="Indica el punto en el que la animación vuelve a empezar" width="116"/> + <spinner label="Acaba(%)" label_width="50" left="185" name="loop_out_point" tool_tip="Indica el punto en el que la animación acaba el bucle"/> <text name="hand_label"> Posición de las manos </text> - <combo_box left_delta="120" width="164" name="hand_pose_combo" tool_tip="Control de lo que hacen las manos durante la animación."> - <combo_box.item name="Spread" label="Extendidas"/> - <combo_box.item name="Relaxed" label="Relajadas"/> - <combo_box.item name="PointBoth" label="Ambas señalan"/> - <combo_box.item name="Fist" label="Puño"/> - <combo_box.item name="RelaxedLeft" label="La izquierda relajada"/> - <combo_box.item name="PointLeft" label="La izquierda señala"/> - <combo_box.item name="FistLeft" label="Puño en la izquierda"/> - <combo_box.item name="RelaxedRight" label="La derecha relajada"/> - <combo_box.item name="PointRight" label="La derecha señala"/> - <combo_box.item name="FistRight" label="Puño en la derecha"/> - <combo_box.item name="SaluteRight" label="La derecha saluda"/> - <combo_box.item name="Typing" label="Escribiendo"/> - <combo_box.item name="PeaceRight" label="Paz en la derecha"/> + <combo_box left_delta="120" name="hand_pose_combo" tool_tip="Controla qué hacen las manos durante la animación" width="164"> + <combo_box.item label="Extendidas" name="Spread"/> + <combo_box.item label="Relajadas" name="Relaxed"/> + <combo_box.item label="Ambas señalan" name="PointBoth"/> + <combo_box.item label="Puño" name="Fist"/> + <combo_box.item label="La izq. relajada" name="RelaxedLeft"/> + <combo_box.item label="La izq. señala" name="PointLeft"/> + <combo_box.item label="Puño izq." name="FistLeft"/> + <combo_box.item label="La der. relajada" name="RelaxedRight"/> + <combo_box.item label="La der. señala" name="PointRight"/> + <combo_box.item label="Puño der." name="FistRight"/> + <combo_box.item label="La derecha saluda" name="SaluteRight"/> + <combo_box.item label="Escribiendo" name="Typing"/> + <combo_box.item label="'Paz' en la der." name="PeaceRight"/> </combo_box> <text name="emote_label"> Expresión </text> - <combo_box left_delta="120" width="164" name="emote_combo" tool_tip="Controle qué hace la cara durante la animación."> - <combo_box.item name="[None]" label="Nada]"/> - <combo_box.item name="Aaaaah" label="Aaaaah"/> - <combo_box.item name="Afraid" label="Con miedo"/> - <combo_box.item name="Angry" label="Enfadada"/> - <combo_box.item name="BigSmile" label="Gran sonrisa"/> - <combo_box.item name="Bored" label="Aburrida"/> - <combo_box.item name="Cry" label="Llorar"/> - <combo_box.item name="Disdain" label="Desdén"/> - <combo_box.item name="Embarrassed" label="Avergonzada"/> - <combo_box.item name="Frown" label="Fruncir el ceño"/> - <combo_box.item name="Kiss" label="Besar"/> - <combo_box.item name="Laugh" label="Reír"/> - <combo_box.item name="Plllppt" label="Sacar la lengua"/> - <combo_box.item name="Repulsed" label="Rechazo"/> - <combo_box.item name="Sad" label="Triste"/> - <combo_box.item name="Shrug" label="Encogerse de hombros"/> - <combo_box.item name="Smile" label="Sonrisa"/> - <combo_box.item name="Surprise" label="Sorpresa"/> - <combo_box.item name="Wink" label="Guiño"/> - <combo_box.item name="Worry" label="Preocupación"/> + <combo_box left_delta="120" name="emote_combo" tool_tip="Controla qué hace la cara durante la animación" width="164"> + <combo_box.item label="(ninguno)" name="[None]"/> + <combo_box.item label="Aaaaah" name="Aaaaah"/> + <combo_box.item label="Con miedo" name="Afraid"/> + <combo_box.item label="Enfado" name="Angry"/> + <combo_box.item label="Gran sonrisa" name="BigSmile"/> + <combo_box.item label="Aburrimiento" name="Bored"/> + <combo_box.item label="Llorar" name="Cry"/> + <combo_box.item label="Desdén" name="Disdain"/> + <combo_box.item label="Avergonzarse" name="Embarrassed"/> + <combo_box.item label="Fruncir el ceño" name="Frown"/> + <combo_box.item label="Beso" name="Kiss"/> + <combo_box.item label="Reír" name="Laugh"/> + <combo_box.item label="Sacar la lengua" name="Plllppt"/> + <combo_box.item label="Rechazo" name="Repulsed"/> + <combo_box.item label="Triste" name="Sad"/> + <combo_box.item label="Encogerse de hombros" name="Shrug"/> + <combo_box.item label="Sonrisa" name="Smile"/> + <combo_box.item label="Sorpresa" name="Surprise"/> + <combo_box.item label="Guiño" name="Wink"/> + <combo_box.item label="Preocupación" name="Worry"/> </combo_box> <text name="preview_label" width="250"> Vista previa mientras </text> - <combo_box left_delta="120" width="130" name="preview_base_anim" tool_tip="Compruebe cómo se comporta su animación a la vez que el avatar realiza acciones comunes."> - <combo_box.item name="Standing" label="Estar de pie"/> - <combo_box.item name="Walking" label="Caminar"/> - <combo_box.item name="Sitting" label="Estar sentado"/> - <combo_box.item name="Flying" label="Volar"/> + <combo_box left_delta="120" name="preview_base_anim" tool_tip="Compruebe cómo se comporta su animación a la vez que el avatar realiza acciones comunes." width="130"> + <combo_box.item label="De pie" name="Standing"/> + <combo_box.item label="Caminando" name="Walking"/> + <combo_box.item label="Sentado/a" name="Sitting"/> + <combo_box.item label="Volando" name="Flying"/> </combo_box> - <spinner label_width="125" width="192" label="Combinar (sec)" name="ease_in_time" tool_tip="Tiempo (en segundos) en el que se combinan las animaciones."/> - <spinner bottom_delta="-20" label_width="125" left="10" width="192" label="Dejar de combinar (sec)" name="ease_out_time" tool_tip="Tiempo (en segundos) en el que dejan de combinarse las animaciones."/> - <button bottom_delta="-32" name="play_btn" tool_tip="Mover/Pausar su animación."/> + <spinner label="Combinar (sec)" label_width="125" name="ease_in_time" tool_tip="Tiempo (en segundos) en el que se combinan las animaciones" width="192"/> + <spinner bottom_delta="-20" label="Dejar de combinar (sec)" label_width="125" left="10" name="ease_out_time" tool_tip="Tiempo (en segundos) en el que dejan de combinarse las animaciones" width="192"/> + <button bottom_delta="-32" name="play_btn" tool_tip="Ejecutar tu animación"/> + <button name="pause_btn" tool_tip="Pausar tu animación"/> <button label="" name="stop_btn" tool_tip="Parar la repetición de la animación"/> <slider label="" name="playback_slider"/> <text name="bad_animation_text"> @@ -73,19 +183,6 @@ Recomendamos usar archivos BVH exportados de Poser 4. </text> - <button label="Cancelar" name="cancel_btn"/> <button label="Subir ([AMOUNT] L$)" name="ok_btn"/> - <string name="failed_to_initialize"> - Fallo al iniciar el movimiento - </string> - <string name="anim_too_long"> - El archivo de la animación dura [LENGTH] segundos. - -La duración máxima de una animación es de [MAX_LENGTH] segundos. - </string> - <string name="failed_file_read"> - No se ha podido leer el archivo de la animación. - -[STATUS] - </string> + <button label="Cancelar" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_auction.xml b/indra/newview/skins/default/xui/es/floater_auction.xml index 5196ac0b78..6faf19dbb5 100644 --- a/indra/newview/skins/default/xui/es/floater_auction.xml +++ b/indra/newview/skins/default/xui/es/floater_auction.xml @@ -1,9 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_auction" title="EMPEZAR VENTA DE TERRENO LINDEN"> - <check_box label="Incluir la valla amarilla de selección" name="fence_check"/> - <button label="Foto" label_selected="Foto" name="snapshot_btn"/> - <button label="OK" label_selected="OK" name="ok_btn"/> - <text name="already for sale"> +<floater name="floater_auction" title="COMENZAR LA VENTA DE TERRENO LINDEN"> + <floater.string name="already for sale"> No puede subastar parcelas que ya están en venta. - </text> + </floater.string> + <check_box initial_value="true" label="Incluir la valla amarilla de selección" name="fence_check"/> + <button label="Foto" label_selected="Foto" name="snapshot_btn"/> + <button label="Vender a cualquiera" label_selected="Vender a cualquiera" name="sell_to_anyone_btn"/> + <button label="Limpiar las configuraciones" label_selected="Limpiar las configuraciones" name="reset_parcel_btn"/> + <button label="Comenzar subasta" label_selected="Comenzar subasta" name="start_auction_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_avatar_picker.xml b/indra/newview/skins/default/xui/es/floater_avatar_picker.xml index df0147b191..c83dd3ef3e 100644 --- a/indra/newview/skins/default/xui/es/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/es/floater_avatar_picker.xml @@ -1,42 +1,47 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatarpicker" title="ELEGIR A UN RESIDENTE"> + <floater.string name="not_found"> + No se ha encontrado '[TEXT]' + </floater.string> + <floater.string name="no_one_near"> + No hay nadie cerca + </floater.string> + <floater.string name="no_results"> + Sin resultados + </floater.string> + <floater.string name="searching"> + Buscando... + </floater.string> + <string label="Elegir" label_selected="Elegir" name="Select"> + Seleccionar + </string> + <string name="Close"> + Cerrar + </string> <tab_container name="ResidentChooserTabs"> <panel label="Buscar" name="SearchPanel"> <text name="InstructSearchResidentName"> - Escriba parte del nombre del residente: + Escribe parte del nombre de la persona: </text> - <button label="Buscar" label_selected="Buscar" name="Find"/> + <button label="Ir" label_selected="Ir" name="Find"/> </panel> - <panel label="Tarjetas de visita" name="CallingCardsPanel"> - <text name="InstructSelectCallingCard"> - Elija una tarjeta de visita: + <panel label="Amigos" name="FriendsPanel"> + <text name="InstructSelectFriend"> + Elige a una persona: </text> </panel> <panel label="Cercanos" name="NearMePanel"> <text name="InstructSelectResident"> - Seleccionar un -residente cercano: + Elegir a alguien que esté cerca: </text> - <button font="SansSerifSmall" left_delta="1" width="115" label="Actualizar la lista" label_selected="Actualizar la lista" name="Refresh"/> - <slider label="Alcance" name="near_me_range" bottom_delta="-36"/> + <slider bottom_delta="-36" label="Alcance" name="near_me_range"/> <text name="meters"> Metros </text> - <scroll_list bottom_delta="-169" height="159" name="NearMe" /> + <button font="SansSerifSmall" label="Actualizar la lista" label_selected="Actualizar la lista" left_delta="1" name="Refresh" width="115"/> + <scroll_list bottom_delta="-169" height="159" name="NearMe"/> </panel> </tab_container> - <button label="Elegir" label_selected="Elegir" name="Select"/> - <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <string name="not_found"> - No se ha encontrado '[TEXT]' - </string> - <string name="no_one_near"> - No hay nadie cerca - </string> - <string name="no_results"> - Sin resultados - </string> - <string name="searching"> - Buscando... - </string> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_avatar_textures.xml b/indra/newview/skins/default/xui/es/floater_avatar_textures.xml index 8febe4b0a9..b53b9a3889 100644 --- a/indra/newview/skins/default/xui/es/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/es/floater_avatar_textures.xml @@ -1,30 +1,43 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="avatar_texture_debug" title="TEXTURAS DEL AVATAR"> - <text name="baked_label"> - Texturas predeterminadas - </text> + <floater.string name="InvalidAvatar"> + AVATAR NO VÁLIDO + </floater.string> <text name="composite_label"> Texturas compuestas </text> - <texture_picker label="Cabeza" name="baked_head"/> - <texture_picker label="Maquillaje" name="head_bodypaint"/> - <texture_picker label="Pelo" name="hair"/> <button label="Soltar" label_selected="Soltar" name="Dump"/> - <texture_picker label="Ojos" name="baked_eyes"/> - <texture_picker label="Ojo" name="eye_texture"/> - <texture_picker label="Parte superior del cuerpo" name="baked_upper_body"/> - <texture_picker label="Tatuaje de la parte superior del cuerpo" name="upper_bodypaint"/> - <texture_picker label="Camiseta" name="undershirt"/> - <texture_picker label="Guantes" name="gloves"/> - <texture_picker label="Camisa" name="shirt"/> - <texture_picker label="Parte superior de la chaqueta" name="upper_jacket"/> - <texture_picker label="Parte inferior del cuerpo" name="baked_lower_body"/> - <texture_picker label="Tatuaje de la parte inferior del cuerpo" name="lower_bodypaint"/> - <texture_picker label="Ropa interior" name="underpants"/> - <texture_picker label="Calcetines" name="socks"/> - <texture_picker label="Zapatos" name="shoes"/> - <texture_picker label="Pantalones" name="pants"/> - <texture_picker label="Chaqueta" name="jacket"/> - <texture_picker label="Falda" name="baked_skirt"/> - <texture_picker label="Falda" name="skirt_texture"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <texture_picker label="Pelo" name="hair-baked"/> + <texture_picker label="Pelo" name="hair_grain"/> + <texture_picker label="Alfa del pelo" name="hair_alpha"/> + <texture_picker label="Cabeza" name="head-baked"/> + <texture_picker label="Maquillaje" name="head_bodypaint"/> + <texture_picker label="Alfa de la cabeza" name="head_alpha"/> + <texture_picker label="Tatuaje de la cabeza" name="head_tattoo"/> + <texture_picker label="Ojos" name="eyes-baked"/> + <texture_picker label="Oho" name="eyes_iris"/> + <texture_picker label="Alfa de los ojos" name="eyes_alpha"/> + <texture_picker label="Parte superior del cuerpo" name="upper-baked"/> + <texture_picker label="Parte superior del cuerpo: bodypaint" name="upper_bodypaint"/> + <texture_picker label="Camiseta" name="upper_undershirt"/> + <texture_picker label="Guantes" name="upper_gloves"/> + <texture_picker label="Camisa" name="upper_shirt"/> + <texture_picker label="Parte superior de la chaqueta" name="upper_jacket"/> + <texture_picker label="Alfa superior" name="upper_alpha"/> + <texture_picker label="Tatuaje superior" name="upper_tattoo"/> + <texture_picker label="Parte inferior del cuerpo" name="lower-baked"/> + <texture_picker label="Parte inferior del cuerpo: bodypaint" name="lower_bodypaint"/> + <texture_picker label="Ropa interior" name="lower_underpants"/> + <texture_picker label="Calcetines" name="lower_socks"/> + <texture_picker label="Zapatos" name="lower_shoes"/> + <texture_picker label="Pantalones" name="lower_pants"/> + <texture_picker label="Chaqueta" name="lower_jacket"/> + <texture_picker label="Alfa inferior" name="lower_alpha"/> + <texture_picker label="Tatuaje inferior" name="lower_tattoo"/> + <texture_picker label="Falda" name="skirt-baked"/> + <texture_picker label="Falda" name="skirt"/> + </panel> + </scroll_container> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_beacons.xml b/indra/newview/skins/default/xui/es/floater_beacons.xml index 2df90bc911..b86967755c 100644 --- a/indra/newview/skins/default/xui/es/floater_beacons.xml +++ b/indra/newview/skins/default/xui/es/floater_beacons.xml @@ -1,15 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="beacons" title="BALIZAS"> <panel name="beacons_panel"> - <check_box label="Objetos con script sólo al tocarlos" name="touch_only"/> - <check_box label="Objetos con script" name="scripted"/> - <check_box label="Objetos materiales" name="physical"/> - <check_box label="Fuentes de sonido" name="sounds"/> - <check_box label="Fuentes de partículas" name="particles"/> - <check_box label="Activar los realzados" name="highlights"/> - <check_box label="Activar las balizas" name="beacons"/> - <text name="beacon_width_label"> - Ancho de la baliza: + <text name="label_show"> + Mostrar: </text> + <check_box label="Balizas" name="beacons"/> + <check_box label="Realzados" name="highlights"/> + <text name="beacon_width_label" tool_tip="Ancho de la baliza"> + Ancho: + </text> + <text name="label_objects"> + Para estos objetos: + </text> + <check_box label="Materiales" name="physical"/> + <check_box label="Con scripts" name="scripted"/> + <check_box label="Sólo tocar" name="touch_only"/> + <check_box label="Origen de sonidos" name="sounds"/> + <check_box label="Origen de partículas" name="particles"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_build_options.xml b/indra/newview/skins/default/xui/es/floater_build_options.xml index 3d839bf645..de8d205ad4 100644 --- a/indra/newview/skins/default/xui/es/floater_build_options.xml +++ b/indra/newview/skins/default/xui/es/floater_build_options.xml @@ -1,8 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="build options floater" title="OPCIONES DE LA CUADRÍCULA"> - <spinner label="Unidad de la cuadrícula (metros)" name="GridResolution" width="250" label_width="192"/> - <spinner label="Graduación de la cuadrícula (metros)" name="GridDrawSize" width="250" label_width="192"/> + <spinner label="Unidad de la cuadrícula (metros)" label_width="192" name="GridResolution" width="250"/> + <spinner label="Graduación de la cuadrícula (metros)" label_width="192" name="GridDrawSize" width="250"/> <check_box label="Activar subunidades" name="GridSubUnit"/> <check_box label="Ver la sección transversal" name="GridCrossSection"/> + <text name="grid_opacity_label" tool_tip="Opacidad de la cuadrícula"> + Opacidad: + </text> <slider label="Opacidad de la cuadrícula" name="GridOpacity" width="250"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_bulk_perms.xml b/indra/newview/skins/default/xui/es/floater_bulk_perms.xml index 0553f4c672..f1948220b4 100644 --- a/indra/newview/skins/default/xui/es/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/es/floater_bulk_perms.xml @@ -1,44 +1,54 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="CAMBIO MASIVO DE LOS PERMISOS DEL CONTENIDO"> - <text name="applyto"> - Tipos de contenido - </text> +<floater name="floaterbulkperms" title="EDITAR LOS PERMISOS DEL CONTENIDO"> + <floater.string name="nothing_to_modify_text"> + Lo seleccionado tiene contenidos no editables. + </floater.string> + <floater.string name="status_text"> + Configurando los permisos de [NAME] + </floater.string> + <floater.string name="start_text"> + Iniciando el cambio de permisos solicitado... + </floater.string> + <floater.string name="done_text"> + Finalizado el cambio de permisos solicitado. + </floater.string> <check_box label="Animación" name="check_animation"/> + <icon name="icon_animation" tool_tip="Animaciones"/> <check_box label="Partes del cuerpo" name="check_bodypart"/> + <icon name="icon_bodypart" tool_tip="Partes del cuerpo"/> <check_box label="Ropa" name="check_clothing"/> + <icon name="icon_clothing" tool_tip="Ropa"/> <check_box label="Gestos" name="check_gesture"/> - <check_box label="Hitos" name="check_landmark"/> + <icon name="icon_gesture" tool_tip="Gestos"/> <check_box label="Notas" name="check_notecard"/> + <icon name="icon_notecard" tool_tip="Notas"/> <check_box label="Objetos" name="check_object"/> + <icon name="icon_object" tool_tip="Objetos"/> <check_box label="Scripts" name="check_script"/> + <icon name="icon_script" tool_tip="Scripts"/> <check_box label="Sonidos" name="check_sound"/> + <icon name="icon_sound" tool_tip="Sonidos"/> <check_box label="Texturas" name="check_texture"/> - <button label="Marcar todo" label_selected="Todo" name="check_all"/> - <button label="Desmarcar todo" label_selected="Ninguno" name="check_none"/> + <icon name="icon_texture" tool_tip="Texturas"/> + <button label="√ Todos" label_selected="Todo" name="check_all"/> + <button label="Limpiar" label_selected="Ninguno" name="check_none"/> <text name="newperms"> - Permisos nuevos + Permisos nuevos del contenido + </text> + <text name="GroupLabel"> + Grupo: </text> - <check_box label="Compartir con el grupo" name="share_with_group"/> - <check_box label="Permitir a cualquiera que lo copie" name="everyone_copy"/> + <check_box label="Compartir" name="share_with_group"/> + <text name="AnyoneLabel"> + Cualquiera: + </text> + <check_box label="Copiarlo" name="everyone_copy"/> <text name="NextOwnerLabel"> - El próximo propietario puede: + Próximo propietario: </text> <check_box label="Modificarlo" name="next_owner_modify"/> <check_box label="Copiarlo" name="next_owner_copy"/> - <check_box label="Revenderlo/Darlo" name="next_owner_transfer"/> - <button label="Ayuda" name="help"/> - <button label="Aplicar" name="apply"/> - <button label="Cerrar" name="close"/> - <string name="nothing_to_modify_text"> - Lo seleccionado tiene contenidos no editables. - </string> - <string name="status_text"> - Configurando los permisos de [NAME] - </string> - <string name="start_text"> - Iniciando el cambio de permisos solicitado... - </string> - <string name="done_text"> - Finalizado el cambio de permisos solicitado. - </string> + <check_box initial_value="true" label="Transferirlo" name="next_owner_transfer" tool_tip="El próximo propietario puede dar o revender este objeto"/> + <button label="OK" name="apply"/> + <button label="Cancelar" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_bumps.xml b/indra/newview/skins/default/xui/es/floater_bumps.xml index 0522f788bb..6a9c6b1f22 100644 --- a/indra/newview/skins/default/xui/es/floater_bumps.xml +++ b/indra/newview/skins/default/xui/es/floater_bumps.xml @@ -1,21 +1,24 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_bumps" title="CHOQUES, EMPUJONES, E IMPACTOS"> - <text name="none_detected"> + <floater.string name="none_detected"> No se han detectado - </text> - <text name="bump"> + </floater.string> + <floater.string name="bump"> [TIME] [FIRST] [LAST] ha chocado con usted - </text> - <text name="llpushobject"> + </floater.string> + <floater.string name="llpushobject"> [TIME] [FIRST] [LAST] le ha empujado con un script - </text> - <text name="selected_object_collide"> + </floater.string> + <floater.string name="selected_object_collide"> [TIME] [FIRST] [LAST] ha hecho que un objeto impacte con usted - </text> - <text name="scripted_object_collide"> + </floater.string> + <floater.string name="scripted_object_collide"> [TIME] [FIRST] [LAST] ha hecho que un objeto con script impacte con usted - </text> - <text name="physical_object_collide"> + </floater.string> + <floater.string name="physical_object_collide"> [TIME] [FIRST] [LAST] ha hecho que un objeto material impacte con usted - </text> + </floater.string> + <floater.string name="timeStr"> + [[hour,datetime,slt]:[min,datetime,slt]] + </floater.string> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_buy_contents.xml b/indra/newview/skins/default/xui/es/floater_buy_contents.xml index c4d269ff39..98604ad5f4 100644 --- a/indra/newview/skins/default/xui/es/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_contents.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_buy_contents" title="COMPRAR EL CONTENIDO"> +<floater name="floater_buy_contents" title="COMPRAR LOS CONTENIDOS"> <text name="contains_text"> [NAME] contiene: </text> diff --git a/indra/newview/skins/default/xui/es/floater_buy_currency.xml b/indra/newview/skins/default/xui/es/floater_buy_currency.xml index eb25493adc..0d280320e2 100644 --- a/indra/newview/skins/default/xui/es/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_currency.xml @@ -1,68 +1,66 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="buy currency" title="COMPRAR DINERO"> - <text name="info_buying"> - Comprando dinero: - </text> - <text name="info_cannot_buy" left="5" right="-5"> - No puede comprar en este momento: - </text> - <text name="info_need_more" left="5" right="-5"> - Necesita más dinero: - </text> - <text name="error_message"> - Algo no va bien. +<floater name="buy currency" title="COMPRAR L$"> + <floater.string name="buy_currency"> + Comprar [LINDENS] L$ por, aprox., [LOCALAMOUNT] + </floater.string> + <text left="5" name="info_need_more" right="-5"> + Necesitas más L$ </text> - <button label="Ir al sitio web" name="error_web"/> <text name="contacting"> Contactando con el LindeX... </text> - <text name="buy_action_unknown" right="-5"> - Comprar L$ en el sistema LindeX de cambio + <text name="info_buying"> + Comprar L$ </text> - <text name="buy_action"> - [NAME] [PRICE] L$ + <text name="balance_label"> + Tengo + </text> + <text name="balance_amount"> + [AMT] L$ </text> <text name="currency_action" width="50"> - Comprar + Quiero comprar </text> - <line_editor name="currency_amt" width="65" left_delta="50"> + <text name="currency_label"> + L$ + </text> + <line_editor label="L$" left_delta="50" name="currency_amt" width="65"> 1234 </line_editor> - <text name="currency_est" width="138" left_delta="68"> - por, aprox., [LOCALAMOUNT] - </text> - <text name="getting_data"> - Obteniendo los datos... + <text name="buying_label"> + Al precio de </text> - <text name="balance_label"> - Actualmente, tiene + <text left_delta="68" name="currency_est" width="138"> + aprox. [LOCALAMOUNT] </text> - <text name="balance_amount"> - [AMT] L$ - </text> - <text name="buying_label"> - Está comprando + <text name="getting_data"> + Calculando... </text> - <text name="buying_amount"> - [AMT] L$ + <text name="buy_action"> + [NAME] [PRICE] L$ </text> <text name="total_label"> - Su saldo será de + Mi nuevo saldo será </text> <text name="total_amount"> [AMT] L$ </text> + <text name="currency_links"> + [http://www.secondlife.com/my/account/payment_method_management.php método de pago] | [http://www.secondlife.com/my/account/currency.php moneda] | [http://www.secondlife.com/my/account/exchange_rates.php tipo de pago] + </text> + <text name="exchange_rate_note"> + Vuelve a escribir la cantidad para ver el tipo de cambio más reciente. + </text> <text name="purchase_warning_repurchase" right="-10"> - Confirmando esta compra sólo compra la moneda. -Tendrá que intentar de nuevo la operación. + Confirmando que con esta compra sólo se compran L$, no el objeto. </text> <text name="purchase_warning_notenough"> - No está comprando dinero suficiente. -Aumente la cantidad a comprar. + No estás comprando suficientes L$. Por favor, aumenta la cantidad. </text> + <button label="Comprar ahora" name="buy_btn"/> <button label="Cancelar" name="cancel_btn"/> - <button label="Comprar" name="buy_btn"/> - <string name="buy_currency"> - Compre [LINDENS] L$ por, aprox., [LOCALAMOUNT] - </string> + <text left="5" name="info_cannot_buy" right="-5"> + No se pudo hacer la compra + </text> + <button label="Ir a la web" name="error_web"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_buy_land.xml b/indra/newview/skins/default/xui/es/floater_buy_land.xml index 7ff45fcf79..496e719c6d 100644 --- a/indra/newview/skins/default/xui/es/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_land.xml @@ -1,27 +1,156 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="buy land" title="COMPRAR TERRENO"> + <floater.string name="can_resell"> + Puede revenderse. + </floater.string> + <floater.string name="can_not_resell"> + No se puede revender. + </floater.string> + <floater.string name="can_change"> + Puede unirse o dividirse. + </floater.string> + <floater.string name="can_not_change"> + No puede unirse ni dividirse. + </floater.string> + <floater.string name="cant_buy_for_group"> + No tiene permiso de comprar terreno para el grupo que tiene activado. + </floater.string> + <floater.string name="no_land_selected"> + No se ha seleccionado terreno. + </floater.string> + <floater.string name="multiple_parcels_selected"> + Se han seleccionado varias parcelas diferentes. +Inténtelo seleccionando un área más pequeña. + </floater.string> + <floater.string name="no_permission"> + No tiene permiso de comprar terreno para el grupo que tiene activado. + </floater.string> + <floater.string name="parcel_not_for_sale"> + La parcela seleccionada no está en venta. + </floater.string> + <floater.string name="group_already_owns"> + El grupo ya es propietario de la parcela. + </floater.string> + <floater.string name="you_already_own"> + Usted ya es propietario de la parcela. + </floater.string> + <floater.string name="set_to_sell_to_other"> + La parcela seleccionada está marcada para ser vendida a otro + </floater.string> + <floater.string name="no_public_land"> + El área seleccionada no tiene terreno público. + </floater.string> + <floater.string name="not_owned_by_you"> + Se ha seleccionado terreno propiedad de otro. +Inténtelo seleccionando un área más pequeña. + </floater.string> + <floater.string name="processing"> + Procesando su compra... + +(Llevará uno o dos minutos). + </floater.string> + <floater.string name="fetching_error"> + Se ha producido un error al ir a buscar la información de compra de terreno. + </floater.string> + <floater.string name="buying_will"> + Al comprar este terreno: + </floater.string> + <floater.string name="buying_for_group"> + Comprando terreno para el grupo: + </floater.string> + <floater.string name="cannot_buy_now"> + No se puede comprar ahora: + </floater.string> + <floater.string name="not_for_sale"> + No está en venta: + </floater.string> + <floater.string name="none_needed"> + no necesita + </floater.string> + <floater.string name="must_upgrade"> + Para poseer terreno, su cuenta debe ascender de categoría. + </floater.string> + <floater.string name="cant_own_land"> + Su cuenta puede poseer terreno. + </floater.string> + <floater.string name="land_holdings"> + Tienes [BUYER] m² de terreno. + </floater.string> + <floater.string name="pay_to_for_land"> + Pagar por este terreno [AMOUNT] L$ a [SELLER] + </floater.string> + <floater.string name="buy_for_US"> + Comprar [AMOUNT] L$ por, aprox., [LOCAL_AMOUNT], + </floater.string> + <floater.string name="parcel_meters"> + Este terreno tiene [AMOUNT] m² + </floater.string> + <floater.string name="premium_land"> + Este terreno es 'premium', y se considerará como de [AMOUNT] m². + </floater.string> + <floater.string name="discounted_land"> + Este terreno es 'discounted', y se considerará como de [AMOUNT] m². + </floater.string> + <floater.string name="meters_supports_object"> + [AMOUNT] m² +admite [AMOUNT2] objetos + </floater.string> + <floater.string name="sold_with_objects"> + vendido con los objetos + </floater.string> + <floater.string name="sold_without_objects"> + objetos no incluidos + </floater.string> + <floater.string name="info_price_string"> + [PRICE] L$ +([PRICE_PER_SQM] L$/m²) +[SOLD_WITH_OBJECTS] + </floater.string> + <floater.string name="insufficient_land_credits"> + Antes de que se complete la compra, el grupo [GROUP] necesitará +los suficientes créditos de uso en contribución de terreno +para cubrir esta parcela. + </floater.string> + <floater.string name="have_enough_lindens"> + Tiene [AMOUNT] L$, cantidad suficiente para comprar este terreno. + </floater.string> + <floater.string name="not_enough_lindens"> + Sólo tiene [AMOUNT] L$. Necesitaría [AMOUNT2] L$ más. + </floater.string> + <floater.string name="balance_left"> + Tras la compra, aún tendrá [AMOUNT] L$. + </floater.string> + <floater.string name="balance_needed"> + Para costearse este terreno, deberá comprar, al menos, [AMOUNT] L$. + </floater.string> + <floater.string name="no_parcel_selected"> + (No se ha seleccionado una parcela) + </floater.string> + <floater.string name="icon_PG" value="Parcel_PG_Dark"/> + <floater.string name="icon_M" value="Parcel_M_Dark"/> + <floater.string name="icon_R" value="Parcel_R_Dark"/> <text name="region_name_label"> Región: </text> - <text name="region_name_text" left="565"> + <text left="565" name="region_name_text"> (desconocida) </text> <text name="region_type_label"> Tipo: </text> - <text name="region_type_text" left="565"> + <text left="565" name="region_type_text"> (desconocido) </text> <text name="estate_name_label"> Estado: </text> - <text name="estate_name_text" left="565"> + <text left="565" name="estate_name_text"> (desconocido) </text> - <text name="estate_owner_label" width="115" right="565"> + <text name="estate_owner_label" right="565" width="115"> Propietario del estado: </text> - <text name="estate_owner_text" left="565" > + <text left="565" name="estate_owner_text"> (desconocido) </text> <text name="resellable_changeable_label"> @@ -58,8 +187,8 @@ </text> <text name="info_price"> 1500 L$ -(1.1 L$/m²) -incluyendo los objetos +(1.1/m² L$) +se vende con los objetos </text> <text name="info_action"> Al comprar este terreno: @@ -75,16 +204,16 @@ incluyendo los objetos Sólo pueden ser propietarios de terreno los miembros premium. </text> <combo_box name="account_level"> - <combo_box.item name="US$9.95/month,billedmonthly" label="9.95 US$/mes, facturados mensualmente" /> - <combo_box.item name="US$7.50/month,billedquarterly" label="7.50 US$/mes, facturados cuatrimestralmente" /> - <combo_box.item name="US$6.00/month,billedannually" label="6.00 US$/mes, facturados anualmente" /> + <combo_box.item label="9.95 US$/mes, facturados mensualmente" name="US$9.95/month,billedmonthly"/> + <combo_box.item label="7.50 US$/mes, facturados trimestralmente" name="US$7.50/month,billedquarterly"/> + <combo_box.item label="6.00 US$/mes, facturados anualmente" name="US$6.00/month,billedannually"/> </combo_box> <text name="land_use_action"> Aumenta su cuota mensual por uso de terreno a 40 US$/mes. </text> <text name="land_use_reason"> - Usted posee 1309 m² de terreno. -Esta parcela mide 512 m². + Tienes 1309 m² de terreno. +Esta parcela es de 512 m². </text> <text name="purchase_action"> Pagar al residente Joe 4.000 L$ por el terreno @@ -99,141 +228,12 @@ Esta parcela mide 512 m². 1.000 </line_editor> <text name="currency_est"> - por, aprox., [AMOUNT2] US$ + por, aprox., [LOCAL_AMOUNT] </text> <text name="currency_balance"> Tiene 2.100 L$. </text> - <check_box label="Quitar [AMOUNT] m² de la contribución del grupo." name="remove_contribution"/> + <check_box label="Quitar [AMOUNT] m² de las contribuciones de grupo." name="remove_contribution"/> <button label="Comprar" name="buy_btn"/> <button label="Cancelar" name="cancel_btn"/> - <string name="can_resell"> - Puede revenderse. - </string> - <string name="can_not_resell"> - No se puede revender. - </string> - <string name="can_change"> - Puede unirse o dividirse. - </string> - <string name="can_not_change"> - No puede unirse ni dividirse. - </string> - <string name="cant_buy_for_group"> - No tiene permiso de comprar terreno para el grupo que tiene activado. - </string> - <string name="no_land_selected"> - No se ha seleccionado terreno. - </string> - <string name="multiple_parcels_selected"> - Se han seleccionado varias parcelas diferentes. -Inténtelo seleccionando un área más pequeña. - </string> - <string name="no_permission"> - No tiene permiso de comprar terreno para el grupo que tiene activado. - </string> - <string name="parcel_not_for_sale"> - La parcela seleccionada no está en venta. - </string> - <string name="group_already_owns"> - El grupo ya es propietario de la parcela. - </string> - <string name="you_already_own"> - Usted ya es propietario de la parcela. - </string> - <string name="set_to_sell_to_other"> - La parcela seleccionada está marcada para ser vendida a otro - </string> - <string name="no_public_land"> - El área seleccionada no tiene terreno público. - </string> - <string name="not_owned_by_you"> - Se ha seleccionado terreno propiedad de otro. -Inténtelo seleccionando un área más pequeña. - </string> - <string name="processing"> - Procesando su compra... - -(Llevará uno o dos minutos). - </string> - <string name="fetching_error"> - Se ha producido un error al ir a buscar la información de compra de terreno. - </string> - <string name="buying_will"> - Al comprar este terreno: - </string> - <string name="buying_for_group"> - Comprando terreno para el grupo: - </string> - <string name="cannot_buy_now"> - No se puede comprar ahora: - </string> - <string name="not_for_sale"> - No está en venta: - </string> - <string name="none_needed"> - no necesita - </string> - <string name="must_upgrade"> - Para poseer terreno, su cuenta debe ascender de categoría. - </string> - <string name="cant_own_land"> - Su cuenta puede poseer terreno. - </string> - <string name="land_holdings"> - Usted tiene [BUYER] m² de terreno. - </string> - <string name="pay_to_for_land"> - Pagar por este terreno [AMOUNT] L$ a [SELLER] - </string> - <string name="buy_for_US"> - Comprar [AMOUNT] L$ por, aprox., [AMOUNT2] US$, - </string> - <string name="parcel_meters"> - Esta parcela tiene [AMOUNT] m². - </string> - <string name="premium_land"> - Este terreno es premium, y se contará como de [AMOUNT] m². - </string> - <string name="discounted_land"> - Este terreno tiene descuento, y se contará como de [AMOUNT] m². - </string> - <string name="meters_supports_object"> - [AMOUNT] m² -admite [AMOUNT2] objetos - </string> - <string name="sold_with_objects"> - vendido con los objetos - </string> - <string name="sold_without_objects"> - objetos no incluidos - </string> - <string name="info_price_string"> - [PRICE] L$ -([PRICE_PER_SQM] L$/m²) -[SOLD_WITH_OBJECTS] - </string> - <string name="insufficient_land_credits"> - Antes de que se complete la compra, el grupo [GROUP] necesitará -los suficientes créditos de uso en contribución de terreno -para cubrir esta parcela. - </string> - <string name="have_enough_lindens"> - Tiene [AMOUNT] L$, cantidad suficiente para comprar este terreno. - </string> - <string name="not_enough_lindens"> - Sólo tiene [AMOUNT] L$. Necesitaría [AMOUNT2] L$ más. - </string> - <string name="balance_left"> - Tras la compra, aún tendrá [AMOUNT] L$. - </string> - <string name="balance_needed"> - Para costearse este terreno, deberá comprar, al menos, [AMOUNT] L$. - </string> - <string name="no_parcel_selected"> - (No se ha seleccionado una parcela) - </string> - <string name="buy_currency"> - Comprar [LINDENS] L$ por, aprox., [USD] US$ - </string> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_buy_object.xml b/indra/newview/skins/default/xui/es/floater_buy_object.xml index 26696bc868..117d29777f 100644 --- a/indra/newview/skins/default/xui/es/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/es/floater_buy_object.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="contents" title="COMPRAR UNA COPIA DEL OBJETO"> <text name="contents_text"> - y sus contenidos: + Contenidos: </text> <text name="buy_text"> ¿Comprarlo por [AMOUNT] L$ a [NAME]? diff --git a/indra/newview/skins/default/xui/es/floater_camera.xml b/indra/newview/skins/default/xui/es/floater_camera.xml index 3aeb4e5771..40c5603706 100644 --- a/indra/newview/skins/default/xui/es/floater_camera.xml +++ b/indra/newview/skins/default/xui/es/floater_camera.xml @@ -10,7 +10,22 @@ Mover la cámara arriba y abajo, izquierda y derecha </floater.string> <panel name="controls"> - <joystick_track name="cam_track_stick" tool_tip="Mover la cámara arriba y abajo, izquierda y derecha"/> - <joystick_zoom name="zoom" tool_tip="Hacer zoom con la cámara en lo enfocado"/> + <joystick_track name="cam_track_stick" tool_tip="Mueve la cámara arriba y abajo, a izquierda y derecha"/> + <panel name="zoom" tool_tip="Hacer zoom con la cámara en lo enfocado"> + <slider_bar name="zoom_slider" tool_tip="Hacer zoom en lo enfocado"/> + </panel> + <joystick_rotate name="cam_rotate_stick" tool_tip="La cámara gira alrededor del punto de vista"/> + <panel name="camera_presets"> + <button name="rear_view" tool_tip="Desde detrás"/> + <button name="group_view" tool_tip="Desde tu hombro"/> + <button name="front_view" tool_tip="De frente"/> + <button name="mouselook_view" tool_tip="Vista subjetiva"/> + </panel> + </panel> + <panel name="buttons"> + <button label="" name="orbit_btn" tool_tip="Cámara orbital"/> + <button label="" name="pan_btn" tool_tip="Cámara panorámica"/> + <button label="" name="avatarview_btn" tool_tip="Posición de tu cámara"/> + <button label="" name="freecamera_btn" tool_tip="Centrar el objeto"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_color_picker.xml b/indra/newview/skins/default/xui/es/floater_color_picker.xml index 4395ee6890..ed168c09d5 100644 --- a/indra/newview/skins/default/xui/es/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/es/floater_color_picker.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="ColorPicker" title="PALETA DE COLORES"> +<floater name="ColorPicker" title="SELECTOR DE COLOR"> <text name="r_val_text"> Rojo: </text> @@ -18,14 +18,13 @@ <text name="l_val_text"> Lumin.: </text> - <check_box label="Aplicar ahora mismo" name="apply_immediate"/> + <check_box label="Aplicarlo ahora" name="apply_immediate"/> <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/> - <button label="Elegir" label_selected="Elegir" name="select_btn"/> + <button label="OK" label_selected="OK" name="select_btn"/> <text name="Current color:"> Color actual: </text> <text name="(Drag below to save.)"> - (Arrástrelo abajo - para guardarlo) + (arrástralo abajo para guardarlo) </text> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_customize.xml b/indra/newview/skins/default/xui/es/floater_customize.xml index 94452dae6b..97191a1336 100644 --- a/indra/newview/skins/default/xui/es/floater_customize.xml +++ b/indra/newview/skins/default/xui/es/floater_customize.xml @@ -1,7 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater customize" title="APARIENCIA" width="527"> <tab_container name="customize tab container" width="525"> - <placeholder label="Partes del cuerpo" name="body_parts_placeholder"/> + <text label="Partes del cuerpo" name="body_parts_placeholder"> + Partes del cuerpo + </text> <panel label="Forma" name="Shape" width="389"> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> <button label="Cuerpo" label_selected="Cuerpo" name="Body"/> @@ -14,8 +16,8 @@ <button label="Torso" label_selected="Torso" name="Torso"/> <button label="Piernas" label_selected="Piernas" name="Legs"/> <radio_group name="sex radio"> - <radio_item name="radio" label="Mujer" /> - <radio_item name="radio2" label="Varón" /> + <radio_item label="Mujer" name="radio" value="0"/> + <radio_item label="Varón" name="radio2" value="1"/> </radio_group> <text name="title"> [DESC] @@ -33,8 +35,7 @@ Situada en [PATH] </text> <text name="not worn instructions"> - Póngase una forma nueva arrastrando una desde su inventario hasta su -avatar. O parta de cero creando una nueva y vistiéndola. + Ponte una anatomía nueva arrastrándola desde tu inventario hasta tu avatar. O bien crea una nueva partiendo de cero y vístetela. </text> <text name="no modify instructions"> No tiene permiso para modificar este ítem. @@ -43,8 +44,8 @@ avatar. O parta de cero creando una nueva y vistiéndola. Forma: </text> <button label="Crear una forma nueva" label_selected="Crear una forma nueva" name="Create New"/> - <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> - <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/> </panel> <panel label="Piel" name="Skin"> <button label="Color de piel" label_selected="Color de piel" name="Skin Color" width="115"/> @@ -67,8 +68,7 @@ avatar. O parta de cero creando una nueva y vistiéndola. Situada en [PATH] </text> <text name="not worn instructions"> - Póngase otra piel arrastrando una desde su inventario hasta su -avatar. O parta de cero creando una nueva y vistiéndola. + Ponte una piel nueva arrastrándola desde tu inventario hasta tu avatar. O bien crea una nueva partiendo de cero y vístetela. </text> <text name="no modify instructions"> No tiene permiso para modificar este ítem. @@ -76,12 +76,12 @@ avatar. O parta de cero creando una nueva y vistiéndola. <text name="Item Action Label" right="107"> Piel: </text> - <texture_picker width="90" label="Tatuaje: cabeza" name="Head Tattoos" tool_tip="Pulse para elegir una imagen"/> - <texture_picker width="90" label="Tatuaje: superior" name="Upper Tattoos" tool_tip="Pulse para elegir una imagen"/> - <texture_picker width="90" label="Tatuaje: inferior" name="Lower Tattoos" tool_tip="Pulse para elegir una imagen"/> + <texture_picker label="Tatuaje: cabeza" name="Head Tattoos" tool_tip="Pulse para elegir una imagen" width="90"/> + <texture_picker label="Tatuaje: superior" name="Upper Tattoos" tool_tip="Pulse para elegir una imagen" width="90"/> + <texture_picker label="Tatuaje: inferior" name="Lower Tattoos" tool_tip="Pulse para elegir una imagen" width="90"/> <button label="Crear una piel nueva" label_selected="Crear una piel nueva" name="Create New"/> - <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> - <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Pelo" name="Hair"> @@ -105,8 +105,7 @@ avatar. O parta de cero creando una nueva y vistiéndola. Situado en [PATH] </text> <text name="not worn instructions"> - Póngase otro pelo arrastrando uno desde su inventario hasta su -avatar. O parta de cero creando uno nueva y vistiéndolo. + Ponte un pelo nuevo arrastrándolo desde tu inventario hasta tu avatar. O bien crea uno nuevo partiendo de cero y vístetelo. </text> <text name="no modify instructions"> No tiene permiso para modificar este ítem. @@ -116,8 +115,8 @@ avatar. O parta de cero creando uno nueva y vistiéndolo. </text> <texture_picker label="Textura" name="Texture" tool_tip="Pulse para elegir una imagen"/> <button label="Crear un pelo nuevo" label_selected="Crear un pelo nuevo" name="Create New"/> - <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> - <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Ojos" name="Eyes"> @@ -137,8 +136,7 @@ avatar. O parta de cero creando uno nueva y vistiéndolo. Situados en [PATH] </text> <text name="not worn instructions"> - Póngase otros ojos arrastrando unos desde su inventario hasta su -avatar. O parta de cero creando unos nuevos y vistiéndoselos. + Ponte unos ojos nuevos arrastrándolos desde tu inventario hasta tu avatar. O bien crea unos nuevos partiendo de cero y vístetelos. </text> <text name="no modify instructions"> No tiene permiso para modificar este ítem. @@ -148,18 +146,20 @@ avatar. O parta de cero creando unos nuevos y vistiéndoselos. </text> <texture_picker label="Iris" name="Iris" tool_tip="Pulse para elegir una imagen"/> <button label="Crear unos ojos nuevos" label_selected="Crear unos ojos nuevos" name="Create New"/> - <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> - <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> - <panel label="Ropa" name="clothes_placeholder"/> + <text label="Ropa" name="clothes_placeholder"> + Ropas + </text> <panel label="Camisa" name="Shirt"> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> - <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> - <button label="Crear una falda nueva" label_selected="Crear una falda nueva" name="Create New"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> - <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Crear una falda nueva" label_selected="Crear una falda nueva" name="Create New"/> + <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> <text name="title"> [DESC] @@ -177,8 +177,7 @@ avatar. O parta de cero creando unos nuevos y vistiéndoselos. Situada en [PATH] </text> <text name="not worn instructions"> - Póngase otra camisa arrastrando una desde su inventario hasta su -avatar. O parta de cero creando una nueva y vistiéndola. + Ponte una camisa nueva arrastrándola desde tu inventario hasta tu avatar. O bien crea una nueva partiendo de cero y vístetela. </text> <text name="no modify instructions"> No tiene permiso para modificar este ítem. @@ -189,11 +188,11 @@ avatar. O parta de cero creando una nueva y vistiéndola. </panel> <panel label="Pantalones" name="Pants"> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> - <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> - <button label="Crear unos pantalones nuevos" label_selected="Crear unos pantalones nuevos" name="Create New" width="185"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> <button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/> - <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> - <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Crear unos pantalones nuevos" label_selected="Crear unos pantalones nuevos" name="Create New" width="185"/> + <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> <text name="title"> [DESC] @@ -211,8 +210,7 @@ avatar. O parta de cero creando una nueva y vistiéndola. Situados en [PATH] </text> <text name="not worn instructions"> - Póngase otros pantalones arrastrando unos desde su inventario hasta su -avatar. O parta de cero creando unos nuevos y vistiéndoselos. + Ponte unos pantalones nuevos arrastrándolos desde tu inventario hasta tu avatar. O bien crea unos nuevos partiendo de cero y vístetelos. </text> <text name="no modify instructions"> No tiene permiso para modificar este ítem. @@ -238,9 +236,9 @@ avatar. O parta de cero creando unos nuevos y vistiéndoselos. Situados en [PATH] </text> <text name="not worn instructions"> - Póngase otros zapatos arrastrando unos desde su inventario hasta su -avatar. O parta de cero creando unos nuevos y vistiéndoselos. + Ponte unos zapatos nuevos arrastrándolos desde tu inventario hasta tu avatar. O bien crea unos nuevos partiendo de cero y vístetelos. </text> + <button label="Crear unos zapatos nuevos" label_selected="Crear unos zapatos nuevos" name="Create New"/> <text name="no modify instructions"> No tiene permiso para modificar este ítem. </text> @@ -248,11 +246,10 @@ avatar. O parta de cero creando unos nuevos y vistiéndoselos. Zapatos: </text> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> - <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> - <button label="Crear unos zapatos nuevos" label_selected="Crear unos zapatos nuevos" name="Create New"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> <button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/> - <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> - <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Calcetines" name="Socks"> @@ -272,9 +269,9 @@ avatar. O parta de cero creando unos nuevos y vistiéndoselos. Situados en [PATH] </text> <text name="not worn instructions"> - Póngase otros calcetines arrastrando unos desde su inventario hasta su -avatar. O parta de cero creando unos nuevos y vistiéndoselos. + Ponte unos calcetines nuevos arrastrándolos desde tu inventario hasta tu avatar. O bien crea unos nuevos partiendo de cero y vístetelos. </text> + <button label="Crear unos calcetines nuevos" label_selected="Crear unos calcetines nuevos" name="Create New" width="185"/> <text name="no modify instructions"> No tiene permiso para modificar este ítem. </text> @@ -282,11 +279,10 @@ avatar. O parta de cero creando unos nuevos y vistiéndoselos. Calcetines: </text> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> - <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> - <button label="Crear unos calcetines nuevos" label_selected="Crear unos calcetines nuevos" name="Create New" width="185"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> <button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/> - <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> - <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Chaqueta" name="Jacket"> @@ -306,9 +302,9 @@ avatar. O parta de cero creando unos nuevos y vistiéndoselos. Situada en [PATH] </text> <text name="not worn instructions"> - Póngase otra chaqueta arrastrando una desde su inventario hasta su -avatar. O parta de cero creando una nueva y vistiéndola. + Ponte una chaqueta nueva arrastrándola desde tu inventario hasta tu avatar. O bien crea una nueva partiendo de cero y vístetela. </text> + <button label="Crear una chaqueta nueva" label_selected="Crear una chaqueta nueva" name="Create New"/> <text name="no modify instructions"> No tiene permiso para modificar este ítem. </text> @@ -317,11 +313,10 @@ avatar. O parta de cero creando una nueva y vistiéndola. </text> <texture_picker label="Tela superior" name="Upper Fabric" tool_tip="Pulse para elegir una imagen"/> <texture_picker label="Tela inferior" name="Lower Fabric" tool_tip="Pulse para elegir una imagen"/> - <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> - <button label="Crear una chaqueta nueva" label_selected="Crear una chaqueta nueva" name="Create New"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> - <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Guantes" name="Gloves"> @@ -341,9 +336,9 @@ avatar. O parta de cero creando una nueva y vistiéndola. Situados en [PATH] </text> <text name="not worn instructions"> - Póngase otros guantes arrastrando unos desde su inventario hasta su -avatar. O parta de cero creando unos nuevos y vistiéndoselos. + Ponte unos guantes nuevos arrastrándolos desde tu inventario hasta tu avatar. O bien crea unos nuevos partiendo de cero y vístetelos. </text> + <button label="Crear unos guantes nuevos" label_selected="Crear unos guantes nuevos" name="Create New"/> <text name="no modify instructions"> No tiene permiso para modificar este ítem. </text> @@ -351,11 +346,10 @@ avatar. O parta de cero creando unos nuevos y vistiéndoselos. Guantes: </text> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> - <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> - <button label="Crear unos guantes nuevos" label_selected="Crear unos guantes nuevos" name="Create New"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> <button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/> - <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> - <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Camiseta" name="Undershirt"> @@ -375,9 +369,9 @@ avatar. O parta de cero creando unos nuevos y vistiéndoselos. Situada en [PATH] </text> <text name="not worn instructions"> - Póngase otra camiseta arrastrando una desde su inventario hasta su -avatar. O parta de cero creando una nueva y vistiéndola. + Ponte una camiseta nueva arrastrándola desde tu inventario hasta tu avatar. O bien crea una nueva partiendo de cero y vístetela. </text> + <button label="Crear una camiseta nueva" label_selected="Crear una camiseta nueva" name="Create New"/> <text name="no modify instructions"> No tiene permiso para modificar este ítem. </text> @@ -385,11 +379,10 @@ avatar. O parta de cero creando una nueva y vistiéndola. Camiseta: </text> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> - <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> - <button label="Crear una camiseta nueva" label_selected="Crear una camiseta nueva" name="Create New"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> - <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Ropa interior" name="Underpants"> @@ -409,9 +402,9 @@ avatar. O parta de cero creando una nueva y vistiéndola. Situada en [PATH] </text> <text name="not worn instructions"> - Póngase otra ropa interior arrastrando una desde su inventario hasta su -avatar. O parta de cero creando una nueva y vistiéndola. + Ponte una ropa interior nueva arrastrándola desde tu inventario hasta tu avatar. O bien crea una nueva partiendo de cero y vístetela. </text> + <button label="Crear una ropa interior nueva" label_selected="Crear una ropa interior nueva" name="Create New" width="185"/> <text name="no modify instructions"> No tiene permiso para modificar este ítem. </text> @@ -419,11 +412,10 @@ avatar. O parta de cero creando una nueva y vistiéndola. Ropa interior: </text> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> - <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> - <button label="Crear una ropa interior nueva" label_selected="Crear una ropa interior nueva" name="Create New" width="185"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> - <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> <panel label="Falda" name="Skirt"> @@ -443,9 +435,9 @@ avatar. O parta de cero creando una nueva y vistiéndola. Situada en [PATH] </text> <text name="not worn instructions"> - Póngase otra falda arrastrando una desde su inventario hasta su -avatar. O parta de cero creando una nueva y vistiéndola. + Ponte una falda nueva arrastrándola desde tu inventario hasta tu avatar. O bien crea una nueva partiendo de cero y vístetela. </text> + <button label="Crear una falda nueva" label_selected="Crear una falda nueva" name="Create New"/> <text name="no modify instructions"> No tiene permiso para modificar este ítem. </text> @@ -453,16 +445,86 @@ avatar. O parta de cero creando una nueva y vistiéndola. Falda: </text> <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> - <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulse para abrir el selector de color"/> - <button label="Crear una falda nueva" label_selected="Crear una falda nueva" name="Create New"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button left="113" label="Guardar" label_selected="Guardar" name="Save"/> - <button left="199" width="102" label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." left="199" name="Save As" width="102"/> <button label="Restablecer" label_selected="Restablecer" name="Revert"/> </panel> + <panel label="Tatuaje" name="Tattoo"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: no modificable + </text> + <text name="title_loading"> + [DESC]: cargando... + </text> + <text name="title_not_worn"> + [DESC]: no puesto + </text> + <text name="path"> + Situado en [PATH] + </text> + <text name="not worn instructions"> + Ponte un tatuaje nuevo arrastrándolo desde tu inventario hasta tu avatar. O bien crea uno nuevo partiendo de cero y vístetelo. + </text> + <button label="Crear un tatuaje nuevo" label_selected="Crear un tatuaje nuevo" name="Create New"/> + <text name="no modify instructions"> + No tienes permiso para modificar este artículo. + </text> + <text name="Item Action Label"> + Tatuaje: + </text> + <texture_picker label="Tatuaje de la cabeza" name="Head Tattoo" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Tatuaje superior" name="Upper Tattoo" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Tatuaje inferior" name="Lower Tattoo" tool_tip="Pulsa para elegir una imagen"/> + <button label="Quitarme" label_selected="Quitarme" name="Take Off"/> + <button label="Guardar" label_selected="Guardar" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Revertir" label_selected="Revertir" name="Revert"/> + </panel> + <panel label="Alfa" name="Alpha"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: no modificable + </text> + <text name="title_loading"> + [DESC]: cargando... + </text> + <text name="title_not_worn"> + [DESC]: no puesto + </text> + <text name="path"> + Situado en [PATH] + </text> + <text name="not worn instructions"> + Ponte una capa Alfa nueva arrastrándola desde tu inventario hasta tu avatar. O bien crea una nueva partiendo de cero y vístetela. + </text> + <button label="Crear una capa Alfa nueva" label_selected="Crear una capa Alfa nueva" name="Create New"/> + <text name="no modify instructions"> + No tienes permiso para modificar este artículo. + </text> + <text name="Item Action Label"> + Alfa: + </text> + <texture_picker label="Alfa inferior" name="Lower Alpha" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Alfa superior" name="Upper Alpha" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Alfa de la cabeza" name="Head Alpha" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Alfa de los ojos" name="Eye Alpha" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Alfa del pelo" name="Hair Alpha" tool_tip="Pulsa para elegir una imagen"/> + <button label="Quitarme" label_selected="Quitarme" name="Take Off"/> + <button label="Guardar" label_selected="Guardar" name="Save"/> + <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> + <button label="Revertir" label_selected="Revertir" name="Revert"/> + </panel> </tab_container> <scroll_container left="230" name="panel_container"/> + <button label="Información del script" label_selected="Información del script" name="script_info" tool_tip="Mostrar los scripts anexados a tu avatar"/> + <button label="Hacer un vestuario" label_selected="Hacer un vestuario" name="make_outfit_btn"/> <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> <button label="OK" label_selected="OK" name="Ok"/> - <button label="Hacer un vestuario..." label_selected="Hacer un vestuario..." name="Make Outfit" width="130"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_env_settings.xml b/indra/newview/skins/default/xui/es/floater_env_settings.xml index 5d6ba47daf..195690f546 100644 --- a/indra/newview/skins/default/xui/es/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/es/floater_env_settings.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Environment Editor Floater" title="EDITOR DEL ENTORNO"> + <floater.string name="timeStr"> + [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc] + </floater.string> <text name="EnvTimeText"> Duración de un día @@ -14,13 +17,12 @@ un día Color del agua </text> - <color_swatch label="" name="EnvWaterColor" tool_tip="Pulse para abrir el selector de color"/> + <color_swatch label="" name="EnvWaterColor" tool_tip="Pulsa para abrir el selector de color"/> <text name="EnvWaterFogText"> Claridad del agua </text> <button bottom="-144" label="Usar el horario del estado" name="EnvUseEstateTimeButton" width="155"/> - <button label="Cielo avanzado" name="EnvAdvancedSkyButton" width="155" left="167" /> - <button label="Agua avanzada" name="EnvAdvancedWaterButton" width="155" left="326"/> - <button label="?" name="EnvSettingsHelpButton"/> + <button label="Cielo avanzado" left="167" name="EnvAdvancedSkyButton" width="155"/> + <button label="Agua avanzada" left="326" name="EnvAdvancedWaterButton" width="155"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_event.xml b/indra/newview/skins/default/xui/es/floater_event.xml new file mode 100644 index 0000000000..f2ce40e994 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_event.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater label="Event" name="Event" title="DETALLES DEL EVENTO"> + <floater.string name="none"> + Ninguno + </floater.string> + <floater.string name="notify"> + Notificar + </floater.string> + <floater.string name="dont_notify"> + No notificar + </floater.string> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <text name="event_name"> + Evento sin nombre... + </text> + <text name="event_category"> + (sin categoría) + </text> + <text name="event_runby_label"> + Organizado por: + </text> + <text initial_value="(obteniendo)" name="event_runby"/> + <text name="event_date"> + 10/10/2010 + </text> + <text name="event_duration"> + 1 hora + </text> + <text name="event_cover"> + Gratis + </text> + <text name="event_location_label"> + Localización: + </text> + <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/> + <text name="rating_label" value="Calificación:"/> + <text name="rating_value" value="desconocida"/> + </layout_panel> + <layout_panel name="button_panel"> + <button name="create_event_btn" tool_tip="Crear el evento"/> + <button name="god_delete_event_btn" tool_tip="Borrar el evento"/> + <button label="Notificarme" name="notify_btn"/> + <button label="Teleportar" name="teleport_btn"/> + <button label="Mapa" name="map_btn"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_gesture.xml b/indra/newview/skins/default/xui/es/floater_gesture.xml index 496881f2d2..1dc1d54295 100644 --- a/indra/newview/skins/default/xui/es/floater_gesture.xml +++ b/indra/newview/skins/default/xui/es/floater_gesture.xml @@ -1,15 +1,25 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="gestures" title="GESTOS DISPONIBLES"> - <text name="help_label"> - Pulse dos veces en un gesto para reproducir las animaciones -y sonidos. - </text> - <scroll_list bottom_delta="-385" height="360" name="gesture_list"> - <column label="Botón" name="trigger"/> - <column label="Tecla" name="shortcut"/> - <column label="Nombre" name="name"/> +<floater label="Lugares" name="gestures" title="GESTOS"> + <floater.string name="loading"> + Cargando... + </floater.string> + <floater.string name="playing"> + (Ejecutándose) + </floater.string> + <floater.string name="copy_name"> + Copia de [COPY_NAME] + </floater.string> + <scroll_list bottom_delta="-385" height="360" name="gesture_list"> + <scroll_list.columns label="Nombre" name="name"/> + <scroll_list.columns label="Chat" name="trigger"/> + <scroll_list.columns label="Tecla" name="shortcut"/> </scroll_list> - <button label="Nuevo" name="new_gesture_btn"/> + <panel label="bottom_panel" name="bottom_panel"> + <menu_button name="gear_btn" tool_tip="Más opciones"/> + <button name="new_gesture_btn" tool_tip="Hacer un gesto nuevo"/> + <button name="activate_btn" tool_tip="Activar/Desactivar el gesto elegido"/> + <button name="del_btn" tool_tip="Borrar este gesto"/> + </panel> <button label="Editar" name="edit_btn"/> <button label="Reproducir" name="play_btn"/> <button label="Parar" name="stop_btn"/> diff --git a/indra/newview/skins/default/xui/es/floater_god_tools.xml b/indra/newview/skins/default/xui/es/floater_god_tools.xml index 78ec76e32b..b604f7f46f 100644 --- a/indra/newview/skins/default/xui/es/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/es/floater_god_tools.xml @@ -1,52 +1,37 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="godtools floater" title="HERRAMIENTAS DE DIOS"> <tab_container name="GodTools Tabs"> <panel label="Red" name="grid"> - <button label="Expulsar a todos los usuarios" - label_selected="Expulsar a todos los usuarios" name="Kick all users" /> - <button label="Vaciar los caches de visibilidad del mapa de la región" - label_selected="Vaciar los caches de visibilidad del mapa de la región" - name="Flush This Region's Map Visibility Caches" /> + <button label="Expulsar a todos los usuarios" label_selected="Expulsar a todos los usuarios" name="Kick all users"/> + <button label="Vaciar los caches de visibilidad del mapa de la región" label_selected="Vaciar los caches de visibilidad del mapa de la región" name="Flush This Region's Map Visibility Caches"/> </panel> <panel label="Región" name="region"> <text name="Sim Name:"> Nombre del Sim: </text> - <check_box label="Preludio" name="check prelude" - tool_tip="Defina esté para hacer un preludio de la región." /> - <check_box label="Sol fijo" name="check fixed sun" - tool_tip="Fijar la posición del sol (así como en Región/Propiedad > Terreno." /> - <check_box label="Restaurar casa en el teletransporte" name="check reset home" - tool_tip="Cuando el residente sea teletransportado hacia fuera, restaurar su casa para la posición de destino." /> - <check_box label="Visible" name="check visible" - tool_tip="Defina esté para tornar la región visible a no dioses." /> - <check_box label="Daño" name="check damage" - tool_tip="Defina esté para activar el daño en esta región." /> - <check_box label="Bloquear rastreo de tráfico" name="block dwell" - tool_tip="Defina esté para hacer que una región no compute el tráfico." /> - <check_box label="Bloquear formar terreno" name="block terraform" - tool_tip="Defina esté para no permitir que personas muden la formación del terreno de ellas" /> - <check_box label="Caja de arena" name="is sandbox" - tool_tip="Activar/desactivar si ésta es una región caja de arena." /> - <button label="Formar terreno" label_selected="Formar terreno" name="Bake Terrain" - tool_tip="Guardar el terreno actual como patrón." /> - <button label="Revertir terreno" label_selected="Revertir terreno" - name="Revert Terrain" - tool_tip="Sustituir el terreno actual por el patrón." /> - <button label="Cambiar terreno" label_selected="Cambiar terreno" name="Swap Terrain" - tool_tip="Cambiar terreno actual por el patrón." /> + <check_box label="Preludio" name="check prelude" tool_tip="Defina esté para hacer un preludio de la región."/> + <check_box label="Sol fijo" name="check fixed sun" tool_tip="Fijar la posición del sol (así como en Región/Propiedad > Terreno."/> + <check_box label="Restaurar casa en el teletransporte" name="check reset home" tool_tip="When Resident teleports out, reset their home to the destination position."/> + <check_box label="Visible" name="check visible" tool_tip="Defina esté para tornar la región visible a no dioses."/> + <check_box label="Daño" name="check damage" tool_tip="Defina esté para activar el daño en esta región."/> + <check_box label="Bloquear rastreo de tráfico" name="block dwell" tool_tip="Defina esté para hacer que una región no compute el tráfico."/> + <check_box label="Bloquear formar terreno" name="block terraform" tool_tip="Defina esté para no permitir que personas muden la formación del terreno de ellas"/> + <check_box label="Caja de arena" name="is sandbox" tool_tip="Activar/desactivar si ésta es una región caja de arena."/> + <button label="Formar terreno" label_selected="Formar terreno" name="Bake Terrain" tool_tip="Guardar el terreno actual como patrón."/> + <button label="Revertir terreno" label_selected="Revertir terreno" name="Revert Terrain" tool_tip="Sustituir el terreno actual por el patrón."/> + <button label="Cambiar terreno" label_selected="Cambiar terreno" name="Swap Terrain" tool_tip="Cambiar terreno actual por el patrón."/> <text name="estate id"> ID de la propiedad: </text> <text name="parent id"> ID del padre: </text> - <line_editor name="parentestate" tool_tip="Ésta es una propiedad padre para esta región" /> + <line_editor name="parentestate" tool_tip="Ésta es una propiedad padre para esta región"/> <text name="Grid Pos: "> Red Pos: </text> - <line_editor name="gridposx" tool_tip="Ésta es la posición x de la reja para esta región" /> - <line_editor name="gridposy" tool_tip="Ésta es la posición y de la reja para esta región" /> + <line_editor name="gridposx" tool_tip="Ésta es la posición x de la reja para esta región"/> + <line_editor name="gridposy" tool_tip="Ésta es la posición y de la reja para esta región"/> <text name="Redirect to Grid: "> Redireccionar para red: </text> @@ -56,16 +41,10 @@ <text name="land cost text"> L$ por m²: </text> - <button label="Actualizar" label_selected="Actualizar" name="Refresh" - tool_tip="Haga clic aquí para actualizar la información arriba." /> - <button label="Aplicar" label_selected="Aplicar" name="Apply" - tool_tip="Haga clic aquí para aplicar cualesquiera de las mudanzas arriba." /> - <button label="Seleccionar región" label_selected="Seleccionar región" - name="Select Region" - tool_tip="Seleccione toda la región con esta herramienta de terreno." /> - <button label="Guardado automático ahora" label_selected="Guardado automático ahora" - name="Autosave now" - tool_tip="Guardar estado con gzip en el directorio de guardado automático." /> + <button label="Actualizar" label_selected="Actualizar" name="Refresh" tool_tip="Haga clic aquí para actualizar la información arriba."/> + <button label="Aplicar" label_selected="Aplicar" name="Apply" tool_tip="Haga clic aquí para aplicar cualesquiera de las mudanzas arriba."/> + <button label="Seleccionar región" label_selected="Seleccionar región" name="Select Region" tool_tip="Seleccione toda la región con esta herramienta de terreno."/> + <button label="Guardado automático ahora" label_selected="Guardado automático ahora" name="Autosave now" tool_tip="Guardar estado con gzip en el directorio de guardado automático."/> </panel> <panel label="Objetos" name="objects"> <text name="Sim Name:"> @@ -74,62 +53,42 @@ <text name="region name"> Galés </text> - <check_box label="Desactivar scripts" name="disable scripts" - tool_tip="Defina esté para desactivar todos los scripts en esta región" /> - <check_box label="Desactivar colisiones" name="disable collisions" - tool_tip="Defina esté para desactivar las colisiones entre no agentes en esta región" /> - <check_box label="Desactivar física" name="disable physics" - tool_tip="Defina esté para desactivar toda la física en esta región" /> - <button label="Aplicar" label_selected="Aplicar" name="Apply" - tool_tip="Haga clic aquí para aplicar cualesquiera de las mudanzas arriba." /> - <button label="Definir blanco" label_selected="Definir blanco" name="Set Target" - tool_tip="Ajuste el avatar del blanco para la exclusión del objeto." /> + <check_box label="Desactivar scripts" name="disable scripts" tool_tip="Defina esté para desactivar todos los scripts en esta región"/> + <check_box label="Desactivar colisiones" name="disable collisions" tool_tip="Defina esté para desactivar las colisiones entre no agentes en esta región"/> + <check_box label="Desactivar física" name="disable physics" tool_tip="Defina esté para desactivar toda la física en esta región"/> + <button label="Aplicar" label_selected="Aplicar" name="Apply" tool_tip="Haga clic aquí para aplicar cualesquiera de las mudanzas arriba."/> + <button label="Definir blanco" label_selected="Definir blanco" name="Set Target" tool_tip="Ajuste el avatar del blanco para la exclusión del objeto."/> <text name="target_avatar_name"> (sin blanco) </text> - <button label="Borrar objetos con script del blanco en otros terrenos" - label_selected="Borrar objetos con script del blanco en otros terrenos" - name="Delete Target's Scripted Objects On Others Land" - tool_tip="Borrar todos los objetos con script pertenecientes al blanco en el terreno que no pertenece a él. Objetos (sin copia) retornarán." /> - <button label="Borrar objetos con script del blanco en *TODOS* los terrenos" - label_selected="Borrar objetos con script del blanco en *TODOS* los terrenos" - name="Delete Target's Scripted Objects On *Any* Land" - tool_tip="Borrar todos los objetos con script pertenecientes al blanco en esta región. Objetos (sin copia) retornarán." /> - <button label="Borrar *TODOS* los objetos del blanco" - label_selected="Borrar *TODOS* los objetos del blanco" - name="Delete *ALL* Of Target's Objects" - tool_tip="Borrar todos los objetos pertenecientes al blanco en esta región. Objetos (sin copia) retornarán." /> - <button label="Obtener top de colisionadores" - label_selected="Obtener top de colisionadores" name="Get Top Colliders" - tool_tip="Coger lista de objetos que están recibiendo narrowphase callbacks." /> - <button label="Obtener top de scripts" label_selected="Obtener top de scripts" - name="Get Top Scripts" - tool_tip="Coger lista de objetos que están consumiendo más tiempo de ejecución de scripts." /> - <button label="Compilador de scripts" label_selected="Compilador de scripts" - name="Scripts digest" - tool_tip="Coger una lista de todos los scripts y sus respectivos números de ocurrencia." /> + <button label="Borrar objetos con script del blanco en otros terrenos" label_selected="Borrar objetos con script del blanco en otros terrenos" name="Delete Target's Scripted Objects On Others Land" tool_tip="Borrar todos los objetos con script pertenecientes al blanco en el terreno que no pertenece a él. Objetos (sin copia) retornarán."/> + <button label="Borrar objetos con script del blanco en *TODOS* los terrenos" label_selected="Borrar objetos con script del blanco en *TODOS* los terrenos" name="Delete Target's Scripted Objects On *Any* Land" tool_tip="Borrar todos los objetos con script pertenecientes al blanco en esta región. Objetos (sin copia) retornarán."/> + <button label="Borrar *TODOS* los objetos del blanco" label_selected="Borrar *TODOS* los objetos del blanco" name="Delete *ALL* Of Target's Objects" tool_tip="Borrar todos los objetos pertenecientes al blanco en esta región. Objetos (sin copia) retornarán."/> + <button label="Obtener top de colisionadores" label_selected="Obtener top de colisionadores" name="Get Top Colliders" tool_tip="Coger lista de objetos que están recibiendo narrowphase callbacks."/> + <button label="Obtener top de scripts" label_selected="Obtener top de scripts" name="Get Top Scripts" tool_tip="Coger lista de objetos que están consumiendo más tiempo de ejecución de scripts."/> + <button label="Compilador de scripts" label_selected="Compilador de scripts" name="Scripts digest" tool_tip="Coger una lista de todos los scripts y sus respectivos números de ocurrencia."/> </panel> <panel label="Requerir" name="request"> <text name="Destination:"> Destino: </text> <combo_box name="destination"> - <combo_box.item name="item1" label="Selección" /> - <combo_box.item name="item2" label="Agente de región" /> + <combo_box.item label="Selección" name="item1"/> + <combo_box.item label="Agente de región" name="item2"/> </combo_box> <text name="Request:"> Exigencia: </text> <combo_box name="request"> - <combo_box.item name="item1" label="colisionadores <pasos>" /> - <combo_box.item name="item2" label="scripts <contar>,<patrón opcional>" /> - <combo_box.item name="item3" label="objetos <patrón>" /> - <combo_box.item name="item4" label="rez <asset_id>" /> + <combo_box.item label="colisionadores <pasos>" name="item1"/> + <combo_box.item label="scripts <contar>,<patrón opcional>" name="item2"/> + <combo_box.item label="objetos <patrón>" name="item3"/> + <combo_box.item label="rez <asset_id>" name="item4"/> </combo_box> <text name="Parameter:"> Parámetro: </text> - <button label="Hacer exigencia" label_selected="Hacer exigencia" name="Make Request" /> + <button label="Hacer exigencia" label_selected="Hacer exigencia" name="Make Request"/> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_hardware_settings.xml b/indra/newview/skins/default/xui/es/floater_hardware_settings.xml index 9418252036..f967d697c5 100644 --- a/indra/newview/skins/default/xui/es/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/es/floater_hardware_settings.xml @@ -8,21 +8,21 @@ Antialiasing: </text> <combo_box label="Antialiasing" name="fsaa" width="94"> - <combo_box.item name="FSAADisabled" label="Desactivado"/> - <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="Desactivado" 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)"> - (brillo; menor es más brillante, 0=predeterminado) + (0 = brillo por defecto, más bajo = más brillo) </text> <text name="Enable VBO:"> Activar VBO: </text> - <check_box label="Activar OpenGL Vertex Buffer Objects" name="vbo" tool_tip="En hardware moderno, habilitar esta opción mejora el rendimiento. Pero en hardware antiguo, el habilitarlo hace que, frecuentemente, se obtenga una implementación pobre de VBO, lo que puede provocarle caídas."/> - <slider label_width="150" left="10" width="300" label="Memoria para texturas (MB):" name="GrapicsCardTextureMemory" tool_tip="Cantidad de memoria asignada a las texturas. Por defecto es la memoria de la tarjeta de vídeo. Reducir esta cantidad puede mejorar el rendimiento, pero también puede hacer que las texturas se vean borrosas."/> + <check_box initial_value="true" label="Activar OpenGL Vertex Buffer Objects" name="vbo" tool_tip="En hardware moderno, habilitar esta opción mejora el rendimiento. Pero en hardware antiguo, el habilitarlo hace que, frecuentemente, se obtenga una implementación pobre de VBO, lo que puede provocarle caídas."/> + <slider label="Memoria para texturas (MB):" name="GraphicsCardTextureMemory" tool_tip="Cantidad de memoria asignada a las texturas. Por defecto es la memoria de la tarjeta de vídeo. Reducir esta cantidad puede mejorar el rendimiento, pero también hacer que las texturas se vean borrosas."/> <spinner label="Intensidad de la niebla:" name="fog"/> <button label="OK" label_selected="OK" name="OK"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_help_browser.xml b/indra/newview/skins/default/xui/es/floater_help_browser.xml new file mode 100644 index 0000000000..ec3c38e8c7 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_help_browser.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_help_browser" title="BUSCADOR DE AYUDA"> + <floater.string name="loading_text"> + Cargando... + </floater.string> + <layout_stack name="stack1"> + <layout_panel name="external_controls"/> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_im.xml b/indra/newview/skins/default/xui/es/floater_im.xml index 3e92003bac..d87623c3df 100644 --- a/indra/newview/skins/default/xui/es/floater_im.xml +++ b/indra/newview/skins/default/xui/es/floater_im.xml @@ -10,7 +10,7 @@ Pulse el botón [BUTTON NAME] para aceptar/conectar este chat de voz. </string> <string name="muted_message"> - Ha ignorado a este residente. Al enviarle un mensaje, automáticamente dejará de ignorarle. + Has ignorado a este residente. Le designorarás automáticamente enviándole un mensaje. </string> <string name="generic_request_error"> Error al hacer lo solicitado; por favor, inténtelo más tarde. diff --git a/indra/newview/skins/default/xui/es/floater_im_container.xml b/indra/newview/skins/default/xui/es/floater_im_container.xml new file mode 100644 index 0000000000..1cd752e6ec --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_im_container.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<multi_floater name="floater_im_box" title="CONVERSACIONES"/> diff --git a/indra/newview/skins/default/xui/es/floater_im_session.xml b/indra/newview/skins/default/xui/es/floater_im_session.xml new file mode 100644 index 0000000000..c7312e609b --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Panel de control de MI" 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/es/floater_image_preview.xml b/indra/newview/skins/default/xui/es/floater_image_preview.xml index 6d51a800b7..0ad91265c9 100644 --- a/indra/newview/skins/default/xui/es/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/es/floater_image_preview.xml @@ -10,17 +10,17 @@ Previsualizar la imagen como: </text> - <combo_box label="Tipo de ropa" name="clothing_type_combo" left="100" width="186"> - <combo_box.item name="Image" label="Imagen" /> - <combo_box.item name="Hair" label="Pelo" /> - <combo_box.item name="FemaleHead" label="Cabeza de mujer" /> - <combo_box.item name="FemaleUpperBody" label="Mujer: parte superior del cuerpo" /> - <combo_box.item name="FemaleLowerBody" label="Mujer: parte inferior del cuerpo" /> - <combo_box.item name="MaleHead" label="Cabeza de varón" /> - <combo_box.item name="MaleUpperBody" label="Varón: parte superior del cuerpo" /> - <combo_box.item name="MaleLowerBody" label="Varón: parte inferior del cuerpo" /> - <combo_box.item name="Skirt" label="Falda" /> - <combo_box.item name="SculptedPrim" label="Prim sculpted"/> + <combo_box label="Tipo de ropa" left="100" name="clothing_type_combo" width="186"> + <combo_box.item label="Imagen" name="Image"/> + <combo_box.item label="Pelo" name="Hair"/> + <combo_box.item label="Mujer: cabeza" name="FemaleHead"/> + <combo_box.item label="Mujer: parte superior del cuerpo" name="FemaleUpperBody"/> + <combo_box.item label="Mujer: parte inferior del cuerpo" name="FemaleLowerBody"/> + <combo_box.item label="Varón: cabeza" name="MaleHead"/> + <combo_box.item label="Varón: parte superior del cuerpo" name="MaleUpperBody"/> + <combo_box.item label="Varón: parte inferior del cuerpo" name="MaleLowerBody"/> + <combo_box.item label="Falda" name="Skirt"/> + <combo_box.item label="Prim sculpted" name="SculptedPrim"/> </combo_box> <text name="bad_image_text"> Imposible leer la imagen. diff --git a/indra/newview/skins/default/xui/es/floater_incoming_call.xml b/indra/newview/skins/default/xui/es/floater_incoming_call.xml new file mode 100644 index 0000000000..2b5fc7f193 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_incoming_call.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="incoming call" title="ESTÁ LLAMANDO ALGUIEN DESCONOCIDO"> + <floater.string name="lifetime"> + 5 + </floater.string> + <floater.string name="localchat"> + Chat de voz + </floater.string> + <floater.string name="anonymous"> + anónimo + </floater.string> + <floater.string name="VoiceInviteP2P"> + está llamando. + </floater.string> + <floater.string name="VoiceInviteAdHoc"> + ha entrado en un chat de voz en multiconferencia. + </floater.string> + <floater.string name="VoiceInviteGroup"> + ha hecho una llamada de voz al grupo [GROUP]. + </floater.string> + <text name="question"> + ¿Quieres dejar [CURRENT_CHAT] y entrar a este chat de voz? + </text> + <button label="Aceptar" label_selected="Aceptar" name="Accept"/> + <button label="Expulsar" label_selected="Expulsar" name="Reject"/> + <button label="Comenzar un MI" name="Start IM"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_inspect.xml b/indra/newview/skins/default/xui/es/floater_inspect.xml index 3c8b38648f..d95653ddd0 100644 --- a/indra/newview/skins/default/xui/es/floater_inspect.xml +++ b/indra/newview/skins/default/xui/es/floater_inspect.xml @@ -1,11 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="inspect" title="EXAMINAR OBJETOS" min_width="450"> +<floater min_width="450" name="inspect" title="EXAMINAR LOS OBJETOS"> + <floater.string name="timeStamp"> + [wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local] + </floater.string> <scroll_list name="object_list" tool_tip="Seleccione un objeto de esta lista para realzarlo en el mundo"> - <column label="Nombre del objeto" name="object_name"/> - <column label="Propietario" name="owner_name"/> - <column label="Creador" name="creator_name"/> - <column label="Fecha de creación" name="creation_date"/> + <scroll_list.columns label="Nombre del objeto" name="object_name"/> + <scroll_list.columns label="Propietario" name="owner_name"/> + <scroll_list.columns label="Creador" name="creator_name"/> + <scroll_list.columns label="Fecha de creación" name="creation_date"/> </scroll_list> - <button width="185" label="Ver el perfil del propietario..." label_selected="" name="button owner" tool_tip="Ver el perfil del propietario del objeto realzado"/> - <button width="165" left="205" label="Ver el perfil del creador..." label_selected="" name="button creator" tool_tip="Ver el perfil del creador original del objeto realzado"/> + <button label="Ver el perfil del propietario..." label_selected="" name="button owner" tool_tip="Ver el perfil del propietario del objeto realzado" width="185"/> + <button label="Ver el perfil del creador..." label_selected="" left="205" name="button creator" tool_tip="Ver el perfil del creador original del objeto realzado" width="165"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_inventory.xml b/indra/newview/skins/default/xui/es/floater_inventory.xml index 8d16d6089e..0f0ba2fce6 100644 --- a/indra/newview/skins/default/xui/es/floater_inventory.xml +++ b/indra/newview/skins/default/xui/es/floater_inventory.xml @@ -1,47 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Inventory" title="INVENTARIO"> - <search_editor label="Escriba aquí para buscar" name="inventory search editor"/> - <tab_container name="inventory filter tabs"> - <inventory_panel label="Todos los ítems" name="All Items"/> - <inventory_panel label="Ítems recientes" name="Recent Items"/> - </tab_container> - <menu_bar name="Inventory Menu"> - <menu label="Archivo" name="File"> - <menu_item_call label="Abrir" name="Open"/> - <menu_item_call label="Nueva ventana" name="New Window"/> - <menu_item_call label="Ver los filtros" name="Show Filters"/> - <menu_item_call label="Restablecer los filtros" name="Reset Current"/> - <menu_item_call label="Cerrar todas las carpetas" name="Close All Folders"/> - <menu_item_call label="Vaciar la papelera" name="Empty Trash"/> - </menu> - <menu label="Crear" name="Create"> - <menu_item_call label="Carpeta nueva" name="New Folder"/> - <menu_item_call label="Script nuevo" name="New Script"/> - <menu_item_call label="Nota nueva" name="New Note"/> - <menu_item_call label="Gesto nuevo" name="New Gesture"/> - <menu name="New Clothes"> - <menu_item_call label="Falda nueva" name="New Shirt"/> - <menu_item_call label="Pantalones nuevos" name="New Pants"/> - <menu_item_call label="Zapatos nuevos" name="New Shoes"/> - <menu_item_call label="Calcetines nuevos" name="New Socks"/> - <menu_item_call label="Chaqueta nueva" name="New Jacket"/> - <menu_item_call label="Falda nueva" name="New Skirt"/> - <menu_item_call label="Guantes nuevos" name="New Gloves"/> - <menu_item_call label="Camiseta nueva" name="New Undershirt"/> - <menu_item_call label="Ropa interior nueva" name="New Underpants"/> - </menu> - <menu name="New Body Parts"> - <menu_item_call label="Forma nueva" name="New Shape"/> - <menu_item_call label="Piel nueva" name="New Skin"/> - <menu_item_call label="Pelo nuevo" name="New Hair"/> - <menu_item_call label="Ojos nuevos" name="New Eyes"/> - </menu> - </menu> - <menu label="Ordenar" name="Sort"> - <menu_item_check label="Por el nombre" name="By Name"/> - <menu_item_check label="Por la fecha" name="By Date"/> - <menu_item_check label="Las carpetas, siempre por la fecha" name="Folders Always By Name"/> - <menu_item_check label="Las carpetas del sistema, arriba" name="System Folders To Top"/> - </menu> - </menu_bar> +<floater name="Inventory" title="MI INVENTARIO"> + <floater.string name="Title"> + MI INVENTARIO + </floater.string> + <floater.string name="TitleFetching"> + MI INVENTARIO (obteniendo [ITEM_COUNT] ítems...) [FILTER] + </floater.string> + <floater.string name="TitleCompleted"> + MI INVENTARIO ([ITEM_COUNT] ítems) [FILTER] + </floater.string> + <floater.string name="Fetched"> + Obtenido + </floater.string> + <panel label="Panel del inventario" name="Inventory Panel"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml index 7abdfceb94..5746688962 100644 --- a/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/es/floater_inventory_item_properties.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="item properties" title="PROPIEDADES DEL ÍTEM DEL INVENTARIO"> + <floater.string name="unknown"> + (desconocido) + </floater.string> + <floater.string name="public"> + (público) + </floater.string> + <floater.string name="you_can"> + Usted puede: + </floater.string> + <floater.string name="owner_can"> + El propietario puede: + </floater.string> + <floater.string name="acquiredDate"> + [wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local] + </floater.string> <text name="LabelItemNameTitle"> Nombre: </text> @@ -27,55 +42,32 @@ May Mié 24 12:50:46 2006 </text> <text name="OwnerLabel"> - Usted puede: - </text> - <check_box label="Modificarlo" name="CheckOwnerModify"/> - <check_box left_delta="88" label="Copiarlo" name="CheckOwnerCopy"/> - <check_box label="Venderlo/darlo" name="CheckOwnerTransfer"/> - <text name="BaseMaskDebug"> - B: - </text> - <text name="OwnerMaskDebug"> - O: + Tú: </text> - <text name="GroupMaskDebug"> - G: + <check_box label="Editar" name="CheckOwnerModify"/> + <check_box label="Copiarlo" left_delta="88" name="CheckOwnerCopy"/> + <check_box label="Revender" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Cualquiera: </text> - <text name="EveryoneMaskDebug"> - E: + <check_box label="Copiar" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Grupo: </text> - <text name="NextMaskDebug"> - N: - </text> - <check_box label="Compartir con el grupo" name="CheckShareWithGroup"/> - <check_box label="Permitir a cualquiera que lo copie" name="CheckEveryoneCopy"/> + <check_box label="Compartir" name="CheckShareWithGroup"/> <text name="NextOwnerLabel" width="230"> - El próximo propietario puede: - </text> - <check_box label="Modificarlo" name="CheckNextOwnerModify"/> - <check_box left_delta="88" label="Copiarlo" name="CheckNextOwnerCopy"/> - <check_box label="Revenderlo/darlo" name="CheckNextOwnerTransfer"/> - <text name="SaleLabel"> - Marcar ítem como: + Próximo propietario: </text> + <check_box label="Editar" name="CheckNextOwnerModify"/> + <check_box label="Copiarlo" left_delta="88" name="CheckNextOwnerCopy"/> + <check_box label="Revender" name="CheckNextOwnerTransfer"/> <check_box label="En venta" name="CheckPurchase"/> - <radio_group name="RadioSaleType" left_delta="88" > - <radio_item name="radio" label="Original" /> - <radio_item name="radio2" label="Copia" /> - </radio_group> - <text name="TextPrice"> - Precio: L$ + <combo_box name="combobox sale copy"> + <combo_box.item label="Copia" name="Copy"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Precio:" name="Edit Cost"/> + <text name="CurrencySymbol"> + L$ </text> - <string name="unknown"> - (desconocido) - </string> - <string name="public"> - (público) - </string> - <string name="you_can"> - Usted puede: - </string> - <string name="owner_can"> - El propietario puede: - </string> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_joystick.xml b/indra/newview/skins/default/xui/es/floater_joystick.xml index 75c53dd646..283a46b60b 100644 --- a/indra/newview/skins/default/xui/es/floater_joystick.xml +++ b/indra/newview/skins/default/xui/es/floater_joystick.xml @@ -1,23 +1,23 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Joystick" title="CONFIGURACIÓN DEL JOYSTICK"> - <check_box name="enable_joystick" label="Activar el joystick:"/> + <check_box label="Activar el joystick:" name="enable_joystick"/> <text left="140" name="joystick_type" width="360"/> - <spinner label="Mapping: eje X" name="JoystickAxis1" label_width="118" width="161"/> - <spinner label="Mapping: eje Y" name="JoystickAxis2" label_width="105" width="148"/> - <spinner label="Mapping: eje Z" name="JoystickAxis0" label_width="95" width="138"/> - <spinner label="Mapping: arriba/abajo" name="JoystickAxis4" label_width="118" width="161"/> - <spinner label="Mapping: izq./der." name="JoystickAxis5" label_width="105" width="148"/> - <spinner label="Mapping: giro" name="JoystickAxis3" label_width="95" width="138"/> - <spinner label="Mapping: zoom" name="JoystickAxis6" label_width="118" width="161"/> + <spinner label="Mapping: eje X" label_width="118" name="JoystickAxis1" width="161"/> + <spinner label="Mapping: eje Y" label_width="105" name="JoystickAxis2" width="148"/> + <spinner label="Mapping: eje Z" label_width="95" name="JoystickAxis0" width="138"/> + <spinner label="Mapping: arriba/abajo" label_width="118" name="JoystickAxis4" width="161"/> + <spinner label="Mapping: izq./der." label_width="105" name="JoystickAxis5" width="148"/> + <spinner label="Mapping: giro" label_width="95" name="JoystickAxis3" width="138"/> + <spinner label="Mapping: zoom" label_width="118" name="JoystickAxis6" width="161"/> <check_box label="Zoom directo" name="ZoomDirect"/> <check_box label="Cursor 3D" name="Cursor3D"/> <check_box label="Nivel automático" name="AutoLeveling"/> <text name="Control Modes:"> Modos de control: </text> - <check_box name="JoystickAvatarEnabled" label="Avatar"/> - <check_box name="JoystickBuildEnabled" left="192" label="Construir"/> - <check_box name="JoystickFlycamEnabled" label="Flycam"/> + <check_box label="Avatar" name="JoystickAvatarEnabled"/> + <check_box label="Construir" left="192" name="JoystickBuildEnabled"/> + <check_box label="Flycam" name="JoystickFlycamEnabled"/> <text name="XScale"> Escala: X </text> @@ -27,7 +27,7 @@ <text name="ZScale"> Escala: Z </text> - <text name="PitchScale" left="3" width="115"> + <text left="3" name="PitchScale" width="115"> Escala: arriba/abajo </text> <text name="YawScale"> @@ -45,10 +45,10 @@ <text name="ZDeadZone"> Zona muerta Z </text> - <text name="PitchDeadZone" left="3" width="115"> + <text left="3" name="PitchDeadZone" width="115"> Zona muerta arri./aba. </text> - <text name="YawDeadZone" left="3" width="115"> + <text left="3" name="YawDeadZone" width="115"> Zona muerta izq./der. </text> <text name="RollDeadZone"> @@ -63,9 +63,9 @@ <text name="ZoomDeadZone"> Zona muerta zoom </text> - <button label="Predeterminados del SpaceNavigator" name="SpaceNavigatorDefaults" font="SansSerifSmall" left="330" width="210"/> - <button label="OK" label_selected="OK" name="ok_btn" left="330"/> - <button label="Cancelar" label_selected="Cancelar" name="cancel_btn" left_delta="120"/> + <button font="SansSerifSmall" label="Predeterminados del SpaceNavigator" left="330" name="SpaceNavigatorDefaults" width="210"/> + <button label="OK" label_selected="OK" left="330" name="ok_btn"/> + <button label="Cancelar" label_selected="Cancelar" left_delta="120" name="cancel_btn"/> <stat_view label="Monitor del joystick" name="axis_view"> <stat_bar label="Eje 0" name="axis0"/> <stat_bar label="Eje 1" name="axis1"/> diff --git a/indra/newview/skins/default/xui/es/floater_lagmeter.xml b/indra/newview/skins/default/xui/es/floater_lagmeter.xml index 54c4ce8c6a..227689a194 100644 --- a/indra/newview/skins/default/xui/es/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/es/floater_lagmeter.xml @@ -1,155 +1,154 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_lagmeter" title="MEDIDOR DEL LAG"> - <button label="" label_selected="" name="client_lagmeter" tool_tip="Estado del lag del cliente"/> - <text name="client"> - Cliente: - </text> - <text name="client_text" font="SansSerifSmall"> - Normal - </text> - <text left="30" name="client_lag_cause" right="-10" /> - <button label="" label_selected="" name="network_lagmeter" tool_tip="Estado del lag de la red"/> - <text name="network"> - Red: - </text> - <text name="network_text" font="SansSerifSmall"> - Normal - </text> - <text left="30" name="network_lag_cause" right="-10" /> - <button label="" label_selected="" name="server_lagmeter" tool_tip="Estado del lag del servidor"/> - <text name="server"> - Servidor: - </text> - <text name="server_text" font="SansSerifSmall"> - Normal - </text> - <text left="30" name="server_lag_cause" right="-32" /> - <button label="?" name="server_help"/> - <button label=">>" name="minimize"/> - <string name="max_title_msg"> + <floater.string name="max_title_msg"> Medidor 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"> Cliente - </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"> Normal, ventana en segundo plano - </string> - <string name="client_frame_time_critical_msg"> + </floater.string> + <floater.string name="client_frame_time_critical_msg"> Frames del cliente valorados por debajo de [CLIENT_FRAME_RATE_CRITICAL] - </string> - <string name="client_frame_time_warning_msg"> + </floater.string> + <floater.string name="client_frame_time_warning_msg"> Frames del cliente valorados entre [CLIENT_FRAME_RATE_CRITICAL] y [CLIENT_FRAME_RATE_WARNING] - </string> - <string name="client_frame_time_normal_msg"> + </floater.string> + <floater.string name="client_frame_time_normal_msg"> Normal - </string> - <string name="client_draw_distance_cause_msg"> + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> Posible causa: distancia de dibujo fijada muy alta - </string> - <string name="client_texture_loading_cause_msg"> + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> Posible causa: imágenes cargándose - </string> - <string name="client_texture_memory_cause_msg"> + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> Posible causa: demasiadas imágenes en la memoria - </string> - <string name="client_complex_objects_cause_msg"> + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> Posible causa: demasiados objetos complejos en la escena - </string> - <string name="network_text_msg"> + </floater.string> + <floater.string name="network_text_msg"> Red - </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 conexión deja caer más del [NETWORK_PACKET_LOSS_CRITICAL]% de los paquetes - </string> - <string name="network_packet_loss_warning_msg"> + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> La conexión deja caer [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% de los paquetes - </string> - <string name="network_performance_normal_msg"> + </floater.string> + <floater.string name="network_performance_normal_msg"> Normal - </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"> El tiempo de conexión -ping- supera los [NETWORK_PING_CRITICAL] ms - </string> - <string name="network_ping_warning_msg"> + </floater.string> + <floater.string name="network_ping_warning_msg"> El tiempo de conexión -ping- es de [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"> Quizá una mala conexión o un ancho de banda fijado demasiado alto. - </string> - <string name="network_ping_cause_msg"> + </floater.string> + <floater.string name="network_ping_cause_msg"> Quizá una mala conexión o una aplicación de archivos compartidos. - </string> - <string name="server_text_msg"> + </floater.string> + <floater.string name="server_text_msg"> Servidor - </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"> Frecuencia (framerate) por debajo de [SERVER_FRAME_RATE_CRITICAL] - </string> - <string name="server_frame_time_warning_msg"> + </floater.string> + <floater.string name="server_frame_time_warning_msg"> Frecuencia (framerate) entre [SERVER_FRAME_RATE_CRITICAL] y [SERVER_FRAME_RATE_WARNING] - </string> - <string name="server_frame_time_normal_msg"> + </floater.string> + <floater.string name="server_frame_time_normal_msg"> Normal - </string> - <string name="server_physics_cause_msg"> + </floater.string> + <floater.string name="server_physics_cause_msg"> Posible causa: demasiados objetos físicos - </string> - <string name="server_scripts_cause_msg"> + </floater.string> + <floater.string name="server_scripts_cause_msg"> Posible causa: demasiados objetos con script - </string> - <string name="server_net_cause_msg"> + </floater.string> + <floater.string name="server_net_cause_msg"> Posible causa: demasiado tráfico en la red - </string> - <string name="server_agent_cause_msg"> + </floater.string> + <floater.string name="server_agent_cause_msg"> Posible causa: demasiada gente moviéndose en la región - </string> - <string name="server_images_cause_msg"> + </floater.string> + <floater.string name="server_images_cause_msg"> Posible causa: demasiados cálculos de imáganes - </string> - <string name="server_generic_cause_msg"> + </floater.string> + <floater.string name="server_generic_cause_msg"> Posible causa: carga del simulador muy pesada - </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="Estado del lag del cliente"/> + <text name="client"> + Cliente + </text> + <text font="SansSerifSmall" name="client_text"> + Normal + </text> + <text left="30" name="client_lag_cause" right="-10"/> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Estado del lag de la red"/> + <text name="network"> + Red + </text> + <text font="SansSerifSmall" name="network_text"> + Normal + </text> + <text left="30" name="network_lag_cause" right="-10"/> + <button label="" label_selected="" name="server_lagmeter" tool_tip="Estado del lag del servidor"/> + <text name="server"> + Servidor + </text> + <text font="SansSerifSmall" name="server_text"> + Normal + </text> + <text left="30" name="server_lag_cause" right="-32"/> + <button label=">>" name="minimize" tool_tip="Cambia el tamaño de la ventana"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_land_holdings.xml b/indra/newview/skins/default/xui/es/floater_land_holdings.xml index bcdebf4588..36a02b7300 100644 --- a/indra/newview/skins/default/xui/es/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/es/floater_land_holdings.xml @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="land holdings floater" title="MI TERRENO"> <scroll_list name="parcel list"> - <column label="Nombre de la parcela" name="name"/> + <column label="Parcela" name="name"/> <column label="Región" name="location"/> <column label="Tipo" name="type"/> <column label="Superficie" name="area"/> <column label="" name="hidden"/> </scroll_list> <button label="Teleportar" label_selected="Teleportar" name="Teleport" tool_tip="Teleportar al centro de este terreno."/> - <button width="130" label="Mostrar en el mapa" label_selected="Mostrar en el mapa" name="Show on Map" tool_tip="Mostrar este terreno en el mapa del mundo."/> + <button label="Mapa" label_selected="Mapa" name="Show on Map" tool_tip="Mostrar este terreno en el mapa del mundo" width="130"/> <text name="contrib_label"> Contribuciones a sus grupos: </text> diff --git a/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml index 02be809319..4ff54bccb5 100644 --- a/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/es/floater_live_lsleditor.xml @@ -1,12 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="script ed float" title="SCRIPT: SCRIPT NUEVO"> - <button label="Reiniciar" label_selected="Reiniciar" name="Reset"/> - <check_box label="Ejecutándose" name="running" left="4"/> - <check_box label="Mono" name="mono" left="106"/> - <string name="not_allowed"> - No está autorizado para ver este script. - </string> - <string name="script_running"> + <floater.string name="not_allowed"> + No puedes ver ni editar este script. Ha sido configurado como "no copiable". Necesitas todos los permisos para ver o editar un script que está dentro de un objeto. + </floater.string> + <floater.string name="script_running"> Ejecutándose - </string> + </floater.string> + <floater.string name="Title"> + SCRIPT: [NAME] + </floater.string> + <button label="Reiniciar" label_selected="Reiniciar" name="Reset"/> + <check_box initial_value="true" label="Ejecutándose" left="4" name="running"/> + <check_box initial_value="true" label="Mono" left="106" name="mono"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_lsl_guide.xml b/indra/newview/skins/default/xui/es/floater_lsl_guide.xml index 0cde2fe5bc..43a7ede030 100644 --- a/indra/newview/skins/default/xui/es/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/es/floater_lsl_guide.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script ed float" title="WIKI DE LSL"> +<floater name="script ed float" title="GUÍA DE LSL"> <check_box label="Seguir al cursor" name="lock_check"/> - <combo_box label="Bloquear" name="history_combo" left_delta="120" width="70"/> - <button label="Atrás" name="back_btn" left_delta="75"/> + <combo_box label="Bloquear" left_delta="120" name="history_combo" width="70"/> + <button label="Atrás" left_delta="75" name="back_btn"/> <button label="Adelante" name="fwd_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_map.xml b/indra/newview/skins/default/xui/es/floater_map.xml index eee9caf830..fde4d37caf 100644 --- a/indra/newview/skins/default/xui/es/floater_map.xml +++ b/indra/newview/skins/default/xui/es/floater_map.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Map"> +<floater name="Map" title="Minimapa"> <floater.string name="mini_map_north"> N </floater.string> diff --git a/indra/newview/skins/default/xui/es/floater_media_browser.xml b/indra/newview/skins/default/xui/es/floater_media_browser.xml index cdc7ae49ff..9c4ef1eb2f 100644 --- a/indra/newview/skins/default/xui/es/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/es/floater_media_browser.xml @@ -9,13 +9,13 @@ <layout_stack name="stack1"> <layout_panel name="nav_controls"> <button label="Atrás" name="back" width="75"/> - <button label="Adelante" name="forward" left_delta="75" width="70"/> - <button label="Actualizar" name="reload" left_delta="75"/> + <button label="Adelante" left_delta="75" name="forward" width="70"/> + <button label="Actualizar" left_delta="75" name="reload"/> <combo_box left_delta="75" name="address" width="510"/> - <button label="Ir" name="go" left_delta="515"/> + <button label="Ir" left_delta="515" name="go"/> </layout_panel> <layout_panel name="parcel_owner_controls"> - <button label="Enviar a la parcela la URL actual" name="assign"/> + <button label="Enviar a la parcela la página actual" name="assign"/> </layout_panel> <layout_panel name="external_controls"> <button label="Abrir en mi navegador" name="open_browser"/> diff --git a/indra/newview/skins/default/xui/es/floater_media_settings.xml b/indra/newview/skins/default/xui/es/floater_media_settings.xml new file mode 100644 index 0000000000..3f7cef5785 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_media_settings.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="media_settings" title="CONFIGURACIÓN DE LOS MEDIA"> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> + <button label="Aplicar" label_selected="Aplicar" name="Apply"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_mem_leaking.xml b/indra/newview/skins/default/xui/es/floater_mem_leaking.xml index 6d5e987409..da8ba780bc 100644 --- a/indra/newview/skins/default/xui/es/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/es/floater_mem_leaking.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="MemLeak" title="PRUEBA DE LA FUGA DE MEMORIA"> +<floater name="MemLeak" title="SIMULAR UNA PÉRDIDA DE MEMORIA"> <spinner label="Velocidad de la fuga (bites por fotograma):" name="leak_speed"/> <spinner label="Fuga de memoria máx. (MB):" name="max_leak"/> <text name="total_leaked_label"> diff --git a/indra/newview/skins/default/xui/es/floater_moveview.xml b/indra/newview/skins/default/xui/es/floater_moveview.xml index a61cebbf80..1269943879 100644 --- a/indra/newview/skins/default/xui/es/floater_moveview.xml +++ b/indra/newview/skins/default/xui/es/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="Girar a la izquierda"/> - <button label="" label_selected="" name="turn right btn" tool_tip="Girar a la derecha"/> - <button label="" label_selected="" name="move up btn" tool_tip="Saltar o ascender"/> - <button label="" label_selected="" name="move down btn" tool_tip="Agacharse o descender"/> - <joystick_slide name="slide left btn" tool_tip="Ir hacia la izquierda"/> - <joystick_slide name="slide right btn" tool_tip="Ir hacia la derecha"/> - <joystick_turn name="forward btn" tool_tip="Ir hacia adelante"/> - <joystick_turn name="backward btn" tool_tip="Ir hacia atrás"/> -</panel> + <string name="walk_forward_tooltip"> + Caminar hacia adelante (cursor arriba o W) + </string> + <string name="walk_back_tooltip"> + Caminar de espaldas (cursor abajo o S) + </string> + <string name="run_forward_tooltip"> + Correr hacia adelante (cursor arriba o W) + </string> + <string name="run_back_tooltip"> + Correr de espaldas (cursor abajo o S) + </string> + <string name="fly_forward_tooltip"> + Volar hacia adelante (cursor arriba o W) + </string> + <string name="fly_back_tooltip"> + Volar hacia atrás (cursor abajo o S) + </string> + <panel name="panel_actions"> + <button label="" label_selected="" name="turn left btn" tool_tip="Girar a la izq. (cursor izq. o A)"/> + <button label="" label_selected="" name="turn right btn" tool_tip="Girar a la der. (cursor der. o D)"/> + <button label="" label_selected="" name="move up btn" tool_tip="Volar: pulsa E para subir"/> + <button label="" label_selected="" name="move down btn" tool_tip="Volar: pulsa C para descender"/> + <joystick_turn name="forward btn" tool_tip="Caminar hacia adelante (cursor arriba o W)"/> + <joystick_turn name="backward btn" tool_tip="Caminar de espaldas (cursor abajo o S)"/> + </panel> + <panel name="panel_modes"> + <button label="" name="mode_walk_btn" tool_tip="Modo de caminar"/> + <button label="" name="mode_run_btn" tool_tip="Modo de correr"/> + <button label="" name="mode_fly_btn" tool_tip="Modo de volar"/> + <button label="Dejar de volar" name="stop_fly_btn" tool_tip="Dejar de volar"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_mute_object.xml b/indra/newview/skins/default/xui/es/floater_mute_object.xml index 390333cd1d..4cd16a59ed 100644 --- a/indra/newview/skins/default/xui/es/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/es/floater_mute_object.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="mute by name" title="IGNORAR UN OBJETO SEGÚN SU NOMBRE"> - <text name="message" bottom_delta="-40"> - Ignorar según el nombre sólo afecta al chat y los MI del -objeto, no a sus sonidos. -Debe escribir exactamente el nombre del objeto. +<floater name="mute by name" title="IGNORAR OBJETOS SEGÚN SU NOMBRE"> + <text bottom_delta="-40" name="message"> + Ignorar un objeto: </text> - <line_editor name="object_name" bottom_delta="-58"> + <line_editor bottom_delta="-58" name="object_name"> Nombre del objeto </line_editor> + <text name="note"> + * Sólo se ignoran los textos del objeto, no sus sonidos + </text> <button label="OK" name="OK"/> <button label="Cancelar" name="Cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_nearby_chat.xml b/indra/newview/skins/default/xui/es/floater_nearby_chat.xml new file mode 100644 index 0000000000..d30a39f725 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_nearby_chat.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="nearby_chat" title="CHAT"/> diff --git a/indra/newview/skins/default/xui/es/floater_openobject.xml b/indra/newview/skins/default/xui/es/floater_openobject.xml index 89c79e8833..b8b688df60 100644 --- a/indra/newview/skins/default/xui/es/floater_openobject.xml +++ b/indra/newview/skins/default/xui/es/floater_openobject.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="objectcontents" title="CONTENIDO DEL OBJETO"> +<floater name="objectcontents" title="CONTENIDOS DEL OBJETO"> <text name="object_name"> [DESC]: </text> diff --git a/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml new file mode 100644 index 0000000000..869babee44 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title="Guardar el vestuario"> + <button label="Guardar" label_selected="Guardar" name="Save"/> + <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> + <text name="Save item as:"> + Guardar lo que estoy llevando +como un vestuario nuevo: + </text> + <line_editor name="name ed"> + [DESC] (nuevo) + </line_editor> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_outgoing_call.xml b/indra/newview/skins/default/xui/es/floater_outgoing_call.xml new file mode 100644 index 0000000000..52c6593f75 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_outgoing_call.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="outgoing call" title="LLAMANDO"> + <floater.string name="lifetime"> + 5 + </floater.string> + <floater.string name="localchat"> + Chat de voz + </floater.string> + <floater.string name="anonymous"> + anónimo + </floater.string> + <floater.string name="VoiceInviteP2P"> + está llamando. + </floater.string> + <floater.string name="VoiceInviteAdHoc"> + ha entrado en un chat de voz en multiconferencia. + </floater.string> + <text name="connecting"> + Conectando con [CALLEE_NAME] + </text> + <text name="calling"> + Llamando a [CALLEE_NAME] + </text> + <text name="noanswer"> + Sin respuesta. Vuelve a intentarlo más tarde. + </text> + <text name="nearby"> + Has sido desconectado de [VOICE_CHANNEL_NAME]. [RECONNECT_NEARBY] + </text> + <text name="nearby_P2P_by_other"> + [VOICE_CHANNEL_NAME] ha finalizado la llamada. [RECONNECT_NEARBY] + </text> + <text name="nearby_P2P_by_agent"> + Has finalizado la llamada. [RECONNECT_NEARBY] + </text> + <text name="leaving"> + Saliendo de [CURRENT_CHAT]. + </text> + <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_pay.xml b/indra/newview/skins/default/xui/es/floater_pay.xml index 64156d94e3..d4a4e81310 100644 --- a/indra/newview/skins/default/xui/es/floater_pay.xml +++ b/indra/newview/skins/default/xui/es/floater_pay.xml @@ -1,22 +1,26 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> + <string name="payee_group"> + Pagar al grupo + </string> + <string name="payee_resident"> + Pagar al residente + </string> + <text left="5" name="payee_label" width="105"> + Pagar: + </text> + <icon name="icon_person" tool_tip="Persona"/> + <text left="115" name="payee_name"> + [FIRST] [LAST] + </text> <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> - <button label="Pagar" label_selected="Pagar" name="pay btn"/> - <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> - <text name="payee_label" left="5" width="105"> - Pagar al residente: - </text> - <text name="payee_name" left="115"> - [FIRST] [LAST] - </text> - <text name="fastpay text" width="100" halign="left"> - Pago rápido: - </text> - <text name="amount text" left="4" > - Cantidad: + <text left="4" name="amount text"> + O elige cuánto: </text> <line_editor left="60" name="amount" width="55"/> + <button label="Pagar" label_selected="Pagar" name="pay btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_pay_object.xml b/indra/newview/skins/default/xui/es/floater_pay_object.xml index b5eca53bfa..f29745ea9b 100644 --- a/indra/newview/skins/default/xui/es/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/es/floater_pay_object.xml @@ -1,30 +1,29 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <text name="payee_group" left="5" width="110"> - Pagar al grupo: - </text> - <text name="payee_resident" left="5" width="110"> - Pagar al residente: - </text> - <text name="payee_name" left="120" width="180"> + <string left="5" name="payee_group" width="110"> + Pagar al grupo + </string> + <string left="5" name="payee_resident" width="110"> + Pagar al residente + </string> + <icon name="icon_person" tool_tip="Persona"/> + <text left="120" name="payee_name" width="180"> [FIRST] [LAST] </text> - <text name="object_name_label" left="5" width="110"> + <text left="5" name="object_name_label" width="110"> A través del objeto: </text> - <text name="object_name_text" left="120" width="180"> - ... - </text> - <text name="fastpay text"> - Pago rápido: - </text> - <text name="amount text"> - Cantidad: + <icon name="icon_object" tool_tip="Objetos"/> + <text left="120" name="object_name_text" width="180"> + El muy largo nombre de mi objeto </text> <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> + <text name="amount text"> + O elige cuánto: + </text> <button label="Pagar" label_selected="Pagar" name="pay btn"/> <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_perm_prefs.xml b/indra/newview/skins/default/xui/es/floater_perm_prefs.xml index 7d3c8e62f3..93e2088aba 100644 --- a/indra/newview/skins/default/xui/es/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/es/floater_perm_prefs.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="perm prefs" title="PERMISOS DE SUBIDA POR DEFECTO"> +<floater name="perm prefs" title="PERMISOS POR DEFECTO DE SUBIDA"> <panel label="Permisos" name="permissions"> <button label="?" label_selected="?" name="help"/> <check_box label="Compartir con el grupo" name="share_with_group"/> diff --git a/indra/newview/skins/default/xui/es/floater_postcard.xml b/indra/newview/skins/default/xui/es/floater_postcard.xml index ace3204cc7..df94486c0e 100644 --- a/indra/newview/skins/default/xui/es/floater_postcard.xml +++ b/indra/newview/skins/default/xui/es/floater_postcard.xml @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Postcard" title="FOTO POR CORREO ELECTRÓNICO"> +<floater name="Postcard" title="FOTO POR CORREO"> <text name="to_label"> Correo electrónico del destinatario: </text> - <line_editor bottom_delta="-20" name="to_form" /> - <text name="from_label" bottom_delta="-12"> + <line_editor bottom_delta="-20" name="to_form"/> + <text bottom_delta="-12" name="from_label"> Su correo electrónico: </text> - <line_editor bottom_delta="-20" name="from_form" /> + <line_editor bottom_delta="-20" name="from_form"/> <text name="name_label"> Su nombre: </text> @@ -17,20 +17,20 @@ Asunto: </text> <line_editor label="Escriba aquí el asunto." name="subject_form"/> - <text name="msg_label" bottom_delta="-18"> + <text bottom_delta="-18" name="msg_label"> Mensaje: </text> <text_editor name="msg_form"> Escriba aquí el mensaje. </text_editor> - <text name="fine_print" bottom_delta="-21"> + <text bottom_delta="-21" name="fine_print"> Si su destinatario se registra en [SECOND_LIFE], usted conseguirá un bono de referido. </text> <button label="Cancelar" name="cancel_btn"/> <button label="Enviar" name="send_btn"/> <string name="default_subject"> - Postal desde [SECOND_LIFE] + Postal desde [SECOND_LIFE]. </string> <string name="default_message"> ¡Mira esto! diff --git a/indra/newview/skins/default/xui/es/floater_preferences.xml b/indra/newview/skins/default/xui/es/floater_preferences.xml index 5fe4ae3b64..37d56ea839 100644 --- a/indra/newview/skins/default/xui/es/floater_preferences.xml +++ b/indra/newview/skins/default/xui/es/floater_preferences.xml @@ -1,9 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Preferences" title="PREFERENCIAS" min_width="350" width="646"> +<floater min_width="350" name="Preferences" title="PREFERENCIAS" width="646"> <button label="OK" label_selected="OK" name="OK"/> <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <button label="Aplicar" label_selected="Aplicar" name="Apply"/> - <button label="Acerca de..." label_selected="Acerca de..." name="About..." /> - <button label="Ayuda" label_selected="Ayuda" name="Help"/> - <tab_container name="pref core" tab_width="146" width="646" /> + <tab_container name="pref core" tab_width="146" width="646"> + <panel label="General" name="general"/> + <panel label="Gráficos" name="display"/> + <panel label="Privacidad" name="im"/> + <panel label="Sonido y Media" name="audio"/> + <panel label="Chat" name="chat"/> + <panel label="Notificaciones" name="msgs"/> + <panel label="Configurar" name="input"/> + <panel label="Avanzado" name="advanced1"/> + </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_preview_animation.xml b/indra/newview/skins/default/xui/es/floater_preview_animation.xml index 0d9cf8ec9f..6b8c8b6ff5 100644 --- a/indra/newview/skins/default/xui/es/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/es/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"> + Animación: [NAME] + </floater.string> <text name="desc txt"> Descripción: </text> - <button left="12" width="142" label="Ejecutarla en el mundo" label_selected="Parar" name="Anim play btn" tool_tip="Ejecutar esta animación de modo que puedan verla los demás."/> - <button left="156" width="136" label="Ejecutarla para usted" label_selected="Parar" name="Anim audition btn" tool_tip="Ejecutar esta animación de modo que sólo la vea usted."/> + <button label="Ver en el mundo" label_selected="Parar" left="12" name="Anim play btn" tool_tip="Ejecutar esta animación de modo que puedan verla los demás" width="142"/> + <button label="Ejecutarla para usted" label_selected="Parar" left="156" name="Anim audition btn" tool_tip="Ejecutar esta animación de modo que sólo la vea yo" width="136"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_preview_classified.xml b/indra/newview/skins/default/xui/es/floater_preview_classified.xml index 8114c7f3c2..d9c9c51ba8 100644 --- a/indra/newview/skins/default/xui/es/floater_preview_classified.xml +++ b/indra/newview/skins/default/xui/es/floater_preview_classified.xml @@ -1,2 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="INFORMACIÓN CLASIFICADA"/> +<floater name="classified_preview" title="INFORMACIÓN DEL CLASIFICADO"> + <floater.string name="Title"> + Clasificado: [NAME] + </floater.string> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_preview_event.xml b/indra/newview/skins/default/xui/es/floater_preview_event.xml index 04cb0de4d4..7edd4f9e3f 100644 --- a/indra/newview/skins/default/xui/es/floater_preview_event.xml +++ b/indra/newview/skins/default/xui/es/floater_preview_event.xml @@ -1,2 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="INFORMACIÓN DE EVENTOS"/> +<floater name="event_preview" title="INFORMACIÓN DEL EVENTO"> + <floater.string name="Title"> + Evento: [NAME] + </floater.string> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture.xml index 0e43ce536c..44179d6b28 100644 --- a/indra/newview/skins/default/xui/es/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/es/floater_preview_gesture.xml @@ -1,14 +1,32 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="gesture_preview"> - <string name="stop_txt"> + <floater.string name="step_anim"> + Animación a ejecutar: + </floater.string> + <floater.string name="step_sound"> + Sonido a ejecutar: + </floater.string> + <floater.string name="step_chat"> + Decir en el chat: + </floater.string> + <floater.string name="step_wait"> + Espera: + </floater.string> + <floater.string name="stop_txt"> Parar - </string> - <string name="preview_txt"> + </floater.string> + <floater.string name="preview_txt"> Vista previa - </string> - <string name="none_text"> + </floater.string> + <floater.string name="none_text"> -- Ninguno -- - </string> + </floater.string> + <floater.string name="Title"> + Gesto: [NAME] + </floater.string> + <text name="name_text"> + Nombre: + </text> <text name="desc_label"> Descripción: </text> @@ -22,37 +40,31 @@ <text name="key_label"> Atajo de teclado: </text> - <combo_box label="Ninguno" name="modifier_combo" left="116" width="76"/> - <combo_box label="Ninguno" name="key_combo" width="76" left_delta="80"/> + <combo_box label="Ninguno" left="116" name="modifier_combo" width="76"/> + <combo_box label="Ninguno" left_delta="80" name="key_combo" width="76"/> <text name="library_label"> Biblioteca: </text> + <scroll_list name="library_list"/> + <button label="Añadir >>" name="add_btn"/> <text name="steps_label"> Pasos: </text> - <scroll_list name="library_list"> - Animación -Sonido -Chat -Esperar - </scroll_list> - <button label="Añadir >>" name="add_btn"/> - <button label="Hacia arriba" name="up_btn"/> - <button label="Hacia abajo" name="down_btn"/> + <button label="Arriba" name="up_btn"/> + <button label="Abajo" name="down_btn"/> <button label="Quitar" name="delete_btn"/> - <text name="help_label"> - Todos los pasos suceden a la vez, -a menos que añada pasos de espera. - </text> - <text left="230" name="options_text" width="200" /> + <text left="230" name="options_text" width="200"/> <radio_group name="animation_trigger_type"> - <radio_item name="start" label="Empezar" /> - <radio_item name="stop" label="Parar" /> + <radio_item label="Empezar" name="start"/> + <radio_item label="Parar" name="stop"/> </radio_group> - <check_box bottom_delta="34" label="hasta que las animaciones estén hechas" name="wait_anim_check"/> + <check_box bottom_delta="34" label="hasta que las animaciones estén hechas" name="wait_anim_check"/> <check_box bottom_delta="-30" label="tiempo en segundos" name="wait_time_check"/> - <line_editor left_delta="130" name="wait_time_editor" /> - <check_box left="130" label="Disponible" name="active_check" tool_tip="Los gestos disponibles pueden realizarse escribiendo en el chat su frase clave o pulsando su tecla de acceso rápido. Generalmente, los gestos pasan a no disponibles cuando hay un conflicto de teclas."/> + <line_editor left_delta="130" name="wait_time_editor"/> + <text name="help_label"> + Todos los pasos suceden a la vez, a menos que añadas pasos de espera. + </text> + <check_box label="Disponible" left="130" name="active_check" tool_tip="Los gestos disponibles pueden realizarse escribiendo en el chat su frase clave o pulsando su tecla de acceso rápido. Generalmente, los gestos pasan a no disponibles cuando hay un conflicto de teclas."/> <button label="Vista previa" name="preview_btn" width="85"/> <button label="Guardar" name="save_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture_info.xml new file mode 100644 index 0000000000..f5b771c6e7 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_preview_gesture_info.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="ATAJO DE TECLADO PARA GESTOS"/> diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture_shortcut.xml new file mode 100644 index 0000000000..ea955f9727 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_preview_gesture_shortcut.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="ATAJO DE TECLADO PARA GESTOS"> + <text name="trigger_label"> + Chat : + </text> + <text name="key_label"> + Teclado: + </text> + <combo_box label="Ninguno/a" name="modifier_combo"/> + <combo_box label="Ninguno/a" name="key_combo"/> + <text name="replace_text" tool_tip="Reemplaza la/s palabra/s clave con estas palabras. Por ejemplo, si cambias la palabra clave 'hola' por 'qué tal', se cambiará en el chat 'Quería decir hola' por 'Quería decir qué tal' en cuanto realices el gesto."> + Reemplazar por: + </text> + <line_editor name="replace_editor" tool_tip="Reemplaza la/s palabra/s clave con estas palabras. Por ejemplo, si cambias la palabra clave 'hola' por 'qué tal', se cambiará en el chat 'Quería decir hola' por 'Quería decir qué tal' en cuanto realices el gesto."/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture_steps.xml new file mode 100644 index 0000000000..f5b771c6e7 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_preview_gesture_steps.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="ATAJO DE TECLADO PARA GESTOS"/> diff --git a/indra/newview/skins/default/xui/es/floater_preview_notecard.xml b/indra/newview/skins/default/xui/es/floater_preview_notecard.xml index 35f795a7ec..57ec5eb7b4 100644 --- a/indra/newview/skins/default/xui/es/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/es/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="Guardar" label_selected="Guardar" name="Save"/> + <floater.string name="no_object"> + No se ha podido encontrar el objeto que contiene esta nota. + </floater.string> + <floater.string name="not_allowed"> + No tienes permiso para ver esta nota. + </floater.string> + <floater.string name="Title"> + Nota: [NAME] + </floater.string> + <floater.string label="Guardar" label_selected="Guardar" name="Save"> + Guardar + </floater.string> <text name="desc txt"> Descripción: </text> <text_editor name="Notecard Editor"> Cargando... </text_editor> - <string name="no_object"> - No se ha podido encontrar el objeto que contiene esta nota. - </string> - <string name="not_allowed"> - No está autorizado a ver esta nota. - </string> + <button label="Guardar" label_selected="Guardar" name="Save"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_preview_sound.xml b/indra/newview/skins/default/xui/es/floater_preview_sound.xml index 060a033b08..62525c9536 100644 --- a/indra/newview/skins/default/xui/es/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/es/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"> + Sonido : [NAME] + </floater.string> <text name="desc txt"> Descripción: </text> - <button label="Tocar en el mundo" label_selected="Tocar en el mundo" name="Sound play btn" tool_tip="Tocar este sonido para que puedan oírlo los demás."/> - <button label="Oír sólo uno mismo" label_selected="Oír sólo uno mismo" name="Sound audition btn" tool_tip="Tocar este sonido para que sólo pueda oírlo usted."/> + <button label="Escuchar en el mundo" label_selected="Escuchar en el mundo" name="Sound play btn" tool_tip="Ejecutar este sonido de modo que lo oigan todos"/> + <button label="Oír sólo uno mismo" label_selected="Oír sólo uno mismo" name="Sound audition btn" tool_tip="Ejecutar este sonido de modo que sólo tú lo oigas"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_preview_texture.xml b/indra/newview/skins/default/xui/es/floater_preview_texture.xml index 280438fefd..4012191c78 100644 --- a/indra/newview/skins/default/xui/es/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/es/floater_preview_texture.xml @@ -1,9 +1,47 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview_texture"> + <floater.string name="Title"> + Textura: [NAME] + </floater.string> + <floater.string name="Copy"> + Copiar al inventario + </floater.string> <text name="desc txt"> Descripción: </text> <text name="dimensions"> - Tamaño: [WIDTH] x [HEIGHT] + [WIDTH] px x [HEIGHT] px </text> + <text name="aspect_ratio"> + Previsualizar la ratio de las proporciones + </text> + <combo_box name="combo_aspect_ratio" tool_tip="Vista previa en una proporción concreta"> + <combo_item name="Unconstrained"> + Sin restricciones + </combo_item> + <combo_item name="1:1" tool_tip="Emblema del grupo o perfil del Mundo real"> + 1:1 + </combo_item> + <combo_item name="4:3" tool_tip="Perfil de [SECOND_LIFE]"> + 4:3 + </combo_item> + <combo_item name="10:7" tool_tip="Clasificados (también en las listas de búsqueda), hitos"> + 10:7 + </combo_item> + <combo_item name="3:2" tool_tip="Acerca del terreno"> + 3:2 + </combo_item> + <combo_item name="16:10"> + 16:10 + </combo_item> + <combo_item name="16:9" tool_tip="Destacados del perfil"> + 16:9 + </combo_item> + <combo_item name="2:1"> + 2:1 + </combo_item> + </combo_box> + <button label="OK" name="Keep"/> + <button label="Descartar" name="Discard"/> + <button label="Guardar como" name="save_tex_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_report_abuse.xml b/indra/newview/skins/default/xui/es/floater_report_abuse.xml index a075c51247..760429e73d 100644 --- a/indra/newview/skins/default/xui/es/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/es/floater_report_abuse.xml @@ -1,12 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_report_abuse" title="DENUNCIA DE INFRACCIÓN"> - <texture_picker label="" name="screenshot"/> - <check_box label="Incluir una captura de pantalla" name="screen_check"/> + <floater.string name="Screenshot"> + Captura de pantalla + </floater.string> + <check_box label="Usar esta captura de pantalla" name="screen_check"/> <text name="reporter_title"> Denunciante: </text> <text name="reporter_field"> - Loremipsum Dolorsitamut + Loremipsum Dolorsitamut Longnamez </text> <text name="sim_title"> Región: @@ -21,11 +23,11 @@ {128.1, 128.1, 15.4} </text> <text name="select_object_label"> - Pulse el botón y luego el objeto: + Pulsa el botón y luego el objeto a denunciar: </text> <button label="" label_selected="" name="pick_btn" tool_tip="Señalar objeto - Identificar un objeto como sujeto de esta denuncia"/> <text name="object_name_label"> - Nombre: + Objeto: </text> <text name="object_name"> Consetetur Sadipscing @@ -34,54 +36,53 @@ Propietario: </text> <text name="owner_name"> - Hendrerit Vulputate + Hendrerit Vulputate Kamawashi Longname </text> <combo_box name="category_combo" tool_tip="Categoría -- Elija la categoría que describa mejor esta denuncia"> - <combo_box.item name="Select_category" label="Elegir la categoría"/> - <combo_box.item name="Age__Age_play" label="Edad > Jugar a ser niño"/> - <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Edad > Residente adulto en Teen Second Life"/> - <combo_box.item name="Age__Underage_resident_outside_of_Teen_Second_Life" label="Edad > Residente menor de edad fuera de Teen Second Life"/> - <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Ataque > Sandbox de combate / Zona no segura"/> - <combo_box.item name="Assault__Safe_area" label="Ataque > Zona segura"/> - <combo_box.item name="Assault__Weapons_testing_sandbox" label="Ataque > Sandbox de prueba de armas"/> - <combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Comercio > Error en la entrega de productos o servicios"/> - <combo_box.item name="Disclosure__Real_world_information" label="Indiscreción > Información del mundo real"/> - <combo_box.item name="Disclosure__Remotely_monitoring chat" label="Indiscreción > Monitorizar a distancia el chat"/> - <combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Indiscreción > Información Se Second Life, el chat o los MI"/> - <combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Perturbando la paz > Abuso de los recursos de la región"/> - <combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Perturbando la paz > Excesivos objetos con script"/> - <combo_box.item name="Disturbing_the_peace__Object_littering" label="Perturbando la paz > Objeto basura"/> - <combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Perturbando la paz > Spam (mensajes no pedidos) repetitivo"/> - <combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Perturbando la paz > Publicidad no deseada"/> - <combo_box.item name="Fraud__L$" label="Fraude > L$"/> - <combo_box.item name="Fraud__Land" label="Fraude > Terreno"/> - <combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Fraude > Esquemas piramidales o cadenas de cartas"/> - <combo_box.item name="Fraud__US$" label="Fraude > US$"/> - <combo_box.item name="Harassment__Advert_farms___visual_spam" label="Acoso > Anuncios múltiples / Spam visual"/> - <combo_box.item name="Harassment__Defaming_individuals_or_groups" label="Acoso > Difamación de individuos o grupos"/> - <combo_box.item name="Harassment__Impeding_movement" label="Acoso > Impedir el movimiento"/> - <combo_box.item name="Harassment__Sexual_harassment" label="Acoso > Acoso sexual"/> - <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Acoso > Incitar a, o pedir, que otros violen las Condiciones del Servicio"/> - <combo_box.item name="Harassment__Verbal_abuse" label="Acoso > Abuso verbal"/> - <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Indecencia > En general, contenido o conducta ofensivos"/> - <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Indecencia > Nombre inapropiado del avatar"/> - <combo_box.item name="Indecency__Mature_content_in_PG_region" label="Indecencia > Contenido o conducta inapropiada en una región 'PG'"/> - <combo_box.item name="Indecency__Inappropriate_content_in_Mature_region" label="Indecencia > Contenido o conducta inapropiada en una región 'Mature'"/> - <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Infracción de la propiedad intelectual > Eliminación de contenidos"/> - <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Infracción de la propiedad intelectual > CopyBot o Exploit (programa malicioso) de permisos"/> - <combo_box.item name="Intolerance" label="Intolerancia"/> - <combo_box.item name="Land__Abuse_of_sandbox_resources" label="Terreno > Abuso de los recursos de un sandbox"/> - <combo_box.item name="Land__Encroachment__Objects_textures" label="Terreno > Invasión > Objetos/Texturas"/> - <combo_box.item name="Land__Encroachment__Particles" label="Terreno > Invasión > Partículas"/> - <combo_box.item name="Land__Encroachment__Trees_plants" label="Terreno > Invasión > Árboles/Plantas"/> - <combo_box.item name="Wagering_gambling" label="Apuestas/Juego"/> - <combo_box.item name="Other" label="Otra"/> + <combo_box.item label="Elegir la categoría" name="Select_category"/> + <combo_box.item label="Edad > Jugar a ser niño" name="Age__Age_play"/> + <combo_box.item label="Edad > Residente adulto en Teen Second Life" name="Age__Adult_resident_on_Teen_Second_Life"/> + <combo_box.item label="Edad > Residente menor de edad fuera de Teen Second Life" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> + <combo_box.item label="Ataque > Sandbox de combate / Zona no segura" name="Assault__Combat_sandbox___unsafe_area"/> + <combo_box.item label="Ataque > Zona segura" name="Assault__Safe_area"/> + <combo_box.item label="Ataque > Sandbox de prueba de armas" name="Assault__Weapons_testing_sandbox"/> + <combo_box.item label="Comercio > Error en la entrega de productos o servicios" name="Commerce__Failure_to_deliver_product_or_service"/> + <combo_box.item label="Indiscreción > Información del mundo real" name="Disclosure__Real_world_information"/> + <combo_box.item label="Indiscreción > Monitorizar a distancia el chat" name="Disclosure__Remotely_monitoring chat"/> + <combo_box.item label="Indiscreción > Información Se Second Life, el chat o los MI" name="Disclosure__Second_Life_information_chat_IMs"/> + <combo_box.item label="Perturbando la paz > Abuso de los recursos de la región" name="Disturbing_the_peace__Unfair_use_of_region_resources"/> + <combo_box.item label="Perturbando la paz > Excesivos objetos con script" name="Disturbing_the_peace__Excessive_scripted_objects"/> + <combo_box.item label="Perturbando la paz > Objeto basura" name="Disturbing_the_peace__Object_littering"/> + <combo_box.item label="Perturbando la paz > Spam (mensajes no pedidos) repetitivo" name="Disturbing_the_peace__Repetitive_spam"/> + <combo_box.item label="Perturbando la paz > Publicidad no deseada" name="Disturbing_the_peace__Unwanted_advert_spam"/> + <combo_box.item label="Fraude > L$" name="Fraud__L$"/> + <combo_box.item label="Fraude > Terreno" name="Fraud__Land"/> + <combo_box.item label="Fraude > Esquemas piramidales o cadenas de cartas" name="Fraud__Pyramid_scheme_or_chain_letter"/> + <combo_box.item label="Fraude > US$" name="Fraud__US$"/> + <combo_box.item label="Acoso > Anuncios múltiples / Spam visual" name="Harassment__Advert_farms___visual_spam"/> + <combo_box.item label="Acoso > Difamación de individuos o grupos" name="Harassment__Defaming_individuals_or_groups"/> + <combo_box.item label="Acoso > Impedir el movimiento" name="Harassment__Impeding_movement"/> + <combo_box.item label="Acoso > Acoso sexual" name="Harassment__Sexual_harassment"/> + <combo_box.item label="Acoso > Incitar a, o pedir, que otros violen las Condiciones del Servicio" name="Harassment__Solicting_inciting_others_to_violate_ToS"/> + <combo_box.item label="Acoso > Abuso verbal" name="Harassment__Verbal_abuse"/> + <combo_box.item label="Indecencia > En general, contenido o conducta ofensivos" name="Indecency__Broadly_offensive_content_or_conduct"/> + <combo_box.item label="Indecencia > Nombre inapropiado del avatar" name="Indecency__Inappropriate_avatar_name"/> + <combo_box.item label="Indecencia > Contenido o conducta inapropiada en una región 'PG'" name="Indecency__Mature_content_in_PG_region"/> + <combo_box.item label="Indecencia > Contenido o conducta inapropiada en una región 'Mature'" name="Indecency__Inappropriate_content_in_Mature_region"/> + <combo_box.item label="Infracción de la propiedad intelectual > Eliminación de contenidos" name="Intellectual_property_infringement_Content_Removal"/> + <combo_box.item label="Infracción de la propiedad intelectual > CopyBot o Exploit (programa malicioso) de permisos" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/> + <combo_box.item label="Intolerancia" name="Intolerance"/> + <combo_box.item label="Terreno > Abuso de los recursos de un sandbox" name="Land__Abuse_of_sandbox_resources"/> + <combo_box.item label="Terreno > Invasión > Objetos/Texturas" name="Land__Encroachment__Objects_textures"/> + <combo_box.item label="Terreno > Invasión > Partículas" name="Land__Encroachment__Particles"/> + <combo_box.item label="Terreno > Invasión > Árboles/Plantas" name="Land__Encroachment__Trees_plants"/> + <combo_box.item label="Apuestas/Juego" name="Wagering_gambling"/> + <combo_box.item label="Otra" name="Other"/> </combo_box> <text name="abuser_name_title"> Nombre del infractor: </text> - <button label="Elegir al residente" label_selected="" name="select_abuser" tool_tip="Elegir de una lista el nombre del infractor"/> - <check_box label="No sé el nombre del infractor" name="omit_abuser_name" tool_tip="Marque esto si no puede aportar el nombre del infractor"/> + <button label="Elegir" label_selected="" name="select_abuser" tool_tip="Elegir de una lista el nombre del infractor"/> <text name="abuser_name_title2"> Localización de la infracción: </text> @@ -92,13 +93,11 @@ Detalles: </text> <text name="bug_aviso"> - Por favor, sea muy concreto sobre la fecha, la localización, -la naturaleza de la infracción, el aportar textos relevantes -del chat o los MI, y, si es posible, seleccione el objeto. + Por favor, sé todo lo concreto que puedas </text> <text name="incomplete_title"> - Nota: las denuncias incompletas no se investigarán. + * Las denuncias incompletas no se investigarán </text> - <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/> <button label="Denunciar la infracción" label_selected="Denunciar la infracción" name="send_btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/es/floater_script_debug_panel.xml new file mode 100644 index 0000000000..db9fd5f36e --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_script_debug_panel.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script" short_title="[TODOS LOS SCRIPTS]" title="[TODOS LOS SCRIPTS]"/> diff --git a/indra/newview/skins/default/xui/es/floater_script_limits.xml b/indra/newview/skins/default/xui/es/floater_script_limits.xml new file mode 100644 index 0000000000..095112dbdc --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_script_limits.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="scriptlimits" title="INFORMACIÓN DEl SCRIPT"/> diff --git a/indra/newview/skins/default/xui/es/floater_script_preview.xml b/indra/newview/skins/default/xui/es/floater_script_preview.xml index 79984e7bc1..5c190a4682 100644 --- a/indra/newview/skins/default/xui/es/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/es/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 DE ROTACIÓN"> +<floater name="preview lsl text" title="SCRIPT: ROTACIÓN DEL SCRIPT"> + <floater.string name="Title"> + SCRIPT: [NAME] + </floater.string> <text name="desc txt"> Descripción: </text> diff --git a/indra/newview/skins/default/xui/es/floater_script_queue.xml b/indra/newview/skins/default/xui/es/floater_script_queue.xml index ace596cd9a..39c84103c4 100644 --- a/indra/newview/skins/default/xui/es/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/es/floater_script_queue.xml @@ -1,4 +1,19 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="queue" title="REINICIO"> +<floater name="queue" title="PROGRESO DEL REINICIO"> + <floater.string name="Starting"> + Empezando [START] de [COUNT] ítems. + </floater.string> + <floater.string name="Done"> + Hecho. + </floater.string> + <floater.string name="Resetting"> + Reiniciando + </floater.string> + <floater.string name="Running"> + Ejecutándose + </floater.string> + <floater.string name="NotRunning"> + Sin ejecutarse + </floater.string> <button label="Cerrar" label_selected="Cerrar" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_script_search.xml b/indra/newview/skins/default/xui/es/floater_script_search.xml index a59f258a18..1ab6682023 100644 --- a/indra/newview/skins/default/xui/es/floater_script_search.xml +++ b/indra/newview/skins/default/xui/es/floater_script_search.xml @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script search" title="BUSCAR EN EL SCRIPT" width="320"> - <check_box label="Indiferente mays./mins." name="case_text" left="75"/> +<floater name="script search" title="BÚSQUEDA DE SCRIPTS" width="320"> + <check_box label="Indiferente mays./mins." left="75" name="case_text"/> <button label="Buscar" label_selected="Buscar" name="search_btn" width="85"/> - <button label="Reemplazar" label_selected="Reemplazar" name="replace_btn" left="100" width="85"/> - <button label="Reemplazar todos" label_selected="Reemplazar todos" name="replace_all_btn" left="190" width="122"/> + <button label="Reemplazar" label_selected="Reemplazar" left="100" name="replace_btn" width="85"/> + <button label="Reemplazar todos" label_selected="Reemplazar todos" left="190" name="replace_all_btn" width="122"/> <text name="txt" width="65"> Buscar </text> <text name="txt2" width="65"> Reemplazar </text> - <line_editor left="75" name="search_text" width="240" /> - <line_editor left="75" name="replace_text" width="240" /> + <line_editor left="75" name="search_text" width="240"/> + <line_editor left="75" name="replace_text" width="240"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_search.xml b/indra/newview/skins/default/xui/es/floater_search.xml new file mode 100644 index 0000000000..377b848530 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_search.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_search" title="ENCONTRAR"> + <floater.string name="loading_text"> + Cargando... + </floater.string> + <floater.string name="done_text"> + Hecho + </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/es/floater_select_key.xml b/indra/newview/skins/default/xui/es/floater_select_key.xml index 9c889df63a..d597926d39 100644 --- a/indra/newview/skins/default/xui/es/floater_select_key.xml +++ b/indra/newview/skins/default/xui/es/floater_select_key.xml @@ -2,6 +2,6 @@ <floater name="modal container" title=""> <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> <text name="Save item as:"> - Pulse una tecla para seleccionarla + Pulsa una tecla para configurarla como botón de Apretar para Hablar. </text> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_sell_land.xml b/indra/newview/skins/default/xui/es/floater_sell_land.xml index c6e8746250..efedb5d689 100644 --- a/indra/newview/skins/default/xui/es/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/es/floater_sell_land.xml @@ -1,64 +1,65 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="sell land" title="VENDER EL TERRENO"> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <text name="info_parcel_label"> - Parcela: - </text> - <text name="info_parcel"> - NOMBRE DE LA PARCELA - </text> - <text name="info_size_label"> - Tamaño: - </text> - <text name="info_size"> - [AREA] m² - </text> - <text name="info_action"> - Vender esta parcela: - </text> - <icon bottom_delta="-56" name="step_price" /> - <text name="price_label"> - Marque un precio: - </text> - <text name="price_text"> - Elija un precio adecuado para esta parcela. - </text> - <text name="price_ld"> - L$ - </text> - <text name="price_per_m"> - ([PER_METER] L$ por metro cuadrado) - </text> - <text name="sell_to_label"> - Vender este terreno a: - </text> - <text name="sell_to_text"> - Elija si venderlo a cualquiera o a un comprador concreto. - </text> - <combo_box name="sell_to"> - <combo_box.item name="--selectone--" label="seleccione --" /> - <combo_box.item name="Anyone" label="Cualquiera" /> - <combo_box.item name="Specificuser:" label="Un usuario concreto:" /> - </combo_box> - <button label="Seleccionar..." name="sell_to_select_agent"/> - <text name="sell_objects_label"> - ¿Vender los objetos con el terreno? - </text> - <text name="sell_objects_text"> - Los objetos transferibles del propietario del terreno cambiarán -de propietario. - </text> - <radio_group name="sell_objects" bottom_delta="-58" > - <radio_item name="no" label="No, mantener la propiedad de los objetos" /> - <radio_item name="yes" label="Sí, vender los objetos con el terreno" /> - </radio_group> - <button label="Mostrar los objetos" name="show_objects" width="120"/> - <text name="nag_message_label"> - RECUERDE: todas las ventas son definitivas. - </text> - <button label="Poner el terreno en venta" name="sell_btn"/> - <button label="Cancelar" name="cancel_btn"/> - </panel> - </scroll_container> +<floater name="sell land" title="VENTA DE TERRENO"> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text name="info_parcel_label"> + Parcela: + </text> + <text name="info_parcel"> + NOMBRE DE LA PARCELA + </text> + <text name="info_size_label"> + Tamaño: + </text> + <text name="info_size"> + [AREA] m² + </text> + <text name="info_action"> + Vender esta parcela: + </text> + <text name="price_label"> + 1. Marcar un precio: + </text> + <text name="price_text"> + Elegir un precio adecuado. + </text> + <text name="price_ld"> + L$ + </text> + <line_editor name="price"> + 0 + </line_editor> + <text name="price_per_m"> + ([PER_METER] L$ por m²) + </text> + <text name="sell_to_label"> + 2. Vender el terreno a: + </text> + <text name="sell_to_text"> + Elige si venderlo a cualquiera o a un comprador concreto. + </text> + <combo_box name="sell_to"> + <combo_box.item label="- Elegir a alguien -" name="--selectone--"/> + <combo_box.item label="Cualquiera" name="Anyone"/> + <combo_box.item label="Alguien concreto:" name="Specificuser:"/> + </combo_box> + <button label="Elegir" name="sell_to_select_agent"/> + <text name="sell_objects_label"> + 3. ¿Vender los objetos junto con el terreno? + </text> + <text name="sell_objects_text"> + Los objetos transferibles del propietario del terreno que estén en la parcela cambiarán de propietario. + </text> + <radio_group bottom_delta="-58" name="sell_objects"> + <radio_item label="No, mantener la propiedad de los objetos" name="no"/> + <radio_item label="Sí, vender los objetos con el terreno" name="yes"/> + </radio_group> + <button label="Mostrar los objetos" name="show_objects" width="120"/> + <text name="nag_message_label"> + RECUERDA: todas las ventas son definitivas. + </text> + <button label="Poner en venta el terreno" name="sell_btn"/> + <button label="Cancelar" name="cancel_btn"/> + </panel> + </scroll_container> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_settings_debug.xml b/indra/newview/skins/default/xui/es/floater_settings_debug.xml index 0e8e6bdfd2..bca1839f09 100644 --- a/indra/newview/skins/default/xui/es/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/es/floater_settings_debug.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="settings_debug" title="CONFIGURACIÓN DEL DEPURADOR"> - <combo_box name="boolean_combo"> - <combo_box.item name="TRUE" label="TRUE" /> - <combo_box.item name="FALSE" label="FALSE" /> - </combo_box> - <color_swatch label="Color" name="color_swatch"/> +<floater name="settings_debug" title="CONFIGURACIONES DEL DEPURADOR"> + <radio_group name="boolean_combo"> + <radio_item label="VERDADERO" name="TRUE" value="verdadero"/> + <radio_item label="FALSO" name="FALSE" value=""/> + </radio_group> + <color_swatch label="Color" 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/es/floater_snapshot.xml b/indra/newview/skins/default/xui/es/floater_snapshot.xml index afea6c09fe..febb51e5d6 100644 --- a/indra/newview/skins/default/xui/es/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/es/floater_snapshot.xml @@ -4,23 +4,23 @@ Destino de la foto </text> <radio_group label="Tipo de la foto" name="snapshot_type_radio"> - <radio_item name="postcard" label="Enviar por correo electrónico" /> - <radio_item name="texture" label="Guardarla en su inventario ([AMOUNT] L$)" /> - <radio_item name="local" label="Guardarla en su disco duro" /> + <radio_item label="Correo-e" name="postcard"/> + <radio_item label="Mi inventario ([AMOUNT] L$)" name="texture"/> + <radio_item label="Guardar en mi ordenador" name="local"/> </radio_group> <text name="file_size_label"> - Tamaño del archivo: [SIZE] KB + [SIZE] KB </text> <button label="Actualizar la foto" name="new_snapshot_btn"/> <button label="Enviar" name="send_btn"/> <button label="Guardar ([AMOUNT] L$)" name="upload_btn"/> <flyout_button label="Guardar" name="save_btn" tool_tip="Guardar la imagen en un archivo"> - <flyout_button_item name="save_item" label="Guardar"/> - <flyout_button_item name="saveas_item" label="Guardar como..."/> + <flyout_button_item label="Guardar" name="save_item"/> + <flyout_button_item label="Guardar como..." name="saveas_item"/> </flyout_button> <button label="Cancelar" name="discard_btn"/> - <button label="Más >>" name="more_btn" tool_tip="Opciones avanzadas"/> - <button label="<< Menos" name="less_btn" tool_tip="Opciones avanzadas"/> + <button label="Más" name="more_btn" tool_tip="Opciones avanzadas"/> + <button label="Menos" name="less_btn" tool_tip="Opciones avanzadas"/> <text name="type_label2"> Tamaño </text> @@ -28,50 +28,50 @@ Formato </text> <combo_box label="Resolución" name="postcard_size_combo"> - <combo_box.item name="CurrentWindow" label="Ventana actual"/> - <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="Personalizar"/> + <combo_box.item label="Ventana actual" 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="Personalizar" name="Custom"/> </combo_box> <combo_box label="Resolución" name="texture_size_combo"> - <combo_box.item name="CurrentWindow" label="Ventana actual"/> - <combo_box.item name="Small(128x128)" label="Pequeño (128x128)"/> - <combo_box.item name="Medium(256x256)" label="Medio (256x256)"/> - <combo_box.item name="Large(512x512)" label="Grande (512x512)"/> - <combo_box.item name="Custom" label="Personalizar"/> + <combo_box.item label="Ventana actual" name="CurrentWindow"/> + <combo_box.item label="Pequeño (128x128)" name="Small(128x128)"/> + <combo_box.item label="Medio (256x256)" name="Medium(256x256)"/> + <combo_box.item label="Grande (512x512)" name="Large(512x512)"/> + <combo_box.item label="Personalizar" name="Custom"/> </combo_box> <combo_box label="Resolución" name="local_size_combo"> - <combo_box.item name="CurrentWindow" label="Ventana actual"/> - <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="Personalizar"/> + <combo_box.item label="Ventana actual" 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="Personalizar" 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="Ancho" name="snapshot_width" label_width="41" width="101"/> - <spinner label="Alto" name="snapshot_height" label_width="30" width="90" left="121"/> + <spinner label="Ancho" label_width="41" name="snapshot_width" width="101"/> + <spinner label="Alto" label_width="30" left="121" name="snapshot_height" width="90"/> <check_box label="Mantener las proporciones" name="keep_aspect_check"/> <slider label="Calidad de la imagen" name="image_quality_slider"/> <text name="layer_type_label"> Captura: </text> <combo_box label="Capas de la imagen" name="layer_types"> - <combo_box.item name="Colors" label="Colores"/> - <combo_box.item name="Depth" label="Profundidad"/> - <combo_box.item name="ObjectMattes" label="Bandas negras"/> + <combo_box.item label="Colores" name="Colors"/> + <combo_box.item label="Profundidad" name="Depth"/> + <combo_box.item label="Bandas negras" name="ObjectMattes"/> </combo_box> - <check_box label="Incluir la interfaz en la foto" name="ui_check"/> - <check_box bottom_delta="-17" label="Incluir los HUD en la foto" name="hud_check"/> + <check_box label="Interfaz" name="ui_check"/> + <check_box bottom_delta="-17" label="HUDs" name="hud_check"/> <check_box bottom_delta="-17" label="Mantenerla abierta tras guardarla" name="keep_open_check"/> - <check_box bottom_delta="-17" label="Congelar la toma (vista previa en pantalla completa)" name="freeze_frame_check"/> + <check_box bottom_delta="-17" label="Congelar la toma (pantalla completa)" name="freeze_frame_check"/> <check_box bottom_delta="-29" label="Actualizar automáticamente" name="auto_snapshot_check"/> <string name="unknown"> desconocido diff --git a/indra/newview/skins/default/xui/es/floater_stats.xml b/indra/newview/skins/default/xui/es/floater_stats.xml new file mode 100644 index 0000000000..5f4fabf375 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_stats.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Statistics" title="ESTADÍSTICAS"> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="Básico" name="basic"> + <stat_bar label="FPS" name="fps"/> + <stat_bar label="Ancho de banda" name="bandwidth"/> + <stat_bar label="Pérdida de paquetes" name="packet_loss"/> + <stat_bar label="Ping del Sim" name="ping"/> + </stat_view> + <stat_view label="Avanzado" name="advanced"> + <stat_view label="Renderización" name="render"> + <stat_bar label="KTris generados" name="ktrisframe"/> + <stat_bar label="KTris generados" name="ktrissec"/> + <stat_bar label="Objetos en total" name="objs"/> + <stat_bar label="Objetos nuevos" name="newobjs"/> + </stat_view> + <stat_view label="Textura" name="texture"> + <stat_bar label="Número" name="numimagesstat"/> + <stat_bar label="Raw: número" name="numrawimagesstat"/> + <stat_bar label="GL Mem" name="gltexmemstat"/> + <stat_bar label="Formatted Mem" name="formattedmemstat"/> + <stat_bar label="Raw Mem" name="rawmemstat"/> + <stat_bar label="Bound Mem" name="glboundmemstat"/> + </stat_view> + <stat_view label="Red" name="network"> + <stat_bar label="Paquetes salientes" name="packetsinstat"/> + <stat_bar label="Paquetes entrantes" name="packetsoutstat"/> + <stat_bar label="Objetos" name="objectkbitstat"/> + <stat_bar label="Textura" name="texturekbitstat"/> + <stat_bar label="Asset" name="assetkbitstat"/> + <stat_bar label="Capas" name="layerskbitstat"/> + <stat_bar label="Entrando ahora" name="actualinkbitstat"/> + <stat_bar label="Saliendo ahora" name="actualoutkbitstat"/> + <stat_bar label="Operaciones VFS pendientes" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="Simulador" name="sim"> + <stat_bar label="Tiempo de dilación" name="simtimedilation"/> + <stat_bar label="FPS en el Sim" name="simfps"/> + <stat_bar label="Physics FPS" name="simphysicsfps"/> + <stat_view label="Physics Details" name="physicsdetail"> + <stat_bar label="Pin de objetos" name="physicspinnedtasks"/> + <stat_bar label="Objetos con bajo nivel de detalle" name="physicslodtasks"/> + <stat_bar label="Memoria asignada" name="physicsmemoryallocated"/> + <stat_bar label="Agentes: actual./seg." name="simagentups"/> + <stat_bar label="Agentes del grid principal" name="simmainagents"/> + <stat_bar label="Agentes secundarios" name="simchildagents"/> + <stat_bar label="Objetos" name="simobjects"/> + <stat_bar label="Objetos activos" name="simactiveobjects"/> + <stat_bar label="Scripts activos" name="simactivescripts"/> + <stat_bar label="Eventos de scripts" name="simscripteps"/> + <stat_bar label="Paquetes salientes" name="siminpps"/> + <stat_bar label="Paquetes entrantes" name="simoutpps"/> + <stat_bar label="Descargas pendientes" name="simpendingdownloads"/> + <stat_bar label="Subidas pendientes" name="simpendinguploads"/> + <stat_bar label="Total de bytes no reconocidos" name="simtotalunackedbytes"/> + </stat_view> + <stat_view label="Tiempo (ms)" name="simperf"> + <stat_bar label="Tiempo total de los frames" name="simframemsec"/> + <stat_bar label="Tiempo de red" name="simnetmsec"/> + <stat_bar label="Physics Time" name="simsimphysicsmsec"/> + <stat_bar label="Tiempo de la simulación" name="simsimothermsec"/> + <stat_bar label="Tiempo de los agentes" name="simagentmsec"/> + <stat_bar label="Tiempo de las imágenes" name="simimagesmsec"/> + <stat_bar label="Tiempo de los scripts" name="simscriptmsec"/> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_sys_well.xml b/indra/newview/skins/default/xui/es/floater_sys_well.xml new file mode 100644 index 0000000000..8c8190be55 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_sys_well.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="sys_well_window" title="NOTIFICACIONES"> + <string name="title_im_well_window"> + CONVERSACIONES + </string> + <string name="title_notification_well_window"> + NOTIFICACIONES + </string> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_telehub.xml b/indra/newview/skins/default/xui/es/floater_telehub.xml index b2dddfb7f7..87cc9c1659 100644 --- a/indra/newview/skins/default/xui/es/floater_telehub.xml +++ b/indra/newview/skins/default/xui/es/floater_telehub.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="telehub" title="PUNTO DE TELEPORTE" min_height="310" height="310"> +<floater height="310" min_height="310" name="telehub" title="PUNTO DE TELEPORTE"> <text name="status_text_connected"> Punto de Teleporte conectado al objeto [OBJECT] </text> @@ -9,7 +9,7 @@ <text name="help_text_connected"> Para quitar, pulse Desconectar. </text> - <text name="help_text_not_connected" height="38" bottom_delta="-18"> + <text bottom_delta="-18" height="38" name="help_text_not_connected"> Seleccione el objeto y pulse Conectar el Punto de Teleporte. </text> @@ -21,12 +21,9 @@ de Teleporte. <button label="Añadir sucursales" name="add_spawn_point_btn"/> <button label="Quitar sucursales" name="remove_spawn_point_btn"/> <text name="spawn_point_help"> - Seleccione el objeto y pulse Añadir para -especificar la posición. -Hecho eso, puede mover o borrar el objeto. -Las posiciones son relativas al centro del -Punto de Teleporte. -Seleccione un ítem de la lista para mostrar su -posición en el mundo. + Selecciona el objeto y pulsa "Añadir sucursal" para especificar una posición. +Luego, puedes mover o borrar el objeto. +Las posiciones son relativas al centro del Punto de Teleporte. +Elige un ítem de la lista para realzarlo en el mundo. </text> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml index 09d6e7e4aa..ed2787ea60 100644 --- a/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/es/floater_texture_ctrl.xml @@ -1,23 +1,23 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="texture picker" title="ELEGIR: TEXTURA"> +<floater name="texture picker" title="DESTACADO: TEXTURA"> <string name="choose_picture"> Pulse para elegir una imagen </string> <text name="Multiple"> - Múltiple + Texturas múltiples </text> <text name="unknown"> - Dimensiones: [DIMENSIONS] + Tamaño: [DIMENSIONS] </text> <button label="Por defecto" label_selected="Por defecto" name="Default" width="84"/> - <button label="Ninguna" label_selected="Ninguna" name="None" left="90"/> + <button label="Ninguna" label_selected="Ninguna" left="90" name="None"/> <button label="Blanca" label_selected="Blanca" name="Blank"/> <check_box label="Ver las carpetas" name="show_folders_check"/> - <search_editor label="Escriba aquí para buscar una" name="inventory search editor"/> - <check_box label="Aplicar ahora mismo" name="apply_immediate_check"/> + <search_editor label="Filtrar las texturas" name="inventory search editor"/> + <check_box label="Aplicarlo ahora" name="apply_immediate_check"/> <button label="" label_selected="" name="Pipette"/> <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <button label="Elegir" label_selected="Elegir" name="Select"/> + <button label="OK" label_selected="OK" name="Select"/> <string name="pick title"> Elegir: </string> diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml index 24db352ac4..1c65567830 100644 --- a/indra/newview/skins/default/xui/es/floater_tools.xml +++ b/indra/newview/skins/default/xui/es/floater_tools.xml @@ -1,45 +1,81 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="toolbox floater" title="" short_title="CONSTRUIR" width="288"> +<floater name="toolbox floater" short_title="HERRAMIENTAS DE CONSTRUCCIÓN" title="" width="288"> + <floater.string name="status_rotate"> + Arrastre las bandas de color para girar el objeto + </floater.string> + <floater.string name="status_scale"> + Pulse y arrastre para estirar el lado seleccionado + </floater.string> + <floater.string name="status_move"> + Arrastrar para mover, Mayús.+arrastrar para copiar + </floater.string> + <floater.string name="status_modifyland"> + Mantenga pulsado para modificar el terreno + </floater.string> + <floater.string name="status_camera"> + Pulsa y arrastra para mover la cámara + </floater.string> + <floater.string name="status_grab"> + Arrastra para mover: Ctrl, verticalmente; Ctrl-Mayús., girando + </floater.string> + <floater.string name="status_place"> + Pulse en el mundo para construir + </floater.string> + <floater.string name="status_selectland"> + Pulse y arrastre para seleccionar el terreno + </floater.string> + <floater.string name="grid_screen_text"> + Pantalla + </floater.string> + <floater.string name="grid_local_text"> + Local + </floater.string> + <floater.string name="grid_world_text"> + Mundo + </floater.string> + <floater.string name="grid_reference_text"> + Referencia + </floater.string> + <floater.string name="grid_attachment_text"> + Añadido + </floater.string> <button label="" label_selected="" name="button focus" tool_tip="Visión"/> <button label="" label_selected="" name="button move" tool_tip="Mover"/> <button label="" label_selected="" name="button edit" tool_tip="Editar"/> <button label="" label_selected="" name="button create" tool_tip="Crear"/> <button label="" label_selected="" name="button land" tool_tip="Terreno"/> + <text name="text status" width="280"> + Arrastrar para mover, Mayús.+arrastrar para copiar + </text> <radio_group name="focus_radio_group"> <radio_item label="Zoom" name="radio zoom"/> <radio_item label="Órbita (Ctrl)" name="radio orbit"/> - <radio_item label="Panorámica (Ctrl-Shift)" name="radio pan"/> + <radio_item label="Panorámica (Ctrl+Shift)" name="radio pan"/> </radio_group> <radio_group name="move_radio_group"> <radio_item label="Mover" name="radio move"/> <radio_item label="Vertical (Ctrl)" name="radio lift"/> - <radio_item label="Horizontal (Ctrl-Shift)" name="radio spin"/> + <radio_item label="Horizontal (Ctrl+Shift)" name="radio spin"/> </radio_group> <radio_group name="edit_radio_group"> - <radio_item label="Posición" name="radio position"/> + <radio_item label="Moverse" name="radio position"/> <radio_item label="Girar (Ctrl)" name="radio rotate"/> - <radio_item label="Estirar (Ctrl-Shift)" name="radio stretch"/> + <radio_item label="Estirar (Ctrl+Shift)" name="radio stretch"/> <radio_item label="Elegir la cara" name="radio select face"/> </radio_group> <check_box label="Editar las partes enlazadas" name="checkbox edit linked parts"/> - <text name="text ruler mode"> - Ajuste: + <text name="RenderingCost" tool_tip="Muestra cuánto se calcula que cuesta renderizar este objeto"> + þ: [COUNT] </text> - <combo_box name="combobox grid mode" width="82"> - <combo_box.item name="World" label="Mundo" - /> - <combo_box.item name="Local" label="Local" - /> - <combo_box.item name="Reference" label="Referencia" - /> - </combo_box> <check_box label="Estirar ambos lados" name="checkbox uniform"/> - <check_box label="Estirar las texturas" name="checkbox stretch textures"/> - <check_box label="Usar la cuadrícula" name="checkbox snap to grid"/> - <button label="Opciones..." label_selected="Opciones..." name="Options..."/> - <text name="text status" width="280"> - Arrastrar para mover, Mayús.+arrastrar para copiar - </text> + <check_box initial_value="true" label="Estirar las texturas" name="checkbox stretch textures"/> + <check_box initial_value="true" label="Usar la cuadrícula" name="checkbox snap to grid"/> + <combo_box name="combobox grid mode" tool_tip="Elige qué cuadricula usar para posicionar el objeto" width="82"> + <combo_box.item label="Mundo" name="World"/> + <combo_box.item label="Local" name="Local"/> + <combo_box.item label="Referencia" name="Reference"/> + </combo_box> + <button label="Opciones..." label_selected="Opciones..." name="Options..." tool_tip="Ver más opciones de la cuadrícula"/> <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="Pirámide"/> @@ -55,10 +91,10 @@ <button label="" label_selected="" name="ToolRing" tool_tip="Cono truncado"/> <button label="" label_selected="" name="ToolTree" tool_tip="Árbol"/> <button label="" label_selected="" name="ToolGrass" tool_tip="Hierba"/> - <check_box label="Mantener seleccionado" name="checkbox sticky"/> - <check_box label="Copia seleccionada" name="checkbox copy selection"/> - <check_box label="Centrada" name="checkbox copy centers"/> - <check_box label="Girada" name="checkbox copy rotates"/> + <check_box label="Mantener la herramienta elegida" name="checkbox sticky"/> + <check_box label="Copiar la selección" name="checkbox copy selection"/> + <check_box initial_value="true" label="Copia centrada" name="checkbox copy centers"/> + <check_box label="Copia girada" name="checkbox copy rotates"/> <radio_group name="land_radio_group"> <radio_item label="Seleccionar el terreno" name="radio select land"/> <radio_item label="Nivelar" name="radio flatten"/> @@ -68,7 +104,6 @@ <radio_item label="Escarpar" name="radio noise"/> <radio_item label="Restablecer" name="radio revert"/> </radio_group> - <button label="Aplicar" label_selected="Aplicar" name="button apply to selection" tool_tip="Modificar el terreno seleccionado" left="146"/> <text name="Bulldozer:"> Bulldozer: </text> @@ -78,14 +113,51 @@ <text name="Strength:"> Fuerza </text> - <text name="obj_count" left="134"> - Objetos seleccionados: [COUNT] + <button label="Aplicar" label_selected="Aplicar" left="146" name="button apply to selection" tool_tip="Modificar el terreno seleccionado"/> + <text left="134" name="obj_count"> + Objetos: [COUNT] </text> - <text name="prim_count" left="134"> - primitivas: [COUNT] + <text left="134" name="prim_count"> + Primitivas: [COUNT] </text> <tab_container name="Object Info Tabs" tab_max_width="62" tab_min_width="30" width="288"> <panel label="General" name="General"> + <panel.string name="text deed continued"> + Transfeir + </panel.string> + <panel.string name="text deed"> + Transferir + </panel.string> + <panel.string name="text modify info 1"> + Puedes modificar este objeto + </panel.string> + <panel.string name="text modify info 2"> + Puedes modificar estos objetos + </panel.string> + <panel.string name="text modify info 3"> + No puedes modificar este objeto + </panel.string> + <panel.string name="text modify info 4"> + No puedes modificar estos objetos + </panel.string> + <panel.string name="text modify warning"> + Para configurar los permisos, debes seleccionar el objeto completo + </panel.string> + <panel.string name="Cost Default"> + Precio: L$ + </panel.string> + <panel.string name="Cost Total"> + Precio total: L$ + </panel.string> + <panel.string name="Cost Per Unit"> + Price Per: L$ + </panel.string> + <panel.string name="Cost Mixed"> + Precio variable + </panel.string> + <panel.string name="Sale Mixed"> + Venta variable + </panel.string> <text name="Name:"> Nombre: </text> @@ -98,135 +170,77 @@ <text name="Creator Name"> Thrax Linden </text> - <button label="Perfil..." label_selected="Perfil..." name="button creator profile"/> <text name="Owner:"> Propietario: </text> <text name="Owner Name"> Thrax Linden </text> - <button label="Perfil..." label_selected="Perfil..." name="button owner profile"/> <text name="Group:"> Grupo: </text> - <text name="Group Name Proxy"> - Los Linden - </text> - <button label="Configurar..." label_selected="Configurar..." name="button set group"/> - <text name="Permissions:"> - Permisos: - </text> - - <check_box label="Compartir con el grupo" name="checkbox share with group" tool_tip="Permitir que todos los miembros del grupo compartan y utilicen sus permisos sobre este objeto. Debe transferirlo para activar las restricciones según los roles."/> - <string name="text deed continued"> - Transferir... - </string> - <string name="text deed"> - Transferir - </string> - <button label="Transferir..." label_selected="Transferir..." name="button deed" tool_tip="Los objetos compartidos por el grupo pueden ser transferidos por un oficial del grupo."/> - <check_box label="Permitir a cualquiera que lo mueva" name="checkbox allow everyone move"/> - <check_box label="Permitir a cualquiera que lo copie" name="checkbox allow everyone copy"/> - <check_box label="Mostrar en la búsqueda" name="search_check" tool_tip="Dejar que la gente vea este objeto en los resultados de la búsqueda"/> - <check_box label="En venta" name="checkbox for sale"/> - <text name="Cost"> - Precio: L$ + <button label="Configurar..." label_selected="Configurar..." name="button set group" tool_tip="Elige un grupo con el que compartir los permisos de este objeto"/> + <name_box initial_value="Cargando..." name="Group Name Proxy"/> + <button label="Transfeir" label_selected="Transfeir" name="button deed" tool_tip="La transferencia entrega este objeto con los permisos del próximo propietario. Los objetos compartidos por el grupo pueden ser transferidos por un oficial del grupo."/> + <check_box label="Compartir" name="checkbox share with group" tool_tip="Permite que todos los miembros del grupo compartan tus permisos de modificación en este objeto. Debes transferirlo para activar las restricciones según los roles."/> + <text name="label click action" width="180"> + Al tocarlo: </text> + <combo_box name="clickaction" width="192"> + <combo_box.item label="Tocarlo (por defecto)" name="Touch/grab(default)"/> + <combo_box.item label="Sentarse en el objeto" name="Sitonobject"/> + <combo_box.item label="Comprar el objeto" name="Buyobject"/> + <combo_box.item label="Pagar al objeto" name="Payobject"/> + <combo_box.item label="Abrirlo" name="Open"/> + <combo_box.item label="Zoom" name="Zoom"/> + </combo_box> + <check_box label="En venta:" name="checkbox for sale"/> <combo_box name="sale type"> <combo_box.item label="Copia" name="Copy"/> <combo_box.item label="Contenidos" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> - - <text name="label click action" width="180"> - Al pulsarlo con el botón izquierdo: - </text> - <combo_box name="clickaction" width="192"> - <combo_box.item name="Touch/grab(default)" label="Tocar/Agarrar (por defecto)" - /> - <combo_box.item name="Sitonobject" label="Sentarse en el objeto" - /> - <combo_box.item name="Buyobject" label="Comprar el objeto" - /> - <combo_box.item name="Payobject" label="Pagar al objeto" - /> - <combo_box.item name="Open" label="Abrirlo" - /> - <combo_box.item name="Play" label="Ejecutar los media de la parcela" - /> - <combo_box.item name="Opemmedia" label="Abrir los media de la parcela" - /> - </combo_box> - <panel name="perms_build"> - <text name="perm_modify"> - Puede modificar este objeto - </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:"> - El próximo propietario puede: - </text> - <check_box label="Modificarlo" name="checkbox next owner can modify"/> - <check_box label="Copiarlo" 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"> - Puede modificar este objeto - </string> - <string name="text modify info 2"> - Puede modificar estos objetos - </string> - <string name="text modify info 3"> - No puede modificar este objeto - </string> - <string name="text modify info 4"> - No puede modificar estos objetos - </string> - <string name="text modify warning"> - Debe seleccionar todo el objeto para definir los permisos - </string> - <string name="Cost Default"> - Precio: L$ - </string> - <string name="Cost Total"> - Precio total: L$ - </string> - <string name="Cost Per Unit"> - Precio por: L$ - </string> - <string name="Cost Mixed"> - Precio variable - </string> - <string name="Sale Mixed"> - Venta variable - </string> + <spinner label="Precio: L$" name="Edit Cost"/> + <check_box label="Mostrar en la búsqueda" name="search_check" tool_tip="Dejar que la gente vea este objeto en los resultados de la búsqueda"/> + <panel name="perms_build"> + <text name="perm_modify"> + Puedes modificar este objeto + </text> + <text name="Anyone can:"> + Cualquiera: + </text> + <check_box label="Moverlo" name="checkbox allow everyone move"/> + <check_box label="Copiar" name="checkbox allow everyone copy"/> + <text name="Next owner can:"> + Próximo propietario: + </text> + <check_box label="Modificarlo" name="checkbox next owner can modify"/> + <check_box label="Copiarlo" left_delta="80" name="checkbox next owner can copy"/> + <check_box label="Transferirlo" left_delta="67" name="checkbox next owner can transfer" tool_tip="El próximo propietario puede dar o revender este objeto"/> + <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="Objeto" name="Object"> - <text name="select_single"> - Seleccione un sólo prim para editarlo. - </text> - <text name="edit_object"> - Modificar los parámetros del objeto: - </text> <check_box label="Bloqueado" name="checkbox locked" tool_tip="Previene que el objeto sea movido o borrado. Suele ser útil mientras se construye, para prevenir que se modifique sin querer."/> <check_box label="Material" name="Physical Checkbox Ctrl" tool_tip="Permite que el objeto pueda ser empujado y le afecte la gravedad."/> - <check_box label="Temporal" name="Temporary Checkbox Ctrl" tool_tip="Hace que el objeto se borre 1 minuto después de su creación."/> + <check_box label="Temporal" name="Temporary Checkbox Ctrl" tool_tip="Provoca que el objeto desaparezca 1 minuto después de ser creado"/> <check_box label="Inmaterial" name="Phantom Checkbox Ctrl" tool_tip="Hace que el objeto no colisiones con otros objetos o avatares."/> <text name="label position"> Posición (metros) @@ -246,48 +260,27 @@ <spinner label="X" name="Rot X"/> <spinner label="Y" name="Rot Y"/> <spinner label="Z" name="Rot Z"/> - <text name="label material"> - Material - </text> - <combo_box name="material"> - <combo_box.item name="Stone" label="Piedra" - /> - <combo_box.item name="Metal" label="Metal" - /> - <combo_box.item name="Glass" label="Vidrio" - /> - <combo_box.item name="Wood" label="Madera" - /> - <combo_box.item name="Flesh" label="Carne" - /> - <combo_box.item name="Plastic" label="Plástico" - /> - <combo_box.item name="Rubber" label="Goma" - /> - </combo_box> - <text name="label basetype"> - Tipo de objeto a construir - </text> <combo_box name="comboBaseType"> - <combo_box.item name="Box" label="Caja" - /> - <combo_box.item name="Cylinder" label="Cilindro" - /> - <combo_box.item name="Prism" label="Prisma" - /> - <combo_box.item name="Sphere" label="Esfera" - /> - <combo_box.item name="Torus" label="Toroide" - /> - <combo_box.item name="Tube" label="Tubo" - /> - <combo_box.item name="Ring" label="Cono truncado" - /> - <combo_box.item name="Sculpted" label="Sculpted" - /> + <combo_box.item label="Caja" name="Box"/> + <combo_box.item label="Cilindro" name="Cylinder"/> + <combo_box.item label="Prisma" name="Prism"/> + <combo_box.item label="Esfera" name="Sphere"/> + <combo_box.item label="Toroide" name="Torus"/> + <combo_box.item label="Tubo" name="Tube"/> + <combo_box.item label="Cono truncado" name="Ring"/> + <combo_box.item label="Sculpted" name="Sculpted"/> + </combo_box> + <combo_box name="material"> + <combo_box.item label="Piedra" name="Stone"/> + <combo_box.item label="Metal" name="Metal"/> + <combo_box.item label="Vidrio" name="Glass"/> + <combo_box.item label="Madera" name="Wood"/> + <combo_box.item label="Carne" name="Flesh"/> + <combo_box.item label="Plástico" name="Plastic"/> + <combo_box.item label="Goma" name="Rubber"/> </combo_box> <text name="text cut"> - Corte: Inicio y Fin + Corte (inicio/fin) </text> <spinner label="I" name="cut begin"/> <spinner label="F" name="cut end"/> @@ -301,17 +294,13 @@ Forma del hueco </text> <combo_box name="hole"> - <combo_box.item name="Default" label="Por defecto" - /> - <combo_box.item name="Circle" label="Círculo" - /> - <combo_box.item name="Square" label="Cuadrado" - /> - <combo_box.item name="Triangle" label="Triángulo" - /> + <combo_box.item label="Por defecto" name="Default"/> + <combo_box.item label="Círculo" name="Circle"/> + <combo_box.item label="Cuadrado" name="Square"/> + <combo_box.item label="Triángulo" name="Triangle"/> </combo_box> <text name="text twist"> - Torsión: Inicio y Fin + Torsión (inicio/fin) </text> <spinner label="I" name="Twist Begin"/> <spinner label="F" name="Twist End"/> @@ -329,13 +318,13 @@ <spinner label="X" name="Shear X"/> <spinner label="Y" name="Shear Y"/> <text name="advanced_cut"> - Corte del perfil: Inicio y Fin + Corte del perfil (inicio/fin) </text> <text name="advanced_dimple"> - Horadar: Inicio y Fin + Horadar (inicio/fin) </text> <text name="advanced_slice"> - Cortar: Inicio y Fin + Cortar (inicio/fin) </text> <spinner label="I" name="Path Limit Begin"/> <spinner label="F" name="Path Limit End"/> @@ -351,22 +340,17 @@ Giros </text> <texture_picker label="Textura para sculpted" name="sculpt texture control" tool_tip="Pulse para elegir una imagen"/> - <check_box label="Espejo" name="sculpt mirror control" tool_tip="Girar el prim sculpted siguiendo el eje X."/> - <check_box label="Dentro-Fuera" name="sculpt invert control" tool_tip="Invertir los valores de los prims sculpted, haciendo aparecer fuera lo de dentro."/> + <check_box label="Espejo" name="sculpt mirror control" tool_tip="Girar el prim sculpted siguiendo el eje X"/> + <check_box label="Dentro-Fuera" name="sculpt invert control" tool_tip="Invertir los valores de los prims sculpted, haciendo aparecer fuera lo de dentro"/> <text name="label sculpt type"> Tipo de unión </text> <combo_box name="sculpt type control"> - <combo_box.item name="None" label="(ninguna)" - /> - <combo_box.item name="Sphere" label="Esfera" - /> - <combo_box.item name="Torus" label="Toroide" - /> - <combo_box.item name="Plane" label="Plano" - /> - <combo_box.item name="Cylinder" label="Cilindro" - /> + <combo_box.item label="(ninguna)" name="None"/> + <combo_box.item label="Esfera" name="Sphere"/> + <combo_box.item label="Toroide" name="Torus"/> + <combo_box.item label="Plano" name="Plane"/> + <combo_box.item label="Cilindro" name="Cylinder"/> </combo_box> </panel> <panel label="Caracter." name="Features"> @@ -376,7 +360,7 @@ <text name="edit_object"> Editar las características del objeto: </text> - <check_box label="Flexibilidad" name="Flexible1D Checkbox Ctrl" tool_tip="Permite que el objeto flexione en el eje Z. (Sólo del lado del cliente)"/> + <check_box label="Flexibilidad" name="Flexible1D Checkbox Ctrl" tool_tip="Permite que el objeto flexione en el eje Z (sólo del lado del cliente)"/> <spinner label="Blandura" name="FlexNumSections"/> <spinner label="Gravedad" name="FlexGravity"/> <spinner label="Fricción" name="FlexFriction"/> @@ -386,86 +370,70 @@ <spinner label="Fuerza en Y" name="FlexForceY"/> <spinner label="Fuerza en Z" name="FlexForceZ"/> <check_box label="Luz" name="Light Checkbox Ctrl" tool_tip="Hace que el objeto emita luz"/> - <text name="label color"> - Color - </text> - <color_swatch label="" name="colorswatch" tool_tip="Pulse para abrir el selector de color"/> + <color_swatch label="" name="colorswatch" tool_tip="Pulsa para abrir el selector de color"/> + <texture_picker label="" name="light texture control" tool_tip="Pulsa para elegir una proyección de imagen (sólo tiene efecto con renderización deferida activada)"/> <spinner label="Intensidad" name="Light Intensity"/> + <spinner label="FOV" name="Light FOV"/> <spinner label="Radio" name="Light Radius"/> + <spinner label="Visión" name="Light Focus"/> <spinner label="Atenuación" name="Light Falloff"/> + <spinner label="Ambiental" name="Light Ambiance"/> </panel> <panel label="Textura" name="Texture"> + <panel.string name="string repeats per meter"> + Repeticiones por m. + </panel.string> + <panel.string name="string repeats per face"> + Repeticiones por cara + </panel.string> <texture_picker label="Textura" name="texture control" tool_tip="Pulse para elegir una imagen"/> - <color_swatch label="Color" name="colorswatch" tool_tip="Pulse para abrir el selector de color"/> + <color_swatch label="Color" name="colorswatch" tool_tip="Pulsa para abrir el selector de color"/> <text name="color trans"> Transparencia % </text> <text name="glow label"> Resplandor </text> - <check_box label="Brillo al máximo" name="checkbox fullbright" bottom_delta="-21"/> + <check_box bottom_delta="-21" label="Brillo al +máximo" name="checkbox fullbright"/> <text name="tex gen"> Detallado </text> <combo_box name="combobox texgen" width="86"> - <combo_box.item name="Default" label="Por defecto" - /> - <combo_box.item name="Planar" label="Plano" - /> + <combo_box.item label="Por defecto" name="Default"/> + <combo_box.item label="Plano" name="Planar"/> </combo_box> <text name="label shininess"> Brillantez </text> <combo_box name="combobox shininess"> - <combo_box.item name="None" label="Ninguna" - /> - <combo_box.item name="Low" label="Baja" - /> - <combo_box.item name="Medium" label="Media" - /> - <combo_box.item name="High" label="Alta" - /> + <combo_box.item label="Ninguna" name="None"/> + <combo_box.item label="Baja" name="Low"/> + <combo_box.item label="Media" name="Medium"/> + <combo_box.item label="Alta" name="High"/> </combo_box> <text name="label bumpiness"> Relieve </text> <combo_box name="combobox bumpiness"> - <combo_box.item name="None" label="Ninguno" - /> - <combo_box.item name="Brightness" label="Brillo" - /> - <combo_box.item name="Darkness" label="Oscuro" - /> - <combo_box.item name="woodgrain" label="grano de madera" - /> - <combo_box.item name="bark" label="corteza" - /> - <combo_box.item name="bricks" label="ladrillos" - /> - <combo_box.item name="checker" label="cajero" - /> - <combo_box.item name="concrete" label="cemento" - /> - <combo_box.item name="crustytile" label="azulejería" - /> - <combo_box.item name="cutstone" label="piedra cortada" - /> - <combo_box.item name="discs" label="discos" - /> - <combo_box.item name="gravel" label="grava" - /> - <combo_box.item name="petridish" label="placa de Petri" - /> - <combo_box.item name="siding" label="revestimiento" - /> - <combo_box.item name="stonetile" label="baldosa de piedra" - /> - <combo_box.item name="stucco" label="estuco" - /> - <combo_box.item name="suction" label="succión" - /> - <combo_box.item name="weave" label="tejido" - /> + <combo_box.item label="Ninguno" name="None"/> + <combo_box.item label="Brillo" name="Brightness"/> + <combo_box.item label="Oscuro" name="Darkness"/> + <combo_box.item label="grano de madera" name="woodgrain"/> + <combo_box.item label="corteza" name="bark"/> + <combo_box.item label="ladrillos" name="bricks"/> + <combo_box.item label="cajero" name="checker"/> + <combo_box.item label="cemento" name="concrete"/> + <combo_box.item label="azulejería" name="crustytile"/> + <combo_box.item label="piedra cortada" name="cutstone"/> + <combo_box.item label="discos" name="discs"/> + <combo_box.item label="grava" name="gravel"/> + <combo_box.item label="placa de Petri" name="petridish"/> + <combo_box.item label="revestimiento" name="siding"/> + <combo_box.item label="baldosa de piedra" name="stonetile"/> + <combo_box.item label="estuco" name="stucco"/> + <combo_box.item label="succión" name="suction"/> + <combo_box.item label="tejido" name="weave"/> </combo_box> <text name="tex scale"> Repeticiones por cara @@ -474,31 +442,23 @@ <check_box label="Voltear" name="checkbox flip s"/> <spinner label="Vertical (V)" name="TexScaleV"/> <check_box label="Voltear" name="checkbox flip t"/> - <text name="tex rotate"> - Rotación (grados) - </text> - <string name="string repeats per meter"> - Repeticiones por m. - </string> - <string name="string repeats per face"> - Repeticiones por cara - </string> - <text name="rpt"> - Repeticiones por m. - </text> - <spinner left="118" name="TexRot" width="62" /> - <spinner left="118" name="rptctrl" width="62" /> - <button label="Aplicar" label_selected="Aplicar" name="button apply" left_delta="72"/> + <spinner label="Rotación" left="118" name="TexRot" width="62"/> + <spinner label="Repeticiones / Metro" left="118" name="rptctrl" width="62"/> + <button label="Aplicar" label_selected="Aplicar" left_delta="72" name="button apply"/> <text name="tex offset"> Desplazar </text> <spinner label="Horizontal (U)" name="TexOffsetU"/> <spinner label="Vertical (V)" name="TexOffsetV"/> - <text name="textbox autofix" width="180"> - Centrar la textura para los media -(primero debe subirla) - </text> - <button label="Alinear" label_selected="Alinear" name="button align" left="180"/> + <panel name="Add_Media"> + <text name="media_tex"> + Media + </text> + <button name="add_media" tool_tip="Añadir un media"/> + <button name="delete_media" tool_tip="Borrar esta textura para media"/> + <button name="edit_media" tool_tip="Editar este media"/> + <button label="Centrar" label_selected="Centrar los media" name="button align" tool_tip="Centrar esta textura para media (primero debe cargarse)"/> + </panel> </panel> <panel label="Contenido " name="Contents"> <button label="Script nuevo" label_selected="Script nuevo" name="button new script"/> @@ -513,59 +473,26 @@ Precio: [PRICE] L$ por [AREA] m² </text> <text name="label_area"> - Superficie: [AREA] m² + Área: [AREA] m² </text> - <button label="Acerca del terreno..." label_selected="Acerca del terreno..." name="button about land" width="140"/> - <check_box label="Mostrar los propietarios" name="checkbox show owners" tool_tip="El color de las parcelas es según su propietario: Verde = Su terreno Agua = Terreno de sus grupos Rojo = Propiedad de otros Amarillo = En venta Morado = Para subasta Gris = Público"/> - <button label="?" label_selected="?" name="button show owners help" left_delta="150"/> + <button label="Acerca del terreno" label_selected="Acerca del terreno" name="button about land" width="140"/> + <check_box label="Mostrar los propietarios" name="checkbox show owners" tool_tip="El color de las parcelas es según su propietario: + +Verde = Su terreno +Agua = Terreno de sus grupos +Rojo = Propiedad de otros +Amarillo = En venta +Morado = Para subasta +Gris = Público"/> <text name="label_parcel_modify"> Modificar la parcela </text> - <button label="Subdividir" label_selected="Subdividir" name="button subdivide land" width="140"/> - <button label="Unir" label_selected="Unir" name="button join land" width="140"/> + <button label="Dividir" label_selected="Dividir" name="button subdivide land" width="140"/> + <button label="Inscribirse" label_selected="Inscribirse" name="button join land" width="140"/> <text name="label_parcel_trans"> Transacciones de terreno </text> <button label="Comprar terreno" label_selected="Comprar terreno" name="button buy land" width="140"/> <button label="Abandonar el terreno" label_selected="Abandonar el terreno" name="button abandon land" width="140"/> </panel> - <floater.string name="status_rotate"> - Arrastre las bandas de color para girar el objeto - </floater.string> - <floater.string name="status_scale"> - Pulse y arrastre para estirar el lado seleccionado - </floater.string> - <floater.string name="status_move"> - Arrastrar para mover, Mayús.+arrastrar para copiar - </floater.string> - <floater.string name="status_modifyland"> - Mantenga pulsado para modificar el terreno - </floater.string> - <floater.string name="status_camera"> - Pulse y arrastre para cambiar el punto de vista - </floater.string> - <floater.string name="status_grab"> - Arrastre para mover objetos: Ctrl, verticalmente; Ctrl-Mayús., para girarlos. - </floater.string> - <floater.string name="status_place"> - Pulse en el mundo para construir - </floater.string> - <floater.string name="status_selectland"> - Pulse y arrastre para seleccionar el terreno - </floater.string> - <floater.string name="grid_screen_text"> - Pantalla - </floater.string> - <floater.string name="grid_local_text"> - Local - </floater.string> - <floater.string name="grid_world_text"> - Mundo - </floater.string> - <floater.string name="grid_reference_text"> - Referencia - </floater.string> - <floater.string name="grid_attachment_text"> - Añadido - </floater.string> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_top_objects.xml b/indra/newview/skins/default/xui/es/floater_top_objects.xml index 29ae9991af..7c2522e8a9 100644 --- a/indra/newview/skins/default/xui/es/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/es/floater_top_objects.xml @@ -1,58 +1,59 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="top_objects" title="CARGANDO..."> +<floater name="top_objects" title="Objetos superiores"> + <floater.string name="top_scripts_title"> + Scripts según su uso + </floater.string> + <floater.string name="top_scripts_text"> + [COUNT] scripts con un total de [TIME] ms + </floater.string> + <floater.string name="scripts_score_label"> + Tiempo + </floater.string> + <floater.string name="scripts_mono_time_label"> + Tiempo en Mono + </floater.string> + <floater.string name="top_colliders_title"> + Objetos que colisionan + </floater.string> + <floater.string name="top_colliders_text"> + [COUNT] objetos con muchas posibles colisiones + </floater.string> + <floater.string name="colliders_score_label"> + Resultado + </floater.string> + <floater.string name="none_descriptor"> + No se ha encontrado ninguno. + </floater.string> <text name="title_text"> Cargando... </text> <scroll_list name="objects_list"> - <column label="Resultado" name="score"/> - <column label="Nombre" name="name"/> - <column label="Propietario" name="owner"/> - <column label="Posición" name="location"/> - <column label="Tiempo" name="time"/> - <column label="Tiempo en Mono" name="mono_time"/> + <scroll_list.columns label="Resultado" name="score"/> + <scroll_list.columns label="Nombre" name="name"/> + <scroll_list.columns label="Propietario" name="owner"/> + <scroll_list.columns label="Posición" name="location"/> + <scroll_list.columns label="Tiempo" name="time"/> + <scroll_list.columns label="Tiempo en Mono" name="mono_time"/> + <scroll_list.columns label="URLs" name="URLs"/> </scroll_list> - <line_editor font="SansSerifSmall" left="140" name="id_editor" width="280"/> - <line_editor font="SansSerifSmall" left="140" name="object_name_editor" width="280"/> - <line_editor font="SansSerifSmall" left="140" name="owner_name_editor" width="280"/> <text name="id_text"> ID del objeto: </text> + <line_editor font="SansSerifSmall" left="140" name="id_editor" width="280"/> <button label="Mostrar la baliza" name="show_beacon_btn" width="115"/> <text name="obj_name_text"> Nombre del objeto: </text> + <line_editor font="SansSerifSmall" left="140" name="object_name_editor" width="280"/> <button label="Filtro" name="filter_object_btn" width="115"/> <text name="owner_name_text" width="130"> - Nombre del propietario: + Propietario: </text> + <line_editor font="SansSerifSmall" left="140" name="owner_name_editor" width="280"/> <button label="Filtro" name="filter_owner_btn" width="115"/> + <button label="Actualizar" name="refresh_btn" width="115"/> <button label="Devolver lo seleccionado" name="return_selected_btn" width="170"/> - <button label="Devolver todo" name="return_all_btn" left="190"/> + <button label="Devolver todo" left="190" name="return_all_btn"/> <button label="Desactivar lo seleccionado" name="disable_selected_btn" width="170"/> - <button label="Desactivar todo" name="disable_all_btn" left="190"/> - <button label="Actualizar" name="refresh_btn" width="115"/> - <string name="top_scripts_title"> - Scripts según su uso - </string> - <string name="top_scripts_text"> - [COUNT] scripts con un total de [TIME] ms - </string> - <string name="scripts_score_label"> - Tiempo - </string> - <string name="scripts_mono_time_label"> - Tiempo en Mono - </string> - <string name="top_colliders_title"> - Objetos que colisionan - </string> - <string name="top_colliders_text"> - [COUNT] objetos con muchas posibles colisiones - </string> - <string name="colliders_score_label"> - Resultado - </string> - <string name="none_descriptor"> - No se ha encontrado ninguno. - </string> + <button label="Desactivar todo" left="190" name="disable_all_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_tos.xml b/indra/newview/skins/default/xui/es/floater_tos.xml index d46c84cb03..78d9b2a9c8 100644 --- a/indra/newview/skins/default/xui/es/floater_tos.xml +++ b/indra/newview/skins/default/xui/es/floater_tos.xml @@ -4,8 +4,7 @@ <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> <check_box label="Estoy de acuerdo con las Condiciones del Servicio" name="agree_chk"/> <text name="tos_heading"> - Por favor, lea cuidadosamente las siguientes Condiciones del Servicio. Si quiere seguir -iniciando sesión en [SECOND_LIFE], debe aceptar el acuerdo. + Por favor, lee cuidadosamente las siguientes Condiciones del Servicio. Para conectarte a [SECOND_LIFE], debes aceptar este acuerdo. </text> <text_editor name="tos_text"> TOS_TEXT diff --git a/indra/newview/skins/default/xui/es/floater_voice_controls.xml b/indra/newview/skins/default/xui/es/floater_voice_controls.xml new file mode 100644 index 0000000000..934d14a45c --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_voice_controls.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_voice_controls" title="Controles de Voz"> + <string name="title_nearby"> + CHAT DE VOZ + </string> + <string name="title_group"> + Multiconferencia de voz con [GROUP] + </string> + <string name="title_adhoc"> + Multiconferencia de voz + </string> + <string name="title_peer_2_peer"> + Llamada: [NAME] + </string> + <string name="no_one_near"> + Nadie cercano tiene activada la voz + </string> + <layout_stack name="my_call_stack"> + <layout_panel name="my_panel"> + <text name="user_text" value="Mi avatar:"/> + </layout_panel> + <layout_panel name="leave_call_btn_panel"> + <button label="Colgar" name="leave_call_btn"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_water.xml b/indra/newview/skins/default/xui/es/floater_water.xml index c86e49a355..9996860137 100644 --- a/indra/newview/skins/default/xui/es/floater_water.xml +++ b/indra/newview/skins/default/xui/es/floater_water.xml @@ -11,20 +11,20 @@ <text name="BHText"> Color del agua </text> - <button label="?" name="WaterFogColorHelp" left="175" /> - <color_swatch label="" name="WaterFogColor" tool_tip="Pulse para abrir el selector de color"/> + <button label="?" left="175" name="WaterFogColorHelp"/> + <color_swatch label="" name="WaterFogColor" tool_tip="Pulsa para abrir el selector de color"/> <text name="WaterFogDensText"> Transparencia </text> - <button label="?" name="WaterFogDensityHelp" left="175" /> + <button label="?" left="175" name="WaterFogDensityHelp"/> <text name="WaterUnderWaterFogModText"> Modificar la claridad del agua </text> - <button label="?" name="WaterUnderWaterFogModHelp" left="175" /> + <button label="?" left="175" name="WaterUnderWaterFogModHelp"/> <text name="BDensText"> Tamaño de las ondulaciones </text> - <button label="?" name="WaterNormalScaleHelp" left="405"/> + <button label="?" left="405" name="WaterNormalScaleHelp"/> <text name="BHText2"> 1 </text> @@ -37,29 +37,29 @@ <text name="HDText"> Escala de Fresnel </text> - <button label="?" name="WaterFresnelScaleHelp" left="405"/> + <button label="?" left="405" name="WaterFresnelScaleHelp"/> <text name="FresnelOffsetText"> Coeficiente de reflexión </text> - <button label="?" name="WaterFresnelOffsetHelp" left="405"/> + <button label="?" left="405" name="WaterFresnelOffsetHelp"/> <text name="DensMultText"> Refracción de la superficie </text> - <button label="?" name="WaterScaleAboveHelp" left="640"/> + <button label="?" left="640" name="WaterScaleAboveHelp"/> <text name="WaterScaleBelowText"> Refracción bajo la superficie </text> - <button label="?" name="WaterScaleBelowHelp" left="640"/> + <button label="?" left="640" name="WaterScaleBelowHelp"/> <text name="MaxAltText"> Desenfoque </text> - <button label="?" name="WaterBlurMultiplierHelp" left="640"/> + <button label="?" left="640" name="WaterBlurMultiplierHelp"/> </panel> <panel label="Imagen" name="Waves"> <text name="BHText"> Sentido de la onda grande </text> - <button label="?" name="WaterWave1Help" left="170"/> + <button label="?" left="170" name="WaterWave1Help"/> <text name="WaterWave1DirXText"> X </text> @@ -69,7 +69,7 @@ <text name="BHText2"> Sentido de la onda pequeña </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/es/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/es/floater_wearable_save_as.xml index 1dfff90004..bf96ed53ce 100644 --- a/indra/newview/skins/default/xui/es/floater_wearable_save_as.xml +++ b/indra/newview/skins/default/xui/es/floater_wearable_save_as.xml @@ -3,7 +3,7 @@ <button label="Guardar" label_selected="Guardar" name="Save"/> <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> <text name="Save item as:"> - Guardar el ítem como: + Guardar el ítem en mi inventario como: </text> <line_editor name="name ed"> Nuevo [DESC] diff --git a/indra/newview/skins/default/xui/es/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/es/floater_whitelist_entry.xml new file mode 100644 index 0000000000..7dc47ca367 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_whitelist_entry.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="whitelist_entry" title="ENTRADA DE LA LISTA BLANCA"> + <text name="media_label"> + Escribe una URL o un rango de URL para añadirla a lista de dominios autorizados + </text> + <line_editor name="whitelist_entry" tool_tip="Añade una URL o un rango de URL a la Lista Blanca"/> + <button label="OK" name="ok_btn"/> + <button label="Cancelar" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_window_size.xml b/indra/newview/skins/default/xui/es/floater_window_size.xml new file mode 100644 index 0000000000..f57ce08eac --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_window_size.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="window_size" title="TAMAÑO DE LA VENTANA"> + <string name="resolution_format"> + [RES_X] x [RES_Y] + </string> + <text name="windowsize_text"> + Definir el tamaño de la ventana: + </text> + <combo_box name="window_size_combo" tool_tip="ancho x alto"> + <combo_box.item label="1000 x 700 (por defecto)" name="item0"/> + <combo_box.item label="1024 x 768" name="item1"/> + <combo_box.item label="1280 x 720 (720 p)" name="item2"/> + <combo_box.item label="1920 x 1080 (1080 p)" name="item3"/> + </combo_box> + <button label="Configurar" name="set_btn"/> + <button label="Cancelar" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_world_map.xml b/indra/newview/skins/default/xui/es/floater_world_map.xml index 4d7337bef7..d5708483e5 100644 --- a/indra/newview/skins/default/xui/es/floater_world_map.xml +++ b/indra/newview/skins/default/xui/es/floater_world_map.xml @@ -1,57 +1,82 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="worldmap" title="MAPA DEL MUNDO"> - <tab_container name="maptab"> - <panel label="Objetos" name="objects_mapview"/> - <panel label="Terreno" name="terrain_mapview"/> - </tab_container> - <text name="you_label"> - Usted - </text> - <text name="home_label"> - Base - </text> - <text name="auction_label"> - Subasta - </text> - <text name="land_for_sale_label"> - Terreno en venta - </text> - <button label="Ir a la Base" label_selected="Ir a la Base" name="Go Home" tool_tip="Teleportar a su Base"/> - <check_box label="Residente" name="people_chk"/> - <check_box label="Punto de Info" name="infohub_chk"/> - <check_box label="Punto de Teleporte" name="telehubchk"/> - <check_box label="Terreno en venta" name="land_for_sale_chk"/> - <text name="events_label"> - Eventos: - </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="Amigos conectados" name="friend combo" tool_tip="Amigo a mostrar en el mapa"> - <combo_box.item name="item1" label="Amigos conectados" /> - </combo_box> - <combo_box label="Hitos" name="landmark combo" tool_tip="Hito a mostrar en el mapa"> - <combo_box.item name="item1" label="Hitos" /> - </combo_box> - <line_editor label="Buscar por el nombre de la región" name="location" tool_tip="Escriba el nombre de una región"/> - <button label="Buscar" name="DoSearch" tool_tip="Buscar una región"/> - <text name="search_label"> - Resultados de la búsqueda: - </text> - <scroll_list name="search_results"> - <column label="" name="icon"/> - <column label="" name="sim_name"/> - </scroll_list> - <text name="location_label"> - Localización: - </text> - <spinner name="spin x" tool_tip="Coordenada X de la posición a mostrar en el mapa"/> - <spinner name="spin y" tool_tip="Coordenada Y de la posición a mostrar en el mapa"/> - <spinner name="spin z" tool_tip="Coordenada Z de la posición a mostrar en el mapa"/> - <button label="Teleportar" label_selected="Teleportar" name="Teleport" tool_tip="Teleportarse a la localización elegida"/> - <button label="Mostrar el destino" label_selected="Mostrar el destino" name="Show Destination" tool_tip="Centrar el mapa en la localización elegida"/> - <button label="Limpiar" label_selected="Limpiar" name="Clear" tool_tip="Parar la búsqueda"/> - <button label="Mostrar mi posición" label_selected="Mostrar mi posición" name="Show My Location" tool_tip="Centrar el mapa en la posición de su avatar"/> - <button label="Copiar la SLurl al portapapeles" name="copy_slurl" tool_tip="Copiar la posición actual como una SLurl, para usarla en la web."/> - <slider label="Zoom" name="zoom slider"/> + <panel name="layout_panel_1"> + <text name="events_label"> + Leyenda + </text> + </panel> + <panel> + <button label="Mostrar mi posición" label_selected="Mostrar mi posición" name="Show My Location" tool_tip="Centrar el mapa en la posición de mi avatar"/> + <text name="me_label"> + Yo + </text> + <check_box label="Residente" name="people_chk"/> + <text name="person_label"> + Persona + </text> + <check_box label="Punto de Info" name="infohub_chk"/> + <text name="infohub_label"> + Punto de Info + </text> + <check_box label="Terreno en venta" name="land_for_sale_chk"/> + <text name="land_sale_label"> + Venta de terreno + </text> + <text name="by_owner_label"> + por el propietario + </text> + <text name="auction_label"> + subasta de terreno + </text> + <button label="Ir a la Base" label_selected="Ir a la Base" name="Go Home" tool_tip="Teleportar a mi Base"/> + <text name="Home_label"> + Base + </text> + <text name="events_label"> + Eventos: + </text> + <check_box label="'PG'" name="event_chk"/> + <text name="pg_label"> + General + </text> + <check_box initial_value="true" label="'Mature'" name="event_mature_chk"/> + <text name="mature_label"> + Moderado + </text> + <check_box label="'Adult'" name="event_adult_chk"/> + <text name="adult_label"> + Adulto + </text> + </panel> + <panel> + <text name="find_on_map_label"> + Encontrar en el mapa + </text> + </panel> + <panel> + <combo_box label="Amigos conectados" name="friend combo" tool_tip="Ver a los amigos en el mapa"> + <combo_box.item label="Mis amigos conectados" name="item1"/> + </combo_box> + <combo_box label="Mis hitos" name="landmark combo" tool_tip="Hito a ver en el mapa"> + <combo_box.item label="Mis hitos" name="item1"/> + </combo_box> + <search_editor label="Regiones alfabéticamente" name="location" tool_tip="Escriba el nombre de una región"/> + <button label="Encontrar" name="DoSearch" tool_tip="Buscar una región"/> + <button name="Clear" tool_tip="Limpia las marcas y actualiza el mapa"/> + <scroll_list name="search_results"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="sim_name"/> + </scroll_list> + <button label="Teleportar" label_selected="Teleportar" name="Teleport" tool_tip="Teleportarse a la localización elegida"/> + <button label="Copiar la SLurl" name="copy_slurl" tool_tip="Copiar la SLurl de esta posición para usarla en una web."/> + <button label="Ver lo elegido" label_selected="Mostrar el destino" name="Show Destination" tool_tip="Centrar el mapa en la localización elegida"/> + </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/es/inspect_avatar.xml b/indra/newview/skins/default/xui/es/inspect_avatar.xml new file mode 100644 index 0000000000..bff10d9292 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Volumen de la voz" value="0.5"/> + <button label="Añadir como amigo" name="add_friend_btn"/> + <button label="MI" name="im_btn"/> + <button label="Perfil" name="view_profile_btn"/> + <panel name="moderator_panel"> + <button label="Desactivar la voz" name="disable_voice"/> + <button label="Activar la voz" name="enable_voice"/> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/es/inspect_group.xml b/indra/newview/skins/default/xui/es/inspect_group.xml new file mode 100644 index 0000000000..ba10b19f41 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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"> + Grupo privado + </string> + <string name="FreeToJoin"> + Inscripción gratuita + </string> + <string name="CostToJoin"> + Inscribirse cuesta [AMOUNT] L$ + </string> + <string name="YouAreMember"> + Eres miembro + </string> + <button label="Inscribirse" name="join_btn"/> + <button label="Abandonar" name="leave_btn"/> + <button label="Ver el perfil" name="view_profile_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/inspect_object.xml b/indra/newview/skins/default/xui/es/inspect_object.xml new file mode 100644 index 0000000000..6a831def07 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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"> + Por [CREATOR] + </string> + <string name="CreatorAndOwner"> + por [CREATOR] +propietario [OWNER] + </string> + <string name="Price"> + [AMOUNT] L$ + </string> + <string name="PriceFree"> + ¡Gratis! + </string> + <string name="Touch"> + Tocar + </string> + <string name="Sit"> + Sentarme + </string> + <button label="Comprar" name="buy_btn"/> + <button label="Pagar" name="pay_btn"/> + <button label="Coger una copia" name="take_free_copy_btn"/> + <button label="Tocar" name="touch_btn"/> + <button label="Sentarme" name="sit_btn"/> + <button label="Abrir" name="open_btn"/> + <icon name="secure_browsing" tool_tip="Navegación segura"/> + <button label="Más" name="more_info_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/inspect_remote_object.xml b/indra/newview/skins/default/xui/es/inspect_remote_object.xml new file mode 100644 index 0000000000..f814e84a6f --- /dev/null +++ b/indra/newview/skins/default/xui/es/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"> + Propietario: + </text> + <button label="Mapa" name="map_btn"/> + <button label="Ignorar" name="block_btn"/> + <button label="Cerrar" name="close_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/menu_attachment_other.xml b/indra/newview/skins/default/xui/es/menu_attachment_other.xml new file mode 100644 index 0000000000..12acb572dc --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Ver el perfil" name="Profile..."/> + <menu_item_call label="Añadir como amigo" name="Add Friend"/> + <menu_item_call label="MI" name="Send IM..."/> + <menu_item_call label="Llamada" name="Call"/> + <menu_item_call label="Invitar al grupo" name="Invite..."/> + <menu_item_call label="Ignorar" name="Avatar Mute"/> + <menu_item_call label="Denunciar" name="abuse"/> + <menu_item_call label="Congelar" name="Freeze..."/> + <menu_item_call label="Expulsar" name="Eject..."/> + <menu_item_call label="Depurar" name="Debug..."/> + <menu_item_call label="Acercar el zoom" name="Zoom In"/> + <menu_item_call label="Pagar" name="Pay..."/> + <menu_item_call label="Perfil del objeto" name="Object Inspect"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_attachment_self.xml b/indra/newview/skins/default/xui/es/menu_attachment_self.xml new file mode 100644 index 0000000000..c5afb99d49 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Tocar" name="Attachment Object Touch"/> + <menu_item_call label="Editar" name="Edit..."/> + <menu_item_call label="Quitar" name="Detach"/> + <menu_item_call label="Soltar" name="Drop"/> + <menu_item_call label="Levantarse" name="Stand Up"/> + <menu_item_call label="Mi apariencia" name="Appearance..."/> + <menu_item_call label="Mis amigos" name="Friends..."/> + <menu_item_call label="Mis grupos" name="Groups..."/> + <menu_item_call label="Mi perfil" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_avatar_icon.xml b/indra/newview/skins/default/xui/es/menu_avatar_icon.xml new file mode 100644 index 0000000000..fe7331a108 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Ver el perfil" name="Show Profile"/> + <menu_item_call label="Enviar un MI..." name="Send IM"/> + <menu_item_call label="Añadir como amigo..." name="Add Friend"/> + <menu_item_call label="Quitar de los amigos..." name="Remove Friend"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_avatar_other.xml b/indra/newview/skins/default/xui/es/menu_avatar_other.xml new file mode 100644 index 0000000000..83801e872d --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Ver el perfil" name="Profile..."/> + <menu_item_call label="Añadir como amigo" name="Add Friend"/> + <menu_item_call label="MI" name="Send IM..."/> + <menu_item_call label="Llamada" name="Call"/> + <menu_item_call label="Invitar al grupo" name="Invite..."/> + <menu_item_call label="Ignorar" name="Avatar Mute"/> + <menu_item_call label="Denunciar" name="abuse"/> + <menu_item_call label="Congelar" name="Freeze..."/> + <menu_item_call label="Expulsar" name="Eject..."/> + <menu_item_call label="Depurar" name="Debug..."/> + <menu_item_call label="Acercar el zoom" name="Zoom In"/> + <menu_item_call label="Pagar" name="Pay..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_avatar_self.xml b/indra/newview/skins/default/xui/es/menu_avatar_self.xml new file mode 100644 index 0000000000..1004471025 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Levantarse" name="Stand Up"/> + <context_menu label="Quitarse ▶" name="Take Off >"> + <context_menu label="Ropas ▶" name="Clothes >"> + <menu_item_call label="Camisa" name="Shirt"/> + <menu_item_call label="Pantalón" name="Pants"/> + <menu_item_call label="Falda" name="Skirt"/> + <menu_item_call label="Zapatos" name="Shoes"/> + <menu_item_call label="Calcetines" name="Socks"/> + <menu_item_call label="Chaqueta" name="Jacket"/> + <menu_item_call label="Guantes" name="Gloves"/> + <menu_item_call label="Camiseta" name="Self Undershirt"/> + <menu_item_call label="Ropa interior" name="Self Underpants"/> + <menu_item_call label="Tatuaje" name="Self Tattoo"/> + <menu_item_call label="Alfa" name="Self Alpha"/> + <menu_item_call label="Toda la ropa" name="All Clothes"/> + </context_menu> + <context_menu label="HUD ▶" name="Object Detach HUD"/> + <context_menu label="Desanexar ▶" name="Object Detach"/> + <menu_item_call label="Quitarse todo" name="Detach All"/> + </context_menu> + <menu_item_call label="Mi apariencia" name="Appearance..."/> + <menu_item_call label="Mis amigos" name="Friends..."/> + <menu_item_call label="Mis grupos" name="Groups..."/> + <menu_item_call label="Mi perfil" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_bottomtray.xml b/indra/newview/skins/default/xui/es/menu_bottomtray.xml new file mode 100644 index 0000000000..8169563882 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Botón Gestos" name="ShowGestureButton"/> + <menu_item_check label="Botón Moverse" name="ShowMoveButton"/> + <menu_item_check label="Botón Vista" name="ShowCameraButton"/> + <menu_item_check label="Botón Foto" name="ShowSnapshotButton"/> + <menu_item_call label="Cortar" name="NearbyChatBar_Cut"/> + <menu_item_call label="Copiar" name="NearbyChatBar_Copy"/> + <menu_item_call label="Pegar" name="NearbyChatBar_Paste"/> + <menu_item_call label="Borrar" name="NearbyChatBar_Delete"/> + <menu_item_call label="Seleccionar todo" name="NearbyChatBar_Select_All"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_favorites.xml b/indra/newview/skins/default/xui/es/menu_favorites.xml new file mode 100644 index 0000000000..c8a7858ddb --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_favorites.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Teleportarse" name="Teleport To Landmark"/> + <menu_item_call label="Ver/Editar el hito" name="Landmark Open"/> + <menu_item_call label="Copiar la SLurl" name="Copy slurl"/> + <menu_item_call label="Mostrar en el mapa" name="Show On Map"/> + <menu_item_call label="Copiar" name="Landmark Copy"/> + <menu_item_call label="Pegar" name="Landmark Paste"/> + <menu_item_call label="Borrar" name="Delete"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_gesture_gear.xml b/indra/newview/skins/default/xui/es/menu_gesture_gear.xml new file mode 100644 index 0000000000..24706eb2c8 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Añadir a / Quitar de los favoritos" name="activate"/> + <menu_item_call label="Copiar" name="copy_gesture"/> + <menu_item_call label="Pegar" name="paste"/> + <menu_item_call label="Copiar la UUID" name="copy_uuid"/> + <menu_item_call label="Añadir al vestuario actual" name="save_to_outfit"/> + <menu_item_call label="Editar" name="edit_gesture"/> + <menu_item_call label="Inspeccionar" name="inspect"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_group_plus.xml b/indra/newview/skins/default/xui/es/menu_group_plus.xml new file mode 100644 index 0000000000..6b26ba42c4 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Entrar al grupo..." name="item_join"/> + <menu_item_call label="Grupo nuevo..." name="item_new"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_hide_navbar.xml b/indra/newview/skins/default/xui/es/menu_hide_navbar.xml new file mode 100644 index 0000000000..7fc1af00c5 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Mostrar la barra de navegación" name="ShowNavbarNavigationPanel"/> + <menu_item_check label="Mostrar la barra de favoritos" name="ShowNavbarFavoritesPanel"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_im_well_button.xml b/indra/newview/skins/default/xui/es/menu_im_well_button.xml new file mode 100644 index 0000000000..c8f6c217cc --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Cerrar todo" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/es/menu_imchiclet_adhoc.xml new file mode 100644 index 0000000000..e11e9bdc58 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Acabar la sesión" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/es/menu_imchiclet_group.xml new file mode 100644 index 0000000000..a5e60ea40b --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Información del grupo" name="Show Profile"/> + <menu_item_call label="Mostrar la sesión" name="Chat"/> + <menu_item_call label="Acabar la sesión" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/es/menu_imchiclet_p2p.xml new file mode 100644 index 0000000000..492801026c --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Ver el perfil" name="Show Profile"/> + <menu_item_call label="Añadir como amigo" name="Add Friend"/> + <menu_item_call label="Mostrar la sesión" name="Send IM"/> + <menu_item_call label="Acabar la sesión" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml new file mode 100644 index 0000000000..34f6b8ece7 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Ver el perfil" name="view_profile"/> + <menu_item_call label="Añadir como amigo" name="add_friend"/> + <menu_item_call label="MI" name="im"/> + <menu_item_call label="Llamada" name="call"/> + <menu_item_call label="Teleportarse" name="teleport"/> + <menu_item_call label="Invitar al grupo" name="invite_to_group"/> + <menu_item_call label="Ignorar" name="block"/> + <menu_item_call label="Designorar" name="unblock"/> + <menu_item_call label="Denunciar" name="report"/> + <menu_item_call label="Congelar" name="freeze"/> + <menu_item_call label="Expulsar" name="eject"/> + <menu_item_call label="Depurar" name="debug"/> + <menu_item_call label="Encontrar en el mapa" name="find_on_map"/> + <menu_item_call label="Acercar el zoom" name="zoom_in"/> + <menu_item_call label="Pagar" name="pay"/> + <menu_item_call label="Compartir" name="share"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml new file mode 100644 index 0000000000..af85b833e9 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Tocar" name="touch"/> + <menu_item_call label="Sentarse" name="sit"/> + <menu_item_call label="Pagar" name="pay"/> + <menu_item_call label="Comprar" name="buy"/> + <menu_item_call label="Tomar" name="take"/> + <menu_item_call label="Coger una copia" name="take_copy"/> + <menu_item_call label="Abrir" name="open"/> + <menu_item_call label="Editar" name="edit"/> + <menu_item_call label="Ponerse" name="wear"/> + <menu_item_call label="Denunciar" name="report"/> + <menu_item_call label="Ignorar" name="block"/> + <menu_item_call label="Acercar el zoom" name="zoom_in"/> + <menu_item_call label="Quitar" name="remove"/> + <menu_item_call label="Más información" name="more_info"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml new file mode 100644 index 0000000000..cb8fb82f0d --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Levantarse" name="stand_up"/> + <menu_item_call label="Mi apariencia" name="my_appearance"/> + <menu_item_call label="Mi perfil" name="my_profile"/> + <menu_item_call label="Mis amigos" name="my_friends"/> + <menu_item_call label="Mis grupos" name="my_groups"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_inventory.xml b/indra/newview/skins/default/xui/es/menu_inventory.xml index 28d47fce52..1aa0a26ca8 100644 --- a/indra/newview/skins/default/xui/es/menu_inventory.xml +++ b/indra/newview/skins/default/xui/es/menu_inventory.xml @@ -12,7 +12,7 @@ <menu_item_call label="Script nuevo" name="New Script"/> <menu_item_call label="Nota nueva" name="New Note"/> <menu_item_call label="Gesto nuevo" name="New Gesture"/> - <menu name="New Clothes" label="Nueva ropa"> + <menu label="Ropas nuevas" name="New Clothes"> <menu_item_call label="Camisa nueva" name="New Shirt"/> <menu_item_call label="Pantalones nuevos" name="New Pants"/> <menu_item_call label="Zapatos nuevos" name="New Shoes"/> @@ -22,16 +22,32 @@ <menu_item_call label="Guantes nuevos" name="New Gloves"/> <menu_item_call label="Camiseta nueva" name="New Undershirt"/> <menu_item_call label="Ropa interior nueva" name="New Underpants"/> + <menu_item_call label="Nueva capa Alpha" name="New Alpha Mask"/> + <menu_item_call label="Tatuaje nuevo" name="New Tattoo"/> </menu> - <menu name="New Body Parts" label="Nuevas partes del cuerpo"> + <menu label="Nuevas partes del cuerpo" name="New Body Parts"> <menu_item_call label="Forma nueva" name="New Shape"/> <menu_item_call label="Piel nueva" name="New Skin"/> <menu_item_call label="Pelo nuevo" name="New Hair"/> <menu_item_call label="Ojos nuevos" name="New Eyes"/> </menu> + <menu label="Change Type" name="Change Type"> + <menu_item_call label="Por defecto" name="Default"/> + <menu_item_call label="Guantes" name="Gloves"/> + <menu_item_call label="Chaqueta" name="Jacket"/> + <menu_item_call label="Pantalón" name="Pants"/> + <menu_item_call label="Forma" name="Shape"/> + <menu_item_call label="Zapatos" name="Shoes"/> + <menu_item_call label="Camisa" name="Shirt"/> + <menu_item_call label="Falda" name="Skirt"/> + <menu_item_call label="Ropa interior" name="Underpants"/> + <menu_item_call label="Camiseta" name="Undershirt"/> + </menu> <menu_item_call label="Teleportar" name="Landmark Open"/> <menu_item_call label="Abrir" name="Animation Open"/> <menu_item_call label="Abrir" name="Sound Open"/> + <menu_item_call label="Reemplazar el vestuario" name="Replace Outfit"/> + <menu_item_call label="Añadir al vestuario" name="Add To Outfit"/> <menu_item_call label="Eliminar el ítem" name="Purge Item"/> <menu_item_call label="Restaurar el ítem" name="Restore Item"/> <menu_item_call label="Abrir" name="Open"/> @@ -40,22 +56,21 @@ <menu_item_call label="Copiar la UUID" name="Copy Asset UUID"/> <menu_item_call label="Copiar" name="Copy"/> <menu_item_call label="Pegar" name="Paste"/> + <menu_item_call label="Pegar como enlace" name="Paste As Link"/> <menu_item_call label="Borrar" name="Delete"/> - <menu_item_call label="Quitarse los ítems" name="Take Off Items"/> - <menu_item_call label="Añadir al vestuario" name="Add To Outfit"/> - <menu_item_call label="Reemplazar el vestuario" name="Replace Outfit"/> + <menu_item_call label="Borrar carpeta del sistema" name="Delete System Folder"/> <menu_item_call label="Empezar multiconferencia" name="Conference Chat Folder"/> <menu_item_call label="Escuchar" name="Sound Play"/> - <menu_item_call label="Acerca del hito" name="Teleport To Landmark"/> - <menu_item_call label="Ver en el mundo" name="Animation Play"/> + <menu_item_call label="Acerca del hito" name="About Landmark"/> + <menu_item_call label="Ejecutarla en el mundo" name="Animation Play"/> <menu_item_call label="Ejecutarla para usted" name="Animation Audition"/> <menu_item_call label="Enviar un mensaje instantáneo" name="Send Instant Message"/> <menu_item_call label="Ofrecer teleporte..." name="Offer Teleport..."/> <menu_item_call label="Empezar multiconferencia" name="Conference Chat"/> <menu_item_call label="Activar" name="Activate"/> <menu_item_call label="Desactivar" name="Deactivate"/> + <menu_item_call label="Guardar como" name="Save As"/> <menu_item_call label="Quitarse" name="Detach From Yourself"/> - <menu_item_call label="Volver a la última posición" name="Restore to Last Position"/> <menu_item_call label="Ponerse" name="Object Wear"/> <menu label="Anexar a" name="Attach To"/> <menu label="Anexar como HUD" name="Attach To HUD"/> diff --git a/indra/newview/skins/default/xui/es/menu_inventory_add.xml b/indra/newview/skins/default/xui/es/menu_inventory_add.xml new file mode 100644 index 0000000000..91cb4a08ff --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_inventory_add.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_inventory_add"> + <menu label="Subir" name="upload"> + <menu_item_call label="Imagen ([COST] L$)..." name="Upload Image"/> + <menu_item_call label="Sonido ([COST] L$)..." name="Upload Sound"/> + <menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Masivo ([COST] L$ por archivo)..." name="Bulk Upload"/> + </menu> + <menu_item_call label="Carpeta nueva" name="New Folder"/> + <menu_item_call label="Script nuevo" name="New Script"/> + <menu_item_call label="Nota nueva" name="New Note"/> + <menu_item_call label="Gesto nuevo" name="New Gesture"/> + <menu label="Ropas nuevas" name="New Clothes"> + <menu_item_call label="Camisa nueva" name="New Shirt"/> + <menu_item_call label="Pantalón nuevo" name="New Pants"/> + <menu_item_call label="Zapatos nuevos" name="New Shoes"/> + <menu_item_call label="Calcetines nuevos" name="New Socks"/> + <menu_item_call label="Chaqueta nueva" name="New Jacket"/> + <menu_item_call label="Falda nueva" name="New Skirt"/> + <menu_item_call label="Guantes nuevos" name="New Gloves"/> + <menu_item_call label="Camiseta nueva" name="New Undershirt"/> + <menu_item_call label="Ropa interior nueva" name="New Underpants"/> + <menu_item_call label="Nueva Alfa" name="New Alpha"/> + <menu_item_call label="Tatuaje nuevo" name="New Tattoo"/> + </menu> + <menu label="Nuevas partes del cuerpo" name="New Body Parts"> + <menu_item_call label="Forma nueva" name="New Shape"/> + <menu_item_call label="Piel nueva" name="New Skin"/> + <menu_item_call label="Pelo nuevo" name="New Hair"/> + <menu_item_call label="Ojos nuevos" name="New Eyes"/> + </menu> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml new file mode 100644 index 0000000000..80cf78c0b5 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Nueva ventana del inventario" name="new_window"/> + <menu_item_call label="Ordenar alfabéticamente" name="sort_by_name"/> + <menu_item_call label="Ordenar por los más recientes" name="sort_by_recent"/> + <menu_item_call label="Ver los filtros" name="show_filters"/> + <menu_item_call label="Restablecer los filtros" name="reset_filters"/> + <menu_item_call label="Cerrar todas las carpetas" name="close_folders"/> + <menu_item_call label="Vaciar la Papelera" name="empty_trash"/> + <menu_item_call label="Vaciar Objetos Perdidos" name="empty_lostnfound"/> + <menu_item_call label="Guardar la textura como" name="Save Texture As"/> + <menu_item_call label="Encontrar el original" name="Find Original"/> + <menu_item_call label="Encontrar todos los enlazados" name="Find All Links"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_land.xml b/indra/newview/skins/default/xui/es/menu_land.xml new file mode 100644 index 0000000000..c315cb2f2c --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Acerca del terreno" name="Place Information..."/> + <menu_item_call label="Sentarse aquí" name="Sit Here"/> + <menu_item_call label="Comprar este terreno" name="Land Buy"/> + <menu_item_call label="Comprar un pase" name="Land Buy Pass"/> + <menu_item_call label="Construir" name="Create"/> + <menu_item_call label="Modificar el terreno" name="Edit Terrain"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_landmark.xml b/indra/newview/skins/default/xui/es/menu_landmark.xml new file mode 100644 index 0000000000..f69b1539b8 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Copiar la SLurl" name="copy"/> + <menu_item_call label="Borrar" name="delete"/> + <menu_item_call label="Crear un Destacado" name="pick"/> + <menu_item_call label="Añadir a la barra de favoritos" name="add_to_favbar"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml index 1cf6ad5ae6..7ebe2e0c31 100644 --- a/indra/newview/skins/default/xui/es/menu_login.xml +++ b/indra/newview/skins/default/xui/es/menu_login.xml @@ -1,13 +1,30 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Login Menu"> - <menu label="Archivo" name="File"> + <menu label="Yo" name="File"> + <menu_item_call label="Preferencias" name="Preferences..."/> <menu_item_call label="Salir" name="Quit"/> </menu> - <menu label="Editar" name="Edit"> - <menu_item_call label="Preferencias..." name="Preferences..."/> - </menu> <menu label="Ayuda" name="Help"> <menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/> - <menu_item_call label="Acerca de [APP_NAME]..." name="About Second Life..."/> + </menu> + <menu label="Depurar" name="Debug"> + <menu label="Editar" name="Edit"> + <menu_item_call label="Deshacer" name="Undo"/> + <menu_item_call label="Rehacer" name="Redo"/> + <menu_item_call label="Cortar" name="Cut"/> + <menu_item_call label="Copiar" name="Copy"/> + <menu_item_call label="Pegar" name="Paste"/> + <menu_item_call label="Borrar" name="Delete"/> + <menu_item_call label="Duplicar" name="Duplicate"/> + <menu_item_call label="Seleccionar todo" name="Select All"/> + <menu_item_call label="Deseleccionar" name="Deselect"/> + </menu> + <menu_item_call label="Mostrar las configuraciones del depurador" name="Debug Settings"/> + <menu_item_call label="Configuraciones del Visor/Color" name="UI/Color Settings"/> + <menu label="Pruebas de la interfaz" name="UI Tests"/> + <menu_item_call label="Definir el tamaño de la ventana..." name="Set Window Size..."/> + <menu_item_call label="Mostrar los 'TOS'" name="TOS"/> + <menu_item_call label="Mostrar mensaje crítico" name="Critical"/> + <menu_item_call label="Web Browser Test" name="Web Browser Test"/> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/es/menu_mini_map.xml b/indra/newview/skins/default/xui/es/menu_mini_map.xml index 19061cea06..9c5a5719ee 100644 --- a/indra/newview/skins/default/xui/es/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/es/menu_mini_map.xml @@ -3,6 +3,7 @@ <menu_item_call label="Zoom cerca" name="Zoom Close"/> <menu_item_call label="Zoom medio" name="Zoom Medium"/> <menu_item_call label="Zoom lejos" name="Zoom Far"/> + <menu_item_check label="Girar el mapa" name="Rotate Map"/> <menu_item_call label="Parar la búsqueda" name="Stop Tracking"/> - <menu_item_call label="Perfil..." name="Profile"/> + <menu_item_call label="Mapa del mundo" name="World Map"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_navbar.xml b/indra/newview/skins/default/xui/es/menu_navbar.xml new file mode 100644 index 0000000000..63e5468020 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_navbar.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Navbar Menu"> + <menu_item_check label="Mostrar las coordenadas" name="Show Coordinates"/> + <menu_item_check label="Mostrar las propiedades de la parcela" name="Show Parcel Properties"/> + <menu_item_call label="Hito" name="Landmark"/> + <menu_item_call label="Cortar" name="Cut"/> + <menu_item_call label="Copiar" name="Copy"/> + <menu_item_call label="Pegar" name="Paste"/> + <menu_item_call label="Borrar" name="Delete"/> + <menu_item_call label="Seleccionar todo" name="Select All"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_nearby_chat.xml b/indra/newview/skins/default/xui/es/menu_nearby_chat.xml new file mode 100644 index 0000000000..94b281b6c7 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Mostrar la gente que está cerca..." name="nearby_people"/> + <menu_item_check label="Ver el texto ignorado" name="muted_text"/> + <menu_item_check label="Mostrar los iconos del amigo" name="show_buddy_icons"/> + <menu_item_check label="Mostrar los nombres" name="show_names"/> + <menu_item_check label="Mostrar los iconos y los nombres" name="show_icons_and_names"/> + <menu_item_call label="Tamaño de la fuente" name="font_size"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_notification_well_button.xml b/indra/newview/skins/default/xui/es/menu_notification_well_button.xml new file mode 100644 index 0000000000..0562d35be7 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Cerrar todo" name="Close All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_object.xml b/indra/newview/skins/default/xui/es/menu_object.xml new file mode 100644 index 0000000000..581ecd6698 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_object.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Object Pie"> + <menu_item_call label="Tocar" name="Object Touch"/> + <menu_item_call label="Editar" name="Edit..."/> + <menu_item_call label="Construir" name="Build"/> + <menu_item_call label="Abrir" name="Open"/> + <menu_item_call label="Sentarse aquí" name="Object Sit"/> + <menu_item_call label="Perfil del objeto" name="Object Inspect"/> + <menu_item_call label="Acercar el zoom" name="Zoom In"/> + <context_menu label="Ponerse ▶" name="Put On"> + <menu_item_call label="Ponerse" name="Wear"/> + <context_menu label="Anexar ▶" name="Object Attach"/> + <context_menu label="Anexar como HUD ▶" name="Object Attach HUD"/> + </context_menu> + <context_menu label="Quitarse ▶" name="Remove"> + <menu_item_call label="Denunciar una infracción" name="Report Abuse..."/> + <menu_item_call label="Ignorar" name="Object Mute"/> + <menu_item_call label="Devolver" name="Return..."/> + <menu_item_call label="Eliminar" name="Delete"/> + </context_menu> + <menu_item_call label="Comprar" name="Pie Object Bye"/> + <menu_item_call label="Tomar" name="Pie Object Take"/> + <menu_item_call label="Coger una copia" name="Take Copy"/> + <menu_item_call label="Pagar" name="Pay..."/> + <menu_item_call label="Comprar" name="Buy..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_object_icon.xml b/indra/newview/skins/default/xui/es/menu_object_icon.xml new file mode 100644 index 0000000000..7e4578b950 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Perfil del objeto..." name="Object Profile"/> + <menu_item_call label="Ignorar..." name="Block"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_participant_list.xml b/indra/newview/skins/default/xui/es/menu_participant_list.xml new file mode 100644 index 0000000000..f4e7671a92 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_participant_list.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Participant List Context Menu"> + <menu_item_check label="Ordenar según el nombre" name="SortByName"/> + <menu_item_check label="Ordenar según los intervinientes recientes" name="SortByRecentSpeakers"/> + <menu_item_call label="Ver el perfil" name="View Profile"/> + <menu_item_call label="Añadir como amigo" name="Add Friend"/> + <menu_item_call label="MI" name="IM"/> + <menu_item_call label="Llamada" name="Call"/> + <menu_item_call label="Compartir" name="Share"/> + <menu_item_call label="Pagar" name="Pay"/> + <menu_item_check label="Ignorar la voz" name="Block/Unblock"/> + <menu_item_check label="Ignorar el texto" name="MuteText"/> + <context_menu label="Opciones del moderador >" name="Moderator Options"> + <menu_item_check label="Autorizar el chat de texto" name="AllowTextChat"/> + <menu_item_call label="Silenciar a este participante" name="ModerateVoiceMuteSelected"/> + <menu_item_call label="Silenciar a todos los demás" name="ModerateVoiceMuteOthers"/> + <menu_item_call label="Designorar a este participante" name="ModerateVoiceUnMuteSelected"/> + <menu_item_call label="Designorar a todos los demás" name="ModerateVoiceUnMuteOthers"/> + </context_menu> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_friends_view_sort.xml new file mode 100644 index 0000000000..0e883be00e --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Ordenar alfabéticamente" name="sort_name"/> + <menu_item_check label="Ordenar por estatus" name="sort_status"/> + <menu_item_check label="Ver los iconos de la gente" name="view_icons"/> + <menu_item_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_people_groups.xml b/indra/newview/skins/default/xui/es/menu_people_groups.xml new file mode 100644 index 0000000000..8342497525 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Ver la información" name="View Info"/> + <menu_item_call label="Chat" name="Chat"/> + <menu_item_call label="Llamada" name="Call"/> + <menu_item_call label="Activar" name="Activate"/> + <menu_item_call label="Dejar" name="Leave"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_groups_view_sort.xml new file mode 100644 index 0000000000..1bd3efb611 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Mostrar los iconos de grupo" name="Display Group Icons"/> + <menu_item_call label="Dejar el grupo seleccionado" name="Leave Selected Group"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby.xml b/indra/newview/skins/default/xui/es/menu_people_nearby.xml new file mode 100644 index 0000000000..88df983838 --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_people_nearby.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Avatar Context Menu"> + <menu_item_call label="Ver el perfil" name="View Profile"/> + <menu_item_call label="Añadir como amigo" name="Add Friend"/> + <menu_item_call label="Quitarle como amigo" name="Remove Friend"/> + <menu_item_call label="MI" name="IM"/> + <menu_item_call label="Llamada" name="Call"/> + <menu_item_call label="Mapa" name="Map"/> + <menu_item_call label="Compartir" name="Share"/> + <menu_item_call label="Pagar" name="Pay"/> + <menu_item_check label="Ignorar / No ignorar" name="Block/Unblock"/> + <menu_item_call label="Ofrecer teleporte" name="teleport"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml new file mode 100644 index 0000000000..b87d6c6deb --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Multi-Selected People Context Menu"> + <menu_item_call label="Añadir como amigos" name="Add Friends"/> + <menu_item_call label="Quitar amigos" name="Remove Friend"/> + <menu_item_call label="MI" name="IM"/> + <menu_item_call label="Llamada" name="Call"/> + <menu_item_call label="Compartir" name="Share"/> + <menu_item_call label="Pagar" name="Pay"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml new file mode 100644 index 0000000000..f0fe383c0c --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Ordenar según las intervenciones recientes" name="sort_by_recent_speakers"/> + <menu_item_check label="Ordenar alfabéticamente" name="sort_name"/> + <menu_item_check label="Ordenar según distancia" name="sort_distance"/> + <menu_item_check label="Ver los iconos de la gente" name="view_icons"/> + <menu_item_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_recent_view_sort.xml new file mode 100644 index 0000000000..e4aaa89110 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Ordenar por los más recientes" name="sort_most"/> + <menu_item_check label="Ordenar alfabéticamente" name="sort_name"/> + <menu_item_check label="Ver los iconos de la gente" name="view_icons"/> + <menu_item_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_picks.xml b/indra/newview/skins/default/xui/es/menu_picks.xml new file mode 100644 index 0000000000..9da68d7c9b --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_picks.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Picks"> + <menu_item_call label="Información" name="pick_info"/> + <menu_item_call label="Editar" name="pick_edit"/> + <menu_item_call label="Teleportar" name="pick_teleport"/> + <menu_item_call label="Mapa" name="pick_map"/> + <menu_item_call label="Eliminar" name="pick_delete"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_picks_plus.xml b/indra/newview/skins/default/xui/es/menu_picks_plus.xml new file mode 100644 index 0000000000..cc59bf1d29 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Destacado nuevo" name="create_pick"/> + <menu_item_call label="Clasificado nuevo" name="create_classified"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/es/menu_place.xml b/indra/newview/skins/default/xui/es/menu_place.xml new file mode 100644 index 0000000000..675f0699e9 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Crear un hito" name="landmark"/> + <menu_item_call label="Crear un destacado" name="pick"/> + <menu_item_call label="Comprar un pase" name="pass"/> + <menu_item_call label="Editar" name="edit"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/es/menu_place_add_button.xml b/indra/newview/skins/default/xui/es/menu_place_add_button.xml new file mode 100644 index 0000000000..4b2f908a06 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Añadir una carpeta" name="add_folder"/> + <menu_item_call label="Añadir este hito" name="add_landmark"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml new file mode 100644 index 0000000000..bf46eb58e3 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Añadir este hito" name="add_landmark"/> + <menu_item_call label="Añadir una carpeta" name="add_folder"/> + <menu_item_call label="Cortar" name="cut"/> + <menu_item_call label="Copiar" name="copy_folder"/> + <menu_item_call label="Pegar" name="paste"/> + <menu_item_call label="Renombrar" name="rename"/> + <menu_item_call label="Borrar" name="delete"/> + <menu_item_call label="Abrir" name="expand"/> + <menu_item_call label="Cerrar" name="collapse"/> + <menu_item_call label="Abrir todas las carpetas" name="expand_all"/> + <menu_item_call label="Cerrar todas las carpetas" name="collapse_all"/> + <menu_item_check label="Ordenar por fecha" name="sort_by_date"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml new file mode 100644 index 0000000000..eac85de846 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Teleportar" name="teleport"/> + <menu_item_call label="Más información" name="more_info"/> + <menu_item_call label="Mostrar en el mapa" name="show_on_map"/> + <menu_item_call label="Añadir un hito" name="add_landmark"/> + <menu_item_call label="Añadir una carpeta" name="add_folder"/> + <menu_item_call label="Cortar" name="cut"/> + <menu_item_call label="Copiar el hito" name="copy_landmark"/> + <menu_item_call label="Copiar la SLurl" name="copy_slurl"/> + <menu_item_call label="Pegar" name="paste"/> + <menu_item_call label="Renombrar" name="rename"/> + <menu_item_call label="Eliminar" name="delete"/> + <menu_item_call label="Abrir todas las carpetas" name="expand_all"/> + <menu_item_call label="Cerrar todas las carpetas" name="collapse_all"/> + <menu_item_check label="Ordenar por fecha" name="sort_by_date"/> + <menu_item_call label="Crear un Destacado" name="create_pick"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_profile_overflow.xml b/indra/newview/skins/default/xui/es/menu_profile_overflow.xml new file mode 100644 index 0000000000..37ad29d8ec --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_profile_overflow.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="profile_overflow_menu"> + <menu_item_call label="Pagar" name="pay"/> + <menu_item_call label="Compartir" name="share"/> + <menu_item_call label="Ignorar" name="block"/> + <menu_item_call label="Designorar" name="unblock"/> + <menu_item_call label="Expulsar" name="kick"/> + <menu_item_call label="Congelar" name="freeze"/> + <menu_item_call label="Descongelar" name="unfreeze"/> + <menu_item_call label="CSR" name="csr"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/es/menu_slurl.xml b/indra/newview/skins/default/xui/es/menu_slurl.xml index 5c5900ae56..ca19acec6e 100644 --- a/indra/newview/skins/default/xui/es/menu_slurl.xml +++ b/indra/newview/skins/default/xui/es/menu_slurl.xml @@ -2,5 +2,5 @@ <menu name="Popup"> <menu_item_call label="Acerca de la URL" name="about_url"/> <menu_item_call label="Teleportar a la URL" name="teleport_to_url"/> - <menu_item_call label="Mostrar en el mapa" name="show_on_map"/> + <menu_item_call label="Mapa" name="show_on_map"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_gear.xml new file mode 100644 index 0000000000..b708f3bc20 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Abrir todas las carpetas" name="Expand all folders"/> + <menu_item_call label="Cerrar todas las carpetas" name="Collapse all folders"/> + <menu_item_call label="Limpiar el historial de teleportes" name="Clear Teleport History"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_item.xml new file mode 100644 index 0000000000..ed33c55aca --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Teleportarse" name="Teleport"/> + <menu_item_call label="Más información" name="More Information"/> + <menu_item_call label="Copiar al portapapeles" name="CopyToClipboard"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/es/menu_teleport_history_tab.xml new file mode 100644 index 0000000000..17e90422a5 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Abrir" name="TabOpen"/> + <menu_item_call label="Cerrar" name="TabClose"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_text_editor.xml b/indra/newview/skins/default/xui/es/menu_text_editor.xml new file mode 100644 index 0000000000..095e461734 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Cortar" name="Cut"/> + <menu_item_call label="Copiar" name="Copy"/> + <menu_item_call label="Pegar" name="Paste"/> + <menu_item_call label="Borrar" name="Delete"/> + <menu_item_call label="Seleccionar todo" name="Select All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_agent.xml b/indra/newview/skins/default/xui/es/menu_url_agent.xml new file mode 100644 index 0000000000..a089c8f68e --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Mostrar el perfil del Residente" name="show_agent"/> + <menu_item_call label="Copiar el nombre al portapapeles" name="url_copy_label"/> + <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_group.xml b/indra/newview/skins/default/xui/es/menu_url_group.xml new file mode 100644 index 0000000000..79374b9739 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Mostrar la información del grupo" name="show_group"/> + <menu_item_call label="Copiar el grupo al portapapeles" name="url_copy_label"/> + <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_http.xml b/indra/newview/skins/default/xui/es/menu_url_http.xml new file mode 100644 index 0000000000..585c059ff3 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Abrir la página web" name="url_open"/> + <menu_item_call label="Abrir en el navegador incorporado" name="url_open_internal"/> + <menu_item_call label="Abrir en mi navegador" name="url_open_external"/> + <menu_item_call label="Copiar la URL al portapapeles" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_inventory.xml b/indra/newview/skins/default/xui/es/menu_url_inventory.xml new file mode 100644 index 0000000000..13a8711c76 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Mostrar ítem del inventario" name="show_item"/> + <menu_item_call label="Copiar el nombre al portapapeles" name="url_copy_label"/> + <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_map.xml b/indra/newview/skins/default/xui/es/menu_url_map.xml new file mode 100644 index 0000000000..f96a0c7170 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Mostrar en el mapa" name="show_on_map"/> + <menu_item_call label="Teleportarse a la localización" name="teleport_to_location"/> + <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_objectim.xml b/indra/newview/skins/default/xui/es/menu_url_objectim.xml new file mode 100644 index 0000000000..8791a290af --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Mostrar la información del objeto" name="show_object"/> + <menu_item_call label="Mostrar en el mapa" name="show_on_map"/> + <menu_item_call label="Teleportarse a la posición del objeto" name="teleport_to_object"/> + <menu_item_call label="Copiar el nombre del objeto al portapapeles" name="url_copy_label"/> + <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_parcel.xml b/indra/newview/skins/default/xui/es/menu_url_parcel.xml new file mode 100644 index 0000000000..9e789ef8ee --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Mostrar la información de la parcela" name="show_parcel"/> + <menu_item_call label="Mostrar en el mapa" name="show_on_map"/> + <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_slapp.xml b/indra/newview/skins/default/xui/es/menu_url_slapp.xml new file mode 100644 index 0000000000..7147dcd3cf --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Ejecutar este comando" name="run_slapp"/> + <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_slurl.xml b/indra/newview/skins/default/xui/es/menu_url_slurl.xml new file mode 100644 index 0000000000..4ab47c2f61 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Mostrar la información del lugar" name="show_place"/> + <menu_item_call label="Mostrar en el mapa" name="show_on_map"/> + <menu_item_call label="Teleportarse a este lugar" name="teleport_to_location"/> + <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_url_teleport.xml b/indra/newview/skins/default/xui/es/menu_url_teleport.xml new file mode 100644 index 0000000000..8f86a91be3 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Teleportarse a este lugar" name="teleport"/> + <menu_item_call label="Mostrar en el mapa" name="show_on_map"/> + <menu_item_call label="Copiar la SLurl al portapapeles" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index fdb6a92084..61cefd7b76 100644 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -1,217 +1,322 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Main Menu"> - <menu name="Me"> + <menu label="Yo" name="Me"> <menu_item_call label="Preferencias" 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=es" /> + <menu_item_call label="Mi panel de control" name="Manage My Account"> + <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=es"/> </menu_item_call> + <menu_item_call label="Comprar L$" name="Buy and Sell L$"/> + <menu_item_call label="Mi perfil" name="Profile"/> + <menu_item_call label="Mi apariencia" name="Appearance"/> + <menu_item_check label="Mi Inventario" name="Inventory"/> + <menu_item_check label="Mi inventario" name="ShowSidetrayInventory"/> + <menu_item_check label="Mis gestos" name="Gestures"/> + <menu label="Mi estatus" name="Status"> + <menu_item_call label="Ausente" name="Set Away"/> + <menu_item_call label="Ocupado" name="Set Busy"/> + </menu> + <menu_item_call label="Solicitar estatus de Administrador" name="Request Admin Options"/> + <menu_item_call label="Dejar el estatus de Administrador" name="Leave Admin Options"/> + <menu_item_call label="Salir de [APP_NAME]" name="Quit"/> </menu> - <menu label="Archivo" name="File"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu label="Subir" name="upload"> - <menu_item_call label="Imagen ([COST] L$)..." name="Upload Image"/> - <menu_item_call label="Sonido ([COST] L$)..." name="Upload Sound"/> - <menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/> - <menu_item_call label="Masiva ([COST] L$ por archivo)..." name="Bulk Upload"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Definir los permisos por defecto..." name="perm prefs"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Cerrar la ventana" name="Close Window"/> - <menu_item_call label="Cerrar todas las ventanas" name="Close All Windows"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Guardar la textura como..." name="Save Texture As..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Hacer una foto" name="Take Snapshot"/> - <menu_item_call label="Guardar una foto" name="Snapshot to Disk"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Salir" name="Quit"/> - </menu> - <menu label="Editar" name="Edit"> - <menu_item_call label="Deshacer" name="Undo"/> - <menu_item_call label="Rehacer" name="Redo"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Cortar" name="Cut"/> - <menu_item_call label="Copiar" name="Copy"/> - <menu_item_call label="Pegar" name="Paste"/> - <menu_item_call label="Borrar" name="Delete"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Buscar..." name="Search..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Seleccionar todo" name="Select All"/> - <menu_item_call label="Deseleccionar" name="Deselect"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Duplicar" name="Duplicate"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu label="Anexar el objeto" name="Attach Object"/> - <menu label="Quitarse el objeto" name="Detach Object"/> - <menu label="Quitarse ropa" name="Take Off Clothing"> - <menu_item_call label="Camisa" name="Shirt"/> - <menu_item_call label="Pantalones" name="Pants"/> - <menu_item_call label="Zapatos" name="Shoes"/> - <menu_item_call label="Calcetines" name="Socks"/> - <menu_item_call label="Chaqueta" name="Jacket"/> - <menu_item_call label="Guantes" name="Gloves"/> - <menu_item_call label="Camiseta" name="Menu Undershirt"/> - <menu_item_call label="Ropa interior" name="Menu Underpants"/> - <menu_item_call label="Falda" name="Skirt"/> - <menu_item_call label="Toda la ropa" name="All Clothes"/> - </menu> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Gestos..." name="Gestures..."/> - <menu_item_call label="Perfil..." name="Profile..."/> - <menu_item_call label="Apariencia..." name="Appearance..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_check label="Amigos..." name="Friends..."/> - <menu_item_call label="Grupos..." name="Groups..."/> - <menu_item_separator label="-----------" name="separator8"/> - <menu_item_call label="Preferencias..." name="Preferences..."/> - </menu> - <menu label="Ver" name="View"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_call label="Vista subjetiva" name="Mouselook"/> - <menu_item_check label="Construir" name="Build"/> - <menu_item_check label="Flycam del joystick" name="Joystick Flycam"/> - <menu_item_call label="Volver a la vista por defecto" name="Reset View"/> - <menu_item_call label="Mirar al último que habló" name="Look at Last Chatter"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Barra de herramientas" name="Toolbar"/> - <menu_item_check label="Chat" name="Chat History"/> - <menu_item_check label="Comunicarse" name="Instant Message"/> - <menu_item_check label="Inventario" name="Inventory"/> - <menu_item_check label="Participantes activos" name="Active Speakers"/> - <menu_item_check label="Lista de ignorados" name="Mute List"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Controles de la cámara" name="Camera Controls"/> - <menu_item_check label="Controles del movimiento" name="Movement Controls"/> - <menu_item_check label="Mapa del mundo" name="World Map"/> - <menu_item_check label="Minimapa" name="Mini-Map"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Estadísticas" name="Statistics Bar"/> - <menu_item_check label="Límites de las parcelas" name="Property Lines"/> - <menu_item_check label="Líneas de prohibición" name="Banlines"/> - <menu_item_check label="Propietarios del terreno" name="Land Owners"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu label="Información adicional" name="Hover Tips"> - <menu_item_check label="Mostrar información adicional." name="Show Tips"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Información adicional del terreno" name="Land Tips"/> - <menu_item_check label="Información adicional en todos los objetos" name="Tips On All Objects"/> - </menu> - <menu_item_check label="Realzar las transparencias" name="Highlight Transparent"/> - <menu_item_check label="Balizas" name="beacons"/> - <menu_item_check label="Ocultar las partículas" name="Hide Particles"/> - <menu_item_check label="Mostrar los HUD en uso" name="Show HUD Attachments"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Acercar el zoom" name="Zoom In"/> - <menu_item_call label="Zoom predeterminado" name="Zoom Default"/> - <menu_item_call label="Alejar el zoom" name="Zoom Out"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Pantalla completa" name="Toggle Fullscreen"/> - <menu_item_call label="Interfaz en el tamaño predeterminado" name="Set UI Size to Default"/> + <menu label="Comunicarse" name="Communicate"> + <menu_item_call label="Mis amigos" name="My Friends"/> + <menu_item_call label="Mis grupos" name="My Groups"/> + <menu_item_check label="Chat" name="Nearby Chat"/> + <menu_item_call label="Gente cerca" name="Active Speakers"/> </menu> <menu label="Mundo" name="World"> - <menu_item_call label="Chat" name="Chat"/> - <menu_item_check label="Correr siempre" name="Always Run"/> - <menu_item_check label="Volar" name="Fly"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Crear aquí un hito" name="Create Landmark Here"/> - <menu_item_call label="Fijar mi Base aquí" name="Set Home to Here"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Teleportar a mi Base" name="Teleport Home"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Pasar al estado ausente" name="Set Away"/> - <menu_item_call label="Pasar al estado ocupado" name="Set Busy"/> - <menu_item_call label="Parar la animación de mi avatar" name="Stop Animating My Avatar"/> - <menu_item_call label="Recuperar las teclas" name="Release Keys"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Historial de mi cuenta..." name="Account History..."> - <on_click name="AccountHistory_url" userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php?lang=es"/> - </menu_item_call> - <menu_item_call label="Administrar mi cuenta..." name="Manage My Account..."> - <on_click name="ManageMyAccount_url" userdata="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=es"/> - </menu_item_call> - <menu_item_call label="Comprar L$..." name="Buy and Sell L$..."/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Mi terreno..." name="My Land..."/> - <menu_item_call label="Acerca del terreno..." name="About Land..."/> - <menu_item_call label="Comprar terreno..." name="Buy Land..."/> - <menu_item_call label="Region/Estado..." name="Region/Estate..."/> - <menu_item_separator label="-----------" name="separator6"/> - <menu label="Configuración del entorno" name="Environment Settings"> + <menu_item_check label="Minimapa" name="Mini-Map"/> + <menu_item_check label="Mapa del mundo" name="World Map"/> + <menu_item_call label="Foto" name="Take Snapshot"/> + <menu_item_call label="Crear un hito de este sitio" name="Create Landmark Here"/> + <menu label="Perfil del lugar" name="Land"> + <menu_item_call label="Acerca del terreno" name="About Land"/> + <menu_item_call label="Región/Estado" name="Region/Estate"/> + </menu> + <menu_item_call label="Comprar este terreno" name="Buy Land"/> + <menu_item_call label="Mi terreno" name="My Land"/> + <menu label="Mostrar" name="LandShow"> + <menu_item_check label="Controles del movimiento" name="Movement Controls"/> + <menu_item_check label="Controles de la cámara" name="Camera Controls"/> + <menu_item_check label="Líneas de prohibición" name="Ban Lines"/> + <menu_item_check label="Balizas" name="beacons"/> + <menu_item_check label="Límites de las parcelas" name="Property Lines"/> + <menu_item_check label="Propietarios del terreno" name="Land Owners"/> + <menu_item_check label="Coordenadas" name="Coordinates"/> + <menu_item_check label="Propiedades de la parcela" name="Parcel Properties"/> + </menu> + <menu_item_call label="Teleportar a la Base" name="Teleport Home"/> + <menu_item_call label="Fijar aquí mi Base" name="Set Home to Here"/> + <menu label="Sol" name="Environment Settings"> <menu_item_call label="Amanecer" name="Sunrise"/> <menu_item_call label="Mediodía" name="Noon"/> <menu_item_call label="Atardecer" name="Sunset"/> <menu_item_call label="Medianoche" name="Midnight"/> - <menu_item_call label="Volver a los valores por defecto de la región" name="Revert to Region Default"/> - <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Tiempo del Estado" name="Revert to Region Default"/> <menu_item_call label="Editor del entorno" name="Environment Editor"/> </menu> </menu> - <menu label="Herramientas" name="Tools"> - <menu label="Elegir una herramienta" name="Select Tool"> - <menu_item_call label="Visión" name="Focus"/> - <menu_item_call label="Moverse" name="Move"/> - <menu_item_call label="Modificar" name="Edit"/> - <menu_item_call label="Crear" name="Create"/> - <menu_item_call label="Terreno" name="Land"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Seleccionar sólo mis objetos" name="Select Only My Objects"/> - <menu_item_check label="Seleccionar sólo objetos movibles" name="Select Only Movable Objects"/> - <menu_item_check label="Seleccionar marcando los alrededores" name="Select By Surrounding"/> - <menu_item_check label="Al seleccionar, mostrar los ocultos" name="Show Hidden Selection"/> - <menu_item_check label="Al seleccionar, mostrar el radio de la luz" name="Show Light Radius for Selection"/> - <menu_item_check label="Mostrar rayo indicador" name="Show Selection Beam"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Ajustar a la cuadrícula" name="Snap to Grid"/> - <menu_item_call label="Ajustar a la cuadrícula los ejes X e Y" name="Snap Object XY to Grid"/> - <menu_item_call label="Usar lo seleccionado como cuadrícula" name="Use Selection for Grid"/> - <menu_item_call label="Opciones de la cuadrícula..." name="Grid Options..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Editar las partes enlazadas" name="Edit Linked Parts"/> + <menu label="Construir" name="BuildTools"> + <menu_item_check label="Construir" name="Show Build Tools"/> + <menu label="Seleccionar la herramienta de construcción" name="Select Tool"> + <menu_item_call label="Herramienta Visión" name="Focus"/> + <menu_item_call label="Herramienta Mover" name="Move"/> + <menu_item_call label="Herramienta Editar" name="Edit"/> + <menu_item_call label="Herramienta Crear" name="Create"/> + <menu_item_call label="Herramienta Terreno" name="Land"/> + </menu> + <menu label="Editar" name="Edit"> + <menu_item_call label="Deshacer" name="Undo"/> + <menu_item_call label="Rehacer" name="Redo"/> + <menu_item_call label="Cortar" name="Cut"/> + <menu_item_call label="Copiar" name="Copy"/> + <menu_item_call label="Pegar" name="Paste"/> + <menu_item_call label="Eliminar" name="Delete"/> + <menu_item_call label="Duplicar" name="Duplicate"/> + <menu_item_call label="Seleccionar todo" name="Select All"/> + <menu_item_call label="Deseleccionar" name="Deselect"/> + </menu> <menu_item_call label="Enlazar" name="Link"/> <menu_item_call label="Desenlazar" name="Unlink"/> - <menu_item_separator label="-----------" name="separator4"/> + <menu_item_check label="Editar las partes enlazadas" name="Edit Linked Parts"/> <menu_item_call label="Visión en lo seleccionado" name="Focus on Selection"/> <menu_item_call label="Zoom en lo seleccionado" name="Zoom to Selection"/> - <menu_item_call label="Comprar el objeto" name="Menu Object Take"> - <on_enable userdata="Comprar el objeto,Coger el objeto" name="EnableBuyOrTake"/> - </menu_item_call> - <menu_item_call label="Coger una copia" name="Take Copy"/> - <menu_item_call label="Devolver una copia del objeto a los contenidos de donde salió" name="Save Object Back to Object Contents"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Ver en una ventana los errores o alertas de los scripts" name="Show Script Warning/Error Window"/> - <menu label="Recompilar los scripts en lo seleccionado" name="Recompile Scripts in Selection"> - <menu_item_call label="Mono" name="Mono"/> - <menu_item_call label="LSL" name="LSL"/> - </menu> - <menu_item_call label="Reiniciar los scripts en lo seleccionado" name="Reset Scripts in Selection"/> - <menu_item_call label="Definir los scripts a ejecutar en lo seleccionado" name="Set Scripts to Running in Selection"/> - <menu_item_call label="Definir los scripts a no ejecutar en lo seleccionado" name="Set Scripts to Not Running in Selection"/> + <menu label="Objeto" name="Object"> + <menu_item_call label="Comprar" name="Menu Object Buy"/> + <menu_item_call label="Tomar" name="Menu Object Take"/> + <menu_item_call label="Coger una copia" name="Take Copy"/> + <menu_item_call label="Guardar una copia en mi inventario" name="Save Object Back to My Inventory"/> + <menu_item_call label="Guardar una copia del objeto en los contenidos de donde salió" name="Save Object Back to Object Contents"/> + </menu> + <menu label="Scripts" name="Scripts"> + <menu_item_call label="Recompilar los scripts (Mono)" name="Mono"/> + <menu_item_call label="Recompilar los scripts (LSL)" name="LSL"/> + <menu_item_call label="Reiniciar los scripts" name="Reset Scripts"/> + <menu_item_call label="Definir los scripts a ejecutar" name="Set Scripts to Running"/> + <menu_item_call label="Configurar scripts como no ejecutándose" name="Set Scripts to Not Running"/> + </menu> + <menu label="Opciones" name="Options"> + <menu_item_call label="Configurar los permisos por defecto de subida" name="perm prefs"/> + <menu_item_check label="Mostrar los permisos avanzados" name="DebugPermissions"/> + <menu_item_check label="Seleccionar sólo mis objetos" name="Select Only My Objects"/> + <menu_item_check label="Sólo seleccionar los objetos movibles" name="Select Only Movable Objects"/> + <menu_item_check label="Seleccionar marcando los alrededores" name="Select By Surrounding"/> + <menu_item_check label="Al seleccionar, mostrar lo oculto" name="Show Hidden Selection"/> + <menu_item_check label="Al seleccionar, mostrar el radio de la luz" name="Show Light Radius for Selection"/> + <menu_item_check label="Mostrar el rayo indicador" name="Show Selection Beam"/> + <menu_item_check label="Ajustar a la cuadrícula" name="Snap to Grid"/> + <menu_item_call label="Ajustar a la cuadrícula los ejes X e Y" name="Snap Object XY to Grid"/> + <menu_item_call label="Usar lo seleccionado como cuadrícula" name="Use Selection for Grid"/> + <menu_item_call label="Opciones de la cuadrícula" name="Grid Options"/> + </menu> + <menu label="Seleccionar las partes enlazadas" name="Select Linked Parts"> + <menu_item_call label="Seleccionar la parte siguiente" name="Select Next Part"/> + <menu_item_call label="Seleccionar la parte previa" name="Select Previous Part"/> + <menu_item_call label="Incluir la parte siguiente" name="Include Next Part"/> + <menu_item_call label="Incluir la parte previa" name="Include Previous Part"/> + </menu> </menu> <menu label="Ayuda" name="Help"> <menu_item_call label="Ayuda de [SECOND_LIFE]" name="Second Life Help"/> - <menu_item_call label="Tutorial" name="Tutorial"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Blog oficial..." name="Official Linden Blog..."/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Portal de programación..." name="Scripting Portal..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Denunciar una infracción..." name="Report Abuse..."/> - <menu_item_call label="Choques, empujones, e impactos..." name="Bumps, Pushes &amp; Hits..."/> - <menu_item_call label="Medidor del lag" name="Lag Meter"/> - <menu_item_separator label="-----------" name="separator7"/> - <menu label="Informes de fallos" name="Bug Reporting"> - <menu_item_call label="Public Issue Tracker..." name="Public Issue Tracker..."/> - <menu_item_call label="Ayuda del Public Issue Tracker..." name="Publc Issue Tracker Help..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_call label="Informes de fallos - instrucciones..." name="Bug Reporing 101..."/> - <menu_item_call label="Problemas de seguridad..." name="Security Issues..."/> - <menu_item_call label="Wiki QA..." name="QA Wiki..."/> - <menu_item_separator label="-----------" name="separator9"/> - <menu_item_call label="Informar de un fallo..." name="Report Bug..."/> - </menu> - <menu_item_call label="Acerca de [APP_NAME]..." name="About Second Life..."/> + <menu_item_call label="Denunciar una infracción" name="Report Abuse"/> + <menu_item_call label="Informar de un fallo" name="Report Bug"/> + </menu> + <menu label="Avanzado" name="Advanced"> + <menu_item_call label="Parar mis animaciones" name="Stop Animating My Avatar"/> + <menu_item_call label="Recargar las texturas" name="Rebake Texture"/> + <menu_item_call label="Interfaz en el tamaño predeterminado" name="Set UI Size to Default"/> + <menu_item_call label="Definir el tamaño de la ventana..." name="Set Window Size..."/> + <menu_item_check label="Limitar la distancia para Seleccionar" name="Limit Select Distance"/> + <menu_item_check label="Desactivar los límites de la cámara" name="Disable Camera Distance"/> + <menu_item_check label="Foto en Alta Resolución" name="HighResSnapshot"/> + <menu_item_check label="Silenciar el Guardar una foto" name="QuietSnapshotsToDisk"/> + <menu_item_check label="Comprimir las fotos para el disco duro" name="CompressSnapshotsToDisk"/> + <menu label="Herramientas de rendimiento" name="Performance Tools"> + <menu_item_call label="Medidor de lag" name="Lag Meter"/> + <menu_item_check label="Estadísticas" name="Statistics Bar"/> + <menu_item_check label="Mostrar cuánto cuesta renderizar el avatar" name="Avatar Rendering Cost"/> + </menu> + <menu label="Realzando y Visibilidad" name="Highlighting and Visibility"> + <menu_item_check label="Baliza con destellos" name="Cheesy Beacon"/> + <menu_item_check label="Ocultar las partículas" name="Hide Particles"/> + <menu_item_check label="Ocultar lo seleccionado" name="Hide Selected"/> + <menu_item_check label="Realzar las transparencias" name="Highlight Transparent"/> + <menu_item_check label="Mostrar los HUD anexados" name="Show HUD Attachments"/> + <menu_item_check label="Mostrar el Punto de Mira en la vista subjetiva" name="ShowCrosshairs"/> + <menu_item_check label="Mostrar información complementaria del terreno" name="Land Tips"/> + </menu> + <menu label="Objetos representados" name="Rendering Types"> + <menu_item_check label="Simple" name="Simple"/> + <menu_item_check label="Alfa" name="Alpha"/> + <menu_item_check label="Árbol" name="Tree"/> + <menu_item_check label="Avatares" name="Character"/> + <menu_item_check label="Superficie del terreno" name="SurfacePath"/> + <menu_item_check label="Cielo" name="Sky"/> + <menu_item_check label="Agua" name="Water"/> + <menu_item_check label="Terreno" name="Ground"/> + <menu_item_check label="volumen" name="Volume"/> + <menu_item_check label="Hierba" name="Grass"/> + <menu_item_check label="Nubes" name="Clouds"/> + <menu_item_check label="Partículas" name="Particles"/> + <menu_item_check label="Efectos de relieve" name="Bump"/> + </menu> + <menu label="Rasgos renderizados" name="Rendering Features"> + <menu_item_check label="UI" name="UI"/> + <menu_item_check label="Seleccionado" name="Selected"/> + <menu_item_check label="Realzados" name="Highlighted"/> + <menu_item_check label="Texturas dinámicas" name="Dynamic Textures"/> + <menu_item_check label="Huellas" name="Foot Shadows"/> + <menu_item_check label="Niebla" name="Fog"/> + <menu_item_check label="Objetos flexibles" name="Flexible Objects"/> + </menu> + <menu_item_check label="Ejecutar múltiples temas" name="Run Multiple Threads"/> + <menu_item_call label="Vaciar la caché de grupo" name="ClearGroupCache"/> + <menu_item_check label="Vista subjetiva suavizada" name="Mouse Smoothing"/> + <menu label="Atajos de teclado" name="Shortcuts"> + <menu_item_call label="Imagen ([COST] L$)..." name="Upload Image"/> + <menu_item_check label="Buscar" name="Search"/> + <menu_item_call label="Recuperar las teclas" name="Release Keys"/> + <menu_item_call label="Interfaz en el tamaño predeterminado" name="Set UI Size to Default"/> + <menu_item_check label="Correr siempre" name="Always Run"/> + <menu_item_check label="Volar" name="Fly"/> + <menu_item_call label="Cerrar la ventana" name="Close Window"/> + <menu_item_call label="Cerrar todas las ventanas" name="Close All Windows"/> + <menu_item_call label="Guardar una foto" name="Snapshot to Disk"/> + <menu_item_call label="Vista subjetiva" name="Mouselook"/> + <menu_item_check label="Flycam del joystick" name="Joystick Flycam"/> + <menu_item_call label="Volver a la vista por defecto" name="Reset View"/> + <menu_item_call label="Mirar al último que habló" name="Look at Last Chatter"/> + <menu label="Seleccionar la herramienta de construcción" name="Select Tool"> + <menu_item_call label="Herramienta Visión" name="Focus"/> + <menu_item_call label="Herramienta Mover" name="Move"/> + <menu_item_call label="Herramienta Editar" name="Edit"/> + <menu_item_call label="Herramienta Crear" name="Create"/> + <menu_item_call label="Herramienta Terreno" name="Land"/> + </menu> + <menu_item_call label="Acercar el zoom" name="Zoom In"/> + <menu_item_call label="Zoom por defecto" name="Zoom Default"/> + <menu_item_call label="Alejar el zoom" name="Zoom Out"/> + <menu_item_call label="Pantalla completa" name="Toggle Fullscreen"/> + </menu> + <menu_item_call label="Mostrar las configuraciones del depurador" name="Debug Settings"/> + <menu_item_check label="Mostrar el menú Desarrollar" name="Debug Mode"/> + </menu> + <menu label="Develop" name="Develop"> + <menu label="Consoles" name="Consoles"> + <menu_item_check label="Texture Console" name="Texture Console"/> + <menu_item_check label="Debug Console" name="Debug Console"/> + <menu_item_call label="Notifications Console" name="Notifications"/> + <menu_item_check label="Texture Size Console" name="Texture Size"/> + <menu_item_check label="Texture Category Console" name="Texture Category"/> + <menu_item_check label="Fast Timers" name="Fast Timers"/> + <menu_item_check label="Memory" name="Memory"/> + <menu_item_call label="Region Info to Debug Console" name="Region Info to Debug Console"/> + <menu_item_check label="Camera" name="Camera"/> + <menu_item_check label="Wind" name="Wind"/> + <menu_item_check label="Badge" name="Badge"/> + </menu> + <menu label="Show Info" name="Display Info"> + <menu_item_check label="Show Time" name="Show Time"/> + <menu_item_check label="Show Render Info" name="Show Render Info"/> + <menu_item_check label="Show Color Under Cursor" name="Show Color Under Cursor"/> + <menu_item_check label="Show Updates to Objects" name="Show Updates"/> + </menu> + <menu label="Force an Error" name="Force Errors"> + <menu_item_call label="Force Breakpoint" name="Force Breakpoint"/> + <menu_item_call label="FForce LLError And Crash" name="Force LLError And Crash"/> + <menu_item_call label="Force Bad Memory Access" name="Force Bad Memory Access"/> + <menu_item_call label="Force an Infinite Loop" name="Force Infinite Loop"/> + <menu_item_call label="Force Driver Crash" name="Force Driver Carsh"/> + <menu_item_call label="Force Software Exception" name="Force Software Exception"/> + <menu_item_call label="Force Disconnect Viewer" name="Force Disconnect Viewer"/> + <menu_item_call label="Simulate a Memory Leak" name="Memory Leaking Simulation"/> + </menu> + <menu label="Render Tests" name="Render Tests"> + <menu_item_check label="Camera Offset" name="Camera Offset"/> + <menu_item_check label="Randomize Framerate" name="Randomize Framerate"/> + <menu_item_check label="Frame Test" name="Frame Test"/> + </menu> + <menu label="Rendering" name="Rendering"> + <menu_item_check label="Ejes" name="Axes"/> + <menu_item_check label="Wireframe" name="Wireframe"/> + <menu_item_check label="Global Illumination" name="Global Illumination"/> + <menu_item_check label="Animation Textures" name="Animation Textures"/> + <menu_item_check label="Disable Textures" name="Disable Textures"/> + <menu_item_check label="Render Attached Lights" name="Render Attached Lights"/> + <menu_item_check label="Render Attached Particles" name="Render Attached Particles"/> + <menu_item_check label="Hover Glow Objects" name="Hover Glow Objects"/> + </menu> + <menu label="Red" name="Network"> + <menu_item_check label="Pause Avatar" name="AgentPause"/> + <menu_item_call label="Drop a Packet" name="Drop a Packet"/> + </menu> + <menu_item_call label="Bumps, Pushes & Hits" name="Bumps, Pushes &amp; Hits"/> + <menu label="World" name="World"> + <menu_item_check label="Region Sun Override" name="Sim Sun Override"/> + <menu_item_check label="Baliza con destellos" name="Cheesy Beacon"/> + <menu_item_check label="Fixed Weather" name="Fixed Weather"/> + <menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/> + </menu> + <menu label="UI" name="UI"> + <menu_item_call label="Web Browser Test" name="Web Browser Test"/> + <menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/> + <menu_item_call label="Memory Stats" name="Memory Stats"/> + <menu_item_check label="Double-Click Auto-Pilot" name="Double-ClickAuto-Pilot"/> + <menu_item_check label="Debug Clicks" name="Debug Clicks"/> + <menu_item_check label="Debug Mouse Events" name="Debug Mouse Events"/> + </menu> + <menu label="XUI" name="XUI"> + <menu_item_call label="Reload Color Settings" name="Reload Color Settings"/> + <menu_item_call label="Show Font Test" name="Show Font Test"/> + <menu_item_call label="Load from XML" name="Load from XML"/> + <menu_item_call label="Save to XML" name="Save to XML"/> + <menu_item_check label="Show XUI Names" name="Show XUI Names"/> + <menu_item_call label="Send Test IMs" 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="Cabeza" name="Head"/> + <menu_item_call label="Upper Body" name="Upper Body"/> + <menu_item_call label="Lower Body" name="Lower Body"/> + <menu_item_call label="Falda" name="Skirt"/> + </menu> + <menu label="Character Tests" name="Character Tests"> + <menu_item_call label="Toggle Character Geometry" name="Toggle Character Geometry"/> + <menu_item_check label="Allow Select Avatar" name="Allow Select Avatar"/> + </menu> + <menu_item_call label="Force Params to Default" name="Force Params to Default"/> + <menu_item_check label="Animation Info" name="Animation Info"/> + <menu_item_check label="Slow Motion Animations" name="Slow Motion Animations"/> + <menu_item_check label="Disable Level Of Detail" name="Disable LOD"/> + <menu_item_check label="Show Collision Skeleton" name="Show Collision Skeleton"/> + <menu_item_check label="Display Agent Target" name="Display Agent Target"/> + <menu_item_call label="Debug Avatar Textures" name="Debug Avatar Textures"/> + </menu> + <menu_item_check label="HTTP Textures" name="HTTP Textures"/> + <menu_item_check label="Console Window on next Run" name="Console Window"/> + <menu_item_check label="Show Admin Menu" name="View Admin Options"/> + <menu_item_call label="Solicitar estatus de Administrador" name="Request Admin Options"/> + <menu_item_call label="Dejar el estatus de Administrador" name="Leave Admin Options"/> + </menu> + <menu label="Admin" name="Admin"> + <menu label="Object"> + <menu_item_call label="Coger una copia" name="Take Copy"/> + <menu_item_call label="Force Owner To Me" name="Force Owner To Me"/> + <menu_item_call label="Force Owner Permissive" name="Force Owner Permissive"/> + <menu_item_call label="Eliminar" name="Delete"/> + <menu_item_call label="Lock" name="Lock"/> + </menu> + <menu label="Parcel" name="Parcel"> + <menu_item_call label="Force Owner To Me" name="Owner To Me"/> + <menu_item_call label="Set to Linden Content" name="Set to Linden Content"/> + <menu_item_call label="Claim Public Land" name="Claim Public Land"/> + </menu> + <menu label="Región" name="Region"> + <menu_item_call label="Dump Temporary Asset Data" name="Dump Temp Asset Data"/> + <menu_item_call label="Save Region 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/es/mime_types_linux.xml b/indra/newview/skins/default/xui/es/mime_types_linux.xml new file mode 100644 index 0000000000..77d05934f4 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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"> + Contenido web + </label> + <tooltip name="web_tooltip"> + Este sitio tiene contenido web + </tooltip> + <playtip name="web_playtip"> + Mostrar el contenido web + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Película + </label> + <tooltip name="movie_tooltip"> + Aquí puede verse una película + </tooltip> + <playtip name="movie_playtip"> + Ver la película + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Imagen + </label> + <tooltip name="image_tooltip"> + En este sitio hay una imagen + </tooltip> + <playtip name="image_playtip"> + Ver la imagen de esta localización + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + En este sitio hay audio + </tooltip> + <playtip name="audio_playtip"> + Oír el audio de este sitio + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Streaming en 'Real Time' + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Vacío - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Vacío - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Vídeo + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Imagen + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Película (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/Vídeo 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"> + Texto enriquecido (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"> + Página 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"> + Imagen (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Imagen (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Imagen (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Imagen (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Imagen (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Imagen (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Página web + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Texto + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Película (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Película (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Película (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Película (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Película (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Película (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/es/mime_types_mac.xml b/indra/newview/skins/default/xui/es/mime_types_mac.xml new file mode 100644 index 0000000000..77d05934f4 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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"> + Contenido web + </label> + <tooltip name="web_tooltip"> + Este sitio tiene contenido web + </tooltip> + <playtip name="web_playtip"> + Mostrar el contenido web + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Película + </label> + <tooltip name="movie_tooltip"> + Aquí puede verse una película + </tooltip> + <playtip name="movie_playtip"> + Ver la película + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Imagen + </label> + <tooltip name="image_tooltip"> + En este sitio hay una imagen + </tooltip> + <playtip name="image_playtip"> + Ver la imagen de esta localización + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + En este sitio hay audio + </tooltip> + <playtip name="audio_playtip"> + Oír el audio de este sitio + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Streaming en 'Real Time' + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Vacío - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Vacío - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Audio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Vídeo + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Imagen + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Película (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/Vídeo 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"> + Texto enriquecido (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"> + Página 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"> + Imagen (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Imagen (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Imagen (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Imagen (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Imagen (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Imagen (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Página web + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Texto + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Película (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Película (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Película (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Película (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Película (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Película (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index 6b58bbea47..0f64550725 100644 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -9,74 +9,45 @@ <global name="implicitclosebutton"> Cerrar </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="Mensaje de alerta desconocida" name="MissingAlert"> - Su versión de [APP_NAME] no sabe cómo mostrar el mensaje de alerta que acaba de recibir. - -Detalles del error: no se ha encontrado en notifications.xml la alerta llamada '[_NAME]'. + <template name="okbutton"> + <form> + <button name="OK_okbutton" text="$yestext"/> + </form> + </template> + <template name="okignore"> + <form> + <button name="OK_okignore" text="$yestext"/> + </form> + </template> + <template name="okcancelbuttons"> + <form> + <button name="OK_okcancelbuttons" text="$yestext"/> + <button name="Cancel_okcancelbuttons" text="$notext"/> + </form> + </template> + <template name="okcancelignore"> + <form> + <button name="OK_okcancelignore" text="$yestext"/> + <button name="Cancel_okcancelignore" text="$notext"/> + </form> + </template> + <template name="okhelpbuttons"> + <form> + <button name="OK_okhelpbuttons" 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_yesnocancelbuttons" text="$canceltext"/> + </form> + </template> + <notification functor="GenericAcknowledge" label="Mensaje de notificación desconocida" name="MissingAlert"> + Tu versión de [APP_NAME] no sabe cómo mostrar la notificación que acaba de recibir. Por favor, comprueba que tienes instalado el último Visor. + +Detalles del error: la notificación de nombre '[_NAME]' no se ha encontrado en notifications.xml. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="FloaterNotFound"> @@ -97,24 +68,18 @@ Detalles del error: no se ha encontrado en notifications.xml la alerta llamada & <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sí"/> </notification> <notification name="BadInstallation"> - Ha habido un error al actualizar [APP_NAME]. Por favor, descargue la última versión desde secondlife.com. - <usetemplate - name="okbutton" - yestext="OK"/> + Ha habido un error actualizando [APP_NAME]. Por favor, [http://get.secondlife.com descarga la última versión] del Visor. + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LoginFailedNoNetwork"> - Error de red: no se ha podido conectar. + No se puede conectar con [SECOND_LIFE_GRID]. '[DIAGNOSTIC]' -Por favor, revise su conexión a internet. - <usetemplate - name="okbutton" - yestext="OK"/> +Asegúrate de que tu conexión a internet está funcionando adecuadamente. + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="MessageTemplateNotFound"> No se ha encontrado la plantilla de mensaje [PATH]. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="WearableSave"> ¿Guardar los cambios en las ropas o partes del cuerpo actuales? @@ -139,12 +104,18 @@ Por favor, revise su conexión a internet. ¿Guardar todos los cambios en la ropa y partes del cuerpo? <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No guardarlos" yestext="Guardarlos todos"/> </notification> + <notification name="FriendsAndGroupsOnly"> + Quienes no sean tus amigos no sabrán que has elegido ignorar sus llamadas y mensajes instantáneos. + <usetemplate name="okbutton" yestext="Sí"/> + </notification> <notification name="GrantModifyRights"> - Al conceder derechos de modificación a otro residente le autoriza a cambiar, borrar, o coger CUALQUIER objeto que usted tenga en el mundo. Sea MUY cuidadoso dando este permiso. ¿Quiere conceder derechos de modificación a [FIRST_NAME] [LAST_NAME]? + Conceder a otro Residente permisos de modificación le permitirá cambiar, borrar o tomar CUALQUIER objeto que tengas en el mundo. Sé MUY cuidadoso manejando este permiso. +¿Quieres conceder permisos de modificación a [FIRST_NAME] [LAST_NAME]? <usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/> </notification> <notification name="GrantModifyRightsMultiple"> - Al conceder derechos de modificación a otros residentes les autoriza a cambiar, borrar, o coger CUALQUIER objeto que usted tenga en el mundo. Sea MUY cuidadoso dando este permiso. ¿Quiere conceder derechos de modificación a los residentes seleccionados? + Conceder a otro Residente permisos de modificación le permitirá cambiar, borrar o tomar CUALQUIER objeto que tengas en el mundo. Sé MUY cuidadoso manejando este permiso. +¿Quieres conceder permisos de modificación a los Residentes elegidos? <usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/> </notification> <notification name="RevokeModifyRights"> @@ -173,7 +144,7 @@ Por favor, revise su conexión a internet. Va a añadir miembros al rol de [ROLE_NAME]. No podrá removérseles de ese rol, sino que deberán renunciar a él por sí mismos. ¿Está seguro de que quiere seguir? - <usetemplate ignoretext="Cuando se añaden miembros del grupo al rol de propietario" name="okcancelignore" notext="No" yestext="Sí"/> + <usetemplate ignoretext="Confirma que vas a añadir un nuevo Propietario al grupo" name="okcancelignore" notext="No" yestext="Sí"/> </notification> <notification name="AssignDangerousActionWarning"> Va a añadir la capacidad '[ACTION_NAME]' al rol '[ROLE_NAME]'. @@ -191,68 +162,31 @@ No podrá removérseles de ese rol, sino que deberán renunciar a él por sí mi ¿Añadir esta capacidad a '[ROLE_NAME]'? <usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/> </notification> - <notification name="ClickPublishHelpLand"> - Seleccionar 'Publicar en la web' -Marcando este ítem, se mostrará: -- esta parcela en los resultados de la búsqueda -- los objetos públicos de esta parcela -- esta parcela en la búsqueda de la web - </notification> - <notification name="ClickSoundHelpLand"> - Los media y la música sólo pueden disfrutarse dentro de la parcela. Según el nivel de calificación de los residentes, las opciones de sonido y de voz pueden ceñirse a la parcela u oírse fuera de ella. ¿Quiere ir a la Base de Conocimientos para aprender más sobre cómo configurar estas opciones? - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=5046 - </url> - <usetemplate - name="okcancelbuttons" - yestext="Ir a la Base de Conocimientos" - notext="Cerrar" /> - </notification> - <notification name="ClickSearchHelpAll"> - Los resultados de la búsqueda se organizan según la pestaña en que esté, su nivel de calificación, la categoría elegida, y otros factores. Para más detalles, vea, por favor, la Base de Conocimientos. - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=4722 - </url> - <usetemplate - name="okcancelbuttons" - yestext="Ir a la Base de Conocimientos" - notext="Cerrar" /> - </notification> - <notification name="ClickPublishHelpLandDisabled"> - No puede hacer que esta parcela aparezca en la búsqueda, porque está situada en una región que lo prohíbe. - </notification> - <notification name="ClickPublishHelpAvatar"> - Al seleccionar 'Mostrar en la búsqueda' se mostrará: -- mi perfil en los resultados de la búsqueda -- un enlace a mi perfil en las páginas públicas de grupo - </notification> - <notification name="ClickPartnerHelpAvatar"> - Puede proponérselo a otro residente o disolver su relación con un/a compañero/a en el sitio web de [SECOND_LIFE]. - -¿Ir al sitio web de [SECOND_LIFE] para tener más información sobre este asunto? - <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ir a la página"/> - </notification> - <notification name="ClickUploadHelpPermissions"> - Sus permisos por defecto no funcionarán en regiones antiguas. - </notification> - <notification name="ClickWebProfileHelpAvatar"> - Si este residente ha indicado una URL para mostrar un perfil en la web, usted puede: - * Pulsar 'Cargar' para ver la página en esta pestaña web. - * Pulsar Cargar > 'En un navegador externo' para ver la página en su navegador por defecto. - * Pulsar Cargar > 'URL Inicio' para volver al perfil en la web de este residente si usted ha estado navegando por otros sitios. - -Cuando esté viendo su propio perfil, puede introducir cualquier URL como su perfil web, y pulsar OK para fijarla. -Los demás residentes podrán visitar la URL que usted haya elegido cuando vean su perfil. + <notification name="AttachmentDrop"> + Vas a soltar tu anexado. + ¿Quieres seguir? + <usetemplate ignoretext="Confirmar antes de soltar anexados" name="okcancelignore" notext="No" yestext="Sí"/> </notification> <notification name="JoinGroupCanAfford"> Entrar a este grupo cuesta [COST] L$. ¿Quiere hacerlo?? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Entrar"/> </notification> + <notification name="JoinGroupNoCost"> + Vas a entrar al grupo [NAME]. +¿Quieres seguir? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Entrar"/> + </notification> <notification name="JoinGroupCannotAfford"> Entrar a este grupo cuesta [COST] L$. No tiene dinero suficiente para entrar. </notification> + <notification name="CreateGroupCost"> + Crear este grupo te costará 100 L$. +Los grupos necesitan más de un miembro. Si no, son borrados permanentemente. +Por favor, invita a miembros en las próximas 48 horas. + <usetemplate canceltext="Cancelar" name="okcancelbuttons" notext="Cancelar" yestext="Crear un grupo por 100 L$"/> + </notification> <notification name="LandBuyPass"> Por [COST] L$ puede entrar a este terreno ('[PARCEL_NAME]') durante [TIME] horas. ¿Comprar un pase? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> @@ -267,10 +201,10 @@ Su precio de venta será de [SALE_PRICE] L$, y se autorizará la compra sólo a <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ConfirmLandSaleToAnyoneChange"> - ATENCIÓN: Al pulsar 'vender a cualquiera', su terreno estará disponible para toda la comunidad de [SECOND_LIFE], incluso para quienes no están en esta región. + ATENCIÓN: Marcando 'vender a cualquiera' hace que tu terreno esté disponible para toda la comunidad de [SECOND_LIFE], incluso para quienes no están en esta región. -Los [LAND_SIZE] m² de terreno seleccionados se van a poner a la venta. -Su precio de venta será de [SALE_PRICE] L$, y se autorizará la compra a [NAME]. +Los [LAND_SIZE] m² seleccionados de terreno se van a poner a la venta. +El precio de venta será de [SALE_PRICE] L$ y se autoriza la compra a [NAME]. <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ReturnObjectsDeededToGroup"> @@ -330,6 +264,12 @@ Objetos: [N] Toda esta región tiene activado el 'daño'. Para que funcionen las armas los scripts deben estar activados. </notification> + <notification name="MultipleFacesSelected"> + Están seleccionadas varias caras. +Si sigues con esta acción, en las diferentes caras del objeto aparecerán distintas peticiones de los media. +Para colocar los media en una sola cara, marca la opción Elegir la cara y pulsa en la cara adecuada del objeto, y luego pulsa Añadir. + <usetemplate ignoretext="Los media se configurarán en las varias caras seleccionadas" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> <notification name="MustBeInParcel"> Para configurar el Punto de llegada de la parcela, debe estar usted dentro de ella. @@ -366,6 +306,10 @@ La carpeta del vestuario contiene partes del cuerpo, u objetos a anexar o que no <notification name="CannotWearTrash"> No puede vestirse ropas o partes del cuerpo que están en la Papelera </notification> + <notification name="MaxAttachmentsOnOutfit"> + No se puede anexar el objeto. +Se ha superado el límite máximo de [MAX_ATTACHMENTS] objetos. Por favor, quítate alguno. + </notification> <notification name="CannotWearInfoNotComplete"> No puede vestirse este ítem porque aún no se ha cargado. Por favor, reinténtelo en un minuto. </notification> @@ -380,21 +324,30 @@ Necesita una cuenta para entrar en [SECOND_LIFE]. ¿Quiere crear una ahora? <usetemplate name="okcancelbuttons" notext="Volver a intentarlo" yestext="Crear una cuenta nueva"/> </notification> <notification name="AddClassified"> - Los anuncios clasificados aparecen durante una semana en la sección 'Clasificados' del directorio Buscar y en [http://secondlife.com/community/classifieds/?lang=es-ES secondlife.com]. -Rellene su anuncio y pulse 'Publicar...' para añadirlo al directorio. -Cuando pulse Publicar, se le preguntará por un precio a pagar. -El pagar más hará que su anuncio aparezca más arriba en la lista, y que también aparezca más arriba cuando la gente busque por palabras clave. - <usetemplate ignoretext="Cuando se añade un nuevo Clasificado" name="okcancelignore" notext="Cancelar" yestext="OK"/> + Los anuncios clasificados aparecen durante una semana en la sección 'Clasificados' de la búsqueda y en [http://secondlife.com/community/classifieds secondlife.com]. +Rellena tu anuncio y pulsa 'Publicar...' para añadirlo al directorio. +Cuando pulses Publicar, se te preguntará por un precio a pagar. +El pagar más hará que tu anuncio aparezca más arriba en la lista, y que también aparezca más arriba en la lista cuando la gente busque por palabras clave. + <usetemplate ignoretext="Cómo crear un anuncio clasificado nuevo." name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="DeleteClassified"> ¿Borrar el clasificado '[NAME]'? No se reembolsan las cuotas pagadas. <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> + <notification name="DeleteMedia"> + Has elegido borrar los media asociados a esta cara. +¿Estás seguro de que quieres continuar? + <usetemplate ignoretext="Confirmar antes de borrar los media de un objeto" name="okcancelignore" notext="No" yestext="Sí"/> + </notification> <notification name="ClassifiedSave"> ¿Guardar los cambios en el clasificado [NAME]? <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No guardar" yestext="Guardar"/> </notification> + <notification name="ClassifiedInsufficientFunds"> + Dinero insuficiente para crear un clasificado. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="DeleteAvatarPick"> ¿Borrar el destacado [PICK]? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> @@ -412,26 +365,18 @@ No se reembolsan las cuotas pagadas. <notification name="SelectHistoryItemToView"> Por favor, seleccione un ítem del historial para verlo. </notification> - <notification name="ResetShowNextTimeDialogs"> - ¿Quiere reactivar todas estas ventanas emergentes, incluso las que marcó previamente como 'No mostrarme más esto'? - <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> - </notification> - <notification name="SkipShowNextTimeDialogs"> - ¿Quiere activar todas las ventanas emergentes que puedan habilitarse? - <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> - </notification> <notification name="CacheWillClear"> - La caché se limpiará cuando reinicie [APP_NAME]. + La caché se limpiará cuando reinices [APP_NAME]. </notification> <notification name="CacheWillBeMoved"> - La caché se moverá cuando reinicie [APP_NAME]. -Nota: esto limpiará la caché. + La caché se moverá cuando reinicies [APP_NAME]. +Nota: esto vaciará la caché. </notification> <notification name="ChangeConnectionPort"> - Las configuraciones del puerto tendrán efecto cuando reinicie [APP_NAME]. + La configuración del puerto tendrá efecto cuando reinicies [APP_NAME]. </notification> <notification name="ChangeSkin"> - La nueva apariencia se verá cuando reinicie [APP_NAME]. + La nueva apariencia la verás cuando reinicies [APP_NAME]. </notification> <notification name="GoToAuctionPage"> ¿Ir a la página web de [SECOND_LIFE] para ver los detalles de la subasta @@ -480,6 +425,11 @@ El objeto debe de haber sido borrado o estar fuera de rango ('out of range& <notification name="SaveBytecodeFailReason"> Al guardar un script compilado, hubo un problema por: [REASON]. Por favor, reintente guardarlo más tarde.. </notification> + <notification name="StartRegionEmpty"> + Perdon, no está definida tu Posición inicial. +Por favor, escribe el nombre de la región en el cajetín de Posición inicial, o elige para esa posición Mi Base o Mi última posición. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CouldNotStartStopScript"> No se ha podido correr o parar el script porque no se pudo encontrar el objeto que incluye. El objeto debe de haber sido borrado o estar fuera de rango ('out of range').. @@ -491,30 +441,28 @@ El objeto debe de haber sido borrado o estar fuera de rango ('out of range& No se ha podido escribir el archivo [[FILE]] </notification> <notification name="UnsupportedHardware"> - Atención: su sistema no tiene los requerimientos mínimos que necesita [APP_NAME]. Si sigue usando [APP_NAME], tendrá un funcionamiento pobre. Desafortunadamente, no podemos ofrecer soporte técnico para configuraciones inadecuadas del sistema. + Debes saber que tu ordenador no cumple los requirimientos mínimos para [APP_NAME]. Puede que experimentes un rendimiento muy bajo. Desafortunadamente, [SUPPORT_SITE] no puede dar asistencia técnica a sistemas con una configuración no admitida. MINSPECS -Para más información, ¿quiere visitar [_URL]? +¿Ir a [_URL] para más información? <url name="url" option="0"> http://secondlife.com/support/sysreqs.php?lang=es </url> - <usetemplate ignoretext="Cuando se detecte hardware no adecuado" name="okcancelignore" notext="No" yestext="Sí"/> + <usetemplate ignoretext="El hardware de mi ordenador no está admitido" name="okcancelignore" notext="No" yestext="Sí"/> </notification> <notification name="UnknownGPU"> - En este momento, desconocemos la tarjeta gráfica de su sistema. -Con frecuencia, esto se debe a hardware nuevo que no hemos podido revisar aún. -Es muy probable que [APP_NAME] funcione correctamente, pero deberá ajustar sus configuraciones gráficas a lo que sea más apropiado. -(Menú Editar > Preferencias > Gráficos). + Tu sistema usa una tarjeta gráfica que [APP_NAME] no reconoce. +Esto suele suceder con hardware nuevo que aun no ha sido probado con [APP_NAME]. Probablemente todo irá bien, pero deberás ajustar tus configuraciones gráficas. +(Yo > Preferencias > Gráficos). <form name="form"> - <ignore name="ignore" text="Cuando se detecte una tarjeta gráfica desconocida"/> + <ignore name="ignore" text="No se ha podido identificar mi tarjeta gráfica"/> </form> </notification> <notification name="DisplaySettingsNoShaders"> - [APP_NAME] se cayó al inicializar los drivers gráficos. -La calidad de los gráficos deberá establecerse en un nivel bajo para prevenir algunos errores frecuentes en los drivers. -Esto desactivará algunas opciones gráficas. -Le recomendamos que actualice los drivers de su tarjeta gráfica. -La calidad gráfica puede configurarse en Preferencias > Gráficos. + [APP_NAME] se cae al iniciar los 'driver' gráficos. +La calidad de los gráficos se configurará en Baja para prevenir algunos errores comunes de los gráficos. Esto desactivará algunas posibilidades gráficas. +Te recomendamos actualizar los 'drivers' de tu tarjeta gráfica. +La calidad gráfica puede ajustarse en Preferencias > Gráficos. </notification> <notification name="RegionNoTerraforming"> En la región [REGION] no se permite modificar el terreno. @@ -569,6 +517,9 @@ Temporalmente, será incapaz de moverse, usar el chat, o interactuar con el mund ¿Expulsar a [AVATAR_NAME] de su terreno? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar"/> </notification> + <notification name="EjectAvatarFromGroup"> + Has expulsado a [AVATAR_NAME] del grupo [GROUP_NAME] + </notification> <notification name="AcquireErrorTooManyObjects"> ERROR 'ACQUIRE': Hay demasiados objetos seleccionados. </notification> @@ -580,7 +531,7 @@ misma región. <notification name="PromptGoToCurrencyPage"> [EXTRA] -¿Ir a [_URL] para informarse sobre la compra de L$? +¿Ir a [_URL] para informarte sobre la compra de L$? <url name="url"> http://secondlife.com/app/currency/?lang=es-ES </url> @@ -671,12 +622,19 @@ Podría ser [VALIDS] No se ha podido crear el archivo de salida: [FILE] </notification> <notification name="DoNotSupportBulkAnimationUpload"> - Actualmente, no ofrecemos la posibilidad de subida masiva de archivos de animación. + Actualmente, [APP_NAME] no admite la subida masiva de animaciones. </notification> <notification name="CannotUploadReason"> No se ha podido subir [FILE] por la siguiente razón: [REASON] Por favor, inténtelo más tarde. </notification> + <notification name="LandmarkCreated"> + Se ha añadido "[LANDMARK_NAME]" a tu carpeta [FOLDER_NAME]. + </notification> + <notification name="LandmarkAlreadyExists"> + Ya tienes un hito de esta localización. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CannotCreateLandmarkNotOwner"> No puede crear un hito aquí porque el propietario del terreno no lo permite. </notification> @@ -699,6 +657,9 @@ Seleccione objetos con scripts. Seleccione objetos con scripts en los que usted tenga permiso para modificarlos. </notification> + <notification name="CannotOpenScriptObjectNoMod"> + Imposible abrir el script del objeto sin modificar los permisos. + </notification> <notification name="CannotSetRunningSelectObjectsNoScripts"> No se puede configurar ningún script como 'ejecutándose'. @@ -723,51 +684,48 @@ Buscando: [FINALQUERY] por lo que no se ha hecho la búsqueda. </notification> <notification name="CouldNotTeleportReason"> - No se ha podido teleportar. + Fallo en el teleporte. [REASON] </notification> - - <notification name="invalid_tport"> -Ha habido un problema al procesar su petición de teleporte. Debe volver a iniciar sesión para poder teleportarse. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico: -www.secondlife.com/support - </notification> - <notification name="invalid_region_handoff"> -Ha habido un problema al procesar su paso a otra región. Debe volver a iniciar sesión para poder pasar de región a región. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico: -www.secondlife.com/support - </notification> - <notification name="blocked_tport"> -Lo sentimos, en estos momentos los teleportes están bloqueados. Vuelva a intentarlo en un momento. Si sigue sin poder teleportarse, desconéctese y vuelva a iniciar sesión para solucionar el problema. - </notification> - <notification name="nolandmark_tport"> -Lo sentimos, pero el sistema no ha podido localizar el destino de este hito. - </notification> - <notification name="timeout_tport"> -Lo sentimos, pero el sistema no ha podido completar el teleporte. + <notification name="invalid_tport"> + Ha habido un problema al procesar tu petición de teleporte. Debes volver a iniciar sesión antes de poder teleportarte de nuevo. +Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE]. + </notification> + <notification name="invalid_region_handoff"> + Ha habido un problema al procesar tu paso a otra región. Debes volver a iniciar sesión para poder pasar de región a región. +Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE]. + </notification> + <notification name="blocked_tport"> + Lo sentimos, en estos momentos los teleportes están bloqueados. Vuelva a intentarlo en un momento. Si sigue sin poder teleportarse, desconéctese y vuelva a iniciar sesión para solucionar el problema. + </notification> + <notification name="nolandmark_tport"> + Lo sentimos, pero el sistema no ha podido localizar el destino de este hito. + </notification> + <notification name="timeout_tport"> + Lo sentimos, pero el sistema no ha podido completar el teleporte. Vuelva a intentarlo en un momento. - </notification> - <notification name="noaccess_tport"> -Lo sentimos, pero usted no tiene acceso al destino de este teleporte. - </notification> - <notification name="missing_attach_tport"> -Aún no han llegado sus objetos anexados. Espere unos segundos más o desconéctese y vuelva a iniciar sesión antes de teleportarse. - </notification> - <notification name="too_many_uploads_tport"> -La cola de espera en esta región está actualmente obstruida, por lo que su petición de teleporte no se atenderá en un tiempo prudencial. Por favor, vuelva a intentarlo en unos minutos o vaya a una zona menos ocupada. - </notification> - <notification name="expired_tport"> -Lo sentimos, pero el sistema no ha podido atender a su petición de teleporte en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos. - </notification> - <notification name="expired_region_handoff"> -Lo sentimos, pero el sistema no ha podido completar su paso a otra región en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos. - </notification> - <notification name="no_host"> -Ha sido imposible encontrar el destino del teleporte: o está desactivado temporalmente o ya no existe. Por favor, vuelva a intentarlo en unos pocos minutos. - </notification> - <notification name="no_inventory_host"> -En estos momentos no está disponible el sistema del inventario. - </notification> - - + </notification> + <notification name="noaccess_tport"> + Lo sentimos, pero usted no tiene acceso al destino de este teleporte. + </notification> + <notification name="missing_attach_tport"> + Aún no han llegado sus objetos anexados. Espere unos segundos más o desconéctese y vuelva a iniciar sesión antes de teleportarse. + </notification> + <notification name="too_many_uploads_tport"> + La cola de espera en esta región está actualmente obstruida, por lo que su petición de teleporte no se atenderá en un tiempo prudencial. Por favor, vuelva a intentarlo en unos minutos o vaya a una zona menos ocupada. + </notification> + <notification name="expired_tport"> + Lo sentimos, pero el sistema no ha podido atender a su petición de teleporte en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos. + </notification> + <notification name="expired_region_handoff"> + Lo sentimos, pero el sistema no ha podido completar su paso a otra región en un tiempo prudencial. Por favor, vuelva a intentarlo en unos pocos minutos. + </notification> + <notification name="no_host"> + Ha sido imposible encontrar el destino del teleporte: o está desactivado temporalmente o ya no existe. Por favor, vuelva a intentarlo en unos pocos minutos. + </notification> + <notification name="no_inventory_host"> + En estos momentos no está disponible el sistema del inventario. + </notification> <notification name="CannotSetLandOwnerNothingSelected"> No se ha podido configurar el propietario del terreno: no se ha seleccionado una parcela. @@ -776,7 +734,8 @@ no se ha seleccionado una parcela. No se ha podido obtener la propiedad del terreno porque la selección se extiende por varias regiones. Por favor, seleccione un área más pequeña y reinténtelo. </notification> <notification name="ForceOwnerAuctionWarning"> - Está parcela está siendo subastada. Forzar su propiedad cancelará la subasta y, probablemente, disguste a algunos residentes que ya hayan empezado a pujar. ¿Forzar la propiedad? + Esta parcela está subastándose. Forzar su propiedad cancelará la subasta y, potencialmente, puede disgustar a algunos residentes si la puja ha empezado. +¿Forzar la propiedad? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="CannotContentifyNothingSelected"> @@ -804,7 +763,7 @@ no se ha seleccionado una parcela. no se ha podido encontrar en qué región está. </notification> <notification name="CannotCloseFloaterBuyLand"> - No puede cerrar la ventana de Comprar terreno hasta que [APP_NAME] calcule el precio de esta transacción. + No puedes cerrar la ventana de Comprar terreno hasta que [APP_NAME] calcule el precio de esta transacción. </notification> <notification name="CannotDeedLandNothingSelected"> No se ha podido transferir el terreno: @@ -824,14 +783,6 @@ ha seleccionado varias parcelas. Inténtelo seleccionando sólo una. </notification> - <notification name="ParcelCanPlayMedia"> - Esta localización puede mostrar media en streaming. -Los media en streaming necesitan una conexión a internet rápida. - -Si hay media, ¿reproducirlos en streaming? -(Puede cambiar más adelante esta opción en Preferencias > Audio y Vídeo). - <usetemplate name="okcancelbuttons" notext="Desactivar" yestext="Ejecutar los media"/> - </notification> <notification name="CannotDeedLandWaitingForServer"> No se ha podido transferir el terreno: esperando que el servidor informe acerca de la propiedad. @@ -928,17 +879,6 @@ Deberá reconfigurar el nombre y las opciones de la nueva parcela. ¿Unir el terreno? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> - <notification name="ShowOwnersHelp"> - Mostrar los propietarios: -El color de las parcelas indica el tipo de propietario. - -Verde = Su terreno -Agua = Terreno de sus grupos -Rojo = Propiedad de otros -Amarillo = En venta -Morado = Para subasta -Gris = Público - </notification> <notification name="ConfirmNotecardSave"> Esta nota debe guardarse antes de que se la pueda copiar o ver. ¿Guardar la nota? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> @@ -961,12 +901,11 @@ Gris = Público </notification> <notification name="CannotSaveToAssetStore"> No se ha podido guardar [NAME] en la base central de almacenamiento. -Esto es, generalmente, un fallo temporal. Por favor, reinténtelo en unos pocos minutos. +Generalmente, esto es un fallo pasajero. Por favor, personaliza y guarda el ítem de aquí a unos minutos. </notification> <notification name="YouHaveBeenLoggedOut"> - Se ha cerrado su sesión en [SECOND_LIFE]: + Vaya, has sido desconectado de [SECOND_LIFE] [MESSAGE] -Aún puede ver el chat y los MI existentes pulsando 'Ver MI y Chat'. Si no, pulse 'Salir' para dejar inmediatemente [APP_NAME]. <usetemplate name="okcancelbuttons" notext="Salir" yestext="Ver MI y Chat"/> </notification> <notification name="OnlyOfficerCanBuyLand"> @@ -1125,37 +1064,39 @@ Si se vende una parcela transferida, el precio de venta se dividirá a partes ig </notification> <notification name="ErrorMessage"> [ERROR_MESSAGE] - </notification> - <notification name="AvatarMoved"> - Su localización [TYPE] no está disponible en estos momentos. [HELP] -Ha sido llevado a una región cercana. + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="AvatarMovedDesired"> - La localización que ha elegido no está disponible en estos momentos. -Ha sido llevado a una región cercana. + La localización que querías no está disponible en estos momentos. +Se te ha llevado a una región cercana. </notification> <notification name="AvatarMovedLast"> - Su última posición no está disponible en estos momentos. -Ha sido llevado a una región cercana. + En estos momentos no está disponible tu última posición. +Se te ha llevado a una región cercana. + </notification> + <notification name="AvatarMovedHome"> + En estos momentos no está disponible tu Base. +Se te ha llevado a una región cercana. +Quizá quieras configurar una nueva posición para tu Base. </notification> <notification name="ClothingLoading"> - Aún está descargándose su ropa. -Puede usar normalmente [SECOND_LIFE], los demás residentes le verán correctamente. + Aún está descargándose tu ropa. +Puedes usar [SECOND_LIFE] de forma normal; los demás residentes te verán correctamente. <form name="form"> - <ignore name="ignore" text="Cuando está llevando mucho tiempo descargar la ropa"/> + <ignore name="ignore" text="La ropa está tardando mucho en descargarse"/> </form> </notification> <notification name="FirstRun"> - Se ha completado la instalación de [APP_NAME]. + Se ha completado la instalación de [SECOND_LIFE]. -Si esta es la primera vez que usa [SECOND_LIFE], deberá crear una cuenta antes de que pueda iniciar una sesión. -¿Volver a [https://join.secondlife.com/index.php?lang=es-ES secondlife.com] para crear una cuenta nueva? +Si es la primera vez que usas [SECOND_LIFE], debes crear una cuenta antes de poder iniciar una sesión. +¿Volver a [http://join.secondlife.com secondlife.com] para crear una cuenta nueva? <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Cuenta nueva..."/> </notification> <notification name="LoginPacketNeverReceived"> - Tenemos problemas de conexión. Puede deberse a un problema de su conexión a internet o de los servidores de [SECOND_LIFE]. + Tenemos problemas de conexión. Puede deberse a un problema de tu conexión a internet o de [SECOND_LIFE_GRID]. -Puede revisar su conexión a internet y volver a intentarlo en unos minutos. Pulse Ayuda para conectarse a nuestro sitio de Sporte, o pulse Teleportar para intentar teleportarse a su Base. +Puedes revisar tu conexión a internet y volver a intentarlo en unos minutos, pulsar Ayuda para conectarte a [SUPPORT_SITE], o pulsar Teleporte para intentar teleportarte a tu Base. <url name="url"> http://es.secondlife.com/support/ </url> @@ -1178,10 +1119,10 @@ Puede cambiar más adelante su elección. [NAME] cuesta [PRICE] L$. No tiene suficientes L$ para hacer eso. </notification> <notification name="GrantedModifyRights"> - Se le ha concedido el privilegio de modificar los objetos de [FIRST_NAME] [LAST_NAME]. + [NAME] te ha dado permiso para modificar sus objetos. </notification> <notification name="RevokedModifyRights"> - Ha sido revocado su privilegio de modificar los objetos de [FIRST_NAME] [LAST_NAME]. + Ha sido revocado tu privilegio de modificar los objetos de [NAME] </notification> <notification name="FlushMapVisibilityCaches"> Esto limpiará las caches del mapa en esta región. @@ -1260,93 +1201,107 @@ Por favor, ponga en venta el objeto y reinténtelo. [DOWNLOAD_PATH]. </notification> <notification name="DownloadWindowsMandatory"> - Está disponible una versión nueva de [APP_NAME]. + Hay una versión nueva de [SECOND_LIFE] disponible. [MESSAGE] -Debe descargar esta actualización para usar [APP_NAME]. +Debes descargar esta actualización para usar [SECOND_LIFE]. <usetemplate name="okcancelbuttons" notext="Salir" yestext="Descargarla"/> </notification> <notification name="DownloadWindows"> - Está disponible una versión actualizada de [APP_NAME]. + Hay una versión actualizada de [SECOND_LIFE] disponible. [MESSAGE] -Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad. +Esta actualización no es obligatoria, pero te sugerimos instalarla para mejorar el rendimiento y la estabilidad. <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargarla"/> </notification> <notification name="DownloadWindowsReleaseForDownload"> - Está disponible una versión actualizada de [APP_NAME]. + Hay una versión actualizada de [SECOND_LIFE] disponible. [MESSAGE] -Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad. +Esta actualización no es obligatoria, pero te sugerimos instalarla para mejorar el rendimiento y la estabilidad. <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargarla"/> </notification> + <notification name="DownloadLinuxMandatory"> + Hay una versión nueva de [SECOND_LIFE] disponible. +[MESSAGE] +Debes descargar esta actualización para usar [SECOND_LIFE]. + <usetemplate name="okcancelbuttons" notext="Salir" yestext="Descargar"/> + </notification> + <notification name="DownloadLinux"> + Hay una versión actualizada de [SECOND_LIFE] disponible. +[MESSAGE] +Esta actualización no es obligatoria, pero te sugerimos instalarla para mejorar el rendimiento y la estabilidad. + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargar"/> + </notification> + <notification name="DownloadLinuxReleaseForDownload"> + Hay una versión actualizada de [SECOND_LIFE] disponible. +[MESSAGE] +Esta actualización no es obligatoria, pero te sugerimos instalarla para mejorar el rendimiento y la estabilidad. + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargar"/> + </notification> <notification name="DownloadMacMandatory"> - Está disponible una versión nueva de [APP_NAME]. + Hay una versión nueva de [SECOND_LIFE] disponible. [MESSAGE] -Debe descargar esta actualización para usar [APP_NAME]. +Debes descargar esta actualización para usar [SECOND_LIFE]. -¿Descargarla a su carpeta de aplicaciones? +¿Descargarla a tu carpeta de Programas? <usetemplate name="okcancelbuttons" notext="Salir" yestext="Descargarla"/> </notification> <notification name="DownloadMac"> - Está disponible una versión actualizada de [APP_NAME]. + Hay una versión actualizada de [SECOND_LIFE] disponible. [MESSAGE] -Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad. +Esta actualización no es obligatoria, pero te sugerimos instalarla para mejorar el rendimiento y la estabilidad. -¿Descargarla a su carpeta de aplicaciones? +¿Descargarla a tu carpeta de Programas? <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargarla"/> </notification> <notification name="DownloadMacReleaseForDownload"> - Está disponible una versión actualizada de [APP_NAME]. + Hay una versión actualizada de [SECOND_LIFE] disponible. [MESSAGE] -Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar el rendimiento y la estabilidad. +Esta actualización no es obligatoria, pero te sugerimos instalarla para mejorar el rendimiento y la estabilidad. -¿Descargarla a su carpeta de aplicaciones? +¿Descargarla a tu carpeta de Programas? <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Descargarla"/> </notification> <notification name="DeedObjectToGroup"> Transferir este objeto al grupo hará que: * Reciba los L$ pagados en el objeto - <usetemplate ignoretext="Cuando se transfieren objetos a los grupos" name="okcancelignore" notext="Cancelar" yestext="Transferir"/> + <usetemplate ignoretext="Confirmar antes de transferir un objeto al grupo" name="okcancelignore" notext="Cancelar" yestext="Transferir"/> </notification> <notification name="WebLaunchExternalTarget"> - ¿Abrir el navegador de su sistema para ver este contenido? - <usetemplate ignoretext="Cuando se abra el navegador de su sistema para ver una página web" name="okcancelignore" notext="Cancelar" yestext="OK"/> + ¿Quieres abrir tu navegador para ver este contenido? + <usetemplate ignoretext="Abrir mi navegador para ver una página web" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="WebLaunchJoinNow"> - ¿Ir a www.secondlife.com para administrar su cuenta? - <usetemplate ignoretext="Cuando se abra el navegador para administrar su cuenta" name="okcancelignore" notext="Cancelar" yestext="OK"/> + ¿Ir al [http://secondlife.com/account/ Panel de Control] para administrar tu cuenta? + <usetemplate ignoretext="Abrir mi navegador para administrar mi cuenta" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="WebLaunchSecurityIssues"> Visite el wiki de [SECOND_LIFE] para más detalles sobre cómo informar de una cuestión de seguridad. - <usetemplate ignoretext="Cuando se abra el navegador para ver el wiki de cuestiones de seguridad" name="okcancelignore" notext="Cancelar" yestext="OK"/> + <usetemplate ignoretext="Abrir mi navegador para informar de un fallo de seguridad" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="WebLaunchQAWiki"> Visite el wiki QA de [SECOND_LIFE]. - <usetemplate ignoretext="Cuando se abra el navegador para ver el wiki QA" name="okcancelignore" notext="Cancelar" yestext="OK"/> + <usetemplate ignoretext="Abrir mi navegador para el ver el wiki de 'QA' (Control de Calidad)" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="WebLaunchPublicIssue"> Visite el Public Issue Tracker (sistema público de seguimiento de incidencias) de [SECOND_LIFE], donde podrá informar de errores y otros asuntos. - <usetemplate ignoretext="Cuando se abra el navegador para ver el Public Issue Tracker" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/> - </notification> - <notification name="WebLaunchPublicIssueHelp"> - Visite el wiki de [SECOND_LIFE] para informarse de cómo usar el Public Issue Tracker (sistema público de seguimiento de incidencias). - <usetemplate ignoretext="Cuando se abra el navegador para ver el wiki del Public Issue Tracker" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/> + <usetemplate ignoretext="Abrir mi navegador para usar el 'Public Issue Tracker'" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/> </notification> <notification name="WebLaunchSupportWiki"> Para ver las últimas noticias e informaciones, ¿ir la Blog oficial? - <usetemplate ignoretext="Cuando se abra el navegador para ver el blog" name="okcancelignore" notext="Cancelar" yestext="OK"/> + <usetemplate ignoretext="Abrir mi navegador para ver el blog" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="WebLaunchLSLGuide"> - ¿Ir a la Guía de programación para encontrar ayuda? - <usetemplate ignoretext="Cuando se abra el navegador para ver la Guía de programación" name="okcancelignore" notext="Cancelar" yestext="OK"/> + ¿Quieres abrir la Guía de Script para tener ayuda sobre el tema? + <usetemplate ignoretext="Abrir mi navegador para ver la Guía de Script" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="WebLaunchLSLWiki"> - ¿Ir al portal de LSL para encontrar ayuda sobre programación? - <usetemplate ignoretext="Cuando se abra el navegador para ver el portal de programación" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/> + ¿Quieres visitar el portal de LSL para tener ayuda sobre manejo de scripts? + <usetemplate ignoretext="Abrir mi navegador para ver el portal de LSL" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/> </notification> <notification name="ReturnToOwner"> ¿Está seguro de que quiere devolver los objetos seleccionados a sus propietarios? Los objetos transferibles que se hayan cedido volverán a sus propietarios anteriores. *ATENCIÓN* ¡Serán borrados los objetos no transferibles que estén cedidos! - <usetemplate ignoretext="Cuando se devuelvan los objetos a sus propietarios" name="okcancelignore" notext="Cancelar" yestext="OK"/> + <usetemplate ignoretext="Confirmar antes de devolver objetos a sus propietarios." name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="GroupLeaveConfirmMember"> Actualmente, usted es miembro del grupo [GROUP]. @@ -1358,14 +1313,14 @@ Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar a todos los usuarios"/> </notification> <notification name="MuteLinden"> - Perdón, pero no puede ignorar a un Linden. + Lo sentimos, pero no puedes ignorar a un Linden. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="CannotStartAuctionAlreadyForSale"> No puede empezar una subasta en una parcela que ya está en venta. Desactive la venta de terreno si está seguro de querer iniciar una subasta. </notification> - <notification label="Fallo al ignorar un objeto según el nombre" name="MuteByNameFailed"> - Ya ha ignorado ese nombre. + <notification label="Falló ignorar el objeto según su nombre." name="MuteByNameFailed"> + Ya has ignorado este nombre. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RemoveItemWarn"> @@ -1383,15 +1338,18 @@ Esta actualización no es obligatoria, pero le sugerimos instalarla para mejorar </notification> <notification name="BusyModeSet"> Pasar al modo ocupado. -Se ocultará el chat y los mensajes instantáneos. Los mensajes instantáneos recibirán su Respuesta en el modo ocupado. Todos los ofrecimientos de teleporte serán rehusados. Todas las ofertas de inventario irán a su Papelera. - <usetemplate ignoretext="Cuando se pasa al modo ocupado" name="okignore" yestext="OK"/> +Se ocultará el chat y los mensajes instantáneos (éstos recibirán tu Respuesta en el modo ocupado). Se rehusarán todos los ofrecimientos de teleporte. Todas las ofertas de inventario irán a tu Papelera. + <usetemplate ignoretext="Cambio mi estado al modo ocupado" name="okignore" yestext="OK"/> </notification> <notification name="JoinedTooManyGroupsMember"> - Pertenece a demasiados grupos para poder entrar en otro. Por favor, salga de al menos uno antes de entrar en éste, o rehúse la oferta. Para salir de un grupo, seleccione la opción 'Grupos...' en el menú 'Editar'. -[NAME] le ha invitado a ser miembro de un grupo. -[INVITE] + Has superado tu número máximo de grupos. Por favor, sal de al menos uno antes de entrar en éste, o rehúsa la oferta. +[NAME] te ha invitado a ser miembro de un grupo. <usetemplate name="okcancelbuttons" notext="Rehusar" yestext="Entrar"/> </notification> + <notification name="JoinedTooManyGroups"> + Has superado tu número máximo de grupos. Por favor, sal de al menos uno antes de crear uno nuevo o entrar en alguno. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="KickUser"> ¿Con qué mensaje se expulsará a este usuario? <form name="form"> @@ -1453,8 +1411,16 @@ Se ocultará el chat y los mensajes instantáneos. Los mensajes instantáneos re </form> </notification> <notification name="TeleportFromLandmark"> - ¿Está seguro de que quiere teleportarse? - <usetemplate ignoretext="Cuando está teleportando desde un hito del inventario" name="okcancelignore" notext="Cancelar" yestext="Teleportar"/> + ¿Seguro que quieres teleportarte a <nolink>[LOCATION]</nolink>? + <usetemplate ignoretext="Confirmar que quiero teleportarme a un hito" name="okcancelignore" notext="Cancelar" yestext="Teleportar"/> + </notification> + <notification name="TeleportToPick"> + ¿Teleportarte a [PICK]? + <usetemplate ignoretext="Confirmar el teleporte a una localización de los Destacados" name="okcancelignore" notext="Cancelar" yestext="Teleportar"/> + </notification> + <notification name="TeleportToClassified"> + ¿Teleportarse a [CLASSIFIED]? + <usetemplate ignoretext="Confirmar el teleporte a una localización de los Clasificados" name="okcancelignore" notext="Cancelar" yestext="Teleportar"/> </notification> <notification label="Mensaje a todo el estado" name="MessageEstate"> Escriba un anuncio breve que se enviará a todo el que esté en su estado. @@ -1523,9 +1489,7 @@ Se cambiarán miles de regiones, y se provocará un colapso en el espacio del se Usted no está autorizado en esa región por su nivel de calificación. Puede deberse a que no hay información validada de su edad. Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de Conocimientos para más detalles sobre el acceso a zonas con este nivel de calificación. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RegionEntryAccessBlocked_KB"> Usted no está autorizado en esa región por su nivel de calificación. @@ -1534,37 +1498,26 @@ Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de C <url name="url"> http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/es </url> - <usetemplate - name="okcancelignore" - yestext="Ir a la Base de Conocimientos" - notext="Cerrar" - ignoretext="Cuando la entrada a la región está bloqueada por el nivel de calificación"/> + <usetemplate ignoretext="No puedo entrar a esta región dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/> </notification> <notification name="RegionEntryAccessBlocked_Notify"> Usted no está autorizado en esa región por su nivel de calificación. </notification> <notification name="RegionEntryAccessBlocked_Change"> - Usted no está autorizado en esa región por su nivel de calificación.. - -Puede pulsar 'Cambiar preferencia' para aumentar su nivel de calificación y poder entrar. Desde ese momento, podrá buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quiere deshacer esta configuración, vaya a Editar > Preferencias... > General. - <form name="form"> - <button - name="OK" - text="Cambiar preferencia"/> - <button - default="true" - name="Cancel" - text="Cerrar"/> - <ignore name="ignore" text="Cuando la entrada a la región está bloqueada por la preferencia del nivel de calificación"/> - </form> + No estás autorizado en esta región por tus preferencias sobre el nivel de calificación. + +Puedes pulsar 'Cambiar las Preferencias' para incrementar las preferencias del nivel de calificación y, así, poder entrar. En adelante, podrás buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quieres deshacer este cambio, ve a Yo > Preferencias > General. + <form name="form"> + <button name="OK" text="Cambiar las preferencias"/> + <button default="true" name="Cancel" text="Cerrar"/> + <ignore name="ignore" text="Mis preferencias sobre nivel de calificación me impiden entrar a esta región"/> + </form> </notification> <notification name="LandClaimAccessBlocked"> Usted no puede reclamar este terreno por su nivel de calificación. Puede deberse a que no hay información validada de su edad. Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de Conocimientos para más detalles sobre el acceso a zonas con este nivel de calificación. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LandClaimAccessBlocked_KB"> No puede reclamar este terreno por sus nivel de calificación. @@ -1573,32 +1526,22 @@ Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de C <url name="url"> http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/es </url> - <usetemplate - name="okcancelignore" - yestext="Ir a la Base de Conocimientos" - notext="Cerrar" - ignoretext="Cuando el reclamar terreno está bloqueado por el nivel de calificación"/> + <usetemplate ignoretext="No puedo reclamar este terreno, dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/> </notification> <notification name="LandClaimAccessBlocked_Notify"> Por su nivel de calificación, usted no puede reclamar este terreno. </notification> <notification name="LandClaimAccessBlocked_Change"> - No puede reclamar este terreno por sus preferencias de nivel de calificación. + No puedes reclamar este terreno por tus preferencias sobre el nivel de calificación. -Puede pulsar 'Cambiar preferencia' para aumentar su nivel de calificación y poder entrar. Desde ese momento, podrá buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quiere deshacer esta configuración, vaya a Editar > Preferencias... > General.. - <usetemplate - name="okcancelignore" - yestext="Cambiar preferencia" - notext="Cerrar" - ignoretext="Cuando el reclamar terreno está bloqueado por la preferencia del nivel de calificación"/> +Puedes pulsar 'Cambiar las Preferencias' para incrementar las preferencias del nivel de calificación y, así, poder entrar. En adelante, podrás buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quieres deshacer este cambio, ve a Yo > Preferencias > General. + <usetemplate ignoretext="Mis preferencias sobre el nivel de calificación me impiden reclamar este terreno" name="okcancelignore" notext="Cerrar" yestext="Cambiar preferencia"/> </notification> <notification name="LandBuyAccessBlocked"> Usted no puede comprar este terreno por su nivel de calificación. Puede deberse a que no hay información validada de su edad. Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de Conocimientos para más detalles sobre el acceso a zonas con este nivel de calificación. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LandBuyAccessBlocked_KB"> No puede comprar este terreno por sus preferencias de nivel de calificación. @@ -1607,27 +1550,19 @@ Por favor, compruebe que tiene instalado el último visor, y vaya a la Base de C <url name="url"> http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/es </url> - <usetemplate - name="okcancelignore" - yestext="Ir a la Base de Conocimientos" - notext="Cerrar" - ignoretext="Cuando la compra de terreno está bloqueada por el nivel de calificación"/> + <usetemplate ignoretext="No puedo comprar este terreno, dado el nivel de calificación" name="okcancelignore" notext="Cerrar" yestext="Ir a la Base de Conocimientos"/> </notification> <notification name="LandBuyAccessBlocked_Notify"> No puede comprar este terreno por su nivel de calificación. </notification> <notification name="LandBuyAccessBlocked_Change"> - No puede comprar este terreno por sus preferencias de nivel de calificación. + No puedes comprar este terreno por tus preferencias sobre el nivel de calificación. -Puede pulsar 'Cambiar preferencia' para aumentar su nivel de calificación y poder entrar. Desde ese momento, podrá buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quiere deshacer esta configuración, vaya a Editar > Preferencias... > General. - <usetemplate - name="okcancelignore" - yestext="Cambiar preferencia" - notext="Cerrar" - ignoretext="Cuando la compra de terreno está bloqueada por la preferencia del nivel de calificación"/> +Puedes pulsar 'Cambiar las Preferencias' para incrementar las preferencias del nivel de calificación y, así, poder entrar. En adelante, podrás buscar y acceder a contenido [REGIONMATURITY]. Si más adelante quieres deshacer este cambio, ve a Yo > Preferencias > General. + <usetemplate ignoretext="Mis preferencias sobre el nivel de calificación me impiden comprar el terreno" name="okcancelignore" notext="Cerrar" yestext="Cambiar preferencia"/> </notification> <notification name="TooManyPrimsSelected"> - "Hay seleccionadas demasiadas primitivas. Por favor, seleccione [MAX_PRIM_COUNT] o menos, y reinténtelo." + Hay demasiados prims seleccionados. Por favor, selecciona [MAX_PRIM_COUNT] o menos y vuelve a intentarlo <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ProblemImportingEstateCovenant"> @@ -1642,9 +1577,7 @@ Puede pulsar 'Cambiar preferencia' para aumentar su nivel de calificac </notification> <notification name="UnableToLoadNotecardAsset"> En este momento, no se pueden cargar los datos de la's nota's. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="NotAllowedToViewNotecard"> Permisos insuficientes para ver la nota asociada a la ID solicitada. @@ -1662,19 +1595,11 @@ Puede pulsar 'Cambiar preferencia' para aumentar su nivel de calificac </notification> <notification name="SetClassifiedMature"> ¿Este anuncio tiene contenido 'Mature'? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="No" - yestext="Sí"/> + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No" yestext="Sí"/> </notification> <notification name="SetGroupMature"> ¿Este grupo tiene contenido 'Mature'? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="No" - yestext="Sí"/> + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="No" yestext="Sí"/> </notification> <notification label="Confirmar el reinicio" name="ConfirmRestart"> ¿Verdaderamente quiere reiniciar la región de aquí a 2 minutos? @@ -1688,226 +1613,14 @@ Puede pulsar 'Cambiar preferencia' para aumentar su nivel de calificac <button name="Cancel" text="Cancelar"/> </form> </notification> - <notification label="No permitir modificar el terreno" name="HelpRegionBlockTerraform"> - Si se marca está casilla, los propietarios de terreno no podrán modificarlo, independientemente de lo que esté configurado en cada parcela. - -Por defecto: off - </notification> - <notification label="Prohibir volar" name="HelpRegionBlockFly"> - Si se marca esta casilla, estará prohibido volar en la región, independientemente de lo que esté configurado en cada parcela. - -Por defecto: off - </notification> - <notification label="Cambio múltiple de permisos del contenido" name="HelpBulkPermission"> - La herramienta de cambio múltiple de permisos le ayuda a cambiar con rapidez los permisos de varios de los objetos contenidos en el objeto u objetos que seleccione. Pero fíjese que sólo configurará los permisos de los ítems que están en el contenido de los objetos seleccionados, no los de esos objetos que los contienen. - -Note también que los permisos no se aplicarán a los contenidos que puedan tener cada uno de los ítems. Lo que haga sólo afectará a los ítems que estén exactamente en el primer nivel de contenidos. - -Puede elegir qué clase de ítems modificar usando la lista 'Tipos de contenido' here. Las imágenes se consideran incluidas si selecciona Texturas. - -* Esta herramienta sólo puede cambiar los permisos de aquellos ítems de los que usted esté autorizado a cambiarlos. -* No puede otorgar al siguiente propietario permisos que usted no tenga ya. -* Los permisos para el nuevo propietario son, en principio, una solicitud. Si alguno de los ítems no puede coger todos esos permisos solicitados, no cambiará ninguno de los permisos que tenga. - -Cuando esté listo para efectuar el cambio múltiple de permisos, pulse 'Aplicar' y espere a que se muestren los resultados. - -SSi cierra la ventana de Cambio múltiple de permisos mientras se están cambiando, se cancelará la operación. - </notification> - <notification label="Permitir el daño" name="HelpRegionAllowDamage"> - Si se marca la casilla, el sistema de 'vida' afecta a todas las parcelas independientemente de lo que tenga marcado cada una. -Si la casilla no está marcada, el propietario de cada parcela podrá decidir si activa en ella el sistema de 'vida'. - -Por defecto: off - </notification> - <notification label="Nº máximo de avatares" name="HelpRegionAgentLimit"> - Configura el número máximo de avatares que se permite en esta región. -El funcionamiento puede variar según el número de avatares que estén presentes. - -Por defecto: 40 - </notification> - <notification label="Plus de objetos" name="HelpRegionObjectBonus"> - El plus de objetos es un multiplicador de los prims permitidos en cualquier parcela. -El rango permitido es de 1 a 10. Fijándolo en '1', se permiten 117 objetos en cada parcela de 512 m². Fijándolo en '2', se permiten 234 (el doble), y así sucesivamente. El número máximo de objetos permitidos en una región sigue siendo de 15.000, sea cual sea el plus. -Una vez establecido, tenga en cuenta que reducir el plus de objetos puede causar que se devuelvan o borren objetos. - -Por defecto: 1.0 - </notification> - <notification label="Calificación" name="HelpRegionMaturity"> - Configura el nivel de calificación de la región, tal como se verá en la barra superior del visor de cualquier residente, y en los datos que mostrará el mapa del mundo cuando se pase el cursor sobre esta región. Esta configuración también afecta al acceso a esta región y a los resultados de la búsqueda. Los demás residentes sólo entrarán en las regiones o verán aquellos resultados de la búsqueda que tengan el mismo nivel de calificación que ellos han elegido en sus preferencias. - -Puede llevar algún tiempo que este cambio se refleje en el mapa. - </notification> - <notification label="Impedir 'empujar'" name="HelpRegionRestrictPushObject"> - Esta casilla controla en toda la región los permisos para que haya 'empujones'. -Cuando está activada, los residentes sólo pueden ser empujados por sí mismos o por el propietario de la parcela. -('Empujar' se refiere a la función llPushObject() del LSL). - -Por defecto: Off - </notification> - <notification label="Unir/Dividir parcelas" name="HelpParcelChanges"> - Esta casilla determina si las parcelas que no son del propietario del estado pueden unirse o subdividirse. -Si no se marca esta opción: - * Sólo los propietarios o los administradores del estado pueden unir o dividir parcelas. - * Sólo podrán unir o dividir las parcelas pertenecientes al propietario o a un grupo en el que tengan los poderes adecuados. -Si se marca esta opción: - * Todo los propietarios de parcelas podrán unir o dividir las que posean. - * En parcelas propiedad de un grupo, quienes tengan los poderes adecuados podrán unirlas o dividirlas. - -Por defecto: Marcado - </notification> - <notification label="No mostrar en la búsqueda" name="HelpRegionSearch"> - Marcando esta casilla bloqueará que los propietarios de parcelas puedan listarlas en la búsqueda. - -Por defecto: Off - </notification> <notification label="Cambiada la calificación de la región" name="RegionMaturityChange"> - Se ha actualizado la calificación de esta región. + Se ha actualizado el nivel de calificación de esta región. Llevará algún tiempo que el cambio se refleje en el mapa. - </notification> - <notification label="Reventa de terreno" name="HelpRegionLandResell"> - Los propietarios y los administradores del estado pueden poner en venta cualquier terreno que posea el propietario del estado. -Si se desmarca esta opción, los compradores no podrán revender el terreno que compren en esta región. -Si se marca esta opción, los compradores podrán revender el terreno que compren en esta región. - -Por defecto: Deshabilitado - </notification> - <notification label="Desactivar los scripts" name="HelpRegionDisableScripts"> - Cuando el rendimiento de un sim es pobre, el culpable puede ser un script. Abra Estadísticas (Ctrl+May+1). Mire Simulator Physics FPS. Si es menor de 45, abre el panel Time, en la parte inferior de las Estadísticas. Si ve que Script Time está en 25 ms o más alto, pulse el botón Listar los scripts según su uso, y verá el nombre y la posición de los scripts que pueden estar causando el bajo rendimiento. - -Marcando la casilla Desactivar los scripts y pulsando el botón Aplicar, se desactivarán temporalmente en esta región todos los scripts. -Debe hacer esto para viajar a la posición que ha visto en la Lista de scripts según su uso. Cuando llegue, investigue el script para determinar si es él quien causa el problema. Deberá contactar con el propietario del script, o borrar o devolver el objeto. -Desmarque la casilla Desactivar los scripts y pulse Aplicar para reactivar los scripts en la región. - -Por defecto: off - </notification> - <notification label="Desactivar las colisiones" name="HelpRegionDisableCollisions"> - Cuando el rendimiento de un sim es pobre, la culpa puede estar en los objetos físicos. Abra Estadísticas (Ctrl+May+1). Mire Simulator Physics FPS. Si es menor de 45, abre el panel Time, en la parte inferior de las Estadísticas. Si ve que Sim Time (Physics) está en 20 ms o más alto, pulse el botón Listar los objetos que colisionan, y verá el nombre y la posición de los objetos que pueden estar causando el bajo rendimiento. - -Marcando la casilla Desactivar las colisiones y pulsando el botón Aplicar, se desactivarán temporalmente las colisiones entre objetos. -Debe hacer esto para viajar a la localización que se ha avisado en la Lista de objetos que colisionan. Cuando llegue, investigue el objeto: -¿está colisionando constantemente con otros objetos? Deberá contactar con el propietario del objeto, o borrarlo o devolverlo. -Desmarque la casilla Desactivar las colisiones y pulse Aplicar para reactivar las colisiones en la región. - -Por defecto: off - </notification> - <notification label="Desactivar la física" name="HelpRegionDisablePhysics"> - Desactivar la física es parecido a Desactivar las colisiones, pero se desactivan todas las simulaciones físicas: no sólo se detiene la colisión de objetos, sino que también se provoca que los avatares no puedan moverse. - -Esto debería usarse sólo cuando Desactivar las colisiones no ha aportado a la región suficiente rendimiento para investigar un problema con las propiedades físicas o los objetos que colisionan. - -Cuando acabe, no se olvide de reactivar la física, o los avatares seguirán sin poderse mover. - -Por defecto: off - </notification> - <notification label="Objetos que colisionan" name="HelpRegionTopColliders"> - Muestra una lista de aquellos objetos con más colisiones potenciales con otros objetos. Estos objetos pueden ralentizar el rendimiento. -Seleccione Ver > Estadísticas, y mire Simulator > Time > Sim Time (Physics) para ver si se están empleando en 'physics' más de 20 ms. - </notification> - <notification label="Listar los scripts" name="HelpRegionTopScripts"> - Muestra una lista de los objetos que más tiempo emplean en ejecutar scripts de LSL. Estos objetos pueden ralentizar el rendimiento. -Seleccione Ver > Estadísticas, y mire Simulator > Time > Script Time para ver si se están empleando más de 25 ms. - </notification> - <notification label="Reiniciar la región" name="HelpRegionRestart"> - Reinicia los procesos del servidor en que corre esta región tras dos minutos de advertencia previa. Se desconectará a todos los residentes que estén en la región. La región guardará sus datos, y debería volver en unos 90 segundos. - -Reiniciar la región no solventa la mayoría de los problemas de rendimiento, y, normalmente, debe utilizarse sólo cuando se indique. - </notification> - <notification label="Nivel del agua" name="HelpRegionWaterHeight"> - Es el nivel, en metros, del agua. Si se marca en algo distinto de 20, y usted tiene al lado el agua del mundo o un 'vacío', habrá una diferencia visible. - -Por defecto: 20 - </notification> - <notification label="Elevación del terreno" name="HelpRegionTerrainRaise"> - Es la distancia que, en metros, los propietarios de parcelas pueden elevar su terreno sobre la altura del terreno inicialmente creado. - -Por defecto: 4 - </notification> - <notification label="Rebaje del terreno" name="HelpRegionTerrainLower"> - Es la distancia que, en metros, los propietarios de parcelas pueden bajar su terreno sobre la altura del terreno inicialmente creado. - -Por defecto: -4 - </notification> - <notification label="Subir un RAW para el terreno" name="HelpRegionUploadRaw"> - Este botón carga un archivo .RAW en la región en que usted está. -El archivo debe tener las dimensiones correctas (RGB, 256x256) y 13 canales. La forma mejor de crear un archivo de terreno es descargar el archivo RAW existente. Un buen inicio es modificar el canal rojo -red- (altura del terreno), y subirlo. - -La carga puede llevar unos 45 segundos. Fíjese que subir un archivo de terreno *no* moverá los objetos que haya en el terreno, sólo el terreno mismo y los permisos asociados a las parcelas. -Por tanto, puede que algunos objetos acaben enterrados.. - -Para más información sobre la edición de las alturas del terreno, consulte la ayuda F1. - </notification> - <notification label="Descargar el RAW del terreno" name="HelpRegionDownloadRaw"> - Este botón descarga un archivo de esta región con los datos de alturas, dimensiones de las parcelas, estado de las parcelas en venta, y algunos permisos de las parcelas. Al abrir el archivo en un programa como Photoshop debe especificar las dimensiones del documento: RGB, 256x256 con 13 canales. -Este archivo de terreno no puede abrirse de otro modo. - -Para más información sobre la edición de las alturas del terreno, consulte la ayuda F1. - </notification> - <notification label="Usar el Sol del estado" name="HelpRegionUseEstateSun"> - Esta casilla hace que la posición del Sol en la región sea la misma que la del resto del estado. - -Por defecto: on - </notification> - <notification label="Fijar el Sol" name="HelpRegionFixedSun"> - Esta casilla fija la posición del Sol en la posición del deslizable Fase, y detiene su movimiento. - -Por defecto: off - </notification> - <notification label="Predeterminar este terreno" name="HelpRegionBakeTerrain"> - Este botón salva la forma actual del terreno como nueva forma por defecto para la región. Una vez predeterminado, el terreno puede volver a esa forma cada vez que usted u otros usan la opción 'Revertir' en Editar el terreno. El terreno predeterminado también marca el punto medio para elevar y bajar los límites. - </notification> - <notification label="Administradores del estado" name="HelpEstateEstateManager"> - Un administrador del estado es un residente en el que usted delega controles de la región y configuraciones del estado. Un administrador del estado puede cambiar algunas configuraciones de estos paneles, excepto las de subir, descargar, y predeterminar el terreno. Y, concretamente, puede autorizar o expulsar a residentes de su estado. -Sólo el propietario del estado puede añadir o remover administradores, nadie más. -Por favor, elija sólo a residentes en quienes confíe, pues usted será el responsable último de sus acciones. - </notification> - <notification label="Usar el horario global" name="HelpEstateUseGlobalTime"> - Esta casilla hace que, en su estado, el Sol tenga la misma posición que en los estados propiedad de Linden, 'mainland'. - -Por defecto: on - </notification> - <notification label="Fijar el Sol" name="HelpEstateFixedSun"> - Esta casilla fija la posición del Sol en la posición del deslizable Fase, y detiene su movimiento. - </notification> - <notification label="Acceso público" name="HelpEstateExternallyVisible"> - Esta casilla habilita que cualquier residente que esté en otro estado pueda entrar en éste sin tener que estar en una lista de acceso. - -Por defecto: on - </notification> - <notification label="Permitir el teleporte a cualquier punto" name="HelpEstateAllowDirectTeleport"> - Cuando esta marcado, los residentes puede teleportarse directamente a cualquier punto de su estado. Si se desmarca, los residentes se teleportarán al Punto de Teleporte más cercano. - -Por defecto: off - </notification> - <notification label="Autorizar el acceso" name="HelpEstateAllowResident"> - El acceso a este estado se limitará a los residentes aquí enumerados y a cualquier grupo de abajo. Esta configuración sólo funciona cuando está desmarcado Acceso público. - </notification> - <notification label="Autorizar el acceso de grupo" name="HelpEstateAllowGroup"> - El acceso a este estado se limitará a los grupos aquí enumerados y a cualquier residente de abajo. Esta configuración sólo funciona cuando está desmarcado Acceso público. - </notification> - <notification label="Dirección de correo para infracciones" name="HelpEstateAbuseEmailAddress"> - Aportando aquí una dirección de correo válida, se hará que las Denuncias de Infracción en este estado se envíen a esa dirección. -Si se deja en blanco, las Denuncias de Infracción se enviarán sólo a Linden Lab. - </notification> - <notification label="Denegar el acceso" name="HelpEstateBanResident"> - A los residentes en esta lista se les niega el acceso a su estado, independientemente de cualquier otra configuración. - </notification> - <notification label="Autorizar el chat de voz" name="HelpEstateVoiceChat"> - Se autoriza a las parcelas del estado a tener sus propios canales de voz en los que los residentes puedan hablar y oír a otros residentes. - -Por defecto: off +Para entrar a regiones Adultas, los Residentes deben haber verificado su cuenta, bien verificando la edad o bien verificando una forma de pago. </notification> <notification label="Desajuste en la versión de voz" name="VoiceVersionMismatch"> - En esta región, la versión de [APP_NAME] no es compatible con el chat de voz. Para que el chat de voz funcione correctamente, debe actualizar [APP_NAME]. - </notification> - <notification label="Contrato del estado" name="HelpEstateCovenant"> - Definir un contrato del estado le permite vender parcelas del mismo. Si no existe un contrato, no puede vender terreno. -La nota para su contrato puede estar vacía si es que no quiere aplicar reglas, avisos a los compradores, o cualquier otra cosa relacionada con el terreno antes de que sea comprado. - -Puede usar un contrato para comunicar al posible comprador reglas, pautas, información cultural, o, simplemente, sus propias expectativas. -Así, puede hablarse de parcelación, normas de las construcciones, formas de pago, u otra información que considere que el nuevo propietario debe saber y con la que debe estar de acuerdo antes de hacer la compra. - -Para poder finalizar la compra, el comprador debe aceptar el contrato marcando la casilla adecuada. Los contratos de los estados son siempre visibles en la información Acerca del terreno en todas las parcelas. + Esta versión de [APP_NAME] no es compatible con la prestación de voz de esta región. Para que el chat de voz funcione correctamente debes actualizar [APP_NAME]. </notification> <notification label="No se pudo comprar los objetos" name="BuyObjectOneOwner"> No se pueden comprar a la vez objetos de propietarios diferentes. @@ -1995,52 +1708,36 @@ Ha actualizado la posición de este Destacado, pero los otros detalles permanece Ha elegido ítems 'no copiables' de su inventario. Esos ítems se quitarán de su inventario, no se copiarán. ¿Mover el/los ítem/s del inventario? - <usetemplate ignoretext="Cuando mueva objetos 'no copiables' del inventario" name="okcancelignore" notext="Cancelar" yestext="OK"/> + <usetemplate ignoretext="Avisarme antes de que mueva ítems 'no copiables' desde un objeto" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="MoveInventoryFromScriptedObject"> Ha elegido ítems 'no copiables' de su inventario. Esos ítems se moverán a su inventario, no se copiarán. Dado que estos objetos tienen scripts, moverlos a su inventario puede provocar un mal funcionamiento del script. ¿Mover el/los ítem/s del inventario? - <usetemplate ignoretext="Cuando mueva objetos con script 'no copiables' del inventario" name="okcancelignore" notext="Cancelar" yestext="OK"/> + <usetemplate ignoretext="Avisarme antes de que mueva ítems 'no copiables' que puedan estropear un objeto con script" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="ClickActionNotPayable"> - Atención: la acción 'Pagar al objeto' al pulsar ha sido marcada, pero sólo funcionará si se añade un script con un evento money(). + Advertencia: la acción 'Pagar al objeto' ha sido marcada, pero sólo funcionará si se añade un script con un evento money(). <form name="form"> - <ignore name="ignore" text="Cuando configure 'Pagar al objeto' sin el evento money()"/> + <ignore name="ignore" text="He establecido la acción 'Pagar al objeto' cuando construyo uno sin un script money()"/> </form> </notification> <notification name="OpenObjectCannotCopy"> En este objeto, no hay ítems que esté autorizado a copiar. </notification> <notification name="WebLaunchAccountHistory"> - ¿Ir al sitio web de [SECOND_LIFE] para ver el historial de su cuenta? - <usetemplate ignoretext="Cuando se cargue la página web del historial de la cuenta" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/> - </notification> - <notification name="ClickOpenF1Help"> - ¿Visitar el sitio web de Soporte de [SECOND_LIFE]? - <usetemplate ignoretext="Cuando visite el sitio web de Soporte de [SECOND_LIFE]." name="okcancelignore" notext="Cancelar" yestext="Ir"/> + ¿Ir a tu [http://secondlife.com/account/ Panel de Control] para ver el historial de tu cuenta? + <usetemplate ignoretext="Abrir mi navegador para ver el historial de mi cuenta" name="okcancelignore" notext="Cancelar" yestext="Ir a la página"/> </notification> <notification name="ConfirmQuit"> ¿Está seguro de que quiere salir? - <usetemplate ignoretext="Cuando esté saliendo de [APP_NAME]." name="okcancelignore" notext="Continuar" yestext="Salir"/> + <usetemplate ignoretext="Confirmar antes de salir" name="okcancelignore" notext="No salir" yestext="Salir"/> </notification> <notification name="HelpReportAbuseEmailLL"> - Use esta herramienta para denunciar violaciones de las [http://secondlife.com/corporate/tos.php?lang=es-ES Condiciones del Servicio] y las [http://secondlife.com/corporate/cs.php?lang=es-ES Normas de la Comunidad]. - -Se investigan y resuelven todas las infracciones denunciadas de las Normas de la Comunidad y las Condiciones del Servicio. Puede ver la resolución tomada en el Informe de Incidentes, en: + Usa esta herramienta para denunciar violaciones de las [http://secondlife.com/corporate/tos.php Condiciones del Servicio] y las [http://secondlife.com/corporate/cs.php Normas de la Comunidad]. -http://secondlife.com/support/incidentreport.php - </notification> - <notification name="HelpReportAbuseEmailEO"> - IMPORTANTE: Esta denuncia no irá a Linden Lab, sino al propietario de la región en la que usted se encuentra actualmente. - -Como un servicio a los residentes y visitantes, el propietario de la región ha elegido recibir y resolver todas las enuncias que se originen en esta región. Linden Lab no investigará las denuncias que usted envíe desde aquí. - -El propietario de la región resolverá las denuncias basándose en las reglas locales de la región, tal como se detallan en el Contrato del estado. -(Puede ver el Contrato yendo al menú Mundo y eligiendo Acerca del terreno). - -La resolución de esta denuncia se aplica exclusivamente a esta región; el acceso de los residentes a otras áreas de [SECOND_LIFE] no se verá afectado por el resultado de esta denuncia. Únicamente Linden Lab puede impedir el acceso a la totalidad de [SECOND_LIFE]. +Se investigan y resuelven todas las infracciones denunciadas. </notification> <notification name="HelpReportAbuseSelectCategory"> Por favor, elija una categoría para esta denuncia de infracción. @@ -2066,13 +1763,13 @@ Aportar una descripción precisa nos ayuda a clasificar y procesar las denuncias <notification name="HelpReportAbuseContainsCopyright"> Estimado Residente: -Parece que está usted denunciando una violación de la propiedad intelectual. Por favor, asegúrese de que su denuncia es correcto. +Parece que estás denunciando una violación de la propiedad intelectual. Por favor, asegúrate de que tu denuncia es correcta. -(1) El proceso de la denuncia. Debe enviar una denuncia de infracción si cree que un Residente está reventando el sistema de permisos de [SECOND_LIFE], por ejemplo, usando un CopyBot u otras herramientas parecidas para copiar, infringiendo los derechos de propiedad intelectual. El Equipo de Infracciones (Abuse Team) investiga y lleva a cabo las acciones disciplinarias apropiadas ante toda acción que viole las las Normas de la Comunidad de [SECOND_LIFE] o las Condiciones del Servicio. Sin embargo, el Equipo de Infracciones ni gestiona ni responde a las solicitudes de eliminar contenidos del mundo de [SECOND_LIFE]. +(1) El proceso de la denuncia. Debes enviar una denuncia de infracción si crees que un Residente está reventando el sistema de permisos de [SECOND_LIFE], usando, por ejemplo, un CopyBot u otras herramientas parecidas para copiar, infringiendo los derechos de propiedad intelectual. El Equipo de Infracciones ('Abuse Team') investiga y lleva a cabo las acciones disciplinarias apropiadas ante toda acción que viole las [http://secondlife.com/corporate/tos.php Condiciones de Servicio] o las [http://secondlife.com/corporate/cs.php Normas de la Comunidad] de [SECOND_LIFE]. Sin embargo, el Equipo de Infracciones ni gestiona ni responde a las solicitudes de eliminar contenidos del mundo de [SECOND_LIFE]. -(2) El DMCA o Proceso de Eliminación de Contenido. Para solicitar que se elimine algún contenido de [SECOND_LIFE], DEBE enviar una notificación válida de infracción tal y como se explica en nuestra DMCA Policy en http://secondlife.com/corporate/dmca.php. +(2) El DMCA o Proceso de Eliminación de Contenido. Para solicitar que se elimine algún contenido de [SECOND_LIFE], DEBES enviar una notificación válida de infracción tal y como se explica en nuestra [http://secondlife.com/corporate/dmca.php 'DMCA Policy']. -Si todavía quiere seguir con el proceso de infracción, por favor, cierre esta ventana y acabe de enviar su denuncia. En concreto, debe seleccionar la categoría 'CopyBot o Programa para saltarse los permisos'. +Si todavía quieres seguir con el proceso de infracción, por favor, cierra esta ventana y acaba de enviar tu denuncia. En concreto, debes seleccionar la categoría 'CopyBot o Programa para saltarse los permisos'. Gracias, @@ -2085,7 +1782,7 @@ Linden Lab <notification label="Reemplazar el anexado actual" name="ReplaceAttachment"> En ese punto de su cuerpo ya hay un objeto anexado. ¿Quiere reemplazarlo por el objeto que ha elegido? <form name="form"> - <ignore name="ignore" save_option="true" text="Cuando se reemplacen anexados existentes"/> + <ignore name="ignore" save_option="true" text="Reemplazar un añadido actual con el ítem seleccionado"/> <button ignore="Reemplazar automaticamente" name="Yes" text="OK"/> <button ignore="Nunca reemplazar" name="No" text="Cancelar"/> </form> @@ -2095,18 +1792,22 @@ Linden Lab ¿Quiere salir del modo Ocupado ante de completar esta transacción? <form name="form"> - <ignore name="ignore" save_option="true" text="Cuando se esté pagando a un objeto o persona en el modo Ocupado"/> + <ignore name="ignore" save_option="true" text="Voy a pagar a una persona u objeto mientras estoy en el modo ocupado"/> <button ignore="Siempre salir del modo Ocupado" name="Yes" text="OK"/> <button ignore="Nunca salir del modo Ocupado" name="No" text="Cancelar"/> </form> </notification> + <notification name="ConfirmDeleteProtectedCategory"> + La carpeta '[FOLDERNAME]' pertenece al sistema, y borrar carpetas del sistema puede provocar inestabilidad. ¿Estás seguro de que quieres borrarla? + <usetemplate ignoretext="Confirmar antes de borrar una carpeta del sistema" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> <notification name="ConfirmEmptyTrash"> - ¿Está seguro de que quiere vaciar definitivamente el contenido de su Papelera? - <usetemplate ignoretext="Cuando se vacíe la Papelera" name="okcancelignore" notext="Cancelar" yestext="OK"/> + ¿Estás seguro de que quieres borrar de forma permanente el contenido de la Papelera? + <usetemplate ignoretext="Confirmar antes de vaciar la Papelera del inventario" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="ConfirmClearBrowserCache"> - ¿Está seguro de que quiere limpiar la caché de su navegador? - <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sí"/> + ¿Estás seguro de que quieres borrar tu historial web, de viajes y de búsquedas? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ConfirmClearCookies"> ¿Está seguro de que quiere limpiar sus cookies? @@ -2117,39 +1818,18 @@ Linden Lab <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sí"/> </notification> <notification name="ConfirmEmptyLostAndFound"> - ¿Está seguro de que quiere eliminar permanentemente el contenido de su carpeta Objetos Perdidos? - <usetemplate ignoretext="Cuando se vacíe la carpeta del inventario Objetos Perdidos" name="okcancelignore" notext="No" yestext="Sí"/> + ¿Estás seguro de que quieres borrar de forma permanente el contenido de Objetos Perdidos? + <usetemplate ignoretext="Confirmar antes de vaciar la carpeta Objetos Perdidos" name="okcancelignore" notext="No" yestext="Sí"/> </notification> <notification name="CopySLURL"> - Se ha copiado a su portapapeles la siguiente SLurl: + Se ha copiado a tu portapapeles esta SLurl: [SLURL] -Publíquela en una página web para que otros puedan acceder fácilmente a esta posición, o pruébela usted mismo pegándola en la barra de direcciones de su navegador. +Publícala en una página web para que otros puedan acceder fácilmente a esta posición, o pruébala tú mismo pegándola en la barra de direcciones de tu navegador. <form name="form"> - <ignore name="ignore" text="Cuando se copie una SLurl al portapapeles"/> + <ignore name="ignore" text="La SLurl se ha copiado a mi portapapeles"/> </form> </notification> - <notification name="GraphicsPreferencesHelp"> - Este panel controla el tamaño de la ventana, y la resolución y la calidad de los gráficos del cliente. La interfaz Preferencias > Gráficos le permite escoger entre cuatro niveles gráficos: Bajo, Medio, Alto, y Ultra. También puede personalizar sus configuraciones gráficas marcando la casilla Personalizar y adaptando estas configuraciones: - -Efectos: activa o desactiva varios tipos de shaders. - -Objetos reflejados: determina qué objetos reflejará el agua. - -Renderización del avatar: muestra opciones que afectan a cómo renderiza el cliente los avatares. - -Distancia de dibujo: afecta a cuán lejos de su punto de vista se renderizarán los objetos en la escena. - -Núm. máx. de partículas: define el número máximo de partículas que podrá ver a la vez en su pantalla. - -Calidad del procesamiento: define la resolución con que se renderiza el brillo. - -Detalle de la malla: define la cantidad de detalles o número de triángulos usados para renderizar algunos objetos. Cuanto más alto sea el valor, más detalle, pero más tiempo para renderizar. - -Detalles de la iluminación: determina que tipo de luces quiere usted que se rendericen. - -Nivel de detalle del terreno: marca con cuánto detalle quiere ver la textura del terreno. - </notification> <notification name="WLSavePresetAlert"> ¿Quiere sobrescribir la preselección guardada? <usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/> @@ -2168,149 +1848,6 @@ Nivel de detalle del terreno: marca con cuánto detalle quiere ver la textura de Ya existe un efecto de procesamiento. ¿Desea sobreescribirlo? <usetemplate name="okcancelbuttons" notext="No" yestext="Sí"/> </notification> - <notification name="HelpEditSky"> - Edite los deslizables del WindLight para crear y guardar configuraciones del cielo. - </notification> - <notification name="HelpEditDayCycle"> - Define cómo se verán los cielos a lo largo del día. - </notification> - <notification name="EnvSettingsHelpButton"> - Estas configuraciones ajustan la forma en que usted ve el medio ambiente localmente, en su ordenador. Su tarjeta gráfica debe admitir shaders de la atmósfera ('atmospheric shaders') para poder acceder a esta configuración. - -Ajuste el deslizable 'Duración de un día' para cambiar localmente, en su visor, las etapas del día. - -Ajuste el deslizable 'Nubosidad' para controlar cuántas nubes cubren el cielo. - -Pulse un color en el selector de 'Color del agua' para cambiar el color de la misma. - -Ajuste el deslizable 'Claridad del agua' para controlar el nivel de claridad del agua bajo la superficie. - -Pulse 'Usar el horario del estado' para devolver los valores del día al tiempo actual de la región y seguir a partir de él. - -Pulse 'Cielo avanzado' para abrir un editor con configuraciones avanzadas para el cielo. - -Pulse 'Agua avanzada' para abrir un editor con configuraciones avanzadas para el agua. - </notification> - <notification name="HelpDayCycle"> - El Editor del ciclo del día le permite controlar el cielo de [SECOND_LIFE] durante el ciclo día/noche. Este es el ciclo que usa el deslizable Duración de un día del Editor del entorno. - -El Editor del ciclo del día trabaja configurando fotogramas clave ('keyframes'): nodos (representados por los puntos grises en la línea del tiempo) cada uno de los cuales tiene asociado un Cielo definido. Según progresa la Duración de un día, el WindLight realiza la 'animación' del cielo interpolándose entre esos fotogramas clave. - -La flecha amarilla sobre la línea del tiempo representa lo que usted ve actualmente, basándose en la Duración de un día. Púlsela y muévela para ver cómo cambia la animación del día. Puede añadir o borrar fotogramas clave pulsando los botones Añadir un punto o Quitar un punto, situados a la derecha de la línea del tiempo. - -Puede establecer la posición en el tiempo de cualquier fotograma clave moviéndolo a lo largo de la línea del tiempo, o configurando manualmente su valor en el recuadro Configuración del fotograma clave. También en ese recuadro podrá asociar el fotograma clave a un modelo predefinido de WindLight. - -La Duración del ciclo establece la duración total de un 'día'. Marcar un valor bajo (por ejemplo, 2 min.) hará que las 24 horas de su línea del tiempo se animen ¡en sólo dos minutos reales! Una vez que esté satisfecho con su ciclo de la línea del tiempo y los fotogramas clave, utilice los botones Probar y Parar para obtener una vista previa de los resultados. Recuerde que también puede mover la flecha amarilla de encima de la línea del tiempo para ver el ciclo de la animación. El botón Usar el horario del estado sincronizará su ciclo de duración de un día con el ciclo del estado. - -Cuando todo esté a su gusto, puede guardar esos datos y cargarlos luego usando los botones Guardar este tipo de día y Cargar un tipo de día. Note que, por el momento, sólo podemos permitir un ciclo de un día. - </notification> - <notification name="HelpBlueHorizon"> - Use los deslizables Rojo/Verde/Azul (RVA) para ajustar el color del cielo. Puede usar el deslizable de Intensidad (I) para moverlos al unísono. - </notification> - <notification name="HelpHazeHorizon"> - La Cantidad de bruma es uno de los parámetros más útiles para ajustar el nivel de luz de la escena. Es eficaz para simular muchos ajustes de la exposición, como la claridad en un ambiente nublado o de nevisca, o las tonalidades del una flor Iris aún cerrada. - </notification> - <notification name="HelpBlueDensity"> - La Saturación afecta a la densidad global de la saturación de color del cielo y la niebla. Si mueve el deslizable Intensidad (I) a la derecha, los colores serán más vivos y brillantes. Si lo mueve a la izquierda, se irán decolorando hasta llegar incluso al blanco y negro. Si desea ajustar el balance de color del cielo, puede controlar la saturación de cada elemento usando el deslizable Rojo/Verde/Azul (RVA). - </notification> - <notification name="HelpHazeDensity"> - La Densidad de la bruma controla lo sombrío de la atmósfera, su neblina. Es eficaz para simular escenas con mucho humo o contaminantes, y también para simular niebla y llovizna. - </notification> - <notification name="HelpDensityMult"> - La Densidad puede usarse para definir globalmente la 'pesadez' de la atmósfera. Los ajustes bajos dan sensación de un 'aire limpio', y los altos de pesadez, de esmog. - </notification> - <notification name="HelpDistanceMult"> - Ajusta a qué distancia se percibe el WindLight. El valor cero desactiva la influencia del WindLight en el terreno y los objetos. Los valores superiores a 1 simulan mayores distancias a las que afectan los efectos atmosféricos - </notification> - <notification name="HelpMaxAltitude"> - La Altitud máx. ajusta hasta que altura el WindLight realiza sus cálculos para computar la iluminación atmosférica. En las últimas horas del día, es útil para ajustar la 'profundidad' a la que aparece el Sol. - </notification> - <notification name="HelpSunlightColor"> - Ajusta en la escena la intensidad y el color de las luces directas. - </notification> - <notification name="HelpSunAmbient"> - Ajusta en la escena la intensidad y el color de la luz ambiental. - </notification> - <notification name="HelpSunGlow"> - El deslizable Tamaño controla el tamaño del Sol. -El deslizable Visión controla cómo se ve de borroso el Sol en el cielo. - </notification> - <notification name="HelpSceneGamma"> - Ajusta la distribución de luz y oscuridad en la pantalla. - </notification> - <notification name="HelpStarBrightness"> - Ajusta el brillo de las estrellas en el cielo. - </notification> - <notification name="HelpTimeOfDay"> - Controla la posición del Sol en el cielo. Es parecido a la elevación. - </notification> - <notification name="HelpEastAngle"> - Controla la posición del Sol en el cielo. Es parecido al acimut. - </notification> - <notification name="HelpCloudColor"> - Edita el color de las nubes. En general, es recomendable mantenerlas blanquecinas. -Pero, vaya, diviértase si quiere. - </notification> - <notification name="HelpCloudDetail"> - Controla el detalle de las capas superiores de la imagen en la imagen principal de las nubes. X e Y controlan su posición. D (Densidad) controla la densidad o la fracturación con que aparecen las nubes. - </notification> - <notification name="HelpCloudDensity"> - Le permite controlar la posición de las nubes con los deslizables X e Y, y su desnidad con el deslizable D. - </notification> - <notification name="HelpCloudCoverage"> - Controla cuánto cubren el cielo las nubes. - </notification> - <notification name="HelpCloudScale"> - Controla el tamaño de la imagen de las nubes en la bóveda celeste. - </notification> - <notification name="HelpCloudScrollX"> - Controla la velocidad de las nubes al moverse en la dirección del eje X. - </notification> - <notification name="HelpCloudScrollY"> - Controla la velocidad de las nubes al moverse en la dirección del eje Y. - </notification> - <notification name="HelpClassicClouds"> - Marque esta casilla para activar la aparición de las nubes clásicas de [SECOND_LIFE] junto a las nubes del WindLight. - </notification> - <notification name="HelpWaterFogColor"> - Elije el color del agua bajo la superficie. - </notification> - <notification name="HelpWaterFogDensity"> - Controla la densidad de la claridad del agua, y a qué distancia puede verse bajo ella. - </notification> - <notification name="HelpUnderWaterFogMod"> - Modifica el efecto de Transparencia para controlar cuán lejos su avatar puede ver bajo el agua. - </notification> - <notification name="HelpWaterGlow"> - Controla la cantidad de brillo de la superficie del agua. - </notification> - <notification name="HelpWaterNormalScale"> - Controla el tamaño de las tres ondulaciones que componen el agua. - </notification> - <notification name="HelpWaterFresnelScale"> - Controla cuánta luz se refleja desde diferentes ángulos. - </notification> - <notification name="HelpWaterFresnelOffset"> - Controla cuánta intensidad de luz se refleja. - </notification> - <notification name="HelpWaterScaleAbove"> - Controla la cantidad de luz refractada mirando la superficie del agua desde arriba. - </notification> - <notification name="HelpWaterScaleBelow"> - Controla la cantidad de luz refractada mirando la superficie del agua desde debajo. - </notification> - <notification name="HelpWaterBlurMultiplier"> - Controla cómo se mezclan las ondas y los reflejos. - </notification> - <notification name="HelpWaterNormalMap"> - Controla cuál es la capa de 'vista normal' del agua, para determinar las reflexiones/refracciones. - </notification> - <notification name="HelpWaterWave1"> - Controla hacia adónde y a qué velocidad se mueve en los ejes X e Y la versión en tamaño grande de la 'vista normal'. - </notification> - <notification name="HelpWaterWave2"> - Controla hacia adónde y a qué velocidad se mueve en los ejes X e Y la versión en tamaño pequeño de la 'vista normal'. - </notification> <notification name="NewSkyPreset"> Dame un nombre para el cielo nuevo. <form name="form"> @@ -2356,35 +1893,33 @@ Pero, vaya, diviértase si quiere. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="Cannot_Purchase_an_Attachment"> - No se pueden comprar los ítems que aún forman parte de un objeto anexado. + No puedes comprar un objeto mientras esté anexado. </notification> <notification label="Acerca de las solicitudes de autorización de débito" name="DebitPermissionDetails"> Al admitir esta petición, le da permiso a un script para que coja dólares Linden (L$) de su cuenta. Para revocar este permiso, el propietario del objeto debe eliminarlo o reiniciar ese script del objeto. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="AutoWearNewClothing"> - ¿Quiere vestirse automáticamente el ítem de ropa nueva que ha creado? - <usetemplate ignoretext="Al vestirme automáticamente la ropa nueva" name="okcancelignore" notext="No" yestext="Sí"/> + ¿Quieres ponerte automáticamente la ropa que vas a crear? + <usetemplate ignoretext="Ponerme la ropa que estoy creando mientras modifico mi apariencia" name="okcancelignore" notext="No" yestext="Sí"/> </notification> <notification name="NotAgeVerified"> - Para acceder a esta parcela, se debe haber verificado su edad. -¿Quiere visitar la web de [SECOND_LIFE] para verificar su edad? + Debes haber verificado tu edad para visitar este sitio. ¿Quieres ir al sitio web de [SECOND_LIFE] y verificarla? [_URL] <url name="url" option="0"> https://secondlife.com/account/verification.php?lang=es </url> - <usetemplate ignoretext="Advertir de la falta de la verificación de edad" name="okcancelignore" notext="No" yestext="Sí"/> + <usetemplate ignoretext="No he verificado mi edad" name="okcancelignore" notext="No" yestext="Sí"/> </notification> <notification name="Cannot enter parcel: no payment info on file"> - Antes de que pueda acceder a esta parcela, se requiere que usted tenga archivada su información de pago. -¿Quiere visitar la web de [SECOND_LIFE] para actualizar esto? + Para visitar este sitio debes haber aportado información de pago en tu cuenta. ¿Quieres ir al sitio web de [SECOND_LIFE] y configurar esto? [_URL] <url name="url" option="0"> https://secondlife.com/account/index.php?lang=es </url> - <usetemplate ignoretext="Advertir de la falta de información de pago" name="okcancelignore" notext="No" yestext="Sí"/> + <usetemplate ignoretext="No he registrado información de pago" name="okcancelignore" notext="No" yestext="Sí"/> </notification> <notification name="MissingString"> La cadena [STRING_NAME] Ha desaparecido de strings.xml @@ -2414,7 +1949,7 @@ Pero, vaya, diviértase si quiere. [FIRST] [LAST] no está conectado </notification> <notification name="AddSelfFriend"> - No se puede añadir como amigo a usted mismo. + Aunque eres muy agradable, no puedes añadirte como amigo a ti mismo. </notification> <notification name="UploadingAuctionSnapshot"> Subiendo fotos del mundo y del sitio web... @@ -2433,11 +1968,10 @@ Pero, vaya, diviértase si quiere. Se ha descargado Terrain.raw </notification> <notification name="GestureMissing"> - El gesto [NAME] ha desaparecido de la base de datos. + No se encuentra en la base de datos el gesto [NAME]. </notification> <notification name="UnableToLoadGesture"> - No se ha podido cargar el gesto [NAME]. -Por favor, vuelva a intentarlo. + No se puede cargar el gesto [NAME]. </notification> <notification name="LandmarkMissing"> El hito ha desaparecido de la base de datos. @@ -2446,14 +1980,14 @@ Por favor, vuelva a intentarlo. No se ha podido cargar el hito. Por favor, vuelva a intentarlo. </notification> <notification name="CapsKeyOn"> - Tiene pulsada su tecla de bloqueo de mayúsculas, lo que influirá en cómo escriba la contraseña. -Quizá quiera soltar esa tecla. + Tienes pulsada la tecla de mayúsculas. +Esto puede influir en tu contraseña. </notification> <notification name="NotecardMissing"> La nota ha desaparecido de la base de datos. </notification> <notification name="NotecardNoPermissions"> - No tiene permisos suficientes para ver la nota. + No tienes permiso para ver esta nota. </notification> <notification name="RezItemNoPermissions"> No tiene permisos suficientes para renderizar el objeto. @@ -2491,11 +2025,11 @@ Por favor, vuelva a intentarlo. Por favor, vuelva a intentarlo. </notification> <notification name="CannotBuyObjectsFromDifferentOwners"> - No puede comprar a la vez objetos de diferentes propietarios. -Por favor, elija sólo uno. + No puedes comprar más de un objeto a la vez. +Por favor, selecciona un sólo objeto. </notification> <notification name="ObjectNotForSale"> - El objeto no aparece como puesto a la venta. + Este objeto no está en venta. </notification> <notification name="EnteringGodMode"> Entrando en el modo administrativo, nivel [LEVEL] @@ -2504,10 +2038,10 @@ Por favor, elija sólo uno. Saliendo del modo administrativo, nivel [LEVEL] </notification> <notification name="CopyFailed"> - No se ha hecho la copia porque usted no tiene permiso para hacerla + No tienes pemiso para copiar esto. </notification> <notification name="InventoryAccepted"> - [NAME] ha aceptado su oferta del inventario. + [NAME] ha recibido tu oferta de inventario. </notification> <notification name="InventoryDeclined"> [NAME] ha rehusado su oferta del inventario. @@ -2522,12 +2056,14 @@ Por favor, elija sólo uno. Se ha rehusado su tarjeta de visita. </notification> <notification name="TeleportToLandmark"> - Ahora que ha llegado a mainland (los continentes), puede teleportarse a localizaciones como '[NAME]' pulsando el botón Inventario de la esquina inferior derecha de su pantalla, y, después, seleccionando la carpeta Hitos. -Pulse dos veces en el hito y, luego, pulse en Teleportar para viajar hasta allí. + Puedes teleportarte a lugares como '[NAME]' abriendo el panel Lugares -a la derecha de tu pantalla- y seleccionando la sección Hitos. +Pulsa en un hito para seleccionarlo, y, luego, pulsa 'Teleportar' en la parte inferior del panel. +(También puedes pulsar dos veces en el hito o pulsarlo con el botón derecho del ratón y elegir 'Teleportar'.) </notification> <notification name="TeleportToPerson"> - Ahora que ha llegado a mainland (los continentes), puede contactar con residentes como '[NAME]' pulsando el botón Inventario de la esquina inferior derecha de su pantalla, y, después, seleccionando la carpeta Tarjetas de visita. -Pulse dos veces en la tarjeta, pulse en Mensaje Instantáneo, y escriba un mensaje. + Puedes contactar con un Residente como '[NAME]' abriendo el panel Gente en el lado derecho de tu pantalla. +Elige al Residente de la lista y pulsa 'MI' en la parte superior del panel. +(También puedes pulsar dos veces en su nombre o pulsarlo con el botón derecho y elegir 'MI'). </notification> <notification name="CantSelectLandFromMultipleRegions"> No puede seleccionar un terreno que cruce las fronteras entre servidores. @@ -2550,6 +2086,9 @@ Inténtelo seleccionando un trozo más pequeño de terreno. <notification name="SystemMessage"> [MESSAGE] </notification> + <notification name="PaymentRecived"> + [MESSAGE] + </notification> <notification name="EventNotification"> Notificación de un evento: @@ -2574,8 +2113,20 @@ Inténtelo seleccionando un trozo más pequeño de terreno. [NAMES] </notification> <notification name="NoQuickTime"> - No se ve como instalado en su sistema el software QuickTime de Apple. -Si quiere ver por streaming elementos multimedia en las parcelas que los tengan, debe ir al sitio web de QuickTime (http://www.apple.com/quicktime) e instalar el QuickTime Player. + No parece que tu sistema tenga instalado el software QuickTime de Apple. +Si quieres ver media en streaming en las parcelas que los tienen, deberías ir al [http://www.apple.com/quicktime sitio de QuickTime] e intalar el QuickTime Player. + </notification> + <notification name="NoPlugin"> + No se ha encontrado el 'Media Plugin' para manejar el 'mime type' "[MIME_TYPE]". Los media de este tipo no estarán disponibles. + </notification> + <notification name="MediaPluginFailed"> + Fallo de este 'Media Plugin': + [PLUGIN] + +Por favor, reinstala el plugin o contacta con el vendedor si sigues teniendo problemas. + <form name="form"> + <ignore name="ignore" text="Fallo al ejecutar un 'Media Plugin'"/> + </form> </notification> <notification name="OwnedObjectsReturned"> Se han devuelto a su inventario los objetos de los que usted era propietario en la parcela seleccionada. @@ -2584,7 +2135,7 @@ Si quiere ver por streaming elementos multimedia en las parcelas que los tengan, Se han devuelto a su inventario los objetos de los que usted era propietario en la parcela propiedad de [FIRST] [LAST]. </notification> <notification name="OtherObjectsReturned2"> - Se han devuelto a su propietario los objetos que, en la parcela seleccionada, eran propiedad del residente '[NAME]'. + Se han devuelto a su propietario los objetos seleccionados en la parcela de terreno propiedad de '[NAME]'. </notification> <notification name="GroupObjectsReturned"> Se han devuelto a los inventarios de sus propietarios los objetos que estaban compartidos con el grupo [GROUPNAME] en la parcela seleccionada. @@ -2594,24 +2145,26 @@ Los objetos no transferibles que se transfirieron al grupo han sido borrados. <notification name="UnOwnedObjectsReturned"> Se han devuelto a sus propietarios los objetos de los que usted NO era propietario en la parcela seleccionada. </notification> + <notification name="ServerObjectMessage"> + Mensaje de [NAME]: +<nolink>[MSG]</nolink> + </notification> <notification name="NotSafe"> - Este es un terreno con el daño autorizado ('no seguro'). -Aquí puede ser herido. Si muere, será teleportado a su Base. + Este terreno tiene el daño activado. +Aquí puedes ser herido. Si mueres, se te teleportará a tu Base. </notification> <notification name="NoFly"> - En este terreno no se permite volar ('no volar'). -Aquí no debe volar. + Este terreno tiene desactivado el poder volar. +Aquí no puedes volar. </notification> <notification name="PushRestricted"> - Este terreno es 'Sin empujones'. -No puede empujar a otros a menos que sea el propietario del terreno. + Este terreno no autoriza el poder empujar. No puedes hacerlo a menos que seas el propetario del terreno. </notification> <notification name="NoVoice"> - Este terreno tiene desactivada la voz. + Este tereno tiene desactivado el chat de voz. No podrás oír hablar a nadie. </notification> <notification name="NoBuild"> - Este terreno tiene desactivado el construir ('no construir'). -Aquí no puede crear objetos. + Este terreno tiene desactivado el poder construir. Aquí no puedes ni construir ni crear objetos. </notification> <notification name="ScriptsStopped"> Un administrador ha detenido temporalmente los scripts en esta región. @@ -2620,12 +2173,12 @@ Aquí no puede crear objetos. En esta región no se está ejecutando ningún script. </notification> <notification name="NoOutsideScripts"> - Esta región tiene desactivados los scripts de otros -('no scripts de otros'). -No se ejecutará ningún script que no pertenezca al propietario del terreno. + Este terreno tiene desactivados los scripts externos. + +Los scripts no funcionan aquí, excepto los pertenecientes al propietario del terreno. </notification> <notification name="ClaimPublicLand"> - Sólo puede reclamar terreno público en la región en que está usted. + Sólo puedes reclamar terreno público de la región en que estás. </notification> <notification name="RegionTPAccessBlocked"> No está autorizado en esa región por su nivel de calificación. Debe validar su edad y/o instalar el último visor. @@ -2638,16 +2191,9 @@ Por favor, vaya a la Base de Conocimientos para más detalles sobre el acceso a <notification name="NoTeenGridAccess"> Su cuenta no puede conectarse a esta región del grid teen. </notification> - <notification name="NoHelpIslandTP"> - No puede teleportarse de vuelta a la Help Island ('Isla de Ayuda'). -Vaya a la 'Help Island Public' ('Isla Pública de Ayuda') para repetir el tutorial. - </notification> <notification name="ImproperPaymentStatus"> No tiene el estado de pago adecuado para entrar a esta región. </notification> - <notification name="MustGetAgeRegion"> - Debe haber verificado su edad para entrar a esta región. - </notification> <notification name="MustGetAgeParcel"> Debe haber verificado su edad para entrar a esta parcela. </notification> @@ -2710,7 +2256,8 @@ Por favor, reinténtelo en unos momentos. No se ha podido encontrar una parcela válida. </notification> <notification name="ObjectGiveItem"> - Un objeto llamado [OBJECTFROMNAME], propiedad de [FIRST] [LAST], le ha dado un/a [OBJECTTYPE] de nombre [OBJECTNAME]. + Un objeto de nombre [OBJECTFROMNAME], propiedad de [NAME_SLURL], te ha dado este [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Guardar"/> <button name="Discard" text="Descartar"/> @@ -2718,7 +2265,8 @@ Por favor, reinténtelo en unos momentos. </form> </notification> <notification name="ObjectGiveItemUnknownUser"> - Un objeto llamado [OBJECTFROMNAME], propiedad de (un usuario desconocido), le ha dado un/a [OBJECTTYPE] de nombre [OBJECTNAME]. + Un objeto de nombre [OBJECTFROMNAME] propiedad de (un Residente desconocido) te ha dado este [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Guardar"/> <button name="Discard" text="Descartar"/> @@ -2726,15 +2274,17 @@ Por favor, reinténtelo en unos momentos. </form> </notification> <notification name="UserGiveItem"> - [NAME] le ha dado un/a [OBJECTTYPE] de nombre '[OBJECTNAME]'. + [NAME_SLURL] te ha dado este [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> - <button name="Keep" text="Guardar"/> + <button name="Show" text="Mostrar"/> <button name="Discard" text="Descartar"/> <button name="Mute" text="Ignorar"/> </form> </notification> <notification name="GodMessage"> [NAME] + [MESSAGE] </notification> <notification name="JoinGroup"> @@ -2746,7 +2296,7 @@ Por favor, reinténtelo en unos momentos. </form> </notification> <notification name="TeleportOffered"> - [NAME] se ha ofrecido a teleportarle hasta su posición: + [NAME] te ofrece teleportarte a su localización: [MESSAGE] <form name="form"> @@ -2754,6 +2304,9 @@ Por favor, reinténtelo en unos momentos. <button name="Cancel" text="Cancelar"/> </form> </notification> + <notification name="TeleportOfferSent"> + Teleporte ofrecido a [TO_NAME] + </notification> <notification name="GotoURL"> [MESSAGE] [URL] @@ -2773,6 +2326,9 @@ Por favor, reinténtelo en unos momentos. <button name="Decline" text="Rehusar"/> </form> </notification> + <notification name="FriendshipOffered"> + Has ofrecido amistad a [TO_NAME] + </notification> <notification name="OfferFriendshipNoMessage"> [NAME] le está ofreciendo amistad. @@ -2788,21 +2344,27 @@ Por favor, reinténtelo en unos momentos. <notification name="FriendshipDeclined"> [NAME] ha rehusado su oferta de amistad. </notification> + <notification name="FriendshipAcceptedByMe"> + Aceptado el ofrecimiento de amistad. + </notification> + <notification name="FriendshipDeclinedByMe"> + Rehusado el ofrecimiento de amistad. + </notification> <notification name="OfferCallingCard"> - [FIRST] [LAST] le está ofreciendo su tarjeta de visita. -Esto añadirá un ítem a su inventario para que pueda enviar rápidamente a este residente un MI. + [FIRST] [LAST] te está ofreciendo su tarjeta de visita. +Esto añadirá un marcador en tu inventario para que puedas enviarle rápidamente un MI. <form name="form"> <button name="Accept" text="Aceptar"/> <button name="Decline" text="Rehusar"/> </form> </notification> <notification name="RegionRestartMinutes"> - La región se reiniciará en [MINUTES] minutos. -Si permanece en esta región, será desconectado. + Esta región se reiniciará en [MINUTES] minutos. +Si permaneces en esta región serás desconectado. </notification> <notification name="RegionRestartSeconds"> - La región se reiniciará en [SECONDS] segundos. -Si permanece en esta región, será desconectado. + Esta región se reiniciará en [SECONDS] segundos. +Si permaneces en esta región serás desconectado. </notification> <notification name="LoadWebPage"> ¿Cargar la página web [URL]? @@ -2822,7 +2384,7 @@ Del objeto: [OBJECTNAME]; propiedad de: [NAME]? Búsqueda fallida de [TYPE] de nombre [DESC] en la base de datos. </notification> <notification name="InvalidWearable"> - El ítem que intenta llevar usa una característica que su visor no puede leer. Por favor, actualice su versión de [APP_NAME] para llevar este ítem. + El ítem que quieres vestirte tiene una característica que tu visor no puede leer. Por favor, actualiza tu versión de [APP_NAME] para ponerte este ítem. </notification> <notification name="ScriptQuestion"> '[OBJECTNAME]', un objeto propiedad de '[NAME]', querría: @@ -2836,10 +2398,10 @@ Del objeto: [OBJECTNAME]; propiedad de: [NAME]? </form> </notification> <notification name="ScriptQuestionCaution"> - '[OBJECTNAME]', un objeto propiedad de '[NAME]', querría: + Un objeto de nombre '[OBJECTNAME]', propiedad de '[NAME]', quiere: [QUESTIONS] -Si no confía en este objeto y su creador, debe denegar la solicitud. Para más información, pulse el botón Detalles. +Si no confias en este objeto y en su creador, deberías rehusar esta petición. ¿Autorizar esta petición? <form name="form"> @@ -2862,86 +2424,37 @@ Si no confía en este objeto y su creador, debe denegar la solicitud. Para más <button name="Ignore" text="Ignorar"/> </form> </notification> - <notification name="FirstBalanceIncrease"> - Ha recibido [AMOUNT] L$. -Pueden darle L$ tanto objetos como otros usuarios. -Su balance se muestra en la esquina superior derecha de la pantalla. - </notification> - <notification name="FirstBalanceDecrease"> - Ha pagado [AMOUNT] L$. -Su balance se muestra en la esquina superior derecha de la pantalla. - </notification> - <notification name="FirstSit"> - Está sentado. -Use las teclas del cursor (o AWSD) para cambiar el punto de vista. -Pulde el botón 'Levantarse' para ponerse de pie. - </notification> - <notification name="FirstMap"> - Pulse el mapa y arrástrelo para desplazarlo. -Púlselo dos veces para teleportarse. -Use los controles de la derecha para encontrar sitios y mostrar diferentes fondos. - </notification> - <notification name="FirstBuild"> - Usted puede construir objetos nuevos en algunas zonas de [SECOND_LIFE]. -Use las herramientas de arriba a la izquierda para construir, y pruebe a cambiar rápidamente entre ellas pulsando Ctrl o Alt. -Pulse Esc para dejar de construir. - </notification> - <notification name="FirstLeftClickNoHit"> - En algunos objetos concretos, al pulsarlos con el botón izquierdo del ratón interacciona con ellos. -Si el puntero del ratón pasa a ser una mano puede interactuar con el objeto. -El botón derecho del ratón siempre muestra un menú con cosas que usted puede hacer. + <notification name="ScriptToast"> + El '[TITLE]' de [FIRST] [LAST] está esperando una respuesta del usuario. + <form name="form"> + <button name="Open" text="Abrir el diálogo"/> + <button name="Ignore" text="Ignorar"/> + <button name="Block" text="Ignorar"/> + </form> </notification> - <notification name="FirstTeleport"> - Esta región no permite teleportarse de un punto a otro, por lo que ha sido llevado al Punto de Teleporte más cercano. -Su destinado está señalado con una columna de luz roja. -Siga la flecha roja hasta llegar a la columna, o pulse la flecha para hacerla desaparecer. + <notification name="BuyLindenDollarSuccess"> + ¡Gracias por tu pago! + +Tu saldo de L$ se actualizará cuando se complete el proceso. Si el proceso tarda más de 20 minutos, se cancelará tu transacción, y la cantidad se cargará en tu saldo de US$. + +Puedes revisar el estado de tu pago en el Historial de transacciones de tu [http://secondlife.com/account/ Panel de Control] </notification> <notification name="FirstOverrideKeys"> A partir de ahora, sus teclas de movimiento las gestiona un objeto. Pruebe las teclas del cursor o AWSD para ver qué hacen. Algunos objetos (las pistolas, por ejemplo) le pedirán que, para usarlos, entre usted en vista subjetiva. Pulse 'M' para hacerlo. </notification> - <notification name="FirstAppearance"> - Está modificando su apariencia. -Use las teclas del cursor para girar el punto de vista y hacer zoom. -Cuando acabe, pulse 'Guardar todo' para salvar su apariencia y salir del modificarla. -Puede modificar su apariencia tantas veces como quiera. - </notification> - <notification name="FirstInventory"> - Este es su inventario. Tiene objetos, notas, ropas, y otras cosas de su propiedad. -* Para vestirse un objeto o un vestuario completo, arrástrelo hasta usted mismo. -* Para colocar un objeto en el mundo, arrástrelo hasta el suelo. -* Para leer una nota, pulse dos veces en ella. - </notification> <notification name="FirstSandbox"> - Esta es una región 'sandbox' (zona de pruebas). -Los objetos que construya aquí pueden ser eliminados cuando salga de esta zona, pues los sandbox se limpian regularmente. Por favor, tenga en cuenta la información que hay arriba de su pantalla junto al nombre de la región. + Esta es una región 'sandbox' (zona de pruebas) donde los Residentes pueden aprender a construir. -Las regiones sandbox no son frecuentes, y están señalizadas. - </notification> - <notification name="FirstFlexible"> - Este objeto es flexible. -Los objetos flexibles no pueden ser materiales, y serán inmateriales hasta que se desmarque la casilla de flexibles. - </notification> - <notification name="FirstDebugMenus"> - Ha activado el menú Avanzado. -Contiene herramientas útiles para los desarrolladores que trabajan mejorando [SECOND_LIFE]. -Para pasar este menú a una ventana, pulse Ctrl+Alt+D. En un Mac, pulse ⌥⌘D. - </notification> - <notification name="FirstSculptedPrim"> - Está editando un prim 'sculpted'. -Los prim sculpted requieren una textura especial para tomar forma. -Puede encontrar ejemplos de texturas sculpted en la biblioteca del inventario. - </notification> - <notification name="FirstMedia"> - Ha empezado a reproducir media. Puede hacer que los media se reproduzcan automáticamente en la pestaña Audio y Vídeo de la ventana de preferencias. Note que tal cosa puede suponer un riesgo de seguridad en los sitios multimedia en los que no confíe. +Los objetos que construyas aquí serán eliminados cuando la abandones; por tanto, no olvides pulsarlos con el botón derecho y elegir 'Tomar' para que tu creación vaya a tu inventario. </notification> <notification name="MaxListSelectMessage"> Puede seleccionar un máximo de [MAX_SELECT] ítems de esta lista. </notification> <notification name="VoiceInviteP2P"> - [NAME] le está invitando a un chat de voz. -Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a quien llama. + [NAME] te está invitando a un chat de voz. +Pulsa Aceptar o Rehusar para coger o no la llamada. Pulsa Ignorar para ignorar al que llama. <form name="form"> <button name="Accept" text="Aceptar"/> <button name="Decline" text="Rehusar"/> @@ -2949,17 +2462,17 @@ Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Puls </form> </notification> <notification name="AutoUnmuteByIM"> - [FIRST] [LAST], a quien ha enviado un mensaje instantáneo, ha dejado automáticamente de estar ignorado. + [FIRST] [LAST] ha dejado automáticamente de estar ignorado al enviarle un mensaje instantáneo. </notification> <notification name="AutoUnmuteByMoney"> - [FIRST] [LAST], a quien ha dado dinero, ha dejado automáticamente de estar ignorado. + [FIRST] [LAST] ha dejado automáticamente de estar ignorado al darle dinero. </notification> <notification name="AutoUnmuteByInventory"> - [FIRST] [LAST], a quien ha ofrecido algo del inventario, ha dejado automáticamente de estar ignorado. + [FIRST] [LAST] ha dejado automáticamente de estar ignorado al ofrecerle algo del inventario. </notification> <notification name="VoiceInviteGroup"> [NAME] ha empezado un chat de voz con el grupo [GROUP]. -Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a quien llama. +Pulsa Aceptar o Rehusar para coger o no la llamada. Pulsa Ignorar para ignorar al que llama. <form name="form"> <button name="Accept" text="Aceptar"/> <button name="Decline" text="Rehusar"/> @@ -2968,7 +2481,7 @@ Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Puls </notification> <notification name="VoiceInviteAdHoc"> [NAME] ha empezado un chat de voz en multiconferencia. -Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a este usuario. +Pulsa Aceptar o Rehusar para coger o no la llamada. Pulsa Ignorar para ignorar al que llama. <form name="form"> <button name="Accept" text="Aceptar"/> <button name="Decline" text="Rehusar"/> @@ -2976,8 +2489,8 @@ Pulse Aceptar para coger la llamada o Rehusar para declinar la invitación. Puls </form> </notification> <notification name="InviteAdHoc"> - [NAME] le está invitando a un chat en multiconferencia. -Pulse Aceptar para entrar al chat o Rehusar para declinar la invitación. Pulse Ignorar para ignorar a este usuario. + NAME] te está invitando a un chat en multiconferencia. +Pulsa Aceptar o Rehusar para coger o no la llamada. Pulsa Ignorar para ignorar al que llama. <form name="form"> <button name="Accept" text="Aceptar"/> <button name="Decline" text="Rehusar"/> @@ -2991,25 +2504,25 @@ Pulse Aceptar para entrar al chat o Rehusar para declinar la invitación. Pulse Lo sentimos. Este área ha llegado a su capacidad máxima de conversaciones por voz. Por favor, intente usar la voz en otra zona. </notification> <notification name="VoiceChannelDisconnected"> - Ha sido desconectado del [VOICE_CHANNEL_NAME]. Va a ser reconectado al chat de voz del mundo. + Has sido desconectado de [VOICE_CHANNEL_NAME]. Vas a ser reconectado al chat de voz. </notification> <notification name="VoiceChannelDisconnectedP2P"> - [VOICE_CHANNEL_NAME] ha colgado la llamada. Usted va a ser reconectado al chat de voz del mundo. + [VOICE_CHANNEL_NAME] ha colgado la llamada. Vas a ser reconectado al chat de voz. </notification> <notification name="P2PCallDeclined"> - [VOICE_CHANNEL_NAME] ha rehusado su llamada. Usted va a ser reconectado al chat de voz del mundo. + [VOICE_CHANNEL_NAME] ha rehusado tu llamada. Vas a ser reconectado al chat de voz. </notification> <notification name="P2PCallNoAnswer"> - [VOICE_CHANNEL_NAME] no está disponible para coger su llamada. Usted va a ser reconectado al chat de voz del mundo. + [VOICE_CHANNEL_NAME] no está disponible para coger tu llamada. Vas a ser reconectado al chat de voz. </notification> <notification name="VoiceChannelJoinFailed"> - Fallo al conectar al [VOICE_CHANNEL_NAME]; por favor, inténtelo más tarde. Usted va a ser reconectado al chat de voz del mundo. + Fallo al conectar a [VOICE_CHANNEL_NAME]; por favor, inténtalo más tarde. Vas a ser reconectado al chat de voz. </notification> <notification name="VoiceLoginRetry"> Estamos creando un canal de voz para usted. Se puede tardar hasta un minuto. </notification> <notification name="Cannot enter parcel: not a group member"> - No puede entrar en esta parcela, no es miembro del grupo adecuado. + Sólo los miembros de un grupo determinado pueden visitar esta zona. </notification> <notification name="Cannot enter parcel: banned"> No puede entrar en esta parcela, se le ha prohibido el acceso. @@ -3024,18 +2537,62 @@ Pulse Aceptar para entrar al chat o Rehusar para declinar la invitación. Pulse Ha ocurrido un error intentando conectarle al [VOICE_CHANNEL_NAME]. Por favor, inténtelo más tarde. </notification> <notification name="ServerVersionChanged"> - La región en la que ha entrado se ejecuta en un simulador con una versión diferente. Pulse este mensaje para ver más detalles. + Acabas de entrar en una región que usa un servidor con una versión distinta, y esto puede influir en el funcionamiento. [[URL] Ver las notas de desarrollo]. + </notification> + <notification name="UnsupportedCommandSLURL"> + No se admite el formato de la SLurl que has pulsado. + </notification> + <notification name="BlockedSLURL"> + Por tu seguridad, se ha bloqueado una SLurl recibida de un navegador no de confianza. </notification> - <notification name="UnableToOpenCommandURL"> - No puede abrirse desde este navegador la URL que ha pulsado. + <notification name="ThrottledSLURL"> + En muy poco tiempo, se han recibido muchas SLurls desde un navegador que no es de confianza. +Por tu seguridad, serán bloqueadas durante unos segundos. + </notification> + <notification name="IMToast"> + [MESSAGE] + <form name="form"> + <button name="respondbutton" text="Responder"/> + </form> + </notification> + <notification name="ConfirmCloseAll"> + ¿Seguro que quieres cerrar todos los MI? + <usetemplate name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="AttachmentSaved"> + Se ha guardado el adjunto. + </notification> + <notification name="UnableToFindHelpTopic"> + No se ha podido encontrar un tema de ayuda para este elemento. + </notification> + <notification name="ObjectMediaFailure"> + Error del servidor: fallo en la actualización u obtención de los media. +'[ERROR]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TextChatIsMutedByModerator"> + Un moderador ha silenciado tu chat de texto. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="VoiceIsMutedByModerator"> + Un moderador ha silenciado tu voz. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmClearTeleportHistory"> + ¿Estás seguro de que quieres borrar tu historial de teleportes? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="BottomTrayButtonCanNotBeShown"> + El botón elegido no se puede mostrar correctamente. +Se mostrará cuando tenga suficiente espacio. </notification> <global name="UnsupportedCPU"> - La velocidad de su CPU no cumple los requerimientos mínimos. </global> <global name="UnsupportedGLRequirements"> - Parece que no tiene los requerimientos de hardware apropiados para [APP_NAME]. [APP_NAME] requiere una tarjeta gráfica OpenGL que admita texturas múltiples ('multitexture support'). Si la tiene, compruebe que tiene los últimos drivers para su tarjeta gráfica, así como los últimos parches y 'service packs' para su sistema operativo. + Parece que no tienes el hardware apropiado para [APP_NAME]. [APP_NAME] requiere una tarjeta gráfica OpenGL que admita texturas múltiples ('multitexture support'). Si la tienes, comprueba que tienes los últimos 'drivers' para tu tarjeta gráfica, así como los últimos parches y 'service packs' para tu sistema operativo. -Si los problemas persisten, por favor, acuda a: http://www.secondlife.com/support +Si los problemas persisten, por favor, acude a [SUPPORT_SITE]. </global> <global name="UnsupportedCPUAmount"> 796 @@ -3049,10 +2606,8 @@ Si los problemas persisten, por favor, acuda a: http://www.secondlife.com/suppor <global name="UnsupportedRAM"> - La memoria de su sistema no cumple los requerimientos mínimos. </global> - <global name="PermYes"> - Sí - </global> - <global name="PermNo"> - No + <global name="You can only set your 'Home Location' on your land or at a mainland Infohub."> + Si posees un terreno, puedes hacerlo tu Base. +También puedes buscar en el Mapa lugares marcados como "Puntos de Información". </global> </notifications> diff --git a/indra/newview/skins/default/xui/es/panel_active_object_row.xml b/indra/newview/skins/default/xui/es/panel_active_object_row.xml new file mode 100644 index 0000000000..8d4fadb101 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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"> + Objeto desconocido + </string> + <text name="object_name"> + Objeto sin nombre + </text> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml new file mode 100644 index 0000000000..c64a93e0e5 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_adhoc_control_panel.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_panel"> + <layout_stack name="vertical_stack"> + <layout_panel name="call_btn_panel"> + <button label="Llamar" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Colgar" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Controles de la voz" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml new file mode 100644 index 0000000000..e1ffc14823 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="avatar_list_item"> + <string name="FormatSeconds"> + [COUNT] seg. + </string> + <string name="FormatMinutes"> + [COUNT] min. + </string> + <string name="FormatHours"> + [COUNT] h. + </string> + <string name="FormatDays"> + [COUNT] d. + </string> + <string name="FormatWeeks"> + [COUNT] sem. + </string> + <string name="FormatMonths"> + [COUNT] mes/es + </string> + <string name="FormatYears"> + [COUNT] año/s + </string> + <text name="avatar_name" value="Desconocido"/> + <button name="profile_btn" tool_tip="Ver el perfil"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/es/panel_block_list_sidetray.xml new file mode 100644 index 0000000000..7c11b3d193 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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 de ignorados + </text> + <scroll_list name="blocked" tool_tip="Lista de los residentes ignorados actualmente"/> + <button label="Ignorar al residente..." label_selected="Ignorar al residente..." name="Block resident..." tool_tip="Elige a un Residente para ignorarle"/> + <button label="Ignorar objetos según el nombre..." label_selected="Ignorar objetos según el nombre..." name="Block object by name..."/> + <button label="No ignorar" label_selected="No ignorar" name="Unblock" tool_tip="Quitar al Residente o al objeto de la lista de ignorados"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_bottomtray.xml b/indra/newview/skins/default/xui/es/panel_bottomtray.xml new file mode 100644 index 0000000000..74dc17f3de --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_bottomtray.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="bottom_tray"> + <string name="SpeakBtnToolTip"> + Activa/Desactiva el micrófono + </string> + <string name="VoiceControlBtnToolTip"> + Muestra/Oculta el panel del control de voz + </string> + <layout_stack name="toolbar_stack"> + <layout_panel name="speak_panel"> + <talk_button name="talk"> + <speak_button label="Hablar" label_selected="Hablar" name="speak_btn"/> + </talk_button> + </layout_panel> + <layout_panel name="gesture_panel"> + <gesture_combo_list label="Gestos" name="Gesture" tool_tip="Muestra/Oculta los gestos"/> + </layout_panel> + <layout_panel name="movement_panel"> + <button label="Moverme" name="movement_btn" tool_tip="Muestra/Oculta los controles del movimiento"/> + </layout_panel> + <layout_panel name="cam_panel"> + <button label="Visión" name="camera_btn" tool_tip="Muestra/Oculta los controles de la cámara"/> + </layout_panel> + <layout_panel name="snapshot_panel"> + <button label="" name="snapshots" tool_tip="Hacer una foto"/> + </layout_panel> + <layout_panel name="im_well_panel"> + <chiclet_im_well name="im_well"> + <button name="Unread IM messages" tool_tip="Conversaciones"/> + </chiclet_im_well> + </layout_panel> + <layout_panel name="notification_well_panel"> + <chiclet_notification name="notification_well"> + <button name="Unread" tool_tip="Notificaciones"/> + </chiclet_notification> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/es/panel_bottomtray_lite.xml new file mode 100644 index 0000000000..8d1b84a5fd --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_bottomtray_lite.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="bottom_tray_lite"> + <layout_stack name="toolbar_stack_lite"> + <layout_panel name="gesture_panel"> + <gesture_combo_list label="Gestos" name="Gesture" tool_tip="Muestra/Oculta los gestos"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_classified_info.xml b/indra/newview/skins/default/xui/es/panel_classified_info.xml new file mode 100644 index 0000000000..d46eadde48 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_classified_info.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_classified_info"> + <panel.string name="l$_price"> + [PRICE] L$ + </panel.string> + <text name="title" value="Información del clasificado"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text_editor name="classified_name" value="[nombre]"/> + <text_editor name="classified_location" value="[cargando...]"/> + <text_editor name="content_type" value="[tipo de contenido]"/> + <text_editor name="category" value="[categoría]"/> + <check_box label="Renovar automáticamente cada semana" name="auto_renew"/> + <text_editor name="price_for_listing" tool_tip="Precio por publicarlo."/> + <text_editor name="classified_desc" value="[descripción]"/> + </panel> + </scroll_container> + <panel name="buttons"> + <button label="Teleportar" name="teleport_btn"/> + <button label="Mapa" name="show_on_map_btn"/> + <button label="Editar" name="edit_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_alpha.xml b/indra/newview/skins/default/xui/es/panel_edit_alpha.xml new file mode 100644 index 0000000000..3f238da9d0 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Alfa inferior" name="Lower Alpha" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Alfa superior" name="Upper Alpha" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Alfa de la cabeza" name="Head Alpha" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Alfa de los ojos" name="Eye Alpha" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Alfa del pelo" name="Hair Alpha" tool_tip="Pulsa para elegir una imagen"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_classified.xml b/indra/newview/skins/default/xui/es/panel_edit_classified.xml new file mode 100644 index 0000000000..e612104b3f --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_edit_classified.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Editar el clasificado" name="panel_edit_classified"> + <panel.string name="location_notice"> + (se actualizará tras guardarlo) + </panel.string> + <text name="title"> + Editar el clasificado + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="Pulsa para elegir una imagen"/> + <text name="Name:"> + Título: + </text> + <text name="description_label"> + Descripción: + </text> + <text name="location_label"> + Localización: + </text> + <text name="classified_location"> + cargando... + </text> + <button label="Configurarlo en esta localización" name="set_to_curr_location_btn"/> + <spinner label="L$" name="price_for_listing" tool_tip="Precio por publicarlo." value="50"/> + <check_box label="Renovar automáticamente cada semana" name="auto_renew"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="Guardar" name="save_changes_btn"/> + <button label="Cancelar" name="cancel_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_eyes.xml b/indra/newview/skins/default/xui/es/panel_edit_eyes.xml new file mode 100644 index 0000000000..e33848554d --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Iris" name="Iris" tool_tip="Pulsa para elegir una imagen"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="eyes_main_tab" title="Ojos"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_gloves.xml b/indra/newview/skins/default/xui/es/panel_edit_gloves.xml new file mode 100644 index 0000000000..397322466c --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="gloves_main_tab" title="Guantes"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_hair.xml b/indra/newview/skins/default/xui/es/panel_edit_hair.xml new file mode 100644 index 0000000000..49cc8ce98c --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Textura" name="Texture" tool_tip="Pulsa para elegir una imagen"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="hair_color_tab" title="Color"/> + <accordion_tab name="hair_style_tab" title="Estilo"/> + <accordion_tab name="hair_eyebrows_tab" title="Cejas"/> + <accordion_tab name="hair_facial_tab" title="Facial"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_jacket.xml b/indra/newview/skins/default/xui/es/panel_edit_jacket.xml new file mode 100644 index 0000000000..abee993aec --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Tejido superior" name="Upper Fabric" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Tejido inferior" name="Lower Fabric" tool_tip="Pulsa para elegir una imagen"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="jacket_main_tab" title="Chaqueta"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_pants.xml b/indra/newview/skins/default/xui/es/panel_edit_pants.xml new file mode 100644 index 0000000000..80eb5f0de0 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="pants_main_tab" title="Pantalones"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_pick.xml b/indra/newview/skins/default/xui/es/panel_edit_pick.xml new file mode 100644 index 0000000000..839e9c6023 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_edit_pick.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Editar el destacado" name="panel_edit_pick"> + <text name="title"> + Editar el destacado + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="Pulsa para elegir una imagen"/> + <text name="Name:"> + Título: + </text> + <text name="description_label"> + Descripción: + </text> + <text name="location_label"> + Posición: + </text> + <text name="pick_location"> + cargando... + </text> + <button label="Configurar en la posición actual" name="set_to_curr_location_btn"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="Guardar [WHAT]" name="save_changes_btn"/> + <button label="Cancelar" name="cancel_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_profile.xml b/indra/newview/skins/default/xui/es/panel_edit_profile.xml index c12dd8d58c..e7bd7aba17 100644 --- a/indra/newview/skins/default/xui/es/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_profile.xml @@ -1,45 +1,51 @@ -<?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="Prueba" /> - <string name="AcctTypeCharterMember" - value="Miembro fundador" /> - <string name="AcctTypeEmployee" - value="Empleado de Linden Lab" /> - <string name="PaymentInfoUsed" - value="Ha usado una forma de pago" /> - <string name="PaymentInfoOnFile" - value="Hay infor. de la forma de pago" /> - <string name="NoPaymentInfoOnFile" - value="Sin infor. de la forma de pago" /> - <string name="AgeVerified" - value="Edad verificada" /> - <string name="NotAgeVerified" - value="Edad no verificada" /> - <string name="partner_edit_link_url"> - http://www.secondlife.com/account/partners.php?lang=es - </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="Compañero/a:"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="text_box3"> - Mensaje en el estado ocupado: - </text> - </panel> - </panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Editar el perfil" name="edit_profile_panel"> + <string name="CaptionTextAcctInfo"> + [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] + </string> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) + </string> + <string name="AcctTypeResident" value="Residente"/> + <string name="AcctTypeTrial" value="Prueba"/> + <string name="AcctTypeCharterMember" value="Miembro fundador"/> + <string name="AcctTypeEmployee" value="Empleado de Linden Lab"/> + <string name="PaymentInfoUsed" value="Ha usado una forma de pago"/> + <string name="PaymentInfoOnFile" value="Hay infor. de la forma de pago"/> + <string name="NoPaymentInfoOnFile" value="Sin infor. de la forma de pago"/> + <string name="AgeVerified" value="Edad verificada"/> + <string name="NotAgeVerified" value="Edad no verificada"/> + <string name="partner_edit_link_url"> + http://www.secondlife.com/account/partners.php?lang=es + </string> + <string name="no_partner_text" value="Ninguno"/> + <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="Pulsa para elegir una imagen"/> + </panel> + <panel name="first_life_image_panel"> + <text name="real_world_photo_title_text" value="Mundo real:"/> + </panel> + <icon label="" name="real_world_edit_icon" tool_tip="Pulsa para elegir una imagen"/> + <text name="title_homepage_text"> + Web: + </text> + <check_box label="Mostrarme en los resultados de la búsqueda" name="show_in_search_checkbox"/> + <text name="title_acc_status_text" value="Mi cuenta:"/> + <text_editor name="acc_status_text" value="Residente. No ha aportado información de pago."/> + <text name="my_account_link" value="[[URL] Ir a mi Panel de Control]"/> + <text name="title_partner_text" value="Mi compañero/a:"/> + <panel name="partner_data_panel"> + <name_box initial_value="(obteniendo)" name="partner_text"/> + </panel> + <text name="partner_edit_link" value="[[URL] Editar]"/> + </panel> + </panel> + </scroll_container> + <panel name="profile_me_buttons_panel"> + <button label="Guardar cambios" name="save_btn"/> + <button label="Cancelar" name="cancel_btn"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_shape.xml b/indra/newview/skins/default/xui/es/panel_edit_shape.xml new file mode 100644 index 0000000000..8a9ac0e9ec --- /dev/null +++ b/indra/newview/skins/default/xui/es/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"> + Sexo: + </text> + <radio_group name="sex_radio"> + <radio_item label="Mujer" name="radio"/> + <radio_item label="Varón" name="radio2"/> + </radio_group> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shape_body_tab" title="Cuerpo"/> + <accordion_tab name="shape_head_tab" title="Cabeza"/> + <accordion_tab name="shape_eyes_tab" title="Ojos"/> + <accordion_tab name="shape_ears_tab" title="Orejas"/> + <accordion_tab name="shape_nose_tab" title="Nariz"/> + <accordion_tab name="shape_mouth_tab" title="Boca"/> + <accordion_tab name="shape_chin_tab" title="Barbilla"/> + <accordion_tab name="shape_torso_tab" title="Torso"/> + <accordion_tab name="shape_legs_tab" title="Piernas"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_shirt.xml b/indra/newview/skins/default/xui/es/panel_edit_shirt.xml new file mode 100644 index 0000000000..6d65660409 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shirt_main_tab" title="Camisa"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_shoes.xml b/indra/newview/skins/default/xui/es/panel_edit_shoes.xml new file mode 100644 index 0000000000..e613b1809d --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shoes_main_tab" title="Zapatos"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_skin.xml b/indra/newview/skins/default/xui/es/panel_edit_skin.xml new file mode 100644 index 0000000000..2d9e556a4a --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Tatuajes de la cabeza" name="Head Tattoos" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Tatuajes superiores" name="Upper Tattoos" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Tatuajes inferiores" name="Lower Tattoos" tool_tip="Pulsa para elegir una imagen"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skin_color_tab" title="Color de la piel"/> + <accordion_tab name="skin_face_tab" title="Detalles faciales"/> + <accordion_tab name="skin_makeup_tab" title="Maquillaje"/> + <accordion_tab name="skin_body_tab" title="Detalles del cuerpo"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_skirt.xml b/indra/newview/skins/default/xui/es/panel_edit_skirt.xml new file mode 100644 index 0000000000..c8e25d38a9 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skirt_main_tab" title="Falda"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_socks.xml b/indra/newview/skins/default/xui/es/panel_edit_socks.xml new file mode 100644 index 0000000000..d65f119da7 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="socks_main_tab" title="Calcetines"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/es/panel_edit_tattoo.xml new file mode 100644 index 0000000000..e5e72a11e4 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Tatuaje de la cabeza" name="Head Tattoo" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Tatuaje superior" name="Upper Tattoo" tool_tip="Pulsa para elegir una imagen"/> + <texture_picker label="Tatuaje inferior" name="Lower Tattoo" tool_tip="Pulsa para elegir una imagen"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_underpants.xml b/indra/newview/skins/default/xui/es/panel_edit_underpants.xml new file mode 100644 index 0000000000..ea446c1625 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="underpants_main_tab" title="Ropa interior"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/es/panel_edit_undershirt.xml new file mode 100644 index 0000000000..92e42657a4 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Tela" name="Fabric" tool_tip="Pulsa para elegir una imagen"/> + <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="undershirt_main_tab" title="Camiseta"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_wearable.xml b/indra/newview/skins/default/xui/es/panel_edit_wearable.xml new file mode 100644 index 0000000000..6d48b77d3c --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_edit_wearable.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Se puede poner" name="panel_edit_wearable"> + <string name="edit_shape_title"> + Modificando la anatomía + </string> + <string name="edit_skin_title"> + Modificando la piel + </string> + <string name="edit_hair_title"> + Modificando el pelo + </string> + <string name="edit_eyes_title"> + Modificando los ojos + </string> + <string name="edit_shirt_title"> + Modificando la camisa + </string> + <string name="edit_pants_title"> + Modificando los pantalones + </string> + <string name="edit_shoes_title"> + Modificando los zapatos + </string> + <string name="edit_socks_title"> + Modificando los calcetines + </string> + <string name="edit_jacket_title"> + Modificando la chaqueta + </string> + <string name="edit_skirt_title"> + Modificando la falda + </string> + <string name="edit_gloves_title"> + Modificando los guantes + </string> + <string name="edit_undershirt_title"> + Modificando la camiseta + </string> + <string name="edit_underpants_title"> + Modificando la ropa interior + </string> + <string name="edit_alpha_title"> + Modificando la capa Alfa + </string> + <string name="edit_tattoo_title"> + Modificando los tatuajes + </string> + <string name="shape_desc_text"> + Anatomía: + </string> + <string name="skin_desc_text"> + Piel: + </string> + <string name="hair_desc_text"> + Pelo: + </string> + <string name="eyes_desc_text"> + Ojos: + </string> + <string name="shirt_desc_text"> + Camisa: + </string> + <string name="pants_desc_text"> + Pantalones: + </string> + <string name="shoes_desc_text"> + Zapatos: + </string> + <string name="socks_desc_text"> + Calcetines: + </string> + <string name="jacket_desc_text"> + Chaqueta: + </string> + <string name="skirt_skirt_desc_text"> + Falda: + </string> + <string name="gloves_desc_text"> + Guantes: + </string> + <string name="undershirt_desc_text"> + Camiseta: + </string> + <string name="underpants_desc_text"> + Ropa interior: + </string> + <string name="alpha_desc_text"> + Capa alfa: + </string> + <string name="tattoo_desc_text"> + Tatuaje: + </string> + <text name="edit_wearable_title" value="Modificando la anatomía"/> + <panel label="Camisa" name="wearable_type_panel"> + <text name="description_text" value="Anatomía:"/> + </panel> + <panel name="button_panel"> + <button label="Guardar como" name="save_as_button"/> + <button label="Revertir" name="revert_button"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_friends.xml b/indra/newview/skins/default/xui/es/panel_friends.xml index ea5c7d1e4f..0dc22c107b 100644 --- a/indra/newview/skins/default/xui/es/panel_friends.xml +++ b/indra/newview/skins/default/xui/es/panel_friends.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="friends"> <string name="Multiple"> - Varios amigos... + Varios amigos </string> <scroll_list name="friend_list" tool_tip="Para seleccionar a varios amigos, mantenga pulsado Ctrl o Mays. mientras les va pulsando."> <column name="icon_online_status" tool_tip="Estado de conexión"/> @@ -13,8 +13,8 @@ </scroll_list> <button label="MI/Llamada" name="im_btn" tool_tip="Abrir sesión de mensajes instantáneos"/> <button label="Perfil" name="profile_btn" tool_tip="Mostrar la imagen, los grupos, y otra información"/> - <button label="Teleportar..." name="offer_teleport_btn" tool_tip="Ofrecer a este amigo teleportarle hasta su posición"/> - <button label="Pagar..." name="pay_btn" tool_tip="Dar dólares Linden (L$) a este amigo"/> - <button label="Quitar..." name="remove_btn" tool_tip="Quitar a esta persona de su lista de amigos"/> - <button label="Añadir..." name="add_btn" tool_tip="Ofrecer ser mi amigo a un residente"/> + <button label="Teleporte" name="offer_teleport_btn" tool_tip="Ofrecer a este amigo teleportarle hasta su posición"/> + <button label="Pagar" name="pay_btn" tool_tip="Dar dólares Linden (L$) a este amigo"/> + <button label="Quitar" name="remove_btn" tool_tip="Quitar a esta persona de su lista de amigos"/> + <button label="Añadir" name="add_btn" tool_tip="Ofrece amistad a un Residente"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_group_control_panel.xml b/indra/newview/skins/default/xui/es/panel_group_control_panel.xml new file mode 100644 index 0000000000..82123016b1 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_group_control_panel.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_panel"> + <layout_stack name="vertical_stack"> + <layout_panel name="group_info_btn_panel"> + <button label="Perfil del grupo" name="group_info_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="Llamada de grupo" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Colgar" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Abrir los controles de la voz" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_group_general.xml b/indra/newview/skins/default/xui/es/panel_group_general.xml index 4fd5685b7d..66d0c5be93 100644 --- a/indra/newview/skins/default/xui/es/panel_group_general.xml +++ b/indra/newview/skins/default/xui/es/panel_group_general.xml @@ -1,72 +1,55 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="General" name="general_tab"> - <string name="help_text"> - La pestaña General contiene información global de este grupo, la lista de propietarios y miembros visibles, las preferencias generales del grupo, y las opciones de los miembros. + <panel.string name="help_text"> + La pestaña General tiene información general de este grupo, una lista de sus miembros, las preferencias generales del grupo y las opciones de sus miembros. -Ponga su ratón sobre las opciones para más información. - </string> - <string name="group_info_unchanged"> - La información general del grupo ha cambiado. - </string> - <button label="?" label_selected="?" name="help_button"/> - <line_editor label="Escriba aquí el nombre de su nuevo grupo" name="group_name_editor"/> - <text name="group_name"> - Escriba aquí el nombre de su nuevo grupo - </text> - <text name="prepend_founded_by"> - Creado por - </text> - <text name="founder_name"> - (esperando) - </text> - <text name="group_charter_label"> - Carta del grupo - </text> - <texture_picker label="Emblema del grupo" name="insignia" tool_tip="Pulse para elegir una imagen"/> +Deja el cursor sobre las opciones para ver más ayuda. + </panel.string> + <panel.string name="group_info_unchanged"> + Ha cambiado la información general del grupo + </panel.string> + <panel.string name="incomplete_member_data_str"> + Recuperando los datos de los miembros + </panel.string> + <panel name="group_info_top"> + <texture_picker label="" name="insignia" tool_tip="Pulsa para elegir una imagen"/> + <text name="prepend_founded_by"> + Fundador: + </text> + <name_box initial_value="(obteniendo)" name="founder_name"/> + <text name="join_cost_text"> + Gratis + </text> + <button label="¡ENTRA AHORA!" name="btn_join"/> + </panel> <text_editor name="charter"> Carta del grupo </text_editor> - <button label="Entrar (0 L$)" label_selected="Entrar (0 L$)" name="join_button"/> - <button label="Ver en detalle" label_selected="Ver en detalle" name="info_button"/> - <text name="text_owners_and_visible_members"> - Propietarios y Miembros visibles - </text> - <text name="text_owners_are_shown_in_bold"> - (los propietarios aparecen en negrilla) - </text> <name_list name="visible_members"> - <name_list.columns label="Nombre del miembro" name="name" relwidth="0.40"/> + <name_list.columns label="Miembro" name="name" relwidth="0.40"/> <name_list.columns label="Etiqueta" name="title" relwidth="0.25"/> - <name_list.columns label="Última conexión" name="online" relwidth="0.35"/> + <name_list.columns label="Estado" name="status"/> </name_list> - <text name="text_group_preferences"> - Preferencias del grupo + <text name="my_group_settngs_label"> + Yo </text> + <text name="active_title_label"> + Mi etiqueta: + </text> + <combo_box name="active_title" tool_tip="Configura la etiqueta que se verá sobre el nombre de tu avatar cuando tengas activo este grupo."/> + <check_box label="Recibir los avisos del grupo" name="receive_notices" tool_tip="Configura si quieres recibir avisos del grupo. Desmárcalo si este grupo te envía 'spam'."/> + <check_box label="Mostrarlo en mi perfil" name="list_groups_in_profile" tool_tip="Configura si quieres que este grupo se vea en tu perfil"/> <panel name="preferences_container"> - <check_box label="Mostrar en la búsqueda" name="show_in_group_list" tool_tip="Dejar que la gente vea este grupo en los resultados de la búsqueda."/> - <check_box label="Inscripción libre" name="open_enrollement" tool_tip="Definir si se admiten al grupo nuevos miembros sin que sea preciso invitárseles."/> - <check_box label="Cuota de inscripción:" name="check_enrollment_fee" tool_tip="Define si se requiere una cuota para entrar al grupo."/> - <spinner width="60" left_delta="130" name="spin_enrollment_fee" tool_tip="Cuando está marcado 'Cuota de inscripción', los miembros nuevos deben pagar esta cuota para entrar al grupo."/> - <combo_box bottom_delta="-38" width="150" name="group_mature_check" tool_tip="Establece si la información de su grupo es 'mature'."> - <combo_box.item name="select_mature" label="- Elegir Calificación -"/> - <combo_box.item name="mature" label="Contenido 'Mature'"/> - <combo_box.item name="pg" label="Contenido 'PG'"/> + <text name="group_settngs_label"> + Grupo + </text> + <check_box label="Cualquiera puede entrar" name="open_enrollement" tool_tip="Configura si se permite la entrada de nuevos miembros sin ser invitados."/> + <check_box label="Cuota de entrada" name="check_enrollment_fee" tool_tip="Configura si hay que pagar una cuota para entrar al grupo"/> + <spinner label="L$" left_delta="130" name="spin_enrollment_fee" tool_tip="Si la opción Cuota de entrada está marcada, los nuevos miembros han de pagar esta cuota para entrar al grupo." width="60"/> + <combo_box bottom_delta="-38" name="group_mature_check" tool_tip="Establece si la información de su grupo es 'mature'." width="150"> + <combo_box.item label="Contenido 'PG'" name="pg"/> + <combo_box.item label="Contenido 'Mature'" name="mature"/> </combo_box> - <panel name="title_container"> - <text name="active_title_label"> - Mi etiqueta activa - </text> - <combo_box name="active_title" tool_tip="Define la etiqueta que aparecerá sobre el nombre de su avatar cuando tenga activo este grupo."/> - </panel> - <check_box label="Recibir los avisos del grupo" name="receive_notices" tool_tip="Define si quiere recibir avisos de este grupo. Desmarque esto si el grupo le envía spam."/> - <check_box label="Mostrar el grupo en mi perfil" name="list_groups_in_profile" tool_tip="Define si quiere que este grupo aparezca en su perfil."/> + <check_box initial_value="true" label="Mostrar en la búsqueda" name="show_in_group_list" tool_tip="Permite que la gente vea este grupo en los resultados de la búsqueda"/> </panel> - <string name="incomplete_member_data_str"> - Recuperando los datos de los miembros - </string> - <string name="confirm_group_create_str"> - Crear este grupo cuesta 100 L$. -¿Está plena, absoluta, y TOTALMENTE seguro de que quiere gastarse 100 L$ para crear este grupo? -Queda avisado de que si, en un plazo de 48 horas, no entra nadie al grupo, éste será disuelto, y el nombre no se podrá usar en el futuro. - </string> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml new file mode 100644 index 0000000000..872dfb13d7 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Perfil del grupo" name="GroupInfo"> + <panel.string name="default_needs_apply_text"> + Hay cambios sin guardar + </panel.string> + <panel.string name="want_apply_text"> + ¿Quieres guardar estos cambios? + </panel.string> + <panel.string name="group_join_btn"> + Entrar ([AMOUNT] L$) + </panel.string> + <panel.string name="group_join_free"> + Gratis + </panel.string> + <panel name="group_info_top"> + <text name="group_name" value="(Cargando...)"/> + <line_editor label="Escribe aquí el nombre de tu nuevo grupo" name="group_name_editor"/> + </panel> + <layout_stack name="layout"> + <layout_panel name="group_accordions"> + <accordion name="groups_accordion"> + <accordion_tab name="group_general_tab" title="General"/> + <accordion_tab name="group_roles_tab" title="Roles"/> + <accordion_tab name="group_notices_tab" title="Avisos"/> + <accordion_tab name="group_land_tab" title="Terreno/Bienes"/> + </accordion> + </layout_panel> + <layout_panel name="button_row"> + <button label="Chat" name="btn_chat"/> + <button label="Llamar al grupo" name="btn_call" tool_tip="Llama a este grupo"/> + <button label="Guardar" label_selected="Guardar" name="btn_apply"/> + <button label="Crear un grupo" name="btn_create" tool_tip="Crea un grupo nuevo"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_group_invite.xml b/indra/newview/skins/default/xui/es/panel_group_invite.xml index f66f0c473a..2a64464fd9 100644 --- a/indra/newview/skins/default/xui/es/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/es/panel_group_invite.xml @@ -1,24 +1,27 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Invitar a un miembro" name="invite_panel" width="224"> - <text name="help_text" height="72" bottom_delta="-96" width="214"> - Puede seleccionar a varios residentes -para invitarles a su grupo. Para -empezar, pulse 'Abrir el selector de -residentes'. + <panel.string name="confirm_invite_owner_str"> + ¿Está seguro de que quiere invitar a un nuevo propietario/s? ¡Esta acción es permanente! + </panel.string> + <panel.string name="loading"> + (cargando...) + </panel.string> + <panel.string name="already_in_group"> + Alguno de los Residentes que has elegido ya están en el grupo: no se les enviará la invitación. + </panel.string> + <text bottom_delta="-96" height="72" name="help_text" width="214"> + Puedes elegir a varios Residentes para invitarles a tu grupo. Para empezar, pulsa 'Abrir el selector de residentes'. </text> <button bottom_delta="-10" label="Abrir el selector de residentes" name="add_button" tool_tip=""/> - <name_list height="156" bottom_delta="-160" name="invitee_list" tool_tip="Para seleccionar a varios residentes, mantenga pulsada la tecla Ctrl y vaya pulsando sus nombres."/> - <button left_delta="-7" width="214" label="Eliminar de la lista a los seleccionados" name="remove_button" tool_tip="Elimina los residentes seleccionados de la lista de invitaciones."/> + <name_list bottom_delta="-160" height="156" name="invitee_list" tool_tip="Para seleccionar a varios residentes, ve pulsando sus nombres mientras mantienes apretada la tecla Ctrl"/> + <button label="Eliminar de la lista a los seleccionados" left_delta="-7" name="remove_button" tool_tip="Quita de la lista a los Residentes seleccionados arriba" width="214"/> <text name="role_text"> Elegir qué rol asignarles: </text> - <combo_box name="role_name" tool_tip="Elige de la lista de roles cuál asignar a los miembros."/> + <combo_box name="role_name" tool_tip="Elige el rol de entre la lista de aquellos que estás autorizado a asignar"/> <button label="Enviar las invitaciones" name="ok_button"/> <button label="Cancelar" name="cancel_button"/> - <string name="confirm_invite_owner_str"> - ¿Está seguro de que quiere invitar a un nuevo propietario/s? ¡Esta acción es permanente! - </string> - <string name="loading"> - (cargando...) + <string name="GroupInvitation"> + Invitar al grupo </string> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_group_land_money.xml b/indra/newview/skins/default/xui/es/panel_group_land_money.xml index bccc114624..0e4288f772 100644 --- a/indra/newview/skins/default/xui/es/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/es/panel_group_land_money.xml @@ -1,85 +1,81 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Terreno y L$" name="land_money_tab"> - <string name="help_text"> - Se listan las parcelas propiedad del grupo, detallando las contribuciones. Aparece una advertencia si el Terreno total en uso es menor que o igual a la Contribución total. Las pestañas 'Planificación', 'Detalles' y 'Ventas' aportan información sobre las finanzas del grupo - </string> - <button label="?" name="help_button"/> - <string name="cant_view_group_land_text"> - No tiene permiso para ver qué terreno posee el grupo. - </string> - <string name="cant_view_group_accounting_text"> - No tiene permiso para ver la información de la cuenta del grupo. - </string> - <string name="loading_txt"> + <panel.string name="help_text"> + Aparece una advertencia si el Terreno total en uso es menor que o igual a la Contribución total. + </panel.string> + <panel.string name="cant_view_group_land_text"> + No tienes permiso para ver el terreno propiedad del grupo + </panel.string> + <panel.string name="cant_view_group_accounting_text"> + No tienes permiso para ver la información de la cuenta del grupo. + </panel.string> + <panel.string name="loading_txt"> Cargando... - </string> - <text name="group_land_heading" width="250"> - Terreno propiedad del grupo - </text> - <scroll_list name="group_parcel_list"> - <column label="Parcela" name="name" width="100"/> - <column label="Región" name="location" width="100"/> - <column label="Tipo" name="type" width="100"/> - <column label="Superficie" name="area" width="81"/> - <column label="" name="hidden"/> - </scroll_list> - <button label="Mostrar en el mapa" label_selected="Mostrar en el mapa" name="map_button" left="282" width="130"/> - <text name="total_contributed_land_label"> - Contribución total: - </text> - <text name="total_contributed_land_value"> - [AREA] m² - </text> - <text name="total_land_in_use_label"> - Terreno total en uso: - </text> - <text name="total_land_in_use_value"> - [AREA] m² - </text> - <text name="land_available_label"> - Terreno disponible: - </text> - <text name="land_available_value"> - [AREA] m² - </text> - <text name="your_contribution_label"> - Su contribución: - </text> - <string name="land_contrib_error"> - No se ha podido defininir su contribución de terreno. - </string> - <text name="your_contribution_units"> - ( m² ) - </text> - <text name="your_contribution_max_value"> - ([AMOUNT] máx.) - </text> - <text name="group_over_limit_text"> - Los miembros del grupo deben contribuir con más créditos de terreno -para mantener el terreno en uso. - </text> - <text name="group_money_heading"> - L$ del grupo - </text> + </panel.string> + <panel.string name="land_contrib_error"> + No se ha podido definir tu contribución de terreno + </panel.string> + <panel name="layout_panel_landmoney"> + <scroll_list name="group_parcel_list"> + <scroll_list.columns label="Parcela" name="name"/> + <scroll_list.columns label="Región" name="location"/> + <scroll_list.columns label="Tipo" name="type"/> + <scroll_list.columns label="Área" name="area"/> + </scroll_list> + <text name="total_contributed_land_label"> + Contribución total: + </text> + <text name="total_contributed_land_value"> + [AREA] m² + </text> + <button label="Mapa" label_selected="Mapa" name="map_button"/> + <text name="total_land_in_use_label"> + Terreno total en uso: + </text> + <text name="total_land_in_use_value"> + [AREA] m² + </text> + <text name="land_available_label"> + Terreno disponible: + </text> + <text name="land_available_value"> + [AREA] m² + </text> + <text name="your_contribution_label"> + Tu contribución: + </text> + <text name="your_contribution_units"> + m² + </text> + <text name="your_contribution_max_value"> + ([AMOUNT] máx.) + </text> + <text name="group_over_limit_text"> + Se necesitan más créditos de terreno para mantener el terreno en uso + </text> + <text name="group_money_heading"> + L$ del grupp + </text> + </panel> <tab_container name="group_money_tab_container"> - <panel label="Planificación" name="group_money_planning_tab"> + <panel label="RESUMEN" name="group_money_planning_tab"> <text_editor name="group_money_planning_text"> - Calculando... + Cargando... </text_editor> </panel> - <panel label="Detalles" name="group_money_details_tab"> + <panel label="DETALLES" name="group_money_details_tab"> <text_editor name="group_money_details_text"> - Calculando... + Cargando... </text_editor> - <button label="< Antes" label_selected="< Antes" name="earlier_details_button" tool_tip="Ir hacia atrás en el tiempo"/> - <button label="Después >" label_selected="Después >" name="later_details_button" tool_tip="Ir hacia adelante en el tiempo"/> + <button label="< Antes" label_selected="< Antes" name="earlier_details_button" tool_tip="Anterior"/> + <button label="Después >" label_selected="Después >" name="later_details_button" tool_tip="Siguiente"/> </panel> - <panel label="Ventas" name="group_money_sales_tab"> + <panel label="VENTAS" name="group_money_sales_tab"> <text_editor name="group_money_sales_text"> - Calculando... + Cargando... </text_editor> - <button label="< Antes" label_selected="< Antes" name="earlier_sales_button" tool_tip="Ir hacia atrás en el tiempo"/> - <button label="Después >" label_selected="Después >" name="later_sales_button" tool_tip="Ir hacia adelante en el tiempo"/> + <button label="< Antes" label_selected="< Antes" name="earlier_sales_button" tool_tip="Anterior"/> + <button label="Después >" label_selected="Después >" name="later_sales_button" tool_tip="Siguiente"/> </panel> </tab_container> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_group_list_item.xml b/indra/newview/skins/default/xui/es/panel_group_list_item.xml new file mode 100644 index 0000000000..5c9f1c3688 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_group_list_item.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="group_list_item"> + <text name="group_name" value="Desconocido"/> + <button name="profile_btn" tool_tip="Ver el perfil"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_group_notices.xml b/indra/newview/skins/default/xui/es/panel_group_notices.xml index c6788b3a65..f4a6839156 100644 --- a/indra/newview/skins/default/xui/es/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/es/panel_group_notices.xml @@ -1,35 +1,29 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Avisos" name="notices_tab"> - <text name="help_text"> + <panel.string name="help_text"> Los avisos son una forma rápida de comunicación dentro de un grupo, difundiendo un mensaje y, si se quiere, añadiéndole un ítem. Los avisos sólo los reciben los miembros del grupo cuyo rol tiene adjudicada tal habilidad. Puede desactivar los avisos en la pestaña General. - </text> - <text name="no_notices_text"> - No hay avisos pasados. - </text> - <button label="?" label_selected="?" name="help_button"/> - <text name="lbl"> - Archivo de avisos del grupo - </text> + </panel.string> + <panel.string name="no_notices_text"> + No hay avisos pasados + </panel.string> <text name="lbl2"> - Los avisos se mantienen durante 14 días. Las listas de avisos tienen un límite de 200 avisos por día. + Los avisos se mantienen durante 14 días. +El máximo es de 200 por día y grupo. </text> <scroll_list name="notice_list"> - <column label="Asunto" name="subject"/> - <column label="De" name="from"/> - <column label="Fecha" name="date"/> + <scroll_list.columns label="Asunto" name="subject"/> + <scroll_list.columns label="De" name="from"/> + <scroll_list.columns label="Fecha" name="date"/> </scroll_list> <text name="notice_list_none_found"> - No se han encontrado. + No se han encontrado </text> - <button label="Crear un aviso nuevo" label_selected="Crear un aviso nuevo" name="create_new_notice"/> - <button label="Actualizar" label_selected="Actualizar la lista" name="refresh_notices"/> + <button label="Crear un aviso nuevo" label_selected="Crear un aviso nuevo" name="create_new_notice" tool_tip="Crear un aviso nuevo"/> + <button label="Actualizar" label_selected="Actualizar la lista" name="refresh_notices" tool_tip="Actualizar la lista de avisos"/> <panel label="Crear un aviso nuevo" name="panel_create_new_notice"> <text name="lbl"> Crear un aviso </text> - <text name="lbl2"> - Puede añadir un ítem al aviso arrastrándolo desde su inventario a este panel. Los ítems anexados deben ser copiables y transferibles, y no se puede enviar una carpeta. - </text> <text name="lbl3"> Asunto: </text> @@ -39,16 +33,19 @@ <text name="lbl5"> Anexar: </text> - <button label="Remover lo anexado" label_selected="Remover lo anexado" name="remove_attachment"/> + <text name="string"> + Arrastra y suelta aquí un ítem para adjuntarlo: + </text> + <button label="Quitar" label_selected="Remover lo anexado" name="remove_attachment" tool_tip="Quitar el adjunto de tu aviso"/> <button label="Enviar" label_selected="Enviar" name="send_notice"/> - <panel name="drop_target" tool_tip="Para enviar un ítem con el aviso, arrástrelo desde su inventario hasta el cuadro del mensaje. Para poder enviar ese objeto con el aviso, usted debe tener permiso para copiarlo y transferirlo."/> + <group_drop_target name="drop_target" tool_tip="Para enviar un ítem con el aviso, arrástralo desde tu inventario hasta este cajetín. Para poder adjuntarlo, debes tener permiso para copiarlo y transferirlo."/> </panel> <panel label="Ver avisos pasados" name="panel_view_past_notice"> <text name="lbl"> Avisos archivados </text> <text name="lbl2"> - Pulse el botón 'Crear un aviso nuevo' para enviar uno nuevo. + Para enviar un aviso nuevo, pulsa el botón + </text> <text name="lbl3"> Asunto: @@ -56,6 +53,6 @@ <text name="lbl4"> Mensaje: </text> - <button label="Abrir lo anexado" label_selected="Abrir lo anexado" name="open_attachment"/> + <button label="Abrir el adjunto" label_selected="Abrir lo anexado" name="open_attachment"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_group_notify.xml b/indra/newview/skins/default/xui/es/panel_group_notify.xml new file mode 100644 index 0000000000..7bdacbd1e0 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Nombre del emisor / Nombre del grupo"/> + </panel> + <text name="attachment" value="Adjunto"/> + <button label="OK" name="btn_ok"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_group_roles.xml b/indra/newview/skins/default/xui/es/panel_group_roles.xml index 2739a3da5e..384864cba4 100644 --- a/indra/newview/skins/default/xui/es/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/es/panel_group_roles.xml @@ -1,158 +1,119 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Miembros y Roles" name="roles_tab"> - <string name="default_needs_apply_text"> - En esta pestaña hay cambios sin aplicar. - </string> - <string name="want_apply_text"> - ¿Quiere aplicar estos cambios? - </string> - <button label="?" name="help_button"/> - <panel name="members_header"> - <text name="static"> - Miembros y Roles - </text> - <text name="static2"> - Los miembros del grupo tienen asignados roles con distintas capacidades. -Estas configuraciones son fácilmente personalizables, para facilitar una -mayor flexibilidad y organización. - </text> - </panel> - <panel name="roles_header"> - <text name="static"> - Roles - </text> - <text name="role_properties_modifiable"> - Elija un rol de los de abajo. Puede modificar su nombre, su -descripción, y la etiqueta de los miembros. - </text> - <text name="role_properties_not_modifiable"> - Elija un rol de los de abajo para ver sus propiedades, miembros, y qué -capacidades tiene asignadas. - </text> - <text bottom_delta="-28" name="role_actions_modifiable"> - También puede asignar capacidades al rol. - </text> - <text name="role_actions_not_modifiable"> - Puede ver, pero no modificar, las capacidades asignadas. - </text> - </panel> - <panel name="actions_header"> - <text name="static"> - Capacidades - </text> - <text name="static2"> - Puede ver una descripción de la capacidad, y qué miembros y roles pueden -realizarla. - </text> - </panel> + <panel.string name="default_needs_apply_text"> + Hay cambios sin guardar + </panel.string> + <panel.string name="want_apply_text"> + ¿Quieres guardar estos cambios? + </panel.string> <tab_container height="164" name="roles_tab_container"> - <panel height="148" label="Miembros" name="members_sub_tab" tool_tip="Miembros"> - <line_editor bottom="127" name="search_text"/> - <button label="Buscar" name="search_button" width="75"/> - <button label="Verlos todos" name="show_all_button" left_delta="80"/> - <name_list name="member_list" bottom_delta="-105" height="104" > - <column label="Nombre del miembro" name="name"/> - <column label="Cuotas donadas" name="donated"/> - <column label="Última conexión" name="online"/> - </name_list> - <button label="Invitar a un nuevo miembro..." name="member_invite" width="175"/> - <button label="Expulsar del grupo" name="member_eject"/> - <string name="help_text"> + <panel height="148" label="MIEMBROS" name="members_sub_tab" tool_tip="Miembros"> + <panel.string name="help_text"> Puede añadir o quitar los roles asignados a los miembros. Seleccione varios nombres manteniendo pulsada la tecla Ctrl y pulsando en cada uno de ellos. - </string> + </panel.string> + <filter_editor label="Filtrar los miembros" name="filter_input"/> + <name_list bottom_delta="-105" height="104" name="member_list"> + <name_list.columns label="Miembro" name="name"/> + <name_list.columns label="Donaciones" name="donated"/> + <name_list.columns label="Estatus" name="online"/> + </name_list> + <button label="Invitar" name="member_invite" width="175"/> + <button label="Expulsar" name="member_eject"/> </panel> - <panel height="148" label="Roles" name="roles_sub_tab"> - <line_editor bottom="127" name="search_text"/> - <button label="Buscar" name="search_button" width="75"/> - <button label="Verlos todos" name="show_all_button" left_delta="80"/> - <scroll_list name="role_list" bottom_delta="-104" height="104"> - <column label="Nombre del rol" name="name"/> - <column label="Etiqueta" name="title"/> - <column label="Miembros" name="members"/> + <panel height="148" label="ROLES" name="roles_sub_tab"> + <panel.string name="help_text"> + Los roles tienen una etiqueta propia y unas capacidades que se +permiten ejercer a sus miembros. Los miembros pueden +tener más de un rol. Un grupo puede tener hasta 10 roles, +incluyendo el de Todos y el de Propietarios. + </panel.string> + <panel.string name="cant_delete_role"> + Los roles de 'Todos' y 'Propietarios' son especiales, y no pueden eliminarse. + </panel.string> + <panel.string name="power_folder_icon"> + Inv_FolderClosed + </panel.string> + <filter_editor label="Filtrar los roles" name="filter_input"/> + <scroll_list bottom_delta="-104" height="104" name="role_list"> + <scroll_list.columns label="Rol" name="name"/> + <scroll_list.columns label="Etiqueta" name="title"/> + <scroll_list.columns label="#" name="members"/> </scroll_list> - <button label="Crear un rol nuevo..." name="role_create"/> + <button label="Añadir un rol" name="role_create"/> <button label="Eliminar el rol" name="role_delete"/> - <string name="help_text"> - Los roles tienen una etiqueta y una serie de capacidades permitidas que los miembros pueden desarrollar. Los miembros pueden tener más de un rol. Un grupo puede tener hasta 10 roles, incluyendo el de Todos y el de Propietarios. - </string> - <string name="cant_delete_role"> - Los roles de 'Todos' y 'Propietarios' son especiales, y no pueden eliminarse. - </string> </panel> - <panel height="148" label="Capacidades" name="actions_sub_tab"> - <line_editor bottom="127" name="search_text"/> - <button label="Buscar" name="search_button" width="75"/> - <button label="Verlos todos" name="show_all_button" left_delta="80"/> - <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Elija una capacidad para verla más en detalle."> - <column label="" name="icon"/> - <column label="" name="action"/> - </scroll_list> - <string name="help_text"> + <panel height="148" label="CAPACIDADES" name="actions_sub_tab" tool_tip="Puedes ver una descripción de la capacidad y qué miembros y roles la tienen."> + <panel.string name="help_text"> Las capacidades permiten a los miembros que tienen ese rol el hacer tareas específicas dentro de este grupo. Hay una gran variedad de capacidades. - </string> + </panel.string> + <filter_editor label="Filtrar las capacidades" name="filter_input"/> + <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Elige una capacidad para verla más en detalle"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="action"/> + </scroll_list> </panel> </tab_container> <panel name="members_footer"> <text name="static"> Roles asignados </text> + <scroll_list name="member_assigned_roles"> + <scroll_list.columns label="" name="checkbox"/> + <scroll_list.columns label="" name="role"/> + </scroll_list> <text name="static2"> Capacidades permitidas </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="Para más detalles de cada capacidad permitida, vea la pestaña Capacidades."> - <column label="" name="icon"/> - <column label="" name="action"/> + <scroll_list name="member_allowed_actions" tool_tip="Para más detalles de cada capacidad, ver la pestaña Capacidades"> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="" name="action"/> </scroll_list> </panel> <panel name="roles_footer"> <text name="static"> - Nombre - </text> - <text name="static2"> - Descripción + Nombre del rol </text> <line_editor name="role_name"> Empleados </line_editor> <text name="static3"> - Etiqueta + Etiqueta del rol </text> <line_editor name="role_title"> (esperando) </line_editor> + <text name="static2"> + Descripción + </text> <text_editor name="role_description"> (esperando) </text_editor> <text name="static4"> - Miembros asignados + Roles asignados </text> + <check_box label="Mostrar los miembros" name="role_visible_in_list" tool_tip="Establece si los miembros de este rol pueden ser vistos en la pestaña General por personas ajenas al grupo."/> <text name="static5" tool_tip="Una lista de las capacidades que puede desarrollar el rol seleccionado actualmente."> Capacidades asignadas </text> - <check_box label="Los miembros son visibles." name="role_visible_in_list" tool_tip="Establece si los miembros de este rol pueden ser vistos en la pestaña General por personas ajenas al grupo."/> - <scroll_list name="role_allowed_actions" tool_tip="Para más detalles de cada capacidad permitida, vea la pestaña Capacidades."> - <column label="" name="icon"/> - <column label="" name="checkbox"/> - <column label="" name="action"/> + <scroll_list name="role_allowed_actions" tool_tip="Para más detalles de cada capacidad, ver la pestaña Capacidades"> + <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"> - Descripción + Descripción de la capacidad </text> <text_editor name="action_description"> Esta capacidad es la de 'Expulsar miembros de este grupo'. Sólo un propietario puede expulsar a otro. </text_editor> <text name="static2"> - Roles con la capacidad + Roles con esta capacidad </text> <text name="static3"> - Miembros con la capacidad + Miembros con esta capacidad </text> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_im_control_panel.xml b/indra/newview/skins/default/xui/es/panel_im_control_panel.xml new file mode 100644 index 0000000000..09969a796c --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_im_control_panel.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_panel"> + <layout_stack name="button_stack"> + <layout_panel name="view_profile_btn_panel"> + <button label="Perfil" name="view_profile_btn"/> + </layout_panel> + <layout_panel name="add_friend_btn_panel"> + <button label="Añadir como amigo" name="add_friend_btn"/> + </layout_panel> + <layout_panel name="teleport_btn_panel"> + <button label="Teleportar" name="teleport_btn" tool_tip="Ofrecer teleporte a esta persona"/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="Compartir" name="share_btn"/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="Pagar" name="pay_btn"/> + </layout_panel> + <layout_panel name="call_btn_panel"> + <button label="Llamar" name="call_btn"/> + </layout_panel> + <layout_panel name="end_call_btn_panel"> + <button label="Colgar" name="end_call_btn"/> + </layout_panel> + <layout_panel name="voice_ctrls_btn_panel"> + <button label="Controles de la voz" name="voice_ctrls_btn"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_landmark_info.xml b/indra/newview/skins/default/xui/es/panel_landmark_info.xml new file mode 100644 index 0000000000..49a9f84cfe --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_landmark_info.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="landmark_info"> + <string name="title_create_landmark" value="Crear un hito"/> + <string name="title_edit_landmark" value="Editar el hito"/> + <string name="title_landmark" value="Hito"/> + <string name="not_available" value="(No disp.)"/> + <string name="unknown" value="(desconocidas)"/> + <string name="public" value="(público)"/> + <string name="server_update_text"> + Los datos de este lugar no están disponibles sin una actualización del servidor. + </string> + <string name="server_error_text"> + Los datos de este lugar no están disponibles por el momento. Por favor, prueba más tarde. + </string> + <string name="server_forbidden_text"> + Por restricciones en el acceso, los datos de esta localización no están disponibles. Por favor, revisa tus permisos con el propietario de la parcela. + </string> + <string name="acquired_date"> + [wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local] + </string> + <button name="back_btn" tool_tip="Atrás"/> + <text name="title" value="Añadir el perfil"/> + <scroll_container name="place_scroll"> + <panel name="scrolling_panel"> + <text name="maturity_value" value="desconocido"/> + <panel name="landmark_info_panel"> + <text name="owner_label" value="Propietario:"/> + <text name="creator_label" value="Creador:"/> + <text name="created_label" value="Creado:"/> + </panel> + <panel name="landmark_edit_panel"> + <text name="title_label" value="Título:"/> + <text name="notes_label" value="Mis notas:"/> + <text name="folder_label" value="Localización del hito:"/> + </panel> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_landmarks.xml b/indra/newview/skins/default/xui/es/panel_landmarks.xml new file mode 100644 index 0000000000..8f476403c7 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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 de favoritos"/> + <accordion_tab name="tab_landmarks" title="Mis hitos"/> + <accordion_tab name="tab_inventory" title="Mi Inventario"/> + <accordion_tab name="tab_library" title="Biblioteca"/> + </accordion> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Ver más opciones"/> + <button name="add_btn" tool_tip="Añadir un nuevo hito"/> + <dnd_button name="trash_btn" tool_tip="Quitar el hito seleccionado"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_login.xml b/indra/newview/skins/default/xui/es/panel_login.xml index 52c3855d6a..8313306cf9 100644 --- a/indra/newview/skins/default/xui/es/panel_login.xml +++ b/indra/newview/skins/default/xui/es/panel_login.xml @@ -6,34 +6,29 @@ <panel.string name="forgot_password_url"> http://secondlife.com/account/request.php?lang=es </panel.string> -<panel name="login_widgets"> - <text name="first_name_text"> - Nombre: - </text> - <text name="last_name_text"> - Apellido: - </text> - <text name="password_text"> - Contraseña: - </text> - <text name="start_location_text"> - Posición inicial: - </text> - <combo_box name="start_location_combo"> - <combo_box.item name="MyHome" label="Mi Base"/> - <combo_box.item name="MyLastLocation" label="Mi última posición"/> - <combo_box.item name="Typeregionname" label="<Escriba el nombre de la Región>"/> - </combo_box> - <check_box label="Recordar la contraseña" name="remember_check"/> - <button label="Iniciar sesión" label_selected="Iniciar sesión" name="connect_btn"/> - <text name="create_new_account_text"> - Regístrese para obtener una cuenta - </text> - <text name="forgot_password_text"> - ¿Olvidó su nombre o su contraseña? - </text> - <text name="channel_text"> - [VERSION] - </text> -</panel> + <layout_stack name="login_widgets"> + <layout_panel name="login"> + <text name="first_name_text"> + Nombre: + </text> + <line_editor label="Nombre" name="first_name_edit" tool_tip="[SECOND_LIFE] First Name"/> + <line_editor label="Apellido" name="last_name_edit" tool_tip="[SECOND_LIFE] Last Name"/> + <check_box label="Recordar la contraseña" name="remember_check"/> + <text name="start_location_text"> + Empezar en: + </text> + <combo_box name="start_location_combo"> + <combo_box.item label="Mi Base" name="MyHome"/> + </combo_box> + <button label="Iniciar sesión" name="connect_btn"/> + </layout_panel> + <layout_panel name="links"> + <text name="create_new_account_text"> + Registrarse + </text> + <text name="login_help"> + ¿Necesitas ayuda para conectarte? + </text> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_main_inventory.xml b/indra/newview/skins/default/xui/es/panel_main_inventory.xml new file mode 100644 index 0000000000..8656098467 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_main_inventory.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Cosas" name="main inventory panel"> + <panel.string name="Title"> + Cosas + </panel.string> + <filter_editor label="Filtrar" name="inventory search editor"/> + <tab_container name="inventory filter tabs"> + <inventory_panel label="Todos los ítems" name="All Items"/> + <inventory_panel label="Ítems recientes" name="Recent Items"/> + </tab_container> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Mostrar más opciones"/> + <button name="add_btn" tool_tip="Añadir un ítem nuevo"/> + <dnd_button name="trash_btn" tool_tip="Quitar el ítem seleccionado"/> + </panel> + <menu_bar name="Inventory Menu"> + <menu label="Archivo" name="File"> + <menu_item_call label="Abrir" name="Open"/> + <menu label="Subir" name="upload"> + <menu_item_call label="Imagen ([COST] L$)..." name="Upload Image"/> + <menu_item_call label="Sonido ([COST] L$)..." name="Upload Sound"/> + <menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Masivo ([COST] L$ por archivo)..." name="Bulk Upload"/> + </menu> + <menu_item_call label="Ventana nueva" name="New Window"/> + <menu_item_call label="Ver los filtros" name="Show Filters"/> + <menu_item_call label="Restablecer los filtros" name="Reset Current"/> + <menu_item_call label="Cerrar todas las carpetas" name="Close All Folders"/> + <menu_item_call label="Vaciar la Papelera" name="Empty Trash"/> + <menu_item_call label="Vaciar Objetos Perdidos" name="Empty Lost And Found"/> + </menu> + <menu label="Crear" name="Create"> + <menu_item_call label="Carpeta nueva" name="New Folder"/> + <menu_item_call label="Script nuevo" name="New Script"/> + <menu_item_call label="Nota nueva" name="New Note"/> + <menu_item_call label="Gesto nuevo" name="New Gesture"/> + <menu label="Ropas nuevas" name="New Clothes"> + <menu_item_call label="Camisa nueva" name="New Shirt"/> + <menu_item_call label="Pantalón nuevo" name="New Pants"/> + <menu_item_call label="Zapatos nuevos" name="New Shoes"/> + <menu_item_call label="Calcetines nuevos" name="New Socks"/> + <menu_item_call label="Chaqueta nueva" name="New Jacket"/> + <menu_item_call label="Falda nueva" name="New Skirt"/> + <menu_item_call label="Guantes nuevos" name="New Gloves"/> + <menu_item_call label="Camiseta nueva" name="New Undershirt"/> + <menu_item_call label="Ropa interior nueva" name="New Underpants"/> + <menu_item_call label="Nueva Alfa" name="New Alpha"/> + <menu_item_call label="Tatuaje nuevo" name="New Tattoo"/> + </menu> + <menu label="Nuevas partes del cuerpo" name="New Body Parts"> + <menu_item_call label="Forma nueva" name="New Shape"/> + <menu_item_call label="Piel nueva" name="New Skin"/> + <menu_item_call label="Pelo nuevo" name="New Hair"/> + <menu_item_call label="Ojos nuevos" name="New Eyes"/> + </menu> + </menu> + <menu label="Ordenar" name="Sort"> + <menu_item_check label="Alfabéticamente" name="By Name"/> + <menu_item_check label="Cronológicamente" name="By Date"/> + <menu_item_check label="Las carpetas siempre alfabéticamente" name="Folders Always By Name"/> + <menu_item_check label="Las carpetas del sistema, arriba" name="System Folders To Top"/> + </menu> + </menu_bar> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_me.xml b/indra/newview/skins/default/xui/es/panel_me.xml new file mode 100644 index 0000000000..ed253904aa --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_me.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Mi perfil" name="panel_me"> + <tab_container name="tabs"> + <panel label="MI PERFIL" name="panel_profile"/> + <panel label="MIS DESTACADOS" name="panel_picks"/> + </tab_container> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_media_settings_general.xml b/indra/newview/skins/default/xui/es/panel_media_settings_general.xml new file mode 100644 index 0000000000..8fe3144d05 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_media_settings_general.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="General" name="Media Settings General"> + <text name="home_label"> + Página inicial: + </text> + <text name="home_fails_whitelist_label"> + (Esta página no supera la lista blanca especificada) + </text> + <line_editor name="home_url" tool_tip="La página inicial para el origen de este media"/> + <text name="preview_label"> + Vista previa + </text> + <text name="current_url_label"> + Página actual: + </text> + <text name="current_url" tool_tip="La página actual para el origen de este media" value=""/> + <button label="Definir" name="current_url_reset_btn"/> + <check_box initial_value="false" label="Media en bucle" name="auto_loop"/> + <check_box initial_value="false" label="A la primera pulsación" name="first_click_interact"/> + <check_box initial_value="false" label="Zoom automático" name="auto_zoom"/> + <check_box initial_value="false" label="Ejecutar automáticamente los media" name="auto_play"/> + <text name="media_setting_note"> + Nota: los residentes pueden elegir una configuración distinta de ésta + </text> + <check_box initial_value="false" label="Ajustar automáticamente los media en la cara del objeto" name="auto_scale"/> + <text name="size_label"> + Tamaño: + </text> + <text name="X_label"> + X + </text> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml new file mode 100644 index 0000000000..3e625f56fe --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_media_settings_permissions.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Personalizar" name="Media settings for controls"> + <text name="controls_label"> + Controles: + </text> + <combo_box name="controls"> + <combo_item name="Standard"> + Estándar + </combo_item> + <combo_item name="Mini"> + Mini + </combo_item> + </combo_box> + <check_box initial_value="false" label="Permitir la navegación e interactividad" name="perms_owner_interact"/> + <check_box initial_value="false" label="Mostrar la barra de control" name="perms_owner_control"/> + <check_box initial_value="false" label="Permitir la navegación e interactividad" name="perms_group_interact"/> + <check_box initial_value="false" label="Mostrar la barra de control" name="perms_group_control"/> + <check_box initial_value="false" label="Permitir la navegación e interactividad" name="perms_anyone_interact"/> + <check_box initial_value="false" label="Mostrar la barra de control" name="perms_anyone_control"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_media_settings_security.xml b/indra/newview/skins/default/xui/es/panel_media_settings_security.xml new file mode 100644 index 0000000000..4b4fff5edb --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_media_settings_security.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Seguridad" name="Media Settings Security"> + <check_box initial_value="false" label="Permitir el acceso sólo a los patrones de URL especificados" name="whitelist_enable"/> + <text name="home_url_fails_some_items_in_whitelist"> + Las entradas contra las que falle la página inicial se marcan: + </text> + <button label="Añadir" name="whitelist_add"/> + <button label="Borrar" name="whitelist_del"/> + <text name="home_url_fails_whitelist"> + Atención: la página inicial especificada en la pestaña General no supera esta lista blanca. Se ha desactivado hasta que se añada una entrada válida. + </text> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_my_profile.xml b/indra/newview/skins/default/xui/es/panel_my_profile.xml new file mode 100644 index 0000000000..6c00a05d12 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_my_profile.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Perfil" name="panel_profile"> + <string name="no_partner_text" value="Ninguno/a"/> + <string name="no_group_text" value="Ninguno"/> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) + </string> + <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="Pulsa el botón Editar el perfil para cambiar la imagen"/> + <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="Pulsa el botón Editar el perfil para cambiar la imagen"/> + <text name="title_rw_descr_text" value="Mundo real:"/> + </panel> + <text name="title_member_text" value="Residente desde:"/> + <text name="title_acc_status_text" value="Estado de la cuenta:"/> + <text name="title_partner_text" value="Compañero/a:"/> + <panel name="partner_data_panel"> + <name_box initial_value="(obteniendo)" name="partner_text"/> + </panel> + <text name="title_groups_text" value="Grupos:"/> + </panel> + </scroll_container> + </layout_panel> + <layout_panel name="profile_me_buttons_panel"> + <button label="Editar el perfil" name="edit_profile_btn" tool_tip="Modifica tu información personal"/> + <button label="Modificar la apariencia" name="edit_appearance_btn" tool_tip="Crea o modifica tu apariencia: tu físico, ropas, etc."/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_navigation_bar.xml b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml new file mode 100644 index 0000000000..6c6e4c7ee8 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_navigation_bar.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="navigation_bar"> + <panel name="navigation_panel"> + <pull_button name="back_btn" tool_tip="Volver a lo localización anterior"/> + <pull_button name="forward_btn" tool_tip="Ir una localización adelante"/> + <button name="home_btn" tool_tip="Teleportar a mi Base"/> + <location_input label="Localización" name="location_combo"/> + <search_combo_box label="Buscar" name="search_combo_box" tool_tip="Buscar"> + <combo_editor label="Buscar en [SECOND_LIFE]" name="search_combo_editor"/> + </search_combo_box> + </panel> + <favorites_bar name="favorite" tool_tip="Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí"> + <label name="favorites_bar_label" tool_tip="¡Accede rápidamente a tus lugares favoritos de Second Life arrastrando hitos hasta aquí!"> + Barra de Favoritos + </label> + <chevron_button name=">>" tool_tip="Ver más de Mis favoritos"/> + </favorites_bar> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_nearby_chat.xml b/indra/newview/skins/default/xui/es/panel_nearby_chat.xml new file mode 100644 index 0000000000..986c109c41 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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 + </text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml new file mode 100644 index 0000000000..af2b6e920b --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_nearby_chat_bar.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="chat_bar"> + <line_editor label="Pulsa aquí para chatear." name="chat_box" tool_tip="Pulsa Enter para decirlo o Ctrl+Enter para gritarlo"/> + <button name="show_nearby_chat" tool_tip="Muestra o esconde el registro del chat"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_nearby_media.xml b/indra/newview/skins/default/xui/es/panel_nearby_media.xml new file mode 100644 index 0000000000..cd8836f40f --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_nearby_media.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="nearby_media"> + <string name="empty_item_text"> + <vacío> + </string> + <string name="parcel_media_name"> + Media en streaming de la parcela + </string> + <string name="parcel_audio_name"> + Audio en streaming de la parcela + </string> + <string name="playing_suffix"> + (ejecutándose) + </string> + <panel name="minimized_controls"> + <button label="Para todo" name="all_nearby_media_disable_btn" tool_tip="Apagar todos los media cercanos"/> + <button label="Iniciar todo" name="all_nearby_media_enable_btn" tool_tip="Encender todos los media cercanos"/> + <button name="open_prefs_btn" tool_tip="Abre las preferencias de los media"/> + <button label="Más >>" label_selected="Menos <<" name="more_less_btn" tool_tip="Controles avanzados"/> + </panel> + <panel name="nearby_media_panel"> + <combo_box name="show_combo"> + <combo_box.item label="Todo" name="All"/> + <combo_box.item label="En esta parcela" name="WithinParcel"/> + <combo_box.item label="Fuera de la parcela" name="OutsideParcel"/> + </combo_box> + <scroll_list name="media_list"> + <scroll_list.columns label="Cercanía" name="media_proximity"/> + <scroll_list.columns label="Visibilidad" name="media_visibility"/> + <scroll_list.columns label="Clase" name="media_class"/> + <scroll_list.columns label="Nombre" name="media_name"/> + <scroll_list.columns label="Limpiar" name="media_debug"/> + </scroll_list> + <panel> + <layout_stack name="media_controls"> + <layout_panel name="stop"> + <button name="stop_btn" tool_tip="Para los media seleccionados"/> + </layout_panel> + <layout_panel name="play"> + <button name="play_btn" tool_tip="Ejecuta los media seleccionados"/> + </layout_panel> + <layout_panel name="pause"> + <button name="pause_btn" tool_tip="Pausa los media seleccionados"/> + </layout_panel> + <layout_panel name="volume_slider_ctrl"> + <slider_bar initial_value="0.5" name="volume_slider" tool_tip="Volumen de los media seleccionados"/> + </layout_panel> + <layout_panel name="mute"> + <button name="mute_btn" tool_tip="Silencia el audio de los media seleccionados"/> + </layout_panel> + <layout_panel name="zoom"> + <button name="zoom_btn" tool_tip="Zoom en los media seleccionados"/> + </layout_panel> + <layout_panel name="unzoom"> + <button name="unzoom_btn" tool_tip="Alejar el zoom de los media seleccionados"/> + </layout_panel> + </layout_stack> + </panel> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_notes.xml b/indra/newview/skins/default/xui/es/panel_notes.xml new file mode 100644 index 0000000000..bf8da4cf73 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_notes.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Notas y Privacidad" 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="Mis notas privadas:"/> + <text name="status_message2" value="Permitir que esta persona:"/> + <check_box label="Vea si estoy conectado" name="status_check"/> + <check_box label="Me vea en el mapa" name="map_check"/> + <check_box label="Edite, borre o coja mis objetos" name="objects_check"/> + </panel> + </scroll_container> + </panel> + <panel name="notes_buttons_panel"> + <button label="Añadir como amigo" name="add_friend" tool_tip="Ofrecer amistad a este Residente"/> + <button label="MI" name="im" tool_tip="Abrir un mensaje instantáneo"/> + <button label="Llamada" name="call" tool_tip="Llamar a este Residente"/> + <button label="Mapa" name="show_on_map_btn" tool_tip="Mostrar al Residente en el mapa"/> + <button label="Teleportar" name="teleport" tool_tip="Ofrecer teleporte"/> + </panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_online_status.xml b/indra/newview/skins/default/xui/es/panel_online_status.xml new file mode 100644 index 0000000000..fdc489f375 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_online_status.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="friend_online_status" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/es/panel_online_status_toast.xml b/indra/newview/skins/default/xui/es/panel_online_status_toast.xml new file mode 100644 index 0000000000..fdc489f375 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_online_status_toast.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="friend_online_status" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml new file mode 100644 index 0000000000..11bbcd7695 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Cosas" name="Outfits"> + <tab_container name="appearance_tabs"> + <inventory_panel label="MIS VESTUARIOS" name="outfitslist_tab"/> + <inventory_panel label="PUESTO" name="cof_tab"/> + </tab_container> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Ver más opciones"/> + <dnd_button name="trash_btn" tool_tip="Quita el ítem seleccionado"/> + <button label="Guardar el vestuario" name="make_outfit_btn" tool_tip="Guarda la apariencia como un vestuario"/> + <button label="Llevar" name="wear_btn" tool_tip="Viste el vestuario seleccionado"/> + <button label="M" name="look_edit_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/es/panel_outfits_inventory_gear_default.xml new file mode 100644 index 0000000000..8f805c3d18 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Reemplazar el vestuario actual" name="wear"/> + <menu_item_call label="Añadir al vestuario actual" name="add"/> + <menu_item_call label="Quitar del vestuario actual" name="remove"/> + <menu_item_call label="Renombrar" name="rename"/> + <menu_item_call label="Quitar el enlace" name="remove_link"/> + <menu_item_call label="Borrar el vestuario" name="delete"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml new file mode 100644 index 0000000000..001446be21 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_people.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Side tray panel --> +<panel label="Gente" name="people_panel"> + <string name="no_people" value="No hay nadie"/> + <string name="no_one_near" value="No hay nadie cerca"/> + <string name="no_friends_online" value="No hay amigos conectados"/> + <string name="no_friends" value="No hay amigos"/> + <string name="people_filter_label" value="Filtrar a la gente"/> + <string name="groups_filter_label" value="Filtrar a los grupos"/> + <filter_editor label="Filtrar" name="filter_input"/> + <tab_container name="tabs"> + <panel label="CERCANÍA" name="nearby_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="nearby_view_sort_btn" tool_tip="Opciones"/> + <button name="add_friend_btn" tool_tip="Añade al Residente seleccionado a la lista de tus amigos"/> + </panel> + </panel> + <panel label="MIS AMIGOS" name="friends_panel"> + <accordion name="friends_accordion"> + <accordion_tab name="tab_online" title="Conectado"/> + <accordion_tab name="tab_all" title="Todas"/> + </accordion> + <panel label="bottom_panel" name="bottom_panel"> + <button name="friends_viewsort_btn" tool_tip="Opciones"/> + <button name="add_btn" tool_tip="Ofrece amistad a un Residente"/> + <button name="del_btn" tool_tip="Quitar a la persona seleccionada de tu lista de amigos"/> + </panel> + <text name="no_friends_msg"> + Para añadir amigos, prueba a hacer una [secondlife:///app/search/people búsqueda general] o pulsa en un usuario para añadirle como amigo. +Si estás buscando gente para pasar el rato, [secondlife:///app/worldmap usa el mapa]. + </text> + </panel> + <panel label="MIS GRUPOS" name="groups_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="groups_viewsort_btn" tool_tip="Opciones"/> + <button name="plus_btn" tool_tip="Entrar en un grupo o crear uno"/> + <button name="activate_btn" tool_tip="Activar el grupo seleccionado"/> + </panel> + </panel> + <panel label="RECIENTE" name="recent_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="recent_viewsort_btn" tool_tip="Opciones"/> + <button name="add_friend_btn" tool_tip="Añade al Residente seleccionado a la lista de tus amigos"/> + </panel> + </panel> + </tab_container> + <panel name="button_bar"> + <button label="Perfil" name="view_profile_btn" tool_tip="Muestra imágenes, grupos y otra información del Residente"/> + <button label="MI" name="im_btn" tool_tip="Abrir un mensaje instantáneo"/> + <button label="Llamada" name="call_btn" tool_tip="Llamar a este Residente"/> + <button label="Compartir" name="share_btn"/> + <button label="Teleportarse" name="teleport_btn" tool_tip="Ofrecer teleporte"/> + <button label="Perfil del grupo" name="group_info_btn" tool_tip="Ver la información del grupo"/> + <button label="Chat de grupo" name="chat_btn" tool_tip="Abrir el chat"/> + <button label="Multiconferencia" name="group_call_btn" tool_tip="Llama a este grupo"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_pick_info.xml b/indra/newview/skins/default/xui/es/panel_pick_info.xml new file mode 100644 index 0000000000..c55addbc93 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Información del destacado"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text name="pick_name" value="[nombre]"/> + <text name="pick_location" value="[cargando...]"/> + <text name="pick_desc" value="[descripción]"/> + </panel> + </scroll_container> + <panel name="buttons"> + <button label="Teleporte" name="teleport_btn"/> + <button label="Mapa" name="show_on_map_btn"/> + <button label="Editar" name="edit_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_picks.xml b/indra/newview/skins/default/xui/es/panel_picks.xml new file mode 100644 index 0000000000..abedc6c551 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_picks.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Destacados" name="panel_picks"> + <string name="no_picks" value="No hay destacados"/> + <string name="no_classifieds" value="No hay clasificados"/> + <text name="empty_picks_panel_text"> + No hay ni destacados ni clasificados + </text> + <accordion name="accordion"> + <accordion_tab name="tab_picks" title="Destacados"/> + <accordion_tab name="tab_classifieds" title="Clasificados"/> + </accordion> + <panel label="bottom_panel" name="edit_panel"> + <button name="new_btn" tool_tip="Crear un nuevo destacado o clasificado de la posición actual"/> + </panel> + <panel name="buttons_cucks"> + <button label="Información" name="info_btn" tool_tip="Mostrar la información del destacado"/> + <button label="Teleportarse" name="teleport_btn" tool_tip="Teleportar a esta zona"/> + <button label="Mapa" name="show_on_map_btn" tool_tip="Mostrar esta zona en el mapa del mundo"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_place_profile.xml b/indra/newview/skins/default/xui/es/panel_place_profile.xml new file mode 100644 index 0000000000..9d4a958e16 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_place_profile.xml @@ -0,0 +1,104 @@ +<?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="Cualquiera"/> + <string name="available" value="disponible"/> + <string name="allocated" value="asignados"/> + <string name="title_place" value="Añadir el perfil"/> + <string name="title_teleport_history" value="Historial de teleportes"/> + <string name="not_available" value="(No disp.)"/> + <string name="unknown" value="(desconocido)"/> + <string name="public" value="(público)"/> + <string name="none_text" value="(ninguno)"/> + <string name="sale_pending_text" value="(venta pendiente)"/> + <string name="group_owned_text" value="(propiedad de un grupo)"/> + <string name="price_text" value="L$"/> + <string name="area_text" value="m²"/> + <string name="all_residents_text" value="Todos los residentes"/> + <string name="group_text" value="Grupo"/> + <string name="can_resell"> + El terreno comprado en esta región puede revenderse. + </string> + <string name="can_not_resell"> + El terreno comprado en esta región no puede revenderse. + </string> + <string name="can_change"> + El terreno comprado en esta región puede unirse o dividirse. + </string> + <string name="can_not_change"> + El terreno comprado en esta región no puede unirse o dividirse. + </string> + <string name="server_update_text"> + La información de esta parcela no está disponible sin una actualización del servidor. + </string> + <string name="server_error_text"> + En este momento no está disponible la información de esta parcela. Por favor, inténtalo más tarde. + </string> + <string name="server_forbidden_text"> + Por tener restringido el acceso, no está disponible la información de esta parcela. Por favor, revisa tus permisos con el propietario de la parcela. + </string> + <string name="acquired_date"> + [wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local] + </string> + <button name="back_btn" tool_tip="Atrás"/> + <text name="title" value="Añadir el perfil"/> + <scroll_container name="place_scroll"> + <panel name="scrolling_panel"> + <text name="owner_label" value="Propietario:"/> + <text name="maturity_value" value="desconocido"/> + <accordion name="advanced_info_accordion"> + <accordion_tab name="parcel_characteristics_tab" title="Parcela"> + <panel> + <text name="rating_label" value="Calificación:"/> + <text name="rating_value" value="desconocida"/> + <text name="voice_label" value="Voz:"/> + <text name="voice_value" value="Sí"/> + <text name="fly_label" value="Volar:"/> + <text name="fly_value" value="Sí"/> + <text name="push_label" value="Empujones:"/> + <text name="push_value" value="No"/> + <text name="build_label" value="Construir:"/> + <text name="build_value" value="Sí"/> + <text name="scripts_label" value="Scripts:"/> + <text name="scripts_value" value="Sí"/> + <text name="damage_label" value="Daño:"/> + <text name="damage_value" value="No"/> + <button label="Acerca del terreno" name="about_land_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="region_information_tab" title="Región"> + <panel> + <text name="region_name_label" value="Región:"/> + <text name="region_type_label" value="Tipo:"/> + <text name="region_rating_label" value="Calificación:"/> + <text name="region_owner_label" value="Propietario:"/> + <text name="region_group_label" value="Grupo:"/> + <button label="Región/Estado" name="region_info_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="estate_information_tab" title="Estado"> + <panel> + <text name="estate_name_label" value="Estado:"/> + <text name="estate_rating_label" value="Calificación:"/> + <text name="estate_owner_label" value="Propietario:"/> + <text name="covenant_label" value="Contrato:"/> + </panel> + </accordion_tab> + <accordion_tab name="sales_tab" title="En venta"> + <panel> + <text name="sales_price_label" value="Precio:"/> + <text name="area_label" value="Área:"/> + <text name="traffic_label" value="Tráfico:"/> + <text name="primitives_label" value="Primitivas:"/> + <text name="parcel_scripts_label" value="Scripts:"/> + <text name="terraform_limits_label" value="Límites de modificación del terreno:"/> + <text name="subdivide_label" value="Puede dividirse/unirse:"/> + <text name="resale_label" value="Puede revenderse:"/> + <text name="sale_to_label" value="En venta a:"/> + </panel> + </accordion_tab> + </accordion> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_places.xml b/indra/newview/skins/default/xui/es/panel_places.xml new file mode 100644 index 0000000000..4818bff069 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_places.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Lugares" name="places panel"> + <string name="landmarks_tab_title" value="MIS HITOS"/> + <string name="teleport_history_tab_title" value="HISTORIAL DE TELEPORTES"/> + <filter_editor label="Filtrar mis lugares" name="Filter"/> + <panel name="button_panel"> + <button label="Teleporte" name="teleport_btn" tool_tip="Teleportar a la zona elegida"/> + <button label="Mapa" name="map_btn"/> + <button label="Editar" name="edit_btn" tool_tip="Editar la información del hito"/> + <button label="▼" name="overflow_btn" tool_tip="Ver más opciones"/> + <button label="Guardar" name="save_btn"/> + <button label="Cancelar" name="cancel_btn"/> + <button label="Cerrar" name="close_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml index 02fb4da017..add854932d 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml @@ -1,12 +1,29 @@ <?xml version="1.0" encoding="utf-8"?> -<panel name="advanced"> - <text name="AspectRatioLabel1" tool_tip="ancho / alto"> - Proporción: +<panel label="Avanzado" name="advanced"> + <panel.string name="aspect_ratio_text"> + [NUM]:[DEN] + </panel.string> + <slider label="Ángulo de visión" name="camera_fov"/> + <slider label="Distancia" name="camera_offset_scale"/> + <text name="heading2"> + Posición automática para: </text> - <combo_box name="aspect_ratio" tool_tip="ancho / alto"> - <combo_box.item label="4:3 (Standard CRT)" name="item1"/> - <combo_box.item label="5:4 (1280x1024 LCD)" name="item2"/> - <combo_box.item label="8:5 (Widescreen)" name="item3"/> - <combo_box.item label="16:9 (Widescreen)" name="item4"/> - </combo_box> + <check_box label="Construir/Editar" name="edit_camera_movement" tool_tip="Usar el posicionamiento automático de la cámara al entrar en o salir del modo de edición"/> + <check_box label="Apariencia" name="appearance_camera_movement" tool_tip="Usar el posicionamiento automático de la cámara mientras se está editando"/> + <check_box label="Verme en vista subjetiva" name="first_person_avatar_visible"/> + <check_box label="Las teclas del cursor siempre para moverme" name="arrow_keys_move_avatar_check"/> + <check_box label="Correr siempre: atajo de teclado" name="tap_tap_hold_to_run"/> + <check_box label="Al hablar, mover los labios del avatar" name="enable_lip_sync"/> + <check_box label="Bocadillos del chat" name="bubble_text_chat"/> + <slider label="Opacidad" name="bubble_chat_opacity"/> + <color_swatch name="background" tool_tip="Elegir el color de los bocadillos del chat"/> + <check_box label="Mostrar los errores de los scripts en:" name="show_script_errors"/> + <radio_group name="show_location"> + <radio_item label="Chat" name="0"/> + <radio_item label="Ventanas distintas" name="1"/> + </radio_group> + <check_box label="Cambiar entre hablar on/off cuando pulse:" name="push_to_talk_toggle_check" tool_tip="En el modo 'un toque', pulsa y suelta el botón UNA VEZ para activar o desactivar el micrófono. Si no estás en el modo 'un toque', el micrófono sólo recogerá tu voz mientras mantengas pulsado el botón."/> + <line_editor label="Botón de Apretar para Hablar" name="modifier_combo"/> + <button label="Elegir la tecla" name="set_voice_hotkey_button"/> + <button label="Botón de en medio del ratón" name="set_voice_middlemouse_button" tool_tip="Reconfigurarlo al botón medio del ratón"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml index a71ac172a3..0ccc307039 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_alerts.xml @@ -1,18 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Ventanas emergentes" name="popups" title="Ventanas emergentes"> - <text name="dont_show_label"> - No mostrar estas ventanas emergentes: + <text name="tell_me_label"> + Avisarme: </text> - <button width="200" label="Activar esta ventana emergente" label_selected="Activar esta popup" name="enable_popup"/> - <button width="255" left="225" label="Activar todas las ventanas emergentes..." label_selected="Restaurar cajas de diálogo 'Mostrar en la próxima vez'..." name="reset_dialogs_btn" tool_tip="Activar todas las ventanas emergentes y los avisos de 'primera vez que se usa'."/> + <check_box label="Cuando gaste o consiga L$" name="notify_money_change_checkbox"/> + <check_box label="Cuando mis amigos se conectan o desconectan" name="friends_online_notify_checkbox"/> <text name="show_label" width="300"> - Mostrar estas ventanas emergentes: + Mostrar siempre: </text> - <button left="205" width="275" label="Desactivar todas estas ventanas emergentes..." name="skip_dialogs_btn" tool_tip="Desactivar todas las ventanas emergentes y los avisos de 'primera vez que se usa'."/> - <text name="text_box2"> - Oferta de notas, texturas e hitos: + <text name="dont_show_label"> + No mostrar nunca: </text> - <check_box label="Aceptar automáticamente" name="accept_new_inventory"/> - <check_box label="Ver automáticamente tras aceptar" name="show_new_inventory"/> - <check_box label="Mostrar automáticamente los objetos aceptados recientemente en el inventario" name="show_in_inventory"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml index 4e9dc6db6f..b8010e0a35 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml @@ -1,17 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Chat de texto" name="chat"> - <text name="text_box"> - Tamaño de la fuente -del chat: - </text> <radio_group name="chat_font_size"> - <radio_item name="radio" label="Pequeño" /> - <radio_item name="radio2" label="Medio" /> - <radio_item name="radio3" label="Grande" /> + <radio_item label="Disminuir" name="radio" value="0"/> + <radio_item label="Media" name="radio2" value="1"/> + <radio_item label="Aumentar" name="radio3" value="2"/> </radio_group> <color_swatch label="Usted" name="user"/> <text name="text_box1"> - Usted + Yo </text> <color_swatch label="Otros" name="agent"/> <text name="text_box2"> @@ -37,22 +33,14 @@ del chat: <text name="text_box7"> Propietario </text> - <color_swatch label="Bocadillo" name="background"/> - <text name="text_box8"> - Bocadillo - </text> <color_swatch label="URL" name="links"/> <text name="text_box9"> URL </text> - <check_box label="Ver en el chat los avisos y errores de los scripts" name="script_errors_as_chat"/> - <spinner label="Quitar el chat tras" name="fade_chat_time" label_width="95" width="145" /> - <slider label="Opacidad" name="console_opacity"/> - <check_box label="Usar el ancho de la pantalla (tras reiniciar)" name="chat_full_width_check"/> - <check_box label="Cerrar el chat al pulsar Intro" name="close_chat_on_return_check"/> - <check_box label="En el chat, las teclas del cursor mueven el avatar" name="arrow_keys_move_avatar_check"/> - <check_box label="Incluir la hora en el chat" name="show_timestamps_check"/> - <check_box label="Ejecutar la animación de escribir al hacerlo en el chat" name="play_typing_animation"/> - <check_box label="Mostrar el chat en bocadillos" name="bubble_text_chat"/> - <slider label="Opacidad" name="bubble_chat_opacity"/> + <check_box initial_value="true" label="Ejecutar la animación de escribir al hacerlo en el chat" name="play_typing_animation"/> + <check_box label="Cuando estoy desconectado, enviarme los MI al correo-e" name="send_im_to_email"/> + <radio_group name="chat_window" tool_tip="Muestra tus mensajes instantáneos en varias ventanas flotantes o en una sola con varias pestañas (requiere que reinicies)"> + <radio_item label="Varias ventanas" name="radio" value="0"/> + <radio_item label="Pestañas" name="radio2" value="1"/> + </radio_group> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_general.xml b/indra/newview/skins/default/xui/es/panel_preferences_general.xml index 2b813a18bf..ed24ccacd7 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml @@ -1,90 +1,67 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="General" name="general_panel"> - <combo_box name="start_location_combo"> - <combo_box.item name="MyHome" tool_tip="Por defecto, iniciar sesión en mi Base." label="Mi Base"/> - <combo_box.item name="MyLastLocation" tool_tip="Por defecto, iniciar sesión en mi última posición." label="Mi última posición"/> - </combo_box> - <check_box label="Ver mi posición inicial en la pantalla de inicio de sesión" name="show_location_checkbox"/> - <combo_box name="fade_out_combobox"> - <combo_box.item name="Never" label="Nunca"/> - <combo_box.item name="Show Temporarily" label="Mostrarlos temporalmente"/> - <combo_box.item name="Always" label="Siempre"/> - </combo_box> - <check_box label="Nombres de avatar en pequeño" name="small_avatar_names_checkbox"/> - <check_box label="No ver mi nombre en mi pantalla" name="show_my_name_checkbox"/> - <text name="group_titles_textbox"> - Etiquetas de grupo: - </text> - <check_box label="Ocultar las etiquetas de grupo" name="show_all_title_checkbox"/> - <check_box label="Ocultar mi etiqueta de grupo" name="show_my_title_checkbox"/> - <color_swatch label="" name="effect_color_swatch" tool_tip="Pulse para abrir el selector de color"/> - <text name="UI Size:"> - Tamaño de la interfaz: + <text name="language_textbox"> + Idioma: </text> - <check_box label="Resolución independiente del tamaño" name="ui_auto_scale"/> - <spinner label="Ausente tras:" name="afk_timeout_spinner"/> - <check_box label="Avisar cuando gasto o recibo dólares Linden (L$)" name="notify_money_change_checkbox"/> - <text name="maturity_desired_label"> - Calificación: + <combo_box name="language_combobox"> + <combo_box.item label="Predeterminado del sistema" name="System Default Language"/> + <combo_box.item label="English (Inglés)" name="English"/> + <combo_box.item label="Dansk (Danés) - Beta" name="Danish"/> + <combo_box.item label="Deutsch (Alemán) - Beta" name="Deutsch(German)"/> + <combo_box.item label="Español - Beta" name="Spanish"/> + <combo_box.item label="Français (Francés) - Beta" name="French"/> + <combo_box.item label="Italiano - Beta" name="Italian"/> + <combo_box.item label="Nederlands (Neerlandés) - Beta" name="Dutch"/> + <combo_box.item label="Polski (Polaco) - Beta" name="Polish"/> + <combo_box.item label="Portugués (Portugués) - Beta" name="Portugese"/> + <combo_box.item label="日本語 (Japonés) - Beta" name="(Japanese)"/> + </combo_box> + <text name="language_textbox2"> + (requiere reiniciar) </text> <text name="maturity_desired_prompt"> Quiero acceder a contenido calificado: </text> + <text name="maturity_desired_textbox"/> <combo_box name="maturity_desired_combobox"> - <combo_box.item name="Desired_Adult" label="'PG', 'Mature' y 'Adult'"/> - <combo_box.item name="Desired_Mature" label="'PG' y 'Mature'"/> - <combo_box.item name="Desired_PG" label="'PG'"/> + <combo_box.item label="'PG', 'Mature' y 'Adult'" name="Desired_Adult"/> + <combo_box.item label="'PG' y '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"> - Posición inicial: + Localización inicial: </text> - <text name="show_names_textbox"> - Mostrar los nombres: + <combo_box name="start_location_combo"> + <combo_box.item label="Mi última posición" name="MyLastLocation" tool_tip="Por defecto, iniciar sesión en mi última posición."/> + <combo_box.item label="Mi Base" name="MyHome" tool_tip="Por defecto, iniciar sesión en mi Base."/> + </combo_box> + <check_box initial_value="true" label="Mostrar en la pantalla de conexión" name="show_location_checkbox"/> + <text name="name_tags_textbox"> + Etiquetas de los nombres: </text> + <radio_group name="Name_Tag_Preference"> + <radio_item label="Off" name="radio" value="0"/> + <radio_item label="On" name="radio2" value="1"/> + <radio_item label="Mostrar brevemente" name="radio3" value="2"/> + </radio_group> + <check_box label="Mostrar mi nombre" name="show_my_name_checkbox1"/> + <check_box initial_value="true" label="Etiquetas de los avatares en pequeño" name="small_avatar_names_checkbox"/> + <check_box label="Mostrar las etiquetas de grupo" name="show_all_title_checkbox1"/> <text name="effects_color_textbox"> - Color de mis efectos: - </text> - <text name="seconds_textbox"> - segundos - </text> - <text name="crash_report_textbox"> - Informes de caídas: + Mis efectos: </text> - <text name="language_textbox"> - Idioma: + <text name="title_afk_text"> + Ausente tras: </text> - <text name="language_textbox2"> - (Tendrá efecto tras reiniciar) - </text> - <string name="region_name_prompt"> - <escriba el nombre de la región> - </string> - <combo_box name="crash_behavior_combobox"> - <combo_box.item name="Askbeforesending" label="Preguntar antes de enviar"/> - <combo_box.item name="Alwayssend" label="Enviar siempre"/> - <combo_box.item name="Neversend" label="No enviar nunca"/> - </combo_box> - <combo_box name="language_combobox"> - <combo_box.item name="System Default Language" label="Predeterminado del sistema"/> - <combo_box.item name="English" label="English (Inglés)"/> - <combo_box.item name="Danish" label="Dansk (Danés) - Beta"/> - <combo_box.item name="Deutsch(German)" label="Deutsch (Alemán) - Beta"/> - <combo_box.item name="Spanish" label="Español - Beta"/> - <combo_box.item name="French" label="Français (Francés) - Beta"/> - <combo_box.item name="Italian" label="Italiano - Beta"/> - <combo_box.item name="Hungarian" label="Magyar (Húngaro) - Beta"/> - <combo_box.item name="Dutch" label="Nederlands (Neerlandés) - Beta"/> - <combo_box.item name="Polish" label="Polski (Polaco) - Beta"/> - <combo_box.item name="Portugese" label="Portugués (Portugués) - Beta"/> - <combo_box.item name="Russian" label="Русский (Ruso) - Beta"/> - <combo_box.item name="Turkish" label="Türkçe (Turco) - Beta"/> - <combo_box.item name="Ukrainian" label="Українська (Ucraniano) - Beta"/> - <combo_box.item name="Chinese" label="中文 (简体) (Chino) - Beta"/> - <combo_box.item name="(Japanese)" label="日本語 (Japonés) - Beta"/> - <combo_box.item name="(Korean)" label="한국어 (Coreano) - Beta"/> + <color_swatch label="" name="effect_color_swatch" tool_tip="Pulse para abrir el selector de color"/> + <combo_box label="Ausente tras:" name="afk"> + <combo_box.item label="2 minutos" name="item0"/> + <combo_box.item label="5 minutos" name="item1"/> + <combo_box.item label="10 minutos" name="item2"/> + <combo_box.item label="30 minutos" name="item3"/> + <combo_box.item label="nunca" name="item4"/> </combo_box> - <check_box label="Compartir el idioma con los objetos" name="language_is_public" tool_tip="Hace que los objetos con script del mundo sepan su idioma preferido."/> + <text name="text_box3"> + Respuesta cuando estoy en el modo ocupado: + </text> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml index 4038940256..c5ecffc026 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml @@ -1,43 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Gráficos" name="Display panel"> - <button label="?" name="GraphicsPreferencesHelpButton"/> - <check_box label="Abrir Second Life en una ventana" name="windowed mode"/> - <text_editor name="FullScreenInfo" width="480"> - Si no está marcado, el visor se mostrará en pantalla completa cuando inicie sesión. - </text_editor> - <text name="WindowSizeLabel"> - Tamaño de la ventana: + <text name="UI Size:"> + Tamaño de la UI: </text> - <combo_box left="124" 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"> - Resolución: + <text name="QualitySpeed"> + Calidad y velocidad: </text> - <combo_box left="124" name="fullscreen combo" /> - <text name="AspectRatioLabel1" tool_tip="ancho / alto"> - Proporción: - </text> - <combo_box left="124" name="aspect_ratio" tool_tip="ancho / alto"> - <combo_box.item name="4:3(StandardCRT)" label="4:3 (Standard CRT)"/> - <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="Detectar automáticamente la proporción" name="aspect_auto_detect" left="295" /> - <text name="HigherText"> - Calidad y - </text> - <text name="QualityText"> - Rendimiento: - </text> - <text name="FasterText" left="95"> + <text left="95" name="FasterText"> El más rápido </text> + <text name="BetterText"> + Mejor + </text> <text name="ShadersPrefText"> Bajo </text> @@ -50,97 +24,83 @@ <text name="ShadersPrefText4"> Ultra </text> - <text name="HigherText2" left="325" > - Más alto - </text> - <text name="QualityText2" left="325" > - calidad - </text> - <check_box label="Personalizar" name="CustomSettings"/> - <panel name="CustomGraphics Panel"> - <text name="ShadersText"> - Shaders: - </text> - <check_box label="Efecto de relieve y brillo" name="BumpShiny"/> - <check_box label="Shaders básicos" name="BasicShaders" tool_tip="Desactivando esta opción puede prevenir fallos en algunos controladores de la tarjeta gráfica."/> - <check_box label="Shaders de la atmósfera" name="WindLightUseAtmosShaders"/> - <check_box label="Reflejos en el agua" name="Reflections"/> - <text name="ReflectionDetailText"> - Objetos reflejados: - </text> - <radio_group name="ReflectionDetailRadio"> - <radio_item name="0" label="Terreno y árboles" /> - <radio_item name="1" label="Todos los objetos estáticos" /> - <radio_item name="2" label="Todos los avatares y objetos" /> - <radio_item name="3" label="Todo" /> - </radio_group> - <text name="AvatarRenderingText"> - Renderización del avatar: - </text> - <check_box label="Avatares simulados" name="AvatarImpostors"/> - <check_box label="Renderizado por hardware" name="AvatarVertexProgram"/> - <check_box label="Ropas del avatar" name="AvatarCloth"/> - <text name="DrawDistanceMeterText1"> - m - </text> - <text name="DrawDistanceMeterText2"> - m - </text> - <slider label="Distancia de dibujo:" name="DrawDistance"/> - <slider label="Núm. máx. de partículas:" name="MaxParticleCount"/> - <slider label="Calidad del procesamiento:" name="RenderPostProcess" label_width="142"/> - <text name="MeshDetailText"> - Detalle de la malla: - </text> - <slider label=" Objetos:" name="ObjectMeshDetail"/> - <slider label=" Prims flexibles:" name="FlexibleMeshDetail"/> - <slider label=" Árboles:" name="TreeMeshDetail"/> - <slider label=" Avatares:" name="AvatarMeshDetail"/> - <slider label=" Terreno:" name="TerrainMeshDetail"/> - <slider label=" Cielo:" name="SkyMeshDetail"/> - <text name="PostProcessText"> - Baja - </text> - <text name="ObjectMeshDetailText"> - Bajo - </text> - <text name="FlexibleMeshDetailText"> - Bajo - </text> - <text name="TreeMeshDetailText"> - Bajo - </text> - <text name="AvatarMeshDetailText"> - Bajo - </text> - <text name="TerrainMeshDetailText"> - Bajo - </text> - <text name="SkyMeshDetailText"> - Bajo - </text> - <text name="LightingDetailText" width="135"> - Detalles de la iluminación: - </text> - <radio_group name="LightingDetailRadio"> - <radio_item name="SunMoon" label="Sólo el Sol y la Luna" /> - <radio_item name="LocalLights" label="Puntos de luz cercanos" /> - </radio_group> - <text name="TerrainDetailText"> - Nivel de detalle del + <panel label="CustomGraphics" name="CustomGraphics Panel"> + <text name="ShadersText"> + Shaders: + </text> + <check_box initial_value="true" label="Efecto de relieve y brillo" name="BumpShiny"/> + <check_box initial_value="true" label="Shaders básicos" name="BasicShaders" tool_tip="Desactivando esta opción puede prevenir fallos en algunos controladores de la tarjeta gráfica."/> + <check_box initial_value="true" label="Shaders de la atmósfera" name="WindLightUseAtmosShaders"/> + <check_box initial_value="true" label="Reflejos en el agua" name="Reflections"/> + <text name="ReflectionDetailText"> + Objetos reflejados: + </text> + <radio_group name="ReflectionDetailRadio"> + <radio_item label="Terreno y árboles" name="0"/> + <radio_item label="Todos los objetos estáticos" name="1"/> + <radio_item label="Todos los avatares y objetos" name="2"/> + <radio_item label="Todo" name="3"/> + </radio_group> + <text name="AvatarRenderingText"> + Renderización del avatar: + </text> + <check_box initial_value="true" label="Avatares simulados" name="AvatarImpostors"/> + <check_box initial_value="true" label="Renderizado por hardware" name="AvatarVertexProgram"/> + <check_box initial_value="true" label="Ropas del avatar" name="AvatarCloth"/> + <slider label="Distancia de dibujo:" name="DrawDistance"/> + <text name="DrawDistanceMeterText2"> + m + </text> + <slider label="Núm. máx. de partículas:" name="MaxParticleCount"/> + <slider label="Calidad del procesamiento:" label_width="142" name="RenderPostProcess"/> + <text name="MeshDetailText"> + Detalle de la malla: + </text> + <slider label=" Objetos:" name="ObjectMeshDetail"/> + <slider label=" Prims flexibles:" name="FlexibleMeshDetail"/> + <slider label=" Árboles:" name="TreeMeshDetail"/> + <slider label=" Avatares:" name="AvatarMeshDetail"/> + <slider label=" Terreno:" name="TerrainMeshDetail"/> + <slider label=" Cielo:" name="SkyMeshDetail"/> + <text name="PostProcessText"> + Baja + </text> + <text name="ObjectMeshDetailText"> + Bajo + </text> + <text name="FlexibleMeshDetailText"> + Bajo + </text> + <text name="TreeMeshDetailText"> + Bajo + </text> + <text name="AvatarMeshDetailText"> + Bajo + </text> + <text name="TerrainMeshDetailText"> + Bajo + </text> + <text name="SkyMeshDetailText"> + Bajo + </text> + <text name="LightingDetailText" width="135"> + Detalles de la iluminación: + </text> + <radio_group name="LightingDetailRadio"> + <radio_item label="Sólo el Sol y la Luna" name="SunMoon" value="0"/> + <radio_item label="Puntos de luz cercanos" name="LocalLights" value="1"/> + </radio_group> + <text name="TerrainDetailText"> + Nivel de detalle del terreno: - </text> - <radio_group name="TerrainDetailRadio" left_delta="60"> - <radio_item name="0" label="Bajo" /> - <radio_item name="2" label="Alto" /> - </radio_group> + </text> + <radio_group left_delta="60" name="TerrainDetailRadio"> + <radio_item label="Bajo" name="0"/> + <radio_item label="Alto" name="2"/> + </radio_group> </panel> - <button label="Configuraciones recomendadas" name="Defaults" width="195" left="110"/> - <button label="Opciones del hardware" label_selected="Opciones del hardware" name="GraphicsHardwareButton" left="315"/> - <panel.string name="resolution_format"> - [RES_X] x [RES_Y] - </panel.string> - <panel.string name="aspect_ratio_text"> - [NUM]:[DEN] - </panel.string> + <button label="Aplicar" label_selected="Aplicar" name="Apply"/> + <button label="Por defecto" left="110" name="Defaults" width="195"/> + <button label="Avanzado" name="Advanced"/> + <button label="Hardware" label_selected="Hardware" left="315" name="GraphicsHardwareButton"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml index cbaa3d96ee..a08e5194e8 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml @@ -1,34 +1,26 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Comunicación" name="im"> - <text name="text_box"> - Mi estado de conexión: + <panel.string name="log_in_to_change"> + Conéctate para que cambie + </panel.string> + <button label="Limpiar el historial" name="clear_cache" tool_tip="Limpiar la imagen de la pantalla de conexión, la última posición, el historial de teleportes, web y caché de las texturas."/> + <text name="cache_size_label_l"> + (Localizaciones, imágenes, web, historial de búsqueda) </text> - <check_box label="Sólo pueden ver si estoy conectado mis amigos y grupos" name="online_visibility"/> - <text name="text_box2"> - Opciones de los MI: + <check_box label="Sólo saben si estoy conectado mis amigos y grupos" name="online_visibility"/> + <check_box label="Sólo pueden llamarme o mandarme un MI mis amigos y grupos" name="voice_call_friends_only_check"/> + <check_box label="Desconectar el micrófono cuando finalicen las llamadas" name="auto_disengage_mic_check"/> + <check_box label="Aceptar las 'cookies'" name="cookies_enabled"/> + <text name="Logs:"> + Registros: </text> - <string name="log_in_to_change"> - inicie sesión para cambiar - </string> - <check_box label="Enviar MI al correo electrónico ([EMAIL])" name="send_im_to_email"/> - <check_box label="Incluir los MI en la consola del chat" name="include_im_in_chat_console"/> - <check_box label="Incluir la hora en los MI" name="show_timestamps_check"/> - <check_box label="Avisar si se conecta un amigo" name="friends_online_notify_checkbox"/> - <text name="text_box3"> - Mensaje en el estado -ocupado: + <check_box label="Guardar en mi ordenador registros del chat" name="log_nearby_chat"/> + <check_box label="Guardar en mi ordenador registros de los MI" name="log_instant_messages"/> + <check_box label="Añadir fecha y hora" name="show_timestamps_check_im"/> + <text name="log_path_desc"> + Localización de los registros: </text> - <text name="text_box4"> - Opciones de los -registros: - </text> - <check_box label="Guardar un registro de los MI en mi ordenador" name="log_instant_messages"/> - <check_box label="Incluir la hora en el registro de los MI" name="log_instant_messages_timestamp"/> - <check_box label="Mostrar el final de la última conversación por MI" name="log_show_history"/> - <check_box label="Guardar un registro del chat en mi ordenador" name="log_chat"/> - <check_box label="Incluir la hora en el registro del chat" name="log_chat_timestamp"/> - <check_box label="Mostrar en el chat la llegada de los MI" name="log_chat_IM"/> - <check_box label="Incluir la fecha junto a la hora" name="log_date_timestamp"/> - <button label="Cambiar la ruta" label_selected="Cambiar la ruta" name="log_path_button" width="120"/> <line_editor left="278" name="log_path_string" right="-20"/> + <button label="Elegir" label_selected="Elegir" name="log_path_button" width="120"/> + <button label="Lista de ignorados" name="block_list"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml index 967626b8d5..68ca63d85f 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml @@ -1,32 +1,46 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Dispositivos y Cámara" name="Input panel"> - <text name=" Mouselook Options:"> +<panel label="Configurar" name="Input panel"> + <button bottom_delta="-40" label="Otros dispositivos" name="joystick_setup_button"/> + <text name="Mouselook:"> Vista subjetiva: </text> - <text name=" Mouse Sensitivity:"> - Sensibilidad del ratón: + <text name=" Mouse Sensitivity"> + Sensibilidad del ratón </text> - <check_box label="Invertir el ratón" name="invert_mouse"/> - <text name=" Auto Fly Options:"> - Vuelo: + <check_box label="Invertir" name="invert_mouse"/> + <text name="Network:"> + Red: </text> - <check_box label="Despegar/Aterrizar pulsando RePág/AvPág" name="automatic_fly"/> - <text name=" Camera Options:"> - Opciones de la cámara: + <text name="Maximum bandwidth"> + Ancho de banda máximo </text> - <text name="camera_fov_label" width="218"> - Ángulo de vista de la cámara: + <text name="text_box2"> + kbps </text> - <slider bottom_delta="-6" width="128" left="326" name="camera_fov" /> - <text name="Camera Follow Distance:" width="218"> - Distancia a la que sigue la cámara: + <check_box label="Personalizar el puerto" name="connection_port_enabled"/> + <spinner label="Número del puerto:" name="connection_port"/> + <text name="cache_size_label_l"> + Tamaño de la caché </text> - <slider bottom_delta="-6" width="128" left="326" name="camera_offset_scale" /> - <check_box label="Reorientar la cámara al editar" name="edit_camera_movement" tool_tip="Usar la reorientación automática de la cámara al entrar y salir del modo de edición"/> - <check_box label="Reorientar la cámara al modificar la apariencia" name="appearance_camera_movement" tool_tip="Usar la reorientación automática de la cámara mientras se modifica la apariencia"/> - <text name="text2"> - Visualización del avatar: + <text name="text_box5"> + MB </text> - <check_box label="Ver el avatar en vista subjetiva" name="first_person_avatar_visible"/> - <button bottom_delta="-40" label="Configurar el joystick" name="joystick_setup_button"/> + <text name="Cache location"> + Localización de la caché: + </text> + <button label="Elegir" label_selected="Elegir" name="set_cache"/> + <button label="Recuperar" label_selected="Reconfigurar" name="reset_cache"/> + <text name="Web:"> + Web: + </text> + <radio_group name="use_external_browser"> + <radio_item label="Usar el navegador incorporado" name="internal" tool_tip="Usa el navegador incorporado para ayuda, enlaces web, etc. Este navegador se abre en una nueva ventana dentro de [APP_NAME]." value="0"/> + <radio_item label="Usar mi navegador (IE, Firefox, Safari)" name="external" tool_tip="Usa tu navegador por defecto para ayuda, enlaces web, etc. No es aconsejable si estás a pantalla completa." value="1"/> + </radio_group> + <check_box initial_value="false" label="Activar web proxy" name="web_proxy_enabled"/> + <text name="Proxy location"> + Localización del proxy: + </text> + <line_editor name="web_proxy_editor" tool_tip="Nombre o dirección IP del proxy que quieres usar"/> + <spinner label="Número de puerto:" name="web_proxy_port"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml index 241f3042fe..053fb00967 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml @@ -1,38 +1,45 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Audio y Vídeo" name="Preference Media panel"> - <slider label="General" name="System Volume"/> +<panel label="Sonidos" name="Preference Media panel"> + <slider label="Volumen general" name="System Volume"/> + <check_box initial_value="true" label="Silenciar cuando minimice" name="mute_when_minimized"/> + <slider label="Botones" name="UI Volume"/> <slider label="Ambiental" name="Wind Volume"/> - <slider label="Sonidos" name="SFX Volume"/> - <slider label="Media" name="Media Volume"/> - <slider label="Interfaz" name="UI Volume"/> - <slider label="Música" name="Music Volume"/> - <slider label="Voz" name="Voice Volume"/> - <text_editor name="voice_unavailable"> - El chat de voz no está disponible - </text_editor> - <check_box label="Activar el chat de voz" name="enable_voice_check"/> - <radio_group name="ear_location"> - <radio_item name="0" label="Oír el chat desde la posición de la cámara." /> - <radio_item name="1" label="Oír el chat desde la posición del avatar." /> - </radio_group> - <button label="Configuración de los dispositivos" name="device_settings_btn" width="210" /> - <text name="muting_text"> - Volumen: - </text> - <text name="streaming_prefs_text"> - Preferencias multimedia: + <slider label="Efectos de sonido" name="SFX Volume"/> + <slider label="Música en streaming" name="Music Volume"/> + <check_box label="Activada" name="music_enabled"/> + <slider label="Medios de comunicación" name="Media Volume"/> + <check_box label="Activados" name="enable_media"/> + <slider label="Chat de voz" name="Voice Volume"/> + <check_box label="Activada" name="enable_voice_check"/> + <check_box label="Permitir la ejecución automática de los media" name="media_auto_play_btn" tool_tip="Marca esto para permitir la ejecución automática de los media" value="Sí"/> + <check_box label="Ejecutar para otros avatares los media anexados" name="media_show_on_others_btn" tool_tip="Desmarcar esto esconderá los media anexados a otros avatares cercanos" value="Sí"/> + <text name="voice_chat_settings"> + Configuración del chat de voz </text> - <text name="audio_prefs_text"> - Preferencias de sonido: + <text name="Listen from"> + Oír desde: </text> - <panel label="Volumen" name="Volume Panel"/> - <check_box label="Si hay música, reproducirla en streaming" name="streaming_music"/> - <check_box label="Si hay media, reproducirlos en streaming" name="streaming_video"/> - <check_box label="Reproducir automáticamente los media" name="auto_streaming_video"/> - <check_box label="Silenciar el sonido al minimizar la ventana" name="mute_when_minimized"/> - <slider label="Efecto Doppler" name="Doppler Effect" label_width="140" width="270" /> - <slider label="Distancia de escucha" name="Distance Factor" label_width="140" width="270" /> - <slider label="Nivel de atenuación" name="Rolloff Factor" label_width="140" width="270" /> - <spinner label="Avisar de transacción de L$ desde" name="L$ Change Threshold" label_width="195" width="259"/> - <spinner label="Avisar del estado de la vida desde" name="Health Change Threshold" label_width="195" width="259"/> + <radio_group name="ear_location"> + <radio_item label="La posición de la cámara" name="0"/> + <radio_item label="La posición del avatar" name="1"/> + </radio_group> + <button label="Dispositivos de entrada y salida" name="device_settings_btn" width="210"/> + <panel label="Configuración de dispositivos" name="device_settings_panel"> + <panel.string name="default_text"> + Por defecto + </panel.string> + <text name="Input"> + Entrada + </text> + <text name="My volume label"> + Mi volumen: + </text> + <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Cambia el volumen usando este deslizable"/> + <text name="wait_text"> + Por favor, espera + </text> + <text name="Output"> + Salida + </text> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/es/panel_prim_media_controls.xml new file mode 100644 index 0000000000..037aae2e43 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_prim_media_controls.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="MediaControls"> + <string name="min_width"> + 300 + </string> + <string name="min_height"> + 75 + </string> + <string name="zoom_medium_padding"> + 1.1 + </string> + <string name="top_world_view_avoid_zone"> + 50 + </string> + <layout_stack name="progress_indicator_area"> + <panel name="media_progress_indicator"> + <progress_bar name="media_progress_bar" tool_tip="El media se está cargando"/> + </panel> + </layout_stack> + <layout_stack name="media_controls"> + <layout_panel name="back"> + <button name="back_btn" tool_tip="Navegar hacia atrás"/> + </layout_panel> + <layout_panel name="fwd"> + <button name="fwd_btn" tool_tip="Navegar hacia adelante"/> + </layout_panel> + <layout_panel name="home"> + <button name="home_btn" tool_tip="Página inicial"/> + </layout_panel> + <layout_panel name="media_stop"> + <button name="media_stop_btn" tool_tip="Para los media"/> + </layout_panel> + <layout_panel name="reload"> + <button name="reload_btn" tool_tip="Recargar"/> + </layout_panel> + <layout_panel name="stop"> + <button name="stop_btn" tool_tip="Parar la carga"/> + </layout_panel> + <layout_panel name="play"> + <button name="play_btn" tool_tip="Ejecutar los media"/> + </layout_panel> + <layout_panel name="pause"> + <button name="pause_btn" tool_tip="Pausar los media"/> + </layout_panel> + <layout_panel name="media_address"> + <line_editor name="media_address_url" tool_tip="URL de los media"/> + <layout_stack name="media_address_url_icons"> + <layout_panel> + <icon name="media_whitelist_flag" tool_tip="Lista Blanca activada"/> + </layout_panel> + <layout_panel> + <icon name="media_secure_lock_flag" tool_tip="Navegación segura"/> + </layout_panel> + </layout_stack> + </layout_panel> + <layout_panel name="media_play_position"> + <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Progreso de la película"/> + </layout_panel> + <layout_panel name="skip_back"> + <button name="skip_back_btn" tool_tip="Hacia atrás"/> + </layout_panel> + <layout_panel name="skip_forward"> + <button name="skip_forward_btn" tool_tip="Hacia adelante"/> + </layout_panel> + <layout_panel name="media_volume"> + <button name="media_mute_button" tool_tip="Silenciar este media"/> + <slider name="volume_slider" tool_tip="Volumen de los media"/> + </layout_panel> + <layout_panel name="zoom_frame"> + <button name="zoom_frame_btn" tool_tip="Zoom a la mitad"/> + </layout_panel> + <layout_panel name="close"> + <button name="close_btn" tool_tip="Alejar el zoom"/> + </layout_panel> + <layout_panel name="new_window"> + <button name="new_window_btn" tool_tip="Abrir la URL en el navegador"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_profile.xml b/indra/newview/skins/default/xui/es/panel_profile.xml index 218e03dcce..6347c0e047 100644 --- a/indra/newview/skins/default/xui/es/panel_profile.xml +++ b/indra/newview/skins/default/xui/es/panel_profile.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_profile"> +<panel label="Perfil" name="panel_profile"> <string name="CaptionTextAcctInfo"> [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] @@ -11,4 +11,42 @@ http://www.secondlife.com/account/partners.php?lang=es </string> <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=es-ES"/> + <string name="no_partner_text" value="Ninguno"/> + <string name="no_group_text" value="Ninguno"/> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) + </string> + <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="Mundo real:"/> + </panel> + <text name="title_member_text" value="Residente desde:"/> + <text name="title_acc_status_text" value="Estado de la cuenta:"/> + <text name="title_partner_text" value="Compañero/a:"/> + <panel name="partner_data_panel"> + <name_box initial_value="(obteniendo)" name="partner_text"/> + </panel> + <text name="title_groups_text" value="Grupos:"/> + </panel> + </scroll_container> + </layout_panel> + <layout_panel name="profile_buttons_panel"> + <button label="Añadir como amigo" name="add_friend" tool_tip="Ofrecer amistad a este Residente"/> + <button label="MI" name="im" tool_tip="Abrir una sesión de mensajes instantáneos"/> + <button label="Llamar" name="call" tool_tip="Llamar a este Residente"/> + <button label="Mapa" name="show_on_map_btn" tool_tip="Mostrar al Residente en el mapa"/> + <button label="Teleportar" name="teleport" tool_tip="Ofrecer teleporte"/> + <button label="▼" name="overflow_btn" tool_tip="Pagar dinero o dar algo del inventario con el Residente"/> + </layout_panel> + <layout_panel name="profile_me_buttons_panel"> + <button label="Editar el perfil" name="edit_profile_btn" tool_tip="Modifica tu información personal"/> + <button label="Modificar la apariencia" name="edit_appearance_btn" tool_tip="Crea o modifica tu apariencia: tu físico, ropas, etc."/> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_profile_view.xml b/indra/newview/skins/default/xui/es/panel_profile_view.xml new file mode 100644 index 0000000000..b556346051 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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"> + Conectado/a + </string> + <string name="status_offline"> + Desconectado/a + </string> + <text_editor name="user_name" value="(Cargando...)"/> + <text name="status" value="Conectado/a"/> + <tab_container name="tabs"> + <panel label="PERFIL" name="panel_profile"/> + <panel label="DESTACADOS" name="panel_picks"/> + <panel label="NOTAS Y PRIVACIDAD" name="panel_notes"/> + </tab_container> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_region_covenant.xml b/indra/newview/skins/default/xui/es/panel_region_covenant.xml index 220479098b..0a5d7c2786 100644 --- a/indra/newview/skins/default/xui/es/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/es/panel_region_covenant.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Contrato" name="Covenant"> <text name="estate_section_lbl"> - Estado: + Estado </text> <text name="estate_name_lbl"> Nombre: @@ -22,7 +22,7 @@ Última modificación el miér. 31 de dic. de 1969, 16:00:00 </text> <button label="?" name="covenant_help"/> - <text_editor name="covenant_editor" bottom="-263" height="178" > + <text_editor bottom="-263" height="178" name="covenant_editor"> No se ha aportado un contrato para este estado. </text_editor> <button label="Cambiar" name="reset_covenant"/> @@ -30,11 +30,11 @@ Los cambios en el contrato se mostrarán en todas las parcelas del estado. </text> - <text name="covenant_instructions" bottom_delta="-31" > - Para cambiar el contrato de este estado, arrastre y suelte una nota. + <text bottom_delta="-31" name="covenant_instructions"> + Arrastra y suelta una nota para cambiar el contrato de este estado. </text> <text name="region_section_lbl"> - Región: + Región </text> <text name="region_name_lbl"> Nombre: diff --git a/indra/newview/skins/default/xui/es/panel_region_debug.xml b/indra/newview/skins/default/xui/es/panel_region_debug.xml index a7999cc54d..64162220a6 100644 --- a/indra/newview/skins/default/xui/es/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/es/panel_region_debug.xml @@ -7,11 +7,11 @@ desconocida </text> <check_box label="Desactivar los scripts" name="disable_scripts_check" tool_tip="Descativar todos los scripts en esta región"/> - <button label="?" name="disable_scripts_help" left="215"/> + <button label="?" left="215" name="disable_scripts_help"/> <check_box label="Desactivar las colisiones" name="disable_collisions_check" tool_tip="Desactiva las colisiones (no las de avatares) en esta región"/> - <button label="?" name="disable_collisions_help" left="215"/> + <button label="?" left="215" name="disable_collisions_help"/> <check_box label="Desactivar las propiedades físicas" name="disable_physics_check" tool_tip="Desactiva toda la física en esta región"/> - <button label="?" name="disable_physics_help" left="215"/> + <button label="?" left="215" name="disable_physics_help"/> <button label="Aplicar" name="apply_btn"/> <text name="objret_text_lbl" width="130"> Devolver el objeto @@ -22,18 +22,18 @@ <line_editor name="target_avatar_name"> (nadie) </line_editor> - <button label="Elegir..." name="choose_avatar_btn"/> + <button label="Elegir" name="choose_avatar_btn"/> <text name="options_text_lbl"> Opciones: </text> - <check_box label="Devolver sólo los objetos con scripts" name="return_scripts" tool_tip="Devolver sólo los objetos que tengan scripts."/> - <check_box label="Devolver sólo los objetos que están en terreno de otro" name="return_other_land" tool_tip="Devolver sólo los objetos que están en terreno de otro"/> - <check_box label="Devolver los objetos de cualquier región de este estado" name="return_estate_wide" tool_tip="Devolver los objetos de todas las regiones que forman este estado"/> + <check_box label="Con scripts" name="return_scripts" tool_tip="Devolver sólo los objetos con scripts"/> + <check_box label="En el terreno de otros" name="return_other_land" tool_tip="Devolver sólo los objetos que están en terreno de otro"/> + <check_box label="En cada región de este estado" name="return_estate_wide" tool_tip="Devolver los objetos de todas las regiones que forman este estado"/> <button label="Devolver" name="return_btn"/> - <button width="280" label="Listar los objetos que colisionan..." name="top_colliders_btn" tool_tip="Lista de los objetos con más posibles colisiones potenciales"/> - <button label="?" name="top_colliders_help" left="297"/> - <button width="280" label="Listar los scripts según su uso..." name="top_scripts_btn" tool_tip="Lista de los objetos que más tiempo emplean ejecutando scripts"/> - <button label="?" name="top_scripts_help" left="297"/> + <button label="Listar los objetos que colisionan..." name="top_colliders_btn" tool_tip="Lista de los objetos con más posibles colisiones potenciales" width="280"/> + <button label="?" left="297" name="top_colliders_help"/> + <button label="Listar los scripts según su uso..." name="top_scripts_btn" tool_tip="Lista de los objetos que más tiempo emplean ejecutando scripts" width="280"/> + <button label="?" left="297" name="top_scripts_help"/> <button label="Reiniciar la región" name="restart_btn" tool_tip="Cuenta atrás de 2 minutos y reiniciar la región"/> <button label="?" name="restart_help"/> <button label="Retrasar el reinicio" name="cancel_restart_btn" tool_tip="Retrasar una hora el reinicio de la región"/> diff --git a/indra/newview/skins/default/xui/es/panel_region_estate.xml b/indra/newview/skins/default/xui/es/panel_region_estate.xml index f16ec89cb0..1a230166fb 100644 --- a/indra/newview/skins/default/xui/es/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/es/panel_region_estate.xml @@ -1,8 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Estado" name="Estate"> <text name="estate_help_text"> - Los cambios en las configuraciones de esta -pestaña afectarán a todas las regiones del estado. + En esta pestaña, los cambios en la configuración afectarán a todas las regiones del estado. </text> <text name="estate_text"> Estado: @@ -11,7 +10,7 @@ pestaña afectarán a todas las regiones del estado. (desconocido) </text> <text name="owner_text"> - Propietario: + Propietario del Estado: </text> <text name="estate_owner"> (desconocido) @@ -24,10 +23,10 @@ pestaña afectarán a todas las regiones del estado. <check_box label="Permitir el acceso público" name="externally_visible_check"/> <button label="?" name="externally_visible_help"/> <text name="Only Allow"> - Impedir el acceso a Residentes... + Restringir el acceso a cuentas verificadas por: </text> - <check_box label="sin información de pago archivada" name="limit_payment" tool_tip="Impedir el acceso a los residentes no identificados."/> - <check_box label="que no han verificado si son adultos" name="limit_age_verified" tool_tip="Impedir el acceso a residentes que no hayan verificado su edad. Para más información, vea support.secondlife.com"/> + <check_box label="Información de pago aportada" name="limit_payment" tool_tip="Expulsar a los Residentes no identificados."/> + <check_box label="Verificación de la edad" name="limit_age_verified" tool_tip="Expulsa a los Residentes que no hayan verificado su edad. Para más información, véase [SUPPORT_SITE].."/> <check_box label="Permitir el chat de voz" name="voice_chat_check"/> <button label="?" name="voice_chat_help"/> <check_box label="Permitir el teleporte a cualquier punto" name="allow_direct_teleport"/> diff --git a/indra/newview/skins/default/xui/es/panel_region_general_layout.xml b/indra/newview/skins/default/xui/es/panel_region_general_layout.xml new file mode 100644 index 0000000000..827898973a --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_region_general_layout.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Región" name="General"> + <text name="region_text_lbl"> + Región: + </text> + <text name="region_text"> + desconocido + </text> + <text name="version_channel_text_lbl"> + Versión: + </text> + <text name="version_channel_text"> + desconocido + </text> + <text name="region_type_lbl"> + Tipo: + </text> + <text name="region_type"> + desconocido + </text> + <check_box label="No permitir modificar el terreno" name="block_terraform_check"/> + <check_box label="Prohibir volar" name="block_fly_check"/> + <check_box label="Permitir el daño" name="allow_damage_check"/> + <check_box label="Impedir los 'empujones'" name="restrict_pushobject"/> + <check_box label="Permitir la reventa del terreno" name="allow_land_resell_check"/> + <check_box label="Permitir unir/dividir el terreno" name="allow_parcel_changes_check"/> + <check_box label="Bloquear el mostrar el terreno en la búsqueda" name="block_parcel_search_check" tool_tip="Permitir que la gente vea esta región y sus parcelas en los resultados de la búsqueda"/> + <spinner label="Nº máximo de avatares" name="agent_limit_spin"/> + <spinner label="Plus de objetos" name="object_bonus_spin"/> + <text label="Calificación" name="access_text"> + Calificación: + </text> + <combo_box label="Moderado" name="access_combo"> + <combo_box.item label="Adulto" name="Adult"/> + <combo_box.item label="Moderado" name="Mature"/> + <combo_box.item label="General" name="PG"/> + </combo_box> + <button label="Aplicar" name="apply_btn"/> + <button label="Teleportar a su Base a un usuario..." name="kick_btn"/> + <button label="Teleportar a sus Bases a todos los usuarios..." name="kick_all_btn"/> + <button label="Enviar un mensaje a toda la región..." name="im_btn"/> + <button label="Administrar el Punto de Teleporte..." name="manage_telehub_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_region_texture.xml b/indra/newview/skins/default/xui/es/panel_region_texture.xml index 5540358f97..ecca21e672 100644 --- a/indra/newview/skins/default/xui/es/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/es/panel_region_texture.xml @@ -48,7 +48,7 @@ Estos valores representan la gama de mezclas para las texturas superiores. </text> <text name="height_text_lbl11"> - Midiendo en metros, el valor BAJA es la altura MÁXIMA de la textura #1, + Midiendo en metros, el valor BAJO es la altura MÁXIMA de la textura #1, y el valor ALTO es la altura MÍNIMA de la textura #4. </text> <text name="height_text_lbl12"> y el valor ALTA es la altura MÍNIMA de la textura #4. diff --git a/indra/newview/skins/default/xui/es/panel_script_ed.xml b/indra/newview/skins/default/xui/es/panel_script_ed.xml new file mode 100644 index 0000000000..c73db729fe --- /dev/null +++ b/indra/newview/skins/default/xui/es/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"> + Cargando... + </panel.string> + <panel.string name="can_not_view"> + No puedes ver ni editar este script. Ha sido configurado como "no copiable". Necesitas todos los permisos para ver o editar un script que está dentro de un objeto. + </panel.string> + <panel.string name="public_objects_can_not_run"> + Los objetos públicos no pueden ejecutar scripts + </panel.string> + <panel.string name="script_running"> + Ejecutándose + </panel.string> + <panel.string name="Title"> + Script: [NAME] + </panel.string> + <text_editor name="Script Editor"> + Cargando... + </text_editor> + <button label="Guardar" label_selected="Guardar" name="Save_btn"/> + <combo_box label="Insertar..." name="Insert..."/> + <menu_bar name="script_menu"> + <menu label="Archivo" name="File"> + <menu_item_call label="Guardar" name="Save"/> + <menu_item_call label="Deshacer todos los cambios" name="Revert All Changes"/> + </menu> + <menu label="Editar" name="Edit"> + <menu_item_call label="Deshacer" name="Undo"/> + <menu_item_call label="Rehacer" name="Redo"/> + <menu_item_call label="Cortar" name="Cut"/> + <menu_item_call label="Copiar" name="Copy"/> + <menu_item_call label="Pegar" name="Paste"/> + <menu_item_call label="Seleccionar todo" name="Select All"/> + <menu_item_call label="Deseleccionar" name="Deselect"/> + <menu_item_call label="Buscar / Reemplazar..." name="Search / Replace..."/> + </menu> + <menu label="Ayuda" name="Help"> + <menu_item_call label="Ayuda..." name="Help..."/> + <menu_item_call label="Ayuda de palabras clave..." name="Keyword Help..."/> + </menu> + </menu_bar> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/es/panel_script_limits_my_avatar.xml new file mode 100644 index 0000000000..9334d58af2 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_script_limits_my_avatar.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="MI AVATAR" name="script_limits_my_avatar_panel"> + <text name="script_memory"> + Uso de scripts en el avatar + </text> + <text name="loading_text"> + Cargando... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="Tamaño (kb)" name="size"/> + <scroll_list.columns label="URLs" name="urls"/> + <scroll_list.columns label="Nombre del objeto" name="name"/> + <scroll_list.columns label="Localización" name="location"/> + </scroll_list> + <button label="Actualizar la lista" name="refresh_list_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/es/panel_script_limits_region_memory.xml new file mode 100644 index 0000000000..37dc0a576c --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_script_limits_region_memory.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="MEMORIA DE LA REGIÓN" name="script_limits_region_memory_panel"> + <text name="script_memory"> + Memoria de los scripts de la parcela + </text> + <text name="loading_text"> + Cargando... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="Tamaño (kb)" name="size"/> + <scroll_list.columns label="URLs" name="urls"/> + <scroll_list.columns label="Nombre del objeto" name="name"/> + <scroll_list.columns label="Propietario del objeto" name="owner"/> + <scroll_list.columns label="Parcela" name="parcel"/> + <scroll_list.columns label="Localización" name="location"/> + </scroll_list> + <button label="Actualizar la lista" name="refresh_list_btn"/> + <button label="Realzar" name="highlight_btn"/> + <button label="Devolver" name="return_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_side_tray.xml b/indra/newview/skins/default/xui/es/panel_side_tray.xml new file mode 100644 index 0000000000..4e9834063b --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_side_tray.xml @@ -0,0 +1,29 @@ +<?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="Manejar la barra lateral." name="sidebar_openclose" tab_title="Barra lateral"/> + <sidetray_tab description="Base." name="sidebar_home" tab_title="Home"> + <panel label="base" name="panel_home"/> + </sidetray_tab> + <sidetray_tab description="Edita tu perfil público y tus destacados." name="sidebar_me" tab_title="My Profile"> + <panel_container name="panel_container"> + <panel label="Yo" name="panel_me"/> + </panel_container> + </sidetray_tab> + <sidetray_tab description="Encuentra a tus amigos, contactos y gente que esté cerca." name="sidebar_people" tab_title="People"> + <panel_container name="panel_container"> + <panel label="Perfil del grupo" name="panel_group_info_sidetray"/> + <panel label="Residentes y objetos ignorados" name="panel_block_list_sidetray"/> + </panel_container> + </sidetray_tab> + <sidetray_tab description="Encontrar lugares donde ir o que ya visitaste." label="Lugares" name="sidebar_places" tab_title="Places"> + <panel label="Lugares" name="panel_places"/> + </sidetray_tab> + <sidetray_tab description="Mira tu inventario." name="sidebar_inventory" tab_title="My Inventory"> + <panel label="Modificar el inventario" name="sidepanel_inventory"/> + </sidetray_tab> + <sidetray_tab description="Cambia tu apariencia y tu 'look' actual." name="sidebar_appearance" tab_title="My Appearance"> + <panel label="Modificar la apariencia" name="sidepanel_appearance"/> + </sidetray_tab> +</side_tray> diff --git a/indra/newview/skins/default/xui/es/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/es/panel_side_tray_tab_caption.xml new file mode 100644 index 0000000000..3633b0ccaa --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Panel lateral"/> + <button name="show_help" tool_tip="Ver ayuda"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/es/panel_stand_stop_flying.xml new file mode 100644 index 0000000000..350aec9c69 --- /dev/null +++ b/indra/newview/skins/default/xui/es/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="Levantarme" name="stand_btn" tool_tip="Pulsa aquí para levantarte."/> + <button label="Dejar de volar" name="stop_fly_btn" tool_tip="Dejar de volar"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_status_bar.xml b/indra/newview/skins/default/xui/es/panel_status_bar.xml index 31cde7d237..4226744ae9 100644 --- a/indra/newview/skins/default/xui/es/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/es/panel_status_bar.xml @@ -1,38 +1,31 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="status"> - <text name="ParcelNameText" tool_tip="Nombre de la parcela en la que está. Pulse Acerca del terreno."> - el nombre de la parcela va aquí - </text> - <text name="BalanceText" tool_tip="Saldo de su cuenta"> - Cargando... - </text> - <button label="" label_selected="" name="buycurrency" tool_tip="Comprar dinero"/> - <text name="TimeText" tool_tip="Hora actual (costa oeste EE.UU.)"> - 12:00 AM - </text> - <string name="StatBarDaysOfWeek"> + <panel.string name="StatBarDaysOfWeek"> Domingo:Lunes:Martes:Miércoles:Jueves:Viernes:Sábado - </string> - <string name="StatBarMonthsOfYear"> + </panel.string> + <panel.string name="StatBarMonthsOfYear"> Enero:Febrero:Marzo:Abril:Mayo:Junio:Julio:Agosto:Septiembre:Octubre:Noviembre:Diciembre - </string> - <button label="" label_selected="" name="scriptout" tool_tip="Errores y alertas de los scripts"/> - <button label="" label_selected="" name="health" tool_tip="Vida"/> - <text name="HealthText" tool_tip="Vida"> - 100% - </text> - <button label="" label_selected="" name="no_fly" tool_tip="Prohibido volar"/> - <button label="" label_selected="" name="no_build" tool_tip="No se permite Construir/Renderizar"/> - <button label="" label_selected="" name="no_scripts" tool_tip="No se permiten los scripts"/> - <button label="" label_selected="" name="restrictpush" tool_tip="Sin 'empujones'"/> - <button label="" label_selected="" name="status_no_voice" tool_tip="Aquí no está disponible la voz"/> - <button label="" label_selected="" name="buyland" tool_tip="Comprar esta parcela"/> - <line_editor label="Buscar" name="search_editor" tool_tip="Buscar en [SECOND_LIFE]"/> - <button label="" label_selected="" name="search_btn" tool_tip="Buscar en [SECOND_LIFE]"/> - <string name="packet_loss_tooltip"> + </panel.string> + <panel.string name="packet_loss_tooltip"> Pérdida de paquetes - </string> - <string name="bandwidth_tooltip"> + </panel.string> + <panel.string name="bandwidth_tooltip"> Ancho de 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"> + [AMT] L$ + </panel.string> + <button label="" label_selected="" name="buycurrency" tool_tip="Mi saldo"/> + <button label="Comprar L$" name="buyL" tool_tip="Pulsa para comprar más L$"/> + <text name="TimeText" tool_tip="Hora actual (Pacífico)"> + 24:00 AM PST + </text> + <button name="media_toggle_btn" tool_tip="Inicia/Detiene todos los media (música, vídeo, páginas web)"/> + <button name="volume_btn" tool_tip="Control general del volumen"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_teleport_history.xml b/indra/newview/skins/default/xui/es/panel_teleport_history.xml new file mode 100644 index 0000000000..a0ee30e8f6 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_teleport_history.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="Teleport History"> + <accordion name="history_accordion"> + <accordion_tab name="today" title="Hoy"/> + <accordion_tab name="yesterday" title="Ayer"/> + <accordion_tab name="2_days_ago" title="Hace 2 días"/> + 5 + <accordion_tab name="3_days_ago" title="Hace 3 días"/> + <accordion_tab name="4_days_ago" title="Hace 4 días"/> + <accordion_tab name="5_days_ago" title="Hace 5 días"/> + <accordion_tab name="6_days_and_older" title="6 y más días"/> + <accordion_tab name="1_month_and_older" title="1 mes y más"/> + <accordion_tab name="6_months_and_older" title="6 y más meses"/> + </accordion> + <panel name="bottom_panel"> + <button name="gear_btn" tool_tip="Ver más opciones"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/es/panel_teleport_history_item.xml new file mode 100644 index 0000000000..479af3f2bf --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_teleport_history_item.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="teleport_history_item"> + <button name="profile_btn" tool_tip="Muestra la información del ítem"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_world_map.xml b/indra/newview/skins/default/xui/es/panel_world_map.xml index 7cb4009422..77cec6b60b 100644 --- a/indra/newview/skins/default/xui/es/panel_world_map.xml +++ b/indra/newview/skins/default/xui/es/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"> + Cargando... + </panel.string> + <panel.string name="InvalidLocation"> + Localización inválida + </panel.string> <panel.string name="world_map_north"> N </panel.string> diff --git a/indra/newview/skins/default/xui/es/role_actions.xml b/indra/newview/skins/default/xui/es/role_actions.xml index da9a820eb8..14df3d67ca 100644 --- a/indra/newview/skins/default/xui/es/role_actions.xml +++ b/indra/newview/skins/default/xui/es/role_actions.xml @@ -1,199 +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="Estas capacidades incluyen poderes para añadir o quitar miembros del grupo, y para pemitir que se sumen nuevos miembros sin necesidad de invitación." - name="Membership"> - <action description="Invitar personas al grupo" - longdescription="Invitar a personas al grupo usando el botón 'Invitar a un nuevo miembro' en Miembros y Roles > subpestaña Miembros." - name="member invite" value="1" /> - <action description="Expulsar a miembros del grupo" - longdescription="Expulsar a miembros del grupo usando el botón 'Expulsar del grupo' en Miembros y Roles > subpestaña Miembros. Un propietario puede expulsar a cualquiera, excepto a otro propietario. Si usted no es un propietario, un miembro del grupo puede expulsarle sólo si tiene concedida tal capacidad específica. Para quitar capacidades a los miembros, usted debe tener la de 'Quitar capacidades a miembros'." - name="member eject" value="2" /> - <action - description="Activar/desactivar 'Inscripción libre' y cambiar 'Cuota de inscripción'" - longdescription="Activar/desactivar 'Inscripción libre' para permitir o no que se unan sin invitación nuevos miembros, y cambiar la 'Cuota de inscripción' en la sección Preferencias del grupo de la pestaña General." - name="member options" value="3" /> + <action_set description="Estas capacidades incluyen poderes para añadir o quitar miembros del grupo, y para pemitir que se sumen nuevos miembros sin necesidad de invitación." name="Membership"> + <action description="Invitar personas al grupo" longdescription="Invitar a gente a este grupo usando el botón 'Invitar' en la sección Roles > pestaña Miembros." name="member invite" value="1"/> + <action description="Expulsar a miembros del grupo" longdescription="Expulsar a miembros de este grupo usando el botón 'Expulsar' en la sección Roles > pestaña Miembros. Un propietario puede expulsar a cualquiera, excepto a otro propietario. Si no eres un propietario, un miembro puede ser expulsado única y exclusivamente si está en el rol de Cualquiera y NO en otros roles. Para quitar roles a los miembros, tienes que tener la capacidad de 'Quitar roles a los miembros'." name="member eject" value="2"/> + <action description="Cambiar 'Inscripción abierta' y 'Cuota de inscripción'" longdescription="En la sección General, cambiar la 'Inscripción abierta' -que permite entrar al grupo sin invitación- y la 'Cuota de inscripción'." name="member options" value="3"/> </action_set> - <action_set - description="Estas habilidades incluyen el poder añadir, quitar y cambiar roles, asignarlos a miembros, y darles capacidades." - name="Roles"> - <action description="Crear nuevos roles" - longdescription="Crear nuevos roles en Miembros y Roles > pestaña Roles > botón Crear un rol nuevo." - name="role create" value="4" /> - <action description="Borrar roles" - longdescription="Borrar roles en Miembros y Roles > pestaña Roles > botón Eliminar el rol." - name="role delete" value="5" /> - <action description="Cambiar nombres de roles, títulos y descripciones" - longdescription="Cambiar el nombre del rol que elija, su etiqueta y descripción en la parte media de la pestaña Miembros y Roles." - name="role properties" value="6" /> - <action description="Designar miembros para el rol del asignador" - longdescription="Designar miembros para un rol en la sección Roles asignados de la pestaña Miembros y Roles > subpestaña Miembros. Un miembro con este poder sólo puede asignar a otros el rol que él posee." - name="role assign member limited" value="7" /> - <action description="Designar miembros para cualquier rol" - longdescription="Designar miembros para cualquier rol en la sección Roles asignados de la pestaña Miembros y Roles > subpestaña Miembros. *AVISO* Todos los miembros con esta capacidad podrán asignarse a sí mismos -y a otros miembros- roles con mayores poderes de los que actualmente tienen. Potencialmente, podrían elevarse hasta poderes cercanos a los del propietario. Asegúrese de lo que está haciendo antes de otorgar esta capacidad." - name="role assign member" value="8" /> - <action description="Quitar capacidades a los miembros" - longdescription="Quitar capacidades a los miembros en la sección Capacidades asignadas de Miembros y Roles > subpestaña Roles. No se pueden quitar a los Propietarios." - name="role remove member" value="9" /> - <action description="Añadir o quitar capacidades a los roles" - longdescription="Añadir o quitar capacidades a los roles en la sección Capacidades asignadas de Miembros y Roles > subpestaña Roles. *AVISO* Todos los miembros con esta capacidad podrán asignarse a sí mismos -y a otros miembros- roles con mayores poderes de los que actualmente tienen. Potencialmente, podrían elevarse hasta poderes cercanos a los del propietario. Asegúrese de lo que está haciendo antes de otorgar esta capacidad." - name="role change actions" value="10" /> + <action_set description="Estas habilidades incluyen el poder añadir, quitar y cambiar roles, asignarlos a miembros, y darles capacidades." name="Roles"> + <action description="Crear nuevos roles" longdescription="Crear roles nuevos en la sección Roles > pestaña Roles." name="role create" value="4"/> + <action description="Borrar roles" longdescription="Borrar roles en la sección Roles > pestaña Roles." name="role delete" value="5"/> + <action description="Cambiar el nombre, la etiqueta y la descripción de los roles, así como qué miembros se muestran públicamente en ese rol" longdescription="Cambiar el nombre, la etiqueta y la descripción de los roles, así como qué miembros se muestran públicamente en ese rol. Se hace seleccionando el rol, dentro de la sección Roles > pestaña Roles." name="role properties" value="6"/> + <action description="Designar miembros para el rol del asignador" longdescription="Añadir miembros a los roles en la lista de Roles asignados (sección Roles > pestaña Miembros). Un miembro con esta capacidad sólo puede añadir miembros a los roles que tenga él mismo." name="role assign member limited" value="7"/> + <action description="Designar miembros para cualquier rol" longdescription="Designar miembros para cualquier rol en la lista de Roles asignados (sección Roles > pestaña Miembros). *AVISO* Todos los miembros que tengan un rol con esta capacidad podrán asignarse a sí mismos -y a otros miembros que no sean los propietarios- roles con mayores poderes de los que actualmente tienen. Potencialmente, podrían elevarse hasta poderes cercanos a los del propietario. Asegúrate de lo que estás haciendo antes de otorgar esta capacidad." name="role assign member" value="8"/> + <action description="Quitar capacidades a los miembros" longdescription="Quitar miembros de los roles en la lista de roles asignados (sección Roles > pestaña Miembros). No se puede quitar a los Propietarios." name="role remove member" value="9"/> + <action description="Añadir o quitar capacidades a los roles" longdescription="Asignar y quitar capacidades a cada rol en la lista de capacidades permitidas (sección Roles > pestaña Roles). *AVISO* Todos los miembros que tengan un rol con esta capacidad podrán asignarse a sí mismos -y a otros miembros que no sean los propietarios- todas las capacidades. Potencialmente, podrían elevarse hasta poderes cercanos a los del propietario. Asegúrate de lo que estás haciendo antes de otorgar esta capacidad." name="role change actions" value="10"/> </action_set> - <action_set - description="Estas capacidades incluyen poderes para modificar la identidad del grupo, como su visibilidad pública, su carta o su emblema." - name="Group Identity"> - <action - description="Cambiar la carta, emblema, 'Mostrar en la búsqueda', y qué miembros serán visibles en la información del grupo" - longdescription="Cambiar la carta, emblema, 'Mostrar en la búsqueda', y qué miembros serán visibles en la información del grupo de la pestaña General." - name="group change identity" value="11" /> + <action_set description="Estas capacidades incluyen poderes para modificar la identidad del grupo, como su visibilidad pública, su carta o su emblema." name="Group Identity"> + <action description="Cambiar la carta, emblema, 'Mostrar en la búsqueda', y qué miembros serán visibles en la información del grupo" longdescription="Cambia la carta, emblema y 'Mostrar en la búsqueda'. Se hace en la sección General." name="group change identity" value="11"/> </action_set> - <action_set - description="Estas capacidades incluyen poderes para transferir, modificar y vender terrenos del grupo. Vea el menú Mundo > Acerca del terreno, o pulse con el botón derecho en el terreno y seleccione 'Acerca del terreno...', o pulse en la información de la parcela en la barra superior del menú." - name="Parcel Management"> - <action description="Transferir y comprar terreno para el grupo" - longdescription="Transferir y comprar terreno para el grupo. Se hace en Acerca del terreno > pestaña General." - name="land deed" value="12" /> - <action description="Abandonar al terreno a favor de Governor Linden" - longdescription="Abandonar al terreno a favor de Governor Linden. *AVISO* Todos los miembros con esta capacidad pueden abandonar terreno perteneciente al grupo en Acerca del terreno > pestaña General, devolviendo la posesión a Linden ¡gratuitamente! Asegúrese de lo que está haciendo antes de otorgar esta capacidad." - name="land release" value="13" /> - <action description="Vender terreno" - longdescription="Vender terreno. *AVISO* Todos los miembros con esta capacidad pueden vender terreno perteneciente al grupo -¡en la forma en que quieran!- en Acerca del terreno > pestaña General. Asegúrese de lo que está haciendo antes de otorgar esta capacidad." - name="land set sale info" value="14" /> - <action description="Dividir y unir parcelas" - longdescription="Dividir y unir parcelas. Se hace pulsando con el botón derecho en el terreno, 'Modificar el terreno', y dibujando en el terreno con el ratón lo que se quiere seleccionar. Para dividir, elija la parte que quiere separar y pulse 'Subdividir...'. Para unir, seleccione dos o más parcelas contiguas y pulse 'Unir...'. " - name="land divide join" value="15" /> + <action_set description="Estas capacidades incluyen poder para transferir, modificar y vender terrenos del grupo. Para ver la ventana Acerca del terreno, pulsa con el botón derecho en el terreno y selecciona 'Acerca del terreno', o pulsa en el signo 'i' de la barra de navegación." name="Parcel Management"> + <action description="Transferir y comprar terreno para el grupo" longdescription="Transferir y comprar terreno para el grupo. Se hace en Acerca del terreno > pestaña General." name="land deed" value="12"/> + <action description="Abandonar al terreno a favor de Governor Linden" longdescription="Abandonar al terreno a favor de Governor Linden. *AVISO* Todos los miembros con esta capacidad pueden abandonar terreno perteneciente al grupo en Acerca del terreno > pestaña General, devolviendo la posesión a Linden ¡gratuitamente! Asegúrese de lo que está haciendo antes de otorgar esta capacidad." name="land release" value="13"/> + <action description="Vender terreno" longdescription="Vender terreno. *AVISO* Todos los miembros con esta capacidad pueden vender terreno perteneciente al grupo -¡en la forma en que quieran!- en Acerca del terreno > pestaña General. Asegúrese de lo que está haciendo antes de otorgar esta capacidad." name="land set sale info" value="14"/> + <action description="Dividir y unir parcelas" longdescription="Dividir y unir parcelas. Se hace pulsando con el botón derecho en el terreno, 'Modificar el terreno', y dibujando en el terreno con el ratón lo que se quiere seleccionar. Para dividir, elige la parte que quieres separar y pulsa 'Dividir'. Para unir, selecciona dos o más parcelas contiguas y pulsa 'Unir'." name="land divide join" value="15"/> </action_set> - <action_set - description="Estas capacidades incluyen poder cambiar el nombre de la parcela y su configuración, así como si se muestra en Buscar y las opciones del punto de llegada y el de teleporte." - name="Parcel Identity"> - <action - description="Activar/desactivar 'Mostrar en Buscar' y el definir la categoría" - longdescription="Activar/desactivar el 'Mostrar en Buscar' y en que categoría se mostrará en Acerca del terreno > pestaña Opciones." - name="land find places" value="17" /> - <action - description="Cambiar el nombre de la parcela, la descripción, y la configuración de 'Mostrar en Buscar'" - longdescription="Cambiar el nombre y descripción de la parcela, y la configuración de 'Mostrar en Buscar'. Se hace en Acerca del terreno > pestaña Opciones." - name="land change identity" value="18" /> - <action description="Definir los puntos de llegada y teleporte" - longdescription="En una parcela perteneciente al grupo, los miembros con un rol que tenga esta capacidad pueden precisar el punto de llegada o el de teleporte. Se hace en Acerca del terreno > pestaña Opciones." - name="land set landing point" value="19" /> + <action_set description="Estas capacidades incluyen poder cambiar el nombre de la parcela y su configuración, así como si se muestra en Buscar y las opciones del punto de llegada y el de teleporte." name="Parcel Identity"> + <action description="Cambiar 'Mostrar el sitio en Buscar' y configurar la categoría" longdescription="Cambia 'Mostrar el sitio en Buscar' y el configurar la categoría de una parcela en Acerca del terreno > pestaña Opciones." name="land find places" value="17"/> + <action description="Cambiar el nombre de la parcela, su descripción, y la configuración de 'Mostrar el sitio en Buscar'" longdescription="Cambia el nombre de la parcela, su descripción, y la configuración de 'Mostrar el sitio en Buscar'. Se hace en Acerca del terreno > pestaña Opciones." name="land change identity" value="18"/> + <action description="Definir los puntos de llegada y teleporte" longdescription="En una parcela perteneciente al grupo, los miembros con un rol que tenga esta capacidad pueden precisar el punto de llegada o el de teleporte. Se hace en Acerca del terreno > pestaña Opciones." name="land set landing point" value="19"/> </action_set> - <action_set - description="Estas capacidades incluyen poderes que afectan a las opciones de la parcela, como 'Crear objetos', 'Editar el terreno' y las configuraciones de la música y los media." - name="Parcel Settings"> - <action description="Cambiar música y configuraciones de los media" - longdescription="Cambiar la música en streaming y las configuraciones de vídeo en Acerca del terreno > pestaña Media." - name="land change media" value="20" /> - <action description="Activar/desactivar 'Editar el terreno'" - longdescription="Activar/desactivar 'Editar el terreno'. *AVISO* Acerca del terreno > pestaña Opciones > Editar el terreno, permite a cualquiera alterar la forma de su terreno y sustituir y mover plantas Linden. Asegúrese de lo que está haciendo antes de otorgar esta capacidad. La edición del terreno se activada/desactiva en Acerca del terreno > pestaña Opciones." - name="land edit" value="21" /> - <action - description="Activar/desactivar varios ítems de Acerca del terreno > Opciones" - longdescription="Activar/desactivar en un terreno del grupo los ítems de Acerca del terreno > pestaña Opciones: 'Seguro (sin daño)', 'Volar', y permitir a otros residentes: 'Crear objetos', 'Editar el terreno', 'Crear hitos', y 'Ejecutar scripts'." - name="land options" value="22" /> + <action_set description="Estas capacidades incluyen poderes que afectan a las opciones de la parcela, como 'Crear objetos', 'Editar el terreno' y las configuraciones de la música y los media." name="Parcel Settings"> + <action description="Cambiar música y configuraciones de los media" longdescription="Cambiar la música en streaming y las configuraciones de vídeo en Acerca del terreno > pestaña Media." name="land change media" value="20"/> + <action description="Activar/desactivar 'Editar el terreno'" longdescription="Activar/desactivar 'Editar el terreno'. *AVISO* Acerca del terreno > pestaña Opciones > Editar el terreno, permite a cualquiera alterar la forma de su terreno y sustituir y mover plantas Linden. Asegúrese de lo que está haciendo antes de otorgar esta capacidad. La edición del terreno se activada/desactiva en Acerca del terreno > pestaña Opciones." name="land edit" value="21"/> + <action description="Activar/desactivar varios ítems de Acerca del terreno > Opciones" longdescription="Cambia 'Seguro (sin daño)', 'Volar', y el permitir a otros residentes en terrenos propiedad del grupo 'Modificar el terreno', 'Construir', 'Crear hitos' y 'Ejecutat scripts', como aparece en Acerca del terreno > pestaña Opciones." name="land options" value="22"/> </action_set> - <action_set - description="Estas capacidades incluyen poderes que permiten a los miembros rebasar las restricciones de parcelas pertenecientes al grupo." - name="Parcel Powers"> - <action description="Permitir siempre 'Editar el terreno'" - longdescription="Quien tenga un rol con esta capacidad puede editar el terreno de una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno > pestaña Opciones." - name="land allow edit land" value="23" /> - <action description="Permitir siempre 'Volar'" - longdescription="Quien tenga un rol con esta capacidad puede volar sobre una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno > pestaña Opciones." - name="land allow fly" value="24" /> - <action description="Permitir siempre 'Crear objetos'" - longdescription="Quien tenga un rol con esta capacidad puede crear objetos en una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno > pestaña Opciones." - name="land allow create" value="25" /> - <action description="Permitir siempre 'Crear hitos'" - longdescription="Quien tenga un rol con esta capacidad puede crear un hito en una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno > pestaña Opciones." - name="land allow landmark" value="26" /> - <action description="Permitir 'Fijar mi Base aquí' en el terreno del grupo" - longdescription="Quien tenga un rol con esta capacidad puede usar el menú Mundo > Fijar mi Base aquí en una parcela transferida al grupo." - name="land allow set home" value="28" /> + <action_set description="Estas capacidades incluyen poderes que permiten a los miembros rebasar las restricciones de parcelas pertenecientes al grupo." name="Parcel Powers"> + <action description="Permitir siempre 'Editar el terreno'" longdescription="Quien tenga un rol con esta capacidad puede editar el terreno de una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno > pestaña Opciones." name="land allow edit land" value="23"/> + <action description="Permitir siempre 'Volar'" longdescription="Quien tenga un rol con esta capacidad puede volar sobre una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno > pestaña Opciones." name="land allow fly" value="24"/> + <action description="Permitir siempre 'Crear objetos'" longdescription="Quien tenga un rol con esta capacidad puede crear objetos en una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno > pestaña Opciones." name="land allow create" value="25"/> + <action description="Permitir siempre 'Crear hitos'" longdescription="Quien tenga un rol con esta capacidad puede crear un hito en una parcela perteneciente al grupo aunque eso esté desactivado en Acerca del terreno > pestaña Opciones." name="land allow landmark" value="26"/> + <action description="Permitir 'Fijar mi Base aquí' en el terreno del grupo" longdescription="Los miembros que tengan un rol con esta capacidad pueden usar el menú Mundo > Hitos > Fijar aquí mi Base en una parcela transferida al grupo." name="land allow set home" value="28"/> </action_set> - <action_set - description="Estas capacidades incluyen poderes para permitir o restringir el acceso a parcelas pertenecientes al grupo, incluyendo el congelar y expulsar a residentes." - name="Parcel Access"> - <action description="Administrar las listas de acceso a la parcela" - longdescription="Administre las listas de acceso a la parcela en Acerca del terreno > pestaña Acceso." - name="land manage allowed" value="29" /> - <action description="Administrar la lista de residentes con el acceso prohibido" - longdescription="Administrar la lista de residentes con el acceso prohibido a la parcela en Acerca del terreno > pestaña Acceso." - name="land manage banned" value="30" /> - <action description="Cambiar en las configuraciones de parcela el 'Vender pases a...'" - longdescription="Cambiar la configuración de 'Vender pases a...' en Acerca del terreno > pestaña Acceso." - name="land manage passes" value="31" /> - <action description="Expulsar y congelar residentes en las parcelas" - longdescription="Quien tenga un rol con esta capacidad puede actuar frente a un residente indeseado en una parcela del grupo pulsando con el botón derecho sobre él, Más > y seleccionando 'Expulsar...' o 'Congelar...'." - name="land admin" value="32" /> + <action_set description="Estas capacidades incluyen poderes para permitir o restringir el acceso a parcelas pertenecientes al grupo, incluyendo el congelar y expulsar a residentes." name="Parcel Access"> + <action description="Administrar las listas de acceso a la parcela" longdescription="Administre las listas de acceso a la parcela en Acerca del terreno > pestaña Acceso." name="land manage allowed" value="29"/> + <action description="Administrar la lista de residentes con el acceso prohibido" longdescription="Manejar la lista de expulsados en Acerca del terreno > pestaña Acceso." name="land manage banned" value="30"/> + <action description="Cambiar en la parcela la configuración de 'Vender pases a'" longdescription="Cambia en la parcela la configuración de 'Vender pases a' (Acerca del terreno > pestaña Acceso)." name="land manage passes" value="31"/> + <action description="Expulsar y congelar residentes en las parcelas" longdescription="En una parcela propiedad del grupo, los miembros cuyo rol tengan esta capacidad pueden manejar a residentes no deseados pulsándoles con el botón derecho del ratón para 'Expulsar' o 'Congelar'." name="land admin" value="32"/> </action_set> - <action_set - description="Estas capacidades incluyen poderes que permitan a los miembros devolver objetos y poner y mover plantas Linden. Es útil para que miembros organicen el paisaje, pero debe ser usado con cuidado, ya que no se pueden deshacer esos cambios en los objetos." - name="Parcel Content"> - <action description="Devolver objetos que pertenecen al grupo" - longdescription="Devolver objetos pertenecientes al grupo en parcelas de su propiedad en Acerca del terreno > pestaña Objetos." - name="land return group owned" value="48" /> - <action description="Devolver objetos definidos para el grupo" - longdescription="Devuelva objetos en parcelas pertenecientes al grupo en Acerca del terreno > pestaña Objetos." - name="land return group set" value="33" /> - <action description="Devolver objetos que no pertenecen al grupo" - longdescription="Devuolver objetos que estén en una parcela del grupo y pertenezcan a alguien que no sea del grupo en Acerca del terreno > pestaña Objetos." - name="land return non group" value="34" /> - <action description="Modificar el paisaje usando plantas Linden" - longdescription="La capacidad de modificar el paisaje permite poner y mover árboles Linden, plantas y arbustos. Estos ítems están en la 's Biblioteca de su Inventario > carpeta Objetos, o pueden crearse con el botón Construir." - name="land gardening" value="35" /> + <action_set description="Estas capacidades incluyen poderes que permitan a los miembros devolver objetos y poner y mover plantas Linden. Es útil para que miembros organicen el paisaje, pero debe ser usado con cuidado, ya que no se pueden deshacer esos cambios en los objetos." name="Parcel Content"> + <action description="Devolver objetos que pertenecen al grupo" longdescription="Devolver objetos pertenecientes al grupo en parcelas de su propiedad en Acerca del terreno > pestaña Objetos." name="land return group owned" value="48"/> + <action description="Devolver objetos definidos para el grupo" longdescription="Devuelva objetos en parcelas pertenecientes al grupo en Acerca del terreno > pestaña Objetos." name="land return group set" value="33"/> + <action description="Devolver objetos que no pertenecen al grupo" longdescription="Devuolver objetos que estén en una parcela del grupo y pertenezcan a alguien que no sea del grupo en Acerca del terreno > pestaña Objetos." name="land return non group" value="34"/> + <action description="Modificar el paisaje usando plantas Linden" longdescription="Capacidad de poner y mover árboles, plantas y arbustos Linden. Estos ítems están en la Biblioteca de tu inventario > carpeta Objetos, o pueden construirse con el menú Construir." name="land gardening" value="35"/> </action_set> - <action_set - description="Estas capacidades incluyen poderes para tranferir, modificar y vender objetos pertenecientes al grupo. Estos cambios se hacen en la pestaña General de la herramienta de edición. Para verlo, pulse en un objeto con el botón derecho y elija Editar. " - name="Object Management"> - <action description="Transferir objetos al grupo" - longdescription="Transferir objetos al grupo en Editar > pestaña General." - name="object deed" value="36" /> - <action description="Manipular (mover, copiar, y modificar) objetos del grupo" - longdescription="Manipular (mover, copiar, y modificar) objetos pertenecientes al grupo en Editar > pestaña General." - name="object manipulate" value="38" /> - <action description="Vender objetos pertenecientes al grupo" - longdescription="Poner a la venta objetos pertenecientes al grupo para venta en Editar > pestaña General." - name="object set sale" value="39" /> + <action_set description="Estas capacidades incluyen poder transferir, modificar y vender objetos propiedad del grupo. Estos cambios se hacen en las Herramientas de construcción > pestaña General. Pulsa un objeto con el botón derecho del ratón y edítalo para ver sus configuraciones." name="Object Management"> + <action description="Transferir objetos al grupo" longdescription="Transferir objetos al grupo en las Herramientas de construcción > pestaña General." name="object deed" value="36"/> + <action description="Manipular (mover, copiar, y modificar) objetos del grupo" longdescription="Mover, copiar y modificar objetos pertenecientes al grupo en las Herramientas de construcción > pestaña General." name="object manipulate" value="38"/> + <action description="Vender objetos pertenecientes al grupo" longdescription="Poner a la venta objetos pertenecientes al grupo en las Herramientas de construcción > pestaña General." name="object set sale" value="39"/> </action_set> - <action_set - description="Estas habilidades incluyen poderes para que los miembros paguen deudas del grupo o reciban sus dividendos, y para limitar el acceso al historial de la cuenta del grupo." - name="Accounting"> - <action description="Pagar deudas y recibir dividendos del grupo" - longdescription="Quien tenga un rol con esta capacidad, automáticamente pagará deudas del grupo y recibirá sus dividendos. Esto significa que recibirá una parte de las ventas de terreno de grupo, y que contribuirá a cosas como, por ejemplo, las cuotas por posesión de terreno. " - name="accounting accountable" value="40" /> + <action_set description="Estas habilidades incluyen poderes para que los miembros paguen deudas del grupo o reciban sus dividendos, y para limitar el acceso al historial de la cuenta del grupo." name="Accounting"> + <action description="Pagar deudas y recibir dividendos del grupo" longdescription="Quien tenga un rol con esta capacidad, automáticamente pagará deudas del grupo y recibirá sus dividendos. Esto significa que recibirá una parte de las ventas de terreno de grupo, y que contribuirá a cosas como, por ejemplo, las cuotas por posesión de terreno. " name="accounting accountable" value="40"/> </action_set> - <action_set - description="Estas habilidades incluyen poderes para enviar, recibir y ver avisos de grupo." - name="Notices"> - <action description="Enviar aviso" - longdescription="Quien tenga un rol con esta capacidad puede enviar avisos en Información del grupo > pestaña Avisos." - name="notices send" value="42" /> - <action description="Recibir avisos nuevos y ver los anteriores" - longdescription="Quien tenga un rol con esta capacidad puede recibir los avisos nuevos, y ver los anteriores en Información del grupo > pestaña Avisos." - name="notices receive" value="43" /> + <action_set description="Estas habilidades incluyen poderes para enviar, recibir y ver avisos de grupo." name="Notices"> + <action description="Enviar aviso" longdescription="Los miembros con un rol que tenga esta capacidad pueden enviar avisos a través de la sección Grupo > Avisos." name="notices send" value="42"/> + <action description="Recibir avisos nuevos y ver los anteriores" longdescription="Los miembros con un rol que tenga esta capacidad pueden recibir Avisos y ver los ya enviados en la sección Grupo > Avisos." name="notices receive" value="43"/> </action_set> - <action_set - description="Estas habilidades incluyen poderes para permitir a los miembros crear propuestas, votarlas, y ver el historial de votaciones." - name="Proposals"> - <action description="Hacer una propuesta" - longdescription="Quien tenga un rol con esta capacidad puede crear propuestas para que sean votadas en Información del grupo > pestaña Propuestas." - name="proposal start" value="44" /> - <action description="Votar en propuestas" - longdescription="Quien tenga un rol con esta capacidad puede votar las propuestas en Información del grupo > pestaña Propuestas." - name="proposal vote" value="45" /> + <action_set description="Estas habilidades incluyen poderes para permitir a los miembros crear propuestas, votarlas, y ver el historial de votaciones." name="Proposals"> + <action description="Hacer una propuesta" longdescription="Quien tenga un rol con esta capacidad puede crear propuestas para que sean votadas en Información del grupo > pestaña Propuestas." name="proposal start" value="44"/> + <action description="Votar en propuestas" longdescription="Quien tenga un rol con esta capacidad puede votar las propuestas en Información del grupo > pestaña Propuestas." name="proposal vote" value="45"/> </action_set> - <action_set - description="Estas capacidades incluyen poderes para permitir o no el aceso a las sesiones de chat del grupo y al chat de voz del mismo." - name="Chat"> - <action description="Abrir chat de grupo" - longdescription="Quien tenga un rol con esta capacidad puede abrir sesiones de chat del grupo, tanto de texto como de voz." - name="join group chat" value="16" /> - <action description="Abrir chat de voz del grupo" - longdescription="Quien tenga un rol con esta capacidad puede abrir sesiones de chat de voz del grupo. NOTA: para acceder al chat de voz debe tenerse la capacidad 'Abrir chat de grupo'." - name="join voice chat" value="27" /> - <action description="Moderar el chat de grupo" - longdescription="Quien tenga esta capacidad puede controlar el acceso y la participación en los chats de texto y de voz del grupo." - name="moderate group chat" value="37" /> + <action_set description="Estas capacidades incluyen poderes para permitir o no el aceso a las sesiones de chat del grupo y al chat de voz del mismo." name="Chat"> + <action description="Abrir chat de grupo" longdescription="Quien tenga un rol con esta capacidad puede abrir sesiones de chat del grupo, tanto de texto como de voz." name="join group chat" value="16"/> + <action description="Abrir chat de voz del grupo" longdescription="Quien tenga un rol con esta capacidad puede abrir sesiones de chat de voz del grupo. NOTA: para acceder al chat de voz debe tenerse la capacidad 'Abrir chat de grupo'." name="join voice chat" value="27"/> + <action description="Moderar el chat de grupo" longdescription="Quien tenga esta capacidad puede controlar el acceso y la participación en los chats de texto y de voz del grupo." name="moderate group chat" value="37"/> </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/es/sidepanel_appearance.xml b/indra/newview/skins/default/xui/es/sidepanel_appearance.xml new file mode 100644 index 0000000000..0c7f63d662 --- /dev/null +++ b/indra/newview/skins/default/xui/es/sidepanel_appearance.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Vestuarios" name="appearance panel"> + <string name="No Outfit" value="No hay vestuario"/> + <panel name="panel_currentlook"> + <text name="currentlook_title"> + (sin guardar) + </text> + </panel> + <filter_editor label="Filtrar los vestuarios" name="Filter"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml new file mode 100644 index 0000000000..776b253adc --- /dev/null +++ b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Cosas" name="objects panel"> + <panel label="" name="sidepanel__inventory_panel"> + <panel name="button_panel"> + <button label="Perfil" name="info_btn"/> + <button label="Ponerme" name="wear_btn"/> + <button label="Play" name="play_btn"/> + <button label="Teleporte" name="teleport_btn"/> + </panel> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/sidepanel_item_info.xml b/indra/newview/skins/default/xui/es/sidepanel_item_info.xml new file mode 100644 index 0000000000..ceb6e521cd --- /dev/null +++ b/indra/newview/skins/default/xui/es/sidepanel_item_info.xml @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="item properties" title="Perfil del objeto"> + <panel.string name="unknown"> + (desconocidas) + </panel.string> + <panel.string name="public"> + (público) + </panel.string> + <panel.string name="you_can"> + Puedes: + </panel.string> + <panel.string name="owner_can"> + El propietario puede: + </panel.string> + <panel.string name="acquiredDate"> + [wkday,datetime,local][day,datetime,local] [mth,datetime,local] [year,datetime,local][hour,datetime,local]:[min,datetime,local]:[second,datetime,local] + </panel.string> + <text name="title" value="Perfil del objeto"/> + <text name="where" value="(Inventario)"/> + <panel label=""> + <text name="LabelItemNameTitle"> + Nombre: + </text> + <text name="LabelItemDescTitle"> + Descripción: + </text> + <text name="LabelCreatorTitle"> + Creador: + </text> + <button label="Perfil..." name="BtnCreator"/> + <text name="LabelOwnerTitle"> + Propietario: + </text> + <button label="Perfil..." name="BtnOwner"/> + <text name="LabelAcquiredTitle"> + Obtenido: + </text> + <text name="LabelAcquiredDate"> + Miér., 24 Mayo 2006 12:50:46 + </text> + <panel name="perms_inv"> + <text name="perm_modify"> + Tú puedes: + </text> + <check_box label="Modificar" name="CheckOwnerModify"/> + <check_box label="Copiarlo" name="CheckOwnerCopy"/> + <check_box label="Transferirlo" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Cualquiera: + </text> + <check_box label="Copiarlo" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Grupo: + </text> + <check_box label="Compartir" name="CheckShareWithGroup" tool_tip="Permite que todos los miembros del grupo compartan y utilicen tus permisos sobre este objeto. Debes transferirlo para activar las restricciones según los roles."/> + <text name="NextOwnerLabel"> + Próximo propietario: + </text> + <check_box label="Modificarlo" name="CheckNextOwnerModify"/> + <check_box label="Copiarlo" name="CheckNextOwnerCopy"/> + <check_box label="Transferirlo" name="CheckNextOwnerTransfer" tool_tip="El próximo propietario puede dar o revender este objeto"/> + </panel> + <check_box label="En venta" name="CheckPurchase"/> + <combo_box name="combobox sale copy"> + <combo_box.item label="Copiar" name="Copy"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Precio: L$" name="Edit Cost"/> + </panel> + <panel name="button_panel"> + <button label="Cancelar" name="cancel_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/sidepanel_task_info.xml b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml new file mode 100644 index 0000000000..6bfdbea2bc --- /dev/null +++ b/indra/newview/skins/default/xui/es/sidepanel_task_info.xml @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="object properties" title="Perfil del objeto"> + <panel.string name="text deed continued"> + Transfeir + </panel.string> + <panel.string name="text deed"> + Transfeir + </panel.string> + <panel.string name="text modify info 1"> + Puedes modificar este objeto + </panel.string> + <panel.string name="text modify info 2"> + Puedes modificar estos objetos + </panel.string> + <panel.string name="text modify info 3"> + No puedes modificar este objeto + </panel.string> + <panel.string name="text modify info 4"> + No puedes modificar estos objetos + </panel.string> + <panel.string name="text modify warning"> + Este objeto tiene partes enlazadas + </panel.string> + <panel.string name="Cost Default"> + Precio: L$ + </panel.string> + <panel.string name="Cost Total"> + Precio total: L$ + </panel.string> + <panel.string name="Cost Per Unit"> + Price Per: L$ + </panel.string> + <panel.string name="Cost Mixed"> + Mixed Price + </panel.string> + <panel.string name="Sale Mixed"> + Mixed Sale + </panel.string> + <text name="title" value="Perfil del objeto"/> + <text name="where" value="(en el mundo)"/> + <panel label=""> + <text name="Name:"> + Nombre: + </text> + <text name="Description:"> + Descripción: + </text> + <text name="CreatorNameLabel"> + Creador: + </text> + <text name="Creator Name"> + Erica Linden + </text> + <text name="Owner:"> + Propietario: + </text> + <text name="Group_label"> + Grupo: + </text> + <button name="button set group" tool_tip="Elige un grupo con el que compartir los permisos de este objeto"/> + <name_box initial_value="Cargando..." name="Group Name Proxy"/> + <button label="Transfeir" label_selected="Transfeir" name="button deed" tool_tip="La transferencia entrega este objeto con los permisos del próximo propietario. Los objetos compartidos por el grupo pueden ser transferidos por un oficial del grupo."/> + <text name="label click action"> + Al tocarlo: + </text> + <combo_box name="clickaction"> + <combo_box.item label="Tocarlo (por defecto)" name="Touch/grab(default)"/> + <combo_box.item label="Sentarme en el objeto" name="Sitonobject"/> + <combo_box.item label="Comprar el objeto" name="Buyobject"/> + <combo_box.item label="Pagar al objeto" name="Payobject"/> + <combo_box.item label="Abrir" name="Open"/> + </combo_box> + <panel name="perms_inv"> + <text name="perm_modify"> + Puedes modificar este objeto + </text> + <text name="Anyone can:"> + Cualquiera: + </text> + <check_box label="Copiarlo" name="checkbox allow everyone copy"/> + <check_box label="Moverlo" name="checkbox allow everyone move"/> + <text name="GroupLabel"> + Grupo: + </text> + <check_box label="Compartir" name="checkbox share with group" tool_tip="Permite que todos los miembros del grupo compartan y utilicen tus permisos sobre este objeto. Debes transferirlo para activar las restricciones según los roles"/> + <text name="NextOwnerLabel"> + Próximo propietario: + </text> + <check_box label="Modificarlo" name="checkbox next owner can modify"/> + <check_box label="Copiarlo" name="checkbox next owner can copy"/> + <check_box label="Transferirlo" name="checkbox next owner can transfer" tool_tip="El próximo propietario puede dar o revender este objeto"/> + </panel> + <check_box label="En venta" name="checkbox for sale"/> + <combo_box name="sale type"> + <combo_box.item label="Copiarlo" name="Copy"/> + <combo_box.item label="Contenidos" name="Contents"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Precio: L$" name="Edit Cost"/> + <check_box label="Mostrar en la búsqueda" name="search_check" tool_tip="Permitir que la gente vea este objetos en los resultados de la búsqueda"/> + <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="Abrir" name="open_btn"/> + <button label="Pagar" name="pay_btn"/> + <button label="Comprar" name="buy_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index dc508f7c37..29486faa15 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -1,13 +1,27 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- This file contains strings that used to be hardcoded in the source. It is only for those strings which do not belong in a floater. - For example, the strings used in avatar chat bubbles, and strings + 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=es-ES</string> + <string name="CAPITALIZED_APP_NAME"> + SECOND LIFE + </string> + <string name="SUPPORT_SITE"> + Portal de Soporte de Second Life + </string> + <string name="StartupDetectingHardware"> + Identificando el hardware... + </string> + <string name="StartupLoading"> + Cargando + </string> <string name="LoginInProgress"> Iniciando la sesión. [APP_NAME] debe de aparecer congelado. Por favor, espere. </string> + <string name="LoginInProgressNoFrozen"> + Iniciando la sesión... + </string> <string name="LoginAuthenticating"> Autenticando </string> @@ -26,6 +40,9 @@ <string name="LoginInitializingMultimedia"> Iniciando multimedia... </string> + <string name="LoginInitializingFonts"> + Cargando las fuentes... + </string> <string name="LoginVerifyingCache"> Comprobando los archivos de la caché (puede tardar entre 60 y 90 segundos)... </string> @@ -56,9 +73,15 @@ <string name="LoginDownloadingClothing"> Descargando la ropa... </string> + <string name="LoginFailedNoNetwork"> + Error de red: no se ha podido conectar; por favor, revisa tu conexión a internet. + </string> <string name="Quit"> Salir </string> + <string name="create_account_url"> + http://join.secondlife.com/index.php?lang=es-ES + </string> <string name="AgentLostConnection"> Esta región puede estar teniendo problemas. Por favor, compruebe su conexión a internet. </string> @@ -77,39 +100,9 @@ <string name="TooltipIsGroup"> (Grupo) </string> - <string name="TooltipFlagScript"> - Script - </string> - <string name="TooltipFlagPhysics"> - Propiedades físicas - </string> - <string name="TooltipFlagTouch"> - Tocar - </string> - <string name="TooltipFlagL$"> - L$ - </string> - <string name="TooltipFlagDropInventory"> - Desplegar el inventario - </string> - <string name="TooltipFlagPhantom"> - Inmaterial - </string> - <string name="TooltipFlagTemporary"> - Temporal - </string> - <string name="TooltipFlagRightClickMenu"> - (pulse el botón derecho del ratón para ver el menú) - </string> - <string name="TooltipFreeToCopy"> - Copia gratis - </string> <string name="TooltipForSaleL$"> En venta: [AMOUNT] L$ </string> - <string name="TooltipForSaleMsg"> - En venta: [MESSAGE] - </string> <string name="TooltipFlagGroupBuild"> Construir el grupo </string> @@ -137,6 +130,73 @@ <string name="TooltipMustSingleDrop"> Aquí se puede arrastrar sólo un ítem </string> + <string name="TooltipHttpUrl"> + Pulsa para ver esta página web + </string> + <string name="TooltipSLURL"> + Pulsa para ver la información de este lugar + </string> + <string name="TooltipAgentUrl"> + Pulsa para ver el perfil del Residente + </string> + <string name="TooltipGroupUrl"> + Pulsa para ver la descripción de este grupo + </string> + <string name="TooltipEventUrl"> + Pulsa para ver la descripción de este evento + </string> + <string name="TooltipClassifiedUrl"> + Pulsa para ver este clasificado + </string> + <string name="TooltipParcelUrl"> + Pulsa para ver la descripción de esta parcela + </string> + <string name="TooltipTeleportUrl"> + Pulsa para teleportarte a esta posición + </string> + <string name="TooltipObjectIMUrl"> + Pulsa para ver la descripción de este objeto + </string> + <string name="TooltipMapUrl"> + Pulsa para ver en el mapa esta localización + </string> + <string name="TooltipSLAPP"> + Pulsa para ejecutar el comando secondlife:// + </string> + <string name="CurrentURL" value="URL actual: [CurrentURL]"/> + <string name="SLurlLabelTeleport"> + Teleportarse a + </string> + <string name="SLurlLabelShowOnMap"> + Mostrarla en el mapa + </string> + <string name="BUTTON_CLOSE_DARWIN"> + Cerrar (⌘W) + </string> + <string name="BUTTON_CLOSE_WIN"> + Cerrar (Ctrl+W) + </string> + <string name="BUTTON_RESTORE"> + Maximizar + </string> + <string name="BUTTON_MINIMIZE"> + Minimizar + </string> + <string name="BUTTON_TEAR_OFF"> + Separar la ventana + </string> + <string name="BUTTON_DOCK"> + Fijar + </string> + <string name="BUTTON_HELP"> + Ver la Ayuda + </string> + <string name="Searching"> + Buscando... + </string> + <string name="NoneFound"> + No se ha encontrado. + </string> <string name="RetrievingData"> Reintentando... </string> @@ -152,9 +212,6 @@ <string name="AvatarNameWaiting"> (esperando) </string> - <string name="AvatarNameHippos"> - (hipopótamos) - </string> <string name="GroupNameNone"> (ninguno) </string> @@ -191,8 +248,77 @@ <string name="AssetErrorUnknownStatus"> Estado desconocido </string> - <string name="AvatarEditingApparance"> - (Modificando la apariencia) + <string name="texture"> + la textura + </string> + <string name="sound"> + el sonido + </string> + <string name="calling card"> + la tarjeta de visita + </string> + <string name="landmark"> + el hito + </string> + <string name="legacy script"> + el script antiguo + </string> + <string name="clothing"> + esa ropa + </string> + <string name="object"> + el objeto + </string> + <string name="note card"> + la nota + </string> + <string name="folder"> + la carpeta + </string> + <string name="root"> + la ruta + </string> + <string name="lsl2 script"> + ese script de LSL2 + </string> + <string name="lsl bytecode"> + el código intermedio de LSL + </string> + <string name="tga texture"> + esa textura tga + </string> + <string name="body part"> + esa parte del cuerpo + </string> + <string name="snapshot"> + la foto + </string> + <string name="lost and found"> + Objetos Perdidos + </string> + <string name="targa image"> + esa imagen targa + </string> + <string name="trash"> + la Papelera + </string> + <string name="jpeg image"> + esa imagen jpeg + </string> + <string name="animation"> + la animación + </string> + <string name="gesture"> + el gesto + </string> + <string name="simstate"> + simstate + </string> + <string name="favorite"> + ese favorito + </string> + <string name="symbolic link"> + el enlace </string> <string name="AvatarAway"> Ausente @@ -414,7 +540,19 @@ Cargando... </string> <string name="worldmap_offline"> - Desconectado/a + Sin conexión + </string> + <string name="worldmap_results_none_found"> + No se ha encontrado. + </string> + <string name="Ok"> + OK + </string> + <string name="Premature end of file"> + Fin prematuro del archivo + </string> + <string name="ST_NO_JOINT"> + No se puede encontrar ROOT o JOINT. </string> <string name="whisper"> susurra: @@ -422,6 +560,60 @@ <string name="shout"> grita: </string> + <string name="ringing"> + Conectando al chat de voz... + </string> + <string name="connected"> + Conectado + </string> + <string name="unavailable"> + La voz no está disponible en su localización actual + </string> + <string name="hang_up"> + Desconectado del chat de voz + </string> + <string name="reconnect_nearby"> + Vas a ser reconectado al chat de voz con los cercanos + </string> + <string name="ScriptQuestionCautionChatGranted"> + '[OBJECTNAME]', un objeto propiedad de '[OWNERNAME]', localizado en [REGIONNAME] con la posición [REGIONPOS], ha recibido permiso para: [PERMISSIONS]. + </string> + <string name="ScriptQuestionCautionChatDenied"> + A '[OBJECTNAME]', un objeto propiedad de '[OWNERNAME]', localizado en [REGIONNAME] con la posición [REGIONPOS], se le ha denegado el permiso para: [PERMISSIONS]. + </string> + <string name="ScriptTakeMoney"> + Cogerle a usted dólares Linden (L$) + </string> + <string name="ActOnControlInputs"> + Actuar en sus controles de entrada + </string> + <string name="RemapControlInputs"> + Reconfigurar sus controles de entrada + </string> + <string name="AnimateYourAvatar"> + Ejecutar animaciones en su avatar + </string> + <string name="AttachToYourAvatar"> + Anexarse a su avatar + </string> + <string name="ReleaseOwnership"> + Anular la propiedad y que pase a ser público + </string> + <string name="LinkAndDelink"> + Enlazar y desenlazar de otros objetos + </string> + <string name="AddAndRemoveJoints"> + Añadir y quitar uniones con otros objetos + </string> + <string name="ChangePermissions"> + Cambiar sus permisos + </string> + <string name="TrackYourCamera"> + Seguir su cámara + </string> + <string name="ControlYourCamera"> + Controlar su cámara + </string> <string name="SIM_ACCESS_PG"> 'PG' </string> @@ -440,8 +632,6 @@ <string name="land_type_unknown"> (desconocido) </string> - <string name="covenant_never_modified">Última modificación: (nunca)</string> - <string name="covenant_modified">Última modificación: </string> <string name="all_files"> Todos los archivos </string> @@ -487,28 +677,904 @@ <string name="choose_the_directory"> Elegir directorio </string> - <!-- OSMessageBox messages --> - <string name="MBAlreadyRunning"> - [APP_NAME] ya se está ejecutando. -Busque en la barra de su escritorio una copia minimizada del programa. -Si aun así persiste este mensaje, reinicie su ordenador. + <string name="AvatarSetNotAway"> + Salir del estado ausente </string> - <string name="MBVideoDrvErr"> - No se puede ejecutar [APP_NAME] porque los drivers de su tarjeta de vídeo no están instalados correctamente, o no están actualizados, o son de un hardware no admitido. Por favor, asegúrese de que tiene los últimos drivers para su tarjeta de vídeo, e incluso en ese caso intente reinstalarlos. - -Si sigue recibiendo este mensaje, contacte con el [SUPPORT_SITE]. + <string name="AvatarSetAway"> + Pasar al estado ausente + </string> + <string name="AvatarSetNotBusy"> + Salir del estado ocupado + </string> + <string name="AvatarSetBusy"> + Pasar al estado ocupado + </string> + <string name="shape"> + Forma + </string> + <string name="skin"> + Piel + </string> + <string name="hair"> + Pelo + </string> + <string name="eyes"> + Ojos + </string> + <string name="shirt"> + Camisa + </string> + <string name="pants"> + Pantalón + </string> + <string name="shoes"> + Zapatos + </string> + <string name="socks"> + Calcetines + </string> + <string name="jacket"> + Chaqueta + </string> + <string name="gloves"> + Guantes + </string> + <string name="undershirt"> + Camiseta + </string> + <string name="underpants"> + Ropa interior + </string> + <string name="skirt"> + Falda + </string> + <string name="alpha"> + Alfa + </string> + <string name="tattoo"> + Tatuaje + </string> + <string name="invalid"> + inválido/a + </string> + <string name="next"> + Siguiente + </string> + <string name="ok"> + OK + </string> + <string name="GroupNotifyGroupNotice"> + Aviso de grupo + </string> + <string name="GroupNotifyGroupNotices"> + Avisos del grupo + </string> + <string name="GroupNotifySentBy"> + Enviado por + </string> + <string name="GroupNotifyAttached"> + Adjunto: + </string> + <string name="GroupNotifyViewPastNotices"> + Ver los avisos pasados u optar por dejar de recibir aquí estos mensajes. + </string> + <string name="GroupNotifyOpenAttachment"> + Abrir el adjunto + </string> + <string name="GroupNotifySaveAttachment"> + Guardar el adjunto + </string> + <string name="TeleportOffer"> + Ofrecimiento de teleporte + </string> + <string name="StartUpNotifications"> + Llegaron [%d] avisos nuevos mientras estabas ausente... + </string> + <string name="OverflowInfoChannelString"> + Tienes [%d] aviso/s más + </string> + <string name="BodyPartsRightArm"> + Brazo der. + </string> + <string name="BodyPartsHead"> + Cabeza + </string> + <string name="BodyPartsLeftArm"> + Brazo izq. + </string> + <string name="BodyPartsLeftLeg"> + Pierna izq. + </string> + <string name="BodyPartsTorso"> + Torso + </string> + <string name="BodyPartsRightLeg"> + Pierna der. + </string> + <string name="GraphicsQualityLow"> + Bajo + </string> + <string name="GraphicsQualityMid"> + Medio + </string> + <string name="GraphicsQualityHigh"> + Alto + </string> + <string name="LeaveMouselook"> + Pulsa ESC para salir de la vista subjetiva + </string> + <string name="InventoryNoMatchingItems"> + No se han encontrado ítems en el inventario. Intenta con [secondlife:///app/search/groups "Buscar"]. + </string> + <string name="FavoritesNoMatchingItems"> + Arrastra aquí un hito para tenerlo en tus favoritos. + </string> + <string name="InventoryNoTexture"> + No tienes en tu inventario una copia de esta textura + </string> + <string name="no_transfer" value="(no transferible)"/> + <string name="no_modify" value="(no modificable)"/> + <string name="no_copy" value="(no copiable)"/> + <string name="worn" value="(puesto)"/> + <string name="link" value="(enlace)"/> + <string name="broken_link" value="(enlace roto)""/> + <string name="LoadingContents"> + Cargando el contenido... + </string> + <string name="NoContents"> + No hay contenido + </string> + <string name="WornOnAttachmentPoint" value="(lo llevas en: [ATTACHMENT_POINT])"/> + <string name="Chat" value="Chat :"/> + <string name="Sound" value="Sonido :"/> + <string name="Wait" value="--- Espera :"/> + <string name="AnimFlagStop" value="Parar la animación:"/> + <string name="AnimFlagStart" value="Empezar la animación:"/> + <string name="Wave" value="Onda"/> + <string name="HelloAvatar" value="¡Hola, avatar!"/> + <string name="ViewAllGestures" value="Ver todos >>"/> + <string name="Animations" value="Animaciones,"/> + <string name="Calling Cards" value="Tarjetas de visita,"/> + <string name="Clothing" value="Ropa,"/> + <string name="Gestures" value="Gestos,"/> + <string name="Landmarks" value="Hitos,"/> + <string name="Notecards" value="Notas,"/> + <string name="Objects" value="Objetos,"/> + <string name="Scripts" value="Scripts,"/> + <string name="Sounds" value="Sonidos,"/> + <string name="Textures" value="Texturas,"/> + <string name="Snapshots" value="Fotos,"/> + <string name="No Filters" value="No"/> + <string name="Since Logoff" value="- Desde la desconexión"/> + <string name="InvFolder My Inventory"> + Mi Inventario + </string> + <string name="InvFolder My Favorites"> + Mis Favoritos + </string> + <string name="InvFolder Library"> + Biblioteca + </string> + <string name="InvFolder Textures"> + Texturas + </string> + <string name="InvFolder Sounds"> + Sonidos + </string> + <string name="InvFolder Calling Cards"> + Tarjetas de visita + </string> + <string name="InvFolder Landmarks"> + Hitos + </string> + <string name="InvFolder Scripts"> + Scripts + </string> + <string name="InvFolder Clothing"> + Ropa + </string> + <string name="InvFolder Objects"> + Objetos + </string> + <string name="InvFolder Notecards"> + Notas + </string> + <string name="InvFolder New Folder"> + Carpeta nueva + </string> + <string name="InvFolder Inventory"> + Inventario + </string> + <string name="InvFolder Uncompressed Images"> + Imágenes sin comprimir + </string> + <string name="InvFolder Body Parts"> + Partes del cuerpo + </string> + <string name="InvFolder Trash"> + la Papelera + </string> + <string name="InvFolder Photo Album"> + Álbum de fotos + </string> + <string name="InvFolder Lost And Found"> + Objetos Perdidos + </string> + <string name="InvFolder Uncompressed Sounds"> + Sonidos sin comprimir + </string> + <string name="InvFolder Animations"> + Animaciones + </string> + <string name="InvFolder Gestures"> + Gestos + </string> + <string name="InvFolder favorite"> + Favoritos + </string> + <string name="InvFolder Current Outfit"> + Vestuario actual + </string> + <string name="InvFolder My Outfits"> + Mis vestuarios + </string> + <string name="InvFolder Friends"> + Amigos + </string> + <string name="InvFolder All"> + Todas + </string> + <string name="Buy"> + Comprar + </string> + <string name="BuyforL$"> + Comprar por L$ + </string> + <string name="Stone"> + Piedra + </string> + <string name="Metal"> + Metal + </string> + <string name="Glass"> + Cristal + </string> + <string name="Wood"> + Madera + </string> + <string name="Flesh"> + Carne + </string> + <string name="Plastic"> + Plástico + </string> + <string name="Rubber"> + Goma + </string> + <string name="Light"> + Claridad + </string> + <string name="KBShift"> + Mayúsculas + </string> + <string name="KBCtrl"> + Ctrl + </string> + <string name="Chest"> + Tórax + </string> + <string name="Skull"> + Cráneo + </string> + <string name="Left Shoulder"> + Hombro izquierdo + </string> + <string name="Right Shoulder"> + Hombro derecho + </string> + <string name="Left Hand"> + Mano izq. + </string> + <string name="Right Hand"> + Mano der. + </string> + <string name="Left Foot"> + Pie izq. + </string> + <string name="Right Foot"> + Pie der. + </string> + <string name="Spine"> + Columna + </string> + <string name="Pelvis"> + Pelvis + </string> + <string name="Mouth"> + Boca + </string> + <string name="Chin"> + Barbilla + </string> + <string name="Left Ear"> + Oreja izq. + </string> + <string name="Right Ear"> + Oreja der. + </string> + <string name="Left Eyeball"> + Ojo izq. + </string> + <string name="Right Eyeball"> + Ojo der. + </string> + <string name="Nose"> + Nariz + </string> + <string name="R Upper Arm"> + Brazo der. + </string> + <string name="R Forearm"> + Antebrazo der. + </string> + <string name="L Upper Arm"> + Brazo izq. + </string> + <string name="L Forearm"> + Antebrazo izq. + </string> + <string name="Right Hip"> + Cadera der. + </string> + <string name="R Upper Leg"> + Muslo der. + </string> + <string name="R Lower Leg"> + Pantorrilla der. + </string> + <string name="Left Hip"> + Cadera izq. + </string> + <string name="L Upper Leg"> + Muslo izq. + </string> + <string name="L Lower Leg"> + Pantorrilla izq. + </string> + <string name="Stomach"> + Abdomen + </string> + <string name="Left Pec"> + Pecho izquierdo + </string> + <string name="Right Pec"> + Pecho derecho + </string> + <string name="YearsMonthsOld"> + [AGEYEARS] [AGEMONTHS] de edad + </string> + <string name="YearsOld"> + [AGEYEARS] de edad + </string> + <string name="MonthsOld"> + [AGEMONTHS] de edad + </string> + <string name="WeeksOld"> + [AGEWEEKS] de edad + </string> + <string name="DaysOld"> + [AGEDAYS] de edad + </string> + <string name="TodayOld"> + Registrado hoy + </string> + <string name="AgeYearsA"> + [COUNT] año + </string> + <string name="AgeYearsB"> + [COUNT] años + </string> + <string name="AgeYearsC"> + [COUNT] años + </string> + <string name="AgeMonthsA"> + [COUNT] mes + </string> + <string name="AgeMonthsB"> + [COUNT] meses + </string> + <string name="AgeMonthsC"> + [COUNT] meses + </string> + <string name="AgeWeeksA"> + [COUNT] semana + </string> + <string name="AgeWeeksB"> + [COUNT] semanas + </string> + <string name="AgeWeeksC"> + [COUNT] semanas + </string> + <string name="AgeDaysA"> + [COUNT] día + </string> + <string name="AgeDaysB"> + [COUNT] días + </string> + <string name="AgeDaysC"> + [COUNT] días + </string> + <string name="GroupMembersA"> + [COUNT] miembro + </string> + <string name="GroupMembersB"> + [COUNT] miembros + </string> + <string name="GroupMembersC"> + [COUNT] miembros + </string> + <string name="AcctTypeResident"> + Residente + </string> + <string name="AcctTypeTrial"> + Prueba + </string> + <string name="AcctTypeCharterMember"> + Miembro fundador + </string> + <string name="AcctTypeEmployee"> + Empleado de Linden Lab + </string> + <string name="PaymentInfoUsed"> + Ha usado información sobre la forma de pago + </string> + <string name="PaymentInfoOnFile"> + Hay información archivada sobre la forma de pago + </string> + <string name="NoPaymentInfoOnFile"> + No hay información archivada sobre la forma de pago + </string> + <string name="AgeVerified"> + Edad verificada + </string> + <string name="NotAgeVerified"> + Edad no verificada + </string> + <string name="Center 2"> + Centro 2 + </string> + <string name="Top Right"> + Arriba der. + </string> + <string name="Top"> + Arriba + </string> + <string name="Top Left"> + Arriba izq. + </string> + <string name="Center"> + Centro + </string> + <string name="Bottom Left"> + Abajo izq. + </string> + <string name="Bottom"> + Abajo + </string> + <string name="Bottom Right"> + Abajo der. + </string> + <string name="CompileQueueDownloadedCompiling"> + Descargado, compilándolo + </string> + <string name="CompileQueueScriptNotFound"> + No se encuentra el script en el servidor. + </string> + <string name="CompileQueueProblemDownloading"> + Problema al descargar + </string> + <string name="CompileQueueInsufficientPermDownload"> + Permisos insuficientes para descargar un script. + </string> + <string name="CompileQueueInsufficientPermFor"> + Permisos insuficientes para + </string> + <string name="CompileQueueUnknownFailure"> + Fallo desconocido en la descarga + </string> + <string name="CompileQueueTitle"> + Recompilando + </string> + <string name="CompileQueueStart"> + recompilar + </string> + <string name="ResetQueueTitle"> + Progreso del reinicio + </string> + <string name="ResetQueueStart"> + restaurar + </string> + <string name="RunQueueTitle"> + Configurar según se ejecuta + </string> + <string name="RunQueueStart"> + Configurando según se ejecuta + </string> + <string name="NotRunQueueTitle"> + Configurar sin ejecutar + </string> + <string name="NotRunQueueStart"> + Configurando sin ejecutarlo + </string> + <string name="CompileSuccessful"> + ¡Compilación correcta! + </string> + <string name="CompileSuccessfulSaving"> + Compilación correcta, guardando... + </string> + <string name="SaveComplete"> + Guardado. + </string> + <string name="ObjectOutOfRange"> + Script (objeto fuera de rango) + </string> + <string name="GodToolsObjectOwnedBy"> + El objeto [OBJECT] es propiedad de [OWNER] + </string> + <string name="GroupsNone"> + ninguno + </string> + <string name="Group" value="(grupo)"/> + <string name="Unknown"> + (Desconocido) + </string> + <string name="SummaryForTheWeek" value="Resumen de esta semana, empezando el"/> + <string name="NextStipendDay" value="El próximo día de pago es el"/> + <string name="GroupIndividualShare" value="Grupo Aportaciones individuales"/> + <string name="Balance"> + Saldo + </string> + <string name="Credits"> + Créditos + </string> + <string name="Debits"> + Débitos + </string> + <string name="Total"> + Total + </string> + <string name="NoGroupDataFound"> + No se encontraron datos del grupo + </string> + <string name="IMParentEstate"> + parent estate + </string> + <string name="IMMainland"> + continente + </string> + <string name="IMTeen"> + teen + </string> + <string name="RegionInfoError"> + error + </string> + <string name="RegionInfoAllEstatesOwnedBy"> + todos los estados propiedad de [OWNER] + </string> + <string name="RegionInfoAllEstatesYouOwn"> + todos los estados que posees + </string> + <string name="RegionInfoAllEstatesYouManage"> + todos los estados que administras para [OWNER] + </string> + <string name="RegionInfoAllowedResidents"> + Resientes autorizados: ([ALLOWEDAGENTS] de un máx. de [MAXACCESS]) + </string> + <string name="RegionInfoAllowedGroups"> + Grupos autorizados: ([ALLOWEDGROUPS], de un máx. de [MAXACCESS]) + </string> + <string name="ScriptLimitsParcelScriptMemory"> + Memoria de los script en la parcela + </string> + <string name="ScriptLimitsParcelsOwned"> + Parcelas listadas: [PARCELS] + </string> + <string name="ScriptLimitsMemoryUsed"> + Memoria usada: [COUNT] kb de un máx de [MAX] kb; [AVAILABLE] kb disponibles + </string> + <string name="ScriptLimitsMemoryUsedSimple"> + Memoria usada: [COUNT] kb + </string> + <string name="ScriptLimitsParcelScriptURLs"> + URLs de los scripts de la parcela + </string> + <string name="ScriptLimitsURLsUsed"> + URLs usadas: [COUNT] de un máx. de [MAX]; [AVAILABLE] disponibles + </string> + <string name="ScriptLimitsURLsUsedSimple"> + URLs usadas: [COUNT] + </string> + <string name="ScriptLimitsRequestError"> + Error al obtener la información + </string> + <string name="ScriptLimitsRequestNoParcelSelected"> + No hay una parcela seleccionada + </string> + <string name="ScriptLimitsRequestWrongRegion"> + Error: la información del script sólo está disponible en tu región actual + </string> + <string name="ScriptLimitsRequestWaiting"> + Obteniendo la información... + </string> + <string name="ScriptLimitsRequestDontOwnParcel"> + No tienes permiso para examinar esta parcela + </string> + <string name="SITTING_ON"> + Sentado en + </string> + <string name="ATTACH_CHEST"> + Tórax + </string> + <string name="ATTACH_HEAD"> + Cabeza + </string> + <string name="ATTACH_LSHOULDER"> + Hombro izq. + </string> + <string name="ATTACH_RSHOULDER"> + Hombro der. + </string> + <string name="ATTACH_LHAND"> + Mano izq. + </string> + <string name="ATTACH_RHAND"> + Mano der. + </string> + <string name="ATTACH_LFOOT"> + Pie izq. + </string> + <string name="ATTACH_RFOOT"> + Pie der. + </string> + <string name="ATTACH_BACK"> + Espalda + </string> + <string name="ATTACH_PELVIS"> + Pelvis + </string> + <string name="ATTACH_MOUTH"> + Boca + </string> + <string name="ATTACH_CHIN"> + Barbilla + </string> + <string name="ATTACH_LEAR"> + Oreja izq. + </string> + <string name="ATTACH_REAR"> + Oreja der. + </string> + <string name="ATTACH_LEYE"> + Ojo izq. + </string> + <string name="ATTACH_REYE"> + Ojo der. + </string> + <string name="ATTACH_NOSE"> + Nariz + </string> + <string name="ATTACH_RUARM"> + Brazo der. + </string> + <string name="ATTACH_RLARM"> + Antebrazo der. + </string> + <string name="ATTACH_LUARM"> + Brazo izq. + </string> + <string name="ATTACH_LLARM"> + Antebrazo izq. + </string> + <string name="ATTACH_RHIP"> + Cadera der. + </string> + <string name="ATTACH_RULEG"> + Muslo der. + </string> + <string name="ATTACH_RLLEG"> + Pantorrilla der. + </string> + <string name="ATTACH_LHIP"> + Cadera izq. + </string> + <string name="ATTACH_LULEG"> + Muslo izq. + </string> + <string name="ATTACH_LLLEG"> + Pantorrilla izq. + </string> + <string name="ATTACH_BELLY"> + Vientre + </string> + <string name="ATTACH_RPEC"> + Pecho der. + </string> + <string name="ATTACH_LPEC"> + Pecho izq. + </string> + <string name="ATTACH_HUD_CENTER_2"> + HUD: Centro 2 + </string> + <string name="ATTACH_HUD_TOP_RIGHT"> + HUD: arriba der. + </string> + <string name="ATTACH_HUD_TOP_CENTER"> + HUD: arriba centro + </string> + <string name="ATTACH_HUD_TOP_LEFT"> + HUD: arriba izq. + </string> + <string name="ATTACH_HUD_CENTER_1"> + HUD: Centro 1 + </string> + <string name="ATTACH_HUD_BOTTOM_LEFT"> + HUD: abajo izq. + </string> + <string name="ATTACH_HUD_BOTTOM"> + HUD: abajo + </string> + <string name="ATTACH_HUD_BOTTOM_RIGHT"> + HUD: abajo der. + </string> + <string name="CursorPos"> + Línea [LINE], Columna [COLUMN] + </string> + <string name="PanelDirCountFound"> + [COUNT] resultados + </string> + <string name="PanelContentsNewScript"> + Script nuevo + </string> + <string name="MuteByName"> + (por el nombre) + </string> + <string name="MuteAgent"> + (Residente) + </string> + <string name="MuteObject"> + (objeto) + </string> + <string name="MuteGroup"> + (grupo) + </string> + <string name="RegionNoCovenant"> + No se ha aportado un contrato para este estado. + </string> + <string name="RegionNoCovenantOtherOwner"> + No se ha aportado un contrato para este estado. El terreno de este estado lo vende el propietario del estado, no Linden Lab. Por favor, contacta con ese propietario para informarte sobre la venta. + </string> + <string name="covenant_last_modified"> + Última modificación: + </string> + <string name="none_text" value="(no hay)"/> + <string name="never_text" value="(nunca)"/> + <string name="GroupOwned"> + Propiedad del grupo + </string> + <string name="Public"> + Público + </string> + <string name="ClassifiedClicksTxt"> + Clics: [TELEPORT] teleportes, [MAP] mapa, [PROFILE] perfil + </string> + <string name="ClassifiedUpdateAfterPublish"> + (se actualizará tras la publicación) + </string> + <string name="NoPicksClassifiedsText"> + No has creado destacados o clasificados. Pulsa el botón Más para crear uno. + </string> + <string name="NoAvatarPicksClassifiedsText"> + El usuario no tiene clasificados ni destacados + </string> + <string name="PicksClassifiedsLoadingText"> + Cargando... + </string> + <string name="MultiPreviewTitle"> + Vista previa + </string> + <string name="MultiPropertiesTitle"> + Propiedades + </string> + <string name="InvOfferAnObjectNamed"> + Un objeto de nombre + </string> + <string name="InvOfferOwnedByGroup"> + propiedad del grupo + </string> + <string name="InvOfferOwnedByUnknownGroup"> + propiedad de un grupo desconocido + </string> + <string name="InvOfferOwnedBy"> + propiedad de + </string> + <string name="InvOfferOwnedByUnknownUser"> + propiedad de un usuario desconocido + </string> + <string name="InvOfferGaveYou"> + te ha dado + </string> + <string name="InvOfferYouDecline"> + Has rehusado + </string> + <string name="InvOfferFrom"> + de + </string> + <string name="GroupMoneyTotal"> + Total + </string> + <string name="GroupMoneyBought"> + comprado + </string> + <string name="GroupMoneyPaidYou"> + pagado a ti + </string> + <string name="GroupMoneyPaidInto"> + pagado en + </string> + <string name="GroupMoneyBoughtPassTo"> + pase comprado a + </string> + <string name="GroupMoneyPaidFeeForEvent"> + cuotas pagadas para el evento + </string> + <string name="GroupMoneyPaidPrizeForEvent"> + precio pagado por el evento + </string> + <string name="GroupMoneyBalance"> + Saldo + </string> + <string name="GroupMoneyCredits"> + Créditos + </string> + <string name="GroupMoneyDebits"> + Débitos + </string> + <string name="ViewerObjectContents"> + Contenidos + </string> + <string name="AcquiredItems"> + Artículos adquiridos + </string> + <string name="Cancel"> + Cancelar + </string> + <string name="UploadingCosts"> + Subir este/a [%s] cuesta + </string> + <string name="UnknownFileExtension"> + Extensión de archivo desconocida [.%s] +Se esperaba .wav, .tga, .bmp, .jpg, .jpeg, o .bvh + </string> + <string name="MuteObject2"> + Ignorar + </string> + <string name="AddLandmarkNavBarMenu"> + Guardarme este hito... + </string> + <string name="EditLandmarkNavBarMenu"> + Editar este hito... </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+ @@ -519,82 +1585,1622 @@ Si sigue recibiendo este mensaje, contacte con el [SUPPORT_SITE]. <string name="accel-win-shift"> Mayús+ </string> - <string name="GraphicsQualityLow"> - Bajo + <string name="FileSaved"> + Archivo guardado </string> - <string name="GraphicsQualityMid"> - Medio + <string name="Receiving"> + Recibiendo </string> - <string name="GraphicsQualityHigh"> - Alto + <string name="AM"> + AM </string> - - <!-- PARCEL_CATEGORY_UI_STRING --> - <string name="Linden Location">Localización Linden</string> - <string name="Adult">'Adult'</string> - <string name="Arts&Culture">Arte y Cultura</string> - <string name="Business">Negocios</string> - <string name="Educational">Educativo</string> - <string name="Gaming">Juegos de azar</string> - <string name="Hangout">Entretenimiento</string> - <string name="Newcomer Friendly">Para recién llegados</string> - <string name="Parks&Nature">Parques y Naturaleza</string> - <string name="Residential">Residencial</string> - <string name="Shopping">Compras</string> - <string name="Other">Otra</string> - - <string name="ringing"> - Conectando al chat de voz... + <string name="PM"> + PM </string> - <string name="connected"> - Conectado + <string name="PST"> + PST </string> - <string name="unavailable"> - La voz no está disponible en su localización actual + <string name="PDT"> + PDT </string> - <string name="hang_up"> - Desconectado del chat de voz + <string name="Forward"> + Adelante + </string> + <string name="Left"> + Izquierda + </string> + <string name="Right"> + Derecha + </string> + <string name="Back"> + Atrás + </string> + <string name="North"> + Norte + </string> + <string name="South"> + Sur + </string> + <string name="West"> + Oeste + </string> + <string name="East"> + Este + </string> + <string name="Up"> + Arriba + </string> + <string name="Down"> + Abajo + </string> + <string name="Any Category"> + Cualquier categoría + </string> + <string name="Shopping"> + Compras + </string> + <string name="Land Rental"> + Terreno en alquiler + </string> + <string name="Property Rental"> + Propiedad en alquiler + </string> + <string name="Special Attraction"> + Atracción especial + </string> + <string name="New Products"> + Nuevos productos + </string> + <string name="Employment"> + Empleo + </string> + <string name="Wanted"> + Se busca + </string> + <string name="Service"> + Servicios + </string> + <string name="Personal"> + Personal + </string> + <string name="None"> + Ninguno + </string> + <string name="Linden Location"> + Localización Linden + </string> + <string name="Adult"> + 'Adult' + </string> + <string name="Arts&Culture"> + Arte y Cultura + </string> + <string name="Business"> + Negocios + </string> + <string name="Educational"> + Educativo + </string> + <string name="Gaming"> + Juegos de azar + </string> + <string name="Hangout"> + Entretenimiento + </string> + <string name="Newcomer Friendly"> + Para recién llegados + </string> + <string name="Parks&Nature"> + Parques y Naturaleza + </string> + <string name="Residential"> + Residencial + </string> + <string name="Stage"> + Artes escénicas + </string> + <string name="Other"> + Otra + </string> + <string name="Any"> + Cualquiera + </string> + <string name="You"> + Tú + </string> + <string name="Multiple Media"> + Múltiples medias + </string> + <string name="Play Media"> + Play/Pausa los media + </string> + <string name="MBCmdLineError"> + Ha habido un error analizando la línea de comando. +Por favor, consulta: http://wiki.secondlife.com/wiki/Client_parameters +Error: + </string> + <string name="MBCmdLineUsg"> + [APP_NAME] Uso de línea de comando: + </string> + <string name="MBUnableToAccessFile"> + [APP_NAME] no puede acceder a un archivo que necesita. + +Puede ser porque estés ejecutando varias copias, o porque tu sistema crea -equivocadamente- que el archivo está abierto. +Si este mensaje persiste, reinicia tu ordenador y vuelve a intentarlo. +Si aun así sigue apareciendo el mensaje, debes desinstalar completamente [APP_NAME] y reinstalarlo. + </string> + <string name="MBFatalError"> + Error fatal + </string> + <string name="MBRequiresAltiVec"> + [APP_NAME] requiere un procesador con AltiVec (G4 o posterior). + </string> + <string name="MBAlreadyRunning"> + [APP_NAME] ya se está ejecutando. +Revisa tu barra de tareas para encontrar una copia minimizada del programa. +Si este mensaje persiste, reinicia tu ordenador. + </string> + <string name="MBFrozenCrashed"> + En su anterior ejecución, [APP_NAME] se congeló o se cayó. +¿Quieres enviar un informe de caída? + </string> + <string name="MBAlert"> + Alerta + </string> + <string name="MBNoDirectX"> + [APP_NAME] no encuentra DirectX 9.0b o superior. +[APP_NAME] usa DirectX para detectar el hardware o los drivers no actualizados que pueden provocar problemas de estabilidad, ejecución pobre y caídas. Aunque puedes ejecutar [APP_NAME] sin él, recomendamos encarecidamente hacerlo con DirectX 9.0b. + +¿Quieres continuar? + </string> + <string name="MBWarning"> + ¡Atención! + </string> + <string name="MBNoAutoUpdate"> + Las actualizaciones automáticas no están todavía implementadas para Linux. +Por favor, descarga la última versión desde www.secondlife.com. + </string> + <string name="MBRegClassFailed"> + Fallo en RegisterClass + </string> + <string name="MBError"> + Error + </string> + <string name="MBFullScreenErr"> + No puede ejecutarse a pantalla completa de [WIDTH] x [HEIGHT]. +Ejecutándose en una ventana. + </string> + <string name="MBDestroyWinFailed"> + Error Shutdown destruyendo la ventana (DestroyWindow() failed) + </string> + <string name="MBShutdownErr"> + Error Shutdown + </string> + <string name="MBDevContextErr"> + No se puede construir el 'GL device context' + </string> + <string name="MBPixelFmtErr"> + No se puede encontrar un formato adecuado de píxel + </string> + <string name="MBPixelFmtDescErr"> + No se puede conseguir la descripción del formato de píxel + </string> + <string name="MBTrueColorWindow"> + Para ejecutarse, [APP_NAME] necesita True Color (32-bit). +Por favor, en las configuraciones de tu ordenador ajusta el modo de color a 32-bit. + </string> + <string name="MBAlpha"> + [APP_NAME] no puede ejecutarse porque no puede obtener un canal alpha de 8 bit. Generalmente, se debe a alguna cuestión de los drivers de la tarjeta de vídeo. +Por favor, comprueba que tienes instalados los últimos drivers para tu tarjeta de vídeo. +Comprueba también que tu monitor esta configurado para True Color (32-bit) en Panel de Control > Apariencia y temas > Pantalla. +Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE]. + </string> + <string name="MBPixelFmtSetErr"> + No se puede configurar el formato de píxel + </string> + <string name="MBGLContextErr"> + No se puede crear el 'GL rendering context' + </string> + <string name="MBGLContextActErr"> + No se puede activar el 'GL rendering context' + </string> + <string name="MBVideoDrvErr"> + [APP_NAME] no puede ejecutarse porque los drivers de tu tarjeta de vídeo o no están bien instalados, o no están actualizados, o son para hardware no admitido. Por favor, comprueba que tienes los drivers más actuales para tu tarjeta de vídeo, y, aunque los tengas, intenta reinstalarlos. + +Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE]. + </string> + <string name="5 O'Clock Shadow"> + Barba del día + </string> + <string name="All White"> + Blanco del todo + </string> + <string name="Anime Eyes"> + Ojos de cómic + </string> + <string name="Arced"> + Arqueadas + </string> + <string name="Arm Length"> + Brazos: longitud + </string> + <string name="Attached"> + Cortos + </string> + <string name="Attached Earlobes"> + Lóbulos cortos + </string> + <string name="Back Fringe"> + Nuca: largo + </string> + <string name="Baggy"> + Marcadas + </string> + <string name="Bangs"> + Bangs + </string> + <string name="Beady Eyes"> + Ojos pequeños + </string> + <string name="Belly Size"> + Barriga: tamaño + </string> + <string name="Big"> + Grande + </string> + <string name="Big Butt"> + Culo grande + </string> + <string name="Big Hair Back"> + Pelo: moño + </string> + <string name="Big Hair Front"> + Pelo: tupé + </string> + <string name="Big Hair Top"> + Pelo: melena alta + </string> + <string name="Big Head"> + Cabeza grande + </string> + <string name="Big Pectorals"> + Grandes pectorales + </string> + <string name="Big Spikes"> + Crestas grandes + </string> + <string name="Black"> + Negro + </string> + <string name="Blonde"> + Rubio + </string> + <string name="Blonde Hair"> + Pelo rubio + </string> + <string name="Blush"> + Colorete + </string> + <string name="Blush Color"> + Color del colorete + </string> + <string name="Blush Opacity"> + Opacidad del colorete + </string> + <string name="Body Definition"> + Definición del cuerpo + </string> + <string name="Body Fat"> + Cuerpo: gordura + </string> + <string name="Body Freckles"> + Pecas del cuerpo + </string> + <string name="Body Thick"> + Cuerpo grueso + </string> + <string name="Body Thickness"> + Cuerpo: grosor + </string> + <string name="Body Thin"> + Cuerpo delgado + </string> + <string name="Bow Legged"> + Abiertas + </string> + <string name="Breast Buoyancy"> + Busto: firmeza + </string> + <string name="Breast Cleavage"> + Busto: canalillo + </string> + <string name="Breast Size"> + Busto: tamaño + </string> + <string name="Bridge Width"> + Puente: ancho + </string> + <string name="Broad"> + Ancho + </string> + <string name="Brow Size"> + Arco ciliar + </string> + <string name="Bug Eyes"> + Bug Eyes + </string> + <string name="Bugged Eyes"> + Ojos saltones + </string> + <string name="Bulbous"> + Bulbosa + </string> + <string name="Bulbous Nose"> + Nariz de porra + </string> + <string name="Bushy Eyebrows"> + Cejijuntas + </string> + <string name="Bushy Hair"> + Pelo tupido + </string> + <string name="Butt Size"> + Culo: tamaño + </string> + <string name="bustle skirt"> + Polisón + </string> + <string name="no bustle"> + Sin polisón + </string> + <string name="more bustle"> + Con polisón + </string> + <string name="Chaplin"> + Cortito + </string> + <string name="Cheek Bones"> + Pómulos + </string> + <string name="Chest Size"> + Tórax: tamaño + </string> + <string name="Chin Angle"> + Barbilla: ángulo + </string> + <string name="Chin Cleft"> + Barbilla: contorno + </string> + <string name="Chin Curtains"> + Barba en collar + </string> + <string name="Chin Depth"> + Barbilla: largo + </string> + <string name="Chin Heavy"> + Hacia la barbilla + </string> + <string name="Chin In"> + Barbilla retraída + </string> + <string name="Chin Out"> + Barbilla prominente + </string> + <string name="Chin-Neck"> + Papada + </string> + <string name="Clear"> + Transparente + </string> + <string name="Cleft"> + Remarcar + </string> + <string name="Close Set Eyes"> + Ojos juntos + </string> + <string name="Closed"> + Cerrar + </string> + <string name="Closed Back"> + Trasera cerrada + </string> + <string name="Closed Front"> + Frontal cerrado + </string> + <string name="Closed Left"> + Cerrada + </string> + <string name="Closed Right"> + Cerrada + </string> + <string name="Coin Purse"> + Poco abultada + </string> + <string name="Collar Back"> + Espalda + </string> + <string name="Collar Front"> + Escote + </string> + <string name="Corner Down"> + Hacia abajo + </string> + <string name="Corner Up"> + Hacia arriba + </string> + <string name="Creased"> + Caídos + </string> + <string name="Crooked Nose"> + Nariz torcida + </string> + <string name="Cuff Flare"> + Acampanado + </string> + <string name="Dark"> + Oscuridad + </string> + <string name="Dark Green"> + Verde oscuro + </string> + <string name="Darker"> + Más oscuros + </string> + <string name="Deep"> + Remarcar + </string> + <string name="Default Heels"> + Tacones por defecto + </string> + <string name="Dense"> + Densas + </string> + <string name="Double Chin"> + Mucha papada + </string> + <string name="Downturned"> + Poco + </string> + <string name="Duffle Bag"> + Muy abultada + </string> + <string name="Ear Angle"> + Orejas: ángulo + </string> + <string name="Ear Size"> + Orejas: tamaño + </string> + <string name="Ear Tips"> + Orejas: forma + </string> + <string name="Egg Head"> + Cabeza: ahuevada + </string> + <string name="Eye Bags"> + Ojos: bolsas + </string> + <string name="Eye Color"> + Ojos: color + </string> + <string name="Eye Depth"> + Ojos: profundidad + </string> + <string name="Eye Lightness"> + Ojos: brillo + </string> + <string name="Eye Opening"> + Ojos: apertura + </string> + <string name="Eye Pop"> + Ojos: simetría + </string> + <string name="Eye Size"> + Ojos: tamaño + </string> + <string name="Eye Spacing"> + Ojos: separación + </string> + <string name="Eyebrow Arc"> + Cejas: arco + </string> + <string name="Eyebrow Density"> + Cejas: densidad + </string> + <string name="Eyebrow Height"> + Cejas: altura + </string> + <string name="Eyebrow Points"> + Cejas: en V + </string> + <string name="Eyebrow Size"> + Cejas: tamaño + </string> + <string name="Eyelash Length"> + Pestañas: longitud + </string> + <string name="Eyeliner"> + Contorno de ojos + </string> + <string name="Eyeliner Color"> + Contorno de ojos: color + </string> + <string name="Eyes Bugged"> + Eyes Bugged + </string> + <string name="Face Shear"> + Cara: simetría + </string> + <string name="Facial Definition"> + Rasgos marcados + </string> + <string name="Far Set Eyes"> + Ojos separados + </string> + <string name="Fat Lips"> + Prominentes + </string> + <string name="Female"> + Mujer + </string> + <string name="Fingerless"> + Sin dedos + </string> + <string name="Fingers"> + Con dedos + </string> + <string name="Flared Cuffs"> + Campana + </string> + <string name="Flat"> + Redondeadas + </string> + <string name="Flat Butt"> + Culo plano + </string> + <string name="Flat Head"> + Cabeza plana + </string> + <string name="Flat Toe"> + Empeine bajo + </string> + <string name="Foot Size"> + Pie: tamaño + </string> + <string name="Forehead Angle"> + Frente: ángulo + </string> + <string name="Forehead Heavy"> + Hacia la frente + </string> + <string name="Freckles"> + Pecas + </string> + <string name="Front Fringe"> + Flequillo + </string> + <string name="Full Back"> + Sin cortar + </string> + <string name="Full Eyeliner"> + Contorno completo + </string> + <string name="Full Front"> + Sin cortar + </string> + <string name="Full Hair Sides"> + Pelo: volumen a los lados + </string> + <string name="Full Sides"> + Volumen total + </string> + <string name="Glossy"> + Con brillo + </string> + <string name="Glove Fingers"> + Guantes: dedos + </string> + <string name="Glove Length"> + Guantes: largo + </string> + <string name="Hair"> + Pelo + </string> + <string name="Hair Back"> + Pelo: nuca + </string> + <string name="Hair Front"> + Pelo: delante + </string> + <string name="Hair Sides"> + Pelo: lados + </string> + <string name="Hair Sweep"> + Peinado: dirección + </string> + <string name="Hair Thickess"> + Pelo: espesor + </string> + <string name="Hair Thickness"> + Pelo: espesor + </string> + <string name="Hair Tilt"> + Pelo: inclinación + </string> + <string name="Hair Tilted Left"> + A la izq. + </string> + <string name="Hair Tilted Right"> + A la der. + </string> + <string name="Hair Volume"> + Pelo: volumen + </string> + <string name="Hand Size"> + Manos: tamaño + </string> + <string name="Handlebars"> + Muy largo + </string> + <string name="Head Length"> + Cabeza: longitud + </string> + <string name="Head Shape"> + Cabeza: forma + </string> + <string name="Head Size"> + Cabeza: tamaño + </string> + <string name="Head Stretch"> + Cabeza: estiramiento + </string> + <string name="Heel Height"> + Tacón: altura + </string> + <string name="Heel Shape"> + Tacón: forma + </string> + <string name="Height"> + Altura + </string> + <string name="High"> + Subir + </string> + <string name="High Heels"> + Tacones altos + </string> + <string name="High Jaw"> + Mandíbula alta + </string> + <string name="High Platforms"> + Suela gorda + </string> + <string name="High and Tight"> + Pegada + </string> + <string name="Higher"> + Arrriba + </string> + <string name="Hip Length"> + Cadera: altura + </string> + <string name="Hip Width"> + Cadera: ancho + </string> + <string name="In"> + Pegadas + </string> + <string name="In Shdw Color"> + Línea de ojos: color + </string> + <string name="In Shdw Opacity"> + Línea de ojos: opacidad + </string> + <string name="Inner Eye Corner"> + Ojos: lagrimal + </string> + <string name="Inner Eye Shadow"> + Inner Eye Shadow + </string> + <string name="Inner Shadow"> + Línea de ojos + </string> + <string name="Jacket Length"> + Chaqueta: largo + </string> + <string name="Jacket Wrinkles"> + Chaqueta: arrugas + </string> + <string name="Jaw Angle"> + Mandíbula: ángulo + </string> + <string name="Jaw Jut"> + Maxilar inferior + </string> + <string name="Jaw Shape"> + Mandíbula: forma + </string> + <string name="Join"> + Más junto + </string> + <string name="Jowls"> + Mofletes + </string> + <string name="Knee Angle"> + Rodillas: ángulo + </string> + <string name="Knock Kneed"> + Zambas + </string> + <string name="Large"> + Aumentar + </string> + <string name="Large Hands"> + Manos grandes + </string> + <string name="Left Part"> + Raya: izq. + </string> + <string name="Leg Length"> + Piernas: longitud + </string> + <string name="Leg Muscles"> + Piernas: musculatura + </string> + <string name="Less"> + Menos + </string> + <string name="Less Body Fat"> + Menos gordura + </string> + <string name="Less Curtains"> + Menos tupida + </string> + <string name="Less Freckles"> + Menos pecas + </string> + <string name="Less Full"> + Menos grosor + </string> + <string name="Less Gravity"> + Más levantado + </string> + <string name="Less Love"> + Menos michelines + </string> + <string name="Less Muscles"> + Pocos músculos + </string> + <string name="Less Muscular"> + Poca musculatura + </string> + <string name="Less Rosy"> + Menos sonrosada + </string> + <string name="Less Round"> + Menos redondeada + </string> + <string name="Less Saddle"> + Menos cartucheras + </string> + <string name="Less Square"> + Menos cuadrada + </string> + <string name="Less Volume"> + Menos volumen + </string> + <string name="Less soul"> + Pequeña + </string> + <string name="Lighter"> + Más luminosos + </string> + <string name="Lip Cleft"> + Labio: hoyuelo + </string> + <string name="Lip Cleft Depth"> + Hoyuelo marcado + </string> + <string name="Lip Fullness"> + Labios: grosor + </string> + <string name="Lip Pinkness"> + Labios sonrosados + </string> + <string name="Lip Ratio"> + Labios: ratio + </string> + <string name="Lip Thickness"> + Labios: prominencia + </string> + <string name="Lip Width"> + Labios: ancho + </string> + <string name="Lipgloss"> + Brillo de labios + </string> + <string name="Lipstick"> + Barra de labios + </string> + <string name="Lipstick Color"> + Barra de labios: color + </string> + <string name="Long"> + Más + </string> + <string name="Long Head"> + Cabeza alargada + </string> + <string name="Long Hips"> + Cadera larga + </string> + <string name="Long Legs"> + Piernas largas + </string> + <string name="Long Neck"> + Cuello largo + </string> + <string name="Long Pigtails"> + Coletas largas + </string> + <string name="Long Ponytail"> + Cola de caballo larga + </string> + <string name="Long Torso"> + Torso largo + </string> + <string name="Long arms"> + Brazos largos + </string> + <string name="Loose Pants"> + Pantalón suelto + </string> + <string name="Loose Shirt"> + Camiseta suelta + </string> + <string name="Loose Sleeves"> + Puños anchos + </string> + <string name="Love Handles"> + Michelines + </string> + <string name="Low"> + Bajar + </string> + <string name="Low Heels"> + Tacones bajos + </string> + <string name="Low Jaw"> + Mandíbula baja + </string> + <string name="Low Platforms"> + Suela fina + </string> + <string name="Low and Loose"> + Suelta + </string> + <string name="Lower"> + Abajo + </string> + <string name="Lower Bridge"> + Puente: abajo + </string> + <string name="Lower Cheeks"> + Mejillas: abajo + </string> + <string name="Male"> + Varón + </string> + <string name="Middle Part"> + Raya: en medio + </string> + <string name="More"> + Más + </string> + <string name="More Blush"> + Más colorete + </string> + <string name="More Body Fat"> + Más gordura + </string> + <string name="More Curtains"> + Más tupida + </string> + <string name="More Eyeshadow"> + Más + </string> + <string name="More Freckles"> + Más pecas + </string> + <string name="More Full"> + Más grosor + </string> + <string name="More Gravity"> + Menos levantado + </string> + <string name="More Lipstick"> + Más barra de labios + </string> + <string name="More Love"> + Más michelines + </string> + <string name="More Lower Lip"> + Más el inferior + </string> + <string name="More Muscles"> + Más músculos + </string> + <string name="More Muscular"> + Más musculatura + </string> + <string name="More Rosy"> + Más sonrosada + </string> + <string name="More Round"> + Más redondeada + </string> + <string name="More Saddle"> + Más cartucheras + </string> + <string name="More Sloped"> + Más inclinada + </string> + <string name="More Square"> + Más cuadrada + </string> + <string name="More Upper Lip"> + Más el superior + </string> + <string name="More Vertical"> + Más recta + </string> + <string name="More Volume"> + Más volumen + </string> + <string name="More soul"> + Grande + </string> + <string name="Moustache"> + Bigote + </string> + <string name="Mouth Corner"> + Comisuras + </string> + <string name="Mouth Position"> + Boca: posición + </string> + <string name="Mowhawk"> + Rapado + </string> + <string name="Muscular"> + Muscular + </string> + <string name="Mutton Chops"> + Patillas largas + </string> + <string name="Nail Polish"> + Uñas pintadas + </string> + <string name="Nail Polish Color"> + Uñas pintadas: color + </string> + <string name="Narrow"> + Disminuir + </string> + <string name="Narrow Back"> + Rapada + </string> + <string name="Narrow Front"> + Entradas + </string> + <string name="Narrow Lips"> + Labios estrechos + </string> + <string name="Natural"> + Natural + </string> + <string name="Neck Length"> + Cuello: longitud + </string> + <string name="Neck Thickness"> + Cuello: grosor + </string> + <string name="No Blush"> + Sin colorete + </string> + <string name="No Eyeliner"> + Sin contorno + </string> + <string name="No Eyeshadow"> + Menos + </string> + <string name="No Lipgloss"> + Sin brillo + </string> + <string name="No Lipstick"> + Sin barra de labios + </string> + <string name="No Part"> + Sin raya + </string> + <string name="No Polish"> + Sin pintar + </string> + <string name="No Red"> + Nada + </string> + <string name="No Spikes"> + Sin crestas + </string> + <string name="No White"> + Sin blanco + </string> + <string name="No Wrinkles"> + Sin arrugas + </string> + <string name="Normal Lower"> + Normal Lower + </string> + <string name="Normal Upper"> + Normal Upper + </string> + <string name="Nose Left"> + Nariz a la izq. + </string> + <string name="Nose Right"> + Nariz a la der. + </string> + <string name="Nose Size"> + Nariz: tamaño + </string> + <string name="Nose Thickness"> + Nariz: grosor + </string> + <string name="Nose Tip Angle"> + Nariz: respingona + </string> + <string name="Nose Tip Shape"> + Nariz: punta + </string> + <string name="Nose Width"> + Nariz: ancho + </string> + <string name="Nostril Division"> + Ventana: altura + </string> + <string name="Nostril Width"> + Ventana: ancho + </string> + <string name="Opaque"> + Opaco + </string> + <string name="Open"> + Abrir + </string> + <string name="Open Back"> + Apertura trasera + </string> + <string name="Open Front"> + Apertura frontal + </string> + <string name="Open Left"> + Abierta + </string> + <string name="Open Right"> + Abierta + </string> + <string name="Orange"> + Anaranjado + </string> + <string name="Out"> + De soplillo + </string> + <string name="Out Shdw Color"> + Sombra de ojos: color + </string> + <string name="Out Shdw Opacity"> + Sombra de ojos: opacidad + </string> + <string name="Outer Eye Corner"> + Ojos: comisura + </string> + <string name="Outer Eye Shadow"> + Outer Eye Shadow + </string> + <string name="Outer Shadow"> + Sombra de ojos + </string> + <string name="Overbite"> + Retraído + </string> + <string name="Package"> + Pubis + </string> + <string name="Painted Nails"> + Pintadas + </string> + <string name="Pale"> + Pálida + </string> + <string name="Pants Crotch"> + Pantalón: cruz + </string> + <string name="Pants Fit"> + Ceñido + </string> + <string name="Pants Length"> + Pernera: largo + </string> + <string name="Pants Waist"> + Caja + </string> + <string name="Pants Wrinkles"> + Pantalón: arrugas + </string> + <string name="Part"> + Raya + </string> + <string name="Part Bangs"> + Flequillo partido + </string> + <string name="Pectorals"> + Pectorales + </string> + <string name="Pigment"> + Tono + </string> + <string name="Pigtails"> + Coletas + </string> + <string name="Pink"> + Rosa + </string> + <string name="Pinker"> + Más sonrosados + </string> + <string name="Platform Height"> + Suela: altura + </string> + <string name="Platform Width"> + Suela: ancho + </string> + <string name="Pointy"> + En punta + </string> + <string name="Pointy Heels"> + De aguja + </string> + <string name="Ponytail"> + Cola de caballo + </string> + <string name="Poofy Skirt"> + Con vuelo + </string> + <string name="Pop Left Eye"> + Izquierdo más grande + </string> + <string name="Pop Right Eye"> + Derecho más grande + </string> + <string name="Puffy"> + Hinchadas + </string> + <string name="Puffy Eyelids"> + Ojeras + </string> + <string name="Rainbow Color"> + Irisación + </string> + <string name="Red Hair"> + Pelirrojo + </string> + <string name="Regular"> + Regular + </string> + <string name="Right Part"> + Raya: der. + </string> + <string name="Rosy Complexion"> + Tez sonrosada + </string> + <string name="Round"> + Redondear + </string> + <string name="Ruddiness"> + Rubicundez + </string> + <string name="Ruddy"> + Rojiza + </string> + <string name="Rumpled Hair"> + Pelo encrespado + </string> + <string name="Saddle Bags"> + Cartucheras + </string> + <string name="Scrawny Leg"> + Piernas flacas + </string> + <string name="Separate"> + Más ancho + </string> + <string name="Shallow"> + Sin marcar + </string> + <string name="Shear Back"> + Nuca: corte + </string> + <string name="Shear Face"> + Shear Face + </string> + <string name="Shear Front"> + Shear Front + </string> + <string name="Shear Left Up"> + Arriba - izq. + </string> + <string name="Shear Right Up"> + Arriba - der. + </string> + <string name="Sheared Back"> + Rapada + </string> + <string name="Sheared Front"> + Rapada + </string> + <string name="Shift Left"> + A la izq. + </string> + <string name="Shift Mouth"> + Boca: ladeada + </string> + <string name="Shift Right"> + A la der. + </string> + <string name="Shirt Bottom"> + Alto de cintura + </string> + <string name="Shirt Fit"> + Ceñido + </string> + <string name="Shirt Wrinkles"> + Camisa: arrugas + </string> + <string name="Shoe Height"> + Caña: altura + </string> + <string name="Short"> + Menos + </string> + <string name="Short Arms"> + Brazos cortos + </string> + <string name="Short Legs"> + Piernas cortas + </string> + <string name="Short Neck"> + Cuello corto + </string> + <string name="Short Pigtails"> + Coletas cortas + </string> + <string name="Short Ponytail"> + Cola de caballo corta + </string> + <string name="Short Sideburns"> + Patillas cortas + </string> + <string name="Short Torso"> + Torso corto + </string> + <string name="Short hips"> + Cadera corta + </string> + <string name="Shoulders"> + Hombros + </string> + <string name="Side Fringe"> + Lados: franja + </string> + <string name="Sideburns"> + Patillas + </string> + <string name="Sides Hair"> + Pelo: lados + </string> + <string name="Sides Hair Down"> + Bajar lados del pelo + </string> + <string name="Sides Hair Up"> + Subir lados del pelo + </string> + <string name="Skinny Neck"> + Cuello estrecho + </string> + <string name="Skirt Fit"> + Falda: vuelo + </string> + <string name="Skirt Length"> + Falda: largo + </string> + <string name="Slanted Forehead"> + Slanted Forehead + </string> + <string name="Sleeve Length"> + Largo de manga + </string> + <string name="Sleeve Looseness"> + Ancho de puños + </string> + <string name="Slit Back"> + Raja trasera + </string> + <string name="Slit Front"> + Raja frontal + </string> + <string name="Slit Left"> + Raja a la izq. + </string> + <string name="Slit Right"> + Raja a la der. + </string> + <string name="Small"> + Disminuir + </string> + <string name="Small Hands"> + Manos pequeñas + </string> + <string name="Small Head"> + Cabeza pequeña + </string> + <string name="Smooth"> + Leves + </string> + <string name="Smooth Hair"> + Pelo liso + </string> + <string name="Socks Length"> + Calcetines: largo + </string> + <string name="Soulpatch"> + Perilla + </string> + <string name="Sparse"> + Depiladas + </string> + <string name="Spiked Hair"> + Crestas + </string> + <string name="Square"> + Cuadrada + </string> + <string name="Square Toe"> + Punta cuadrada + </string> + <string name="Squash Head"> + Cabeza aplastada + </string> + <string name="Stretch Head"> + Cabeza estirada + </string> + <string name="Sunken"> + Chupadas + </string> + <string name="Sunken Chest"> + Estrecho de pecho + </string> + <string name="Sunken Eyes"> + Ojos hundidos + </string> + <string name="Sweep Back"> + Sweep Back + </string> + <string name="Sweep Forward"> + Sweep Forward + </string> + <string name="Tall"> + Alta + </string> + <string name="Taper Back"> + Cubierta trasera + </string> + <string name="Taper Front"> + Cubierta frontal + </string> + <string name="Thick Heels"> + Tacones grandes + </string> + <string name="Thick Neck"> + Cuello ancho + </string> + <string name="Thick Toe"> + Empeine alto + </string> + <string name="Thin"> + Delgadas + </string> + <string name="Thin Eyebrows"> + Cejas finas + </string> + <string name="Thin Lips"> + Hacia dentro + </string> + <string name="Thin Nose"> + Nariz fina + </string> + <string name="Tight Chin"> + Poca papada + </string> + <string name="Tight Cuffs"> + Sin campana + </string> + <string name="Tight Pants"> + Pantalón ceñido + </string> + <string name="Tight Shirt"> + Camisa ceñida + </string> + <string name="Tight Skirt"> + Falda ceñida + </string> + <string name="Tight Sleeves"> + Puños ceñidos + </string> + <string name="Toe Shape"> + Punta: forma + </string> + <string name="Toe Thickness"> + Empeine + </string> + <string name="Torso Length"> + Torso: longitud + </string> + <string name="Torso Muscles"> + Torso: musculatura + </string> + <string name="Torso Scrawny"> + Torso flacucho + </string> + <string name="Unattached"> + Largos + </string> + <string name="Uncreased"> + Abiertos + </string> + <string name="Underbite"> + Prognatismo + </string> + <string name="Unnatural"> + No natural + </string> + <string name="Upper Bridge"> + Puente: arriba + </string> + <string name="Upper Cheeks"> + Mejillas: arriba + </string> + <string name="Upper Chin Cleft"> + Barbilla: prominencia + </string> + <string name="Upper Eyelid Fold"> + Párpados + </string> + <string name="Upturned"> + Mucho + </string> + <string name="Very Red"> + Del todo + </string> + <string name="Waist Height"> + Cintura + </string> + <string name="Well-Fed"> + Mofletes + </string> + <string name="White Hair"> + Pelo blanco + </string> + <string name="Wide"> + Ancho + </string> + <string name="Wide Back"> + Completa + </string> + <string name="Wide Front"> + Completa + </string> + <string name="Wide Lips"> + Labios anchos + </string> + <string name="Wild"> + Total + </string> + <string name="Wrinkles"> + Arrugas + </string> + <string name="LocationCtrlAddLandmarkTooltip"> + Añadir a mis hitos + </string> + <string name="LocationCtrlEditLandmarkTooltip"> + Editar mis hitos + </string> + <string name="LocationCtrlInfoBtnTooltip"> + Ver más información de esta localización + </string> + <string name="LocationCtrlComboBtnTooltip"> + Historial de mis localizaciones + </string> + <string name="UpdaterWindowTitle"> + Actualizar [APP_NAME] + </string> + <string name="UpdaterNowUpdating"> + Actualizando [APP_NAME]... + </string> + <string name="UpdaterNowInstalling"> + Instalando [APP_NAME]... + </string> + <string name="UpdaterUpdatingDescriptive"> + Tu visor [APP_NAME] se está actualizando a la última versión. Llevará algún tiempo, paciencia. + </string> + <string name="UpdaterProgressBarTextWithEllipses"> + Descargando la actualización... + </string> + <string name="UpdaterProgressBarText"> + Descargando la actualización + </string> + <string name="UpdaterFailDownloadTitle"> + Fallo en la descarga de la actualización + </string> + <string name="UpdaterFailUpdateDescriptive"> + Ha habido un error actualizando [APP_NAME]. Por favor, descarga la última versión desde www.secondlife.com. + </string> + <string name="UpdaterFailInstallTitle"> + Fallo al instalar la actualización + </string> + <string name="UpdaterFailStartTitle"> + Fallo al iniciar el visor + </string> + <string name="IM_logging_string"> + -- Activado el registro de los mensajes instantáneos -- + </string> + <string name="IM_typing_start_string"> + [NAME] está escribiendo... + </string> + <string name="Unnamed"> + (sin nombre) + </string> + <string name="IM_moderated_chat_label"> + (Moderado: por defecto, desactivada la voz) + </string> + <string name="IM_unavailable_text_label"> + Para esta llamada no está disponible el chat de texto. + </string> + <string name="IM_muted_text_label"> + Un moderador del grupo ha desactivado tu chat de texto. + </string> + <string name="IM_default_text_label"> + Pulsa aquí para enviar un mensaje instantáneo. + </string> + <string name="IM_to_label"> + A + </string> + <string name="IM_moderator_label"> + (Moderador) + </string> + <string name="started_call"> + Iniciar una llamada de voz + </string> + <string name="joined_call"> + Entrando a la llamada de voz + </string> + <string name="ringing-im"> + Haciendo la llamada de voz... + </string> + <string name="connected-im"> + Conectado, pulsa Colgar para salir + </string> + <string name="hang_up-im"> + Colgar la llamada de voz </string> - <string name="ScriptQuestionCautionChatGranted"> - '[OBJECTNAME]', un objeto propiedad de '[OWNERNAME]', localizado en [REGIONNAME] con la posición [REGIONPOS], ha recibido permiso para: [PERMISSIONS]. - </string> - <string name="ScriptQuestionCautionChatDenied"> - A '[OBJECTNAME]', un objeto propiedad de '[OWNERNAME]', localizado en [REGIONNAME] con la posición [REGIONPOS], se le ha denegado el permiso para: [PERMISSIONS]. - </string> - <string name="ScriptTakeMoney"> - Cogerle a usted dólares Linden (L$) - </string> - <string name="ActOnControlInputs"> - Actuar en sus controles de entrada - </string> - <string name="RemapControlInputs"> - Reconfigurar sus controles de entrada - </string> - <string name="AnimateYourAvatar"> - Ejecutar animaciones en su avatar - </string> - <string name="AttachToYourAvatar"> - Anexarse a su avatar - </string> - <string name="ReleaseOwnership"> - Anular la propiedad y que pase a ser público - </string> - <string name="LinkAndDelink"> - Enlazar y desenlazar de otros objetos - </string> - <string name="AddAndRemoveJoints"> - Añadir y quitar uniones con otros objetos - </string> - <string name="ChangePermissions"> - Cambiar sus permisos - </string> - <string name="TrackYourCamera"> - Seguir su cámara - </string> - <string name="ControlYourCamera"> - Controlar su cámara - </string> - <string name="only_user_message"> Usted es el único usuario en esta sesión. </string> @@ -604,6 +3210,12 @@ Si sigue recibiendo este mensaje, contacte con el [SUPPORT_SITE]. <string name="invite_message"> Pulse el botón [BUTTON NAME] para aceptar/conectar este chat de voz. </string> + <string name="muted_message"> + Has ignorado a este residente. Le designorarás automáticamente enviándole un mensaje. + </string> + <string name="generic"> + Error en lo solicitado, por favor, inténtalo más tarde. + </string> <string name="generic_request_error"> Error al hacer lo solicitado; por favor, inténtelo más tarde. </string> @@ -622,46 +3234,37 @@ Si sigue recibiendo este mensaje, contacte con el [SUPPORT_SITE]. <string name="not_a_mod_error"> Usted no es un moderador de la sesión. </string> + <string name="muted"> + Un moderador del grupo ha desactivado tu chat de texto. + </string> <string name="muted_error"> Un moderador del grupo le ha desactivado el chat de texto. </string> <string name="add_session_event"> No se ha podido añadir usuarios a la sesión de chat con [RECIPIENT]. </string> + <string name="message"> + No se ha podido enviar tu mensaje a la sesión de chat con [RECIPIENT]. + </string> <string name="message_session_event"> No se ha podido enviar su mensaje a la sesión de chat con [RECIPIENT]. </string> + <string name="mute"> + Error moderando. + </string> + <string name="removed"> + Se te ha sacado del grupo. + </string> <string name="removed_from_group"> Ha sido eliminado del grupo. </string> <string name="close_on_no_ability"> Usted ya no tendrá más la capacidad de estar en la sesión de chat. </string> - <string name="AcctTypeResident"> - Residente - </string> - <string name="AcctTypeTrial"> - Prueba - </string> - <string name="AcctTypeCharterMember"> - Miembro fundador - </string> - <string name="AcctTypeEmployee"> - Empleado de Linden Lab - </string> - <string name="PaymentInfoUsed"> - Ha usado una forma de pago - </string> - <string name="PaymentInfoOnFile"> - Hay infor. de la forma de pago - </string> - <string name="NoPaymentInfoOnFile"> - Sin infor. de la forma de pago - </string> - <string name="AgeVerified"> - Edad verificada - </string> - <string name="NotAgeVerified"> - Edad no verificada - </string> + <string name="unread_chat_single"> + [SOURCES] ha dicho algo nuevo + </string> + <string name="unread_chat_multiple"> + [SOURCES] ha dicho algo nuevo + </string> </strings> diff --git a/indra/newview/skins/default/xui/es/teleport_strings.xml b/indra/newview/skins/default/xui/es/teleport_strings.xml index 6cf5437e3c..0a605277f2 100644 --- a/indra/newview/skins/default/xui/es/teleport_strings.xml +++ b/indra/newview/skins/default/xui/es/teleport_strings.xml @@ -2,12 +2,12 @@ <teleport_messages> <message_set name="errors"> <message name="invalid_tport"> - Ha habido un problema al procesar su petición de teleporte. Debe volver a iniciar sesión para poder teleportarse. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico: -www.secondlife.com/support + Ha habido un problema al procesar tu petición de teleporte. Debes volver a iniciar sesión antes de poder teleportarte de nuevo. +Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE]. </message> <message name="invalid_region_handoff"> - Ha habido un problema al procesar su paso a otra región. Debe volver a iniciar sesión para poder pasar de región a región. Si le sigue apareciendo este mensaje, revise, por favor, las preguntas frecuentes en el Soporte técnico: -www.secondlife.com/support + Ha habido un problema al procesar tu paso a otra región. Debes volver a iniciar sesión para poder pasar de región a región. +Si sigues recibiendo este mensaje, por favor, acude al [SUPPORT_SITE]. </message> <message name="blocked_tport"> Lo sentimos, en estos momentos los teleportes están bloqueados. Vuelva a intentarlo en un momento. Si sigue sin poder teleportarse, desconéctese y vuelva a iniciar sesión para solucionar el problema. diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml index e442d09e4d..21d0b6c10c 100644 --- a/indra/newview/skins/default/xui/fr/floater_about.xml +++ b/indra/newview/skins/default/xui/fr/floater_about.xml @@ -1,6 +1,46 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="A PROPOS DE [APP_NAME]"> +<floater name="floater_about" title="À PROPOS DE [CAPITALIZED_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"> + Compilé avec [COMPILER] version [COMPILER_VERSION] + </floater.string> + <floater.string name="AboutPosition"> + Vous êtes à [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] dans [REGION] se trouvant à <nolink>[HOSTNAME]</nolink> ([HOSTIP]) +[SERVER_VERSION] +[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]] + </floater.string> + <floater.string name="AboutSystem"> + CPU : [CPU] +Mémoire : [MEMORY_MB] Mo +Version OS : [OS_VERSION] +Distributeur de cartes graphiques : [GRAPHICS_CARD_VENDOR] +Cartes graphiques : [GRAPHICS_CARD] + </floater.string> + <floater.string name="AboutDriver"> + Version Windows Graphics Driver : [GRAPHICS_DRIVER_VERSION] + </floater.string> + <floater.string name="AboutLibs"> + Version OpenGL : [OPENGL_VERSION] + +Version libcurl : [LIBCURL_VERSION] +Version J2C Decoder : [J2C_VERSION] +Version Audio Driver : [AUDIO_DRIVER_VERSION] +Version Qt Webkit : [QT_WEBKIT_VERSION] +Version Vivox : [VIVOX_VERSION] + </floater.string> + <floater.string name="none"> + (aucun) + </floater.string> + <floater.string name="AboutTraffic"> + Paquets perdus : [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) + </floater.string> <tab_container name="about_tab"> + <panel label="Infos" name="support_panel"> + <button label="Copier dans le presse-papiers" name="copy_btn"/> + </panel> <panel label="Remerciements" name="credits_panel"> <text_editor name="credits_editor"> Second Life existe grâce aux efforts de 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 et de nombreuses autres personnes. @@ -9,7 +49,7 @@ - Pour réussir dans les affaires, soyez audacieux, créatif et différent. - Henry Marchant +Pour réussir dans les affaires, soyez audacieux, créatif et différent. - Henry Marchant </text_editor> </panel> <panel label="Licences" name="licenses_panel"> @@ -21,7 +61,8 @@ FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). GL Copyright (C) 1999-2004 Brian Paul. Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. - jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) + jpeg2000 Copyright (C) 2001, David Taubman, The University of New South + Wales (UNSW) jpeglib Copyright (C) 1991-1998, Thomas G. Lane. ogg/vorbis Copyright (C) 2001, Xiphophorus OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. @@ -33,7 +74,8 @@ Tous droits réservés. Voir licenses.txt pour plus de détails. - Codage Audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) + Codage Audio du chat vocal : Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 + Annex C) </text_editor> </panel> </tab_container> 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 e2a567ff28..e7e2d8a0ee 100644 --- a/indra/newview/skins/default/xui/fr/floater_about_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterland" title="À PROPOS DU TERRAIN"> +<floater name="floaterland" title="À PROPOS DES TERRAINS"> <floater.string name="Minutes"> [MINUTES] minutes </floater.string> @@ -9,8 +9,11 @@ <floater.string name="Seconds"> [SECONDS] secondes </floater.string> - <tab_container name="landtab"> - <panel label="Général" name="land_general_panel"> + <floater.string name="Remaining"> + restantes + </floater.string> + <tab_container name="landtab" tab_min_width="60"> + <panel label="GÉNÉRAL" name="land_general_panel"> <panel.string name="new users only"> Nouveaux utilisateurs uniquement </panel.string> @@ -33,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) @@ -49,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 : @@ -69,7 +71,7 @@ Allez dans le menu Monde > À propos du terrain ou sélectionnez une autre pa Catégorie : </text> <text name="ContentRatingText"> - Adult + Adulte </text> <text name="Owner:"> Propriétaire : @@ -77,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..."/> - <check_box label="Autoriser la cession au groupe" name="check deed" tool_tip="Un officier peut céder ce terrain au groupe. Il viendra alors s'ajouter au patrimoine 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é."/> + <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é."/> <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 : @@ -93,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="Vendre le 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:"> @@ -117,7 +120,7 @@ Allez dans le menu Monde > À propos du terrain ou sélectionnez une autre pa Superficie : </text> <text name="PriceText"> - 4048 m² + 4 048 m² </text> <text name="Traffic:"> Trafic : @@ -125,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_delta="60" name="Buy Land..." width="125"/> + <button label="Infos sur les scripts" name="Scripts..." width="110"/> + <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_delta="-127" 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> @@ -150,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> @@ -171,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 : @@ -202,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> @@ -213,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] @@ -237,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> @@ -245,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> @@ -253,49 +251,49 @@ 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"/> - <text left="14" name="Selected / sat upon:" width="193"> + <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="220"> Sélectionnées/où quelqu'un est assis : </text> - <text left="214" name="selected_objects_text" width="48"> + <text left_delta="214" name="selected_objects_text" width="48"> [COUNT] </text> - <text left="4" name="Autoreturn" width="412"> - Renvoi automatique des objets des autres résidents (min., 0 pour désactiver) : + <text left="4" name="Autoreturn" width="440"> + 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"/> - <name_list.columns label="Nom" name="name"/> - <name_list.columns label="Nombre" name="count"/> - <name_list.columns label="Plus récents" name="mostrecent"/> + <name_list.columns label="Nom" name="name" width="100"/> + <name_list.columns label="Nombre" name="count" width="100"/> + <name_list.columns label="Plus récents" name="mostrecent" width="120"/> </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> <panel.string name="search_disabled_small_tooltip"> - Cette option est désactivée car la superficie de cette parcelle est inférieure ou égale à 128 m². + Cette option est désactivée car la superficie de cette parcelle est inférieure ou égale à 128 m². Seules les parcelles de grande taille peuvent apparaître dans la recherche. </panel.string> <panel.string name="search_disabled_permissions_tooltip"> 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. @@ -310,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"> + <text left="152" name="allow_label3" width="150"> 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"/> @@ -364,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> @@ -373,49 +371,47 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche. Lieu d'arrivée : [LANDING] </text> <button bottom="-323" label="Définir" label_selected="Définir" name="Set" tool_tip="Définit le point d'arrivée des visiteurs. Définit l'emplacement de votre avatar sur ce terrain."/> - <button bottom="-323" label="Annuler" label_selected="Annuler" name="Clear" tool_tip="Libérer le lieu d'arrivée."/> + <button bottom="-323" label="Annuler" label_selected="Annuler" name="Clear" tool_tip="Effacer le lieu d'arrivée"/> <text bottom="-343" name="Teleport Routing: "> Règles de téléportation : </text> - <combo_box bottom="-343" left="140" name="landing type" tool_tip="Vous permet de paramétrer les téléportations sur votre terrain." width="140"> + <combo_box bottom="-343" left="140" name="landing type" tool_tip="Règles de téléportation - Choisissez les règles de téléportation sur votre terrain" width="140"> <combo_box.item label="Bloqué" name="Blocked"/> <combo_box.item label="Lieu d'arrivée fixe" name="LandingPoint"/> <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 : + 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"> - Taille : + Taille : </text> <spinner left_delta="89" name="media_size_width" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut."/> <spinner name="media_size_height" tool_tip="Taille du média Web, laisser 0 pour la valeur par défaut."/> @@ -423,58 +419,67 @@ Sélectionnez l'image miniature pour choisir une texture différente. pixels </text> <text name="Options:"> - Options : + Options : </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"> - <text name="MusicURL:"> - URL de la musique : + <panel label="SON" name="land_audio_panel"> + <text bottom_delta="-28" name="MusicURL:"> + URL de la +musique : </text> + <check_box label="Masquer l'URL" name="hide_music_url" tool_tip="Si vous cochez cette option, l'URL de musique sera masquée et invisible pour tous les utilisateurs non autorisés des informations de cette parcelle."/> <text name="Sound:"> - Son : + Son : </text> <check_box label="Limiter les gestes et sons d'objet à cette parcelle" name="check sound local"/> <text name="Voice settings:"> - Voix : + Voix : </text> <check_box label="Activer le chat vocal" name="parcel_enable_voice_channel"/> <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"/> + <check_box label="Limiter le chat vocal à cette parcelle" name="parcel_enable_voice_channel_local"/> </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"> + <combo_box name="pass_combo" width="110"> <combo_box.item label="Tout le monde" name="Anyone"/> <combo_box.item label="Groupe" name="Group"/> </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_activeim.xml b/indra/newview/skins/default/xui/fr/floater_activeim.xml new file mode 100644 index 0000000000..18e3d66bb7 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_activeim.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_activeim" title="IM ACTIVE"/> 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 a4ad14294e..e0cb0ef524 100644 --- a/indra/newview/skins/default/xui/fr/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/fr/floater_animation_preview.xml @@ -38,7 +38,7 @@ La longueur maximale est de [MAX_LENGTH] secondes. Impossible de trouver OFFSET. </floater.string> <floater.string name="E_ST_NO_CHANNELS"> - Impossible se trouver les CHANNELS. + Impossible de trouver les CHANNELS. </floater.string> <floater.string name="E_ST_NO_ROTATION"> Impossible d'obtenir l'ordre de rotation. @@ -95,7 +95,7 @@ La longueur maximale est de [MAX_LENGTH] secondes. Impossible de définir la valeur de la boucle </floater.string> <floater.string name="E_ST_NO_XLT_EASEIN"> - Impossible de trouver les valeurs easeln. + Impossible de trouver les valeurs easeIn. </floater.string> <floater.string name="E_ST_NO_XLT_EASEOUT"> Impossible de trouver les valeurs easeOut. @@ -106,22 +106,25 @@ La longueur maximale est de [MAX_LENGTH] secondes. <floater.string name="E_ST_NO_XLT_EMOTE"> Impossible de lire le nom emote. </floater.string> + <floater.string name="E_ST_BAD_ROOT"> + Nom de racine incorrect. + </floater.string> <text name="name_label"> Nom : </text> <text name="description_label"> Description : </text> - <spinner label="Priorité" name="priority" tool_tip="Contrôle quelles animations peuvent êtres écrasées par cette animation."/> - <check_box label="Boucle" left="6" name="loop_check" tool_tip="Joue cette animation en boucle."/> - <spinner label="Début (%)" label_width="65" name="loop_in_point" tool_tip="Définit le moment de l'animation où la boucle repart." width="105"/> - <spinner label="Fin (%)" name="loop_out_point" tool_tip="Définit le moment de l'animation où la boucle finit."/> + <spinner label="Priorité" name="priority" tool_tip="Contrôle quelles autres animations peuvent être remplacées par cette animation"/> + <check_box label="Boucle" left="6" name="loop_check" tool_tip="Lit cette animation en boucle"/> + <spinner label="Début (%)" label_width="65" name="loop_in_point" tool_tip="Définit un point de l'animation auquel retourne la boucle" width="105"/> + <spinner label="Fin (%)" name="loop_out_point" tool_tip="Définit un point de l'animation qui met fin à la boucle"/> <text name="hand_label"> Mouvement de main </text> - <combo_box label="" name="hand_pose_combo" tool_tip="Contrôle le mouvement des mains au cours de l'animation"> - <combo_box.item label="Doigts écartés" name="Spread"/> + <combo_box label="" name="hand_pose_combo" tool_tip="Contrôle ce que font les mains pendant l'animation"> + <combo_box.item label="Espacement" name="Spread"/> <combo_box.item label="Détendues" name="Relaxed"/> <combo_box.item label="Pointer (les deux)" name="PointBoth"/> <combo_box.item label="Poing" name="Fist"/> @@ -138,8 +141,8 @@ main <text name="emote_label"> Expression </text> - <combo_box label="" name="emote_combo" tool_tip="Contrôle l'expression du visage au cours de l'animation."> - <combo_box.item label="None]" name="[None]"/> + <combo_box label="" name="emote_combo" tool_tip="Contrôle ce que fait le visage pendant l'animation"> + <combo_box.item label="(aucun)" name="[None]"/> <combo_box.item label="Aaaaah" name="Aaaaah"/> <combo_box.item label="Effrayé" name="Afraid"/> <combo_box.item label="En colère" name="Angry"/> @@ -166,13 +169,14 @@ pendant </text> <combo_box label="" name="preview_base_anim" tool_tip="Utilisez cette option pour tester votre animation pendant que votre avatar fait des choses banales."> <combo_box.item label="Debout" name="Standing"/> - <combo_box.item label="En train de marcher" name="Walking"/> + <combo_box.item label="Marche" name="Walking"/> <combo_box.item label="Assis" name="Sitting"/> - <combo_box.item label="En train de voler" name="Flying"/> + <combo_box.item label="Vol" name="Flying"/> </combo_box> - <spinner label="Transition début (s)" name="ease_in_time" tool_tip="Durée (en secondes) pendant laquelle l'animation s'intègre au mouvement."/> - <spinner label="Transition fin (s)" name="ease_out_time" tool_tip="Durée (en secondes) pendant laquelle l'animation disparaît du mouvement." /> - <button label="" name="play_btn" tool_tip="Jouer/Arrêter votre animation."/> + <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 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 +184,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_auction.xml b/indra/newview/skins/default/xui/fr/floater_auction.xml index 3ec95a60c5..6cef2a3591 100644 --- a/indra/newview/skins/default/xui/fr/floater_auction.xml +++ b/indra/newview/skins/default/xui/fr/floater_auction.xml @@ -1,14 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_auction" title="COMMENCER LA VENTE DE TERRAIN LINDEN"> - <check_box label="Inclure le marquage de sélection jaune" name="fence_check" /> - <combo_box name="saletype_combo"> - <combo_box.item name="Auction" label="Enchères" /> - <combo_box.item name="FirstLand" label="Premier terrain" /> - </combo_box> - <button label="Capture d'écran" label_selected="Capture d'écran" - name="snapshot_btn" width="110" /> - <button label="OK" label_selected="OK" name="ok_btn" left_delta="114"/> - <text name="already for sale"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_auction" title="COMMENCER LA VENTE DE TERRAINS LINDEN"> + <floater.string name="already for sale"> Vous ne pouvez pas mettre aux enchères des parcelles déjà en vente. - </text> + </floater.string> + <check_box initial_value="true" label="Inclure le marquage de sélection jaune" name="fence_check"/> + <button label="Capture d'écran" label_selected="Capture d'écran" name="snapshot_btn" width="110"/> + <button label="Vendre à n'importe qui" label_selected="Vendre à n'importe qui" name="sell_to_anyone_btn"/> + <button label="Effacer les paramètres" label_selected="Effacer les paramètres" name="reset_parcel_btn"/> + <button label="Commencer les enchères" label_selected="Commencer les enchères" name="start_auction_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml index 7ff2b6b425..65bb683e4c 100644 --- a/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml @@ -1,41 +1,47 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="avatarpicker" title="CHOISIR LE RÉSIDENT"> +<floater name="avatarpicker" title="CHOISIR UN RÉSIDENT"> + <floater.string name="not_found"> + '[TEXT]' introuvable + </floater.string> + <floater.string name="no_one_near"> + Personne près de vous + </floater.string> + <floater.string name="no_results"> + Aucun résultat + </floater.string> + <floater.string name="searching"> + Recherche... + </floater.string> + <string label="OK" label_selected="OK" name="Select"> + Sélectionner + </string> + <string name="Close"> + Fermer + </string> <tab_container name="ResidentChooserTabs"> <panel label="Rechercher" name="SearchPanel"> - <text name="InstructSearchResidentName"> + <text name="InstructSearchResidentName" width="240"> Saisissez une partie du nom du résident : </text> <button label="OK" label_selected="OK" name="Find"/> </panel> - <panel label="Cartes de visite" name="CallingCardsPanel"> - <text name="InstructSelectCallingCard"> - Sélectionnez une carte de visite : + <panel label="Amis" name="FriendsPanel"> + <text name="InstructSelectFriend"> + Sélectionner une personne : </text> </panel> <panel label="Près de moi" name="NearMePanel"> <text name="InstructSelectResident"> - Sélectionner une personne près de vous : + Sélectionner une personne près de vous : </text> - <button font="SansSerifSmall" label="Rafraîchir la liste" label_selected="Rafraîchir la liste" left_delta="10" name="Refresh" width="105"/> <slider bottom_delta="-36" label="Distance" name="near_me_range"/> <text name="meters"> mètres </text> + <button font="SansSerifSmall" label="Rafraîchir la liste" label_selected="Rafraîchir la liste" left_delta="10" name="Refresh" width="105"/> <scroll_list bottom_delta="-169" height="159" name="NearMe"/> </panel> </tab_container> - <button label="OK" label_selected="OK" name="Select"/> - <button label="Annuler" label_selected="Annuler" name="Cancel"/> - <string name="not_found"> - '[TEXT]' introuvable - </string> - <string name="no_one_near"> - Il n'y a personne près de vous - </string> - <string name="no_results"> - Aucun résultat - </string> - <string name="searching"> - Recherche... - </string> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Annuler" label_selected="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 569126f3ec..ae8f926d8f 100644 --- a/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml @@ -1,31 +1,46 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="avatar_texture_debug" title="TEXTURES DE L'AVATAR"> +<floater name="avatar_texture_debug" title="TEXTURES DES AVATARS"> + <floater.string name="InvalidAvatar"> + AVATAR NON VALIDE + </floater.string> <text name="label"> Textures fixées </text> <text name="composite_label"> Textures composées </text> - <button label="Vider ces ID dans la console" label_selected="Vider" name="Dump" left="-185" width="175"/> - <texture_picker label="Cheveux" name="hair-baked"/> - <texture_picker label="Cheveux" name="hair"/> - <texture_picker label="Tête" name="head-baked"/> - <texture_picker label="Maquillage" name="head bodypaint"/> - <texture_picker label="Yeux" name="eyes-baked"/> - <texture_picker label="Œil" name="iris"/> - <texture_picker label="Haut du corps" name="upper-baked"/> - <texture_picker label="Tatouage (haut du corps)" name="upper bodypaint"/> - <texture_picker label="Tricot" name="undershirt"/> - <texture_picker label="Gants" name="gloves"/> - <texture_picker label="Chemise" name="shirt"/> - <texture_picker label="Veste (haut)" name="upper jacket"/> - <texture_picker label="Bas du corps" name="lower-baked"/> - <texture_picker label="Tatouage (bas du corps)" name="lower bodypaint"/> - <texture_picker label="Sous-vêtements" name="underpants"/> - <texture_picker label="Chaussettes" name="socks"/> - <texture_picker label="Chaussures" name="shoes"/> - <texture_picker label="Pantalon" name="pants"/> - <texture_picker label="Veste" name="lower jacket"/> - <texture_picker label="Jupe" name="skirt-baked"/> - <texture_picker label="Jupe" name="skirt"/> + <button label="Vider ces ID dans la console" label_selected="Vider" left="-185" name="Dump" width="175"/> + <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="Débardeur" 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="Caleçon" 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_beacons.xml b/indra/newview/skins/default/xui/fr/floater_beacons.xml index fd9cd057e9..d61115a2db 100644 --- a/indra/newview/skins/default/xui/fr/floater_beacons.xml +++ b/indra/newview/skins/default/xui/fr/floater_beacons.xml @@ -7,10 +7,10 @@ <check_box label="Balises" name="beacons"/> <check_box label="Surbrillances" name="highlights"/> <text name="beacon_width_label" tool_tip="Largeur de la balise"> - Largeur : + Largeur : </text> <text name="label_objects"> - Pour ces objets : + Pour ces objets : </text> <check_box label="Physique" name="physical"/> <check_box label="Scripté" name="scripted"/> diff --git a/indra/newview/skins/default/xui/fr/floater_build_options.xml b/indra/newview/skins/default/xui/fr/floater_build_options.xml index 997ca9d27b..cad00ea866 100644 --- a/indra/newview/skins/default/xui/fr/floater_build_options.xml +++ b/indra/newview/skins/default/xui/fr/floater_build_options.xml @@ -5,7 +5,7 @@ <check_box label="Fixation des sous-unités" name="GridSubUnit"/> <check_box label="Afficher les sections transversales" name="GridCrossSection"/> <text name="grid_opacity_label" tool_tip="Opacité de la grille"> - Opacité : + Opacité : </text> <slider label="Opacité de la grille" name="GridOpacity"/> </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 b2cef62e24..241cf1af09 100644 --- a/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/fr/floater_bulk_perms.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="Modifier les droits relatifs au contenu"> +<floater name="floaterbulkperms" title="MODIFIER LES DROITS RELATIFS AU CONTENU"> <floater.string name="nothing_to_modify_text"> La sélection contient des contenus non modifiables. </floater.string> <floater.string name="status_text"> - Permissions paramétrées sur [NAME] + Droits paramétrés sur [NAME] </floater.string> <floater.string name="start_text"> Demande de changement des droits lancée... @@ -29,21 +29,22 @@ <check_box label="Sons" name="check_sound"/> <icon name="icon_sound" tool_tip="Sons"/> <check_box label="Textures" name="check_texture"/> + <icon name="icon_texture" tool_tip="Textures"/> <button label="√ Tout" label_selected="Tout" name="check_all"/> <button label="Effacer" label_selected="Aucun" name="check_none"/> <text name="newperms"> - Nouvelles permissions relatives au contenu + Nouveaux droits </text> <text name="GroupLabel"> - Groupe : + Groupe : </text> <check_box label="Partager" name="share_with_group"/> <text name="AnyoneLabel"> - N'importe qui : + N'importe qui : </text> <check_box label="Copier" name="everyone_copy"/> <text name="NextOwnerLabel"> - Le prochain propriétaire : + Le prochain propriétaire : </text> <check_box label="Modifier" name="next_owner_modify"/> <check_box label="Copier" name="next_owner_copy"/> diff --git a/indra/newview/skins/default/xui/fr/floater_bumps.xml b/indra/newview/skins/default/xui/fr/floater_bumps.xml index e439c30524..34b33bbd6b 100644 --- a/indra/newview/skins/default/xui/fr/floater_bumps.xml +++ b/indra/newview/skins/default/xui/fr/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="COLLISIONS, COUPS ET BOUSCULADES"> - <text name="none_detected"> + <floater.string name="none_detected"> Aucun détecté - </text> - <text name="bump"> + </floater.string> + <floater.string name="bump"> [TIME] [FIRST] [LAST] est entré en collision avec vous - </text> - <text name="llpushobject"> + </floater.string> + <floater.string name="llpushobject"> [TIME] [FIRST] [LAST] vous a bousculé avec un script - </text> - <text name="selected_object_collide"> + </floater.string> + <floater.string name="selected_object_collide"> [TIME] [FIRST] [LAST] vous a donné un coup avec un objet - </text> - <text name="scripted_object_collide"> + </floater.string> + <floater.string name="scripted_object_collide"> [TIME] [FIRST] [LAST] vous a donné un coup avec un objet scripté - </text> - <text name="physical_object_collide"> + </floater.string> + <floater.string name="physical_object_collide"> [TIME] [FIRST] [LAST] vous a donné un coup avec un objet physique - </text> + </floater.string> + <floater.string name="timeStr"> + [[hour,datetime,slt]:[min,datetime,slt]] + </floater.string> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_buy_contents.xml b/indra/newview/skins/default/xui/fr/floater_buy_contents.xml index e8b47f5365..7aa142b13e 100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_contents.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_buy_contents" title="ACHETER CE CONTENU"> +<floater name="floater_buy_contents" title="ACHETER DES CONTENUS"> <text name="contains_text"> [NAME] contient : </text> 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 603b7587b4..c7437c4603 100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_currency.xml @@ -1,69 +1,67 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="buy currency" title="ACHETER DES L$"> - <text left="5" name="info_buying"> - Achat de L$ : - </text> - <text left="5" name="info_cannot_buy" right="-5"> - Impossible d'acheter maintenant : - </text> + <floater.string name="buy_currency"> + Achetez [LINDENS] L$ pour environ [LOCALAMOUNT] + </floater.string> <text left="5" name="info_need_more" right="-5"> - Vous avez besoin de plus de devises: - </text> - <text name="error_message"> - Quelque chose ne va pas. + Vous avez besoin de plus de L$ </text> - <button label="Aller sur le site" name="error_web"/> <text name="contacting"> - En train de contacter le Lindex... + En train de contacter +le Lindex... </text> - <text name="buy_action_unknown" right="-5"> - Acheter des L$ sur le marché du LindeX + <text left="5" name="info_buying"> + Acheter des L$ </text> - <text name="buy_action"> - [NAME] L$ [PRICE] + <text name="balance_label"> + J'ai + </text> + <text name="balance_amount"> + [AMT] L$ </text> <text name="currency_action"> - Acheter + Je veux acheter </text> - <line_editor name="currency_amt" width="65"> + <text name="currency_label"> + L$ + </text> + <line_editor label="L$" name="currency_amt" width="65"> 1234 </line_editor> - <text name="currency_est" width="138" left_delta="68"> - pour environ [LOCALAMOUNT] - </text> - <text name="getting_data" width="138"> - Obtention des données... + <text name="buying_label"> + Pour </text> - <text name="balance_label"> - Actuellement, vous avez + <text left_delta="68" name="currency_est" width="138"> + environ [LOCALAMOUNT] </text> - <text name="balance_amount"> - [AMT] L$ - </text> - <text name="buying_label"> - Vous achetez + <text name="getting_data" width="138"> + Estimation en cours... </text> - <text name="buying_amount"> - [AMT] L$ + <text name="buy_action"> + [NAME] L$ [PRICE] </text> <text name="total_label"> - Votre solde sera de + Mon nouveau solde sera de </text> <text name="total_amount"> [AMT] L$ </text> - <text name="purchase_warning_repurchase" height="48" bottom_delta="-64" right="-10"> - En confirmant cette transaction, vous achetez -uniquement les devises. Vous devrez recommencer -cette opération. + <text name="currency_links"> + [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="purchase_warning_notenough" bottom_delta="16"> - Vous n'achetez pas assez de devises. -Veuillez saisir un montant plus élevé. + <text name="exchange_rate_note"> + Saisissez à nouveau le montant pour voir le taux de change actuel. + </text> + <text name="purchase_warning_repurchase"> + La confirmation de cet achat n'achète que des L$, pas l'objet. + </text> + <text bottom_delta="16" name="purchase_warning_notenough"> + Vous n'achetez pas assez de L$. Veuillez augmenter le montant. </text> <button label="Acheter" name="buy_btn"/> <button label="Annuler" name="cancel_btn"/> - <string name="buy_currency"> - Acheter [LINDENS] L$ pour environ [LOCALAMOUNT] - </string> + <text left="5" name="info_cannot_buy" width="200" right="-5"> + Achat impossible + </text> + <button label="Accéder au Web" name="error_web"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_buy_land.xml b/indra/newview/skins/default/xui/fr/floater_buy_land.xml index 2b93098847..7c9a31a4c3 100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_land.xml @@ -1,5 +1,132 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="buy land" title="ACHETER LE TERRAIN"> +<floater name="buy land" title="ACHETER DU TERRAIN"> + <floater.string name="can_resell"> + Peut être revendu. + </floater.string> + <floater.string name="can_not_resell"> + Ne peut pas être revendu. + </floater.string> + <floater.string name="can_change"> + Peut être fusionné ou divisé. + </floater.string> + <floater.string name="can_not_change"> + Ne peut pas être fusionné ou divisé. + </floater.string> + <floater.string name="cant_buy_for_group"> + Vous n'avez pas la permission d'acheter de terrain pour votre groupe. + </floater.string> + <floater.string name="no_land_selected"> + Aucun terrain sélectionné. + </floater.string> + <floater.string name="multiple_parcels_selected"> + Vous avez sélectionné plusieurs parcelles. +Sélectionnez une zone plus petite. + </floater.string> + <floater.string name="no_permission"> + Vous n'avez pas la permission d'acheter de terrain pour votre groupe. + </floater.string> + <floater.string name="parcel_not_for_sale"> + La parcelle sélectionnée n'est pas à vendre. + </floater.string> + <floater.string name="group_already_owns"> + La parcelle appartient déjà au groupe. + </floater.string> + <floater.string name="you_already_own"> + La parcelle vous appartient déjà. + </floater.string> + <floater.string name="set_to_sell_to_other"> + La parcelle sélectionnée doit déjà être vendue à quelqu'un d'autre. + </floater.string> + <floater.string name="no_public_land"> + Il n'y a pas de terrain public dans cette zone. + </floater.string> + <floater.string name="not_owned_by_you"> + Le terrain sélectionné appartient à quelqu'un d'autre. +Sélectionnez une zone plus petite. + </floater.string> + <floater.string name="processing"> + Achat en cours de traitement... + +(Veuillez patienter quelques instants.) + </floater.string> + <floater.string name="fetching_error"> + Une erreur s'est produite pendant le traitement de l'achat du terrain. + </floater.string> + <floater.string name="buying_will"> + Si vous achetez ce terrain : + </floater.string> + <floater.string name="buying_for_group"> + Si vous achetez le terrain pour le groupe : + </floater.string> + <floater.string name="cannot_buy_now"> + Impossible d'acheter maintenant : + </floater.string> + <floater.string name="not_for_sale"> + Pas à vendre : + </floater.string> + <floater.string name="none_needed"> + aucun besoin + </floater.string> + <floater.string name="must_upgrade"> + Pour posséder du terrain, vous devez avoir un niveau de compte supérieur. + </floater.string> + <floater.string name="cant_own_land"> + Avec votre compte, vous pouvez posséder du terrain. + </floater.string> + <floater.string name="land_holdings"> + Vous détenez [BUYER] m² de terrain. + </floater.string> + <floater.string name="pay_to_for_land"> + Payez [AMOUNT] L$ à [SELLER] pour ce terrain + </floater.string> + <floater.string name="buy_for_US"> + Achetez [AMOUNT] L$ pour environ [LOCAL_AMOUNT], + </floater.string> + <floater.string name="parcel_meters"> + Cette parcelle fait [AMOUNT] m² + </floater.string> + <floater.string name="premium_land"> + C'est un terrain premium, [AMOUNT] m². + </floater.string> + <floater.string name="discounted_land"> + Ce terrain est en solde, [AMOUNT] m². + </floater.string> + <floater.string name="meters_supports_object"> + [AMOUNT] m² +prend en charge [AMOUNT2] objets + </floater.string> + <floater.string name="sold_with_objects"> + vendu avec objets + </floater.string> + <floater.string name="sold_without_objects"> + objets non inclus + </floater.string> + <floater.string name="info_price_string"> + [PRICE] L$ +([PRICE_PER_SQM] L$/m²) +[SOLD_WITH_OBJECTS] + </floater.string> + <floater.string name="insufficient_land_credits"> + Ce groupe, [GROUP], aura besoin de suffisamment de crédit pour payer les frais d'occupation de terrain avant que l'achat de cette parcelle ne soit finalisé. + </floater.string> + <floater.string name="have_enough_lindens"> + Vous avez [AMOUNT] L$, ce qui est suffisant pour acheter ce terrain. + </floater.string> + <floater.string name="not_enough_lindens"> + Vous n'avez que [AMOUNT] L$ et vous avez besoin de [AMOUNT2] L$ de plus. + </floater.string> + <floater.string name="balance_left"> + Après cet achat, il vous restera [AMOUNT] L$. + </floater.string> + <floater.string name="balance_needed"> + Pour avoir les moyens d'acquérir ce terrain, vous devez acheter au moins [AMOUNT] L$. + </floater.string> + <floater.string name="no_parcel_selected"> + (aucune parcelle sélectionnée) + </floater.string> + <floater.string name="icon_PG" value="Parcel_PG_Dark"/> + <floater.string name="icon_M" value="Parcel_M_Dark"/> + <floater.string name="icon_R" value="Parcel_R_Dark"/> <text name="region_name_label"> Région : </text> @@ -37,10 +164,10 @@ Vous devez accepter le règlement du domaine : </text> <text left="470" name="covenant_timestamp_text"/> - <text_editor name="covenant_editor"> + <text_editor left="510" name="covenant_editor"> Chargement... </text_editor> - <check_box label="J'accepte le règlement ci-dessus." name="agree_covenant"/> + <check_box label="J'accepte le règlement ci-dessus." left="510" name="agree_covenant"/> <text name="info_parcel_label"> Parcelle : </text> @@ -51,15 +178,15 @@ Taille : </text> <text name="info_size"> - 1024 m² + 1 024 m² </text> <text name="info_price_label"> Prix : </text> <text name="info_price"> 1500 L$ - (1,1 L$/m²) - vendu avec objets +(1,1 L$/m²) +vendu avec objets </text> <text name="info_action" width="380"> Si vous achetez ce terrain : @@ -75,15 +202,15 @@ Seuls les membres Premium peuvent posséder du terrain. </text> <combo_box name="account_level"> - <combo_box.item name="US$9.95/month,billedmonthly" label="9,95 US$/mois, facturation mensuelle"/> - <combo_box.item name="US$7.50/month,billedquarterly" label="7,50 US$/mois, facturation trimestrielle"/> - <combo_box.item name="US$6.00/month,billedannually" label="6,00 US$/mois, facturation annuelle"/> + <combo_box.item label="9,95 US$/mois, facturation mensuelle" name="US$9.95/month,billedmonthly"/> + <combo_box.item label="7,50 US$/mois, facturation trimestrielle" name="US$7.50/month,billedquarterly"/> + <combo_box.item label="6,00 US$/mois, facturation annuelle" name="US$6.00/month,billedannually"/> </combo_box> - <text name="land_use_action"> + <text follows="top|left" font="SansSerifBig" height="16" layout="topleft" left="72" length="1" name="land_use_action" right="500" top="284" type="string" width="400"> Augmentez vos frais d'occupation de terrain à 40 US$/mois. </text> <text name="land_use_reason"> - Vous êtes propriétaire de 1 309 m² de terrain. + Vous détenez 1 309 m² de terrain. Cette parcelle fait 512 m². </text> <text name="purchase_action"> @@ -99,139 +226,12 @@ Cette parcelle fait 512 m². 1000 </line_editor> <text name="currency_est"> - pour environ [AMOUNT2] US$ + pour environ [LOCAL_AMOUNT] </text> <text name="currency_balance"> Vous avez 2 100 L$. </text> - <check_box label="Supprimer [AMOUNT] mètres carrés de votre contribution au groupe." name="remove_contribution"/> + <check_box label="Enlever [AMOUNT] m² de contribution du groupe." name="remove_contribution"/> <button label="Acheter" name="buy_btn"/> <button label="Annuler" name="cancel_btn"/> - <string name="can_resell"> - Peut être revendu. - </string> - <string name="can_not_resell"> - Ne peut pas être revendu. - </string> - <string name="can_change"> - Peut être fusionné ou divisé. - </string> - <string name="can_not_change"> - Ne peut pas être fusionné ou divisé. - </string> - <string name="cant_buy_for_group"> - Vous n'avez pas la permission d'acheter de terrain pour votre groupe. - </string> - <string name="no_land_selected"> - Aucun terrain sélectionné. - </string> - <string name="multiple_parcels_selected"> - Vous avez sélectionné plusieurs parcelles. -Sélectionnez une zone plus petite. - </string> - <string name="no_permission"> - Vous n'avez pas la permission d'acheter de terrain pour votre groupe. - </string> - <string name="parcel_not_for_sale"> - La parcelle sélectionnée n'est pas à vendre. - </string> - <string name="group_already_owns"> - La parcelle appartient déjà au groupe. - </string> - <string name="you_already_own"> - La parcelle vous appartient déjà. - </string> - <string name="set_to_sell_to_other"> - La parcelle sélectionnée doit déjà être vendue à quelqu'un d'autre. - </string> - <string name="no_public_land"> - Il n'y a pas de terrain public dans cette zone. - </string> - <string name="not_owned_by_you"> - Le terrain sélectionné appartient à quelqu'un d'autre. -Sélectionnez une zone plus petite. - </string> - <string name="processing"> - Achat en cours de traitement... - -(Veuillez patienter quelques instants.) - </string> - <string name="fetching_error"> - Une erreur s'est produite pendant le traitement de l'achat du terrain. - </string> - <string name="buying_will"> - Si vous achetez ce terrain : - </string> - <string name="buying_for_group"> - Si vous achetez le terrain pour le groupe : - </string> - <string name="cannot_buy_now"> - Impossible d'acheter maintenant : - </string> - <string name="not_for_sale"> - Pas à vendre : - </string> - <string name="none_needed"> - aucun besoin - </string> - <string name="must_upgrade"> - Pour posséder du terrain, vous devez avoir un niveau de compte supérieur. - </string> - <string name="cant_own_land"> - Avec votre compte, vous pouvez posséder du terrain. - </string> - <string name="land_holdings"> - Vous possédez un terrain de [BUYER] m². - </string> - <string name="pay_to_for_land"> - Payez [AMOUNT] L$ à [SELLER] pour ce terrain - </string> - <string name="buy_for_US"> - Acheter [AMOUNT] L$ pour environ [AMOUNT2] US$, - </string> - <string name="parcel_meters"> - Cette parcelle fait [AMOUNT] m². - </string> - <string name="premium_land"> - Ce terrain est premium et les frais associés sont ceux d'un terrain de [AMOUNT] m². - </string> - <string name="discounted_land"> - Ce terrain est en solde et les frais associés sont ceux d'un terrain de [AMOUNT] m². - </string> - <string name="meters_supports_object"> - [AMOUNT] m² -peuvent contenir [AMOUNT2] prims - </string> - <string name="sold_with_objects"> - vendu avec objets - </string> - <string name="sold_without_objects"> - objets non inclus - </string> - <string name="info_price_string"> - [PRICE] L$ -([PRICE_PER_SQM] L$/m²) -[SOLD_WITH_OBJECTS] - </string> - <string name="insufficient_land_credits"> - Ce groupe, [GROUP], aura besoin de suffisamment de crédit pour payer les frais d'occupation de terrain avant que l'achat de cette parcelle ne soit finalisé. - </string> - <string name="have_enough_lindens"> - Vous avez [AMOUNT] L$, ce qui est suffisant pour acheter ce terrain. - </string> - <string name="not_enough_lindens"> - Vous n'avez que [AMOUNT] L$ et vous avez besoin de [AMOUNT2] L$ de plus. - </string> - <string name="balance_left"> - Après cet achat, il vous restera [AMOUNT] L$. - </string> - <string name="balance_needed"> - Pour avoir les moyens d'acquérir ce terrain, vous devez acheter au moins [AMOUNT] L$. - </string> - <string name="no_parcel_selected"> - (aucune parcelle sélectionnée) - </string> - <string name="buy_currency"> - Acheter [LINDENS] L$ pour environ [USD] US$ - </string> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_buy_object.xml b/indra/newview/skins/default/xui/fr/floater_buy_object.xml index 0bfc4e90e5..bd29f27cbc 100644 --- a/indra/newview/skins/default/xui/fr/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/fr/floater_buy_object.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="contents" title="ACHETER UNE COPIE DE L'OBJET"> <text name="contents_text"> - Contient : + Contient : </text> <text name="buy_text"> Acheter pour [AMOUNT] L$ à [NAME] ? diff --git a/indra/newview/skins/default/xui/fr/floater_camera.xml b/indra/newview/skins/default/xui/fr/floater_camera.xml index b2a280d854..309c93cf3b 100644 --- a/indra/newview/skins/default/xui/fr/floater_camera.xml +++ b/indra/newview/skins/default/xui/fr/floater_camera.xml @@ -11,12 +11,20 @@ </floater.string> <panel name="controls"> <joystick_track name="cam_track_stick" tool_tip="Déplacer la caméra vers le haut et le bas, la gauche et la droite"/> - <joystick_zoom name="zoom" tool_tip="Zoomer en direction du point central"/> + <panel name="zoom" tool_tip="Zoomer en direction du point central"> + <slider_bar name="zoom_slider" tool_tip="Zoomer en direction du point central"/> + </panel> <joystick_rotate name="cam_rotate_stick" tool_tip="Faire tourner la caméra autour du point central"/> + <panel name="camera_presets"> + <button name="rear_view" tool_tip="Vue arrière"/> + <button name="group_view" tool_tip="Vue Groupe"/> + <button name="front_view" tool_tip="Vue frontale"/> + <button name="mouselook_view" tool_tip="Vue subjective"/> + </panel> </panel> <panel name="buttons"> <button label="" name="orbit_btn" tool_tip="Faire tourner la caméra"/> - <button label="" name="pan_btn" tool_tip="Vue panoramique"/> + <button label="" name="pan_btn" tool_tip="Faire un panoramique"/> <button label="" name="avatarview_btn" tool_tip="Vue subjective"/> <button label="" name="freecamera_btn" tool_tip="Voir l'objet"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/floater_choose_group.xml b/indra/newview/skins/default/xui/fr/floater_choose_group.xml index 15cdd4d332..b73bedd7b5 100644 --- a/indra/newview/skins/default/xui/fr/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/fr/floater_choose_group.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="groups" title="GROUPES"> <text name="groupdesc"> Choisissez un groupe : </text> - <button label="OK" label_selected="OK" name="OK" /> - <button label="Annuler" label_selected="Annuler" name="Cancel" /> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Annuler" label_selected="Annuler" name="Cancel"/> </floater> 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 8ce6574421..8d7fe76b35 100644 --- a/indra/newview/skins/default/xui/fr/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/fr/floater_color_picker.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="ColorPicker" title="CHOIX DE TEXTURE ET DE COULEUR"> +<floater name="ColorPicker" title="SÉLECTEUR DE COULEURS"> <text name="r_val_text"> Rouge : </text> @@ -21,12 +21,11 @@ <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="Sélectionner" name="select_btn"/> + <button label="OK" label_selected="OK" name="select_btn"/> <text left="8" name="Current color:"> Couleur actuelle : </text> - <text left="8" name="(Drag below to save.)" width="114"> - (Faire glisser dessous -pour enregistrer) + <text left="8" name="(Drag below to save.)" width="220"> + (Faire glisser dessous pour enregistrer.) </text> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_customize.xml b/indra/newview/skins/default/xui/fr/floater_customize.xml index bf70c5415e..0343ff0014 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 name="radio" label="Femme"/> - <radio_item name="radio2" label="Homme"/> + <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,12 +150,14 @@ 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> - <panel 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="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Créer une chemise" label_selected="Créer une chemise" name="Create New"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> + <button label="Créer une chemise" label_selected="Créer une chemise" name="Create New"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> <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"/> @@ -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. @@ -191,9 +188,9 @@ jusqu'à votre avatar. Vous pouvez aussi en créer une nouvelle et la porte </panel> <panel label="Pantalon" name="Pants"> <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="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Créer un pantalon" label_selected="Créer un pantalon" name="Create New"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> + <button label="Créer un pantalon" label_selected="Créer un pantalon" name="Create New"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> <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"/> @@ -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,10 +236,9 @@ 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> + <button label="Créer des chaussures" label_selected="Créer des chaussures" name="Create New"/> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. </text> @@ -251,8 +246,7 @@ nouvelle paire et la porter. Chaussures : </text> <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="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Créer des chaussures" label_selected="Créer des chaussures" name="Create New" /> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> @@ -275,10 +269,9 @@ 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> + <button label="Créer des chaussettes" label_selected="Créer des chaussettes" name="Create New"/> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. </text> @@ -286,8 +279,7 @@ nouvelle paire et la porter. Chaussettes : </text> <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="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Créer des chaussettes" label_selected="Créer des chaussettes" name="Create New"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> @@ -310,9 +302,9 @@ 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> + <button label="Créer une veste" label_selected="Créer une veste" name="Create New"/> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. </text> @@ -321,8 +313,7 @@ jusqu'à votre avatar. Vous pouvez aussi en créer une nouvelle et la porte </text> <texture_picker label="Tissu (dessus)" name="Upper Fabric" tool_tip="Cliquez pour sélectionner une image" width="81"/> <texture_picker label="Tissu (dessous)" name="Lower Fabric" tool_tip="Cliquez pour sélectionner une image" width="81"/> - <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" width="81"/> - <button label="Créer une veste" label_selected="Créer une veste" name="Create New"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="81"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> @@ -345,9 +336,9 @@ 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> + <button label="Créer des gants" label_selected="Créer des gants" name="Create New"/> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. </text> @@ -355,14 +346,13 @@ inventaire. Vous pouvez aussi en créer une nouvelle paire et la porter. Gants : </text> <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="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Créer des gants" label_selected="Créer des gants" name="Create New"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> <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> - <panel label="Sous-vêtements (haut)" name="Undershirt"> + <panel label="Débardeur" name="Undershirt"> <text name="title"> [DESC] </text> @@ -373,31 +363,29 @@ inventaire. Vous pouvez aussi en créer une nouvelle paire et la porter. [DESC]: en cours de chargement... </text> <text name="title_not_worn"> - [DESC]: non portés + [DESC]: non porté </text> <text name="path"> 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 débardeur, faites-en glisser un à partir de votre inventaire. Vous pouvez aussi en créer un nouveau et le porter. </text> + <button label="Créer un débardeur" label_selected="Créer un débardeur" name="Create New"/> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. </text> - <text name="Item Action Label" right="92" bottom="-470"> - Sous-vêtements -(haut) : + <text bottom="-470" name="Item Action Label" right="92"> + Débardeur : </text> <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="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Créer des sous-vêtements" label_selected="Créer des sous-vêtements" name="Create New"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> <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> - <panel label="Sous-vêtements (bas)" name="Underpants"> + <panel label="Caleçon" name="Underpants"> <text name="title"> [DESC] </text> @@ -408,25 +396,23 @@ votre inventaire. Vous pouvez aussi en créer des nouveaux et les porter. [DESC]: en cours de chargement... </text> <text name="title_not_worn"> - [DESC]: non portés + [DESC]: non porté </text> <text name="path"> 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 caleçon, faites-en glisser un à partir de votre inventaire. Vous pouvez aussi en créer un nouveau et le porter. </text> + <button label="Créer un caleçon" label_selected="Créer un caleçon" name="Create New"/> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. </text> - <text name="Item Action Label" right="92" bottom="-470"> - Sous-vêtements -(bas) : + <text bottom="-470" name="Item Action Label" right="92"> + Caleçon : </text> <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="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Créer des sous-vêtements" label_selected="Créer des sous-vêtements" name="Create New"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> <button label="Enregistrer sous..." label_selected="Enregistrer sous..." left="188" name="Save As" width="111"/> @@ -449,9 +435,9 @@ 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> + <button label="Créer une jupe" label_selected="Créer une jupe" name="Create New"/> <text name="no modify instructions"> Vous n'avez pas la permission de modifier cet objet. </text> @@ -459,16 +445,86 @@ inventaire. Vous pouvez aussi en créer une nouvelle et la porter. Jupe : </text> <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="Cliquer pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Créer une jupe" label_selected="Créer une jupe" name="Create New"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> <button label="Enregistrer" label_selected="Enregistrer" left="100" name="Save" width="82"/> <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> + <panel label="Tatouage" name="Tattoo"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: impossible de modifier + </text> + <text name="title_loading"> + [DESC]: en cours de chargement... + </text> + <text name="title_not_worn"> + [DESC]: non porté + </text> + <text name="path"> + 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. + </text> + <button label="Créer un nouveau tatouage" label_selected="Créer un nouveau tatouage" name="Create New"/> + <text name="no modify instructions"> + Vous n'avez pas le droit de modifier cet objet. + </text> + <text name="Item Action Label"> + Tatouage : + </text> + <texture_picker label="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image"/> + <button label="Enlever" label_selected="Enlever" name="Take Off"/> + <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> + <button label="Rétablir" label_selected="Rétablir" name="Revert"/> + </panel> + <panel label="Alpha" name="Alpha"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: impossible de modifier + </text> + <text name="title_loading"> + [DESC]: en cours de chargement... + </text> + <text name="title_not_worn"> + [DESC]: non porté + </text> + <text name="path"> + 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. + </text> + <button label="Créer un nouvel alpha" label_selected="Créer un nouvel alpha" name="Create New"/> + <text name="no modify instructions"> + Vous n'avez pas le droit de modifier cet objet. + </text> + <text name="Item Action Label"> + Alpha : + </text> + <texture_picker label="Alpha bas" name="Lower Alpha" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Alpha haut" name="Upper Alpha" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Alpha tête" name="Head Alpha" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Alpha yeux" name="Eye Alpha" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Alpha cheveux" name="Hair Alpha" tool_tip="Cliquez pour sélectionner une image"/> + <button label="Enlever" label_selected="Enlever" name="Take Off"/> + <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> + <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> + <button label="Rétablir" label_selected="Rétablir" name="Revert"/> + </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" tool_tip="Afficher les scripts attachés à votre avatar"/> + <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"/> - <button label="Créer un ensemble..." label_selected="Créer un ensemble..." name="Make Outfit" left="152" width="125"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml index 0b36b7b8ca..15cc6cd1ba 100644 --- a/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml @@ -59,14 +59,14 @@ </text> <button label="Ajouter clé" label_selected="Ajouter clé" name="WLAddKey" width="89" bottom="-45" /> <button label="Supprimer clé" label_selected="Supprimer clé" name="WLDeleteKey" width="89" bottom="-70" /> - <text name="WLCurKeyFrameText"> + <text name="WLCurKeyFrameText" width="170"> Réglages des images-clés : </text> - <text name="WLCurKeyTimeText"> + <text name="WLCurKeyTimeText" width="170"> Heure de la clé : </text> - <spinner label="Heure" name="WLCurKeyHour" /> - <spinner label="Min" name="WLCurKeyMin" /> + <spinner label="Heure" name="WLCurKeyHour" label_width="80" width="74"/> + <spinner label="Min" name="WLCurKeyMin" label_width="80"/> <text name="WLCurKeyTimeText2"> Préréglages clés : </text> @@ -78,13 +78,13 @@ <text name="DayCycleText2"> Durée du cycle : </text> - <spinner label="Heure" name="WLLengthOfDayHour" /> + <spinner label="Heure" name="WLLengthOfDayHour" label_width="80" width="74" /> <spinner label="Min" name="WLLengthOfDayMin" /> - <spinner label="S" name="WLLengthOfDaySec" label_width="10" width="50" left_delta="75"/> - <text name="DayCycleText3"> + <spinner label="S" name="WLLengthOfDaySec" label_width="10" width="50" left_delta="95"/> + <text name="DayCycleText3" left="280" width="200"> Prévisualiser : </text> - <button label="Jouer" label_selected="Jouer" name="WLAnimSky" /> + <button label="Jouer" label_selected="Jouer" name="WLAnimSky" left_delta="90"/> <button label="Stop !" label_selected="Stop" name="WLStopAnimSky" /> <button label="Utiliser heure domaine" label_selected="Aller heure domaine" name="WLUseLindenTime" /> diff --git a/indra/newview/skins/default/xui/fr/floater_device_settings.xml b/indra/newview/skins/default/xui/fr/floater_device_settings.xml index 5374b4e593..f5994cb604 100644 --- a/indra/newview/skins/default/xui/fr/floater_device_settings.xml +++ b/indra/newview/skins/default/xui/fr/floater_device_settings.xml @@ -1,3 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_device_settings" - title="PARAMÈTRES DU MATÉRIEL UTILISÉ POUR LE CHAT VOCAL" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_device_settings" title="PARAMÈTRES DU MATÉRIEL UTILISÉ POUR LE CHAT VOCAL"/> diff --git a/indra/newview/skins/default/xui/fr/floater_env_settings.xml b/indra/newview/skins/default/xui/fr/floater_env_settings.xml index 7d6de114be..dd714e85b6 100644 --- a/indra/newview/skins/default/xui/fr/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/fr/floater_env_settings.xml @@ -1,6 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Environment Editor Floater" title="ÉDITEUR D'ENVIRONNEMENT"> - <text bottom="-45" name="EnvTimeText"> + <floater.string name="timeStr"> + [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc] + </floater.string> + <text bottom="-45" name="EnvTimeText" top="29"> Heure de la journée </text> @@ -11,17 +14,16 @@ journée Couverture nuageuse </text> - <text bottom="-45" name="EnvWaterColorText"> + <text bottom="-45" name="EnvWaterColorText" top="29"> Couleur de l'eau </text> - <color_swatch name="EnvWaterColor" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs"/> + <color_swatch name="EnvWaterColor" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> <text name="EnvWaterFogText"> Brouillard dans l'eau </text> - <button bottom="-144" label="Utiliser heure du domaine" name="EnvUseEstateTimeButton" width="145"/> - <button label="Ciel avancé" name="EnvAdvancedSkyButton" width="145" left="162" /> - <button label="Eau avancée" name="EnvAdvancedWaterButton" width="145" left="316"/> - <button label="?" name="EnvSettingsHelpButton"/> + <button bottom="-144" label="Utiliser heure du domaine" name="EnvUseEstateTimeButton" width="152"/> + <button label="Ciel avancé" left="162" name="EnvAdvancedSkyButton" width="145"/> + <button label="Eau avancée" left="316" name="EnvAdvancedWaterButton" width="145"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_event.xml b/indra/newview/skins/default/xui/fr/floater_event.xml new file mode 100644 index 0000000000..02192c65ec --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_event.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater label="Événement" name="Event" title="DÉTAILS SUR L'ÉVÉNEMENT"> + <floater.string name="none"> + aucun + </floater.string> + <floater.string name="notify"> + Prévenir + </floater.string> + <floater.string name="dont_notify"> + Ne pas prévenir + </floater.string> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <text name="event_name"> + Nameless Event...of Doom! De doom! Doom doom. + </text> + <text name="event_category"> + (pas de catégorie) + </text> + <text name="event_runby_label"> + Organisé par : + </text> + <text initial_value="(récupération en cours)" name="event_runby"/> + <text name="event_date"> + 10/10/2010 + </text> + <text name="event_duration"> + 1 heure + </text> + <text name="event_cover"> + Gratuit + </text> + <text name="event_location_label"> + Lieu : + </text> + <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/> + <text name="rating_label" value="Catégorie :"/> + <text name="rating_value" value="inconnu"/> + </layout_panel> + <layout_panel name="button_panel"> + <button name="create_event_btn" tool_tip="Créer un événement"/> + <button name="god_delete_event_btn" tool_tip="Supprimer l'événement"/> + <button label="Me prévenir" name="notify_btn"/> + <button label="Téléporter" name="teleport_btn"/> + <button label="Carte" name="map_btn"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_first_time_tip.xml b/indra/newview/skins/default/xui/fr/floater_first_time_tip.xml new file mode 100644 index 0000000000..a1c6a19e8c --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_first_time_tip.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="set_name_in_the_cladd"> + <check_box label="Désactiver les astuces" name="DontShowFirstTimeTip_checkbox"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_font_test.xml b/indra/newview/skins/default/xui/fr/floater_font_test.xml index 3a32e8adc5..974a5ca3a2 100644 --- a/indra/newview/skins/default/xui/fr/floater_font_test.xml +++ b/indra/newview/skins/default/xui/fr/floater_font_test.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="contents" title="TEST DE LA POLICE"> +<floater name="contents" title="TEST DE POLICE"> <text name="linea"> OverrideTest, Times-BOLD doit être sélectionné ici. (De default/xui/fr) </text> diff --git a/indra/newview/skins/default/xui/fr/floater_gesture.xml b/indra/newview/skins/default/xui/fr/floater_gesture.xml index b3026478ff..113df0acc4 100644 --- a/indra/newview/skins/default/xui/fr/floater_gesture.xml +++ b/indra/newview/skins/default/xui/fr/floater_gesture.xml @@ -1,18 +1,27 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="gestures" title="GESTES UTILISÉS"> - <text name="help_label"> - Double-cliquez sur un geste pour jouer les animations -et les sons. - </text> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater label="Lieux" name="gestures" title="GESTES"> + <floater.string name="loading"> + Chargement... + </floater.string> + <floater.string name="playing"> + (lecture en cours) + </floater.string> + <floater.string name="copy_name"> + Copie de [COPY_NAME] + </floater.string> <scroll_list bottom_delta="-385" height="360" name="gesture_list"> - <column label="Déclencheur" name="trigger" width="85" /> - <column label="Touche" name="shortcut" /> - <column label="" name="key" /> - <column label="Nom" name="name" width="145"/> + <scroll_list.columns label="Nom" name="name" width="145"/> + <scroll_list.columns label="Chat" name="trigger" width="85"/> + <scroll_list.columns label="" name="key"/> + <scroll_list.columns label="Touche" name="shortcut"/> </scroll_list> - <button label="Nouveau" name="new_gesture_btn" /> - <button label="Inventaire" name="inventory_btn" /> - <button label="Modifier" name="edit_btn" /> - <button label="Jouer" name="play_btn" /> - <button label="Stop" name="stop_btn" /> + <panel label="bottom_panel" name="bottom_panel"> + <menu_button name="gear_btn" tool_tip="Plus d'options"/> + <button name="new_gesture_btn" tool_tip="Faire un nouveau geste"/> + <button name="activate_btn" tool_tip="Activer/désactiver le geste sélectionné"/> + <button name="del_btn" tool_tip="Supprimer ce geste"/> + </panel> + <button label="Modifier" name="edit_btn"/> + <button label="Jouer" name="play_btn"/> + <button label="Stop" name="stop_btn"/> </floater> 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 2bf0b9e2f3..187814eba2 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."/> @@ -49,8 +48,8 @@ <spinner left="320" name="land cost" width="70"/> <button label="Rafraîchir" label_selected="Rafraîchir" name="Refresh" tool_tip="Cliquez ici pour rafraîchir les informations ci-dessus."/> <button label="Appliquer" label_selected="Appliquer" name="Apply" tool_tip="Cliquez ici pour appliquer les modifications effectuées ci-dessus."/> - <button label="Sélectionner une région" label_selected="Sélectionner une région" left="136" name="Select Region" tool_tip="Sélectionnez une région entière à l'aide de l'outil Terrain." width="140"/> - <button label="Sauvegarde automatique" label_selected="Sauvegarde automatique" left="136" name="Autosave now" tool_tip="Sauvegarde automatique au format gzip." width="140"/> + <button label="Sélectionner une région" label_selected="Sélectionner une région" left="136" name="Select Region" tool_tip="Sélectionnez une région entière à l'aide de l'outil Terrain." width="160"/> + <button label="Sauvegarde automatique" label_selected="Sauvegarde automatique" left="136" name="Autosave now" tool_tip="Sauvegarde automatique au format gzip." width="160"/> </panel> <panel label="Objets" name="objects"> <panel.string name="no_target"> @@ -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_hardware_settings.xml b/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml index e9d5ea62f2..e3d604477c 100644 --- a/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Hardware Settings Floater" title="CONFIGURATION DU MATÉRIEL"> +<floater name="Hardware Settings Floater" title="PARAMÈTRES MATÉRIELS"> <text name="Filtering:"> Filtres : </text> @@ -21,8 +21,8 @@ <text name="Enable VBO:"> Activer le VBO : </text> - <check_box label="Activer OpenGL Vertex Buffer Objects" name="vbo" tool_tip="Sur un matériel moderne, cette option permet une meilleure performance. Par contre, sur un matériel plus ancien, les VBO sont souvent mal implémentés et peuvent causer des crashs lorsqu'ils sont activés."/> - <slider label="Mémoire vidéo (Mo) :" name="GrapicsCardTextureMemory" tool_tip="Total de la mémoire alloué aux textures. Mémoire de la carte vidéo par défaut. En réduisant cette valeur, vous pouvez accroître la performance mais les textures risquent de devenir floues."/> + <check_box initial_value="true" label="Activer OpenGL Vertex Buffer Objects" name="vbo" tool_tip="Sur un matériel moderne, cette option permet une meilleure performance. Par contre, sur un matériel plus ancien, les VBO sont souvent mal implémentés et peuvent causer des crashs lorsqu'ils sont activés."/> + <slider label="Mémoire textures (Mo) :" name="GraphicsCardTextureMemory" tool_tip="Quantité de mémoire à affecter aux textures. Utilise la mémoire de la carte vidéo par défaut. Si vous réduisez ce paramètre, cela peut améliorer les performances, mais les textures risquent d'être floues."/> <spinner label="Indice du brouillard :" name="fog"/> <button label="OK" label_selected="OK" name="OK"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_help_browser.xml b/indra/newview/skins/default/xui/fr/floater_help_browser.xml new file mode 100644 index 0000000000..11caca640c --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_help_browser.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_help_browser" title="NAVIGATEUR D'AIDE"> + <floater.string name="loading_text"> + Chargement… + </floater.string> + <layout_stack name="stack1"> + <layout_panel name="external_controls"/> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_hud.xml b/indra/newview/skins/default/xui/fr/floater_hud.xml index 13ca0e8770..f212f113b3 100644 --- a/indra/newview/skins/default/xui/fr/floater_hud.xml +++ b/indra/newview/skins/default/xui/fr/floater_hud.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_hud" title="DIDACTICIEL" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_hud" title="DIDACTICIEL"/> diff --git a/indra/newview/skins/default/xui/fr/floater_im.xml b/indra/newview/skins/default/xui/fr/floater_im.xml index a116c43f3f..0e4039d3af 100644 --- a/indra/newview/skins/default/xui/fr/floater_im.xml +++ b/indra/newview/skins/default/xui/fr/floater_im.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <multi_floater name="im_floater" title="Message instantané"> <text name="only_user_message"> Vous êtes le seul participant à cette session. diff --git a/indra/newview/skins/default/xui/fr/floater_im_container.xml b/indra/newview/skins/default/xui/fr/floater_im_container.xml new file mode 100644 index 0000000000..5ea073365e --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_im_container.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<multi_floater name="floater_im_box" title="CONVERSATIONS"/> diff --git a/indra/newview/skins/default/xui/fr/floater_im_session.xml b/indra/newview/skins/default/xui/fr/floater_im_session.xml new file mode 100644 index 0000000000..c3df4a869c --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Panneau de contrôle IM" name="panel_im_control_panel"/> + <layout_panel> + <line_editor label="À" name="chat_editor"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_incoming_call.xml b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml new file mode 100644 index 0000000000..110c61aedc --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_incoming_call.xml @@ -0,0 +1,27 @@ +<?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> + <floater.string name="anonymous"> + anonyme + </floater.string> + <floater.string name="VoiceInviteP2P"> + appelle. + </floater.string> + <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> + <button label="Accepter" label_selected="Accepter" name="Accept"/> + <button label="Refuser" label_selected="Refuser" name="Reject"/> + <button label="Lancer IM" name="Start IM"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_inspect.xml b/indra/newview/skins/default/xui/fr/floater_inspect.xml index 944a157f17..9b1bdf106d 100644 --- a/indra/newview/skins/default/xui/fr/floater_inspect.xml +++ b/indra/newview/skins/default/xui/fr/floater_inspect.xml @@ -1,14 +1,14 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="inspect" title="INSPECTER LES OBJETS"> - <scroll_list name="object_list" - tool_tip="Sélectionner un objet de la liste pour le mettre en surbrillance dans le Monde."> - <column label="Nom" name="object_name" /> - <column label="Propriétaire" name="owner_name" /> - <column label="Créateur" name="creator_name" /> - <column label="Date de création" name="creation_date" /> + <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="Sélectionner un objet de la liste pour le mettre en surbrillance dans le Monde."> + <scroll_list.columns label="Nom" name="object_name"/> + <scroll_list.columns label="Propriétaire" name="owner_name"/> + <scroll_list.columns label="Créateur" name="creator_name"/> + <scroll_list.columns label="Date de création" name="creation_date" width="114"/> </scroll_list> - <button label="Voir le profil du propriétaire..." name="button owner" width="172" - tool_tip="Voir le profil du propriétaire de l'objet en surbrillance" /> - <button label="Voir le profil du créateur..." name="button creator" left="192" width="172" - tool_tip="Voir le profil du créateur de l'objet en surbrillance" /> + <button label="Voir le profil du propriétaire..." name="button owner" tool_tip="Voir le profil du propriétaire de l'objet en surbrillance" width="172"/> + <button label="Voir le profil du créateur..." left="192" name="button creator" tool_tip="Voir le profil du créateur de l'objet en surbrillance" width="172"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_inventory.xml b/indra/newview/skins/default/xui/fr/floater_inventory.xml index a83a95fa75..200c07e522 100644 --- a/indra/newview/skins/default/xui/fr/floater_inventory.xml +++ b/indra/newview/skins/default/xui/fr/floater_inventory.xml @@ -1,55 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Inventory" title="INVENTAIRE"> - <search_editor label="Saisissez votre recherche ici" 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"/> - </tab_container> - <menu_bar name="Inventory Menu"> - <menu label="Fichier" name="File"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_call label="Ouvrir" name="Open"/> - <menu_item_call label="Nouvelle fenêtre" name="New Window"/> - <menu_item_call label="Afficher les filtres" name="Show Filters"/> - <menu_item_call label="Réinitialiser les filtres" name="Reset Current"/> - <menu_item_call label="Fermer tous les dossiers" name="Close All Folders"/> - <menu_item_call label="Vider la corbeille" name="Empty Trash"/> - </menu> - <menu label="Créer" name="Create"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_call label="Nouveau dossier" name="New Folder"/> - <menu_item_call label="Nouveau script" name="New Script"/> - <menu_item_call label="Nouvelle note" name="New Note"/> - <menu_item_call label="Nouveau geste" name="New Gesture"/> - <menu name="New Clothes"> - <menu_item_call label="Nouvelle chemise" name="New Shirt"/> - <menu_item_call label="Nouveau pantalon" name="New Pants"/> - <menu_item_call label="Nouvelles chaussures" name="New Shoes"/> - <menu_item_call label="Nouvelles chaussettes" name="New Socks"/> - <menu_item_call label="Nouvelle veste" name="New Jacket"/> - <menu_item_call label="Nouvelle jupe" name="New Skirt"/> - <menu_item_call label="Nouveaux gants" name="New Gloves"/> - <menu_item_call label="Nouveaux sous-vêtements (haut)" name="New Undershirt"/> - <menu_item_call label="Nouveaux sous-vêtements (bas)" name="New Underpants"/> - </menu> - <menu name="New Body Parts"> - <menu_item_call label="Nouvelle silhouette" name="New Shape"/> - <menu_item_call label="Nouvelle peau" name="New Skin"/> - <menu_item_call label="Nouveaux cheveux" name="New Hair"/> - <menu_item_call label="Nouveaux yeux" name="New Eyes"/> - </menu> - </menu> - <menu label="Trier" name="Sort"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_check label="Par nom" name="By Name"/> - <menu_item_check label="Par date" name="By Date"/> - <menu_item_check label="Trier les dossiers par nom" name="Folders Always By Name"/> - <menu_item_check label="Dossiers système en premier" name="System Folders To Top"/> - </menu> - <menu label="Filters" name="Filters"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_check label="Modifier actuel" name="Modify Current"/> - <menu_item_call label="Réinitialiser actuel" name="Reset Current"/> - </menu> - </menu_bar> +<floater name="Inventory" title="MON INVENTAIRE"> + <floater.string name="Title"> + MON INVENTAIRE + </floater.string> + <floater.string name="TitleFetching"> + MON INVENTAIRE (récupération de [ITEM_COUNT] articles en cours) [FILTER] + </floater.string> + <floater.string name="TitleCompleted"> + MON INVENTAIRE ([ITEM_COUNT] articles) [FILTER] + </floater.string> + <floater.string name="Fetched"> + Récupéré + </floater.string> + <panel label="Panneau Inventaire" name="Inventory Panel"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml index 44d420d865..fca1a329a2 100644 --- a/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="item properties" title="PROPRIÉTÉS DE L'OBJET DE L'INVENTAIRE"> +<floater name="item properties" title="PROPRIÉTÉS DES ARTICLES DE L'INVENTAIRE"> <floater.string name="unknown"> (inconnu) </floater.string> @@ -12,6 +12,9 @@ <floater.string name="owner_can"> Le propriétaire peut : </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"> Nom : </text> @@ -39,21 +42,21 @@ Wed May 24 12:50:46 2006 </text> <text name="OwnerLabel"> - Vous : + 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 name="AnyoneLabel" width="80"> + N'importe qui : </text> <check_box label="Copier" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Groupe : + <text name="GroupLabel" width="80"> + Groupe : </text> <check_box label="Partager" name="CheckShareWithGroup"/> <text name="NextOwnerLabel" width="192"> - Le prochain propriétaire : + Le prochain propriétaire : </text> <check_box label="Éditer" name="CheckNextOwnerModify"/> <check_box label="Copier" name="CheckNextOwnerCopy"/> @@ -63,5 +66,8 @@ <combo_box.item label="Copier" name="Copy"/> <combo_box.item label="Original" name="Original"/> </combo_box> - <spinner label="Prix : L$" name="Edit Cost"/> + <spinner label="Prix :" name="Edit Cost"/> + <text name="CurrencySymbol"> + L$ + </text> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml index 8fb8d3c6f4..6cd886d4b9 100644 --- a/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml @@ -12,13 +12,13 @@ <check_box label="Textures" name="check_texture"/> <check_box label="Photos" name="check_snapshot"/> <button label="Tout" label_selected="Tout" name="All" width="70"/> - <button label="Aucun" label_selected="Aucun" name="None" width="70" bottom_delta="0" left="83"/> - <check_box label="Toujours montrer les dossiers" name="check_show_empty" bottom_delta="-20"/> - <check_box label="Depuis la déconnexion" name="check_since_logoff" bottom_delta="-36"/> + <button bottom_delta="0" label="Aucun" label_selected="Aucun" left="83" name="None" width="70"/> + <check_box bottom_delta="-20" label="Toujours montrer les dossiers" name="check_show_empty"/> + <check_box bottom_delta="-36" label="Depuis la déconnexion" name="check_since_logoff"/> <text name="- OR -"> Ou il y a... </text> <spinner label="Heures" name="spin_hours_ago"/> <spinner label="Jours" name="spin_days_ago"/> - <button label="Fermer" label_selected="Fermer" name="Close" bottom_delta="-30"/> + <button bottom_delta="-30" label="Fermer" label_selected="Fermer" name="Close"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_joystick.xml b/indra/newview/skins/default/xui/fr/floater_joystick.xml index 546c95de4c..e00f9564e8 100644 --- a/indra/newview/skins/default/xui/fr/floater_joystick.xml +++ b/indra/newview/skins/default/xui/fr/floater_joystick.xml @@ -1,22 +1,22 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Joystick" title="CONFIGURATION DU JOYSTICK"> - <check_box name="enable_joystick" label="Activer :"/> - <spinner label="Mapping axe des X " name="JoystickAxis1"/> - <spinner label="Mapping axe des Y" name="JoystickAxis2"/> - <spinner label="Mapping axe des Z" name="JoystickAxis0"/> - <spinner label="Mapping du tangage" label_width="111" left="8" name="JoystickAxis4" width="152"/> - <spinner label="Mapping du lacet" name="JoystickAxis5"/> - <spinner label="Mapping du roulis" name="JoystickAxis3"/> - <spinner label="Mapping du zoom" name="JoystickAxis6"/> + <check_box label="Activer :" name="enable_joystick"/> + <spinner label="Mapping axe des X " name="JoystickAxis1" left="20" width="154" label_width="130"/> + <spinner label="Mapping axe des Y" name="JoystickAxis2" width="154" label_width="130"/> + <spinner label="Mapping axe des Z" name="JoystickAxis0" width="154" label_width="130"/> + <spinner label="Mapping du tangage" label_width="136" left="20" name="JoystickAxis4" width="154"/> + <spinner label="Mapping du lacet" name="JoystickAxis5" width="154" label_width="130"/> + <spinner label="Mapping du roulis" name="JoystickAxis3" width="154" label_width="130"/> + <spinner label="Mapping du zoom" name="JoystickAxis6" left="20" width="154" label_width="130"/> <check_box label="Zoom direct" name="ZoomDirect"/> - <check_box label="Curseur 3D" name="Cursor3D"/> - <check_box label="Niveau automatique" name="AutoLeveling"/> + <check_box label="Curseur 3D" name="Cursor3D" left="300"/> + <check_box label="Niveau automatique" name="AutoLeveling" left="400"/> <text name="Control Modes:"> Modes de contrôle : </text> - <check_box name="JoystickAvatarEnabled" label="Avatar"/> - <check_box name="JoystickBuildEnabled" label="Build"/> - <check_box name="JoystickFlycamEnabled" label="Flycam"/> + <check_box label="Avatar" name="JoystickAvatarEnabled"/> + <check_box label="Build" name="JoystickBuildEnabled"/> + <check_box label="Flycam" name="JoystickFlycamEnabled"/> <text name="XScale"> Échelle des X </text> @@ -44,13 +44,13 @@ <text name="ZDeadZone"> Zone neutre Z </text> - <text left="4" name="PitchDeadZone" width="110"> - Zone neutre Tangage + <text left="4" name="PitchDeadZone" width="116"> + Zone neutre tangage </text> - <text name="YawDeadZone"> + <text name="YawDeadZone" left="10" width="104"> Zone neutre lacet </text> - <text name="RollDeadZone"> + <text name="RollDeadZone" left="10" width="104"> Zone neutre roulis </text> <text name="Feathering"> @@ -59,7 +59,7 @@ <text name="ZoomScale2"> Échelle du zoom </text> - <text left="6" name="ZoomDeadZone" width="110"> + <text left="6" name="ZoomDeadZone" width="120"> Zone neutre du zoom </text> <button label="Options par défaut du joystick" name="SpaceNavigatorDefaults"/> diff --git a/indra/newview/skins/default/xui/fr/floater_lagmeter.xml b/indra/newview/skins/default/xui/fr/floater_lagmeter.xml index 593ad903b9..39a861d8bd 100644 --- a/indra/newview/skins/default/xui/fr/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/fr/floater_lagmeter.xml @@ -1,152 +1,151 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_lagmeter" title="MESURE DU LAG"> - <button name="client_lagmeter" tool_tip="Statut du lag client"/> - <text name="client"> - Client : - </text> - <text name="client_text"> - Normal - </text> - <button name="network_lagmeter" tool_tip="Statut du lag réseau"/> - <text name="network"> - Réseau : - </text> - <text name="network_text"> - Normal - </text> - <button name="server_lagmeter" tool_tip="Statut du lag serveur"/> - <text name="server"> - Serveur : - </text> - <text name="server_text"> - Normal - </text> - <button label="?" name="server_help"/> - <button label=">>" name="minimize"/> - <string name="max_title_msg"> + <floater.string name="max_title_msg"> Mesure du 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"> Client - </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"> Normal, fenêtre en arrière-plan - </string> - <string name="client_frame_time_critical_msg"> - Taux de défilement client ci-dessous [CLIENT_FRAME_RATE_CRITICAL] - </string> - <string name="client_frame_time_warning_msg"> - Taux de défilement client entre [CLIENT_FRAME_RATE_CRITICAL] et [CLIENT_FRAME_RATE_WARNING] - </string> - <string name="client_frame_time_normal_msg"> + </floater.string> + <floater.string name="client_frame_time_critical_msg"> + Taux de défilement [CLIENT_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="client_frame_time_warning_msg"> + Taux de défilement entre [CLIENT_FRAME_RATE_CRITICAL] et [CLIENT_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="client_frame_time_normal_msg"> Normal - </string> - <string name="client_draw_distance_cause_msg"> - Cause possible : la limite d'affichage est trop élevée - </string> - <string name="client_texture_loading_cause_msg"> + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> + Cause possible : limite d'affichage trop élevée + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> Cause possible : images en cours de chargement - </string> - <string name="client_texture_memory_cause_msg"> + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> Cause possible : trop d'images en mémoire - </string> - <string name="client_complex_objects_cause_msg"> - Cause possible : trop d'objets complexes dans la scène - </string> - <string name="network_text_msg"> + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> + Cause possible : trop d'objets complexes + </floater.string> + <floater.string name="network_text_msg"> Réseau - </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 connexion perd plus de [NETWORK_PACKET_LOSS_CRITICAL] % de paquets - </string> - <string name="network_packet_loss_warning_msg"> + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> La connexion perd entre [NETWORK_PACKET_LOSS_WARNING] % et [NETWORK_PACKET_LOSS_CRITICAL] % de paquets - </string> - <string name="network_performance_normal_msg"> + </floater.string> + <floater.string name="network_performance_normal_msg"> Normal - </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"> - Temps de connexion ping supérieur à [NETWORK_PING_CRITICAL] ms - </string> - <string name="network_ping_warning_msg"> - Temps de connexion ping entre [NETWORK_PING_WARNING] et [NETWORK_PING_CRITICAL] ms - </string> - <string name="network_packet_loss_cause_msg"> + </floater.string> + <floater.string name="network_ping_critical_msg"> + Connexion ping > [NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_ping_warning_msg"> + Connexion ping entre [NETWORK_PING_WARNING] et [NETWORK_PING_CRITICAL] ms + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> Mauvaise connexion possible ou réglage de la bande passante trop élevé. - </string> - <string name="network_ping_cause_msg"> + </floater.string> + <floater.string name="network_ping_cause_msg"> Mauvaise connexion possible ou app. de partage des fichiers - </string> - <string name="server_text_msg"> + </floater.string> + <floater.string name="server_text_msg"> Serveur - </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"> - Taux de défilement du simulateur au dessous de [SERVER_FRAME_RATE_CRITICAL] - </string> - <string name="server_frame_time_warning_msg"> - Taux de défilement du simulateur entre [SERVER_FRAME_RATE_CRITICAL] et [SERVER_FRAME_RATE_WARNING] - </string> - <string name="server_frame_time_normal_msg"> + </floater.string> + <floater.string name="server_frame_time_critical_msg"> + Défilement du simulateur < [SERVER_FRAME_RATE_CRITICAL] + </floater.string> + <floater.string name="server_frame_time_warning_msg"> + Défilement simulateur entre [SERVER_FRAME_RATE_CRITICAL] et [SERVER_FRAME_RATE_WARNING] + </floater.string> + <floater.string name="server_frame_time_normal_msg"> Normal - </string> - <string name="server_physics_cause_msg"> + </floater.string> + <floater.string name="server_physics_cause_msg"> Cause possible : trop d'objets physiques - </string> - <string name="server_scripts_cause_msg"> + </floater.string> + <floater.string name="server_scripts_cause_msg"> Cause possible : trop d'objets scriptés - </string> - <string name="server_net_cause_msg"> + </floater.string> + <floater.string name="server_net_cause_msg"> Cause possible : trop de trafic réseau - </string> - <string name="server_agent_cause_msg"> - Cause possible : trop de personnes en mouvement dans la région - </string> - <string name="server_images_cause_msg"> + </floater.string> + <floater.string name="server_agent_cause_msg"> + Cause possible : trop de personnes en mouvement + </floater.string> + <floater.string name="server_images_cause_msg"> Cause possible : trop de calculs d'images - </string> - <string name="server_generic_cause_msg"> + </floater.string> + <floater.string name="server_generic_cause_msg"> Cause possible : charge simulateur trop lourde - </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 name="client_lagmeter" tool_tip="Statut du lag client"/> + <text name="client"> + Client + </text> + <text name="client_text"> + Normal + </text> + <button name="network_lagmeter" tool_tip="Statut du lag réseau"/> + <text name="network"> + Réseau + </text> + <text name="network_text"> + Normal + </text> + <button name="server_lagmeter" tool_tip="Statut du lag serveur"/> + <text name="server"> + Serveur + </text> + <text name="server_text"> + Normal + </text> + <button label=">>" name="minimize" tool_tip="Activer/désactiver la taille du floater"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_land_holdings.xml b/indra/newview/skins/default/xui/fr/floater_land_holdings.xml index 1b3127c35d..10fe132623 100644 --- a/indra/newview/skins/default/xui/fr/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/fr/floater_land_holdings.xml @@ -8,7 +8,7 @@ <column label="" name="hidden"/> </scroll_list> <button label="Téléporter" label_selected="Téléporter" name="Teleport" tool_tip="Téléportez-vous au milieu de ce terrain."/> - <button label="Carte" label_selected="Carte" name="Show on Map" tool_tip="Affichez ce terrain sur la carte du monde."/> + <button label="Carte" label_selected="Carte" name="Show on Map" tool_tip="Afficher ce terrain sur la carte du monde"/> <text name="contrib_label"> Vos contributions : </text> diff --git a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml index 2231d503b2..feb2fe1027 100644 --- a/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/fr/floater_live_lsleditor.xml @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script ed float" title="SCRIPT : NOUVEAU SCRIPT"> +<floater name="script ed float" title="SCRIPT : NOUVEAU SCRIPT"> <floater.string name="not_allowed"> - Ce scipt ne peut pas être copié, visualisé ou modifié. Pour visualiser ou modifier un script à l'intérieur d'un objet, vous devez avoir les permissions requises. + Ce script ne peut pas être copié, visualisé ou modifié. Pour visualiser ou modifier un script à l'intérieur d'un objet, vous devez avoir les droits requis. </floater.string> <floater.string name="script_running"> Exécution en cours </floater.string> <floater.string name="Title"> - Script : [NAME] + SCRIPT : [NAME] </floater.string> <button label="Réinitialiser" label_selected="Réinitialiser" left="390" name="Reset" width="100"/> <check_box initial_value="true" label="Exécution en cours" left="4" name="running"/> - <check_box initial_value="true" label="Mono" left="130" name="mono"/> + <check_box initial_value="true" label="Mono" left_delta="160" name="mono"/> </floater> 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 2e3d88264e..71d2c42578 100644 --- a/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml @@ -1,7 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="script ed float" title="WIKI LSL"> - <check_box label="Suivre le curseur" name="lock_check" /> - <combo_box label="Verrouiller" name="history_combo" left_delta="120" width="70"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script ed float" title="RÉFÉRENCE LSL"> + + <check_box label="Suivre le curseur" name="lock_check" width="90" /> + <combo_box label="Verrouiller" left_delta="120" name="history_combo" width="82"/> <button label="Précédente" name="back_btn" left_delta="75"/> - <button label="Suivante" name="fwd_btn" /> + <button label="Suivante" name="fwd_btn" width="60"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_map.xml b/indra/newview/skins/default/xui/fr/floater_map.xml index aeef4b0e91..e01b687fce 100644 --- a/indra/newview/skins/default/xui/fr/floater_map.xml +++ b/indra/newview/skins/default/xui/fr/floater_map.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Map"> +<floater name="Map" title="Mini-carte"> <floater.string name="mini_map_north"> N </floater.string> 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 986deaabc9..58535eddf5 100644 --- a/indra/newview/skins/default/xui/fr/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/fr/floater_media_browser.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="NAVIGATEUR"> +<floater name="floater_about" title="NAVIGATEUR DE MÉDIAS"> <floater.string name="home_page_url"> http://fr.secondlife.com </floater.string> @@ -15,12 +15,12 @@ <button label="OK" left_delta="515" name="go"/> </layout_panel> <layout_panel name="time_controls"> - <button label="en arrière" name="rewind"/> + <button label="en arrière" name="rewind" width="60"/> <button label="stop" name="stop"/> - <button label="en avant" name="seek"/> + <button label="en avant" name="seek" width="60"/> </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" width="220"/> </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_media_settings.xml b/indra/newview/skins/default/xui/fr/floater_media_settings.xml new file mode 100644 index 0000000000..27db5ea995 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_media_settings.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="media_settings" title="PARAMÈTRES DES MÉDIAS"> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Annuler" label_selected="Annuler" name="Cancel"/> + <button label="Appliquer" label_selected="Appliquer" name="Apply"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml b/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml index eb0f0e64ce..d03c4d7544 100644 --- a/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/fr/floater_mem_leaking.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="MemLeak" title="Simuler une fuite de mémoire"> +<floater name="MemLeak" title="SIMULER UNE FUITE DE MÉMOIRE"> <spinner label="Vitesse de la fuite (octets) :" name="leak_speed"/> <spinner label="Max mémoire perdue (Mo) :" name="max_leak"/> <text name="total_leaked_label"> @@ -12,7 +12,7 @@ [NOTE2] </text> <button label="Commencer" name="start_btn" width="85"/> - <button label="Stop" left="100" name="stop_btn"/> - <button label="Libérer" left="177" name="release_btn"/> - <button label="Fermer" name="close_btn"/> + <button label="Stop" name="stop_btn"/> + <button label="Libérer" name="release_btn"/> + <button label="Fermer" name="close_btn" left_pad="20"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_moveview.xml b/indra/newview/skins/default/xui/fr/floater_moveview.xml index 528fa309eb..0e8887bb96 100644 --- a/indra/newview/skins/default/xui/fr/floater_moveview.xml +++ b/indra/newview/skins/default/xui/fr/floater_moveview.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="move_floater"> <string name="walk_forward_tooltip"> - Vous déplacer vers l'avant (appuyer sur la flèche vers le haut ou W) + Marcher en avant (appuyer sur la flèche vers le haut ou W) </string> <string name="walk_back_tooltip"> Marcher en arrière (appuyer sur la flèche vers le bas ou S) @@ -21,15 +21,15 @@ <panel name="panel_actions"> <button label="" label_selected="" name="turn left btn" tool_tip="Tourner à gauche (appuyer sur la flèche de gauche ou sur A)"/> <button label="" label_selected="" name="turn right btn" tool_tip="Tourner à droite (appuyer sur la flèche de droite ou sur D)"/> - <button label="" label_selected="" name="move up btn" tool_tip="Vous envoler, appuyer sur E"/> - <button label="" label_selected="" name="move down btn" tool_tip="Atterrir, appuyer sur C"/> - <joystick_turn name="forward btn" tool_tip="Vous déplacer vers l'avant (appuyer sur la flèche vers le haut ou W)"/> + <button label="" label_selected="" name="move up btn" tool_tip="Voler vers le haut, appuyer sur E"/> + <button label="" label_selected="" name="move down btn" tool_tip="Voler vers le bas, appuyer sur C"/> + <joystick_turn name="forward btn" tool_tip="Marcher en avant (appuyer sur la flèche vers le haut ou W)"/> <joystick_turn name="backward btn" tool_tip="Marcher en arrière (appuyer sur la flèche vers le bas ou S)"/> </panel> <panel name="panel_modes"> <button label="" name="mode_walk_btn" tool_tip="Mode marche"/> - <button label="" name="mode_run_btn" tool_tip="Mode courir"/> - <button label="" name="mode_fly_btn" tool_tip="Mode voler"/> + <button label="" name="mode_run_btn" tool_tip="Mode course"/> + <button label="" name="mode_fly_btn" tool_tip="Mode vol"/> <button label="Atterrir" name="stop_fly_btn" tool_tip="Atterrir"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_mute_object.xml b/indra/newview/skins/default/xui/fr/floater_mute_object.xml index aae5770d51..f4db3201a8 100644 --- a/indra/newview/skins/default/xui/fr/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/fr/floater_mute_object.xml @@ -1,12 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="mute by name" title="IGNORER LES OBJETS PAR NOM"> +<floater name="mute by name" title="IGNORER L'OBJET PAR NOM"> <text name="message"> - Cette fonction ne marche que pour les chats et les IM, -pas les sons. Saisissez le nom exact de l'objet. + Ignorer un objet : </text> <line_editor name="object_name"> Nom de l'objet </line_editor> + <text name="note"> + * Ignore uniquement le texte de l'objet, pas les sons + </text> <button label="OK" name="OK"/> <button label="Annuler" name="Cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_my_friends.xml b/indra/newview/skins/default/xui/fr/floater_my_friends.xml index 841a42a0ea..db7c026e22 100644 --- a/indra/newview/skins/default/xui/fr/floater_my_friends.xml +++ b/indra/newview/skins/default/xui/fr/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="CONTACTS"> <tab_container name="friends_and_groups"> - <panel label="Amis" name="friends_panel" /> - <panel label="Groupes" name="groups_panel" /> + <panel label="Amis" name="friends_panel"/> + <panel label="Groupes" name="groups_panel"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml b/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml new file mode 100644 index 0000000000..a59253a746 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="nearby_chat" title="CHAT PRÈS DE MOI"/> diff --git a/indra/newview/skins/default/xui/fr/floater_notification.xml b/indra/newview/skins/default/xui/fr/floater_notification.xml index 62727da007..fe4b5f9bd6 100644 --- a/indra/newview/skins/default/xui/fr/floater_notification.xml +++ b/indra/newview/skins/default/xui/fr/floater_notification.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="notification" title="CONSOLE DE NOTIFICATIONS"> <text_editor name="payload"> - Chargement.. + Chargement... </text_editor> <combo_box label="Réponse" name="response"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_notifications_console.xml b/indra/newview/skins/default/xui/fr/floater_notifications_console.xml index fd3782bac2..e040e948f5 100644 --- a/indra/newview/skins/default/xui/fr/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/fr/floater_notifications_console.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="notifications_console" title="CONSOLE DE NOTIFICATIONS"> <combo_box label="Sélectionner le type de notification" name="notification_types" width="412"/> - <button label="Ajouter" name="add_notification" left="417" width="78"/> + <button label="Ajouter" left="417" name="add_notification" width="78"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_openobject.xml b/indra/newview/skins/default/xui/fr/floater_openobject.xml index 5ffa2f236d..4e046ff3f3 100644 --- a/indra/newview/skins/default/xui/fr/floater_openobject.xml +++ b/indra/newview/skins/default/xui/fr/floater_openobject.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="objectcontents" title="CONTENU DES OBJETS"> <text name="object_name"> [DESC]: </text> - <button label="Copier vers l'inventaire" label_selected="Copier vers l'inventaire" name="copy_to_inventory_button" width="132" /> - <button label="Copier et porter" label_selected="Copier et porter" name="copy_and_wear_button" left="152"/> + <button label="Copier vers l'inventaire" label_selected="Copier vers l'inventaire" name="copy_to_inventory_button" width="132"/> + <button label="Copier et porter" label_selected="Copier et porter" left="152" name="copy_and_wear_button"/> </floater> 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 0000000000..d77dfbdf82 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title="Enregistrer la tenue"> + <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> + <button label="Annuler" label_selected="Annuler" name="Cancel"/> + <text name="Save item as:"> + Enregistrer ce que je porte +comme une nouvelle tenue : + </text> + <line_editor name="name ed"> + [DESC] (nouv.) + </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 new file mode 100644 index 0000000000..2420c2b04b --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_outgoing_call.xml @@ -0,0 +1,40 @@ +<?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> + <floater.string name="anonymous"> + anonyme + </floater.string> + <floater.string name="VoiceInviteP2P"> + appelle. + </floater.string> + <floater.string name="VoiceInviteAdHoc"> + a rejoint un chat vocal avec conférence. + </floater.string> + <text name="connecting"> + Connexion à [CALLEE_NAME] en cours + </text> + <text name="calling"> + En train d'appeler [CALLEE_NAME] + </text> + <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]. [RECONNECT_NEARBY] + </text> + <text name="nearby_P2P_by_other"> + [VOICE_CHANNEL_NAME] a mis fin à l'appel. [RECONNECT_NEARBY] + </text> + <text name="nearby_P2P_by_agent"> + Vous avez mis fin à l'appel. [RECONNECT_NEARBY] + </text> + <text name="leaving"> + En train de quitter [CURRENT_CHAT]. + </text> + <button label="Annuler" label_selected="Annuler" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_pay.xml b/indra/newview/skins/default/xui/fr/floater_pay.xml index 50d7049bba..30e510efb5 100644 --- a/indra/newview/skins/default/xui/fr/floater_pay.xml +++ b/indra/newview/skins/default/xui/fr/floater_pay.xml @@ -1,7 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> + <string name="payee_group"> + Payer le groupe + </string> + <string name="payee_resident"> + Payer le résident + </string> <text left="5" name="payee_label"> - Payer : + Payer : </text> <icon name="icon_person" tool_tip="Résident"/> <text name="payee_name"> @@ -12,7 +18,7 @@ <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> <text left="4" name="amount text"> - Ou choisissez un montant : + Ou choisissez un montant : </text> <line_editor left="60" name="amount" width="55"/> <button label="Payer" label_selected="Payer" name="pay btn"/> diff --git a/indra/newview/skins/default/xui/fr/floater_pay_object.xml b/indra/newview/skins/default/xui/fr/floater_pay_object.xml index a8cac0b566..9cac739ab0 100644 --- a/indra/newview/skins/default/xui/fr/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/fr/floater_pay_object.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> <string name="payee_group" width="95"> - Payer le groupe : + Payer le groupe </string> <string halign="left" name="payee_resident" width="100"> - Payer le résident : + Payer le résident </string> <icon name="icon_person" tool_tip="Résident"/> <text left="105" name="payee_name"> @@ -17,12 +17,12 @@ <text left="105" name="object_name_text"> ... </text> - <button label="1 L$" label_selected="1 L$" left="105" name="fastpay 1"/> - <button label="5 L$" label_selected="5 L$" left="190" name="fastpay 5"/> - <button label="10 L$" label_selected="10 L$" left="105" name="fastpay 10"/> - <button label="20 L$" label_selected="20 L$" left="190" name="fastpay 20"/> + <button label="1 L$" label_selected="1 L$" name="fastpay 1"/> + <button label="5 L$" label_selected="5 L$" name="fastpay 5"/> + <button label="10 L$" label_selected="10 L$" name="fastpay 10"/> + <button label="20 L$" label_selected="20 L$" name="fastpay 20"/> <text halign="left" left="5" name="amount text"> - Ou choisissez un montant : + Ou choisissez un montant : </text> <line_editor left="65" name="amount" width="50"/> <button label="Payer" label_selected="Payer" name="pay btn"/> diff --git a/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml b/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml index 4b885f3afb..f83000cf87 100644 --- a/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/fr/floater_perm_prefs.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="perm prefs" title="DROITS PAR DÉFAUT"> +<floater name="perm prefs" title="PERMISSIONS DE CHARGEMENT PAR DÉFAUT"> <panel label="Droits" name="permissions"> <button label="?" label_selected="?" name="help"/> <check_box label="Partager avec le groupe" name="share_with_group"/> <check_box label="Autoriser tout le monde à copier" name="everyone_copy"/> - <text name="NextOwnerLabel"> + <text name="NextOwnerLabel" width="260"> Le prochain propriétaire pourra : </text> <check_box label="Modifier" name="next_owner_modify"/> diff --git a/indra/newview/skins/default/xui/fr/floater_postcard.xml b/indra/newview/skins/default/xui/fr/floater_postcard.xml index 9c998c1838..489b90eeba 100644 --- a/indra/newview/skins/default/xui/fr/floater_postcard.xml +++ b/indra/newview/skins/default/xui/fr/floater_postcard.xml @@ -1,40 +1,38 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Postcard" title="ENVOYER LA PHOTO PAR E-MAIL"> <text name="to_label" width="135"> E-mail du destinataire : </text> - <line_editor name="to_form" left="143" width="127" /> + <line_editor left="143" name="to_form" width="130" left_delta="146"/> <text name="from_label"> Votre e-mail : </text> - <line_editor name="from_form" left="143" width="127" /> + <line_editor left="143" name="from_form" width="130" left_delta="146"/> <text name="name_label"> Votre nom : </text> - <line_editor name="name_form" left="143" width="127" /> + <line_editor left="143" name="name_form" width="130" left_delta="146"/> <text name="subject_label"> Sujet : </text> - <line_editor name="subject_form" left="143" width="127" /> - <line_editor label="Saisissez votre sujet ici." name="subject_form" /> + <line_editor left="143" name="subject_form" width="130" left_delta="146"/> + <line_editor label="Saisissez votre sujet ici." name="subject_form"/> <text name="msg_label"> Message : </text> - <check_box label="Publier sur le web" name="allow_publish_check" - tool_tip="Publiez cette carte postale sur le web." /> - <check_box label="Contenu adulte" name="mature_check" - tool_tip="Cette carte postale est à caractère adulte." /> - <button label="?" name="publish_help_btn" /> + <check_box label="Publier sur le web" name="allow_publish_check" tool_tip="Publiez cette carte postale sur le web."/> + <check_box label="Contenu adulte" name="mature_check" tool_tip="Cette carte postale est à caractère adulte."/> + <button label="?" name="publish_help_btn"/> <text_editor name="msg_form"> Saisissez votre message ici. </text_editor> <text name="fine_print"> Si le destinataire s'inscrit sur [SECOND_LIFE], vous recevrez un bonus. </text> - <button label="Annuler" name="cancel_btn" /> - <button label="Envoyer" name="send_btn" /> + <button label="Annuler" name="cancel_btn"/> + <button label="Envoyer" name="send_btn"/> <string name="default_subject"> - Carte postale de [SECOND_LIFE] + Carte postale de [SECOND_LIFE]. </string> <string name="default_message"> Ouvrez-moi ! diff --git a/indra/newview/skins/default/xui/fr/floater_preferences.xml b/indra/newview/skins/default/xui/fr/floater_preferences.xml index ccd29a01dc..406e91a18a 100644 --- a/indra/newview/skins/default/xui/fr/floater_preferences.xml +++ b/indra/newview/skins/default/xui/fr/floater_preferences.xml @@ -1,9 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Preferences" title="PRÉFÉRENCES" min_width="330" width="626"> - <button label="À propos" label_selected="À propos" name="About..." /> - <button label="OK" label_selected="OK" name="OK" /> - <button label="Annuler" label_selected="Annuler" name="Cancel" /> - <button label="Appliquer" label_selected="Appliquer" name="Apply" /> - <button label="Aide" label_selected="Aide" name="Help" /> - <tab_container name="pref core" tab_width="126" width="626" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater min_width="330" name="Preferences" title="PRÉFÉRENCES" width="626"> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Annuler" label_selected="Annuler" name="Cancel"/> + <tab_container name="pref core" tab_width="126" width="626"> + <panel label="Général" name="general"/> + <panel label="Graphiques" name="display"/> + <panel label="Confidentialité" name="im"/> + <panel label="Son et Média" name="audio"/> + <panel label="Chat" name="chat"/> + <panel label="Notifications" name="msgs"/> + <panel label="Configuration" name="input"/> + <panel label="Avancées" name="advanced1"/> + </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml index 4811760bbf..b14aecafbb 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_animation.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview_anim"> <floater.string name="Title"> - Animation : [NAME] + Animation : [NAME] </floater.string> <text name="desc txt"> Description : </text> - <button label="Jouer dans le Monde" label_selected="Stop" left="20" name="Anim play btn" tool_tip="Jouer cette animation et partagez-la avec d'autres." width="131"/> - <button label="Jouer localement" label_selected="Stop" left="162" name="Anim audition btn" tool_tip="Jouer cette animation et soyez le seul à la voir." width="125"/> + <button label="Jouer dans Second Life" label_selected="Stop" left="20" name="Anim play btn" tool_tip="Lire cette animation de façon à ce que les autres puissent la voir" width="131"/> + <button label="Jouer localement" label_selected="Stop" left="162" name="Anim audition btn" tool_tip="Lire cette animation de façon à ce que vous soyez la seule personne à pouvoir la voir" width="125"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_classified.xml b/indra/newview/skins/default/xui/fr/floater_preview_classified.xml index f7a70db96e..23f86d88b9 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_classified.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_classified.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="INFORMATIONS SUR LA PETITE ANNONCE"> +<floater name="classified_preview" title="INFOS SUR LA PETITE ANNONCE"> <floater.string name="Title"> - Petite annonce : [NAME] + Petite annonce : [NAME] </floater.string> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_event.xml b/indra/newview/skins/default/xui/fr/floater_preview_event.xml index 30e6a218cb..7590c43af1 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_event.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_event.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="INFORMATIONS SUR L'ÉVÉNEMENT"> +<floater name="event_preview" title="INFORMATIONS SUR LES ÉVÉNEMENTS"> <floater.string name="Title"> - Événement : [NAME] + Événement : [NAME] </floater.string> </floater> 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 b2c3d18cbd..7133f8754c 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml @@ -1,62 +1,69 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="gesture_preview"> - <string name="stop_txt"> + <floater.string name="step_anim"> + Animation à jouer : + </floater.string> + <floater.string name="step_sound"> + Son à lire : + </floater.string> + <floater.string name="step_chat"> + Chatter pour dire : + </floater.string> + <floater.string name="step_wait"> + Attendre : + </floater.string> + <floater.string name="stop_txt"> Stop - </string> - <string name="preview_txt"> + </floater.string> + <floater.string name="preview_txt"> Prévisualiser - </string> - <string name="none_text"> + </floater.string> + <floater.string name="none_text"> -- Aucune -- - </string> + </floater.string> + <floater.string name="Title"> + Geste : [NAME] + </floater.string> + <text name="name_text"> + Nom : + </text> <text name="desc_label"> Description : </text> <text name="trigger_label"> Déclencheur : </text> - <text name="replace_text" - tool_tip="Remplacer les raccourcis avec ces mots. Par exemple, remplacer le mot-clé « salut » par « bonjour » fera dire « je venais dire bonjour » au lieu de « je venais dire salut » dans le chat, et déclenchera le geste."> + <text name="replace_text" tool_tip="Remplacer les raccourcis avec ces mots. Par exemple, remplacer le mot-clé « salut » par « bonjour » fera dire « je venais dire bonjour » au lieu de « je venais dire salut » dans le chat, et déclenchera le geste."> Remplacer par : </text> - <line_editor left="310" name="replace_editor" - tool_tip="Remplacer les raccourcis avec ces mots. Par exemple, remplacer le mot-clé « salut » par « bonjour » fera dire « je venais dire bonjour » au lieu de « je venais dire salut » dans le chat, et déclenchera le geste" - width="120" /> + <line_editor left="310" name="replace_editor" tool_tip="Remplacer les raccourcis avec ces mots. Par exemple, remplacer le mot-clé « salut » par « bonjour » fera dire « je venais dire bonjour » au lieu de « je venais dire salut » dans le chat, et déclenchera le geste" width="120"/> <text name="key_label"> Raccourci : </text> - <combo_box label="Aucun" name="modifier_combo" width="55" /> - <combo_box label="Aucun" name="key_combo" width="55" /> + <combo_box label="Aucun" name="modifier_combo" width="55"/> + <combo_box label="Aucun" name="key_combo" width="55"/> <text name="library_label"> Bibliothèque : </text> + <scroll_list name="library_list"/> + <button label="Ajouter >>" name="add_btn"/> <text name="steps_label"> Étapes : </text> - <scroll_list name="library_list"> - Animation -Son -Chat -Attendre - </scroll_list> - <button label="Ajouter >>" name="add_btn" /> - <button label="Monter" name="up_btn" /> - <button label="Descendre" name="down_btn" /> - <button label="Supprimer" name="delete_btn" /> - <text name="help_label"> - Toutes les étapes ont lieu -simultanément, sauf si vous -ajoutez des pauses. - </text> + <button label="Vers le haut" name="up_btn"/> + <button label="Vers le bas" name="down_btn"/> + <button label="Supprimer" name="delete_btn"/> <radio_group name="animation_trigger_type"> - <radio_item name="start" label="Commencer" /> - <radio_item name="stop" label="Stop" /> + <radio_item label="Lancer" name="start"/> + <radio_item label="Arrêter" name="stop"/> </radio_group> - <check_box label="jusqu'à la fin des animations" name="wait_anim_check" /> - <check_box label="temps en secondes" name="wait_time_check" /> - <line_editor left_delta="130" name="wait_time_editor" /> - <check_box label="Actifs" name="active_check" - tool_tip="Les gestes actifs peuvent être déclenchés en saisissant leur raccourci dans le chat ou en appuyant sur les raccourcis. Les gestes deviennent généralement inactifs lorsqu'il y a un conflit entre les raccourcis." /> - <button label="Prévisualiser" name="preview_btn" width="86" /> - <button label="Enregistrer" name="save_btn" width="86" left_delta="96"/> + <check_box label="jusqu'à la fin des animations" name="wait_anim_check"/> + <check_box label="temps en secondes" name="wait_time_check"/> + <line_editor left_delta="130" name="wait_time_editor"/> + <text name="help_label"> + Toutes les étapes ont lieu en même temps si vous n'ajoutez pas d'étapes d'attente. + </text> + <check_box label="Actifs" name="active_check" tool_tip="Les gestes actifs peuvent être déclenchés en saisissant leur raccourci dans le chat ou en appuyant sur les raccourcis. Les gestes deviennent généralement inactifs lorsqu'il y a un conflit entre les raccourcis."/> + <button label="Prévisualiser" name="preview_btn" width="86"/> + <button label="Enregistrer" left_delta="96" name="save_btn" width="86"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture_info.xml index 4bdd52f14a..4a91992f6a 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_gesture_info.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture_info.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="Raccourci du geste"/> +<floater name="Gesture" title="RACCOURCI DU GESTE"/> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml new file mode 100644 index 0000000000..d866c32882 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="RACCOURCI DU GESTE"> + <text name="trigger_label"> + Chat : + </text> + <text name="key_label"> + Clavier : + </text> + <combo_box label="Aucun" name="modifier_combo" width="62"/> + <combo_box label="Aucun" name="key_combo" width="62"/> + <text name="replace_text" tool_tip="Remplacez le ou les mots-clés par ces mots. Par exemple, si vous remplacez le mot-clé " bonjour " par " salut ", le chat " Je voulais te dire bonjour " devient " Je voulais te dire salut " et le geste correspondant s'affiche."> + Remplacer : + </text> + <line_editor name="replace_editor" tool_tip="Remplacez le ou les mots-clés par ces mots. Par exemple, si vous remplacez le mot-clé " bonjour " par " salut ", le chat " Je voulais te dire bonjour " devient " Je voulais te dire salut " et le geste correspondant s'affiche."/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture_steps.xml index 4bdd52f14a..4a91992f6a 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_gesture_steps.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_gesture_steps.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="Raccourci du geste"/> +<floater name="Gesture" title="RACCOURCI DU GESTE"/> 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 d5d984238a..d6ec915fd1 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> @@ -7,7 +7,7 @@ Vous n'avez pas le droit de voir cette note. </floater.string> <floater.string name="Title"> - Note : [NAME] + Note : [NAME] </floater.string> <floater.string label="Enregistrer" label_selected="Enregistrer" name="Save"> Enregistrer diff --git a/indra/newview/skins/default/xui/fr/floater_preview_sound.xml b/indra/newview/skins/default/xui/fr/floater_preview_sound.xml index 9d9b067a8d..a215f92df1 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_sound.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview_sound"> <floater.string name="Title"> - Son : [NAME] + Son : [NAME] </floater.string> <text name="desc txt"> Description : </text> - <button label="Jouer dans le Monde" label_selected="Jouer dans le Monde" left_delta="-142" name="Sound play btn" tool_tip="Jouer ce son et partagez-le avec d'autres." width="131"/> - <button label="Jouer localement" label_selected="Jouer localement" left="162" name="Sound audition btn" tool_tip="Jouer ce son et soyez le seul à l'entendre." width="125"/> + <button label="Jouer dans Second Life" label_selected="Jouer dans Second Life" left_delta="-142" name="Sound play btn" tool_tip="Lire ce son de façon à ce que les autres puissent l'entendre" width="131"/> + <button label="Jouer localement" label_selected="Jouer localement" left="162" name="Sound audition btn" tool_tip="Lire ce son de façon à ce que vous soyez la seule personne à pouvoir l'entendre" width="125"/> </floater> 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 a2653143a6..dc40d31a79 100644 --- a/indra/newview/skins/default/xui/fr/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/fr/floater_preview_texture.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview_texture"> <floater.string name="Title"> - Texture : [NAME] + Texture : [NAME] </floater.string> <floater.string name="Copy"> Copier dans l'inventaire @@ -9,9 +9,39 @@ <text name="desc txt"> Description : </text> - <button label="Enregistrer" name="Keep"/> - <button label="Supprimer" name="Discard"/> <text name="dimensions"> - [WIDTH]px x [HEIGHT]px + [WIDTH] px x [HEIGHT] px </text> + <text name="aspect_ratio"> + Aperçu du rapport hauteur/largeur + </text> + <combo_box name="combo_aspect_ratio" tool_tip="Aperçu avec un rapport hauteur/largeur fixe"> + <combo_item name="Unconstrained"> + Sans contraintes + </combo_item> + <combo_item name="1:1" tool_tip="Logo du groupe ou profil dans le monde physique"> + 1:1 + </combo_item> + <combo_item name="4:3" tool_tip="Profil [SECOND_LIFE]"> + 4:3 + </combo_item> + <combo_item name="10:7" tool_tip="Petites annonces, repères"> + 10:7 + </combo_item> + <combo_item name="3:2" tool_tip="À propos des terrains"> + 3:2 + </combo_item> + <combo_item name="16:10"> + 16:10 + </combo_item> + <combo_item name="16:9" tool_tip="Favoris du profil"> + 16:9 + </combo_item> + <combo_item name="2:1"> + 2:1 + </combo_item> + </combo_box> + <button label="OK" name="Keep"/> + <button label="Jeter" name="Discard"/> + <button label="Enregistrer sous" name="save_tex_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_region_info.xml b/indra/newview/skins/default/xui/fr/floater_region_info.xml index 3ec1ebf7e6..c2663174d4 100644 --- a/indra/newview/skins/default/xui/fr/floater_region_info.xml +++ b/indra/newview/skins/default/xui/fr/floater_region_info.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="regioninfo" title="RÉGION ET DOMAINE"/> +<floater name="regioninfo" title="RÉGION/DOMAINE"/> 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 77d2b37eba..78c35dc303 100644 --- a/indra/newview/skins/default/xui/fr/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/fr/floater_report_abuse.xml @@ -5,10 +5,10 @@ </floater.string> <check_box label="Utiliser cette capture d'écran" name="screen_check"/> <text name="reporter_title" width="60"> - Déposant : + Témoin : </text> <text name="reporter_field"> - Loremipsum Dolorsitamut + Loremipsum Dolorsitamut Longnamez </text> <text name="sim_title"> Région : @@ -23,26 +23,26 @@ {128.1, 128.1, 15.4} </text> <text name="select_object_label"> - Cliquez sur le bouton puis l'objet responsable : + Cliquez sur le bouton puis l'objet responsable : </text> <button label="" label_selected="" name="pick_btn" tool_tip="Le sélecteur d'objet vous permet d'identifier un objet comme sujet du rapport."/> <text name="object_name_label"> - Objet : + Objet : </text> - <text left_delta="70" name="object_name" width="105"> + <text left_pad="26" name="object_name" width="105"> Consetetur Sadipscing </text> - <text name="owner_name_label" width="66"> + <text name="owner_name_label" width="100"> Propriétaire : </text> - <text left_delta="70" name="owner_name" width="105"> - Hendrerit Vulputate + <text left_delta="120" name="owner_name" width="105"> + Hendrerit Vulputate Kamawashi Longname </text> <combo_box name="category_combo" tool_tip="Choisissez la catégorie qui décrit le mieux ce rapport"> <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"/> @@ -96,8 +96,7 @@ Soyez aussi spécifique que possible </text> <text bottom_delta="-16" name="incomplete_title"> - Remarque : les rapports incomplets ne feront pas l'objet d'une -enquête. + * Les rapports incomplets ne feront pas l'objet d'une enquête </text> <button label="Signaler une infraction" label_selected="Signaler une infraction" name="send_btn"/> <button label="Annuler" label_selected="Annuler" name="cancel_btn"/> diff --git a/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml index ef021ce713..e70a30fa24 100644 --- a/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/fr/floater_script_debug_panel.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script" short_title="[All scripts]" title="[All scripts]"/> +<floater name="script" short_title="[ALL SCRIPTS]" title="[ALL SCRIPTS]"/> 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 0000000000..cc3aaa6653 --- /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_script_preview.xml b/indra/newview/skins/default/xui/fr/floater_script_preview.xml index d699011f32..7b6bc73677 100644 --- a/indra/newview/skins/default/xui/fr/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/fr/floater_script_preview.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview lsl text" title="SCRIPT : SCRIPT DE ROTATION"> +<floater name="preview lsl text" title="SCRIPT : SCRIPT DE ROTATION"> <floater.string name="Title"> - Script : [NAME] + SCRIPT : [NAME] </floater.string> <text name="desc txt"> Description : diff --git a/indra/newview/skins/default/xui/fr/floater_script_queue.xml b/indra/newview/skins/default/xui/fr/floater_script_queue.xml index 7d4afdf818..b9a8165457 100644 --- a/indra/newview/skins/default/xui/fr/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/fr/floater_script_queue.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="queue" title="RÉINITIALISER PROGRESSION"> +<floater name="queue" title="RÉINITIALISER LES PROGRÈS"> <floater.string name="Starting"> - Début du [START] sur [COUNT] objets. + Lancement de [START] sur [COUNT] objets. </floater.string> <floater.string name="Done"> Fini. diff --git a/indra/newview/skins/default/xui/fr/floater_script_search.xml b/indra/newview/skins/default/xui/fr/floater_script_search.xml index 49b0ffe542..09b903f41c 100644 --- a/indra/newview/skins/default/xui/fr/floater_script_search.xml +++ b/indra/newview/skins/default/xui/fr/floater_script_search.xml @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="script search" title="RECHERCHE DE SCRIPTS" width="320"> - <check_box label="Non sensible à la casse" name="case_text" left="75"/> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script search" title="RECHERCHE DE SCRIPT" width="320"> + <check_box label="Non sensible à la casse" left="75" name="case_text"/> <button label="Rechercher" label_selected="Rechercher" name="search_btn" width="96"/> - <button label="Remplacer" label_selected="Remplacer" name="replace_btn" left="111" width="96"/> - <button label="Tout remplacer" label_selected="Tout remplacer" name="replace_all_btn" left="212" width="96"/> + <button label="Remplacer" label_selected="Remplacer" left="111" name="replace_btn" width="96"/> + <button label="Tout remplacer" label_selected="Tout remplacer" left="212" name="replace_all_btn" width="96"/> <text name="txt" width="65"> Rechercher </text> <text name="txt2" width="65"> Remplacer </text> - <line_editor left="75" name="search_text" width="240" /> - <line_editor left="75" name="replace_text" width="240" /> + <line_editor left="75" name="search_text" width="240"/> + <line_editor left="75" name="replace_text" width="240"/> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_search.xml b/indra/newview/skins/default/xui/fr/floater_search.xml new file mode 100644 index 0000000000..672024466a --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_search.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_search" title="RECHERCHER"> + <floater.string name="loading_text"> + Chargement... + </floater.string> + <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 0dc47df72b..664bc0a723 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 86c6a52f8c..d79726e8e2 100644 --- a/indra/newview/skins/default/xui/fr/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_sell_land.xml @@ -1,26 +1,24 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="sell land" title="VENDRE TERRAIN"> +<floater name="sell land" title="VENDRE DU TERRAIN"> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> <text name="info_parcel_label"> - Parcelle : + Parcelle : </text> - <text name="info_parcel"> - PARCEL NAME + <text name="info_parcel" left="70"> + NOM DE LA PARCELLE </text> <text name="info_size_label"> - Taille : + Taille : </text> - <text name="info_size"> + <text name="info_size" left="70"> [AREA] m² </text> <text bottom_delta="-60" name="info_action"> - Pour vendre cette -parcelle : + Pour vendre cette parcelle : </text> - <icon bottom_delta="-86" name="step_price"/> <text name="price_label"> - Votre prix de vente : + 1. Votre prix de vente : </text> <text name="price_text"> Fixez un prix convenable. @@ -28,28 +26,29 @@ parcelle : <text name="price_ld"> L$ </text> + <line_editor name="price"> + 0 + </line_editor> <text name="price_per_m"> - ([PER_METER] L$ par mètre carré) + ([PER_METER] L$/m²) </text> <text name="sell_to_label"> - Vos acheteurs : + 2. Vos acheteurs : </text> <text name="sell_to_text"> - Vendez votre terrain à n'importe qui ou uniquement à un acheteur -spécifique. + 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="N'importe qui" name="Anyone"/> - <combo_box.item label="Personne spécifique :" name="Specificuser:"/> + <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> - <button label="Sélectionner..." name="sell_to_select_agent" width="100"/> + <button label="Sélectionner" name="sell_to_select_agent" width="100"/> <text name="sell_objects_label"> - Vendez-vous des objets avec ce terrain ? + 3. Vendez-vous les objets avec ce terrain ? </text> <text name="sell_objects_text"> - Les objets transférables se trouvant sur la parcelle changeront -de propriétaire. + Les objets transférables se trouvant sur la parcelle changeront de propriétaire. </text> <radio_group bottom_delta="-54" name="sell_objects" right="430"> <radio_item label="Non, rester le propriétaire des objets" name="no"/> @@ -57,9 +56,9 @@ de propriétaire. </radio_group> <button label="Afficher les objets" name="show_objects" right="420" width="120"/> <text bottom_delta="-30" name="nag_message_label"> - Rappel : toute vente est définitive. + Rappel : Toutes les ventes sont définitives. </text> - <button label="Mettre le terrain en vente" name="sell_btn" width="165"/> + <button label="Indiquer le terrain à vendre" name="sell_btn" width="165"/> <button label="Annuler" name="cancel_btn"/> </panel> </scroll_container> diff --git a/indra/newview/skins/default/xui/fr/floater_settings_debug.xml b/indra/newview/skins/default/xui/fr/floater_settings_debug.xml index ee076119aa..995837e9ee 100644 --- a/indra/newview/skins/default/xui/fr/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/fr/floater_settings_debug.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="settings_debug" title="PARAMÉTRAGES DU MODE DEBUG"> +<floater name="settings_debug" title="PARAMÈTRES DE DÉBOGAGE"> <combo_box name="boolean_combo"> - <combo_box.item label="TRUE" name="TRUE"/> - <combo_box.item label="FALSE" name="FALSE"/> + <combo_box.item label="VRAI" name="TRUE"/> + <combo_box.item label="FAUX" name="FALSE"/> </combo_box> - <color_swatch label="Couleur" name="val_color_swatch"/> + <color_swatch label="Couleur" name="val_color_swatch" width="50"/> <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/fr/floater_snapshot.xml b/indra/newview/skins/default/xui/fr/floater_snapshot.xml index a28e64f7af..f01d865f29 100644 --- a/indra/newview/skins/default/xui/fr/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/fr/floater_snapshot.xml @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Snapshot" title="PRÉVISUALISER LA PHOTO" width="247"> +<floater name="Snapshot" title="APERÇU DE LA PHOTO" width="247"> <text name="type_label"> Destination de la photo </text> <radio_group label="Type de photo" name="snapshot_type_radio" width="228"> - <radio_item name="postcard" label="Envoyer par e-mail" /> - <radio_item name="texture" label="Enregistrer dans votre inventaire ([AMOUNT] L$)" /> - <radio_item name="local" label="Enregistrer sur votre disque dur" /> + <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> @@ -17,62 +17,62 @@ Format </text> <combo_box label="Résolution" name="postcard_size_combo"> - <combo_box.item name="640x480" label="640 x 480" /> - <combo_box.item name="800x600" label="800 x 600" /> - <combo_box.item name="1024x768" label="1024 x 768" /> - <combo_box.item name="CurrentWindow" label="Fenêtre actuelle" /> - <combo_box.item name="Custom" label="Personnaliser" /> + <combo_box.item label="640 x 480" name="640x480"/> + <combo_box.item label="800 x 600" name="800x600"/> + <combo_box.item label="1024 x 768" name="1024x768"/> + <combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/> + <combo_box.item label="Personnaliser" name="Custom"/> </combo_box> <combo_box label="Résolution" name="texture_size_combo"> - <combo_box.item name="CurrentWindow" label="Fenêtre actuelle" /> - <combo_box.item name="Small(128x128)" label="Petite (128 x 128)" /> - <combo_box.item name="Medium(256x256)" label="Moyenne (256 x 256)" /> - <combo_box.item name="Large(512x512)" label="Grande (512 x 512)" /> - <combo_box.item name="Custom" label="Personnaliser" /> + <combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/> + <combo_box.item label="Petite (128 x 128)" name="Small(128x128)"/> + <combo_box.item label="Moyenne (256 x 256)" name="Medium(256x256)"/> + <combo_box.item label="Grande (512 x 512)" name="Large(512x512)"/> + <combo_box.item label="Personnaliser" name="Custom"/> </combo_box> <combo_box label="Résolution" name="local_size_combo"> - <combo_box.item name="CurrentWindow" label="Fenêtre actuelle" /> - <combo_box.item name="320x240" label="320 x 240" /> - <combo_box.item name="640x480" label="640 x 480" /> - <combo_box.item name="800x600" label="800 x 600" /> - <combo_box.item name="1024x768" label="1024 x 768" /> - <combo_box.item name="1280x1024" label="1280 x 1024" /> - <combo_box.item name="1600x1200" label="1600 x 1200" /> - <combo_box.item name="Custom" label="Personnaliser" /> + <combo_box.item label="Fenêtre actuelle" name="CurrentWindow"/> + <combo_box.item label="320 x 240" name="320x240"/> + <combo_box.item label="640 x 480" name="640x480"/> + <combo_box.item label="800 x 600" name="800x600"/> + <combo_box.item label="1024 x 768" name="1024x768"/> + <combo_box.item label="1280 x 1024" name="1280x1024"/> + <combo_box.item label="1600 x 1200" name="1600x1200"/> + <combo_box.item label="Personnaliser" name="Custom"/> </combo_box> <combo_box label="Format" 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="Largeur" label_width="41" name="snapshot_width" width="101"/> - <spinner label="Hauteur" label_width="41" left="121" name="snapshot_height" width="101"/> + <spinner label="Largeur" label_width="44" name="snapshot_width" width="101"/> + <spinner label="Hauteur" label_width="46" left="121" name="snapshot_height" width="101"/> <slider label="Qualité de l'image" name="image_quality_slider"/> <text name="layer_type_label"> Capturer : </text> <combo_box label="Couches de l'image" name="layer_types"> - <combo_box.item name="Colors" label="Couleurs" /> - <combo_box.item name="Depth" label="Profondeur" /> - <combo_box.item name="ObjectMattes" label="Matte des objets" /> + <combo_box.item label="Couleurs" name="Colors"/> + <combo_box.item label="Profondeur" name="Depth"/> + <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="Conserver les proportions" name="keep_aspect_check"/> + <check_box label="Figer l'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"/> <button label="Envoyer" name="send_btn" width="118"/> <flyout_button label="Enregistrer" name="save_btn" tool_tip="Enregistrer l'image dans un fichier" width="118"> - <flyout_button.item name="save_item" label="Enregistrer"/> - <flyout_button.item name="saveas_item" label="Enregistrer sous..."/> + <flyout_button.item label="Enregistrer" name="save_item"/> + <flyout_button.item label="Enregistrer sous..." name="saveas_item"/> </flyout_button> - <button label="Annuler" name="discard_btn" left="133" width="72" /> + <button label="Annuler" left="133" name="discard_btn" width="72"/> <string name="unknown"> inconnu </string> diff --git a/indra/newview/skins/default/xui/fr/floater_sound_preview.xml b/indra/newview/skins/default/xui/fr/floater_sound_preview.xml index 9e2b30b3f6..6f0fb3421f 100644 --- a/indra/newview/skins/default/xui/fr/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/fr/floater_sound_preview.xml @@ -12,9 +12,9 @@ Débit (kbps) : </text> <radio_group name="bitrate"> - <radio_item name="32" label="32" /> - <radio_item name="64" label="64" /> - <radio_item name="96" label="96" /> - <radio_item name="128" label="128" /> + <radio_item label="32" name="32"/> + <radio_item label="64" name="64"/> + <radio_item label="96" name="96"/> + <radio_item label="128" name="128"/> </radio_group> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_stats.xml b/indra/newview/skins/default/xui/fr/floater_stats.xml index 26443e634b..3c19bb2608 100644 --- a/indra/newview/skins/default/xui/fr/floater_stats.xml +++ b/indra/newview/skins/default/xui/fr/floater_stats.xml @@ -1,69 +1,69 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Statistics" title="Statistiques"> +<floater name="Statistics" title="STATISTIQUES"> <scroll_container name="statistics_scroll"> <container_view name="statistics_view"> - <stat_view label="Basic" name="basic"> + <stat_view label="De base" name="basic"> <stat_bar label="FPS" name="fps"/> - <stat_bar label="Bandwidth" name="bandwidth"/> - <stat_bar label="Packet Loss" name="packet_loss"/> - <stat_bar label="Ping Sim" name="ping"/> + <stat_bar label="Bande passante" name="bandwidth"/> + <stat_bar label="Perte de paquets" name="packet_loss"/> + <stat_bar label="Ping sim" name="ping"/> </stat_view> - <stat_view label="Advanced" name="advanced"> - <stat_view label="Render" name="render"> + <stat_view label="Avancées" name="advanced"> + <stat_view label="Rendu" name="render"> <stat_bar label="KTris Drawn" name="ktrisframe"/> <stat_bar label="KTris Drawn" name="ktrissec"/> - <stat_bar label="Total Objects" name="objs"/> - <stat_bar label="New Objects" name="newobjs"/> + <stat_bar label="Objets totaux" name="objs"/> + <stat_bar label="Nouveaux objets" name="newobjs"/> </stat_view> <stat_view label="Texture" name="texture"> - <stat_bar label="Count" name="numimagesstat"/> - <stat_bar label="Raw Count" name="numrawimagesstat"/> - <stat_bar label="GL Mem" name="gltexmemstat"/> - <stat_bar label="Formatted Mem" name="formattedmemstat"/> - <stat_bar label="Raw Mem" name="rawmemstat"/> - <stat_bar label="Bound Mem" name="glboundmemstat"/> + <stat_bar label="Nombre" name="numimagesstat"/> + <stat_bar label="Nombre brut" name="numrawimagesstat"/> + <stat_bar label="Mém GL" name="gltexmemstat"/> + <stat_bar label="Mém formatée" name="formattedmemstat"/> + <stat_bar label="Mém brute" name="rawmemstat"/> + <stat_bar label="Mém liée" name="glboundmemstat"/> </stat_view> - <stat_view label="Network" name="network"> - <stat_bar label="Packets In" name="packetsinstat"/> - <stat_bar label="Packets Out" name="packetsoutstat"/> - <stat_bar label="Objects" name="objectkbitstat"/> + <stat_view label="Réseau" name="network"> + <stat_bar label="Paquets en entrée" name="packetsinstat"/> + <stat_bar label="Paquets en sortie" name="packetsoutstat"/> + <stat_bar label="Objets" name="objectkbitstat"/> <stat_bar label="Texture" name="texturekbitstat"/> - <stat_bar label="Asset" name="assetkbitstat"/> - <stat_bar label="Layers" name="layerskbitstat"/> - <stat_bar label="Actual In" name="actualinkbitstat"/> - <stat_bar label="Actual Out" name="actualoutkbitstat"/> - <stat_bar label="VFS Pending Ops" name="vfspendingoperations"/> + <stat_bar label="Actif" name="assetkbitstat"/> + <stat_bar label="Couches" name="layerskbitstat"/> + <stat_bar label="Arrivés" name="actualinkbitstat"/> + <stat_bar label="Sortis" name="actualoutkbitstat"/> + <stat_bar label="Ops VFS en attente" name="vfspendingoperations"/> </stat_view> </stat_view> - <stat_view label="Simulator" name="sim"> - <stat_bar label="Time Dilation" name="simtimedilation"/> - <stat_bar label="Sim FPS" name="simfps"/> - <stat_bar label="Physics FPS" name="simphysicsfps"/> - <stat_view label="Physics Details" name="physicsdetail"> - <stat_bar label="Pinned Objects" name="physicspinnedtasks"/> - <stat_bar label="Low LOD Objects" name="physicslodtasks"/> - <stat_bar label="Memory Allocated" name="physicsmemoryallocated"/> - <stat_bar label="Agent Updates/Sec" name="simagentups"/> - <stat_bar label="Main Agents" name="simmainagents"/> - <stat_bar label="Child Agents" name="simchildagents"/> - <stat_bar label="Objets" name="simobjects"/> - <stat_bar label="Active Objects" name="simactiveobjects"/> - <stat_bar label="Active Scripts" name="simactivescripts"/> - <stat_bar label="Script Events" name="simscripteps"/> - <stat_bar label="Packets In" name="siminpps"/> - <stat_bar label="Packets Out" name="simoutpps"/> - <stat_bar label="Pending Downloads" name="simpendingdownloads"/> - <stat_bar label="Pending Uploads" name="simpendinguploads"/> - <stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/> + <stat_view label="Simulateur" name="sim"> + <stat_bar label="Dilatation temporelle" name="simtimedilation"/> + <stat_bar label="FPS sim" name="simfps"/> + <stat_bar label="Propriétés physiques FPS" name="simphysicsfps"/> + <stat_view label="Détails des propriétés physiques" name="physicsdetail"> + <stat_bar label="Objets fixés" name="physicspinnedtasks"/> + <stat_bar label="Objets LOD faibles" name="physicslodtasks"/> + <stat_bar label="Mémoire allouée" name="physicsmemoryallocated"/> </stat_view> - <stat_view label="Time (ms)" name="simperf"> - <stat_bar label="Total Frame Time" name="simframemsec"/> - <stat_bar label="Net Time" name="simnetmsec"/> - <stat_bar label="Physics Time" name="simsimphysicsmsec"/> - <stat_bar label="Simulation Time" name="simsimothermsec"/> - <stat_bar label="Agent Time" name="simagentmsec"/> - <stat_bar label="Images Time" name="simimagesmsec"/> - <stat_bar label="Script Time" name="simscriptmsec"/> + <stat_bar label="Mises à jour avatar/s" name="simagentups"/> + <stat_bar label="Avatars principaux" name="simmainagents"/> + <stat_bar label="Avatars enfants" name="simchildagents"/> + <stat_bar label="Objets" name="simobjects"/> + <stat_bar label="Objets actifs" name="simactiveobjects"/> + <stat_bar label="Scripts actifs" name="simactivescripts"/> + <stat_bar label="Événements de scripts" name="simscripteps"/> + <stat_bar label="Paquets en entrée" name="siminpps"/> + <stat_bar label="Paquets en sortie" name="simoutpps"/> + <stat_bar label="En attente des téléchargements" name="simpendingdownloads"/> + <stat_bar label="En attente des chargements" name="simpendinguploads"/> + <stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/> + <stat_view label="Temps (ms)" name="simperf"> + <stat_bar label="Durée du cadre totale" name="simframemsec"/> + <stat_bar label="Durée nette" name="simnetmsec"/> + <stat_bar label="Durée physique" name="simsimphysicsmsec"/> + <stat_bar label="Durée de la simulation" name="simsimothermsec"/> + <stat_bar label="Durée de l'avatar" name="simagentmsec"/> + <stat_bar label="Durée des images" name="simimagesmsec"/> + <stat_bar label="Durée du script" name="simscriptmsec"/> </stat_view> </stat_view> </container_view> diff --git a/indra/newview/skins/default/xui/fr/floater_sys_well.xml b/indra/newview/skins/default/xui/fr/floater_sys_well.xml new file mode 100644 index 0000000000..47b761aed9 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_sys_well.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="notification_chiclet" title="NOTIFICATIONS"> + <string name="title_im_well_window"> + CONVERSATIONS + </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 c89eea517e..c529ca2736 100644 --- a/indra/newview/skins/default/xui/fr/floater_telehub.xml +++ b/indra/newview/skins/default/xui/fr/floater_telehub.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="telehub" title="TÉLÉHUB" min_height="310" height="310" > +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater height="310" min_height="310" name="telehub" title="TÉLÉHUB"> <text name="status_text_connected"> Téléhub connecté à l'objet [OBJECT] </text> @@ -9,23 +9,20 @@ <text name="help_text_connected"> Pour supprimer, cliquez sur Déconnecter. </text> - <text name="help_text_not_connected" height="38" bottom_delta="-18"> - Sélectionner l'objet et cliquez sur Connecter -le téléhub. + <text bottom_delta="-18" height="38" name="help_text_not_connected"> + Sélectionner l'objet et cliquez sur Connecter le téléhub. </text> <button label="Connecter le téléhub" name="connect_btn" width="122"/> - <button label="Déconnecter" name="disconnect_btn" left="142" width="98"/> + <button label="Déconnecter" left="142" name="disconnect_btn" width="98"/> <text name="spawn_points_text" width="230"> Points d'apparition (positions, pas objets) : </text> - <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. + <button label="Ajouter point" name="add_spawn_point_btn"/> + <button label="Supprimer point" name="remove_spawn_point_btn"/> + <text name="spawn_point_help" height="100"> + 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 ff84025a44..381bcceb00 100644 --- a/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml @@ -1,23 +1,23 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="texture picker" title="TEXTURE"> +<floater name="texture picker" title="CHOISIR : TEXTURE"> <string name="choose_picture"> Cliquez pour sélectionner une image </string> <text name="Multiple"> - Multiple + Textures multiples </text> <text name="unknown"> - Dimensions : [DIMENSIONS] + Taille : [DIMENSIONS] </text> - <button label="Défaut" label_selected="Défaut" name="Default" width="60" /> - <button label="Aucune" label_selected="Aucune" name="None" width="60" left="68" /> - <button label="Vierge" label_selected="Vierge" name="Blank" width="60" /> + <button label="Défaut" label_selected="Défaut" name="Default" width="60"/> + <button label="Aucune" label_selected="Aucune" left="68" name="None" width="60"/> + <button label="Vierge" label_selected="Vierge" name="Blank" width="60"/> <check_box label="Afficher les dossiers" name="show_folders_check"/> - <search_editor label="Saisissez votre recherche ici" name="inventory search editor"/> - <check_box label="Appliquer immédiatement" name="apply_immediate_check" /> - <button label="" label_selected="" name="Pipette" bottom="-240" /> + <search_editor label="Filtrer les textures" name="inventory search editor"/> + <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="Sélectionner" label_selected="Sélectionner" 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 3270634401..64722ff1a7 100644 --- a/indra/newview/skins/default/xui/fr/floater_tools.xml +++ b/indra/newview/skins/default/xui/fr/floater_tools.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="toolbox floater" short_title="Outils de construction" title=""> +<floater name="toolbox floater" short_title="OUTILS DE CONSTRUCTION" title=""> <floater.string name="status_rotate"> Pour faire tourner l'objet, faîtes glisser les bandes de couleur. </floater.string> @@ -13,10 +13,10 @@ Cliquez et maintenez pour modifier le terrain. </floater.string> <floater.string name="status_camera"> - Cliquez et faîtes glisser pour bouger la caméra + Cliquez et faites glisser pour bouger la caméra </floater.string> <floater.string name="status_grab"> - Glisser pour déplacer, Ctrl pour soulever, Crtl-Maj pour pivoter. + Faites glisser pour déplacer, appuyez sur Ctrl pour soulever, Ctrl-Maj pour pivoter </floater.string> <floater.string name="status_place"> Cliquez dans le monde pour construire. @@ -50,29 +50,32 @@ <radio_group name="focus_radio_group"> <radio_item label="Zoom" name="radio zoom"/> <radio_item label="Orbite (Ctrl)" name="radio orbit"/> - <radio_item label="Panoramique (Ctrl-Maj)" name="radio pan"/> + <radio_item label="Faire un panoramique (Ctrl+Maj)" name="radio pan"/> </radio_group> <radio_group name="move_radio_group"> <radio_item label="Déplacer" name="radio move"/> <radio_item label="Orbite (Ctrl)" name="radio lift"/> - <radio_item label="Faire tourner (Ctrl-Maj)" name="radio spin"/> + <radio_item label="Faire tourner (Ctrl+Maj)" name="radio spin"/> </radio_group> <radio_group name="edit_radio_group"> <radio_item label="Bouger" name="radio position"/> <radio_item label="Pivoter (Ctrl)" name="radio rotate"/> - <radio_item label="Étirer (Ctrl-Maj)" name="radio stretch"/> + <radio_item label="Étirer (Ctrl+Maj)" name="radio stretch"/> <radio_item label="Sélectionner une face" name="radio select face"/> </radio_group> <check_box label="Modification liée" name="checkbox edit linked parts"/> + <text name="RenderingCost" tool_tip="Affiche le coût du rendu calculé pour cet objet"> + þ : [COUNT] + </text> <check_box label="Étirer les deux côtés" name="checkbox uniform"/> <check_box initial_value="true" label="Étirer les textures" name="checkbox stretch textures"/> <check_box initial_value="true" label="Fixer sur la grille" name="checkbox snap to grid"/> - <combo_box name="combobox grid mode"> - <combo_box.item label="Axe du monde" name="World"/> - <combo_box.item label="Axe local" name="Local"/> - <combo_box.item label="Axe de référence" name="Reference"/> + <combo_box name="combobox grid mode" tool_tip="Choisissez le type d'axe de grille pour le positionnement de l'objet"> + <combo_box.item label="Grille du monde" name="World"/> + <combo_box.item label="Grille locale" name="Local"/> + <combo_box.item label="Grille de référence" name="Reference"/> </combo_box> - <button label="Options..." label_selected="Options..." name="Options..." tool_tip="Définir les options de la grille"/> + <button label="Options..." label_selected="Options..." name="Options..." tool_tip="Afficher d'autres options de grille"/> <button label="" label_selected="" name="ToolCube" tool_tip="Cube"/> <button label="" label_selected="" name="ToolPrism" tool_tip="Prisme droit"/> <button label="" label_selected="" name="ToolPyramid" tool_tip="Pyramide"/> @@ -112,10 +115,10 @@ </text> <button label="Appliquer" label_selected="Appliquer" left="176" name="button apply to selection" tool_tip="Modifier le terrain sélectionné"/> <text name="obj_count"> - Objets : [COUNT] + Objets : [COUNT] </text> <text name="prim_count"> - Prims : [COUNT] + Prims : [COUNT] </text> <tab_container name="Object Info Tabs"> <panel label="Général" name="General"> @@ -141,13 +144,13 @@ Sélectionnez l'objet en entier </panel.string> <panel.string name="Cost Default"> - Prix : L$ + Prix : L$ </panel.string> <panel.string name="Cost Total"> - Prix total : L$ + Prix total : L$ </panel.string> <panel.string name="Cost Per Unit"> - Prix par : L$ + Prix par : L$ </panel.string> <panel.string name="Cost Mixed"> Prix mixte @@ -165,23 +168,23 @@ Créateur : </text> <text name="Creator Name"> - Thrax Linden + Esbee Linden </text> <text name="Owner:"> Propriétaire : </text> <text name="Owner Name"> - Thrax Linden + Erica Linden </text> <text name="Group:"> Groupe : </text> - <button label="Définir..." label_selected="Définir..." 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."/> + <button label="Définir..." label_selected="Définir..." name="button set group" tool_tip="Choisissez un groupe pour partager les droits 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 droits 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 : + Cliquer pour : </text> <combo_box name="clickaction" width="178"> <combo_box.item label="Toucher (défaut)" name="Touch/grab(default)"/> @@ -189,25 +192,27 @@ <combo_box.item label="Acheter l'objet" name="Buyobject"/> <combo_box.item label="Payer l'objet" name="Payobject"/> <combo_box.item label="Ouvrir" name="Open"/> + <combo_box.item label="Zoomer" name="Zoom"/> </combo_box> - <check_box label="À vendre :" name="checkbox for sale"/> + <check_box label="À vendre :" name="checkbox for sale"/> <combo_box name="sale type"> <combo_box.item label="Copie" 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"/> + <spinner label="Prix : L$" name="Edit Cost"/> <check_box label="Afficher dans la recherche" name="search_check" tool_tip="Afficher l'objet dans les résultats de recherche"/> <panel name="perms_build"> <text name="perm_modify"> Vous pouvez modifier cet objet </text> <text name="Anyone can:"> - N'importe qui : + 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:"> - Le prochain propriétaire : + Le prochain propriétaire : </text> <check_box label="Modifier" name="checkbox next owner can modify"/> <check_box label="Copier" left_delta="66" name="checkbox next owner can copy"/> @@ -235,7 +240,7 @@ <panel label="Objet" name="Object"> <check_box label="Verrouillé" name="checkbox locked" tool_tip="Empêche l'objet d'être déplacé ou supprimé. Utile pendant la construction pour éviter les modifications involontaires."/> <check_box label="Physique" name="Physical Checkbox Ctrl" tool_tip="Permet à l'objet d'être poussé et affecté par la gravité"/> - <check_box label="Temporaire" name="Temporary Checkbox Ctrl" tool_tip="L'objet est supprimé 1 mn après sa création."/> + <check_box label="Temporaire" name="Temporary Checkbox Ctrl" tool_tip="Les objets sont supprimés une minute après leur création"/> <check_box label="Fantôme" name="Phantom Checkbox Ctrl" tool_tip="Permet à l'objet de ne pas entrer en collision avec d'autres objets ou avatars."/> <text name="label position"> Position (mètres) @@ -335,8 +340,8 @@ Révolutions </text> <texture_picker label="Texture du sculptie" name="sculpt texture control" tool_tip="Cliquez pour sélectionner une image"/> - <check_box label="Mirroir" name="sculpt mirror control" tool_tip="Retourne le sculptie le long de l'axe des X."/> - <check_box label="A l'envers" name="sculpt invert control" tool_tip="Inverse les valeurs normales d'un sculptie et le fait apparaître à l'envers."/> + <check_box label="Mirroir" name="sculpt mirror control" tool_tip="Inverse le sculptie le long de l'axe X"/> + <check_box label="A l'envers" name="sculpt invert control" tool_tip="Inverse les normales des sculpties, qui apparaissent alors à l'envers"/> <text name="label sculpt type"> Type de raccord </text> @@ -355,7 +360,7 @@ <text name="edit_object"> Modifier les attributs de l'objet : </text> - <check_box label="Flexibilité" name="Flexible1D Checkbox Ctrl" tool_tip="Donne à l'objet de la souplesse sur l'axe des Z (côté client uniquement)."/> + <check_box label="Flexibilité" name="Flexible1D Checkbox Ctrl" tool_tip="Permet à l'objet de se plier le long de l'axe Z (côté client uniquement)"/> <spinner label="Souplesse" name="FlexNumSections"/> <spinner label="Gravité" name="FlexGravity"/> <spinner label="Élasticité" name="FlexFriction"/> @@ -366,9 +371,13 @@ <spinner label="Force Z" name="FlexForceZ"/> <check_box label="Lumière" name="Light Checkbox Ctrl" tool_tip="Permet aux objets d'émettre de la lumière"/> <color_swatch label="" name="colorswatch" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> + <texture_picker label="" name="light texture control" tool_tip="Cliquez pour choisir une image de projection (n'a d'effet que si le rendu différé est activé)"/> <spinner label="Intensité" name="Light Intensity"/> + <spinner label="Angle de champ" name="Light FOV"/> <spinner label="Portée" name="Light Radius"/> + <spinner label="Point central" name="Light Focus"/> <spinner label="Atténuation" name="Light Falloff"/> + <spinner label="Ambiance" name="Light Ambiance"/> </panel> <panel label="Texture" name="Texture"> <panel.string name="string repeats per meter"> @@ -378,7 +387,7 @@ Répétitions par face </panel.string> <texture_picker label="Texture" name="texture control" tool_tip="Cliquez pour sélectionner une image"/> - <color_swatch label="Couleur" name="colorswatch" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs"/> + <color_swatch label="Couleur" name="colorswatch" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> <text name="color trans" width="88"> Transparence </text> @@ -426,20 +435,29 @@ <combo_box.item label="Tissage" name="weave"/> </combo_box> <text name="tex scale"> - Répétitions par face + Répétitions / Face </text> <spinner label="Horizontal (U)" name="TexScaleU"/> <check_box label="Inverser" name="checkbox flip s"/> <spinner label="Vertical (V)" name="TexScaleV"/> <check_box label="Inverser" name="checkbox flip t"/> <spinner label="Rotation˚" left="122" name="TexRot" width="58"/> - <spinner label="Repeats / Meter" left="122" name="rptctrl" width="58"/> + <spinner label="Répétitions / Mètre" left="122" name="rptctrl" width="58"/> <button label="Appliquer" label_selected="Appliquer" left_delta="68" name="button apply" width="75"/> <text name="tex offset"> Décalage de la texture </text> <spinner label="Horizontal (U)" name="TexOffsetU"/> <spinner label="Vertical (V)" name="TexOffsetV"/> + <panel name="Add_Media"> + <text name="media_tex"> + 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" tool_tip="Ajuster la texture du média (le chargement doit d'abord se terminer)"/> + </panel> </panel> <panel label="Contenu" name="Contents"> <button label="Nouveau script" label_selected="Nouveau script" name="button new script"/> @@ -451,29 +469,22 @@ Informations sur la parcelle </text> <text name="label_area_price"> - Prix : [PRICE] L$ pour [AREA] m². + Prix : [PRICE] L$ pour [AREA] m² </text> <text name="label_area"> - Surface : [AREA] m² + Surface : [AREA] m² </text> - <button label="À propos du terrain..." label_selected="À propos du terrain..." name="button about land" width="142"/> - <check_box label="Afficher les propriétaires" name="checkbox show owners" tool_tip="Colorie les parcelles en fonction 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"/> + <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"/> <text name="label_parcel_modify"> Modifier la parcelle </text> - <button label="Diviser" label_selected="Diviser" name="button subdivide land" width="142"/> + <button label="Sous-diviser" label_selected="Sous-diviser" name="button subdivide land" width="142"/> <button label="Fusionner" label_selected="Fusionner" name="button join land" width="142"/> <text name="label_parcel_trans"> Transactions </text> - <button label="Acheter le terrain" label_selected="Acheter le terrain" name="button buy land" width="142"/> + <button label="Acheter du terrain" label_selected="Acheter du terrain" name="button buy land" width="142"/> <button label="Abandonner le terrain" label_selected="Abandonner le terrain" name="button abandon land" width="142"/> </panel> </floater> 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 479559367f..42352e7c1e 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_tos.xml b/indra/newview/skins/default/xui/fr/floater_tos.xml index ba7052562c..2c8e8bc5bc 100644 --- a/indra/newview/skins/default/xui/fr/floater_tos.xml +++ b/indra/newview/skins/default/xui/fr/floater_tos.xml @@ -1,18 +1,17 @@ -<?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="Continuer" label_selected="Continuer" name="Continue" /> - <button label="Annuler" label_selected="Annuler" name="Cancel" /> + <button label="Continuer" label_selected="Continuer" name="Continue"/> + <button label="Annuler" label_selected="Annuler" name="Cancel"/> <radio_group name="tos_agreement"> - <radio_item name="radio_disagree" label="Je n'accepte pas les Conditions Générales d'Utilisation" /> - <radio_item name="radio_agree" label="J'accepte les Conditions Générales d'Utilisation" /> + <radio_item label="Je n'accepte pas les Conditions Générales d'Utilisation" name="radio_disagree"/> + <radio_item label="J'accepte les Conditions Générales d'Utilisation" name="radio_agree"/> </radio_group> <text name="tos_title"> Acceptation des Conditions Générales d'Utilisation </text> - <check_box label="J'accepte les Conditions d'utilisation" name="agree_chk" /> + <check_box label="J'accepte les Conditions d'utilisation" name="agree_chk"/> <text name="tos_heading"> - Veuillez lire attentivement les Conditions d'utilisation suivantes. Pour continuer à utiliser -[SECOND_LIFE], vous devez accepter ces conditions. + Veuillez lire attentivement les Conditions d'utilisation suivantes. Pour vous connecter à [SECOND_LIFE], vous devez accepter l'accord. </text> <text_editor name="tos_text"> TOS_TEXT diff --git a/indra/newview/skins/default/xui/fr/floater_url_entry.xml b/indra/newview/skins/default/xui/fr/floater_url_entry.xml index 6a90731691..4b2be14569 100644 --- a/indra/newview/skins/default/xui/fr/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/fr/floater_url_entry.xml @@ -3,11 +3,11 @@ <text name="media_label"> URL du média : </text> - <combo_box left="100" name="media_entry" width="360" /> - <button label="OK" name="ok_btn" /> + <combo_box name="media_entry"/> + <button label="OK" name="ok_btn" width="30" /> <button label="Annuler" name="cancel_btn" /> - <button label="Effacer" name="clear_btn" /> - <text name="loading_label"> + <button label="Effacer" name="clear_btn" left_pad="94"/> + <text name="loading_label" left="120"> Chargement... </text> </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 new file mode 100644 index 0000000000..54ba2ad3e5 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_voice_controls" title="Contrôles vocaux"> + <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_water.xml b/indra/newview/skins/default/xui/fr/floater_water.xml index 3de5fee0ce..1a74017330 100644 --- a/indra/newview/skins/default/xui/fr/floater_water.xml +++ b/indra/newview/skins/default/xui/fr/floater_water.xml @@ -1,66 +1,52 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Water Floater" title="ÉDITEUR D'EAU AVANCé"> - <text name="KeyFramePresetsText"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Water Floater" title="ÉDITEUR D'EAU AVANCÉE"> + <floater.string name="WLDefaultWaterNames"> + Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez + </floater.string> + <text name="KeyFramePresetsText" width="120"> Préréglages eau : </text> - <button label="Nouveau" label_selected="Nouveau" name="WaterNewPreset" /> - <button label="Enregistrer" label_selected="Enregistrer" name="WaterSavePreset" width="75" left_delta="75"/> - <button label="Supprimer" label_selected="Supprimer" name="WaterDeletePreset" left_delta="80"/> + <button label="Nouveau" label_selected="Nouveau" name="WaterNewPreset"/> + <button label="Enregistrer" label_selected="Enregistrer" left_delta="75" name="WaterSavePreset" width="75"/> + <button label="Supprimer" label_selected="Supprimer" left_delta="80" name="WaterDeletePreset"/> <tab_container name="Water Tabs"> <panel label="Paramètres" name="Settings"> <text name="BHText"> - Couleur du brouillard -dans l'eau + Couleur du brouillard dans l'eau </text> - <button label="?" name="WaterFogColorHelp" /> - <color_swatch name="WaterFogColor" left="75" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs" /> + <color_swatch left="75" name="WaterFogColor" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> <text name="WaterFogDensText"> Densité du brouillard </text> - <button label="?" name="WaterFogDensityHelp" /> <text name="WaterUnderWaterFogModText"> Brouillard sous-marin </text> - <button label="?" name="WaterUnderWaterFogModHelp" /> <text name="BDensText"> Échelle des vaguelettes </text> - <button label="?" name="WaterNormalScaleHelp" /> - <text name="BHText2"> - 1 - </text> - <text name="BHText3"> - 2 - </text> - <text name="BHText4"> - 3 - </text> + <slider label="1" name="WaterNormalScaleX"/> + <slider label="2" name="WaterNormalScaleY"/> + <slider label="3" name="WaterNormalScaleZ"/> <text name="HDText"> Échelle Fresnel </text> - <button label="?" name="WaterFresnelScaleHelp" /> <text name="FresnelOffsetText"> Décalage Fresnel </text> - <button label="?" name="WaterFresnelOffsetHelp" /> <text name="DensMultText"> Réfraction au dessus </text> - <button label="?" name="WaterScaleAboveHelp" /> <text name="WaterScaleBelowText"> Réfraction en dessous </text> - <button label="?" name="WaterScaleBelowHelp" /> <text name="MaxAltText"> Multiplicateur de flou </text> - <button label="?" name="WaterBlurMultiplierHelp" /> </panel> <panel label="Image" name="Waves"> <text name="BHText"> Direction grande vague </text> - <button label="?" name="WaterWave1Help" /> <text name="WaterWave1DirXText"> X </text> @@ -70,7 +56,6 @@ dans l'eau <text name="BHText2"> Direction petite vague </text> - <button label="?" name="WaterWave2Help" /> <text name="WaterWave2DirXText"> X </text> @@ -80,10 +65,6 @@ dans l'eau <text name="BHText3"> Normal Map </text> - <button label="?" name="WaterNormalMapHelp" /> </panel> </tab_container> - <string name="WLDefaultWaterNames"> - Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez - </string> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml index af6274d4e2..5dda347fcf 100644 --- a/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml +++ b/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?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" /> + <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> + <button label="Annuler" label_selected="Annuler" name="Cancel"/> <text name="Save item as:"> - Enregistrer l'objet sous : + Enregistrer l'objet dans mon inventaire comme : </text> <line_editor name="name ed"> Nouveau [DESC] diff --git a/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml new file mode 100644 index 0000000000..99e4954555 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_whitelist_entry.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<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> + <line_editor name="whitelist_entry" tool_tip="Saisissez une URL ou un style d'URL à ajouter à la liste blanche"/> + <button label="OK" name="ok_btn"/> + <button label="Annuler" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_windlight_options.xml b/indra/newview/skins/default/xui/fr/floater_windlight_options.xml index 4ff55d87b6..d92fadd048 100644 --- a/indra/newview/skins/default/xui/fr/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/fr/floater_windlight_options.xml @@ -1,19 +1,18 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="WindLight floater" title="ÉDITEUR DE CIEL AVANCÉ" width="706"> <text name="KeyFramePresetsText"> Préréglages ciel : </text> - <button label="Nouveau" label_selected="Nouveau" name="WLNewPreset" /> - <button label="Enregistrer" label_selected="Enregistrer" name="WLSavePreset" width="75" left_delta="75"/> - <button label="Supprimer" label_selected="Supprimer" name="WLDeletePreset" left_delta="80"/> - <button label="Éditeur du cycle du jour" label_selected="Éditeur du cycle du jour" - name="WLDayCycleMenuButton" width="150" left_delta="95" /> + <button label="Nouveau" label_selected="Nouveau" name="WLNewPreset"/> + <button label="Enregistrer" label_selected="Enregistrer" left_delta="75" name="WLSavePreset" width="75"/> + <button label="Supprimer" label_selected="Supprimer" left_delta="80" name="WLDeletePreset"/> + <button label="Éditeur du cycle du jour" label_selected="Éditeur du cycle du jour" left_pad="20" left_delta="95" name="WLDayCycleMenuButton" width="150"/> <tab_container name="WindLight Tabs" width="706"> <panel label="Atmosphère" name="Atmosphere"> <text name="BHText"> Bleu de l'horizon </text> - <button label="?" name="WLBlueHorizonHelp" /> + <button label="?" name="WLBlueHorizonHelp"/> <text name="BHText2"> R </text> @@ -29,11 +28,11 @@ <text name="BDensText"> Quantité de brume </text> - <button label="?" name="WLHazeHorizonHelp" /> + <button label="?" name="WLHazeHorizonHelp"/> <text name="BDensText2"> Densité du bleu </text> - <button label="?" name="WLBlueDensityHelp" /> + <button label="?" name="WLBlueDensityHelp"/> <text name="BHText6"> R </text> @@ -49,25 +48,25 @@ <text name="HDText"> Densité de la brume </text> - <button label="?" name="WLHazeDensityHelp" /> + <button label="?" name="WLHazeDensityHelp"/> <text name="DensMultText"> Multiplicateur de densité </text> - <button label="?" name="WLDensityMultHelp" /> + <button label="?" name="WLDensityMultHelp"/> <text name="WLDistanceMultText"> Multiplicateur de distance </text> - <button label="?" name="WLDistanceMultHelp" /> + <button label="?" name="WLDistanceMultHelp"/> <text name="MaxAltText"> Altitude maximum </text> - <button label="?" name="WLMaxAltitudeHelp" /> + <button label="?" name="WLMaxAltitudeHelp"/> </panel> <panel label="Éclairage" name="Lighting"> <text name="SLCText"> Couleur soleil/lune </text> - <button label="?" name="WLSunlightColorHelp" /> + <button label="?" name="WLSunlightColorHelp"/> <text name="BHText"> R </text> @@ -83,11 +82,11 @@ <text name="TODText"> Position soleil/lune </text> - <button label="?" name="WLTimeOfDayHelp" /> + <button label="?" name="WLTimeOfDayHelp"/> <text name="WLAmbientText"> Éclairage ambiant </text> - <button label="?" name="WLAmbientHelp" /> + <button label="?" name="WLAmbientHelp"/> <text name="BHText5"> R </text> @@ -103,27 +102,27 @@ <text name="WLEastAngleText"> Angle du levant </text> - <button label="?" name="WLEastAngleHelp" /> + <button label="?" name="WLEastAngleHelp"/> <text name="SunGlowText"> Rayonnement du soleil </text> - <button label="?" name="WLSunGlowHelp" /> - <slider label="Netteté " name="WLGlowB" /> - <slider label="Taille " name="WLGlowR" /> + <button label="?" name="WLSunGlowHelp"/> + <slider label="Netteté " name="WLGlowB"/> + <slider label="Taille " name="WLGlowR"/> <text name="SceneGammaText"> Gamma de la scène </text> - <button label="?" name="WLSceneGammaHelp" /> + <button label="?" name="WLSceneGammaHelp"/> <text name="WLStarText"> Éclat des étoiles </text> - <button label="?" name="WLStarBrightnessHelp" /> + <button label="?" name="WLStarBrightnessHelp"/> </panel> <panel label="Nuages" name="Clouds"> <text name="WLCloudColorText"> Couleur des nuages </text> - <button label="?" name="WLCloudColorHelp" /> + <button label="?" name="WLCloudColorHelp"/> <text name="BHText"> R </text> @@ -139,7 +138,7 @@ <text name="WLCloudColorText2"> Nuages XY/densité </text> - <button label="?" name="WLCloudDensityHelp" /> + <button label="?" name="WLCloudDensityHelp"/> <text name="BHText5"> X </text> @@ -152,15 +151,15 @@ <text name="WLCloudCoverageText"> Couverture nuageuse </text> - <button label="?" name="WLCloudCoverageHelp" left="407"/> + <button label="?" left="407" name="WLCloudCoverageHelp"/> <text name="WLCloudScaleText"> Altitude des nuages </text> - <button label="?" name="WLCloudScaleHelp" left="407"/> + <button label="?" left="407" name="WLCloudScaleHelp"/> <text name="WLCloudDetailText"> Détails nuages (XY/densité) </text> - <button label="?" name="WLCloudDetailHelp" left="407" bottom_delta="-2" /> + <button bottom_delta="-2" label="?" left="407" name="WLCloudDetailHelp"/> <text name="BHText8"> X </text> @@ -173,15 +172,15 @@ <text name="WLCloudScrollXText"> Direction et vitesse X </text> - <button label="?" name="WLCloudScrollXHelp" /> - <check_box label="Verrouiller" name="WLCloudLockX" /> + <button label="?" name="WLCloudScrollXHelp"/> + <check_box label="Verrouiller" name="WLCloudLockX"/> <text name="WLCloudScrollYText"> Direction et vitesse Y </text> - <button label="?" name="WLCloudScrollYHelp" /> - <check_box label="Verrouiller" name="WLCloudLockY" /> - <check_box label="Nuages classiques" name="DrawClassicClouds" /> - <button label="?" name="WLClassicCloudsHelp" /> + <button label="?" name="WLCloudScrollYHelp"/> + <check_box label="Verrouiller" name="WLCloudLockY"/> + <check_box label="Nuages classiques" name="DrawClassicClouds"/> + <button label="?" name="WLClassicCloudsHelp"/> </panel> </tab_container> <string name="WLDefaultSkyNames"> 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 0000000000..cbda4390d8 --- /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 ddb868b04a..19ea764ae8 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,91 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="worldmap" title="CARTE DU MONDE"> <panel name="objects_mapview" width="542"/> - <icon name="self" left="-270"/> - <text name="you_label"> - Vous - </text> - <icon name="home"/> - <text name="home_label"> - Domicile - </text> - <icon name="square2" left="-270"/> - <text name="auction_label"> - Terrain aux enchères - </text> - <icon name="square" left_delta="130"/> - <text name="land_for_sale_label"> - Terrain à vendre - </text> - <button left="-120" width="108" label="Aller chez moi" label_selected="Aller chez moi" name="Go Home" tool_tip="Vous téléporte à votre domicile"/> - <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="telehubchk"/> - <icon left="-266" name="landforsale"/> - <check_box label="Terrain à vendre" name="land_for_sale_chk"/> - <text name="events_label" left="-144"> - Événements : - </text> - <icon left="-132" name="event"/> - <check_box label="PG" name="event_chk"/> - <icon left="-132" name="events_mature_icon"/> - <check_box 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 à afficher sur la carte" width="232"> - <combo_box.item name="item1" label="Amis connectés" /> - </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 name="item1" label="Repères" /> - </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"> - <column label="" name="icon"/> - <column 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="Copier l'emplacement actuel comme SLurl pour l'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"/> + <button name="Clear" tool_tip="Effacer les lignes de suivi et réinitialiser la carte"/> + <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 7ee3ce957a..381a52ed43 100644 --- a/indra/newview/skins/default/xui/fr/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/fr/inspect_avatar.xml @@ -8,9 +8,19 @@ [AGE] </string> <string name="Details"> - [ACCTTYPE], [PAYMENTINFO] -Profil : [SL_PROFILE] + [SL_PROFILE] </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> <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="Profil" 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 new file mode 100644 index 0000000000..4519c380c5 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/inspect_group.xml @@ -0,0 +1,35 @@ +<?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"> + Groupe privé + </string> + <string name="FreeToJoin"> + Inscription gratuite + </string> + <string name="CostToJoin"> + Inscription : [AMOUNT] L$ + </string> + <string name="YouAreMember"> + Vous êtes membre + </string> + <text name="group_name"> + Groupe grognon des Orignaux Grumpity + </text> + <text name="group_subtitle"> + 123 membres + </text> + <text name="group_details"> + Un groupe chargé de créer une pièce avec un orignal. +Méfiez-vous de l'orignal ! Méfiez-vous ! Et de la mangouste aussi ! + </text> + <text name="group_cost"> + Inscription : 123 L$ + </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/inspect_object.xml b/indra/newview/skins/default/xui/fr/inspect_object.xml new file mode 100644 index 0000000000..e50de400fd --- /dev/null +++ b/indra/newview/skins/default/xui/fr/inspect_object.xml @@ -0,0 +1,48 @@ +<?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"> + Par [CREATOR] + </string> + <string name="CreatorAndOwner"> + par [CREATOR] +propriétaire [OWNER] + </string> + <string name="Price"> + [AMOUNT] L$ + </string> + <string name="PriceFree"> + Gratuit ! + </string> + <string name="Touch"> + Toucher + </string> + <string name="Sit"> + M'asseoir + </string> + <text name="object_name" value="Nom d'objet de test vraiment très long"/> + <text name="object_creator"> + par secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about +owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about + </text> + <text name="price_text"> + 300 000 L$ + </text> + <text name="object_description"> + Cette description d'objet est vraiment très longue : elle compte au moins 80 caractères, voire plus de 120, vraiment très très longue. Who knows, really? + </text> + <text name="object_media_url"> + http://www.superdupertest.com + </text> + <button label="Acheter" name="buy_btn"/> + <button label="Payer" name="pay_btn"/> + <button label="Prendre une copie" name="take_free_copy_btn"/> + <button label="Toucher" name="touch_btn"/> + <button label="M'asseoir" name="sit_btn"/> + <button label="Ouvert" name="open_btn"/> + <icon name="secure_browsing" tool_tip="Navigation sécurisée"/> + <button label="Plus" name="more_info_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/inspect_remote_object.xml b/indra/newview/skins/default/xui/fr/inspect_remote_object.xml new file mode 100644 index 0000000000..6d7cfadc04 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/inspect_remote_object.xml @@ -0,0 +1,25 @@ +<?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_name"> + Nom d'objet de test vraiment très long + </text> + <text name="object_owner_label" width="70"> + Propriétaire : + </text> + <text name="object_owner"> + Longavatarname Johnsonlongstonnammer + </text> + <text name="object_slurl_label"> + Lieu : + </text> + <text name="object_slurl"> + http://slurl.com/Ahern/50/50/50 + </text> + <button label="Carte" name="map_btn"/> + <button label="Ignorer" name="block_btn"/> + <button label="Fermer" name="close_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 0000000000..ccb93f129e --- /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 0000000000..999a1c156c --- /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 8f3dfae86e..3bac25c79b 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 0000000000..289912cd05 --- /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 0000000000..e370e8d3b8 --- /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 new file mode 100644 index 0000000000..3229940980 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Bouton Geste" name="ShowGestureButton"/> + <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_gesture_gear.xml b/indra/newview/skins/default/xui/fr/menu_gesture_gear.xml new file mode 100644 index 0000000000..02d734045a --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Ajouter/Supprimer des Favoris" name="activate"/> + <menu_item_call label="Copier" name="copy_gesture"/> + <menu_item_call label="Coller" name="paste"/> + <menu_item_call label="Copier l'UUID" name="copy_uuid"/> + <menu_item_call label="Enregistrer dans la tenue actuelle" name="save_to_outfit"/> + <menu_item_call label="Éditer" name="edit_gesture"/> + <menu_item_call label="Inspecter" name="inspect"/> +</menu> diff --git a/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml b/indra/newview/skins/default/xui/fr/menu_hide_navbar.xml new file mode 100644 index 0000000000..3a7126fe50 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Afficher la barre de navigation" name="ShowNavbarNavigationPanel"/> + <menu_item_check label="Afficher la barre des Favoris" name="ShowNavbarFavoritesPanel"/> +</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 0000000000..8ef1529e6b --- /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 0000000000..4d9a103058 --- /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_group.xml b/indra/newview/skins/default/xui/fr/menu_imchiclet_group.xml new file mode 100644 index 0000000000..59f97d8b48 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Profil du groupe" name="Show Profile"/> + <menu_item_call label="Afficher la session" name="Chat"/> + <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 new file mode 100644 index 0000000000..ecc8cee413 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="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"/> +</menu> 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 new file mode 100644 index 0000000000..e5746dd4c2 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <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="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"/> + <menu_item_call label="Débogage" name="debug"/> + <menu_item_call label="Situer sur la carte" name="find_on_map"/> + <menu_item_call label="Zoomer en avant" name="zoom_in"/> + <menu_item_call label="Payer" name="pay"/> + <menu_item_call label="Partager" name="share"/> +</menu> diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_object_gear.xml new file mode 100644 index 0000000000..0ecce069bd --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_inspect_object_gear.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Toucher" name="touch"/> + <menu_item_call label="M'asseoir" name="sit"/> + <menu_item_call label="Payer" name="pay"/> + <menu_item_call label="Acheter" name="buy"/> + <menu_item_call label="Prendre" name="take"/> + <menu_item_call label="Prendre une copie" name="take_copy"/> + <menu_item_call label="Ouvrir" name="open"/> + <menu_item_call label="Éditer" name="edit"/> + <menu_item_call label="Porter" name="wear"/> + <menu_item_call label="Signaler" name="report"/> + <menu_item_call label="Ignorer" name="block"/> + <menu_item_call label="Zoomer en avant" name="zoom_in"/> + <menu_item_call label="Supprimer" name="remove"/> + <menu_item_call label="En savoir plus" name="more_info"/> +</menu> diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml new file mode 100644 index 0000000000..d28d36bca7 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Me lever" name="stand_up"/> + <menu_item_call label="Mon apparence" name="my_appearance"/> + <menu_item_call label="Mon profil" name="my_profile"/> + <menu_item_call label="Mes amis" name="my_friends"/> + <menu_item_call label="Mes groupes" name="my_groups"/> +</menu> diff --git a/indra/newview/skins/default/xui/fr/menu_inventory.xml b/indra/newview/skins/default/xui/fr/menu_inventory.xml index 4e2cb04498..2f6f25dc6b 100644 --- a/indra/newview/skins/default/xui/fr/menu_inventory.xml +++ b/indra/newview/skins/default/xui/fr/menu_inventory.xml @@ -20,8 +20,10 @@ <menu_item_call label="Nouvelle veste" name="New Jacket"/> <menu_item_call label="Nouvelle jupe" name="New Skirt"/> <menu_item_call label="Nouveaux gants" name="New Gloves"/> - <menu_item_call label="Nouveau tricot" name="New Undershirt"/> - <menu_item_call label="Nouveaux sous-vêtements" name="New Underpants"/> + <menu_item_call label="Nouveau débardeur" name="New Undershirt"/> + <menu_item_call label="Nouveau caleçon" name="New Underpants"/> + <menu_item_call label="Nouveau masque alpha" name="New Alpha Mask"/> + <menu_item_call label="Nouveau tatouage" name="New Tattoo"/> </menu> <menu label="Nouvelles parties du corps" name="New Body Parts"> <menu_item_call label="Nouvelle silhouette" name="New Shape"/> @@ -38,33 +40,39 @@ <menu_item_call label="Chaussures" name="Shoes"/> <menu_item_call label="Chemise" name="Shirt"/> <menu_item_call label="Jupe" name="Skirt"/> - <menu_item_call label="Sous-vêtements (femme)" name="Underpants"/> - <menu_item_call label="Sous-vêtements (homme)" name="Undershirt"/> + <menu_item_call label="Caleçon" name="Underpants"/> + <menu_item_call label="Débardeur" name="Undershirt"/> </menu> <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"/> <menu_item_call label="Ouvrir" name="Open"/> <menu_item_call label="Propriétés" name="Properties"/> <menu_item_call label="Renommer" name="Rename"/> <menu_item_call label="Copier l'UUID (identifiant universel unique)" name="Copy Asset UUID"/> <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 les objets" name="Take Off Items"/> - <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="Jouer dans le Monde" name="Animation Play"/> + <menu_item_call label="À propos du repère" name="About Landmark"/> + <menu_item_call label="Jouer dans Second Life" name="Animation Play"/> <menu_item_call label="Jouer localement" name="Animation Audition"/> <menu_item_call label="Envoyer un message instantané" name="Send Instant Message"/> <menu_item_call label="Offrir de téléporter..." name="Offer Teleport..."/> <menu_item_call label="Démarrer le chat conférence" name="Conference Chat"/> <menu_item_call label="Activer" name="Activate"/> <menu_item_call label="Désactiver" name="Deactivate"/> + <menu_item_call label="Enregistrer sous" name="Save As"/> <menu_item_call label="Détacher de vous" name="Detach From Yourself"/> <menu_item_call label="Porter" name="Object Wear"/> <menu label="Attacher à" name="Attach To"/> diff --git a/indra/newview/skins/default/xui/fr/menu_inventory_add.xml b/indra/newview/skins/default/xui/fr/menu_inventory_add.xml new file mode 100644 index 0000000000..0e5abdad0a --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_inventory_add.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_inventory_add"> + <menu label="Importer" name="upload"> + <menu_item_call label="Image ([COST] L$)..." name="Upload Image"/> + <menu_item_call label="Son ([COST] L$)..." name="Upload Sound"/> + <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Lot ([COST] L$ par fichier)..." name="Bulk Upload"/> + </menu> + <menu_item_call label="Nouveau dossier" name="New Folder"/> + <menu_item_call label="Nouveau script" name="New Script"/> + <menu_item_call label="Nouvelle note" name="New Note"/> + <menu_item_call label="Nouveau geste" name="New Gesture"/> + <menu label="Nouveaux habits" name="New Clothes"> + <menu_item_call label="Nouvelle chemise" name="New Shirt"/> + <menu_item_call label="Nouveau pantalon" name="New Pants"/> + <menu_item_call label="Nouvelles chaussures" name="New Shoes"/> + <menu_item_call label="Nouvelles chaussettes" name="New Socks"/> + <menu_item_call label="Nouvelle veste" name="New Jacket"/> + <menu_item_call label="Nouvelle jupe" name="New Skirt"/> + <menu_item_call label="Nouveaux gants" name="New Gloves"/> + <menu_item_call label="Nouveaux sous-vêtements (homme)" name="New Undershirt"/> + <menu_item_call label="Nouveaux sous-vêtements (femme)" name="New Underpants"/> + <menu_item_call label="Nouvel alpha" name="New Alpha"/> + <menu_item_call label="Nouveau tatouage" name="New Tattoo"/> + </menu> + <menu label="Nouvelles parties du corps" name="New Body Parts"> + <menu_item_call label="Nouvelle silhouette" name="New Shape"/> + <menu_item_call label="Nouvelle peau" name="New Skin"/> + <menu_item_call label="Nouveaux cheveux" name="New Hair"/> + <menu_item_call label="Nouveaux yeux" name="New Eyes"/> + </menu> +</menu> 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 new file mode 100644 index 0000000000..91bccfd699 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Nouvelle fenêtre d'inventaire" name="new_window"/> + <menu_item_call label="Trier par nom" name="sort_by_name"/> + <menu_item_call label="Trier en commençant par le plus récent" name="sort_by_recent"/> + <menu_item_call label="Afficher les filtres" name="show_filters"/> + <menu_item_call label="Réinitialiser les filtres" name="reset_filters"/> + <menu_item_call label="Fermer tous les dossiers" name="close_folders"/> + <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 0000000000..80cc49aa42 --- /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_landmark.xml b/indra/newview/skins/default/xui/fr/menu_landmark.xml index dfa794960e..2e0cafa227 100644 --- a/indra/newview/skins/default/xui/fr/menu_landmark.xml +++ b/indra/newview/skins/default/xui/fr/menu_landmark.xml @@ -2,5 +2,6 @@ <toggleable_menu name="landmark_overflow_menu"> <menu_item_call label="Copier la SLurl" name="copy"/> <menu_item_call label="Supprimer" name="delete"/> - <menu_item_call label="Créer un Favori" name="pick"/> + <menu_item_call label="Créer une préférence" name="pick"/> + <menu_item_call label="Ajouter à la barre des Favoris" name="add_to_favbar"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml index 212216f16f..fc42b02908 100644 --- a/indra/newview/skins/default/xui/fr/menu_login.xml +++ b/indra/newview/skins/default/xui/fr/menu_login.xml @@ -1,13 +1,32 @@ -<?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="Fichier" name="File"> - <menu_item_call label="Quitter" name="Quit" /> - </menu> - <menu label="Édition" name="Edit"> - <menu_item_call label="Préférences..." name="Preferences..." /> + <menu label="Moi" name="File"> + <menu_item_call label="Préférences" name="Preferences..."/> + <menu_item_call label="Quitter [APP_NAME]" name="Quit"/> </menu> <menu label="Aide" name="Help"> - <menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help" /> - <menu_item_call label="À propos de [APP_NAME]..." name="About Second Life..." /> + <menu_item_call label="Aide de [SECOND_LIFE]" name="Second Life Help"/> + <menu_item_call label="À propos de [APP_NAME]" name="About Second Life"/> + </menu> + <menu label="Débogage" name="Debug"> + <menu label="Éditer" name="Edit"> + <menu_item_call label="Annuler" name="Undo"/> + <menu_item_call label="Refaire" name="Redo"/> + <menu_item_call label="Couper" name="Cut"/> + <menu_item_call label="Copier" name="Copy"/> + <menu_item_call label="Coller" name="Paste"/> + <menu_item_call label="Supprimer" name="Delete"/> + <menu_item_call label="Dupliquer" name="Duplicate"/> + <menu_item_call label="Tout sélectionner" name="Select All"/> + <menu_item_call label="Désélectionner" name="Deselect"/> + </menu> + <menu_item_call label="Afficher les paramètres de débogage" name="Debug Settings"/> + <menu_item_call label="Paramètres de couleurs/interface" name="UI/Color Settings"/> + <menu_item_call label="Outil d'aperçu XUI" name="UI Preview Tool"/> + <menu label="Tests de l'interface" name="UI Tests"/> + <menu_item_call label="Définir la taille de la fenêtre..." name="Set Window Size..."/> + <menu_item_call label="Afficher les conditions d'utilisation" name="TOS"/> + <menu_item_call label="Afficher le message critique" name="Critical"/> + <menu_item_call label="Test du navigateur Web" name="Web Browser Test"/> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/fr/menu_mini_map.xml b/indra/newview/skins/default/xui/fr/menu_mini_map.xml index 219eb4ad4c..a9facb2c30 100644 --- a/indra/newview/skins/default/xui/fr/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/fr/menu_mini_map.xml @@ -3,6 +3,7 @@ <menu_item_call label="Zoom rapproché" name="Zoom Close"/> <menu_item_call label="Zoom moyen" name="Zoom Medium"/> <menu_item_call label="Zoom éloigné" name="Zoom Far"/> + <menu_item_check label="Faire pivoter la carte" name="Rotate Map"/> <menu_item_call label="Arrêter de suivre" name="Stop Tracking"/> <menu_item_call label="Carte du monde" name="World Map"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/menu_navbar.xml b/indra/newview/skins/default/xui/fr/menu_navbar.xml index 1b11dcbb0c..08d810b653 100644 --- a/indra/newview/skins/default/xui/fr/menu_navbar.xml +++ b/indra/newview/skins/default/xui/fr/menu_navbar.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Navbar Menu"> <menu_item_check label="Voir les coordonnées" name="Show Coordinates"/> + <menu_item_check label="Afficher les propriétés de la parcelle" name="Show Parcel Properties"/> <menu_item_call label="Repère" name="Landmark"/> <menu_item_call label="Couper" name="Cut"/> <menu_item_call label="Copier" name="Copy"/> diff --git a/indra/newview/skins/default/xui/fr/menu_nearby_chat.xml b/indra/newview/skins/default/xui/fr/menu_nearby_chat.xml new file mode 100644 index 0000000000..99e22aeff7 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Afficher les personnes près de vous..." name="nearby_people"/> + <menu_item_check label="Afficher le texte ignoré" name="muted_text"/> + <menu_item_check label="Afficher les icônes des Buddy" name="show_buddy_icons"/> + <menu_item_check label="Afficher les noms" name="show_names"/> + <menu_item_check label="Afficher les icônes et les noms" name="show_icons_and_names"/> + <menu_item_call label="Taille de la police" name="font_size"/> +</menu> 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 0000000000..323bfdbf16 --- /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 0000000000..1837be9c5d --- /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="Attacher ▶" name="Object Attach"/> + <context_menu label="Attacher les éléments HUD ▶" name="Object Attach HUD"/> + </context_menu> + <context_menu label="Supprimer ▶" name="Remove"> + <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" name="Pie Object Take"/> + <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_object_icon.xml b/indra/newview/skins/default/xui/fr/menu_object_icon.xml new file mode 100644 index 0000000000..69f8e88a0d --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Profil de l'objet..." name="Object Profile"/> + <menu_item_call label="Ignorer..." name="Block"/> +</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 new file mode 100644 index 0000000000..c8f5b5f1ad --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_participant_list.xml @@ -0,0 +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"/> + <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_friends_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_friends_view_sort.xml new file mode 100644 index 0000000000..5adf8714cf --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Trier par nom" name="sort_name"/> + <menu_item_check label="Trier par statut" name="sort_status"/> + <menu_item_check label="Afficher les icônes des résidents" name="view_icons"/> + <menu_item_call label="Afficher les résidents et les objets ignorés" name="show_blocked_list"/> +</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 0000000000..eb51b4cf7e --- /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_groups_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_groups_view_sort.xml new file mode 100644 index 0000000000..34f949cf2c --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Afficher les icônes des groupes" name="Display Group Icons"/> + <menu_item_call label="Quitter le groupe sélectionné" name="Leave Selected Group"/> +</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 new file mode 100644 index 0000000000..08a97ee403 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_people_nearby.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Avatar Context Menu"> + <menu_item_call label="Voir le profil" name="View Profile"/> + <menu_item_call label="Devenir amis" name="Add Friend"/> + <menu_item_call label="Supprimer cet ami" name="Remove 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="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_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml new file mode 100644 index 0000000000..18ae84a67b --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Multi-Selected People Context Menu"> + <menu_item_call label="Devenir amis" name="Add Friends"/> + <menu_item_call label="Supprimer des amis" name="Remove 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"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml new file mode 100644 index 0000000000..45f97e062e --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Trier par intervenants récents" name="sort_by_recent_speakers"/> + <menu_item_check label="Trier par nom" name="sort_name"/> + <menu_item_check label="Trier par distance" name="sort_distance"/> + <menu_item_check label="Afficher les icônes des résidents" name="view_icons"/> + <menu_item_call label="Afficher les résidents et les objets interdits" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/fr/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_recent_view_sort.xml new file mode 100644 index 0000000000..93b90ae61c --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Trier en commençant par le plus récent" name="sort_most"/> + <menu_item_check label="Trier par nom" name="sort_name"/> + <menu_item_check label="Afficher les icônes des résidents" name="view_icons"/> + <menu_item_call label="Afficher les résidents et les objets ignorés" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/fr/menu_picks_plus.xml b/indra/newview/skins/default/xui/fr/menu_picks_plus.xml new file mode 100644 index 0000000000..a3b4fb4f55 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Nouveau Favori" name="create_pick"/> + <menu_item_call label="Nouvelle petite annonce" name="create_classified"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_place.xml b/indra/newview/skins/default/xui/fr/menu_place.xml index 9928e302a0..beaf37011f 100644 --- a/indra/newview/skins/default/xui/fr/menu_place.xml +++ b/indra/newview/skins/default/xui/fr/menu_place.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <toggleable_menu name="place_overflow_menu"> <menu_item_call label="Enregistrer comme repère" name="landmark"/> - <menu_item_call label="Créer un Favori" name="pick"/> + <menu_item_call label="Créer une préférence" name="pick"/> <menu_item_call label="Acheter un pass" name="pass"/> <menu_item_call label="Éditer" name="edit"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_place_add_button.xml b/indra/newview/skins/default/xui/fr/menu_place_add_button.xml new file mode 100644 index 0000000000..92f9e7719d --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Ajouter un dossier" name="add_folder"/> + <menu_item_call label="Ajouter un repère" name="add_landmark"/> +</menu> diff --git a/indra/newview/skins/default/xui/fr/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/fr/menu_places_gear_folder.xml new file mode 100644 index 0000000000..3570bdec7f --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Ajouter un repère" name="add_landmark"/> + <menu_item_call label="Ajouter un dossier" name="add_folder"/> + <menu_item_call label="Couper" name="cut"/> + <menu_item_call label="Copier" name="copy_folder"/> + <menu_item_call label="Coller" name="paste"/> + <menu_item_call label="Renommer" name="rename"/> + <menu_item_call label="Supprimer" name="delete"/> + <menu_item_call label="Agrandir" name="expand"/> + <menu_item_call label="Réduire" name="collapse"/> + <menu_item_call label="Développer tous les dossiers" name="expand_all"/> + <menu_item_call label="Réduire tous les dossiers" name="collapse_all"/> + <menu_item_check label="Trier par date" name="sort_by_date"/> +</menu> diff --git a/indra/newview/skins/default/xui/fr/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/fr/menu_places_gear_landmark.xml new file mode 100644 index 0000000000..2ad007c142 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Téléporter" name="teleport"/> + <menu_item_call label="Plus d'informations" name="more_info"/> + <menu_item_call label="Voir sur la carte" name="show_on_map"/> + <menu_item_call label="Ajouter un repère" name="add_landmark"/> + <menu_item_call label="Ajouter un dossier" name="add_folder"/> + <menu_item_call label="Couper" name="cut"/> + <menu_item_call label="Copier le repère" name="copy_landmark"/> + <menu_item_call label="Copier la SLurl" name="copy_slurl"/> + <menu_item_call label="Coller" name="paste"/> + <menu_item_call label="Renommer" name="rename"/> + <menu_item_call label="Supprimer" name="delete"/> + <menu_item_call label="Développer tous les dossiers" name="expand_all"/> + <menu_item_call label="Réduire tous les dossiers" name="collapse_all"/> + <menu_item_check label="Trier par date" name="sort_by_date"/> + <menu_item_call label="Créer une préférence" name="create_pick"/> +</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 new file mode 100644 index 0000000000..ab5016465d --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_profile_overflow.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="profile_overflow_menu"> + <menu_item_call label="Payer" name="pay"/> + <menu_item_call label="Partager" name="share"/> + <menu_item_call label="Ignorer" name="block"/> + <menu_item_call label="Ne plus ignorer" name="unblock"/> + <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_teleport_history_gear.xml b/indra/newview/skins/default/xui/fr/menu_teleport_history_gear.xml new file mode 100644 index 0000000000..3dea662cc2 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Développer tous les dossiers" name="Expand all folders"/> + <menu_item_call label="Réduire tous les dossiers" name="Collapse all folders"/> + <menu_item_call label="Effacer l'historique des téléportations" name="Clear Teleport History"/> +</menu> diff --git a/indra/newview/skins/default/xui/fr/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/fr/menu_teleport_history_item.xml new file mode 100644 index 0000000000..fb4582dbce --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Téléporter" name="Teleport"/> + <menu_item_call label="Plus d'informations" name="More Information"/> + <menu_item_call label="Copier dans le presse-papiers" name="CopyToClipboard"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/fr/menu_teleport_history_tab.xml new file mode 100644 index 0000000000..369680985d --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Ouvrir" name="TabOpen"/> + <menu_item_call label="Fermer" name="TabClose"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_text_editor.xml b/indra/newview/skins/default/xui/fr/menu_text_editor.xml new file mode 100644 index 0000000000..b6f429aec9 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Couper" name="Cut"/> + <menu_item_call label="Copier" name="Copy"/> + <menu_item_call label="Coller" name="Paste"/> + <menu_item_call label="Supprimer" name="Delete"/> + <menu_item_call label="Tout sélectionner" name="Select All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_agent.xml b/indra/newview/skins/default/xui/fr/menu_url_agent.xml index 816070cf3a..5ed627fbc3 100644 --- a/indra/newview/skins/default/xui/fr/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_agent.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Voir le profil du résident" name="show_agent"/> - <menu_item_call label="Copier le nom dans le presse-papier" name="url_copy_label"/> - <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/> + <menu_item_call label="Copier le nom dans le presse-papiers" name="url_copy_label"/> + <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_group.xml b/indra/newview/skins/default/xui/fr/menu_url_group.xml index f16a91cf7b..de90c3ff7e 100644 --- a/indra/newview/skins/default/xui/fr/menu_url_group.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_group.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Voir le profil du groupe" name="show_group"/> - <menu_item_call label="Copier le groupe dans le presse-papier" name="url_copy_label"/> - <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/> + <menu_item_call label="Copier le groupe dans le presse-papiers" name="url_copy_label"/> + <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_http.xml b/indra/newview/skins/default/xui/fr/menu_url_http.xml index 15db7900b3..5e96352999 100644 --- a/indra/newview/skins/default/xui/fr/menu_url_http.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_http.xml @@ -3,5 +3,5 @@ <menu_item_call label="Ouvrir la page Web" name="url_open"/> <menu_item_call label="Ouvrir dans un navigateur interne" name="url_open_internal"/> <menu_item_call label="Ouvrir dans un navigateur externe" name="url_open_external"/> - <menu_item_call label="Copier l'URL dans le presse-papier" name="url_copy"/> + <menu_item_call label="Copier l'URL dans le presse-papiers" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_inventory.xml b/indra/newview/skins/default/xui/fr/menu_url_inventory.xml new file mode 100644 index 0000000000..8ab88b4be7 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Afficher l'article d'inventaire" name="show_item"/> + <menu_item_call label="Copier le nom dans le presse-papiers" name="url_copy_label"/> + <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_map.xml b/indra/newview/skins/default/xui/fr/menu_url_map.xml new file mode 100644 index 0000000000..67e6986f5d --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Voir sur la carte" name="show_on_map"/> + <menu_item_call label="Me téléporter à cet endroit" name="teleport_to_location"/> + <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml index 69449538d8..f581c3ef9d 100644 --- a/indra/newview/skins/default/xui/fr/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_objectim.xml @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Afficher les informations sur l'objet" name="show_object"/> - <menu_item_call label="Me téléporter à l'endroit de l'objet" name="teleport_to_object"/> - <menu_item_call label="Copier le nom de l'objet dans le presse-papier" name="url_copy_label"/> - <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/> + <menu_item_call label="Voir sur la carte" name="show_on_map"/> + <menu_item_call label="Me téléporter à l'emplacement de l'objet" name="teleport_to_object"/> + <menu_item_call label="Copier le nom de l'objet dans le presse-papiers" name="url_copy_label"/> + <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_parcel.xml b/indra/newview/skins/default/xui/fr/menu_url_parcel.xml index 7d77b35036..07b0eeca49 100644 --- a/indra/newview/skins/default/xui/fr/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_parcel.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Afficher les informations sur la parcelle" name="show_parcel"/> - <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/> + <menu_item_call label="Voir sur la carte" name="show_on_map"/> + <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_slapp.xml b/indra/newview/skins/default/xui/fr/menu_url_slapp.xml new file mode 100644 index 0000000000..f4b7e212ca --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Exécuter cette commande" name="run_slapp"/> + <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_slurl.xml b/indra/newview/skins/default/xui/fr/menu_url_slurl.xml index 70564a6768..e44943cf15 100644 --- a/indra/newview/skins/default/xui/fr/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_slurl.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Afficher les informations sur ce lieu" name="show_place"/> + <menu_item_call label="Voir sur la carte" name="show_on_map"/> <menu_item_call label="Me téléporter à cet endroit" name="teleport_to_location"/> - <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/> + <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_url_teleport.xml b/indra/newview/skins/default/xui/fr/menu_url_teleport.xml index 4aaaf34408..a5075a2740 100644 --- a/indra/newview/skins/default/xui/fr/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/fr/menu_url_teleport.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Me téléporter à cet endroit." name="teleport"/> - <menu_item_call label="Copier la SLurl dans le presse-papier" name="url_copy"/> + <menu_item_call label="Voir sur la carte" name="show_on_map"/> + <menu_item_call label="Copier la SLurl dans le presse-papiers" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index 532714531b..c54a4341f1 100644 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -1,225 +1,416 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Main Menu"> - <menu name="Me"> + <menu label="Moi" name="Me"> <menu_item_call label="Préférences" 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=fr" /> + <menu_item_call label="Ma Page d'accueil" name="Manage My Account"> + <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=fr"/> </menu_item_call> - </menu> - <menu label="Fichier" name="File"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu label="Importer" name="upload"> - <menu_item_call label="Image ([COST] L$)..." name="Upload Image"/> - <menu_item_call label="Son ([COST] L$)..." name="Upload Sound"/> - <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> - <menu_item_call label="Lot ([COST] L$ par fichier)..." name="Bulk Upload"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Définir les droits par défaut..." name="perm prefs"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Fermer la fenêtre" name="Close Window"/> - <menu_item_call label="Fermer toutes les fenêtres" name="Close All Windows"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Enregistrer la texture sous..." name="Save Texture As..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Prendre une photo" name="Take Snapshot"/> - <menu_item_call label="Enregistrer la photo sur le disque" name="Snapshot to Disk" shortcut="control|shift|X"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Quitter" name="Quit"/> - </menu> - <menu label="Édition" name="Edit"> - <menu_item_call label="Annuler" name="Undo"/> - <menu_item_call label="Recommencer" name="Redo"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Couper" name="Cut"/> - <menu_item_call label="Copier" name="Copy"/> - <menu_item_call label="Coller" name="Paste"/> - <menu_item_call label="Supprimer" name="Delete"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Rechercher..." name="Search..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Tout sélectionner" name="Select All"/> - <menu_item_call label="Désélectionner" name="Deselect"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Dupliquer" name="Duplicate"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu label="Attacher l'objet" name="Attach Object"/> - <menu label="Détacher l'objet" name="Detach Object"/> - <menu label="Enlever mes habits" name="Take Off Clothing"> - <menu_item_call label="Chemise" name="Shirt"/> - <menu_item_call label="Pantalon" name="Pants"/> - <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="Tricot" name="Menu Undershirt"/> - <menu_item_call label="Sous-vêtements" name="Menu Underpants"/> - <menu_item_call label="Jupe" name="Skirt"/> - <menu_item_call label="Tous les habits" name="All Clothes"/> + <menu_item_call label="Acheter des L$" name="Buy and Sell L$"/> + <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_check label="Mon inventaire" name="ShowSidetrayInventory"/> + <menu_item_check label="Mes gestes" name="Gestures"/> + <menu label="Mon statut" name="Status"> + <menu_item_call label="Absent" name="Set Away"/> + <menu_item_call label="Occupé" name="Set Busy"/> </menu> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Gestes..." name="Gestures..."/> - <menu_item_call label="Profil..." name="Profile..."/> - <menu_item_call label="Apparence..." name="Appearance..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_check label="Amis..." name="Friends..."/> - <menu_item_call label="Groupes..." name="Groups..."/> - <menu_item_separator label="-----------" name="separator8"/> - <menu_item_call label="Préférences..." name="Preferences..."/> + <menu_item_call label="Demander le statut Admin" name="Request Admin Options"/> + <menu_item_call label="Quitter le statut Admin" name="Leave Admin Options"/> + <menu_item_call label="Quitter [APP_NAME]" name="Quit"/> </menu> - <menu label="Affichage" name="View"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_call label="Vue subjective" name="Mouselook"/> - <menu_item_check label="Construire" name="Build"/> - <menu_item_check label="Vue au joystick" name="Joystick Flycam"/> - <menu_item_call label="Réinitialiser l'affichage" name="Reset View"/> - <menu_item_call label="Regarder le dernier intervenant" name="Look at Last Chatter" shortcut="alt|V"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Barre d'outils" name="Toolbar"/> - <menu_item_check label="Chat local" name="Chat History"/> - <menu_item_check label="Communiquer" name="Instant Message"/> - <menu_item_check label="Inventaire" name="Inventory"/> - <menu_item_check label="Intervenants actifs" name="Active Speakers"/> - <menu_item_check label="Liste des ignorés" name="Mute List"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Contrôles de la caméra" name="Camera Controls"/> - <menu_item_check label="Contrôle des déplacements" name="Movement Controls"/> - <menu_item_check label="Carte du monde" name="World Map"/> - <menu_item_check label="Mini-carte" name="Mini-Map"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Statistiques" name="Statistics Bar"/> - <menu_item_check label="Limites des parcelles" name="Property Lines"/> - <menu_item_check label="Barrières d'interdiction d'accès" name="Banlines"/> - <menu_item_check label="Propriétaires fonciers" name="Land Owners"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu label="Infobulles" name="Hover Tips"> - <menu_item_check label="Affichez les infobulles" name="Show Tips"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Infobulles des terrains" name="Land Tips"/> - <menu_item_check label="Infobulles de tous les objets" name="Tips On All Objects"/> - </menu> - <menu_item_check label="Voir les objets invisibles" name="Highlight Transparent"/> - <menu_item_check label="Balises" name="beacons"/> - <menu_item_check label="Masquer les particules" name="Hide Particles"/> - <menu_item_check label="Afficher les éléments HUD" name="Show HUD Attachments"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Zoomer" name="Zoom In"/> - <menu_item_call label="Zoom par défaut" name="Zoom Default"/> - <menu_item_call label="Zoomer en arrière" name="Zoom Out"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Activer/Quitter le plein écran" name="Toggle Fullscreen"/> - <menu_item_call label="Taille de l'interface par défaut" name="Set UI Size to Default"/> + <menu label="Communiquer" name="Communicate"> + <menu_item_call label="Mes amis" name="My Friends"/> + <menu_item_call label="Mes groupes" name="My Groups"/> + <menu_item_check label="Chat près de moi" name="Nearby Chat"/> + <menu_item_call label="Personnes près de moi" name="Active Speakers"/> </menu> <menu label="Monde" name="World"> - <menu_item_call label="Chat" name="Chat"/> - <menu_item_check label="Toujours courir" name="Always Run"/> - <menu_item_check label="Voler" name="Fly" shortcut="F"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Créer un repère ici" name="Create Landmark Here"/> - <menu_item_call label="Définir comme domicile" name="Set Home to Here"/> - <menu_item_separator label="-----------" name="separator2"/> + <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 du terrain" 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_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_item_call label="Me téléporter chez moi" name="Teleport Home"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Me mettre absent(e)" name="Set Away"/> - <menu_item_call label="Me mettre occupé(e)" name="Set Busy"/> - <menu_item_call label="Arrêter d'animer mon avatar" name="Stop Animating My Avatar"/> - <menu_item_call label="Reprendre le contrôle" name="Release Keys"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Historique de mon compte..." name="Account History..."> - <menu_item_call.on_click name="AccountHistory_url" userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php?lang=fr"/> - </menu_item_call> - <menu_item_call label="Gérer mon compte..." name="Manage My Account..."> - <menu_item_call.on_click name="ManageMyAccount_url" userdata="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=fr"/> - </menu_item_call> - <menu_item_call label="Acheter des L$..." name="Buy and Sell L$..."/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Mes terrains..." name="My Land..."/> - <menu_item_call label="À propos du terrain..." name="About Land..."/> - <menu_item_call label="Acheter le terrain..." name="Buy Land..."/> - <menu_item_call label="Région et domaine..." name="Region/Estate..."/> - <menu_item_separator label="-----------" name="separator6"/> - <menu label="Environnement" name="Environment Settings"> + <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="Revenir aux options par défaut" name="Revert to Region Default"/> - <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Heure du domaine" name="Revert to Region Default"/> <menu_item_call label="Éditeur d'environnement" name="Environment Editor"/> </menu> </menu> - <menu label="Outils" name="Tools"> - <menu label="Sélectionner un outil" name="Select Tool"> - <menu_item_call label="Mise au point" name="Focus"/> - <menu_item_call label="Déplacer" name="Move"/> - <menu_item_call label="Éditer" name="Edit"/> - <menu_item_call label="Créer" name="Create"/> - <menu_item_call label="Terrain" name="Land"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Sélectionner mes objets uniquement" name="Select Only My Objects"/> - <menu_item_check label="Sélectionner les objets déplaçables uniquement" name="Select Only Movable Objects"/> - <menu_item_check label="Sélectionner en entourant" name="Select By Surrounding"/> - <menu_item_check label="Afficher les parties cachées de la sélection" name="Show Hidden Selection"/> - <menu_item_check label="Afficher la sphère de lumière de la sélection" name="Show Light Radius for Selection"/> - <menu_item_check label="Afficher le faisceau de sélection" name="Show Selection Beam"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Aligner sur la grille" name="Snap to Grid"/> - <menu_item_call label="Aligner sur les axes XY de la grille" name="Snap Object XY to Grid"/> - <menu_item_call label="Utiliser la sélection pour la grille" name="Use Selection for Grid"/> - <menu_item_call label="Options de la grille..." name="Grid Options..."/> - <menu_item_separator label="-----------" name="separator3"/> + <menu label="Construire" name="BuildTools"> + <menu_item_check label="Construire" name="Show Build Tools"/> + <menu label="Sélectionner l'outil de construction" name="Select Tool"> + <menu_item_call label="Outil de zoom" name="Focus"/> + <menu_item_call label="Outil de déplacement" name="Move"/> + <menu_item_call label="Outil de modification" name="Edit"/> + <menu_item_call label="Outil de création" name="Create"/> + <menu_item_call label="Outil Terrain" name="Land"/> + </menu> + <menu label="Édition" name="Edit"> + <menu_item_call label="Annuler" name="Undo"/> + <menu_item_call label="Refaire" name="Redo"/> + <menu_item_call label="Couper" name="Cut"/> + <menu_item_call label="Copier" name="Copy"/> + <menu_item_call label="Coller" name="Paste"/> + <menu_item_call label="Supprimer" name="Delete"/> + <menu_item_call label="Dupliquer" name="Duplicate"/> + <menu_item_call label="Tout sélectionner" name="Select All"/> + <menu_item_call label="Désélectionner" name="Deselect"/> + </menu> + <menu_item_call label="Lien" name="Link"/> + <menu_item_call label="Annuler le lien" name="Unlink"/> <menu_item_check label="Modifier les parties liées" name="Edit Linked Parts"/> - <menu_item_call label="Lier" name="Link"/> - <menu_item_call label="Délier" name="Unlink"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Mise au point sur la sélection" name="Focus on Selection"/> - <menu_item_call label="Zoom sur la sélection" name="Zoom to Selection"/> - <menu_item_call label="Acheter l'objet" name="Menu Object Take"> - <menu_item_call.on_enable parameter="Acheter,Prendre" name="EnableBuyOrTake"/> - </menu_item_call> - <menu_item_call label="Prendre une copie" name="Take Copy"/> - <menu_item_call label="Remplacer l'objet dans le contenu de l'objet" name="Save Object Back to Object Contents"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Afficher la fenêtre d'alertes/erreurs de script" name="Show Script Warning/Error Window"/> - <menu label="Recompiler les scripts dans la sélection" name="Recompile Scripts in Selection"> - <menu_item_call label="Mono" name="Mono"/> - <menu_item_call label="LSL" name="LSL"/> - </menu> - <menu_item_call label="Réinitialiser les scripts dans la sélection" name="Reset Scripts in Selection"/> - <menu_item_call label="Activer les scripts dans la sélection" name="Set Scripts to Running in Selection"/> - <menu_item_call label="Désactiver les scripts dans la sélection" name="Set Scripts to Not Running in Selection"/> + <menu_item_call label="Point central sur la sélection" name="Focus on Selection"/> + <menu_item_call label="Zoomer sur la sélection" name="Zoom to Selection"/> + <menu label="Objet" name="Object"> + <menu_item_call label="Acheter" name="Menu Object Take"/> + <menu_item_call label="Prendre une copie" name="Take Copy"/> + <menu_item_call label="Enregistrer dans mon inventaire" name="Save Object Back to My Inventory"/> + <menu_item_call label="Enregistrer dans le contenu des objets" name="Save Object Back to Object Contents"/> + </menu> + <menu label="Scripts" name="Scripts"> + <menu_item_call label="Recompiler les scripts (Mono)" name="Mono"/> + <menu_item_call label="Recompiler les scripts (LSL)" name="LSL"/> + <menu_item_call label="Réinitialiser les scripts" name="Reset Scripts"/> + <menu_item_call label="Définir les scripts sur Exécution" name="Set Scripts to Running"/> + <menu_item_call label="Définir les scripts sur Pas d'exécution" name="Set Scripts to Not Running"/> + </menu> + <menu label="Options" name="Options"> + <menu_item_call label="Définir les droits de chargement par défaut" name="perm prefs"/> + <menu_item_check label="Afficher les droits avancés" name="DebugPermissions"/> + <menu_item_check label="Sélectionner mes objets uniquement" name="Select Only My Objects"/> + <menu_item_check label="Sélectionner les objets déplaçables uniquement" name="Select Only Movable Objects"/> + <menu_item_check label="Sélectionner en entourant" name="Select By Surrounding"/> + <menu_item_check label="Afficher la sélection masquée" name="Show Hidden Selection"/> + <menu_item_check label="Afficher le rayon lumineux pour la sélection" name="Show Light Radius for Selection"/> + <menu_item_check label="Afficher le faisceau de sélection lumineux" name="Show Selection Beam"/> + <menu_item_check label="Fixer sur la grille" name="Snap to Grid"/> + <menu_item_call label="Fixer les coordonnées XY de l'objet sur la grille" name="Snap Object XY to Grid"/> + <menu_item_call label="Utiliser la sélection pour la grille" name="Use Selection for Grid"/> + <menu_item_call label="Options de la grille" name="Grid Options"/> + </menu> + <menu label="Sélectionner les parties liées" name="Select Linked Parts"> + <menu_item_call label="Sélectionner la partie suivante" name="Select Next Part"/> + <menu_item_call label="Sélectionner la partie précédente" name="Select Previous Part"/> + <menu_item_call label="Inclure la partie suivante" name="Include Next Part"/> + <menu_item_call label="Inclure la partie précédente" name="Include Previous Part"/> + </menu> </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_separator label="-----------" name="separator"/> - <menu_item_call label="Blog officiel..." name="Official Linden Blog..."/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Aide sur le LSL..." name="Scripting Portal..."> - <menu_item_call.on_click name="ScriptingPortal_url" userdata="WebLaunchLSLWiki,http://wiki.secondlife.com/wiki/LSL_Portal/fr" /> - </menu_item_call> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Signaler une infraction..." name="Report Abuse..."/> - <menu_item_call label="Collisions, coups et bousculades…" name="Bumps, Pushes &amp; Hits..."/> - <menu_item_call label="Mesure du lag" name="Lag Meter"/> - <menu_item_separator label="-----------" name="separator7"/> - <menu label="Signaler des bugs" name="Bug Reporting"> - <menu_item_call label="Ouvrir un JIRA..." name="Public Issue Tracker..."/> - <menu_item_call label="Comment utiliser JIRA ?" name="Publc Issue Tracker Help..."> - <menu_item_call.on_click name="PublicIssueTrackerHelp_url" userdata="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker/fr" /> - </menu_item_call> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_call label="Comment signaler des bugs ?" name="Bug Reporing 101..."> - <menu_item_call.on_click name="BugReporting101_url" userdata="WebLaunchBugReport101,http://wiki.secondlife.com/wiki/Bug_Reporting_101/fr"/> - </menu_item_call> - <menu_item_call label="Comment signaler un problème de sécurité ?" name="Security Issues..."> - <menu_item_call.on_click name="SecurityIssues_url" userdata="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues/fr"/> - </menu_item_call> - <menu_item_call label="Wiki Assurance Qualité…" name="QA Wiki..."/> - <menu_item_separator label="-----------" name="separator9"/> - <menu_item_call label="Signaler un bug..." name="Report Bug..."/> - </menu> - <menu_item_call label="À propos de [APP_NAME]..." name="About Second Life..."/> + <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_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 label="Outils de performance" name="Performance Tools"> + <menu_item_call label="Mesure du lag" name="Lag Meter"/> + <menu_item_check label="Barre de statistiques" name="Statistics Bar"/> + <menu_item_check label="Afficher le coût de rendu de l'avatar" name="Avatar Rendering Cost"/> + </menu> + <menu label="Surbrillance et visibilité" name="Highlighting and Visibility"> + <menu_item_check label="Balise animée" name="Cheesy Beacon"/> + <menu_item_check label="Cacher les particules" name="Hide Particles"/> + <menu_item_check label="Masquer la sélection" name="Hide Selected"/> + <menu_item_check label="Mettre la transparence en surbrillance" name="Highlight Transparent"/> + <menu_item_check label="Afficher les éléments HUD" name="Show HUD Attachments"/> + <menu_item_check label="Afficher le réticule de la vue subjective" name="ShowCrosshairs"/> + <menu_item_check label="Afficher les info-bulles de terrain" name="Land Tips"/> + </menu> + <menu label="Types de rendu" name="Rendering Types"> + <menu_item_check label="Simple" name="Simple"/> + <menu_item_check label="Alpha" name="Alpha"/> + <menu_item_check label="Arbre" name="Tree"/> + <menu_item_check label="Avatars" name="Character"/> + <menu_item_check label="SurfacePath" name="Surface"/> + <menu_item_check label="Ciel" name="Sky"/> + <menu_item_check label="Eau" name="Water"/> + <menu_item_check label="Sol" name="Ground"/> + <menu_item_check label="Volume" name="Volume"/> + <menu_item_check label="Herbe" name="Grass"/> + <menu_item_check label="Nuages" name="Clouds"/> + <menu_item_check label="Particules" name="Particles"/> + <menu_item_check label="Placage de relief" name="Bump"/> + </menu> + <menu label="Fonctionnalités de rendu" name="Rendering Features"> + <menu_item_check label="Interface" name="UI"/> + <menu_item_check label="Sélection" name="Selected"/> + <menu_item_check label="En surbrillance" name="Highlighted"/> + <menu_item_check label="Textures dynamiques" name="Dynamic Textures"/> + <menu_item_check label="Ombres des pieds" name="Foot Shadows"/> + <menu_item_check label="Brouillard" name="Fog"/> + <menu_item_check label="Tester FRInfo" name="Test FRInfo"/> + <menu_item_check label="Objets flexibles" name="Flexible Objects"/> + </menu> + <menu_item_check label="Exécuter plusieurs threads" name="Run Multiple Threads"/> + <menu_item_call label="Effacer le cache du groupe" name="ClearGroupCache"/> + <menu_item_check label="Effet de lissage de la souris" name="Mouse Smoothing"/> + <menu label="Raccourcis" name="Shortcuts"> + <menu_item_call label="Image ([COST] L$)..." name="Upload Image"/> + <menu_item_check label="Rechercher" name="Search"/> + <menu_item_call label="Relâcher les touches" name="Release Keys"/> + <menu_item_call label="Taille de l'interface par défaut" name="Set UI Size to Default"/> + <menu_item_check label="Toujours courir" name="Always Run"/> + <menu_item_check label="Voler" name="Fly"/> + <menu_item_call label="Fermer la fenêtre" name="Close Window"/> + <menu_item_call label="Fermer toutes les fenêtres" name="Close All Windows"/> + <menu_item_call label="Photo sur disque" name="Snapshot to Disk"/> + <menu_item_call label="Vue subjective" name="Mouselook"/> + <menu_item_check label="Joystick Flycam" name="Joystick Flycam"/> + <menu_item_call label="Réinitialiser la vue" name="Reset View"/> + <menu_item_call label="Regarder la dernière conversation" name="Look at Last Chatter"/> + <menu label="Sélectionner l'outil de construction" name="Select Tool"> + <menu_item_call label="Outil de zoom" name="Focus"/> + <menu_item_call label="Outil de déplacement" name="Move"/> + <menu_item_call label="Outil de modification" name="Edit"/> + <menu_item_call label="Outil de création" name="Create"/> + <menu_item_call label="Outil Terrain" name="Land"/> + </menu> + <menu_item_call label="Zoomer en avant" name="Zoom In"/> + <menu_item_call label="Zoom par défaut" name="Zoom Default"/> + <menu_item_call label="Zoomer en arrière" name="Zoom Out"/> + <menu_item_call label="Activer/Quitter le plein écran" name="Toggle Fullscreen"/> + </menu> + <menu_item_call label="Afficher les paramètres de débogage" name="Debug Settings"/> + <menu_item_check label="Afficher le menu Développeurs" name="Debug Mode"/> + </menu> + <menu label="Développeurs" name="Develop"> + <menu label="Consoles" name="Consoles"> + <menu_item_check label="Console de textures" name="Texture Console"/> + <menu_item_check label="Console de débogage" name="Debug Console"/> + <menu_item_call label="Console de notifications" name="Notifications"/> + <menu_item_check label="Console de tailles de textures" name="Texture Size"/> + <menu_item_check label="Console des catégories de textures" name="Texture Category"/> + <menu_item_check label="Chronos" name="Fast Timers"/> + <menu_item_check label="Mémoire" name="Memory"/> + <menu_item_call label="Infos de région vers la console de débogage" name="Region Info to Debug Console"/> + <menu_item_call label="Infos de groupe vers la console de débogage" name="Group Info to Debug Console"/> + <menu_item_call label="Infos de capacités vers la console de débogage" name="Capabilities Info to Debug Console"/> + <menu_item_check label="Caméra" name="Camera"/> + <menu_item_check label="Vent" name="Wind"/> + <menu_item_check label="Angle de champ" name="FOV"/> + <menu_item_check label="Badge" name="Badge"/> + </menu> + <menu label="Afficher les infos" name="Display Info"> + <menu_item_check label="Afficher l'heure" name="Show Time"/> + <menu_item_check label="Afficher les infos de rendu" name="Show Render Info"/> + <menu_item_check label="Afficher les matrices" name="Show Matrices"/> + <menu_item_check label="Afficher la couleur sous le curseur" name="Show Color Under Cursor"/> + <menu_item_check label="Afficher les mises à jour des objets" name="Show Updates"/> + </menu> + <menu label="Forcer une erreur" name="Force Errors"> + <menu_item_call label="Forcer le point de rupture" name="Force Breakpoint"/> + <menu_item_call label="Forcer LLError et plantage" name="Force LLError And Crash"/> + <menu_item_call label="Forcer un mauvais accès à la mémoire" name="Force Bad Memory Access"/> + <menu_item_call label="Forcer une boucle infinie" name="Force Infinite Loop"/> + <menu_item_call label="Forcer le plantage du driver" name="Force Driver Carsh"/> + <menu_item_call label="Forcer une exception logicielle" name="Force Software Exception"/> + <menu_item_call label="Forcer la déconnexion du client" name="Force Disconnect Viewer"/> + <menu_item_call label="Simuler une fuite de mémoire" name="Memory Leaking Simulation"/> + </menu> + <menu label="Tests de rendu" name="Render Tests"> + <menu_item_check label="Décalage de la caméra" name="Camera Offset"/> + <menu_item_check label="Taux de défilement aléatoire" name="Randomize Framerate"/> + <menu_item_check label="Cadre lent périodique" name="Periodic Slow Frame"/> + <menu_item_check label="Test cadre" name="Frame Test"/> + </menu> + <menu label="Métadonnées de rendu" name="Render Metadata"> + <menu_item_check label="Cadres" name="Bounding Boxes"/> + <menu_item_check label="Octree" name="Octree"/> + <menu_item_check label="Shadow Frusta" name="Shadow Frusta"/> + <menu_item_check label="Occlusion" name="Occlusion"/> + <menu_item_check label="Lots de rendu" name="Render Batches"/> + <menu_item_check label="Texture Anim" name="Texture Anim"/> + <menu_item_check label="Priorité de la texture" name="Texture Priority"/> + <menu_item_check label="Zone de texture" name="Texture Area"/> + <menu_item_check label="Zone de face" name="Face Area"/> + <menu_item_check label="Lumières" name="Lights"/> + <menu_item_check label="Squelette de collision" name="Collision Skeleton"/> + <menu_item_check label="Rayons" name="Raycast"/> + </menu> + <menu label="Rendu" name="Rendering"> + <menu_item_check label="Axes" name="Axes"/> + <menu_item_check label="Tangente" name="Tangent Basis"/> + <menu_item_call label="Base des infos de la texture sélectionnée" name="Selected Texture Info Basis"/> + <menu_item_check label="Filaire" name="Wireframe"/> + <menu_item_check label="Occlusion objet-objet" name="Object-Object Occlusion"/> + <menu_item_check label="Objets de mémoire vidéo" name="Framebuffer Objects"/> + <menu_item_check label="Rendu différé" name="Deferred Rendering"/> + <menu_item_check label="Illumination globale" name="Global Illumination"/> + <menu_item_check label="Débogage GL" name="Debug GL"/> + <menu_item_check label="Débogage pipeline" name="Debug Pipeline"/> + <menu_item_check label="Alpha rapide" name="Fast Alpha"/> + <menu_item_check label="Textures d'animation" name="Animation Textures"/> + <menu_item_check label="Désactiver les textures" name="Disable Textures"/> + <menu_item_check label="Textures pleine résolution" name="Rull Res Textures"/> + <menu_item_check label="Audit Textures" name="Audit Textures"/> + <menu_item_check label="Atlas des textures" name="Texture Atlas"/> + <menu_item_check label="Rendu des lumières jointes" name="Render Attached Lights"/> + <menu_item_check label="Rendu des particules jointes" name="Render Attached Particles"/> + <menu_item_check label="Hover Glow Objects" name="Hover Glow Objects"/> + </menu> + <menu label="Réseau" name="Network"> + <menu_item_check label="Pauser l'avatar" name="AgentPause"/> + <menu_item_call label="Activer le journal des messages" name="Enable Message Log"/> + <menu_item_call label="Désactiver le journal des messages" name="Disable Message Log"/> + <menu_item_check label="Velocity Interpolate Objects" name="Velocity Interpolate Objects"/> + <menu_item_check label="Interpolation ping des positions des objets" name="Ping Interpolate Object Positions"/> + <menu_item_call label="Abandonner un paquet" name="Drop a Packet"/> + </menu> + <menu_item_call label="Dump caméra scriptée" name="Dump Scripted Camera"/> + <menu_item_call label="Collisions, coups et bousculades" name="Bumps, Pushes &amp; Hits"/> + <menu label="Enregistreur" name="Recorder"> + <menu_item_call label="Commencer la lecture" name="Start Playback"/> + <menu_item_call label="Arrêter la lecture" name="Stop Playback"/> + <menu_item_check label="Lecture en boucle" name="Loop Playback"/> + <menu_item_call label="Commencer l'enregistrement" name="Start Record"/> + <menu_item_call label="Arrêter l'enregistrement" name="Stop Record"/> + </menu> + <menu label="Monde" name="World"> + <menu_item_check label="Sim Sun Override" name="Sim Sun Override"/> + <menu_item_check label="Balise animée" name="Cheesy Beacon"/> + <menu_item_check label="Météo fixe" name="Fixed Weather"/> + <menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/> + </menu> + <menu label="Interface" name="UI"> + <menu_item_call label="Test du navigateur Web" name="Web Browser Test"/> + <menu_item_call label="Dump SelectMgr" name="Dump SelectMgr"/> + <menu_item_call label="Dump inventaire" name="Dump Inventory"/> + <menu_item_call label="Dump Timers" name="Dump Timers"/> + <menu_item_call label="Dump Focus Holder" name="Dump Focus Holder"/> + <menu_item_call label="Imprimer les infos sur l'objet sélectionné" name="Print Selected Object Info"/> + <menu_item_call label="Imprimer les infos sur l'avatar" name="Print Agent Info"/> + <menu_item_call label="Statistiques de mémoire" name="Memory Stats"/> + <menu_item_check label="Double-ClickAuto-Pilot" name="Double-ClickAuto-Pilot"/> + <menu_item_check label="Débogage SelectMgr" name="Debug SelectMgr"/> + <menu_item_check label="Débogage clics" name="Debug Clicks"/> + <menu_item_check label="Débogage des vues" name="Debug Views"/> + <menu_item_check label="Débogage des info-bulles de noms" name="Debug Name Tooltips"/> + <menu_item_check label="Débogage des événements de souris" name="Debug Mouse Events"/> + <menu_item_check label="Débogage touches" name="Debug Keys"/> + <menu_item_check label="Débogage WindowProc" name="Debug WindowProc"/> + </menu> + <menu label="XUI" name="XUI"> + <menu_item_call label="Recharger les paramètres de couleurs" name="Reload Color Settings"/> + <menu_item_call label="Afficher le test de police" name="Show Font Test"/> + <menu_item_call label="Charger à partir de XML" name="Load from XML"/> + <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> + <menu label="Avatar" name="Character"> + <menu label="Récupérer la texture fixée" name="Grab Baked Texture"> + <menu_item_call label="Iris" name="Iris"/> + <menu_item_call label="Tête" name="Head"/> + <menu_item_call label="Haut du corps" name="Upper Body"/> + <menu_item_call label="Bas du corps" name="Lower Body"/> + <menu_item_call label="Jupe" name="Skirt"/> + </menu> + <menu label="Tests personnages" name="Character Tests"> + <menu_item_call label="Apparence dans XML" name="Appearance To XML"/> + <menu_item_call label="Basculer la géométrie des personnages" name="Toggle Character Geometry"/> + <menu_item_call label="Test homme" name="Test Male"/> + <menu_item_call label="Test femme" name="Test Female"/> + <menu_item_call label="Activer/désactiver PG" name="Toggle PG"/> + <menu_item_check label="Autoriser la sélection de l'avatar" name="Allow Select Avatar"/> + </menu> + <menu_item_call label="Forcer les paramètres par défaut" name="Force Params to Default"/> + <menu_item_check label="Infos sur l'animation" name="Animation Info"/> + <menu_item_check label="Animations au ralenti" name="Slow Motion Animations"/> + <menu_item_check label="Afficher la direction du regard" name="Show Look At"/> + <menu_item_check label="Afficher la direction du pointeur" name="Show Point At"/> + <menu_item_check label="Débogages des mises à jour" name="Debug Joint Updates"/> + <menu_item_check label="Désactiver LOD" name="Disable LOD"/> + <menu_item_check label="Debogage Character Vis" name="Debug Character Vis"/> + <menu_item_check label="Afficher le squelette de collision" name="Show Collision Skeleton"/> + <menu_item_check label="Afficher la cible de l'avatar" name="Display Agent Target"/> + --> + <menu_item_call label="Dump Attachments" name="Dump Attachments"/> + <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"/> + <menu_item_check label="Afficher le menu Admin" name="View Admin Options"/> + <menu_item_call label="Demander le statut Admin" name="Request Admin Options"/> + <menu_item_call label="Quitter le statut Admin" name="Leave Admin Options"/> + </menu> + <menu label="Admin" name="Admin"> + <menu label="Object"> + <menu_item_call label="Prendre une copie" name="Take Copy"/> + <menu_item_call label="Forcer le propriétaire sur moi" name="Force Owner To Me"/> + <menu_item_call label="Forcer la permission du propriétaire" name="Force Owner Permissive"/> + <menu_item_call label="Supprimer" name="Delete"/> + <menu_item_call label="Verrouiller" name="Lock"/> + <menu_item_call label="Obtenir les ID d'actifs" name="Get Assets IDs"/> + </menu> + <menu label="Parcelle" name="Parcel"> + <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> + <menu label="Région" name="Region"> + <menu_item_call label="Dump Temp Asset Data" name="Dump Temp Asset Data"/> + <menu_item_call label="Enregistrer l'état de la région" name="Save Region State"/> + </menu> + <menu_item_call label="Outils divins" name="God Tools"/> + </menu> + <menu label="Admin" name="Deprecated"> + <menu label="Joindre l'objet" name="Attach Object"/> + <menu label="Détacher l'objet" name="Detach Object"/> + <menu label="Me déshabiller" name="Take Off Clothing"> + <menu_item_call label="Chemise" name="Shirt"/> + <menu_item_call label="Pantalon" name="Pants"/> + <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="Menu Undershirt"/> + <menu_item_call label="Sous-vêtements (femme)" name="Menu Underpants"/> + <menu_item_call label="Jupe" name="Skirt"/> + <menu_item_call label="Alpha" name="Alpha"/> + <menu_item_call label="Tatouage" name="Tattoo"/> + <menu_item_call label="Tous les habits" name="All Clothes"/> + </menu> + <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"/> + <menu label="Signaler des bugs" name="Bug Reporting"> + <menu_item_call label="JIRA" name="Public Issue Tracker"/> + <menu_item_call label="Aide du JIRA" name="Publc Issue Tracker Help"/> + <menu_item_call label="Comment signaler des bugs" name="Bug Reporing 101"/> + <menu_item_call label="Problèmes de sécurité" name="Security Issues"/> + <menu_item_call label="Wiki sur l'Assurance Qualité" name="QA Wiki"/> + </menu> + </menu> </menu> </menu_bar> 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 0000000000..fc5e7ad659 --- /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 0000000000..fc5e7ad659 --- /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 558b04d68e..28f9f9e52c 100644 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -11,18 +11,29 @@ </global> <template name="okbutton"> <form> - <button name="OK" text="$yestext"/> + <button name="OK_okbutton" text="$yestext"/> + </form> + </template> + <template name="okignore"> + <form> + <button name="OK_okignore" text="$yestext"/> </form> </template> - <template name="okignore"/> <template name="okcancelbuttons"> <form> - <button name="Cancel" text="$notext"/> + <button name="OK_okcancelbuttons" text="$yestext"/> + <button name="Cancel_okcancelbuttons" text="$notext"/> + </form> + </template> + <template name="okcancelignore"> + <form> + <button name="OK_okcancelignore" text="$yestext"/> + <button name="Cancel_okcancelignore" text="$notext"/> </form> </template> - <template name="okcancelignore"/> <template name="okhelpbuttons"> <form> + <button name="OK_okhelpbuttons" text="$yestext"/> <button name="Help" text="$helptext"/> </form> </template> @@ -30,12 +41,13 @@ <form> <button name="Yes" text="$yestext"/> <button name="No" text="$notext"/> + <button name="Cancel_yesnocancelbuttons" text="$canceltext"/> </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"> @@ -56,7 +68,7 @@ Détails de l'erreur : L'alerte, appelée '[_NAME]' est int <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/> </notification> <notification name="BadInstallation"> - Une erreur est survenue lors de la mise à jour de [APP_NAME]. Veuillez télécharger la dernière version su client. http://get.secondlife.com + Une erreur est survenue lors de la mise à jour de [APP_NAME]. Veuillez [http://get.secondlife.com télécharger la dernière version] du client. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LoginFailedNoNetwork"> @@ -93,14 +105,18 @@ Veuillez ne sélectionner qu'un seul objet. Enregistrer tous les changements dans les habits/parties du corps ? <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Tout enregistrer"/> </notification> + <notification name="FriendsAndGroupsOnly"> + Les résidents qui ne sont pas vos amis ne sauront pas que vous avez choisi d'ignorer leurs appels et leurs messages instantanés. + <usetemplate name="okbutton" yestext="Oui"/> + </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,11 +165,21 @@ 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="JoinGroupCanAfford"> Rejoindre ce groupe coûte [COST] L$. Voulez-vous continuer ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Rejoindre"/> </notification> + <notification name="JoinGroupNoCost"> + Vous vous apprêtez à rejoindre le groupe [NAME]. +Voulez-vous continuer ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Fusionner"/> + </notification> <notification name="JoinGroupCannotAfford"> Rejoindre ce groupe coûte [COST] L$. Vous n'avez pas suffisamment de L$ pour rejoindre ce groupe. @@ -178,10 +204,10 @@ Votre prix de vente sera de [SALE_PRICE] L$ et la vente sera disponible à [NAME <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> <notification name="ConfirmLandSaleToAnyoneChange"> - Attention : en cliquant sur Vendre à n'importe qui, vous rendez votre terrain disponible à toute la communauté de [SECOND_LIFE], même aux personnes qui ne sont pas dans cette région. + ATTENTION : en cliquant sur Vendre à n'importe qui, vous rendez votre terrain disponible à toute la communauté de [SECOND_LIFE], même aux personnes qui ne sont pas dans cette région. Le terrain sélectionné, de [LAND_SIZE] m², est mis en vente. -Votre prix de vente sera de [SALE_PRICE] L$ et la vente sera disponible à [NAME]. +Votre prix de vente sera de [SALE_PRICE]L$ et la vente sera disponible à [NAME]. <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> <notification name="ReturnObjectsDeededToGroup"> @@ -241,6 +267,12 @@ Objets : [N] Les dégâts sont autorisés dans toute la région. Pour que les armes fonctionnent, les scripts doivent être autorisés. </notification> + <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 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="MustBeInParcel"> Pour définir le point d'atterrissage, vous devez vous trouver à l'intérieur de la parcelle. </notification> @@ -276,11 +308,15 @@ Ce dossier ne contient pas d'habits, de parties du corps ni de pièces join <notification name="CannotWearTrash"> Vous ne pouvez pas porter d'habits ni de parties du corps se trouvant dans la corbeille. </notification> + <notification name="MaxAttachmentsOnOutfit"> + Impossible de joindre l'objet. +La limite de [MAX_ATTACHMENTS] objets joints a été dépassée. Veuillez commencer par supprimer un objet joint existant. + </notification> <notification name="CannotWearInfoNotComplete"> Vous ne pouvez pas porter cet article car il n'a pas encore été chargé. Veuillez réessayer dans une minute. </notification> <notification name="MustHaveAccountToLogIn"> - Oups! Vous avez oublié de fournir certaines informations. + Zut ! Vous avez oublié de fournir certaines informations. Vous devez saisir le nom et le prénom de votre avatar. Pour entrer dans [SECOND_LIFE], vous devez avoir un compte. Voulez-vous en créer un maintenant ? @@ -290,7 +326,7 @@ Pour entrer dans [SECOND_LIFE], vous devez avoir un compte. Voulez-vous en crée <usetemplate name="okcancelbuttons" notext="Réessayer" yestext="Créer un compte"/> </notification> <notification name="AddClassified"> - Les petites annonces sont publiées à l'onglet Petites annonces de la section Recherche pendant une semaine. + Les petites annonces sont publiées à l'onglet Petites annonces de la section Recherche et sur [http://secondlife.com/community/classifieds secondlife.com] pendant une semaine. Rédigez votre annonce, puis cliquez sur Publier pour l'ajouter à la liste des annonces. Au moment de cliquer sur Publier, vous serez invité à payer des frais. Plus vous payez cher, plus votre annonce est visible dans la liste ainsi que dans les résultats de recherche de mots-clés. @@ -301,10 +337,19 @@ Plus vous payez cher, plus votre annonce est visible dans la liste ainsi que dan Une fois payés, les frais ne sont pas remboursables. <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> + <notification name="DeleteMedia"> + Vous avez choisi de supprimer le média associé à cette face. +Voulez-vous vraiment continuer ? + <usetemplate ignoretext="Confirmer avant de supprimer un média d'un objet" name="okcancelignore" notext="Non" yestext="Oui"/> + </notification> <notification name="ClassifiedSave"> Enregistrer les changements dans l'annonce [NAME] ? <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Ne pas enregistrer" yestext="Enregistrer"/> </notification> + <notification name="ClassifiedInsufficientFunds"> + Fonds insuffisants pour créer la petite annonce. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="DeleteAvatarPick"> Supprimer le favori [PICK] ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> @@ -322,14 +367,6 @@ Une fois payés, les frais ne sont pas remboursables. <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> @@ -393,7 +430,7 @@ L'objet est peut-être inaccessible ou a peut-être été supprimé. Une erreur est survenue lors de l'enregistrement du script compilé, suite au problème suivant : [REASON]. Essayez d'enregistrer votre script ultérieurement. </notification> <notification name="StartRegionEmpty"> - Vous n'avez pas défini de région de départ. + Vous n'avez pas défini de région de départ. Veuillez saisir le nom de la région dans la case Lieu de départ, ou choisissez Dernier emplacement ou Domicile comme Lieu de départ. <usetemplate name="okbutton" yestext="OK"/> </notification> @@ -408,27 +445,26 @@ L'objet est peut-être inaccessible ou a peut-être été supprimé. Impossible d'écrire le fichier [[FILE]] </notification> <notification name="UnsupportedHardware"> - Avertissement : vous n'avez pas la configuration système requise pour utiliser [APP_NAME]. Si vous continuez à utiliser [APP_NAME], votre performance risque d'être moindre. Malheureusement, la section [SUPPORT_SITE] n'offre aucune aide pour les problèmes de configuration système. + Votre ordinateur ne satisfait pas la configuration système requise pour [APP_NAME]. Les performances risquent d'être médiocres. Malheureusement, la page [SUPPORT_SITE] n’offre aucune assistance pour les problèmes de configuration système. MINSPECS -Voulez-vous visiter [_URL] pour plus d'informations ? +Consulter [_URL] pour en savoir plus ? <url name="url" option="0"> http://secondlife.com/support/sysreqs.php?lang=fr </url> <usetemplate ignoretext="Mon matériel n'est pas pris en charge" name="okcancelignore" notext="Non" yestext="Oui"/> </notification> <notification name="UnknownGPU"> - Votre système contient une carte graphique que nous ne connaissons pas actuellement. -Cela est souvent le cas avec le nouveau materiel qui n'a pas encore été testé avec [APP_NAME]. Vous pourrez probablement utiliser [APP_NAME] sans problème, mais vous devrez peut-être ajuster les paramètres de vos graphiques. -(Préférences > Graphiques). + Votre système contient une carte graphique que [APP_NAME] ne reconnaît pas. +Cela est souvent le cas avec le nouveau matériel qui n'a pas encore été testé avec [APP_NAME]. Cela ne posera probablement pas de problème, mais vous devrez peut-être ajuster vos paramètres graphiques. +(Moi > Préférences > Graphiques). <form name="form"> <ignore name="ignore" text="Ma carte graphique ne peut être identifiée"/> </form> </notification> <notification name="DisplaySettingsNoShaders"> [APP_NAME] a planté lors de l'initialisation des drivers graphiques. -La qualité des graphiques sera paramétrée sur Faible pour éviter certaines erreurs de driver fréquentes. -Certaines fonctionnalités graphiques seront donc désactivées. +La qualité des graphiques sera paramétrée sur Faible pour éviter certaines erreurs de driver fréquentes. Certaines fonctionnalités graphiques seront donc désactivées. Nous vous recommandons de mettre à jour les drivers de votre carte graphique. La qualité des graphiques peut être augmentée à la section Préférences > Graphiques </notification> @@ -481,6 +517,9 @@ Il ou elle ne pourra temporairement plus bouger, chatter, ou interagir dans le M Expulser [AVATAR_NAME] de votre terrain ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Expulser"/> </notification> + <notification name="EjectAvatarFromGroup"> + Vous avez expulsé [AVATAR_NAME] du groupe [GROUP_NAME] + </notification> <notification name="AcquireErrorTooManyObjects"> Erreur d'acquisition : trop d'objets sélectionnés. </notification> @@ -491,7 +530,7 @@ Veuillez mettre tous les objets que vous souhaitez acquérir dans la même régi <notification name="PromptGoToCurrencyPage"> [EXTRA] -Aller sur [_URL] pour obtenir des informations sur l'achat de L$ ? +Aller sur [_URL] pour obtenir des informations sur l'achat de L$ ? <url name="url"> http://secondlife.com/app/currency/?lang=fr-FR </url> @@ -580,14 +619,18 @@ Assurez-vous que le fichier a l'extension correcte. Impossible de créer le fichier de sortie : [FILE] </notification> <notification name="DoNotSupportBulkAnimationUpload"> - Actuellement, APP_NAME] ne prend pas en charge le chargement de lots de fichiers d'animation. + Actuellement, [APP_NAME] ne prend pas en charge le chargement de lots de fichiers d'animation. </notification> <notification name="CannotUploadReason"> Impossible de charger [FILE] suite au problème suivant : [REASON] Veuillez réessayer ultérieurement. </notification> <notification name="LandmarkCreated"> - Vous avez ajouté "[LANDMARK_NAME]" à votre dossier [FOLDER_NAME]. + 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. @@ -611,6 +654,9 @@ Veuillez sélectionner des objets avec des scripts. Sélectionnez des objets qui ont des scripts et que vous pouvez modifier. </notification> + <notification name="CannotOpenScriptObjectNoMod"> + Impossible d'ouvrir le script de l'objet sans droits de modification. + </notification> <notification name="CannotSetRunningSelectObjectsNoScripts"> Impossible de définir les scripts sur « exécution ». @@ -633,7 +679,7 @@ Recherche effectuée : [FINALQUERY] Vos termes de recherche étaient trop courts et aucune recherche n'a été effectuée. </notification> <notification name="CouldNotTeleportReason"> - Impossible de téléporter. + Échec de la téléportation. [REASON] </notification> <notification name="invalid_tport"> @@ -684,7 +730,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"> @@ -723,7 +770,7 @@ aucune parcelle sélectionnée. aucun groupe sélectionné. </notification> <notification name="CannotDeedLandNoRegion"> - Cession du terrain impossible : + Cession du terrain impossible : la région dans laquelle il est situé est introuvable. </notification> <notification name="CannotDeedLandMultipleSelected"> @@ -732,14 +779,6 @@ 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. - -Jouer les flux média lorsqu'ils sont disponibles ? -(Vous pourrez modifier cette option ultérieurement sous Préférences > Audio et vidéo.) - <usetemplate name="okcancelbuttons" notext="Désactiver" yestext="Jouer le média"/> - </notification> <notification name="CannotDeedLandWaitingForServer"> Cession du terrain impossible : rapport de propriété sur le point d'être envoyé par le serveur. @@ -768,7 +807,7 @@ vous n'avez pas le droit de libérer cette parcelle. Les parcelles qui vous appartiennent sont en vert. </notification> <notification name="CannotReleaseLandRegionNotFound"> - Impossible d'abandonner le terrain : + Impossible d'abandonner le terrain : la région dans laquelle il est situé est introuvable. </notification> <notification name="CannotReleaseLandNoTransfer"> @@ -806,11 +845,11 @@ Diviser le terrain ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> <notification name="CannotDivideLandNoRegion"> - Division du terrain impossible : + Division du terrain impossible : la région dans laquelle il est situé est introuvable. </notification> <notification name="CannotJoinLandNoRegion"> - Impossible de fusionner le terrain : + Impossible de fusionner le terrain : la région dans laquelle il est situé est introuvable. </notification> <notification name="CannotJoinLandNothingSelected"> @@ -861,9 +900,8 @@ Fusionner le terrain ? Cette erreur est généralement temporaire. Veuillez éditer et sauvegarder l'élément endossable à nouveau d'ici quelques minutes. </notification> <notification name="YouHaveBeenLoggedOut"> - Vous avez été déconnecté(e) de [SECOND_LIFE] : + Zut. Vous avez été déconnecté(e) de [SECOND_LIFE] [MESSAGE] -Vous pouvez afficher vos messages instantanés et votre chat en cliquant sur Afficher IM et chat. Sinon, cliquez sur Quitter pour quitter immédiatement [APP_NAME]. <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Afficher IM et chat"/> </notification> <notification name="OnlyOfficerCanBuyLand"> @@ -1013,6 +1051,7 @@ Céder ces [AREA] m² de terrain au groupe [GROUP_NAME] ? </notification> <notification name="ErrorMessage"> [ERROR_MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="AvatarMovedDesired"> La destination que vous avez choisie n'est pas disponible actuellement. @@ -1028,7 +1067,7 @@ Vous avez été téléporté vers une région voisine. Nous vous conseillons de définir votre domicile ailleurs. </notification> <notification name="ClothingLoading"> - Vos vêtements sont en cours de téléchargement. + Vos habits sont en cours de téléchargement. Vous pouvez utiliser [SECOND_LIFE] normalement, les autres résidents vous voient correctement. <form name="form"> <ignore name="ignore" text="Vos habits prennent du temps à télécharger"/> @@ -1037,14 +1076,14 @@ Vous pouvez utiliser [SECOND_LIFE] normalement, les autres résidents vous voien <notification name="FirstRun"> L'installation de [APP_NAME] est terminée. -S'il s'agit de la première fois que vous utilisez [SECOND_LIFE], vous devrez créer un compte avant de pouvoir vous connecter. -Retourner sur [https://join.secondlife.com/index.php?lang=fr-FR secondlife.com] pour créer un nouveau compte ? +Si vous utilisez [SECOND_LIFE] pour la première fois, vous devez ouvrir un compte avant de pouvoir vous connecter. +Retourner sur [http://join.secondlife.com secondlife.com] pour ouvrir un nouveau compte ? <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Nouveau compte..."/> </notification> <notification name="LoginPacketNeverReceived"> Nous avons des difficultés à vous connecter. Il y a peut-être un problème avec votre connexion Internet ou la [SECOND_LIFE_GRID]. -Vérifiez votre connextion Internet et réessayez dans quelques minutes, cliquez sur Aide pour consulter la page [SUPPORT_SITE] ou bien sur Téléporter pour essayer d'aller chez vous. +Vérifiez votre connexion Internet et réessayez dans quelques minutes, cliquez sur Aide pour consulter la page [SUPPORT_SITE] ou bien sur Téléporter pour essayer d'aller chez vous. <url name="url"> http://fr.secondlife.com/support/ </url> @@ -1067,10 +1106,10 @@ Vous pourrez revenir sur votre décision plus tard. [NAME] [PRICE] L$ Vous n'avez pas suffisamment de L$ pour faire cela. </notification> <notification name="GrantedModifyRights"> - [FIRST_NAME] [LAST_NAME] vous avez donné la permission de modifier ses objets. + [NAME] vous a donné la permission de modifier ses objets. </notification> <notification name="RevokedModifyRights"> - Vous n'avez plus le droit de modifier les objets de [FIRST_NAME] [LAST_NAME]. + Vous n'avez plus la permission de modifier les objets de [NAME] </notification> <notification name="FlushMapVisibilityCaches"> Cela videra le cache cartographique de cette région. @@ -1151,7 +1190,7 @@ Veuillez choisir un objet à vendre et réessayer. <notification name="DownloadWindowsMandatory"> Une nouvelle version de [APP_NAME] est disponible. [MESSAGE] -Pour utiliser [APP_NAME] vous devez télécharger cette mise à jour. +Pour utiliser [APP_NAME], vous devez télécharger cette mise à jour. <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Télécharger"/> </notification> <notification name="DownloadWindows"> @@ -1169,17 +1208,17 @@ Cette mise à jour n'est pas requise mais si vous voulez une meilleure perf <notification name="DownloadLinuxMandatory"> Une nouvelle version de [APP_NAME] est disponible. [MESSAGE] -Pour utiliser [APP_NAME] vous devez télécharger cette mise à jour. +Pour utiliser [APP_NAME], vous devez télécharger cette mise à jour. <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Télécharger"/> </notification> <notification name="DownloadLinux"> - Une mise à jour de [SECOND_LIFE] est disponible. + Une mise à jour de [APP_NAME] est disponible. [MESSAGE] Cette mise à jour n'est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l'installer. <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/> </notification> <notification name="DownloadLinuxReleaseForDownload"> - Une mise à jour de [SECOND_LIFE] est disponible. + Une mise à jour de [APP_NAME] est disponible. [MESSAGE] Cette mise à jour n'est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l'installer. <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/> @@ -1187,9 +1226,9 @@ Cette mise à jour n'est pas requise mais si vous voulez une meilleure perf <notification name="DownloadMacMandatory"> Une nouvelle version de [APP_NAME] est disponible. [MESSAGE] -Pour utiliser [APP_NAME] vous devez télécharger cette mise à jour. +Pour utiliser [APP_NAME], vous devez télécharger cette mise à jour. -Télécharger vers le dossier Applications ? +Télécharger vers le dossier Applications ? <usetemplate name="okcancelbuttons" notext="Quitter" yestext="Télécharger"/> </notification> <notification name="DownloadMac"> @@ -1197,7 +1236,7 @@ Télécharger vers le dossier Applications ? [MESSAGE] Cette mise à jour n'est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l'installer. -Télécharger vers le dossier Applications ? +Télécharger vers le dossier Applications ? <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/> </notification> <notification name="DownloadMacReleaseForDownload"> @@ -1205,20 +1244,20 @@ Télécharger vers le dossier Applications ? [MESSAGE] Cette mise à jour n'est pas requise mais si vous voulez une meilleure performance et plus de stabilité, nous vous recommandons de l'installer. -Télécharger vers le dossier Applications ? +Télécharger vers le dossier Applications ? <usetemplate name="okcancelbuttons" notext="Continuer" yestext="Télécharger"/> </notification> <notification name="DeedObjectToGroup"> Si vous cédez cet objet, le groupe : * recevra les L$ versés pour l'objet ; - <usetemplate ignoretext="Confimer avant que je ne cède un objet à un groupe" name="okcancelignore" notext="Annuler" yestext="Céder"/> + <usetemplate ignoretext="Confirmer avant que je ne cède un objet à un groupe" name="okcancelignore" notext="Annuler" yestext="Céder"/> </notification> <notification name="WebLaunchExternalTarget"> - Voulez-vous ouvrir votre navigateur web système pour afficher ce contenu ? + Voulez-vous ouvrir votre navigateur web système pour afficher ce contenu ? <usetemplate ignoretext="Ouvrir mon navigateur pour consulter une page web" name="okcancelignore" notext="Annuler" yestext="OK"/> </notification> <notification name="WebLaunchJoinNow"> - Aller sur secondlife.com pour gérer votre compte ? + Accéder à votre [http://secondlife.com/account/ Page d'accueil] pour gérer votre compte ? <usetemplate ignoretext="Lancer mon navigateur pour gérer mon compte" name="okcancelignore" notext="Annuler" yestext="OK"/> </notification> <notification name="WebLaunchSecurityIssues"> @@ -1238,11 +1277,11 @@ Télécharger vers le dossier Applications ? <usetemplate ignoretext="Lancer mon navigateur web pour consulter le blog" name="okcancelignore" notext="Annuler" yestext="Aller à la page"/> </notification> <notification name="WebLaunchLSLGuide"> - Voulez-vous ouvrir le guide pour l'écriture de scripts ? + Voulez-vous ouvrir le guide pour l'écriture de scripts ? <usetemplate ignoretext="Lancer mon navigateur web pour consulter le guide pour l'écriture de scripts" name="okcancelignore" notext="Annuler" yestext="OK"/> </notification> <notification name="WebLaunchLSLWiki"> - Voulez-vous ouvrir le portail LSL pour l'écriture de scripts ? + Voulez-vous ouvrir le portail LSL pour l'écriture de scripts ? <usetemplate ignoretext="Lancer mon navigateur web pour consulter le portail LSL" name="okcancelignore" notext="Annuler" yestext="Aller à la page"/> </notification> <notification name="ReturnToOwner"> @@ -1267,8 +1306,8 @@ Quitter le groupe ? <notification name="CannotStartAuctionAlreadyForSale"> Vous ne pouvez pas démarrer des enchères sur une parcelle déjà en vente. Si vous êtes certain de vouloir démarrer des enchères, mettez fin à la vente. </notification> - <notification label="Échec de la fonction Ignorer les objets par nom" name="MuteByNameFailed"> - Vous ignorez déjà ce résident. + <notification label="L'interdiction de l'objet par nom a échoué." name="MuteByNameFailed"> + Vous avez déjà interdit ce nom. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RemoveItemWarn"> @@ -1291,9 +1330,12 @@ Les chats et les messages instantanés ne s'afficheront pas. Les messages i <notification name="JoinedTooManyGroupsMember"> Vous avez atteint le nombre de groupes maximum. Avant de pouvoir rejoindre ce groupe, vous devez en quitter un ou refuser cette offre. [NAME] vous invite à rejoindre un groupe. -[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"> @@ -1355,12 +1397,16 @@ Les chats et les messages instantanés ne s'afficheront pas. Les messages i </form> </notification> <notification name="TeleportFromLandmark"> - Êtes-vous certain de vouloir être téléporté ? + Souhaitez-vous vraiment vous téléporter vers <nolink>[LOCATION]</nolink> ? <usetemplate ignoretext="Confirmer que je veux me téléporter à un repère" name="okcancelignore" notext="Annuler" yestext="Téléporter"/> </notification> <notification name="TeleportToPick"> - Téléporter vers [PICK] ? - <usetemplate ignoretext="Confirmer que je veux me téléporter à un endroit dans mes Préférences" name="okcancelignore" notext="Annuler" yestext="Téléporter"/> + Vous téléporter vers [PICK] ? + <usetemplate ignoretext="Confirmer que je veux me téléporter à un endroit dans mes Favoris" name="okcancelignore" notext="Annuler" yestext="Téléporter"/> + </notification> + <notification name="TeleportToClassified"> + Vous téléporter vers [CLASSIFIED] ? + <usetemplate ignoretext="Confirmer que je veux me téléporter à un endroit dans les Petites annonces" name="okcancelignore" notext="Annuler" yestext="Téléporter"/> </notification> <notification label="Envoyer un message à tout le monde dans votre domaine" name="MessageEstate"> Saisissez un message court qui sera envoyé à tous les résidents se trouvant actuellement sur votre domaine. @@ -1446,9 +1492,9 @@ Souhaitez-vous en savoir plus sur les différentes catégories d'accès ? <notification name="RegionEntryAccessBlocked_Change"> Votre catégorie d'accès ne vous permet pas de pénétrer dans cette région. -En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d'accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition > Préférences... > Général. +En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d'accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Moi > Préférences > Général. <form name="form"> - <button name="OK" text="Modifier les Préférences"/> + <button name="OK" text="Modifier les préférences"/> <button default="true" name="Cancel" text="Fermer"/> <ignore name="ignore" text="La catégorie de contenu que j'ai choisie m'empêche de pénétrer dans une région"/> </form> @@ -1474,7 +1520,7 @@ Souhaitez-vous en savoir plus sur les différentes catégories d'accès ? <notification name="LandClaimAccessBlocked_Change"> Votre catégorie d'accès ne vous permet pas de réclamer cette région. -En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d'accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition > Préférences... > Général. +En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d'accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Moi > Préférences > Général. <usetemplate ignoretext="La catégorie de contenu que j'ai choisie m'empêche de réclamer un terrain" name="okcancelignore" notext="Fermer" yestext="Modifier les Préférences"/> </notification> <notification name="LandBuyAccessBlocked"> @@ -1498,11 +1544,11 @@ Souhaitez-vous en savoir plus sur les différentes catégories d'accès ? <notification name="LandBuyAccessBlocked_Change"> Votre catégorie d'accès ne vous autorise pas à acheter cette région. -En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d'accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Édition > Préférences... > Général. +En cliquant sur Modifier les préférences, vous pourrez changer votre catégorie d'accès et pénétrer dans la région. À partir de maintenant, vous pouvez rechercher et accéder au contenu [REGIONMATURITY]. Vous pouvez modifier ce paramètre à partir du menu Moi > Préférences > Général. <usetemplate ignoretext="La catégorie de contenu que j'ai choisie m'empêche d'acheter un terrain" name="okcancelignore" notext="Fermer" yestext="Modifier les Préférences"/> </notification> <notification name="TooManyPrimsSelected"> - "Vous avez sélectionné trop de prims. Veuillez sélectionner au maximum [MAX_PRIM_COUNT] prims et réessayer." + Vous avez sélectionné trop de prims. Veuillez sélectionner au maximum [MAX_PRIM_COUNT] prims et réessayer. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ProblemImportingEstateCovenant"> @@ -1517,9 +1563,10 @@ En cliquant sur Modifier les préférences, vous pourrez changer votre catégori </notification> <notification name="UnableToLoadNotecardAsset"> Impossible de charger les données de la note actuellement. + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="NotAllowedToViewNotecard"> - Permissions pour afficher la note insuffisantes. + Droits pour afficher la note insuffisants. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="MissingNotecardAssetID"> @@ -1533,11 +1580,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"> @@ -1553,8 +1600,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. @@ -1657,14 +1706,14 @@ Déplacer les objets de l'inventaire ? <notification name="ClickActionNotPayable"> Avertissement : l'action du clic Payer l'objet a été définie mais ne fonctionnera que si un script est ajouté avec l'event money(). <form name="form"> - <ignore name="ignore" text="Je définis l'action du clic Payer l'objet lorsque je construis un objet sans le script money()"/> + <ignore name="ignore" text="Je définis l'action du clic Payer l'objet lorsque je construis un objet sans le script money()"/> </form> </notification> <notification name="OpenObjectCannotCopy"> Vous n'êtes autorisé à copier aucun élément dans cet objet. </notification> <notification name="WebLaunchAccountHistory"> - Aller sur secondlife.com pour consulter l'historique de votre compte ? + Accéder à votre [http://secondlife.com/account/ Page d'accueil] pour consulter l'historique de votre compte ? <usetemplate ignoretext="Lancer mon navigateur pour consulter l'historique de mon compte" name="okcancelignore" notext="Annuler" yestext="Aller sur cette page"/> </notification> <notification name="ConfirmQuit"> @@ -1672,21 +1721,9 @@ Déplacer les objets de l'inventaire ? <usetemplate ignoretext="Confirmer avant de quitter" name="okcancelignore" notext="Ne pas quitter" yestext="Quitter"/> </notification> <notification name="HelpReportAbuseEmailLL"> - Utilisez cet outil pour signaler des infractions aux [http://secondlife.com/corporate/tos.php?lang=fr-FR Conditions d'utilisation] et aux [http://secondlife.com/corporate/cs.php?lang=fr-FR Règles de la communauté]. - -Lorsqu'elles sont signalées, toutes les infractions aux Conditions d'utilisation et aux Règles de la communauté font l'objet d'une enquête et sont résolues. Pour accéder aux détails de la résolution d'un incident, allez sur : + 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]. -http://secondlife.com/support/incidentreport.php - </notification> - <notification name="HelpReportAbuseEmailEO"> - Important : ce rapport ira au propriétaire de la région dans laquelle vous êtes et non à Linden Lab. - -Pour aider les résidents et les visiteurs, le propriétaire de la région dans laquelle vous êtes a choisi de recevoir et de s'occuper de tous les rapports envoyés à partir de cette région. Linden Lab n'enquêtera pas sur les rapports que vous envoyez à partir de cet endroit. - -Le propriétaire de la région traitera les rapports en fonction des règles de cette région, comme indiqué dans le réglement du domaine. -(Les réglements sont visibles à partir du menu Monde > À propos du terrain.) - -La résolution de ce rapport ne s'applique qu'à cette région ; L'accès aux autres endroits de [SECOND_LIFE] ne sera pas affecté par les résultats de cette enquête. Seul Linden Lab peut interdire l'accès à l'ensemble de [SECOND_LIFE]. +Lorsqu'elles sont signalées, toutes les infractions font l'objet d'une enquête et sont résolues. </notification> <notification name="HelpReportAbuseSelectCategory"> Veuillez choisir une catégorie pour ce rapport d'infraction. @@ -1714,9 +1751,9 @@ Les descriptions précises nous permettent de traiter les rapports plus rapideme Il semble que vous souhaitiez reporter une infraction à des droits de propriété intellectuelle. Pour signaler correctement cette infraction : -(1) Remplissez un rapport d'infraction. Vous pouvez soumettre un rapport d'infraction si vous pensez qu'un résident exploite le système de droits de [SECOND_LIFE], par exemple en utilisant un CopyBot ou des outils similaires pour enfreindre des droits de propriété intellectuelle. Notre équipe chargée des infractions mènera une enquête et prendra les mesures nécessaires à l'encontre du résident non respectueux des Conditions d'utilisation ou des règles de la communauté. Sachez toutefois que l'équipe chargée des infractions ne supprimera pas de contenu à l'intérieur de [SECOND_LIFE]. +(1) Remplissez un rapport d'infraction. Vous pouvez soumettre un rapport d'infraction si vous pensez qu'un résident exploite le système de droits de [SECOND_LIFE], par exemple en utilisant un CopyBot ou des outils similaires pour enfreindre des droits de propriété intellectuelle. Notre équipe chargée des infractions mènera une enquête et prendra les mesures nécessaires à l'encontre du résident non respectueux des [SECOND_LIFE] [http://secondlife.com/corporate/tos.php Conditions d'utilisation] ou des [http://secondlife.com/corporate/cs.php Règles communautaires]. Sachez toutefois que l'équipe chargée des infractions ne supprimera pas de contenu à l'intérieur de [SECOND_LIFE]. -(2) Demandez à ce que du contenu à l'intérieur de [SECOND_LIFE] soit supprimé. Pour demander à ce que du contenu soit supprimé de [SECOND_LIFE], vous devez soumettre un rapport d'infraction valide, tel que fourni dans notre Règlement contre les violations des droit d'auteurs (DMCA), à http://secondlife.com/corporate/dmca.php. +(2) Demandez à ce que du contenu à l'intérieur de Second Life soit supprimé. Pour demander à ce que du contenu soit supprimé de [SECOND_LIFE], vous devez soumettre un rapport d'infraction valide, tel que fourni dans notre [http://secondlife.com/corporate/dmca.php Règlement contre les violations des droits d'auteur]. Si vous souhaitez toujours reporter cette infraction, veuillez fermer cette fenêtre et soumettre votre rapport. Vous devrez peut-être sélectionner la catégorie CopyBot ou exploitation abusive des droits. @@ -1732,7 +1769,7 @@ Linden Lab Vous avez déjà un objet sur cette partie du corps. Voulez-vous le remplacer par l'objet sélectionné ? <form name="form"> - <ignore name="ignore" save_option="true" text="Remplacer une pièce-jointe existante par l'objet sélectionné"/> + <ignore name="ignore" save_option="true" text="Remplacer une pièce jointe existante par l'objet sélectionné"/> <button ignore="Remplacer automatiquement" name="Yes" text="OK"/> <button ignore="Ne jamais remplacer" name="No" text="Annuler"/> </form> @@ -1747,13 +1784,17 @@ Souhaitez-vous quitter le mode occupé avant de terminer cette transaction ? <button ignore="Ne jamais quitter le mode occupé" name="No" text="Annuler"/> </form> </notification> + <notification name="ConfirmDeleteProtectedCategory"> + Le dossier [FOLDERNAME] est un dossier système. La suppression d'un dossier système peut provoquer une instabilité. Voulez-vous vraiment le supprimer ? + <usetemplate ignoretext="Confirmer avant la suppression d'un dossier système" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> <notification name="ConfirmEmptyTrash"> - Êtes-vous certain de vouloir supprimer le contenu de votre corbeille de manière permanente ? - <usetemplate ignoretext="Confimer avant de vider la corbeille" name="okcancelignore" notext="Annuler" yestext="OK"/> + Êtes-vous certain de vouloir supprimer le contenu de votre corbeille de manière permanente ? + <usetemplate ignoretext="Confirmer avant de vider la corbeille" name="okcancelignore" notext="Annuler" yestext="OK"/> </notification> <notification name="ConfirmClearBrowserCache"> - Êtes-vous certain de vouloir supprimer l'historique de vos visites et recherches ? - <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/> + Êtes-vous certain de vouloir supprimer l'historique de vos visites et recherches ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> <notification name="ConfirmClearCookies"> Êtes-vous certain de vouloir supprimer vos cookies ? @@ -1764,16 +1805,16 @@ Souhaitez-vous quitter le mode occupé avant de terminer cette transaction ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/> </notification> <notification name="ConfirmEmptyLostAndFound"> - Êtes-vous certain de vouloir supprimer le contenu de votre dossier Objets trouvés de manière permanente ? - <usetemplate ignoretext="Confimer avant de vider le dossier Objets trouvés" name="okcancelignore" notext="Non" yestext="Oui"/> + Êtes-vous certain de vouloir supprimer le contenu de votre dossier Objets trouvés de manière permanente ? + <usetemplate ignoretext="Confirmer avant de vider le dossier Objets trouvés" name="okcancelignore" notext="Non" yestext="Oui"/> </notification> <notification name="CopySLURL"> - La SLurl suivante a été copiée dans votre presse-papier : + La SLurl suivante a été copiée dans votre presse-papiers : [SLURL] Liez-la à partir d'une page web pour permettre aux autres résidents d'accéder facilement à cet endroit ou bien collez-la dans la barre d'adresse de votre navigateur. <form name="form"> - <ignore name="ignore" text="La SLurl est copiée dans mon presse-papier"/> + <ignore name="ignore" text="La SLurl est copiée dans mon presse-papiers"/> </form> </notification> <notification name="WLSavePresetAlert"> @@ -1839,18 +1880,18 @@ Liez-la à partir d'une page web pour permettre aux autres résidents d&apo <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="Cannot_Purchase_an_Attachment"> - Vous ne pouvez pas acheter un objet s'il fait partie d'une pièce-jointe. + Vous ne pouvez pas acheter un objet s'il fait partie d'une pièce jointe. </notification> <notification label="À propos des requêtes pour les autorisations de débit" name="DebitPermissionDetails"> Accepter cette requête donne au script l'autorisation de prélever des dollars Linden (L$) sur votre compte de manière continue. Pour révoquer cette autorisation, le propriétaire de l'objet doit supprimer l'objet ou bien réinitialiser les scripts dans l'objet. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="AutoWearNewClothing"> - Voulez-vous automatiquement porter l'habit que vous allez créer ? + Voulez-vous automatiquement porter l'habit que vous allez créer ? <usetemplate ignoretext="Porter automatiquement tout en modifiant mon apparence" name="okcancelignore" notext="Non" yestext="Oui"/> </notification> <notification name="NotAgeVerified"> - Pour pouvoir pénétrer dans cette zone, vous devez avoir procédé à la vérification de votre âge. Souhaitez-vous aller sur [SECOND_LIFE] et procéder à la vérification de votre âge ? + Pour pouvoir pénétrer dans cette zone, vous devez avoir procédé à la vérification de votre âge. Souhaitez-vous aller sur [SECOND_LIFE] et procéder à la vérification de votre âge ? [_URL] <url name="url" option="0"> @@ -1859,7 +1900,7 @@ Liez-la à partir d'une page web pour permettre aux autres résidents d&apo <usetemplate ignoretext="Je n'ai pas procédé à la vérification de mon âge" name="okcancelignore" notext="Non" yestext="Oui"/> </notification> <notification name="Cannot enter parcel: no payment info on file"> - Pour pouvoir pénétrer dans cette zone, vous devez avoir enregistré vos informations de paiement. Souhaitez-vous aller sur [SECOND_LIFE] et enregistrer vos informations de paiement ? + Pour pouvoir pénétrer dans cette zone, vous devez avoir enregistré vos informations de paiement. Souhaitez-vous aller sur [SECOND_LIFE] et enregistrer vos informations de paiement ? [_URL] <url name="url" option="0"> @@ -1918,7 +1959,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. @@ -1937,7 +1977,7 @@ Cela risque d'impacter votre mot de passe. Vous n'avez pas le droit de consulter cette note. </notification> <notification name="RezItemNoPermissions"> - Permissions insuffisantes pour rezzer l'objet. + Droits insuffisants pour rezzer l'objet. </notification> <notification name="UnableToLoadNotecard"> Impossible de lire les données de la note actuellement. @@ -1946,7 +1986,7 @@ Cela risque d'impacter votre mot de passe. Script absent de la base de données. </notification> <notification name="ScriptNoPermissions"> - Permissions insuffisantes pour voir le script. + Droits insuffisants pour voir le script. </notification> <notification name="UnableToLoadScript"> Impossible de charger le script. Merci de réessayer. @@ -1989,7 +2029,7 @@ Veuillez sélectionner un seul objet. Vous n'avez pas le droit de copier ceci. </notification> <notification name="InventoryAccepted"> - [NAME] a accepté votre envoi. + [NAME] a reçu votre offre d'inventaire. </notification> <notification name="InventoryDeclined"> [NAME] a refusé votre envoi. @@ -2004,12 +2044,14 @@ Veuillez sélectionner un seul objet. Votre carte de visite a été refusée. </notification> <notification name="TeleportToLandmark"> - A présent que vous êtes sur le continent, vous pouvez voyager par téléportation (vers [NAME] par exemple). Cliquez sur le bouton Inventaire en bas à droite de l'écran puis sélectionnez le dossier Repères (Landmarks). -Choisissez un repère, double-cliquez dessus et cliquez sur Téléporter. + Vous pouvez vous téléporter vers des endroits comme [NAME] en ouvrant le panneau Lieux sur le côté droit de votre écran, puis en sélectionnant l'onglet Repères. +Cliquez sur le repère de votre choix pour le sélectionner, puis sur Téléporter en bas du panneau. +(Vous pouvez aussi double-cliquer sur le repère ou cliquer dessus avec le bouton droit de la souris et sélectionner Téléporter.) </notification> <notification name="TeleportToPerson"> - A présent que vous êtes sur le continent, vous pouvez contacter des résidents (tel [NAME] par exemple). Cliquez sur le bouton Inventaire en bas à droite de l'écran puis sélectionnez le dossier Cartes de visite (Calling Cards). -Choisissez en une, double-cliquez dessus et cliquez sur Message Instantané. + Vous pouvez contacter des résidents comme [NAME] en ouvrant le panneau Résidents sur le côté droit de votre écran. +Sélectionnez le résident de votre choix dans la liste, puis cliquez sur IM en bas du panneau. +(Vous pouvez aussi double-cliquer sur le nom du résident dans la liste ou cliquer dessus avec le bouton droit de la souris et sélectionner IM.) </notification> <notification name="CantSelectLandFromMultipleRegions"> Vous ne pouvez pas sélectionner de terrain en dehors des limites du serveur. @@ -2019,7 +2061,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 : @@ -2032,6 +2074,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 : @@ -2057,18 +2102,18 @@ Veuillez sélectionner un terrain plus petit. </notification> <notification name="NoQuickTime"> Le logiciel Apple QuickTime ne semble pas installé sur votre système. -Pour voir les vidéos sur les terrains qui le permettent, allez sur le site de QuickTime (http://www.apple.com/fr/quicktime/download) et installez le lecteur QuickTime. +Pour voir les vidéos sur les terrains qui le permettent, allez sur le [http://www.apple.com/quicktime site de QuickTime] et installez le lecteur QuickTime. </notification> <notification name="NoPlugin"> - Aucun Media Plugin n'a été trouvé pour prendre en charge "[MIME_TYPE]". Les médias de ce type ne sont pas disponibles. + Aucun Media Plugin n'a été trouvé pour prendre en charge [MIME_TYPE]. Les médias de ce type ne sont pas disponibles. </notification> <notification name="MediaPluginFailed"> - Le Media Plugin suivant a échoué : + Le Media Plugin suivant a échoué : [PLUGIN] Si le problème persiste, veuillez réinstaller le plugin ou contacter le vendeur. <form name="form"> - <ignore name="ignore" text="L'éxécution d'un Media Plugin a échoué"/> + <ignore name="ignore" text="L'exécution d'un Media Plugin a échoué"/> </form> </notification> <notification name="OwnedObjectsReturned"> @@ -2078,7 +2123,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. @@ -2088,6 +2133,10 @@ Les objets non transférables donnés au groupe ont étés supprimés. <notification name="UnOwnedObjectsReturned"> Les objets sélectionnés sur la parcelle et qui ne sont pas à vous ont été rendus à leurs propriétaires. </notification> + <notification name="ServerObjectMessage"> + Message de [NAME] : +<nolink>[MSG]</nolink> + </notification> <notification name="NotSafe"> Les dégâts sont autorisés sur ce terrain. Vous pouvez être blessé ici. Si vous décédez, vous serez téléporté à votre domicile. @@ -2097,8 +2146,7 @@ Vous pouvez être blessé ici. Si vous décédez, vous serez téléporté à vot Vous ne pouvez pas voler ici. </notification> <notification name="PushRestricted"> - Les bousculades sont interdites dans cette zone. -Vous ne pouvez pas pousser les autres à moins que vous soyez propriétaire de ce terrain. + Les bousculades sont interdites dans cette zone. Vous ne pouvez pas pousser les autres à moins que vous soyez propriétaire de ce terrain. </notification> <notification name="NoVoice"> Le chat vocal est interdit dans cette zone. Vous n'entendrez personne parler. @@ -2134,6 +2182,9 @@ Pour savoir comment accéder aux zones ayant un tel niveau d'accès, veuill <notification name="ImproperPaymentStatus"> Vous n'avez pas le statut de paiement approprié pour pénétrer dans cette région. </notification> + <notification name="MustGetAgeRgion"> + Pour pouvoir pénétrer dans cette région, vous devez avoir procédé à la vérification de votre âge. + </notification> <notification name="MustGetAgeParcel"> Pour pouvoir pénétrer sur cette parcelle, vous devez avoir procédé à la vérification de votre âge. </notification> @@ -2196,7 +2247,8 @@ Veuillez réessayer dans quelques minutes. Aucune parcelle valide n'a été trouvée. </notification> <notification name="ObjectGiveItem"> - Un objet appelé [OBJECTFROMNAME] appartenant à [FIRST] [LAST] vous a donné : [OBJECTTYPE] appelé(e) [OBJECTNAME]. + Un objet appelé [OBJECTFROMNAME] appartenant à [NAME_SLURL] vous a donné un [OBJECTTYPE] : +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Garder"/> <button name="Discard" text="Jeter"/> @@ -2204,7 +2256,8 @@ Veuillez réessayer dans quelques minutes. </form> </notification> <notification name="ObjectGiveItemUnknownUser"> - L'objet [OBJECTFROMNAME] appartenant à un utilisateur inconnu vous a donné un(e) [OBJECTTYPE] nommé(e) [OBJECTNAME]. + Un objet appelé [OBJECTFROMNAME] appartenant à (un résident inconnu) vous a donné un [OBJECTTYPE] : +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Garder"/> <button name="Discard" text="Jeter"/> @@ -2212,14 +2265,17 @@ Veuillez réessayer dans quelques minutes. </form> </notification> <notification name="UserGiveItem"> - [NAME] vous a donné un(e) [OBJECTTYPE] nommé(e) [OBJECTNAME]. + [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"> [NAME] + [MESSAGE] </notification> <notification name="JoinGroup"> @@ -2231,7 +2287,7 @@ Veuillez réessayer dans quelques minutes. </form> </notification> <notification name="TeleportOffered"> - [NAME] vous propose de le/la rejoindre par téléportation : + [NAME] vous propose d'être téléporté jusqu'à son emplacement : [MESSAGE] <form name="form"> @@ -2239,6 +2295,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] @@ -2258,6 +2317,9 @@ Veuillez réessayer dans quelques minutes. <button name="Decline" text="Refuser"/> </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. @@ -2307,7 +2369,7 @@ Venant de l'objet : [OBJECTNAME], appartenant à : [NAME]? La recherche du [TYPE] nommé(e) [DESC] dans la base de données a échoué. </notification> <notification name="InvalidWearable"> - L'objet que vous essayez de porter utilise une fonctionnalité que le client ne peut lire. Pour porter cet objet, veuillez télécharger une mise à jour du client. + L'objet que vous essayez de porter utilise une fonctionnalité que le client ne peut lire. Pour porter cet objet, veuillez télécharger une mise à jour de [APP_NAME]. </notification> <notification name="ScriptQuestion"> '[OBJECTNAME]', un objet appartenant à '[NAME]', aimerait : @@ -2317,16 +2379,16 @@ Acceptez-vous ? <form name="form"> <button name="Yes" text="Oui"/> <button name="No" text="Non"/> - <button name="Mute" text="Ignorer"/> + <button name="Mute" text="Interdire"/> </form> </notification> <notification name="ScriptQuestionCaution"> - Un objet appelé « [OBJECTNAME] », appartenant à « [NAME] », aimerait : + Un objet appelé [OBJECTNAME], appartenant à [NAME], aimerait : [QUESTIONS] Si vous n'avez pas confiance en cet objet ni en son créateur, vous devriez refuser cette requête. -Accepter cette requête ? +Accepter cette requête ? <form name="form"> <button name="Grant" text="Accepter"/> <button name="Deny" text="Refuser"/> @@ -2347,29 +2409,20 @@ Accepter cette requête ? <button name="Ignore" 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="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 faîtes 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 name="ScriptToast"> + [FIRST] [LAST]'s '[TITLE]' demande la participation de l'utilisateur. + <form name="form"> + <button name="Open" text="Ouvrir la boîte de dialogue"/> + <button name="Ignore" text="Ignorer"/> + <button name="Block" text="Ignorer"/> + </form> </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 name="BuyLindenDollarSuccess"> + Nous vous remercions de votre paiement. + +Votre solde en L$ sera mis à jour une fois le traitement terminé. Si le traitement prend plus de 20 minutes, il est possible que votre transaction soit annulée. Dans ce cas, le montant de l'achat sera crédité sur votre solde en US$. + +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="FirstOverrideKeys"> Vos mouvements sont maintenant pris en charge par un objet. @@ -2377,36 +2430,11 @@ 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 : ⌘-Opt-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> @@ -2439,7 +2467,7 @@ Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignore </notification> <notification name="VoiceInviteAdHoc"> [NAME] a rejoint un chat vocal avec conférence. -Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cet utilisateur, cliquez sur Ignorer. +Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cette personne, cliquez sur Ignorer. <form name="form"> <button name="Accept" text="Accepter"/> <button name="Decline" text="Refuser"/> @@ -2448,7 +2476,7 @@ Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignore </notification> <notification name="InviteAdHoc"> [NAME] vous invite à un chat conférence. -Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cet utilisateur, cliquez sur Ignorer. +Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignorer cette personne, cliquez sur Ignorer. <form name="form"> <button name="Accept" text="Accepter"/> <button name="Decline" text="Refuser"/> @@ -2462,19 +2490,19 @@ Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignore Nous sommes désolés. Le nombre maximum de conversations vocales a été atteint dans cette zone. Veuillez trouver un autre endroit pour discuter. </notification> <notification name="VoiceChannelDisconnected"> - Vous avez été déconnecté(e) de [VOICE_CHANNEL_NAME]. Vous allez maintenant être reconnecté au chat vocal spatial. + Vous avez été déconnecté(e) de [VOICE_CHANNEL_NAME]. Vous allez maintenant être reconnecté(e) au chat vocal près de vous. </notification> <notification name="VoiceChannelDisconnectedP2P"> - [VOICE_CHANNEL_NAME] a mis fin à l'appel. Vous allez maintenant être reconnecté au chat vocal spatial. + [VOICE_CHANNEL_NAME] a mis fin à l'appel. Vous allez maintenant être reconnecté(e) au chat vocal près de vous. </notification> <notification name="P2PCallDeclined"> - [VOICE_CHANNEL_NAME] a refusé votre appel. Vous allez maintenant être reconnecté au chat vocal spatial. + [VOICE_CHANNEL_NAME] a refusé votre appel. Vous allez maintenant être reconnecté(e) au chat vocal près de vous. </notification> <notification name="P2PCallNoAnswer"> - [VOICE_CHANNEL_NAME] ne peut pas prendre votre appel. Vous allez maintenant être reconnecté au chat vocal spatial. + [VOICE_CHANNEL_NAME] ne peut pas prendre votre appel. Vous allez maintenant être reconnecté(e) au chat vocal près de vous. </notification> <notification name="VoiceChannelJoinFailed"> - Echec de la connexion avec [VOICE_CHANNEL_NAME], veuillez réessayer ultérieurement. Vous allez maintenant être reconnecté au chat vocal spatial. + Échec de la connexion avec [VOICE_CHANNEL_NAME], veuillez réessayer ultérieurement. Vous allez maintenant être reconnecté(e) au chat vocal près de vous. </notification> <notification name="VoiceLoginRetry"> Nous sommes en train de créer un canal vocal pour vous. Veuillez patienter quelques instants. @@ -2495,29 +2523,62 @@ Pour y participer, cliquez sur Accepter. Sinon, cliquez sur Refuser. Pour ignore Une erreur est survenue pendant la connexion au chat vocal pour [VOICE_CHANNEL_NAME]. Veuillez réessayer ultérieurement. </notification> <notification name="ServerVersionChanged"> - La région dans laquelle vous avez pénétré utilise une version de serveur différente, ce qui peut avoir un impact sur votre performance. Cliquez pour voir les notes de version. + La région dans laquelle vous avez pénétré utilise une version de serveur différente, ce qui peut avoir un impact sur votre performance. [[URL] Consultez les notes de version.] </notification> <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> <notification name="UnableToFindHelpTopic"> Impossible de trouver l'aide. </notification> + <notification name="ObjectMediaFailure"> + Erreur serveur : Échec de la mise à jour ou de l'obtention du média. +'[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"/> + </notification> + <notification name="BottomTrayButtonCanNotBeShown"> + Le bouton sélectionné ne peut pas être affiché actuellement. +Le bouton sera affiché quand il y aura suffisamment de place. + </notification> <global name="UnsupportedCPU"> - Votre processeur ne remplit pas les conditions minimum requises. </global> <global name="UnsupportedGLRequirements"> Vous semblez ne pas avoir le matériel requis pour utiliser [APP_NAME]. [APP_NAME] requiert une carte graphique OpenGL avec une prise en charge du multitexturing. Si vous avez une telle carte, assurez-vous que vous avez aussi les pilotes les plus récents pour la carte, ainsi que les service packs et les patchs pour votre système d'exploitation. -Si vous avez toujours des problèmes, veuillez consulter la page [SUPPORT_SITE]. +Si vous avez toujours des problèmes, veuillez consulter la page [SUPPORT_SITE]. </global> <global name="UnsupportedCPUAmount"> 796 @@ -2531,14 +2592,8 @@ Si vous avez toujours des problèmes, veuillez consulter la page [SUPPORT_SITE] <global name="UnsupportedRAM"> - Votre mémoire système ne remplit pas les conditions minimum requises. </global> - <global name="PermYes"> - Oui - </global> - <global name="PermNo"> - Non - </global> <global name="You can only set your 'Home Location' on your land or at a mainland Infohub."> - Si vous possédez un terrain, vous pouvez le définir comme domicile. -Sinon, consultez la carte et trouvez les « infohubs ». + Si vous possédez un terrain, vous pouvez le définir comme domicile. +Sinon, consultez la carte et trouvez les " infohubs ". </global> </notifications> 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 0000000000..0baa8353d9 --- /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_activeim_row.xml b/indra/newview/skins/default/xui/fr/panel_activeim_row.xml new file mode 100644 index 0000000000..84272752cf --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_activeim_row.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_activeim_row"> + <text name="contact_name"> + Grumpity ProductEngine + </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 new file mode 100644 index 0000000000..4191ba42f9 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_adhoc_control_panel.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_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_audio_device.xml b/indra/newview/skins/default/xui/fr/panel_audio_device.xml index a9540d8346..2caa013f54 100644 --- a/indra/newview/skins/default/xui/fr/panel_audio_device.xml +++ b/indra/newview/skins/default/xui/fr/panel_audio_device.xml @@ -6,7 +6,7 @@ <text name="Input device (microphone):"> Périphérique d'entrée (micro) : </text> - <text name="Output device (speakers):"> + <text name="Output device (speakers):" width="300"> Périphérique de sortie (haut-parleurs) : </text> <text name="Input level:"> 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 new file mode 100644 index 0000000000..792fd70c7f --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="avatar_list_item"> + <string name="FormatSeconds"> + [COUNT] s + </string> + <string name="FormatMinutes"> + [COUNT] mn + </string> + <string name="FormatHours"> + [COUNT] h + </string> + <string name="FormatDays"> + [COUNT] j + </string> + <string name="FormatWeeks"> + [COUNT] s + </string> + <string name="FormatMonths"> + [COUNT] m + </string> + <string name="FormatYears"> + [COUNT] a + </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_avatar_tag.xml b/indra/newview/skins/default/xui/fr/panel_avatar_tag.xml new file mode 100644 index 0000000000..20a355b11d --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_avatar_tag.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="avatar_tag_notification"> + <panel name="msg_caption"> + <text name="sender_tag_name"> + Angela Testeur + </text> + <text name="tag_time" value="23:30"/> + </panel> + <text_editor name="msg_text"> + Le renard brun et vif saute par dessus le chien paresseux. + </text_editor> +</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 new file mode 100644 index 0000000000..f54bed4fae --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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"> + Liste des ignorés + </text> + <scroll_list name="blocked" tool_tip="Liste des résidents actuellement ignorés"/> + <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 new file mode 100644 index 0000000000..d3e4afd6ee --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_bottomtray.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="bottom_tray"> + <string name="SpeakBtnToolTip"> + Active/Désactive le micro + </string> + <string name="VoiceControlBtnToolTip"> + Affiche/Masque le panneau de contrôle vocal + </string> + <layout_stack name="toolbar_stack"> + <layout_panel name="speak_panel"> + <talk_button name="talk"> + <speak_button label="Parler" label_selected="Parler" name="speak_btn"/> + </talk_button> + </layout_panel> + <layout_panel name="gesture_panel"> + <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"/> + </layout_panel> + <layout_panel name="cam_panel"> + <button label="Affichage" name="camera_btn" tool_tip="Affiche/Masque le contrôle de la caméra"/> + </layout_panel> + <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_bottomtray_lite.xml b/indra/newview/skins/default/xui/fr/panel_bottomtray_lite.xml new file mode 100644 index 0000000000..5b6d37ce00 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_bottomtray_lite.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="bottom_tray_lite"> + <layout_stack name="toolbar_stack_lite"> + <layout_panel name="gesture_panel"> + <gesture_combo_list label="Geste" name="Gesture" tool_tip="Affiche/Masque les gestes"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_chat_header.xml b/indra/newview/skins/default/xui/fr/panel_chat_header.xml new file mode 100644 index 0000000000..babbff3132 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_chat_header.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="im_header" name="im_header"> + <text_editor name="user_name" value="Ericag Vader"/> + <text name="time_box" value="23:30"/> +</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 new file mode 100644 index 0000000000..784c6baae9 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_classified_info.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_classified_info"> + <panel.string name="type_mature"> + Modéré + </panel.string> + <panel.string name="type_pg"> + Contenu Général + </panel.string> + <panel.string name="l$_price"> + [PRICE] L$ + </panel.string> + <text name="title" value="Infos sur la petite annonce"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text_editor name="classified_name" value="[name]"/> + <text_editor name="classified_location" value="[loading...]"/> + <text_editor name="content_type" value="[content type]"/> + <text_editor name="category" value="[category]"/> + <check_box label="Renouvellement automatique toutes les semaines" name="auto_renew"/> + <text_editor name="price_for_listing" tool_tip="Coût de l'annonce."/> + <text_editor name="classified_desc" value="[description]"/> + </panel> + </scroll_container> + <panel name="buttons"> + <button label="Téléporter" name="teleport_btn"/> + <button label="Carte" name="show_on_map_btn"/> + <button label="Édition" name="edit_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml b/indra/newview/skins/default/xui/fr/panel_edit_alpha.xml new file mode 100644 index 0000000000..3b81ef2a5f --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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 bas" name="Lower Alpha" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Alpha haut" name="Upper Alpha" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Alpha tête" name="Head Alpha" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Alpha yeux" name="Eye Alpha" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Alpha cheveux" width="80" name="Hair Alpha" tool_tip="Cliquez pour sélectionner une image"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_classified.xml b/indra/newview/skins/default/xui/fr/panel_edit_classified.xml new file mode 100644 index 0000000000..1f44f2fe09 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_edit_classified.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Modifier la petite annonce" name="panel_edit_classified"> + <panel.string name="location_notice"> + (mise à jour après l'enregistrement) + </panel.string> + <text name="title"> + Modifier la petite annonce + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="Cliquez pour sélectionner une image"/> + <text name="Name:"> + Titre : + </text> + <text name="description_label"> + Description : + </text> + <text name="location_label"> + Lieu : + </text> + <text name="classified_location"> + en cours de chargement... + </text> + <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 Modéré + </combo_item> + <combo_item name="pg_ci"> + Contenu Général + </combo_item> + </combo_box> + <spinner label="L$" name="price_for_listing" tool_tip="Coût de l'annonce." value="50"/> + <check_box label="Renouvellement automatique toutes les semaines" name="auto_renew"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="Enregistrer" name="save_changes_btn"/> + <button label="Annuler" name="cancel_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_eyes.xml b/indra/newview/skins/default/xui/fr/panel_edit_eyes.xml new file mode 100644 index 0000000000..7de6ca8b3f --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Iris" name="Iris" tool_tip="Cliquez pour sélectionner une image"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="eyes_main_tab" title="Yeux"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml b/indra/newview/skins/default/xui/fr/panel_edit_gloves.xml new file mode 100644 index 0000000000..73e136ade6 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="gloves_main_tab" title="Gants"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_hair.xml b/indra/newview/skins/default/xui/fr/panel_edit_hair.xml new file mode 100644 index 0000000000..9293c23e19 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Cliquez pour sélectionner une image"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="hair_color_tab" title="Couleur"/> + <accordion_tab name="hair_style_tab" title="Coupe"/> + <accordion_tab name="hair_eyebrows_tab" title="Sourcils"/> + <accordion_tab name="hair_facial_tab" title="Pilosité du visage"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml b/indra/newview/skins/default/xui/fr/panel_edit_jacket.xml new file mode 100644 index 0000000000..cee44eb795 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Tissu (haut)" name="Upper Fabric" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Tissu (bas)" name="Lower Fabric" tool_tip="Cliquez pour sélectionner une image"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="jacket_main_tab" title="Veste"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_pants.xml b/indra/newview/skins/default/xui/fr/panel_edit_pants.xml new file mode 100644 index 0000000000..71d82c817f --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="pants_main_tab" title="Pantalon"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_pick.xml b/indra/newview/skins/default/xui/fr/panel_edit_pick.xml new file mode 100644 index 0000000000..f234529764 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_edit_pick.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Modifier la préférence" name="panel_edit_pick"> + <text name="title"> + Modifier la préférence + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="Cliquez pour sélectionner une image"/> + <text name="Name:"> + Titre : + </text> + <text name="description_label"> + Description : + </text> + <text name="location_label"> + Lieu : + </text> + <text name="pick_location"> + en cours de chargement... + </text> + <button label="Définir sur l'emplacement actuel" name="set_to_curr_location_btn"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="Enregistrer [WHAT]" name="save_changes_btn"/> + <button label="Annuler" name="cancel_btn"/> + </panel> +</panel> 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 3a13748efa..d10a7f37e1 100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml @@ -1,7 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Profile Edit" name="edit_profile_panel"> +<panel label="Modification du profil" name="edit_profile_panel"> <string name="CaptionTextAcctInfo"> - [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] + [ACCTTYPE] +[PAYMENTINFO] [AGEVERIFICATION] + </string> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) </string> <string name="AcctTypeResident" value="Résident"/> <string name="AcctTypeTrial" value="Essai"/> @@ -9,30 +13,47 @@ <string name="AcctTypeEmployee" value="Employé(e) de Linden Lab"/> <string name="PaymentInfoUsed" value="Infos de paiement utilisées"/> <string name="PaymentInfoOnFile" value="Infos de paiement enregistrées"/> - <string name="NoPaymentInfoOnFile" value="Aucune info de paiement"/> - <string name="AgeVerified" value="Âge vérifié"/> - <string name="NotAgeVerified" value="Âge non vérifié"/> + <string name="NoPaymentInfoOnFile" value="Aucune info de paiement enregistrée"/> + <string name="AgeVerified" value="Personne dont l'âge a été vérifié"/> + <string name="NotAgeVerified" value="Personne dont l'âge n'a pas été vérifié"/> <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"> <panel name="data_panel"> <panel name="lifes_images_panel"> + <panel name="second_life_image_panel"> + <text name="second_life_photo_title_text" value="[SECOND_LIFE]:"/> + </panel> <icon label="" name="2nd_life_edit_icon" tool_tip="Cliquez pour sélectionner une image"/> </panel> + <panel name="first_life_image_panel"> + <text name="real_world_photo_title_text" value="Monde physique :"/> + </panel> <icon label="" name="real_world_edit_icon" tool_tip="Cliquez pour sélectionner une image"/> <text name="title_homepage_text"> - Page d'accueil : + Page d'accueil : </text> + <line_editor name="homepage_edit" value="http://"/> <check_box label="Afficher dans les résultats de recherche" name="show_in_search_checkbox"/> - <text name="title_acc_status_text" value="Statut du compte :"/> + <text name="title_acc_status_text" value="Mon compte :"/> + <text_editor name="acc_status_text" value="Résident. Aucune info de paiement enregistrée."/> + <text name="my_account_link" value="[[URL] Accéder à ma Page d'accueil]"/> + <text name="title_partner_text" value="Mon partenaire :"/> + <panel name="partner_data_panel"> + <name_box initial_value="(récupération en cours)" name="partner_text" value="[FIRST] [LAST]"/> + </panel> + <text name="partner_edit_link" value="[[URL] Modifier]"/> </panel> </panel> </scroll_container> <panel name="profile_me_buttons_panel"> - <button label="Enregistrer les changements" name="save_btn"/> + <button label="Enregistrer les changements" name="save_btn" width="166"/> <button label="Annuler" name="cancel_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_shape.xml b/indra/newview/skins/default/xui/fr/panel_edit_shape.xml new file mode 100644 index 0000000000..450b23608a --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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"> + Sexe : + </text> + <radio_group name="sex_radio"> + <radio_item label="Femme" name="radio"/> + <radio_item label="Homme" name="radio2"/> + </radio_group> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shape_body_tab" title="Corps"/> + <accordion_tab name="shape_head_tab" title="Tête"/> + <accordion_tab name="shape_eyes_tab" title="Yeux"/> + <accordion_tab name="shape_ears_tab" title="Oreilles"/> + <accordion_tab name="shape_nose_tab" title="Nez"/> + <accordion_tab name="shape_mouth_tab" title="Bouche"/> + <accordion_tab name="shape_chin_tab" title="Menton"/> + <accordion_tab name="shape_torso_tab" title="Torse"/> + <accordion_tab name="shape_legs_tab" title="Jambes"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_shirt.xml new file mode 100644 index 0000000000..cf28cd8c1e --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shirt_main_tab" title="Chemise"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml b/indra/newview/skins/default/xui/fr/panel_edit_shoes.xml new file mode 100644 index 0000000000..a8e0910a15 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shoes_main_tab" title="Chaussures"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_skin.xml b/indra/newview/skins/default/xui/fr/panel_edit_skin.xml new file mode 100644 index 0000000000..dac005f6b6 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Tatouage tête" name="Head Tattoos" width="76" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Tatouage haut" name="Upper Tattoos" width="80" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Tatouage bas" name="Lower Tattoos" tool_tip="Cliquez pour sélectionner une image"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skin_color_tab" title="Couleur de peau"/> + <accordion_tab name="skin_face_tab" title="Détails du visage"/> + <accordion_tab name="skin_makeup_tab" title="Maquillage"/> + <accordion_tab name="skin_body_tab" title="Détails du corps"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_skirt.xml new file mode 100644 index 0000000000..e9784b9510 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skirt_main_tab" title="Jupe"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_socks.xml b/indra/newview/skins/default/xui/fr/panel_edit_socks.xml new file mode 100644 index 0000000000..6fc6a3dc77 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="socks_main_tab" title="Chaussettes"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/fr/panel_edit_tattoo.xml new file mode 100644 index 0000000000..7ab2aa6bc9 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Tatouage tête" name="Head Tattoo" width="76" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Tatouage haut" name="Upper Tattoo" width="80" tool_tip="Cliquez pour sélectionner une image"/> + <texture_picker label="Tatouage bas" name="Lower Tattoo" width="76" tool_tip="Cliquez pour sélectionner une image"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml b/indra/newview/skins/default/xui/fr/panel_edit_underpants.xml new file mode 100644 index 0000000000..90dcae18ec --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="underpants_main_tab" title="Caleçon"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/fr/panel_edit_undershirt.xml new file mode 100644 index 0000000000..950cdd7639 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image"/> + <color_swatch label="Couleur/Teinte" name="Color/Tint" width="80" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="undershirt_main_tab" title="Débardeur"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml b/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml new file mode 100644 index 0000000000..75b6c044f6 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Portable" name="panel_edit_wearable"> + <string name="edit_shape_title"> + Modification de la silhouette + </string> + <string name="edit_skin_title"> + Modification de la peau + </string> + <string name="edit_hair_title"> + Modification des cheveux + </string> + <string name="edit_eyes_title"> + Modification des yeux + </string> + <string name="edit_shirt_title"> + Modification de la chemise + </string> + <string name="edit_pants_title"> + Modification du pantalon + </string> + <string name="edit_shoes_title"> + Modification des chaussures + </string> + <string name="edit_socks_title"> + Modification des chaussettes + </string> + <string name="edit_jacket_title"> + Modification de la veste + </string> + <string name="edit_skirt_title"> + Modification de la jupe + </string> + <string name="edit_gloves_title"> + Modification des gants + </string> + <string name="edit_undershirt_title"> + Modification des sous-vêtements (homme) + </string> + <string name="edit_underpants_title"> + Modification des sous-vêtements (femme) + </string> + <string name="edit_alpha_title"> + Modification du masque alpha + </string> + <string name="edit_tattoo_title"> + Modification du tatouage + </string> + <string name="shape_desc_text"> + Silhouette : + </string> + <string name="skin_desc_text"> + Peau : + </string> + <string name="hair_desc_text"> + Cheveux : + </string> + <string name="eyes_desc_text"> + Yeux : + </string> + <string name="shirt_desc_text"> + Chemise : + </string> + <string name="pants_desc_text"> + Pantalon : + </string> + <string name="shoes_desc_text"> + Chaussures : + </string> + <string name="socks_desc_text"> + Chaussettes : + </string> + <string name="jacket_desc_text"> + Veste : + </string> + <string name="skirt_skirt_desc_text"> + Jupe : + </string> + <string name="gloves_desc_text"> + Gants : + </string> + <string name="undershirt_desc_text"> + Sous-vêtements (homme) : + </string> + <string name="underpants_desc_text"> + Sous-vêtements (femme) : + </string> + <string name="alpha_desc_text"> + Masque alpha : + </string> + <string name="tattoo_desc_text"> + Tatouage : + </string> + <text name="edit_wearable_title" value="Modification de la silhouette"/> + <panel label="Chemise" name="wearable_type_panel"> + <text name="description_text" value="Silhouette :"/> + </panel> + <panel name="button_panel"> + <button label="Enregistrer sous" name="save_as_button"/> + <button label="Rétablir" width="130" name="revert_button"/> + </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 cbeb10287d..ad9e3daf3d 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 à un 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 new file mode 100644 index 0000000000..69403939aa --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_group_control_panel.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_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 9afc4ae11d..cf71a28451 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_general.xml @@ -1,70 +1,55 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Général" name="general_tab"> - <string name="help_text"> - L'onglet Général contient les infos générales et les préférences du groupe ainsi que la liste des propriétaires et des membres visibles. - </string> - <string name="group_info_unchanged"> + <panel.string name="help_text"> + L'onglet Général contient les informations générales et les préférences du groupe ainsi que la liste et les options des membres. + +Faites glisser le pointeur de la souris sur les options pour en savoir plus. + </panel.string> + <panel.string name="group_info_unchanged"> Le profil du groupe a changé. - </string> - <button label="?" label_selected="?" name="help_button"/> - <line_editor label="Saisissez le nom du groupe ici" name="group_name_editor"/> - <text name="group_name"> - Saisissez le nom du groupe ici - </text> - <text name="prepend_founded_by"> - Fondé par - </text> - <text left_delta="54" name="founder_name"> - (en attente) - </text> - <text name="group_charter_label"> - Charte du groupe - </text> - <texture_picker label="Logo du groupe" name="insignia" tool_tip="Cliquez pour sélectionner une image"/> + </panel.string> + <panel.string name="incomplete_member_data_str"> + Extraction des données du résident en cours + </panel.string> + <panel name="group_info_top"> + <texture_picker label="" name="insignia" tool_tip="Cliquez pour sélectionner une image"/> + <text name="prepend_founded_by"> + Fondateur : + </text> + <name_box initial_value="(récupération en cours)" name="founder_name"/> + <text name="join_cost_text"> + Gratuit + </text> + <button label="REJOINDRE" name="btn_join"/> + </panel> <text_editor name="charter"> Indiquez ici la charte de votre groupe </text_editor> - <button label="Rejoindre (0L$)" label_selected="Rejoindre (0L$)" name="join_button"/> - <button label="Affichage détaillé" label_selected="Affichage détaillé" name="info_button"/> - <text name="text_owners_and_visible_members"> - Propriétaires et membres visibles - </text> - <text name="text_owners_are_shown_in_bold"> - (Les propriétaires apparaissent en gras) - </text> <name_list name="visible_members"> - <name_list.columns label="Nom du membre" name="name" relwidth="0.40"/> + <name_list.columns label="Membre" name="name" relwidth="0.40"/> <name_list.columns label="Titre" name="title" relwidth="0.25"/> - <name_list.columns label="Dernière connexion" name="online" relwidth="0.35"/> + <name_list.columns label="Statut" name="status"/> </name_list> - <text name="text_group_preferences"> - Préférences + <text name="my_group_settngs_label"> + Moi </text> + <text name="active_title_label"> + 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 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="Afficher dans la recherche" name="show_in_group_list" tool_tip="Afficher ce groupe dans les résultats de recherche."/> - <check_box label="Inscription libre" name="open_enrollement" tool_tip="Indique si une invitation est nécessaire pour devenir membre de ce groupe."/> - <check_box label="Frais d'inscription :" name="check_enrollment_fee" tool_tip="Indique s'il y a des frais d'inscription pour devenir membre."/> - <spinner name="spin_enrollment_fee" tool_tip="Si la case Frais d'inscription est cochée, cela signifie qu'il faut payer des frais pour devenir membre."/> - <combo_box name="group_mature_check" tool_tip="Indique si les informations sur votre groupe sont classées Mature." width="195"> - <combo_box.item name="select_mature" label="- Type de public -"/> - <combo_box.item name="mature" label="Contenu Mature"/> - <combo_box.item name="pg" label="Contenu PG"/> + <text name="group_settngs_label"> + Groupe + </text> + <check_box label="Inscription ouverte à tous" name="open_enrollement" tool_tip="Indique si ce groupe autorise les nouveaux membres à le rejoindre sans y être invités."/> + <check_box label="Inscription payante" 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."/> + <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 name="title_container"> - <text name="active_title_label"> - Mon titre actuel - </text> - <combo_box name="active_title" tool_tip="Définit le titre qui apparaît près du nom de votre avatar lorsque ce groupe est actif."/> - </panel> - <check_box label="Recevoir les notices" name="receive_notices" tool_tip="Cochez 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 que ce groupe apparaisse dans votre profil"/> + <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"/> </panel> - <string name="incomplete_member_data_str"> - Extraction des données du résident en cours - </string> - <string name="confirm_group_create_str"> - La création de ce groupe coûte 100 L$. -Êtes-vous vraiment certain de vouloir dépenser 100 L$ pour créer ce groupe ? -Sachez que si personne ne rejoint ce groupe sous 48h, il sera démantelé et ne pourra plus être utilisé. - </string> </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 new file mode 100644 index 0000000000..5b08b4aefb --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Profil du groupe" name="GroupInfo"> + <panel.string name="default_needs_apply_text"> + Certaines modifications n'ont pas été enregistrées. + </panel.string> + <panel.string name="want_apply_text"> + Voulez-vous enregistrer ces modifications ? + </panel.string> + <panel.string name="group_join_btn"> + Rejoindre ([AMOUNT] L$)... + </panel.string> + <panel.string name="group_join_free"> + Gratuit + </panel.string> + <panel name="group_info_top"> + <text name="group_name" value="(en cours de chargement...)"/> + <line_editor label="Saisissez le nom du groupe ici" name="group_name_editor"/> + </panel> + <layout_stack name="layout"> + <layout_panel name="group_accordions"> + <accordion name="groups_accordion"> + <accordion_tab name="group_general_tab" title="Général"/> + <accordion_tab name="group_roles_tab" title="Rôles"/> + <accordion_tab name="group_notices_tab" title="Notices"/> + <accordion_tab name="group_land_tab" title="Terrain/Actifs"/> + </accordion> + </layout_panel> + <layout_panel name="button_row"> + <button label="Chat" name="btn_chat"/> + <button label="Appel de groupe" name="btn_call" tool_tip="Appeler ce groupe"/> + <button label="Enregistrer" label_selected="Enregistrer" name="btn_apply"/> + <button label="Créer un groupe" name="btn_create" tool_tip="Créer un groupe"/> + </layout_panel> + </layout_stack> +</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 7055d9e3f2..53f7ac33c2 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_invite.xml @@ -7,20 +7,18 @@ (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 noms, maintenez la touche Ctrl enfoncée en cliquant sur le nom des résidents."/> - <button label="Supprimer de la liste" name="remove_button" tool_tip="Supprime les résidents sélectionnés de la liste des invités."/> + <name_list name="invitee_list" tool_tip="Pour sélectionner plusieurs résidents, maintenez la touche Ctrl enfoncée et cliquez sur leurs noms"/> + <button label="Supprimer de la liste" name="remove_button" tool_tip="Supprime les résidents sélectionnés ci-dessus de la liste des invités"/> <text name="role_text"> Assignez-leur un rôle : </text> - <combo_box name="role_name" tool_tip="Choisissez des rôles à assigner aux membres dans la liste."/> + <combo_box name="role_name" tool_tip="Choisissez dans la liste de rôles que vous êtes autorisé(e) à attribuer aux membres"/> <button label="Envoyer les invitations" name="ok_button"/> <button label="Annuler" name="cancel_button"/> <string name="GroupInvitation"> diff --git a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml index 3ffdf53e7c..a10eaf9d18 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_land_money.xml @@ -1,86 +1,81 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Terrain et L$" name="land_money_tab"> - <string name="help_text"> - Les parcelles appartenant au groupe sont indiquées avec le détails des contributions. Un avertissement apparaît si la surface utilisée par le groupe est supérieure ou égale au total des contributions. Les onglets Planification, Détails et Ventes correspondent aux finances du groupe. - </string> - <button label="?" name="help_button"/> - <string name="cant_view_group_land_text"> - Vous n'avez pas la permission de voir quel terrain possède ce groupe. - </string> - <string name="cant_view_group_accounting_text"> - Vous n'avez pas la permission d'accéder aux informations -financières de ce groupe. - </string> - <string name="loading_txt"> + <panel.string name="help_text"> + Un avertissement apparaît si la surface utilisée par le groupe est supérieure ou égale au total des contributions. + </panel.string> + <panel.string name="cant_view_group_land_text"> + Vous n'avez pas la permission de voir quel terrain possède ce groupe + </panel.string> + <panel.string name="cant_view_group_accounting_text"> + Vous n'avez pas la permission d'accéder aux informations financières de ce groupe. + </panel.string> + <panel.string name="loading_txt"> Chargement... - </string> - <text name="group_land_heading"> - Terrain du groupe - </text> - <scroll_list name="group_parcel_list"> - <column label="Parcelle" name="name"/> - <column label="Région" name="location"/> - <column label="Type" name="type"/> - <column label="Surface" name="area"/> - <column label="" name="hidden"/> - </scroll_list> - <button label="Carte" label_selected="Carte" name="map_button"/> - <text name="total_contributed_land_label"> - Total des contributions : - </text> - <text name="total_contributed_land_value"> - [AREA] m² - </text> - <text name="total_land_in_use_label"> - Superficie déjà utilisée : - </text> - <text name="total_land_in_use_value"> - [AREA] m² - </text> - <text name="land_available_label"> - Superficie disponible : - </text> - <text name="land_available_value"> - [AREA] m² - </text> - <text name="your_contribution_label"> - Votre contribution : - </text> - <string name="land_contrib_error"> - Impossible de définir votre don de terre. - </string> - <text name="your_contribution_units"> - ( m² ) - </text> - <text name="your_contribution_max_value"> - ([AMOUNT] max.) - </text> - <text name="group_over_limit_text"> - Une contribution supplémentaire du groupe est requise pour prendre en -charge le terrain utilisé. - </text> - <text name="group_money_heading"> - Finances - </text> + </panel.string> + <panel.string name="land_contrib_error"> + Impossible de définir votre don de terrain + </panel.string> + <panel name="layout_panel_landmoney"> + <scroll_list name="group_parcel_list"> + <scroll_list.columns label="Parcelle" name="name"/> + <scroll_list.columns label="Région" name="location"/> + <scroll_list.columns label="Type" name="type"/> + <scroll_list.columns label="Surface" name="area"/> + </scroll_list> + <text name="total_contributed_land_label"> + Total des contributions : + </text> + <text name="total_contributed_land_value"> + [AREA] m² + </text> + <button label="Carte" label_selected="Carte" name="map_button"/> + <text name="total_land_in_use_label"> + Superficie déjà utilisée : + </text> + <text name="total_land_in_use_value"> + [AREA] m² + </text> + <text name="land_available_label"> + Superficie disponible : + </text> + <text name="land_available_value"> + [AREA] m² + </text> + <text name="your_contribution_label"> + Votre contribution : + </text> + <text name="your_contribution_units"> + m² + </text> + <text name="your_contribution_max_value"> + ([AMOUNT] max.) + </text> + <text name="group_over_limit_text"> + Une contribution supplémentaire est requise pour prendre en charge le terrain utilisé + </text> + <text name="group_money_heading"> + Finances + </text> + </panel> <tab_container name="group_money_tab_container"> - <panel label="Planification" name="group_money_planning_tab"> + <panel label="PLANIFICATION" name="group_money_planning_tab"> <text_editor name="group_money_planning_text"> - Calcul en cours... + Chargement... </text_editor> </panel> - <panel label="Détails" name="group_money_details_tab"> + <panel label="DÉTAILS" name="group_money_details_tab"> <text_editor name="group_money_details_text"> - Calcul en cours... + Chargement... </text_editor> - <button label="< Plus tôt" label_selected="< Plus tôt" name="earlier_details_button" tool_tip="Reculer dans le temps"/> - <button label="Plus tard >" label_selected="Plus tard >" name="later_details_button" tool_tip="Avancer dans le temps"/> + <button label="< Plus tôt" label_selected="< Plus tôt" name="earlier_details_button" tool_tip="Précédent"/> + <button label="Plus tard >" label_selected="Plus tard >" name="later_details_button" tool_tip="Suivant"/> </panel> - <panel label="Ventes" name="group_money_sales_tab"> + <panel label="VENTES" name="group_money_sales_tab"> <text_editor name="group_money_sales_text"> - Calcul en cours... + Chargement... </text_editor> - <button label="< Plus tôt" label_selected="< Plus tôt" name="earlier_sales_button" tool_tip="Reculer dans le temps"/> - <button label="Plus tard >" label_selected="Plus tard >" name="later_sales_button" tool_tip="Avancer dans le temps"/> + <button label="< Plus tôt" label_selected="< Plus tôt" name="earlier_sales_button" tool_tip="Précédent"/> + <button label="Plus tard >" label_selected="Plus tard >" name="later_sales_button" tool_tip="Suivant"/> </panel> </tab_container> </panel> 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 a61cb787a8..5fb69d1989 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 432bb8b9c1..35a5caaa92 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_notices.xml @@ -1,59 +1,57 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Notices" name="notices_tab"> - <text name="help_text"> - Les notices vous permettent d'envoyer des messages et pièces-jointes aux membres du groupe autorisés à les recevoir. Vous pouvez désactiver la réception des notices à l'onglet Général. - </text> - <text name="no_notices_text"> - Aucune notice - </text> - <button label="?" label_selected="?" name="help_button"/> - <text name="lbl"> - Anciennes notices du groupe - </text> + <panel.string name="help_text"> + 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 + </panel.string> <text name="lbl2"> - Les notes sont conservées pendant 14 jours. La limite est de 200 notes quotidiennes par groupe. + Les notices sont conservées pendant 14 jours. +200 max. par groupe et par jour. </text> <scroll_list name="notice_list"> - <column label="" name="icon"/> - <column label="Sujet" name="subject"/> - <column label="De" name="from"/> - <column label="Date" name="date"/> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="Sujet" name="subject"/> + <scroll_list.columns label="De" name="from"/> + <scroll_list.columns label="Date" name="date"/> </scroll_list> <text name="notice_list_none_found"> - Aucun résultat. + Aucun résultat </text> - <button label="Nouvelle note" label_selected="Créer une notice" name="create_new_notice"/> - <button label="Rafraîchir" label_selected="Rafraîchir la liste" name="refresh_notices"/> + <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" 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 </text> - <text name="lbl2"> - Vous pouvez ajouter un objet simple à la note en le faisant glisser de votre inventaire vers cette section. Les objets joints doivent pouvoir être copiés et transférés. Vous ne pouvez pas envoyer de dossier. - </text> - <text bottom_delta="-79" left="20" name="lbl3"> + <text name="lbl3"> Sujet : </text> - <line_editor left_delta="61" name="create_subject" width="331"/> - <text left="20" name="lbl4"> + <line_editor name="create_subject"/> + <text name="lbl4"> Message : </text> - <text_editor bottom_delta="-90" height="104" left_delta="61" name="create_message" width="330"/> - <text name="lbl5" width="68"> + <text_editor name="create_message"/> + <text name="lbl5"> Pièce-jointe : </text> - <line_editor left_delta="74" name="create_inventory_name" width="190"/> - <button label="Supprimer pièce-jointe" 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"/> - <panel name="drop_target2" 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."/> - <panel 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."/> + <line_editor name="create_inventory_name"/> + <text name="string"> + Faire glisser l'objet et le déposer ici pour le joindre : + </text> + <button label="Supprimer" label_selected="Supprimer pièce-jointe" name="remove_attachment" tool_tip="Supprimer la pièce jointe de votre notification"/> + <button label="Envoyer" label_selected="Envoyer" left="200" name="send_notice" width="100"/> + <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"> Détails </text> <text name="lbl2"> - Pour envoyer une nouvelle notice, cliquez sur Créer une notice ci-dessus. + Pour envoyer une nouvelle notice, cliquez sur le bouton + </text> <text name="lbl3"> Sujet : @@ -61,7 +59,7 @@ <text name="lbl4"> Message : </text> - <button label="Ouvrir pièce-jointe" label_selected="Ouvrir pièce-jointe" name="open_attachment" width="118"/> <line_editor left="128" name="view_inventory_name" width="256"/> + <button label="Ouvrir la pièce jointe" label_selected="Ouvrir pièce-jointe" name="open_attachment" width="118"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_group_notify.xml b/indra/newview/skins/default/xui/fr/panel_group_notify.xml new file mode 100644 index 0000000000..08a49f908c --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_group_notify.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="instant_message" name="panel_group_notify"> + <string name="message_max_lines_count" value="7"/> + <string name="subject_font" value="SANSSERIF_BIG"/> + <string name="date_font" value="SANSSERIF"/> + <panel label="en-tête" name="header"> + <text name="title" value="Nom de l'expéditeur / Nom du groupe"/> + </panel> + <text_editor name="message" value="message"/> + <text name="attachment" value="Pièce jointe"/> + <button label="OK" name="btn_ok"/> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_group_roles.xml b/indra/newview/skins/default/xui/fr/panel_group_roles.xml index 65aaab40f1..7fc10833ea 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_roles.xml @@ -1,49 +1,60 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Membres et rôles" name="roles_tab"> <panel.string name="default_needs_apply_text"> - Certains changements n'ont pas été appliqués sur ce sous-onglet. + Certaines modifications n'ont pas été enregistrées. </panel.string> <panel.string name="want_apply_text"> - Voulez-vous enregistrer les modifications ? + Voulez-vous enregistrer vos modifications ? </panel.string> - <tab_container height="164" name="roles_tab_container"> - <panel height="148" label="Membres" name="members_sub_tab" tool_tip="Membres"> + <tab_container name="roles_tab_container"> + <panel label="MEMBRES" name="members_sub_tab" tool_tip="Membres"> <panel.string name="help_text"> Vous pouvez ajouter ou supprimer les rôles assignés aux membres. Pour sélectionner plusieurs membres, cliquez sur leurs noms en maintenant la touche Ctrl enfoncée. </panel.string> <filter_editor label="Filtrer les membres" name="filter_input"/> - <name_list bottom_delta="-105" height="104" name="member_list"> + <name_list name="member_list"> <name_list.columns label="Membre" name="name"/> - <name_list.columns label="Donations" name="donated" width="116"/> - <name_list.columns label="En ligne" name="online" width="136"/> + <name_list.columns label="Donation" name="donated" width="116"/> + <name_list.columns label="Statut" name="online" width="136"/> </name_list> <button label="Inviter" name="member_invite" width="165"/> <button label="Expulser" name="member_eject"/> </panel> - <panel height="148" label="Rôles" name="roles_sub_tab"> + <panel label="RÔLES" name="roles_sub_tab"> <panel.string name="help_text"> - Chaque rôle possède un titre et des pouvoirs. Un membre peut avoir plusieurs rôles mais il ne peut y avoir que 10 rôles dans un groupe, Visiteur et Propriétaire inclus. + Chaque rôle possède un titre et des +pouvoirs. Les membres peuvent avoir +un ou plusieurs rôles. Un groupe peut avoir jusqu'à 10 rôles, +notamment les rôles Tous et Propriétaire. </panel.string> <panel.string name="cant_delete_role"> Les rôles Tous et Propriétaires sont spéciaux et ne peuvent pas être supprimés. </panel.string> + <panel.string name="power_folder_icon"> + Inv_FolderClosed + </panel.string> + <panel.string name="power_all_have_icon"> + Checkbox_On + </panel.string> + <panel.string name="power_partial_icon"> + Checkbox_Off + </panel.string> <filter_editor label="Filtrer les rôles" name="filter_input"/> - <scroll_list bottom_delta="-104" height="104" name="role_list"> + <scroll_list name="role_list"> <scroll_list.columns label="Rôle" name="name"/> <scroll_list.columns label="Titre" name="title"/> - <scroll_list.columns label="Membres" name="members"/> + <scroll_list.columns label="#" name="members"/> </scroll_list> - <button label="Ajouter un rôle" name="role_create"/> - <button label="Supprimer le rôle" name="role_delete"/> + <button label="Nouveau rôle" name="role_create"/> + <button label="Supprimer le rôle" name="role_delete" width="120"/> </panel> - <panel height="148" label="Pouvoirs" name="actions_sub_tab" tool_tip="Vous pouvez afficher une description du pouvoir et voir quels membres et rôles peuvent s'en servir."> + <panel height="148" label="POUVOIRS" name="actions_sub_tab" tool_tip="Vous pouvez afficher une description du pouvoir et voir quels membres et rôles peuvent s'en servir."> <panel.string name="help_text"> Les pouvoirs déterminent les facultés de chaque membre dans le groupe. </panel.string> <filter_editor label="Filtrer les pouvoirs" name="filter_input"/> - <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Sélectionnez un pouvoir pour en afficher les détails."> - <scroll_list.columns label="" name="icon"/> + <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Sélectionnez un pouvoir pour en savoir plus"> <scroll_list.columns label="" name="action"/> </scroll_list> </panel> @@ -59,47 +70,36 @@ Pour sélectionner plusieurs membres, cliquez sur leurs noms en maintenant la to <text name="static2"> Pouvoirs attribués </text> - <scroll_list name="member_allowed_actions" tool_tip="Pour avoir des détails sur chacun des pouvoirs attribués, allez à l'onglet Pouvoirs."> - <scroll_list.columns label="" name="icon"/> + <scroll_list name="member_allowed_actions" tool_tip="Pour en savoir plus sur chaque pouvoir, consultez l'onglet Pouvoirs"> <scroll_list.columns label="" name="action"/> </scroll_list> </panel> <panel name="roles_footer"> <text name="static"> - Nom + Nom du rôle </text> - <line_editor name="role_name"> - Employés - </line_editor> + <line_editor name="role_name"/> <text name="static3"> - Titre + Titre du rôle </text> - <line_editor name="role_title"> - (en attente) - </line_editor> + <line_editor name="role_title"/> <text name="static2"> Description </text> - <text_editor name="role_description"> - (en attente) - </text_editor> + <text_editor name="role_description"/> <text name="static4"> Membres assignés </text> - <check_box label="Membres visibles" name="role_visible_in_list" tool_tip="Définit si les membres de ce rôle sont visibles à partir de l'onglet Général aux personnes en dehors du groupe."/> + <check_box label="Afficher les membres" name="role_visible_in_list" tool_tip="Détermine si les personnes n'appartenant pas au groupe peuvent voir les membres de ce rôle dans l'onglet Général."/> <text name="static5" tool_tip="Une liste des pouvoirs auquel le rôle sélectionné a accès."> Pouvoirs attribués </text> - <scroll_list name="role_allowed_actions" tool_tip="Pour avoir des détails sur chacun des pouvoirs attribués, allez à l'onglet Pouvoirs."> - <scroll_list.columns label="" name="icon"/> + <scroll_list name="role_allowed_actions" tool_tip="Pour en savoir plus sur chaque pouvoir, consultez l'onglet Pouvoirs"> <scroll_list.columns label="" name="checkbox"/> <scroll_list.columns label="" name="action"/> </scroll_list> </panel> <panel name="actions_footer"> - <text name="static"> - Description - </text> <text_editor name="action_description"> Ce pouvoir permet d'expulser des membres du groupe. Seul un propriétaire peut expulser un autre propriétaire. </text_editor> diff --git a/indra/newview/skins/default/xui/fr/panel_groups.xml b/indra/newview/skins/default/xui/fr/panel_groups.xml index 98320656fb..4cda98b9f7 100644 --- a/indra/newview/skins/default/xui/fr/panel_groups.xml +++ b/indra/newview/skins/default/xui/fr/panel_groups.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="groups"> <scroll_list bottom="50" name="group list"/> - <text bottom="16" height="32" name="groupdesc" width="268"> + <text name="groupdesc"> Le groupe actif est en gras. </text> - <text bottom="3" name="groupcount"> + <text name="groupcount" width="280"> Vous appartenez à [COUNT] groupes ([MAX] max). </text> <button label="IM/Appel" name="IM" tool_tip="Ouvrir une session de messagerie instantanée"/> 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 340ca75d19..115e25e487 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,9 +1,30 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <button label="Voir le profil" name="view_profile_btn"/> - <button label="Devenir amis" name="add_friend_btn"/> - <button label="Partager" name="share_btn"/> - <panel name="panel_call_buttons"> - <button label="Appeler" name="call_btn"/> - </panel> + <text name="avatar_name" value="Inconnu"/> + <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" tool_tip="Proposer de téléporter cette personne"/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="Partager" name="share_btn"/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="Payer" name="pay_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_instant_message.xml b/indra/newview/skins/default/xui/fr/panel_instant_message.xml new file mode 100644 index 0000000000..bf3720f411 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_instant_message.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="im_panel" name="im_panel"> + <string name="message_max_lines_count"> + 6 + </string> + <panel label="im_header" name="im_header"> + <text name="user_name" value="Erica Vader"/> + <text name="time_box" value="23:30"/> + </panel> + <button label="Répondre" name="reply"/> +</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 new file mode 100644 index 0000000000..4001616034 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_landmark_info.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="landmark_info"> + <string name="title_create_landmark" value="Créer un repère"/> + <string name="title_edit_landmark" value="Modifier le repère"/> + <string name="title_landmark" value="Repère"/> + <string name="not_available" value="(s/o)"/> + <string name="unknown" value="(inconnu)"/> + <string name="public" value="(public)"/> + <string name="server_update_text"> + Les informations sur le lieu ne sont pas disponibles sans mise à jour du serveur. + </string> + <string name="server_error_text"> + Aucune information sur ce lieu n'est disponible actuellement, veuillez réessayer ultérieurement. + </string> + <string name="server_forbidden_text"> + Les informations sur ce lieu ne sont pas disponibles car l'accès y est restreint. Veuillez vérifier vos droits avec le propriétaire de la parcelle. + </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> + <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"> + <text name="region_title" value="SampleRegion"/> + <text name="parcel_title" value="SampleParcel, Name Long (145, 228, 26)"/> + <expandable_text name="description" value="Du waltz die spritz"/> + <text name="maturity_value" value="(inconnu)"/> + <panel name="landmark_info_panel"> + <text name="owner_label" value="Propriétaire :"/> + <text name="creator_label" value="Créé par :"/> + <text name="created_label" value="Le :"/> + </panel> + <panel name="landmark_edit_panel"> + <text name="title_label" value="Titre :"/> + <text name="notes_label" value="Mes notes :"/> + <text name="folder_label" value="Emplacement du repère :"/> + </panel> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_landmarks.xml b/indra/newview/skins/default/xui/fr/panel_landmarks.xml new file mode 100644 index 0000000000..9c15b0bbd3 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Barre des Favoris"/> + <accordion_tab name="tab_landmarks" title="Mes repères"/> + <accordion_tab name="tab_inventory" title="Mon inventaire"/> + <accordion_tab name="tab_library" title="Bibliothèque"/> + </accordion> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Afficher d'autres options"/> + <button name="add_btn" tool_tip="Ajouter un nouveau repère"/> + <dnd_button name="trash_btn" tool_tip="Supprimer le repère sélectionné"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_login.xml b/indra/newview/skins/default/xui/fr/panel_login.xml index f7ab2891e8..209a803e07 100644 --- a/indra/newview/skins/default/xui/fr/panel_login.xml +++ b/indra/newview/skins/default/xui/fr/panel_login.xml @@ -6,14 +6,40 @@ <panel.string name="forgot_password_url"> http://secondlife.com/account/request.php?lang=fr </panel.string> - <panel name="login_widgets"> - <line_editor name="first_name_edit" tool_tip="Prénom sur [SECOND_LIFE]"/> - <line_editor name="last_name_edit" tool_tip="Nom sur [SECOND_LIFE]"/> - <text name="start_location_text"> - Lieu de départ : - </text> - <text name="create_new_account_text"> - Créer un compte - </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="Enregistrer" name="remember_check"/> + <text name="start_location_text"> + Commencer à : + </text> + <combo_box name="start_location_combo" width="152"> + <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 new file mode 100644 index 0000000000..5faba01339 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_main_inventory.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Choses" name="main inventory panel"> + <panel.string name="Title"> + Choses + </panel.string> + <filter_editor label="Filtrer l'inventaire" name="inventory search editor"/> + <tab_container name="inventory filter tabs"> + <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"/> + <button name="add_btn" tool_tip="Ajouter un nouvel article"/> + <dnd_button name="trash_btn" tool_tip="Supprimer l'article sélectionné"/> + </panel> + <menu_bar name="Inventory Menu"> + <menu label="Fichier" name="File"> + <menu_item_call label="Ouvrir" name="Open"/> + <menu label="Charger" name="upload"> + <menu_item_call label="Image ([COST] L$)..." name="Upload Image"/> + <menu_item_call label="Son ([COST] L$)..." name="Upload Sound"/> + <menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/> + <menu_item_call label="Lot ([COST] L$ par fichier)..." name="Bulk Upload"/> + </menu> + <menu_item_call label="Nouvelle fenêtre" name="New Window"/> + <menu_item_call label="Afficher les filtres" name="Show Filters"/> + <menu_item_call label="Réinitialiser les filtres" name="Reset Current"/> + <menu_item_call label="Fermer tous les dossiers" name="Close All Folders"/> + <menu_item_call label="Vider la corbeille" name="Empty Trash"/> + <menu_item_call label="Vider les Objets trouvés" name="Empty Lost And Found"/> + </menu> + <menu label="Créer" name="Create"> + <menu_item_call label="Nouveau dossier" name="New Folder"/> + <menu_item_call label="Nouveau script" name="New Script"/> + <menu_item_call label="Nouvelle note" name="New Note"/> + <menu_item_call label="Nouveau geste" name="New Gesture"/> + <menu label="Nouveaux habits" name="New Clothes"> + <menu_item_call label="Nouvelle chemise" name="New Shirt"/> + <menu_item_call label="Nouveau pantalon" name="New Pants"/> + <menu_item_call label="Nouvelles chaussures" name="New Shoes"/> + <menu_item_call label="Nouvelles chaussettes" name="New Socks"/> + <menu_item_call label="Nouvelle veste" name="New Jacket"/> + <menu_item_call label="Nouvelle jupe" name="New Skirt"/> + <menu_item_call label="Nouveaux gants" name="New Gloves"/> + <menu_item_call label="Nouveau débardeur" name="New Undershirt"/> + <menu_item_call label="Nouveau caleçon" name="New Underpants"/> + <menu_item_call label="Nouvel alpha" name="New Alpha"/> + <menu_item_call label="Nouveau tatouage" name="New Tattoo"/> + </menu> + <menu label="Nouvelles parties du corps" name="New Body Parts"> + <menu_item_call label="Nouvelle silhouette" name="New Shape"/> + <menu_item_call label="Nouvelle peau" name="New Skin"/> + <menu_item_call label="Nouveaux cheveux" name="New Hair"/> + <menu_item_call label="Nouveaux yeux" name="New Eyes"/> + </menu> + </menu> + <menu label="Trier" name="Sort"> + <menu_item_check label="Par nom" name="By Name"/> + <menu_item_check label="Par date" name="By Date"/> + <menu_item_check label="Dossiers toujours par nom" name="Folders Always By Name"/> + <menu_item_check label="Dossiers système en premier" name="System Folders To Top"/> + </menu> + </menu_bar> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_me.xml b/indra/newview/skins/default/xui/fr/panel_me.xml index 5bedee4616..2521967bc6 100644 --- a/indra/newview/skins/default/xui/fr/panel_me.xml +++ b/indra/newview/skins/default/xui/fr/panel_me.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Moi" name="panel_me"> +<panel label="Mon profil" name="panel_me"> <tab_container name="tabs"> - <panel label="Mon Profil" name="panel_profile"/> - <panel label="Préférences" name="panel_picks"/> + <panel label="MON PROFIL" name="panel_profile"/> + <panel label="MES PRÉFÉRENCES" name="panel_picks"/> </tab_container> </panel> 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 new file mode 100644 index 0000000000..afd2d9cd8f --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_media_settings_general.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Général" name="Media Settings General"> + <text name="home_label"> + Page d'accueil : + </text> + <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"> + Page actuelle : + </text> + <text name="current_url" tool_tip="La page actuelle pour cette source média" value=""/> + <button label="Réinitialiser" name="current_url_reset_btn"/> + <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"/> + <check_box initial_value="false" label="Lecture auto du média" name="auto_play"/> + <text name="media_setting_note"> + Remarque : kes résidents peuvent ignorer ce paramètre + </text> + <check_box initial_value="false" label="Mise à l'échelle auto du média sur la face de l'objet" name="auto_scale"/> + <text name="size_label"> + Taille : + </text> + <text name="X_label"> + X + </text> +</panel> 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 new file mode 100644 index 0000000000..6f6ae035a1 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_media_settings_permissions.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<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="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="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="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 new file mode 100644 index 0000000000..9d070b7aff --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_media_settings_security.xml @@ -0,0 +1,13 @@ +<?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 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 new file mode 100644 index 0000000000..73affc3420 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_my_profile.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Profil" name="panel_profile"> + <string name="CaptionTextAcctInfo"> + [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> + <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_editor name="acc_status_text"> + Résident. Aucune info de paiement enregistrée. + Linden. + </text_editor> + <text name="title_partner_text" value="Partenaire :"/> + <panel name="partner_data_panel"> + <name_box initial_value="(récupération en cours)" name="partner_text"/> + </panel> + <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 new file mode 100644 index 0000000000..45caf2323d --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_navigation_bar.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="navigation_bar"> + <panel name="navigation_panel"> + <pull_button name="back_btn" tool_tip="Revenir à l'emplacement précédent"/> + <pull_button name="forward_btn" tool_tip="Avancer d'un emplacement"/> + <button name="home_btn" tool_tip="Me téléporter jusqu'à mon domicile"/> + <location_input label="Emplacement" name="location_combo"/> + <search_combo_box label="Rechercher" name="search_combo_box" tool_tip="Rechercher"> + <combo_editor label="Rechercher dans [SECOND_LIFE]" name="search_combo_editor"/> + </search_combo_box> + </panel> + <favorites_bar name="favorite" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life."> + <label name="favorites_bar_label" tool_tip="Faites glisser des repères ici pour un accès rapide à vos lieux favoris dans Second Life."> + Favoris + </label> + <chevron_button name=">>" tool_tip="Afficher d'avantage de Favoris"/> + </favorites_bar> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml new file mode 100644 index 0000000000..b506a202bd --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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" +width="170">CHAT PRÈS DE MOI</text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml index c236c59fbc..82cdf292ab 100644 --- a/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_nearby_chat_bar.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="chat_bar"> <line_editor label="Cliquer ici pour chatter." name="chat_box" tool_tip="Appuyer sur Entrée pour dire, Ctrl-Entrée pour crier"/> + <button name="show_nearby_chat" tool_tip="Affiche/Masque le journal de chats près de vous"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_media.xml b/indra/newview/skins/default/xui/fr/panel_nearby_media.xml new file mode 100644 index 0000000000..71e65232aa --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_nearby_media.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="nearby_media"> + <string name="empty_item_text"> + <vide> + </string> + <string name="parcel_media_name"> + Flux de média de la parcelle + </string> + <string name="parcel_audio_name"> + Flux audio de la parcelle + </string> + <string name="playing_suffix"> + (lecture en cours) + </string> + <panel name="minimized_controls"> + <button label="Tout arrêter" name="all_nearby_media_disable_btn" tool_tip="Désactiver tous les médias près de vous"/> + <button label="Tout lancer" name="all_nearby_media_enable_btn" tool_tip="Activer tous les médias près de vous"/> + <button name="open_prefs_btn" tool_tip="Ouvrir les préférences de média"/> + <button label="Plus >>" label_selected="Moins <<" name="more_less_btn" tool_tip="Options avancées"/> + </panel> + <panel name="nearby_media_panel"> + <combo_box name="show_combo"> + <combo_box.item label="Tout" name="All"/> + <combo_box.item label="Dans cette parcelle" name="WithinParcel"/> + <combo_box.item label="En dehors de la parcelle" name="OutsideParcel"/> + </combo_box> + <scroll_list name="media_list"> + <scroll_list.columns label="Proximité" name="media_proximity"/> + <scroll_list.columns label="Visible" name="media_visibility"/> + <scroll_list.columns label="Classe" name="media_class"/> + <scroll_list.columns label="Nom" name="media_name"/> + <scroll_list.columns label="Débogage" name="media_debug"/> + </scroll_list> + <panel> + <layout_stack name="media_controls"> + <layout_panel name="stop"> + <button name="stop_btn" tool_tip="Arrêter le média sélectionné"/> + </layout_panel> + <layout_panel name="play"> + <button name="play_btn" tool_tip="Jouer le média sélectionné"/> + </layout_panel> + <layout_panel name="pause"> + <button name="pause_btn" tool_tip="Pauser le média sélectionné"/> + </layout_panel> + <layout_panel name="volume_slider_ctrl"> + <slider_bar initial_value="0.5" name="volume_slider" tool_tip="Volume audio pour le média sélectionné"/> + </layout_panel> + <layout_panel name="mute"> + <button name="mute_btn" tool_tip="Couper l'audio sur le média sélectionné"/> + </layout_panel> + <layout_panel name="zoom"> + <button name="zoom_btn" tool_tip="Zoomer en avant sur le média sélectionné"/> + </layout_panel> + <layout_panel name="unzoom"> + <button name="unzoom_btn" tool_tip="Zoomer en arrière sur le média sélectionné"/> + </layout_panel> + </layout_stack> + </panel> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_notes.xml b/indra/newview/skins/default/xui/fr/panel_notes.xml new file mode 100644 index 0000000000..f4e4f8a4ab --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_notes.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Notes/Perso" name="panel_notes"> + <layout_stack name="layout"> + <layout_panel name="notes_stack"> + <scroll_container name="profile_scroll"> + <panel name="profile_scroll_panel"> + <text name="status_message" value="Mes notes perso :"/> + <text name="status_message2" value="Autoriser cette personne à :"/> + <check_box label="Afficher mon statut en ligne" name="status_check"/> + <check_box label="Me situer sur la carte" name="map_check"/> + <check_box label="Modifier, supprimer ou prendre mes objets" name="objects_check"/> + </panel> + </scroll_container> + </layout_panel> + <layout_panel name="notes_buttons_panel"> + <button label="Devenir amis" name="add_friend" tool_tip="Proposer à un résident de devenir votre ami"/> + <button label="IM" name="im" width="30" tool_tip="Ouvrir une session IM"/> + <button label="Appeler" name="call" width="60" 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_online_status.xml b/indra/newview/skins/default/xui/fr/panel_online_status.xml new file mode 100644 index 0000000000..fdc489f375 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_online_status.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="friend_online_status" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml new file mode 100644 index 0000000000..9b9d830aaf --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Choses" name="Outfits"> + <tab_container name="appearance_tabs"> + <inventory_panel label="MES TENUES" name="outfitslist_tab"/> + <inventory_panel label="PORTÉ" name="cof_tab"/> + </tab_container> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Afficher d'autres options"/> + <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 new file mode 100644 index 0000000000..4703559111 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_outfits_inventory_gear_default.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_gear_default"> + <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 new file mode 100644 index 0000000000..84749806ff --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_people.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Side tray panel --> +<panel label="Résidents" name="people_panel"> + <string name="no_people" value="Personne"/> + <string name="no_one_near" value="Personne près de vous"/> + <string name="no_friends_online" value="Pas d'amis connectés"/> + <string name="no_friends" value="Pas d'amis"/> + <string name="people_filter_label" value="Filtrer les personnes"/> + <string name="groups_filter_label" value="Filtrer les groupes"/> + <filter_editor label="Filtre" name="filter_input"/> + <tab_container name="tabs"> + <panel label="PRÈS DE VOUS" name="nearby_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="nearby_view_sort_btn" tool_tip="Options"/> + <button name="add_friend_btn" tool_tip="Ajouter le résident sélectionné à votre liste d'amis"/> + </panel> + </panel> + <panel label="MES AMIS" name="friends_panel"> + <accordion name="friends_accordion"> + <accordion_tab name="tab_online" title="En ligne"/> + <accordion_tab name="tab_all" title="Tout"/> + </accordion> + <text name="no_friends_msg"> + Pour ajouter des amis, essayez [secondlife:///app/search/people la recherche globale] ou cliquez sur un utilisateur pour l'ajouter à vos amis. +Si vous voulez rencontrer d'autres résidents, ouvrez la [secondlife:///app/worldmap carte]. + </text> + <panel label="bottom_panel" name="bottom_panel"> + <button name="friends_viewsort_btn" tool_tip="Options"/> + <button name="add_btn" tool_tip="Proposer à un résident de devenir votre ami"/> + <button name="del_btn" tool_tip="Supprimer le résident sélectionné de votre liste d'amis"/> + </panel> + </panel> + <panel label="MES GROUPES" name="groups_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="groups_viewsort_btn" tool_tip="Options"/> + <button name="plus_btn" tool_tip="Rejoindre/créer un nouveau groupe"/> + <button name="activate_btn" tool_tip="Activer le groupe sélectionné"/> + </panel> + </panel> + <panel label="RÉCENT" name="recent_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="recent_viewsort_btn" tool_tip="Options"/> + <button name="add_friend_btn" tool_tip="Ajouter le résident sélectionné à votre liste d'amis"/> + </panel> + </panel> + </tab_container> + <panel name="button_bar"> + <button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/> + <button label="IM" name="im_btn" tool_tip="Ouvrir une session IM"/> + <button label="Appeler" name="call_btn" tool_tip="Appeler ce résident"/> + <button label="Partager" name="share_btn"/> + <button label="Téléporter" name="teleport_btn" tool_tip="Proposez une téléportation"/> + <button label="Profil" name="group_info_btn" tool_tip="Voir le profil du groupe"/> + <button label="Chat" name="chat_btn" tool_tip="Ouvrir une session de chat"/> + <button label="Appel" name="group_call_btn" tool_tip="Appeler ce groupe"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_pick_info.xml b/indra/newview/skins/default/xui/fr/panel_pick_info.xml index 642e31a2c3..e9572caac7 100644 --- a/indra/newview/skins/default/xui/fr/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/fr/panel_pick_info.xml @@ -1,16 +1,16 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<panel name="panel_pick_info">
- <text name="title" value="Infos"/>
- <scroll_container name="profile_scroll">
- <panel name="scroll_content_panel">
- <text name="pick_name" value="[name]"/>
- <text name="pick_location" value="[chargement...]"/>
- <text name="pick_desc" value="[description]"/>
- </panel>
- </scroll_container>
- <panel name="buttons">
- <button label="Téléporter" name="teleport_btn"/>
- <button label="Carte" name="show_on_map_btn"/>
- <button label="Éditer" name="edit_btn"/>
- </panel>
-</panel>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_pick_info"> + <text name="title" value="Infos"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text name="pick_name" value="[name]"/> + <text name="pick_location" value="[loading...]"/> + <text name="pick_desc" value="[description]"/> + </panel> + </scroll_container> + <panel name="buttons"> + <button label="Téléporter" name="teleport_btn"/> + <button label="Carte" name="show_on_map_btn"/> + <button label="Éditer" name="edit_btn"/> + </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 25aeac9e75..e33281defc 100644 --- a/indra/newview/skins/default/xui/fr/panel_picks.xml +++ b/indra/newview/skins/default/xui/fr/panel_picks.xml @@ -1,9 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Favoris" name="panel_picks"> + <string name="no_picks" value="Pas de favoris"/> + <string name="no_classifieds" value="Pas de petites annonces"/> + <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 Favoris"/> + <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="Carte" name="show_on_map_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 new file mode 100644 index 0000000000..d24570b0a1 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_place_profile.xml @@ -0,0 +1,130 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="place_profile"> + <string name="on" value="Activé"/> + <string name="off" value="Désactivé"/> + <string name="anyone" value="Tout le monde"/> + <string name="available" value="disponible"/> + <string name="allocated" value="affecté"/> + <string name="title_place" value="Profil du lieu"/> + <string name="title_teleport_history" value="Historique des téléportations"/> + <string name="not_available" value="(s/o)"/> + <string name="unknown" value="(inconnu)"/> + <string name="public" value="(public)"/> + <string name="none_text" value="(aucun)"/> + <string name="sale_pending_text" value="(vente en cours)"/> + <string name="group_owned_text" value="(propriété du groupe)"/> + <string name="price_text" value="L$"/> + <string name="area_text" value="m²"/> + <string name="all_residents_text" value="Tous les résidents"/> + <string name="group_text" value="Groupe"/> + <string name="can_resell"> + Le terrain acheté dans cette région peut être revendu. + </string> + <string name="can_not_resell"> + Le terrain acheté dans cette région ne peut pas être revendu. + </string> + <string name="can_change"> + Le terrain acheté dans cette région peut être fusionné ou divisé. + </string> + <string name="can_not_change"> + Le terrain acheté dans cette région ne peut pas être fusionné ou divisé. + </string> + <string name="server_update_text"> + Les informations sur le lieu ne sont pas disponibles sans mise à jour du serveur. + </string> + <string name="server_error_text"> + Aucune information sur ce lieu n'est disponible actuellement, veuillez réessayer ultérieurement. + </string> + <string name="server_forbidden_text"> + Les informations sur ce lieu ne sont pas disponibles car l'accès y est restreint. Veuillez vérifier vos droits auprès du propriétaire de la parcelle. + </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> + <string name="icon_PG" value="parcel_drk_PG"/> + <string name="icon_M" value="parcel_drk_M"/> + <string name="icon_R" value="parcel_drk_R"/> + <string name="icon_Voice" value="parcel_drk_Voice"/> + <string name="icon_VoiceNo" value="parcel_drk_VoiceNo"/> + <string name="icon_Fly" value="parcel_drk_Fly"/> + <string name="icon_FlyNo" value="parcel_drk_FlyNo"/> + <string name="icon_Push" value="parcel_drk_Push"/> + <string name="icon_PushNo" value="parcel_drk_PushNo"/> + <string name="icon_Build" value="parcel_drk_Build"/> + <string name="icon_BuildNo" value="parcel_drk_BuildNo"/> + <string name="icon_Scripts" value="parcel_drk_Scripts"/> + <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"> + <text name="region_title" value="Exemple de région"/> + <text name="parcel_title" value="SampleParcel, Name Long (145, 228, 26)"/> + <expandable_text name="description" value="Du waltz die spritz"/> + <text name="owner_label" value="Propriétaire :"/> + <text name="owner_value" value="Alex Superduperlongenamenton"/> + <text name="maturity_value" value="(inconnu)"/> + <accordion name="advanced_info_accordion"> + <accordion_tab name="parcel_characteristics_tab" title="Parcelle"> + <panel> + <text name="rating_label" value="Catégorie :"/> + <text name="rating_value" value="(inconnu)"/> + <text name="voice_label" value="Voix :"/> + <text name="voice_value" value="Activée"/> + <text name="fly_label" value="Voler :"/> + <text name="fly_value" value="Activé"/> + <text name="push_label" value="Appuyer :"/> + <text name="push_value" value="Désactivé"/> + <text name="build_label" value="Construire :"/> + <text name="build_value" value="Activé"/> + <text name="scripts_label" value="Scripts :"/> + <text name="scripts_value" value="Activés"/> + <text name="damage_label" value="Dégâts :"/> + <text name="damage_value" value="Désactivés"/> + <button label="À propos des terrains" name="about_land_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="region_information_tab" title="Région"> + <panel> + <text name="region_name_label" value="Région :"/> + <text name="region_name" value="Pays des orignaux"/> + <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="Adulte"/> + <text name="region_owner_label" value="Propriétaire :"/> + <text name="region_owner" value="orignal Van Orignal"/> + <text name="region_group_label" value="Groupe :"/> + <text name="region_group"> + Le puissant orignal d'Orignalville + </text> + <button label="Région/Domaine" name="region_info_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="estate_information_tab" title="Domaine"> + <panel> + <text name="estate_name_label" value="Domaine :"/> + <text name="estate_rating_label" value="Catégorie :"/> + <text name="estate_owner_label" value="Propriétaire :"/> + <text name="covenant_label" value="Règlement :"/> + </panel> + </accordion_tab> + <accordion_tab name="sales_tab" title="À vendre"> + <panel> + <text name="sales_price_label" value="Prix :"/> + <text name="area_label" value="Surface :"/> + <text name="traffic_label" value="Trafic :"/> + <text name="primitives_label" value="Prims :"/> + <text name="parcel_scripts_label" value="Scripts :"/> + <text name="terraform_limits_label" value="Limites de terraformage :"/> + <text name="subdivide_label" value="Possibilité de division/fusion :"/> + <text name="resale_label" value="Possibilité de revente :"/> + <text name="sale_to_label" value="À vendre à :"/> + </panel> + </accordion_tab> + </accordion> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_places.xml b/indra/newview/skins/default/xui/fr/panel_places.xml new file mode 100644 index 0000000000..f6a64f0c58 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_places.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<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="Filtrer Mes lieux" name="Filter"/> + <panel name="button_panel"> + <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" 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"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml index 4f0f6a8a23..b47ed4bd8b 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml @@ -1,12 +1,29 @@ <?xml version="1.0" encoding="utf-8"?> -<panel name="advanced"> - <text name="AspectRatioLabel1" tool_tip="largeur/hauteur"> - Rapport hauteur/largeur : +<panel label="Avancées" name="advanced"> + <panel.string name="aspect_ratio_text"> + [NUM]:[DEN] + </panel.string> + <slider label="Angle de vue" name="camera_fov"/> + <slider label="Distance" name="camera_offset_scale"/> + <text name="heading2"> + Positionnement automatique pour : </text> - <combo_box name="aspect_ratio" tool_tip="largeur/hauteur"> - <combo_box.item label="4:3 (Standard CRT)" name="item1"/> - <combo_box.item label="5:4 (1280 x 1024 LCD)" name="item2"/> - <combo_box.item label="8:5 (écran large)" name="item3"/> - <combo_box.item label="16:9 (plein écran)" name="item4"/> - </combo_box> + <check_box label="Construire/Éditer" name="edit_camera_movement" tool_tip="Utilisez le positionnement automatique de la caméra quand vous accédez au mode de modification et quand vous le quittez"/> + <check_box label="Apparence" name="appearance_camera_movement" tool_tip="Utiliser le positionnement automatique de la caméra quand je suis en mode Édition"/> + <check_box label="Afficher en vue subjective" name="first_person_avatar_visible"/> + <check_box label="Les touches de direction me font toujours me déplacer" name="arrow_keys_move_avatar_check"/> + <check_box label="Appuyer deux fois et maintenir enfoncé pour courir" name="tap_tap_hold_to_run"/> + <check_box label="Faire bouger les lèvres de l'avatar quand il parle" name="enable_lip_sync"/> + <check_box label="Bulles de chat" name="bubble_text_chat"/> + <slider label="Opacité" name="bubble_chat_opacity"/> + <color_swatch name="background" tool_tip="Choisir la couleur des bulles de chat"/> + <check_box label="Afficher les erreurs de script dans :" name="show_script_errors"/> + <radio_group name="show_location"> + <radio_item label="Chat près de moi" name="0"/> + <radio_item label="Autre fenêtre" name="1"/> + </radio_group> + <check_box label="Activer/désactiver la fonction Parler quand j'appuie sur :" name="push_to_talk_toggle_check" tool_tip="En mode bascule, appuyez une fois sur la touche de contrôle de la fonction, puis relâchez-la pour activer/désactiver votre micro. Si vous n'êtes pas en mode bascule, le micro ne diffuse votre voix que quand vous maintenez la touche de contrôle de la fonction enfoncée."/> + <line_editor label="Touche de contrôle de la fonction Appuyer pour parler" name="modifier_combo"/> + <button label="Définir la touche" name="set_voice_hotkey_button"/> + <button label="Bouton central de la souris" name="set_voice_middlemouse_button" tool_tip="Réinitialiser sur le bouton central de la souris"/> </panel> 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 61fcd912f5..901a92ed1b 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_alerts.xml @@ -1,21 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Pop-ups" name="popups" title="Pop-ups"> - <text name="text_box"> - Ne pas afficher les pop-ups : + <text name="tell_me_label"> + Me prévenir : </text> - <text name="dont_show_label"> - Ne pas afficher ces pop-ups : - </text> - <button label="Activer ce pop-up" label_selected="Autoriser ce pop-up" name="enable_popup"/> + <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"> - Afficher ces pop-ups : + Toujours afficher : </text> - <button label="Désactiver tous les pop-ups" name="skip_dialogs_btn" tool_tip="Désactiver tous les pop-ups et les notifications envoyées lors d'un premier usage." width="185"/> - <text name="text_box2"> - Offres de notes, textures et repères : + <text name="dont_show_label"> + Ne jamais afficher : </text> - <button label="Activer tous les pop-ups" label_selected="Réinitialiser les dialogues 'Afficher la prochaine fois'..." name="reset_dialogs_btn" tool_tip="Activer tous les pop-ups et les notifications envoyées lors d'un premier usage." width="185"/> - <check_box label="Accepter automatiquement" name="accept_new_inventory"/> - <check_box label="Afficher après avoir accepté" name="show_new_inventory"/> - <check_box label="Ouvrir l'inventaire et sélectionner les objets reçus" name="show_in_inventory"/> </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 e2d00a2421..27242ec3de 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="Petite" name="radio"/> - <radio_item label="Moyenne" name="radio2"/> - <radio_item label="Grande" 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"> @@ -39,4 +39,9 @@ </text> <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="Onglets" 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 1ed3cafbc3..c3bbe18a7c 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_general.xml @@ -1,91 +1,70 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Général" name="general_panel"> - <combo_box name="start_location_combo"> - <combo_box.item name="MyHome" tool_tip="Par défaut, choisir mon domicile comme lieu de départ." label="Domicile"/> - <combo_box.item name="MyLastLocation" tool_tip="Par défaut, choisir mon dernier emplacement comme lieu de départ." label="Dernier emplacement"/> - </combo_box> - <check_box label="Afficher le lieu de départ sur l'écran de connexion" name="show_location_checkbox"/> - <combo_box name="fade_out_combobox"> - <combo_box.item name="Never" label="Jamais"/> - <combo_box.item name="Show Temporarily" label="Afficher temporairement"/> - <combo_box.item name="Always" label="Toujours"/> - </combo_box> - <check_box label="Nom des avatars en petit" name="small_avatar_names_checkbox"/> - <check_box label="Masquer mon nom sur mon écran" name="show_my_name_checkbox"/> - <text name="group_titles_textbox"> - Titres de groupe : - </text> - <check_box label="Masquer tous les titres de groupe" name="show_all_title_checkbox"/> - <check_box label="Masquer mon titre de groupe" name="show_my_title_checkbox"/> - <color_swatch label="" name="effect_color_swatch" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs"/> - <text name="UI Size:"> - Taille de l'interface : + <text name="language_textbox"> + Langue : </text> - <slider name="ui_scale_slider"/> - <check_box label="Utiliser une échelle indépendante de la résolution" name="ui_auto_scale"/> - <spinner label="Absent(e) après :" name="afk_timeout_spinner"/> - <check_box label="M'avertir lorsque je dépense ou reçois des L$" name="notify_money_change_checkbox"/> - <text name="maturity_desired_label"> - Catégorie de contenu : + <combo_box name="language_combobox"> + <combo_box.item label="Choix par défaut" name="System Default Language"/> + <combo_box.item label="English (Anglais)" name="English"/> + <combo_box.item label="Dansk (Danois) - Bêta" name="Danish"/> + <combo_box.item label="Deutsch (Allemand) - Bêta" name="Deutsch(German)"/> + <combo_box.item label="Español (Espagnol) - Bêta" name="Spanish"/> + <combo_box.item label="Français - Bêta" name="French"/> + <combo_box.item label="Italiano (Italien) - Bêta" name="Italian"/> + <combo_box.item label="Nederlands (Néerlandais) - Bêta" name="Dutch"/> + <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> + <text name="language_textbox2"> + (redémarrage requis) </text> <text name="maturity_desired_prompt"> Je veux accéder au contenu classé : </text> + <text name="maturity_desired_textbox"/> <combo_box name="maturity_desired_combobox"> - <combo_box.item name="Desired_Adult" label="PG, Mature et Adult"/> - <combo_box.item name="Desired_Mature" label="PG et Mature"/> - <combo_box.item name="Desired_PG" label="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="maturity_desired_textbox"> - PG - </text> <text name="start_location_textbox"> - Lieu de départ : + Lieu de départ : </text> - <text name="show_names_textbox"> - Afficher les noms : + <combo_box name="start_location_combo"> + <combo_box.item label="Dernier emplacement" name="MyLastLocation" tool_tip="Par défaut, choisir mon dernier emplacement comme lieu de départ."/> + <combo_box.item label="Domicile" name="MyHome" tool_tip="Par défaut, choisir mon domicile comme lieu de départ."/> + </combo_box> + <check_box initial_value="true" label="Afficher à la connexion" name="show_location_checkbox"/> + <text name="name_tags_textbox"> + Affichage des noms : </text> + <radio_group name="Name_Tag_Preference"> + <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"/> + <check_box label="Afficher les titres de groupe" name="show_all_title_checkbox1"/> <text name="effects_color_textbox"> - Couleur du faisceau de sélection : - </text> - <text name="seconds_textbox"> - secondes - </text> - <text name="crash_report_textbox"> - Rapports de crash : - </text> - <text name="language_textbox"> - Langue : + Mes effets : </text> - <text name="language_textbox2"> - (redémarrage requis) + <text name="title_afk_text"> + Me montrer absent après : </text> - <string name="region_name_prompt"> - <Saisissez le nom de la région> - </string> - <combo_box name="crash_behavior_combobox"> - <combo_box.item name="Askbeforesending" label="Demander avant d'envoyer"/> - <combo_box.item name="Alwayssend" label="Toujours envoyer"/> - <combo_box.item name="Neversend" label="Ne jamais envoyer"/> - </combo_box> - <combo_box name="language_combobox"> - <combo_box.item name="System Default Language" label="Choix par défaut"/> - <combo_box.item name="English" label="English (Anglais)"/> - <combo_box.item name="Danish" label="Dansk (Danois) - Bêta"/> - <combo_box.item name="Deutsch(German)" label="Deutsch (Allemand) - Bêta"/> - <combo_box.item name="Spanish" label="Español (Espagnol) - Bêta"/> - <combo_box.item name="French" label="Français - Bêta"/> - <combo_box.item name="Italian" label="Italiano (Italien) - Bêta"/> - <combo_box.item name="Hungarian" label="Magyar (Hongrois) - Bêta"/> - <combo_box.item name="Dutch" label="Nederlands (Néerlandais) - Bêta"/> - <combo_box.item name="Polish" label="Polski (Polonais) - Bêta"/> - <combo_box.item name="Portugese" label="Portugués (Portugais) - Bêta"/> - <combo_box.item name="Russian" label="Русский (Russe) - Bêta"/> - <combo_box.item name="Turkish" label="Türkçe (Turc) - Bêta"/> - <combo_box.item name="Ukrainian" label="Українська (Ukrainien) - Bêta"/> - <combo_box.item name="Chinese" label="中文 (简体) (Chinois) - Bêta"/> - <combo_box.item name="(Japanese)" label="日本語 (Japonais) - Bêta"/> - <combo_box.item name="(Korean)" label="한국어 (Coréen) - Bêta"/> + <color_swatch label="" name="effect_color_swatch" tool_tip="Cliquer pour ouvrir le sélecteur de couleurs"/> + <combo_box label="Me montrer absent après :" 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> - <check_box label="Partager la langue avec les objets" name="language_is_public" tool_tip="Cette option permet de faire connaître aux objets du Monde votre langue favorite."/> + <text name="text_box3"> + Réponse si occupé(e) : + </text> + <text_editor name="busy_response"> + log_in_to_change + </text_editor> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml index 6a469c7322..aa004d2c84 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml @@ -12,16 +12,16 @@ <combo_box.item label="1024 x 768" name="1024x768"/> </combo_box> <text name="UI Size:"> - Taille de l'IU : + Taille de l'interface : </text> <text name="QualitySpeed"> - Qualité et vitesse : + Qualité et vitesse : </text> - <text left="105" name="FasterText"> + <text left="35" name="FasterText"> Plus rapide </text> <text name="BetterText"> - Mieux + Meilleure </text> <text name="ShadersPrefText"> Faible @@ -35,37 +35,37 @@ <text name="ShadersPrefText4"> Ultra </text> - <panel label="CustomGraphics" name="CustomGraphics Panel"> + <panel label="Graphiques personnalisés" name="CustomGraphics Panel"> <text name="ShadersText"> Effets : </text> <check_box initial_value="true" label="Placage de relief et brillance" name="BumpShiny"/> - <check_box initial_value="true" label="Effets de base" name="BasicShaders" tool_tip="Désactiver cette option peut empêcher certains drivers de cartes graphiques de planter."/> + <check_box initial_value="true" label="Effets de base" name="BasicShaders" tool_tip="La désactivation de cette option peut éviter le plantage de certains pilotes de cartes graphiques"/> <check_box initial_value="true" label="Effets atmosphériques" name="WindLightUseAtmosShaders"/> - <check_box initial_value="true" label="Reflets de l'eau" name="Reflections"/> + <check_box initial_value="true" label="Reflets dans l'eau" name="Reflections"/> <text name="ReflectionDetailText"> - Objets reflétés : + Objets reflétés : </text> <radio_group name="ReflectionDetailRadio"> - <radio_item label="Terrain et Arbres" name="0"/> - <radio_item label="Objets statiques" name="1"/> - <radio_item label="Objets et avatars" name="2"/> + <radio_item label="Terrain et arbres" name="0"/> + <radio_item label="Tous les objets statiques" name="1"/> + <radio_item label="Tous les objets et avatars" name="2"/> <radio_item label="Tout" name="3"/> </radio_group> <text name="AvatarRenderingText"> - Rendu de l'avatar : + Rendu de l'avatar : </text> <check_box initial_value="true" label="Avatars éloignés en 2D" name="AvatarImpostors"/> <check_box initial_value="true" label="Accélération du rendu" name="AvatarVertexProgram"/> <check_box initial_value="true" label="Mouvement des habits" name="AvatarCloth"/> - <slider label="Limite d'affichage :" name="DrawDistance"/> + <slider label="Limite d'affichage :" name="DrawDistance"/> <text name="DrawDistanceMeterText2"> m </text> - <slider label="Nombre de particules max. :" label_width="143" name="MaxParticleCount"/> - <slider label="Qualité post-traitement :" name="RenderPostProcess"/> + <slider label="Nombre de particules max. :" label_width="147" name="MaxParticleCount"/> + <slider label="Qualité post-traitement :" name="RenderPostProcess"/> <text name="MeshDetailText"> - Détails des rendus : + Détails des rendus : </text> <slider label=" Objets :" name="ObjectMeshDetail"/> <slider label=" Flexiprims :" name="FlexibleMeshDetail"/> @@ -95,7 +95,7 @@ Faible </text> <text name="LightingDetailText"> - Sources lumineuses : + Sources lumineuses : </text> <radio_group name="LightingDetailRadio"> <radio_item label="Soleil et lune uniquement" name="SunMoon"/> @@ -105,8 +105,8 @@ Rendu du terrain : </text> <radio_group name="TerrainDetailRadio"> - <radio_item label="Faible" name="0"/> - <radio_item label="Élevé" name="2"/> + <radio_item label="Bas" name="0"/> + <radio_item label="Haut" name="2"/> </radio_group> </panel> <button label="Appliquer" label_selected="Appliquer" name="Apply"/> 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 3beaaf5c79..f14ccc3a8e 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_privacy.xml @@ -3,7 +3,7 @@ <panel.string name="log_in_to_change"> se connecter pour changer </panel.string> - <button label="Vider le cache" name="clear_cache"/> + <button label="Vider le cache" name="clear_cache" tool_tip="Effacer l'image de connexion, le dernier lieu, l'historique des téléportations et la texture du cache."/> <text name="cache_size_label_l"> (Endroits, images, web, historique des recherches) </text> @@ -11,11 +11,16 @@ <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="Sauvegarder les journaux sur mon ordinateur" name="log_instant_messages"/> - <radio_group name="ChatIMLogs"> - <radio_item label="Chat" name="radio1"/> - <radio_item label="IM" name="radio2"/> - </radio_group> + <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 dates et heures" name="show_timestamps_check_im"/> + <text name="log_path_desc"> + 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 2e8f5e9a8b..ecea368c54 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_setup.xml @@ -1,15 +1,15 @@ <?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 : + Vue subjective : </text> <text name=" Mouse Sensitivity"> Sensibilité de la souris </text> <check_box label="Inverser" name="invert_mouse"/> <text name="Network:"> - Réseau : + Réseau : </text> <text name="Maximum bandwidth"> Bande passante maximale @@ -17,30 +17,30 @@ <text name="text_box2"> kbps </text> - <check_box label="Port de connexion personnalisé" name="connection_port_enabled"/> - <spinner label="Numéro de port :" name="web_proxy_port"/> + <check_box label="Port de connexion" name="connection_port_enabled"/> + <spinner label="Numéro :" name="connection_port"/> <text name="cache_size_label_l"> Taille de la mémoire </text> <text name="text_box5"> Mo </text> - <button label="Parcourir" label_selected="Parcourir" name="set_cache"/> - <button label="Réinitialiser" label_selected="Choisir" name="reset_cache"/> <text name="Cache location"> - Emplacement du cache + Emplacement du cache : </text> + <button label="Parcourir" label_selected="Parcourir" name="set_cache"/> + <button label="Réinitialiser" label_selected="Réinitialiser" name="reset_cache"/> <text name="Web:"> - Web : + Web : </text> <radio_group name="use_external_browser"> - <radio_item label="Utiliser le navigateur intégré" name="internal" tool_tip="Utilisez le navigateur intégré pour obtenir de l'aide, ouvrir des liens etc. Ce navigateur s'ouvre dans [APP_NAME]."/> - <radio_item label="Utiliser mon navigateur (IE, Firefox etc.)" name="external" tool_tip="Utiliser le navigateur web système par défaut pour l'aide, les liens etc. Non recommandé en mode plein écran."/> + <radio_item label="Utiliser le navigateur intégré" name="internal" tool_tip="Utilisez le navigateur intégré pour obtenir de l'aide, ouvrir des liens, etc. Ce navigateur s'ouvre dans [APP_NAME]." value="0"/> + <radio_item label="Utiliser mon navigateur (IE, Firefox, Safari)" name="external" tool_tip="Utiliser le navigateur web système par défaut pour l'aide, les liens etc. Non recommandé en mode plein écran." value="1"/> </radio_group> - <check_box initial_value="false" label="Proxy web" name="web_proxy_enabled"/> - <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"/> + <check_box initial_value="false" label="Activer le proxy Web" name="web_proxy_enabled"/> <text name="Proxy location"> - Emplacement du proxy + Emplacement du proxy : </text> + <line_editor name="web_proxy_editor" tool_tip="Le nom ou adresse IP du proxy que vous souhaitez utiliser"/> + <spinner label="Numéro de port :" label_width="95" name="web_proxy_port" width="170"/> </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 3c38da3eb9..27d2b2182b 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml @@ -1,40 +1,42 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Audio et vidéo" name="Preference Media panel"> +<panel label="Sons" name="Preference Media panel"> <slider label="Volume principal" name="System Volume"/> - <slider label="Son ambiant" name="Wind Volume"/> - <slider label="Sons" name="SFX Volume"/> + <check_box initial_value="true" label="Couper quand minimisé" name="mute_when_minimized"/> + <slider label="Boutons" name="UI Volume"/> + <slider label="Ambiant" name="Wind Volume"/> + <slider label="Effets sonores" name="SFX Volume"/> + <slider label="Flux musical" name="Music Volume"/> + <check_box label="Activé" name="music_enabled"/> <slider label="Média" name="Media Volume"/> - <slider label="Interface" name="UI Volume"/> - <slider label="Musique" name="Music Volume"/> - <slider label="Voix" name="Voice Volume"/> - <text_editor name="voice_unavailable"> - Le chat vocal n'est pas disponible - </text_editor> - <check_box label="Chat vocal" name="enable_voice_check"/> + <check_box label="Activé" name="enable_media"/> + <slider label="Chat vocal" name="Voice Volume"/> + <check_box label="Activé" name="enable_voice_check"/> + <check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cochez pour autoriser la lecture automatique du média" value="vrai"/> + <check_box label="Jouer le média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous" value="vrai"/> + <text name="Listen from"> + Paramètres du chat vocal + </text> <radio_group name="ear_location"> - <radio_item label="Écouter depuis la position de la caméra" name="0"/> - <radio_item label="Écouter depuis la position de l'avatar" name="1"/> + <radio_item label="Position de la caméra" name="0"/> + <radio_item label="Position de l'avatar" name="1"/> </radio_group> - <button label="Paramètres du matériel" name="device_settings_btn"/> - <text name="muting_text"> - Volume : - </text> - <panel name="Volume Panel" width="249"/> - <check_box label="Couper le son" name="disable audio"/> - <text bottom="-195" name="streaming_prefs_text" width="145"> - Média : - </text> - <text name="audio_prefs_text"> - Audio : - </text> - <panel label="Volume" name="Volume Panel"/> - <check_box label="Couper le son quand minimisé" name="mute_when_minimized"/> - <check_box label="Jouer la musique disponible" name="streaming_music"/> - <check_box label="Jouer le média disponible" name="streaming_video"/> - <check_box label="Lire automatiquement le média" name="auto_streaming_video"/> - <slider label="Effet Doppler" label_width="115" name="Doppler Effect"/> - <slider label="Facteur d'éloignement" label_width="115" name="Distance Factor"/> - <slider label="Facteur d'atténuation" label_width="115" name="Rolloff Factor"/> - <spinner label="Alerte L$" name="L$ Change Threshold"/> - <spinner label="Alerte santé" name="Health Change Threshold"/> + <button label="Périphériques d'entrée/de sortie" name="device_settings_btn"/> + <panel label="Paramètres du matériel" name="device_settings_panel"> + <panel.string name="default_text"> + Défaut + </panel.string> + <text name="Input"> + Entrée + </text> + <text name="My volume label"> + Mon volume : + </text> + <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Régler le volume avec le curseur"/> + <text name="wait_text"> + Veuillez patienter + </text> + <text name="Output"> + Sortie + </text> + </panel> </panel> 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 new file mode 100644 index 0000000000..c7ab31c4b3 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="MediaControls"> + <string name="control_background_image_name"> + Inspector_Background + </string> + <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"> + <layout_panel> + <icon name="media_whitelist_flag" tool_tip="Liste blanche activée"/> + </layout_panel> + <layout_panel> + <icon name="media_secure_lock_flag" tool_tip="Navigation sécurisée"/> + </layout_panel> + </layout_stack> + </layout_panel> + <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_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> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_profile.xml b/indra/newview/skins/default/xui/fr/panel_profile.xml index dc28547cb4..c439435d1a 100644 --- a/indra/newview/skins/default/xui/fr/panel_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_profile.xml @@ -12,34 +12,45 @@ </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"/> - <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="Monde physique :"/> - </panel> - <text name="me_homepage_text"> - Page d'accueil : - </text> - <text name="title_member_text" value="Membre depuis :"/> - <text name="title_acc_status_text" value="Statut du compte :"/> - <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 :"/> - </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="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> + <string name="no_group_text" value="Aucun"/> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) + </string> + <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_editor name="acc_status_text"> + Résident. Aucune info de paiement enregistrée. + Linden. + </text_editor> + <text name="title_partner_text" value="Partenaire :"/> + <panel name="partner_data_panel"> + <name_box initial_value="(récupération en cours)" name="partner_text"/> + </panel> + <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 à un résident de devenir votre ami"/> + <button label="IM" name="im" tool_tip="Ouvrir une session IM" width="30"/> + <button label="Appeler" name="call" tool_tip="Appeler ce résident" width="60"/> + <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"/> + <button label="▼" name="overflow_btn" tool_tip="Payer ou partager l'inventaire avec le résident"/> + </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_profile_view.xml b/indra/newview/skins/default/xui/fr/panel_profile_view.xml index 928df67e4c..8f57dd89c7 100644 --- a/indra/newview/skins/default/xui/fr/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/fr/panel_profile_view.xml @@ -6,10 +6,11 @@ <string name="status_offline"> Hors ligne </string> - <text name="user_name" value="(en cours de chargement...)"/> + <text_editor name="user_name" value="(en cours de chargement...)"/> <text name="status" value="En ligne"/> <tab_container name="tabs"> - <panel label="Profil" name="panel_profile"/> - <panel label="Favoris" name="panel_picks"/> + <panel label="PROFIL" name="panel_profile"/> + <panel label="FAVORIS" name="panel_picks"/> + <panel label="NOTES/PERSO" name="panel_notes"/> </tab_container> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_region_covenant.xml b/indra/newview/skins/default/xui/fr/panel_region_covenant.xml index f2ba297fd2..cd1d0c4886 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_covenant.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Règlement" name="Covenant"> <text name="estate_section_lbl"> - Domaine : + Domaine </text> <text bottom_delta="-19" name="estate_name_lbl"> Nom : @@ -18,7 +18,7 @@ <text name="estate_cov_lbl"> Règlement : </text> - <text name="covenant_timestamp_text"> + <text name="covenant_timestamp_text" width="350"> Dernière modification le mercredi 31 décembre 1969 16:00:00 </text> <button label="?" name="covenant_help"/> @@ -27,20 +27,20 @@ </text_editor> <button label="Réinitialiser" name="reset_covenant"/> <text name="covenant_help_text"> - Les changements apportés au règlement apparaîtront sur toutes - les parcelles du domaine. + Les changements apportés au règlement apparaîtront sur +toutes les parcelles du domaine. </text> <text bottom_delta="-31" name="covenant_instructions"> Faire glisser une note pour changer le règlement de ce domaine. </text> <text name="region_section_lbl"> - Région : + Région </text> <text name="region_name_lbl"> Nom : </text> <text name="region_name_text"> - leyla + Erica </text> <text name="region_landtype_lbl"> Type : diff --git a/indra/newview/skins/default/xui/fr/panel_region_debug.xml b/indra/newview/skins/default/xui/fr/panel_region_debug.xml index 1338ab9e71..cb4a74e142 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_debug.xml @@ -12,8 +12,8 @@ <button label="?" name="disable_collisions_help"/> <check_box label="Désactiver la physique" name="disable_physics_check" tool_tip="Désactiver tous les effets liés à la physique dans cette région"/> <button label="?" name="disable_physics_help"/> - <button label="Appliquer" name="apply_btn" bottom_delta="-38"/> - <text name="objret_text_lbl" bottom_delta="-42"> + <button bottom_delta="-38" label="Appliquer" name="apply_btn"/> + <text bottom_delta="-42" name="objret_text_lbl" width="260"> Renvoi de l'objet </text> <text name="resident_text_lbl"> @@ -22,19 +22,19 @@ <line_editor name="target_avatar_name"> (aucun) </line_editor> - <button label="Choisir..." name="choose_avatar_btn"/> + <button label="Choisir" name="choose_avatar_btn"/> <text name="options_text_lbl"> Options : </text> - <check_box label="Ne renvoyer que les objets avec des scripts" name="return_scripts" tool_tip="Ne renvoyer que les objets avec des scripts."/> - <check_box label="Ne renvoyer que les objets sur le terrain de quelqu'un d'autre" name="return_other_land" tool_tip="Ne renvoyer que les objets se trouvant sur le terrain de quelqu'un d'autre"/> - <check_box label="Renvoyer les objets dans toutes les régions de ce domaine" name="return_estate_wide" tool_tip="Renvoyer les objets dans toutes les régions qui constituent ce domaine"/> + <check_box label="Avec scripts" name="return_scripts" tool_tip="Renvoyer les objets avec scripts uniquement"/> + <check_box label="Sur le terrain d'un autre résident" name="return_other_land" tool_tip="Ne renvoyer que les objets se trouvant sur le terrain de quelqu'un d'autre"/> + <check_box label="Dans toutes les régions de ce domaine" name="return_estate_wide" tool_tip="Renvoyer les objets dans toutes les régions qui constituent ce domaine"/> <button label="Renvoyer" name="return_btn"/> <button label="Afficher les collisions les plus consommatrices..." name="top_colliders_btn" tool_tip="Liste des objets avec le plus de collisions potentielles" width="320"/> - <button label="?" name="top_colliders_help" left="337"/> + <button label="?" left="337" name="top_colliders_help"/> <button label="Afficher les objets scriptés les plus consommateurs..." name="top_scripts_btn" tool_tip="Liste des objets qui passent le plus de temps à exécuter des scripts" width="320"/> - <button label="?" name="top_scripts_help" left="337"/> + <button label="?" left="337" name="top_scripts_help"/> <button label="Redémarrer la région" name="restart_btn" tool_tip="Redémarrer la région au bout de 2 minutes" width="160"/> - <button label="?" name="restart_help" left="177" /> + <button label="?" left="177" name="restart_help"/> <button label="Retarder le redémarrage" name="cancel_restart_btn" tool_tip="Retarder le redémarrage de la région d'une heure" width="160"/> </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 425f273790..f9262ea478 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_estate.xml @@ -1,27 +1,27 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Domaine" name="Estate"> - <text name="estate_help_text" bottom="-34"> - Les changements apportés aux paramètres -de cet onglet auront des répercussions sur -toutes les régions du domaine. + <text bottom="-34" name="estate_help_text"> + Les modifications des paramètres de cet +onglet affecteront toutes les régions du +domaine. </text> - <text name="estate_text" bottom_delta="-34"> + <text top_pad="8" bottom_delta="-34" name="estate_text"> Domaine : </text> <text name="estate_name"> (inconnu) </text> <text name="owner_text"> - Propriétaire : + Propriétaire : </text> <text name="estate_owner"> (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="Bannir les résidents non identifés."/> - <check_box label="Ont fait vérifier leur âge" name="limit_age_verified" tool_tip="Bannir les résidents dont l'âge n'a pas été vérifié. Pour plus d'infos, consultez la page support.secondlife.com."/> + <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 70782e2aa6..711278d614 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_general.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_general.xml @@ -32,17 +32,17 @@ <button label="?" name="parcel_changes_help"/> <check_box label="Ne pas afficher dans la recherche" name="block_parcel_search_check" tool_tip="Afficher cette région et ses parcelles dans les résultats de recherche"/> <button label="?" name="parcel_search_help"/> - <spinner label="Nombre maximum d'avatars" label_width="127" name="agent_limit_spin" width="190"/> + <spinner label="Nombre maximum d'avatars" name="agent_limit_spin" label_width="160" width="240"/> <button label="?" name="agent_limit_help"/> - <spinner label="Bonus objet" label_width="127" name="object_bonus_spin" width="190"/> + <spinner label="Bonus objet" name="object_bonus_spin" label_width="160" width="240"/> <button label="?" name="object_bonus_help"/> <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 0000000000..e709100fa2 --- /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" left_delta="56"> + inconnu + </text> + <text name="version_channel_text_lbl"> + Version : + </text> + <text name="version_channel_text" left_delta="56"> + inconnu + </text> + <text name="region_type_lbl"> + Type : + </text> + <text name="region_type" left_delta="56"> + 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" label_width="160" width="240"/> + <spinner label="Bonus objet" name="object_bonus_spin" label_width="160" width="240"/> + <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 d312646788..e95d911c01 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/fr/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="Textures du sol" name="Textures"> <text name="region_text_lbl"> Région : @@ -39,11 +39,11 @@ <text name="height_text_lbl9"> Nord-est </text> - <text name="height_text_lbl10"> + <text name="height_text_lbl10" width="460"> 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 + 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. @@ -51,14 +51,14 @@ <text name="height_text_lbl13"> Nord-est </text> - <spinner label="Bas" name="height_start_spin_0" /> - <spinner label="Bas" name="height_start_spin_1" /> - <spinner label="Bas" name="height_start_spin_2" /> - <spinner label="Bas" name="height_start_spin_3" /> - <spinner label="Haut" name="height_range_spin_0" /> - <spinner label="Haut" name="height_range_spin_1" /> - <spinner label="Haut" name="height_range_spin_2" /> - <spinner label="Haut" name="height_range_spin_3" /> + <spinner label="Bas" name="height_start_spin_0"/> + <spinner label="Bas" name="height_start_spin_1"/> + <spinner label="Bas" name="height_start_spin_2"/> + <spinner label="Bas" name="height_start_spin_3"/> + <spinner label="Haut" name="height_range_spin_0"/> + <spinner label="Haut" name="height_range_spin_1"/> + <spinner label="Haut" name="height_range_spin_2"/> + <spinner label="Haut" name="height_range_spin_3"/> <text name="height_text_lbl14"> Ces valeurs représentent les limites de mélange pour les textures ci-dessus. </text> @@ -68,5 +68,5 @@ <text name="height_text_lbl16"> et la valeur HAUTE correspond à la hauteur MINIMUM de la Texture #4. </text> - <button label="Appliquer" name="apply_btn" /> + <button label="Appliquer" name="apply_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_script_ed.xml b/indra/newview/skins/default/xui/fr/panel_script_ed.xml index 7256fe4109..ea161ecae8 100644 --- a/indra/newview/skins/default/xui/fr/panel_script_ed.xml +++ b/indra/newview/skins/default/xui/fr/panel_script_ed.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="script panel"> <panel.string name="loading"> - Chargement… + Chargement... </panel.string> <panel.string name="can_not_view"> - Ce scipt ne peut pas être copié, visualisé ou modifié. Pour visualiser ou modifier un script à l'intérieur d'un objet, vous devez avoir les permissions requises. + Ce script ne peut pas être copié, visualisé ou modifié. Pour visualiser ou modifier un script à l'intérieur d'un objet, vous devez avoir les permissions requises. </panel.string> <panel.string name="public_objects_can_not_run"> Les objets publics ne peuvent pas exécuter de scripts @@ -16,7 +16,7 @@ Script : [NAME] </panel.string> <text_editor name="Script Editor"> - Chargement… + Chargement... </text_editor> <button label="Enregistrer" label_selected="Enregistrer" name="Save_btn"/> <combo_box label="Insérer..." name="Insert..."/> 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 0000000000..e541fae31f --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_script_limits_my_avatar.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="MON AVATAR" name="script_limits_my_avatar_panel"> + <text name="script_memory"> + Utilisation des scripts d'avatars + </text> + <text name="loading_text"> + Chargement... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="Taille (Ko)" name="size" width="80"/> + <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 0000000000..751abd6f1d --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_script_limits_region_memory.xml @@ -0,0 +1,22 @@ +<?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"/> + <text name="memory_used"/> + <text name="loading_text"> + Chargement... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="Taille (Ko)" name="size" width="80"/> + <scroll_list.columns label="URL" name="urls"/> + <scroll_list.columns label="Nom de l'objet" name="name"/> + <scroll_list.columns label="Propriétaire d'objet" name="owner" width="140"/> + <scroll_list.columns label="Parcelle" name="parcel"/> + <scroll_list.columns label="Endroit" 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 new file mode 100644 index 0000000000..178ae4324b --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_side_tray.xml @@ -0,0 +1,29 @@ +<?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="Activer/désactiver le panneau latéral." name="sidebar_openclose" tab_title="Activer/désactiver le panneau latéral"/> + <sidetray_tab description="Domicile." name="sidebar_home" tab_title="Accueil"> + <panel label="domicile" name="panel_home"/> + </sidetray_tab> + <sidetray_tab description="Modifiez votre profil public et vos Favoris." name="sidebar_me" tab_title="Mon profil"> + <panel_container name="panel_container"> + <panel label="Moi" name="panel_me"/> + </panel_container> + </sidetray_tab> + <sidetray_tab description="Trouvez vos amis, vos contacts et les personnes se trouvant près de vous." name="sidebar_people" tab_title="Personnes"> + <panel_container name="panel_container"> + <panel label="Profil du groupe" name="panel_group_info_sidetray"/> + <panel label="Résidents et objets ignorés" name="panel_block_list_sidetray"/> + </panel_container> + </sidetray_tab> + <sidetray_tab description="Trouvez de nouveaux lieux à découvrir et les lieux que vous connaissez déjà." label="Lieux" name="sidebar_places" tab_title="Endroits"> + <panel label="Lieux" name="panel_places"/> + </sidetray_tab> + <sidetray_tab description="Parcourez votre inventaire." name="sidebar_inventory" tab_title="Mon inventaire"> + <panel label="Modifier l'inventaire" name="sidepanel_inventory"/> + </sidetray_tab> + <sidetray_tab description="Modifiez votre apparence actuelle." name="sidebar_appearance" tab_title="Mon apparence"> + <panel label="Changer d'apparence" name="sidepanel_appearance"/> + </sidetray_tab> +</side_tray> diff --git a/indra/newview/skins/default/xui/fr/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/fr/panel_side_tray_tab_caption.xml new file mode 100644 index 0000000000..2899f630f4 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/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="Panneau latéral"/> + <button name="show_help" tool_tip="Afficher l'aide"/> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/fr/panel_sidetray_home_tab.xml new file mode 100644 index 0000000000..48bcff1c09 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_sidetray_home_tab.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Part of side tray, see that XML file for panel config --> +<panel label="home_tab" name="home_tab"> + <scroll_container name="profile_scroll"> + <panel name="profile_scroll_panel"> + <panel name="sidebar_people"> + <text name="tab_name" value="Résidents"/> + <text name="tab_description"> + Trouvez vos amis, vos groupes, vos contacts et les personnes se trouvant près de vous. + </text> + </panel> + <panel name="sidebar_places"> + <text name="tab_name" value="Lieux"/> + <text name="tab_description"> + Trouvez de nouveaux lieux à découvrir et les lieux que vous connaissez déjà. + </text> + </panel> + <panel name="sidebar_me"> + <text name="tab_name" value="Mon profil"/> + <text name="tab_description"> + Modifiez votre profil public. + </text> + </panel> + <panel name="sidebar_appearance"> + <text name="tab_name" value="Mon apparence"/> + <text name="tab_description"> + Modifiez votre apparence actuelle. + </text> + </panel> + <panel name="sidebar_inventory"> + <text name="tab_name" value="Mon inventaire"/> + <text name="tab_description"> + Parcourez votre inventaire. + </text> + </panel> + </panel> + </scroll_container> +</panel> 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 6a481a155c..e58e806f99 100644 --- a/indra/newview/skins/default/xui/fr/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/fr/panel_status_bar.xml @@ -12,11 +12,20 @@ <panel.string name="bandwidth_tooltip"> Bande passante </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"> [AMT] L$ </panel.string> - <button label="" label_selected="" name="buycurrency" tool_tip="Mon solde : Cliquez ici pour acheter plus de L$"/> - <text name="TimeText" tool_tip="Heure actuelle (Californie)"> - midi + <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)"> + 00h00 PST </text> + <button name="media_toggle_btn" tool_tip="Cliquer pour activer/désactiver le média"/> + <button name="volume_btn" tool_tip="Contrôle du volume global"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_sys_well_item.xml b/indra/newview/skins/default/xui/fr/panel_sys_well_item.xml new file mode 100644 index 0000000000..81db7c8989 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_sys_well_item.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- All our XML is utf-8 encoded. --> +<panel name="sys_well_item" title="sys_well_item"> + <text name="title"> + Beware the trout. BEWARE! THE! TROUT! + </text> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_teleport_history.xml b/indra/newview/skins/default/xui/fr/panel_teleport_history.xml new file mode 100644 index 0000000000..bfd7a869c5 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_teleport_history.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="Teleport History"> + <accordion name="history_accordion"> + <accordion_tab name="today" title="Aujourd'hui"/> + <accordion_tab name="yesterday" title="Hier"/> + <accordion_tab name="2_days_ago" title="Il y a 2 jours"/> + <accordion_tab name="3_days_ago" title="Il y a 3 jours"/> + <accordion_tab name="4_days_ago" title="Il y a 4 jours"/> + <accordion_tab name="5_days_ago" title="Il y a 5 jours"/> + <accordion_tab name="6_days_and_older" title="Il y a 6 jours ou plus"/> + <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"> + <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 new file mode 100644 index 0000000000..21eb7ff62c --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_teleport_history_item.xml @@ -0,0 +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/panel_world_map.xml b/indra/newview/skins/default/xui/fr/panel_world_map.xml index a35d0eaea9..e6e95c2605 100644 --- a/indra/newview/skins/default/xui/fr/panel_world_map.xml +++ b/indra/newview/skins/default/xui/fr/panel_world_map.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="world_map"> <panel.string name="Loading"> - Chargement… + Chargement... </panel.string> <panel.string name="InvalidLocation"> Lieu invalide... diff --git a/indra/newview/skins/default/xui/fr/role_actions.xml b/indra/newview/skins/default/xui/fr/role_actions.xml index a2df596773..3367353b28 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 new file mode 100644 index 0000000000..60fd63bffc --- /dev/null +++ b/indra/newview/skins/default/xui/fr/sidepanel_appearance.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<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"> + (non enregistré) + </text> + <text name="currentlook_name"> + Ma tenue avec un nom très long comme ORIGNAL + </text> + </panel> + <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 new file mode 100644 index 0000000000..eba399f6a3 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Choses" name="objects panel"> + <panel label="" name="sidepanel__inventory_panel"> + <panel name="button_panel"> + <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"/> + </panel> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml new file mode 100644 index 0000000000..31a0534b2d --- /dev/null +++ b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="item properties" title="Profil de l'objet"> + <panel.string name="unknown"> + (inconnu) + </panel.string> + <panel.string name="public"> + (public) + </panel.string> + <panel.string name="you_can"> + Vous pouvez : + </panel.string> + <panel.string name="owner_can"> + Le propriétaire peut : + </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="Profil de l'objet"/> + <text name="where" value="(inventaire)"/> + <panel label=""> + <text name="LabelItemNameTitle"> + Nom : + </text> + <text name="LabelItemDescTitle"> + Description : + </text> + <text name="LabelCreatorTitle"> + Créateur : + </text> + <text name="LabelCreatorName"> + Nicole Linden + </text> + <button label="Profil" name="BtnCreator"/> + <text name="LabelOwnerTitle"> + Propriétaire : + </text> + <text name="LabelOwnerName"> + Thrax Linden + </text> + <button label="Profil" name="BtnOwner"/> + <text name="LabelAcquiredTitle"> + Acquis : + </text> + <text name="LabelAcquiredDate"> + Wed May 24 12:50:46 2006 + </text> + <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 : L$" name="Edit Cost"/> + </panel> + <panel name="button_panel"> + <button label="Annuler" name="cancel_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 new file mode 100644 index 0000000000..e617ae444d --- /dev/null +++ b/indra/newview/skins/default/xui/fr/sidepanel_task_info.xml @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="object properties" title="Profil de l'objet"> + <panel.string name="text deed continued"> + Céder + </panel.string> + <panel.string name="text deed"> + Céder + </panel.string> + <panel.string name="text modify info 1"> + Vous pouvez modifier cet objet + </panel.string> + <panel.string name="text modify info 2"> + Vous pouvez modifier ces objets + </panel.string> + <panel.string name="text modify info 3"> + Vous ne pouvez pas modifier cet objet + </panel.string> + <panel.string name="text modify info 4"> + Vous ne pouvez pas modifier ces objets + </panel.string> + <panel.string name="text modify warning"> + Cet objet comprend des parties liées + </panel.string> + <panel.string name="Cost Default"> + Prix : L$ + </panel.string> + <panel.string name="Cost Total"> + Prix total : L$ + </panel.string> + <panel.string name="Cost Per Unit"> + Prix par : L$ + </panel.string> + <panel.string name="Cost Mixed"> + Prix mixte + </panel.string> + <panel.string name="Sale Mixed"> + Vente mixte + </panel.string> + <text name="title" value="Profil de l'objet"/> + <text name="where" value="(dans Second Life)"/> + <panel label=""> + <text name="Name:"> + Nom : + </text> + <text name="Description:"> + Description : + </text> + <text name="CreatorNameLabel"> + Créateur : + </text> + <text name="Creator Name"> + Erica Linden + </text> + <text name="Owner:"> + Propriétaire : + </text> + <text name="Owner Name"> + Erica Linden + </text> + <text name="Group_label"> + Groupe : + </text> + <button name="button set group" tool_tip="Choisissez un groupe pour partager les droits 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 droits au prochain propriétaire. Seul un officier peut céder les objets d'un groupe."/> + <text name="label click action"> + Cliquer pour : + </text> + <combo_box name="clickaction"> + <combo_box.item label="Toucher (défaut)" name="Touch/grab(default)"/> + <combo_box.item label="S'asseoir sur l'objet" name="Sitonobject"/> + <combo_box.item label="Acheter l'objet" name="Buyobject"/> + <combo_box.item label="Payer l'objet" name="Payobject"/> + <combo_box.item label="Ouvrir" name="Open"/> + </combo_box> + <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="Copier" name="checkbox allow everyone copy"/> + <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"/> + </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="Ouvrir" name="open_btn"/> + <button label="Payer" name="pay_btn"/> + <button label="Acheter" name="buy_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index c59e359d6e..c9a5b5917d 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -1,16 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- This file contains strings that used to be hardcoded in the source. It is only for those strings which do not belong in a floater. - For example, the strings used in avatar chat bubbles, and strings + 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=fr-FR</string> <string name="SECOND_LIFE"> Second Life </string> <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> @@ -50,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> @@ -80,8 +85,17 @@ <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> + <string name="create_account_url"> + http://join.secondlife.com/index.php?lang=fr-FR + </string> <string name="AgentLostConnection"> - Il y a peut-être des problèmes techniques dans cette region. Veuillez vérifier votre connexion Internet. + Il y a peut-être des problèmes techniques dans cette région. Veuillez vérifier votre connexion Internet. </string> <string name="TooltipPerson"> Personne @@ -155,11 +169,21 @@ <string name="TooltipObjectIMUrl"> Cliquez pour afficher la description de cet objet </string> + <string name="TooltipMapUrl"> + Cliquez pour voir cet emplacement sur la carte + </string> <string name="TooltipSLAPP"> Cliquez pour exécuter la commande secondlife:// command </string> + <string name="CurrentURL" value=" URL actuelle : [CurrentURL]"/> + <string name="SLurlLabelTeleport"> + Me téléporter vers + </string> + <string name="SLurlLabelShowOnMap"> + Afficher la carte pour + </string> <string name="BUTTON_CLOSE_DARWIN"> - Fermer (⌘W) + Fermer (⌘W) </string> <string name="BUTTON_CLOSE_WIN"> Fermer (Ctrl+W) @@ -176,12 +200,15 @@ <string name="BUTTON_DOCK"> Attacher </string> - <string name="BUTTON_UNDOCK"> - Détacher - </string> <string name="BUTTON_HELP"> Afficher l'aide </string> + <string name="Searching"> + Recherche... + </string> + <string name="NoneFound"> + Aucun résultat. + </string> <string name="RetrievingData"> En cours d'extraction... </string> @@ -189,7 +216,7 @@ Notes de version </string> <string name="LoadingData"> - Chargement.. + Chargement... </string> <string name="AvatarNameNobody"> (personne) @@ -197,8 +224,8 @@ <string name="AvatarNameWaiting"> (en attente) </string> - <string name="AvatarNameHippos"> - (hippos) + <string name="AvatarNameMultiple"> + (multiple) </string> <string name="GroupNameNone"> (aucun) @@ -267,10 +294,10 @@ racine </string> <string name="lsl2 script"> - script lsl2 + script LSL2 </string> <string name="lsl bytecode"> - bytecode lsl + bytecode LSL </string> <string name="tga texture"> texture tga @@ -282,13 +309,13 @@ photo </string> <string name="lost and found"> - objets trouvés + Objets trouvés </string> <string name="targa image"> image targa </string> <string name="trash"> - poubelle + Poubelle </string> <string name="jpeg image"> image jpeg @@ -308,6 +335,9 @@ <string name="symbolic link"> lien </string> + <string name="AvatarEditingAppearance"> + (Apparence en cours de modification) + </string> <string name="AvatarAway"> Absent </string> @@ -315,7 +345,7 @@ Occupé </string> <string name="AvatarMuted"> - Ignoré + Bloqué(e) </string> <string name="anim_express_afraid"> Effrayé @@ -530,6 +560,9 @@ <string name="worldmap_offline"> Hors ligne </string> + <string name="worldmap_results_none_found"> + Aucun résultat. + </string> <string name="Ok"> OK </string> @@ -557,6 +590,9 @@ <string name="hang_up"> Déconnecté du chat vocal </string> + <string name="reconnect_nearby"> + Vous allez maintenant être reconnecté(e) au chat vocal près de vous. + </string> <string name="ScriptQuestionCautionChatGranted"> '[OBJECTNAME]', un objet appartenant à [OWNERNAME], situé dans [REGIONNAME] à [REGIONPOS], a reçu le droit de : [PERMISSIONS]. </string> @@ -596,14 +632,17 @@ <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 + Adulte </string> <string name="SIM_ACCESS_DOWN"> Hors ligne @@ -660,16 +699,16 @@ Choisir le répertoire </string> <string name="AvatarSetNotAway"> - Ne plus me mettre en mode absent + Présent </string> <string name="AvatarSetAway"> - Me mettre en mode absent + Absent </string> <string name="AvatarSetNotBusy"> - Ne plus me mettre en mode occupé + Pas occupé </string> <string name="AvatarSetBusy"> - Me mettre en mode occupé + Occupé </string> <string name="shape"> Silhouette @@ -702,17 +741,59 @@ Gants </string> <string name="undershirt"> - Sous-vêtements (homme) + Débardeur </string> <string name="underpants"> - Sous-vêtements (femme) + Caleçon </string> <string name="skirt"> Jupe </string> + <string name="alpha"> + Alpha + </string> + <string name="tattoo"> + Tatouage + </string> <string name="invalid"> non valide </string> + <string name="next"> + Suivant + </string> + <string name="ok"> + OK + </string> + <string name="GroupNotifyGroupNotice"> + Note au groupe + </string> + <string name="GroupNotifyGroupNotices"> + Notices au groupe + </string> + <string name="GroupNotifySentBy"> + Envoyée par + </string> + <string name="GroupNotifyAttached"> + Pièce(s) jointe(s) : + </string> + <string name="GroupNotifyViewPastNotices"> + Consultez les notices précédentes ou choisissez de ne plus recevoir ces messages ici. + </string> + <string name="GroupNotifyOpenAttachment"> + Ouvrir la pièce jointe + </string> + <string name="GroupNotifySaveAttachment"> + Enregistrer la pièce jointe + </string> + <string name="TeleportOffer"> + Offre de téléportation + </string> + <string name="StartUpNotifications"> + De nouvelles notifications sont arrivées en votre absence. + </string> + <string name="OverflowInfoChannelString"> + Vous avez %d notification(s) supplémentaire(s) + </string> <string name="BodyPartsRightArm"> Bras droit </string> @@ -744,22 +825,59 @@ Appuyez sur ESC pour quitter la vue subjective </string> <string name="InventoryNoMatchingItems"> - Aucun objet correspondant ne se trouve dans l'inventaire. + Aucun objet correspondant dans l'inventaire. Essayer la [secondlife:///app/search/groups "Recherche"]. + </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> + <string name="no_transfer" value=" (pas de transfert)"/> + <string name="no_modify" value=" (pas de modification)"/> + <string name="no_copy" value=" (pas de copie)"/> + <string name="worn" value=" (porté)"/> + <string name="link" value=" (lien)"/> + <string name="broken_link" value=" (broken_link)"/> <string name="LoadingContents"> chargement des contenus en cours... </string> <string name="NoContents"> Aucun contenu </string> + <string name="WornOnAttachmentPoint" value=" (porté sur [ATTACHMENT_POINT])"/> + <string name="PermYes"> + Oui + </string> + <string name="PermNo"> + Non + </string> + <string name="Chat" value=" Chat :"/> + <string name="Sound" value=" Son :"/> + <string name="Wait" value=" --- Attendre :"/> + <string name="AnimFlagStop" value=" Arrêter l'animation :"/> + <string name="AnimFlagStart" value=" Démarrer l'animation :"/> + <string name="Wave" value=" Faire signe"/> + <string name="HelloAvatar" value=" Bonjour, avatar !"/> + <string name="ViewAllGestures" value=" Tout afficher >>"/> + <string name="Animations" value=" Animations,"/> + <string name="Calling Cards" value=" Cartes de visite,"/> + <string name="Clothing" value=" Habits,"/> + <string name="Gestures" value=" Gestes,"/> + <string name="Landmarks" value=" Repères,"/> + <string name="Notecards" value=" Notes,"/> + <string name="Objects" value=" Objets,"/> + <string name="Scripts" value=" Scripts,"/> + <string name="Sounds" value=" Sons,"/> + <string name="Textures" value=" Textures,"/> + <string name="Snapshots" value=" Photos,"/> + <string name="No Filters" value="Non "/> + <string name="Since Logoff" value=" - Depuis la déconnexion"/> <string name="InvFolder My Inventory"> Mon inventaire </string> <string name="InvFolder My Favorites"> - Mes favoris + Mes Favoris </string> <string name="InvFolder Library"> Bibliothèque @@ -1013,6 +1131,15 @@ <string name="AgeDaysC"> [COUNT] jours </string> + <string name="GroupMembersA"> + [COUNT] membre + </string> + <string name="GroupMembersB"> + [COUNT] membres + </string> + <string name="GroupMembersC"> + [COUNT] membres + </string> <string name="AcctTypeResident"> Résident </string> @@ -1032,13 +1159,13 @@ Infos de paiement enregistrées </string> <string name="NoPaymentInfoOnFile"> - Aucune info de paiement + Aucune info de paiement enregistrée </string> <string name="AgeVerified"> - Âge vérifié + Personne dont l'âge a été vérifié </string> <string name="NotAgeVerified"> - Âge non vérifié + Personne dont l'âge n'a pas été vérifié </string> <string name="Center 2"> Centrer 2 @@ -1074,10 +1201,10 @@ Problème lors du téléchargement </string> <string name="CompileQueueInsufficientPermDownload"> - Permissions insuffisantes pour télécharger un script. + Droits insuffisants pour télécharger un script. </string> <string name="CompileQueueInsufficientPermFor"> - Permissions insuffisantes pour + Droits insuffisants pour </string> <string name="CompileQueueUnknownFailure"> Échec du téléchargement, erreur inconnue @@ -1107,7 +1234,7 @@ arrêter </string> <string name="CompileSuccessful"> - Compilation réussie ! + Compilation réussie ! </string> <string name="CompileSuccessfulSaving"> Compilation réussie, enregistrement en cours... @@ -1119,14 +1246,18 @@ Script (objet hors de portée) </string> <string name="GodToolsObjectOwnedBy"> - Objet [OBJECT] possédé par [OWNER] + Objet [OBJECT] appartenant à [OWNER] </string> <string name="GroupsNone"> aucun </string> + <string name="Group" value=" (groupe)"/> <string name="Unknown"> (Inconnu) </string> + <string name="SummaryForTheWeek" value="Récapitulatif de la semaine, début le "/> + <string name="NextStipendDay" value="Prochaine prime le "/> + <string name="GroupIndividualShare" value=" Groupe Part individuelle"/> <string name="Balance"> Solde </string> @@ -1155,26 +1286,185 @@ erreur </string> <string name="RegionInfoAllEstatesOwnedBy"> - tous les domaines possédés par [OWNER] + tous les domaines appartenant à [OWNER] </string> <string name="RegionInfoAllEstatesYouOwn"> - tous les domaines que vous possédez + tous les domaines vous appartenant </string> <string name="RegionInfoAllEstatesYouManage"> - tous les domaines que vous gérez pour [owner] + tous les domaines que vous gérez pour [OWNER] </string> <string name="RegionInfoAllowedResidents"> - Résidents autorisés : ([ALLOWEDAGENTS], max [MAXACCESS]) + Résidents autorisés : ([ALLOWEDAGENTS], max. [MAXACCESS]) </string> <string name="RegionInfoAllowedGroups"> - Groupes autorisés : ([ALLOWEDGROUPS], max [MAXACCESS]) + 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="ScriptLimitsRequestNoParcelSelected"> + Aucune parcelle sélectionnée + </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] + Ligne [LINE], colonne [COLUMN] </string> <string name="PanelDirCountFound"> [COUNT] trouvé(s) </string> + <string name="PanelDirTimeStr"> + [hour12,datetime,slt]:[min,datetime,slt] [ampm,datetime,slt] + </string> + <string name="PanelDirEventsDateText"> + [mthnum,datetime,slt]/[day,datetime,slt] + </string> <string name="PanelContentsNewScript"> Nouveau script </string> @@ -1197,8 +1487,10 @@ Il n'y a aucun règlement pour ce domaine. Le terrain sur ce domaine est vendu par le propriétaire, non par Linden Lab. Pour en savoir plus, veuillez contacter le propriétaire. </string> <string name="covenant_last_modified"> - Dernière modification : + Dernière modification : </string> + <string name="none_text" value=" (aucun)"/> + <string name="never_text" value=" (jamais)"/> <string name="GroupOwned"> Propriété du groupe </string> @@ -1206,28 +1498,16 @@ Public </string> <string name="ClassifiedClicksTxt"> - Clics : [TELEPORT] téléporter, [MAP] carte, [PROFILE] profile + Clics : [TELEPORT] téléportation, [MAP] carte, [PROFILE] profil </string> <string name="ClassifiedUpdateAfterPublish"> (mise à jour après la publication) </string> - <string name="GroupVoteYes"> - Oui - </string> - <string name="GroupVoteNo"> - Non - </string> - <string name="GroupVoteNoActiveProposals"> - Il n'y a aucune proposition active actuellement - </string> - <string name="GroupVoteNoArchivedProposals"> - Il n'y a aucune proposition archivée actuellement + <string name="NoPicksClassifiedsText"> + Vous n'avez pas créé de favoris ni de petites annonces Cliquez sur le bouton Plus pour créer un favori ou une petite annonce. </string> - <string name="GroupVoteRetrievingArchivedProposals"> - Extraction des propositions archivées - </string> - <string name="GroupVoteRetrievingActiveProposals"> - Extraction des propositions actives + <string name="PicksClassifiedsLoadingText"> + Chargement... </string> <string name="MultiPreviewTitle"> Prévisualiser @@ -1299,29 +1579,41 @@ Annuler </string> <string name="UploadingCosts"> - Chargement de %s coûts + Charger %s coûte </string> <string name="UnknownFileExtension"> - Extension de fichier inconnue. %s + 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+ @@ -1339,10 +1631,10 @@ Réception </string> <string name="AM"> - AM + Matin </string> <string name="PM"> - PM + Après-midi </string> <string name="PST"> PST @@ -1360,7 +1652,7 @@ Droite </string> <string name="Back"> - Précédente + Arrière </string> <string name="North"> Nord @@ -1375,10 +1667,10 @@ Est </string> <string name="Up"> - Vers le haut + Haut </string> <string name="Down"> - Vers le bas + Bas </string> <string name="Any Category"> Toutes catégories @@ -1417,13 +1709,13 @@ Appartenant aux Lindens </string> <string name="Adult"> - Adult + Adulte </string> <string name="Arts&Culture"> - Art et Culture + Arts et culture </string> <string name="Business"> - Affaires + Business </string> <string name="Educational"> Éducation @@ -1438,7 +1730,7 @@ Accueil pour les nouveaux </string> <string name="Parks&Nature"> - Parcs et Nature + Parcs et nature </string> <string name="Residential"> Résidentiel @@ -1482,13 +1774,19 @@ <string name="---"> --- </string> + <string name="Multiple Media"> + Médias multiples + </string> + <string name="Play Media"> + Lire/pauser le média + </string> <string name="MBCmdLineError"> Une erreur est survenue lors de la lecture de la ligne de commande. -Merci de consulter : http://wiki.secondlife.com/wiki/Client_parameters -Erreur : +Merci de consulter : http://wiki.secondlife.com/wiki/Client_parameters +Erreur : </string> <string name="MBCmdLineUsg"> - [APP_NAME] Utilisation de la ligne de commande : + [APP_NAME] - Utilisation de la ligne de commande : </string> <string name="MBUnableToAccessFile"> [APP_NAME] ne peut accéder à un fichier requis. @@ -1504,20 +1802,20 @@ Si le problème persiste, vous devrez peut-être complètement désinstaller pui [APP_NAME] nécessite un microprocesseur AltiVec (version G4 ou antérieure). </string> <string name="MBAlreadyRunning"> - [APP_NAME] est déjà lancé. + [APP_NAME] est déjà en cours d'exécution. Vérifiez si une version minimisée du programme apparaît dans votre barre de tâches. Si ce message persiste, redémarrez votre ordinateur. </string> <string name="MBFrozenCrashed"> [APP_NAME] semble avoir crashé lors de l'utilisation précédente. -Voulez-vous envoyer un rapport de crash ? +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. -[APP_NAME] utilise DirectX pour détecter les matériels et/ou les pilotes qui ne sont pas à jour et peuvent causer des problèmes de stabilité, de performance, ou des plantages. Bien que vous puissiez utiliser [APP_NAME] sans DirectX, nous vous recommandons de l'utiliser avec DirectX 9.0b. +[APP_NAME] utilise DirectX pour détecter les matériels et/ou les pilotes qui ne sont pas à jour et peuvent causer des problèmes de stabilité, de performance ou des plantages. Bien que vous puissiez utiliser [APP_NAME] sans DirectX, nous vous recommandons de l'utiliser avec DirectX 9.0b. Voulez-vous continuer ? </string> @@ -1535,11 +1833,11 @@ Veuillez télécharger la dernière version sur www.secondlife.com. Erreur </string> <string name="MBFullScreenErr"> - Impossible d'ouvrir le mode plein écran de [WIDTH] x [HEIGHT] + Impossible d'ouvrir le mode plein écran à [WIDTH] x [HEIGHT]. Utilisation du mode fenêtré. </string> <string name="MBDestroyWinFailed"> - Erreur de fermeture lors de la destruction de la fenêtre (DestroyWindow() failed)) + Erreur de fermeture lors de la destruction de la fenêtre (DestroyWindow() a échoué) </string> <string name="MBShutdownErr"> Erreur de fermeture @@ -1554,14 +1852,13 @@ Utilisation du mode fenêtré. Impossible de trouver la description du format pixel </string> <string name="MBTrueColorWindow"> - [APP_NAME] nécessite que True Color (32-bit) soit exécuté dans une fenêtre. -Veuillez allez sous Panneau de configuration > Affichage > Paramètres et régler la couleur de l'écran sur 32-bit. -Sinon, lorsque vous choisissez le mode plein écran, [APP_NAME] ajustera automatiquement l'écran à chaque utilisation. + [APP_NAME] nécessite True Color (32 bits) pour s'exécuter. +Accédez aux paramètres d'affichage de votre ordinateur et réglez le mode couleur sur 32 bits. </string> <string name="MBAlpha"> - [APP_NAME] ne peut pas être lancé car il n'y pas de channel 8 bit accessible. En général, ceci vient de problèmes avec le pilote de la carte vidéo. + [APP_NAME] ne peut pas s'exécuter, car il n'y pas de canal alpha 8 bits accessible. En général, ceci vient de problèmes avec le pilote de la carte vidéo. Assurez-vous d'avoir installé le pilote de carte vidéo le plus récent possible. - Assurez-vous aussi que votre écran est réglé sur True Clor (22-bit) sous Panneau de configuration > Affichage > Paramètres. +Assurez-vous aussi que votre écran est réglé sur True Color (32 bits) sous Panneau de configuration > Affichage > Paramètres. Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. </string> <string name="MBPixelFmtSetErr"> @@ -1574,12 +1871,12 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Impossible d'activer le contexte de rendu GL </string> <string name="MBVideoDrvErr"> - [APP_NAME] ne peut pas être exécuté car les pilotes de votre carte vidéo n'ont pas été installés correctement, ne sont pas à jour, ou sont pour du matériel non pris en charge. Assurez-vous d'avoir des pilotes de cartes vidéos récents, et même si vous avez les plus récents, réinstallez-les. + [APP_NAME] ne peut pas s'exécuter car les pilotes de votre carte vidéo n'ont pas été installés correctement, ne sont pas à jour, ou sont pour du matériel non pris en charge. Assurez-vous d'avoir des pilotes de cartes vidéos récents, et même si vous avez les plus récents, réinstallez-les. Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. </string> <string name="5 O'Clock Shadow"> - Barbe naissante + Peu </string> <string name="All White"> Tout blancs @@ -1588,50 +1885,26 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Grand yeux </string> <string name="Arced"> - Arquées + Arqués </string> <string name="Arm Length"> Longueur des bras </string> <string name="Attached"> - Minces + Attachés </string> <string name="Attached Earlobes"> - Largeur des lobes - </string> - <string name="Back Bangs"> - Mèches de derrière - </string> - <string name="Back Bangs Down"> - Mèches de derrière Bas - </string> - <string name="Back Bangs Up"> - Mèches de derrière haut + Lobes </string> <string name="Back Fringe"> Mèches de derrière </string> - <string name="Back Hair"> - Cheveux de derrière - </string> - <string name="Back Hair Down"> - Cheveux de derrière Bas - </string> - <string name="Back Hair Up"> - Cheveux de derrière haut - </string> <string name="Baggy"> - Cernés + Plus </string> <string name="Bangs"> Frange </string> - <string name="Bangs Down"> - Frange Bas - </string> - <string name="Bangs Up"> - Frange Haut - </string> <string name="Beady Eyes"> Yeux perçants </string> @@ -1639,25 +1912,22 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Taille du ventre </string> <string name="Big"> - Gros + Plus </string> <string name="Big Butt"> Grosses fesses </string> - <string name="Big Eyeball"> - Gros globe oculaire - </string> <string name="Big Hair Back"> - Cheveux volumineux : Derrière + Volume : Derrière </string> <string name="Big Hair Front"> - Cheveux volumineux : Devant + Volume : Devant </string> <string name="Big Hair Top"> - Cheveux volumineux : En haut + Volume : Haut </string> <string name="Big Head"> - Grosse tête + Plus </string> <string name="Big Pectorals"> Gros pectoraux @@ -1693,13 +1963,13 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Grains de beauté </string> <string name="Body Thick"> - Corps épais + Plus </string> <string name="Body Thickness"> Épaisseur du corps </string> <string name="Body Thin"> - Corps mince + Moins </string> <string name="Bow Legged"> Jambes arquées @@ -1720,7 +1990,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Large </string> <string name="Brow Size"> - Taille des sourcils + Taille </string> <string name="Bug Eyes"> Yeux globuleux @@ -1738,7 +2008,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Sourcils touffus </string> <string name="Bushy Hair"> - Cheveux touffus + Beaucoup </string> <string name="Butt Size"> Taille des fesses @@ -1753,7 +2023,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Plus gonflante </string> <string name="Chaplin"> - Chaplin + Moins </string> <string name="Cheek Bones"> Pommettes @@ -1765,13 +2035,13 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Angle du menton </string> <string name="Chin Cleft"> - Fente labiale + Fente du menton </string> <string name="Chin Curtains"> Favoris </string> <string name="Chin Depth"> - Profondeur du menton + Profondeur </string> <string name="Chin Heavy"> Menton lourd @@ -1786,10 +2056,10 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Menton-cou </string> <string name="Clear"> - Effacer + Clair </string> <string name="Cleft"> - Fente + Fendu </string> <string name="Close Set Eyes"> Yeux rapprochés @@ -1810,7 +2080,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Fermé à droite </string> <string name="Coin Purse"> - Bijoux de famille + Mini </string> <string name="Collar Back"> Col arrière @@ -1821,23 +2091,17 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Corner Down"> Coin vers le bas </string> - <string name="Corner Normal"> - Coin normal - </string> <string name="Corner Up"> Coin vers le haut </string> <string name="Creased"> - Frippée + Fripée </string> <string name="Crooked Nose"> - Nez en bec d'aigle - </string> - <string name="Cropped Hair"> - Garçonne + Déviation du nez </string> <string name="Cuff Flare"> - Jambe + Jambes </string> <string name="Dark"> Sombre @@ -1854,15 +2118,9 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Default Heels"> Talons par défaut </string> - <string name="Default Toe"> - Orteil par défaut - </string> <string name="Dense"> Dense </string> - <string name="Dense hair"> - Cheveux denses - </string> <string name="Double Chin"> Double menton </string> @@ -1870,16 +2128,16 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Pointant vers le bas </string> <string name="Duffle Bag"> - Membre viril + Maxi </string> <string name="Ear Angle"> Angle de l'oreille </string> <string name="Ear Size"> - Taille de l'oreille + Taille </string> <string name="Ear Tips"> - Pointes de l'oreille + Extrémités </string> <string name="Egg Head"> Forme de la tête @@ -1891,13 +2149,13 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Couleur des yeux </string> <string name="Eye Depth"> - Profondeur des yeux + Profondeur </string> <string name="Eye Lightness"> - Clarté des yeux + Clarté </string> <string name="Eye Opening"> - Ouverture des yeux + Ouverture </string> <string name="Eye Pop"> Œil proéminent @@ -1906,25 +2164,22 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Taille de l'œil </string> <string name="Eye Spacing"> - Espacement des yeux - </string> - <string name="Eyeball Size"> - Taille du globe oculaire + Espacement </string> <string name="Eyebrow Arc"> - Arc des sourcils + Arc </string> <string name="Eyebrow Density"> - Épaisseur des sourcils + Épaisseur sourcils </string> <string name="Eyebrow Height"> - Hauteur des sourcils + Hauteur </string> <string name="Eyebrow Points"> - Direction des sourcils + Direction </string> <string name="Eyebrow Size"> - Taille des sourcils + Taille </string> <string name="Eyelash Length"> Longueur des cils @@ -1935,69 +2190,21 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Eyeliner Color"> Couleur de l'eyeliner </string> - <string name="Eyes Back"> - Yeux noirs - </string> <string name="Eyes Bugged"> Yeux globuleux </string> - <string name="Eyes Forward"> - Yeux vers l'avant - </string> - <string name="Eyes Long Head"> - Yeux longue tête - </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="Eyes Short Head"> - Yeux petite tête - </string> - <string name="Eyes Spread"> - Espacement des yeux - </string> - <string name="Eyes Sunken"> - Yeux enfoncés - </string> - <string name="Eyes Together"> - Yeux rapprochés - </string> <string name="Face Shear"> Visage </string> <string name="Facial Definition"> - Définition du visage + Définition </string> <string name="Far Set Eyes"> Yeux écartés </string> - <string name="Fat"> - Grosse - </string> - <string name="Fat Head"> - Grosse tête - </string> <string name="Fat Lips"> Lèvres épaisses </string> - <string name="Fat Lower"> - Inférieure plus épaisse - </string> - <string name="Fat Lower Lip"> - Lèvre inférieure épaisse - </string> - <string name="Fat Torso"> - Torse épais - </string> - <string name="Fat Upper"> - Supérieure plus épaisse - </string> - <string name="Fat Upper Lip"> - Lèvre supérieure épaisse - </string> <string name="Female"> Femme </string> @@ -2011,7 +2218,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Jambes larges </string> <string name="Flat"> - Plat + Moins </string> <string name="Flat Butt"> Fesses plates @@ -2034,24 +2241,9 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Freckles"> Tâches de rousseur </string> - <string name="Front Bangs Down"> - Mèches de devant longues - </string> - <string name="Front Bangs Up"> - Mèches de devant courtes - </string> <string name="Front Fringe"> Mèches de devant </string> - <string name="Front Hair"> - Cheveux devant - </string> - <string name="Front Hair Down"> - Cheveux de devant longs - </string> - <string name="Front Hair Up"> - Cheveux de devant courts - </string> <string name="Full Back"> Arrière touffu </string> @@ -2080,25 +2272,25 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Cheveux </string> <string name="Hair Back"> - Cheveux : Derrière + Cheveux : Derrière </string> <string name="Hair Front"> - Cheveux : Devant + Cheveux : Devant </string> <string name="Hair Sides"> - Cheveux : Côtés + Cheveux : Côtés </string> <string name="Hair Sweep"> Sens de la coiffure </string> <string name="Hair Thickess"> - Épaisseur des cheveux + Épaisseur cheveux </string> <string name="Hair Thickness"> - Épaisseur des cheveux + Épaisseur cheveux </string> <string name="Hair Tilt"> - Inclinaison des cheveux + Inclinaison </string> <string name="Hair Tilted Left"> Vers la gauche @@ -2107,28 +2299,28 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Vers la droite </string> <string name="Hair Volume"> - Cheveux : Volume + Cheveux : Volume </string> <string name="Hand Size"> Taille de la main </string> <string name="Handlebars"> - Guidons + Plus </string> <string name="Head Length"> - Longueur de la tête + Longueur </string> <string name="Head Shape"> - Forme de la tête + Forme </string> <string name="Head Size"> - Taille de la tête + Taille </string> <string name="Head Stretch"> - Allongement de la tête + Allongement </string> <string name="Heel Height"> - Hauteur des talons + Talons </string> <string name="Heel Shape"> Forme des talons @@ -2143,10 +2335,10 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Talons hauts </string> <string name="High Jaw"> - Mâchoire haute + Haut </string> <string name="High Platforms"> - Plateformes hautes + Haute </string> <string name="High and Tight"> Haut et serré @@ -2161,7 +2353,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Largeur hanche </string> <string name="In"> - In + Rentré </string> <string name="In Shdw Color"> Couleur ombre interne @@ -2170,7 +2362,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Opacité ombre interne </string> <string name="Inner Eye Corner"> - Coin de l'œil interne + Coin interne </string> <string name="Inner Eye Shadow"> Ombre de l'œil interne @@ -2185,13 +2377,13 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Plis de la veste </string> <string name="Jaw Angle"> - Angle de la mâchoire + Angle mâchoire </string> <string name="Jaw Jut"> - saillie de la mâchoire + Saillie de la mâchoire </string> <string name="Jaw Shape"> - Forme de la mâchoire + Mâchoire </string> <string name="Join"> Rapprochés @@ -2206,7 +2398,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Genoux rapprochés </string> <string name="Large"> - Grande + Plus </string> <string name="Large Hands"> Grandes mains @@ -2215,16 +2407,16 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Raie à gauche </string> <string name="Leg Length"> - Longueur de la jambe + Longueur </string> <string name="Leg Muscles"> - Muscles de la jambe + Muscles </string> <string name="Less"> Moins </string> <string name="Less Body Fat"> - Moins de graisse + Moins </string> <string name="Less Curtains"> Moins @@ -2251,13 +2443,13 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Moins </string> <string name="Less Round"> - Moins + Moins ronde </string> <string name="Less Saddle"> Moins </string> <string name="Less Square"> - Moins + Moins carrée </string> <string name="Less Volume"> Moins @@ -2272,7 +2464,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Fente labiale </string> <string name="Lip Cleft Depth"> - Profondeur de la fente labiale + Fente labiale </string> <string name="Lip Fullness"> Volume des lèvres @@ -2284,10 +2476,10 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Proportion des lèvres </string> <string name="Lip Thickness"> - Épaisseur des lèvres + Épaisseur </string> <string name="Lip Width"> - Largeur des lèvres + Largeur </string> <string name="Lipgloss"> Brillant à lèvres @@ -2299,7 +2491,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Couleur du rouge à lèvres </string> <string name="Long"> - Long + Plus </string> <string name="Long Head"> Tête longue @@ -2323,10 +2515,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Torse long </string> <string name="Long arms"> - Longs bras - </string> - <string name="Longcuffs"> - Manches longues + Bras longs </string> <string name="Loose Pants"> Pantalons amples @@ -2347,10 +2536,10 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Talons bas </string> <string name="Low Jaw"> - Mâchoire basse + Bas </string> <string name="Low Platforms"> - Plateformes basses + Basse </string> <string name="Low and Loose"> Bas et ample @@ -2362,7 +2551,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Arête plus basse </string> <string name="Lower Cheeks"> - Joues plus basses + Joue inférieure </string> <string name="Male"> Homme @@ -2401,7 +2590,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Plus </string> <string name="More Lower Lip"> - Plus + Inférieure plus grosse </string> <string name="More Muscles"> Plus @@ -2425,7 +2614,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Plus </string> <string name="More Upper Lip"> - Plus + Supérieure plus grosse </string> <string name="More Vertical"> Plus @@ -2443,7 +2632,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Coin de la bouche </string> <string name="Mouth Position"> - Position de la bouche + Position </string> <string name="Mowhawk"> Mowhawk @@ -2452,7 +2641,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Musclé </string> <string name="Mutton Chops"> - Rouflaquettes + Longs </string> <string name="Nail Polish"> Vernis à ongles @@ -2461,7 +2650,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Couleur du vernis </string> <string name="Narrow"> - Étroit + Moins </string> <string name="Narrow Back"> Arrière étroit @@ -2485,14 +2674,11 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Pas de blush </string> <string name="No Eyeliner"> - Pas de eyeliner + Pas d'eyeliner </string> <string name="No Eyeshadow"> Pas d'ombre à paupières </string> - <string name="No Heels"> - Pas de talons - </string> <string name="No Lipgloss"> Pas de brillant à lèvres </string> @@ -2536,10 +2722,10 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Épaisseur du nez </string> <string name="Nose Tip Angle"> - Angle du bout du nez + Bout du nez </string> <string name="Nose Tip Shape"> - Forme du bout du nez + Bout du nez </string> <string name="Nose Width"> Largeur du nez @@ -2550,9 +2736,6 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Nostril Width"> Largeur des narines </string> - <string name="Old"> - Vieux - </string> <string name="Opaque"> Opaque </string> @@ -2575,7 +2758,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Orange </string> <string name="Out"> - Dehors + Sorti </string> <string name="Out Shdw Color"> Couleur de l'ombre externe @@ -2584,7 +2767,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Opacité de l'ombre externe </string> <string name="Outer Eye Corner"> - Coin de l'œil externe + Coin externe </string> <string name="Outer Eye Shadow"> Ombre de l'œil externe @@ -2593,7 +2776,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Ombre externe </string> <string name="Overbite"> - Chevauchement + Rentrée </string> <string name="Package"> Parties @@ -2623,7 +2806,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Raie </string> <string name="Part Bangs"> - Séparation de la frange + Séparation frange </string> <string name="Pectorals"> Pectoraux @@ -2641,20 +2824,17 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Plus rose </string> <string name="Platform Height"> - Hauteur de la plateforme + Plateforme (hauteur) </string> <string name="Platform Width"> - Largeur de la plateforme + Plateforme (largeur) </string> <string name="Pointy"> - Pointu + Pointue </string> <string name="Pointy Heels"> Talons pointus </string> - <string name="Pointy Toe"> - Orteil pointu - </string> <string name="Ponytail"> Queue de cheval </string> @@ -2668,26 +2848,20 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Œil droit saillant </string> <string name="Puffy"> - Gonflé + Plus </string> <string name="Puffy Eyelids"> - Paupières gonflées + Cernes </string> <string name="Rainbow Color"> - Couleur de l'arc en ciel + Couleur arc en ciel </string> <string name="Red Hair"> Cheveux roux </string> - <string name="Red Skin"> - Peau rouge - </string> <string name="Regular"> Standard </string> - <string name="Regular Muscles"> - Muscles normaux - </string> <string name="Right Part"> Raie à droite </string> @@ -2697,9 +2871,6 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Round"> Rond </string> - <string name="Round Forehead"> - Front rond - </string> <string name="Ruddiness"> Rougeur </string> @@ -2712,24 +2883,12 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Saddle Bags"> Culotte de cheval </string> - <string name="Saddlebags"> - Culotte de cheval - </string> - <string name="Scrawny"> - Maigre - </string> <string name="Scrawny Leg"> Jambes maigres </string> <string name="Separate"> Séparés </string> - <string name="Shading"> - Dégradé - </string> - <string name="Shadow hair"> - Cheveux - </string> <string name="Shallow"> Creux </string> @@ -2740,19 +2899,13 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Visage </string> <string name="Shear Front"> - Devant dégagé - </string> - <string name="Shear Left"> - Gauche dégagée + Front </string> <string name="Shear Left Up"> - Haut gauche dégagé - </string> - <string name="Shear Right"> - Droite dégagée + Haut gauche décalé </string> <string name="Shear Right Up"> - Haut droit dégagé + Haut droit décalé </string> <string name="Sheared Back"> Dégagé derrière @@ -2761,13 +2914,13 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Dégagé devant </string> <string name="Shift Left"> - Déplacer vers la gauche + Vers la gauche </string> <string name="Shift Mouth"> Déplacer la bouche </string> <string name="Shift Right"> - Déplacer vers la droite + Vers la droite </string> <string name="Shirt Bottom"> Chemise @@ -2779,10 +2932,10 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Plis </string> <string name="Shoe Height"> - Hauteur de la chaussure + Hauteur </string> <string name="Short"> - Court + Moins </string> <string name="Short Arms"> Bras courts @@ -2800,7 +2953,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Queue de cheval courte </string> <string name="Short Sideburns"> - Favoris courts + Court </string> <string name="Short Torso"> Torse court @@ -2811,17 +2964,8 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Shoulders"> Épaules </string> - <string name="Side Bangs"> - Mèches sur le côté - </string> - <string name="Side Bangs Down"> - Mèches sur le côté en bas - </string> - <string name="Side Bangs Up"> - Mèches sur le côté en haut - </string> <string name="Side Fringe"> - Frange sur le côté + Mèches sur le côté </string> <string name="Sideburns"> Favoris @@ -2835,50 +2979,47 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Sides Hair Up"> Cheveux sur le côté en haut </string> - <string name="Skinny"> - Maigre - </string> <string name="Skinny Neck"> Cou maigre </string> <string name="Skirt Fit"> - Taille de la jupe + Taille jupe </string> <string name="Skirt Length"> - Longueur de la jupe + Longueur jupe </string> <string name="Slanted Forehead"> Front incliné </string> <string name="Sleeve Length"> - Longueur de la manche + Longueur manche </string> <string name="Sleeve Looseness"> - Ampleur de la manche + Ampleur manche </string> <string name="Slit Back"> - Fente : Derrière + Fente : Derrière </string> <string name="Slit Front"> - Fente : Devant + Fente : Devant </string> <string name="Slit Left"> - Fente : Gauche + Fente : Gauche </string> <string name="Slit Right"> - Fente : Droite + Fente : Droite </string> <string name="Small"> - Petite + Moins </string> <string name="Small Hands"> Petites mains </string> <string name="Small Head"> - Petite tête + Moins </string> <string name="Smooth"> - Lisse + Moins </string> <string name="Smooth Hair"> Cheveux lisses @@ -2886,11 +3027,8 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Socks Length"> Longueur des chaussettes </string> - <string name="Some"> - Quelques un(e)s - </string> <string name="Soulpatch"> - Soulpatch + Barbichette </string> <string name="Sparse"> Rares @@ -2899,7 +3037,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Mèches en pointe </string> <string name="Square"> - Carré + Carrée </string> <string name="Square Toe"> Orteil carré @@ -2907,14 +3045,11 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Squash Head"> Écraser la tête </string> - <string name="Squash/Stretch Head"> - Allonger/écraser la tête - </string> <string name="Stretch Head"> Allonger la tête </string> <string name="Sunken"> - Enfoncées + Saillante </string> <string name="Sunken Chest"> Poitrine enfoncée @@ -2928,26 +3063,14 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Sweep Forward"> Vers l'avant </string> - <string name="Swept Back"> - En arrière - </string> - <string name="Swept Back Hair"> - Cheveux en arrière - </string> - <string name="Swept Forward"> - Vers l'avant - </string> - <string name="Swept Forward Hair"> - Cheveux vers l''avant - </string> <string name="Tall"> - Grand + Plus </string> <string name="Taper Back"> - Biseauter à l'arrière + Arrière </string> <string name="Taper Front"> - Biseauter à l'avant + Avant </string> <string name="Thick Heels"> Talons épais @@ -2958,11 +3081,8 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Thick Toe"> Orteil épais </string> - <string name="Thickness"> - Épaisseur - </string> <string name="Thin"> - Fins + Mince </string> <string name="Thin Eyebrows"> Sourcils fins @@ -2991,12 +3111,6 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="Tight Sleeves"> Manches serrées </string> - <string name="Tilt Left"> - Pencher sur la gauche - </string> - <string name="Tilt Right"> - Pencher sur la droite - </string> <string name="Toe Shape"> Forme de l'orteil </string> @@ -3019,7 +3133,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Lisse </string> <string name="Underbite"> - Rentré + Sortie </string> <string name="Unnatural"> Artificiel @@ -3028,13 +3142,13 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Arête supérieure </string> <string name="Upper Cheeks"> - Pommettes + Pommette </string> <string name="Upper Chin Cleft"> - Fente du menton supérieure + Menton supérieur </string> <string name="Upper Eyelid Fold"> - Paupière supérieure + Paupière sup. </string> <string name="Upturned"> En trompette @@ -3043,19 +3157,19 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Très rouge </string> <string name="Waist Height"> - Hauteur de la taille + Hauteur taille </string> <string name="Well-Fed"> - Bien nourri + Ronde </string> <string name="White Hair"> Cheveux blancs </string> <string name="Wide"> - Large + Plus </string> <string name="Wide Back"> - Dos large + Derrière large </string> <string name="Wide Front"> Devant large @@ -3064,7 +3178,7 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. Lèvres larges </string> <string name="Wild"> - Revêche + Artificiel </string> <string name="Wrinkles"> Rides @@ -3073,16 +3187,43 @@ 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 + </string> + <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] Mettre à jour + [APP_NAME] - Mise à jour </string> <string name="UpdaterNowUpdating"> - En train de charger [APP_NAME]... + Mise à jour de [APP_NAME]... </string> <string name="UpdaterNowInstalling"> - En train d'installer [APP_NAME]... + Installation de [APP_NAME]... </string> <string name="UpdaterUpdatingDescriptive"> Le client [APP_NAME] est en train d'être mis à jour. Cela peut prendre un certain temps, merci de votre patience. @@ -3105,6 +3246,60 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="UpdaterFailStartTitle"> Impossible de lancer le client </string> + <string name="IM_logging_string"> + -- Archivage des IM activé -- + </string> + <string name="IM_typing_start_string"> + [NAME] est en train d'écrire... + </string> + <string name="Unnamed"> + (sans nom) + </string> + <string name="IM_moderated_chat_label"> + (Modéré : Voix désactivées par défaut) + </string> + <string name="IM_unavailable_text_label"> + Le chat écrit n'est pas disponible pour cet appel. + </string> + <string name="IM_muted_text_label"> + Votre chat écrit a été désactivé par un modérateur de groupe. + </string> + <string name="IM_default_text_label"> + Cliquez ici pour envoyer un message instantané. + </string> + <string name="IM_to_label"> + À + </string> + <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> @@ -3114,6 +3309,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> @@ -3132,19 +3333,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> diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml index a5aff9d486..a2fcaa63f6 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 [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 f2bd150ad7..4c82475a6f 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 0000000000..d19882fa48 --- /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 b6d6148afb..74a994825d 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 bba76a83cc..aa7b79fc50 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 89a61eeca8..e583d0b8b5 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 f55b23af35..e5ce07f300 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 126c03e855..8fd69d811d 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 c6ee0f7917..233efef19b 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 7f5b68279e..26890dc209 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 23fa1a41a6..d9dd3f26d7 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 1a6f64c07e..e84d396138 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 a22850bc4b..9d97f7d72d 100644 --- a/indra/newview/skins/default/xui/it/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/it/floater_buy_currency.xml @@ -1,69 +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> - <line_editor name="currency_amt"> + <text name="currency_label"> + L$ + </text> + <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... + Calcolando... </text> - <text name="balance_label"> - Attualmente possiedi - </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="purchase_warning_repurchase" height="48" bottom_delta="-64" right="-10"> - Confermando questa operazione si acquisterà solo -la valuta. Per acquistare il bene, dovrai riprovare -l'operazione nuovamente. + <text name="currency_links"> + [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="purchase_warning_notenough" bottom_delta="16"> - Non stai comprando abbastanza denaro. -Devi aumentare l'importo da acquistare. + <text name="exchange_rate_note"> + Ri-scrivi un importo per vedere l'ultimo rapporto di cambio. </text> + <text name="purchase_warning_repurchase"> + Confermando questo acquisto di soli L$, non l'oggetto. + </text> + <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 b5d7ba0763..9fa5bd5570 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 e99d432367..5f3413931b 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 823be8f4a1..182f82f17f 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 297b006e72..8551d65da2 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 ad6111718a..63e08444cd 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 932978809d..2410a16882 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 32858d18cd..1c17c18e84 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 91b7381d13..eefa3bb392 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 cdf3e970a6..08326b1da3 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 0000000000..9a158c5216 --- /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 2a9862fe7c..6303615e60 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 0000000000..2970639f4c --- /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 0000000000..830c65b443 --- /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 8ee3181bce..341202d8bc 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 0000000000..fc7b8de6f4 --- /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 1a4e6c3c1b..bae993d2be 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 e3325463d6..5049bb3e58 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 8860fd8207..aaf7b71656 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 d74ff9bfb4..3eff0cfceb 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 5ed748da69..93bf11b069 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 8a6689f6af..9f2884448d 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 bd50ad3df7..d86b834c38 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 4241a32ec1..b699b280b6 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 0000000000..b99a11b881 --- /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 d180953157..ee3d642fef 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 5bd84d48c8..edc5d9178d 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 a72bfe9681..81cd46ec4d 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 0000000000..364b62fbdb --- /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 0c2029e18e..d8144c7cd5 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 0000000000..b4536e31cc --- /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 4889f97ec7..59004bbbd7 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 c41c0ba41e..c51a2b7b31 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 46de31455b..67e4093951 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 5ea3b634d4..de246db826 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 172449554d..a76b9e3e27 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 e9e0252613..006198781b 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 5819bd37a5..c617f81f7b 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 dca38c363f..1e1653e758 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 60d3a7710e..850f4c21ac 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 0000000000..660b868cae --- /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 0000000000..942d5ed1ce --- /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 0000000000..7c1f55ddba --- /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 81a51223b0..08f5087242 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 5fd015f7fe..182243561c 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 e3232730e2..dd24079ea3 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 a715cf1f06..98808e4b55 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 4b969354fe..a1e430b6b2 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 0000000000..e70a30fa24 --- /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 934ffd5395..9428297397 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 37eb3e4bbf..728fbe8c8d 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 e5f923f7a3..3d0b02877e 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 0000000000..6afdd2437e --- /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 04a7726497..181b7d5292 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 91712a706b..2a4fa05b54 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 aec3c8aa9d..385a7ed6e9 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 e226ce6ffe..668c3c8c9e 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 0000000000..7c8e6ba1a1 --- /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 0000000000..057d3657d0 --- /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 de5c32574f..08f5564c7b 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 836f85b48c..e57c37073a 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 8e6f27e162..dda957025b 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 9b406199e9..8f7f3e060a 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 12b6021b5b..f3f8072f56 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 0000000000..e4c54d44eb --- /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 13db1d4589..d2849440d6 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 0000000000..6d68db058d --- /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 6fb7b93bc7..a672df0d96 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 0000000000..61f7a69234 --- /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 0000000000..d7b86fdbcb --- /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 0000000000..7e6d195cb1 --- /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 0000000000..9fabe2ca0b --- /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 0000000000..ff068b90a5 --- /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 0000000000..9711b5918a --- /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 0000000000..522c7ab4e6 --- /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 0000000000..a435fcd311 --- /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 0000000000..b7a9f8efbe --- /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 0000000000..185cf75183 --- /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 0000000000..9c4966d198 --- /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 0000000000..c4f9d21d14 --- /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 0000000000..6b7692a067 --- /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 0000000000..a87e76a19b --- /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 0000000000..f78ed8489f --- /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 0000000000..f39ad316fe --- /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 0000000000..e89576b1f9 --- /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 0000000000..968fbd37ae --- /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 0000000000..74d828fc20 --- /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 0000000000..1812a21b0d --- /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 31b50e8d6b..edb9490914 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 0000000000..d33dabc4c3 --- /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 0000000000..e97af5c950 --- /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 0000000000..173c080c3f --- /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 0000000000..58e3e992ed --- /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 44a801d273..db3b84df29 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 1109f3f646..7caa7fd226 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 0000000000..3d855cf701 --- /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 0000000000..2a625fc763 --- /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 0000000000..955d4c8776 --- /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 0000000000..0f347b1a90 --- /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 0000000000..33c8fc404d --- /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 0000000000..ad8927be13 --- /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 0000000000..d31ddaf1aa --- /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 0000000000..be071a5074 --- /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 0000000000..f9fda2fb98 --- /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 0000000000..c1b384196d --- /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 0000000000..f8fd9dca79 --- /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 0000000000..e84b321ccf --- /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 0000000000..d758a9715e --- /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 0000000000..5b9261b159 --- /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 0000000000..6dd10f422e --- /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 0000000000..45765bf77d --- /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 0000000000..2c5b8a848c --- /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 0000000000..76a04a127e --- /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 283fd92b19..be83133efc 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 0000000000..71acda5a9d --- /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 0000000000..c01230584b --- /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 0000000000..c221f141a6 --- /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 0000000000..baab233a21 --- /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 0000000000..874f7a8df9 --- /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 0000000000..ac9dab2b3c --- /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 0000000000..b8f965f2d6 --- /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 0000000000..0b410b4eff --- /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 0000000000..096efcd1b9 --- /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 0000000000..67a9f0b914 --- /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 0000000000..e40d05f423 --- /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 0000000000..2e5ad64a59 --- /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 0000000000..1850252669 --- /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 0000000000..0a09090c26 --- /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 b1eb80149e..f9605da22a 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 0000000000..5db3eddca8 --- /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 0000000000..f91c9ce5bd --- /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 26a64a49d3..2a370a2ed0 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 0000000000..b8cca6f01a --- /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 0000000000..4a7c9b11c7 --- /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 0000000000..40f805774e --- /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 0000000000..cf833924ae --- /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 0000000000..f2aab63dce --- /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 0000000000..2ba127d34a --- /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 0000000000..652bef0430 --- /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 0000000000..81ef121dd8 --- /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 0000000000..3b1e51e759 --- /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 0000000000..2a80d6df3d --- /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 0000000000..137a5cabeb --- /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 0000000000..43c825ff73 --- /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 0000000000..cbab711fb1 --- /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 0000000000..7f2e82e4ff --- /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 33f3c367c2..b9779c77b5 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 0000000000..f22b393ecd --- /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 0000000000..5d902ae40b --- /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 0000000000..bd1fa5b16d --- /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 0000000000..2fa76d4afc --- /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 0000000000..e036fff67e --- /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 0000000000..1d1eb4bd3a --- /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 0000000000..5435a28ff9 --- /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 0000000000..ca2ba3ca01 --- /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 0000000000..cf44dad464 --- /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 0000000000..baf585dad0 --- /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 e2eb3dd6e7..a3a985f5aa 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 0000000000..c2bceaeef6 --- /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 2bc4d82082..0ca1ce2064 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 0000000000..26255943ed --- /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 cc426f7cd2..643d6b05fd 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 3e6684ed06..a532e7a575 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 0000000000..3e5419d1bb --- /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 c6ef84e220..dbeb9d56ff 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 0000000000..de6b139793 --- /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 8dfdd5a46e..bc98fdacaf 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 0000000000..f6c3fa9288 --- /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 0000000000..5908a873cc --- /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 0000000000..0efeaac97d --- /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 e3cb7473fc..7706a044fa 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 0000000000..edaab6e60c --- /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 0000000000..03678ecad5 --- /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 0000000000..cb629e5cfb --- /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 0000000000..551d86864d --- /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 0000000000..0df0331198 --- /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 0000000000..60faf4e7c5 --- /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 0000000000..2e057c2983 --- /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 0000000000..7ffe972181 --- /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 0000000000..f7a58581d4 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_nearby_chat_bar.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="chat_bar"> + <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 0000000000..ff843c1684 --- /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 0000000000..9332a3ef36 --- /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 0000000000..c6be942312 --- /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 0000000000..b20db0d565 --- /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 0000000000..4771457825 --- /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 0000000000..bcc433708d --- /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 0000000000..70e1577199 --- /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 0000000000..8e50a8b9d9 --- /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 2355dc7f0a..13ffabbebf 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 54517635fd..02da9de4a4 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 7125832c7b..9c064c2716 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 e6cd6e67b2..80b152752b 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 6e1640334f..647df27633 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 2249d94688..c84edbb47e 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 e1239d5820..17257a7cb8 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 41f67951c2..c4d46291dd 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 0000000000..dc7d59084e --- /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 2aa8b7d0e4..837aa4ac65 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 0000000000..bf89a3e6f6 --- /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 9dfecde317..f35b451ac1 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 85fb968ab4..9e81d42410 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 5b95b7378b..b6dc60a9c2 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 254700e9f1..23d6915a2f 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 0000000000..a98a88950c --- /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 0000000000..06bc51f5db --- /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 0000000000..5e5f229ce4 --- /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 0000000000..2fafc38ba1 --- /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 dfaacb659e..9acbb34c79 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 0000000000..3f02b1449a --- /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 d00157a297..1349b36e2c 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 0000000000..eab8e6b4e3 --- /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 0000000000..8dd7bfec42 --- /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 0000000000..196eb75bd7 --- /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 0000000000..23ca8b5ad8 --- /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 0000000000..e5f27795be --- /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 6e3301fdd9..910e6e0960 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,6 +683,729 @@ <string name="choose_the_directory"> Scegli la cartella </string> + <string name="AvatarSetNotAway"> + Imposta non assente + </string> + <string name="AvatarSetAway"> + Imposta assente + </string> + <string name="AvatarSetNotBusy"> + Imposta non occupato + </string> + <string name="AvatarSetBusy"> + Imposta occupato + </string> + <string name="shape"> + Shape + </string> + <string name="skin"> + Skin + </string> + <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 + </string> + <string name="GraphicsQualityMid"> + Medio + </string> + <string name="GraphicsQualityHigh"> + Alto + </string> + <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="InvFolder Calling Cards"> + Biglieti da visita + </string> + <string name="InvFolder Landmarks"> + Landmark + </string> + <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> @@ -505,81 +1427,1790 @@ <string name="accel-win-shift"> Shift+ </string> - <string name="GraphicsQualityLow"> + <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="GraphicsQualityMid"> - Medio + <string name="Low Heels"> + Tacchi bassi </string> - <string name="GraphicsQualityHigh"> + <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> - - <!-- 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="Taper Back"> + Ravv. lat. posteriore </string> - <string name="connected"> - Connesso + <string name="Taper Front"> + Ravv. lat. frontale </string> - <string name="unavailable"> - Il voice non è disponibile nel posto dove ti trovi ora + <string name="Thick Heels"> + Tacchi spessi </string> - <string name="hang_up"> - Disconnesso dalla Voice Chat in-world + <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 57e81bc41e..eff7516050 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/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml index 723ceae552..9105c2613d 100644 --- a/indra/newview/skins/default/xui/ja/floater_about.xml +++ b/indra/newview/skins/default/xui/ja/floater_about.xml @@ -1,6 +1,46 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="[APP_NAME]について"> +<floater name="floater_about" title="[CAPITALIZED_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"> + コンパイラー [COMPILER] [COMPILER_VERSION] バージョン + </floater.string> + <floater.string name="AboutPosition"> + あなたの現在地は、[POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] の [REGION] です。位置は <nolink>[HOSTNAME]</nolink> です。([HOSTIP]) +[SERVER_VERSION] +[[SERVER_RELEASE_NOTES_URL] [リリースノート]] + </floater.string> + <floater.string name="AboutSystem"> + CPU: [CPU] +メモリ: [MEMORY_MB] MB +OS バージョン: [OS_VERSION] +グラフィックカード製造元: [GRAPHICS_CARD_VENDOR] +グラフィックカード: [GRAPHICS_CARD] + </floater.string> + <floater.string name="AboutDriver"> + Windows グラフィックドライババージョン: [GRAPHICS_DRIVER_VERSION] + </floater.string> + <floater.string name="AboutLibs"> + OpenGL バージョン: [OPENGL_VERSION] + +libcurl バージョン: [LIBCURL_VERSION] +J2C デコーダバージョン: [J2C_VERSION] +オーディオドライババージョン: [AUDIO_DRIVER_VERSION] +Qt Webkit バージョン: [QT_WEBKIT_VERSION] +Vivox バージョン: [VIVOX_VERSION] + </floater.string> + <floater.string name="none"> + (なし) + </floater.string> + <floater.string name="AboutTraffic"> + パケットロス: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number,1]%) + </floater.string> <tab_container name="about_tab"> + <panel label="情報" name="support_panel"> + <button label="クリップボードにコピー" name="copy_btn"/> + </panel> <panel label="クレジット" name="credits_panel"> <text_editor name="credits_editor"> Second Lifeは、 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と、その他多数の人達によって作成されました。 @@ -21,7 +61,8 @@ FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). GL Copyright (C) 1999-2004 Brian Paul. Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. - jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) + jpeg2000 Copyright (C) 2001, David Taubman, The University of New South + Wales (UNSW) jpeglib Copyright (C) 1991-1998, Thomas G. Lane. ogg/vorbis Copyright (C) 2001, Xiphophorus OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. 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 80c76879f1..a16348529b 100644 --- a/indra/newview/skins/default/xui/ja/floater_about_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml @@ -9,6 +9,9 @@ <floater.string name="Seconds"> [SECONDS] 秒 </floater.string> + <floater.string name="Remaining"> + 残り + </floater.string> <tab_container name="landtab"> <panel label="一般" name="land_general_panel"> <panel.string name="new users only"> @@ -21,35 +24,34 @@ 面積: </panel.string> <panel.string name="area_size_text"> - [AREA]平方メートル + [AREA] 平方メートル </panel.string> <panel.string name="auction_id_text"> - オークションID: [ID] + オークション ID: [ID] </panel.string> <panel.string name="need_tier_to_modify"> この土地を修正変更するには、購入を承認する必要があります。 </panel.string> <panel.string name="group_owned_text"> - (グループ所有) + (グループ所有) </panel.string> <panel.string name="profile_text"> - プロフィール... + プロフィール </panel.string> <panel.string name="info_text"> - 情報... + 情報 </panel.string> <panel.string name="public_text"> - (公共) + (公共) </panel.string> <panel.string name="none_text"> (なし) </panel.string> <panel.string name="sale_pending_text"> - (購入審査中) + (購入審査中) </panel.string> <panel.string name="no_selection_text"> - 区画が選定されていません。 -「世界」メニュー>「土地情報」に進むか、別の区画を選択して、詳細を表示します。 + 区画が選択されていません。 </panel.string> <text name="Name:"> 名前: @@ -71,19 +73,21 @@ Adult </text> <text name="Owner:"> - オーナー: + 所有者: </text> <text name="OwnerText"> Leyla Linden </text> - <button label="プロフィール..." label_selected="プロフィール..." name="Profile..."/> <text name="Group:"> グループ: </text> - <button label="設定..." label_selected="設定..." name="Set..."/> - <check_box label="グループへの譲渡を許可" name="check deed" tool_tip="グループ・オフィサーは、この土地をグループに譲渡し、グループの土地配分に委ねることができます。"/> - <button label="譲渡..." label_selected="譲渡..." name="Deed..." tool_tip="選択されたグループのオフィサーであるときのみ、土地を譲渡できます。"/> - <check_box label="オーナーが譲渡と共に寄付" name="check contrib" tool_tip="土地がグループに譲渡されるとき、前の所有者は譲渡が成立するよう、十分な土地を寄付します。"/> + <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="選択したグループのオフィサーのみ、土地を譲渡できます。"/> + <check_box label="所有者が譲渡と共に寄付" name="check contrib" tool_tip="土地がグループに譲渡されるとき、前の所有者は譲渡が成立するよう、十分な土地を寄付します。"/> <text name="For Sale:"> 販売の有無: </text> @@ -91,19 +95,19 @@ 販売対象外 </text> <text name="For Sale: Price L$[PRICE]."> - 価格: L$[PRICE] (L$[PRICE_PER_SQM]/平方メートル) + 価格: L$ [PRICE] (L$ [PRICE_PER_SQM] / 平方メートル) </text> - <button label="土地を販売..." label_selected="土地を販売..." name="Sell Land..."/> + <button label="土地を売る" label_selected="土地を販売..." name="Sell Land..." width="100"/> <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"/> + <button label="土地販売の取り消し" label_selected="土地販売の取り消し" name="Cancel Land Sale" width="100"/> <text name="Claimed:"> 取得日時: </text> @@ -114,7 +118,7 @@ 面積: </text> <text name="PriceText"> - 4048平方メートル + 4048 m² </text> <text name="Traffic:"> 交通量: @@ -122,38 +126,36 @@ <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="100"/> + <button label="スクリプト情報" name="Scripts..." width="100"/> + <button label="グループに購入" label_selected="グループ用に購入..." name="Buy For Group..."/> + <button label="入場許可を購入" label_selected="入場許可を購入..." left="130" name="Buy Pass..." tool_tip="この土地への一時的なアクセスを許可します。" width="100"/> + <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"> - この地域で購入した土地は、再販できます。 + このリージョン(地域)で購入した土地は、再販できます。 </panel.string> <panel.string name="can_not_resell"> - この地域で購入した土地は、再販できないことがあります。 + このリージョン(地域)で購入した土地は、再販できないことがあります。 </panel.string> <panel.string name="can_change"> - この地域で購入した土地は、統合または再分割できます。 + このリージョン(地域)で購入した土地は、統合または再分割できます。 </panel.string> <panel.string name="can_not_change"> - この地域で購入した土地は、統合/再分割できないことが + このリージョン(地域)で購入した土地は、統合・再分割できないことがあります。 あります。 </panel.string> <text font="SansSerifLarge" name="estate_section_lbl"> 不動産: </text> - <text name="estate_name_lbl"> - 名前: - </text> <text name="estate_name_text"> メインランド </text> <text name="estate_owner_lbl"> - オーナー: + 所有者: </text> <text name="estate_owner_text"> (なし) @@ -167,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"> 種類: @@ -189,31 +188,30 @@ 再販: </text> <text name="resellable_clause"> - この地域(リージョン)にある土地は再販できません。 + このリージョン(地域)にある土地は再販できません。 </text> <text name="changeable_lbl"> 再分割: </text> <text name="changeable_clause"> - この地域(リージョン)にある土地は統合または分割ができ -ません。 + このリージョン(地域)にある土地は統合または分割ができないことがあります。 </text> </panel> <panel label="オブジェクト" name="land_objects_panel"> <panel.string left="200" name="objects_available_text"> - [MAX]の内[COUNT]([AVAILABLE]利用可能) + [MAX] の内 [COUNT]([AVAILABLE] 利用可能) </panel.string> <panel.string left="200" name="objects_deleted_text"> - [MAX]の内[COUNT]([DELETED]を削除) + [MAX] の内 [COUNT]([DELETED] を削除) </panel.string> <text name="parcel_object_bonus"> - 地域オブジェクトボーナス要因: [BONUS] + オブジェクトボーナス: [BONUS] </text> <text name="Simulator primitive usage:" width="500"> - 地域全体のプリム使用状況: + プリム使用状況: </text> <text left="200" name="objects_available"> - [MAX]の内[COUNT]([AVAILABLE]利用可能) + [MAX] の内 [COUNT] ([AVAILABLE] 利用可能) </text> <text name="Primitives parcel supports:" width="200"> 区画でサポートされるプリム数: @@ -228,13 +226,13 @@ [COUNT] </text> <text name="Owned by parcel owner:" width="300"> - 区画オーナーによる所有: + 区画所有者の所有物: </text> <text left="200" name="owner_objects_text"> [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> @@ -242,35 +240,35 @@ [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> <text left="200" name="other_objects_text"> [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> <text left="200" name="selected_objects_text"> [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"/> <name_list.columns label="名前" name="name"/> - <name_list.columns label="カウント" name="count"/> + <name_list.columns label="数" name="count"/> <name_list.columns label="最新" name="mostrecent"/> </name_list> </panel> @@ -279,23 +277,23 @@ この区画を検索結果に表示する </panel.string> <panel.string name="search_disabled_small_tooltip"> - 区画面積が128平方メートルかそれ以下のため、このオプションは無効です。 + 区画面積が 128 平方メートルかそれ以下のため、このオプションは無効です。 大きな区画のみ検索に表示させることが可能です。 </panel.string> <panel.string name="search_disabled_permissions_tooltip"> あなたはこの区画の設定編集ができないため、このオプションは無効です。 </panel.string> <panel.string name="mature_check_mature"> - Matureコンテンツ + 「Moderate」コンテンツ </panel.string> <panel.string name="mature_check_adult"> - Adultコンテンツ + 「Adult」コンテンツ </panel.string> <panel.string name="mature_check_mature_tooltip"> - あなたの区画情報及びコンテンツはMatureとされています。 + あなたの区画情報及びコンテンツは「Moderate」とされています。 </panel.string> <panel.string name="mature_check_adult_tooltip"> - あなたの区画情報及びコンテンツはAdultとされています。 + あなたの区画情報及びコンテンツは「Adult」とされています。 </panel.string> <panel.string name="landing_point_none"> (なし) @@ -304,37 +302,37 @@ プッシングを制限 </panel.string> <panel.string name="push_restrict_region_text"> - プッシングを制限 (地域優先) + プッシングを制限 (地域設定優先) </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="プッシングを制限" name="PushRestrictCheck" 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"/> + <combo_box.item label="Linden 所在地" name="item1"/> <combo_box.item label="Adult" name="item2"/> <combo_box.item label="アートとカルチャー" name="item3"/> <combo_box.item label="ビジネス" name="item4"/> @@ -349,7 +347,7 @@ </combo_box> <combo_box name="land category"> <combo_box.item label="全カテゴリー" name="item0"/> - <combo_box.item label="Linden所在地" name="item1"/> + <combo_box.item label="Linden 所在地" name="item1"/> <combo_box.item label="アート&カルチャー" name="item3"/> <combo_box.item label="ビジネス" name="item4"/> <combo_box.item label="教育的" name="item5"/> @@ -361,20 +359,20 @@ <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="「Moderate」コンテンツ" name="MatureCheck" tool_tip=""/> <text name="Snapshot:"> スナップショット: </text> - <texture_picker label="" left="116" name="snapshot_ctrl" tool_tip="写真をクリックして選択"/> + <texture_picker label="" name="snapshot_ctrl" tool_tip="写真をクリックして選択"/> <text name="landing_point"> 着地点: [LANDING] </text> <button label="設定" label_selected="設定" name="Set" tool_tip="訪問者の着地点の設定を行います。この区画内に立って行ってください。"/> - <button label="クリア" label_selected="クリア" name="Clear" tool_tip="着地点をクリアしてください。"/> + <button label="クリア" label_selected="クリア" name="Clear" tool_tip="着地点をクリア"/> <text name="Teleport Routing: "> テレポート制限: </text> - <combo_box name="landing type" tool_tip="Teleport Routing -- select how to handle teleports onto your land."> + <combo_box name="landing type" tool_tip="テレポート経路 -- あなたの土地へのテレポート経路を選択"> <combo_box.item label="不可" name="Blocked"/> <combo_box.item label="着地点" name="LandingPoint"/> <combo_box.item label="どこでも" name="Anywhere"/> @@ -384,36 +382,33 @@ <text name="with media:"> 種類: </text> - <combo_box name="media type" tool_tip="URL が動画、ウェブ・ページ、その他のメディアの場合に指定します"/> + <combo_box name="media type" tool_tip="URL が動画、Web ページ、その他のメディアかを指定します"/> <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="[再生]/[ロード]ボタンの隣に表示されるテキスト"/> + <line_editor name="url_description" tool_tip="「再生」「ロード」ボタンの隣に表示されるテキストです"/> <text name="Media texture:"> - テクスチ -ャ取替: + テクスチャ置き換え: </text> - <texture_picker label="" name="media texture" tool_tip="写真をクリックして選択"/> + <texture_picker label="" left="120" 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 のままにします。"> + <check_box label="スケールを自動設定" name="media_auto_scale" tool_tip="このオプションをチェックすると、この区画のコンテンツのスケールが自動的に設定されます。 動作速度と画質が少し低下することがありますが、他のテクスチャのスケーリングや整列が必要になることはありません。"/> + <text name="media_size" tool_tip="レンダリングする Web メディアのサイズです。デフォルトの 0 のままにします。"> サイズ: </text> - <spinner name="media_size_width" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。"/> - <spinner name="media_size_height" tool_tip="レンダリングするウェブ・メディアのサイズ。デフォルトの 0 のままにします。"/> + <spinner name="media_size_width" tool_tip="レンダリングする Web メディアのサイズです。デフォルトの 0 のままにします。"/> + <spinner name="media_size_height" tool_tip="レンダリングする Web メディアのサイズです。デフォルトの 0 のままにします。"/> <text name="pixels"> ピクセル </text> @@ -422,54 +417,62 @@ </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> + <check_box label="URL を非表示にする" name="hide_music_url" tool_tip="このオプションにチェックを入れると、権限のない人が区画情報を見たときに音楽の URL が隠れます。"/> <text name="Sound:"> サウンド: </text> - <check_box label="ジェスチャーとオブジェクトの音をこの区画だけに限定" name="check sound local"/> + <check_box label="ジェスチャーとオブジェクトの音をこの区画だけに限定する" name="check sound local"/> <text name="Voice settings:"> ボイス: </text> <check_box label="ボイスを有効にする" name="parcel_enable_voice_channel"/> <check_box label="ボイスを有効にする(不動産設定)" name="parcel_enable_voice_channel_is_estate_disabled"/> - <check_box label="この区画でのボイス使用を制限する" name="parcel_enable_voice_channel_parcel"/> + <check_box label="ボイスをこの区画に限定する" name="parcel_enable_voice_channel_local"/> </panel> <panel label="アクセス" name="land_access_panel"> + <panel.string name="access_estate_defined"> + (エステートに限定) + </panel.string> <panel.string name="estate_override"> - 1つ以上のオプションが、不動産レベルで設定されています。 + 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="グループ・アクセスを許可:[GROUP]" name="GroupCheck" tool_tip="[一般]タブで、グループを選択してください。"/> - <check_box label="入場許可を販売:" name="PassCheck" tool_tip="この区画への一時的なアクセスを許可"/> + <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"> <combo_box.item label="誰でも" name="Anyone"/> <combo_box.item label="グループ" name="Group"/> </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_activeim.xml b/indra/newview/skins/default/xui/ja/floater_activeim.xml new file mode 100644 index 0000000000..1c743e1fd2 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_activeim.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_activeim" title="アクティブな IM"/> 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 a1c30ec572..8c2ac17ace 100644 --- a/indra/newview/skins/default/xui/ja/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_animation_preview.xml @@ -62,25 +62,25 @@ 回転値を取得できません。 </floater.string> <floater.string name="E_ST_NO_XLT_FILE"> - Cannot open translation file. + ファイルを開けません。 </floater.string> <floater.string name="E_ST_NO_XLT_HEADER"> - Cannot read translation header. + 読みとることができません。 </floater.string> <floater.string name="E_ST_NO_XLT_NAME"> - Cannot read translation names. + 読みとることができません。 </floater.string> <floater.string name="E_ST_NO_XLT_IGNORE"> - Cannot read translation ignore value. + 読みとることができません。 </floater.string> <floater.string name="E_ST_NO_XLT_RELATIVE"> - Cannot read translation relative value. + 読みとることができません。 </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"> - Cannot read translation matrix. + 読みとることができません。 </floater.string> <floater.string name="E_ST_NO_XLT_MERGECHILD"> Mergechild 名を取得できません。 @@ -95,7 +95,7 @@ ループ値を取得できません。 </floater.string> <floater.string name="E_ST_NO_XLT_EASEIN"> - Cannot get easeIn values. + easeln 値を取得できません。 </floater.string> <floater.string name="E_ST_NO_XLT_EASEOUT"> easeOut 値を取得できません。 @@ -106,47 +106,50 @@ <floater.string name="E_ST_NO_XLT_EMOTE"> エモート名を読みとれません。 </floater.string> + <floater.string name="E_ST_BAD_ROOT"> + ルートジョイント名が無効です。「hip」を使用してください。 + </floater.string> <text name="name_label"> 名前: </text> <text name="description_label"> 説明: </text> - <spinner label="優先順位" name="priority" tool_tip="このアニメーションで上書き可能な他のアニメーションを制御します。"/> - <check_box label="ループ" name="loop_check" tool_tip="このアニメーションをループ再生します。"/> - <spinner label="イン(%)" label_width="45" left="70" name="loop_in_point" tool_tip="アニメーションのループ復帰点を設定します。" width="100"/> - <spinner label="アウト(%)" label_width="60" left="170" name="loop_out_point" tool_tip="アニメーションのループ終了点を設定します。" width="100"/> + <spinner label="優先順位" name="priority" tool_tip="このアニメーションがどのアニメーションを上書きするかを決めます"/> + <check_box label="ループ" name="loop_check" tool_tip="このアニメーションをループ再生します"/> + <spinner label="イン(%)" label_width="45" left="60" name="loop_in_point" tool_tip="アニメーションのループ復帰点を設定します" width="100"/> + <spinner label="アウト(%)" label_width="50" left="170" name="loop_out_point" tool_tip="アニメーションのループ終了点を設定します" width="100"/> <text name="hand_label"> 手の動き </text> - <combo_box label="" name="hand_pose_combo" tool_tip="アニメーションの手の動きをコントロールします。"> - <combo_box.item label="広がる" name="Spread"/> + <combo_box label="" name="hand_pose_combo" tool_tip="アニメーション再生中の手の動きを決めます"> + <combo_box.item label="広げる" name="Spread"/> <combo_box.item label="リラックス" name="Relaxed"/> - <combo_box.item label="両方を指す" name="PointBoth"/> + <combo_box.item label="指を指す・両手" name="PointBoth"/> <combo_box.item label="拳" name="Fist"/> - <combo_box.item label="リラックス左" name="RelaxedLeft"/> - <combo_box.item label="左を指す" name="PointLeft"/> - <combo_box.item label="拳左" name="FistLeft"/> - <combo_box.item label="リラックス右" name="RelaxedRight"/> - <combo_box.item label="右を指す" name="PointRight"/> - <combo_box.item label="拳右" name="FistRight"/> - <combo_box.item label="敬礼右" name="SaluteRight"/> - <combo_box.item label="入力する" name="Typing"/> - <combo_box.item label="ピース・サイン右" name="PeaceRight"/> + <combo_box.item label="リラックス・左" name="RelaxedLeft"/> + <combo_box.item label="指を指す・左" name="PointLeft"/> + <combo_box.item label="拳を上げる・左" name="FistLeft"/> + <combo_box.item label="リラックス・右" name="RelaxedRight"/> + <combo_box.item label="指を指す・右" name="PointRight"/> + <combo_box.item label="拳を上げる・右" name="FistRight"/> + <combo_box.item label="敬礼・右" name="SaluteRight"/> + <combo_box.item label="タイピング" name="Typing"/> + <combo_box.item label="ピース・右" name="PeaceRight"/> </combo_box> <text name="emote_label"> 表現 </text> - <combo_box label="" name="emote_combo" tool_tip="アニメーションの顔を表情をコントロールします。"> - <combo_box.item label="None]" name="[None]"/> + <combo_box label="" name="emote_combo" tool_tip="アニメーション再生中の顔の表情を決めます"> + <combo_box.item label="(なし)" name="[None]"/> <combo_box.item label="アーーーーー" name="Aaaaah"/> - <combo_box.item label="怖れ" name="Afraid"/> - <combo_box.item label="怒り" name="Angry"/> + <combo_box.item label="恐れる" name="Afraid"/> + <combo_box.item label="怒る" name="Angry"/> <combo_box.item label="満面の笑み" name="BigSmile"/> <combo_box.item label="退屈" name="Bored"/> <combo_box.item label="泣く" name="Cry"/> - <combo_box.item label="侮蔑" name="Disdain"/> - <combo_box.item label="困惑" name="Embarrassed"/> + <combo_box.item label="侮辱" name="Disdain"/> + <combo_box.item label="恥ずかしがる" name="Embarrassed"/> <combo_box.item label="しかめっ面" name="Frown"/> <combo_box.item label="キス" name="Kiss"/> <combo_box.item label="笑う" name="Laugh"/> @@ -154,10 +157,10 @@ <combo_box.item label="嫌悪感" name="Repulsed"/> <combo_box.item label="悲しい" name="Sad"/> <combo_box.item label="肩をすくめる" name="Shrug"/> - <combo_box.item label="笑み" name="Smile"/> - <combo_box.item label="驚き" name="Surprise"/> + <combo_box.item label="微笑む" name="Smile"/> + <combo_box.item label="驚く" name="Surprise"/> <combo_box.item label="ウィンク" name="Wink"/> - <combo_box.item label="心配" name="Worry"/> + <combo_box.item label="心配する" name="Worry"/> </combo_box> <text name="preview_label"> 同時進行行動 @@ -166,18 +169,19 @@ <combo_box.item label="立つ" name="Standing"/> <combo_box.item label="歩く" name="Walking"/> <combo_box.item label="座る" name="Sitting"/> - <combo_box.item label="飛行" name="Flying"/> + <combo_box.item label="飛ぶ" name="Flying"/> </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="アニメーションの再生/一時停止"/> + <spinner label="イーズイン(秒)" name="ease_in_time" tool_tip="アニメーションのブレンドイン時間(秒)"/> + <spinner label="イーズアウト(秒)" name="ease_out_time" 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"> - アニメーション・ファイルを読み込めません。 + アニメーションファイルを読み込めません。 Poser 4からエクスポートされたBVHファイルを推奨します。 </text> + <button label="アップロードL$[AMOUNT]" name="ok_btn"/> <button label="取り消し" name="cancel_btn"/> - <button label="アップロードL$[AMOUNT]" name="ok_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_auction.xml b/indra/newview/skins/default/xui/ja/floater_auction.xml index ba34ec488d..e9aa287f2c 100644 --- a/indra/newview/skins/default/xui/ja/floater_auction.xml +++ b/indra/newview/skins/default/xui/ja/floater_auction.xml @@ -1,10 +1,11 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_auction" title="リンデンの土地売買開始"> - <check_box label="黄色の選択フェンスを含める" name="fence_check" /> - <button label="スナップショット" label_selected="スナップショット" - name="snapshot_btn" /> - <button label="OK" label_selected="OK" name="ok_btn" /> - <text name="already for sale"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_auction" title="リンデンランドの販売開始"> + <floater.string name="already for sale"> 売り出し中の区画は、オークションに出品できません。 - </text> + </floater.string> + <check_box initial_value="true" label="黄色の選択フェンスを含める" name="fence_check"/> + <button label="スナップショット" label_selected="スナップショット" name="snapshot_btn"/> + <button label="誰にでも販売" label_selected="誰にでも販売" name="sell_to_anyone_btn"/> + <button label="設定をクリア" label_selected="設定をクリア" name="reset_parcel_btn"/> + <button label="オークション開始" label_selected="オークション開始" name="start_auction_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml b/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml index df60f52ee8..7f965e490d 100644 --- a/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/ja/floater_avatar_picker.xml @@ -1,5 +1,23 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater min_width="275" name="avatarpicker" title="住人を選択" width="275"> + <floater.string name="not_found"> + 「[TEXT]」は見つかりませんでした + </floater.string> + <floater.string name="no_one_near"> + 近くに誰もいません + </floater.string> + <floater.string name="no_results"> + 検索結果:ゼロ + </floater.string> + <floater.string name="searching"> + 検索中... + </floater.string> + <string label="OK" label_selected="OK" name="Select"> + 選択 + </string> + <string name="Close"> + 閉じる + </string> <tab_container name="ResidentChooserTabs" width="265"> <panel label="検索" name="SearchPanel" width="145"> <text name="InstructSearchResidentName"> @@ -7,34 +25,22 @@ </text> <button label="検索" label_selected="検索" name="Find"/> </panel> - <panel label="コーリングカード" name="CallingCardsPanel" width="145"> - <text name="InstructSelectCallingCard"> - コーリングカードを選択: + <panel label="フレンド" name="FriendsPanel"> + <text name="InstructSelectFriend"> + アバターを選択: </text> </panel> <panel label="自分の近く" name="NearMePanel" width="145"> <text name="InstructSelectResident"> 近くの人を選択: </text> - <button label="リスト更新" label_selected="リスト更新" name="Refresh"/> <slider label="範囲" name="near_me_range"/> <text name="meters" width="50"> メートル </text> + <button label="リスト更新" label_selected="リスト更新" name="Refresh"/> </panel> </tab_container> - <button label="OK" label_selected="OK" name="Select"/> - <button label="取り消し" label_selected="取り消し" name="Cancel"/> - <string name="not_found"> - 「[TEXT]」は見つかりませんでした - </string> - <string name="no_one_near"> - 近くに誰もいません - </string> - <string name="no_results"> - 検索結果:ゼロ - </string> - <string name="searching"> - 検索中... - </string> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="キャンセル" label_selected="キャンセル" 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 95940dba96..0ea913e66a 100644 --- a/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/ja/floater_avatar_textures.xml @@ -1,31 +1,46 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="avatar_texture_debug" title="アバター・テクスチャー"> - <text name="label"> +<floater name="avatar_texture_debug" title="アバターのテクスチャ"> + <floater.string name="InvalidAvatar"> + 無効なアバター + </floater.string> + <text name="label" width="100"> ベークドテクスチャ </text> <text name="composite_label" width="128"> - 合成テクスチャー + 合成テクスチャ </text> - <button label="テクスチャID一覧をコンソールに書き込む" label_selected="捨てる" name="Dump"/> - <texture_picker label="髪型" name="hair-baked"/> - <texture_picker label="髪" name="hair"/> - <texture_picker label="頭" name="head-baked"/> - <texture_picker label="メイクアップ" name="head bodypaint"/> - <texture_picker label="目" name="eyes-baked"/> - <texture_picker label="目" name="iris"/> - <texture_picker label="上半身" name="upper-baked"/> - <texture_picker label="上半身のタトゥー" name="upper bodypaint"/> - <texture_picker label="(下着の)シャツ" name="undershirt"/> - <texture_picker label="手袋" name="gloves"/> - <texture_picker label="シャツ" name="shirt"/> - <texture_picker label="上着" name="upper jacket"/> - <texture_picker label="下半身" name="lower-baked"/> - <texture_picker label="下半身のタトゥー" name="lower bodypaint"/> - <texture_picker label="(下着の)パンツ" name="underpants"/> - <texture_picker label="靴下" name="socks"/> - <texture_picker label="靴" name="shoes"/> - <texture_picker label="ズボン" name="pants"/> - <texture_picker label="上着" name="lower jacket"/> - <texture_picker label="スカート" name="skirt-baked"/> - <texture_picker label="スカート" name="skirt"/> + <button label="テクスチャID一覧をコンソールに書き込む" label_selected="捨てる" name="Dump" width="200"/> + <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_build_options.xml b/indra/newview/skins/default/xui/ja/floater_build_options.xml index 02bc0dd5f7..8cb67ca521 100644 --- a/indra/newview/skins/default/xui/ja/floater_build_options.xml +++ b/indra/newview/skins/default/xui/ja/floater_build_options.xml @@ -1,11 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="build options floater" title="グリッドのオプション"> - <spinner label="グリッドユニット(メートル)" name="GridResolution"/> - <spinner label="グリッド範囲(メートル)" name="GridDrawSize"/> - <check_box label="サブユニットにスナップ" name="GridSubUnit"/> +<floater name="build options floater" title="グリッドオプション"> + <spinner label="グリッド単位(メートル)" name="GridResolution"/> + <spinner label="グリッド゙範囲(メートル)" name="GridDrawSize"/> + <check_box label="より細かい単位でスナップフィット" name="GridSubUnit"/> <check_box label="横断面を表示" name="GridCrossSection"/> - <text name="grid_opacity_label" tool_tip="グリッドの透明度"> - 透明度: + <text name="grid_opacity_label" tool_tip="グリッドの不透明度"> + 不透明度: </text> <slider label="グリッドの不透明度" name="GridOpacity"/> </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 9a3d432228..be24960c6e 100644 --- a/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/ja/floater_bulk_perms.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="コンテンツ権限を編集"> +<floater name="floaterbulkperms" title="中身の権限の編集"> <floater.string name="nothing_to_modify_text"> - 選択した中に編集できないコンテンツが含まれています + 選択した中に編集できないものが含まれています </floater.string> <floater.string name="status_text"> [NAME]に権限を設定中です。 @@ -28,26 +28,27 @@ <icon name="icon_script" tool_tip="スクリプト"/> <check_box label="サウンド" name="check_sound"/> <icon name="icon_sound" tool_tip="サウンド"/> - <check_box label="テクスチャー" name="check_texture"/> - <button label="√ すべて" label_selected="全て" name="check_all"/> + <check_box label="テクスチャ" name="check_texture"/> + <icon name="icon_texture" tool_tip="テクスチャ"/> + <button label="すべてに √" label_selected="全て" name="check_all"/> <button label="クリア" label_selected="なし" name="check_none"/> <text name="newperms"> - 新しいコンテンツ権限 + 新しい中身の権限 </text> <text name="GroupLabel"> グループ: </text> <check_box label="共有" name="share_with_group"/> <text name="AnyoneLabel"> - すべての人: + 全員: </text> <check_box label="コピー" name="everyone_copy"/> - <text name="NextOwnerLabel"> + <text name="NextOwnerLabel" left="160"> 次の所有者: </text> <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="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/> + <check_box initial_value="true" label="再販・プレゼント" name="next_owner_transfer" tool_tip="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/> <button label="OK" name="apply"/> <button label="キャンセル" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_bumps.xml b/indra/newview/skins/default/xui/ja/floater_bumps.xml index cbd6a2f9e2..8a1e19b852 100644 --- a/indra/newview/skins/default/xui/ja/floater_bumps.xml +++ b/indra/newview/skins/default/xui/ja/floater_bumps.xml @@ -1,21 +1,24 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_bumps" title="衝突の記録"> - <text name="none_detected"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_bumps" title="衝突・プッシュ・打撃"> + <floater.string name="none_detected"> 検出なし - </text> - <text name="bump"> + </floater.string> + <floater.string name="bump"> [TIME] [FIRST] [LAST]が、あなたにぶつかりました。 - </text> - <text name="llpushobject"> + </floater.string> + <floater.string name="llpushobject"> [TIME] [FIRST] [LAST]が、スクリプトであなたをプッシュしました。 - </text> - <text name="selected_object_collide"> + </floater.string> + <floater.string name="selected_object_collide"> [TIME] [FIRST] [LAST]が、オブジェクトをあなたに当てました。 - </text> - <text name="scripted_object_collide"> + </floater.string> + <floater.string name="scripted_object_collide"> [TIME] [FIRST] [LAST]が、スクリプト・オブジェクトをあなたに当てました。 - </text> - <text name="physical_object_collide"> + </floater.string> + <floater.string name="physical_object_collide"> [TIME] [FIRST] [LAST]が、物理オブジェクトをあなたに当てました。 - </text> + </floater.string> + <floater.string name="timeStr"> + [[hour,datetime,slt]:[min,datetime,slt]] + </floater.string> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_buy_contents.xml b/indra/newview/skins/default/xui/ja/floater_buy_contents.xml index 8bf660d71d..ed17736eb3 100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_contents.xml @@ -1,22 +1,22 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_buy_contents" title="コンテンツを購入" width="340" min_width="340"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater min_width="340" name="floater_buy_contents" title="中身の購入" width="340"> <text name="contains_text" width="320"> - [NAME]の内容: + [NAME] の中身: </text> <scroll_list name="item_list" width="310"/> <text name="buy_text" width="320"> - コンテンツを[NAME]からL$[AMOUNT]で購入しますか? + 中身を [NAME] から L$[AMOUNT] で購入しますか? </text> <button label="取り消し" label_selected="取り消し" name="cancel_btn" width="73"/> - <button label="購入" label_selected="購入" name="buy_btn" width="73" left_delta="-77"/> - <check_box label="今すぐ服を着る" name="wear_check" left_delta="-125"/> + <button label="購入" label_selected="購入" left_delta="-77" name="buy_btn" width="73"/> + <check_box label="今すぐ着る" left_delta="-125" name="wear_check"/> <text name="no_copy_text"> - (コピーなし) + (コピー不可) </text> <text name="no_modify_text"> - (修正なし) + (修正不可) </text> <text name="no_transfer_text"> - (転送なし) + (再販・プレゼント不可) </text> </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 35516301fc..32de533dc4 100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_currency.xml @@ -1,68 +1,66 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="buy currency" title="貨幣購入"> - <text name="info_buying"> - 貨幣を購入: - </text> - <text name="info_cannot_buy"> - 現在購入不可: - </text> +<?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="error_message"> - 何か変です。 - </text> - <button label="ウェブ・サイトに移動" name="error_web" width="140"/> <text name="contacting"> LindeXとコンタクト中… </text> - <text name="buy_action_unknown"> - LindeX通貨両替でL$を購入 + <text name="info_buying"> + L$ の購入 </text> - <text name="buy_action"> - [NAME] L$ [PRICE] + <text name="balance_label"> + 残高 + </text> + <text name="balance_amount"> + L$ [AMT] </text> <text name="currency_action"> - L$購入 + 購入希望額 + </text> + <text name="currency_label"> + L$ </text> - <line_editor name="currency_amt"> + <line_editor label="L$" name="currency_amt"> 1234 </line_editor> - <text name="currency_est"> - 約[LOCALAMOUNT] - </text> - <text name="getting_data" left_delta="3"> - データを取得しています... - </text> - <text name="balance_label"> - 現在所有している金額 + <text name="buying_label"> + 価格 </text> - <text name="balance_amount"> - L$ [AMT] + <text name="currency_est"> + 約 [LOCALAMOUNT] </text> - <text name="buying_label"> - 購入する金額 + <text left_delta="3" name="getting_data"> + 見積もり中... </text> - <text name="buying_amount"> - L$ [AMT] + <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 支払方法] | [http://www.secondlife.com/my/account/currency.php?lang=ja-JP 通貨] | [http://www.secondlife.com/my/account/exchange_rates.php?lang=ja-JP 換算レート] + </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="buy_currency"> - 約[LOCALAMOUNT]でL$ [LINDENS]を購入 + <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> diff --git a/indra/newview/skins/default/xui/ja/floater_buy_land.xml b/indra/newview/skins/default/xui/ja/floater_buy_land.xml index 1ccd1f53a4..a50f36b6f3 100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_land.xml @@ -1,5 +1,132 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="buy land" title="土地を購入"> +<floater name="buy land" title="土地の購入"> + <floater.string name="can_resell"> + 再販可能 + </floater.string> + <floater.string name="can_not_resell"> + 再販不可能 + </floater.string> + <floater.string name="can_change"> + 統合・再分割可能 + </floater.string> + <floater.string name="can_not_change"> + 統合・再分割不可能 + </floater.string> + <floater.string name="cant_buy_for_group"> + あなたはアクティブなグループ用の土地購入を許可されていません + </floater.string> + <floater.string name="no_land_selected"> + 土地が選択されていません + </floater.string> + <floater.string name="multiple_parcels_selected"> + 複数の異なった区画を選択しました。 +これより小さな範囲を選択してください。 + </floater.string> + <floater.string name="no_permission"> + あなたはアクティブなグループ用の土地購入を許可されていません + </floater.string> + <floater.string name="parcel_not_for_sale"> + 選択された区画は販売対象外です + </floater.string> + <floater.string name="group_already_owns"> + グループはすでにこの区画を所有しています + </floater.string> + <floater.string name="you_already_own"> + あなたはすでにこの区画を所有しています + </floater.string> + <floater.string name="set_to_sell_to_other"> + 選択された区画は、他の人への販売が決まっています + </floater.string> + <floater.string name="no_public_land"> + 選択された地域に、公共の土地はありません + </floater.string> + <floater.string name="not_owned_by_you"> + 他の使用者に所有された土地が選択されています。 +これより小さな範囲を選択してください。 + </floater.string> + <floater.string name="processing"> + 購入処理中... + +(数分かかることがあります) + </floater.string> + <floater.string name="fetching_error"> + 土地購入の情報入手中にエラーが起きました + </floater.string> + <floater.string name="buying_will"> + この土地を買うと: + </floater.string> + <floater.string name="buying_for_group"> + グループ用の土地を購入すると: + </floater.string> + <floater.string name="cannot_buy_now"> + 現在購入不可: + </floater.string> + <floater.string name="not_for_sale"> + 販売対象外: + </floater.string> + <floater.string name="none_needed"> + 一切必要なし + </floater.string> + <floater.string name="must_upgrade"> + アカウントをアップグレードしないと、土地を所有できません + </floater.string> + <floater.string name="cant_own_land"> + あなたのアカウントで土地を所有できます + </floater.string> + <floater.string name="land_holdings"> + あなたは、[BUYER] 平方メートルの土地を所有しています。 + </floater.string> + <floater.string name="pay_to_for_land"> + この土地の代金として、[SELLER]にL$[AMOUNT]を支払う + </floater.string> + <floater.string name="buy_for_US"> + L$ [AMOUNT] を、約 [LOCAL_AMOUNT] で購入します。 + </floater.string> + <floater.string name="parcel_meters"> + この区画は [AMOUNT] 平方メートルです。 + </floater.string> + <floater.string name="premium_land"> + この土地は割り増し付です。 [AMOUNT] 平方メートルの料金がかかります。 + </floater.string> + <floater.string name="discounted_land"> + この土地はディスカウントされています。 [AMOUNT] 平方メートルの料金がかかります。 + </floater.string> + <floater.string name="meters_supports_object"> + [AMOUNT] 平方メートル +オブジェクト [AMOUNT2] 個サポート + </floater.string> + <floater.string name="sold_with_objects"> + オブジェクト込みで販売 + </floater.string> + <floater.string name="sold_without_objects"> + オブジェクトは含まれていません + </floater.string> + <floater.string name="info_price_string"> + L$ [PRICE] +(L$[PRICE_PER_SQM]/平方メートル) +[SOLD_WITH_OBJECTS] + </floater.string> + <floater.string name="insufficient_land_credits"> + この [GROUP] が区画の購入手続きを完了するには、 価格に見合うだけの寄付された土地の利用実績が必要です + </floater.string> + <floater.string name="have_enough_lindens"> + あなたの所持する L$ [AMOUNT]で、この土地を購入できます + </floater.string> + <floater.string name="not_enough_lindens"> + あなたの所持金は L$ [AMOUNT]だけで、あとL$ [AMOUNT2] 必要です + </floater.string> + <floater.string name="balance_left"> + 購入後、あなたの残額はL$[AMOUNT]になります + </floater.string> + <floater.string name="balance_needed"> + この土地を買うには、少なくとも L$ [AMOUNT] を購入する必要があります + </floater.string> + <floater.string name="no_parcel_selected"> + (区画が選定されていません) + </floater.string> + <floater.string name="icon_PG" value="Parcel_PG_Dark"/> + <floater.string name="icon_M" value="Parcel_M_Dark"/> + <floater.string name="icon_R" value="Parcel_R_Dark"/> <text name="region_name_label"> 地域: </text> @@ -27,10 +154,10 @@ <text name="resellable_changeable_label"> この地域で購入した土地: </text> - <text name="resellable_clause"> + <text left="460" name="resellable_clause"> 再販できる場合とできない場合があります。 </text> - <text name="changeable_clause"> + <text left="460" name="changeable_clause"> 統合または再分割できる場合とできない場合があります。 </text> <text name="covenant_text"> @@ -51,15 +178,15 @@ サイズ: </text> <text bottom_delta="-37" height="48" name="info_size"> - 1024平方メートル + 1024 平方メートル </text> <text name="info_price_label"> 価格: </text> <text name="info_price"> L$ 1500 - (L$ 1.1/平方メートル) - オブジェクトも土地販売価格に含まれます +(L$ 1.1/平方メートル) +オブジェクトも土地販売価格に含まれます </text> <text name="info_action"> この土地を買うと: @@ -67,24 +194,24 @@ <text name="error_message"> 何か変です </text> - <button label="ウェブ・サイトに移動" name="error_web"/> + <button label="Webサイトに移動" name="error_web"/> <text name="account_action"> - プレミアム・メンバーにアップグレード + プレミアム会員にアップグレード </text> <text name="account_reason"> - 土地を保有できるのはプレミアム・メンバーだけです + 土地を保有できるのはプレミアム会員だけです </text> <combo_box name="account_level"> - <combo_box.item name="US$9.95/month,billedmonthly" label="月額9.95米ドル、月払い" /> - <combo_box.item name="US$7.50/month,billedquarterly" label="月額7.50米ドル、年4回払い" /> - <combo_box.item name="US$6.00/month,billedannually" label="月額6.00米ドル、年払い" /> + <combo_box.item label="月額 9.95米ドル、 月払い" name="US$9.95/month,billedmonthly"/> + <combo_box.item label="月額 7.50米ドル、 年4回3ヶ月毎" name="US$7.50/month,billedquarterly"/> + <combo_box.item label="月額 6.00米ドル、 年間一括払い" name="US$6.00/month,billedannually"/> </combo_box> <text name="land_use_action"> 毎月の土地使用料をUS$40に引き上げます </text> <text name="land_use_reason"> - あなたは1,309平方メートルの土地を所有しています。 -この区画は512平方メートルです。 + あなたは 1309 平方メートルの土地を所有しています。 +この区画の大きさは、512 平方メートルです。 </text> <text name="purchase_action"> Joe ResidentにL$4000支払って土地を購入 @@ -99,140 +226,12 @@ 1000 </line_editor> <text name="currency_est"> - 約US$ [AMOUNT2] + 約 [LOCAL_AMOUNT] </text> <text name="currency_balance"> 所持金は L$2,100です。 </text> - <check_box label="[AMOUNT]平方メートルの貢献面積をグループから取り除く" name="remove_contribution"/> + <check_box label="グループから [AMOUNT] 平方メートルの貢献を取り除きます。" name="remove_contribution"/> <button label="購入" name="buy_btn"/> <button label="取り消し" name="cancel_btn"/> - <string name="can_resell"> - 再販可能 - </string> - <string name="can_not_resell"> - 再販不可能 - </string> - <string name="can_change"> - 統合/再分割可能 - </string> - <string name="can_not_change"> - 統合/再分割不可能 - </string> - <string name="cant_buy_for_group"> - あなたはアクティブなグループ用の土地購入を許可されていません - </string> - <string name="no_land_selected"> - 土地が選択されていません - </string> - <string name="multiple_parcels_selected"> - 複数の異なった区画を選択しました。 -これより小さなエリアを選択してください。 - </string> - <string name="no_permission"> - あなたはアクティブなグループ用の土地購入を許可されていません - </string> - <string name="parcel_not_for_sale"> - 選択された区画は販売対象外です - </string> - <string name="group_already_owns"> - グループはすでにこの区画を所有しています - </string> - <string name="you_already_own"> - あなたはすでにこの区画を所有しています - </string> - <string name="set_to_sell_to_other"> - 選択された区画は、他の人への販売が決まっています - </string> - <string name="no_public_land"> - 選択された地域に、公共の土地はありません - </string> - <string name="not_owned_by_you"> - 他の使用者に所有された土地が選択されています。 -これより小さなエリアを選択してください。 - </string> - <string name="processing"> - 購入処理中... - -(数分かかることがあります) - </string> - <string name="fetching_error"> - 土地購入の情報入手中にエラーが起きました - </string> - <string name="buying_will"> - この土地を買うと: - </string> - <string name="buying_for_group"> - グループ用の土地を購入すると: - </string> - <string name="cannot_buy_now"> - 現在購入不可: - </string> - <string name="not_for_sale"> - 販売対象外: - </string> - <string name="none_needed"> - 一切必要なし - </string> - <string name="must_upgrade"> - アカウントをアップグレードしないと、土地を所有できません - </string> - <string name="cant_own_land"> - あなたのアカウントで土地を所有できます - </string> - <string name="land_holdings"> - あなたは [BUYER] 平方メートルの土地を所有しています - </string> - <string name="pay_to_for_land"> - この土地の代金として、[SELLER]にL$[AMOUNT]を支払う - </string> - <string name="buy_for_US"> - 約US$ [AMOUNT2]でL$ [AMOUNT]を購入 - </string> - <string name="parcel_meters"> - この区画は [AMOUNT] 平方メートルあります - </string> - <string name="premium_land"> - この土地は割り増し付です。 [AMOUNT] 平方メートルの料金がかかります。 - </string> - <string name="discounted_land"> - この土地はディスカウントされています。 [AMOUNT] 平方メートルの料金がかかります。 - </string> - <string name="meters_supports_object"> - [AMOUNT]平方メートルであれば、 -[AMOUNT2]個のオブジェクトがサポ -ートされます - </string> - <string name="sold_with_objects"> - オブジェクトと共に販売済み - </string> - <string name="sold_without_objects"> - オブジェクトは含まれていません - </string> - <string name="info_price_string"> - L$ [PRICE] -(L$ [PRICE_PER_SQM]/平方メートル) -[SOLD_WITH_OBJECTS] - </string> - <string name="insufficient_land_credits"> - この [GROUP] が区画の購入手続きを完了するには、 価格に見合うだけの寄付された土地の利用実績が必要です - </string> - <string name="have_enough_lindens"> - あなたの所持する L$ [AMOUNT]で、この土地を購入できます - </string> - <string name="not_enough_lindens"> - あなたの所持金は L$ [AMOUNT]だけで、あとL$ [AMOUNT2] 必要です - </string> - <string name="balance_left"> - 購入後、あなたの残額はL$[AMOUNT]になります - </string> - <string name="balance_needed"> - この土地を買うには、少なくとも L$ [AMOUNT] を購入する必要があります - </string> - <string name="no_parcel_selected"> - (区画が選定されていません) - </string> - <string name="buy_currency"> - 約US$ [USD]でL$ [LINDENS]を購入 - </string> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_buy_object.xml b/indra/newview/skins/default/xui/ja/floater_buy_object.xml index f807e91573..f323263699 100644 --- a/indra/newview/skins/default/xui/ja/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/ja/floater_buy_object.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="contents" title="オブジェクトのコピーを購入"> <text name="contents_text"> - 内容: + 中身: </text> <text name="buy_text"> - [NAME]からL$[AMOUNT]で購入しますか? + [NAME] から L$[AMOUNT] で購入しますか? </text> <button label="取消" label_selected="取消" name="cancel_btn"/> <button label="購入" label_selected="購入" name="buy_btn"/> @@ -12,15 +12,15 @@ 購入 </text> <string name="title_buy_copy_text"> - 次のものを買う + 次のものを購入 </string> <text name="no_copy_text"> - (コピーなし) + (コピー不可) </text> <text name="no_modify_text"> - (修正なし) + (修正不可) </text> <text name="no_transfer_text"> - (転送なし) + (再販・プレゼント不可) </text> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_camera.xml b/indra/newview/skins/default/xui/ja/floater_camera.xml index 7e32e5b3c5..3730bcd385 100644 --- a/indra/newview/skins/default/xui/ja/floater_camera.xml +++ b/indra/newview/skins/default/xui/ja/floater_camera.xml @@ -10,12 +10,20 @@ カメラを上下左右に移動 </floater.string> <panel name="controls"> - <joystick_track name="cam_track_stick" tool_tip="カメラを上下左右に移動"/> - <joystick_zoom name="zoom" tool_tip="向いてる方法にカメラをズーム"/> + <joystick_track name="cam_track_stick" tool_tip="カメラを上下左右に動かします"/> + <panel name="zoom" tool_tip="向いている方法にカメラをズーム"> + <slider_bar name="zoom_slider" tool_tip="向いている方向にカメラをズーム"/> + </panel> <joystick_rotate name="cam_rotate_stick" tool_tip="自分を軸にカメラを回す"/> + <panel name="camera_presets"> + <button name="rear_view" tool_tip="後方視界"/> + <button name="group_view" tool_tip="グループ視界"/> + <button name="front_view" tool_tip="前方視界"/> + <button name="mouselook_view" tool_tip="一人称視界"/> + </panel> </panel> <panel name="buttons"> - <button label="" name="orbit_btn" tool_tip="カメラを旋回"/> + <button label="" name="orbit_btn" tool_tip="カメラを回す"/> <button label="" name="pan_btn" tool_tip="カメラを水平・垂直移動"/> <button label="" name="avatarview_btn" tool_tip="アバター視点"/> <button label="" name="freecamera_btn" tool_tip="オブジェクトを見る"/> diff --git a/indra/newview/skins/default/xui/ja/floater_choose_group.xml b/indra/newview/skins/default/xui/ja/floater_choose_group.xml index 08c91f1895..7d91cb69ed 100644 --- a/indra/newview/skins/default/xui/ja/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/ja/floater_choose_group.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="groups" title="グループ"> <text name="groupdesc"> グループを選択: </text> - <button label="OK" label_selected="OK" name="OK" /> - <button label="取り消し" label_selected="取り消し" name="Cancel" /> + <button label="OK" label_selected="OK" name="OK"/> + <button label="取り消し" label_selected="取り消し" name="Cancel"/> </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 d041f44e08..dc87d27a15 100644 --- a/indra/newview/skins/default/xui/ja/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/ja/floater_color_picker.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="ColorPicker" title="カラー・ピッカー"> +<floater name="ColorPicker" title="カラーピッカー"> <text name="r_val_text"> 赤: </text> @@ -18,14 +18,14 @@ <text name="l_val_text"> 輝度: </text> - <check_box label="今すぐ適用" name="apply_immediate"/> + <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="選択" name="select_btn"/> + <button label="OK" label_selected="OK" name="select_btn"/> <text name="Current color:"> 現在の色: </text> <text name="(Drag below to save.)"> - ドラッグして保存 + (下にドラッグして保存) </text> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_critical.xml b/indra/newview/skins/default/xui/ja/floater_critical.xml index 39f6ee8e3f..f69c24622a 100644 --- a/indra/newview/skins/default/xui/ja/floater_critical.xml +++ b/indra/newview/skins/default/xui/ja/floater_critical.xml @@ -3,10 +3,10 @@ <button label="続行" label_selected="続行" name="Continue" /> <button label="取り消し" label_selected="取り消し" name="Cancel" /> <text name="tos_title"> - クリティカル・メッセージ + クリティカルメッセージ </text> <text name="tos_heading"> - 次のメッセージを注意深くお読みください。 + 次のメッセージを注意してよくお読みください。 </text> <text_editor name="tos_text"> TOS_TEXT diff --git a/indra/newview/skins/default/xui/ja/floater_customize.xml b/indra/newview/skins/default/xui/ja/floater_customize.xml index d51fb74807..cc0032e1ab 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 name="radio" label="女性"/> - <radio_item name="radio2" label="男性"/> + <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"> あなたはこの服の修正を許されていません。 @@ -49,7 +50,7 @@ <panel label="スキン" name="Skin"> <button label="スキンの色" label_selected="スキンの色" name="Skin Color"/> <button label="顔の細部" label_selected="顔の細部" name="Face Detail"/> - <button label="メイクアップ" label_selected="メイクアップ" name="Makeup"/> + <button label="メイク" label_selected="メイク" name="Makeup"/> <button label="身体細部" label_selected="身体細部" name="Body Detail"/> <text name="title"> [DESC] @@ -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"> あなたはこの服の修正を許されていません。 @@ -114,7 +113,7 @@ <text name="Item Action Label"> 髪型: </text> - <texture_picker label="テクスチャー" name="Texture" tool_tip="写真をクリックして選択"/> + <texture_picker label="テクスチャ" name="Texture" tool_tip="写真をクリックして選択"/> <button label="新しい髪を作成" label_selected="新しい髪を作成" name="Create New"/> <button label="保存" label_selected="保存" name="Save"/> <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> @@ -137,8 +136,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しい眼を持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + あなたの持ち物からアバターにドラッグして、新しい目をつけます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -152,12 +150,14 @@ <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> <button label="戻す" label_selected="戻す" name="Revert"/> </panel> - <panel 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="カラー・ピッカーをクリックして開く"/> - <button label="新しいシャツを作成" label_selected="新しいシャツを作成" name="Create New"/> + <color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> <button label="取り外す" label_selected="取り外す" name="Take Off"/> + <button label="新しいシャツを作成" label_selected="新しいシャツを作成" name="Create New"/> <button label="保存" label_selected="保存" name="Save"/> <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> <button label="戻す" label_selected="戻す" name="Revert"/> @@ -177,8 +177,7 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しいシャツを持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + 持ち物からあなたのアバターに 1 つドラッグして、新しいシャツを着ます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 @@ -187,11 +186,11 @@ シャツ: </text> </panel> - <panel label="ズボン" name="Pants"> + <panel label="パンツ" name="Pants"> <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/> - <color_swatch label="色/明暗" name="Color/Tint" tool_tip="カラー・ピッカーをクリックして開く"/> - <button label="新しいズボンを作成" label_selected="新しいズボンを作成" name="Create New"/> + <color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> <button label="取り外す" label_selected="取り外す" name="Take Off"/> + <button label="新しいパンツを作成" label_selected="新しいパンツを作成" name="Create New"/> <button label="保存" label_selected="保存" name="Save"/> <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> <button label="戻す" label_selected="戻す" name="Revert"/> @@ -211,14 +210,13 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しいズボンを持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + あなたの持ち物からアバターにドラッグして、新しいパンツを履きます。 代わりに、はじめから新しく作成して着用することもできます。 </text> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 </text> <text name="Item Action Label"> - ズボン: + パンツ: </text> </panel> <panel label="靴" name="Shoes"> @@ -238,9 +236,9 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しい靴を持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + あなたの持ち物からアバターにドラッグして、新しい靴を履きます。 代わりに、はじめから新しく作成して着用することもできます。 </text> + <button label="新しい靴を作成" label_selected="新しい靴を作成" name="Create New"/> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 </text> @@ -248,8 +246,7 @@ 靴: </text> <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/> - <color_swatch label="色/明暗" name="Color/Tint" tool_tip="カラー・ピッカーをクリックして開く"/> - <button label="新しい靴を作成" label_selected="新しい靴を作成" name="Create New"/> + <color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> <button label="取り外す" label_selected="取り外す" name="Take Off"/> <button label="保存" label_selected="保存" name="Save"/> <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> @@ -272,9 +269,9 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しい靴下を持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + あなたの持ち物からアバターにドラッグして、新しい靴下を履きます。 代わりに、はじめから新しく作成して着用することもできます。 </text> + <button label="新しい靴下を作成" label_selected="新しい靴下を作成" name="Create New"/> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 </text> @@ -282,8 +279,7 @@ 靴下: </text> <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/> - <color_swatch label="色/明暗" name="Color/Tint" tool_tip="カラー・ピッカーをクリックして開く"/> - <button label="新しい靴下を作成" label_selected="新しい靴下を作成" name="Create New"/> + <color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> <button label="取り外す" label_selected="取り外す" name="Take Off"/> <button label="保存" label_selected="保存" name="Save"/> <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> @@ -306,9 +302,9 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しい上着を持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + 持ち物からあなたのアバターに 1 つドラッグして、新しいジャケットを着ます。 代わりに、はじめから新しく作成して着用することもできます。 </text> + <button label="新しい上着を作成" label_selected="新しい上着を作成" name="Create New"/> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 </text> @@ -317,8 +313,7 @@ </text> <texture_picker label="上半身の生地" name="Upper Fabric" tool_tip="写真をクリックして選択"/> <texture_picker label="下層生地" name="Lower Fabric" tool_tip="写真をクリックして選択"/> - <color_swatch label="色/明暗" name="Color/Tint" tool_tip="カラー・ピッカーをクリックして開く"/> - <button label="新しい上着を作成" label_selected="新しい上着を作成" name="Create New"/> + <color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> <button label="取り外す" label_selected="取り外す" name="Take Off"/> <button label="保存" label_selected="保存" name="Save"/> <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> @@ -341,9 +336,9 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しい手袋を持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + あなたの持ち物からアバターにドラッグして、新しい手袋をつけます。 代わりに、はじめから新しく作成して着用することもできます。 </text> + <button label="新しい手袋を作成" label_selected="新しい手袋を作成" name="Create New"/> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 </text> @@ -351,8 +346,7 @@ 手袋: </text> <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/> - <color_swatch label="色/明暗" name="Color/Tint" tool_tip="カラー・ピッカーをクリックして開く"/> - <button label="新しい手袋を作成" label_selected="新しい手袋を作成" name="Create New"/> + <color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> <button label="取り外す" label_selected="取り外す" name="Take Off"/> <button label="保存" label_selected="保存" name="Save"/> <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> @@ -375,9 +369,9 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しい下着を持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + 持ち物からあなたのアバターに1つドラッグして、新しい下着(上)を着ます。 代わりに、はじめから新しく作成して着用することもできます。 </text> + <button label="新しい下着シャツを作成" label_selected="新しい下着シャツを作成" name="Create New"/> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 </text> @@ -385,8 +379,7 @@ 下着シャツ: </text> <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/> - <color_swatch label="色/明暗" name="Color/Tint" tool_tip="カラー・ピッカーをクリックして開く"/> - <button label="新しい下着シャツを作成" label_selected="新しい下着シャツを作成" name="Create New"/> + <color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> <button label="取り外す" label_selected="取り外す" name="Take Off"/> <button label="保存" label_selected="保存" name="Save"/> <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> @@ -409,9 +402,9 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しいパンツを持ち物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + あなたの持ち物からアバターにドラッグして、新しい下着(下)を履きます。 代わりに、はじめから新しく作成して着用することもできます。 </text> + <button label="新しいパンツを作成" label_selected="新しいパンツを作成" name="Create New"/> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 </text> @@ -419,8 +412,7 @@ 下着パンツ: </text> <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/> - <color_swatch label="色/明暗" name="Color/Tint" tool_tip="カラー・ピッカーをクリックして開く"/> - <button label="新しいパンツを作成" label_selected="新しいパンツを作成" name="Create New"/> + <color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> <button label="取り外す" label_selected="取り外す" name="Take Off"/> <button label="保存" label_selected="保存" name="Save"/> <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> @@ -443,9 +435,9 @@ [PATH] に所在 </text> <text name="not worn instructions"> - 新しいスカートを持物からアバターにドラッグして装着しましょう。 - 完全に新規の状態から作成して装着することもできます。 + 持ち物からあなたのアバターに 1 つドラッグして、新しいスカートを履きます。 代わりに、はじめから新しく作成して着用することもできます。 </text> + <button label="スカートを作成" label_selected="スカートを作成" name="Create New"/> <text name="no modify instructions"> あなたはこの服の修正を許されていません。 </text> @@ -453,15 +445,85 @@ スカート: </text> <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックして選択"/> - <color_swatch label="色/明暗" name="Color/Tint" tool_tip="カラー・ピッカーをクリックして開く"/> - <button label="スカートを作成" label_selected="スカートを作成" name="Create New"/> + <color_swatch label="色/明暗" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> <button label="取り外す" label_selected="取り外す" name="Take Off"/> <button label="保存" label_selected="保存" name="Save"/> <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> <button label="戻す" label_selected="戻す" name="Revert"/> </panel> + <panel label="タトゥ" name="Tattoo"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: 修正不可 + </text> + <text name="title_loading"> + [DESC]: ローディング... + </text> + <text name="title_not_worn"> + [DESC]: 未着用 + </text> + <text name="path"> + 参照 [PATH] + </text> + <text name="not worn instructions"> + あなたの持ち物からアバターにドラッグして、新しいタトゥをつけます。 代わりに、はじめから新しく作成して着用することもできます。 + </text> + <button label="新しいタトゥを作成" label_selected="新しいタトゥを作成" name="Create New"/> + <text name="no modify instructions"> + この着用物を修正する権限がありません。 + </text> + <text name="Item Action Label"> + タトゥ: + </text> + <texture_picker label="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択します"/> + <texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択します"/> + <texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択します"/> + <button label="取り外す" label_selected="取り外す" name="Take Off"/> + <button label="保存" label_selected="保存" name="Save"/> + <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> + <button label="元に戻す" label_selected="元に戻す" name="Revert"/> + </panel> + <panel label="アルファ" name="Alpha"> + <text name="title"> + [DESC] + </text> + <text name="title_no_modify"> + [DESC]: 修正不可 + </text> + <text name="title_loading"> + [DESC]: ローディング... + </text> + <text name="title_not_worn"> + [DESC]: 未着用 + </text> + <text name="path"> + 参照 [PATH] + </text> + <text name="not worn instructions"> + あなたの持ち物からアバターにドラッグして、新しいアルファマスクをつけます。 代わりに、はじめから新しく作成して着用することもできます。 + </text> + <button label="新しいアルファを作成" label_selected="新しいアルファを作成" name="Create New"/> + <text name="no modify instructions"> + この着用物を修正する権限がありません。 + </text> + <text name="Item Action Label"> + アルファ: + </text> + <texture_picker label="アルファ(下)" name="Lower Alpha" tool_tip="クリックして写真を選択します"/> + <texture_picker label="アルファ(上)" name="Upper Alpha" tool_tip="クリックして写真を選択します"/> + <texture_picker label="頭部のアルファ" name="Head Alpha" tool_tip="クリックして写真を選択します"/> + <texture_picker label="目のアルファ" name="Eye Alpha" tool_tip="クリックして写真を選択します"/> + <texture_picker label="髪のアルファ" name="Hair Alpha" tool_tip="クリックして写真を選択します"/> + <button label="取り外す" label_selected="取り外す" name="Take Off"/> + <button label="保存" label_selected="保存" name="Save"/> + <button label="別名で保存..." label_selected="別名で保存..." name="Save As"/> + <button label="元に戻す" label_selected="元に戻す" name="Revert"/> + </panel> </tab_container> + <button label="スクリプト情報" label_selected="スクリプト情報" name="script_info" tool_tip="あなたのアバターに付いているスクリプトを表示します"/> + <button label="アウトフィット作成" label_selected="アウトフィット作成" name="make_outfit_btn"/> <button label="キャンセル" label_selected="キャンセル" name="Cancel"/> <button label="OK" label_selected="OK" name="Ok"/> - <button label="服装を作成..." label_selected="服装を作成..." name="Make Outfit"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml index 2d8b54cdd5..3bd5ed2837 100644 --- a/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml @@ -84,10 +84,10 @@ <text name="DayCycleText3"> プレビュー: </text> - <button label="再生" label_selected="再生" name="WLAnimSky" /> + <button label="再生" label_selected="再生" name="WLAnimSky" left_delta="70"/> <button label="停止!" label_selected="停止" name="WLStopAnimSky" /> <button label="不動産の時刻を使用" - label_selected="不動産の時刻に変更" name="WLUseLindenTime" /> + label_selected="不動産の時刻に変更" name="WLUseLindenTime" width="140"/> <button label="デイ・テストを保存" label_selected="デイ・テストを保存" name="WLSaveDayCycle" /> <button label="デイ・テストをロード" diff --git a/indra/newview/skins/default/xui/ja/floater_device_settings.xml b/indra/newview/skins/default/xui/ja/floater_device_settings.xml index f189acf101..3ae7356fb6 100644 --- a/indra/newview/skins/default/xui/ja/floater_device_settings.xml +++ b/indra/newview/skins/default/xui/ja/floater_device_settings.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_device_settings" title="ボイスチャット機器の設定" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_device_settings" title="ボイスチャット機器の設定"/> diff --git a/indra/newview/skins/default/xui/ja/floater_env_settings.xml b/indra/newview/skins/default/xui/ja/floater_env_settings.xml index 48c22323f8..1d5f26a6eb 100644 --- a/indra/newview/skins/default/xui/ja/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/ja/floater_env_settings.xml @@ -1,5 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Environment Editor Floater" title="環境編集"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Environment Editor Floater" title="自然環境エディター"> + <floater.string name="timeStr"> + [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc] + </floater.string> <text name="EnvTimeText"> 時刻 </text> @@ -12,13 +15,11 @@ <text name="EnvWaterColorText"> 水の色 </text> - <color_swatch name="EnvWaterColor" - tool_tip="カラー・ピッカーをクリックして開く" /> + <color_swatch name="EnvWaterColor" tool_tip="クリックしてカラーピッカーを開きます"/> <text name="EnvWaterFogText"> 水中照度 </text> - <button label="不動産の時刻を使用" name="EnvUseEstateTimeButton" /> - <button label="空の高度な設定" name="EnvAdvancedSkyButton" /> - <button label="水の高度な設定" name="EnvAdvancedWaterButton" /> - <button label="?" name="EnvSettingsHelpButton" /> + <button label="不動産の時刻を使用" name="EnvUseEstateTimeButton"/> + <button label="空の高度な設定" name="EnvAdvancedSkyButton"/> + <button label="水の高度な設定" name="EnvAdvancedWaterButton"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_event.xml b/indra/newview/skins/default/xui/ja/floater_event.xml new file mode 100644 index 0000000000..306b262b70 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_event.xml @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater label="イベント" name="Event" title="イベント詳細"> + <floater.string name="none"> + なし + </floater.string> + <floater.string name="notify"> + 知らせる + </floater.string> + <floater.string name="dont_notify"> + 知らせない + </floater.string> + <layout_stack name="layout"> + <layout_panel name="profile_stack"> + <text name="event_name"> + Nameless Event...of Doom! De doom! Doom doom. + </text> + <text name="event_category"> + (カテゴリなし) + </text> + <text name="event_runby_label"> + 主催者: + </text> + <text initial_value="(取得中)" name="event_runby"/> + <text name="event_date"> + 10/10/2010 + </text> + <text name="event_duration"> + 1 時間 + </text> + <text name="event_cover"> + 無料 + </text> + <text name="event_location_label"> + 場所: + </text> + <text name="event_location" value="SampleParcel, Name Long (145, 228, 26)"/> + <text name="rating_label" value="レーティング区分:"/> + <text name="rating_value" value="不明"/> + </layout_panel> + <layout_panel name="button_panel"> + <button name="create_event_btn" tool_tip="イベント作成"/> + <button name="god_delete_event_btn" tool_tip="イベント削除"/> + <button label="知らせる" name="notify_btn"/> + <button label="テレポート" name="teleport_btn"/> + <button label="地図" name="map_btn"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_first_time_tip.xml b/indra/newview/skins/default/xui/ja/floater_first_time_tip.xml new file mode 100644 index 0000000000..fce9185b8a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_first_time_tip.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="set_name_in_the_cladd"> + <check_box label="クイックヒントをオフにする" name="DontShowFirstTimeTip_checkbox"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_gesture.xml b/indra/newview/skins/default/xui/ja/floater_gesture.xml index 66be1f7d84..a79854bcef 100644 --- a/indra/newview/skins/default/xui/ja/floater_gesture.xml +++ b/indra/newview/skins/default/xui/ja/floater_gesture.xml @@ -1,17 +1,27 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="gestures" title="アクティブ・ジェスチャー"> - <text name="help_label"> - ジェスチャーをダブルクリックして、 アニメーションとサウンドを再生。 - </text> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater label="場所" name="gestures" title="ジェスチャー"> + <floater.string name="loading"> + ローディング... + </floater.string> + <floater.string name="playing"> + (再生中) + </floater.string> + <floater.string name="copy_name"> + [COPY_NAME] のコピー + </floater.string> <scroll_list bottom_delta="-385" height="360" name="gesture_list"> - <column label="トリガ" name="trigger" /> - <column label="キー" name="shortcut" /> - <column label="" name="key" /> - <column label="名前" name="name" /> + <scroll_list.columns label="名前" name="name"/> + <scroll_list.columns label="チャット" name="trigger"/> + <scroll_list.columns label="" name="key"/> + <scroll_list.columns label="キー" name="shortcut"/> </scroll_list> - <button label="新規" name="new_gesture_btn" /> - <button label="持ち物" name="inventory_btn" /> - <button label="編集" name="edit_btn" /> - <button label="再生" name="play_btn" /> - <button label="停止" name="stop_btn" /> + <panel label="bottom_panel" name="bottom_panel"> + <menu_button name="gear_btn" tool_tip="詳細オプション"/> + <button name="new_gesture_btn" tool_tip="新規ジェスチャーを作成"/> + <button name="activate_btn" tool_tip="選択したジェスチャーのアクティベートの有無"/> + <button name="del_btn" tool_tip="このジェスチャーを削除"/> + </panel> + <button label="編集" name="edit_btn"/> + <button label="再生" name="play_btn"/> + <button label="停止" name="stop_btn"/> </floater> 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 25de45c094..075cde8dec 100644 --- a/indra/newview/skins/default/xui/ja/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_god_tools.xml @@ -2,7 +2,7 @@ <floater name="godtools floater" title="ゴッド・ツール"> <tab_container name="GodTools Tabs"> <panel label="グリッド" name="grid"> - <button label="すべてのユーザーを追い出す" label_selected="すべてのユーザーを追い出す" name="Kick all users"/> + <button label="すべてのユーザーを追い出す" label_selected="すべてのユーザーを追い出す" name="Kick all users" width="160"/> <button label="この地域の地図の表示キャッシュを消去" label_selected="この地域の地図の表示キャッシュを消去" name="Flush This Region's Map Visibility Caches"/> </panel> <panel label="地域" name="region"> @@ -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="この設定により、この地域内のトラフィック計算をオフにします。"/> @@ -33,13 +33,15 @@ <line_editor name="gridposx" tool_tip="これは、この地域のグリッドxの位置です。"/> <line_editor name="gridposy" tool_tip="これは、この地域のグリッドyの位置です。"/> <text name="Redirect to Grid: "> - グリッドにリダイレクト: + グリッドにリダ +イレクト: </text> <text name="billable factor text"> 請求率: </text> <text name="land cost text"> - 平方メートル当たりL$: + 平方メートル当 +たりL$: </text> <button label="更新" label_selected="更新" name="Refresh" tool_tip="上記の情報を更新するには、ここをクリックします。"/> <button label="適用" label_selected="適用" name="Apply" tool_tip="上記の変更を適用するには、ここをクリックします。"/> diff --git a/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml b/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml index a8cc4827c5..c5a2800e0e 100644 --- a/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml @@ -21,8 +21,8 @@ <text name="Enable VBO:"> VBO を有効化: </text> - <check_box label="OpenGL Vertex Buffer Objectsを有効化" name="vbo" tool_tip="最新のハードウェアでこの設定を有効にすると、パフォーマンスが向上します。 しかし、旧型のハードウェアでは VBO の実装が貧弱な場合が多く、この設定を有効にすることでクラッシュにつながるおそれがあります。"/> - <slider label="テクスチャメモリ(MB):" name="GrapicsCardTextureMemory" tool_tip="テクスチャーに割り当てるメモリの合計。 ビデオ・カード・メモリをデフォルトにします。 この数値を減らすと、パフォーマンスが改善されますが、テクスチャーがぼやけた感じになる場合があります。"/> + <check_box initial_value="true" label="OpenGL Vertex Buffer Objectsを有効化" name="vbo" tool_tip="最新のハードウェアでこの設定を有効にすると、パフォーマンスが向上します。 しかし、旧型のハードウェアでは VBO の実装が貧弱な場合が多く、この設定を有効にすることでクラッシュにつながるおそれがあります。"/> + <slider label="テクスチャメモリ(MB):" name="GraphicsCardTextureMemory" tool_tip="テクスチャに割り当てられたメモリの量。 ビデオカードのメモリに既定。 数値を下げるとパフォーマンスが向上しますが、テクスチャの精度が落ちることがあります。"/> <spinner label="フォグの距離比率:" name="fog"/> <button label="OK" label_selected="OK" name="OK"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_help_browser.xml b/indra/newview/skins/default/xui/ja/floater_help_browser.xml new file mode 100644 index 0000000000..15200d7ef7 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_help_browser.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_help_browser" title="ヘルプブラウザ"> + <floater.string name="loading_text"> + ローディング... + </floater.string> + <layout_stack name="stack1"> + <layout_panel name="external_controls"/> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_hud.xml b/indra/newview/skins/default/xui/ja/floater_hud.xml index a1970ebbd5..e3841c2cd9 100644 --- a/indra/newview/skins/default/xui/ja/floater_hud.xml +++ b/indra/newview/skins/default/xui/ja/floater_hud.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_hud" title="チュートリアル" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_hud" title="チュートリアル"/> diff --git a/indra/newview/skins/default/xui/ja/floater_im.xml b/indra/newview/skins/default/xui/ja/floater_im.xml index eec644715d..9c323f25e6 100644 --- a/indra/newview/skins/default/xui/ja/floater_im.xml +++ b/indra/newview/skins/default/xui/ja/floater_im.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <multi_floater name="im_floater" title="インスタント・メッセージ"> <string name="only_user_message"> このセッションにいるユーザーはあなただけです。 @@ -10,7 +10,7 @@ このボイスチャットに応答/接続する場合は、[BUTTON NAME]をクリックしてください。 </string> <string name="muted_message"> - あなたはこの住人を無視しています。 メッセージを送信すると、無視設定は自動的に解除されます。 + この住人をブロックしています。 メッセージを送ると、ブロックが自動的に解除されます。 </string> <string name="generic_request_error"> 要求中にエラーが発生しました。後でもう一度試してください。 diff --git a/indra/newview/skins/default/xui/ja/floater_im_container.xml b/indra/newview/skins/default/xui/ja/floater_im_container.xml new file mode 100644 index 0000000000..06b65e27f0 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_im_container.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<multi_floater name="floater_im_box" title="会話"/> diff --git a/indra/newview/skins/default/xui/ja/floater_im_session.xml b/indra/newview/skins/default/xui/ja/floater_im_session.xml new file mode 100644 index 0000000000..6646cc0b25 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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 コントロールパネル" name="panel_im_control_panel"/> + <layout_panel> + <line_editor label="宛先" name="chat_editor"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_image_preview.xml b/indra/newview/skins/default/xui/ja/floater_image_preview.xml index 57ed139e54..2e57acf0d2 100644 --- a/indra/newview/skins/default/xui/ja/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_image_preview.xml @@ -7,7 +7,7 @@ 説明: </text> <text name="preview_label"> - イメージのプレビュー: + プレビュー: </text> <combo_box label="服の種類" name="clothing_type_combo"> <combo_box.item label="画像" name="Image"/> @@ -26,7 +26,7 @@ 24bitTarga(.tga)でイメージを保存してください。 </text> - <check_box label="ロスのない圧縮を使用" name="lossless_check"/> + <check_box label="可逆圧縮" name="lossless_check"/> <button label="取り消し" name="cancel_btn"/> - <button label="アップロードL$[AMOUNT]" name="ok_btn"/> + <button label="アップロード゙L$[AMOUNT]" name="ok_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_incoming_call.xml b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml new file mode 100644 index 0000000000..04013799ec --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_incoming_call.xml @@ -0,0 +1,27 @@ +<?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> + <floater.string name="anonymous"> + 匿名ユーザー + </floater.string> + <floater.string name="VoiceInviteP2P"> + がコールしています。 + </floater.string> + <floater.string name="VoiceInviteAdHoc"> + がコンファレンスチャットで、ボイスチャットに参加しました。 + </floater.string> + <floater.string name="VoiceInviteGroup"> + は [GROUP]. のボイスチャットコールに参加しました。 + </floater.string> + <text name="question"> + [CURRENT_CHAT] を退席して、このボイスチャットに参加しますか? + </text> + <button label="はい" label_selected="はい" name="Accept"/> + <button label="いいえ" label_selected="いいえ" name="Reject"/> + <button label="IM" name="Start IM"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_inspect.xml b/indra/newview/skins/default/xui/ja/floater_inspect.xml index 3ada48ef8e..b3825c0b7f 100644 --- a/indra/newview/skins/default/xui/ja/floater_inspect.xml +++ b/indra/newview/skins/default/xui/ja/floater_inspect.xml @@ -1,14 +1,14 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="inspect" title="オブジェクト検査" min_width="450" > - <scroll_list name="object_list" - tool_tip="このリストからオブジェクトを選択し、この世界で強調表示します。"> - <column label="オブジェクト名" name="object_name" /> - <column label="所有者名" name="owner_name" /> - <column label="制作者名" name="creator_name" /> - <column label="作成日" name="creation_date" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater min_width="450" name="inspect" title="オブジェクトのチェック"> + <floater.string name="timeStamp"> + [year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] + </floater.string> + <scroll_list name="object_list" tool_tip="リストからオブジェクトを選択し、インワールドで強調表示します。"> + <scroll_list.columns label="名前" name="object_name"/> + <scroll_list.columns label="所有者名" name="owner_name"/> + <scroll_list.columns label="制作者名" name="creator_name"/> + <scroll_list.columns label="作成日" name="creation_date"/> </scroll_list> - <button label="所有者のプロフィールを表示..." name="button owner" - tool_tip="選択されたオブジェクトの所有者のプロフィールを見る" /> - <button label="制作者のプロフィールを表示..." name="button creator" - tool_tip="選択されたオブジェクトの制作者のプロフィールを見る" /> + <button label="所有者のプロフィールを表示..." name="button owner" tool_tip="選択したオブジェクトの所有者のプロフィールを表示します" width="180"/> + <button label="制作者のプロフィールを表示..." name="button creator" tool_tip="選択したオブジェクトの制作者のプロフィールを表示します" width="180"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_inventory.xml b/indra/newview/skins/default/xui/ja/floater_inventory.xml index 680496839a..b113fde94a 100644 --- a/indra/newview/skins/default/xui/ja/floater_inventory.xml +++ b/indra/newview/skins/default/xui/ja/floater_inventory.xml @@ -1,51 +1,16 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Inventory" title="持ち物"> - <search_editor label="ここに入力して検索" name="inventory search editor" /> - <tab_container name="inventory filter tabs"> - <inventory_panel label="すべて" name="All Items" /> - <inventory_panel label="最近の入手アイテム" name="Recent Items" /> - </tab_container> - <menu_bar name="Inventory Menu"> - <menu label="ファイル" name="File"> - <menu_item_call label="開く" name="Open" /> - <menu_item_call label="新しいウィンドウ" name="New Window" /> - <menu_item_call label="フィルタを表示" name="Show Filters" /> - <menu_item_call label="フィルターのリセット" name="Reset Current" /> - <menu_item_call label="すべてのフォルダを閉じる" name="Close All Folders" /> - <menu_item_call label="ゴミ箱を空にする" name="Empty Trash" /> - </menu> - <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 Gesture" /> - <menu name="New Clothes"> - <menu_item_call label="新しいシャツ" name="New Shirt" /> - <menu_item_call label="新しいズボン" name="New Pants" /> - <menu_item_call label="新しい靴" name="New Shoes" /> - <menu_item_call label="新しい靴下" name="New Socks" /> - <menu_item_call label="新しいジャケット" name="New Jacket" /> - <menu_item_call label="新しいスカート" name="New Skirt" /> - <menu_item_call label="新しい手袋" name="New Gloves" /> - <menu_item_call label="新しい下着" name="New Undershirt" /> - <menu_item_call label="新しいパンツ" name="New Underpants" /> - </menu> - <menu name="New Body Parts"> - <menu_item_call label="新しいシェイプ(体型)" name="New Shape" /> - <menu_item_call label="新しいスキン" name="New Skin" /> - <menu_item_call label="新しい髪" name="New Hair" /> - <menu_item_call label="新しい眼" name="New Eyes" /> - </menu> - </menu> - <menu label="並べ替え" name="Sort"> - <menu_item_check label="名前" name="By Name" /> - <menu_item_check label="日付" name="By Date" /> - <menu_item_check label="フォルダは常に名前順" name="Folders Always By Name" /> - <menu_item_check label="システムフォルダをトップへ" name="System Folders To Top" /> - </menu> - <menu label="フィルタ" name="Filters"> - <menu_item_check label="現状を修正" name="Modify Current" /> - <menu_item_call label="現状をリセット" name="Reset Current" /> - </menu> - </menu_bar> + <floater.string name="Title"> + 持ち物 + </floater.string> + <floater.string name="TitleFetching"> + 持ち物 ( [ITEM_COUNT] アイテムを取得中...) [FILTER] + </floater.string> + <floater.string name="TitleCompleted"> + 持ち物 ( [ITEM_COUNT] アイテム) [FILTER] + </floater.string> + <floater.string name="Fetched"> + 取得済 + </floater.string> + <panel label="持ち物パネル" name="Inventory Panel"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml index a3fddc7b8d..7480b04856 100644 --- a/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/ja/floater_inventory_item_properties.xml @@ -12,6 +12,9 @@ <floater.string name="owner_can"> オーナーは次のことができます: </floater.string> + <floater.string name="acquiredDate"> + [year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] + </floater.string> <text name="LabelItemNameTitle"> 名前: </text> @@ -63,5 +66,8 @@ <combo_box.item label="コピー" name="Copy"/> <combo_box.item label="オリジナル" name="Original"/> </combo_box> - <spinner label="価格: L$" name="Edit Cost"/> + <spinner label="価格:" name="Edit Cost"/> + <text name="CurrencySymbol"> + L$ + </text> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml index 2200809925..47a63e5e20 100644 --- a/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/ja/floater_inventory_view_finder.xml @@ -1,24 +1,24 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Inventory Finder" title="INVENTORY_RECENT_ITEMS"> - <check_box label="アニメーション" name="check_animation" /> - <check_box label="コーリング・カード" name="check_calling_card" /> - <check_box label="服" name="check_clothing" /> - <check_box label="ジェスチャー" name="check_gesture" /> - <check_box label="ランドマーク" name="check_landmark" /> - <check_box label="ノートカード" name="check_notecard" /> - <check_box label="オブジェクト" name="check_object" /> - <check_box label="スクリプト" name="check_script" /> - <check_box label="サウンド" name="check_sound" /> - <check_box label="テクスチャー" name="check_texture" /> - <check_box label="スナップショット" name="check_snapshot" /> - <button label="すべて" label_selected="すべて" name="All" /> - <button label="なし" label_selected="なし" name="None" /> - <check_box label="常にフォルダを表示" name="check_show_empty" /> - <check_box label="ログオフ以降" name="check_since_logoff" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Inventory Finder" title="最近取得した持ち物アイテム"> + <check_box label="アニメーション" name="check_animation"/> + <check_box label="コーリング・カード" name="check_calling_card"/> + <check_box label="服" name="check_clothing"/> + <check_box label="ジェスチャー" name="check_gesture"/> + <check_box label="ランドマーク" name="check_landmark"/> + <check_box label="ノートカード" name="check_notecard"/> + <check_box label="オブジェクト" name="check_object"/> + <check_box label="スクリプト" name="check_script"/> + <check_box label="サウンド" name="check_sound"/> + <check_box label="テクスチャ" name="check_texture"/> + <check_box label="スナップショット" name="check_snapshot"/> + <button label="すべて" label_selected="すべて" name="All"/> + <button label="なし" label_selected="なし" name="None"/> + <check_box label="常にフォルダを表示" name="check_show_empty"/> + <check_box label="ログオフ以降" name="check_since_logoff"/> <text name="- OR -"> -または- </text> - <spinner label="経過時間" name="spin_hours_ago" /> - <spinner label="経過日数" name="spin_days_ago" /> - <button label="閉じる" label_selected="閉じる" name="Close" /> + <spinner label="経過時間" name="spin_hours_ago"/> + <spinner label="経過日数" name="spin_days_ago"/> + <button label="閉じる" label_selected="閉じる" name="Close"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_joystick.xml b/indra/newview/skins/default/xui/ja/floater_joystick.xml index 177567c806..65eeebe4ed 100644 --- a/indra/newview/skins/default/xui/ja/floater_joystick.xml +++ b/indra/newview/skins/default/xui/ja/floater_joystick.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Joystick" title="ジョイスティックの設定"> - <check_box name="enable_joystick" width="120" label="ジョイスティックを使う:"/> + <check_box label="ジョイスティックを使う:" name="enable_joystick" width="120"/> <text left="180" name="joystick_type" width="320"/> <spinner label="X軸マッピング" name="JoystickAxis1"/> <spinner label="Y軸マッピング" name="JoystickAxis2"/> @@ -15,9 +15,9 @@ <text name="Control Modes:"> 制御モード: </text> - <check_box left="131" name="JoystickAvatarEnabled" label="アバター"/> - <check_box left="201" name="JoystickBuildEnabled" label="造る"/> - <check_box left="271" name="JoystickFlycamEnabled" label="フライ・カメラ"/> + <check_box label="アバター" left="131" name="JoystickAvatarEnabled"/> + <check_box label="造る" left="201" name="JoystickBuildEnabled"/> + <check_box label="フライ・カメラ" left="271" name="JoystickFlycamEnabled"/> <text left="5" name="XScale" width="120"> Xスケール </text> @@ -71,7 +71,7 @@ <spinner left="135" name="AvatarAxisDeadZone0" width="50"/> <spinner left="205" name="BuildAxisDeadZone0" width="50"/> <spinner left="275" name="FlycamAxisDeadZone0" width="50"/> - <text left="0" name="PitchDeadZone" width="135"> + <text left="0" name="PitchDeadZone" width="125"> ピッチ・デッド・ゾーン </text> <spinner left="135" name="AvatarAxisDeadZone4" width="50"/> @@ -83,7 +83,7 @@ <spinner left="135" name="AvatarAxisDeadZone5" width="50"/> <spinner left="205" name="BuildAxisDeadZone5" width="50"/> <spinner left="275" name="FlycamAxisDeadZone5" width="50"/> - <text left="0" name="RollDeadZone" width="135"> + <text left="0" name="RollDeadZone" width="125"> ロール・デッド・ゾーン </text> <spinner left="205" name="BuildAxisDeadZone3" width="50"/> diff --git a/indra/newview/skins/default/xui/ja/floater_lagmeter.xml b/indra/newview/skins/default/xui/ja/floater_lagmeter.xml index e25771ea72..e3546cd837 100644 --- a/indra/newview/skins/default/xui/ja/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/ja/floater_lagmeter.xml @@ -1,152 +1,151 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_lagmeter" title="ラグ メーター"> - <button name="client_lagmeter" tool_tip="クライアント ラグ ステータス" /> - <text name="client"> - クライアント: - </text> - <text name="client_text"> - ノーマル - </text> - <button name="network_lagmeter" tool_tip="ネットワーク ラグ ステータス" /> - <text name="network"> - ネットワーク: - </text> - <text name="network_text"> - ノーマル - </text> - <button name="server_lagmeter" tool_tip="サーバー ラグ ステータス" /> - <text name="server"> - サーバー: - </text> - <text name="server_text"> - ノーマル - </text> - <button label="?" name="server_help" /> - <button label=">> " name="minimize" /> - <text name="max_title_msg"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_lagmeter" title="ラグメーター"> + <floater.string name="max_title_msg"> ラグ メーター - </text> - <text name="max_width_px"> + </floater.string> + <floater.string name="max_width_px"> 350 - </text> - <text name="min_title_msg"> + </floater.string> + <floater.string name="min_title_msg"> ラグ - </text> - <text name="min_width_px"> + </floater.string> + <floater.string name="min_width_px"> 90 - </text> - <text name="client_text_msg"> + </floater.string> + <floater.string name="client_text_msg"> クライアント - </text> - <text name="client_frame_rate_critical_fps"> + </floater.string> + <floater.string name="client_frame_rate_critical_fps"> 10 - </text> - <text name="client_frame_rate_warning_fps"> + </floater.string> + <floater.string name="client_frame_rate_warning_fps"> 15 - </text> - <text name="client_frame_time_window_bg_msg"> + </floater.string> + <floater.string name="client_frame_time_window_bg_msg"> ノーマル、ウィンドウは背景に - </text> - <text name="client_frame_time_critical_msg"> + </floater.string> + <floater.string name="client_frame_time_critical_msg"> クライアント フレームレート < [CLIENT_FRAME_RATE_CRITICAL] - </text> - <text name="client_frame_time_warning_msg"> + </floater.string> + <floater.string name="client_frame_time_warning_msg"> クライアント フレームレート: [CLIENT_FRAME_RATE_CRITICAL] ~ [CLIENT_FRAME_RATE_WARNING] - </text> - <text name="client_frame_time_normal_msg"> + </floater.string> + <floater.string name="client_frame_time_normal_msg"> ノーマル - </text> - <text name="client_draw_distance_cause_msg"> + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> 考えられる原因: 描画距離の設定が大きすぎる - </text> - <text name="client_texture_loading_cause_msg"> + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> 考えられる原因: 画像のロード中 - </text> - <text name="client_texture_memory_cause_msg"> + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> 考えられる原因: メモリ内の画像数が多すぎる - </text> - <text name="client_complex_objects_cause_msg"> + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> 考えられる原因: 画面に含まれる複雑なオブジェクトが多すぎる - </text> - <text name="network_text_msg"> + </floater.string> + <floater.string name="network_text_msg"> ネットワーク - </text> - <text name="network_packet_loss_critical_pct"> + </floater.string> + <floater.string name="network_packet_loss_critical_pct"> 10 - </text> - <text name="network_packet_loss_warning_pct"> + </floater.string> + <floater.string name="network_packet_loss_warning_pct"> 5 - </text> - <text name="network_packet_loss_critical_msg"> + </floater.string> + <floater.string name="network_packet_loss_critical_msg"> 接続でドロップされるパケットの割合: > [NETWORK_PACKET_LOSS_CRITICAL] - </text> - <text name="network_packet_loss_warning_msg"> + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> 接続でドロップされるパケットの割合:[NETWORK_PACKET_LOSS_WARNING] ~ [NETWORK_PACKET_LOSS_CRITICAL] - </text> - <text name="network_performance_normal_msg"> + </floater.string> + <floater.string name="network_performance_normal_msg"> ノーマル - </text> - <text name="network_ping_critical_ms"> + </floater.string> + <floater.string name="network_ping_critical_ms"> 600 - </text> - <text name="network_ping_warning_ms"> + </floater.string> + <floater.string name="network_ping_warning_ms"> 300 - </text> - <text name="network_ping_critical_msg"> + </floater.string> + <floater.string name="network_ping_critical_msg"> 接続の ping 時間: > [NETWORK_PING_CRITICAL] ミリ秒 - </text> - <text name="network_ping_warning_msg"> + </floater.string> + <floater.string name="network_ping_warning_msg"> 接続の ping 時間: [NETWORK_PING_WARNING] ~ [NETWORK_PING_CRITICAL] ミリ秒 - </text> - <text name="network_packet_loss_cause_msg"> + </floater.string> + <floater.string name="network_packet_loss_cause_msg"> 接続不良になっているか、帯域幅設定が高すぎます。 - </text> - <text name="network_ping_cause_msg"> + </floater.string> + <floater.string name="network_ping_cause_msg"> 接続不良になっているか、ファイル共有アプリケーションに問題があります。 - </text> - <text name="server_text_msg"> + </floater.string> + <floater.string name="server_text_msg"> サーバー - </text> - <text name="server_frame_rate_critical_fps"> + </floater.string> + <floater.string name="server_frame_rate_critical_fps"> 20 - </text> - <text name="server_frame_rate_warning_fps"> + </floater.string> + <floater.string name="server_frame_rate_warning_fps"> 30 - </text> - <text name="server_single_process_max_time_ms"> + </floater.string> + <floater.string name="server_single_process_max_time_ms"> 20 - </text> - <text name="server_frame_time_critical_msg"> + </floater.string> + <floater.string name="server_frame_time_critical_msg"> シミュレーターのフレームレート: < [SERVER_FRAME_RATE_CRITICAL] - </text> - <text name="server_frame_time_warning_msg"> + </floater.string> + <floater.string name="server_frame_time_warning_msg"> シミュレーターのフレームレート: [SERVER_FRAME_RATE_CRITICAL] ~ [SERVER_FRAME_RATE_WARNING] - </text> - <text name="server_frame_time_normal_msg"> + </floater.string> + <floater.string name="server_frame_time_normal_msg"> ノーマル - </text> - <text name="server_physics_cause_msg"> + </floater.string> + <floater.string name="server_physics_cause_msg"> 考えられる原因: 物理的オブジェクトが多すぎる - </text> - <text name="server_scripts_cause_msg"> + </floater.string> + <floater.string name="server_scripts_cause_msg"> 考えられる原因: スクリプトを含むオブジェクトが多すぎる - </text> - <text name="server_net_cause_msg"> + </floater.string> + <floater.string name="server_net_cause_msg"> 考えられる原因: ネットワーク トラフィック過大 - </text> - <text name="server_agent_cause_msg"> + </floater.string> + <floater.string name="server_agent_cause_msg"> 考えられる原因: 地域内にて動いているアバターが多すぎる - </text> - <text name="server_images_cause_msg"> + </floater.string> + <floater.string name="server_images_cause_msg"> 考えられる原因: 画像計算が多すぎる - </text> - <text name="server_generic_cause_msg"> + </floater.string> + <floater.string name="server_generic_cause_msg"> 考えられる原因: シミュレーターの過負荷 + </floater.string> + <floater.string name="smaller_label"> + >> + </floater.string> + <floater.string name="bigger_label"> + << + </floater.string> + <button name="client_lagmeter" tool_tip="クライアント ラグ ステータス"/> + <text name="client"> + クライアント </text> - <text name="smaller_label"> - >> + <text name="client_text"> + ノーマル + </text> + <button name="network_lagmeter" tool_tip="ネットワーク ラグ ステータス"/> + <text name="network"> + ネットワーク </text> - <text name="bigger_label"> - << + <text name="network_text"> + ノーマル + </text> + <button name="server_lagmeter" tool_tip="サーバー ラグ ステータス"/> + <text name="server"> + サーバー + </text> + <text name="server_text"> + ノーマル </text> + <button label=">> " name="minimize" tool_tip="フローターのサイズをトグル"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_land_holdings.xml b/indra/newview/skins/default/xui/ja/floater_land_holdings.xml index 3cff79430d..aca916f22f 100644 --- a/indra/newview/skins/default/xui/ja/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/ja/floater_land_holdings.xml @@ -7,34 +7,34 @@ <column label="面積" name="area"/> <column label="" name="hidden"/> </scroll_list> - <button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="この土地の中心にテレポート"/> - <button label="地図" label_selected="地図" name="Show on Map" tool_tip="この土地を世界地図に表示します。"/> + <button label="テレポート" label_selected="テレポート" name="Teleport" tool_tip="この土地の中心にテレポートします"/> + <button label="地図" label_selected="地図" name="Show on Map" tool_tip="この土地を世界地図に表示します"/> <text name="contrib_label"> - あなたのグループへの貢献: + 所属グループへの貢献: </text> <scroll_list name="grant list"> <column label="グループ名" name="group"/> <column label="面積" name="area"/> </scroll_list> <text name="allowed_label"> - 現在の支払いプランでの許可された保有地: + 現在の支払いプランで許可された保有地: </text> <text name="allowed_text"> - [AREA]平方メートル + [AREA] 平方メートル </text> <text name="current_label"> 現在の保有地: </text> <text name="current_text"> - [AREA]平方メートル + [AREA] 平方メートル </text> <text name="available_label"> - 土地購入可: + 購入可能な土地: </text> <text name="available_text"> - [AREA]平方メートル + [AREA] 平方メートル </text> <string name="area_string"> - [AREA]平方メートル + [AREA] 平方メートル </string> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml index ce1a1ecf92..5a155c9f12 100644 --- a/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/ja/floater_live_lsleditor.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script ed float" title="スクリプト:新しいスクリプト"> +<floater name="script ed float" title="スクリプト: 新しいスクリプト"> <floater.string name="not_allowed"> - このスクリプトは「コピー不可」のため、表示または編集することができません。 オブジェクト内のスクリプトの表示または編集には、全権限が必要です。 + このスクリプトは「コピー不可」のため、表示・編集することができません。 オブジェクト内のスクリプトの表示・編集には、全権限が必要です。 </floater.string> <floater.string name="script_running"> 実行中 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 e535fc731f..5773752788 100644 --- a/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/ja/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="カーソルを追う" name="lock_check" /> - <combo_box label="ロック" name="history_combo" /> - <button label="戻る" name="back_btn" /> - <button label="進む" name="fwd_btn" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script ed float" title="LSL レファレンス"> + <check_box label="カーソルを追う" name="lock_check"/> + <combo_box label="ロック" name="history_combo"/> + <button label="戻る" name="back_btn"/> + <button label="進む" name="fwd_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_map.xml b/indra/newview/skins/default/xui/ja/floater_map.xml index f3cba7e674..8d920a3c3f 100644 --- a/indra/newview/skins/default/xui/ja/floater_map.xml +++ b/indra/newview/skins/default/xui/ja/floater_map.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Map"> +<floater name="Map" title="ミニマップ"> <floater.string name="mini_map_north"> 北 </floater.string> @@ -25,7 +25,7 @@ 北西 </floater.string> <floater.string name="ToolTipMsg"> - [AGENT][REGION] (ダブルクリックで地図を開く) + [AGENT][REGION] (ダブルクリックで地図を開きます) </floater.string> <text label="北" name="floater_map_north" text="北"> 北 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 3bcc40f9dd..c4731b73a3 100644 --- a/indra/newview/skins/default/xui/ja/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/ja/floater_media_browser.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="メディア・ブラウザ"> +<floater name="floater_about" title="メディアブラウザ"> <floater.string name="home_page_url"> http://jp.secondlife.com </floater.string> @@ -19,11 +19,11 @@ <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"/> - <check_box label="常に外部のウェブ・ブラウザで開く" name="open_always"/> + <button label="外部Webブラウザで開く" name="open_browser"/> + <check_box label="常に外部のWebブラウザで開く" name="open_always"/> <button label="閉じる" name="close"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/ja/floater_media_settings.xml b/indra/newview/skins/default/xui/ja/floater_media_settings.xml new file mode 100644 index 0000000000..46ac1a8dfd --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_media_settings.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="media_settings" title="メディアの設定"> + <button label="OK" label_selected="OK" name="OK"/> + <button label="キャンセル" label_selected="キャンセル" name="Cancel"/> + <button label="適用" label_selected="適用" name="Apply"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml b/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml index 6167b6db91..f48bb94e32 100644 --- a/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/ja/floater_mem_leaking.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="MemLeak" title="メモリリークのシミュレート"> - <spinner label="リークスピード(1フレームごとのバイト数):" label_width="244" name="leak_speed"/> - <spinner label="リークした最大メモリ数(MB):" label_width="244" name="max_leak"/> + <spinner label="リーク速度(1フレームごとのバイト数):" label_width="244" name="leak_speed"/> + <spinner label="最大メモリリーク(MB):" label_width="244" name="max_leak"/> <text name="total_leaked_label"> - 現在のリークメモリサイズ: [SIZE] KB + 現在のメモリリーク: [SIZE] KB </text> <text name="note_label_1"> [NOTE1] diff --git a/indra/newview/skins/default/xui/ja/floater_mute_object.xml b/indra/newview/skins/default/xui/ja/floater_mute_object.xml index 072bb4a576..04ffd5254d 100644 --- a/indra/newview/skins/default/xui/ja/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/ja/floater_mute_object.xml @@ -1,12 +1,14 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="mute by name" title="オブジェクト名で無視する"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="mute by name" title="名前でオブジェクトをブロック"> <text name="message"> - テキストのみに影響し、サウンド(環境音など)には影響しません。 -正確なオブジェクト名を入力してください。 + オブジェクトをブロックします: </text> <line_editor name="object_name"> オブジェクト名 </line_editor> - <button label="OK" name="OK" /> - <button label="キャンセル" name="Cancel" /> + <text name="note"> + * ブロックされるのはオブジェクトの文字だけで、音はブロックされません。 + </text> + <button label="OK" name="OK"/> + <button label="キャンセル" name="Cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_my_friends.xml b/indra/newview/skins/default/xui/ja/floater_my_friends.xml index 10e55f0655..b55cdde5b5 100644 --- a/indra/newview/skins/default/xui/ja/floater_my_friends.xml +++ b/indra/newview/skins/default/xui/ja/floater_my_friends.xml @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="floater_my_friends" title="連絡先" min_width="500"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater min_width="500" name="floater_my_friends" title="連絡先"> <tab_container name="friends_and_groups"> - <panel label="フレンド" name="friends_panel" /> - <panel label="グループ" name="groups_panel" /> + <panel label="フレンド" name="friends_panel"/> + <panel label="グループ" name="groups_panel"/> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_nearby_chat.xml b/indra/newview/skins/default/xui/ja/floater_nearby_chat.xml new file mode 100644 index 0000000000..a3cc105048 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_nearby_chat.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="nearby_chat" title="近くのチャット"/> diff --git a/indra/newview/skins/default/xui/ja/floater_openobject.xml b/indra/newview/skins/default/xui/ja/floater_openobject.xml index 485528e985..bd1b650f98 100644 --- a/indra/newview/skins/default/xui/ja/floater_openobject.xml +++ b/indra/newview/skins/default/xui/ja/floater_openobject.xml @@ -1,10 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="objectcontents" title="オブジェクト・コンテンツ"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="objectcontents" title="オブジェクトの中身"> <text name="object_name"> [DESC]: </text> - <button label="持ち物にコピー" label_selected="持ち物にコピー" - name="copy_to_inventory_button" /> - <button label="コピーして装着" label_selected="コピーして装着" - name="copy_and_wear_button" /> + <button label="持ち物にコピー" label_selected="持ち物にコピー" name="copy_to_inventory_button"/> + <button label="コピーして装着" label_selected="コピーして装着" name="copy_and_wear_button"/> </floater> 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 0000000000..70555e6ded --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="modal container" title="アウトフィットを保存する"> + <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 new file mode 100644 index 0000000000..4ccaf1a4af --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_outgoing_call.xml @@ -0,0 +1,40 @@ +<?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> + <floater.string name="anonymous"> + 匿名ユーザー + </floater.string> + <floater.string name="VoiceInviteP2P"> + がコールしています。 + </floater.string> + <floater.string name="VoiceInviteAdHoc"> + がコンファレンスチャットで、ボイスチャットに参加しました。 + </floater.string> + <text name="connecting"> + [CALLEE_NAME] に接続中 + </text> + <text name="calling"> + [CALLEE_NAME] にコール中 + </text> + <text name="noanswer"> + 繋がりませんでした。 あとでもう一度お試しください。 + </text> + <text name="nearby"> + [VOICE_CHANNEL_NAME] への接続が切れました。 [RECONNECT_NEARBY] + </text> + <text name="nearby_P2P_by_other"> + [VOICE_CHANNEL_NAME] がコールを終了しました。 [RECONNECT_NEARBY] + </text> + <text name="nearby_P2P_by_agent"> + コールを終了しました。 [RECONNECT_NEARBY] + </text> + <text name="leaving"> + [CURRENT_CHAT] を終了します。 + </text> + <button label="キャンセル" label_selected="キャンセル" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_pay.xml b/indra/newview/skins/default/xui/ja/floater_pay.xml index bef2435fe2..39bc37bc6c 100644 --- a/indra/newview/skins/default/xui/ja/floater_pay.xml +++ b/indra/newview/skins/default/xui/ja/floater_pay.xml @@ -1,7 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> + <string name="payee_group"> + グループに支払う + </string> + <string name="payee_resident"> + 住人に支払う + </string> <text name="payee_label"> - 支払い: + 支払う: </text> <icon name="icon_person" tool_tip="住人"/> <text name="payee_name"> @@ -12,8 +18,8 @@ <button label="L$10" label_selected="L$10" name="fastpay 10"/> <button label="L$20" label_selected="L$20" name="fastpay 20"/> <text name="amount text"> - 金額の指定: + 金額を指定: </text> - <button label="支払い" label_selected="支払い" name="pay btn"/> + <button label="支払う" label_selected="支払う" name="pay btn"/> <button label="取り消し" label_selected="取り消し" name="cancel btn"/> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_pay_object.xml b/indra/newview/skins/default/xui/ja/floater_pay_object.xml index b304e291d3..ffd57ab67b 100644 --- a/indra/newview/skins/default/xui/ja/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/ja/floater_pay_object.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> <string name="payee_group"> - グループへの支払い: + グループに支払う </string> <string name="payee_resident"> - 住人への支払い: + 住人に支払う </string> <icon name="icon_person" tool_tip="住人"/> <text name="payee_name"> diff --git a/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml b/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml index adbb8596d3..98cda25a81 100644 --- a/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/ja/floater_perm_prefs.xml @@ -5,11 +5,11 @@ <check_box label="グループで共同管理" name="share_with_group"/> <check_box label="誰に対してもコピーを許可" name="everyone_copy"/> <text name="NextOwnerLabel"> - 次のオーナーができる操作: + 次の所有者ができる操作: </text> <check_box label="修正" name="next_owner_modify"/> <check_box label="コピー" name="next_owner_copy"/> - <check_box label="再販/プレゼント" name="next_owner_transfer"/> + <check_box label="再販・プレゼント" name="next_owner_transfer"/> </panel> <button label="OK" label_selected="OK" name="ok"/> <button label="取り消し" label_selected="取り消し" name="cancel"/> diff --git a/indra/newview/skins/default/xui/ja/floater_postcard.xml b/indra/newview/skins/default/xui/ja/floater_postcard.xml index e22ce24180..5a2b047fe0 100644 --- a/indra/newview/skins/default/xui/ja/floater_postcard.xml +++ b/indra/newview/skins/default/xui/ja/floater_postcard.xml @@ -1,40 +1,37 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="Postcard" title="スナップショットをEメールで送信"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Postcard" title="スナップショットをメール"> <text name="to_label"> - 住人のEメール: + 住人のメール: </text> - <line_editor left="145" name="to_form" width="125" /> + <line_editor left="145" name="to_form" width="125"/> <text name="from_label"> - あなたのEメール: + あなたのメール: </text> - <line_editor left="145" name="from_form" width="125" /> + <line_editor left="145" name="from_form" width="125"/> <text name="name_label"> あなたの名前: </text> - <line_editor left="145" name="name_form" width="125" /> + <line_editor left="145" name="name_form" width="125"/> <text name="subject_label"> 件名: </text> - <line_editor label="件名をここに入力" left="145" name="subject_form" - width="125" /> + <line_editor label="件名を入力してください" left="145" name="subject_form" width="125"/> <text name="msg_label"> メッセージ: </text> <text_editor bottom_delta="-120" height="110" name="msg_form"> メッセージをここに入力してください。 </text_editor> - <check_box label="ウェブ上で公開" name="allow_publish_check" - tool_tip="このポストカードをウェブ上で公開します。" /> - <check_box label="成人向けコンテンツ" name="mature_check" - tool_tip="このポストカードには成人向け内容が含まれます。" /> - <button label="?" left="300" name="publish_help_btn" /> + <check_box label="Web上で公開" name="allow_publish_check" tool_tip="このポストカードをWeb上で公開します。"/> + <check_box label="成人向けコンテンツ" name="mature_check" tool_tip="このポストカードには成人向け内容が含まれます。"/> + <button label="?" left="300" name="publish_help_btn"/> <text name="fine_print"> この受信者がSLに参加すると、あなたに紹介ボーナスが入ります </text> - <button bottom_delta="-52" label="取り消し" name="cancel_btn" /> - <button label="送信" name="send_btn" /> + <button bottom_delta="-52" label="取り消し" name="cancel_btn"/> + <button label="送信" name="send_btn"/> <text name="default_subject"> - [SECOND_LIFE] からのポストカード + [SECOND_LIFE] からのポストカードです。 </text> <text name="default_message"> これは絶対チェック! diff --git a/indra/newview/skins/default/xui/ja/floater_preferences.xml b/indra/newview/skins/default/xui/ja/floater_preferences.xml index 3d0c82bd41..6ba27b71a6 100644 --- a/indra/newview/skins/default/xui/ja/floater_preferences.xml +++ b/indra/newview/skins/default/xui/ja/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="環境設定"> - <button label="OK" label_selected="OK" name="OK" /> - <button label="取り消し" label_selected="取り消し" name="Cancel" /> - <button label="適用" label_selected="適用" name="Apply" /> - <button label="概要" label_selected="概要" name="About..." /> - <button label="ヘルプ" label_selected="ヘルプ" name="Help" /> + <button label="OK" label_selected="OK" name="OK"/> + <button label="取り消し" label_selected="取り消し" name="Cancel"/> + <tab_container name="pref core"> + <panel label="一般" name="general"/> + <panel label="グラフィック" name="display"/> + <panel label="プライバシー" name="im"/> + <panel label="サウンドとメディア" name="audio"/> + <panel label="チャット" name="chat"/> + <panel label="メッセージ" name="msgs"/> + <panel label="セットアップ" name="input"/> + <panel label="詳細" name="advanced1"/> + </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_animation.xml b/indra/newview/skins/default/xui/ja/floater_preview_animation.xml index 629c1fd339..606dda12bd 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_animation.xml @@ -6,6 +6,6 @@ <text name="desc txt"> 説明: </text> - <button label="世界で再生" label_selected="停止" name="Anim play btn" tool_tip="このアニメーションを他の人も見ることができるように再生します。"/> - <button label="ローカルに再生" label_selected="停止" name="Anim audition btn" tool_tip="このアニメーションを自分専用に再生します。"/> + <button label="インワールドで再生する" label_selected="停止" name="Anim play btn" tool_tip="他人にも見えるように再生します"/> + <button label="ローカル再生" label_selected="停止" name="Anim audition btn" tool_tip="自分だけが見えるように再生します"/> </floater> 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 1ec868d0d8..8a0aea717c 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture.xml @@ -1,14 +1,32 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="gesture_preview"> - <string name="stop_txt"> + <floater.string name="step_anim"> + プレイするアニメーション: + </floater.string> + <floater.string name="step_sound"> + プレイするサウンド: + </floater.string> + <floater.string name="step_chat"> + 発言するチャット: + </floater.string> + <floater.string name="step_wait"> + 待機: + </floater.string> + <floater.string name="stop_txt"> 止まる - </string> - <string name="preview_txt"> + </floater.string> + <floater.string name="preview_txt"> プレビュー - </string> - <string name="none_text"> + </floater.string> + <floater.string name="none_text"> -- なし -- - </string> + </floater.string> + <floater.string name="Title"> + ジェスチャー: [NAME] + </floater.string> + <text name="name_text"> + 名前: + </text> <text name="desc_label"> 説明: </text> @@ -20,37 +38,30 @@ </text> <line_editor name="replace_editor" tool_tip="トリガー・ワードをこれらの単語に置き換えます。 たとえば、トリガー「hello」を「Howdy」に置換すると、「I wanted to say hello」というチャット文が「I wanted to say howdy」に変わり、ジェスチャーにも置換が反映されます。"/> <text name="key_label"> - ショートカット・キー: + ショートカット: </text> - <combo_box label="なし" name="modifier_combo" left="160"/> + <combo_box label="なし" left="160" name="modifier_combo"/> <combo_box label="なし" name="key_combo"/> <text name="library_label"> ライブラリ: </text> + <scroll_list name="library_list"/> + <button label="追加>>" name="add_btn"/> <text name="steps_label"> 手順: </text> - <scroll_list name="library_list"> - アニメーション -サウンド -チャット -待機 - </scroll_list> - <button label="追加>>" name="add_btn"/> - <button label="上に移動" name="up_btn"/> - <button label="下に移動" name="down_btn"/> + <button label="上" name="up_btn"/> + <button label="下" name="down_btn"/> <button label="削除" name="delete_btn"/> - <text name="help_label"> - 待機ステップを追加しない限り、 -すべてのステップが同時に行われ -ます。 - </text> <radio_group name="animation_trigger_type"> - <radio_item name="start" label="開始" /> - <radio_item name="stop" label="停止" /> + <radio_item label="開始" name="start"/> + <radio_item label="停止" name="stop"/> </radio_group> <check_box label="アニメーションが完了するまで" name="wait_anim_check"/> <check_box label="秒表示の時間" name="wait_time_check"/> + <text name="help_label"> + 待機ステップを入れない限りは、すべてのステップが同時に起こります。 + </text> <check_box label="アクティブ" left="120" name="active_check" tool_tip="アクティブ・ジェスチャーは、トリガー・フレーズを使うか、またはホット・キーを押すことによってトリガーできます。 1つのショートカット・キーに2つ以上のジェスチャーが割り当てられた場合、そのジェスチャーは両方ともアクティブではなくなります。"/> <button label="プレビュー" name="preview_btn"/> <button label="保存" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml new file mode 100644 index 0000000000..e96a43d0c1 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="ジェスチャーのショートカット"> + <text name="trigger_label"> + チャット: + </text> + <text name="key_label"> + キーボード: + </text> + <combo_box label="なし" name="modifier_combo" width="60"/> + <combo_box label="なし" name="key_combo" width="60"/> + <text name="replace_text" tool_tip="これらの単語にトリガーとなる単語を置き換えます。 例えば、「howdy」と「hello」を置き換えると、「I wanted to say hello」というチャットは、ジェスチャーを交えながらの「I wanted to say howdy」に変わります。"> + 置き換え: + </text> + <line_editor name="replace_editor" tool_tip="これらの単語にトリガーとなる単語を置き換えます。 例えば、「howdy」と「hello」を置き換えると、「I wanted to say hello」というチャットは、ジェスチャーを交えながらの「I wanted to say howdy」に変わります。"/> +</floater> 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 0ab1efd127..6e6e04c7d8 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_sound.xml b/indra/newview/skins/default/xui/ja/floater_preview_sound.xml index 09c6e46fb5..c8375389ce 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_sound.xml @@ -6,6 +6,6 @@ <text name="desc txt"> 説明: </text> - <button label="世界で再生" label_selected="世界で再生" name="Sound play btn" tool_tip="このサウンドを他の人も聞くことができるように再生します。"/> - <button label="ローカルに再生" label_selected="ローカルに再生" name="Sound audition btn" tool_tip="このサウンドを自分専用に再生します。"/> + <button label="インワールドで再生する" label_selected="インワールドで再生する" name="Sound play btn" tool_tip="他人にも聞こえるように再生します"/> + <button label="ローカル再生" label_selected="ローカル再生" name="Sound audition btn" tool_tip="自分だけが聞こえるように再生します"/> </floater> 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 32b83f295d..6ea1d79cfc 100644 --- a/indra/newview/skins/default/xui/ja/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/ja/floater_preview_texture.xml @@ -9,9 +9,39 @@ <text name="desc txt"> 説明: </text> - <button label="保存" name="Keep"/> - <button label="削除" name="Discard"/> <text name="dimensions"> [WIDTH]px x [HEIGHT]px </text> + <text name="aspect_ratio"> + 縦横比のプレビュー + </text> + <combo_box name="combo_aspect_ratio" tool_tip="固定した縦横比のプレビュー"> + <combo_item name="Unconstrained"> + 非拘束 + </combo_item> + <combo_item name="1:1" tool_tip="グループ記章か現実世界のプロフィール"> + 1:1 + </combo_item> + <combo_item name="4:3" tool_tip="[SECOND_LIFE] プロフィール"> + 4:3 + </combo_item> + <combo_item name="10:7" tool_tip="クラシファイド広告、検索一覧、ランドマーク"> + 10:7 + </combo_item> + <combo_item name="3:2" tool_tip="土地情報"> + 3:2 + </combo_item> + <combo_item name="16:10"> + 16:10 + </combo_item> + <combo_item name="16:9" tool_tip="プロフィールのピック"> + 16:9 + </combo_item> + <combo_item name="2:1"> + 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_region_info.xml b/indra/newview/skins/default/xui/ja/floater_region_info.xml index 7ac7facce5..d08c51c61e 100644 --- a/indra/newview/skins/default/xui/ja/floater_region_info.xml +++ b/indra/newview/skins/default/xui/ja/floater_region_info.xml @@ -1,2 +1,2 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="regioninfo" title="地域/不動産" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="regioninfo" title="地域 / 不動産"/> 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 ac5b2c0a2d..105e903840 100644 --- a/indra/newview/skins/default/xui/ja/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/ja/floater_report_abuse.xml @@ -8,7 +8,7 @@ 報告者: </text> <text name="reporter_field"> - Loremipsum Dolorsitamut + Loremipsum Dolorsitamut Longnamez </text> <text name="sim_title"> 地域: @@ -23,9 +23,9 @@ {128.1, 128.1, 15.4} </text> <text name="select_object_label"> - ボタンをクリック。悪意のあるオブジェクト: + ボタンをクリックしてから、悪意のあるオブジェクトをクリック: </text> - <button label="" label_selected="" name="pick_btn" tool_tip="オブジェクト・ピッカー - この報告の主題となるオブジェクトを特定"/> + <button label="" label_selected="" name="pick_btn" tool_tip="オブジェクトピッカー - 報告対象のオブジェクトを選択してください"/> <text name="object_name_label"> オブジェクト: </text> @@ -33,23 +33,23 @@ Consetetur Sadipscing </text> <text name="owner_name_label"> - オーナー: + 所有者: </text> <text name="owner_name"> - Hendrerit Vulputate + Hendrerit Vulputate Kamawashi Longname </text> - <combo_box name="category_combo" tool_tip="カテゴリー -- この報告に最も適したカテゴリーを選択してください"> - <combo_box.item label="カテゴリーを選択" name="Select_category"/> + <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"/> <combo_box.item label="商取引>製品またはサービスの提供が行われない" name="Commerce__Failure_to_deliver_product_or_service"/> <combo_box.item label="開示>リアルワールドの情報" name="Disclosure__Real_world_information"/> <combo_box.item label="開示>離れたところからチャットをモニターしている" name="Disclosure__Remotely_monitoring chat"/> - <combo_box.item label="開示>Second Lifeの情報/チャット/IM" name="Disclosure__Second_Life_information_chat_IMs"/> + <combo_box.item label="開示>Second Life の情報/チャット/IM" name="Disclosure__Second_Life_information_chat_IMs"/> <combo_box.item label="平穏を乱す行為>地域リソースの使用が不公平" name="Disturbing_the_peace__Unfair_use_of_region_resources"/> <combo_box.item label="平穏を乱す行為>スクリプト・オブジェクトの乱用" name="Disturbing_the_peace__Excessive_scripted_objects"/> <combo_box.item label="平穏を乱す行為>オブジェクトの捨て置き" name="Disturbing_the_peace__Object_littering"/> @@ -57,7 +57,7 @@ <combo_box.item label="平穏を乱す行為>不要な広告スパム" name="Disturbing_the_peace__Unwanted_advert_spam"/> <combo_box.item label="詐欺> L$" name="Fraud__L$"/> <combo_box.item label="詐欺>土地" name="Fraud__Land"/> - <combo_box.item label="詐欺>マルチ商法またはチェーン・メール" name="Fraud__Pyramid_scheme_or_chain_letter"/> + <combo_box.item label="詐欺>マルチ商法またはチェーンメール" name="Fraud__Pyramid_scheme_or_chain_letter"/> <combo_box.item label="詐欺> US$" name="Fraud__US$"/> <combo_box.item label="嫌がらせ>広告委託/視覚的なスパム" name="Harassment__Advert_farms___visual_spam"/> <combo_box.item label="嫌がらせ>個人またはグループの中傷" name="Harassment__Defaming_individuals_or_groups"/> @@ -68,11 +68,11 @@ <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="わいせつ > 「Moderate」指定の地域での不適切なコンテンツまたは行為" 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"/> - <combo_box.item label="土地>サンドボックス・リソースの乱用" name="Land__Abuse_of_sandbox_resources"/> + <combo_box.item label="土地>サンドボックスのリソースの乱用" name="Land__Abuse_of_sandbox_resources"/> <combo_box.item label="土地>不法侵入>オブジェクト/テクスチャー" name="Land__Encroachment__Objects_textures"/> <combo_box.item label="土地>不法侵入>パーティクル" name="Land__Encroachment__Particles"/> <combo_box.item label="土地>不法侵入>樹木/植物" name="Land__Encroachment__Trees_plants"/> @@ -92,11 +92,11 @@ <text name="dscr_title"> 詳細: </text> - <text name="bug_aviso"> - できるだけ具体的にお願いします。 + <text name="bug_aviso" width="210"> + できるだけ具体的に詳しく記入してください。 </text> <text name="incomplete_title"> - 注意:不完全なレポートは調査されません。 + * 不完全な報告は調査対象になりません。 </text> <button label="嫌がらせの報告" label_selected="嫌がらせの報告" name="send_btn"/> <button label="取り消し" label_selected="取り消し" name="cancel_btn"/> diff --git a/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml index ef021ce713..e70a30fa24 100644 --- a/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/ja/floater_script_debug_panel.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script" short_title="[All scripts]" title="[All scripts]"/> +<floater name="script" short_title="[ALL SCRIPTS]" title="[ALL SCRIPTS]"/> 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 0000000000..7ccd858af7 --- /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_script_preview.xml b/indra/newview/skins/default/xui/ja/floater_script_preview.xml index 82fe741d67..656357aa17 100644 --- a/indra/newview/skins/default/xui/ja/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_script_preview.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="preview lsl text" title="スクリプト:回転スクリプト"> +<floater name="preview lsl text" title="スクリプト: 回転スクリプト"> <floater.string name="Title"> スクリプト: [NAME] </floater.string> diff --git a/indra/newview/skins/default/xui/ja/floater_script_queue.xml b/indra/newview/skins/default/xui/ja/floater_script_queue.xml index 22a79e16d6..97e79fb483 100644 --- a/indra/newview/skins/default/xui/ja/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/ja/floater_script_queue.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="queue" title="進捗のリセット"> +<floater name="queue" title="進行のリセット"> <floater.string name="Starting"> [COUNT] アイテムの [START] を開始します。 </floater.string> diff --git a/indra/newview/skins/default/xui/ja/floater_script_search.xml b/indra/newview/skins/default/xui/ja/floater_script_search.xml index 90f4393bf7..bc4f48c995 100644 --- a/indra/newview/skins/default/xui/ja/floater_script_search.xml +++ b/indra/newview/skins/default/xui/ja/floater_script_search.xml @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="script search" title="スクリプト検索"> - <check_box label="大文字と小文字を区別しない" name="case_text" /> - <button label="検索" label_selected="検索" name="search_btn" /> - <button label="置換" label_selected="置換" name="replace_btn" /> - <button label="すべて置換" label_selected="すべて置換" name="replace_all_btn" /> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="script search" title="スクリプトの検索"> + <check_box label="大文字と小文字を区別しない" name="case_text"/> + <button label="検索" label_selected="検索" name="search_btn"/> + <button label="置換" label_selected="置換" name="replace_btn"/> + <button label="すべて置換" label_selected="すべて置換" name="replace_all_btn"/> <text name="txt"> 検索 </text> diff --git a/indra/newview/skins/default/xui/ja/floater_search.xml b/indra/newview/skins/default/xui/ja/floater_search.xml new file mode 100644 index 0000000000..289098a343 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_search.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_search" title="検索"> + <floater.string name="loading_text"> + ローディング... + </floater.string> + <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 09c98add47..d41be86873 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 96a9a76a72..1e884af5f2 100644 --- a/indra/newview/skins/default/xui/ja/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_sell_land.xml @@ -1,70 +1,65 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater height="496" min_height="496" name="sell land" title="土地を販売"> +<floater height="496" min_height="496" name="sell land" title="土地の販売"> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> <text name="info_parcel_label"> 区画: </text> <text name="info_parcel"> - 区画名 + PARCEL NAME </text> <text name="info_size_label"> サイズ: </text> <text name="info_size"> - [AREA]平方メートル + [AREA] 平方メートル </text> <text bottom_delta="-57" name="info_action"> - この区画を販売す -るには: + この区画を販売: </text> - <icon bottom_delta="-86" name="step_price"/> <text name="price_label"> - 価格を設定: + 1. 価格の設定: </text> <text name="price_text"> - 適正価格を選んでください。 + 適正価格を設定してください。 </text> <text name="price_ld"> L$ </text> + <line_editor name="price"> + 0 + </line_editor> <text left_delta="106" name="price_per_m" width="230"> - (1平方メートル当たりL$ [PER_METER]) + (1平方メートルあたり L$[PER_METER]) </text> <text name="sell_to_label"> - 土地の販売先: + 2. 特定の人に販売: </text> <text name="sell_to_text" right="-6"> - 誰にでも販売するか、特定の人にのみ販売するかを選択してください + 販売先の指定なしか、特定の人に販売するかを選択してください。 </text> <combo_box name="sell_to"> - <combo_box.item label="1つ選択--" name="--selectone--"/> - <combo_box.item label="誰でも" name="Anyone"/> + <combo_box.item label="- 1つ選択 -" name="--selectone--"/> + <combo_box.item label="指定なし・誰にでも販売" name="Anyone"/> <combo_box.item label="特定の人:" name="Specificuser:"/> </combo_box> - <button label="選択..." name="sell_to_select_agent"/> + <button label="選択" name="sell_to_select_agent"/> <text name="sell_objects_label"> - 土地と共にオブジェクトを販売しますか? + 3. オブジェクトも土地と一緒に販売しますか? </text> <text name="sell_objects_text"> - 区画上にある譲渡可能なオブジェクトは所有権が変更されます + 区画上にある、土地所有者の譲渡可能なオブジェクトは、所有権が変更されます。 </text> <radio_group bottom_delta="-76" height="72" name="sell_objects"> - <radio_item name="no"> - いいえ、オブジェクト所有権 -を保持します - </radio_item> - <radio_item bottom="-56" name="yes"> - はい、土地と一緒にオブジェ -クトを売ります - </radio_item> + <radio_item label="いいえ、オブジェクトの所有権を保持します" name="no"/> + <radio_item bottom="-56" label="はい、オブジェクトと土地を一緒に販売します" name="yes"/> </radio_group> <button label="オブジェクトを表示" name="show_objects" width="138"/> <text name="nag_message_label"> - 注意:返品や交換はできません + 注意: 返品・交換はできません。 </text> - <button bottom="-489" label="販売を決定" name="sell_btn"/> - <button label="取り消し" name="cancel_btn"/> + <button bottom="-489" label="土地を販売" name="sell_btn"/> + <button label="キャンセル" name="cancel_btn"/> </panel> </scroll_container> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_snapshot.xml b/indra/newview/skins/default/xui/ja/floater_snapshot.xml index fb9f7be7a9..e51e63999a 100644 --- a/indra/newview/skins/default/xui/ja/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/ja/floater_snapshot.xml @@ -1,26 +1,26 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Snapshot" title="プレビュー"> +<floater name="Snapshot" title="スナップショットのプレビュー"> <text name="type_label"> スナップショットの送り先 </text> - <radio_group label="スナップショット・タイプ" name="snapshot_type_radio"> - <radio_item name="postcard" label="Eメールで送信" /> - <radio_item name="texture" label="持ち物に保存(L$[AMOUNT])" /> - <radio_item name="local" label="ハードディスクに保存" /> + <radio_group label="スナップショットの種類" name="snapshot_type_radio"> + <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"/> <button label="保存(L$[AMOUNT])" name="upload_btn"/> <flyout_button label="保存" name="save_btn" tool_tip="画像をファイルに保存"> - <flyout_button.item name="save_item" label="保存"/> - <flyout_button.item name="saveas_item" label="名前を付けて保存"/> + <flyout_button.item label="保存" name="save_item"/> + <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> @@ -28,52 +28,52 @@ 形式 </text> <combo_box label="解像度" name="postcard_size_combo"> - <combo_box.item name="CurrentWindow" label="現在のウィンドウ" /> - <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="カスタム" /> + <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/> + <combo_box.item label="640 x 480" name="640x480"/> + <combo_box.item label="800 x 600" name="800x600"/> + <combo_box.item label="1024 x 768" name="1024x768"/> + <combo_box.item label="カスタム" name="Custom"/> </combo_box> <combo_box label="解像度" name="texture_size_combo"> - <combo_box.item name="CurrentWindow" label="現在のウィンドウ" /> - <combo_box.item name="Small(128x128)" label="小(128x128)" /> - <combo_box.item name="Medium(256x256)" label="中(256x256)" /> - <combo_box.item name="Large(512x512)" label="大(512x512)" /> - <combo_box.item name="Custom" label="カスタム" /> + <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/> + <combo_box.item label="小(128 x 128)" name="Small(128x128)"/> + <combo_box.item label="中(256 x 256)" name="Medium(256x256)"/> + <combo_box.item label="大(512 x5 12)" name="Large(512x512)"/> + <combo_box.item label="カスタム" name="Custom"/> </combo_box> <combo_box label="解像度" name="local_size_combo"> - <combo_box.item name="CurrentWindow" label="現在のウィンドウ" /> - <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="カスタム" /> + <combo_box.item label="現在のウィンドウ" name="CurrentWindow"/> + <combo_box.item label="320 x 240" name="320x240"/> + <combo_box.item label="640 x 480" name="640x480"/> + <combo_box.item label="800 x 600" name="800x600"/> + <combo_box.item label="1024 x 768" name="1024x768"/> + <combo_box.item label="1280 x 1024" name="1280x1024"/> + <combo_box.item label="1600 x 1200" name="1600x1200"/> + <combo_box.item label="カスタム" name="Custom"/> </combo_box> <combo_box label="形式" 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="幅" name="snapshot_width" label_width="25" width="90"/> - <spinner label="高さ" name="snapshot_height" label_width="30" left="115" width="90"/> + <spinner label="幅" label_width="25" name="snapshot_width" width="90"/> + <spinner label="高さ" label_width="30" left="115" name="snapshot_height" width="90"/> <check_box label="縦横比の固定" name="keep_aspect_check"/> <slider label="画質" name="image_quality_slider"/> <text name="layer_type_label"> - キャプチャ: + キャプチャ: </text> <combo_box label="画像レイヤー" name="layer_types"> - <combo_box.item name="Colors" label="色" /> - <combo_box.item name="Depth" label="深さ" /> - <combo_box.item name="ObjectMattes" label="オグジェクトのつや消し" /> + <combo_box.item label="色" name="Colors"/> + <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"> - 未知 + 不明 </string> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_sound_preview.xml b/indra/newview/skins/default/xui/ja/floater_sound_preview.xml index d5109fe539..7d83309c46 100644 --- a/indra/newview/skins/default/xui/ja/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/ja/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"> 名前: @@ -6,15 +6,15 @@ <text name="description_label"> 説明: </text> - <button label="取り消し" label_selected="取り消し" name="cancel_btn" /> + <button label="取り消し" label_selected="取り消し" name="cancel_btn"/> <button label="アップロード (L$[AMOUNT])" label_selected="アップロード (L$[AMOUNT])" name="ok_btn"/> <text name="text"> - ビットレート(kbps): + ビットレート(kbps): </text> <radio_group name="bitrate"> - <radio_item name="32" label="32" /> - <radio_item name="64" label="64" /> - <radio_item name="96" label="96" /> - <radio_item name="128" label="128" /> + <radio_item label="32" name="32"/> + <radio_item label="64" name="64"/> + <radio_item label="96" name="96"/> + <radio_item label="128" name="128"/> </radio_group> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_stats.xml b/indra/newview/skins/default/xui/ja/floater_stats.xml index 2a45d8556b..97927776c7 100644 --- a/indra/newview/skins/default/xui/ja/floater_stats.xml +++ b/indra/newview/skins/default/xui/ja/floater_stats.xml @@ -1,26 +1,26 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Statistics" title="統計バー"> +<floater name="Statistics" title="統計"> <scroll_container name="statistics_scroll"> <container_view name="statistics_view"> <stat_view label="ベーシック" name="basic"> <stat_bar label="FPS" name="fps"/> <stat_bar label="帯域幅" name="bandwidth"/> <stat_bar label="パケットロス" name="packet_loss"/> - <stat_bar label="シムの Ping" name="ping"/> + <stat_bar label="Pingシム" name="ping"/> </stat_view> - <stat_view label="詳細" name="advanced"> - <stat_view label="レンダリング" name="render"> - <stat_bar label="KTris の描画" name="ktrisframe"/> - <stat_bar label="KTris の描画" name="ktrissec"/> + <stat_view label="アドバンス" name="advanced"> + <stat_view label="描画" name="render"> + <stat_bar label="KTris 描画" name="ktrisframe"/> + <stat_bar label="KTris 描画" name="ktrissec"/> <stat_bar label="オブジェクト合計" name="objs"/> - <stat_bar label="新しいオブジェクト" name="newobjs"/> + <stat_bar label="新規オブジェクト" name="newobjs"/> </stat_view> <stat_view label="テクスチャ" name="texture"> <stat_bar label="カウント" name="numimagesstat"/> - <stat_bar label="未処理のカウント" name="numrawimagesstat"/> + <stat_bar label="Raw カウント" name="numrawimagesstat"/> <stat_bar label="GL メモリ" name="gltexmemstat"/> <stat_bar label="フォーマット済メモリ" name="formattedmemstat"/> - <stat_bar label="未処理のメモリ" name="rawmemstat"/> + <stat_bar label="Raw メモリ" name="rawmemstat"/> <stat_bar label="統合メモリ" name="glboundmemstat"/> </stat_view> <stat_view label="ネットワーク" name="network"> @@ -38,24 +38,24 @@ <stat_view label="シミュレーター" name="sim"> <stat_bar label="時間の遅れ" name="simtimedilation"/> <stat_bar label="シム FPS" name="simfps"/> - <stat_bar label="物理的作用 FPS" name="simphysicsfps"/> - <stat_view label="物理的作用の詳細" name="physicsdetail"> + <stat_bar label="物理作用 FPS" name="simphysicsfps"/> + <stat_view label="物理作用の詳細" name="physicsdetail"> <stat_bar label="ピン留めオブジェクト" name="physicspinnedtasks"/> <stat_bar label="低 LOD オブジェクト" name="physicslodtasks"/> <stat_bar label="メモリ配分" name="physicsmemoryallocated"/> - <stat_bar label="エージェントの更新/秒" name="simagentups"/> - <stat_bar label="メインエージェント" name="simmainagents"/> - <stat_bar label="チャイルドエージェント" name="simchildagents"/> - <stat_bar label="オブジェクト" name="simobjects"/> - <stat_bar label="アクティブなオブジェクト" name="simactiveobjects"/> - <stat_bar label="アクティブなスクリプト" name="simactivescripts"/> - <stat_bar label="スクリプトイベント" name="simscripteps"/> - <stat_bar label="パケットイン" name="siminpps"/> - <stat_bar label="パケットアウト" name="simoutpps"/> - <stat_bar label="保留中のダウンロード" name="simpendingdownloads"/> - <stat_bar label="保留中のアップロード" name="simpendinguploads"/> - <stat_bar label="未送信バイト合計" name="simtotalunackedbytes"/> </stat_view> + <stat_bar label="エージェントの更新/秒" name="simagentups"/> + <stat_bar label="メインエージェント" name="simmainagents"/> + <stat_bar label="チャイルドエージェント" name="simchildagents"/> + <stat_bar label="オブジェクト" name="simobjects"/> + <stat_bar label="アクティブなオブジェクト" name="simactiveobjects"/> + <stat_bar label="アクティブなスクリプト" name="simactivescripts"/> + <stat_bar label="スクリプトイベント" name="simscripteps"/> + <stat_bar label="パケットイン" name="siminpps"/> + <stat_bar label="パケットアウト" name="simoutpps"/> + <stat_bar label="保留中のダウンロード" name="simpendingdownloads"/> + <stat_bar label="保留中のアップロード" name="simpendinguploads"/> + <stat_bar label="未送信バイト合計" name="simtotalunackedbytes"/> <stat_view label="時間(ms)" name="simperf"> <stat_bar label="フレーム時間合計" name="simframemsec"/> <stat_bar label="総時間数" name="simnetmsec"/> diff --git a/indra/newview/skins/default/xui/ja/floater_sys_well.xml b/indra/newview/skins/default/xui/ja/floater_sys_well.xml new file mode 100644 index 0000000000..6536eb253c --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_sys_well.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="notification_chiclet" title="通知"> + <string name="title_im_well_window"> + 会話 + </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 cd590abe3c..7318083771 100644 --- a/indra/newview/skins/default/xui/ja/floater_telehub.xml +++ b/indra/newview/skins/default/xui/ja/floater_telehub.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="telehub" title="テレハブ"> <text name="status_text_connected"> 物体[OBJECT]に接続されたテレハブ @@ -10,19 +10,16 @@ 「切断」をクリックして削除します。 </text> <text name="help_text_not_connected"> - 物体を選択し「テレハブの接続」をクリックする + 物体を選択して「テレハブの接続」をクリックしてください。 </text> - <button label="テレハブの接続" name="connect_btn" /> - <button label="切断" name="disconnect_btn" /> + <button label="テレハブの接続" name="connect_btn"/> + <button label="切断" name="disconnect_btn"/> <text name="spawn_points_text"> 出現地点(物体ではなく位置) </text> - <button label="出現位置を追加" name="add_spawn_point_btn" /> - <button label="出現地点を削除" name="remove_spawn_point_btn" /> + <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 5102116069..399cffcce5 100644 --- a/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/ja/floater_texture_ctrl.xml @@ -1,23 +1,23 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater name="texture picker" title="選択:テクスチャー"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="texture picker" title="テクスチャの選択"> <string name="choose_picture"> クリックして写真を選択 </string> <text name="Multiple"> - 複数 + 複数のテクスチャ </text> <text name="unknown"> - 寸法: [DIMENSIONS] + サイズ: [DIMENSIONS] </text> - <button label="デフォルト" label_selected="デフォルト" name="Default" /> - <button label="なし" label_selected="なし" name="None" /> - <button label="ブランク" label_selected="ブランク" name="Blank" /> - <check_box label="フォルダを表示" name="show_folders_check" /> - <search_editor label="ここにタイプして検索" name="inventory search editor" /> - <check_box label="ただちに適用" name="apply_immediate_check" /> - <button label="" label_selected="" name="Pipette" /> - <button label="取り消し" label_selected="取り消し" name="Cancel" /> - <button label="選択" label_selected="選択" name="Select" /> + <button label="デフォルト" label_selected="デフォルト" name="Default"/> + <button label="なし" label_selected="なし" name="None"/> + <button label="ブランク" label_selected="ブランク" name="Blank"/> + <check_box label="フォルダを表示" name="show_folders_check"/> + <search_editor label="テクスチャをフィルター" name="inventory search editor"/> + <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"/> <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 5ce2c291be..e9de43189c 100644 --- a/indra/newview/skins/default/xui/ja/floater_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_tools.xml @@ -4,19 +4,19 @@ 色の付いたバンドをドラッグしてオブジェクトを回転 </floater.string> <floater.string name="status_scale"> - 選択した側をクリックし、ドラッグして引き伸ばす + 選択した側をクリックし、ドラッグで引き伸ばす </floater.string> <floater.string name="status_move"> - 移動:ドラッグ、コピー:Shiftを押しながらドラッグ + 移動:ドラッグ、コピー:Shift + ドラッグ </floater.string> <floater.string name="status_modifyland"> 土地をクリックし、ボタンを押したまま入力して修正変更 </floater.string> <floater.string name="status_camera"> - クリック・ドラッグで視界を移動 + クリック + ドラッグで視界移動 </floater.string> <floater.string name="status_grab"> - 移動:ドラッグ、持ち上げ:Ctrl、回転:Ctrl+Shift + ドラッグで移動、Ctrlで持ち上げ、Ctrl + Shiftで回転 </floater.string> <floater.string name="status_place"> インワールドでクリックして作成 @@ -31,10 +31,10 @@ ローカル </floater.string> <floater.string name="grid_world_text"> - 世界 + インワールド </floater.string> <floater.string name="grid_reference_text"> - 参照 + レファレンス </floater.string> <floater.string name="grid_attachment_text"> アタッチメント @@ -50,29 +50,32 @@ <radio_group name="focus_radio_group"> <radio_item label="ズーム" name="radio zoom"/> <radio_item label="軌跡(Ctrl)" name="radio orbit"/> - <radio_item label="パン(Ctrl+Shift)" name="radio pan"/> + <radio_item label="水平・垂直移動 (Ctrl + Shift)" name="radio pan"/> </radio_group> <radio_group name="move_radio_group"> <radio_item label="移動" name="radio move"/> <radio_item label="持ち上げる(Ctrl)" name="radio lift"/> - <radio_item label="スピン(Ctrl+Shift)" name="radio spin"/> + <radio_item label="回転 (Ctrl + Shift)" name="radio spin"/> </radio_group> <radio_group name="edit_radio_group"> <radio_item label="移動" name="radio position"/> <radio_item label="回転(Ctrl)" name="radio rotate"/> - <radio_item label="引伸ばす(Ctrl+Shift)" name="radio stretch"/> - <radio_item label="テクスチャーを選択" name="radio select face"/> + <radio_item label="引き延ばす (Ctrl+Shift)" name="radio stretch"/> + <radio_item label="面を選択" name="radio select face"/> </radio_group> <check_box label="リンク部分を編集" name="checkbox edit linked parts"/> + <text name="RenderingCost" tool_tip="このオブジェクトにかかるレンダリングコストを表示"> + þ: [COUNT] + </text> <check_box label="両側を引伸ばす" left="116" name="checkbox uniform"/> - <check_box initial_value="true" label="テクスチャーを引伸ばす" name="checkbox stretch textures"/> + <check_box initial_value="true" label="テクスチャを引伸ばす" name="checkbox stretch textures"/> <check_box initial_value="true" label="グリッドポイントにスナップ" left_delta="27" name="checkbox snap to grid"/> - <combo_box left_delta="60" name="combobox grid mode" width="76"> - <combo_box.item label="ワールドルーラ" name="World"/> - <combo_box.item label="ローカルルーラ" name="Local"/> - <combo_box.item label="レファレンスルーラ" name="Reference"/> + <combo_box left_delta="60" name="combobox grid mode" tool_tip="オブジェクトの配置に使うグリッドルーラを選択します" width="76"> + <combo_box.item label="インワールドグリッド" name="World"/> + <combo_box.item label="ローカルグリッド" name="Local"/> + <combo_box.item label="リファレンスグリッド" name="Reference"/> </combo_box> - <button label="オプション" label_selected="オプション" name="Options..." tool_tip="グリッドオプションを設定"/> + <button label="オプション" label_selected="オプション" name="Options..." tool_tip="グリッドオプションを表示します"/> <button label="" label_selected="" name="ToolCube" tool_tip="キューブ"/> <button label="" label_selected="" name="ToolPrism" tool_tip="プリズム"/> <button label="" label_selected="" name="ToolPyramid" tool_tip="ピラミッド"/> @@ -88,10 +91,10 @@ <button label="" label_selected="" name="ToolRing" tool_tip="リング"/> <button label="" label_selected="" name="ToolTree" tool_tip="樹木"/> <button label="" label_selected="" name="ToolGrass" tool_tip="草地"/> - <check_box label="選択したものを保持" name="checkbox sticky"/> + <check_box label="選択したツールを維持" name="checkbox sticky"/> <check_box label="選択したものをコピー" name="checkbox copy selection"/> - <check_box initial_value="true" label="中央にコピー" name="checkbox copy centers"/> - <check_box label="回転させてコピー" name="checkbox copy rotates"/> + <check_box initial_value="true" label="中央に位置" name="checkbox copy centers"/> + <check_box label="回転" name="checkbox copy rotates"/> <radio_group name="land_radio_group"> <radio_item label="土地を選択" name="radio select land"/> <radio_item label="ならす" name="radio flatten"/> @@ -110,7 +113,7 @@ <text name="Strength:"> 強度 </text> - <button label="適用" label_selected="適用" name="button apply to selection" tool_tip="選択した土地を修正"/> + <button label="適用" label_selected="適用" name="button apply to selection" tool_tip="選択した土地を修正します"/> <text name="obj_count"> オブジェクト: [COUNT] </text> @@ -126,16 +129,16 @@ 譲渡 </panel.string> <panel.string name="text modify info 1"> - このオブジェクトは修正できます。 + このオブジェクトを修正できます </panel.string> <panel.string name="text modify info 2"> - これらのオブジェクトは修正できます。 + これらのオブジェクトを修正できます </panel.string> <panel.string name="text modify info 3"> - このオブジェクトは修正できません。 + このオブジェクトを修正できません </panel.string> <panel.string name="text modify info 4"> - これらのオブジェクトは修正できません。 + これらのオブジェクトを修正できません </panel.string> <panel.string name="text modify warning"> オブジェクト全体を選択して権限の設定を行ってください。 @@ -144,7 +147,7 @@ 価格: L$ </panel.string> <panel.string name="Cost Total"> - 合計価格: L$ + 合計: L$ </panel.string> <panel.string name="Cost Per Unit"> 単価: L$ @@ -162,56 +165,58 @@ 説明: </text> <text name="Creator:"> - クリエーター + 制作者: </text> <text name="Creator Name"> - Thrax Linden + Esbee Linden </text> <text name="Owner:"> - オーナー: + 所有者: </text> <text name="Owner Name"> - Thrax Linden + Erica Linden </text> <text name="Group:"> グループ: </text> - <button label="設定..." label_selected="設定..." name="button set group" tool_tip="このオブジェクト権限を共有するグループを選択"/> + <button label="設定..." label_selected="設定..." 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="設定したグループのメンバー全員にこのオブジェクトの修正権限を与えます。 役割制限を有効にするには、譲渡する必要があります。"/> + <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> <combo_box name="clickaction"> - <combo_box.item label="触れる(デフォルト)" name="Touch/grab(default)"/> + <combo_box.item label="触る(デフォルト)" name="Touch/grab(default)"/> <combo_box.item label="オブジェクトに座る" name="Sitonobject"/> - <combo_box.item label="オブジェクトを購入" name="Buyobject"/> - <combo_box.item label="オブジェクトへの支払い" name="Payobject"/> + <combo_box.item label="オブジェクトを購入する" name="Buyobject"/> + <combo_box.item label="オブジェクトに支払う" name="Payobject"/> <combo_box.item label="開く" name="Open"/> + <combo_box.item label="ズームする" name="Zoom"/> </combo_box> - <check_box label="販売中:" name="checkbox for sale"/> + <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="Contents"/> <combo_box.item label="オリジナル" name="Original"/> </combo_box> <spinner label="価格: L$" name="Edit Cost"/> - <check_box label="検索に表示" name="search_check" tool_tip="検索結果で、このオブジェクトを人に見せる"/> + <check_box label="検索に表示" name="search_check" tool_tip="検索結果にこのオブジェクトを表示します"/> <panel name="perms_build"> <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:"> 次の所有者: </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="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/> + <check_box label="再販・プレゼント" name="checkbox next owner can transfer" tool_tip="次に所有する人は、このオブジェクトを他人にあげたり再販できます"/> <text name="B:"> B: </text> @@ -233,10 +238,10 @@ </panel> </panel> <panel label="形状" name="Object"> - <check_box label="ロック済み" name="checkbox locked" tool_tip="オブジェクトの移動と削除を禁止します。 この機能を使うと、構築中に意図しない編集を防ぐことができます。"/> - <check_box label="物理" name="Physical Checkbox Ctrl" tool_tip="オブジェクトに対する重力の作用と影響を有効にする"/> - <check_box label="臨時" name="Temporary Checkbox Ctrl" tool_tip="作成1分後にオブジェクトを削除"/> - <check_box label="ファントム" name="Phantom Checkbox Ctrl" tool_tip="オブジェクト同士の衝突またはオブジェクトとアバターの衝突を回避"/> + <check_box label="ロック" name="checkbox locked" tool_tip="オブジェクトの移動と削除を禁止します。 この機能を使うと、制作中の意図せぬ編集を防ぐことができます"/> + <check_box label="物理" name="Physical Checkbox Ctrl" tool_tip="オブジェクトに対する重力の作用と影響を有効にします"/> + <check_box label="臨時" name="Temporary Checkbox Ctrl" tool_tip="制作後 1 分でオブジェクトは削除されます"/> + <check_box label="ファントム" name="Phantom Checkbox Ctrl" tool_tip="オブジェクト同士の衝突またはオブジェクトとアバターの衝突を回避します"/> <text name="label position"> 位置(メートル) </text> @@ -275,7 +280,7 @@ <combo_box.item label="ゴム" name="Rubber"/> </combo_box> <text name="text cut"> - パスカット(始点/終点) + パスカット(始点と終点) </text> <spinner label="B" name="cut begin"/> <spinner label="E" name="cut end"/> @@ -295,7 +300,7 @@ <combo_box.item label="三角形" name="Triangle"/> </combo_box> <text name="text twist"> - ひねり(始点/終点) + ひねり(始点と終点) </text> <spinner label="B" name="Twist Begin"/> <spinner label="E" name="Twist End"/> @@ -313,13 +318,13 @@ <spinner label="X" name="Shear X"/> <spinner label="Y" name="Shear Y"/> <text name="advanced_cut"> - プロフィール・カット(始点/終点) + プロフィールカット(始点と終点) </text> <text name="advanced_dimple"> - くぼみ(始点/終点) + くぼみ(始点と終点) </text> <text name="advanced_slice"> - 切り取り(始点/終点) + 切り取り(始点と終点) </text> <spinner label="B" name="Path Limit Begin"/> <spinner label="E" name="Path Limit End"/> @@ -334,9 +339,9 @@ <text name="text revolutions"> 回転体 </text> - <texture_picker label="スカルプトテクスチャー" name="sculpt texture control" tool_tip="クリックして写真を選択してください。"/> - <check_box label="ミラー" name="sculpt mirror control" tool_tip="スカルプトされたプリムをX軸上で反転"/> - <check_box label="裏返し" name="sculpt invert control" tool_tip="スカルプトされたプリムのノーマルを逆転させ、裏返しに表示"/> + <texture_picker label="スカルプトテクスチャ" name="sculpt texture control" tool_tip="クリックして写真を選択してください"/> + <check_box label="ミラー" name="sculpt mirror control" tool_tip="スカルプトプリムを X 軸上で反転させます"/> + <check_box label="裏返し" name="sculpt invert control" tool_tip="スカルプトプリムを反転させて裏返します"/> <text name="label sculpt type"> 縫い目のタイプ </text> @@ -350,35 +355,39 @@ </panel> <panel label="特徴" name="Features"> <text name="select_single"> - プリムを1つだけ選択して編集してください + プリムを 1 つだけ選択して編集してください </text> <text name="edit_object"> オブジェクトの特徴を編集: </text> - <check_box label="フレキシブル・パス" name="Flexible1D Checkbox Ctrl" tool_tip="Z軸を中心とするオブジェクトの折れ曲がりを有効にする (クライアント側のみ)"/> + <check_box label="フレキシブルパス" name="Flexible1D Checkbox Ctrl" tool_tip="Z 軸を中心にオブジェクトの屈曲を有効にします(クライアント側のみ)"/> <spinner label="柔軟性" label_width="72" name="FlexNumSections" width="135"/> <spinner label="重力" label_width="72" name="FlexGravity" width="135"/> <spinner label="ドラッグ" label_width="72" name="FlexFriction" width="135"/> <spinner label="風" label_width="72" name="FlexWind" width="135"/> <spinner label="緊張" label_width="72" name="FlexTension" width="135"/> - <spinner label="X軸方向の力" label_width="72" name="FlexForceX" width="135"/> - <spinner label="Y軸方向の力" label_width="72" name="FlexForceY" width="135"/> - <spinner label="Z軸方向の力" label_width="72" name="FlexForceZ" width="135"/> - <check_box label="光" name="Light Checkbox Ctrl" tool_tip="オブジェクトが発光"/> - <color_swatch label="" left_delta="74" name="colorswatch" tool_tip="カラー・ピッカーをクリックして開く"/> + <spinner label="X 軸方向の力" label_width="72" name="FlexForceX" width="135"/> + <spinner label="Y 軸方向の力" label_width="72" name="FlexForceY" width="135"/> + <spinner label="Z 軸方向の力" label_width="72" name="FlexForceZ" width="135"/> + <check_box label="光" name="Light Checkbox Ctrl" tool_tip="オブジェクトが発光します"/> + <color_swatch label="" left_delta="74" name="colorswatch" tool_tip="クリックしてカラーピッカーを開きます"/> + <texture_picker label="" name="light texture control" tool_tip="クリックで投影画を選択します(遅延レンダリング有効時のみ)"/> <spinner label="輝度" label_width="72" name="Light Intensity" width="135"/> + <spinner label="FOV" name="Light FOV"/> <spinner label="半径" label_width="72" name="Light Radius" width="135"/> + <spinner label="焦点" name="Light Focus"/> <spinner label="弱まる" label_width="72" name="Light Falloff" width="135"/> + <spinner label="環境" name="Light Ambiance"/> </panel> <panel label="材質" name="Texture"> <panel.string name="string repeats per meter"> - メートルごとに繰返す + メートルごとに繰り返す </panel.string> <panel.string name="string repeats per face"> 面ごとに繰り返す </panel.string> - <texture_picker label="テクスチャー" name="texture control" tool_tip="写真をクリックして選択"/> - <color_swatch label="色" name="colorswatch" tool_tip="カラー・ピッカーをクリックして開く"/> + <texture_picker label="テクスチャ" name="texture control" tool_tip="写真をクリックして選択します"/> + <color_swatch label="色" name="colorswatch" tool_tip="クリックしてカラーピッカーを開きます"/> <text name="color trans"> 透過度 % </text> @@ -426,21 +435,32 @@ <combo_box.item label="織目" name="weave"/> </combo_box> <text name="tex scale"> - 面ごとに繰り返す + 反復 / 面 </text> <spinner label="水平(U)" name="TexScaleU"/> <check_box label="反転" name="checkbox flip s"/> <spinner label="垂直(V)" name="TexScaleV"/> <check_box label="反転" name="checkbox flip t"/> + <spinner label="回転˚" name="TexRot"/> + <spinner label="反復 / メーター" name="rptctrl"/> <button label="適用" label_selected="適用" name="button apply"/> <text name="tex offset"> - Texture Offset + テクスチャのズレ </text> <spinner label="水平(U)" name="TexOffsetU"/> <spinner label="垂直(V)" name="TexOffsetV"/> + <panel name="Add_Media"> + <text name="media_tex"> + メディア + </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" tool_tip="メディアテクスチャを一列に揃えます(最初に読み込む必要があります)"/> + </panel> </panel> <panel label="中身" name="Contents"> - <button label="新しいスクリプト" label_selected="新しいスクリプト" name="button new script" width="120"/> + <button label="新しいスクリプト" label_selected="新規スクリプト" name="button new script" width="120"/> <button label="権限" left_delta="130" name="button permissions" width="80"/> </panel> </tab_container> @@ -449,29 +469,22 @@ 区画情報 </text> <text name="label_area_price" width="200"> - 価格:[AREA]平方メートルあたりL$[PRICE] + 価格: [AREA] 平方メートル L$ [PRICE] </text> <text name="label_area" width="200"> - 面積:[AREA]平方メートル + 面積: [AREA] 平方メートル </text> - <button label="土地情報..." label_selected="土地情報..." name="button about land"/> - <check_box label="オーナーを表示" name="checkbox show owners" tool_tip="所有権別に区画を色分けします: - -緑 = あなたの土地 -アクア = あなたのグループ所有地 -赤 = 他人が所有する土地 -黄色 = 売り出し中 -紫 = オークション -グレー = パブリック"/> + <button label="土地情報" label_selected="土地情報" name="button about land"/> + <check_box label="所有者を表示" name="checkbox show owners" tool_tip="所有者の種類別に区画を色づけます: 緑 = あなたの土地 アクア = あなたのグループ所有地 赤 = 他人が所有する土地 黄色 = 売り出し中 紫 = オークション グレー = パブリック"/> <text name="label_parcel_modify"> 区画の編集 </text> <button label="再分割" label_selected="再分割" name="button subdivide land"/> - <button label="統合する" label_selected="統合する" name="button join land"/> + <button label="統合" label_selected="統合" name="button join land"/> <text name="label_parcel_trans"> 土地取引 </text> - <button label="土地を購入" label_selected="土地を購入" name="button buy land"/> - <button label="土地を放棄" label_selected="土地を放棄" name="button abandon land"/> + <button label="土地の購入" label_selected="土地の購入" name="button buy land"/> + <button label="土地の放棄" label_selected="土地の放棄" name="button abandon land"/> </panel> </floater> 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 e59f72bf30..bfc93e5624 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_tos.xml b/indra/newview/skins/default/xui/ja/floater_tos.xml index c0d1af1d6a..85ac102885 100644 --- a/indra/newview/skins/default/xui/ja/floater_tos.xml +++ b/indra/newview/skins/default/xui/ja/floater_tos.xml @@ -1,18 +1,17 @@ -<?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="続行" label_selected="続行" name="Continue" /> - <button label="取り消し" label_selected="取り消し" name="Cancel" /> + <button label="続行" label_selected="続行" name="Continue"/> + <button label="取り消し" label_selected="取り消し" name="Cancel"/> <radio_group name="tos_agreement"> - <radio_item name="radio_disagree" label="利用規約に同意しません" /> - <radio_item name="radio_agree" label="利用規約に同意します" /> + <radio_item label="利用規約に同意しません" name="radio_disagree"/> + <radio_item label="利用規約に同意します" name="radio_agree"/> </radio_group> <text name="tos_title"> 利用規約 </text> - <check_box label="利用規約に同意します" name="agree_chk" /> + <check_box label="利用規約に同意します" name="agree_chk"/> <text name="tos_heading"> - 以下の利用規約を注意深くお読みください。 SecondLifeへログインするには、 -規約に同意しなければなりません。 + 次の利用規約をよくお読みください。 [SECOND_LIFE] へのログインを続けるには、規約に同意する必要があります。 </text> <text_editor name="tos_text"> TOS_TEXT diff --git a/indra/newview/skins/default/xui/ja/floater_url_entry.xml b/indra/newview/skins/default/xui/ja/floater_url_entry.xml index 9d3ca20c7c..8e09e4748a 100644 --- a/indra/newview/skins/default/xui/ja/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/ja/floater_url_entry.xml @@ -3,11 +3,11 @@ <text name="media_label"> メディア URL: </text> - <combo_box left="100" name="media_entry" width="360" /> - <button label="OK" name="ok_btn" width="78"/> + <combo_box name="media_entry"/> + <button label="OK" name="ok_btn" width="38"/> <button label="キャンセル" name="cancel_btn" width="80"/> - <button label="クリア" name="clear_btn" /> - <text name="loading_label"> + <button label="クリア" name="clear_btn" left_pad="76"/> + <text name="loading_label" left="140"> ロード中... </text> </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 new file mode 100644 index 0000000000..5a0694e5c5 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_voice_controls" title="ボイスコントロール"> + <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_water.xml b/indra/newview/skins/default/xui/ja/floater_water.xml index 054b003197..52cd91a08a 100644 --- a/indra/newview/skins/default/xui/ja/floater_water.xml +++ b/indra/newview/skins/default/xui/ja/floater_water.xml @@ -1,66 +1,52 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Water Floater" title="水の高度な編集"> + <floater.string name="WLDefaultWaterNames"> + Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez + </floater.string> <text name="KeyFramePresetsText"> 水の事前設定: </text> - <button label="新規" label_selected="新規" name="WaterNewPreset" /> - <button label="保存" label_selected="保存" name="WaterSavePreset" /> - <button label="削除" label_selected="削除" name="WaterDeletePreset" /> + <button label="新規" label_selected="新規" name="WaterNewPreset"/> + <button label="保存" label_selected="保存" name="WaterSavePreset"/> + <button label="削除" label_selected="削除" name="WaterDeletePreset"/> <tab_container name="Water Tabs"> <panel label="設定" name="Settings"> <text name="BHText"> 水中のフォグ効果の色 </text> - <button label="?" name="WaterFogColorHelp" /> - <color_swatch name="WaterFogColor" - tool_tip="カラー・ピッカーをクリックして開く" /> + <color_swatch name="WaterFogColor" tool_tip="クリックしてカラーピッカーを開きます"/> <text name="WaterFogDensText"> 水中の透明度指数 </text> - <button label="?" name="WaterFogDensityHelp" /> <text name="WaterUnderWaterFogModText"> 水中のフォグ効果加減 </text> - <button label="?" name="WaterUnderWaterFogModHelp" /> <text name="BDensText"> さざ波の反射スケール </text> - <button label="?" name="WaterNormalScaleHelp" /> - <text name="BHText2"> - 1 - </text> - <text name="BHText3"> - 2 - </text> - <text name="BHText4"> - 3 - </text> + <slider label="1" name="WaterNormalScaleX"/> + <slider label="2" name="WaterNormalScaleY"/> + <slider label="3" name="WaterNormalScaleZ"/> <text name="HDText"> フレネル・スケール </text> - <button label="?" name="WaterFresnelScaleHelp" /> <text name="FresnelOffsetText"> フレネル・オフセット </text> - <button label="?" name="WaterFresnelOffsetHelp" /> <text name="DensMultText"> 水面の屈折スケール </text> - <button label="?" name="WaterScaleAboveHelp" /> <text name="WaterScaleBelowText"> 水中の屈折スケール </text> - <button label="?" name="WaterScaleBelowHelp" /> <text name="MaxAltText"> 不透明度の増幅 </text> - <button label="?" name="WaterBlurMultiplierHelp" /> </panel> <panel label="画像" name="Waves"> <text name="BHText"> 大波の方向 </text> - <button label="?" name="WaterWave1Help" /> <text name="WaterWave1DirXText"> X </text> @@ -70,7 +56,6 @@ <text name="BHText2"> 小波の方向 </text> - <button label="?" name="WaterWave2Help" /> <text name="WaterWave2DirXText"> X </text> @@ -80,10 +65,6 @@ <text name="BHText3"> ノーマル・マップ </text> - <button label="?" name="WaterNormalMapHelp" /> </panel> </tab_container> - <string name="WLDefaultWaterNames"> - Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez - </string> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/ja/floater_wearable_save_as.xml index fc9ddf5096..de8b590a80 100644 --- a/indra/newview/skins/default/xui/ja/floater_wearable_save_as.xml +++ b/indra/newview/skins/default/xui/ja/floater_wearable_save_as.xml @@ -1,9 +1,9 @@ -<?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="保存" label_selected="保存" name="Save" /> - <button label="取り消し" label_selected="取り消し" name="Cancel" /> + <button label="保存" label_selected="保存" name="Save"/> + <button label="取り消し" label_selected="取り消し" name="Cancel"/> <text name="Save item as:"> - アイテムを別名で保存: + アイテムを別名で持ち物に保存: </text> <line_editor name="name ed"> New [DESC] diff --git a/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml new file mode 100644 index 0000000000..34aba9d485 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_whitelist_entry.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="whitelist_entry" title="ホワイトリストの入力"> + <text name="media_label"> + URL か URL パターンを入力して、許可するドメインをリストに追加します。 + </text> + <line_editor name="whitelist_entry" tool_tip="URL か URL パターンをホワイトリストに入力します"/> + <button label="OK" name="ok_btn"/> + <button label="キャンセル" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_windlight_options.xml b/indra/newview/skins/default/xui/ja/floater_windlight_options.xml index fa70de054f..feb94ef73e 100644 --- a/indra/newview/skins/default/xui/ja/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/ja/floater_windlight_options.xml @@ -1,19 +1,18 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="WindLight floater" title="空の高度な編集"> <text name="KeyFramePresetsText"> 空の事前設定: </text> - <button label="新規" label_selected="新規" name="WLNewPreset" /> - <button label="保存" label_selected="保存" name="WLSavePreset" /> - <button label="削除" label_selected="削除" name="WLDeletePreset" /> - <button label="デイサイクル編集" - label_selected="デイサイクル編集" name="WLDayCycleMenuButton" /> + <button label="新規" label_selected="新規" name="WLNewPreset"/> + <button label="保存" label_selected="保存" name="WLSavePreset"/> + <button label="削除" label_selected="削除" name="WLDeletePreset"/> + <button label="デイサイクル編集" label_selected="デイサイクル編集" name="WLDayCycleMenuButton"/> <tab_container name="WindLight Tabs"> <panel label="大気" name="Atmosphere"> <text name="BHText"> 空の配色 </text> - <button label="?" name="WLBlueHorizonHelp" /> + <button label="?" name="WLBlueHorizonHelp"/> <text name="BHText2"> R </text> @@ -29,11 +28,11 @@ <text name="BDensText"> 空と遠景の露光 </text> - <button label="?" name="WLHazeHorizonHelp" /> + <button label="?" name="WLHazeHorizonHelp"/> <text name="BDensText2"> 空の配色と濃度 </text> - <button label="?" name="WLBlueDensityHelp" /> + <button label="?" name="WLBlueDensityHelp"/> <text name="BHText6"> R </text> @@ -49,25 +48,25 @@ <text name="HDText"> 大気の不透明度 </text> - <button label="?" name="WLHazeDensityHelp" /> + <button label="?" name="WLHazeDensityHelp"/> <text name="DensMultText"> 大気の不透明度の増幅 </text> - <button label="?" name="WLDensityMultHelp" /> + <button label="?" name="WLDensityMultHelp"/> <text name="WLDistanceMultText"> 視界の増幅 </text> - <button label="?" name="WLDistanceMultHelp" /> + <button label="?" name="WLDistanceMultHelp"/> <text name="MaxAltText"> 最大高度 </text> - <button label="?" name="WLMaxAltitudeHelp" /> + <button label="?" name="WLMaxAltitudeHelp"/> </panel> <panel label="ライティング" name="Lighting"> <text name="SLCText"> 太陽/月の色 </text> - <button label="?" name="WLSunlightColorHelp" /> + <button label="?" name="WLSunlightColorHelp"/> <text name="BHText"> R </text> @@ -83,11 +82,11 @@ <text name="TODText"> 太陽/月の位置 </text> - <button label="?" name="WLTimeOfDayHelp" /> + <button label="?" name="WLTimeOfDayHelp"/> <text name="WLAmbientText"> アンビエント </text> - <button label="?" name="WLAmbientHelp" /> + <button label="?" name="WLAmbientHelp"/> <text name="BHText5"> R </text> @@ -103,27 +102,27 @@ <text name="WLEastAngleText"> 東の角度 </text> - <button label="?" name="WLEastAngleHelp" /> + <button label="?" name="WLEastAngleHelp"/> <text name="SunGlowText"> 太陽の輝き </text> - <button label="?" name="WLSunGlowHelp" /> - <slider label="フォーカス " name="WLGlowB" /> - <slider label="サイズ " name="WLGlowR" /> + <button label="?" name="WLSunGlowHelp"/> + <slider label="フォーカス " name="WLGlowB"/> + <slider label="サイズ " name="WLGlowR"/> <text name="SceneGammaText"> 風景ガンマ </text> - <button label="?" name="WLSceneGammaHelp" /> + <button label="?" name="WLSceneGammaHelp"/> <text name="WLStarText"> 星の輝き </text> - <button label="?" name="WLStarBrightnessHelp" /> + <button label="?" name="WLStarBrightnessHelp"/> </panel> <panel label="雲" name="Clouds"> <text name="WLCloudColorText"> 雲の色 </text> - <button label="?" name="WLCloudColorHelp" /> + <button label="?" name="WLCloudColorHelp"/> <text name="BHText"> R </text> @@ -139,7 +138,7 @@ <text name="WLCloudColorText2"> 雲の XY/密度 </text> - <button label="?" name="WLCloudDensityHelp" /> + <button label="?" name="WLCloudDensityHelp"/> <text name="BHText5"> X </text> @@ -152,15 +151,15 @@ <text name="WLCloudCoverageText"> 雲の量 </text> - <button label="?" name="WLCloudCoverageHelp" /> + <button label="?" name="WLCloudCoverageHelp"/> <text name="WLCloudScaleText"> 雲のスケール </text> - <button label="?" name="WLCloudScaleHelp" /> + <button label="?" name="WLCloudScaleHelp"/> <text name="WLCloudDetailText"> 雲の詳細 (XY/密度) </text> - <button label="?" name="WLCloudDetailHelp" /> + <button label="?" name="WLCloudDetailHelp"/> <text name="BHText8"> X </text> @@ -173,15 +172,15 @@ <text name="WLCloudScrollXText"> 雲の移動速度 (X 方向) </text> - <button label="?" name="WLCloudScrollXHelp" /> - <check_box label="ロック" name="WLCloudLockX" /> + <button label="?" name="WLCloudScrollXHelp"/> + <check_box label="ロック" name="WLCloudLockX"/> <text name="WLCloudScrollYText"> 雲の移動速度 (Y 方向) </text> - <button label="?" name="WLCloudScrollYHelp" /> - <check_box label="ロック" name="WLCloudLockY" /> - <check_box label="従来の雲を描画" name="DrawClassicClouds" /> - <button label="?" name="WLClassicCloudsHelp" /> + <button label="?" name="WLCloudScrollYHelp"/> + <check_box label="ロック" name="WLCloudLockY"/> + <check_box label="従来の雲を描画" name="DrawClassicClouds"/> + <button label="?" name="WLClassicCloudsHelp"/> </panel> </tab_container> <string name="WLDefaultSkyNames"> 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 0000000000..152a5f4806 --- /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 6a34e49d84..42fedfc075 100644 --- a/indra/newview/skins/default/xui/ja/floater_world_map.xml +++ b/indra/newview/skins/default/xui/ja/floater_world_map.xml @@ -1,58 +1,82 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="worldmap" title="世界地図"> - <tab_container name="maptab"> - <panel label="オブジェクト" name="objects_mapview"/> - <panel label="地形" name="terrain_mapview"/> - </tab_container> - <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="telehubchk"/> - <check_box label="売り地" name="land_for_sale_chk"/> - <text name="events_label"> - イベント: - </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="オンラインのフレンド" name="friend combo" tool_tip="地図に表示されたフレンド"> - <combo_box.item name="item1" label="オンラインのフレンド" /> - </combo_box> - <combo_box label="ランドマーク" name="landmark combo" tool_tip="地図に表示されたランドマーク"> - <combo_box.item name="item1" label="ランドマーク" /> - </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"> - <column label="" name="icon"/> - <column 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としてコピーし、ウェブで使用"/> - <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"> + 所有者の販売 + </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"> + General + </text> + <check_box initial_value="true" label="Mature" name="event_mature_chk"/> + <text name="mature_label"> + Moderate + </text> + <check_box label="Adult" name="event_adult_chk"/> + <text name="adult_label"> + Adult + </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="地域検索"/> + <button name="Clear" 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 e5b2a44521..aeac0a8328 100644 --- a/indra/newview/skins/default/xui/ja/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/ja/inspect_avatar.xml @@ -8,9 +8,19 @@ [AGE] </string> <string name="Details"> - [ACCTTYPE]、[PAYMENTINFO] -プロフィール: [SL_PROFILE] + [SL_PROFILE] </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> <slider name="volume_slider" tool_tip="ボイス音量" value="0.5"/> - <button label="フレンドを追加" name="add_friend_btn"/> + <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 new file mode 100644 index 0000000000..b461b93f65 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/inspect_group.xml @@ -0,0 +1,35 @@ +<?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"> + プライベートグループ + </string> + <string name="FreeToJoin"> + 参加費無料 + </string> + <string name="CostToJoin"> + 参加費 L$[AMOUNT] + </string> + <string name="YouAreMember"> + あなたはメンバーです + </string> + <text name="group_name"> + Grumpity's Grumpy Group of Moose + </text> + <text name="group_subtitle"> + 123 メートル + </text> + <text name="group_details"> + A group of folks charged with creating a room with a moose. +Fear the moose! Fear it! And the mongoose too! + </text> + <text name="group_cost"> + L$123 to join + </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/inspect_object.xml b/indra/newview/skins/default/xui/ja/inspect_object.xml new file mode 100644 index 0000000000..842030c39a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/inspect_object.xml @@ -0,0 +1,48 @@ +<?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"> + 制作者: [CREATOR] + </string> + <string name="CreatorAndOwner"> + 制作者: [CREATOR] +所有者: [OWNER] + </string> + <string name="Price"> + L$[AMOUNT] + </string> + <string name="PriceFree"> + 無料です! + </string> + <string name="Touch"> + 触る + </string> + <string name="Sit"> + 座る + </string> + <text name="object_name" value="Test Object Name That Is Really Long"/> + <text name="object_creator"> + by secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about +owner secondlife:///app/agent/0e346d8b-4433-4d66-a6b0-fd37083abc4c/about + </text> + <text name="price_text"> + L$300,000 + </text> + <text name="object_description"> + This is a really long description for an object being as how it is at least 80 characters in length and maybe more like 120 at this point. Who knows, really? + </text> + <text name="object_media_url"> + http://www.superdupertest.com + </text> + <button label="買う" name="buy_btn"/> + <button label="支払う" name="pay_btn"/> + <button label="コピーを取る" name="take_free_copy_btn"/> + <button label="触る" name="touch_btn"/> + <button label="座る" name="sit_btn"/> + <button label="開く" name="open_btn"/> + <icon name="secure_browsing" tool_tip="安全な閲覧"/> + <button label="詳細" name="more_info_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/inspect_remote_object.xml b/indra/newview/skins/default/xui/ja/inspect_remote_object.xml new file mode 100644 index 0000000000..483d3fec52 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/inspect_remote_object.xml @@ -0,0 +1,25 @@ +<?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_name"> + Test Object Name That Is Really Long + </text> + <text name="object_owner_label"> + 所有者: + </text> + <text name="object_owner"> + Longavatarname Johnsonlongstonnammer + </text> + <text name="object_slurl_label"> + 位置: + </text> + <text name="object_slurl"> + http://slurl.com/Ahern/50/50/50 + </text> + <button label="地図" name="map_btn"/> + <button label="ブロック" name="block_btn"/> + <button label="閉じる" name="close_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 0000000000..f163c2cf4f --- /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 0000000000..209edd80ba --- /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 ef63f3f4e0..b04f602134 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 0000000000..74d877cdda --- /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 0000000000..a638bed36f --- /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 new file mode 100644 index 0000000000..ea7ba1b741 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="ジェスチャーボタン" name="ShowGestureButton"/> + <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_gesture_gear.xml b/indra/newview/skins/default/xui/ja/menu_gesture_gear.xml new file mode 100644 index 0000000000..abf490a247 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="お気に入りからの追加・削除" name="activate"/> + <menu_item_call label="コピー" name="copy_gesture"/> + <menu_item_call label="貼り付け" name="paste"/> + <menu_item_call label="UUID をコピー" name="copy_uuid"/> + <menu_item_call label="現在のアウトフィットに保存" name="save_to_outfit"/> + <menu_item_call label="編集" name="edit_gesture"/> + <menu_item_call label="調べる" name="inspect"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml b/indra/newview/skins/default/xui/ja/menu_hide_navbar.xml new file mode 100644 index 0000000000..09e70b0d1f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="ナビゲーションバーを表示" name="ShowNavbarNavigationPanel"/> + <menu_item_check label="お気に入りバーを表示" name="ShowNavbarFavoritesPanel"/> +</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 0000000000..3397004bd7 --- /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 0000000000..8cd6fa4a27 --- /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_group.xml b/indra/newview/skins/default/xui/ja/menu_imchiclet_group.xml new file mode 100644 index 0000000000..5bcb96f083 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="グループ情報" name="Show Profile"/> + <menu_item_call label="セッションを表示" name="Chat"/> + <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 new file mode 100644 index 0000000000..5453f998fa --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="プロフィールの表示" name="Show Profile"/> + <menu_item_call label="フレンド登録" name="Add Friend"/> + <menu_item_call label="セッションを表示" name="Send IM"/> + <menu_item_call label="セッション終了" name="End Session"/> +</menu> 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 new file mode 100644 index 0000000000..93f75f3ce1 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_inspect_avatar_gear.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <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="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"/> + <menu_item_call label="デバッグ" name="debug"/> + <menu_item_call label="地図で探す" name="find_on_map"/> + <menu_item_call label="ズームイン" name="zoom_in"/> + <menu_item_call label="支払う" name="pay"/> + <menu_item_call label="共有" name="share"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml new file mode 100644 index 0000000000..506614316e --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_inspect_object_gear.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="触る" name="touch"/> + <menu_item_call label="座る" name="sit"/> + <menu_item_call label="支払う" name="pay"/> + <menu_item_call label="買う" name="buy"/> + <menu_item_call label="取る" name="take"/> + <menu_item_call label="コピーを取る" name="take_copy"/> + <menu_item_call label="開く" name="open"/> + <menu_item_call label="編集" name="edit"/> + <menu_item_call label="装着" name="wear"/> + <menu_item_call label="報告" name="report"/> + <menu_item_call label="ブロック" name="block"/> + <menu_item_call label="ズームイン" name="zoom_in"/> + <menu_item_call label="削除" name="remove"/> + <menu_item_call label="詳細" name="more_info"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml new file mode 100644 index 0000000000..d02701b400 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_inspect_self_gear.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="立ち上がる" name="stand_up"/> + <menu_item_call label="容姿" name="my_appearance"/> + <menu_item_call label="プロフィール" name="my_profile"/> + <menu_item_call label="フレンド" name="my_friends"/> + <menu_item_call label="グループ" name="my_groups"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory.xml b/indra/newview/skins/default/xui/ja/menu_inventory.xml index 3162477c5c..1607b2647e 100644 --- a/indra/newview/skins/default/xui/ja/menu_inventory.xml +++ b/indra/newview/skins/default/xui/ja/menu_inventory.xml @@ -6,13 +6,13 @@ <menu_item_call label="プロパティ" name="Task Properties"/> <menu_item_call label="名前の変更" name="Task Rename"/> <menu_item_call label="削除" name="Task Remove"/> - <menu_item_call label="ゴミ箱を空にする" name="Empty Trash"/> - <menu_item_call label="遺失物フォルダを空にする" name="Empty Lost And Found"/> + <menu_item_call label="ごみ箱を空にする" name="Empty Trash"/> + <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 label="新しい衣類" name="New Clothes"> <menu_item_call label="新しいシャツ" name="New Shirt"/> <menu_item_call label="新しいズボン" name="New Pants"/> <menu_item_call label="新しい靴" name="New Shoes"/> @@ -22,8 +22,10 @@ <menu_item_call label="新しい手袋" name="New Gloves"/> <menu_item_call label="新しい下着" name="New Undershirt"/> <menu_item_call label="新しいパンツ" name="New Underpants"/> + <menu_item_call label="新しいアルファマスク" name="New Alpha Mask"/> + <menu_item_call label="新しいタトゥ" name="New Tattoo"/> </menu> - <menu label="新規身体部位" name="New Body Parts"> + <menu label="新しい身体部位" name="New Body Parts"> <menu_item_call label="新しいシェイプ(体型)" name="New Shape"/> <menu_item_call label="新しいスキン" name="New Skin"/> <menu_item_call label="新しい髪" name="New Hair"/> @@ -44,31 +46,37 @@ <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="Purge Item"/> - <menu_item_call label="アイテムを復元" name="Restore Item"/> + <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"/> <menu_item_call label="開く" name="Open"/> <menu_item_call label="プロパティ" name="Properties"/> - <menu_item_call label="名前の変更" name="Rename"/> - <menu_item_call label="UUIDをコピー" name="Copy Asset UUID"/> + <menu_item_call label="名前を変更する" name="Rename"/> + <menu_item_call label="UUID をコピーする" name="Copy Asset UUID"/> <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="Take Off Items"/> - <menu_item_call label="服装に追加" name="Add To Outfit"/> - <menu_item_call label="服装を置換" name="Replace Outfit"/> - <menu_item_call label="会議チャット開始" name="Conference Chat Folder"/> - <menu_item_call label="再生" name="Sound Play"/> - <menu_item_call label="世界で再生" name="Animation Play"/> - <menu_item_call label="ローカルに再生" name="Animation Audition"/> - <menu_item_call label="インスタント・メッセージを送信" name="Send Instant Message"/> - <menu_item_call label="テレポートを贈る..." name="Offer Teleport..."/> - <menu_item_call label="会議チャット開始" name="Conference Chat"/> + <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"/> + <menu_item_call label="インワールドで再生する" name="Animation Play"/> + <menu_item_call label="ローカルで再生する" name="Animation Audition"/> + <menu_item_call label="インスタントメッセージを送信する" name="Send Instant Message"/> + <menu_item_call label="テレポートを送る..." name="Offer Teleport..."/> + <menu_item_call label="コンファレンスチャットを開始する" name="Conference Chat"/> <menu_item_call label="アクティブ" name="Activate"/> <menu_item_call label="非アクティブ" name="Deactivate"/> + <menu_item_call label="別名で保存する" name="Save As"/> <menu_item_call label="自分から取り外す" name="Detach From Yourself"/> <menu_item_call label="装着" name="Object Wear"/> <menu label="装着先" name="Attach To"/> - <menu label="HUD装着先" name="Attach To HUD"/> + <menu label="HUD 装着先" name="Attach To HUD"/> <menu_item_call label="編集" name="Wearable Edit"/> <menu_item_call label="装着" name="Wearable Wear"/> <menu_item_call label="取り外す" name="Take Off"/> diff --git a/indra/newview/skins/default/xui/ja/menu_inventory_add.xml b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml new file mode 100644 index 0000000000..14ad7900e1 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_inventory_add.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_inventory_add"> + <menu label="アップロード" name="upload"> + <menu_item_call label="画像 (L$ [COST] )..." name="Upload Image"/> + <menu_item_call label="サウンド (L$[COST] )..." name="Upload Sound"/> + <menu_item_call label="アニメーション (L$ [COST] )..." name="Upload Animation"/> + <menu_item_call label="一括 (ファイルにつき L$[COST] )..." name="Bulk Upload"/> + </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 Gesture"/> + <menu label="新しい衣類" name="New Clothes"> + <menu_item_call label="新しいシャツ" name="New Shirt"/> + <menu_item_call label="新しいパンツ" name="New Pants"/> + <menu_item_call label="新しい靴" name="New Shoes"/> + <menu_item_call label="新しい靴下" name="New Socks"/> + <menu_item_call label="新しいジャケット" name="New Jacket"/> + <menu_item_call label="新しいスカート" name="New Skirt"/> + <menu_item_call label="新しい手袋" name="New Gloves"/> + <menu_item_call label="新しい下着(上)" name="New Undershirt"/> + <menu_item_call label="新しい下着(下)" name="New Underpants"/> + <menu_item_call label="新しいアルファ" name="New Alpha"/> + <menu_item_call label="新しいタトゥー" name="New Tattoo"/> + </menu> + <menu label="新しい身体部位" name="New Body Parts"> + <menu_item_call label="新しいシェイプ(体型)" name="New Shape"/> + <menu_item_call label="新しいスキン" name="New Skin"/> + <menu_item_call label="新しい髪" name="New Hair"/> + <menu_item_call label="新しい目" name="New Eyes"/> + </menu> +</menu> 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 new file mode 100644 index 0000000000..e3114327a0 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="新しい持ち物ウィンドウ" name="new_window"/> + <menu_item_call label="名前で並べ替え" name="sort_by_name"/> + <menu_item_call label="新しい順に並べ替え" name="sort_by_recent"/> + <menu_item_call label="フィルターを表示" name="show_filters"/> + <menu_item_call label="フィルターをリセット" name="reset_filters"/> + <menu_item_call label="すべてのフォルダを閉じる" name="close_folders"/> + <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 0000000000..89c122f14f --- /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_landmark.xml b/indra/newview/skins/default/xui/ja/menu_landmark.xml index de35bf2401..c134422955 100644 --- a/indra/newview/skins/default/xui/ja/menu_landmark.xml +++ b/indra/newview/skins/default/xui/ja/menu_landmark.xml @@ -3,4 +3,5 @@ <menu_item_call label="SLurl をコピー" name="copy"/> <menu_item_call label="削除" name="delete"/> <menu_item_call label="ピックを作成" name="pick"/> + <menu_item_call label="お気に入りバーに追加" name="add_to_favbar"/> </toggleable_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml index afb1219095..d6f13f0e59 100644 --- a/indra/newview/skins/default/xui/ja/menu_login.xml +++ b/indra/newview/skins/default/xui/ja/menu_login.xml @@ -1,13 +1,32 @@ -<?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="ファイル" name="File"> - <menu_item_call label="終了" name="Quit" /> - </menu> - <menu label="編集" name="Edit"> - <menu_item_call label="環境設定..." name="Preferences..." /> + <menu label="ミー" name="File"> + <menu_item_call label="環境設定" name="Preferences..."/> + <menu_item_call label="[APP_NAME] を終了" name="Quit"/> </menu> <menu label="ヘルプ" name="Help"> - <menu_item_call label="[SECOND_LIFE]ヘルプ" name="Second Life Help" /> - <menu_item_call label="[APP_NAME]について..." name="About Second Life..." /> + <menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/> + <menu_item_call label="[APP_NAME] について" name="About Second Life"/> + </menu> + <menu label="デバッグ" name="Debug"> + <menu label="編集" name="Edit"> + <menu_item_call label="元に戻す" name="Undo"/> + <menu_item_call label="やり直し" name="Redo"/> + <menu_item_call label="切り取り" name="Cut"/> + <menu_item_call label="コピー" name="Copy"/> + <menu_item_call label="貼り付け" name="Paste"/> + <menu_item_call label="削除" name="Delete"/> + <menu_item_call label="複製" name="Duplicate"/> + <menu_item_call label="すべて選択" name="Select All"/> + <menu_item_call label="選択解除" name="Deselect"/> + </menu> + <menu_item_call label="デバッグ設定を表示" name="Debug Settings"/> + <menu_item_call label="UI/色の設定" name="UI/Color Settings"/> + <menu_item_call label="XUI プレビューツール" name="UI Preview Tool"/> + <menu label="UI テスト" name="UI Tests"/> + <menu_item_call label="ウィンドウのサイズを設定..." name="Set Window Size..."/> + <menu_item_call label="利用規約を表示" name="TOS"/> + <menu_item_call label="クリティカルメッセージを表示" name="Critical"/> + <menu_item_call label="Web ブラウザのテスト" name="Web Browser Test"/> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/ja/menu_mini_map.xml b/indra/newview/skins/default/xui/ja/menu_mini_map.xml index e1bddd872d..ec49c3a98d 100644 --- a/indra/newview/skins/default/xui/ja/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/ja/menu_mini_map.xml @@ -3,6 +3,7 @@ <menu_item_call label="ズーム(近)" name="Zoom Close"/> <menu_item_call label="ズーム(中)" name="Zoom Medium"/> <menu_item_call label="ズーム(遠)" name="Zoom Far"/> + <menu_item_check label="地図を回転" name="Rotate Map"/> <menu_item_call label="追跡をやめる" name="Stop Tracking"/> <menu_item_call label="世界地図" name="World Map"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_navbar.xml b/indra/newview/skins/default/xui/ja/menu_navbar.xml index 4c9874c645..9ae2e58198 100644 --- a/indra/newview/skins/default/xui/ja/menu_navbar.xml +++ b/indra/newview/skins/default/xui/ja/menu_navbar.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Navbar Menu"> <menu_item_check label="座標を表示" name="Show Coordinates"/> + <menu_item_check label="区画のプロパティを表示" name="Show Parcel Properties"/> <menu_item_call label="ランドマーク" name="Landmark"/> <menu_item_call label="切り取り" name="Cut"/> <menu_item_call label="コピー" name="Copy"/> diff --git a/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml b/indra/newview/skins/default/xui/ja/menu_nearby_chat.xml new file mode 100644 index 0000000000..c2e4a27686 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="近くの人を表示する..." name="nearby_people"/> + <menu_item_check label="ブロックされた文字を表示" name="muted_text"/> + <menu_item_check label="バディアイコンを表示" name="show_buddy_icons"/> + <menu_item_check label="名前を表示" name="show_names"/> + <menu_item_check label="アイコンと名前を表示" name="show_icons_and_names"/> + <menu_item_call label="文字の大きさ" name="font_size"/> +</menu> 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 0000000000..913bae8958 --- /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 0000000000..1ff2dfec7b --- /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="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="Pie Object Take"/> + <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_object_icon.xml b/indra/newview/skins/default/xui/ja/menu_object_icon.xml new file mode 100644 index 0000000000..8c4f328661 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="オブジェクトのプロフィール..." name="Object Profile"/> + <menu_item_call label="ブロック..." name="Block"/> +</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 new file mode 100644 index 0000000000..398a78bb61 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_participant_list.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Participant List Context Menu"> + <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_friends_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_friends_view_sort.xml new file mode 100644 index 0000000000..5eaad31898 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="名前で並べ替え" name="sort_name"/> + <menu_item_check label="オンライン状態で並べ替え" name="sort_status"/> + <menu_item_check label="人のアイコン表示" name="view_icons"/> + <menu_item_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/> +</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 0000000000..842d79dc4b --- /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_groups_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_groups_view_sort.xml new file mode 100644 index 0000000000..bfc7d15017 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="グループアイコンを表示" name="Display Group Icons"/> + <menu_item_call label="選択したグループから脱退" name="Leave Selected Group"/> +</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 new file mode 100644 index 0000000000..4788803789 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Avatar Context Menu"> + <menu_item_call label="プロフィールの表示" name="View Profile"/> + <menu_item_call label="フレンド登録" name="Add Friend"/> + <menu_item_call label="フレンドを削除" name="Remove 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_call label="テレポートを送る" name="teleport"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml new file mode 100644 index 0000000000..238bfc4af9 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_multiselect.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<context_menu name="Multi-Selected People Context Menu"> + <menu_item_call label="フレンド登録" name="Add Friends"/> + <menu_item_call label="フレンドを削除" name="Remove 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"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml new file mode 100644 index 0000000000..a31480158a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="最近の発言者で並べ替え" name="sort_by_recent_speakers"/> + <menu_item_check label="名前で並べ替え" name="sort_name"/> + <menu_item_check label="距離で並べ替え" name="sort_distance"/> + <menu_item_check label="人のアイコン表示" name="view_icons"/> + <menu_item_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_recent_view_sort.xml new file mode 100644 index 0000000000..b4f177a068 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="新しい順に並べ替え" name="sort_most"/> + <menu_item_check label="名前で並べ替え" name="sort_name"/> + <menu_item_check label="人のアイコン表示" name="view_icons"/> + <menu_item_call label="ブロックされた住人とオブジェクトを表示" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_picks_plus.xml b/indra/newview/skins/default/xui/ja/menu_picks_plus.xml new file mode 100644 index 0000000000..84bf90fea0 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="新しいピック" name="create_pick"/> + <menu_item_call label="新しいクラシファイド広告" name="create_classified"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_place_add_button.xml b/indra/newview/skins/default/xui/ja/menu_place_add_button.xml new file mode 100644 index 0000000000..d5ce88b055 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="フォルダを追加" name="add_folder"/> + <menu_item_call label="ランドマークを追加" name="add_landmark"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_folder.xml new file mode 100644 index 0000000000..6f91a3ebf9 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="ランドマークを追加" name="add_landmark"/> + <menu_item_call label="フォルダを追加" name="add_folder"/> + <menu_item_call label="切り取り" name="cut"/> + <menu_item_call label="コピー" name="copy_folder"/> + <menu_item_call label="貼り付け" name="paste"/> + <menu_item_call label="名前の変更" name="rename"/> + <menu_item_call label="削除" name="delete"/> + <menu_item_call label="拡大" name="expand"/> + <menu_item_call label="戻す" name="collapse"/> + <menu_item_call label="フォルダをすべて開く" name="expand_all"/> + <menu_item_call label="フォルダをすべて閉じる" name="collapse_all"/> + <menu_item_check label="日付で並べ替え" name="sort_by_date"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/ja/menu_places_gear_landmark.xml new file mode 100644 index 0000000000..5a135e5f56 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="テレポート" name="teleport"/> + <menu_item_call label="もっと詳しく" name="more_info"/> + <menu_item_call label="地図に表示" name="show_on_map"/> + <menu_item_call label="ランドマークを追加" name="add_landmark"/> + <menu_item_call label="フォルダを追加" name="add_folder"/> + <menu_item_call label="切り取り" name="cut"/> + <menu_item_call label="ランドマークをコピー" name="copy_landmark"/> + <menu_item_call label="SLurl をコピー" name="copy_slurl"/> + <menu_item_call label="貼り付け" name="paste"/> + <menu_item_call label="名前の変更" name="rename"/> + <menu_item_call label="削除" name="delete"/> + <menu_item_call label="フォルダをすべて開く" name="expand_all"/> + <menu_item_call label="フォルダをすべて閉じる" name="collapse_all"/> + <menu_item_check label="日付で並べ替え" name="sort_by_date"/> + <menu_item_call label="ピックを作成" name="create_pick"/> +</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 new file mode 100644 index 0000000000..d7107dc153 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/menu_profile_overflow.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<toggleable_menu name="profile_overflow_menu"> + <menu_item_call label="支払う" name="pay"/> + <menu_item_call label="共有" name="share"/> + <menu_item_call label="ブロック" name="block"/> + <menu_item_call label="ブロック解除" name="unblock"/> + <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_slurl.xml b/indra/newview/skins/default/xui/ja/menu_slurl.xml index 2e06c53494..61ba3085d9 100644 --- a/indra/newview/skins/default/xui/ja/menu_slurl.xml +++ b/indra/newview/skins/default/xui/ja/menu_slurl.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Popup"> - <menu_item_call label="URLについて" name="about_url"/> - <menu_item_call label="URLへテレポートする" name="teleport_to_url"/> + <menu_item_call label="URL について" name="about_url"/> + <menu_item_call label="URL にテレポートする" name="teleport_to_url"/> <menu_item_call label="地図" name="show_on_map"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_gear.xml new file mode 100644 index 0000000000..901eab9166 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="フォルダをすべて開く" name="Expand all folders"/> + <menu_item_call label="フォルダをすべて閉じる" name="Collapse all folders"/> + <menu_item_call label="テレポートの履歴をクリア" name="Clear Teleport History"/> +</menu> diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_item.xml new file mode 100644 index 0000000000..66bc32214f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="テレポート" name="Teleport"/> + <menu_item_call label="もっと詳しく" name="More Information"/> + <menu_item_call label="クリップボードにコピー" name="CopyToClipboard"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/ja/menu_teleport_history_tab.xml new file mode 100644 index 0000000000..4dd44d2ec8 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="開く" name="TabOpen"/> + <menu_item_call label="閉じる" name="TabClose"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_text_editor.xml b/indra/newview/skins/default/xui/ja/menu_text_editor.xml new file mode 100644 index 0000000000..fcb1038a6a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="切り取り" name="Cut"/> + <menu_item_call label="コピー" name="Copy"/> + <menu_item_call label="貼り付け" name="Paste"/> + <menu_item_call label="削除" name="Delete"/> + <menu_item_call label="すべて選択" name="Select All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_agent.xml b/indra/newview/skins/default/xui/ja/menu_url_agent.xml index 9c5eb64cb8..92d118a5ae 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_agent.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_agent.xml @@ -2,5 +2,5 @@ <context_menu name="Url Popup"> <menu_item_call label="住人のプロフィールを表示" name="show_agent"/> <menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/> - <menu_item_call label="SLurlをクリップボードにコピー" name="url_copy"/> + <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_group.xml b/indra/newview/skins/default/xui/ja/menu_url_group.xml index 2c453922d0..1dd3d79438 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_group.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_group.xml @@ -2,5 +2,5 @@ <context_menu name="Url Popup"> <menu_item_call label="グループ情報を表示" name="show_group"/> <menu_item_call label="グループをクリップボードにコピー" name="url_copy_label"/> - <menu_item_call label="SLurlをクリップボードにコピー" name="url_copy"/> + <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_http.xml b/indra/newview/skins/default/xui/ja/menu_url_http.xml index c2f4f24db6..c3da8a8686 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_http.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_http.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="Web ページを開く" name="url_open"/> - <menu_item_call label="インターネットブラウザで開く" name="url_open_internal"/> + <menu_item_call label="内蔵ブラウザで開く" name="url_open_internal"/> <menu_item_call label="外部ブラウザで開く" name="url_open_external"/> <menu_item_call label="URLをクリップボードにコピー" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_inventory.xml b/indra/newview/skins/default/xui/ja/menu_url_inventory.xml new file mode 100644 index 0000000000..7af2f9e2cd --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="持ち物アイテムを表示" name="show_item"/> + <menu_item_call label="名前をクリップボードにコピー" name="url_copy_label"/> + <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_map.xml b/indra/newview/skins/default/xui/ja/menu_url_map.xml new file mode 100644 index 0000000000..8d41e1a571 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="地図に表示" name="show_on_map"/> + <menu_item_call label="現地にテレポート" name="teleport_to_location"/> + <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml index b478d9d6c0..d6a048dcfc 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_objectim.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_objectim.xml @@ -1,7 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="オブジェクトの情報を表示" name="show_object"/> + <menu_item_call label="地図に表示" name="show_on_map"/> <menu_item_call label="オブジェクトの場所にテレポート" name="teleport_to_object"/> <menu_item_call label="オブジェクト名をクリップボードにコピー" name="url_copy_label"/> - <menu_item_call label="SLurlをクリップボードにコピー" name="url_copy"/> + <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_parcel.xml b/indra/newview/skins/default/xui/ja/menu_url_parcel.xml index 38e31de3f7..8d264059d3 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_parcel.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_parcel.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="区画情報を表示" name="show_parcel"/> + <menu_item_call label="地図に表示" name="show_on_map"/> <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_slapp.xml b/indra/newview/skins/default/xui/ja/menu_url_slapp.xml new file mode 100644 index 0000000000..a516c5a075 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="このコマンドを実行" name="run_slapp"/> + <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_slurl.xml b/indra/newview/skins/default/xui/ja/menu_url_slurl.xml index d280ecf689..2c857ec915 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_slurl.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_slurl.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="場所の情報を表示" name="show_place"/> + <menu_item_call label="地図に表示" name="show_on_map"/> <menu_item_call label="現地にテレポート" name="teleport_to_location"/> <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_url_teleport.xml b/indra/newview/skins/default/xui/ja/menu_url_teleport.xml index 355f6eb018..c3507a9a33 100644 --- a/indra/newview/skins/default/xui/ja/menu_url_teleport.xml +++ b/indra/newview/skins/default/xui/ja/menu_url_teleport.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Url Popup"> <menu_item_call label="この場所にテレポート" name="teleport"/> + <menu_item_call label="地図に表示" name="show_on_map"/> <menu_item_call label="SLurl をクリップボードにコピー" name="url_copy"/> </context_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index 77aeeefe02..a97e7f2f5d 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -1,225 +1,416 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Main Menu"> - <menu name="Me"> + <menu label="ミー" name="Me"> <menu_item_call label="環境設定" 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=ja" /> + <menu_item_call label="マイアカウント" name="Manage My Account"> + <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=ja"/> </menu_item_call> + <menu_item_call label="L$ の購入" name="Buy and Sell L$"/> + <menu_item_call label="マイ プロフィール" name="Profile"/> + <menu_item_call label="マイ 容姿" name="Appearance"/> + <menu_item_check label="マイ 持ち物" name="Inventory"/> + <menu_item_check label="持ち物" name="ShowSidetrayInventory"/> + <menu_item_check label="マイ ジェスチャー" name="Gestures"/> + <menu label="マイ ログイン状態" name="Status"> + <menu_item_call label="一時退席中" name="Set Away"/> + <menu_item_call label="取り込み中" name="Set Busy"/> + </menu> + <menu_item_call label="管理者権限のリクエスト" name="Request Admin Options"/> + <menu_item_call label="管理者ステータス解除" name="Leave Admin Options"/> + <menu_item_call label="[APP_NAME] を終了" name="Quit"/> </menu> - <menu label="ファイル" name="File"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu label="アップロード" name="upload"> - <menu_item_call label="画像 (L$[COST])..." name="Upload Image"/> - <menu_item_call label="サウンド (L$[COST])..." name="Upload Sound"/> - <menu_item_call label="アニメーション (L$[COST])..." name="Upload Animation"/> - <menu_item_call label="一括 (ファイルにつきL$[COST])..." name="Bulk Upload"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="デフォルト権限の設定..." name="perm prefs"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="ウィンドウを閉じる" name="Close Window"/> - <menu_item_call label="全てのウィンドウを閉じる" name="Close All Windows"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="テクスチャーを別名で保存..." name="Save Texture As..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="スナップショットを撮る" name="Take Snapshot"/> - <menu_item_call label="スナップショットをディスクに保存" name="Snapshot to Disk"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="終了" name="Quit"/> - </menu> - <menu label="編集" name="Edit"> - <menu_item_call label="元に戻す" name="Undo"/> - <menu_item_call label="やり直し" name="Redo"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="カット" name="Cut"/> - <menu_item_call label="コピー" name="Copy"/> - <menu_item_call label="貼り付け" name="Paste"/> - <menu_item_call label="削除" name="Delete"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="検索..." name="Search..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="すべてを選択" name="Select All"/> - <menu_item_call label="選択解除" name="Deselect"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="複製" name="Duplicate"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu label="オブジェクトを装着" name="Attach Object"/> - <menu label="オブジェクトを取り外す" name="Detach Object"/> - <menu label="服を脱ぐ" name="Take Off Clothing"> - <menu_item_call label="シャツ" name="Shirt"/> - <menu_item_call label="ズボン" name="Pants"/> - <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="Menu Undershirt"/> - <menu_item_call label="(下着の)パンツ" name="Menu Underpants"/> - <menu_item_call label="スカート" name="Skirt"/> - <menu_item_call label="すべての服" name="All Clothes"/> - </menu> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="ジェスチャー…" name="Gestures..."/> - <menu_item_call label="プロフィール..." name="Profile..."/> - <menu_item_call label="容姿..." name="Appearance..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_check label="フレンド..." name="Friends..."/> - <menu_item_call label="グループ..." name="Groups..."/> - <menu_item_separator label="-----------" name="separator8"/> - <menu_item_call label="環境設定..." name="Preferences..."/> - </menu> - <menu label="表示" name="View"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_call label="一人称視点(マウスルック)" name="Mouselook"/> - <menu_item_check label="制作ツール" name="Build"/> - <menu_item_check label="ジョイスティック操作" name="Joystick Flycam"/> - <menu_item_call label="表示をリセット" name="Reset View"/> - <menu_item_call label="最後のチャットを閲覧" name="Look at Last Chatter"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="ツールバー" name="Toolbar"/> - <menu_item_check label="ローカル・チャット" name="Chat History"/> - <menu_item_check label="コミュニケーション" name="Instant Message"/> - <menu_item_check label="持ち物" name="Inventory"/> - <menu_item_check label="ボイスチャット・ユーザー一覧" name="Active Speakers"/> - <menu_item_check label="無視リスト" name="Mute List"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="カメラ・コントロール" name="Camera Controls"/> - <menu_item_check label="移動コントロール" name="Movement Controls"/> - <menu_item_check label="世界地図" name="World Map"/> - <menu_item_check label="ミニマップ" name="Mini-Map"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="地域の統計情報" name="Statistics Bar"/> - <menu_item_check label="土地の境界線" name="Property Lines"/> - <menu_item_check label="立入禁止ライン" name="Banlines"/> - <menu_item_check label="土地オーナー" name="Land Owners"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu label="ヒントのポップアップ" name="Hover Tips"> - <menu_item_check label="ヒントを表示" name="Show Tips"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="土地のヒント" name="Land Tips"/> - <menu_item_check label="すべてのオブジェクトに関するヒント" name="Tips On All Objects"/> - </menu> - <menu_item_check label="透明オブジェクトを強調表示" name="Highlight Transparent"/> - <menu_item_check label="ビーコン(標識)" name="beacons"/> - <menu_item_check label="パーティクルを非表示" name="Hide Particles"/> - <menu_item_check label="HUD装着物を表示" name="Show HUD Attachments"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="カメラ・ズームイン" name="Zoom In"/> - <menu_item_call label="カメラ・デフォルト" name="Zoom Default"/> - <menu_item_call label="カメラ・ズームアウト" name="Zoom Out"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="[全画面表示]" name="Toggle Fullscreen"/> - <menu_item_call label="UIサイズを標準設定に戻す" name="Set UI Size to Default"/> + <menu label="コミュニケーション" name="Communicate"> + <menu_item_call label="フレンド" name="My Friends"/> + <menu_item_call label="所属グループ" name="My Groups"/> + <menu_item_check label="近くのチャット" name="Nearby Chat"/> + <menu_item_call label="近くにいる人" name="Active Speakers"/> </menu> <menu label="世界" name="World"> - <menu_item_call label="チャット" name="Chat"/> - <menu_item_check label="常に走る" name="Always Run"/> - <menu_item_check label="飛行" name="Fly"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="この場所のランドマークを作成" name="Create Landmark Here"/> - <menu_item_call label="ホームをここに設定" name="Set Home to Here"/> - <menu_item_separator label="-----------" name="separator2"/> + <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_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_item_call label="ホームにテレポート" name="Teleport Home"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="離席中に設定" name="Set Away"/> - <menu_item_call label="取り込み中に設定" name="Set Busy"/> - <menu_item_call label="自分のアバターのアニメーションを停止" name="Stop Animating My Avatar"/> - <menu_item_call label="キー制御を解除" name="Release Keys"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="アカウントの履歴..." name="Account History..."> - <on_click name="AccountHistory_url" userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php?lang=ja"/> - </menu_item_call> - <menu_item_call label="マイアカウントの管理..." name="Manage My Account..."> - <on_click name="ManageMyAccount_url" userdata="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=ja"/> - </menu_item_call> - <menu_item_call label="L$(リンデン・ドル)を購入" name="Buy and Sell L$..."/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="自分の土地..." name="My Land..."/> - <menu_item_call label="土地情報..." name="About Land..."/> - <menu_item_call label="土地を購入..." name="Buy Land..."/> - <menu_item_call label="地域/不動産..." name="Region/Estate..."/> - <menu_item_separator label="-----------" name="separator6"/> - <menu label="環境の設定" name="Environment Settings"> + <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_separator label="-----------" name="separator"/> - <menu_item_call label="環境編集" name="Environment Editor"/> + <menu_item_call label="エステートタイム" name="Revert to Region Default"/> + <menu_item_call label="自然環境エディター" name="Environment Editor"/> </menu> </menu> - <menu label="ツール" name="Tools"> - <menu label="ツールを選ぶ" name="Select Tool"> - <menu_item_call label="フォーカス" name="Focus"/> - <menu_item_call label="移動" name="Move"/> - <menu_item_call label="編集" name="Edit"/> - <menu_item_call label="作成" name="Create"/> - <menu_item_call label="土地" name="Land"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="自分のオブジェクトのみ選択" name="Select Only My Objects"/> - <menu_item_check label="移動可能なオブジェクトのみ選択" name="Select Only Movable Objects"/> - <menu_item_check label="環境で選択" name="Select By Surrounding"/> - <menu_item_check label="隠れた位置の選択も表示" name="Show Hidden Selection"/> - <menu_item_check label="選択したものの光源範囲を表示" name="Show Light Radius for Selection"/> - <menu_item_check label="選択ビームを表示" name="Show Selection Beam"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="グリッドにスナップ" name="Snap to Grid"/> - <menu_item_call label="オブジェクトのXY移動をグリッドに合わせる" name="Snap Object XY to Grid"/> - <menu_item_call label="グリッドをオブジェクトの位置基準で再設定" name="Use Selection for Grid"/> - <menu_item_call label="グリッドのオプション..." name="Grid Options..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="リンクされた一部を編集" name="Edit Linked Parts"/> + <menu label="制作" name="BuildTools"> + <menu_item_check label="制作" name="Show Build Tools"/> + <menu label="制作ツールを選択する" name="Select Tool"> + <menu_item_call label="フォーカスツール" name="Focus"/> + <menu_item_call label="移動ツール" name="Move"/> + <menu_item_call label="編集ツール" name="Edit"/> + <menu_item_call label="作成ツール" name="Create"/> + <menu_item_call label="土地ツール" name="Land"/> + </menu> + <menu label="編集" name="Edit"> + <menu_item_call label="元に戻す" name="Undo"/> + <menu_item_call label="やり直し" name="Redo"/> + <menu_item_call label="切り取り" name="Cut"/> + <menu_item_call label="コピー" name="Copy"/> + <menu_item_call label="貼り付け" name="Paste"/> + <menu_item_call label="削除" name="Delete"/> + <menu_item_call label="複製" name="Duplicate"/> + <menu_item_call label="すべて選択" name="Select All"/> + <menu_item_call label="選択解除" name="Deselect"/> + </menu> <menu_item_call label="リンク" name="Link"/> - <menu_item_call label="リンク解除" name="Unlink"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="選択対象に視点移動" name="Focus on Selection"/> - <menu_item_call label="選択範囲にズームイン" name="Zoom to Selection"/> - <menu_item_call label="オブジェクトを購入" name="Menu Object Take"> - <on_enable userdata="購入,取る" name="EnableBuyOrTake"/> - </menu_item_call> - <menu_item_call label="コピーを取る" name="Take Copy"/> - <menu_item_call label="オブジェクトをオブジェクト・コンテンツに戻して保存" name="Save Object Back to Object Contents"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="スクリプト警告/エラー・ウィンドウを表示" name="Show Script Warning/Error Window"/> - <menu label="選択したオブジェクトの中のスクリプトを再コンパイル" name="Recompile Scripts in Selection"> - <menu_item_call label="Mono" name="Mono"/> - <menu_item_call label="LSL" name="LSL"/> - </menu> - <menu_item_call label="選択したオブジェクトの中のスクリプトをリセット" name="Reset Scripts in Selection"/> - <menu_item_call label="選択したオブジェクトの中のスクリプトを起動する" name="Set Scripts to Running in Selection"/> - <menu_item_call label="選択したオブジェクトの中のスクリプトを停止する" name="Set Scripts to Not Running in Selection"/> + <menu_item_call label="リンクを外す" name="Unlink"/> + <menu_item_check label="リンクした部分を編集" name="Edit Linked Parts"/> + <menu_item_call label="選択したものに焦点を合わせる" name="Focus on Selection"/> + <menu_item_call label="選択したものをズームする" name="Zoom to Selection"/> + <menu label="オブジェクト" name="Object"> + <menu_item_call label="取る" name="Menu Object Take"/> + <menu_item_call label="コピーを取る" name="Take Copy"/> + <menu_item_call label="「持ち物」に保存" name="Save Object Back to My Inventory"/> + <menu_item_call label="オブジェクトの中身に保存" name="Save Object Back to Object Contents"/> + </menu> + <menu label="スクリプト" name="Scripts"> + <menu_item_call label="スクリプトのリコンパイル(Mono)" name="Mono"/> + <menu_item_call label="スクリプトのリコンパイル(LSL)" name="LSL"/> + <menu_item_call label="スクリプトのリセット" name="Reset Scripts"/> + <menu_item_call label="スクリプトを実行中にする" name="Set Scripts to Running"/> + <menu_item_call label="スクリプトを実行停止にする" name="Set Scripts to Not Running"/> + </menu> + <menu label="オプション" name="Options"> + <menu_item_call label="デフォルトのアップロード権限を設定する" name="perm prefs"/> + <menu_item_check label="権限の詳細を表示する" name="DebugPermissions"/> + <menu_item_check label="私のオブジェクトだけを選択する" name="Select Only My Objects"/> + <menu_item_check label="動的オブジェクトだけを選択する" name="Select Only Movable Objects"/> + <menu_item_check label="範囲内を選択する" name="Select By Surrounding"/> + <menu_item_check label="隠れた位置の選択も表示する" name="Show Hidden Selection"/> + <menu_item_check label="選択した光の半径範囲を表示する" name="Show Light Radius for Selection"/> + <menu_item_check label="選択ビームを表示する" name="Show Selection Beam"/> + <menu_item_check label="グリッドポイントにスナップする" name="Snap to Grid"/> + <menu_item_call label="オブジェクトの XY 軸をグリッドにスナップする" name="Snap Object XY to Grid"/> + <menu_item_call label="選択をグリッドに使用する" name="Use Selection for Grid"/> + <menu_item_call label="グリッドオプション" name="Grid Options"/> + </menu> + <menu label="リンクした部分を選択する" name="Select Linked Parts"> + <menu_item_call label="次の部分を選択する" name="Select Next Part"/> + <menu_item_call label="前回の部分を選択する" name="Select Previous Part"/> + <menu_item_call label="次の部分を含める" name="Include Next Part"/> + <menu_item_call label="前回の部分を含める" name="Include Previous Part"/> + </menu> </menu> <menu label="ヘルプ" name="Help"> <menu_item_call label="[SECOND_LIFE] ヘルプ" name="Second Life Help"/> - <menu_item_call label="チュートリアル" name="Tutorial"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Linden公式ブログ..." name="Official Linden Blog..."/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="スクリプト・ポータル..." name="Scripting Portal..."> - <on_click name="ScriptingPortal_url" userdata="WebLaunchLSLWiki,http://wiki.secondlife.com/wiki/LSL_Portal/ja" /> - </menu_item_call> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="嫌がらせの報告..." name="Report Abuse..."/> - <menu_item_call label="衝突の記録..." name="Bumps, Pushes &amp; Hits..."/> - <menu_item_call label="ラグ メーター" name="Lag Meter"/> - <menu_item_separator label="-----------" name="separator7"/> - <menu label="バグの報告" name="Bug Reporting"> - <menu_item_call label="パブリック問題トラッカー..." name="Public Issue Tracker..."/> - <menu_item_call label="パブリック問題トラッカー ヘルプ..." name="Publc Issue Tracker Help..."> - <on_click name="PublicIssueTrackerHelp_url" userdata="WebLaunchPublicIssueHelp,http://wiki.secondlife.com/wiki/Issue_tracker/ja" /> - </menu_item_call> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_call label="バグの報告 101..." name="Bug Reporing 101..."> - <on_click name="BugReporting101_url" userdata="WebLaunchBugReport101,http://wiki.secondlife.com/wiki/Bug_Reporting_101"/> - </menu_item_call> - <menu_item_call label="セキュリティ問題..." name="Security Issues..."> - <on_click name="SecurityIssues_url" userdata="WebLaunchSecurityIssues,http://wiki.secondlife.com/wiki/Security_issues/ja"/> - </menu_item_call> - <menu_item_call label="品質保証関連Wiki..." name="QA Wiki..."/> - <menu_item_separator label="-----------" name="separator9"/> - <menu_item_call label="バグの報告..." name="Report Bug..."/> - </menu> - <menu_item_call label="[APP_NAME]について" name="About Second Life..."/> + <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_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 label="パフォーマンスツール" name="Performance Tools"> + <menu_item_call label="ラグ計測器" name="Lag Meter"/> + <menu_item_check label="統計バー" name="Statistics Bar"/> + <menu_item_check label="アバターのレンダリングコストを表示する" name="Avatar Rendering Cost"/> + </menu> + <menu label="ハイライトと目に見えるもの" name="Highlighting and Visibility"> + <menu_item_check label="チージービーコン" name="Cheesy Beacon"/> + <menu_item_check label="パーティクルを非表示にする" name="Hide Particles"/> + <menu_item_check label="選択したものを非表示にする" name="Hide Selected"/> + <menu_item_check label="透明部分をハイライトする" name="Highlight Transparent"/> + <menu_item_check label="HUD を表示する" name="Show HUD Attachments"/> + <menu_item_check label="一人称視点のときに十字線を表示する" name="ShowCrosshairs"/> + <menu_item_check label="土地のツールチップを表示する" name="Land Tips"/> + </menu> + <menu label="レンダリング(種類)" name="Rendering Types"> + <menu_item_check label="シンプル" name="Simple"/> + <menu_item_check label="アルファ" name="Alpha"/> + <menu_item_check label="木" name="Tree"/> + <menu_item_check label="アバター" name="Character"/> + <menu_item_check label="地表" name="SurfacePath"/> + <menu_item_check label="空" name="Sky"/> + <menu_item_check label="水" name="Water"/> + <menu_item_check label="地面" name="Ground"/> + <menu_item_check label="ボリューム" name="Volume"/> + <menu_item_check label="草" name="Grass"/> + <menu_item_check label="雲" name="Clouds"/> + <menu_item_check label="パーティクル" name="Particles"/> + <menu_item_check label="衝突" name="Bump"/> + </menu> + <menu label="レンダリング(機能)" name="Rendering Features"> + <menu_item_check label="UI" name="UI"/> + <menu_item_check label="選択済" name="Selected"/> + <menu_item_check label="ハイライト" name="Highlighted"/> + <menu_item_check label="ダイナミックテクスチャ" name="Dynamic Textures"/> + <menu_item_check label="足の影" name="Foot Shadows"/> + <menu_item_check label="くもり" name="Fog"/> + <menu_item_check label="FRInfo のテスト" name="Test FRInfo"/> + <menu_item_check label="フレキシブルオブジェクト" name="Flexible Objects"/> + </menu> + <menu_item_check label="マルチスレッド処理" name="Run Multiple Threads"/> + <menu_item_call label="グループキャッシュのクリア" name="ClearGroupCache"/> + <menu_item_check label="マウスの平滑化" name="Mouse Smoothing"/> + <menu label="ショートカット" name="Shortcuts"> + <menu_item_call label="画像 (L$ [COST] )..." name="Upload Image"/> + <menu_item_check label="検索" name="Search"/> + <menu_item_call label="キーをリリース" name="Release Keys"/> + <menu_item_call label="UI のサイズをデフォルトに設定する" name="Set UI Size to Default"/> + <menu_item_check label="常に走る" name="Always Run"/> + <menu_item_check label="飛行する" name="Fly"/> + <menu_item_call label="ウィンドウを閉じる" name="Close Window"/> + <menu_item_call label="全てのウィンドウを閉じる" name="Close All Windows"/> + <menu_item_call label="スナップショットをディスクに保存する" name="Snapshot to Disk"/> + <menu_item_call label="一人称視点" name="Mouselook"/> + <menu_item_check label="ジョイスティックフライカム" name="Joystick Flycam"/> + <menu_item_call label="表示をリセットする" name="Reset View"/> + <menu_item_call label="最後の発言者を見る" name="Look at Last Chatter"/> + <menu label="制作ツールを選択する" name="Select Tool"> + <menu_item_call label="焦点ツール" name="Focus"/> + <menu_item_call label="移動ツール" name="Move"/> + <menu_item_call label="編集ツール" name="Edit"/> + <menu_item_call label="作成ツール" name="Create"/> + <menu_item_call label="土地ツール" name="Land"/> + </menu> + <menu_item_call label="ズームイン" name="Zoom In"/> + <menu_item_call label="ズーム(デフォルト)" name="Zoom Default"/> + <menu_item_call label="ズームアウト" name="Zoom Out"/> + <menu_item_call label="全画面表示" name="Toggle Fullscreen"/> + </menu> + <menu_item_call label="デバッグ設定を表示する" name="Debug Settings"/> + <menu_item_check label="開発メニューを表示する" name="Debug Mode"/> + </menu> + <menu label="開発" name="Develop"> + <menu label="コンソール" name="Consoles"> + <menu_item_check label="テクスチャのコンソール" name="Texture Console"/> + <menu_item_check label="デバッグコンソール" name="Debug Console"/> + <menu_item_call label="通知コンソール" name="Notifications"/> + <menu_item_check label="テクスチャサイズのコンソール" name="Texture Size"/> + <menu_item_check label="テクスチャカテゴリのコンソール" name="Texture Category"/> + <menu_item_check label="ファーストタイマー" name="Fast Timers"/> + <menu_item_check label="メモリ" name="Memory"/> + <menu_item_call label="リージョン情報をデバッグコンソールへ" name="Region Info to Debug Console"/> + <menu_item_call label="グループ情報をデバッグコンソールへ" name="Group Info to Debug Console"/> + <menu_item_call label="性能情報をデバッグコンソールへ" name="Capabilities Info to Debug Console"/> + <menu_item_check label="カメラ" name="Camera"/> + <menu_item_check label="風" name="Wind"/> + <menu_item_check label="FOV" name="FOV"/> + <menu_item_check label="バッジ" name="Badge"/> + </menu> + <menu label="情報を表示" name="Display Info"> + <menu_item_check label="時間を表示する" name="Show Time"/> + <menu_item_check label="描画情報を表示する" name="Show Render Info"/> + <menu_item_check label="マトリックスを表示する" name="Show Matrices"/> + <menu_item_check label="カーソルを乗せた場所の色を表示する" name="Show Color Under Cursor"/> + <menu_item_check label="オブジェクトのアップデートを表示する" name="Show Updates"/> + </menu> + <menu label="エラー実行" name="Force Errors"> + <menu_item_call label="ブレークポイント" name="Force Breakpoint"/> + <menu_item_call label="LLError とクラッシュを実行する" name="Force LLError And Crash"/> + <menu_item_call label="バッドメモリアクセスを実行する" name="Force Bad Memory Access"/> + <menu_item_call label="無限ループ" name="Force Infinite Loop"/> + <menu_item_call label="ドライバのクラッシュを実行する" name="Force Driver Carsh"/> + <menu_item_call label="ソフトウェア例外エラーの実行する" name="Force Software Exception"/> + <menu_item_call label="ビューワの接続遮断を実行する" name="Force Disconnect Viewer"/> + <menu_item_call label="メモリリークをシミュレートする" name="Memory Leaking Simulation"/> + </menu> + <menu label="レンダーテスト" name="Render Tests"> + <menu_item_check label="カメラオフセット" name="Camera Offset"/> + <menu_item_check label="フレームレートをランダム化" name="Randomize Framerate"/> + <menu_item_check label="Periodic Slow Frame" name="Periodic Slow Frame"/> + <menu_item_check label="フレームテスト" name="Frame Test"/> + </menu> + <menu label="メタデータのレンダー" name="Render Metadata"> + <menu_item_check label="バウンディングボックス" name="Bounding Boxes"/> + <menu_item_check label="オクトリー" name="Octree"/> + <menu_item_check label="シャドウ円錐" name="Shadow Frusta"/> + <menu_item_check label="オクルージョン" name="Occlusion"/> + <menu_item_check label="バッチの描画" name="Render Batches"/> + <menu_item_check label="アニメーション部分をテクスチャで表示" name="Texture Anim"/> + <menu_item_check label="テクスチャ優先度" name="Texture Priority"/> + <menu_item_check label="テクスチャの範囲" name="Texture Area"/> + <menu_item_check label="側面" name="Face Area"/> + <menu_item_check label="光" name="Lights"/> + <menu_item_check label="骨組みの衝突判定" name="Collision Skeleton"/> + <menu_item_check label="レイキャスト" name="Raycast"/> + </menu> + <menu label="レンダリング" name="Rendering"> + <menu_item_check label="軸" name="Axes"/> + <menu_item_check label="接線基底" name="Tangent Basis"/> + <menu_item_call label="選択したテクスチャ情報基底" name="Selected Texture Info Basis"/> + <menu_item_check label="ワイヤーフレーム" name="Wireframe"/> + <menu_item_check label="オブジェクト間オクルージョン" name="Object-Object Occlusion"/> + <menu_item_check label="フレームバッファオブジェクト" name="Framebuffer Objects"/> + <menu_item_check label="遅延レンダリング" name="Deferred Rendering"/> + <menu_item_check label="グローバルイルミネーション" name="Global Illumination"/> + <menu_item_check label="GL デバッグ" name="Debug GL"/> + <menu_item_check label="経路をデバッグ" name="Debug Pipeline"/> + <menu_item_check label="ファーストアルファ" name="Fast Alpha"/> + <menu_item_check label="アニメーションテクスチャ" name="Animation Textures"/> + <menu_item_check label="テクスチャを無効にする" name="Disable Textures"/> + <menu_item_check label="フル解像度テクスチャ" name="Rull Res Textures"/> + <menu_item_check label="テクスチャの検査" name="Audit Textures"/> + <menu_item_check label="テクスチャアトラス" name="Texture Atlas"/> + <menu_item_check label="装着された光源を描画する" name="Render Attached Lights"/> + <menu_item_check label="取り付けられたパーティクルを描画する" name="Render Attached Particles"/> + <menu_item_check label="マウスオーバーで強調表示する" name="Hover Glow Objects"/> + </menu> + <menu label="ネットワーク" name="Network"> + <menu_item_check label="エージェントを一時停止する" name="AgentPause"/> + <menu_item_call label="メッセージログを有効にする" name="Enable Message Log"/> + <menu_item_call label="メッセージログを使用不可にする" name="Disable Message Log"/> + <menu_item_check label="速力が挿入されたオブジェクト" name="Velocity Interpolate Objects"/> + <menu_item_check label="挿入されたオブジェクトの位置の Ping" name="Ping Interpolate Object Positions"/> + <menu_item_call label="パケットドロップ" name="Drop a Packet"/> + </menu> + <menu_item_call label="スクリプト付きカメラをダンプ" name="Dump Scripted Camera"/> + <menu_item_call label="衝突・プッシュ・打撃" name="Bumps, Pushes &amp; Hits"/> + <menu label="レコーダー" name="Recorder"> + <menu_item_call label="再生開始" name="Start Playback"/> + <menu_item_call label="再生停止" name="Stop Playback"/> + <menu_item_check label="再生をループ" name="Loop Playback"/> + <menu_item_call label="記録開始" name="Start Record"/> + <menu_item_call label="記録停止" name="Stop Record"/> + </menu> + <menu label="世界" name="World"> + <menu_item_check label="シムの太陽の設定を無視する" name="Sim Sun Override"/> + <menu_item_check label="ビーコンを強調表示する" name="Cheesy Beacon"/> + <menu_item_check label="固定された天気" name="Fixed Weather"/> + <menu_item_call label="リージョンオブジェクトのキャッシュをダンプする" name="Dump Region Object Cache"/> + </menu> + <menu label="UI" name="UI"> + <menu_item_call label="Web ブラウザのテスト" name="Web Browser Test"/> + <menu_item_call label="SelectMgr をダンプ" name="Dump SelectMgr"/> + <menu_item_call label="持ち物の出力" name="Dump Inventory"/> + <menu_item_call label="タイマーをダンプ" name="Dump Timers"/> + <menu_item_call label="フォーカスホールダーをダンプ" name="Dump Focus Holder"/> + <menu_item_call label="選択したオブジェクト情報をプリント" name="Print Selected Object Info"/> + <menu_item_call label="エージェント情報をプリント" name="Print Agent Info"/> + <menu_item_call label="メモリ使用状況" name="Memory Stats"/> + <menu_item_check label="ダブルクリックした場所に自動操作で移動する" name="Double-ClickAuto-Pilot"/> + <menu_item_check label="SelectMgr のデバッグ" name="Debug SelectMgr"/> + <menu_item_check label="ダブルクリック" name="Debug Clicks"/> + <menu_item_check label="デバッグ表示" name="Debug Views"/> + <menu_item_check label="デバッグ名ツールチップ" name="Debug Name Tooltips"/> + <menu_item_check label="マウス操作で発生するもののデバッグ" name="Debug Mouse Events"/> + <menu_item_check label="デバッグキー" name="Debug Keys"/> + <menu_item_check label="WindowProc のデバッグ" name="Debug WindowProc"/> + </menu> + <menu label="XUI" name="XUI"> + <menu_item_call label="色の設定を更新する" name="Reload Color Settings"/> + <menu_item_call label="フォントテストを表示する" name="Show Font Test"/> + <menu_item_call label="XML から読み込む" name="Load from XML"/> + <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> + <menu label="アバター" name="Character"> + <menu label="ベークドテクスチャを取得する" name="Grab Baked Texture"> + <menu_item_call label="瞳" name="Iris"/> + <menu_item_call label="頭" name="Head"/> + <menu_item_call label="上半身" name="Upper Body"/> + <menu_item_call label="下半身" name="Lower Body"/> + <menu_item_call label="スカート" name="Skirt"/> + </menu> + <menu label="キャラクターテスト" name="Character Tests"> + <menu_item_call label="容姿を XML に保存する" name="Appearance To XML"/> + <menu_item_call label="キャラクタジオメトリの切り替え" name="Toggle Character Geometry"/> + <menu_item_call label="男性アバターのテスト" name="Test Male"/> + <menu_item_call label="女性アバターのテスト" name="Test Female"/> + <menu_item_call label="PG のトグル" name="Toggle PG"/> + <menu_item_check label="選択アバター許可" name="Allow Select Avatar"/> + </menu> + <menu_item_call label="Params をデフォルトで実行する" name="Force Params to Default"/> + <menu_item_check label="アニメーション情報" name="Animation Info"/> + <menu_item_check label="スローモーションのアニメーション" name="Slow Motion Animations"/> + <menu_item_check label="見ているものを表示する" name="Show Look At"/> + <menu_item_check label="クリックした場所を表示する" name="Show Point At"/> + <menu_item_check label="結合部のアップデートのデバッグ" name="Debug Joint Updates"/> + <menu_item_check label="LOD を無効にする" name="Disable LOD"/> + <menu_item_check label="キャラクター Vis のデバッグ" name="Debug Character Vis"/> + <menu_item_check label="骨組みの衝突判定を表示する" name="Show Collision Skeleton"/> + <menu_item_check label="エージェントのターゲットを表示する" name="Display Agent Target"/> + --> + <menu_item_call label="アタッチメントをダンプ" name="Dump Attachments"/> + <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"/> + <menu_item_check label="管理者メニューを表示する" name="View Admin Options"/> + <menu_item_call label="管理者ステータスの呼び出し" name="Request Admin Options"/> + <menu_item_call label="管理者ステータス解除" name="Leave Admin Options"/> + </menu> + <menu label="管理者" name="Admin"> + <menu label="Object"> + <menu_item_call label="コピーを取る" name="Take Copy"/> + <menu_item_call label="私を所有者にする" name="Force Owner To Me"/> + <menu_item_call label="所有者権限を実行する" name="Force Owner Permissive"/> + <menu_item_call label="削除" name="Delete"/> + <menu_item_call label="ロック" name="Lock"/> + <menu_item_call label="アセット ID を取得する" name="Get Assets IDs"/> + </menu> + <menu label="区画" name="Parcel"> + <menu_item_call label="私を所有者にする" name="Owner To Me"/> + <menu_item_call label="リンデンコンテンツに設定する" name="Set to Linden Content"/> + <menu_item_call label="パブリックの土地を取得する" name="Claim Public Land"/> + </menu> + <menu label="リージョン/地域" name="Region"> + <menu_item_call label="一時アセットデータをダンプ" name="Dump Temp Asset Data"/> + <menu_item_call label="リージョンの状態を保存する" name="Save Region State"/> + </menu> + <menu_item_call label="グリッドツール" name="God Tools"/> + </menu> + <menu label="管理者" name="Deprecated"> + <menu label="オブジェクトを取り付ける" name="Attach Object"/> + <menu label="オブジェクトを取り外す" name="Detach Object"/> + <menu label="衣類を脱ぐ" name="Take Off Clothing"> + <menu_item_call label="シャツ" name="Shirt"/> + <menu_item_call label="パンツ" name="Pants"/> + <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="Menu Undershirt"/> + <menu_item_call label="下着パンツ" name="Menu Underpants"/> + <menu_item_call label="スカート" name="Skirt"/> + <menu_item_call label="アルファ" name="Alpha"/> + <menu_item_call label="タトゥ" name="Tattoo"/> + <menu_item_call label="すべての衣類" name="All Clothes"/> + </menu> + <menu label="ヘルプ" name="Help"> + <menu_item_call label="リンデン公式ブログ" name="Official Linden Blog"/> + <menu_item_call label="スクリプトポータル" name="Scripting Portal"/> + <menu label="バグの報告" name="Bug Reporting"> + <menu_item_call label="パブリック問題トラッカー" name="Public Issue Tracker"/> + <menu_item_call label="パブリック問題トラッカーヘルプ" name="Publc Issue Tracker Help"/> + <menu_item_call label="バグ報告の基礎知識" name="Bug Reporing 101"/> + <menu_item_call label="セキュリティ問題" name="Security Issues"/> + <menu_item_call label="QA Wiki" name="QA Wiki"/> + </menu> + </menu> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/ja/mime_types.xml b/indra/newview/skins/default/xui/ja/mime_types.xml index 2f945b2010..54663a0367 100644 --- a/indra/newview/skins/default/xui/ja/mime_types.xml +++ b/indra/newview/skins/default/xui/ja/mime_types.xml @@ -2,13 +2,13 @@ <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"> @@ -119,7 +119,7 @@ </mimetype> <mimetype name="application/xhtml+xml"> <label name="application/xhtml+xml_label"> - ウェブ・ページ (XHTML) + Webページ (XHTML) </label> </mimetype> <mimetype name="application/x-director"> @@ -184,7 +184,7 @@ </mimetype> <mimetype menu="1" name="text/html"> <label name="text/html_label"> - ウェブ・ページ + Webページ </label> </mimetype> <mimetype menu="1" name="text/plain"> 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 0000000000..0ec1030113 --- /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 0000000000..0ec1030113 --- /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 fca7c89183..2f877a6aba 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -11,18 +11,29 @@ </global> <template name="okbutton"> <form> - <button name="OK" text="$yestext"/> + <button name="OK_okbutton" text="$yestext"/> + </form> + </template> + <template name="okignore"> + <form> + <button name="OK_okignore" text="$yestext"/> </form> </template> - <template name="okignore"/> <template name="okcancelbuttons"> <form> - <button name="Cancel" text="$notext"/> + <button name="OK_okcancelbuttons" text="$yestext"/> + <button name="Cancel_okcancelbuttons" text="$notext"/> + </form> + </template> + <template name="okcancelignore"> + <form> + <button name="OK_okcancelignore" text="$yestext"/> + <button name="Cancel_okcancelignore" text="$notext"/> </form> </template> - <template name="okcancelignore"/> <template name="okhelpbuttons"> <form> + <button name="OK_okhelpbuttons" text="$yestext"/> <button name="Help" text="$helptext"/> </form> </template> @@ -30,16 +41,17 @@ <form> <button name="Yes" text="$yestext"/> <button name="No" text="$notext"/> + <button name="Cancel_yesnocancelbuttons" text="$canceltext"/> </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"> - フロータ・エラー:下記のコントロールが見つかりませんでした: + フロータエラー:下記のコントロールが見つかりませんでした: [CONTROLS] <usetemplate name="okbutton" yestext="OK"/> </notification> @@ -55,7 +67,7 @@ <usetemplate name="okcancelbuttons" notext="取り消し" yestext="はい"/> </notification> <notification name="BadInstallation"> - [APP_NAME] をアップデート中にエラーが発生しました。 最新バージョンをダウンロードしてください。 http://get.secondlife.com + [APP_NAME] をアップデート中にエラーが発生しました。 ビューワの [http://get.secondlife.com 最新バージョンをダウンロード] してください。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LoginFailedNoNetwork"> @@ -69,43 +81,50 @@ <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="WearableSave"> - 現在の衣服/ボディーパーツの変更を保存しますか? + 現在の衣類、身体部位の変更を保存しますか? <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/> </notification> <notification name="CompileQueueSaveText"> - 次の理由で、スクリプト用テキストのアップロード時に問題が起こりました。 [REASON] 後でもう一度試してください。 + 次の理由で、スクリプト用テキストのアップロード時に問題が起こりました。 +[REASON] +後でもう一度お試しください。 </notification> <notification name="CompileQueueSaveBytecode"> - 次の理由で、コンパイルしたスクリプトのアップロード時に問題が起こりました。 [REASON]後でもう一度試してください。 + 次の理由で、コンパイルしたスクリプトのアップロード時に問題が起こりました。 +[REASON] +後でもう一度お試しください。 </notification> <notification name="WriteAnimationFail"> アニメーションデータの書き込みに問題があります。後でもう一度お試しください。 </notification> <notification name="UploadAuctionSnapshotFail"> - 次の理由で、オークションのスナップショットのアップロード時に問題が起こりました。 [REASON] + 次の理由で、オークションのスナップショットのアップロード時に問題が起こりました。 +[REASON] </notification> <notification name="UnableToViewContentsMoreThanOne"> - 一度に複数のアイテムのコンテンツは表示できません。 -選択するアイテムを1つだけにして、もう一度試してください。 + 一度に複数のアイテムの中身を表示できません。 +アイテムを 1 つだけ選択して、もう一度お試しください。 </notification> <notification name="SaveClothingBodyChanges"> - 衣服/身体部位に対する変更をすべて保存しますか? + 衣服、身体部位に対する変更をすべて保存しますか? <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="保存しない" yestext="すべて保存"/> </notification> + <notification name="FriendsAndGroupsOnly"> + フレンド以外からのコールやインスタントメッセージを無視する設定にしたことを、相手に知られることはありません。 + <usetemplate name="okbutton" 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"> - [FIRST_NAME] [LAST_NAME]に対して変更権限を取り消しますか? + [FIRST_NAME] [LAST_NAME] に対して変更権限を取り消しますか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification name="RevokeModifyRightsMultiple"> @@ -127,28 +146,27 @@ <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="AddGroupOwnerWarning"> - あなたは [ROLE_NAME]の役割にメンバーを与えようとしています。 + あなたは [ROLE_NAME] の役割にメンバーを与えようとしています。 任命されたメンバーが自ら退任しない限り、 -彼らを役柄から削除できません。 +役柄から削除できません。 操作を続行しますか? - <usetemplate ignoretext="グループオーナーを新しく追加する前に確認" name="okcancelignore" notext="いいえ" yestext="はい"/> + <usetemplate ignoretext="グループオーナーを新しく追加する前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/> </notification> <notification name="AssignDangerousActionWarning"> - あなたは[ROLE_NAME]に [ACTION_NAME]の能力を + あなたは [ROLE_NAME] に [ACTION_NAME] の能力を 与えようとしています。 *警告* この能力を持つ役割のメンバーは、 自分と他のメンバーに現在より強力な権限を割り当て、 -自分をオーナーとほぼ同様の立場に -任命することもできるようになります。 この行為の意味をよく理解してから -実行してください。 +自分をオーナーとほぼ同様の立場に任命することもできるようになります。 +この行為の意味をよく理解してから実行してください。 -この能力を[ROLE_NAME]に割り当てますか? +この能力を [ROLE_NAME] に割り当てますか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification name="AssignDangerousAbilityWarning"> - あなたは[ROLE_NAME]に [ACTION_NAME]の能力を + あなたは [ROLE_NAME] に [ACTION_NAME] の能力を 与えようとしています。 *警告* @@ -156,92 +174,99 @@ 自分と他のメンバーにすべての能力を割り当て、 自分をオーナーとほぼ同様の立場に任命できます。 -この能力を[ROLE_NAME]に割り当てますか? +この能力を [ROLE_NAME] に割り当てますか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> + <notification name="AttachmentDrop"> + アタッチメントを下に置こうとしています。 +続けますか? + <usetemplate ignoretext="アタッチメントを下に落とす前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/> + </notification> <notification name="JoinGroupCanAfford"> - このグループに参加するには、L$[COST]かかります。 + このグループに参加するには、L$ [COST] かかります。 続行しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="参加"/> </notification> + <notification name="JoinGroupNoCost"> + [NAME] というグループに入ろうとしています。 +続けますか? + <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="参加"/> + </notification> <notification name="JoinGroupCannotAfford"> - このグループに加入するには、L$[COST]必要です。 -L$が不足しているのでこのグループに参加することができません。 + このグループに加入するには、L$ [COST] 必要です。 +L$ が不足しているのでこのグループに参加することができません。 </notification> <notification name="CreateGroupCost"> - このグループを作るには L$100 かかります。 + このグループを作るには L$ 100 かかります。 一人ではグループにならないので、永久に削除されてしまいます。 -48時間以内にメンバーを勧誘し入会してもらってください。 +48 時間以内にメンバーを勧誘し、入会してもらってください。 <usetemplate canceltext="キャンセル" name="okcancelbuttons" notext="キャンセル" yestext="L$100 でグループを作成"/> </notification> <notification name="LandBuyPass"> - L$[COST]で [TIME]時間この土地[PARCEL_NAME]に入ることができます。 + L$ [COST] で [TIME] 時間 [PARCEL_NAME] に入ることができます。 入場許可を購入しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="SalePriceRestriction"> 不特定の人に売却する場合には、 -売却価格はL$0以上に設定する必要があります。 -売却価格をL$0に設定する場合は、 +売却価格はL$ 0 以上に設定する必要があります。 +売却価格をL$ 0 に設定する場合は、 売却する個人を選択してください。 </notification> <notification name="ConfirmLandSaleChange"> - 選択された[LAND_SIZE]平方メートルの土地は、売り出し中に設定されています。 -売却価格L$[SALE_PRICE]で、[NAME]に売却を認可します。 + 選択した [LAND_SIZE] 平方メートルの土地は、売り出し中に設定されています。 +売却価格 L$ [SALE_PRICE] で、[NAME] に売却を認可します。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ConfirmLandSaleToAnyoneChange"> - 注:「誰にでも売却する」をクリックすると、 -あなたの土地は[SECOND_LIFE] のコミュニティのどこからでも -(この地域にないコミュニティを含む)購入できるようになります。 + 注意: 「誰にでも販売」をクリックすることで、あなたの土地はこのリージョンにいる人に限らず [SECOND_LIFE] コミュニティ全体で利用可能となります。 -選択された[LAND_SIZE]平方メートルの土地は、 -売り出し中に設定されています。 -売却価格L$[SALE_PRICE]で、[NAME]に売却を認可します。 +選択した [LAND_SIZE] 平方メートルの土地は、販売対象に設定されました。 +販売価格 L$ [SALE_PRICE] で、[NAME] が販売対象者となります。 <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ReturnObjectsDeededToGroup"> - この区画のグループ[NAME]共有のすべてのオブジェクトを、以前のオーナーの持ち物に戻そうとしています。 + この区画のグループ [NAME] 共有のすべてのオブジェクトを、以前の所有者の「持ち物」に戻そうとしています。 操作を続行しますか? *警告* これにより、 -グループに譲渡された譲渡不可能なオブジェクトは削除されます! +グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます! オブジェクト: [N] <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ReturnObjectsOwnedByUser"> この区画で、 -住人[NAME]が所有する全てのオブジェクトを -彼らの持ち物に本当に返却してもよいですか? +住人 [NAME] が所有する全てのオブジェクトを +本人の「持ち物」に本当に返却してもよいですか? オブジェクト: [N] <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ReturnObjectsOwnedBySelf"> この土地区画内にある、あなたが所有するすべてのオブジェクトを、 -あなたの持ち物に戻そうとしています。操作を続行しますか? +あなたの「持ち物」に戻そうとしています。続けますか? オブジェクト: [N] <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ReturnObjectsNotOwnedBySelf"> この土地区画内にある、あなた以外が所有するすべてのオブジェクトを、 -それぞれのオーナーの持ち物に戻そうとしています。 +それぞれの所有者の「持ち物」に戻そうとしています。 操作を続行しますか? -グループに譲渡された譲渡可能オブジェクトは、以前のオーナーに返却されます。 +グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。 *警告* これにより、 -グループに譲渡された譲渡不可能なオブジェクトは削除されます! +グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます! オブジェクト: [N] <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ReturnObjectsNotOwnedByUser"> この土地区画内にある、 -[NAME]以外による所有のオブジェクトをすべてそれぞれのオーナーの持ち物に返却しようとしています。 -操作を続行しますか?グループに譲渡された譲渡可能オブジェクトは、以前のオーナーに返却されます。 +[NAME]以外による所有のオブジェクトをすべてそれぞれの所有者の「持ち物」に返却しようとしています。 +操作を続行しますか?グループに譲渡された「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されます。 *警告* これにより、 -グループに譲渡された譲渡不可能なオブジェクトは削除されます! +グループに譲渡された「再販・プレゼント不可」のオブジェクトは削除されます! オブジェクト: [N] <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> @@ -250,37 +275,42 @@ L$が不足しているのでこのグループに参加することができま <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="DisableAllTopObjects"> - この地域内のすべてのオブジェクトを無効にしようとしています。操作を続行しますか? + このリージョン(地域)内のすべてのオブジェクトを無効にしようとしています。操作を続行しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ReturnObjectsNotOwnedByGroup"> - この土地の区画上のオブジェクトのうち、グループ[NAME] -との間で共有していないオブジェクトをオーナーに返却しますか? + この土地の区画上のオブジェクトのうち、グループ [NAME] との間で共有していないオブジェクトを所有者に返却しますか? オブジェクト: [N] <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="UnableToDisableOutsideScripts"> スクリプトを無効にできません。 -この地域全体が「ダメージ有効」に設定されています。 +このリージョン(地域)全体が「ダメージ有効」に設定されています。 武器を使用するにはスクリプトの実行を許可する必要があります。 </notification> + <notification name="MultipleFacesSelected"> + 現在複数の面が選択されています。 +このまま続けた場合、メディアの別々のインスタンスがオブジェクトの複数の面に設定されます。 +メディアを 1 つの面だけに取り付けるには、「面を選択」を選んでオブジェクトの希望する面をクリック、それから「追加」をクリックしてください。 + <usetemplate ignoretext="メディアが選択した複数の面にセットされるとき" name="okcancelignore" notext="キャンセル" yestext="OK"/> + </notification> <notification name="MustBeInParcel"> 着地点を設定するには、この区画の内側に 立ってください。 </notification> <notification name="PromptRecipientEmail"> - 受信者の有効なEメールアドレスを入力してください。 + 受信者の有効なメールアドレスを入力してください。 </notification> <notification name="PromptSelfEmail"> - あなたのEメール・アドレスを入力してください。 + あなたのメールアドレスを入力してください。 </notification> <notification name="PromptMissingSubjMsg"> デフォルトの件名またはメッセージを付けて、スナップショットを送信しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ErrorProcessingSnapshot"> - スナップショット・データの処理エラー + スナップショットデータの処理エラー </notification> <notification name="ErrorEncodingSnapshot"> スナップショットのエンコード化でエラーが出ました! @@ -295,11 +325,15 @@ L$が不足しているのでこのグループに参加することができま [SECOND_LIFE] へのログインを続けるには、利用規約に同意してください。 </notification> <notification name="CouldNotPutOnOutfit"> - 服装を装着できません。 -服装フォルダに衣服、身体部位、付属品がありません。 + アウトフィットを装着できません。 +アウトフィットフォルダに衣類、身体部位、アタッチメントがありません。 </notification> <notification name="CannotWearTrash"> - ゴミ箱にある服やボディーパーツの着用はできません。 + ごみ箱にある衣類や身体部位の着用はできません。 + </notification> + <notification name="MaxAttachmentsOnOutfit"> + オブジェクトを付けられませんでした。 +最大数の [MAX_ATTACHMENTS] 個を越えています。 どれか取り外してからお試しください。 </notification> <notification name="CannotWearInfoNotComplete"> まだ読み込まれていないため、そのアイテムを装着できません。後でやり直してください。 @@ -315,30 +349,36 @@ L$が不足しているのでこのグループに参加することができま <usetemplate name="okcancelbuttons" notext="もう一度試す" yestext="新しいアカウントを作成"/> </notification> <notification name="AddClassified"> - 検索ディレクトリの「クラシファイド」セクションに、 -クラシファイド広告が1週間掲載されます。 -広告を記入後、「公開」をクリックし、ディレクトリに -追加します。 -「公開」をクリックすると、支払金額を尋ねられます。 -多く払うほど、広告がクラシファイド・リストとキーワード検索 -の上位に表示されます。 + クラシファイド広告は、検索ディレクトリと [http://secondlife.com/community/classifieds secondlife.com] の「クラシファイド広告」セクションに一週間掲載されます。 +広告を記入したら、「掲載...」をクリックしてディレクトリに追加してください。 +「掲載」をクリックすると、支払いたい金額を尋ねられます。 +支払金額が多いほどあなたの広告は一覧とキーワード検索で上位に表示されます。 <usetemplate ignoretext="新規クラシファイド広告作成方法" name="okcancelignore" notext="取り消し" yestext="OK"/> </notification> <notification name="DeleteClassified"> - クラシファイド広告[NAME]の削除をしますか? + クラシファイド広告 [NAME] を削除しますか? 支払い済みの料金は返金されません。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> + <notification name="DeleteMedia"> + この面にあるメディアを削除する選択をしました。 +続けますか? + <usetemplate ignoretext="オブジェクトからメディアを削除する前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/> + </notification> <notification name="ClassifiedSave"> - クラシファイド広告[NAME]への変更を保存しますか? + クラシファイド広告 [NAME] への変更を保存しますか? <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="保存しない" yestext="保存"/> </notification> + <notification name="ClassifiedInsufficientFunds"> + クラシファイド広告を出すには、資金が足りません。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="DeleteAvatarPick"> - ピック[PICK]を削除しますか? + ピック「 [PICK] 」を削除しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="PromptGoToEventsPage"> - [SECOND_LIFE]イベント・ウェブ・ページに移動しますか? + [SECOND_LIFE] イベント Web ページに移動しますか? <url name="url"> http://secondlife.com/events/?lang=ja-JP </url> @@ -350,29 +390,21 @@ 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]の再起動後にキャッシュがクリアされます。 + [APP_NAME] を再起動後にキャッシュがクリアされます。 </notification> <notification name="CacheWillBeMoved"> - [APP_NAME]の再起動後にキャッシュが移動されます。 -注意:これによりキャッシュがクリアされます。 + [APP_NAME] を再起動後にキャッシュが移動されます。 +ご注意: キャッシュがクリアされます。 </notification> <notification name="ChangeConnectionPort"> - ポートの設定は、[APP_NAME]の再起動後に有効になります。 + ポートの設定は [APP_NAME] を再起動後に反映されます。 </notification> <notification name="ChangeSkin"> - 新しいスキンは[APP_NAME]を再起動すると現れます + 新しいスキンは [APP_NAME] を再起動後に表示されます。 </notification> <notification name="GoToAuctionPage"> - [SECOND_LIFE]ウェブ・ページに移動し、 入札あるいはオークションの詳細を確認しますか? + [SECOND_LIFE]の Web ページに移動し、入札あるいはオークションの詳細を確認しますか? <url name="url"> http://secondlife.com/auctions/auction-detail.php?id=[AUCTION_ID] </url> @@ -421,8 +453,8 @@ L$が不足しているのでこのグループに参加することができま 次の理由で、コンパイルしたスクリプトの保存時に問題が起こりました。 [REASON]。 後でもう一度試してください。 </notification> <notification name="StartRegionEmpty"> - ログイン位置が不明です。 -ログイン位置の欄にリージョン名を入力するか、「最後にログアウトした場所」か「自宅(ホーム)」を選択してください。 + ログイン位置が指定されていません。 +ログイン位置の欄にリージョン名を入力するか、「最後にログアウトした場所」か「ホーム」を選択してください。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="CouldNotStartStopScript"> @@ -433,42 +465,38 @@ L$が不足しているのでこのグループに参加することができま ファイルをダウンロードできません。 </notification> <notification name="CannotWriteFile"> - ファイル[[FILE]]を書き込めません。 + ファイル [[FILE]] を書き込めません。 </notification> <notification name="UnsupportedHardware"> - 警告: お使いのシステムは [APP_NAME] の必要最低限の動作環境を満たしていません。 このまま [APP_NAME] を使用すると、パフォーマンスの低下を感じるかもしれません。 恐れ入りますが [SUPPORT_SITE] ではサポート対象外のシステムに関する技術的サポートは行っておりません。 + お使いのコンピューターは [APP_NAME] の必要最低限の動作環境を満たしていません。 パフォーマンスの低下を感じるかもしれません。 恐れ入りますが [SUPPORT_SITE] ではサポート対象外のシステムに関する技術的サポートは行っておりません。 最低動作環境 -[_URL] で詳しい情報を確認しますか? +[_URL] に移動して確認をしますか? <url name="url" option="0"> http://secondlife.com/support/sysreqs.php?lang=ja </url> - <usetemplate ignoretext="使用しているコンピューターのハードウェアがサポートされていません" name="okcancelignore" notext="いいえ" yestext="はい"/> + <usetemplate ignoretext="使用中のコンピューターのハードウェアがサポートされていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/> </notification> <notification name="UnknownGPU"> - お使いのシステムには、現在 [APP_NAME] が認識できないグラフィックカードが搭載されています。 -[APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。 [APP_NAME] は正常に実行される可能性が高いですが、表示設定を調整する必要があるかもしれません。 -(環境設定 > 表示) + お使いのシステムには、[APP_NAME] が認識できないグラフィックカードが搭載されています。 +[APP_NAME] でまだテストされていない最新ハードウェアのためだと考えられます。 問題ないとは思いますが、グラフィックの設定を調整する必要があるかもしれません。 +(ミー > 環境設定 > グラフィック) <form name="form"> - <ignore name="ignore" text="使用中のグラフックカードが認識されませんでした"/> + <ignore name="ignore" text="使用中のグラフックカードが認識されないとき"/> </form> </notification> <notification name="DisplaySettingsNoShaders"> - [APP_NAME] は、 -グラフィック・ドライバの初期化中にクラッシュしました。 -一般的なドライバ・エラーを回避するため、「品質およびパフォーマンス」は「低」に設定されます。 -これにより、いくつかのグラフィックス機能は無効になります。 -グラフィックカード・ドライバのアップデートをお勧めします。 -「グラフィックの品質」は「環境設定」>「表示」から上げることができます。 + グラフィックドライバを初期化中に [APP_NAME] がクラッシュしました。 +ドライバの一般的なエラーを防ぐために、画質が低に設定されます。 そのため、一部のグラフィック特性に制限が出ます。 +お使いのグラフィックカードのドライバをアップデートするようおすすめします。 +画質は、環境設定 > グラフィック で設定できます。 </notification> <notification name="RegionNoTerraforming"> - この地域[REGION] は、テラフォーミングができません。 + [REGION] では、地形の変更ができません。 </notification> <notification name="CannotCopyWarning"> - あなたはこのアイテムのコピーを -許されていないので、人にあげると -持ち物から失われます。 本当に -これをあげたいですか? + あなたはこのアイテムのコピーを許されていないので、人にあげると「持ち物」からなくなります。 +本当にこれを渡しますか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification name="CannotGiveItem"> @@ -478,34 +506,32 @@ L$が不足しているのでこのグループに参加することができま 取引がキャンセルされました。 </notification> <notification name="TooManyItems"> - 一度のインベントリ交換で、42以上のアイテムは送れません。 + 一度に 42 個以上のアイテムは渡せません。 </notification> <notification name="NoItems"> - 選択したアイテムを譲渡できる権限がありません。 + 選択したアイテムを渡す権限がありません。 </notification> <notification name="CannotCopyCountItems"> - あなたは選択したアイテムの[COUNT]のコピーを -許されていません。 -これらのアイテムはあなたの持ち物から失われます。 -本当にアイテムをあげたいですか? + あなたは選択した [COUNT] 個のアイテムののコピーを許されていません。 +これらのアイテムはあなたの「持ち物」から失われます。 +本当にアイテムを渡したいですか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification name="CannotGiveCategory"> - 選択したフォルダを譲渡できる権限がありません + 選択したフォルダを渡す権限がありません </notification> <notification name="FreezeAvatar"> このアバターをフリーズしますか? -アバターは一時的に動けなくなり、 -チャットなど、この世界に対する関わりを持つことができなくなります。 - <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="解凍" yestext="フリーズ"/> +アバターは一時的に動けなくなり、チャットを含めインワールドで何もできなくなります。 + <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="解除" yestext="フリーズ"/> </notification> <notification name="FreezeAvatarFullname"> [AVATAR_NAME]をフリーズしますか? フリーズされた人は一時的に動けなくなり、チャットなど、この世界に対する関わりを持つことができなくなります。 - <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="解凍" yestext="フリーズ"/> + <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="解除" yestext="フリーズ"/> </notification> <notification name="EjectAvatarFullname"> - あなたの土地から[AVATAR_NAME]を追放しますか? + あなたの土地から [AVATAR_NAME] を追放しますか? <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="追放と禁止" yestext="追放"/> </notification> <notification name="EjectAvatarNoBan"> @@ -516,51 +542,51 @@ L$が不足しているのでこのグループに参加することができま [AVATAR_NAME] をあなたの土地から追放しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="追放"/> </notification> + <notification name="EjectAvatarFromGroup"> + [GROUP_NAME] から [AVATAR_NAME] を追放しました + </notification> <notification name="AcquireErrorTooManyObjects"> 取得エラー:選択したオブジェクトの数が多すぎます。 </notification> <notification name="AcquireErrorObjectSpan"> 取得エラー: -オブジェクトが複数の地域にまたがって存在しています。 -取得するオブジェクトは、 -すべて同じ地域内に移動させてください。 +オブジェクトが複数のリージョン(地域)にまたがって存在しています。 +すべて同じリージョン内に移動させてから取得してください。 </notification> <notification name="PromptGoToCurrencyPage"> [EXTRA] -[_URL] でリンデンドル購入に関する情報を確認しますか? +[_URL] に移動してリンデンドル購入に関する情報を確認しますか? <url name="url"> http://secondlife.com/app/currency/?lang=ja-JP </url> <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="UnableToLinkObjects"> - これらの[COUNT]オブジェクトをリンクできません。 -最大[MAX]オブジェクトをリンクすることができます。 + [COUNT] 個のオブジェクトをリンクできません。 +リンクできるのは最大 [MAX] 個です。 </notification> <notification name="CannotLinkIncompleteSet"> - セットとして揃っているオブジェクトのみリンクできます。複数の -オブジェクトを選択してください。 + セットで揃っているオブジェクトのみリンクできます。 +複数のオブジェクトを選択してください。 </notification> <notification name="CannotLinkModify"> - すべてのオブジェクトに対する修正許可があなたにないため、 -リンクできません。 + すべてのオブジェクトの修正許可がないためリンクできません。 -オブジェクトがすべてロックされておらず、あなたのものであることを確認してください。 +どのオブジェクトもロックされておらず、あなたのものであることを確認してください。 </notification> <notification name="CannotLinkDifferentOwners"> - 所有者が異なるため、すべてのオブジェクトを -リンクできません。 + 所有者が異なるため、オブジェクトをリンクできません。 自分が所有しているオブジェクトだけを選択してください。 </notification> <notification name="NoFileExtension"> - ファイル「[FILE]」の拡張子が無効です。 + 「 [FILE] 」の拡張子が無効です。 このファイルの拡張子が正しいかどうかを確認してください。 </notification> <notification name="InvalidFileExtension"> - ファイル拡張子[EXTENSION]は無効です + [EXTENSION]は無効です。 正しい拡張子:[VALIDS] <usetemplate name="okbutton" yestext="OK"/> </notification> @@ -569,11 +595,11 @@ L$が不足しているのでこのグループに参加することができま [FILE] </notification> <notification name="SoundFileNotRIFF"> - ファイルがRIFF WAVEファイルとして認識されません: + RIFF WAVE ファイルとして認識されません: [FILE] </notification> <notification name="SoundFileNotPCM"> - ファイルがPCM WAVEオーディオ・ファイルとして認識されません: + PCM WAVE オーディオファイルとして認識されません: [FILE] </notification> <notification name="SoundFileInvalidChannelCount"> @@ -581,31 +607,31 @@ L$が不足しているのでこのグループに参加することができま [FILE] </notification> <notification name="SoundFileInvalidSampleRate"> - ファイルのサンプル・レートがサポート外です(44.1kを指定する必要があります): + ファイルのサンプルレートがサポートされていません(44.1k である必要があります): [FILE] </notification> <notification name="SoundFileInvalidWordSize"> - ファイルのワード・サイズがサポート外です(8または16ビットを指定する必要があります): + ファイルのワードサイズがサポートされていません(8 または 16 ビットである必要があります): [FILE] </notification> <notification name="SoundFileInvalidHeader"> - WAVヘッダーにデータ・チャンクが見つかりません: + WAV ヘッダーにデータチャンクが見つかりません: [FILE] </notification> <notification name="SoundFileInvalidTooLong"> - オーディオ・ファイルが長すぎます。(最大10秒): + オーディオファイルが長すぎます。(最大 10 秒): [FILE] </notification> <notification name="ProblemWithFile"> - ファイル[FILE]にエラーがあります。 + 「 [FILE] 」に問題があります。 [ERROR] </notification> <notification name="CannotOpenTemporarySoundFile"> - 書き込み用の一時圧縮サウンド・ファイルを開くことができません:[FILE] + 書き込み用の一時圧縮サウンドファイルを開くことができません:[FILE] </notification> <notification name="UnknownVorbisEncodeFailure"> - 未知のVorbis 暗号化に失敗: [FILE] + 不明の Vorbis のエンコードに失敗: [FILE] </notification> <notification name="CannotEncodeFile"> 次のファイルのエンコードができません: [FILE] @@ -614,58 +640,62 @@ L$が不足しているのでこのグループに参加することができま 破損したリソースファイル: [FILE] </notification> <notification name="UnknownResourceFileVersion"> - 未知のlindenリソースファイルのバージョン: [FILE] + 不明のリンデンリソースファイルのバージョン: [FILE] </notification> <notification name="UnableToCreateOutputFile"> - 服装ファイルを作成できません: [FILE] + 出力ファイルを作成できません: [FILE] </notification> <notification name="DoNotSupportBulkAnimationUpload"> 現在 [APP_NAME] では、アニメーションの一括アップロードはサポートされていません。 </notification> <notification name="CannotUploadReason"> - 次の理由で、[FILE] をアップロードできません: [REASON] + 次の理由で、「 [FILE] 」をアップロードできません: [REASON] あとでもう一度試してください。 </notification> <notification name="LandmarkCreated"> 「 [LANDMARK_NAME] 」を「 [FOLDER_NAME] 」フォルダに追加しました。 </notification> + <notification name="LandmarkAlreadyExists"> + 現在地のランドマークを既に持っています。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CannotCreateLandmarkNotOwner"> - 土地の所有者が許可していないため、 -ランドマークを作成することはできません。 + 土地の所有者が許可していないため、ランドマークを作成することはできません。 </notification> <notification name="CannotRecompileSelectObjectsNoScripts"> - 再編集は不可能です。 -スクリプト化されたオブジェクトを選択してください。 + 「リコンパイル」できません。 +スクリプトのオブジェクトを選択してください。 </notification> <notification name="CannotRecompileSelectObjectsNoPermission"> - 「再編集」は不可能です。 + 「リコンパイル」できません。 -変更修正権限のある -スクリプト化されたオブジェクトを選択してください。 +修正修正権限のあるスクリプトのオブジェクトを選択してください。 </notification> <notification name="CannotResetSelectObjectsNoScripts"> - 「再設定」を行うことができません。 + 「再設定」ができません。 -スクリプト化されたオブジェクトを選択してください。 +スクリプトのオブジェクトを選択してください。 </notification> <notification name="CannotResetSelectObjectsNoPermission"> - 「再設定」を行うことができません。 + 「再設定」ができません。 -変更修正権限のある -スクリプト化されたオブジェクトを選択してください。 +修正権限のあるスクリプトのオブジェクトを選択してください。 + </notification> + <notification name="CannotOpenScriptObjectNoMod"> + 修正権限のないオブジェクトのスクリプトは開くことはできません。 </notification> <notification name="CannotSetRunningSelectObjectsNoScripts"> - スクリプトの「実行」の設定ができません。 + スクリプトの「実行」ができません。 -スクリプト化されたオブジェクトを選択してください。 +スクリプトのオブジェクトを選択してください。 </notification> <notification name="CannotSetRunningNotSelectObjectsNoScripts"> - スクリプトを「実行しない」に設定できません。 + スクリプトを「実行しない」設定にできません。 -スクリプト化されたオブジェクトを選択してください。 +スクリプトのオブジェクトを選択してください。 </notification> <notification name="NoFrontmostFloater"> - 保存すべきfrontmostフロータがありません。 + 保存する frontmost フロータがありません。 </notification> <notification name="SeachFilteredOnShortWords"> 指定した検索クエリは変更され、短すぎる語句は取り除かれています。 @@ -681,42 +711,42 @@ L$が不足しているのでこのグループに参加することができま </notification> <notification name="invalid_tport"> テレポート処理中に問題が発生しました。 ログインし直す必要があるかもしれません。 -このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。 +このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。 </notification> <notification name="invalid_region_handoff"> リージョン間の移動中に問題が発生しました。 ログインし直す必要があるかもしれません。 -このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。 +このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。 </notification> <notification name="blocked_tport"> - 申し訳ございません。テレポートは現在、ブロックされています。もう少し後でやり直してください。 -やり直してもテレポートできない場合は、いったんログアウトし、再度ログインして問題を解決してください。 + 申し訳ございません。テレポートは現在、ブロックされています。しばらくしてから再度お試しください。 +それでもテレポートできない場合は、ログアウトし、ログインし直して問題を解決してください。 </notification> <notification name="nolandmark_tport"> - 残念ながら、システムはランドマーク目的地を探せませんでした。 + 申し訳ございません。ランドマークの目的地が見つかりませんでした。 </notification> <notification name="timeout_tport"> - 申し訳ございません。システムはテレポート接続を完了できませんでした。 -もう少し後でやり直してください。 + 申し訳ございません。システムによるテレポート接続が完了できませんでした。 +しばらくしてから再度お試しください。 </notification> <notification name="noaccess_tport"> - 残念ながら、そのテレポート目的地へのアクセスがありません。 + 残念ながら、目的地へアクセスが許可されていないため、テレポートできません。 </notification> <notification name="missing_attach_tport"> - 添付物は、まだ到着していません。あと数秒間お待ちいただくか、いったんログアウトし、再度ログインしてからテレポートをやり直してださい。 + 添付物がまだ届いていません。テレポートをする前にあと数秒間お待ちいただくか、いったんログアウトし、再度ログインしてください。 </notification> <notification name="too_many_uploads_tport"> - この地域の資産キューが現在込み合っているため、テレポート・リクエストを時間通りに処理することが難しい状況です。 -数分後にやり直すか、または混雑していない他の地域をお試しください。 + このリージョンのアセットキューが現在混み合っているため、テレポートのリクエストをすぐに処理することが難しい状況です。 +数分後にやり直すか、混雑していない他のリージョンでお試しください。 </notification> <notification name="expired_tport"> - 申し訳ございません。システムはテレポート・リクエストを時間どおりに完了できませんでした。数分後にやり直してください。 + 申し訳ございません。システムはテレポートのリクエストを時間どおりに完了できませんでした。数分後にやり直してください。 </notification> <notification name="expired_region_handoff"> - 申し訳ございません。システムは地域間の移動を時間どおりに完了できませんでした。 + 申し訳ございません。システムはリージョン間の移動を時間どおりに完了できませんでした。 数分後にやり直してください。 </notification> <notification name="no_host"> - テレポート目的地を見つけられません。目的地が一時的に利用できない状態か、またはすでに消滅している可能性があります。数分後にやり直してください。 + テレポート目的地を見つけられません。目的地が一時的に利用できない状態か、すでに消滅している可能性があります。数分後にやり直してください。 </notification> <notification name="no_inventory_host"> 持ち物システムは現在利用できません。 @@ -726,15 +756,12 @@ L$が不足しているのでこのグループに参加することができま 区画が選定されていません。 </notification> <notification name="CannotSetLandOwnerMultipleRegions"> - 複数の地域が選択されたため、 -土地の所有権を取得できません。 -選択する面積を小さくして、もう一度試してください。 + 複数のリージョンが選択されたため、土地の所有権を取得できません。 +選択する面積を小さくして、もう一度お試しください。 </notification> <notification name="ForceOwnerAuctionWarning"> - この区画はオークションに出品されています。 -区画の所有権を取得するとオークションが無効になり、 -入札が開始していたら不満に思う住人が出てくるかもしれません。 -所有権を取得しますか? + この区画はオークションに出されています。 所有権を変更するとオークションはキャンセルとなり、既にオークションに参加している住人がいればその人に迷惑をかけてしまいます。 +所有権を変更しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="CannotContentifyNothingSelected"> @@ -746,12 +773,12 @@ L$が不足しているのでこのグループに参加することができま 土地が選択されていません。 </notification> <notification name="CannotReleaseLandNothingSelected"> - 土地を破棄することができません: + 土地を破棄できません: 区画が選定されていません。 </notification> <notification name="CannotReleaseLandNoRegion"> 土地を破棄できません: -地域が見つかりません。 +リージョンが見つかりません。 </notification> <notification name="CannotBuyLandNothingSelected"> 土地を購入できません: @@ -759,11 +786,10 @@ L$が不足しているのでこのグループに参加することができま </notification> <notification name="CannotBuyLandNoRegion"> 土地を購入できません: -この土地がある地域を見つけることができません +この土地があるリージョンを見つけることができません </notification> <notification name="CannotCloseFloaterBuyLand"> - [APP_NAME]による、 -この取引の見積りが完了するまで「土地を購入」ウィンドウを閉じることはできません。 + [APP_NAME] がこの取引価格を見積もるまでは、土地の購入ウィンドウを閉じることはできません。 </notification> <notification name="CannotDeedLandNothingSelected"> 土地を譲渡できません: @@ -775,21 +801,13 @@ L$が不足しているのでこのグループに参加することができま </notification> <notification name="CannotDeedLandNoRegion"> 土地を譲渡できません: -この土地がある地域が見つかりません。 +この土地があるリージョンが見つかりません。 </notification> <notification name="CannotDeedLandMultipleSelected"> 土地を譲渡できません: 複数の区画が選択されています。 -これより1つの区画を選択してください。 - </notification> - <notification name="ParcelCanPlayMedia"> - ここではストリーミング・メディア再生が可能です。 -メディアのストリーミングには、高速なインターネット接続環境が必要です。 - -利用可能になったら再生しますか? -(このオプションは、「環境設定」>「音声とビデオ」で後からでも変更できます) - <usetemplate name="okcancelbuttons" notext="無効化" yestext="メディアを再生"/> +区画を 1 つ選択してください。 </notification> <notification name="CannotDeedLandWaitingForServer"> 土地を譲渡できません: @@ -799,7 +817,7 @@ L$が不足しているのでこのグループに参加することができま </notification> <notification name="CannotDeedLandNoTransfer"> 土地を譲渡できません: -この地域 [REGION] では土地の譲渡が許されていません。 +[REGION] では土地の譲渡が許されていません。 </notification> <notification name="CannotReleaseLandWatingForServer"> 土地を破棄できません: @@ -809,9 +827,9 @@ L$が不足しているのでこのグループに参加することができま </notification> <notification name="CannotReleaseLandSelected"> 土地を破棄できません: -あなたは、選択したすべての区画を所有していません。 +あなたは、選択した区画のすべてを所有していません。 -1つの区画を選択してください。 +区画を 1 つ選択してください。 </notification> <notification name="CannotReleaseLandDontOwn"> 土地を破棄できません: @@ -819,12 +837,12 @@ L$が不足しているのでこのグループに参加することができま あなたの区画は緑色で表示されています。 </notification> <notification name="CannotReleaseLandRegionNotFound"> - 土地を破棄できません: -この土地がある地域が見つかりません。 + 土地を放棄できません: +この土地があるリージョンが見つかりません。 </notification> <notification name="CannotReleaseLandNoTransfer"> 土地を破棄できません: -この [REGION] では土地の譲渡が許されていません。 +[REGION] では土地の譲渡が許されていません。 </notification> <notification name="CannotReleaseLandPartialSelection"> 土地を破棄できません: @@ -833,9 +851,9 @@ L$が不足しているのでこのグループに参加することができま 区画全体を選択するか、または、まず最初に区画を分割してください。 </notification> <notification name="ReleaseLandWarning"> - あなたは、[AREA]平方メートルの土地を破棄しようとしています。 + あなたは、[AREA] 平方メートルの土地を破棄しようとしています。 この区画を破棄するとあなたの土地ではなくなりますが、 -L$は返金されません。 +L$ は返金されません。 土地を破棄しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> @@ -852,7 +870,7 @@ L$は返金されません。 区画の一部を選択してください。 </notification> <notification name="LandDivideWarning"> - この土地を分割すると、2つの区画に別れます。 + この土地を分割すると、2 つの区画に別れます。 区画ごとの設定が可能になります。 この操作を行うと、一部の設定がデフォルトにリセットされます。 土地の分割操作を続行しますか? @@ -860,11 +878,11 @@ L$は返金されません。 </notification> <notification name="CannotDivideLandNoRegion"> 土地を分割できません: -この土地がある地域が見つかりません。 +この土地があるリージョンが見つかりません。 </notification> <notification name="CannotJoinLandNoRegion"> 土地を統合できません: -この土地がある地域が見つかりません。 +この土地があるリージョンが見つかりません。 </notification> <notification name="CannotJoinLandNothingSelected"> 土地を統合できませんでした: @@ -872,19 +890,18 @@ L$は返金されません。 </notification> <notification name="CannotJoinLandEntireParcelSelected"> 土地を統合できません: -1つの区画しか選択されていません。 +区画が 1 つしか選択されていません。 両方の区画をまたいで土地を選択してください。 </notification> <notification name="CannotJoinLandSelection"> 土地を統合できません: -1つ以上の区画を選択する必要があります。 +区画を 1 つ以上選択する必要があります。 両方の区画をまたいで土地を選択してください。 </notification> <notification name="JoinLandWarning"> - この土地を統合すると、選択された長方形に交差する -全ての区画を基にして1つの大きな区画が作成されます。 + この土地を統合すると、選択された長方形に交差する全ての区画を基にして、大きな区画が 1 つ作成されます。 新しい区画の名前とオプションを再設定する必要があります。 土地を統合しますか? @@ -899,7 +916,7 @@ L$は返金されません。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="コピー"/> </notification> <notification name="ResolutionSwitchFail"> - 解像度を [RESX]x[RESY]に切り替えることができませんでした。 + 解像度を [RESX]x[RESY] に切り替えることができませんでした。 </notification> <notification name="ErrorUndefinedGrasses"> エラー:未定義の植物:[SPECIES] @@ -908,48 +925,42 @@ L$は返金されません。 エラー:未定義の樹木:[SPECIES] </notification> <notification name="CannotSaveWearableOutOfSpace"> - 「[NAME]」を服のファイルに保存できません。 コンピューターの -ディスクスペースを少し増やしてから、もう一度 -保存してみてください。 + 「 [NAME] 」を衣類のファイルに保存できません。 +コンピューターのディスクスペースを少し増やしてから、もう一度保存してみてください。 </notification> <notification name="CannotSaveToAssetStore"> - [NAME]を中央資産格納庫に保存できません。 -これは一時的な不具合です。 -服飾品などをカスタマイズし、数分後にもう一度保存してください。 + 「 [NAME] 」を保存できません。 +通常これは一時的なエラーです。 数分後にもう一度着用物をカスタマイズ・保存してください。 </notification> <notification name="YouHaveBeenLoggedOut"> - あなたは[SECOND_LIFE]からログアウトされました。 + しまった、 [SECOND_LIFE] からログアウトされてしまいました。 [MESSAGE] -「IMとチャットを表示」をクリックすると、 -現在あるIMとチャットを確認できます。 -確認しない場合は「終了」をクリックし、 -すぐに[APP_NAME]を終了してください。 <usetemplate name="okcancelbuttons" notext="終了" yestext="IMとチャットを表示"/> </notification> <notification name="OnlyOfficerCanBuyLand"> グループ用の土地の購入ができません: あなたにはアクティブなグループのために土地を購入する権限がありません。 </notification> - <notification label="フレンドを追加" name="AddFriend"> - フレンドとして追加すると、お互いの現在地の地図への表示許可、オンラインステータス表示の設定をすることができます。 + <notification label="フレンド登録" name="AddFriend"> + フレンド登録すると、お互いの現在地の地図への表示許可、オンライン状態の表示設定ができます。 [NAME] にフレンドシップを送りますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> - <notification label="フレンドを追加" name="AddFriendWithMessage"> - フレンドとして追加すると、お互いの現在地の地図への表示許可、オンラインステータス表示の設定をすることができます。 + <notification label="フレンド登録" name="AddFriendWithMessage"> + フレンド登録すると、お互いの現在地の地図への表示許可、オンライン状態の表示設定ができます。 -[NAME] にフレンドシップのオファーをしますか? +[NAME] にフレンドシップを申し出ますか? <form name="form"> <input name="message"> - フレンドとして登録してくれますか? + フレンド登録してくれますか? </input> <button name="Offer" text="OK"/> <button name="Cancel" text="キャンセル"/> </form> </notification> <notification name="RemoveFromFriends"> - [FIRST_NAME] [LAST_NAME]をフレンドリストから削除しますか? + [FIRST_NAME] [LAST_NAME] をフレンドリストから削除しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="RemoveMultipleFromFriends"> @@ -958,135 +969,134 @@ L$は返金されません。 </notification> <notification name="GodDeleteAllScriptedPublicObjectsByUser"> **[AVATAR_NAME]** -所有のすべてのスクリプト・オブジェクトをこのシム内の他のすべての土地から削除しようとしています。操作を続行しますか? +所有のすべてのスクリプトオブジェクトをこのシム内の他のすべての土地から削除しようとしています。操作を続行しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="GodDeleteAllScriptedObjectsByUser"> **[AVATAR_NAME]** -所有のすべてのスクリプト・オブジェクトをこのシム内のすべての土地から削除しようとしています。操作を続行しますか? +所有のすべてのスクリプトオブジェクトをこのシム内のすべての土地から削除しようとしています。操作を続行しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="GodDeleteAllObjectsByUser"> **[AVATAR_NAME]** -所有のすべてのオブジェクト(スクリプト・オブジェクトと非スクリプト・オブジェクト)を +所有のすべてのオブジェクト(スクリプトオブジェクトと非スクリプトオブジェクト)を このシム内のすべての土地から削除しようとしています。操作を続行しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="BlankClassifiedName"> - クラシファイドに名前を指定してください。 + クラシファイドの名前を指定してください。 </notification> <notification name="MinClassifiedPrice"> - 広告料の支払い金額は、Lと[MIN_PRICE]が下限です。 + 広告料は最低 L$ [MIN_PRICE] 必要です。 金額を増やしてください。 </notification> <notification name="ConfirmObjectDeleteLock"> - 選択したアイテムの1つ以上がロックされています。 + 選択したアイテムのうち、少なくとも 1 つがロックされています。 -本当にこれらのアイテムの削除を続けますか? +本当に削除しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteNoCopy"> - 選択したアイテムの1つ以上がコピーできません。 + 選択したアイテムのうち、少なくとも 1 つがコピーできません。 -本当にこれらのアイテムの削除を続けますか? +本当に削除しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteNoOwn"> - 選択したアイテムの1つ以上を、あなたは所有していません。 + 選択したアイテムのうち、少なくとも 1 つがあなたの所有物ではありません。 -本当にこれらのアイテムの削除を続けますか? +本当に削除しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopy"> - 一つ以上のオブジェクトがロックされています。 -一つ以上のオブジェクトがコピーできません。 + 少なくとも 1 つのオブジェクトがロックされています。 +少なくとも 1 つのオブジェクトがコピーできません。 -本当にこれらのアイテムの削除を続けますか? +本当に削除しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoOwn"> - 一つ以上のオブジェクトがロックされています。 -1つ以上のオブジェクトを、あなたは所有していません。 + 少なくとも 1 つのオブジェクトがロックされています。 +少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。 -本当にこれらのアイテムの削除を続けますか? +本当に削除しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteNoCopyNoOwn"> - 一つ以上のオブジェクトがコピーできません。 -1つ以上のオブジェクトを、あなたは所有していません。 + 少なくとも 1 つのオブジェクトがコピーできません。 +少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。 -本当にこれらのアイテムの削除を続けますか? +本当に削除しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectDeleteLockNoCopyNoOwn"> - 一つ以上のオブジェクトがロックされています。 -一つ以上のオブジェクトがコピーできません。 -1つ以上のオブジェクトを、あなたは所有していません。 + 少なくとも 1 つのオブジェクトがロックされています。 +少なくとも 1 つのオブジェクトがコピーできません。 +少なくとも 1 つのオブジェクトが、あなたの所有物ではありません。 -本当にこれらのアイテムの削除を続けますか? +本当に削除しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectTakeLock"> - 一つ以上のオブジェクトがロックされています。 + 少なくとも 1 つのオブジェクトがロックされています。 -これらのアイテムの取得を続けますか? +本当にこのまま取得を続けますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectTakeNoOwn"> - 取得しようとしているオブジェクトには、あなたの所有物でないオブジェクトが含まれています。 -あなたの所有物ではないオブジェクトを取得すると、次のオーナーの権限がそのオブジェクトに適用されます。 -そのため、将来、変更やコピーの能力が制限される可能性があります。 + 取得しようとしているオブジェクトには、あなたの所有物ではないオブジェクトが含まれています。 +あなたの所有物ではないオブジェクトを取得すると、次の所有者の権限がそのオブジェクトに適用されます。 +そのため、将来、修正やコピーの能力が制限される可能性があります。 -これらのアイテムの取得を続けますか? +本当にこのまま取得を続けますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmObjectTakeLockNoOwn"> - 1つ以上のオブジェクトがロックされています。 -取得しようとしているオブジェクトには、あなたの所有物でないオブジェクトが含まれています。 -あなたの所有物ではないオブジェクトを取得すると、次のオーナーの権限がそのオブジェクトに適用されます。 -そのため、将来、変更やコピーの能力が制限される可能性があります。 + 少なくとも 1 つのオブジェクトがロックされています。 +取得しようとしているオブジェクトには、あなたの所有物ではないオブジェクトが含まれています。 +あなたの所有物ではないオブジェクトを取得すると、次の所有者の権限がそのオブジェクトに適用されます。 +そのため、将来、編集やコピーの能力が制限される可能性があります。 この選択内容のままで続行することは可能ですが、 -これらのアイテムの取得を続けますか? +本当にこのまま取得を続けますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="CantBuyLandAcrossMultipleRegions"> - 複数の地域が選択されたため、土地を購入できません。 + 複数のリージョンが選択されたため、土地を購入できません。 選択する面積を小さくしてもう一度試してください。 </notification> <notification name="DeedLandToGroup"> この区画の譲渡に際しては、 -このグループが十分な土地クレジットを保有および維持していることが必要です。 -土地の購入価格は、オーナーに返金されません。譲渡された区画が売れると、販売価格はグループ・メンバーに均等に分配されます。 +このグループが十分な土地クレジットを保有および維持している必要があります。 +土地の購入価格は、所有者に返金されません。譲渡された区画が売れると、売上金額はグループメンバーに均等に分配されます。 -この[AREA]平方メートルの土地を、グループ -「[GROUP_NAME]」に譲渡しますか? +この [AREA] 平方メートルの土地を、グループ +「 [GROUP_NAME] 」に譲渡しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="DeedLandToGroupWithContribution"> - この区画の譲渡に際しては、このグループが -十分な土地クレジットを保有および維持していることが必要です。 + この区画の譲渡に際しては、このグループが十分な土地クレジットを保有および維持している必要があります。 この譲渡により、 -「[FIRST_NAME] [LAST_NAME]」から +「 [FIRST_NAME] [LAST_NAME] 」から グループに対して土地が同時に提供されます。 -土地の購入価格は、オーナーに返金されません。 -譲渡された区画が売れると、販売料金はグループ・メンバーに均等に分配されます。 +土地の購入価格は、所有者には返金されません。 +譲渡された区画が売れると、売上金額はグループメンバーに均等に分配されます。 -この[AREA]平方メートルの土地を、グループ「[GROUP_NAME]」に譲渡しますか? +この [AREA] 平方メートルの土地を、「 [GROUP_NAME] 」に譲渡しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="DisplaySetToSafe"> - -safeオプションを指定したので、 -表示設定はセーフ・レベルに設定されています。 + -safe オプションを指定したので、 +表示設定はセーフレベルに設定されています。 </notification> <notification name="DisplaySetToRecommended"> - 表示設定は、あなたのシステム構成に -基づいて推奨されたレベルに設定されています。 + 表示設定は、あなたのシステム構成に基づいて推奨されたレベルに設定されています。 </notification> <notification name="ErrorMessage"> [ERROR_MESSAGE] + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="AvatarMovedDesired"> 目的地は現在ご利用いただけません。 @@ -1099,21 +1109,20 @@ L$は返金されません。 <notification name="AvatarMovedHome"> ホームロケーションは現在ご利用いただけません。 近くのリージョンに移動しました。 -新たにホームを設定しなおすといいかもしれません。 +新たにホームを設定し直す必要があるかもしれません。 </notification> <notification name="ClothingLoading"> 現在衣類をダウンロード中です。 このまま [SECOND_LIFE] を通常通りご使用いただけます。他人からはあなたは正しく表示されます。 <form name="form"> - <ignore name="ignore" text="衣類がダウンロードされるまで時間がかかっています"/> + <ignore name="ignore" text="衣類がダウンロードされるまで時間がかかっているとき"/> </form> </notification> <notification name="FirstRun"> - [APP_NAME]のインストールが完了しました。 + [APP_NAME] のインストールが完了しました。 -[SECOND_LIFE] の使用が初めての方は、 -ログイン前にアカウントの作成が必要です。 -[https://join.secondlife.com/index.php?lang=ja-JP secondlife.com]に移動し、新規アカウントの作成を行いますか? +[SECOND_LIFE] を使ったことがない場合は、ログインする前にアカウントの作成を行ってください。 +[http://join.secondlife.com/?lang=ja-JP] で新しいアカウントを作成しますか? <usetemplate name="okcancelbuttons" notext="続行" yestext="新規アカウント..."/> </notification> <notification name="LoginPacketNeverReceived"> @@ -1133,8 +1142,8 @@ L$は返金されません。 まもなくあなたのアバターが表示されます。 矢印キーを使用して歩きます。 -ヘルプが必要なときや[SECOND_LIFE]について知りたいときは、 -F1キーを押してください。 +ヘルプが必要なときや [SECOND_LIFE] について知りたいときは、 +F1 キーを押してください。 男性あるいは女性のアバターを選択してください。 あなたの決定は後で変更できます。 <usetemplate name="okcancelbuttons" notext="女性" yestext="男性"/> @@ -1143,33 +1152,31 @@ F1キーを押してください。 [NAME] L$[PRICE] 残高不足のため実行不可です。 </notification> <notification name="GrantedModifyRights"> - [FIRST_NAME] [LAST_NAME] のオブジェクトの編集権限を得ました。 + [NAME] は、あなたにオブジェクトの編集権限を与えました。 </notification> <notification name="RevokedModifyRights"> - [FIRST_NAME] [LAST_NAME] -のオブジェクトを修正する権限が取り消されました。 + [NAME] のオブジェクトを編集する権限は取り消されました。 </notification> <notification name="FlushMapVisibilityCaches"> - この手順は、この地域の地図のキャッシュを消去します。 -これが便利なのはデバッグ時のみです。 -(作成中は5分間経つと、全員の地図が再度ログイン後に -更新されます) + このリージョンの地図のキャッシュを消去します。 +デバッグ目的のみに便利な操作です。 +(作成中は 5 分間経つと、全員の地図が再度ログイン後に更新されます) <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="BuyOneObjectOnly"> - 一度に一つ以上のオブジェクトをと買うことはできません。 オブジェクトを一つだけ選んでもう一度お試しください。 + 一度に 1 つ以上のオブジェクトを買うことはできません。 オブジェクトを 1 つだけ選んでもう一度お試しください。 </notification> <notification name="OnlyCopyContentsOfSingleItem"> - 一度に複数のアイテムのコンテンツはコピーできません。 -選択するオブジェクトを1つだけにして、もう一度試してください。 + 一度に複数のアイテムの中身をコピーできません。 +オブジェクトを 1 つだけ選択して、もう一度お試しください。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="KickUsersFromRegion"> - この地域の全ての住人をホームにテレポートしますか? + このリージョンにいる全ての住人をホームにテレポートしますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="EstateObjectReturn"> - [USER_NAME]が所有しているオブジェクトを返却しますか? + [USER_NAME] が所有しているオブジェクトを返却しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="InvalidTerrainBitDepth"> @@ -1180,17 +1187,16 @@ F1キーを押してください。 </notification> <notification name="InvalidTerrainSize"> 地域テクスチャを設定できませんでした: -地形テクスチャ[TEXTURE_NUM]は、[TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y]では大きすぎます。 +地形テクスチャ「 [TEXTURE_NUM] 」は、[TEXTURE_SIZE_X]x[TEXTURE_SIZE_Y] では大きすぎます。 -テクスチャ[TEXTURE_NUM]を24ビット512x512かそれ以下のイメージと交換し、「適用」を再度クリックしてください。 +「 [TEXTURE_NUM] 」を 24 ビット 512x512 かそれ以下のイメージと交換し、「適用」を再度クリックしてください。 </notification> <notification name="RawUploadStarted"> - アップロード開始。 接続速度によっては、 -最大2分間かかります。 + アップロードを開始しました。 接続速度によっては、最大 2 分間かかります。 </notification> <notification name="ConfirmBakeTerrain"> 現在の地形を構築しようとしています。 -この操作を行うと、現在の地形が上昇/下降の制限範囲の中心になり、「復帰」ツールのデフォルトになります。 +この操作を行うと、現在の地形が上昇・下降の制限範囲の中心となり、「復元」ツールのデフォルトになります。 操作を続行しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> @@ -1198,53 +1204,51 @@ F1キーを押してください。 許可住人は [MAX_AGENTS] 人までです。 </notification> <notification name="MaxBannedAgentsOnRegion"> - 禁止住人は[MAX_BANNED]人までです。 + 禁止住人は [MAX_BANNED] 人までです。 </notification> <notification name="MaxAgentOnRegionBatch"> [NUM_ADDED] 個のエージェントを追加しようとして失敗しました: [MAX_AGENTS] [LIST_TYPE] 制限を [NUM_EXCESS] 個超過しています。 </notification> <notification name="MaxAllowedGroupsOnRegion"> - 許可グループは[MAX_GROUPS]グループまでです。 + 許可グループは [MAX_GROUPS] グループまでです。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="構築する"/> </notification> <notification name="MaxManagersOnRegion"> - 不動産マネージャーは[MAX_MANAGER]人までです。 + 不動産マネージャーは [MAX_MANAGER] 人までです。 </notification> <notification name="OwnerCanNotBeDenied"> - 不動産オーナーを不動産「禁止住人」リストに追加できません。 + 不動産オーナーを不動産の「禁止住人」リストに追加できません。 </notification> <notification name="CanNotChangeAppearanceUntilLoaded"> - 服および形がロードされるまで、容姿の変更はできません。 + 衣類およびシェイプが読み込まれるまでは、容姿の変更はできません。 </notification> <notification name="ClassifiedMustBeAlphanumeric"> - クラシファイド広告の名前は、アルファベットか -数字で始めます。 句読点では始められません。 + クラシファイド広告の名前は、アルファベットか数字で始めます。句読点では始められません。 </notification> <notification name="CantSetBuyObject"> - オブジェクトが販売対象ではないため、オブジェクトの購入が設定できません。 -販売対象のオブジェクトを設定し、もう一度試してください。 + オブジェクトが販売対象ではないため、オブジェクトの購入ができません。 +販売対象のオブジェクトを指定してもう一度試してください。 </notification> <notification name="FinishedRawDownload"> - 未加工の地形ファイルを次へとダウンロードしました: -[DOWNLOAD_PATH]。 + 未加工の地形ファイルをダウンロードしました: +[DOWNLOAD_PATH] </notification> <notification name="DownloadWindowsMandatory"> - [APP_NAME]の新しいバージョンが利用可能です。 + [APP_NAME] の最新バージョンがご利用可能です。 [MESSAGE] -[APP_NAME]を使用するためには、 -このアップデートをダウンロードする必要があります。 +[APP_NAME] をご利用になるにはこのアップデートは必須です。 <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/> </notification> <notification name="DownloadWindows"> - [APP_NAME]のアップデート・バージョンが利用可能です。 + [APP_NAME] のアップデートバージョンがご利用可能です。 [MESSAGE] -このアップデートは必須ではありませんが、パフォーマンスと安定性を向上させるためにインストールすることをお勧めします。 +このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。 <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/> </notification> <notification name="DownloadWindowsReleaseForDownload"> - [APP_NAME]のアップデート・バージョンが利用可能です。 + [APP_NAME] のアップデートバージョンがご利用可能です。 [MESSAGE] -このアップデートは必須ではありませんが、パフォーマンスと安定性を向上させるためにインストールすることをお勧めします。 +このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。 <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/> </notification> <notification name="DownloadLinuxMandatory"> @@ -1266,123 +1270,123 @@ F1キーを押してください。 <usetemplate name="okcancelbuttons" notext="続ける" yestext="ダウンロード"/> </notification> <notification name="DownloadMacMandatory"> - [APP_NAME]の新しいバージョンが利用可能です。 + [APP_NAME] の最新バージョンがご利用可能です。 [MESSAGE] -[APP_NAME]を使用するために、 -このアップデートをダウンロードする必要があります。 +[APP_NAME] をご利用になるにはこのアップデートは必須です。 -アプリケーションがあるフォルダにダウンロードしますか? +あなたのアプリケーションフォルダにダウンロードしますか? <usetemplate name="okcancelbuttons" notext="終了" yestext="ダウンロード"/> </notification> <notification name="DownloadMac"> - [APP_NAME]のアップデート・バージョンが利用可能です。 + [APP_NAME] のアップデートバージョンがご利用可能です。 [MESSAGE] -このアップデートは必須ではありませんが、パフォーマンスと安定性を向上させるためにインストールすることをお勧めします。 +このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。 -アプリケーションがあるフォルダにダウンロードしますか? +あなたのアプリケーションフォルダにダウンロードしますか? <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/> </notification> <notification name="DownloadMacReleaseForDownload"> - [APP_NAME]のアップデート・バージョンが利用可能です。 + [APP_NAME] のアップデートバージョンがご利用可能です。 [MESSAGE] -このアップデートは必須ではありませんが、パフォーマンスと安定性を向上させるためにインストールすることをお勧めします。 +このアップデートは必須ではありませんが、パフォーマンス向上のためにインストールをおすすめします。 -アプリケーションがあるフォルダにダウンロードしますか? +あなたのアプリケーションフォルダにダウンロードしますか? <usetemplate name="okcancelbuttons" notext="続行" yestext="ダウンロード"/> </notification> <notification name="DeedObjectToGroup"> このオブジェクトを譲渡するとグループは以下のことが可能です: -* オブジェクトに支払われたL$を受領します。 - <usetemplate ignoretext="オブジェクトをグループに譲渡する前に確認する" name="okcancelignore" notext="取り消し" yestext="譲渡"/> +* オブジェクトに支払われた L$ を受領します。 + <usetemplate ignoretext="オブジェクトをグループに譲渡する前の確認" name="okcancelignore" notext="取り消し" yestext="譲渡"/> </notification> <notification name="WebLaunchExternalTarget"> Web ブラウザを開いてこのコンテンツを表示しますか? - <usetemplate ignoretext="ブラウザを起動して Web ページを見る" name="okcancelignore" notext="キャンセル" yestext="OK"/> + <usetemplate ignoretext="ブラウザを起動して Web ページを見るとき" name="okcancelignore" notext="キャンセル" yestext="OK"/> </notification> <notification name="WebLaunchJoinNow"> - secondlife.com でアカウントの管理をしますか? - <usetemplate ignoretext="ブラウザを起動してアカウントを管理する" name="okcancelignore" notext="取り消し" yestext="OK"/> + [http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウントを管理しますか? + <usetemplate ignoretext="ブラウザを起動してアカウントを管理するとき" name="okcancelignore" notext="取り消し" yestext="OK"/> </notification> <notification name="WebLaunchSecurityIssues"> - [SECOND_LIFE] Wikiで、 -セキュリティ問題を報告する方法をご覧ください。 - <usetemplate ignoretext="ブラウザを起動してセキュリティ問題の報告の仕方を確認する" name="okcancelignore" notext="キャンセル" yestext="OK"/> + [SECOND_LIFE] Wiki で、セキュリティ問題を報告する方法をご覧ください。 + <usetemplate ignoretext="ブラウザを起動してセキュリティ問題の報告の仕方を確認するとき" name="okcancelignore" notext="キャンセル" yestext="OK"/> </notification> <notification name="WebLaunchQAWiki"> - [SECOND_LIFE] 品質保証関連Wikiをご覧ください。 - <usetemplate ignoretext="ブラウザを起動して QA Wiki を見る" name="okcancelignore" notext="キャンセル" yestext="OK"/> + [SECOND_LIFE] 品質保証関連 Wiki をご覧ください。 + <usetemplate ignoretext="ブラウザを起動して QA Wiki を見るとき" name="okcancelignore" notext="キャンセル" yestext="OK"/> </notification> <notification name="WebLaunchPublicIssue"> - [SECOND_LIFE]のパブリック問題トラッカーで、 + [SECOND_LIFE] のパブリック問題トラッカーで、 バグやその他の問題を報告できます。 - <usetemplate ignoretext="ブラウザを確認してパブリック問題トラッカーを使用する" name="okcancelignore" notext="キャンセル" yestext="ページへ行く"/> + <usetemplate ignoretext="ブラウザを起動してパブリック問題トラッカーを使用するとき" name="okcancelignore" notext="キャンセル" yestext="ページへ行く"/> </notification> <notification name="WebLaunchSupportWiki"> - Linden公式ブログで、最新のニュースや情報を入手してください。 - <usetemplate ignoretext="ブラウザを起動して公式ブログを見る" name="okcancelignore" notext="取り消し" yestext="OK"/> + Linden 公式ブログで、最新のニュースや情報を入手してください。 + <usetemplate ignoretext="ブラウザを起動して公式ブログを見るとき" name="okcancelignore" notext="取り消し" yestext="OK"/> </notification> <notification name="WebLaunchLSLGuide"> スクリプトガイドを開きますか? - <usetemplate ignoretext="ブラウザを起動してスクリプトガイドを見る" name="okcancelignore" notext="取り消し" yestext="OK"/> + <usetemplate ignoretext="ブラウザを起動してスクリプトガイドを見るとき" name="okcancelignore" notext="取り消し" yestext="OK"/> </notification> <notification name="WebLaunchLSLWiki"> LSL ポータルでスクリプトに関する情報を確認しますか? - <usetemplate ignoretext="ブラウザを起動して LSL ポータルを見る" name="okcancelignore" notext="取り消し" yestext="ページに移動"/> + <usetemplate ignoretext="ブラウザを起動して LSL ポータルを見るとき" name="okcancelignore" notext="取り消し" yestext="ページに移動"/> </notification> <notification name="ReturnToOwner"> 選択したオブジェクトを、所有者に返却しますか? -譲渡可能なオブジェクトは -以前の所有者に返却されます。 +「再販・プレゼント可」の譲渡されたオブジェクトは、以前の所有者に返却されます。 -*警告* 移転が不可能の譲渡されたオブジェクトは削除されます! - <usetemplate ignoretext="オブジェクトを所有者に返却する前に確認する" name="okcancelignore" notext="取り消し" yestext="OK"/> +*警告* 「再販・プレゼント不可」の譲渡されたオブジェクトは、削除されます! + <usetemplate ignoretext="オブジェクトを所有者に返却する前の確認" name="okcancelignore" notext="取り消し" yestext="OK"/> </notification> <notification name="GroupLeaveConfirmMember"> - 現在あなたは [GROUP]のメンバーです。 -ここから抜けますか? + 現在あなたは [GROUP] のメンバーです。 +このグループを抜けますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ConfirmKick"> - すべてのユーザーをグリッド外にキックしようとしています。操作を続行しますか? + すべてのユーザーをグリッドの外にキックしようとしています。操作を続行しますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="全てのユーザを追い出す"/> </notification> <notification name="MuteLinden"> - 残念ながらLindenを無視設定に入れることはできません。 + リンデンをブロックすることはできません。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="CannotStartAuctionAlreadyForSale"> 既に売り出し中の区画なのでオークションにかけることはできません。 オークションにかけたい場合は売り出し設定を解除してから行ってください。 </notification> - <notification label="オブジェクトを名前でミュートできませんでした" name="MuteByNameFailed"> - あなたはすでにこの名前をミュートしています。 + <notification label="名前でのオブジェクトのブロックに失敗しました" name="MuteByNameFailed"> + この名前は既にブロック済みです。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RemoveItemWarn"> - コンテンツを削除すると、許可があっても、オブジェクトにダメージを与えることがあります。 -そのアイテムの削除を続けますか? + コンテンツを削除すると、許可があってもオブジェクトに損傷を与えることがあります。 +削除を続けますか? <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="CantOfferCallingCard"> - 現在コーリングカードを送れません。数分後にもう一度試してください。 + 現在コーリングカードを送れません。数分後にもう一度お試しください。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="CantOfferFriendship"> - 現在フレンドシップを送れません。数分後に試してください。 + 現在フレンドシップを送れません。数分後にもう一度お試しください。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="BusyModeSet"> 取り込み中モードになりました。 -チャットとインスタントメッセージは表示されません。 受信するインスタントメッセージには取り込み中返答メッセージが表示されます。 テレポートのオファーは受け取り拒否となります。 アイテムのオファーはすべてゴミ箱に入ります。 - <usetemplate ignoretext="ログイン状態を取り込み中モードに変更する" name="okignore" yestext="OK"/> +チャットとインスタントメッセージは表示されません。 受信するインスタントメッセージには取り込み中返答メッセージが表示されます。 テレポートのオファーは受け取り拒否となります。 アイテムのオファーはすべてごみ箱に入ります。 + <usetemplate ignoretext="ログイン状態を取り込み中モードに変更するとき" name="okignore" yestext="OK"/> </notification> <notification name="JoinedTooManyGroupsMember"> 加入できるグループの最大限に達しました。 このグループに加入するために他のグループを脱退するか、この申し入れを断ってください。 [NAME] があなたをグループのメンバーとして勧誘しています。 -[INVITE] <usetemplate name="okcancelbuttons" notext="辞退" yestext="参加"/> </notification> + <notification name="JoinedTooManyGroups"> + 加入できるグループの最大限に達しました。 新しくグループに参加、または作成する前に、どれかグループから抜けてください。 + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="KickUser"> - どんなメッセージを表示して、このユーザーを追い出しますか? + どのようなメッセージをつけてこのユーザーを追い出しますか? <form name="form"> <input name="message"> あなたは管理者によりログオフされました。 @@ -1392,7 +1396,7 @@ F1キーを押してください。 </form> </notification> <notification name="KickAllUsers"> - どんなメッセージを表示して、グリッドにいる全員を追い出しますか? + どのようなメッセージをつけてグリッドにいる全員を追い出しますか? <form name="form"> <input name="message"> あなたは管理者によりログオフされました。 @@ -1402,17 +1406,17 @@ F1キーを押してください。 </form> </notification> <notification name="FreezeUser"> - どんなメッセージを表示して、このユーザーをフリーズしますか? + どのようなメッセージをつけてこのユーザーをフリーズしますか? <form name="form"> <input name="message"> - あなたはフリーズされています。 動くこともチャットすることもできません。 管理者がIMを通じてあなたに連絡します。 + あなたはフリーズされています。 動くこともチャットすることもできません。 管理者が IM であなたに連絡します。 </input> <button name="OK" text="OK"/> <button name="Cancel" text="取り消し"/> </form> </notification> <notification name="UnFreezeUser"> - どんなメッセージを表示して、このユーザーのフリーズを解除しますか? + どのようなメッセージをつけてこのユーザーのフリーズを解除しますか? <form name="form"> <input name="message"> もうフリーズされていません。 @@ -1422,36 +1426,39 @@ F1キーを押してください。 </form> </notification> <notification name="OfferTeleport"> - 次のメッセージを添えてあなたが今いる場所へのテレポートを送りますか? + 次のメッセージを添えて現在地にテレポートを送りますか? <form name="form"> <input name="message"> - [REGION]に来ませんか? + [REGION] に来ませんか? </input> <button name="OK" text="OK"/> <button name="Cancel" text="取り消し"/> </form> </notification> <notification name="OfferTeleportFromGod"> - ユーザーをゴッド・コールで呼び寄せますか? + ユーザーをゴッドサモンで呼び寄せますか? <form name="form"> <input name="message"> - [REGION]に来ませんか? + [REGION] に来ませんか? </input> <button name="OK" text="OK"/> <button name="Cancel" text="取り消し"/> </form> </notification> <notification name="TeleportFromLandmark"> - 本当にテレポートしますか? - <usetemplate ignoretext="ランドマークにテレポートしたいか確認する" name="okcancelignore" notext="キャンセル" yestext="テレポート"/> + このまま <nolink>[LOCATION]</nolink> にテレポートしますか? + <usetemplate ignoretext="ランドマークにテレポートしたいかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/> </notification> <notification name="TeleportToPick"> [PICK] にテレポートしますか? - <usetemplate ignoretext="ピックの場所にテレポートしたいか確認する" name="okcancelignore" notext="キャンセル" yestext="テレポート"/> + <usetemplate ignoretext="ピックの場所にテレポートしたいかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/> + </notification> + <notification name="TeleportToClassified"> + [CLASSIFIED] にテレポートしますか? + <usetemplate ignoretext="クラシファイド広告の場所にテレポートしたいかの確認" name="okcancelignore" notext="キャンセル" yestext="テレポート"/> </notification> <notification label="あなたの不動産内の全員にメッセージを送信" name="MessageEstate"> - 今あなたの不動産にいる人全員に送る -短いメッセージを入力してください。 + 今あなたの不動産にいる人全員に送る、短いメッセージを入力してください。 <form name="form"> <input name="message"/> <button name="OK" text="OK"/> @@ -1459,87 +1466,86 @@ F1キーを押してください。 </form> </notification> <notification label="Lindenの不動産を変更" name="ChangeLindenEstate"> - あなたはLinden所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)を変更しようとしています。 + あなたはリンデン所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)を変更しようとしています。 -これはユーザーの経験を根本から揺るがしかねない「非常に危険な行為」です。これにより、メインランドで多数の地域が変更され、スペースサーバーに悪影響が生じます。 +これはユーザーの経験を根本から揺るがしかねない「非常に危険な行為」です。これにより、メインランドで多数のリージョン(地域)が変更され、スペースサーバーに悪影響が生じます。 操作を続行しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification label="Lindenの不動産へのアクセスを変更" name="ChangeLindenAccess"> - あなたはLinden所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)へのアクセスリストを変更しようとしています。 + あなたはリンデン所有の不動産(メインランド、ティーングリッド、オリエンテーションなど)へのアクセスリストを変更しようとしています。 この行為は「危険」であり、グリッドからオブジェクトやお金の転送をもたらすハッキングを引き起こす可能性があるため、完全にそれを意図した場合のみ行うべきものです。 -これにより多数の地域が変更され、スペースサーバーに悪影響が生じます。 +これにより多数のリージョン(地域)が変更され、スペースサーバーに悪影響が生じます。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification label="不動産を選択" name="EstateAllowedAgentAdd"> - この不動産の許可リストだけに追加しますか? それとも[ALL_ESTATES]のすべての許可リストに追加しますか? + この不動産限定の許可リストに追加しますか? それとも [ALL_ESTATES] の許可リストに追加しますか? <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> </notification> <notification label="不動産を選択" name="EstateAllowedAgentRemove"> - 許可リストからの削除をこの不動産についてのみ行いますか? それとも、[ALL_ESTATES]について行いますか? + この不動産限定の許可リストから削除しますか? それとも、[ALL_ESTATES] から削除しますか? <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> </notification> <notification label="不動産を選択" name="EstateAllowedGroupAdd"> - この不動産のグループ許可リストだけに追加しますか? それとも[ALL_ESTATES]のグループ許可リストに追加しますか? + この不動産限定のグループ許可リストに追加しますか? それとも [ALL_ESTATES] のグループ許可リストに追加しますか? <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> </notification> <notification label="不動産を選択" name="EstateAllowedGroupRemove"> - 許可リストからの削除をこの不動産についてのみ行いますか? それとも、[ALL_ESTATES]について行いますか? + この不動産限定の許可リストから削除しますか? それとも、[ALL_ESTATES] から削除しますか? <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> </notification> <notification label="不動産を選択" name="EstateBannedAgentAdd"> - この不動産についてのみアクセスを拒否しますか? それとも[ALL_ESTATE]へのアクセスを拒否しますか? + この不動産限定でアクセスを拒否しますか? それとも [ALL_ESTATE] へのアクセスを拒否しますか? <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> </notification> <notification label="不動産を選択" name="EstateBannedAgentRemove"> - この住人を、この不動産のみ、または[ALL_ESTATES]へとアクセスできるように、禁止リストから削除しますか? + この住人が、この不動産限定、または [ALL_ESTATES] にアクセスできるように、禁止リストから削除しますか? <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> </notification> <notification label="不動産を選択" name="EstateManagerAdd"> - この不動産のみ、または[ALL_ESTATES]に対して、不動産マネージャーを追加しますか? + この不動産限定、または [ALL_ESTATES] の不動産マネージャーを追加しますか? <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> </notification> <notification label="不動産を選択" name="EstateManagerRemove"> - 不動産マネージャーを、この不動産のみ、または[ALL_ESTATES]から、削除しますか? + 不動産マネージャーを、この不動産限定、または [ALL_ESTATES] から、削除しますか? <usetemplate canceltext="取り消し" name="yesnocancelbuttons" notext="すべての不動産" yestext="この不動産"/> </notification> <notification label="キックを確認" name="EstateKickUser"> - この不動産から[EVIL_USER]を追い出しますか? + この不動産から [EVIL_USER] を追い出しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="EstateChangeCovenant"> - 不動産約款を変更しようとしています。操作を続行しますか? + 不動産約款を変更しようとしています。続けますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="RegionEntryAccessBlocked"> - あなたのレーティング区分により、その地域(リージョン)へは入ることができません。 年齢を確認する際の情報に不足があったためと考えられます。 + あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。 年齢を確認する際の情報に不足があったためと考えられます。 最新ビューワがインストールされているかをご確認ください。このレーティング区分でのアクセスに関する詳細はナレッジベースをご覧ください。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RegionEntryAccessBlocked_KB"> - あなたのレーティング区分により、その地域(リージョン)へは入ることができません。 + あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。 ナレッジベースを開きレーティング区分について学びますか? <url name="url"> http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/ja </url> - <usetemplate ignoretext="レーティング区分の制限のため、このリージョンに入ることができません" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/> + <usetemplate ignoretext="レーティング区分の制限のため、リージョンに入ることができないとき" name="okcancelignore" notext="閉じる" yestext="ナレッジベースを開く"/> </notification> <notification name="RegionEntryAccessBlocked_Notify"> - あなたのレーティング区分により、その地域(リージョン)へは入ることができません。 + あなたのレーティング区分により、そのリージョン(地域)へは入ることができません。 </notification> <notification name="RegionEntryAccessBlocked_Change"> - あなたのレーティング区分設定により、その地域(リージョン)へは入ることができません。 + あなたのレーティング区分設定により、そのリージョン(地域)へは入ることができません。 -「設定を変更」をクリックするとあなたのレーティング区分が上がり、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 -あとで設定を元に戻したい場合は、「編集」>「環境設定」>「一般」をご覧ください。 +「設定を変更」をクリックしてあなたのレーティング区分を上げると、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 あとで設定を元に戻したい場合は、「編集」>「環境設定」をご覧ください。 <form name="form"> - <button name="OK" text="設定の変更"/> + <button name="OK" text="環境設定の変更"/> <button default="true" name="Cancel" text="閉じる"/> - <ignore name="ignore" text="選択したレーティング区分が原因で、リージョンに入ることができません"/> + <ignore name="ignore" text="選択したレーティング区分が原因で、リージョンに入れないとき"/> </form> </notification> <notification name="LandClaimAccessBlocked"> @@ -1563,9 +1569,8 @@ F1キーを押してください。 <notification name="LandClaimAccessBlocked_Change"> あなたのレーティング区分設定により、この土地を取得することはできません。 -「設定を変更」をクリックするとあなたのレーティング区分が上がり、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 -あとで設定を元に戻したい場合は、「編集」>「環境設定」>「一般」をご覧ください。 - <usetemplate ignoretext="選択したレーティング区分が原因で、土地を取得できません" name="okcancelignore" notext="閉じる" yestext="設定の変更"/> +「設定を変更」をクリックしてあなたのレーティング区分を上げると、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 あとで設定を元に戻したい場合は、「編集」>「環境設定」をご覧ください。 + <usetemplate ignoretext="選択したレーティング区分が原因で、土地を取得できないとき" name="okcancelignore" notext="閉じる" yestext="設定の変更"/> </notification> <notification name="LandBuyAccessBlocked"> あなたのレーティング区分により、この土地を購入することはできません。 年齢を確認する際の情報に不足があったためと考えられます。 @@ -1588,61 +1593,58 @@ F1キーを押してください。 <notification name="LandBuyAccessBlocked_Change"> あなたのレーティング区分設定により、この土地を購入することができません。 -「設定を変更」をクリックするとあなたのレーティング区分が上がり、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 -あとで設定を元に戻したい場合は、「編集」>「環境設定」>「一般」をご覧ください。 - <usetemplate ignoretext="選択したレーティング区分が原因で、土地を購入できません" name="okcancelignore" notext="閉じる" yestext="設定の変更"/> +「設定を変更」をクリックしてあなたのレーティング区分を上げると、入れるようになります。 あなたは今後 [REGIONMATURITY] コンテンツの検索及びアクセスが可能となります。 あとで設定を元に戻したい場合は、「編集」>「環境設定」をご覧ください。 + <usetemplate ignoretext="選択したレーティング区分が原因で、土地を購入できないとき" name="okcancelignore" notext="閉じる" yestext="設定の変更"/> </notification> <notification name="TooManyPrimsSelected"> - 選択したプリムが多すぎます。 -[MAX_PRIM_COUNT] を選択するか、 -プリム数を減らしてもう一度お試しください。 + 選択したプリムが多すぎます。 [MAX_PRIM_COUNT] 個選択するか、プリム数を減らしてもう一度お試しください。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ProblemImportingEstateCovenant"> - 不動産約款のインポート時に問題発生。 + 不動産約款のインポート時に問題が発生しました。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ProblemAddingEstateManager"> 新しい不動産マネージャーの追加に関する問題: -1つ以上の不動産で、マネージャーリストが満杯になっています。 +いずれかの不動産のマネージャーリストが満杯になっています。 </notification> <notification name="ProblemAddingEstateGeneric"> 不動産リストの追加に関する問題: -1つ以上の不動産で、リストが満杯になっています。 +いずれかの不動産のリストが満杯になっています。 </notification> <notification name="UnableToLoadNotecardAsset"> - 現在ノートカードの資産IDを読み込むことができません。 + 現在ノートカードのアセット ID を読み込むことができません。 + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="NotAllowedToViewNotecard"> - 要求された資産IDに関するノートカードを閲覧するには権限が不十分です。 + 要求したアセット ID に関するノートカードを閲覧するには、権限が不十分です。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="MissingNotecardAssetID"> - ノートカード用資産IDがデータベースに登録されていません。 + ノートカード用のアセット ID がデータベースに登録されていません。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="PublishClassified"> 注意:クラシファイド広告の料金は払い戻しされません。 -L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか? +L$ [AMOUNT] で、このクラシファイド広告を今すぐ公開しますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="SetClassifiedMature"> - この広告にMatureコンテンツは含まれていますか? + この広告に「Moderate」コンテンツは含まれていますか? <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification name="SetGroupMature"> - この広告にMatureコンテンツは含まれていますか? + このグループに「Moderate」コンテンツが含まれていますか? <usetemplate canceltext="キャンセル" name="yesnocancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification label="再起動を確認" name="ConfirmRestart"> - この地域を2分後に再起動しようとしています。 -操作を続行しますか? + このリージョンを 2 分後に再起動しようとしています。 +続けますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> - <notification label="この地域内の全員にメッセージを送信" name="MessageRegion"> - この地域にいる人全員に送る -短いメッセージを入力してください。 + <notification label="このリージョンにメッセージを送信" name="MessageRegion"> + このリージョンにいる人全員に送る短いメッセージを入力してください。 <form name="form"> <input name="message"/> <button name="OK" text="OK"/> @@ -1650,17 +1652,16 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか </form> </notification> <notification label="地域のレーティング区分指定変更済み" name="RegionMaturityChange"> - この地域のレーティング区分指定がアップデートされました。 -この変更が地図に反映されるまでにはしばらく時間がかかります。 + このリージョン(地域)のレーティング区分がアップデートされました。 +地図に変更が反映されるまで数分かかることがあります。 + +Adult 専用リージョンに入るには、住人のアカウントが年齢確認か支払方法のいずれかで「確認済み」でなければなりません。 </notification> <notification label="ボイスバージョンの不一致" name="VoiceVersionMismatch"> - このバージョンの [APP_NAME] は、 -この地域のボイスチャット機能に対応していません。 -ボイスチャットを正しく使用するには、 -[APP_NAME] のアップデートが必要です。 + [APP_NAME] のこのバージョンは、このリージョンにおけるボイスチャットの互換性がありません。 ボイスチャットを正常に行うためには、[APP_NAME] のアップデートが必要です。 </notification> <notification label="オブジェクトを購入できません" name="BuyObjectOneOwner"> - 複数のオーナーから同時にオブジェクトを購入することはできません。 + 複数の所有者から同時にオブジェクトを購入することはできません。 単一のオブジェクトを選択し、もう一度試してください。 </notification> <notification label="コンテンツを購入できません" name="BuyContentsOneOnly"> @@ -1668,62 +1669,64 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか 選択するオブジェクトを1つだけにして、もう一度試してください。 </notification> <notification label="コンテンツを購入できません" name="BuyContentsOneOwner"> - 複数のオーナーから同時にオブジェクトを購入することはできません。 + 複数の所有者から同時にオブジェクトを購入することはできません。 単一のオブジェクトを選択し、もう一度試してください。 </notification> <notification name="BuyOriginal"> - オリジナルのオブジェクトを[OWNER]からL$[PRICE]で購入しますか? -これにより、あなたがオブジェクトのオーナーになります。 + オリジナルのオブジェクトを [OWNER] から L$ [PRICE] で購入しますか? +購入すると、あなたがオブジェクトの所有者となります。 可能な操作は、 -変更:[MODIFYPERM]、コピー:[COPYPERM]、 -再販/プレゼント[RESELLPERM]です。 +修正:[MODIFYPERM]、コピー:[COPYPERM]、 +再販・プレゼント:[RESELLPERM] です。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="BuyOriginalNoOwner"> - L$[PRICE]でオリジナルのオブジェクトを購入しますか? -これにより、あなたがオブジェクトのオーナーになります。 + L$ [PRICE] でオリジナルのオブジェクトを購入しますか? +購入すると、あなたがオブジェクトの所有者となります。 可能な操作は、 -変更:[MODIFYPERM]、コピー:[COPYPERM]、 -再販/プレゼント[RESELLPERM]です。 +修正:[MODIFYPERM]、コピー:[COPYPERM]、 +再販・プレゼント:[RESELLPERM] です。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="BuyCopy"> - コピーを[OWNER]からL$[PRICE]で購入しますか? -購入したオブジェクトは、あなたの持ち物にコピーされます。 -可能な操作は、変更:[MODIFYPERM]、コピー:[COPYPERM]、 -再販/プレゼント[RESELLPERM]です。 + コピーを [OWNER] から L$ [PRICE] で購入しますか? +購入したオブジェクトは、あなたの「持ち物」にコピーされます。 +可能な操作は、 +修正:[MODIFYPERM]、コピー:[COPYPERM]、 +再販・プレゼント:[RESELLPERM] です。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="BuyCopyNoOwner"> - L$[PRICE]でコピーを購入しますか? -購入したオブジェクトは、あなたの持ち物にコピーされます。 -可能な操作は、変更:[MODIFYPERM]、コピー:[COPYPERM]、 -再販/プレゼント[RESELLPERM]です。 + L$ [PRICE] でコピーを購入しますか? +購入したオブジェクトは、あなたの「持ち物」にコピーされます。 +可能な操作は、 +修正:[MODIFYPERM]、コピー:[COPYPERM]、 +再販・プレゼント:[RESELLPERM] です。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="BuyContents"> - コンテンツを[OWNER]からL$[PRICE]で購入しますか? -購入したコンテンツは、あなたの持ち物にコピーされます。 + 中身を [OWNER] から L$ [PRICE] で購入しますか? +購入した中身は、あなたの「持ち物」にコピーされます。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="BuyContentsNoOwner"> - L$[PRICE]でコンテンツを購入しますか? -購入したコンテンツは、あなたの持ち物にコピーされます。 + L$ [PRICE] で中身を購入しますか? +購入した中身は、あなたの「持ち物」にコピーされます。 <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ConfirmPurchase"> この取引は以下のとおり行われます: [ACTION] -この購入を続行しますか? +購入を続けますか? <usetemplate name="okcancelbuttons" notext="取り消し" yestext="OK"/> </notification> <notification name="ConfirmPurchasePassword"> この取引は以下のとおり行われます: [ACTION] -この購入を続行しますか? -パスワードを再入力し、「OK」をクリックしてください。 +購入を続けますか? +パスワードを再入力し、「 OK 」をクリックしてください。 <form name="form"> <input name="message"/> <button name="ConfirmPurchase" text="OK"/> @@ -1732,71 +1735,48 @@ L$[AMOUNT]で、このクラシファイド広告を今すぐ公開しますか </notification> <notification name="SetPickLocation"> メモ: -本ピックのロケーションを更新しましたが、 +本ピックの位置を更新しましたが、 他の詳細は元の値のままになります。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="MoveInventoryFromObject"> - 「コピー禁止」の持ち物アイテムが選択されました。 -これらのアイテムはコピーされないまま、あなたの持ち物に移動されます。 + 「コピー不可」の持ち物アイテムを選択しました。 +これらのアイテムはコピーされないまま、あなたの「持ち物」に移動されます。 アイテムを動かしますか? - <usetemplate ignoretext="「コピー不可」のアイテムをオブジェクトから動かす前に警告する" name="okcancelignore" notext="キャンセル" yestext="OK"/> + <usetemplate ignoretext="「コピー不可」のアイテムをオブジェクトから動かす前の警告" name="okcancelignore" notext="キャンセル" yestext="OK"/> </notification> <notification name="MoveInventoryFromScriptedObject"> - 「コピー禁止」の持ち物アイテムが選択されました。 -これらのアイテムはコピーされるのではなく、あなたの持ち物に移動されます。 -このオブジェクトはスクリプト付きなので、持ち物に移動させると + 「コピー不可」の持ち物アイテムを選択しました。 +これらのアイテムはコピーされずに、あなたの「持ち物」に移動されます。 +このオブジェクトはスクリプト付きなので、「持ち物」に移動させると スクリプトに誤動作が起きる可能性があります。 持ち物アイテムを移動しますか? - <usetemplate ignoretext="スクリプト入りのオブジェクトを壊す恐れのある「コピー不可」のアイテムを動かす前に警告する" name="okcancelignore" notext="キャンセル" yestext="OK"/> + <usetemplate ignoretext="スクリプト入りのオブジェクトを壊す恐れのある「コピー不可」のアイテムを動かす前の警告" name="okcancelignore" notext="キャンセル" yestext="OK"/> </notification> <notification name="ClickActionNotPayable"> 警告: クリックで「オブジェクトに支払う」設定をしました。スクリプトに money()イベントが追加されると動作します。 <form name="form"> - <ignore name="ignore" text="money() スクリプトを入れずにオブジェクトを制作中に、「オブジェクトに支払う」アクションを設定"/> + <ignore name="ignore" text="オブジェクトを作成中に、money() スクリプトを入れずに「オブジェクトに支払う」アクションを設定したとき"/> </form> </notification> <notification name="OpenObjectCannotCopy"> このオブジェクトには、あなたがコピーできるアイテムはありません。 </notification> <notification name="WebLaunchAccountHistory"> - secondlife.com でアカウント履歴を確認しますか? - <usetemplate ignoretext="ブラウザを起動してアカウント履歴を見る" name="okcancelignore" notext="取り消し" yestext="ページに移動"/> + [http://jp.secondlife.com/account/ マイアカウント] ページに移動してアカウント履歴を確認しますか? + <usetemplate ignoretext="ブラウザを起動してアカウント履歴を見るとき" name="okcancelignore" notext="取り消し" yestext="ページに移動"/> </notification> <notification name="ConfirmQuit"> - 終了しようとしています。操作を続行しますか? - <usetemplate ignoretext="終了時に確認する" name="okcancelignore" notext="終了しない" yestext="終了"/> + 終了しようとしています。続けますか? + <usetemplate ignoretext="終了時の確認" name="okcancelignore" notext="終了しない" yestext="終了"/> </notification> <notification name="HelpReportAbuseEmailLL"> - 利用規約違反とコミュニティースタンダード違反の報告にこのツールをご使用ください。 参照: - -http://secondlife.com/corporate/tos.php -http://secondlife.com/corporate/cs.php - -利用規約違反とコミュニティースタンダード違反に関する全てのレポートは、調査され、解決されます。 -以下のリンク先の被害報告にてその確認をすることができます。 - -http://secondlife.com/support/incidentreport.php - </notification> - <notification name="HelpReportAbuseEmailEO"> - 重要: このレポートはLinden Lab 社ではなく、 -あなたが現在いる地域のオーナーに送られます。 -- -あなたが今いる地域のオーナーは、 -住人と訪問者へのサービスの一環として、この地域からのレポートをすべて受け付け、解決することに同意しています。 -よってLinden Lab 社が、 -あなたがここから提出するレポートを調査することはありません。 -地域のオーナーは、不動産約款で指定している地元の規則を基に、報告された問題を解決します。 -(「世界」のメニューから「土地情報」を選ぶと、約款を閲覧できます) -- -このレポートに関する解決策は、この地域にだけ当てはまります。 -住人が[SECOND_LIFE] の他の地域へアクセスする際、 -このレポートの結果に影響されることはありません。 -Linden Lab 社だけが[SECOND_LIFE] 全域における -アクセス制限権を持っています。 + このツールを利用して [http://secondlife.com/corporate/tos.php 利用規約] や [http://jp.secondlife.com/corporate/cs.php コミュニティスタンダード] の違反を報告してください。 + +報告された嫌がらせはすべて調査・解決されます。 </notification> <notification name="HelpReportAbuseSelectCategory"> 嫌がらせ報告のカテゴリを選択してください。 @@ -1823,63 +1803,54 @@ Linden Lab 社だけが[SECOND_LIFE] 全域における 嫌がらせ報告の処理や保管に大変役立ちます。 </notification> <notification name="HelpReportAbuseContainsCopyright"> - 住人の皆様へ、 + こんにちは、 -知的財産の侵害に関する報告を行う際には、以下の点に注意してください。 +知的財産権の侵害を報告しようとしています。 正確に報告するために、以下をご確認ください: -(1) 嫌がらせの報告のプロセス -[SECOND_LIFE] の権限システムを悪用している住人を見つけたら、 -嫌がらせの報告を行ってください。 -例えばコピーBotの使用、それに似たツールの使用による知的財産権の侵害があります。 -アビューズチームは調査に基づき、 -[SECOND_LIFE] のコミュニティースタンダードや -利用規約に違反する行為と判断された場合には適切な処置を行っています。 -ただし、コンテンツを[SECOND_LIFE] から撤去してほしい、 -といった要望にはアビューズチームは応えることができません。 +(1) 嫌がらせの報告の手順 住人が [SECOND_LIFE] の権限システムを悪用しているのを見つけたら、嫌がらせの報告をすることができます。例えば、CopyBot や似たようなコピーツールを使用して知的財産権を侵害している場合です。 担当チームは調査を行い、[SECOND_LIFE] [http://secondlife.com/corporate/tos.php 利用規約] や [http://jp.secondlife.com/corporate/cs.php コミュニティスタンダード] に違反する行為に対する適切な処罰を下します。 ただし、担当チームは [SECOND_LIFE] の世界からコンテンツを削除して欲しいというリクエストには応じません。 -(2) DMCA(デジタルミレニアム著作権法)及びコンテンツ撤去プロセス -[SECOND_LIFE] からのコンテンツの撤去をリクエストするには、 -著作権侵害通知の提出を行う必要があります。 -参照: http://secondlife.com/corporate/dmca.php +(2) DMCA またはコンテンツの撤去の手順 コンテンツを [SECOND_LIFE] から削除して欲しいというリクエストをするには、弊社 [http://secondlife.com/corporate/dmca.php DMCA ポリシー] で提示されているとおり、有効な侵害の通知を提出しなければなりません。. -この件に関する嫌がらせの報告を続ける際は、このウィンドウを閉じてください。選択すべきカテゴリは「知的財産の侵害>コピーBot及び権限の悪用」のほうが適しているかもしれませんのでご確認ください。 +このまま嫌がらせの報告を続けたい場合は、このウィンドウを閉じて報告を送ってください。 「コピー Bot 及び権限の悪用」のカテゴリを選んだ方が適切の場合があります。 -よろしくお願いします。 +ご協力ありがとうございます。 Linden Lab </notification> <notification name="FailedRequirementsCheck"> - 以下の必要なコンポーネントが、[FLOATER]から抜け落ちています + 以下の必要なコンポーネントが、[FLOATER] から抜け落ちています [COMPONENTS] </notification> <notification label="既存の付属品を置換" name="ReplaceAttachment"> - 体のこの部位にはオブジェクトが装着されています。 + 体のこの部位には既にオブジェクトが装着されています。 選択されたオブジェクトと置き換えますか? <form name="form"> - <ignore name="ignore" save_option="true" text="装着しているアイテムと選択したアイテムを入れ替える"/> + <ignore name="ignore" save_option="true" text="装着しているアイテムと選択したアイテムを入れ替えるとき"/> <button ignore="自動的に交換" name="Yes" text="OK"/> <button ignore="交換しない" name="No" text="キャンセル"/> </form> </notification> <notification label="取り込み中の警告" name="BusyModePay"> - 現在、取り込み中のため、この支払いと -引き換えのアイテムを受け取ることが -できません。 + 現在、「取り込み中」モードのため、支払いと引き換えにアイテムを受け取ることができません。 -この取引を完了する前に、取り込み中の設定を解除しますか? +この取引を行うために「取り込み中」の設定を解除しますか? <form name="form"> - <ignore name="ignore" save_option="true" text="取り込み中モードの時に支払をする"/> - <button ignore="常に取り込み中の設定" name="Yes" text="OK"/> - <button ignore="取り込み中の設定にしない" name="No" text="キャンセル"/> + <ignore name="ignore" save_option="true" text="取り込み中モード時に支払をするとき"/> + <button ignore="常に「取り込み中」の設定を解除" name="Yes" text="OK"/> + <button ignore="常に「取り込み中」の設定を継続" name="No" text="キャンセル"/> </form> </notification> + <notification name="ConfirmDeleteProtectedCategory"> + 「 [FOLDERNAME] 」 は、システムフォルダです。 システムフォルダを削除すると不安定になることがあります。 続けますか? + <usetemplate ignoretext="システムフォルダを削除する前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/> + </notification> <notification name="ConfirmEmptyTrash"> - ゴミ箱の項目をすべて削除しますか? - <usetemplate ignoretext="持ち物のゴミ箱フォルダを空にする前に確認する" name="okcancelignore" notext="キャンセル" yestext="OK"/> + ごみ箱の中身をすべて削除しますか? + <usetemplate ignoretext="持ち物のごみ箱フォルダを空にする前の確認" name="okcancelignore" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmClearBrowserCache"> トラベル、Web、検索の履歴をすべて削除しますか? - <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/> + <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="OK"/> </notification> <notification name="ConfirmClearCookies"> 本当にクッキーをクリアしますか? @@ -1890,16 +1861,16 @@ Linden Lab <usetemplate name="okcancelbuttons" notext="キャンセル" yestext="はい"/> </notification> <notification name="ConfirmEmptyLostAndFound"> - 紛失物の項目をすべて削除しますか? - <usetemplate ignoretext="紛失物フォルダを空にする前に確認する" name="okcancelignore" notext="いいえ" yestext="はい"/> + 紛失物の中身をすべて削除しますか? + <usetemplate ignoretext="紛失物フォルダを空にする前の確認" name="okcancelignore" notext="いいえ" yestext="はい"/> </notification> <notification name="CopySLURL"> 次の SLurl がクリップボードにコピーされました: [SLURL] -Webページにこれをリンクすると、他人がこの場所に簡単にアクセスできます。Webブラウザのアドレスバーに貼り付けて試してみてください。 +Web ページにリンクすると、他人がこの場所に簡単にアクセスできます。Web ブラウザのアドレスバーに貼り付けて試してみてください。 <form name="form"> - <ignore name="ignore" text="クリップボードに SLurl がコピーされる"/> + <ignore name="ignore" text="クリップボードに SLurl をコピーするとき"/> </form> </notification> <notification name="WLSavePresetAlert"> @@ -1907,14 +1878,14 @@ Webページにこれをリンクすると、他人がこの場所に簡単に <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification name="WLDeletePresetAlert"> - [SKY] を削除しますか? + 「 [SKY] 」を削除しますか? <usetemplate name="okcancelbuttons" notext="いいえ" yestext="はい"/> </notification> <notification name="WLNoEditDefault"> デフォルトの設定を編集したり削除したりすることはできません。 </notification> <notification name="WLMissingSky"> - このデイ・サイクルのファイルは次の存在しない「空」ファイルを参照しています: [SKY]。 + このデイサイクルのファイルは次の存在しない「空」ファイルを参照しています: [SKY]。 </notification> <notification name="PPSaveEffectAlert"> ポストプロセス効果が存在します。 上書きしますか? @@ -1950,7 +1921,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に デフォルトの設定を編集したり削除したりすることはできません。 </notification> <notification name="ChatterBoxSessionStartError"> - [RECIPIENT]との新しいチャットを開始することができません + [RECIPIENT] と新しいチャットを開始することができません。 [REASON] <usetemplate name="okbutton" yestext="OK"/> </notification> @@ -1965,16 +1936,16 @@ Webページにこれをリンクすると、他人がこの場所に簡単に <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="Cannot_Purchase_an_Attachment"> - オブジェクトが取り付けられているときは購入することができません。 + オブジェクトが取り付けられているままでは購入できません。 </notification> - <notification label="デビット許可のリクエストについて" name="DebitPermissionDetails"> - この要求を許可すると、スクリプトからあなたのアカウントにリンデンドルを課金できるようになります。 -この許可を取り消すには、オブジェクトのオーナーはオブジェクトを削除するか、オブジェクトのスクリプトをリセットしなければなりません。 + <notification label="引き出し許可のリクエストについて" name="DebitPermissionDetails"> + このリクエストを許可すると、スクリプトであなたのアカウントからリンデンドルを引き出せるようになります。 +この許可を取り消すには、オブジェクトの所有者がオブジェクトを削除するか、オブジェクトのスクリプトをリセットしなければなりません。 <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="AutoWearNewClothing"> 作成しようとしている衣類を自動的に装着しますか? - <usetemplate ignoretext="容姿編集画面で作成する衣類を装着する" name="okcancelignore" notext="いいえ" yestext="はい"/> + <usetemplate ignoretext="「マイ 容姿」を編集中に、作成する衣類を装着するとき" name="okcancelignore" notext="いいえ" yestext="はい"/> </notification> <notification name="NotAgeVerified"> 年齢確認を済ませていないとこの区画を訪れることができません。 [SECOND_LIFE] サイトで年齢の確認を行いますか? @@ -1983,7 +1954,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に <url name="url" option="0"> https://secondlife.com/account/verification.php?lang=ja </url> - <usetemplate ignoretext="年齢の確認を済ませていません" name="okcancelignore" notext="いいえ" yestext="はい"/> + <usetemplate ignoretext="年齢の確認を済ませていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/> </notification> <notification name="Cannot enter parcel: no payment info on file"> 支払情報が登録されていないとこのエリアを訪れることができません。 [SECOND_LIFE] サイトで登録を行いますか? @@ -1992,70 +1963,69 @@ Webページにこれをリンクすると、他人がこの場所に簡単に <url name="url" option="0"> https://secondlife.com/account/index.php?lang=ja </url> - <usetemplate ignoretext="支払情報が登録されていません" name="okcancelignore" notext="いいえ" yestext="はい"/> + <usetemplate ignoretext="支払情報が登録されていないとき" name="okcancelignore" notext="いいえ" yestext="はい"/> </notification> <notification name="MissingString"> - 文字列[STRING_NAME]がstrings.xmlに含まれていません + 文字列 [STRING_NAME] が strings.xml に含まれていません。 </notification> <notification name="SystemMessageTip"> [MESSAGE] </notification> <notification name="Cancelled"> - 取り消されました + 取り消されました。 </notification> <notification name="CancelledSit"> - 座るのを取り消されました + 座るのをやめました。 </notification> <notification name="CancelledAttach"> - 添付は取り消されました + 添付が取り消されました。 </notification> <notification name="ReplacedMissingWearable"> - 欠落している服/身体部位をデフォルトに置換します。 + 欠落している衣類や身体部位をデフォルトに置き換えます。 </notification> <notification name="GroupNotice"> - 件名: [SUBJECT], メッセージ: [MESSAGE] + 件名: [SUBJECT]、メッセージ: [MESSAGE] </notification> <notification name="FriendOnline"> - [FIRST] [LAST] はオンラインです。 + [FIRST] [LAST] はオンラインです </notification> <notification name="FriendOffline"> - [FIRST] [LAST] はオフラインです。 + [FIRST] [LAST] はオフラインです </notification> <notification name="AddSelfFriend"> - 残念ながら自分自身をフレンドに追加することはできません。 + 残念ながら自分自身をフレンド登録することはできません。 </notification> <notification name="UploadingAuctionSnapshot"> - インワールドとウェブ・サイトのスナップショットをアップロード中です... -(所要時間:約5分) + インワールドと Web サイトのスナップショットをアップロード中です... +(所要時間:約 5 分) </notification> <notification name="UploadPayment"> - アップロードに L$[AMOUNT] 支払いました。 + アップロードに L$ [AMOUNT] 支払いました。 </notification> <notification name="UploadWebSnapshotDone"> - Webサイトのスナップショットがアップロードされました。 + Web サイトのスナップショットがアップロードされました。 </notification> <notification name="UploadSnapshotDone"> インワールドでのスナップショットのアップロードが完了しました。 </notification> <notification name="TerrainDownloaded"> - raw地形がダウンロードされました + raw 地形がダウンロードされました </notification> <notification name="GestureMissing"> - ジェスチャー[NAME] がデータベースにありません。 + ジェスチャーの [NAME] がデータベースに見つかりません。 </notification> <notification name="UnableToLoadGesture"> - ジェスチャー[NAME] を読み込むことができません。 -再度、試みてください。 + [NAME] というジェスチャーを読み込むことができませんでした。 </notification> <notification name="LandmarkMissing"> データベースにランドマークがありません。 </notification> <notification name="UnableToLoadLandmark"> - ランドマークをロードできません。 もう一度試してください。 + ランドマークを読み込めません。 もう一度お試しください。 </notification> <notification name="CapsKeyOn"> CapsLock キーが有効になっています。 -パスワードに影響があるかもしれません。 +パスワードに影響するかもしれません。 </notification> <notification name="NotecardMissing"> ノートカードがデータベースにありません。 @@ -2064,10 +2034,10 @@ Webページにこれをリンクすると、他人がこの場所に簡単に このノートカードを見る権限がありません。 </notification> <notification name="RezItemNoPermissions"> - オブジェクトをrezするにはパーミッション(承認)が不足してます。 + オブジェクトを Rez するには権限が不足しています。 </notification> <notification name="UnableToLoadNotecard"> - 現在ノートカードの資産をロードできません。 + ノートカードを読み込めません。あとで再度お試しください。 </notification> <notification name="ScriptMissing"> データベースにスクリプトがありません。 @@ -2079,36 +2049,35 @@ Webページにこれをリンクすると、他人がこの場所に簡単に スクリプトをロードできません。 もう一度試してください。 </notification> <notification name="IncompleteInventory"> - あなたの提供するコンテンツは、この場所ではまだ全部揃いません。 -少ししてからもう一度試してください。 + あなたの提供するコンテンツは、ローカルではまだ全部揃っていません。 +しばらくしてからもう一度お試しください。 </notification> <notification name="CannotModifyProtectedCategories"> - 保護されたカテゴリーは修正できません。 + 保護されたカテゴリは修正できません。 </notification> <notification name="CannotRemoveProtectedCategories"> - 保護されたカテゴリーは削除できません。 + 保護されたカテゴリは削除できません。 </notification> <notification name="OfferedCard"> - あなたは[FIRST] [LAST] に -コーリング・カードを送りました。 + [FIRST] [LAST] にコーリングカードを送りました。 </notification> <notification name="UnableToBuyWhileDownloading"> オブジェクトデータのダウンロード中は購入できません。 -もう一度試してください。 +もう一度お試しください。 </notification> <notification name="UnableToLinkWhileDownloading"> オブジェクトデータのウンロード中はリンクできません。 -もう一度試してください。 +もう一度お試しください。 </notification> <notification name="CannotBuyObjectsFromDifferentOwners"> - オブジェクトは一度につき一人の所有者から購入できます。 + オブジェクトは一度に一人の所有者から購入できます。 オブジェクトを 1 つだけ選んでください。 </notification> <notification name="ObjectNotForSale"> このオブジェクトは販売対象ではありません。 </notification> <notification name="EnteringGodMode"> - レベル[LEVEL]のゴッド・モードに入ります + レベル [LEVEL] のゴッドモードに入ります </notification> <notification name="LeavingGodMode"> レベル [LEVEL] のゴッドモードを解除します @@ -2117,29 +2086,29 @@ Webページにこれをリンクすると、他人がこの場所に簡単に これをコピーする権限がありません。 </notification> <notification name="InventoryAccepted"> - [NAME]は、持ち物の提供を受け入れました。 + [NAME] は、あなたが渡したアイテムを受け取りました。 </notification> <notification name="InventoryDeclined"> - [NAME]は、持ち物の提供を断りました。 + [NAME] は、持ち物の提供を断りました。 </notification> <notification name="ObjectMessage"> [NAME]: [MESSAGE] </notification> <notification name="CallingCardAccepted"> - コーリング・カードが受理されました。 + コーリングカードが受理されました。 </notification> <notification name="CallingCardDeclined"> - コーリング・カードが拒否されました。 + コーリングカードが拒否されました。 </notification> <notification name="TeleportToLandmark"> - 本土に到達しました。 -[NAME]などの場所にテレポートするには、画面右下にある「持ち物」ボタンをクリックし、ランドマーク(Landmarks)フォルダを選択してください。 -ランドマークをダブルクリックした後「テレポート」をクリックするとその場所へ移動します。 + 画面右の「場所」パネルを開いて、「ランドマーク」タブを選ぶと、[NAME] といった場所にテレポートできます。 +好きなランドマークをクリックして選び、次にパネル下の「テレポート」をクリックします。 +(ランドマークをダブルクリック、または右クリックして「テレポート」を選んでも同じです。) </notification> <notification name="TeleportToPerson"> - 本土に到達しました。 -住人の[NAME]と接触するには、画面右下にある「持ち物」ボタンをクリックし、コーリングカード(Calling Cards)フォルダを選択してください。 -カードをダブルクリックし、「IMを送る」をクリックし、メッセージを送信してください。 + 画面右の「人」パネルを開いて、[NAME] といった住人に連絡を取ることができます。 +リストから住人を選択して、パネル下の「IM」をクリックします。 +(リストの名前をダブルクリック、または右クリックして「IM」を選んでも同じです。) </notification> <notification name="CantSelectLandFromMultipleRegions"> サーバーの境界を越えて土地を選択することできません。 @@ -2149,7 +2118,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に コミュニティスタンダードに明記されているコンテンツ制限により、あなたの検索語の一部が除外されました。 </notification> <notification name="NoContentToSearch"> - 少なくともどれか一つコンテンツの種類を選択して検索を行ってください。(PG, Mature, Adult) + 少なくともどれか一つコンテンツの種類を選択して検索を行ってください。(General、Moderate、Adult) </notification> <notification name="GroupVote"> [NAME] は投票の申請をしています: @@ -2162,6 +2131,9 @@ Webページにこれをリンクすると、他人がこの場所に簡単に <notification name="SystemMessage"> [MESSAGE] </notification> + <notification name="PaymentRecived"> + [MESSAGE] + </notification> <notification name="EventNotification"> イベント通知: @@ -2174,10 +2146,10 @@ Webページにこれをリンクすると、他人がこの場所に簡単に </form> </notification> <notification name="TransferObjectsHighlighted"> - この区画上に存在するオブジェクトのうち、この区画の購入者に譲渡されるオブジェクトがすべて強調表示されます。 + この区画の購入者に受け渡されるオブジェクトは、すべて区画上で強調表示されています。 -*譲渡される樹木や植物は、強調表示されません。 +*受け渡される樹木や植物は、強調表示されていません。 <form name="form"> <button name="Done" text="完了"/> </form> @@ -2187,8 +2159,8 @@ Webページにこれをリンクすると、他人がこの場所に簡単に [NAMES] </notification> <notification name="NoQuickTime"> - Apple社のQuickTimeがシステムにインストールされていないと思われます。 -ストリーミング・メディアの再生を行いたい場合は、QuickTimeのサイト(http://www.apple.com/quicktime)にアクセスして、QuickTime Player をインストールしてください。 + Apple の QuickTime ソフトウェアがお使いのシステムにインストールされていないようです。 +ストリーミングメディアをサポートする区画で見たい場合は、[http://www.apple.com/jp/quicktime QuickTime サイト] から QuickTime プレイヤーをインストールしてください。 </notification> <notification name="NoPlugin"> 「 [MIME_TYPE] 」の MIME タイプを扱うメディアプラグインが見つかりませんでした。 このタイプのメディアはご利用いただけません。 @@ -2199,40 +2171,42 @@ Webページにこれをリンクすると、他人がこの場所に簡単に プラグインをインストールしなおすか、問題が解決しない場合はメーカーにお問い合わせください。 <form name="form"> - <ignore name="ignore" text="メディアプラグインの実行に失敗"/> + <ignore name="ignore" text="メディアプラグインの実行に失敗したとき"/> </form> </notification> <notification name="OwnedObjectsReturned"> - 選択した土地の区画上にあったあなたのオブジェクトは、あなたの持ち物に返却されました。 + 選択した土地の区画上にあったあなたのオブジェクトは、すべてあなたの「持ち物」に返却されました。 </notification> <notification name="OtherObjectsReturned"> - 選択されている土地の区画上にあった + 選択した土地の区画上にあった [FIRST] [LAST] - が所有するオブジェクトは、オーナーの持ち物に返却されました。 + が所有するオブジェクトは、すべて所有者の「持ち物」に返却されました。 </notification> <notification name="OtherObjectsReturned2"> - 選択された土地の区画上にあり、 -住人の[NAME]の所有だったオブジェクトはオーナーに返却されました。 + 「 [NAME] 」という名前の住人が所有する、選択した区画上のオブジェクトは、本人に返却されました。 </notification> <notification name="GroupObjectsReturned"> - 選択されている区画上にあり、[GROUPNAME] というグループと共有だったオブジェクトは、オーナーの持ち物に返却されました。 -譲渡されていた譲渡可能なオブジェクトは、前のオーナーに返却されました。 -グループに譲渡されていた譲渡不可能なオブジェクトは、削除されました。 + 選択した区画上の、[GROUPNAME] というグループと共有していたオブジェクトは、それぞれの所有者の「持ち物」に返却されました。 +譲渡されていた「再販・プレゼント可」のオブジェクトは、以前の所有者に返却されました。 +グループに譲渡されていた「再販・プレゼント不可」のオブジェクトは、削除されました。 </notification> <notification name="UnOwnedObjectsReturned"> - 選択された土地の区画上にあり、あなたの所有で「なかった」オブジェクトは、本来のオーナーに返却されました。 + 選択した土地の区画上の、あなたの所有物では「なかった」オブジェクトは、本来の所有者に返却されました。 + </notification> + <notification name="ServerObjectMessage"> + [NAME] からのメッセージ: +<nolink>[MSG]</nolink> </notification> <notification name="NotSafe"> この土地ではダメージが有効です。 -ケガをするかもしれません。 死んでしまった場合はホームにテレポートされます。 +ケガをするかもしれません。 死んでしまった場合は「ホーム」にテレポートされます。 </notification> <notification name="NoFly"> このエリアでは飛行が禁止されています。 ここでは飛べません。 </notification> <notification name="PushRestricted"> - このエリアではプッシュが制限されています。 -土地所有者以外は他人をプッシュすることはできません。 + このエリアではプッシュが制限されています。 土地所有者以外は他人をプッシュすることはできません。 </notification> <notification name="NoVoice"> このエリアではボイスチャットが無効です。 誰かが話しているのを聞くことはできません。 @@ -2241,38 +2215,41 @@ Webページにこれをリンクすると、他人がこの場所に簡単に このエリアでは制作が禁止されています。 オブジェクトを制作したり Rez することはできません。 </notification> <notification name="ScriptsStopped"> - 管理者がこの地域内のスクリプトを一時停止させました。 + 管理者がこのリージョンのスクリプトを一時停止しました。 </notification> <notification name="ScriptsNotRunning"> - この地域ではスクリプトの使用が禁止されています + このリージョンではスクリプトの使用が禁止されています。 </notification> <notification name="NoOutsideScripts"> この土地では、外部のスクリプトが禁止されています。 -土地所有者のもの以外はスクリプトは実行されません。 +土地所有者のもの以外はスクリプトが実行されません。 </notification> <notification name="ClaimPublicLand"> そのリージョンにいないと公共の土地を取得することはできません。 </notification> <notification name="RegionTPAccessBlocked"> - あなたのレーティング区分によりその地域(リージョン)へは入ることができません。 年齢確認を行うか、最新ビューワをインストールしてください。 + あなたのレーティング区分によりそのリージョン(地域)へは入ることができません。 年齢確認を行うか、最新ビューワをインストールしてください。 現在のレーティング区分でアクセス可能なエリアに関する詳細はナレッジベースを参照してください。 </notification> <notification name="URBannedFromRegion"> - あなたは地域(リージョン)への立入が禁止されています。 + あなたはリージョン(地域)への立入が禁止されています。 </notification> <notification name="NoTeenGridAccess"> あなたのアカウントではティーングリッドに接続できません。 </notification> <notification name="ImproperPaymentStatus"> - この地域(リージョン)に入るために適した支払いステータスがありません。 + このリージョン(地域)に入るために適した支払いステータスがありません。 + </notification> + <notification name="MustGetAgeRgion"> + このリージョン(地域)に入るには年齢確認済みである必要があります。 </notification> <notification name="MustGetAgeParcel"> この区画に入るには年齢確認済みである必要があります。 </notification> <notification name="NoDestRegion"> - 目的地の地域(リージョン)が見つかりませんでした。 + 目的地のリージョン(地域)が見つかりませんでした。 </notification> <notification name="NotAllowedInDest"> 目的地に入る許可がありません。 @@ -2290,20 +2267,20 @@ Webページにこれをリンクすると、他人がこの場所に簡単に テレポートがキャンセルされました。 </notification> <notification name="FullRegionTryAgain"> - 入ろうとしている地域(リージョン)は現在満員です。 + 入ろうとしているリージョン(地域)は現在満員です。 しばらくしてから再度お試しください。 </notification> <notification name="GeneralFailure"> よくある失敗 </notification> <notification name="RoutedWrongRegion"> - 異なる地域(リージョン)に迂回されました。 もう一度お試しください。 + 異なるリージョン(地域)に迂回されました。 もう一度お試しください。 </notification> <notification name="NoValidAgentID"> - エージェントIDが無効です。 + エージェント ID が無効です。 </notification> <notification name="NoValidSession"> - セッションIDが無効です。 + セッション ID が無効です。 </notification> <notification name="NoValidCircuit"> 回路コードが無効です。 @@ -2318,7 +2295,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に 内部エラーが発生しました。 </notification> <notification name="NoGoodTPDestination"> - この地域(リージョン)では適切なテレポート目的地が見つかりませんでした。 + このリージョン(地域)では適切なテレポート目的地が見つかりませんでした。 </notification> <notification name="InternalErrorRegionResolver"> 内部エラーが発生しました。 @@ -2330,33 +2307,35 @@ Webページにこれをリンクすると、他人がこの場所に簡単に 有効な区画が見つかりませんでした。 </notification> <notification name="ObjectGiveItem"> - [FIRST] [LAST]所有の、 -[OBJECTFROMNAME]から、 -[OBJECTNAME]という[OBJECTTYPE]が送られてきました。 + [NAME_SLURL] が所有する [OBJECTFROMNAME] という名前のオブジェクトが、あなたに [OBJECTTYPE] を渡しました: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="受け取る"/> <button name="Discard" text="破棄"/> - <button name="Mute" text="無視リストへ"/> + <button name="Mute" text="ブロック"/> </form> </notification> <notification name="ObjectGiveItemUnknownUser"> - (未知のユーザー) 所有の[OBJECTFROMNAME]から、 -あなたに[OBJECTNAME]という[OBJECTTYPE]が送られてきました。 + (不明の住人)が所有する [OBJECTFROMNAME] という名前のオブジェクトが、あなたに [OBJECTTYPE] を渡しました: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="受け取る"/> <button name="Discard" text="破棄"/> - <button name="Mute" text="無視リストへ"/> + <button name="Mute" text="ブロック"/> </form> </notification> <notification name="UserGiveItem"> - [NAME]は、あなたに[OBJECTNAME]という名前の[OBJECTTYPE]を渡しました。 + [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"> [NAME] + [MESSAGE] </notification> <notification name="JoinGroup"> @@ -2368,7 +2347,7 @@ Webページにこれをリンクすると、他人がこの場所に簡単に </form> </notification> <notification name="TeleportOffered"> - [NAME]はあなたをテレポートで呼び寄せようとしています: + [NAME] はテレポートであなたを呼んでいます。 [MESSAGE] <form name="form"> @@ -2376,6 +2355,9 @@ Webページにこれをリンクすると、他人がこの場所に簡単に <button name="Cancel" text="取り消し"/> </form> </notification> + <notification name="TeleportOfferSent"> + [TO_NAME] にテレポートを送りました。 + </notification> <notification name="GotoURL"> [MESSAGE] [URL] @@ -2390,78 +2372,80 @@ Webページにこれをリンクすると、他人がこの場所に簡単に [MESSAGE] -(デフォルトでお互いのオンライン・ステータスを見ることができるようになります。) +(デフォルトでお互いのオンライン状態を見ることができるようになります。) <form name="form"> <button name="Accept" text="受け入れる"/> <button name="Decline" text="辞退"/> </form> </notification> + <notification name="FriendshipOffered"> + [TO_NAME] にフレンド登録を申し出ました。 + </notification> <notification name="OfferFriendshipNoMessage"> [NAME]は、 フレンド登録を申し込んでいます。 -(デフォルトでお互いのオンライン・ステータスを見ることができるようになります。) +(デフォルトでお互いのオンライン状態を見ることができるようになります。) <form name="form"> <button name="Accept" text="受け入れる"/> <button name="Decline" text="拒否"/> </form> </notification> <notification name="FriendshipAccepted"> - [NAME]は、フレンド 登録を受け入れました。 + [NAME]は、フレンド登録を受け入れました。 </notification> <notification name="FriendshipDeclined"> - [NAME]は、フレンド 登録を断りました。 + [NAME]は、フレンド登録を断りました。 </notification> <notification name="OfferCallingCard"> - [FIRST] [LAST]が -あなたにコーリングカードを送ってきました。 -これにより、あなたの持ち物にブックマークが追加され、この住人にすばやくIMすることができます。 + [FIRST] [LAST] がコーリングカードを渡そうとしています。 +あなたの「持ち物」にブックマークが追加され、この住人に素早く IM を送ることができます。 <form name="form"> <button name="Accept" text="受け入れる"/> <button name="Decline" text="辞退"/> </form> </notification> <notification name="RegionRestartMinutes"> - この地域は[MINUTES]分後に再起動されます。 -強制ログアウトとなりますので、この地域の外に出てください。 + このリージョンは [SECONDS] 分後に再起動されます。 +このままここにいるとログアウトされます。 </notification> <notification name="RegionRestartSeconds"> このリージョンは [SECONDS] 秒後に再起動されます。. このままここにいるとログアウトされます。 </notification> <notification name="LoadWebPage"> - ウェブ・ページ[URL]をロードしますか? + Web ページ [URL] を読み込みますか? [MESSAGE] -ロード元のオブジェクト:[OBJECTNAME]、オーナー:[NAME]? +読み込み元のオブジェクト:[OBJECTNAME]、所有者:[NAME]? <form name="form"> <button name="Gotopage" text="移動"/> <button name="Cancel" text="取り消し"/> </form> </notification> <notification name="FailedToFindWearableUnnamed"> - データベースに[TYPE]が見つかりませんでした + データベースに [TYPE] が見つかりませんでした </notification> <notification name="FailedToFindWearable"> - データベースに[DESC]という名前の[TYPE]が見つかりませんでした。 + データベースに [DESC] という名前の [TYPE] が見つかりませんでした。 </notification> <notification name="InvalidWearable"> - 着用しようとしているアイテムはあなたのビューワでは読み込むことができません。 [APP_NAME]ビューワを最新のものにアップグレードしてからこのアイテムを着用してください。 + 着用しようとしているアイテムはあなたのビューワでは読み込むことができません。 [APP_NAME] のバージョンをアップグレードしてからこのアイテムを着用してください。 </notification> <notification name="ScriptQuestion"> - 「[NAME]」が所有するオブジェクト「[OBJECTNAME]」を: + [NAME] が所有するオブジェクト「 [OBJECTNAME] 」を: [QUESTIONS] よろしいですか? <form name="form"> <button name="Yes" text="はい"/> <button name="No" text="いいえ"/> - <button name="Mute" text="無視リストに追加"/> + <button name="Mute" text="ブロック"/> </form> </notification> <notification name="ScriptQuestionCaution"> - [NAME] 所有の「 [OBJECTNAME] 」 というオブジェクトが次のことをしようとしています: + [NAME] が所有する「 [OBJECTNAME] 」 というオブジェクトが、次のことをしようとしています: [QUESTIONS] このオブジェクトや制作者を信用できない場合は、このリクエストを拒否してください。 @@ -2474,151 +2458,116 @@ Webページにこれをリンクすると、他人がこの場所に簡単に </form> </notification> <notification name="ScriptDialog"> - [FIRST] [LAST]の「[TITLE]」 + [FIRST] [LAST] の「 [TITLE] 」 [MESSAGE] <form name="form"> <button name="Ignore" text="無視する"/> </form> </notification> <notification name="ScriptDialogGroup"> - [GROUPNAME]の「[TITLE]」 + [GROUPNAME] の「 [TITLE] 」 [MESSAGE] <form name="form"> <button name="Ignore" text="無視する"/> </form> </notification> - <notification name="FirstBalanceIncrease"> - L$[AMOUNT] を受け取りました。 -あなたの L$ 残高は画面右上に表示されています。 - </notification> - <notification name="FirstBalanceDecrease"> - L$[AMOUNT] を支払いました。 -あなたの L$ 残高は画面右上に表示されています。 - </notification> - <notification name="FirstSit"> - 着席中です。 -周囲を見るには矢印キーか AWSD キーを使ってください。 -立つときには「立ち上がる」ボタンをクリックしてください。 - </notification> - <notification name="FirstMap"> - 地図をクリック・ドラッグして周囲を見てください。 -ダブルクリックするとテレポートします。 -右側のコントロールで場所を探したり背景を変更してください。 - </notification> - <notification name="FirstBuild"> - 制作ツールを開きました。 見るものすべてがこのツールで作成されたものです。 + <notification name="ScriptToast"> + [FIRST] [LAST] の「 [TITLE] 」は、ユーザーインプットをリクエストしています。 + <form name="form"> + <button name="Open" text="ダイアログを開く"/> + <button name="Ignore" text="無視"/> + <button name="Block" text="ブロック"/> + </form> </notification> - <notification name="FirstTeleport"> - このリージョンでは特定のエリアにのみテレポートできます。 矢印が目的地を指しています。 矢印をクリックすると消えます。 + <notification name="BuyLindenDollarSuccess"> + お支払ありがとうございます。 + +あなたの L$ 残高は、処理が完了するとアップデートされます。 処理に 20 分以上かかった場合、お取り引きがキャンセルされることがあります。 その場合は、購入金額はあなたの US$ 残高に追加されます。 + +[http://secondlife.com/account/ マイアカウント] の取引履歴ページで、支払状況を確認できます。 </notification> <notification name="FirstOverrideKeys"> あなたの移動キーをオブジェクトが操作しています。 -矢印かAWSDのキーで動作を確認してください。 -銃などのオブジェクトだと、一人称視点(マウスルック)に変更する必要があります。 -Mキーを押して変更します。 - </notification> - <notification name="FirstAppearance"> - 容姿を編集中です。 -周囲を見るには矢印キーを使ってください。 -終わったら「すべて保存」を押してください。 - </notification> - <notification name="FirstInventory"> - これはあなたの持ち物です。所有しているアイテムが入っています。 - -* アイテムを自分にドラッグして装着してください。 -* アイテムを地面にドラッグして Rez してください。 -* ノートカードをダブルクリックして開いてください。 +矢印か AWSD のキーで動作を確認してください。 +銃などのオブジェクトだと、一人称視点に変更する必要があります。 +M キーを押して変更します。 </notification> <notification name="FirstSandbox"> ここはサンドボックスエリアです。住人が制作を学ぶことができます。 ここで制作されたものは時間が経つと削除されます。制作したアイテムを右クリックして「取る」を選び、持ち物に入れてお持ち帰りするのをお忘れなく。 </notification> - <notification name="FirstFlexible"> - このオブジェクトはフレキシブルです。 フレキシブルオブジェクトは、「物理」ではなく「ファントム」でなければなりません。 - </notification> - <notification name="FirstDebugMenus"> - アドバンスメニューを開きました。 - -このメニューの有効・無効設定: - Windows: Ctrl+Alt+D - Mac: ⌘-Opt+D - </notification> - <notification name="FirstSculptedPrim"> - スカルプトプリムを編集中です。 スカルプトプリムには形状の輪郭を指定するための特別なテクスチャが必要です。 - </notification> <notification name="MaxListSelectMessage"> - このリストから[MAX_SELECT]個までのアイテムを選択できます。 + このリストから [MAX_SELECT] 個までのアイテムを選択できます。 </notification> <notification name="VoiceInviteP2P"> - [NAME]が、あなたをボイスチャットコールに招待しています。 -コールに参加するには「受け入れる」をクリックし、招待を断るときは「拒否」をクリックしてください。このコールをしている人をミュートにする場合は「ミュート」をクリックしてください。 + [NAME] があなたをボイスチャットコールに招待しています。 +受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。 <form name="form"> <button name="Accept" text="受け入れる"/> <button name="Decline" text="拒否"/> - <button name="Mute" text="ミュート"/> + <button name="Mute" text="ブロック"/> </form> </notification> <notification name="AutoUnmuteByIM"> - [FIRST] [LAST]に -インスタント・メッセージが送信され、無視設定は自動的に解除されました。 + [FIRST] [LAST] はインスタントメッセージを受け取り、自動的にブロックが解除されました。 </notification> <notification name="AutoUnmuteByMoney"> - [FIRST] [LAST]にお金を渡したため、 無視設定が自動的に解除されました。 + [FIRST] [LAST] はお金を受け取り、自動的にブロックが解除されました。 </notification> <notification name="AutoUnmuteByInventory"> - [FIRST] [LAST]に持ち物を渡したため、 無視設定が自動的に解除されました。 + [FIRST] [LAST] はアイテムを受け取り、自動的にブロックが解除されました。 </notification> <notification name="VoiceInviteGroup"> - [NAME]が、 グループ[GROUP]とのボイスチャットコールに参加しました。 -コールに参加するには「受け入れる」をクリックし、招待を断るときは「拒否」をクリックしてください。このコールをしている人をミュートにする場合は「ミュート」をクリックしてください。 + [NAME] は [GROUP] のボイスチャットコールに参加しました。 +受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。 <form name="form"> <button name="Accept" text="受け入れる"/> <button name="Decline" text="拒否"/> - <button name="Mute" text="ミュート"/> + <button name="Mute" text="ブロック"/> </form> </notification> <notification name="VoiceInviteAdHoc"> - [NAME]が、 会議チャットでボイスチャットコールに参加しました。 -コールに参加するには「受け入れる」をクリックし、招待を断るときは「拒否」をクリックしてください。 このユーザーをミュート(消声)する場合は「ミュート」をクリックしてください。 + [NAME] は コンファレンスチャットののボイスチャットコールに参加しました。 +受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。 <form name="form"> <button name="Accept" text="受け入れる"/> <button name="Decline" text="拒否"/> - <button name="Mute" text="ミュート"/> + <button name="Mute" text="ブロック"/> </form> </notification> <notification name="InviteAdHoc"> - [NAME]が、 あなたを会議チャットに招待しています。 -チャットに参加するには「受け入れる」をクリックし、招待を断るときは「拒否」をクリックしてください。このユーザーをミュート(消声)する場合は「ミュート」をクリックしてください。 + [NAME] があなたをコンファレンスチャットに招待しています。 +受け入れるをクリックするか、断る場合は拒否をクリックしてください。 ブロックをクリックすると、この発信者をブロックします。 <form name="form"> <button name="Accept" text="受け入れる"/> <button name="Decline" text="拒否"/> - <button name="Mute" text="ミュート"/> + <button name="Mute" text="ブロック"/> </form> </notification> <notification name="VoiceChannelFull"> - あなたが参加しようとしているボイスコール[VOICE_CHANNEL_NAME]は、参加者が最大限に達しました。後でもう一度お試しください。 + あなたが参加しようとしているボイスコール [VOICE_CHANNEL_NAME] は、参加者が最大限に達しました。後でもう一度お試しください。 </notification> <notification name="ProximalVoiceChannelFull"> このエリアのボイスチャットは、混雑のため容量を超えてしまっています。申し訳ありませんが、他のエリアでボイスチャットをお試しください。 </notification> <notification name="VoiceChannelDisconnected"> - [VOICE_CHANNEL_NAME]への接続が切断されました。空間ボイスチャットに再接続されます。 + [VOICE_CHANNEL_NAME] への接続が切れました。 「近くのボイスチャット」に再接続されます。 </notification> <notification name="VoiceChannelDisconnectedP2P"> - [VOICE_CHANNEL_NAME]は、コールを終了しました。空間ボイスチャットに再接続されます。 + [VOICE_CHANNEL_NAME] がコールを終了しました。 「近くのボイスチャット」に再接続されます。 </notification> <notification name="P2PCallDeclined"> - [VOICE_CHANNEL_NAME]は、あなたのコールを拒否しました。空間ボイスチャットに再接続されます。 + [VOICE_CHANNEL_NAME] があなたのコールを拒否しました。 「近くのボイスチャット」に再接続されます。 </notification> <notification name="P2PCallNoAnswer"> - [VOICE_CHANNEL_NAME]は、あなたのコールを受け取れません。空間ボイスチャットに再接続されます。 + [VOICE_CHANNEL_NAME] はあなたのコールを受けることができません。 「近くのボイスチャット」に再接続されます。 </notification> <notification name="VoiceChannelJoinFailed"> - [VOICE_CHANNEL_NAME]への接続に失敗しました。時間をおいて、再度、試みてください。空間ボイスチャットに再接続されます。 + [VOICE_CHANNEL_NAME] への接続に失敗しました。あとで再度お試しください。 「近くのボイスチャット」に再接続されます。 </notification> <notification name="VoiceLoginRetry"> - あなた用のボイスチャンネルを作成しています。1分ほどかかります。 + ボイスチャンネルを作成しています。1 分ほどかかります。 </notification> <notification name="Cannot enter parcel: not a group member"> 特定のグループメンバーのみこのエリアを訪問することができます。 @@ -2627,38 +2576,71 @@ Mキーを押して変更します。 立入禁止されているため、区画に入ることができません。 </notification> <notification name="Cannot enter parcel: not on access list"> - アクセス・リストに含まれていないため、区画に入ることができません。 + アクセスリストに含まれていないため、区画に入ることができません。 </notification> <notification name="VoiceNotAllowed"> - あなたには[VOICE_CHANNEL_NAME]のボイス・チャットに接続する権限がありません。 + あなたには [VOICE_CHANNEL_NAME] のボイスチャットに接続する権限がありません。 </notification> <notification name="VoiceCallGenericError"> - [VOICE_CHANNEL_NAME]のボイス・チャットに接続中に、エラーが発生しました。後でもう一度お試しください。 + [VOICE_CHANNEL_NAME] のボイスチャットに接続中に、エラーが発生しました。後でもう一度お試しください。 </notification> <notification name="ServerVersionChanged"> - 異なるサーバーバージョンのリージョンに来ました。パフォーマンスに影響があるかもしれません。 クリックしてリリースノートを確認してみてください。 + 異なるサーバーバージョンのリージョンに来ました。パフォーマンスに影響することがあります。 [[URL] リリースノートを確認] </notification> <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> <notification name="UnableToFindHelpTopic"> ヘルプトピックが見つかりませんでした。 </notification> + <notification name="ObjectMediaFailure"> + サーバーエラー: メディアのアップデートまたは失敗。 +「[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"/> + </notification> + <notification name="BottomTrayButtonCanNotBeShown"> + 選択したボタンを現在表示することができません。 +じゅうぶんなスペースができればボタンは表示されます。 + </notification> <global name="UnsupportedCPU"> - あなたの CPU の速度は必須動作環境の条件を満たしていません。 </global> <global name="UnsupportedGLRequirements"> [APP_NAME] に必要なハードウェアがないようです。 [APP_NAME] にはマルチテクスチャをサポートする OpenGL グラフィックカードが必要です。 お使いのグラフィックカードの最新ドライバがインストールされているかどうか、オペレーティングシステムのサービスパックとパッチが入っているかをご確認ください。 -この問題が何度も起きる場合は、[SUPPORT_SITE] へご連絡ください。 +この問題が何度も起きる場合は、[SUPPORT_SITE] をご確認ください。 </global> <global name="UnsupportedCPUAmount"> 796 @@ -2667,19 +2649,13 @@ Mキーを押して変更します。 510 </global> <global name="UnsupportedGPU"> - - あなたのグラフィック・カードは必須動作環境の条件を満たしていません。 + - あなたのグラフィックカードは必須動作環境の条件を満たしていません。 </global> <global name="UnsupportedRAM"> - - あなたのシステム・メモリは必須動作環境の条件を満たしていません。 - </global> - <global name="PermYes"> - はい - </global> - <global name="PermNo"> - いいえ + - あなたのシステムメモリは必須動作環境の条件を満たしていません。 </global> <global name="You can only set your 'Home Location' on your land or at a mainland Infohub."> - 自分の土地をお持ちの場合、ホームロケーションに設定できます。 -お持ちでない場合は、地図で「インフォハブ」を探してください。 + 自分の土地をお持ちの場合、「ホーム」に設定できます。 +お持ちでない場合は、地図で「インフォハブ」をお探しください。 </global> </notifications> 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 0000000000..90491e84c5 --- /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_activeim_row.xml b/indra/newview/skins/default/xui/ja/panel_activeim_row.xml new file mode 100644 index 0000000000..84272752cf --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_activeim_row.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_activeim_row"> + <text name="contact_name"> + Grumpity ProductEngine + </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 new file mode 100644 index 0000000000..17e1283d24 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_adhoc_control_panel.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_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 new file mode 100644 index 0000000000..03eaf33d92 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_avatar_list_item.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="avatar_list_item"> + <string name="FormatSeconds"> + [COUNT] 秒 + </string> + <string name="FormatMinutes"> + [COUNT] 分 + </string> + <string name="FormatHours"> + [COUNT] 時間 + </string> + <string name="FormatDays"> + [COUNT] 日 + </string> + <string name="FormatWeeks"> + [COUNT] 週間 + </string> + <string name="FormatMonths"> + [COUNT] ヶ月 + </string> + <string name="FormatYears"> + [COUNT] 年 + </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_avatar_tag.xml b/indra/newview/skins/default/xui/ja/panel_avatar_tag.xml new file mode 100644 index 0000000000..fd91ea97d1 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_avatar_tag.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="avatar_tag_notification"> + <panel name="msg_caption"> + <text name="sender_tag_name"> + Angela Tester + </text> + <text name="tag_time" value="23:30"/> + </panel> + <text_editor name="msg_text"> + The quick brown fox jumps over the lazy dog. + </text_editor> +</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 new file mode 100644 index 0000000000..5d6a6065ae --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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"> + ブロックリスト + </text> + <scroll_list name="blocked" 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 new file mode 100644 index 0000000000..f12f07f3e9 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_bottomtray.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="bottom_tray"> + <string name="SpeakBtnToolTip"> + マイクのオン・オフ + </string> + <string name="VoiceControlBtnToolTip"> + ボイスコントロールパネルの表示・非表示 + </string> + <layout_stack name="toolbar_stack"> + <layout_panel name="speak_panel"> + <talk_button name="talk"> + <speak_button label="話す" label_selected="話す" name="speak_btn"/> + </talk_button> + </layout_panel> + <layout_panel name="gesture_panel"> + <gesture_combo_list label="ジェスチャー" name="Gesture" tool_tip="ジェスチャーの表示・非表示"/> + </layout_panel> + <layout_panel name="movement_panel"> + <button label="移動" name="movement_btn" tool_tip="移動コントロールの表示・非表示"/> + </layout_panel> + <layout_panel name="cam_panel"> + <button label="視界" name="camera_btn" tool_tip="カメラコントロールの表示・非表示"/> + </layout_panel> + <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="会話"/> + </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_bottomtray_lite.xml b/indra/newview/skins/default/xui/ja/panel_bottomtray_lite.xml new file mode 100644 index 0000000000..6eca8adfe5 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_bottomtray_lite.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="bottom_tray_lite"> + <layout_stack name="toolbar_stack_lite"> + <layout_panel name="gesture_panel"> + <gesture_combo_list label="ジェスチャー" name="Gesture" tool_tip="ジェスチャーの表示・非表示"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_chat_header.xml b/indra/newview/skins/default/xui/ja/panel_chat_header.xml new file mode 100644 index 0000000000..babbff3132 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_chat_header.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="im_header" name="im_header"> + <text_editor name="user_name" value="Ericag Vader"/> + <text name="time_box" value="23:30"/> +</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 new file mode 100644 index 0000000000..f3c68c9f59 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_classified_info.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_classified_info"> + <panel.string name="type_mature"> + Moderate + </panel.string> + <panel.string name="type_pg"> + 「General」コンテンツ + </panel.string> + <panel.string name="l$_price"> + L$ [PRICE] + </panel.string> + <text name="title" value="クラシファイド広告情報"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text_editor name="classified_name" value="[name]"/> + <text_editor name="classified_location" value="[loading...]"/> + <text_editor name="content_type" value="[content type]"/> + <text_editor name="category" value="[category]"/> + <check_box label="毎週自動更新" name="auto_renew"/> + <text_editor name="price_for_listing" tool_tip="掲載価格"/> + <text_editor name="classified_desc" value="[description]"/> + </panel> + </scroll_container> + <panel name="buttons"> + <button label="テレポート" name="teleport_btn"/> + <button label="地図" name="show_on_map_btn"/> + <button label="編集" name="edit_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml b/indra/newview/skins/default/xui/ja/panel_edit_alpha.xml new file mode 100644 index 0000000000..f2e3e6e993 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="アルファ (下)" name="Lower Alpha" tool_tip="クリックして写真を選択します"/> + <texture_picker label="アルファ (上)" name="Upper Alpha" tool_tip="クリックして写真を選択します"/> + <texture_picker label="頭部のア ルファ" name="Head Alpha" tool_tip="クリックして写真を選択します"/> + <texture_picker label="目のアルファ" name="Eye Alpha" tool_tip="クリックして写真を選択します"/> + <texture_picker label="髪のアルファ" name="Hair Alpha" tool_tip="クリックして写真を選択します"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_classified.xml b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml new file mode 100644 index 0000000000..fa46e6d35a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_edit_classified.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="クラシファイド広告の編集" name="panel_edit_classified"> + <panel.string name="location_notice"> + (掲載後更新) + </panel.string> + <text name="title"> + クラシファイド広告の編集 + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="クリックして画像を選択"/> + <text name="Name:"> + タイトル: + </text> + <text name="description_label"> + 説明: + </text> + <text name="location_label"> + 位置: + </text> + <text name="classified_location"> + ローディング... + </text> + <button label="現在地に設定" name="set_to_curr_location_btn"/> + <combo_box name="content_type"> + <combo_item name="mature_ci"> + 「Moderate」コンテンツ + </combo_item> + <combo_item name="pg_ci"> + 「General」コンテンツ + </combo_item> + </combo_box> + <spinner label="L$" name="price_for_listing" tool_tip="掲載価格" value="50"/> + <check_box label="毎週自動更新" name="auto_renew"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="保存" name="save_changes_btn"/> + <button label="キャンセル" name="cancel_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_eyes.xml b/indra/newview/skins/default/xui/ja/panel_edit_eyes.xml new file mode 100644 index 0000000000..0cee85f685 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="瞳" name="Iris" tool_tip="クリックして写真を選択します"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="eyes_main_tab" title="目"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_gloves.xml b/indra/newview/skins/default/xui/ja/panel_edit_gloves.xml new file mode 100644 index 0000000000..393bd15236 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="生地" name="Fabric" tool_tip="クリックして写真を選択します"/> + <color_swatch label="色・色彩配合" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="gloves_main_tab" title="手袋"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_hair.xml b/indra/newview/skins/default/xui/ja/panel_edit_hair.xml new file mode 100644 index 0000000000..065771df16 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="テクスチャ" name="Texture" tool_tip="クリックして写真を選択"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="hair_color_tab" title="色"/> + <accordion_tab name="hair_style_tab" title="スタイル"/> + <accordion_tab name="hair_eyebrows_tab" title="眉毛"/> + <accordion_tab name="hair_facial_tab" title="フェイシャル"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_jacket.xml b/indra/newview/skins/default/xui/ja/panel_edit_jacket.xml new file mode 100644 index 0000000000..96a851cc4c --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="生地・上" name="Upper Fabric" tool_tip="クリックして写真を選択します"/> + <texture_picker label="生地・下" name="Lower Fabric" tool_tip="クリックして写真を選択します"/> + <color_swatch label="色・色彩配合" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="jacket_main_tab" title="ジャケット"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_pants.xml b/indra/newview/skins/default/xui/ja/panel_edit_pants.xml new file mode 100644 index 0000000000..f93d3d6b14 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="生地" name="Fabric" tool_tip="クリックして写真を選択します"/> + <color_swatch label="色・色彩配合" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="pants_main_tab" title="パンツ"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_pick.xml b/indra/newview/skins/default/xui/ja/panel_edit_pick.xml new file mode 100644 index 0000000000..88c05fbae7 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_edit_pick.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="ピック編集" name="panel_edit_pick"> + <text name="title"> + ピック編集 + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="クリックして画像を選択"/> + <text name="Name:"> + タイトル: + </text> + <text name="description_label"> + 説明: + </text> + <text name="location_label"> + 場所: + </text> + <text name="pick_location"> + ローディング... + </text> + <button label="現在地に設定" name="set_to_curr_location_btn"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="[WHAT] を保存" name="save_changes_btn"/> + <button label="キャンセル" name="cancel_btn"/> + </panel> +</panel> 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 5654245570..cd81565acb 100644 --- a/indra/newview/skins/default/xui/ja/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_edit_profile.xml @@ -1,33 +1,54 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Profile Edit" name="edit_profile_panel"> +<panel label="プロフィールの編集" name="edit_profile_panel"> <string name="CaptionTextAcctInfo"> - [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] + [ACCTTYPE] +[PAYMENTINFO] [AGEVERIFICATION] + </string> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) </string> <string name="AcctTypeResident" value="住人"/> <string name="AcctTypeTrial" value="トライアル"/> - <string name="AcctTypeCharterMember" value="特権メンバー"/> - <string name="AcctTypeEmployee" value="Linden Lab従業員"/> - <string name="PaymentInfoUsed" value="支払い情報登録済"/> - <string name="PaymentInfoOnFile" value="支払い情報登録済み"/> - <string name="NoPaymentInfoOnFile" value="支払い情報未登録"/> - <string name="AgeVerified" value="年齢確認済み"/> + <string name="AcctTypeCharterMember" value="創立メンバー"/> + <string name="AcctTypeEmployee" value="Linden Lab 従業員"/> + <string name="PaymentInfoUsed" value="支払情報使用履歴あり"/> + <string name="PaymentInfoOnFile" value="支払情報登録済"/> + <string name="NoPaymentInfoOnFile" value="支払情報未登録"/> + <string name="AgeVerified" value="年齢確認済"/> <string name="NotAgeVerified" value="年齢未確認"/> <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"> <panel name="data_panel"> <panel name="lifes_images_panel"> + <panel name="second_life_image_panel"> + <text name="second_life_photo_title_text" value="[SECOND_LIFE]:"/> + </panel> <icon label="" name="2nd_life_edit_icon" tool_tip="クリックして画像を選択"/> </panel> + <panel name="first_life_image_panel"> + <text name="real_world_photo_title_text" value="現実世界:"/> + </panel> <icon label="" name="real_world_edit_icon" tool_tip="クリックして画像を選択"/> <text name="title_homepage_text"> Web サイト: </text> + <line_editor name="homepage_edit" value="http://"/> <check_box label="検索結果に表示" name="show_in_search_checkbox"/> - <text name="title_acc_status_text" value="アカウントの状態:"/> + <text name="title_acc_status_text" value="マイアカウント:"/> + <text_editor name="acc_status_text" value="住人。 支払情報未登録。"/> + <text name="my_account_link" value="[[URL] マイアカウントに移動]"/> + <text name="title_partner_text" value="マイパートナー:"/> + <panel name="partner_data_panel"> + <name_box initial_value="(取得中)" name="partner_text" value="[FIRST] [LAST]"/> + </panel> + <text name="partner_edit_link" value="[[URL] 編集]" width="100"/> </panel> </panel> </scroll_container> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_shape.xml b/indra/newview/skins/default/xui/ja/panel_edit_shape.xml new file mode 100644 index 0000000000..1e20eb26b6 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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"> + 性別: + </text> + <radio_group name="sex_radio"> + <radio_item label="女性" name="radio"/> + <radio_item label="男性" name="radio2"/> + </radio_group> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shape_body_tab" title="身体"/> + <accordion_tab name="shape_head_tab" title="頭"/> + <accordion_tab name="shape_eyes_tab" title="目"/> + <accordion_tab name="shape_ears_tab" title="耳"/> + <accordion_tab name="shape_nose_tab" title="鼻"/> + <accordion_tab name="shape_mouth_tab" title="口"/> + <accordion_tab name="shape_chin_tab" title="あご"/> + <accordion_tab name="shape_torso_tab" title="頭"/> + <accordion_tab name="shape_legs_tab" title="脚"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_shirt.xml b/indra/newview/skins/default/xui/ja/panel_edit_shirt.xml new file mode 100644 index 0000000000..b2eb8fa18e --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="生地" name="Fabric" tool_tip="クリックして写真を選択"/> + <color_swatch label="色・色彩配合" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shirt_main_tab" title="シャツ"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_shoes.xml b/indra/newview/skins/default/xui/ja/panel_edit_shoes.xml new file mode 100644 index 0000000000..83e302f8f9 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="生地" name="Fabric" tool_tip="クリックして写真を選択します"/> + <color_swatch label="色・色彩配合" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shoes_main_tab" title="靴"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_skin.xml b/indra/newview/skins/default/xui/ja/panel_edit_skin.xml new file mode 100644 index 0000000000..cd7efbec68 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="頭部のタトゥー" name="Head Tattoos" tool_tip="クリックして写真を選択"/> + <texture_picker label="上部のタトゥー" name="Upper Tattoos" tool_tip="クリックして写真を選択"/> + <texture_picker label="下部のタトゥー" name="Lower Tattoos" tool_tip="クリックして写真を選択"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skin_color_tab" title="肌の色"/> + <accordion_tab name="skin_face_tab" title="顔の詳細"/> + <accordion_tab name="skin_makeup_tab" title="メイクアップ"/> + <accordion_tab name="skin_body_tab" title="身体の詳細"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_skirt.xml b/indra/newview/skins/default/xui/ja/panel_edit_skirt.xml new file mode 100644 index 0000000000..0a0936a3a9 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="生地" name="Fabric" tool_tip="クリックして写真を選択"/> + <color_swatch label="色・色彩配合" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skirt_main_tab" title="スカート"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_socks.xml b/indra/newview/skins/default/xui/ja/panel_edit_socks.xml new file mode 100644 index 0000000000..7cbc75624f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="生地" name="Fabric" tool_tip="クリックして写真を選択します"/> + <color_swatch label="色・色彩配合" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="socks_main_tab" title="靴下"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/ja/panel_edit_tattoo.xml new file mode 100644 index 0000000000..78ddae47f9 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="頭部のタトゥー" name="Head Tattoo" tool_tip="クリックして写真を選択" width="70"/> + <texture_picker label="上部のタトゥー" name="Upper Tattoo" tool_tip="クリックして写真を選択" width="70"/> + <texture_picker label="下部のタトゥー" name="Lower Tattoo" tool_tip="クリックして写真を選択" width="70"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_underpants.xml b/indra/newview/skins/default/xui/ja/panel_edit_underpants.xml new file mode 100644 index 0000000000..9287463b2c --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="生地" name="Fabric" tool_tip="クリックして写真を選択します"/> + <color_swatch label="色・色彩配合" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="underpants_main_tab" title="下着パンツ"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/ja/panel_edit_undershirt.xml new file mode 100644 index 0000000000..085ad97384 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="生地" name="Fabric" tool_tip="クリックして写真を選択します"/> + <color_swatch label="色・色彩配合" name="Color/Tint" tool_tip="クリックしてカラーピッカーを開きます"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="undershirt_main_tab" title="下着シャツ"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_edit_wearable.xml b/indra/newview/skins/default/xui/ja/panel_edit_wearable.xml new file mode 100644 index 0000000000..2ae8e1863e --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_edit_wearable.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="着用可能なもの" name="panel_edit_wearable"> + <string name="edit_shape_title"> + シェイプを編集中 + </string> + <string name="edit_skin_title"> + スキンを編集中 + </string> + <string name="edit_hair_title"> + 髪を編集中 + </string> + <string name="edit_eyes_title"> + 目を編集中 + </string> + <string name="edit_shirt_title"> + シャツを編集中 + </string> + <string name="edit_pants_title"> + パンツを編集中 + </string> + <string name="edit_shoes_title"> + 靴を編集中 + </string> + <string name="edit_socks_title"> + 靴下を編集中 + </string> + <string name="edit_jacket_title"> + ジャケットを編集中 + </string> + <string name="edit_skirt_title"> + スカートを編集中 + </string> + <string name="edit_gloves_title"> + 手袋を編集中 + </string> + <string name="edit_undershirt_title"> + 下着(上)を編集中 + </string> + <string name="edit_underpants_title"> + 下着(下)を編集中 + </string> + <string name="edit_alpha_title"> + アルファマスクを編集中 + </string> + <string name="edit_tattoo_title"> + タトゥーを編集中 + </string> + <string name="shape_desc_text"> + シェイプ: + </string> + <string name="skin_desc_text"> + スキン: + </string> + <string name="hair_desc_text"> + 髪: + </string> + <string name="eyes_desc_text"> + 目: + </string> + <string name="shirt_desc_text"> + シャツ: + </string> + <string name="pants_desc_text"> + パンツ: + </string> + <string name="shoes_desc_text"> + 靴: + </string> + <string name="socks_desc_text"> + 靴下: + </string> + <string name="jacket_desc_text"> + ジャケット: + </string> + <string name="skirt_skirt_desc_text"> + スカート: + </string> + <string name="gloves_desc_text"> + 手袋: + </string> + <string name="undershirt_desc_text"> + 下着シャツ: + </string> + <string name="underpants_desc_text"> + 下着パンツ: + </string> + <string name="alpha_desc_text"> + アルファマスク: + </string> + <string name="tattoo_desc_text"> + タトゥ: + </string> + <text name="edit_wearable_title" value="シェイプを編集中"/> + <panel label="シャツ" name="wearable_type_panel"> + <text name="description_text" value="シェイプ:"/> + </panel> + <panel name="button_panel"> + <button label="別名で保存" name="save_as_button"/> + <button label="元に戻す" name="revert_button"/> + </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 d4cf678d70..0c7114dbb7 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 new file mode 100644 index 0000000000..f7f575206a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_group_control_panel.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="panel_im_control_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 43e3ca69ef..1b89b1b3cc 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_general.xml @@ -1,74 +1,55 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="一般" name="general_tab"> - <string name="help_text"> - 「一般」タブには、このグループに関する -一般情報、オーナーと表示可能なメンバーのリスト -一般的な「グループ環境設定」、メンバーのオプションが含まれます。 + <panel.string name="help_text"> + 「一般」タブには、メンバー一覧、設定、メンバーのオプションなど、このグループに関する一般的な情報が記されています。 -オプションの上でマウスカーソルを動かすと、ヘルプ情報を得られます。 - </string> - <string name="group_info_unchanged"> - グループ設定が変更されました。 - </string> - <button label="?" label_selected="?" name="help_button"/> - <line_editor label="新しいグループ名をここに入力してください。" name="group_name_editor" width="330"/> - <text name="group_name" width="330"> - 新しいグループ名をここに入力してください。 - </text> - <text name="prepend_founded_by"> - 創設者 - </text> - <text name="founder_name"> - (待機中) - </text> - <text name="group_charter_label"> - グループ理念 - </text> - <texture_picker label="グループ記章" name="insignia" tool_tip="写真をクリックして選択"/> +オプションにマウスカーソルを当てると詳しい説明が表示されます。 + </panel.string> + <panel.string name="group_info_unchanged"> + 一般的なグループ情報が変更されました。 + </panel.string> + <panel.string name="incomplete_member_data_str"> + メンバーのデータを検索 + </panel.string> + <panel name="group_info_top"> + <texture_picker label="" name="insignia" tool_tip="クリックして写真を選択します"/> + <text name="prepend_founded_by"> + 創設者: + </text> + <name_box initial_value="(取得中)" name="founder_name"/> + <text name="join_cost_text"> + 無料 + </text> + <button label="参加します!" name="btn_join"/> + </panel> <text_editor name="charter"> グループの理念、指針を記入してください </text_editor> - <button label="参加する(L$0)" label_selected="参加する(L$0)" name="join_button"/> - <button label="詳細表示" label_selected="詳細表示" name="info_button"/> - <text name="text_owners_and_visible_members"> - オーナーと公開メンバー - </text> - <text name="text_owners_are_shown_in_bold"> - (オーナーは太字で表示されています) - </text> <name_list name="visible_members"> - <name_list.columns label="メンバー名" name="name"/> + <name_list.columns label="メンバー" name="name"/> <name_list.columns label="タイトル" name="title"/> - <name_list.columns label="最終ログイン" name="online"/> + <name_list.columns label="ログイン" name="status"/> </name_list> - <text name="text_group_preferences"> - グループ環境設定 + <text name="my_group_settngs_label"> + 個人の設定 + </text> + <text name="active_title_label"> + 私のタイトル: </text> + <combo_box name="active_title" 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="show_in_group_list" tool_tip="このグループを検索結果に表示させます"/> - <check_box label="会員募集" name="open_enrollement" tool_tip="招待状なしに自由にこのグループに加入することを許可するかどうかを指定します"/> - <check_box label="入会費:" name="check_enrollment_fee" tool_tip="このグループへの参加に入会費を必須とするかどうかを指定します"/> - <spinner name="spin_enrollment_fee" tool_tip="「入会費」がチェックされている場合、新規会員は入会時にここに指定された金額を支払う必要があります"/> - <combo_box name="group_mature_check" tool_tip="グループ情報がMature向けかどうかの設定をします。"> - <combo_box.item name="select_mature" label="- Matureの選択 -"/> - <combo_box.item name="mature" label="Matureコンテンツ"/> - <combo_box.item name="pg" label="PGコンテンツ"/> + <text name="group_settngs_label"> + グループの設定 + </text> + <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="「入会費」にチェックが入っている場合、新規メンバーは指定された入会費を支払わなければグループに入れません。"/> + <combo_box name="group_mature_check" tool_tip="あなたのグループに「Moderate」にレート設定された情報があるかどうかを設定します"> + <combo_box.item label="「General」コンテンツ" name="pg"/> + <combo_box.item label="「Moderate」コンテンツ" name="mature"/> </combo_box> - <panel name="title_container"> - <text name="active_title_label"> - 私のアクティブ・タイトル - </text> - <combo_box name="active_title" tool_tip="このグループをアクティブ設定にした際アバターのネームタグに表示されるタイトルの設定"/> - </panel> - <check_box label="グループ通知を受信" name="receive_notices" tool_tip="グループからの通知を受信するかどうかを指定します。 このグループがスパム行為をしている場合は、このボックスのチェックを外してください"/> - <check_box label="プロフィールに表示" name="list_groups_in_profile" tool_tip="このグループをあなたのプロフィールに表示するかどうかを設定します"/> + <check_box initial_value="true" label="検索に表示" name="show_in_group_list" tool_tip="このグループを検索結果に表示させます"/> </panel> - <string name="incomplete_member_data_str"> - メンバー・データを検索 - </string> - <string name="confirm_group_create_str"> - このグループの作成にはL$100かかります。 -このグループの作成にL$100ものお金をかけてもかまいませんか? 慎重に判断してください。 -48時間以内に誰もこのグループに参加しなかった場合、グループは解体され、グループの名前は今後使用できなくなります。 - </string> </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 new file mode 100644 index 0000000000..4166108472 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_group_info_sidetray.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="グループ情報" name="GroupInfo"> + <panel.string name="default_needs_apply_text"> + 保存していない変更があります + </panel.string> + <panel.string name="want_apply_text"> + 変更を保存しますか? + </panel.string> + <panel.string name="group_join_btn"> + 参加 (L$[AMOUNT]) + </panel.string> + <panel.string name="group_join_free"> + 無料 + </panel.string> + <panel name="group_info_top"> + <text name="group_name" value="(ローディング...)"/> + <line_editor label="新しいグループの名前を入力してください" name="group_name_editor"/> + </panel> + <layout_stack name="layout"> + <layout_panel name="group_accordions"> + <accordion name="groups_accordion"> + <accordion_tab name="group_general_tab" title="一般"/> + <accordion_tab name="group_roles_tab" title="役割"/> + <accordion_tab name="group_notices_tab" title="通知"/> + <accordion_tab name="group_land_tab" title="土地・資産"/> + </accordion> + </layout_panel> + <layout_panel name="button_row"> + <button label="チャット" name="btn_chat"/> + <button label="グループコール" name="btn_call" tool_tip="このグループにコールする"/> + <button label="保存" label_selected="保存" name="btn_apply"/> + <button label="グループを作成" name="btn_create" tool_tip="新しいグループを作成"/> + </layout_panel> + </layout_stack> +</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 815bb93e66..a21b340fdd 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_invite.xml @@ -1,27 +1,24 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="メンバーを招待" name="invite_panel"> <panel.string name="confirm_invite_owner_str"> - 本当に新しい所有者を招待しますか?この操作は取り消しできません。 + 本当に新しい所有者を招待しますか?この操作は取り消しできません。 </panel.string> <panel.string name="loading"> (ローディング...) </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キーを押しながら住人名をクリックします。"/> - <button label="リストから選択したものを削除" name="remove_button" tool_tip="上で選択した居住者を招待リストから削除します。"/> + <name_list bottom_delta="-160" height="156" name="invitee_list" tool_tip="Ctrl キーを押しながら複数の住人をクリックできます"/> + <button label="リストから選択したものを削除" name="remove_button" tool_tip="招待リストから上で選択した住人を削除します"/> <text name="role_text"> 割り当て先の役割を選択: </text> - <combo_box name="role_name" tool_tip="メンバーに割り当て可能な役割をリストから選択。"/> + <combo_box name="role_name" tool_tip="メンバーに割り当てたい役割をリストから選んください"/> <button label="招待を送信" name="ok_button"/> <button label="取り消し" name="cancel_button"/> <string name="GroupInvitation"> diff --git a/indra/newview/skins/default/xui/ja/panel_group_land_money.xml b/indra/newview/skins/default/xui/ja/panel_group_land_money.xml index 2b7292d8b2..c0449f1221 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_land_money.xml @@ -1,85 +1,81 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="土地とL$" name="land_money_tab"> - <string name="help_text"> - グループ所有地一覧は、寄付に関する詳細と一緒に表示されています。 「土地利用の合計」が「寄付総額」以下、または同じになるまで警告が表示されます。 「計画」、「詳細」、「販売」タブにはグループの資金に関する情報が掲載されています。 - </string> - <button label="?" name="help_button"/> - <string name="cant_view_group_land_text"> - あなたはグループ所有の土地表示を許されていません。 - </string> - <string name="cant_view_group_accounting_text"> - あなたはグループの会計情報の表示を許されていません。 - </string> - <string name="loading_txt"> + <panel.string name="help_text"> + 「土地利用の合計」が「寄付総額」以下、または同じになるまで警告が表示されます。 + </panel.string> + <panel.string name="cant_view_group_land_text"> + グループ所有地を確認する権限がありません。 + </panel.string> + <panel.string name="cant_view_group_accounting_text"> + グループの会計情報を確認する権限がありません。 + </panel.string> + <panel.string name="loading_txt"> ロード中... - </string> - <text name="group_land_heading"> - グループの保有地 - </text> - <scroll_list name="group_parcel_list"> - <column label="区画" name="name"/> - <column label="地域(リージョン)" name="location"/> - <column label="種類" name="type"/> - <column label="面積" name="area"/> - <column label="" name="hidden"/> - </scroll_list> - <button label="地図" label_selected="地図" name="map_button"/> - <text name="total_contributed_land_label"> - 寄付総額: - </text> - <text name="total_contributed_land_value" width="150"> - [AREA]平方メートル - </text> - <text name="total_land_in_use_label"> - 土地利用の合計: - </text> - <text name="total_land_in_use_value" width="150"> - [AREA]平方メートル - </text> - <text name="land_available_label"> - 利用可の土地: - </text> - <text name="land_available_value" width="150"> - [AREA]平方メートル - </text> - <text name="your_contribution_label"> - あなたの貢献: - </text> - <string name="land_contrib_error"> - 土地の出資設定を行うことができませんでした。 - </string> - <text name="your_contribution_units"> - (平方メートル) - </text> - <text name="your_contribution_max_value"> - ([AMOUNT]最大) - </text> - <text name="group_over_limit_text"> - 使用中の土地をサポートするには、グループ・メンバーがさらに多 -くの土地クレジットを提供する必要があります。 - </text> - <text name="group_money_heading"> - グループL$ - </text> + </panel.string> + <panel.string name="land_contrib_error"> + 土地の貢献を設定することができません + </panel.string> + <panel name="layout_panel_landmoney"> + <scroll_list name="group_parcel_list"> + <scroll_list.columns label="区画" name="name"/> + <scroll_list.columns label="地域" name="location"/> + <scroll_list.columns label="種類" name="type"/> + <scroll_list.columns label="面積" name="area"/> + </scroll_list> + <text name="total_contributed_land_label"> + 寄付合計: + </text> + <text name="total_contributed_land_value"> + [AREA] 平方メートル + </text> + <button label="地図" label_selected="地図" name="map_button"/> + <text name="total_land_in_use_label"> + 土地利用の合計: + </text> + <text name="total_land_in_use_value"> + [AREA] 平方メートル + </text> + <text name="land_available_label"> + 利用可能の土地: + </text> + <text name="land_available_value"> + [AREA] 平方メートル + </text> + <text name="your_contribution_label"> + あなたの貢献: + </text> + <text name="your_contribution_units"> + 平方メートル + </text> + <text name="your_contribution_max_value"> + (最大 [AMOUNT]) + </text> + <text name="group_over_limit_text"> + 土地利用をサポートするための土地クレジットが足りません + </text> + <text name="group_money_heading"> + グループの L$ + </text> + </panel> <tab_container name="group_money_tab_container"> <panel label="計画" name="group_money_planning_tab"> <text_editor name="group_money_planning_text"> - 計算中... + ローディング... </text_editor> </panel> <panel label="詳細" name="group_money_details_tab"> <text_editor name="group_money_details_text"> - 計算中… + ローディング... </text_editor> - <button label="前の週" label_selected="前の週" name="earlier_details_button" tool_tip="前の週の履歴"/> - <button label="次の週" label_selected="次の週" name="later_details_button" tool_tip="次の週の履歴"/> + <button label="前の週" label_selected="前の週" name="earlier_details_button" tool_tip="前の週"/> + <button label="次の週" label_selected="次の週" name="later_details_button" tool_tip="次の週"/> </panel> - <panel label="販売" name="group_money_sales_tab"> + <panel label="販売取引" name="group_money_sales_tab"> <text_editor name="group_money_sales_text"> - 計算中… + ローディング... </text_editor> - <button label="前の週" label_selected="前の週" name="earlier_sales_button" tool_tip="前の週の履歴"/> - <button label="次の週" label_selected="次の週" name="later_sales_button" tool_tip="次の週の履歴"/> + <button label="前の週" label_selected="前の週" name="earlier_sales_button" tool_tip="前の週"/> + <button label="次の週" label_selected="次の週" name="later_sales_button" tool_tip="次の週"/> </panel> </tab_container> </panel> 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 a652e3bf11..4b548049c8 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 1146065cd1..a0c50c6122 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_notices.xml @@ -1,66 +1,61 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="通知" name="notices_tab"> - <string name="help_text"> - 通知機能を使うと、グループ内ですばやく情報を伝達できます。 -複数のあて先にメッセージを送信できるほか、 -必要に応じてアイテムをメッセージに添付することもできます。 -通知は、受信アビリティがある役割のグループ・メンバーにのみ配信されます。 -通知をオフにするには、一般タブを使います。 - </string> - <string name="no_notices_text"> - 過去の通知はありません。 - </string> - <button label="?" label_selected="?" name="help_button"/> - <text name="lbl"> - グループ通知アーカイブ - </text> + <panel.string name="help_text"> + 通知でメッセージを送ることができ、通知にアイテムを添付することができます。 +通知を受け取ることができる「役割」にあるメンバーだけに送信されます。 +「一般」タブで通知の受信をオフにすることができます。 + </panel.string> + <panel.string name="no_notices_text"> + 過去の通知はありません + </panel.string> <text name="lbl2"> - 通知は 14 日間保存されます。 通知リストは 1 つのグループにつき、1 日最大 200件 に制限されます。 + 通知は 14 日間保存されます。 +1 日の制限数は 200 通です。 </text> <scroll_list name="notice_list"> - <column label="" name="icon"/> - <column label="件名" name="subject"/> - <column label="送り主" name="from"/> - <column label="日付" name="date"/> + <scroll_list.columns label="" name="icon"/> + <scroll_list.columns label="件名" name="subject"/> + <scroll_list.columns label="送り主" name="from"/> + <scroll_list.columns label="日付" name="date"/> </scroll_list> <text name="notice_list_none_found"> - 何も見つかりませんでした。 + 見つかりませんでした </text> - <button label="新しい通知" label_selected="新しい通知を作成" name="create_new_notice"/> - <button label="更新" label_selected="リスト更新" name="refresh_notices"/> + <button label="新しい通知を作成" label_selected="新しい通知を作成" name="create_new_notice" tool_tip="新しい通知を作成します"/> + <button label="更新" label_selected="リスト更新" name="refresh_notices" tool_tip="通知リストを更新します"/> <panel label="新しい通知を作成" name="panel_create_new_notice"> <text name="lbl"> 通知を作成 </text> - <text name="lbl2"> - 持ち物からこのパネルにアイテムを 1 つドラッグして添付できます。 添付するアイテムはコピーと再販・プレゼントが可能でなければなりません。また、フォルダは送れません。 - </text> <text name="lbl3"> 件名: </text> <text name="lbl4"> - メッセージ: + 内容: </text> <text name="lbl5"> 添付: </text> - <button label="添付物を削除" label_selected="添付物を削除" name="remove_attachment"/> - <button label="送信" label_selected="通知を送信" name="send_notice"/> - <panel name="drop_target" tool_tip="持ち物からアイテムをメッセージ欄にドラッグしてください。通知と一緒に送信されます。送信するにはコピー、譲渡が可能なオブジェクトである必要があります。"/> + <text name="string"> + ここにアイテムをドラッグ&ドロップして添付してください: + </text> + <button label="取り外す" label_selected="添付物を削除" name="remove_attachment" tool_tip="あなたの通知から添付されたアイテムを削除します"/> + <button label="送信" label_selected="送信" name="send_notice"/> + <group_drop_target name="drop_target" tool_tip="持ち物のアイテムをこのボックスにドラッグして、通知と一緒に送ります。 添付するには、そのアイテムのコピーと再販・プレゼントの権限があなたにある必要があります。"/> </panel> <panel label="過去の通知を表示" name="panel_view_past_notice"> <text name="lbl"> アーカイブ通知 </text> <text name="lbl2"> - 新しい通知の送信は、上の[新しい通知を作成する]をクリックしてください。 + 新しい通知を送信するには、+ ボタンを押してください </text> <text name="lbl3"> 件名: </text> <text name="lbl4"> - メッセージ: + 内容: </text> - <button label="添付物を開く" label_selected="添付物を開く" name="open_attachment"/> + <button label="添付アイテムを開く" label_selected="添付物を開く" name="open_attachment"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_group_notify.xml b/indra/newview/skins/default/xui/ja/panel_group_notify.xml new file mode 100644 index 0000000000..7135ae780d --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_group_notify.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="instant_message" name="panel_group_notify"> + <string name="message_max_lines_count" value="7"/> + <string name="subject_font" value="SANSSERIF_BIG"/> + <string name="date_font" value="SANSSERIF"/> + <panel label="header" name="header"> + <text name="title" value="送信者の名前 / グループ名"/> + </panel> + <text_editor name="message" value="message"/> + <text name="attachment" value="添付アイテム"/> + <button label="OK" name="btn_ok"/> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_group_roles.xml b/indra/newview/skins/default/xui/ja/panel_group_roles.xml index 963a4ba5e2..db6fe268c7 100644 --- a/indra/newview/skins/default/xui/ja/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/ja/panel_group_roles.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="メンバーと役割" name="roles_tab"> <panel.string name="default_needs_apply_text"> - 現在のサブタブに、未適用の変更があります。 + 保存していない変更があります </panel.string> <panel.string name="want_apply_text"> - これらの変更を適用しますか? + 変更を保存しますか? </panel.string> <tab_container name="roles_tab_container"> <panel label="メンバー" name="members_sub_tab" tool_tip="メンバー"> @@ -17,28 +17,37 @@ Ctrl キーを押しながらメンバー名をクリックすると <name_list name="member_list"> <name_list.columns label="メンバー" name="name"/> <name_list.columns label="寄付" name="donated"/> - <name_list.columns label="オンライン" name="online"/> + <name_list.columns label="ステータス" name="online"/> </name_list> <button label="招待" name="member_invite"/> <button label="追放" name="member_eject"/> </panel> <panel label="役割" name="roles_sub_tab"> <panel.string name="help_text"> - 役割にはタイトルがあり、メンバーが行使可能な -能力のリストが定義されます。 メンバーは、 -1つまたは複数の役割に属することができます。 1つのグループに対し、 -「全員」と「オーナー」の役割を含めて最高で10の役割を持たせることができます。 + 役割には、タイトルと許可された能力が +割り当てられています。 メンバーは +1つ以上の役割を持つことができます。 グループで使える役割は10つまでで、 +「全員(Everyone)」と「オーナー(Owner)」がそれに含まれています。 </panel.string> <panel.string name="cant_delete_role"> - 「全員」と「オーナー」は特別な役割なので、削除できません。 + 「全員(Everyone)」と「オーナー(Owner)」の役割は削除することができません。 + </panel.string> + <panel.string name="power_folder_icon"> + Inv_FolderClosed + </panel.string> + <panel.string name="power_all_have_icon"> + Checkbox_On + </panel.string> + <panel.string name="power_partial_icon"> + Checkbox_Off </panel.string> <filter_editor label="役割を選別" name="filter_input"/> <scroll_list name="role_list"> <scroll_list.columns label="役割" name="name"/> <scroll_list.columns label="肩書き" name="title"/> - <scroll_list.columns label="メンバー" name="members"/> + <scroll_list.columns label="#" name="members"/> </scroll_list> - <button label="役割を追加" name="role_create"/> + <button label="新しい役割" name="role_create"/> <button label="役割を削除" name="role_delete"/> </panel> <panel label="能力" name="actions_sub_tab" tool_tip="能力の説明文には、どの役割・メンバーがその能力を持つかが書かれています。"> @@ -47,8 +56,7 @@ Ctrl キーを押しながらメンバー名をクリックすると 能力によって決まります。 さまざまな能力が用意されています。 </panel.string> <filter_editor label="能力を選別" name="filter_input"/> - <scroll_list name="action_list" tool_tip="能力を選択して詳細を表示します。"> - <scroll_list.columns label="" name="icon"/> + <scroll_list name="action_list" tool_tip="詳細を見るには、能力を選んでください。"> <scroll_list.columns label="" name="action"/> </scroll_list> </panel> @@ -64,55 +72,44 @@ Ctrl キーを押しながらメンバー名をクリックすると <text name="static2"> 許可された能力 </text> - <scroll_list name="member_allowed_actions" tool_tip="許可された能力の詳細は「能力」タブをご覧ください。"> - <scroll_list.columns label="" name="icon"/> + <scroll_list name="member_allowed_actions" tool_tip="各能力の詳細は、能力のタブをご覧ください。"> <scroll_list.columns label="" name="action"/> </scroll_list> </panel> <panel name="roles_footer"> <text name="static"> - 名前 + 役割名 </text> - <line_editor name="role_name"> - 従業員 - </line_editor> + <line_editor name="role_name"/> <text name="static3"> - 肩書き + 役割タイトル </text> - <line_editor name="role_title"> - (待機中) - </line_editor> + <line_editor name="role_title"/> <text name="static2"> 説明 </text> - <text_editor name="role_description"> - (待機中) - </text_editor> + <text_editor name="role_description"/> <text name="static4"> 割当られたメンバー </text> - <check_box label="メンバーが公開状態" name="role_visible_in_list" tool_tip="この役割のメンバーをグループ外の人の一般タブに表示するかどうかを設定します。"/> + <check_box label="Reveal members" name="role_visible_in_list" tool_tip="グループ外の人が一般タブを見たときに、この役割のメンバーが表示されるかどうかを設定します。"/> <text name="static5" tool_tip="現在選択されている役割で実行できる能力のリスト"> 許可された能力 </text> - <scroll_list name="role_allowed_actions" tool_tip="許可された能力の詳細は「能力」タブをご覧ください。"> - <scroll_list.columns label="" name="icon"/> + <scroll_list name="role_allowed_actions" tool_tip="各能力の詳細は、能力のタブをご覧ください。"> <scroll_list.columns label="" name="checkbox"/> <scroll_list.columns label="" name="action"/> </scroll_list> </panel> <panel name="actions_footer"> - <text name="static"> - 説明 - </text> <text_editor name="action_description"> これは「グループからメンバーを追放する」能力です。 オーナーを追放できるのは、別のオーナーだけです。 </text_editor> <text name="static2"> - 役割と能力 + この能力を持つ役割 </text> <text name="static3"> - 能力のあるメンバー + この能力を持つメンバー </text> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_groups.xml b/indra/newview/skins/default/xui/ja/panel_groups.xml index 785fd868ab..de81a6431a 100644 --- a/indra/newview/skins/default/xui/ja/panel_groups.xml +++ b/indra/newview/skins/default/xui/ja/panel_groups.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel name="groups"> <text name="groupdesc"> - アクティブなグループ名は太字で表示されています + アクティブなグループは太字で表示されています </text> - <text name="groupcount"> - あなたは[COUNT] グループに所属しています (最大[MAX]) + <text name="groupcount" width="270"> + [COUNT] のグループに所属しています (最大[MAX]) </text> - <button label="IM/コール" name="IM" + <button label="IM・コール" name="IM" tool_tip="インスタントメッセージ・セッションを開く" /> <button label="情報" name="Info" /> <button label="アクティブ" name="Activate" /> 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 48f04b2b5d..be15e92aa1 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,9 +1,30 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <button label="プロフィールの表示" name="view_profile_btn"/> - <button label="フレンドを追加" name="add_friend_btn"/> - <button label="共有" name="share_btn"/> - <panel name="panel_call_buttons"> - <button label="コール" name="call_btn"/> - </panel> + <text name="avatar_name" value="不明"/> + <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" tool_tip="この人にテレポートを送ります"/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="共有" name="share_btn"/> + </layout_panel> + <layout_panel name="share_btn_panel"> + <button label="支払う" name="pay_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_instant_message.xml b/indra/newview/skins/default/xui/ja/panel_instant_message.xml new file mode 100644 index 0000000000..9fd0cb3b0d --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_instant_message.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="im_panel" name="im_panel"> + <string name="message_max_lines_count"> + 6 + </string> + <panel label="im_header" name="im_header"> + <text name="user_name" value="Erica Vader"/> + <text name="time_box" value="23:30"/> + </panel> + <button label="返信" name="reply"/> +</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 new file mode 100644 index 0000000000..87477c2651 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_landmark_info.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="landmark_info"> + <string name="title_create_landmark" value="ランドマークを作成"/> + <string name="title_edit_landmark" value="ランドマークを編集"/> + <string name="title_landmark" value="ランドマーク"/> + <string name="not_available" value="(該当なし)"/> + <string name="unknown" value="(不明)"/> + <string name="public" value="(公開)"/> + <string name="server_update_text"> + 場所の情報はサーバーがアップデートされるまでご利用いただけません。 + </string> + <string name="server_error_text"> + この位置の情報は現在ご利用いただけません。あとでもう一度お試しください。 + </string> + <string name="server_forbidden_text"> + この位置の情報は、アクセス制限のためご利用いただけません。 許可については区画所有者にお問い合わせください。 + </string> + <string name="acquired_date"> + [year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] + </string> + <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"> + <text name="region_title" value="SampleRegion"/> + <text name="parcel_title" value="SampleParcel, Name Long (145, 228, 26)"/> + <expandable_text name="description" value="Du waltz die spritz"/> + <text name="maturity_value" value="不明"/> + <panel name="landmark_info_panel"> + <text name="owner_label" value="所有者:"/> + <text name="creator_label" value="制作者:"/> + <text name="created_label" value="制作日:"/> + </panel> + <panel name="landmark_edit_panel"> + <text name="title_label" value="タイトル:"/> + <text name="notes_label" value="メモ:"/> + <text name="folder_label" value="ランドマークの位置:"/> + </panel> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_landmarks.xml b/indra/newview/skins/default/xui/ja/panel_landmarks.xml new file mode 100644 index 0000000000..993c52b561 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="お気に入りバー"/> + <accordion_tab name="tab_landmarks" title="マイ ランドマーク"/> + <accordion_tab name="tab_inventory" title="持ち物"/> + <accordion_tab name="tab_library" title="ライブラリ"/> + </accordion> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="その他のオプションを表示します"/> + <button name="add_btn" tool_tip="新しいランドマークを追加します"/> + <dnd_button name="trash_btn" tool_tip="選択したランドマークを削除します"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_login.xml b/indra/newview/skins/default/xui/ja/panel_login.xml index 27eed48d82..c217af38ba 100644 --- a/indra/newview/skins/default/xui/ja/panel_login.xml +++ b/indra/newview/skins/default/xui/ja/panel_login.xml @@ -6,14 +6,40 @@ <panel.string name="forgot_password_url"> http://secondlife.com/account/request.php?lang=ja </panel.string> - <panel name="login_widgets"> - <line_editor name="first_name_edit" tool_tip="[SECOND_LIFE] ファーストネーム"/> - <line_editor name="last_name_edit" tool_tip="[SECOND_LIFE] ラストネーム"/> - <text name="start_location_text"> - 開始位置: - </text> - <text name="create_new_account_text"> - 新規アカウントを作成 - </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" width="160"> + <combo_box.item label="最後にログアウトした場所" name="MyLastLocation"/> + <combo_box.item label="ホーム" name="MyHome"/> + <combo_box.item label="<地域名を入力>" name="Typeregionname"/> + </combo_box> + <button label="ログイン" left_pad="30" name="connect_btn" width="60"/> + </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 new file mode 100644 index 0000000000..36c7b75f97 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_main_inventory.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="もの" name="main inventory panel"> + <panel.string name="Title"> + もの + </panel.string> + <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"/> + </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="選択したアイテムを削除します"/> + </panel> + <menu_bar name="Inventory Menu"> + <menu label="ファイル" name="File"> + <menu_item_call label="開く" name="Open"/> + <menu label="アップロード" name="upload"> + <menu_item_call label="画像 (L$ [COST] )..." name="Upload Image"/> + <menu_item_call label="サウンド (L$[COST] )..." name="Upload Sound"/> + <menu_item_call label="アニメーション (L$ [COST] )..." name="Upload Animation"/> + <menu_item_call label="一括 (ファイルにつき L$[COST] )..." name="Bulk Upload"/> + </menu> + <menu_item_call label="新しいウィンドウ" name="New Window"/> + <menu_item_call label="フィルターを表示" name="Show Filters"/> + <menu_item_call label="フィルターをリセット" name="Reset Current"/> + <menu_item_call label="すべてのフォルダを閉じる" name="Close All Folders"/> + <menu_item_call label="ごみ箱を空にする" name="Empty Trash"/> + <menu_item_call label="紛失物を空にする" name="Empty Lost And Found"/> + </menu> + <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 Gesture"/> + <menu label="衣類" name="New Clothes"> + <menu_item_call label="シャツ" name="New Shirt"/> + <menu_item_call label="パンツ" name="New Pants"/> + <menu_item_call label="靴" name="New Shoes"/> + <menu_item_call label="靴下" name="New Socks"/> + <menu_item_call label="ジャケット" name="New Jacket"/> + <menu_item_call label="スカート" name="New Skirt"/> + <menu_item_call label="手袋" name="New Gloves"/> + <menu_item_call label="下着(上)" name="New Undershirt"/> + <menu_item_call label="下着(下)" name="New Underpants"/> + <menu_item_call label="アルファ" name="New Alpha"/> + <menu_item_call label="タトゥ" name="New Tattoo"/> + </menu> + <menu label="身体部位" name="New Body Parts"> + <menu_item_call label="シェイプ(体型)" name="New Shape"/> + <menu_item_call label="スキン" name="New Skin"/> + <menu_item_call label="髪" name="New Hair"/> + <menu_item_call label="目" name="New Eyes"/> + </menu> + </menu> + <menu label="並べ替え" name="Sort"> + <menu_item_check label="名前順" name="By Name"/> + <menu_item_check label="日付順" name="By Date"/> + <menu_item_check label="フォルダを常に名前順に並べる" name="Folders Always By Name"/> + <menu_item_check label="システムフォルダを上に並べる" name="System Folders To Top"/> + </menu> + </menu_bar> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_me.xml b/indra/newview/skins/default/xui/ja/panel_me.xml index 84151f43cf..dda5bc0009 100644 --- a/indra/newview/skins/default/xui/ja/panel_me.xml +++ b/indra/newview/skins/default/xui/ja/panel_me.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="ミー" name="panel_me"> +<panel label="マイ プロフィール" name="panel_me"> <tab_container name="tabs"> - <panel label="プロフィール" name="panel_profile"/> - <panel label="ピック" name="panel_picks"/> + <panel label="マイ プロフィール" name="panel_profile"/> + <panel label="マイ ピック" name="panel_picks"/> </tab_container> </panel> 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 new file mode 100644 index 0000000000..6321dbb048 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_media_settings_general.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="一般" name="Media Settings General"> + <text name="home_label"> + ホームページ: + </text> + <text name="home_fails_whitelist_label"> + (このページは指定したホワイトリストをパスしません) + </text> + <line_editor name="home_url" tool_tip="このメディアソースのホームページ"/> + <text name="preview_label"> + プレビュー + </text> + <text name="current_url_label"> + 現在のページ: + </text> + <text name="current_url" tool_tip="メディアソースの現在のページ" value=""/> + <button label="リセット" name="current_url_reset_btn"/> + <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"/> + <check_box initial_value="false" label="自動メディア再生" name="auto_play"/> + <text name="media_setting_note"> + 注意: 住人はこの設定を無視できます + </text> + <check_box initial_value="false" label="オブジェクトの表面サイズに合わせて自動調整" name="auto_scale"/> + <text name="size_label"> + サイズ: + </text> + <text name="X_label"> + X + </text> +</panel> 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 new file mode 100644 index 0000000000..223bd3e28c --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_media_settings_permissions.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<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 new file mode 100644 index 0000000000..ea4fdb9ce5 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_media_settings_security.xml @@ -0,0 +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"/> + <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 new file mode 100644 index 0000000000..17461ef771 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_my_profile.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="プロフィール" name="panel_profile"> + <string name="CaptionTextAcctInfo"> + [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> + <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_editor name="acc_status_text"> + 住人。 支払情報未登録。 + リンデン。 + </text_editor> + <text name="title_partner_text" value="パートナー:"/> + <panel name="partner_data_panel"> + <name_box initial_value="(取得中)" name="partner_text"/> + </panel> + <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 new file mode 100644 index 0000000000..0426c4fe9a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_navigation_bar.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="navigation_bar"> + <panel name="navigation_panel"> + <pull_button name="back_btn" tool_tip="前の場所へ戻ります"/> + <pull_button name="forward_btn" tool_tip="次の場所へ進みます"/> + <button name="home_btn" tool_tip="「ホーム」にテレポート"/> + <location_input label="場所" name="location_combo"/> + <search_combo_box label="検索" name="search_combo_box" tool_tip="検索"> + <combo_editor label="[SECOND_LIFE] を検索:" name="search_combo_editor"/> + </search_combo_box> + </panel> + <favorites_bar name="favorite" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!"> + <label name="favorites_bar_label" tool_tip="ランドマークをここにドラッグして、Second Lifeのお気に入りの場所に素早くアクセス!"> + お気に入りバー + </label> + <chevron_button name=">>" tool_tip="お気に入りをもっと表示"/> + </favorites_bar> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml new file mode 100644 index 0000000000..c0549c8ae9 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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"> + 近くのチャット + </text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml index 04822c8848..5998206f27 100644 --- a/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_nearby_chat_bar.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="chat_bar"> - <line_editor label="ここをクリックしてチャットを開始します。" name="chat_box" tool_tip="エンターを押して発言、Ctrl+エンターで叫ぶ。"/> + <line_editor label="ここをクリックしてチャットを開始します。" name="chat_box" tool_tip="Enter キーを押して発言し、Ctrl + Enter キーで叫びます。"/> + <button name="show_nearby_chat" tool_tip="近くのチャットログを表示・非表示"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_media.xml b/indra/newview/skins/default/xui/ja/panel_nearby_media.xml new file mode 100644 index 0000000000..a670975dda --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_nearby_media.xml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="nearby_media"> + <string name="empty_item_text"> + <空> + </string> + <string name="parcel_media_name"> + 区画ストリーミングメディア + </string> + <string name="parcel_audio_name"> + 区画ストリーミングオーディオ + </string> + <string name="playing_suffix"> + (再生中) + </string> + <panel name="minimized_controls"> + <button label="すべて停止" name="all_nearby_media_disable_btn" tool_tip="近くのメディアをすべてオフにします"/> + <button label="すべて開始" name="all_nearby_media_enable_btn" tool_tip="近くのメディアをすべてオンにします"/> + <button name="open_prefs_btn" tool_tip="メディアの設定を開きます"/> + <button label="詳細 >>" label_selected="簡易 <<" name="more_less_btn" tool_tip="アドバンスコントロール"/> + </panel> + <panel name="nearby_media_panel"> + <combo_box name="show_combo"> + <combo_box.item label="すべて" name="All"/> + <combo_box.item label="この区画内" name="WithinParcel"/> + <combo_box.item label="この区画外" name="OutsideParcel"/> + </combo_box> + <scroll_list name="media_list"> + <scroll_list.columns label="近接" name="media_proximity"/> + <scroll_list.columns label="表示" name="media_visibility"/> + <scroll_list.columns label="クラス" name="media_class"/> + <scroll_list.columns label="名前" name="media_name"/> + <scroll_list.columns label="デバッグ" name="media_debug"/> + </scroll_list> + <panel> + <layout_stack name="media_controls"> + <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="volume_slider_ctrl"> + <slider_bar initial_value="0.5" name="volume_slider" tool_tip="選択したメディアの音量"/> + </layout_panel> + <layout_panel name="mute"> + <button name="mute_btn" tool_tip="選択したメディアの音をミュート"/> + </layout_panel> + <layout_panel name="zoom"> + <button name="zoom_btn" tool_tip="選択したメディアに近づく"/> + </layout_panel> + <layout_panel name="unzoom"> + <button name="unzoom_btn" tool_tip="選択したメディアから遠ざかる"/> + </layout_panel> + </layout_stack> + </panel> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_notes.xml b/indra/newview/skins/default/xui/ja/panel_notes.xml new file mode 100644 index 0000000000..cbeb5a7f97 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_notes.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="メモとプライバシー" name="panel_notes"> + <layout_stack name="layout"> + <layout_panel name="notes_stack"> + <scroll_container name="profile_scroll"> + <panel name="profile_scroll_panel"> + <text name="status_message" value="個人的メモ:"/> + <text name="status_message2" value="この人に許可:"/> + <check_box label="オンライン状態の確認" name="status_check"/> + <check_box label="地図で居場所を確認" name="map_check"/> + <check_box label="私のオブジェクトの編集・削除・取得" name="objects_check"/> + </panel> + </scroll_container> + </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_online_status.xml b/indra/newview/skins/default/xui/ja/panel_online_status.xml new file mode 100644 index 0000000000..fdc489f375 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_online_status.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="friend_online_status" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml new file mode 100644 index 0000000000..b941763388 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="もの" name="Outfits"> + <tab_container name="appearance_tabs"> + <inventory_panel label="マイ アウトフィット" name="outfitslist_tab"/> + <inventory_panel label="着用中" name="cof_tab"/> + </tab_container> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="その他のオプションを表示します"/> + <dnd_button name="trash_btn" tool_tip="選択したアイテムを削除します"/> + <button label="アウトフィットを保存する" name="make_outfit_btn" tool_tip="容姿をアウトフィットに保存します" width="140"/> + <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 new file mode 100644 index 0000000000..e8caab0696 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_outfits_inventory_gear_default.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_gear_default"> + <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 new file mode 100644 index 0000000000..bad4cdbc05 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_people.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Side tray panel --> +<panel label="人" name="people_panel"> + <string name="no_people" value="誰もいません"/> + <string name="no_one_near" value="近くに誰もいません"/> + <string name="no_friends_online" value="オンラインのフレンドはいません"/> + <string name="no_friends" value="フレンドはいません"/> + <string name="people_filter_label" value="人をフィルター"/> + <string name="groups_filter_label" value="グループをフィルター"/> + <filter_editor label="フィルター" name="filter_input"/> + <tab_container name="tabs"> + <panel label="近く" name="nearby_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="nearby_view_sort_btn" tool_tip="オプション"/> + <button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/> + </panel> + </panel> + <panel label="マイ フレンド" name="friends_panel"> + <accordion name="friends_accordion"> + <accordion_tab name="tab_online" title="オンライン"/> + <accordion_tab name="tab_all" title="全員"/> + </accordion> + <text name="no_friends_msg"> + お友達を追加するには、[secondlife:///app/search/people グローバル検索] をするか、ユーザーをクリックして行ってください。 +誰か一緒に行動をする人をお探しの時は、[secondlife:///app/worldmap 地図をお試しださい]。 + </text> + <panel label="bottom_panel" name="bottom_panel"> + <button name="friends_viewsort_btn" tool_tip="オプション"/> + <button name="add_btn" tool_tip="フレンド登録を申し出ます"/> + <button name="del_btn" tool_tip="選択した人をフレンドリストから削除します"/> + </panel> + </panel> + <panel label="マイ グループ" name="groups_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="groups_viewsort_btn" tool_tip="オプション"/> + <button name="plus_btn" tool_tip="グループに参加 / 新規グループを作成します"/> + <button name="activate_btn" tool_tip="選択したグループをアクティブにします"/> + </panel> + </panel> + <panel label="最新" name="recent_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="recent_viewsort_btn" tool_tip="オプション"/> + <button name="add_friend_btn" tool_tip="選択した住人をフレンドリストに登録"/> + </panel> + </panel> + </tab_container> + <panel name="button_bar"> + <button label="プロフィール" name="view_profile_btn" tool_tip="写真、グループ、その他住人情報を表示します"/> + <button label="IM" name="im_btn" tool_tip="インスタントメッセージを開きます"/> + <button label="コール" name="call_btn" tool_tip="この住人にコールします"/> + <button label="共有" name="share_btn"/> + <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 984d5f7268..4f58c032da 100644 --- a/indra/newview/skins/default/xui/ja/panel_picks.xml +++ b/indra/newview/skins/default/xui/ja/panel_picks.xml @@ -1,9 +1,17 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="ピック" name="panel_picks"> + <string name="no_picks" value="ピックなし"/> + <string name="no_classifieds" value="クラシファイド広告なし"/> + <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="show_on_map_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 new file mode 100644 index 0000000000..1f5031f3de --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_place_profile.xml @@ -0,0 +1,130 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="place_profile"> + <string name="on" value="オン"/> + <string name="off" value="オフ"/> + <string name="anyone" value="全員"/> + <string name="available" value="利用可"/> + <string name="allocated" value="割り当て済"/> + <string name="title_place" value="場所のプロフィール"/> + <string name="title_teleport_history" value="テレポートの履歴"/> + <string name="not_available" value="(該当なし)"/> + <string name="unknown" value="(不明)"/> + <string name="public" value="(公開)"/> + <string name="none_text" value="(なし)"/> + <string name="sale_pending_text" value="(販売処理中)"/> + <string name="group_owned_text" value="(グループ所有)"/> + <string name="price_text" value="L$"/> + <string name="area_text" value="平方メートル"/> + <string name="all_residents_text" value="すべての住人"/> + <string name="group_text" value="グループ"/> + <string name="can_resell"> + このリージョンで購入した土地は、再販することができます。 + </string> + <string name="can_not_resell"> + このリージョンで購入した土地は、再販できません。 + </string> + <string name="can_change"> + このリージョンで購入した土地は、統合・分割することができます。 + </string> + <string name="can_not_change"> + このリージョンで購入した土地は、統合・分割できません。 + </string> + <string name="server_update_text"> + 場所の情報は、サーバーがアップデートされるまでご利用いただけません。 + </string> + <string name="server_error_text"> + この場所の情報は現在ご利用いただけません。あとでもう一度お試しください。 + </string> + <string name="server_forbidden_text"> + この場所の情報は、アクセス制限のためご利用いただけません。 許可については区画所有者にお問い合わせください。 + </string> + <string name="acquired_date"> + [year,datetime,local] [mth,datetime,local] [day,datetime,local] [wkday,datetime,local] [hour,datetime,local]:[min,datetime,local]:[second,datetime,local] + </string> + <string name="icon_PG" value="parcel_drk_PG"/> + <string name="icon_M" value="parcel_drk_M"/> + <string name="icon_R" value="parcel_drk_R"/> + <string name="icon_Voice" value="parcel_drk_Voice"/> + <string name="icon_VoiceNo" value="parcel_drk_VoiceNo"/> + <string name="icon_Fly" value="parcel_drk_Fly"/> + <string name="icon_FlyNo" value="parcel_drk_FlyNo"/> + <string name="icon_Push" value="parcel_drk_Push"/> + <string name="icon_PushNo" value="parcel_drk_PushNo"/> + <string name="icon_Build" value="parcel_drk_Build"/> + <string name="icon_BuildNo" value="parcel_drk_BuildNo"/> + <string name="icon_Scripts" value="parcel_drk_Scripts"/> + <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"> + <text name="region_title" value="SampleRegion"/> + <text name="parcel_title" value="SampleParcel, Name Long (145, 228, 26)"/> + <expandable_text name="description" value="Du waltz die spritz"/> + <text name="owner_label" value="所有者:"/> + <text name="owner_value" value="Alex Superduperlongenamenton"/> + <text name="maturity_value" value="不明"/> + <accordion name="advanced_info_accordion"> + <accordion_tab name="parcel_characteristics_tab" title="区画"> + <panel> + <text name="rating_label" value="レーティング区分:"/> + <text name="rating_value" value="不明"/> + <text name="voice_label" value="ボイス:"/> + <text name="voice_value" value="オン"/> + <text name="fly_label" value="飛行:"/> + <text name="fly_value" value="オン"/> + <text name="push_label" value="プッシュ:"/> + <text name="push_value" value="オフ"/> + <text name="build_label" value="制作:"/> + <text name="build_value" value="オン"/> + <text name="scripts_label" value="スクリプト:"/> + <text name="scripts_value" value="オン"/> + <text name="damage_label" value="ダメージ:"/> + <text name="damage_value" value="オフ"/> + <button label="土地情報" name="about_land_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="region_information_tab" title="リージョン(地域) "> + <panel> + <text name="region_name_label" value="地域:"/> + <text name="region_name" value="Mooseland"/> + <text name="region_type_label" value="種類:"/> + <text name="region_type" value="Moose"/> + <text name="region_rating_label" value="レーティング区分:"/> + <text name="region_rating" value="Adult"/> + <text name="region_owner_label" value="所有者:"/> + <text name="region_owner" value="moose Van Moose"/> + <text name="region_group_label" value="グループ:"/> + <text name="region_group"> + The Mighty Moose of mooseville soundvillemoose + </text> + <button label="地域 / 不動産" name="region_info_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="estate_information_tab" title="エステート(不動産)"> + <panel> + <text name="estate_name_label" value="不動産:"/> + <text name="estate_rating_label" value="レーティング区分:"/> + <text name="estate_owner_label" value="所有者:"/> + <text name="covenant_label" value="約款:"/> + </panel> + </accordion_tab> + <accordion_tab name="sales_tab" title="販売中"> + <panel> + <text name="sales_price_label" value="価格:"/> + <text name="area_label" value="面積:"/> + <text name="traffic_label" value="トラフィック:"/> + <text name="primitives_label" value="プリム:"/> + <text name="parcel_scripts_label" value="スクリプト:"/> + <text name="terraform_limits_label" value="地形編集制限:"/> + <text name="subdivide_label" value="分割・統合許可:"/> + <text name="resale_label" value="再版許可:"/> + <text name="sale_to_label" value="販売先:"/> + </panel> + </accordion_tab> + </accordion> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_places.xml b/indra/newview/skins/default/xui/ja/panel_places.xml new file mode 100644 index 0000000000..e2dba19c1d --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_places.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="場所" name="places panel"> + <string name="landmarks_tab_title" value="マイ ランドマーク"/> + <string name="teleport_history_tab_title" value="テレポートの履歴"/> + <filter_editor label="私の場所をフィルターする" name="Filter"/> + <panel name="button_panel"> + <button label="テレポート" name="teleport_btn" tool_tip="該当するエリアにテレポートします"/> + <button label="地図" name="map_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"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml index 0665dd4590..87cd772143 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml @@ -1,12 +1,29 @@ <?xml version="1.0" encoding="utf-8"?> -<panel name="advanced"> - <text name="AspectRatioLabel1" tool_tip="(幅/高さ)"> - 縦横比: +<panel label="アドバンス" name="advanced"> + <panel.string name="aspect_ratio_text"> + [NUM]:[DEN] + </panel.string> + <slider label="視界角" name="camera_fov"/> + <slider label="距離" name="camera_offset_scale"/> + <text name="heading2"> + 自動ポジション: </text> - <combo_box name="aspect_ratio" tool_tip="(幅/高さ)"> - <combo_box.item label="4:3(標準CRT)" name="item1"/> - <combo_box.item label="5:4(1280x1024 LCD)" name="item2"/> - <combo_box.item label="8:5(ワイドスクリ-ン)" name="item3"/> - <combo_box.item label="16:9(ワイドスクリ-ン)" name="item4"/> - </combo_box> + <check_box label="制作・編集" name="edit_camera_movement" tool_tip="編集モードのオン・オフの切り替えに、自動カメラポジションを使います"/> + <check_box label="容姿" name="appearance_camera_movement" tool_tip="編集モードに入ったときに、自動カメラポジションを使います"/> + <check_box label="一人称視点で表示する" name="first_person_avatar_visible"/> + <check_box label="常にキー操作で動くようにする" name="arrow_keys_move_avatar_check"/> + <check_box label="上矢印キー2度押し+長押しで走る" name="tap_tap_hold_to_run"/> + <check_box label="話すときにアバターの口を動かす" name="enable_lip_sync"/> + <check_box label="吹き出しチャット" name="bubble_text_chat"/> + <slider label="透明度" name="bubble_chat_opacity"/> + <color_swatch name="background" tool_tip="吹き出しチャットの色を選択します"/> + <check_box label="スクリプトのエラーを表示:" name="show_script_errors"/> + <radio_group name="show_location"> + <radio_item label="近くのチャット" name="0"/> + <radio_item label="別々のウィンドウ" name="1"/> + </radio_group> + <check_box label="ボイスのオン・オフ切り替えに使用するトリガーキー:" name="push_to_talk_toggle_check" tool_tip="トグルモードの時にトリガーキーを 1 度押して放すと、マイクのオン・オフ設定を切り替えます。 トグルモードではないときは、トリガーキーを押した状態の時のみあなたの声が相手に聞こえます。"/> + <line_editor label="プッシュ・トゥ・スピークのトリガー" name="modifier_combo"/> + <button label="キー設定" name="set_voice_hotkey_button"/> + <button label="マウスの中央ボタン" name="set_voice_middlemouse_button" tool_tip="マウスの中央ボタンにリセットします"/> </panel> 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 96123c9d98..7fd2e31698 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/ja/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="ポップアップ" name="popups" title="ポップアップ"> - <text name="text_box"> - ポップアップを表示しない: + <text name="tell_me_label"> + 知らせる: </text> - <text name="dont_show_label"> - 次のポップアップは表示しない: - </text> - <button label="これは表示する" label_selected="これは表示する" name="enable_popup"/> - <text name="show_label" width="300" > - 次のポップアップは表示: + <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="text_box2" width="280"> - ノートカード、テクスチャ、ランドマークの提供: + <text name="dont_show_label"> + 表示しないメッセージ: </text> - <check_box label="自動的に承認" name="accept_new_inventory"/> - <check_box label="承認後、自動的に閲覧" name="show_new_inventory"/> - <button width="235" label="ポップアップ全てを有効化..." label_selected="「次回表示」ダイアログリセット..." name="reset_dialogs_btn" tool_tip="全てのオプショナルポップアップと「初回使用」通知を有効にしてください。"/> - <button width="235" label="これらのポップアップ全てを無効化..." name="skip_dialogs_btn" tool_tip="全てのオプショナルポップアップと「初回使用」通知を無効にしてください。"/> - <check_box label="新たに受け取ったオブジェクトを持ち物に自動的に表示" name="show_in_inventory"/> </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 193d43311c..d6fe54fbd1 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_chat.xml @@ -1,33 +1,33 @@ <?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"> - ミー + 自分 </text> <color_swatch label="その他" name="agent"/> <text name="text_box2"> - その他 + 他人 </text> <color_swatch label="IM" name="im"/> <text name="text_box3"> IM </text> - <color_swatch label="システム" name="system"/> + <color_swatch label="システム" name="system"/> <text name="text_box4"> - システム + システム </text> <color_swatch label="エラー" name="script_error"/> <text name="text_box5"> エラー </text> - <color_swatch label="オブジェクト" name="objects"/> + <color_swatch label="オブジェクト" name="objects"/> <text name="text_box6"> - オブジェクト + オブジェクト </text> <color_swatch label="所有者" name="owner"/> <text name="text_box7"> @@ -37,6 +37,11 @@ <text name="text_box9"> URL </text> - <check_box initial_value="true" label="チャット中はタイピング動作のアニメーションを再生" name="play_typing_animation"/> - <check_box label="オフライン時に受け取った IM をメールで送信" name="send_im_to_email"/> + <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="タブ" 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 584fcd6164..6df59ca189 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_general.xml @@ -1,90 +1,70 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="一般" name="general_panel"> - <combo_box name="start_location_combo"> - <combo_box.item name="MyHome" tool_tip="常に自宅(ホーム)にログイン" label="自宅(ホーム)"/> - <combo_box.item name="MyLastLocation" tool_tip="常に最後にいた場所にログイン" label="最後にログアウトした場所"/> - </combo_box> - <check_box label="ログイン画面にログイン位置を表示" name="show_location_checkbox"/> - <combo_box name="fade_out_combobox"> - <combo_box.item name="Never" label="なし"/> - <combo_box.item name="Show Temporarily" label="一時的に表示"/> - <combo_box.item name="Always" label="いつも"/> - </combo_box> - <check_box label="小さなアバター名" name="small_avatar_names_checkbox"/> - <check_box label="画面上で自分の名前を隠す" name="show_my_name_checkbox"/> - <text name="group_titles_textbox"> - グループ・タイトル: - </text> - <check_box label="グループ・タイトルをすべて非表示" name="show_all_title_checkbox"/> - <check_box label="画面上で自分のグループ・タイトルを隠す" name="show_my_title_checkbox"/> - <color_swatch label="" name="effect_color_swatch" tool_tip="カラー・ピッカーをクリックして開く"/> - <text name="UI Size:"> - UI サイズ: + <text name="language_textbox"> + 言語: </text> - <check_box label="解像度独立スケールを使用" name="ui_auto_scale"/> - <spinner label="退席までの時間:" name="afk_timeout_spinner"/> - <check_box label="リンデン・ドル(L$)の支払い/受け取りを通知" name="notify_money_change_checkbox"/> - <text name="maturity_desired_label"> - レーティング区分: + <combo_box name="language_combobox"> + <combo_box.item label="システムデフォルト" name="System Default Language"/> + <combo_box.item label="English (英語)" name="English"/> + <combo_box.item label="Dansk (デンマーク語) – ベータ" name="Danish"/> + <combo_box.item label="Deutsch (ドイツ語) – ベータ" name="Deutsch(German)"/> + <combo_box.item label="Español (スペイン語) – ベータ" name="Spanish"/> + <combo_box.item label="Français (フランス語) – ベータ" name="French"/> + <combo_box.item label="Italiano (イタリア語) - ベータ" name="Italian"/> + <combo_box.item label="Nederlands (オランダ語) - ベータ" name="Dutch"/> + <combo_box.item label="Polski (ポーランド語) - ベータ" name="Polish"/> + <combo_box.item label="Português (ポルトガル語) – ベータ" name="Portugese"/> + <combo_box.item label="日本語 – ベータ" name="(Japanese)"/> + </combo_box> + <text name="language_textbox2"> + (再起動後に反映) </text> <text name="maturity_desired_prompt"> アクセスしたいコンテンツ: </text> + <text name="maturity_desired_textbox"/> <combo_box name="maturity_desired_combobox"> - <combo_box.item name="Desired_Adult" label="PG、Mature、Adult"/> - <combo_box.item name="Desired_Mature" label="PGとMature"/> - <combo_box.item name="Desired_PG" label="PG"/> + <combo_box.item label="General、Moderate、Adult" name="Desired_Adult"/> + <combo_box.item label="General と Moderate" name="Desired_Mature"/> + <combo_box.item label="General" name="Desired_PG"/> </combo_box> - <text name="maturity_desired_textbox"> - PG - </text> <text name="start_location_textbox"> ログイン位置: </text> - <text name="show_names_textbox"> - 名前を表示: + <combo_box name="start_location_combo"> + <combo_box.item label="最後にログアウトした場所" name="MyLastLocation" tool_tip="常に最後にいた場所にログイン"/> + <combo_box.item label="ホーム" name="MyHome" tool_tip="常にホーム(自宅)にログイン"/> + </combo_box> + <check_box initial_value="true" label="ログイン画面に表示する" name="show_location_checkbox"/> + <text name="name_tags_textbox"> + 名前の表示: </text> + <radio_group name="Name_Tag_Preference"> + <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"/> + <check_box label="グループタイトルを表示" name="show_all_title_checkbox1"/> <text name="effects_color_textbox"> - 自分の効果の色: - </text> - <text name="seconds_textbox"> - 秒 - </text> - <text name="crash_report_textbox"> - クラッシュ報告: + ビームの色: </text> - <text name="language_textbox"> - 言語: + <text name="title_afk_text"> + 一時退席までの時間: </text> - <text name="language_textbox2"> - (再起動にて反映) - </text> - <string name="region_name_prompt"> - <地域の名前入力> - </string> - <combo_box name="crash_behavior_combobox"> - <combo_box.item name="Askbeforesending" label="送る前に確認する"/> - <combo_box.item name="Alwayssend" label="常に送信"/> - <combo_box.item name="Neversend" label="送信しない"/> - </combo_box> - <combo_box name="language_combobox"> - <combo_box.item name="System Default Language" label="システム・デフォルト"/> - <combo_box.item name="English" label="English (英語)"/> - <combo_box.item name="Danish" label="Dansk (デンマーク語) – ベータ"/> - <combo_box.item name="Deutsch(German)" label="Deutsch (ドイツ語) – ベータ"/> - <combo_box.item name="Spanish" label="Español (スペイン語) – ベータ"/> - <combo_box.item name="French" label="Français (フランス語) – ベータ"/> - <combo_box.item name="Italian" label="Italiano (イタリア語) - ベータ"/> - <combo_box.item name="Hungarian" label="Magyar (ハンガリー語) - ベータ"/> - <combo_box.item name="Dutch" label="Nederlands (オランダ語) - ベータ"/> - <combo_box.item name="Polish" label="Polski (ポーランド語) - ベータ"/> - <combo_box.item name="Portugese" label="Português (ポルトガル語) – ベータ"/> - <combo_box.item name="Russian" label="Русский (ロシア語) - ベータ"/> - <combo_box.item name="Turkish" label="Türkçe (トルコ語) - ベータ"/> - <combo_box.item name="Ukrainian" label="Українська (ウクライナ語) - ベータ"/> - <combo_box.item name="Chinese" label="中文 (简体) (中国語) - ベータ"/> - <combo_box.item name="(Japanese)" label="日本語 – ベータ"/> - <combo_box.item name="(Korean)" label="한국어 (韓国語) – ベータ"/> + <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> - <check_box label="言語をオブジェクトと共有" name="language_is_public" tool_tip="優先言語をインワールドのオブジェクトが認識する"/> + <text name="text_box3"> + 取り込み中モード時の返事: + </text> + <text_editor name="busy_response"> + log_in_to_change + </text_editor> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml index fba2c5f18d..8df829c296 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_graphics1.xml @@ -12,7 +12,7 @@ <combo_box.item label="1024x768" name="1024x768"/> </combo_box> <text name="UI Size:"> - UIサイズ: + UI サイズ: </text> <text name="QualitySpeed"> クオリティとスピード: @@ -21,7 +21,7 @@ 速い </text> <text name="BetterText"> - 速 + 遅い </text> <text name="ShadersPrefText"> 低 @@ -35,12 +35,12 @@ <text name="ShadersPrefText4"> 超高 </text> - <panel label="CustomGraphics" name="CustomGraphics Panel"> + <panel label="カスタムグラフィック" name="CustomGraphics Panel"> <text name="ShadersText"> シェーダー: </text> - <check_box initial_value="true" label="バンプ・マッピングと光沢" name="BumpShiny"/> - <check_box initial_value="true" label="基本シェーダー" name="BasicShaders" tool_tip="このオプションを無効にするとグラフィック・カード・ドライバの種類によってはクラッシュ防止になります。"/> + <check_box initial_value="true" label="バンプマッピングと光沢" name="BumpShiny"/> + <check_box initial_value="true" label="基本シェーダー" name="BasicShaders" tool_tip="このオプションを無効にすると、グラフィックカードのドライバの種類によっては、クラッシュするのを防ぎます。"/> <check_box initial_value="true" label="周囲(大気)シェーダー" name="WindLightUseAtmosShaders"/> <check_box initial_value="true" label="水の反射" name="Reflections"/> <text name="ReflectionDetailText"> @@ -48,16 +48,16 @@ </text> <radio_group name="ReflectionDetailRadio"> <radio_item label="地形と樹木" name="0"/> - <radio_item label="すべての静的オブジェクト" name="1"/> + <radio_item label="すべての静止オブジェクト" name="1"/> <radio_item label="すべてのアバターとオブジェクト" name="2"/> <radio_item label="すべて" name="3"/> </radio_group> <text name="AvatarRenderingText"> アバター表示: </text> - <check_box initial_value="true" label="アバターの精度を下げる" name="AvatarImpostors"/> - <check_box initial_value="true" label="ハードウェア・スキニング" name="AvatarVertexProgram"/> - <check_box initial_value="true" label="アバターの服" name="AvatarCloth"/> + <check_box initial_value="true" label="アバターの描画を簡略化" name="AvatarImpostors"/> + <check_box initial_value="true" label="ハードウェアスキニング" name="AvatarVertexProgram"/> + <check_box initial_value="true" label="アバターの布" name="AvatarCloth"/> <slider label="描画距離:" name="DrawDistance"/> <text name="DrawDistanceMeterText2"> m @@ -99,7 +99,7 @@ </text> <radio_group name="LightingDetailRadio"> <radio_item label="太陽と月のみ" name="SunMoon"/> - <radio_item label="近隣のローカル・ライト" name="LocalLights"/> + <radio_item label="近くのローカルサイト" name="LocalLights"/> </radio_group> <text name="TerrainDetailText"> 地形詳細: 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 e0122d123f..b81889b412 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_privacy.xml @@ -1,20 +1,25 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="チャット設定" name="im"> <panel.string name="log_in_to_change"> - ログインして変更してください + ログインして変更 </panel.string> - <button label="履歴の消去" name="clear_cache"/> + <button label="履歴を消去" name="clear_cache" tool_tip="ログイン画像、最後にいた場所、テレポート履歴、Web、テクスチャキャッシュを削除します"/> <text name="cache_size_label_l"> (位置、画像、web、検索履歴) </text> - <check_box label="フレンドとグループのみオンライン状況の確認可能" name="online_visibility"/> - <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="log_instant_messages"/> - <radio_group name="ChatIMLogs"> - <radio_item label="チャット" name="radio1"/> - <radio_item label="IM" name="radio2"/> - </radio_group> - <button label="ブラウズ" label_selected="ブラウズ" name="log_path_button"/> + <check_box label="私のオンライン状態を確認できるのは、フレンドとグループだけ" name="online_visibility"/> + <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"/> + <text name="Logs:"> + ログ: + </text> + <check_box label="近くのチャットログをコンピューターに保存する" name="log_nearby_chat"/> + <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"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml index af8390ba5c..ad8c8437be 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_setup.xml @@ -1,11 +1,11 @@ <?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:"> 一人称視点: </text> <text name=" Mouse Sensitivity"> - マウスの精度 + マウスの感度 </text> <check_box label="切り替え" name="invert_mouse"/> <text name="Network:"> @@ -18,29 +18,29 @@ kbps </text> <check_box label="カスタムポート" name="connection_port_enabled"/> - <spinner label="ポート番号:" name="web_proxy_port"/> + <spinner label="ポート番号:" name="connection_port"/> <text name="cache_size_label_l"> キャッシュサイズ </text> <text name="text_box5"> MB </text> - <button label="ブラウズ" label_selected="ブラウズ" name="set_cache"/> - <button label="リセット" label_selected="設定" name="reset_cache"/> <text name="Cache location"> - キャッシュの場所 + キャッシュの保存場所: </text> + <button label="参照" label_selected="参照" name="set_cache"/> + <button label="リセット" label_selected="リセット" name="reset_cache"/> <text name="Web:"> Web: </text> <radio_group name="use_external_browser"> - <radio_item label="内蔵ブラウザを使用" name="internal" tool_tip="内蔵ブラウザでヘルプやWebリンクなどを見ます。[APP_NAME] 内に新しいウィンドウでこのブラウザが開きます。"/> - <radio_item label="外部ブラウザ(IEやFirefox)を使用" name="external" tool_tip="デフォルトのシステムWebブラウザでヘルプやWebリンク先などを見ます。全画面で起動中にはおすすめしません。"/> + <radio_item label="内蔵ブラウザを使用" name="internal" tool_tip="内蔵ブラウザでヘルプや Web リンクなどを見ます。[APP_NAME] 内に新しいウィンドウでこのブラウザが開きます。" value="0"/> + <radio_item label="指定のブラウザ(IE や Firefox)を使用" name="external" tool_tip="デフォルトのシステム Web ブラウザでヘルプや Web リンク先などを見ます。全画面で起動中にはおすすめしません。" value="1"/> </radio_group> - <check_box initial_value="false" label="Webプロキシ" name="web_proxy_enabled"/> - <line_editor name="web_proxy_editor" tool_tip="使用するプロキシ名またはIPアドレス"/> - <button label="ブラウズ" label_selected="ブラウズ" name="set_proxy"/> + <check_box initial_value="false" label="Web プロキシを有効にする" name="web_proxy_enabled"/> <text name="Proxy location"> - プロキシ + プロキシ: </text> + <line_editor name="web_proxy_editor" tool_tip="使用するプロキシのホスト名または IP アドレス"/> + <spinner label="ポート番号:" name="web_proxy_port"/> </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 499f57d75e..af64a217f6 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml @@ -1,72 +1,42 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="音声とビデオ" name="Preference Media panel"> - <slider label="音量" name="System Volume"/> - <slider label="風の音量" name="Wind Volume"/> - <slider label="サウンド" name="SFX Volume"/> +<panel label="サウンド" name="Preference Media panel"> + <slider label="全体の音量" name="System Volume"/> + <check_box initial_value="true" label="最小化でミュート" name="mute_when_minimized"/> + <slider label="ボタン" name="UI Volume"/> + <slider label="風" name="Wind Volume"/> + <slider label="効果音" name="SFX Volume"/> + <slider label="ストリーミング音楽" name="Music Volume"/> + <check_box label="有効" name="music_enabled"/> <slider label="メディア" name="Media Volume"/> - <slider label="UI" name="UI Volume"/> - <slider label="ミュージック" name="Music Volume"/> - <slider label="ボイス" name="Voice Volume"/> - <text_editor name="voice_unavailable"> - ボイスチャットを利用できません - </text_editor> - <check_box label="ボイスチャット" name="enable_voice_check"/> + <check_box label="有効" name="enable_media"/> + <slider label="ボイスチャット" name="Voice Volume"/> + <check_box label="有効" name="enable_voice_check"/> + <check_box label="メディアを自動再生する" name="media_auto_play_btn" tool_tip="ここにチェックを入れてメディアの自動再生を許可します" value="true"/> + <check_box label="他のアバターに取り付けられたメディアを再生します" name="media_show_on_others_btn" tool_tip="このチェックを外すと、近くにいる他のアバターに取り付けられたメディアを非表示にします。" value="true"/> + <text name="Listen from"> + ボイスチャットの設定 + </text> <radio_group name="ear_location"> <radio_item label="カメラの位置から聞く" name="0"/> <radio_item label="アバターの位置から聞く" name="1"/> </radio_group> - <button label="機器の設定" name="device_settings_btn"/> - <text name="muting_text"> - ボリューム: - </text> - <check_box label="オーディオをミュート" name="disable audio"/> - <text name="streaming_prefs_text"> - ストリーム環境設定: - </text> - <text name="audio_prefs_text"> - オーディオ環境設定: - </text> - <panel label="ボリューム" name="Volume Panel"/> - <check_box label="メディアを自動再生" name="auto_streaming_video"/> - <check_box label="最小化でミュート" name="mute_when_minimized"/> - <text name="streaming_text"> - ストリーミング: - </text> - <check_box label="音楽がある場合再生する" name="streaming_music"/> - <check_box label="ストリーミング・メディア使用可時に再生" name="streaming_video"/> - <text name="system_volume_text"> - サウンド効果: - </text> - <text name="wind_volume_text"> - 風の音量: - </text> - <text name="footsteps_volume_text"> - 足音: - </text> - <text name="ui_volume_text"> - UI音量: - </text> - <slider label="ドップラー効果" name="Doppler Effect"/> - <slider label="遠隔要因" name="Distance Factor"/> - <slider label="ロールオフ係数" name="Rolloff Factor"/> - <spinner label="L$変更基準点" name="L$ Change Threshold"/> - <spinner label="ヘルス変化基準点" name="Health Change Threshold"/> - <text name="doppler_effect_text"> - オーディオ環境設定: - </text> - <text name="distance_factor_text"> - 距離係数: - </text> - <text name="rolloff_factor_text"> - ロールオフ: - </text> - <text name="default_upload_bitrate_text"> - デフォルトUL速度: - </text> - <radio_group name="bitrate"> - <radio_item label="32kbps" name="32kbps"/> - <radio_item label="64kbps" name="64kbps"/> - <radio_item label="96kbps" name="96kbps"/> - <radio_item label="128kbps" name="128kbps"/> - </radio_group> + <button label="入力・出力機器" name="device_settings_btn"/> + <panel label="機器の設定" name="device_settings_panel"> + <panel.string name="default_text"> + デフォルト + </panel.string> + <text name="Input"> + 入力 + </text> + <text name="My volume label"> + 私の音量: + </text> + <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="スライダーを使って音量を調節します"/> + <text name="wait_text"> + しばらくお待ちください。 + </text> + <text name="Output"> + 出力 + </text> + </panel> </panel> 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 new file mode 100644 index 0000000000..0e1e2851e3 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="MediaControls"> + <string name="control_background_image_name"> + Inspector_Background + </string> + <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"> + <layout_panel> + <icon name="media_whitelist_flag" tool_tip="ホワイトリスト有効"/> + </layout_panel> + <layout_panel> + <icon name="media_secure_lock_flag" tool_tip="安全な閲覧"/> + </layout_panel> + </layout_stack> + </layout_panel> + <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_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> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_profile.xml b/indra/newview/skins/default/xui/ja/panel_profile.xml index a449c10e10..e7bc989c52 100644 --- a/indra/newview/skins/default/xui/ja/panel_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_profile.xml @@ -12,34 +12,45 @@ </string> <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=ja-JP"/> <string name="no_partner_text" value="なし"/> - <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="現実世界:"/> - </panel> - <text name="me_homepage_text"> - Webサイト: - </text> - <text name="title_member_text" value="メンバー登録:"/> - <text name="title_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="グループ:"/> - </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="teleport"/> - </panel> - <panel name="profile_me_buttons_panel"> - <button label="プロフィールの編集" name="edit_profile_btn"/> - <button label="容姿の編集" name="edit_appearance_btn"/> - </panel> + <string name="no_group_text" value="なし"/> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) + </string> + <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_editor name="acc_status_text"> + 住人。 支払情報未登録。 + リンデン。 + </text_editor> + <text name="title_partner_text" value="パートナー:"/> + <panel name="partner_data_panel"> + <name_box initial_value="(取得中)" name="partner_text"/> + </panel> + <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="テレポートを送ります"/> + <button label="▼" name="overflow_btn" 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_profile_view.xml b/indra/newview/skins/default/xui/ja/panel_profile_view.xml index 4aa2d5d947..5666a93cf0 100644 --- a/indra/newview/skins/default/xui/ja/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/ja/panel_profile_view.xml @@ -6,10 +6,11 @@ <string name="status_offline"> オフライン </string> - <text name="user_name" value="(ローディング...)"/> + <text_editor name="user_name" value="(ローディング...)"/> <text name="status" value="オンライン"/> <tab_container name="tabs"> <panel label="プロフィール" name="panel_profile"/> <panel label="ピック" name="panel_picks"/> + <panel label="メモとプライバシー" name="panel_notes"/> </tab_container> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_covenant.xml b/indra/newview/skins/default/xui/ja/panel_region_covenant.xml index 169f922149..9a517d79e9 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_covenant.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="約款" name="Covenant"> - <text font="SansSerifLarge" name="estate_section_lbl"> - 不動産: + <text font="SansSerifLarge" name="estate_section_lbl" width="200"> + 不動産 </text> <text name="estate_name_lbl"> 名前: @@ -26,21 +26,20 @@ この不動産には約款がありません。 </text_editor> <button label="リセット" name="reset_covenant"/> - <text name="covenant_help_text"> + <text name="covenant_help_text" left="100"> 約款の変更は不動産全区画に適用となります。 </text> - <text name="covenant_instructions"> - この不動産の約款の変更するには、 -ノートカードをドラッグ&ドロップしてください。 + <text name="covenant_instructions" width="390"> + この不動産約款の変更をする際は、ノートカードをドラッグ&ドロップしてください。 </text> - <text bottom_delta="-34" font="SansSerifLarge" name="region_section_lbl"> - 地域: + <text bottom_delta="-34" font="SansSerifLarge" name="region_section_lbl" width="200"> + 地域 </text> <text name="region_name_lbl"> 名前: </text> <text name="region_name_text"> - leyla + Erica </text> <text name="region_landtype_lbl"> 種類: diff --git a/indra/newview/skins/default/xui/ja/panel_region_debug.xml b/indra/newview/skins/default/xui/ja/panel_region_debug.xml index 4e6bae7172..f6865c12b1 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_debug.xml @@ -6,14 +6,14 @@ <text name="region_text"> 未知 </text> - <check_box label="スクリプト無効化" name="disable_scripts_check" tool_tip="この地域のスクリプトをすべて無効化"/> + <check_box label="スクリプト無効化" name="disable_scripts_check" tool_tip="この地域のスクリプトをすべて無効にします"/> <button label="?" name="disable_scripts_help"/> - <check_box label="衝突を無効化" name="disable_collisions_check" tool_tip="この地域の非アバター衝突を無効化"/> + <check_box label="衝突を無効化" name="disable_collisions_check" tool_tip="この地域の非アバター衝突を無効にします"/> <button label="?" name="disable_collisions_help"/> - <check_box label="物理作用を無効化" name="disable_physics_check" tool_tip="この地域の物理作用をすべて無効化"/> + <check_box label="物理作用を無効化" name="disable_physics_check" tool_tip="この地域の物理作用をすべて無効にします"/> <button label="?" name="disable_physics_help"/> <button label="適用" name="apply_btn"/> - <text name="objret_text_lbl" width="120" > + <text name="objret_text_lbl" width="120"> オブジェクトの返却 </text> <text name="resident_text_lbl"> @@ -22,19 +22,19 @@ <line_editor name="target_avatar_name"> (なし) </line_editor> - <button label="選択..." name="choose_avatar_btn"/> + <button label="選択" name="choose_avatar_btn"/> <text name="options_text_lbl"> オプション: </text> - <check_box label="スクリプトのあるオブジェクトのみを返却" name="return_scripts" tool_tip="スクリプトがあるオブジェクトのみを返却"/> - <check_box label="他人の土地にあるオブジェクトのみを返却" name="return_other_land" tool_tip="他人に属する土地にあるオブジェクトのみを返却"/> - <check_box label="この不動産の各地域のオブジェクトを返却" name="return_estate_wide" tool_tip="この不動産に含まれているすべての地域のオブジェクトを返却"/> + <check_box label="スクリプト付きのもの" name="return_scripts" tool_tip="スクリプトのオブジェクトだけ返却します"/> + <check_box label="他人の土地にあるもの" name="return_other_land" tool_tip="他人に属する土地にあるオブジェクトのみを返却します"/> + <check_box label="この不動産に属するすべてのリージョンのもの" name="return_estate_wide" tool_tip="この不動産に含まれているすべての地域のオブジェクトを返却します"/> <button label="返却" name="return_btn"/> <button label="上部コライダー取得" name="top_colliders_btn" tool_tip="衝突する可能性が最も高いオブジェクトのリスト"/> <button label="?" name="top_colliders_help"/> <button label="上部スクリプト取得" name="top_scripts_btn" tool_tip="スクリプトの実行に最も時間を費やしているオブジェクトのリスト"/> <button label="?" name="top_scripts_help"/> - <button label="地域再起動" name="restart_btn" tool_tip="2分間のカウントダウン後、地域を再起動"/> + <button label="地域再起動" name="restart_btn" tool_tip="2分間のカウントダウン後、地域を再起動します"/> <button label="?" name="restart_help"/> - <button label="再起動を遅延" name="cancel_restart_btn" tool_tip="地域の再起動を1時間遅延する"/> + <button label="再起動を遅延" name="cancel_restart_btn" tool_tip="地域の再起動を1時間遅延します"/> </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 186820f00a..71551c7680 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" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="不動産" name="Estate"> - <text name="estate_help_text"> - このタブの設定を変更するとこの不動産内 -の全ての地域に影響を与えます。 + <text name="estate_help_text" width="400"> + このタブ内の設定変更は、不動産内のすべての地域に影響します。 </text> <text name="estate_text"> 不動産: @@ -17,62 +16,59 @@ (不明) </text> <text name="Only Allow"> - 次へのアクセスを制限: + 次のアカウントのアクセス禁止: </text> - <check_box label="支払い情報登録済みの住人" name="limit_payment" - tool_tip="支払い情報未登録の住人を排除する" /> - <check_box label="年齢確認済みの成人" name="limit_age_verified" - tool_tip="年齢確認を済ませていない住人を排除する詳細については、support.secondlife.comを参照してください。" /> - <check_box label="ボイスチャットを許可" name="voice_chat_check" /> - <button label="?" name="voice_chat_help" /> + <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"> 嫌がらせに関するメール先: </text> <string name="email_unsupported"> サポートされていない機能 </string> - <button label="?" name="abuse_email_address_help" /> + <button label="?" name="abuse_email_address_help"/> <text name="estate_manager_label"> 不動産マネージャー: </text> - <button label="?" name="estate_manager_help" /> - <button label="追加..." name="add_estate_manager_btn" /> - <button label="削除..." name="remove_estate_manager_btn" /> - <check_box label="世界時間を使用" name="use_global_time_check" /> - <button label="?" name="use_global_time_help" /> - <check_box label="太陽固定" name="fixed_sun_check" /> - <button label="?" name="fixed_sun_help" /> - <slider label="段階" name="sun_hour_slider" /> - <check_box label="パブリック・アクセスを許可" name="externally_visible_check" /> - <button label="?" name="externally_visible_help" /> - <check_box label="直接テレポートを許可" name="allow_direct_teleport" /> - <button label="?" name="allow_direct_teleport_help" /> + <button label="?" name="estate_manager_help"/> + <button label="追加..." name="add_estate_manager_btn"/> + <button label="削除..." name="remove_estate_manager_btn"/> + <check_box label="世界時間を使用" name="use_global_time_check"/> + <button label="?" name="use_global_time_help"/> + <check_box label="太陽固定" name="fixed_sun_check"/> + <button label="?" name="fixed_sun_help"/> + <slider label="段階" name="sun_hour_slider"/> + <check_box label="パブリックアクセスを許可" name="externally_visible_check"/> + <button label="?" name="externally_visible_help"/> + <check_box label="直接テレポートを許可" name="allow_direct_teleport"/> + <button label="?" name="allow_direct_teleport_help"/> <text name="region_text_lbl"> 支払い状況によりアクセスを拒否: </text> - <check_box label="支払情報登録がないものを拒否" name="deny_anonymous" /> - <check_box label="支払情報登録があるものを拒否" name="deny_identified" /> - <check_box label="使用されている支払情報を拒否" name="deny_transacted" /> - <button label="適用" name="apply_btn" /> + <check_box label="支払情報登録がないものを拒否" name="deny_anonymous"/> + <check_box label="支払情報登録があるものを拒否" name="deny_identified"/> + <check_box label="使用されている支払情報を拒否" name="deny_transacted"/> + <button label="適用" name="apply_btn"/> <text name="allow_resident_label"> 許可された住人: </text> - <button label="?" name="allow_resident_help" /> - <button label="追加..." name="add_allowed_avatar_btn" /> - <button label="削除..." name="remove_allowed_avatar_btn" /> + <button label="?" name="allow_resident_help"/> + <button label="追加..." name="add_allowed_avatar_btn"/> + <button label="削除..." name="remove_allowed_avatar_btn"/> <text name="allow_group_label"> 許可されたグループ: </text> - <button label="?" name="allow_group_help" /> - <button label="追加..." name="add_allowed_group_btn" /> - <button label="削除..." name="remove_allowed_group_btn" /> + <button label="?" name="allow_group_help"/> + <button label="追加..." name="add_allowed_group_btn"/> + <button label="削除..." name="remove_allowed_group_btn"/> <text name="ban_resident_label"> 禁止された住人: </text> - <button label="?" name="ban_resident_help" /> - <button label="追加..." name="add_banned_avatar_btn" /> - <button label="削除..." name="remove_banned_avatar_btn" /> - <button label="メッセージを不動産へ送信..." name="message_estate_btn" /> - <button label="土地からユーザーを追い出す..." - name="kick_user_from_estate_btn" /> + <button label="?" name="ban_resident_help"/> + <button label="追加..." name="add_banned_avatar_btn"/> + <button label="削除..." name="remove_banned_avatar_btn"/> + <button label="メッセージを不動産に送信..." name="message_estate_btn"/> + <button label="土地からユーザーを追い出す..." name="kick_user_from_estate_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_general.xml b/indra/newview/skins/default/xui/ja/panel_region_general.xml index 690cf3f33d..be92c24663 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_general.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_general.xml @@ -3,19 +3,19 @@ <text name="region_text_lbl"> 地域: </text> - <text left="90" name="region_text"> + <text left_delta="70" name="region_text"> 未知 </text> <text name="version_channel_text_lbl" width="100"> バージョン: </text> - <text left="90" name="version_channel_text"> + <text left_delta="70" name="version_channel_text"> 不明 </text> <text name="region_type_lbl"> 種類: </text> - <text name="region_type"> + <text name="region_type" left_delta="70"> 不明 </text> <check_box label="土地整備をブロック" name="block_terraform_check"/> @@ -28,9 +28,9 @@ <button label="?" name="restrict_pushobject_help"/> <check_box label="土地の再販を許可" name="allow_land_resell_check"/> <button label="?" name="land_resell_help"/> - <check_box label="土地の統合/分割を許可" name="allow_parcel_changes_check"/> + <check_box label="土地の統合・分割を許可" name="allow_parcel_changes_check"/> <button label="?" name="parcel_changes_help"/> - <check_box label="土地の検索表示をブロック" name="block_parcel_search_check" tool_tip="検索結果で、この地域と区画を人に見せる"/> + <check_box label="土地の検索表示をブロック" name="block_parcel_search_check" tool_tip="検索結果で、この地域と区画を表示するかどうかの設定です"/> <button label="?" name="parcel_search_help"/> <spinner label="アバター数上限" name="agent_limit_spin"/> <button label="?" name="agent_limit_help"/> @@ -39,15 +39,15 @@ <text label="成人指定" name="access_text"> 区分: </text> - <combo_box label="Mature" name="access_combo"> + <combo_box label="Moderate" 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="Moderate" name="Mature"/> + <combo_box.item label="General" name="PG"/> </combo_box> <button label="?" name="access_help"/> <button label="適用" name="apply_btn"/> - <button label="ユーザー1人ホームテレポート" name="kick_btn"/> - <button label="ユーザー全員ホームテレポート" name="kick_all_btn"/> - <button label="メッセージを地域へ送信..." name="im_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_general_layout.xml b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml new file mode 100644 index 0000000000..aa8c126423 --- /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" left_delta="70"> + 不明 + </text> + <text name="version_channel_text_lbl"> + バージョン: + </text> + <text name="version_channel_text" left_delta="70"> + 不明 + </text> + <text name="region_type_lbl"> + 種類: + </text> + <text name="region_type" left_delta="70"> + 不明 + </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" label_width="110" width="190"/> + <spinner label="物体ボーナス" name="object_bonus_spin" label_width="110" width="190"/> + <text label="レーティング区分" name="access_text"> + レーティング区分: + </text> + <combo_box label="Moderate" name="access_combo"> + <combo_box.item label="Adult" name="Adult"/> + <combo_box.item label="Moderate" name="Mature"/> + <combo_box.item label="General" 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_terrain.xml b/indra/newview/skins/default/xui/ja/panel_region_terrain.xml index d77f9749c2..8df803b2dc 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_terrain.xml @@ -18,13 +18,13 @@ <button label="?" name="fixed_sun_help" /> <slider label="段階" name="sun_hour_slider" /> <button label="適用" name="apply_btn" /> - <button label="RAW地形ダウンロード..." name="download_raw_btn" - tool_tip="不動産オーナーのみ利用可能、管理者は利用不可" /> + <button label="RAW 地形ダウンロード..." name="download_raw_btn" + tool_tip="不動産オーナーのみ利用可能、管理者は利用不可です" /> <button label="?" name="download_raw_help" /> - <button label="RAW地形アップロード..." name="upload_raw_btn" - tool_tip="不動産オーナーのみ利用可能、管理者は利用不可" /> + <button label="RAW 地形アップロード..." name="upload_raw_btn" + tool_tip="不動産オーナーのみ利用可能、管理者は利用不可です" /> <button label="?" name="upload_raw_help" /> <button label="地形の構築" name="bake_terrain_btn" - tool_tip="現在の地形を上昇/下降範囲の中間点として設定" /> + tool_tip="現在の地形を上昇・下降範囲の中間点として設定します" /> <button label="?" name="bake_terrain_help" /> </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 6527f0fbe6..526e6cdeb9 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_texture.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel label="地面テクスチャー" name="Textures"> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="地面テクスチャ" name="Textures"> <text name="region_text_lbl"> 地域: </text> @@ -7,7 +7,7 @@ 未知 </text> <text name="detail_texture_text"> - 地形のテクスチャー (512x512、24ビット .tgaファイルが必要) + 地形のテクスチャ (512x512、24ビット .tgaファイルが必要です) </text> <text name="height_text_lbl"> 1(低) @@ -19,10 +19,10 @@ 3 </text> <text name="height_text_lbl4"> - 4(高) + 4(高) </text> <text name="height_text_lbl5"> - テクスチャー標高範囲 + テクスチャ標高範囲 </text> <text name="height_text_lbl6"> 南西 @@ -36,22 +36,23 @@ <text name="height_text_lbl9"> 北東 </text> - <spinner label="低" name="height_start_spin_0" /> - <spinner label="低" name="height_start_spin_1" /> - <spinner label="低" name="height_start_spin_2" /> - <spinner label="低" name="height_start_spin_3" /> - <spinner label="高" name="height_range_spin_0" /> - <spinner label="高" name="height_range_spin_1" /> - <spinner label="高" name="height_range_spin_2" /> - <spinner label="高" name="height_range_spin_3" /> + <spinner label="低" name="height_start_spin_0"/> + <spinner label="低" name="height_start_spin_1"/> + <spinner label="低" name="height_start_spin_2"/> + <spinner label="低" name="height_start_spin_3"/> + <spinner label="高" name="height_range_spin_0"/> + <spinner label="高" name="height_range_spin_1"/> + <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の表示高さの最大値です。 + 計測単位はメートルで、「低」の値は、1番のテクスチャの高さの +「最大値」です。「高」の値は、4番のテクスチャの高さの「最低値」です。 </text> <text name="height_text_lbl12"> - そして「高」の値はテクスチャー#4の高さの下限となります。 + そして「高」の値はテクスチャ#4の高さの下限となります。 </text> - <button label="適用" name="apply_btn" /> + <button label="適用" name="apply_btn"/> </panel> 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 0000000000..494884c187 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_script_limits_my_avatar.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="マイ アバター" name="script_limits_my_avatar_panel"> + <text name="script_memory"> + アバターのスクリプト使用 + </text> + <text name="loading_text"> + ローディング... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="サイズ (kb)" name="size" width="90"/> + <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 0000000000..d91eba9699 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_script_limits_region_memory.xml @@ -0,0 +1,22 @@ +<?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 name="memory_used"/> + <text name="loading_text"> + ローディング... + </text> + <scroll_list name="scripts_list"> + <scroll_list.columns label="サイズ (kb)" name="size" width="90"/> + <scroll_list.columns label="URL" name="urls"/> + <scroll_list.columns label="オブジェクト名" name="name"/> + <scroll_list.columns label="オブジェクトの所有者" name="owner" width="120"/> + <scroll_list.columns label="区画" name="parcel"/> + <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 new file mode 100644 index 0000000000..5364b8726f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_side_tray.xml @@ -0,0 +1,29 @@ +<?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="サイドバーを表示・非表示" name="sidebar_openclose" tab_title="サイドバーを開く・閉じる"/> + <sidetray_tab description="ホーム。" name="sidebar_home" tab_title="ホーム"> + <panel label="ホーム" name="panel_home"/> + </sidetray_tab> + <sidetray_tab description="あなたの公開プロフィールとピックを編集してください。" name="sidebar_me" tab_title="マイ プロフィール"> + <panel_container name="panel_container"> + <panel label="ミー" name="panel_me"/> + </panel_container> + </sidetray_tab> + <sidetray_tab description="フレンド、連絡先、近くの人を探してください。" name="sidebar_people" tab_title="人"> + <panel_container name="panel_container"> + <panel label="グループ情報" name="panel_group_info_sidetray"/> + <panel label="ブロックされた住人とオブジェクト" name="panel_block_list_sidetray"/> + </panel_container> + </sidetray_tab> + <sidetray_tab description="行きたい場所、行ったことのある場所を探してください。" label="場所" name="sidebar_places" tab_title="場所"> + <panel label="場所" name="panel_places"/> + </sidetray_tab> + <sidetray_tab description="あなたの持ち物を眺めてください。" name="sidebar_inventory" tab_title="マイ 持ち物"> + <panel label="持ち物を編集" name="sidepanel_inventory"/> + </sidetray_tab> + <sidetray_tab description="あなたの容姿や現在の見た目を変更してください。" name="sidebar_appearance" tab_title="マイ 容姿"> + <panel label="容姿の編集" name="sidepanel_appearance"/> + </sidetray_tab> +</side_tray> diff --git a/indra/newview/skins/default/xui/ja/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/ja/panel_side_tray_tab_caption.xml new file mode 100644 index 0000000000..8f4a76fd43 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/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="サイドパネル"/> + <button name="show_help" tool_tip="ヘルプを表示"/> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/ja/panel_sidetray_home_tab.xml new file mode 100644 index 0000000000..aef1f90298 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_sidetray_home_tab.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Part of side tray, see that XML file for panel config --> +<panel label="home_tab" name="home_tab"> + <scroll_container name="profile_scroll"> + <panel name="profile_scroll_panel"> + <panel name="sidebar_people"> + <text name="tab_name" value="人"/> + <text name="tab_description"> + あなたのフレンド、グループ、連絡先、近くの人を探します。 + </text> + </panel> + <panel name="sidebar_places"> + <text name="tab_name" value="場所"/> + <text name="tab_description"> + 行きたい場所、行ったことのある場所を探します。 + </text> + </panel> + <panel name="sidebar_me"> + <text name="tab_name" value="マイ プロフィール"/> + <text name="tab_description"> + あなたの公開プロフィールを編集します。 + </text> + </panel> + <panel name="sidebar_appearance"> + <text name="tab_name" value="マイ 容姿"/> + <text name="tab_description"> + あなたの容姿や現在の見た目を変更します。 + </text> + </panel> + <panel name="sidebar_inventory"> + <text name="tab_name" value="マイ 持ち物"/> + <text name="tab_description"> + あなたの持ち物を眺めます。 + </text> + </panel> + </panel> + </scroll_container> +</panel> 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 a58a6d68aa..a9e13cfd9f 100644 --- a/indra/newview/skins/default/xui/ja/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/ja/panel_status_bar.xml @@ -12,11 +12,20 @@ <panel.string name="bandwidth_tooltip"> 帯域幅 </panel.string> + <panel.string name="time"> + [hour12, datetime, slt]:[min, datetime, slt] [ampm, datetime, slt] [timezone,datetime, slt] + </panel.string> + <panel.string name="timeTooltip"> + [year, datetime, slt] [month, datetime, slt] [day, datetime, slt] ([weekday, datetime, slt]) + </panel.string> <panel.string name="buycurrencylabel"> L$ [AMT] </panel.string> - <button label="" label_selected="" name="buycurrency" tool_tip="私の残高: ここをクリックして L$ を購入"/> - <text name="TimeText" tool_tip="現在時刻(太平洋時)"> - 12:00 AM + <button label="" label_selected="" name="buycurrency" tool_tip="所持金"/> + <button label="L$ の購入" name="buyL" tool_tip="クリックして L$ を購入します"/> + <text name="TimeText" tool_tip="現在時刻(太平洋)"> + 24:00 AM PST </text> + <button name="media_toggle_btn" tool_tip="クリックしてメディアを切り替えます"/> + <button name="volume_btn" tool_tip="グローバル音量設定"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_sys_well_item.xml b/indra/newview/skins/default/xui/ja/panel_sys_well_item.xml new file mode 100644 index 0000000000..81db7c8989 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_sys_well_item.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- All our XML is utf-8 encoded. --> +<panel name="sys_well_item" title="sys_well_item"> + <text name="title"> + Beware the trout. BEWARE! THE! TROUT! + </text> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_teleport_history.xml b/indra/newview/skins/default/xui/ja/panel_teleport_history.xml new file mode 100644 index 0000000000..2264ae965b --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_teleport_history.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="Teleport History"> + <accordion name="history_accordion"> + <accordion_tab name="today" title="今日"/> + <accordion_tab name="yesterday" title="昨日"/> + <accordion_tab name="2_days_ago" title="2日前"/> + <accordion_tab name="3_days_ago" title="3日前"/> + <accordion_tab name="4_days_ago" title="4日前"/> + <accordion_tab name="5_days_ago" title="5日前"/> + <accordion_tab name="6_days_and_older" title="6日以上前"/> + <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"> + <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 new file mode 100644 index 0000000000..c570cd5696 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_teleport_history_item.xml @@ -0,0 +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 9a58f753e5..0a63cedf10 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="リンデン総督に土地を明け渡す" longdescription="リンデン総督に土地を明け渡します。 *警告* この能力を持つ役割のメンバーは、「土地情報」>「一般」でグループ所有の土地を放棄して、売り上げなしでリンデン総督に明け渡すことができます。 この能力の割り当ては、そのことを理解した上で行ってください。" 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="リンデン製の植物を使用して景観作成" 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 new file mode 100644 index 0000000000..4fba4b1567 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/sidepanel_appearance.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<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"/> + <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 new file mode 100644 index 0000000000..0c97fed901 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="もの" name="objects panel"> + <panel label="" name="sidepanel__inventory_panel"> + <panel name="button_panel"> + <button label="プロフィール" name="info_btn"/> + <button label="装着" name="wear_btn"/> + <button label="プレイ" name="play_btn"/> + <button label="テレポート" name="teleport_btn"/> + </panel> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml new file mode 100644 index 0000000000..c6a13fa212 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/sidepanel_item_info.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="item properties" title="オブジェクトのプロフィール"> + <panel.string name="unknown"> + (不明) + </panel.string> + <panel.string name="public"> + (公開) + </panel.string> + <panel.string name="you_can"> + あなたができること: + </panel.string> + <panel.string name="owner_can"> + 所有者ができること: + </panel.string> + <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"> + 名前: + </text> + <text name="LabelItemDescTitle"> + 説明: + </text> + <text name="LabelCreatorTitle"> + 制作者: + </text> + <text name="LabelCreatorName"> + Nicole Linden + </text> + <button label="プロフィール" name="BtnCreator"/> + <text name="LabelOwnerTitle"> + 所有者: + </text> + <text name="LabelOwnerName"> + Thrax Linden + </text> + <button label="プロフィール" name="BtnOwner"/> + <text name="LabelAcquiredTitle"> + 取得: + </text> + <text name="LabelAcquiredDate"> + Wed May 24 12:50:46 2006 + </text> + <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="価格: L$" name="Edit Cost"/> + </panel> + <panel name="button_panel"> + <button label="キャンセル" name="cancel_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 new file mode 100644 index 0000000000..ab00953f1a --- /dev/null +++ b/indra/newview/skins/default/xui/ja/sidepanel_task_info.xml @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="object properties" title="オブジェクトのプロフィール"> + <panel.string name="text deed continued"> + 譲渡 + </panel.string> + <panel.string name="text deed"> + 譲渡 + </panel.string> + <panel.string name="text modify info 1"> + このオブジェクトを修正できます + </panel.string> + <panel.string name="text modify info 2"> + これらのオブジェクトを修正できます + </panel.string> + <panel.string name="text modify info 3"> + このオブジェクトを修正できません + </panel.string> + <panel.string name="text modify info 4"> + これらのオブジェクトを修正できません + </panel.string> + <panel.string name="text modify warning"> + このオブジェクトには、パーツがリンクされています + </panel.string> + <panel.string name="Cost Default"> + 価格: L$ + </panel.string> + <panel.string name="Cost Total"> + 合計: L$ + </panel.string> + <panel.string name="Cost Per Unit"> + Price Per: L$ + </panel.string> + <panel.string name="Cost Mixed"> + Mixed Price + </panel.string> + <panel.string name="Sale Mixed"> + Mixed Sale + </panel.string> + <text name="title" value="オブジェクトのプロフィール"/> + <text name="where" value="(インワールド)"/> + <panel label=""> + <text name="Name:"> + 名前: + </text> + <text name="Description:"> + 説明: + </text> + <text name="CreatorNameLabel"> + 制作者: + </text> + <text name="Creator Name"> + Erica Linden + </text> + <text name="Owner:"> + 所有者: + </text> + <text name="Owner Name"> + Erica Linden + </text> + <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="このアイテムを譲渡すると「次の所有者」の権限が適用されます。 グループ共有オブジェクトは、グループのオフィサーが譲渡できます。"/> + <text name="label click action"> + クリックで: + </text> + <combo_box name="clickaction"> + <combo_box.item label="触る(デフォルト)" name="Touch/grab(default)"/> + <combo_box.item label="オブジェクトに座る" name="Sitonobject"/> + <combo_box.item label="オブジェクトを買う" name="Buyobject"/> + <combo_box.item label="オブジェクトに支払う" name="Payobject"/> + <combo_box.item label="開く" name="Open"/> + </combo_box> + <panel name="perms_inv"> + <text name="perm_modify"> + このオブジェクトを修正できます + </text> + <text name="Anyone can:"> + 全員: + </text> + <check_box label="コピー" name="checkbox allow everyone copy"/> + <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="次の所有者はこのオブジェクトを他人にあげたり再販することができます"/> + </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="open_btn"/> + <button label="支払う" name="pay_btn"/> + <button label="買う" name="buy_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index fc9e4b67b7..76b702e581 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -1,21 +1,23 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- This file contains strings that used to be hardcoded in the source. It is only for those strings which do not belong in a floater. - For example, the strings used in avatar chat bubbles, and strings + 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=ja-JP</string> <string name="SECOND_LIFE"> Second Life </string> <string name="APP_NAME"> Second Life </string> + <string name="CAPITALIZED_APP_NAME"> + SECOND LIFE + </string> <string name="SECOND_LIFE_GRID"> Second Life Grid </string> <string name="SUPPORT_SITE"> - Second Lifeサポートポータル + Second Life サポートポータル </string> <string name="StartupDetectingHardware"> ハードウェアの検出中です... @@ -36,22 +38,25 @@ 認証しています... </string> <string name="LoginMaintenance"> - アカウント・メンテナンスを実行しています... + アカウントのメンテナンスを実行しています... </string> <string name="LoginAttempt"> - 前回のログインに失敗しました。 ログイン中です([NUMBER]回目) + 前回のログインに失敗しました。 ログイン中です([NUMBER] 回目) </string> <string name="LoginPrecaching"> - ワールドをロードしています... + ワールドを読み込んでいます... </string> <string name="LoginInitializingBrowser"> - 埋め込みWebブラウザを初期化しています... + 内蔵 Web ブラウザを初期化しています... </string> <string name="LoginInitializingMultimedia"> マルチメディアを初期化しています... </string> + <string name="LoginInitializingFonts"> + フォントをローディング中... + </string> <string name="LoginVerifyingCache"> - キャッシュ・ファイルを検証しています(所要時間は60~90秒)... + キャッシュファイルを検証しています(所要時間は 60 ~ 90 秒)... </string> <string name="LoginProcessingResponse"> 応答を処理しています... @@ -63,43 +68,52 @@ 画像をデコードしています... </string> <string name="LoginInitializingQuicktime"> - QuickTimeを初期化しています... + QuickTime を初期化しています... </string> <string name="LoginQuicktimeNotFound"> - QuickTimeが見つかりません。初期化に失敗しました。 + QuickTime が見つかりません。初期化に失敗しました。 </string> <string name="LoginQuicktimeOK"> - QuickTimeが正常に初期化されました。 + QuickTime が正常に初期化されました。 </string> <string name="LoginWaitingForRegionHandshake"> - 地域のハンドシェイクを待っています... + リージョンのハンドシェイクを待っています... </string> <string name="LoginConnectingToRegion"> - 地域に接続しています... + リージョンに接続しています... </string> <string name="LoginDownloadingClothing"> - 服をダウンロードしています... + 衣類をダウンロードしています... + </string> + <string name="LoginFailedNoNetwork"> + ネットワークエラー: 接続を確立できませんでした。お使いのネットワーク接続をご確認ください。 + </string> + <string name="Quit"> + 終了 + </string> + <string name="create_account_url"> + http://join.secondlife.com/index.php?lang=ja-JP </string> <string name="AgentLostConnection"> - この地域には、問題が発生している可能性があります。 インターネット接続を確認してください。 + このリージョンに不都合が発生している可能性があります。 ご使用のインターネット接続をご確認ください。 </string> <string name="TooltipPerson"> 人 </string> <string name="TooltipNoName"> - (名前なし) + (名前なし) </string> <string name="TooltipOwner"> - オーナー: + 所有者: </string> <string name="TooltipPublic"> 公共 </string> <string name="TooltipIsGroup"> - (グループ) + (グループ) </string> <string name="TooltipForSaleL$"> - 売り出し中:L$[AMOUNT] + 売り出し中:L$ [AMOUNT] </string> <string name="TooltipFlagGroupBuild"> グループ作成 @@ -117,7 +131,7 @@ 飛行禁止 </string> <string name="TooltipFlagGroupScripts"> - グループ・スクリプト + グループスクリプト </string> <string name="TooltipFlagNoScripts"> スクリプトなし @@ -126,40 +140,50 @@ 土地: </string> <string name="TooltipMustSingleDrop"> - 1つのアイテムのみをここにドラッグできます + アイテムは 1 つだけここにドラッグできます </string> <string name="TooltipHttpUrl"> - クリックしてこのWebページを見る + クリックしてこの Web ページを見ます </string> <string name="TooltipSLURL"> - クリックしてこの場所の情報を見る + クリックしてこの場所の情報を見ます </string> <string name="TooltipAgentUrl"> - クリックしてこの住人のプロフィールを見る + クリックしてこの住人のプロフィールを見ます </string> <string name="TooltipGroupUrl"> - クリックしてこのグループの説明文を見る + クリックしてこのグループの説明文を見ます </string> <string name="TooltipEventUrl"> - クリックしてこのグループの説明文を見る + クリックしてこのグループの説明文を見ます </string> <string name="TooltipClassifiedUrl"> - クリックしてこのクラシファイド広告を見る + クリックしてこのクラシファイド広告を見ます </string> <string name="TooltipParcelUrl"> - クリックしてこの区画の説明文を見る + クリックしてこの区画の説明文を見ます </string> <string name="TooltipTeleportUrl"> - クリックしてこの場所にテレポートする + クリックしてこの場所にテレポートします </string> <string name="TooltipObjectIMUrl"> - クリックしてこのオブジェクトの説明文を見る + クリックしてこのオブジェクトの説明文を見ます + </string> + <string name="TooltipMapUrl"> + クリックしてこの場所を地図に表示します </string> <string name="TooltipSLAPP"> - クリックして secondlife:// コマンドを出す + クリックして secondlife:// コマンドを出します + </string> + <string name="CurrentURL" value=" 現在の URL: [CurrentURL]"/> + <string name="SLurlLabelTeleport"> + テレポート + </string> + <string name="SLurlLabelShowOnMap"> + 地図に表示 </string> <string name="BUTTON_CLOSE_DARWIN"> - 閉じる (⌘W) + 閉じる (⌘W) </string> <string name="BUTTON_CLOSE_WIN"> 閉じる (Ctrl+W) @@ -176,65 +200,68 @@ <string name="BUTTON_DOCK"> ドッキング </string> - <string name="BUTTON_UNDOCK"> - 切り離す - </string> <string name="BUTTON_HELP"> ヘルプを表示 </string> - <string name="RetrievingData"> + <string name="Searching"> 検索中... </string> + <string name="NoneFound"> + 見つかりませんでした。 + </string> + <string name="RetrievingData"> + 取得中... + </string> <string name="ReleaseNotes"> リリースノート </string> <string name="LoadingData"> - ロード中... + ローディング... </string> <string name="AvatarNameNobody"> - (無人) + (なし) </string> <string name="AvatarNameWaiting"> - (待機中) + (待機中) </string> - <string name="AvatarNameHippos"> - (カバ) + <string name="AvatarNameMultiple"> + (複数) </string> <string name="GroupNameNone"> - (なし) + (なし) </string> <string name="AssetErrorNone"> エラーなし </string> <string name="AssetErrorRequestFailed"> - 資産の要求: 失敗 + アセットリクエスト: 失敗 </string> <string name="AssetErrorNonexistentFile"> - 資産の要求: 存在しないファイル + アセットリクエスト: 存在しないファイル </string> <string name="AssetErrorNotInDatabase"> - 資産の要求: データベースでは見つからない資産 + アセットリクエスト: データベースに見つかりませんでした </string> <string name="AssetErrorEOF"> - ファイルの終わり + 終了 </string> <string name="AssetErrorCannotOpenFile"> - ファイルを開くことができません + ファイルを開けません </string> <string name="AssetErrorFileNotFound"> ファイルが見つかりません </string> <string name="AssetErrorTCPTimeout"> - ファイル転送タイムアウトです + ファイルの転送タイムアウト </string> <string name="AssetErrorCircuitGone"> - 接続が解除されました + サーキットエラー </string> <string name="AssetErrorPriceMismatch"> ビューワとサーバーの価格が一致していません </string> <string name="AssetErrorUnknownStatus"> - ステータスが不明です + 不明のステータス </string> <string name="texture"> テクスチャ @@ -267,7 +294,7 @@ ルート </string> <string name="lsl2 script"> - lsl2 スクリプト + LSL2 スクリプト </string> <string name="lsl bytecode"> LSL バイトコード @@ -288,7 +315,7 @@ targa 画像 </string> <string name="trash"> - ゴミ箱 + ごみ箱 </string> <string name="jpeg image"> jpeg 画像 @@ -308,14 +335,17 @@ <string name="symbolic link"> リンク </string> + <string name="AvatarEditingAppearance"> + (容姿の編集中) + </string> <string name="AvatarAway"> - 退席中 + 一時退席中 </string> <string name="AvatarBusy"> 取り込み中 </string> <string name="AvatarMuted"> - ミュート + ブロック中 </string> <string name="anim_express_afraid"> 怖れ @@ -354,28 +384,28 @@ 泣く </string> <string name="anim_dance1"> - ダンス1 + ダンス 1 </string> <string name="anim_dance2"> - ダンス2 + ダンス 2 </string> <string name="anim_dance3"> - ダンス3 + ダンス 3 </string> <string name="anim_dance4"> - ダンス4 + ダンス 4 </string> <string name="anim_dance5"> - ダンス5 + ダンス 5 </string> <string name="anim_dance6"> - ダンス6 + ダンス 6 </string> <string name="anim_dance7"> - ダンス7 + ダンス 7 </string> <string name="anim_dance8"> - ダンス8 + ダンス 8 </string> <string name="anim_express_disdain"> 侮蔑 @@ -525,11 +555,14 @@ 頷く </string> <string name="texture_loading"> - ロード中... + ローディング... </string> <string name="worldmap_offline"> オフライン </string> + <string name="worldmap_results_none_found"> + 見つかりませんでした。 + </string> <string name="Ok"> OK </string> @@ -552,16 +585,19 @@ 接続しました </string> <string name="unavailable"> - あなたの現在のロケーションでは、ボイスを利用できません。 + 現在地では、ボイスを利用できません。 </string> <string name="hang_up"> インワールドボイスチャットの通話が切断されました </string> + <string name="reconnect_nearby"> + 「近くのボイスチャット」に再接続されます + </string> <string name="ScriptQuestionCautionChatGranted"> - [REGIONNAME]の[REGIONPOS]という場所にある「[OWNERNAME]」所有の「[OBJECTNAME]」というオブジェクトは、次の権限を許可しました: [PERMISSIONS] + [REGIONNAME] の [REGIONPOS] という場所にある、「 [OWNERNAME] 」が所有する「 [OBJECTNAME] 」というオブジェクトは、次の権限を許可しました: [PERMISSIONS] </string> <string name="ScriptQuestionCautionChatDenied"> - [REGIONNAME]の[REGIONPOS]という場所にある「[OWNERNAME]」所有の「[OBJECTNAME]」というオブジェクトは、次の権限を拒否しました: [PERMISSIONS] + [REGIONNAME] の [REGIONPOS] という場所にある、「 [OWNERNAME] 」が所有する「 [OBJECTNAME] 」というオブジェクトは、次の権限を拒否しました: [PERMISSIONS] </string> <string name="ScriptTakeMoney"> リンデンドル(L$)を支払う @@ -596,11 +632,14 @@ <string name="ControlYourCamera"> カメラのコントロール </string> + <string name="NotConnected"> + 接続されていません + </string> <string name="SIM_ACCESS_PG"> - PG + General </string> <string name="SIM_ACCESS_MATURE"> - Mature + Moderate </string> <string name="SIM_ACCESS_ADULT"> Adult @@ -633,22 +672,22 @@ ロード </string> <string name="targa_image_files"> - Targa画像 + Targa 画像 </string> <string name="bitmap_image_files"> ビットマップ画像 </string> <string name="avi_movie_file"> - AVIムービーファイル + AVI ムービーファイル </string> <string name="xaf_animation_file"> - XAFアニメーションファイル + XAF アニメーションファイル </string> <string name="xml_file"> - XMLファイル + XML ファイル </string> <string name="dot_raw_file"> - RAWファイル + RAW ファイル </string> <string name="compressed_image_files"> 圧縮画像 @@ -660,13 +699,13 @@ 参照 </string> <string name="AvatarSetNotAway"> - 一時退席中を解除 + 一時退席中解除 </string> <string name="AvatarSetAway"> 一時退席中 </string> <string name="AvatarSetNotBusy"> - 取り込み中を解除 + 取り込み中解除 </string> <string name="AvatarSetBusy"> 取り込み中 @@ -678,7 +717,7 @@ スキン </string> <string name="hair"> - 髪型 + 髪 </string> <string name="eyes"> 目 @@ -687,7 +726,7 @@ シャツ </string> <string name="pants"> - ズボン + パンツ </string> <string name="shoes"> 靴 @@ -696,7 +735,7 @@ 靴下 </string> <string name="jacket"> - 上着 + ジャケット </string> <string name="gloves"> 手袋 @@ -710,9 +749,51 @@ <string name="skirt"> スカート </string> + <string name="alpha"> + アルファ + </string> + <string name="tattoo"> + タトゥ + </string> <string name="invalid"> 無効 </string> + <string name="next"> + 次へ + </string> + <string name="ok"> + OK + </string> + <string name="GroupNotifyGroupNotice"> + グループ通知 + </string> + <string name="GroupNotifyGroupNotices"> + グループ通知 + </string> + <string name="GroupNotifySentBy"> + 送信者 + </string> + <string name="GroupNotifyAttached"> + 添付: + </string> + <string name="GroupNotifyViewPastNotices"> + ここで過去の通知を表示するか、メッセージを受け取らない設定をします。 + </string> + <string name="GroupNotifyOpenAttachment"> + 添付アイテムを開く + </string> + <string name="GroupNotifySaveAttachment"> + 添付アイテムを保存 + </string> + <string name="TeleportOffer"> + テレポートを送る + </string> + <string name="StartUpNotifications"> + 不在中に新しい通知が届きました。 + </string> + <string name="OverflowInfoChannelString"> + あなたにはさらに %d 通の通知があります + </string> <string name="BodyPartsRightArm"> 右腕 </string> @@ -741,22 +822,59 @@ 高 </string> <string name="LeaveMouselook"> - ESC キーを押してワールドビューに戻る + ESC キーを押してワールドビューに戻ります </string> <string name="InventoryNoMatchingItems"> - 一致するアイテムが持ち物にありませんでした + 一致するアイテムが持ち物にありませんでした。 [secondlife:///app/search/groups 「検索」] をお試しください。 </string> - <string name="InventoryNoTexture"> - 持ち物内にこのテクスチャのコピーがありません + <string name="FavoritesNoMatchingItems"> + ここにランドマークをドラッグして、お気に入りに追加します。 </string> + <string name="InventoryNoTexture"> + 「持ち物」内にこのテクスチャのコピーがありません + </string> + <string name="no_transfer" value=" (再販・プレゼント不可)"/> + <string name="no_modify" value=" (編集不可)"/> + <string name="no_copy" value=" (コピー不可)"/> + <string name="worn" value=" (着用中)"/> + <string name="link" value=" (リンク)"/> + <string name="broken_link" value=" (壊れたリンク)"/> <string name="LoadingContents"> コンテンツをロード中です... </string> <string name="NoContents"> コンテンツなし </string> + <string name="WornOnAttachmentPoint" value=" ([ATTACHMENT_POINT] に装着中)"/> + <string name="PermYes"> + はい + </string> + <string name="PermNo"> + いいえ + </string> + <string name="Chat" value=" チャット:"/> + <string name="Sound" value=" サウンド:"/> + <string name="Wait" value=" --- 待機::"/> + <string name="AnimFlagStop" value=" アニメーションを停止:"/> + <string name="AnimFlagStart" value=" アニメーションを開始:"/> + <string name="Wave" value=" 手を振る"/> + <string name="HelloAvatar" value=" やあ、アバター!"/> + <string name="ViewAllGestures" value=" すべて表示 >>"/> + <string name="Animations" value="アニメーション、"/> + <string name="Calling Cards" value="コーリングカード、"/> + <string name="Clothing" value="衣類、"/> + <string name="Gestures" value="ジェスチャー、"/> + <string name="Landmarks" value="ランドマーク、"/> + <string name="Notecards" value="ノートカード、"/> + <string name="Objects" value="オブジェクト、"/> + <string name="Scripts" value="スクリプト、"/> + <string name="Sounds" value="サウンド、"/> + <string name="Textures" value="テクスチャ、"/> + <string name="Snapshots" value="スナップショット、"/> + <string name="No Filters" value="いいえ "/> + <string name="Since Logoff" value=" - ログオフ以来"/> <string name="InvFolder My Inventory"> - 私の持ち物 + 持ち物 </string> <string name="InvFolder My Favorites"> お気に入り @@ -801,7 +919,7 @@ 身体部位 </string> <string name="InvFolder Trash"> - ゴミ箱 + ごみ箱 </string> <string name="InvFolder Photo Album"> フォトアルバム @@ -825,7 +943,7 @@ 着用中のアウトフィット </string> <string name="InvFolder My Outfits"> - 私のアウトフィット + マイ アウトフィット </string> <string name="InvFolder Friends"> フレンド @@ -1013,6 +1131,15 @@ <string name="AgeDaysC"> [COUNT] 日間 </string> + <string name="GroupMembersA"> + [COUNT] 人 + </string> + <string name="GroupMembersB"> + [COUNT] 人 + </string> + <string name="GroupMembersC"> + [COUNT] 人 + </string> <string name="AcctTypeResident"> 住人 </string> @@ -1020,22 +1147,22 @@ トライアル </string> <string name="AcctTypeCharterMember"> - 特権メンバー + 創立メンバー </string> <string name="AcctTypeEmployee"> - Linden Lab従業員 + Linden Lab 従業員 </string> <string name="PaymentInfoUsed"> - 支払い情報登録済 + 支払情報使用履歴あり </string> <string name="PaymentInfoOnFile"> - 支払い情報登録済み + 支払情報登録済 </string> <string name="NoPaymentInfoOnFile"> - 支払い情報未登録 + 支払情報未登録 </string> <string name="AgeVerified"> - 年齢確認済み + 年齢確認済 </string> <string name="NotAgeVerified"> 年齢未確認 @@ -1056,13 +1183,13 @@ 中心 </string> <string name="Bottom Left"> - Bottom Left + 左下 </string> <string name="Bottom"> - Bottom + 下部 </string> <string name="Bottom Right"> - Bottom Right + 右下 </string> <string name="CompileQueueDownloadedCompiling"> ダウンロード完了、コンパイル中 @@ -1124,9 +1251,13 @@ <string name="GroupsNone"> なし </string> + <string name="Group" value=" (グループ)"/> <string name="Unknown"> (不明) </string> + <string name="SummaryForTheWeek" value="今週のまとめ。開始日は"/> + <string name="NextStipendDay" value="です。次回のお小遣い支給日:"/> + <string name="GroupIndividualShare" value=" グループ 個人の割り当て"/> <string name="Balance"> 残高 </string> @@ -1169,12 +1300,171 @@ <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="ScriptLimitsRequestNoParcelSelected"> + 区画が選択されていません。 + </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> <string name="PanelDirCountFound"> [COUNT] 件見つかりました </string> + <string name="PanelDirTimeStr"> + [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc] + </string> + <string name="PanelDirEventsDateText"> + [mthnum,datetime,slt]/[day,datetime,slt] + </string> <string name="PanelContentsNewScript"> 新規スクリプト </string> @@ -1194,11 +1484,13 @@ この不動産には約款がありません。 </string> <string name="RegionNoCovenantOtherOwner"> - この不動産には約款がありません。 この不動産上の土地は不動産所有者により販売され、Linden Lab では販売していません。 販売に関するお問い合わせは、不動産所有者までお願い致します。 + この不動産には約款がありません。 この不動産上の土地は不動産所有者により販売され、Linden Lab は販売しません。 販売に関するお問い合わせは、不動産所有者までお願い致します。 </string> <string name="covenant_last_modified"> 最終修正日: </string> + <string name="none_text" value=" (なし) "/> + <string name="never_text" value=" (無) "/> <string name="GroupOwned"> グループ所有 </string> @@ -1211,29 +1503,17 @@ <string name="ClassifiedUpdateAfterPublish"> (掲載後更新) </string> - <string name="GroupVoteYes"> - はい - </string> - <string name="GroupVoteNo"> - いいえ - </string> - <string name="GroupVoteNoActiveProposals"> - 継続中の提案は現在ありません + <string name="NoPicksClassifiedsText"> + ピックやクラシファイド広告を作成していません。 作成するには、下にある「プラス」ボタンをクリックします。 </string> - <string name="GroupVoteNoArchivedProposals"> - 提案のアーカイブは現在ありません - </string> - <string name="GroupVoteRetrievingArchivedProposals"> - 提案のアーカイブを取得中です - </string> - <string name="GroupVoteRetrievingActiveProposals"> - 継続中の提案を取得中です + <string name="PicksClassifiedsLoadingText"> + ローディング... </string> <string name="MultiPreviewTitle"> プレビュー </string> <string name="MultiPropertiesTitle"> - Properties + プロパティ </string> <string name="InvOfferAnObjectNamed"> オブジェクト名 @@ -1251,7 +1531,7 @@ 不明なユーザー所有 </string> <string name="InvOfferGaveYou"> - gave you + が渡しました </string> <string name="InvOfferYouDecline"> You decline @@ -1263,10 +1543,10 @@ 合計 </string> <string name="GroupMoneyBought"> - bought + は購入しました </string> <string name="GroupMoneyPaidYou"> - paid you + があなたに支払いました </string> <string name="GroupMoneyPaidInto"> paid into @@ -1275,10 +1555,10 @@ bought pass to </string> <string name="GroupMoneyPaidFeeForEvent"> - paid fee for event + がイベント用の費用を支払いました </string> <string name="GroupMoneyPaidPrizeForEvent"> - paid prize for event + がイベント用の賞金を支払いました </string> <string name="GroupMoneyBalance"> 残高 @@ -1290,7 +1570,7 @@ 支出 </string> <string name="ViewerObjectContents"> - 中身 + 内容 </string> <string name="AcquiredItems"> 取得アイテム @@ -1305,23 +1585,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+ @@ -1345,10 +1637,10 @@ PM </string> <string name="PST"> - 米国西部標準時 + 太平洋標準時 </string> <string name="PDT"> - 米国西部夏時間 + 太平洋夏時間 </string> <string name="Forward"> 前 @@ -1390,7 +1682,7 @@ 土地のレンタル </string> <string name="Property Rental"> - 建物のレンタル + プロパティのレンタル </string> <string name="Special Attraction"> 特別アトラクション @@ -1414,7 +1706,7 @@ なし </string> <string name="Linden Location"> - Linden所在地 + Linden 所在地 </string> <string name="Adult"> Adult @@ -1435,7 +1727,7 @@ たまり場 </string> <string name="Newcomer Friendly"> - 新住人に好意的 + 新住人に優しい </string> <string name="Parks&Nature"> 公園と自然 @@ -1482,6 +1774,12 @@ <string name="---"> --- </string> + <string name="Multiple Media"> + 複数のメディア + </string> + <string name="Play Media"> + メディアを再生/一時停止 + </string> <string name="MBCmdLineError"> コマンドラインにエラーが見つかりました。 リンク先を参照してください: http://wiki.secondlife.com/wiki/Client_parameters @@ -1513,7 +1811,7 @@ クラッシュ報告を送信しますか? </string> <string name="MBAlert"> - 警告 + 通知 </string> <string name="MBNoDirectX"> [APP_NAME] は DirectX 9.0b 及びそれ以降のバージョンを検出することができませんでした。 @@ -1554,14 +1852,13 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ ピクセル形式情報が見つかりません </string> <string name="MBTrueColorWindow"> - [APP_NAME] をウィンドウで実行するには、True Color(32ビット)が必要です。 -「コントロールパネル」>「画面」>「設定」に行き、「最高 (32 ビット)」に設定してください。 -全画面を選択した場合、実行時に [APP_NAME] は自動的にスクリーンを調整します。 + [APP_NAME] を実行するには、True Color (32ビット)が必要です。 +お使いのコンピューターの「コントロールパネル」>「画面」>「設定」に行き、「最高 (32 ビット)」に設定してください。 </string> <string name="MBAlpha"> [APP_NAME] は 8 ビットのアルファチャンネルを取得できないため実行できません。 通常ビデオカードのドライバの問題で起こります。 お使いのコンピューターに最新のビデオカードドライバがインストールされているかご確認ください。 -また、「コントロールパネル」>「画面」>「設定」内で、モニターが「最高 (32ビット)」に設定されていることもご確認ください。 +また、「コントロールパネル」>「画面」>「設定」内で、モニターが「最高 (32 ビット)」に設定されていることもご確認ください。 このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。 </string> <string name="MBPixelFmtSetErr"> @@ -1574,7 +1871,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ GL レンダーコンテキストをアクティベートできません </string> <string name="MBVideoDrvErr"> - お使いのコンピューターのビデオカードドライバが正常にインストールできなかった、または古いかサポート対象外のため、[APP_NAME] は実行できません。 最新のビデオカードドライバがインストールされているのを確認し、されている場合は再インストールをお試しください。 + お使いのコンピューターのビデオカードドライバが正常にインストールできなかった、または古いかサポート対象外のため、[APP_NAME] は実行できません。 最新のビデオカードドライバがインストールされているのを確認し、されている場合は再インストールをお試しください。 このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。 </string> @@ -1599,39 +1896,15 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Attached Earlobes"> 耳たぶ </string> - <string name="Back Bangs"> - 後ろにかき上げた前髪 - </string> - <string name="Back Bangs Down"> - 後ろにかき上げて下ろした前髪 - </string> - <string name="Back Bangs Up"> - 後ろにかき上げて持ち上げた前髪 - </string> <string name="Back Fringe"> 後ろ髪の毛先 </string> - <string name="Back Hair"> - 後ろ髪 - </string> - <string name="Back Hair Down"> - 下ろした後ろ髪 - </string> - <string name="Back Hair Up"> - アップにした後ろ髪 - </string> <string name="Baggy"> - たるんでいる + たるんだ下まぶた </string> <string name="Bangs"> 前髪 </string> - <string name="Bangs Down"> - 下ろした前髪 - </string> - <string name="Bangs Up"> - 持ち上げた前髪 - </string> <string name="Beady Eyes"> ビーズのような目 </string> @@ -1644,9 +1917,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Big Butt"> 大 </string> - <string name="Big Eyeball"> - 大きい眼球 - </string> <string name="Big Hair Back"> 髪の大部分: 後ろ </string> @@ -1720,7 +1990,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ 広 </string> <string name="Brow Size"> - 眉毛の大きさ + 眉毛上の隆起 </string> <string name="Bug Eyes"> Bug Eyes @@ -1753,7 +2023,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ 膨らみ大 </string> <string name="Chaplin"> - Chaplin + チャップリン </string> <string name="Cheek Bones"> ほお骨 @@ -1765,7 +2035,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ あごの角度 </string> <string name="Chin Cleft"> - あごの先の割れ具合 + あごの先の割れ </string> <string name="Chin Curtains"> あごに沿ったひげ @@ -1774,7 +2044,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ あごの長さ </string> <string name="Chin Heavy"> - あごに重点 + あごを強調 </string> <string name="Chin In"> ひいたあご @@ -1821,9 +2091,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Corner Down"> ダウン </string> - <string name="Corner Normal"> - ノーマル - </string> <string name="Corner Up"> アップ </string> @@ -1833,9 +2100,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Crooked Nose"> 曲がった鼻 </string> - <string name="Cropped Hair"> - 短く刈り込んだ髪 - </string> <string name="Cuff Flare"> 袖口のフレア </string> @@ -1854,15 +2118,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Default Heels"> デフォルトのかかと </string> - <string name="Default Toe"> - デフォルトのつま先 - </string> <string name="Dense"> 濃 </string> - <string name="Dense hair"> - 密度の多い髪 - </string> <string name="Double Chin"> 二重あご </string> @@ -1908,9 +2166,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Eye Spacing"> 目と目のあいだの幅 </string> - <string name="Eyeball Size"> - 眼球の大きさ - </string> <string name="Eyebrow Arc"> 眉毛のアーチ </string> @@ -1935,36 +2190,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Eyeliner Color"> アイライナーの色 </string> - <string name="Eyes Back"> - 目・戻る - </string> <string name="Eyes Bugged"> 下まぶたがたるんだ目 </string> - <string name="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"> - 離れた目 - </string> - <string name="Eyes Sunken"> - くぼんだ目 - </string> - <string name="Eyes Together"> - Eyes Together - </string> <string name="Face Shear"> 顔のゆがみ </string> @@ -1974,30 +2202,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Far Set Eyes"> 離れた目 </string> - <string name="Fat"> - 太った - </string> - <string name="Fat Head"> - 太めの頭 - </string> <string name="Fat Lips"> 大 </string> - <string name="Fat Lower"> - Fat Lower - </string> - <string name="Fat Lower Lip"> - 厚めの下唇 - </string> - <string name="Fat Torso"> - 太めの頭部 - </string> - <string name="Fat Upper"> - Fat Upper - </string> - <string name="Fat Upper Lip"> - 厚めの上唇 - </string> <string name="Female"> 女性 </string> @@ -2029,29 +2236,14 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ ひたいの角度 </string> <string name="Forehead Heavy"> - ひたいに重点 + ひたいを強調 </string> <string name="Freckles"> しみ・そばかす </string> - <string name="Front Bangs Down"> - 下ろした前髪 - </string> - <string name="Front Bangs Up"> - 上げた前髪 - </string> <string name="Front Fringe"> 前髪の毛先 </string> - <string name="Front Hair"> - 前髪 - </string> - <string name="Front Hair Down"> - 下ろした前髪 - </string> - <string name="Front Hair Up"> - アップにした前髪 - </string> <string name="Full Back"> 刈られていない髪 </string> @@ -2125,7 +2317,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ 頭の大きさ </string> <string name="Head Stretch"> - 頭の伸び具合 + 頭の伸び </string> <string name="Heel Height"> ヒールの高さ @@ -2194,7 +2386,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ あごの形 </string> <string name="Join"> - 寄せた + 寄せた胸 </string> <string name="Jowls"> えら @@ -2299,7 +2491,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ 口紅の色 </string> <string name="Long"> - 長 + ロング </string> <string name="Long Head"> 前後幅が広い頭 @@ -2325,9 +2517,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Long arms"> 長 </string> - <string name="Longcuffs"> - ロングカフス - </string> <string name="Loose Pants"> ゆったり </string> @@ -2490,9 +2679,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="No Eyeshadow"> なし </string> - <string name="No Heels"> - なし - </string> <string name="No Lipgloss"> なし </string> @@ -2518,10 +2704,10 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ なし </string> <string name="Normal Lower"> - Normal Lower + 下 </string> <string name="Normal Upper"> - Normal Upper + 上 </string> <string name="Nose Left"> 左曲がり @@ -2550,9 +2736,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Nostril Width"> 鼻の穴の幅 </string> - <string name="Old"> - Old - </string> <string name="Opaque"> 濃いめ </string> @@ -2652,9 +2835,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Pointy Heels"> 幅狭 </string> - <string name="Pointy Toe"> - 先の細いつま先 - </string> <string name="Ponytail"> ポニーテール </string> @@ -2679,15 +2859,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Red Hair"> 赤毛 </string> - <string name="Red Skin"> - 赤い肌 - </string> <string name="Regular"> 均整のとれた </string> - <string name="Regular Muscles"> - 均整のとれた筋肉 - </string> <string name="Right Part"> 右分け </string> @@ -2697,9 +2871,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Round"> まるっこい </string> - <string name="Round Forehead"> - 丸みを帯びた額 - </string> <string name="Ruddiness"> 血色 </string> @@ -2712,23 +2883,11 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Saddle Bags"> 腰回りの肉付き </string> - <string name="Saddlebags"> - 腰回りの肉付き - </string> - <string name="Scrawny"> - 骨張った - </string> <string name="Scrawny Leg"> 骨張った脚 </string> <string name="Separate"> - 離れた - </string> - <string name="Shading"> - Shading - </string> - <string name="Shadow hair"> - Shadow hair + 離れた胸 </string> <string name="Shallow"> なだらか @@ -2742,15 +2901,9 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Shear Front"> 前方を刈る </string> - <string name="Shear Left"> - 左側 - </string> <string name="Shear Left Up"> 左半分を上に </string> - <string name="Shear Right"> - 右側 - </string> <string name="Shear Right Up"> 右半分を上に </string> @@ -2782,7 +2935,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ 靴の長さ </string> <string name="Short"> - 短 + ショート </string> <string name="Short Arms"> 短 @@ -2811,15 +2964,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Shoulders"> 肩 </string> - <string name="Side Bangs"> - サイドに流した前髪 - </string> - <string name="Side Bangs Down"> - ダウン - </string> - <string name="Side Bangs Up"> - アップ - </string> <string name="Side Fringe"> サイドの毛先 </string> @@ -2835,9 +2979,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Sides Hair Up"> アップ </string> - <string name="Skinny"> - 細身 - </string> <string name="Skinny Neck"> 細 </string> @@ -2886,9 +3027,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Socks Length"> 靴下丈 </string> - <string name="Some"> - Some - </string> <string name="Soulpatch"> ソウルパッチ </string> @@ -2907,14 +3045,11 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Squash Head"> カボチャ型 </string> - <string name="Squash/Stretch Head"> - カボチャ/縦長頭 - </string> <string name="Stretch Head"> 縦長 </string> <string name="Sunken"> - こけた + こけたほお </string> <string name="Sunken Chest"> 小 @@ -2928,20 +3063,8 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Sweep Forward"> 前へ </string> - <string name="Swept Back"> - オールバック - </string> - <string name="Swept Back Hair"> - オールバックヘア - </string> - <string name="Swept Forward"> - 前へ - </string> - <string name="Swept Forward Hair"> - 後ろへ - </string> <string name="Tall"> - 高 + トール </string> <string name="Taper Back"> 後ろに先細 @@ -2958,9 +3081,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Thick Toe"> 厚め </string> - <string name="Thickness"> - 厚み - </string> <string name="Thin"> 薄い </string> @@ -2991,12 +3111,6 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="Tight Sleeves"> タイト </string> - <string name="Tilt Left"> - 左に傾斜 - </string> - <string name="Tilt Right"> - 右に傾斜 - </string> <string name="Toe Shape"> つま先の形 </string> @@ -3046,7 +3160,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ ウエストの高さ </string> <string name="Well-Fed"> - つまった + つまったほお </string> <string name="White Hair"> 白髪 @@ -3067,7 +3181,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ ワイルド </string> <string name="Wrinkles"> - しわあり + しわ </string> <string name="LocationCtrlAddLandmarkTooltip"> マイ ランドマークに追加 @@ -3075,6 +3189,33 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="LocationCtrlEditLandmarkTooltip"> マイ ランドマークを編集 </string> + <string name="LocationCtrlInfoBtnTooltip"> + 現在地の詳細を見る + </string> + <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> @@ -3105,14 +3246,74 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ <string name="UpdaterFailStartTitle"> ビューワの起動に失敗しました </string> + <string name="IM_logging_string"> + -- インスタントメッセージの保存開始 -- + </string> + <string name="IM_typing_start_string"> + [NAME] は入力中です... + </string> + <string name="Unnamed"> + (名前なし) + </string> + <string name="IM_moderated_chat_label"> + (モデレート: デフォルトでボイスはオフ) + </string> + <string name="IM_unavailable_text_label"> + このコールでは文字チャットが利用できません。 + </string> + <string name="IM_muted_text_label"> + グループのモデレータが、あなたの文字チャットを使用禁止にしました。 + </string> + <string name="IM_default_text_label"> + ここをクリックしてインスタントメッセージを開始。 + </string> + <string name="IM_to_label"> + 宛先 + </string> + <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> <string name="offline_message"> - [FIRST] [LAST]はオフラインです。 + [FIRST] [LAST] はオフラインです。 </string> <string name="invite_message"> - このボイスチャットに応答/接続する場合は、[BUTTON NAME]をクリックしてください。 + このボイスチャットに応答・接続する場合は、[BUTTON NAME] をクリックしてください。 + </string> + <string name="muted_message"> + この住人をブロックしています。 メッセージを送ると、ブロックが自動的に解除されます。 + </string> + <string name="generic"> + リクエスト中にエラーが発生しました。あとでもう一度お試しください。 </string> <string name="generic_request_error"> 要求中にエラーが発生しました。後でもう一度試してください。 @@ -3130,21 +3331,39 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ あなたにはその能力がありません。 </string> <string name="not_a_mod_error"> - あなたはセッション・モデレータではありません。 + あなたはセッションモデレータではありません。 + </string> + <string name="muted"> + グループのモデレーターが、あなたのテキストチャットを禁止しました。 </string> <string name="muted_error"> グループモデレータがあなたのテキストチャットを無効化しました </string> <string name="add_session_event"> - [RECIPIENT] とのチャット・セッションにユーザーを追加することができません + [RECIPIENT] とのチャットセッションにユーザーを追加することができません + </string> + <string name="message"> + [RECIPIENT] とのチャットセッションに、メッセージを送信することができません。 </string> <string name="message_session_event"> - [RECIPIENT] とのチャット・セッションにメッセージを送ることができません + [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> diff --git a/indra/newview/skins/default/xui/ja/teleport_strings.xml b/indra/newview/skins/default/xui/ja/teleport_strings.xml index 440704eafa..adcf0e42c3 100644 --- a/indra/newview/skins/default/xui/ja/teleport_strings.xml +++ b/indra/newview/skins/default/xui/ja/teleport_strings.xml @@ -3,21 +3,21 @@ <message_set name="errors"> <message name="invalid_tport"> テレポート処理中に問題が発生しました。 ログインし直す必要があるかもしれません。 -このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。 +このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。 </message> <message name="invalid_region_handoff"> リージョン間の移動中に問題が発生しました。 ログインし直す必要があるかもしれません。 -このメッセージが何度も出る場合は、[SUPPORT_SITE] へご連絡ください。 +このメッセージが何度も出る場合は、[SUPPORT_SITE] をご確認ください。 </message> <message name="blocked_tport"> - 申し訳ございません。テレポートは現在、ブロックされています。もう少し後でやり直してください。 + 申し訳ございませんが、テレポートは現在、ブロックされています。もう少し後でやり直してください。 やり直してもテレポートできない場合は、いったんログアウトし、再度ログインして問題を解決してください。 </message> <message name="nolandmark_tport"> - 残念ながら、システムはランドマーク目的地を探せませんでした。 + 残念ながら、システムはランドマークの目的地を探せませんでした。 </message> <message name="timeout_tport"> - 申し訳ございません。システムはテレポート接続を完了できませんでした。 + 申し訳ございませんが、システムはテレポートの接続を完了できませんでした。 もう少し後でやり直してください。 </message> <message name="noaccess_tport"> @@ -27,18 +27,18 @@ 添付物は、まだ到着していません。あと数秒間お待ちいただくか、いったんログアウトし、再度ログインしてからテレポートをやり直してださい。 </message> <message name="too_many_uploads_tport"> - この地域の資産キューが現在込み合っているため、テレポート・リクエストを時間通りに処理することが難しい状況です。 + この地域の資産キューが現在込み合っているため、要求されたテレポートを処理することが難しい状況です。 数分後にやり直すか、または混雑していない他の地域をお試しください。 </message> <message name="expired_tport"> - 申し訳ございません。システムはテレポート・リクエストを時間どおりに完了できませんでした。数分後にやり直してください。 + 申し訳ございませんが、システムは要求されたテレポートを完了できませんでした。数分後にやり直してください。 </message> <message name="expired_region_handoff"> - 申し訳ございません。システムは地域間の移動を時間どおりに完了できませんでした。 + 申し訳ございませんが、システムは地域間の移動を時間どおりに完了できませんでした。 数分後にやり直してください。 </message> <message name="no_host"> - テレポート目的地を見つけられません。目的地が一時的に利用できない状態か、またはすでに消滅している可能性があります。数分後にやり直してください。 + テレポートの目的地を見つけられません。目的地が一時的に利用できない状態か、またはすでに消滅している可能性があります。数分後にやり直してください。 </message> <message name="no_inventory_host"> 持ち物システムは現在利用できません。 @@ -49,19 +49,19 @@ 目的地に送信しています。 </message> <message name="redirecting"> - 別の目的地に再案内しています。 + 別の目的地にリダイレクトしています。 </message> <message name="relaying"> 目的地に中継しています。 </message> <message name="sending_home"> - ホーム位置リクエストを送信しています。 + ホーム位置のリクエストを送信しています。 </message> <message name="sending_landmark"> - ランドマーク位置リクエストを送信しています。 + ランドマーク位置のリクエストを送信しています。 </message> <message name="completing"> - テレポートを完了しています。 + テレポートを完了します。 </message> <message name="resolving"> 目的地を解決しています。 diff --git a/indra/newview/skins/default/xui/nl/floater_about.xml b/indra/newview/skins/default/xui/nl/floater_about.xml index 0c57a22be1..10c30eb361 100644 --- a/indra/newview/skins/default/xui/nl/floater_about.xml +++ b/indra/newview/skins/default/xui/nl/floater_about.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="OVER [APP_NAME]"> +<floater name="floater_about" title="OVER [CAPITALIZED_APP_NAME]"> <tab_container name="about_tab"> <panel name="credits_panel"> <text_editor name="credits_editor"> diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml index 0f100b9d83..29a5aca90d 100755..100644 --- 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" ?> -<floater name="floater_about" title="O [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. +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_about" title="O [CAPITALIZED_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"> + 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_about_land.xml b/indra/newview/skins/default/xui/pl/floater_about_land.xml index d456ea26b4..d456ea26b4 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_about_land.xml +++ b/indra/newview/skins/default/xui/pl/floater_about_land.xml diff --git a/indra/newview/skins/default/xui/pl/floater_animation_preview.xml b/indra/newview/skins/default/xui/pl/floater_animation_preview.xml index 0524b8ade3..0524b8ade3 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/pl/floater_animation_preview.xml diff --git a/indra/newview/skins/default/xui/pl/floater_auction.xml b/indra/newview/skins/default/xui/pl/floater_auction.xml index 37e35ed1e9..37e35ed1e9 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_auction.xml +++ b/indra/newview/skins/default/xui/pl/floater_auction.xml diff --git a/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml b/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml index 8c09f7294c..8c09f7294c 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/pl/floater_avatar_picker.xml diff --git a/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml b/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml index dce2330807..dce2330807 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml diff --git a/indra/newview/skins/default/xui/pl/floater_build_options.xml b/indra/newview/skins/default/xui/pl/floater_build_options.xml index f538be218c..f538be218c 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_build_options.xml +++ b/indra/newview/skins/default/xui/pl/floater_build_options.xml diff --git a/indra/newview/skins/default/xui/pl/floater_bumps.xml b/indra/newview/skins/default/xui/pl/floater_bumps.xml index 10f9d73284..10f9d73284 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_bumps.xml +++ b/indra/newview/skins/default/xui/pl/floater_bumps.xml diff --git a/indra/newview/skins/default/xui/pl/floater_buy_contents.xml b/indra/newview/skins/default/xui/pl/floater_buy_contents.xml index ebe1c9dfd8..ebe1c9dfd8 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/pl/floater_buy_contents.xml diff --git a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml index 5e59482883..5e59482883 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/pl/floater_buy_currency.xml diff --git a/indra/newview/skins/default/xui/pl/floater_buy_land.xml b/indra/newview/skins/default/xui/pl/floater_buy_land.xml index 648888828b..648888828b 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/pl/floater_buy_land.xml diff --git a/indra/newview/skins/default/xui/pl/floater_buy_object.xml b/indra/newview/skins/default/xui/pl/floater_buy_object.xml index bad7982228..bad7982228 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/pl/floater_buy_object.xml diff --git a/indra/newview/skins/default/xui/pl/floater_camera.xml b/indra/newview/skins/default/xui/pl/floater_camera.xml index 5957018144..5957018144 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_camera.xml +++ b/indra/newview/skins/default/xui/pl/floater_camera.xml diff --git a/indra/newview/skins/default/xui/pl/floater_choose_group.xml b/indra/newview/skins/default/xui/pl/floater_choose_group.xml index 72b6617094..72b6617094 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/pl/floater_choose_group.xml diff --git a/indra/newview/skins/default/xui/pl/floater_color_picker.xml b/indra/newview/skins/default/xui/pl/floater_color_picker.xml index 904a2cc270..904a2cc270 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/pl/floater_color_picker.xml diff --git a/indra/newview/skins/default/xui/pl/floater_critical.xml b/indra/newview/skins/default/xui/pl/floater_critical.xml index 8221a4e1bd..8221a4e1bd 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_critical.xml +++ b/indra/newview/skins/default/xui/pl/floater_critical.xml diff --git a/indra/newview/skins/default/xui/pl/floater_customize.xml b/indra/newview/skins/default/xui/pl/floater_customize.xml index 0c01d15faf..0c01d15faf 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_customize.xml +++ b/indra/newview/skins/default/xui/pl/floater_customize.xml diff --git a/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml index 6671bb853e..6671bb853e 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml +++ b/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml diff --git a/indra/newview/skins/default/xui/pl/floater_device_settings.xml b/indra/newview/skins/default/xui/pl/floater_device_settings.xml index e79478731d..e79478731d 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_device_settings.xml +++ b/indra/newview/skins/default/xui/pl/floater_device_settings.xml diff --git a/indra/newview/skins/default/xui/pl/floater_env_settings.xml b/indra/newview/skins/default/xui/pl/floater_env_settings.xml index e197d94b27..e197d94b27 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/pl/floater_env_settings.xml diff --git a/indra/newview/skins/default/xui/pl/floater_gesture.xml b/indra/newview/skins/default/xui/pl/floater_gesture.xml index 4685eb6afe..4685eb6afe 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_gesture.xml +++ b/indra/newview/skins/default/xui/pl/floater_gesture.xml diff --git a/indra/newview/skins/default/xui/pl/floater_god_tools.xml b/indra/newview/skins/default/xui/pl/floater_god_tools.xml index a3ccffac03..a3ccffac03 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/pl/floater_god_tools.xml diff --git a/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml b/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml index 39695a67b6..39695a67b6 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/pl/floater_hardware_settings.xml diff --git a/indra/newview/skins/default/xui/pl/floater_hud.xml b/indra/newview/skins/default/xui/pl/floater_hud.xml index ff2d702132..ff2d702132 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_hud.xml +++ b/indra/newview/skins/default/xui/pl/floater_hud.xml diff --git a/indra/newview/skins/default/xui/pl/floater_im.xml b/indra/newview/skins/default/xui/pl/floater_im.xml index 67c9d13496..67c9d13496 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_im.xml +++ b/indra/newview/skins/default/xui/pl/floater_im.xml diff --git a/indra/newview/skins/default/xui/pl/floater_image_preview.xml b/indra/newview/skins/default/xui/pl/floater_image_preview.xml index 27f898a66b..27f898a66b 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/pl/floater_image_preview.xml diff --git a/indra/newview/skins/default/xui/pl/floater_inspect.xml b/indra/newview/skins/default/xui/pl/floater_inspect.xml index c98e0541d8..c98e0541d8 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_inspect.xml +++ b/indra/newview/skins/default/xui/pl/floater_inspect.xml diff --git a/indra/newview/skins/default/xui/pl/floater_inventory.xml b/indra/newview/skins/default/xui/pl/floater_inventory.xml index 157be76c4d..157be76c4d 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_inventory.xml +++ b/indra/newview/skins/default/xui/pl/floater_inventory.xml diff --git a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml index 665172dd49..665172dd49 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/pl/floater_inventory_item_properties.xml diff --git a/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml index 9204262304..9204262304 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/pl/floater_inventory_view_finder.xml diff --git a/indra/newview/skins/default/xui/pl/floater_joystick.xml b/indra/newview/skins/default/xui/pl/floater_joystick.xml index 22ac458b85..22ac458b85 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_joystick.xml +++ b/indra/newview/skins/default/xui/pl/floater_joystick.xml diff --git a/indra/newview/skins/default/xui/pl/floater_lagmeter.xml b/indra/newview/skins/default/xui/pl/floater_lagmeter.xml index 69d563bdba..69d563bdba 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/pl/floater_lagmeter.xml diff --git a/indra/newview/skins/default/xui/pl/floater_land_holdings.xml b/indra/newview/skins/default/xui/pl/floater_land_holdings.xml index 13e6a8b16d..13e6a8b16d 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/pl/floater_land_holdings.xml diff --git a/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml index 8120ff8c77..8120ff8c77 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/pl/floater_live_lsleditor.xml diff --git a/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml b/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml index 5601aa4464..5601aa4464 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/pl/floater_lsl_guide.xml diff --git a/indra/newview/skins/default/xui/pl/floater_media_browser.xml b/indra/newview/skins/default/xui/pl/floater_media_browser.xml index 74210c75e5..74210c75e5 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/pl/floater_media_browser.xml diff --git a/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml b/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml index 88a878af72..88a878af72 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/pl/floater_mem_leaking.xml diff --git a/indra/newview/skins/default/xui/pl/floater_moveview.xml b/indra/newview/skins/default/xui/pl/floater_moveview.xml index e28cfd589d..e28cfd589d 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_moveview.xml +++ b/indra/newview/skins/default/xui/pl/floater_moveview.xml 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 dd30f749e3..8055617371 100755..100644 --- 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_my_friends.xml b/indra/newview/skins/default/xui/pl/floater_my_friends.xml index 0bcf6ba4d5..0bcf6ba4d5 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_my_friends.xml +++ b/indra/newview/skins/default/xui/pl/floater_my_friends.xml diff --git a/indra/newview/skins/default/xui/pl/floater_openobject.xml b/indra/newview/skins/default/xui/pl/floater_openobject.xml index fbbed0f11d..fbbed0f11d 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_openobject.xml +++ b/indra/newview/skins/default/xui/pl/floater_openobject.xml diff --git a/indra/newview/skins/default/xui/pl/floater_pay.xml b/indra/newview/skins/default/xui/pl/floater_pay.xml index dfb1b6616c..dfb1b6616c 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_pay.xml +++ b/indra/newview/skins/default/xui/pl/floater_pay.xml diff --git a/indra/newview/skins/default/xui/pl/floater_pay_object.xml b/indra/newview/skins/default/xui/pl/floater_pay_object.xml index 376f517aaa..376f517aaa 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/pl/floater_pay_object.xml diff --git a/indra/newview/skins/default/xui/pl/floater_post_process.xml b/indra/newview/skins/default/xui/pl/floater_post_process.xml index 6bd91f97b1..6bd91f97b1 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_post_process.xml +++ b/indra/newview/skins/default/xui/pl/floater_post_process.xml diff --git a/indra/newview/skins/default/xui/pl/floater_postcard.xml b/indra/newview/skins/default/xui/pl/floater_postcard.xml index 8f4018924d..8f4018924d 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_postcard.xml +++ b/indra/newview/skins/default/xui/pl/floater_postcard.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preferences.xml b/indra/newview/skins/default/xui/pl/floater_preferences.xml index 2be663283f..2be663283f 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preferences.xml +++ b/indra/newview/skins/default/xui/pl/floater_preferences.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preview_animation.xml b/indra/newview/skins/default/xui/pl/floater_preview_animation.xml index 7139c470a4..7139c470a4 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_animation.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preview_classified.xml b/indra/newview/skins/default/xui/pl/floater_preview_classified.xml index eae9ba2690..eae9ba2690 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preview_classified.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_classified.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preview_event.xml b/indra/newview/skins/default/xui/pl/floater_preview_event.xml index 9fc0ff4da6..9fc0ff4da6 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preview_event.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_event.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml index 1c7a3f6631..1c7a3f6631 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml b/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml index b9f80490ab..b9f80490ab 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_notecard.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preview_sound.xml b/indra/newview/skins/default/xui/pl/floater_preview_sound.xml index 656b9bec38..656b9bec38 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_sound.xml diff --git a/indra/newview/skins/default/xui/pl/floater_preview_texture.xml b/indra/newview/skins/default/xui/pl/floater_preview_texture.xml index 8bcd800411..8bcd800411 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/pl/floater_preview_texture.xml diff --git a/indra/newview/skins/default/xui/pl/floater_region_info.xml b/indra/newview/skins/default/xui/pl/floater_region_info.xml index ca3c1391db..ca3c1391db 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_region_info.xml +++ b/indra/newview/skins/default/xui/pl/floater_region_info.xml 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 c1efcffb1e..18ce1b230f 100755..100644 --- 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_script_debug.xml b/indra/newview/skins/default/xui/pl/floater_script_debug.xml index 714a600262..714a600262 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_script_debug.xml +++ b/indra/newview/skins/default/xui/pl/floater_script_debug.xml diff --git a/indra/newview/skins/default/xui/pl/floater_script_preview.xml b/indra/newview/skins/default/xui/pl/floater_script_preview.xml index e3e72e15a3..e3e72e15a3 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/pl/floater_script_preview.xml diff --git a/indra/newview/skins/default/xui/pl/floater_script_queue.xml b/indra/newview/skins/default/xui/pl/floater_script_queue.xml index 7655f5fcac..7655f5fcac 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/pl/floater_script_queue.xml diff --git a/indra/newview/skins/default/xui/pl/floater_script_search.xml b/indra/newview/skins/default/xui/pl/floater_script_search.xml index 255ab4264c..255ab4264c 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_script_search.xml +++ b/indra/newview/skins/default/xui/pl/floater_script_search.xml diff --git a/indra/newview/skins/default/xui/pl/floater_select_key.xml b/indra/newview/skins/default/xui/pl/floater_select_key.xml index 194a6da1bd..194a6da1bd 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_select_key.xml +++ b/indra/newview/skins/default/xui/pl/floater_select_key.xml diff --git a/indra/newview/skins/default/xui/pl/floater_sell_land.xml b/indra/newview/skins/default/xui/pl/floater_sell_land.xml index a306ec2c34..a306ec2c34 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/pl/floater_sell_land.xml diff --git a/indra/newview/skins/default/xui/pl/floater_settings_debug.xml b/indra/newview/skins/default/xui/pl/floater_settings_debug.xml index f87e2edecc..f87e2edecc 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/pl/floater_settings_debug.xml diff --git a/indra/newview/skins/default/xui/pl/floater_snapshot.xml b/indra/newview/skins/default/xui/pl/floater_snapshot.xml index c807087170..c807087170 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/pl/floater_snapshot.xml diff --git a/indra/newview/skins/default/xui/pl/floater_sound_preview.xml b/indra/newview/skins/default/xui/pl/floater_sound_preview.xml index 0826508fd6..0826508fd6 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/pl/floater_sound_preview.xml 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 0000000000..acd3df0585 --- /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/floater_telehub.xml b/indra/newview/skins/default/xui/pl/floater_telehub.xml index 9f564452a9..9f564452a9 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_telehub.xml +++ b/indra/newview/skins/default/xui/pl/floater_telehub.xml diff --git a/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml index 48366e2b64..48366e2b64 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/pl/floater_texture_ctrl.xml diff --git a/indra/newview/skins/default/xui/pl/floater_tools.xml b/indra/newview/skins/default/xui/pl/floater_tools.xml index e898c283c5..e898c283c5 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_tools.xml +++ b/indra/newview/skins/default/xui/pl/floater_tools.xml diff --git a/indra/newview/skins/default/xui/pl/floater_top_objects.xml b/indra/newview/skins/default/xui/pl/floater_top_objects.xml index e7299b0abb..e7299b0abb 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/pl/floater_top_objects.xml diff --git a/indra/newview/skins/default/xui/pl/floater_tos.xml b/indra/newview/skins/default/xui/pl/floater_tos.xml index b9a146df22..b9a146df22 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_tos.xml +++ b/indra/newview/skins/default/xui/pl/floater_tos.xml diff --git a/indra/newview/skins/default/xui/pl/floater_url_entry.xml b/indra/newview/skins/default/xui/pl/floater_url_entry.xml index fc170d8d1b..fc170d8d1b 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/pl/floater_url_entry.xml diff --git a/indra/newview/skins/default/xui/pl/floater_water.xml b/indra/newview/skins/default/xui/pl/floater_water.xml index 7333633c1d..7333633c1d 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_water.xml +++ b/indra/newview/skins/default/xui/pl/floater_water.xml diff --git a/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml index 2d4582392c..2d4582392c 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml +++ b/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml diff --git a/indra/newview/skins/default/xui/pl/floater_windlight_options.xml b/indra/newview/skins/default/xui/pl/floater_windlight_options.xml index 86ef9300da..86ef9300da 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/pl/floater_windlight_options.xml diff --git a/indra/newview/skins/default/xui/pl/floater_world_map.xml b/indra/newview/skins/default/xui/pl/floater_world_map.xml index 36e3b0651b..36e3b0651b 100755..100644 --- a/indra/newview/skins/default/xui/pl/floater_world_map.xml +++ b/indra/newview/skins/default/xui/pl/floater_world_map.xml 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 0000000000..4872956cc2 --- /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 0000000000..1107a5d9d1 --- /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 0000000000..c9ad275a26 --- /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 0000000000..832c2f9c96 --- /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 0000000000..427c0d464b --- /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 0000000000..818dfc08ae --- /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 0000000000..0a0b54a548 --- /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 0000000000..a72dec22fc --- /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 0000000000..9d3859081e --- /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 0000000000..1c2687338d --- /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 0000000000..925272d5ee --- /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 0000000000..dc232c096d --- /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 0000000000..df991cbc36 --- /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 0000000000..22d81cb823 --- /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 0000000000..988c31a6e4 --- /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 0000000000..ee2f202ee9 --- /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 7f89f78324..75c84c275d 100755..100644 --- 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 0000000000..5b8c5426dd --- /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 0000000000..8f5f94a02f --- /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 0000000000..2c89b43525 --- /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 0000000000..8cd7e03bf1 --- /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 2445d69ac0..5084b59397 100755..100644 --- 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 da2eba07a0..4152fb41c8 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 0000000000..8d84f3e764 --- /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 0000000000..78b8c0a4fc --- /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 0000000000..bdeeb61bf4 --- /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 0000000000..b499bca2db --- /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 0000000000..604ee2d104 --- /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 0000000000..0043030035 --- /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 0000000000..f661cfeba0 --- /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 0000000000..0f80b56c16 --- /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 0000000000..156c10e3f3 --- /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 0000000000..9e5f1a5917 --- /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 0000000000..418b67bce8 --- /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 0000000000..6f6e4b7fa8 --- /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 0000000000..14ab9c2978 --- /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 0000000000..72f4b1265f --- /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 0000000000..a737fc49ce --- /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 0000000000..f5ece87b28 --- /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 0000000000..e88f650ed0 --- /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 0000000000..8405d48e49 --- /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 ca5e2b0965..719959df6a 100755..100644 --- 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 0000000000..2161963a61 --- /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 0000000000..7e58747267 --- /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 0000000000..b12df08d6a --- /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 0000000000..4529246b56 --- /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 0000000000..0f210b140b --- /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 0000000000..38e4360691 --- /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 0000000000..0d8793d41e --- /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 0000000000..c11860d6fe --- /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 0000000000..becbd8276f --- /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 0000000000..0bdf1da2a4 --- /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 0000000000..881c010bc1 --- /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 0000000000..eb83245c48 --- /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 0000000000..b9fa692365 --- /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 0000000000..7376fb3afc --- /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 1898906d9f..2a5842e553 100755..100644 --- 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/mime_types.xml b/indra/newview/skins/default/xui/pl/mime_types.xml index c90d5761e6..c90d5761e6 100755..100644 --- a/indra/newview/skins/default/xui/pl/mime_types.xml +++ b/indra/newview/skins/default/xui/pl/mime_types.xml diff --git a/indra/newview/skins/default/xui/pl/panel_audio_device.xml b/indra/newview/skins/default/xui/pl/panel_audio_device.xml index fc3b3776f0..fc3b3776f0 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_audio_device.xml +++ b/indra/newview/skins/default/xui/pl/panel_audio_device.xml 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 0000000000..d7fcb8c966 --- /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_friends.xml b/indra/newview/skins/default/xui/pl/panel_friends.xml index b6df36f199..b6df36f199 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_friends.xml +++ b/indra/newview/skins/default/xui/pl/panel_friends.xml diff --git a/indra/newview/skins/default/xui/pl/panel_group_general.xml b/indra/newview/skins/default/xui/pl/panel_group_general.xml index d09ff72226..d09ff72226 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_group_general.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_general.xml diff --git a/indra/newview/skins/default/xui/pl/panel_group_invite.xml b/indra/newview/skins/default/xui/pl/panel_group_invite.xml index 12d48279ad..12d48279ad 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_invite.xml diff --git a/indra/newview/skins/default/xui/pl/panel_group_land_money.xml b/indra/newview/skins/default/xui/pl/panel_group_land_money.xml index dbfa8e3122..dbfa8e3122 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_land_money.xml diff --git a/indra/newview/skins/default/xui/pl/panel_group_notices.xml b/indra/newview/skins/default/xui/pl/panel_group_notices.xml index 1c19571ec0..1c19571ec0 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_notices.xml 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 ccef8870d2..dd46b4aeaa 100755..100644 --- 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_groups.xml b/indra/newview/skins/default/xui/pl/panel_groups.xml index 9df90fc797..9df90fc797 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_groups.xml +++ b/indra/newview/skins/default/xui/pl/panel_groups.xml diff --git a/indra/newview/skins/default/xui/pl/panel_login.xml b/indra/newview/skins/default/xui/pl/panel_login.xml index 3caf9338a2..cec7e34da5 100755..100644 --- 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 0000000000..e34fd69671 --- /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 2b70a728fa..c3bd66274b 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 7826af8b03..7195c30f20 100755..100644 --- 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 13b66ed242..5599c21686 100755..100644 --- 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_general.xml b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml index 97b4975f29..97b4975f29 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_general.xml diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml index ddd4c736d6..ddd4c736d6 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml index e3cdaae840..e3cdaae840 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_privacy.xml diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml index 1e2289b496..1e2289b496 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_setup.xml 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 64e3acfcde..f9b5d221a5 100755..100644 --- 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_region_covenant.xml b/indra/newview/skins/default/xui/pl/panel_region_covenant.xml index f20387dd25..f20387dd25 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_covenant.xml diff --git a/indra/newview/skins/default/xui/pl/panel_region_debug.xml b/indra/newview/skins/default/xui/pl/panel_region_debug.xml index fe7b554a13..fe7b554a13 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_debug.xml diff --git a/indra/newview/skins/default/xui/pl/panel_region_estate.xml b/indra/newview/skins/default/xui/pl/panel_region_estate.xml index 4275f3f647..4275f3f647 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_estate.xml diff --git a/indra/newview/skins/default/xui/pl/panel_region_general.xml b/indra/newview/skins/default/xui/pl/panel_region_general.xml index 20296dac71..20296dac71 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_region_general.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_general.xml diff --git a/indra/newview/skins/default/xui/pl/panel_region_terrain.xml b/indra/newview/skins/default/xui/pl/panel_region_terrain.xml index b206616e34..b206616e34 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_terrain.xml diff --git a/indra/newview/skins/default/xui/pl/panel_region_texture.xml b/indra/newview/skins/default/xui/pl/panel_region_texture.xml index d24579fc75..d24579fc75 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/pl/panel_region_texture.xml diff --git a/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml b/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml index 70a6e39412..70a6e39412 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml +++ b/indra/newview/skins/default/xui/pl/panel_scrolling_param.xml diff --git a/indra/newview/skins/default/xui/pl/panel_status_bar.xml b/indra/newview/skins/default/xui/pl/panel_status_bar.xml index 9226e67dff..9226e67dff 100755..100644 --- a/indra/newview/skins/default/xui/pl/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/pl/panel_status_bar.xml 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 608f102dc9..70479fe209 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/role_actions.xml b/indra/newview/skins/default/xui/pl/role_actions.xml index 5711eacf2f..5711eacf2f 100755..100644 --- a/indra/newview/skins/default/xui/pl/role_actions.xml +++ b/indra/newview/skins/default/xui/pl/role_actions.xml diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index 1f67944f86..e8dcfac02d 100755..100644 --- 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,18 +674,733 @@ <string name="choose_the_directory"> Wybierz Katalog </string> - <string name="accel-mac-control"> - ⌃ + <string name="AvatarSetNotAway"> + Ustaw Nie Śpij + </string> + <string name="AvatarSetAway"> + Śpij + </string> + <string name="AvatarSetNotBusy"> + Ustawiaj Nie Pracuj + </string> + <string name="AvatarSetBusy"> + Pracuj + </string> + <string name="shape"> + Kształt + </string> + <string name="skin"> + Skórka + </string> + <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 + </string> + <string name="GraphicsQualityMid"> + Średnia + </string> + <string name="GraphicsQualityHigh"> + Wysoka + </string> + <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="InvFolder Calling Cards"> + Wizytówki + </string> + <string name="InvFolder Landmarks"> + Ulubione Miejsca + </string> + <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="accel-mac-command"> - ⌘ + <string name="AcctTypeCharterMember"> + Wyróżniony Członek </string> - <string name="accel-mac-option"> - ⌥ + <string name="AcctTypeEmployee"> + Pracownik Linden Lab </string> - <string name="accel-mac-shift"> - ⇧ + <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> @@ -507,81 +1410,1790 @@ <string name="accel-win-shift"> Shift+ </string> - <string name="GraphicsQualityLow"> - Niska + <string name="FileSaved"> + Zapisane Pliki </string> - <string name="GraphicsQualityMid"> - Średnia + <string name="Receiving"> + Otrzymane </string> - <string name="GraphicsQualityHigh"> + <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> - - <!-- 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="High Heels"> + Wysokie Obcasy </string> - <string name="connected"> - Połączenie uzyskane. + <string name="High Jaw"> + High Jaw </string> - <string name="unavailable"> - Niestety, rozmowy głosem są niedozwolone w tym miejscu. + <string name="High Platforms"> + High Platforms </string> - <string name="hang_up"> - Połączenie rozmowy utracone. + <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 3384ae30b7..906978effe 100755..100644 --- 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. diff --git a/indra/newview/skins/default/xui/pl/xui_version.xml b/indra/newview/skins/default/xui/pl/xui_version.xml index 0e777751d3..0e777751d3 100755..100644 --- a/indra/newview/skins/default/xui/pl/xui_version.xml +++ b/indra/newview/skins/default/xui/pl/xui_version.xml diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml index 9c19b12893..d6e1c925b0 100644 --- a/indra/newview/skins/default/xui/pt/floater_about.xml +++ b/indra/newview/skins/default/xui/pt/floater_about.xml @@ -1,19 +1,58 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_about" title="SOBRE O [APP_NAME]"> -<tab_container name="about_tab"> - <panel name="credits_panel"> - <text_editor name="credits_editor"> - Second Life é oferecido a você por 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 e muitos outros. +<floater name="floater_about" title="SOBRE O [CAPITALIZED_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"> + Construído com [COMPILER] versão [COMPILER_VERSION] + </floater.string> + <floater.string name="AboutPosition"> + Você está em [POSITION_0,number,1], [POSITION_1,number,1], [POSITION_2,number,1] em [REGION] localizado em [HOSTNAME] ([HOSTIP]) +[SERVER_VERSION] +[[SERVER_RELEASE_NOTES_URL] [ReleaseNotes]] + </floater.string> + <floater.string name="AboutSystem"> + CPU: [CPU] +Memória: [MEMORY_MB] MBs +Versão OS: [OS_VERSION] +Placa de vídeo: [GRAPHICS_CARD_VENDOR] +Placa gráfica: [GRAPHICS_CARD] + </floater.string> + <floater.string name="AboutDriver"> + Versão do driver de vídeo Windows: [GRAPHICS_CARD_VENDOR] + </floater.string> + <floater.string name="AboutLibs"> + Versão OpenGL: [OPENGL_VERSION] + +Versão libcurl: [LIBCURL_VERSION] +Versão J2C Decoder: [J2C_VERSION] +Versão do driver de áudio: [AUDIO_DRIVER_VERSION] +Versão Qt Webkit: [QT_WEBKIT_VERSION] +Versão Vivox: [VIVOX_VERSION] + </floater.string> + <floater.string name="none"> + (nenhum) + </floater.string> + <floater.string name="AboutTraffic"> + Packets Lost: [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="Copiar para área de transferência" name="copy_btn"/> + </panel> + <panel label="Créditos" name="credits_panel"> + <text_editor name="credits_editor"> + Second Life é oferecido a você por 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 e muitos outros. Obrigado aos seguintes residentes por ajudar a garantir para que esta versão seja ainda melhor: 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 Para ter sucesso nos negócios, seja ousado, seja o primeiro, seja diferente. --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="Licenças" 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. @@ -34,10 +73,7 @@ Todos os direitos reservados. Veja licenças.txt para detalhes. Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) - </text_editor> - </panel> -</tab_container> - <string name="you_are_at"> - Você está em [POSITION] - </string> + </text_editor> + </panel> + </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml index 19981cf48c..bf6faf50cc 100644 --- a/indra/newview/skins/default/xui/pt/floater_about_land.xml +++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml @@ -1,7 +1,59 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floaterland" title="SOBRE O TERRENO"> + <floater.string name="Minutes"> + [MINUTES] minutos + </floater.string> + <floater.string name="Minute"> + minuto + </floater.string> + <floater.string name="Seconds"> + [SECONDS] segundos + </floater.string> + <floater.string name="Remaining"> + faltam + </floater.string> <tab_container name="landtab"> - <panel label="Geral" name="land_general_panel"> + <panel label="GERAL" name="land_general_panel"> + <panel.string name="new users only"> + Somente novos usuários + </panel.string> + <panel.string name="anyone"> + Qualquer um + </panel.string> + <panel.string name="area_text"> + Área + </panel.string> + <panel.string name="area_size_text"> + [AREA] m² + </panel.string> + <panel.string name="auction_id_text"> + ID do Leilão: [ID] + </panel.string> + <panel.string name="need_tier_to_modify"> + Você deve ter sua compra aprovada para modificar este terreno. + </panel.string> + <panel.string name="group_owned_text"> + (Possuído pelo Grupo) + </panel.string> + <panel.string name="profile_text"> + Perfil... + </panel.string> + <panel.string name="info_text"> + Informação... + </panel.string> + <panel.string name="public_text"> + (público) + </panel.string> + <panel.string name="none_text"> + (nenhum) + </panel.string> + <panel.string name="sale_pending_text"> + (Venda Pendente) + </panel.string> + <panel.string name="no_selection_text"> + Nenhum lote selecionado. +Vá para o menu Mundo > Sobre a Terra ou selecione outro lote para mostrar seus detalhes. + </panel.string> <text name="Name:"> Nome: </text> @@ -26,7 +78,6 @@ <text name="OwnerText"> Leyla Linden </text> - <button label="Perfil..." label_selected="Perfil..." name="Profile..."/> <text name="Group:"> Grupo: </text> @@ -78,54 +129,25 @@ <button label="Abandonar Terra.." label_selected="Abandonar Terra.." name="Abandon Land..."/> <button label="Reclamar Terra..." label_selected="Reclamar Terra..." name="Reclaim Land..."/> <button label="Venda Linden..." label_selected="Venda Linden..." name="Linden Sale..." tool_tip="A terra precisa ser possuída, estar com o conteúdo configurado e não estar pronta para leilão."/> - <panel.string name="new users only"> - Somente novos usuários - </panel.string> - <panel.string name="anyone"> - Qualquer um - </panel.string> - <panel.string name="area_text"> - Área - </panel.string> - <panel.string name="area_size_text"> - [AREA] m² - </panel.string> - <panel.string name="auction_id_text"> - ID do Leilão: [ID] - </panel.string> - <panel.string name="need_tier_to_modify"> - Você deve ter sua compra aprovada para modificar este terreno. - </panel.string> - <panel.string name="group_owned_text"> - (Possuído pelo Grupo) - </panel.string> - <panel.string name="profile_text"> - Perfil... - </panel.string> - <panel.string name="info_text"> - Informação... - </panel.string> - <panel.string name="public_text"> - (público) + </panel> + <panel label="CONTRATO" name="land_covenant_panel"> + <panel.string name="can_resell"> + Terra comprada nesta região pode ser revendida. </panel.string> - <panel.string name="none_text"> - (nenhum) + <panel.string name="can_not_resell"> + Terra comprada nesta região não pode ser revendida. </panel.string> - <panel.string name="sale_pending_text"> - (Venda Pendente) + <panel.string name="can_change"> + Terra comprada nesta região pode ser compartilhada +ou sub-dividida. </panel.string> - <panel.string name="no_selection_text"> - Nenhum lote selecionado. -Vá para o menu Mundo > Sobre a Terra ou selecione outro lote para mostrar seus detalhes. + <panel.string name="can_not_change"> + Terra comprada nesta região não pode ser compartilhada +ou sub-dividida. </panel.string> - </panel> - <panel label="Corretor" name="land_covenant_panel"> <text name="estate_section_lbl"> Propriedade: </text> - <text name="estate_name_lbl"> - Nome: - </text> <text name="estate_name_text"> mainland </text> @@ -144,9 +166,6 @@ Vá para o menu Mundo > Sobre a Terra ou selecione outro lote para mostrar se <text name="region_section_lbl"> Região: </text> - <text name="region_name_lbl"> - Nome: - </text> <text name="region_name_text"> leyla </text> @@ -174,37 +193,23 @@ Vá para o menu Mundo > Sobre a Terra ou selecione outro lote para mostrar se <text name="changeable_clause"> Terra nesta região não pode ser unida/sub-dividida. </text> - <panel.string name="can_resell"> - Terra comprada nesta região pode ser revendida. - </panel.string> - <panel.string name="can_not_resell"> - Terra comprada nesta região não pode ser revendida. - </panel.string> - <panel.string name="can_change"> - Terra comprada nesta região pode ser compartilhada -ou sub-dividida. + </panel> + <panel label="OBJETOS" name="land_objects_panel"> + <panel.string name="objects_available_text"> + [COUNT] de [MAX] ([AVAILABLE] disponíveis) </panel.string> - <panel.string name="can_not_change"> - Terra comprada nesta região não pode ser compartilhada -ou sub-dividida. + <panel.string name="objects_deleted_text"> + [COUNT] de [MAX] ([DELETED] serão deletados) </panel.string> - </panel> - <panel label="Objetos" name="land_objects_panel"> <text name="parcel_object_bonus"> Fator de Bonus para Objetos na Região: [BONUS] </text> <text name="Simulator primitive usage:"> - Uso do simulador de primitivas: + Uso de prims: </text> <text left="214" name="objects_available" width="230"> [COUNT] de [MAX] ([AVAILABLE] disponíveis) </text> - <panel.string name="objects_available_text"> - [COUNT] de [MAX] ([AVAILABLE] disponíveis) - </panel.string> - <panel.string name="objects_deleted_text"> - [COUNT] de [MAX] ([DELETED] serão deletados) - </panel.string> <text name="Primitives parcel supports:" width="200"> Primitivas suportadas pelo lote: </text> @@ -254,33 +259,63 @@ ou sub-dividida. <text name="Object Owners:"> Donos dos Objetos: </text> - <button label="Atualizar Lista" label_selected="Atualizar Lista" name="Refresh List" left="118"/> - <button label="Retornar objetos..." label_selected="Retornar objetos..." name="Return objects..." left="230"/> + <button label="Atualizar Lista" label_selected="Atualizar Lista" left="118" name="Refresh List" tool_tip="Refresh Object List"/> + <button label="Retornar objetos..." label_selected="Retornar objetos..." left="230" name="Return objects..."/> <name_list name="owner list"> - <column label="Tipo" name="type"/> - <column label="Nome" name="name"/> - <column label="Contar" name="count"/> - <column label="Mais recente" name="mostrecent"/> + <name_list.columns label="Tipo" name="type"/> + <name_list.columns label="Nome" name="name"/> + <name_list.columns label="Contar" name="count"/> + <name_list.columns label="Mais recente" name="mostrecent"/> </name_list> </panel> - <panel label="Opções" name="land_options_panel"> + <panel label="OPÇÕES" name="land_options_panel"> + <panel.string name="search_enabled_tooltip"> + Permitir que as pessoas vejam este lote nos resultados de busca + </panel.string> + <panel.string name="search_disabled_small_tooltip"> + Esta opção está desabilitada porque a área deste lote tem 128 m² ou menos. +Apenas lotes maiores podem ser listados na busca. + </panel.string> + <panel.string name="search_disabled_permissions_tooltip"> + Esta opção está desabilitada porque você não pode modificar as opções deste lote. + </panel.string> + <panel.string name="mature_check_mature"> + Conteúdo Mature + </panel.string> + <panel.string name="mature_check_adult"> + Conteúdo Adult + </panel.string> + <panel.string name="mature_check_mature_tooltip"> + A informação do seu lote ou seu conteúdo são considerados mature. + </panel.string> + <panel.string name="mature_check_adult_tooltip"> + A informação do seu lote ou seu conteúdo são considerados adult. + </panel.string> + <panel.string name="landing_point_none"> + (nenhum) + </panel.string> + <panel.string name="push_restrict_text"> + Sem Empurrar + </panel.string> + <panel.string name="push_restrict_region_text"> + Sem Empurrar (Imposição na Região) + </panel.string> <text name="allow_label"> Permitir outros residentes a: </text> <check_box label="Editar Terreno" name="edit land check" tool_tip="Se ativado, qualquer um pode modificar a forma da sua terra. É melhor deixar esta opção desativada, uma vez que você sempre pode editar seu próprio terreno."/> - <check_box label="Criar Landmarks" name="check landmark"/> <check_box label="Voar" name="check fly" tool_tip="Se ativado, os Residentes podem voar na sua terra. Se desativado, eles podem voar apenas para dentro e por cima de sua terra."/> - <text name="allow_label2" left="172"> + <text left="172" name="allow_label2"> Criar Objetos: </text> <check_box label="Residentes" name="edit objects check"/> <check_box label="Grupo" name="edit group objects check"/> - <text name="allow_label3" left="172"> + <text left="172" name="allow_label3"> Entrada do Objeto: </text> <check_box label="Residentes" name="all object entry check"/> <check_box label="Grupo" name="group object entry check"/> - <text name="allow_label4" left="172"> + <text left="172" name="allow_label4"> Executar Scripts: </text> <check_box label="Residentes" name="check other scripts"/> @@ -290,85 +325,37 @@ ou sub-dividida. </text> <check_box label="Salvo (sem dano)" name="check safe" tool_tip="Se ativado, ajusta o terreno para Seguro, desabilitando combate com danos. Se não ativado, o combate com danos é habilitado."/> <check_box label="Sem Empurrar" name="PushRestrictCheck" tool_tip="Evita scripts que empurram. A ativação dessa opção pode ser útil para prevenir comportamentos desordeiros na sua terra."/> - <check_box label="Mostra o Lugar na Busca (L$30/semana) sob" name="ShowDirectoryCheck" tool_tip="Permitir que as pessoas vejam este terreno nos resultados de busca"/> - <panel.string name="search_enabled_tooltip"> - Permitir que as pessoas vejam este lote nos resultados de busca - </panel.string> - <panel.string name="search_disabled_small_tooltip"> - Esta opção está desabilitada porque a área deste lote tem 128 m² ou menos. -Apenas lotes maiores podem ser listados na busca. - </panel.string> - <panel.string name="search_disabled_permissions_tooltip"> - Esta opção está desabilitada porque você não pode modificar as opções deste lote. - </panel.string> - <combo_box name="land category with adult" left="265" width="155"> - <combo_box.item name="item0" label="Qualquer Categoria" - /> - <combo_box.item name="item1" label="Locação Linden" - /> - <combo_box.item name="item2" label="Adult" - /> - <combo_box.item name="item3" label="Artes e Cultura" - /> - <combo_box.item name="item4" label="Negócios" - /> - <combo_box.item name="item5" label="Educacional" - /> - <combo_box.item name="item6" label="Jogos" - /> - <combo_box.item name="item7" label="Moradia" - /> - <combo_box.item name="item8" label="Amigável a Novos Usuários" - /> - <combo_box.item name="item9" label="Parques & Natureza" - /> - <combo_box.item name="item10" label="Residencial" - /> - <combo_box.item name="item11" label="Compras" - /> - <combo_box.item name="item12" label="Outros" - /> + <check_box label="Mostrar terreno nos resultados de busca (L$30/semana)" name="ShowDirectoryCheck" tool_tip="Permitir que as pessoas vejam este terreno nos resultados de busca"/> + <combo_box left="265" name="land category with adult" width="155"> + <combo_box.item label="Qualquer Categoria" name="item0"/> + <combo_box.item label="Locação Linden" name="item1"/> + <combo_box.item label="Adult" name="item2"/> + <combo_box.item label="Artes e Cultura" name="item3"/> + <combo_box.item label="Negócios" name="item4"/> + <combo_box.item label="Educacional" name="item5"/> + <combo_box.item label="Jogos" name="item6"/> + <combo_box.item label="Moradia" name="item7"/> + <combo_box.item label="Amigável a Novos Usuários" name="item8"/> + <combo_box.item label="Parques & Natureza" name="item9"/> + <combo_box.item label="Residencial" name="item10"/> + <combo_box.item label="Compras" name="item11"/> + <combo_box.item label="Outros" name="item12"/> </combo_box> - <combo_box name="land category" left="265" width="155"> - <combo_box.item name="item0" label="Qualquer Categoria" - /> - <combo_box.item name="item1" label="Locação Linden" - /> - <combo_box.item name="item3" label="Artes e Cultura" - /> - <combo_box.item name="item4" label="Negócios" - /> - <combo_box.item name="item5" label="Educacional" - /> - <combo_box.item name="item6" label="Jogos" - /> - <combo_box.item name="item7" label="Moradia" - /> - <combo_box.item name="item8" label="Amigável a Novos Usuários" - /> - <combo_box.item name="item9" label="Parques e Natureza" - /> - <combo_box.item name="item10" label="Residencial" - /> - <combo_box.item name="item11" label="Compras" - /> - <combo_box.item name="item12" label="Outros" - /> + <combo_box left="265" name="land category" width="155"> + <combo_box.item label="Qualquer Categoria" name="item0"/> + <combo_box.item label="Locação Linden" name="item1"/> + <combo_box.item label="Artes e Cultura" name="item3"/> + <combo_box.item label="Negócios" name="item4"/> + <combo_box.item label="Educacional" name="item5"/> + <combo_box.item label="Jogos" name="item6"/> + <combo_box.item label="Moradia" name="item7"/> + <combo_box.item label="Amigável a Novos Usuários" name="item8"/> + <combo_box.item label="Parques e Natureza" name="item9"/> + <combo_box.item label="Residencial" name="item10"/> + <combo_box.item label="Compras" name="item11"/> + <combo_box.item label="Outros" name="item12"/> </combo_box> - <button label="?" label_selected="?" left="426" name="?"/> <check_box label="Conteúdo Mature" name="MatureCheck" tool_tip=""/> - <panel.string name="mature_check_mature"> - Conteúdo Mature - </panel.string> - <panel.string name="mature_check_adult"> - Conteúdo Adult - </panel.string> - <panel.string name="mature_check_mature_tooltip"> - A informação do seu lote ou seu conteúdo são considerados mature. - </panel.string> - <panel.string name="mature_check_adult_tooltip"> - A informação do seu lote ou seu conteúdo são considerados adult. - </panel.string> <text name="Snapshot:"> Foto: </text> @@ -376,39 +363,31 @@ Apenas lotes maiores podem ser listados na busca. <text name="landing_point"> Ponto de Aterrissagem: [LANDING] </text> - <panel.string name="landing_point_none"> - (nenhum) - </panel.string> <button label="Definir" label_selected="Definir" name="Set" tool_tip="Define o ponto de aterrissagem aonde o visitante chega. Define para o ponto em que seu avatar se encontra neste lote."/> <button label="Limpar" label_selected="Limpar" name="Clear" tool_tip="Limpar o ponto de aterrissagem."/> <text name="Teleport Routing: "> Rota de Tele-transporte: </text> - <combo_box width="160" left="140" name="landing type" tool_tip="Rota de Teletransporte -- Selecione como tratar os tele-transportes no seu lote."> - <combo_box.item name="Blocked" label="Bloqueado" - /> - <combo_box.item name="LandingPoint" label="Ponto de Aterrissagem" - /> - <combo_box.item name="Anywhere" label="Qualquer lugar" - /> + <combo_box left="140" name="landing type" tool_tip="Rota de Teletransporte -- Selecione como tratar os tele-transportes no seu lote." width="160"> + <combo_box.item label="Bloqueado" name="Blocked"/> + <combo_box.item label="Ponto de Aterrissagem" name="LandingPoint"/> + <combo_box.item label="Qualquer lugar" name="Anywhere"/> </combo_box> - <panel.string name="push_restrict_text"> - Sem Empurrar - </panel.string> - <panel.string name="push_restrict_region_text"> - Sem Empurrar (Imposição na Região) - </panel.string> </panel> - <panel label="Mídia" name="land_media_panel"> + <panel label="MÍDIA" name="land_media_panel"> <text name="with media:" width="85"> Tipo de Mídia: </text> <combo_box left="97" name="media type" tool_tip="Especificar se a URL é um filme, uma página web ou outra mídia"/> <text name="at URL:" width="85"> - URL da Mídia: + Página web: </text> <line_editor left="97" name="media_url"/> <button label="Definir..." label_selected="Definir..." name="set_media_url"/> + <text name="CurrentURL:"> + Página atual: + </text> + <check_box label="Esconder a URL da Mídia" left="97" name="hide_media_url" tool_tip="Ativando esta opção, a URL da mídia se ocultará para quaisquer visualizadores não autorizados a ver esta informação do lote. Notar que isto não está disponível para tipos HTML."/> <text name="Description:"> Descrição: </text> @@ -423,14 +402,7 @@ Textura: a página web depois que você clicar na seta de reproduzir.) </text> - <text name="Options:"> - Opções de -Mídia: - </text> <check_box label="Escala automática" left="97" name="media_auto_scale" tool_tip="Marcando esta opção o conteúdo se ajustará ao lote automaticamente. A mídia pode se tornar lenta e com baixa qualidade visual mas nenhum outro ajuste de textura ou alinhamento será necessário."/> - <check_box label="Mídia em Repetição" name="media_loop" tool_tip="Executar a mídia repetidamente. Quando a mídia terminar a execução, ela reiniciará do começo."/> - <check_box label="Esconder a URL da Mídia" left="97" name="hide_media_url" tool_tip="Ativando esta opção, a URL da mídia se ocultará para quaisquer visualizadores não autorizados a ver esta informação do lote. Notar que isto não está disponível para tipos HTML."/> - <check_box label="Esconder a URL de Música" name="hide_music_url" tool_tip="Ativando esta opção, a URL de música se esconderá para visualizadores não autorizados a ver esta informação do lote"/> <text left="102" name="media_size" tool_tip="Tamanho para desenhar a mídia Web, deixar 0 como padrão." width="115"> Tamanho da mídia: </text> @@ -439,57 +411,43 @@ Mídia: <text name="pixels"> pixels </text> - <text name="MusicURL:"> - URL da Música: - </text> - <line_editor left="97" name="music_url"/> - <text name="Sound:"> - Som: - </text> - <check_box label="Restringir gestos e sons de objetos a este lote" left="97" name="check sound local"/> - <button label="?" label_selected="?" name="?"/> - <text name="Voice settings:"> - Voz: + <text name="Options:"> + Opções de +Mídia: </text> - <check_box left="97" label="Habilitar Voz" name="parcel_enable_voice_channel"/> - <check_box left="97" label="Habilitar Voz (definida pela Propriedade)" name="parcel_enable_voice_channel_is_estate_disabled"/> - <check_box left="117" label="Restringir Voz a este lote" name="parcel_enable_voice_channel_parcel"/> + <check_box label="Mídia em Repetição" name="media_loop" tool_tip="Executar a mídia repetidamente. Quando a mídia terminar a execução, ela reiniciará do começo."/> + </panel> + <panel label="SOM" name="land_audio_panel"> + <check_box label="Ativar voz" name="parcel_enable_voice_channel"/> + <check_box label="Ativar voz (definições do terreno)" name="parcel_enable_voice_channel_is_estate_disabled"/> </panel> - <panel label="Acesso" name="land_access_panel"> + <panel label="ACESSO" name="land_access_panel"> + <panel.string name="access_estate_defined"> + (Definições do terreno) + </panel.string> + <panel.string name="estate_override"> + Uma ou mais destas opções está definida no nível de propriedade. + </panel.string> <text name="Limit access to this parcel to:"> Acesso a Este Lote </text> - <check_box label="Permitir Acesso Público" name="public_access"/> + <check_box label="Acesso para público categoria [MATURITY]" name="public_access"/> <text name="Only Allow"> - Bloquear Acesso por: + Restringir acesso a contas confirmardas por: </text> - <check_box label="Residentes que não forneceram informações de pagamento para a Linden Lab" name="limit_payment" tool_tip="Banir residentes não identificados."/> - <check_box label="Residentes que não tiveram a idade de adulto confirmada" name="limit_age_verified" tool_tip="Banir residentes que não tiveram sua idade verificada. Veja support.secondlife.com para maiores informações."/> - <panel.string name="estate_override"> - Uma ou mais destas opções está definida no nível de propriedade. - </panel.string> + <check_box label="Dados de pagamento fornecidos [ESTATE_PAYMENT_LIMIT]" name="limit_payment" tool_tip="Banir residentes não identificados."/> + <check_box label="Idade confirmada: [ESTATE_AGE_LIMIT]" name="limit_age_verified" tool_tip="Banir residentes que não comprovaram a idade. Consulte o [SUPPORT_SITE] para saber mais."/> <check_box label="Permitir Acesso do Grupo: [GROUP]" name="GroupCheck" tool_tip="Definir grupo na aba Geral."/> <check_box label="Vender passes para:" name="PassCheck" tool_tip="Permite acesso temporário a este terreno"/> <combo_box name="pass_combo"> - <combo_box.item name="Anyone" label="Qualquer um" - /> - <combo_box.item name="Group" label="Grupo" - /> + <combo_box.item label="Qualquer um" name="Anyone"/> + <combo_box.item label="Grupo" name="Group"/> </combo_box> <spinner label="Preço em L$:" name="PriceSpin"/> <spinner label="Horas de Acesso:" name="HoursSpin"/> - <text label="Permitir Sempre" name="AllowedText"> - Residentes Permitidos - </text> - <name_list name="AccessList" tool_tip="([LISTED] listados, [MAX] máximo)"/> - <button label="Adicionar..." label_selected="Adicionar..." name="add_allowed"/> - <button label="Remover" label_selected="Remover" name="remove_allowed"/> - <text label="Banir" name="BanCheck"> - Residentes Banidos - </text> - <name_list name="BannedList" tool_tip="([LISTED] listados, [MAX] máximo)"/> - <button label="Adicionar..." label_selected="Adicionar..." name="add_banned"/> - <button label="Remover" label_selected="Remover" name="remove_banned"/> + <panel name="Allowed_layout_panel"> + <name_list name="AccessList" tool_tip="(Total [LISTED], máx de [MAX])"/> + </panel> </panel> </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_activeim.xml b/indra/newview/skins/default/xui/pt/floater_activeim.xml new file mode 100644 index 0000000000..892ccdf974 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_activeim.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_activeim" title="MI ativa"/> diff --git a/indra/newview/skins/default/xui/pt/floater_animation_preview.xml b/indra/newview/skins/default/xui/pt/floater_animation_preview.xml index f3297ea5ee..020cfbc811 100644 --- a/indra/newview/skins/default/xui/pt/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/pt/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"> + Não foi possível iniciar o movimento + </floater.string> + <floater.string name="anim_too_long"> + O arquivo de animação tem [LENGTH] segundos de duração. + +A duração máxima de animação permitida é de [MAX_LENGTH] segundos. + </floater.string> + <floater.string name="failed_file_read"> + Não foi possível ler o arquivo de animação. + +[STATUS] + </floater.string> + <floater.string name="E_ST_OK"> + OK + </floater.string> + <floater.string name="E_ST_EOF"> + Fim de arquivo prematuro + </floater.string> + <floater.string name="E_ST_NO_CONSTRAINT"> + Impossível ler definição constraint. + </floater.string> + <floater.string name="E_ST_NO_FILE"> + Impossível abrir arquivo BVH. + </floater.string> + <floater.string name="E_ST_NO_HIER"> + Invalid HIERARCHY header. + </floater.string> + <floater.string name="E_ST_NO_JOINT"> + RAIZ ou JUNTA não encontrados. + </floater.string> + <floater.string name="E_ST_NO_NAME"> + Impossível obter nome JOINT. + </floater.string> + <floater.string name="E_ST_NO_OFFSET"> + Impossível localizar OFFSET. + </floater.string> + <floater.string name="E_ST_NO_CHANNELS"> + Impossível localizar CHANNELS. + </floater.string> + <floater.string name="E_ST_NO_ROTATION"> + Impossível obter ordem de rotação. + </floater.string> + <floater.string name="E_ST_NO_AXIS"> + Impossível obter eixo de rotação. + </floater.string> + <floater.string name="E_ST_NO_MOTION"> + Impossível localizar MOTION. + </floater.string> + <floater.string name="E_ST_NO_FRAMES"> + Impossível determinar número de quadros. + </floater.string> + <floater.string name="E_ST_NO_FRAME_TIME"> + Impossível determinar tempo dos quadros. + </floater.string> + <floater.string name="E_ST_NO_POS"> + Impossível definir posicionamento. + </floater.string> + <floater.string name="E_ST_NO_ROT"> + Impossível definir valores da rotação. + </floater.string> + <floater.string name="E_ST_NO_XLT_FILE"> + Impossível abrir arquivo de tradução. + </floater.string> + <floater.string name="E_ST_NO_XLT_HEADER"> + Impossível ler cabeçalho de tradução. + </floater.string> + <floater.string name="E_ST_NO_XLT_NAME"> + Impossível ler nomes traduzidos. + </floater.string> + <floater.string name="E_ST_NO_XLT_IGNORE"> + Impossível obter valor traduzido a ignorar. + </floater.string> + <floater.string name="E_ST_NO_XLT_RELATIVE"> + Impossível obter valor traduzido relativo. + </floater.string> + <floater.string name="E_ST_NO_XLT_OUTNAME"> + Impossível obter valor traduzido. + </floater.string> + <floater.string name="E_ST_NO_XLT_MATRIX"> + Impossível ler matriz de tradução. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGECHILD"> + Impossível obter nome mergechild. + </floater.string> + <floater.string name="E_ST_NO_XLT_MERGEPARENT"> + Impossível obter nome mergeparent. + </floater.string> + <floater.string name="E_ST_NO_XLT_PRIORITY"> + Impossível obter valor prioritário. + </floater.string> + <floater.string name="E_ST_NO_XLT_LOOP"> + Impossível obter valor do loop. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEIN"> + Impossível obter valor easeIn. + </floater.string> + <floater.string name="E_ST_NO_XLT_EASEOUT"> + Impossível obter valor easeOut. + </floater.string> + <floater.string name="E_ST_NO_XLT_HAND"> + Impossível obter valor de morph da mão. + </floater.string> + <floater.string name="E_ST_NO_XLT_EMOTE"> + Impossível ler nome do emote. + </floater.string> <text name="name_label"> Nome: </text> <text name="description_label"> Descrição: </text> - <spinner label_width="72" width="110" label="Prioridade" name="priority" tool_tip="Controla quais animações podem se sobrepor a esta animação."/> - <check_box label="Loop" name="loop_check" tool_tip="Executa a animação repetidamente."/> - <spinner label_width="56" left="65" width="116" label="Dentro(%)" name="loop_in_point" tool_tip="Ajusta o ponto da animação onde a repetição começa."/> - <spinner label_width="40" left="185" label="Fora(%)" name="loop_out_point" tool_tip="Ajusta o ponto da animação onde a repetição termina."/> + <spinner label="Prioridade" label_width="72" name="priority" tool_tip="Controla quais animações podem ser interrompidas por esta animação" width="110"/> + <check_box label="Loop" name="loop_check" tool_tip="Executa esta animação sem parar"/> + <spinner label="Dentro(%)" label_width="56" left="65" name="loop_in_point" tool_tip="Define o ponto em que a animação em loop reinicia" width="116"/> + <spinner label="Fora(%)" label_width="40" left="185" name="loop_out_point" tool_tip="Define o ponto em que a animação em loop acaba"/> <text name="hand_label"> Pose de Mão </text> - <combo_box left_delta="100" width="184" name="hand_pose_combo" tool_tip="Controla o que as mãos fazem durante a animação"> - <combo_box.item name="Spread" label="Espreguiçar" /> - <combo_box.item name="Relaxed" label="Relaxado" /> - <combo_box.item name="PointBoth" label="Apontar Ambos" /> - <combo_box.item name="Fist" label="Punho" /> - <combo_box.item name="RelaxedLeft" label="Relaxado para Esquerda" /> - <combo_box.item name="PointLeft" label="Apontar à Esquerda" /> - <combo_box.item name="FistLeft" label="Punho Esquerdo" /> - <combo_box.item name="RelaxedRight" label="Relaxado para Direita" /> - <combo_box.item name="PointRight" label="Apontar à Direita" /> - <combo_box.item name="FistRight" label="Punho Direito" /> - <combo_box.item name="SaluteRight" label="Saudar à Direita" /> - <combo_box.item name="Typing" label="Digitando" /> - <combo_box.item name="PeaceRight" label="Pacífico à Direita" /> + <combo_box left_delta="100" name="hand_pose_combo" tool_tip="Controla os gestos das mãos durante a animação" width="184"> + <combo_box.item label="Abrir" name="Spread"/> + <combo_box.item label="Relaxado" name="Relaxed"/> + <combo_box.item label="Apontar ambas" name="PointBoth"/> + <combo_box.item label="Punho" name="Fist"/> + <combo_box.item label="E relaxada" name="RelaxedLeft"/> + <combo_box.item label="Apontar E" name="PointLeft"/> + <combo_box.item label="Punho E" name="FistLeft"/> + <combo_box.item label="D relaxada" name="RelaxedRight"/> + <combo_box.item label="Apontar D" name="PointRight"/> + <combo_box.item label="Punho D" name="FistRight"/> + <combo_box.item label="Saudação D" name="SaluteRight"/> + <combo_box.item label="Escrevendo" name="Typing"/> + <combo_box.item label="Paz D" name="PeaceRight"/> </combo_box> <text name="emote_label"> Expressão </text> - <combo_box left_delta="100" width="184" name="emote_combo" tool_tip="Controla o que a face faz durante a animação."> - <combo_box.item name="[None]" label="None]" /> - <combo_box.item name="Aaaaah" label="Aaaaah" /> - <combo_box.item name="Afraid" label="Temeroso" /> - <combo_box.item name="Angry" label="Raivoso" /> - <combo_box.item name="BigSmile" label="Sorrisão" /> - <combo_box.item name="Bored" label="Entediado" /> - <combo_box.item name="Cry" label="Chorar" /> - <combo_box.item name="Disdain" label="Desprezar" /> - <combo_box.item name="Embarrassed" label="Envergonhado" /> - <combo_box.item name="Frown" label="Franzir a testa" /> - <combo_box.item name="Kiss" label="Beijar" /> - <combo_box.item name="Laugh" label="Rir" /> - <combo_box.item name="Plllppt" label="Plllppt" /> - <combo_box.item name="Repulsed" label="Enojado" /> - <combo_box.item name="Sad" label="Triste" /> - <combo_box.item name="Shrug" label="Indiferença" /> - <combo_box.item name="Smile" label="Sorriso" /> - <combo_box.item name="Surprise" label="Surpreso" /> - <combo_box.item name="Wink" label="Piscar" /> - <combo_box.item name="Worry" label="Preocupado" /> + <combo_box left_delta="100" name="emote_combo" tool_tip="Controla as expressões faciais durante a animação" width="184"> + <combo_box.item label="(nenhum)" name="[None]"/> + <combo_box.item label="Aaaaah" name="Aaaaah"/> + <combo_box.item label="Com medo" name="Afraid"/> + <combo_box.item label="Bravo" name="Angry"/> + <combo_box.item label="Sorriso contagiante" name="BigSmile"/> + <combo_box.item label="À toa" name="Bored"/> + <combo_box.item label="Chorar" name="Cry"/> + <combo_box.item label="Desdenho" name="Disdain"/> + <combo_box.item label="Com vergonha" name="Embarrassed"/> + <combo_box.item label="Franzir testa" name="Frown"/> + <combo_box.item label="Beijo" name="Kiss"/> + <combo_box.item label="Rir" name="Laugh"/> + <combo_box.item label="Mostrar a língua" name="Plllppt"/> + <combo_box.item label="Asco" name="Repulsed"/> + <combo_box.item label="Triste" name="Sad"/> + <combo_box.item label="Encolher os ombros" name="Shrug"/> + <combo_box.item label="Sorriso" name="Smile"/> + <combo_box.item label="Surpresa" name="Surprise"/> + <combo_box.item label="Piscar" name="Wink"/> + <combo_box.item label="Preocupado" name="Worry"/> </combo_box> <text name="preview_label" width="250"> Prever enquanto </text> - <combo_box left_delta="100" width="130" name="preview_base_anim" tool_tip="Use isto para testar o comportamento de sua animação enquanto seu avatar executa ações comuns."> - <combo_box.item name="Standing" label="Parado" /> - <combo_box.item name="Walking" label="Andando" /> - <combo_box.item name="Sitting" label="Sentando" /> - <combo_box.item name="Flying" label="Voando" /> + <combo_box left_delta="100" name="preview_base_anim" tool_tip="Use isto para testar o comportamento de sua animação enquanto seu avatar executa ações comuns." width="130"> + <combo_box.item label="Em pé" name="Standing"/> + <combo_box.item label="Andando" name="Walking"/> + <combo_box.item label="Sentado" name="Sitting"/> + <combo_box.item label="Voando" name="Flying"/> </combo_box> - <spinner label_width="125" width="192" label="Facilitar a entrada (sec)" name="ease_in_time" tool_tip="Quantidade de tempo (em segundos) para que as animações se mesclem."/> - <spinner bottom_delta="-20" label_width="125" left="10" width="192" label="Facilitar a saída (sec)" name="ease_out_time" tool_tip="Quantidade de tempo (em segundos) para que a animações se mesclem."/> - <button bottom_delta="-32" name="play_btn" tool_tip="Executa/pausa sua animação."/> + <spinner label="Facilitar a entrada (sec)" label_width="125" name="ease_in_time" tool_tip="Tempo (em segundos) da transição inicial da animação" width="192"/> + <spinner bottom_delta="-20" label="Facilitar a saída (sec)" label_width="125" left="10" name="ease_out_time" tool_tip="Tempo (em segundos) da transição de saída da animação" width="192"/> + <button bottom_delta="-32" name="play_btn" tool_tip="Executar animação"/> + <button name="pause_btn" tool_tip="Pausar a animação"/> <button label="" name="stop_btn" tool_tip="Interrompe a execução da animação."/> <text name="bad_animation_text"> Incapaz de ler o arquivo de animação. @@ -72,19 +179,6 @@ Nós recomendamos exportar arquivos BVH do Poser 4. </text> - <button label="Cancelar" name="cancel_btn"/> <button label="Carregar (L$[AMOUNT])" name="ok_btn"/> - <string name="failed_to_initialize"> - Não foi possível iniciar o movimento - </string> - <string name="anim_too_long"> - O arquivo de animação tem [LENGTH] segundos de duração. - -A duração máxima de animação permitida é de [MAX_LENGTH] segundos. - </string> - <string name="failed_file_read"> - Não foi possível ler o arquivo de animação. - -[STATUS] - </string> + <button label="Cancelar" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_auction.xml b/indra/newview/skins/default/xui/pt/floater_auction.xml index 34cd17d781..074f7bf001 100644 --- a/indra/newview/skins/default/xui/pt/floater_auction.xml +++ b/indra/newview/skins/default/xui/pt/floater_auction.xml @@ -1,9 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_auction" title="INICIAR A VENDA DE TERRENOS DA LINDEN"> - <check_box label="Incluir marcador de seleção amarelo" name="fence_check"/> - <button label="Foto" label_selected="Foto" name="snapshot_btn"/> - <button label="OK" label_selected="OK" name="ok_btn"/> - <text name="already for sale"> +<floater name="floater_auction" title="INICIAR VENDA DE TERRENO LINDEN START"> + <floater.string name="already for sale"> Você não pode leiloar terrenos que já estão configurados para venda. - </text> + </floater.string> + <check_box initial_value="true" label="Incluir marcador de seleção amarelo" name="fence_check"/> + <button label="Foto" label_selected="Foto" name="snapshot_btn"/> + <button label="Vender a qualquer um" label_selected="Vender a qualquer um" name="sell_to_anyone_btn"/> + <button label="Clear Settings" label_selected="Limpar configurações" name="reset_parcel_btn"/> + <button label="Iniciar Leilão" label_selected="Iniciar Leilão" name="start_auction_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml b/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml index 186ef30e1b..a2e6f7945a 100644 --- a/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml @@ -1,42 +1,47 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="avatarpicker" title="ESCOLHA O RESIDENTE" min_width="285" width="285"> +<floater min_width="285" name="avatarpicker" title="SELECIONE O RESIDENTE" width="285"> + <floater.string name="not_found"> + '[TEXT]' não encontrado + </floater.string> + <floater.string name="no_one_near"> + Ninguém por perto + </floater.string> + <floater.string name="no_results"> + Nenhum resultado + </floater.string> + <floater.string name="searching"> + Buscando... + </floater.string> + <string label="Selecionar" label_selected="Selecionar" name="Select"> + Selecionar + </string> + <string name="Close"> + Fechar + </string> <tab_container name="ResidentChooserTabs" width="275"> <panel label="Buscar" name="SearchPanel"> <text name="InstructSearchResidentName"> - Digite parte do nome do Residente: + Digite parte do nome de alguém: </text> - <button label="Encontrar" label_selected="Encontrar" name="Find"/> + <button label="OK" label_selected="OK" name="Find"/> </panel> - <panel label="Cartões de Visita" name="CallingCardsPanel"> - <text name="InstructSelectCallingCard"> - Selecione um cartão de visita: + <panel label="Amigos" name="FriendsPanel"> + <text name="InstructSelectFriend"> + Selecione alguém: </text> </panel> <panel label="Próximo a Mim" name="NearMePanel"> <text name="InstructSelectResident"> - Selecione residente -próximo: + Selecione alguém por perto: </text> - <button font="SansSerifSmall" left_delta="1" width="115" label="Atualizar Lista" label_selected="Atualizar Lista" name="Refresh"/> - <slider label="Faixa" name="near_me_range" bottom_delta="-36"/> + <slider bottom_delta="-36" label="Faixa" name="near_me_range"/> <text name="meters"> Metros </text> - <scroll_list bottom_delta="-169" height="159" name="NearMe" /> + <button font="SansSerifSmall" label="Atualizar Lista" label_selected="Atualizar Lista" left_delta="1" name="Refresh" width="115"/> + <scroll_list bottom_delta="-169" height="159" name="NearMe"/> </panel> </tab_container> - <button label="Selecionar" label_selected="Selecionar" name="Select"/> - <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <string name="not_found"> - '[TEXT]' não encontrado - </string> - <string name="no_one_near"> - Ninguém proximo - </string> - <string name="no_results"> - Nenhum resultado - </string> - <string name="searching"> - Buscando... - </string> + <button label="OK" label_selected="OK" name="ok_btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml b/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml index 04a78efb12..0d52fec23b 100644 --- a/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml @@ -1,30 +1,32 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="avatar_texture_debug" title="TEXTURAS DO AVATAR"> - <text name="baked_label"> - Texturas sobrepostas - </text> +<floater name="avatar_texture_debug" title="TEXTURAS DE AVATAR"> + <floater.string name="InvalidAvatar"> + AVATAR INVÁLIDO + </floater.string> <text name="composite_label"> Texturas compostas </text> - <texture_picker label="Cabeça" name="baked_head"/> - <texture_picker label="Maquiagem" name="head_bodypaint"/> - <texture_picker label="Cabelo" name="hair"/> <button label="Tombar" label_selected="Tombar" name="Dump"/> - <texture_picker label="Olhos" name="baked_eyes"/> - <texture_picker label="Olho" name="eye_texture"/> - <texture_picker label="Parte de cima" name="baked_upper_body"/> - <texture_picker label="Tatuagem para partes de cima" name="upper_bodypaint"/> - <texture_picker label="Camiseta" name="undershirt"/> - <texture_picker label="Luvas" name="gloves"/> - <texture_picker label="Camisa" name="shirt"/> - <texture_picker label="Jaqueta" name="upper_jacket"/> - <texture_picker label="Parte de baixo" name="baked_lower_body"/> - <texture_picker label="Tatuagem para partes de baixo" name="lower_bodypaint"/> - <texture_picker label="Roupas de baixo" name="underpants"/> - <texture_picker label="Meias" name="socks"/> - <texture_picker label="Calçados" name="shoes"/> - <texture_picker label="Calças" name="pants"/> - <texture_picker label="Jaqueta" name="jacket"/> - <texture_picker label="Saia" name="baked_skirt"/> - <texture_picker label="Saia" name="skirt_texture"/> + <texture_picker label="Cabelo" name="hair_grain"/> + <texture_picker label="Cabelo alpha" name="hair_alpha"/> + <texture_picker label="Maquilagem" name="head_bodypaint"/> + <texture_picker label="Cabeça Alpha" name="head_alpha"/> + <texture_picker label="Tatuagem na cabeça" name="head_tattoo"/> + <texture_picker label="Olho" name="eyes_iris"/> + <texture_picker label="Olhos Alpha" name="eyes_alpha"/> + <texture_picker label="Pintura corporal, cintura para cima" name="upper_bodypaint"/> + <texture_picker label="Camiseta" name="upper_undershirt"/> + <texture_picker label="Luvas" name="upper_gloves"/> + <texture_picker label="Camisa" name="upper_shirt"/> + <texture_picker label="Jaqueta (cima)" name="upper_jacket"/> + <texture_picker label="Alpha de cima" name="upper_alpha"/> + <texture_picker label="Tatuagem parte de cima" name="upper_tattoo"/> + <texture_picker label="Pintura corporal, cintura para baixo" name="lower_bodypaint"/> + <texture_picker label="Roupa de baixo" name="lower_underpants"/> + <texture_picker label="Meias" name="lower_socks"/> + <texture_picker label="Sapatos" name="lower_shoes"/> + <texture_picker label="Calças" name="lower_pants"/> + <texture_picker label="Jaqueta" name="lower_jacket"/> + <texture_picker label="Alpha inferior" name="lower_alpha"/> + <texture_picker label="Tatuagem de baixo" name="lower_tattoo"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_beacons.xml b/indra/newview/skins/default/xui/pt/floater_beacons.xml index 82f055745f..b16ff6003e 100644 --- a/indra/newview/skins/default/xui/pt/floater_beacons.xml +++ b/indra/newview/skins/default/xui/pt/floater_beacons.xml @@ -1,15 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="beacons" title="BALIZAS"> <panel name="beacons_panel"> - <check_box label="Objetos programados com toque apenas" name="touch_only"/> - <check_box label="Objetos programados" name="scripted"/> - <check_box label="Objetos físicos" name="physical"/> - <check_box label="Fontes de Som" name="sounds"/> - <check_box label="Fontes de Partículas" name="particles"/> - <check_box label="Renderização de Highlights" name="highlights"/> - <check_box label="Renderização de Balizas" name="beacons"/> - <text name="beacon_width_label"> - Largura da Baliza + <text name="label_show"> + Mostrar: </text> + <check_box label="Balizas" name="beacons"/> + <check_box label="Realce" name="highlights"/> + <text name="beacon_width_label" tool_tip="Largura da baliza"> + Largura: + </text> + <text name="label_objects"> + Para estes objetos: + </text> + <check_box label="Físicos" name="physical"/> + <check_box label="Com script" name="scripted"/> + <check_box label="Só tocar" name="touch_only"/> + <check_box label="Fontes de som" name="sounds"/> + <check_box label="Fontes de partículas" name="particles"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_build_options.xml b/indra/newview/skins/default/xui/pt/floater_build_options.xml index bce78fad21..71a1483dde 100644 --- a/indra/newview/skins/default/xui/pt/floater_build_options.xml +++ b/indra/newview/skins/default/xui/pt/floater_build_options.xml @@ -1,8 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="build options floater" title="OPÇÕES DE GRADE"> - <spinner label="Uni. Grade (metros)" name="GridResolution" width="180" label_width="122"/> - <spinner label="Ext. da Grade (metros)" name="GridDrawSize" width="180" label_width="122"/> - <check_box label="Habilitar ajuste de sub-grade" name="GridSubUnit"/> - <check_box label="Mostrar as seções de cruzamento" name="GridCrossSection"/> + <spinner label="Unidade da grade (metros)" label_width="122" name="GridResolution" width="180"/> + <spinner label="Ext. da Grade (metros)" label_width="122" name="GridDrawSize" width="180"/> + <check_box label="Encaixar em sub-unidades" name="GridSubUnit"/> + <check_box label="Ver corte transversal" name="GridCrossSection"/> + <text name="grid_opacity_label" tool_tip="Opacidade da grade"> + Opacidade: + </text> <slider label="Opacidade da grade" name="GridOpacity" width="220"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml index 7443e19721..9f34111d8a 100644 --- a/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/pt/floater_bulk_perms.xml @@ -1,44 +1,54 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floaterbulkperms" title="MUDANÇA CONJUNTA DAS PERMISSÕES DE CONTEÚDO"> - <text name="applyto"> - Tipos de Conteúdo - </text> +<floater name="floaterbulkperms" title="EDITAR AUTORIZAÇÕES DE CONTEÚDO"> + <floater.string name="nothing_to_modify_text"> + A seleção não contém nenhum conteúdo editável. + </floater.string> + <floater.string name="status_text"> + Definindo permissões em [NAME] + </floater.string> + <floater.string name="start_text"> + Iniciando solicitação de mudança de permissão... + </floater.string> + <floater.string name="done_text"> + Solicitação de mudança de permissão concluída. + </floater.string> <check_box label="Animação" name="check_animation"/> + <icon name="icon_animation" tool_tip="Animação"/> <check_box label="Partes do Corpo" name="check_bodypart"/> + <icon name="icon_bodypart" tool_tip="Partes do corpo"/> <check_box label="Roupas" name="check_clothing"/> + <icon name="icon_clothing" tool_tip="Vestuário"/> <check_box label="Gestos" name="check_gesture"/> - <check_box label="Landmarks" name="check_landmark"/> + <icon name="icon_gesture" tool_tip="Gestos"/> <check_box label="Notecards" name="check_notecard"/> + <icon name="icon_notecard" tool_tip="Anotações"/> <check_box label="Objetos" name="check_object"/> + <icon name="icon_object" tool_tip="Objects"/> <check_box label="Scripts" name="check_script"/> + <icon name="icon_script" tool_tip="Scripts"/> <check_box label="Sons" name="check_sound"/> + <icon name="icon_sound" tool_tip="Sons"/> <check_box label="Texturas" name="check_texture"/> - <button label="Marcar Todas" label_selected="Todas" name="check_all"/> - <button label="Desmarcar Todas" label_selected="Nenhuma" name="check_none"/> + <icon name="icon_texture" tool_tip="Texturas"/> + <button label="√ Tudo" label_selected="Todas" name="check_all"/> + <button label="Limpar" label_selected="Nenhuma" name="check_none"/> <text name="newperms"> - Novas Permissões + Novas autorizações de conteúdo + </text> + <text name="GroupLabel"> + Grupo: </text> - <check_box label="Compartilhar com o grupo" name="share_with_group"/> - <check_box label="Permitir que qualquer um copie" name="everyone_copy"/> + <check_box label="Compartilhar" name="share_with_group"/> + <text name="AnyoneLabel"> + Todos: + </text> + <check_box label="Copiar" name="everyone_copy"/> <text name="NextOwnerLabel"> - O próximo dono pode: + Próximo proprietário: </text> <check_box label="Modificar" name="next_owner_modify"/> <check_box label="Copiar" name="next_owner_copy"/> - <check_box label="Revender/Dar" name="next_owner_transfer"/> - <button label="Ajuda" name="help"/> - <button label="Aplicar" name="apply"/> - <button label="Fechar" name="close"/> - <string name="nothing_to_modify_text"> - A seleção não contém nenhum conteúdo editável. - </string> - <string name="status_text"> - Definindo permissões em [NAME] - </string> - <string name="start_text"> - Iniciando solicitação de mudança de permissão... - </string> - <string name="done_text"> - Solicitação de mudança de permissão concluída. - </string> + <check_box initial_value="true" label="Transferir" name="next_owner_transfer" tool_tip="O próximo dono poderá revender ou dar este objeto"/> + <button label="OK" name="apply"/> + <button label="Cancelar" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_bumps.xml b/indra/newview/skins/default/xui/pt/floater_bumps.xml index 1833cd4335..5e656f4730 100644 --- a/indra/newview/skins/default/xui/pt/floater_bumps.xml +++ b/indra/newview/skins/default/xui/pt/floater_bumps.xml @@ -1,21 +1,24 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_bumps" title="COLISÕES, IMPULSOS E BATIDAS"> - <text name="none_detected"> + <floater.string name="none_detected"> Nada detectado - </text> - <text name="bump"> + </floater.string> + <floater.string name="bump"> [TIME] [FIRST] [LAST] conflitou com você - </text> - <text name="llpushobject"> + </floater.string> + <floater.string name="llpushobject"> [TIME] [FIRST] [LAST] empurrou você com um script - </text> - <text name="selected_object_collide"> + </floater.string> + <floater.string name="selected_object_collide"> [TIME] [FIRST] [LAST] o atingiu com um objeto - </text> - <text name="scripted_object_collide"> + </floater.string> + <floater.string name="scripted_object_collide"> [TIME] [FIRST] [LAST] o atingiu com um objeto programado - </text> - <text name="physical_object_collide"> + </floater.string> + <floater.string name="physical_object_collide"> [TIME] [FIRST] [LAST] o atingiu com um objeto físico - </text> + </floater.string> + <floater.string name="timeStr"> + [[hour,datetime,slt]:[min,datetime,slt]] + </floater.string> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_buy_contents.xml b/indra/newview/skins/default/xui/pt/floater_buy_contents.xml index 322a07575a..c64523ceb3 100644 --- a/indra/newview/skins/default/xui/pt/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/pt/floater_buy_contents.xml @@ -7,8 +7,8 @@ Comprar por L$[AMOUNT] de(a) [NAME]? </text> <button label="Cancelar" label_selected="Cancelar" name="cancel_btn" width="73"/> - <button label="Comprar" label_selected="Comprar" name="buy_btn" width="73" left_delta="-77"/> - <check_box label="Vestir roupa agora" name="wear_check" left_delta="-130"/> + <button label="Comprar" label_selected="Comprar" left_delta="-77" name="buy_btn" width="73"/> + <check_box label="Vestir roupa agora" left_delta="-130" name="wear_check"/> <string name="no_copy_text"> (sem copiar) </string> diff --git a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml index aac8438fdc..b3cce2d78f 100644 --- a/indra/newview/skins/default/xui/pt/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/pt/floater_buy_currency.xml @@ -1,68 +1,66 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="buy currency" title="COMPRAR DINHEIRO"> - <text name="info_buying"> - Comprando Dinheiro: - </text> - <text name="info_cannot_buy"> - Não pode comprar agora: - </text> +<floater name="buy currency" title="Comprar L$"> + <floater.string name="buy_currency"> + Compre L$ [LINDENS] por aprox. [LOCALAMOUNT] + </floater.string> <text name="info_need_more"> - Você precisa de mais dinheiro: + Você precisa de mais L$ </text> - <text name="error_message"> - Algo não está certo. - </text> - <button label="Ir para o website" name="error_web"/> <text name="contacting"> Contatando LindeX... </text> - <text name="buy_action_unknown"> - Comprar L$ no câmbio atual da LindeX - </text> - <text name="buy_action"> - [NAME] L$ [PRICE] - </text> - <text name="currency_action" width="60"> + <text name="info_buying"> Comprar L$ </text> - <line_editor name="currency_amt" left_delta="65" width="70"> - 1234 - </line_editor> - <text name="currency_est" left_delta="72"> - por aproxim. [LOCALAMOUNT] - </text> - <text name="getting_data"> - Obtendo dados... - </text> <text name="balance_label"> - Você tem atualmente + Tenho </text> <text name="balance_amount"> L$ [AMT] </text> + <text name="currency_action" width="60"> + Comprar + </text> + <text name="currency_label"> + L$ + </text> + <line_editor label="L$" left_delta="65" name="currency_amt" width="70"> + 1234 + </line_editor> <text name="buying_label"> - Você está comprando + O preço é </text> - <text name="buying_amount"> - L$ [AMT] + <text left_delta="72" name="currency_est"> + aprox. [LOCALAMOUNT] + </text> + <text name="getting_data"> + Calculando... + </text> + <text name="buy_action"> + [NAME] L$ [PRICE] </text> <text name="total_label"> - Seu saldo será + Saldo resultante: </text> <text name="total_amount"> L$ [AMT] </text> + <text name="currency_links"> + [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"> + Digite o valor novamente para ver o câmbio atual. + </text> <text name="purchase_warning_repurchase"> - Confirmando esta compra só compra a moeda. -Você precisará tentar novamente a operação. + Confirmar esta transação compra somente L$, não o objeto. </text> <text name="purchase_warning_notenough"> - Você não está comprando moeda suficiente. -Aumente a quantidade de compra. + O valor da transação não é suficiente. Aumente o volume da compra. </text> + <button label="Comprar já!" name="buy_btn"/> <button label="Fechar" name="cancel_btn"/> - <button label="Adquirir" name="buy_btn"/> - <string name="buy_currency"> - Comprar L$ [LINDENS] por aproxim. [LOCALAMOUNT] - </string> + <text name="info_cannot_buy"> + Transação incompleta + </text> + <button label="Prosseguir para a web" name="error_web"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_buy_land.xml b/indra/newview/skins/default/xui/pt/floater_buy_land.xml index 6e502ad6e5..f0e5808df3 100644 --- a/indra/newview/skins/default/xui/pt/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/pt/floater_buy_land.xml @@ -1,27 +1,27 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="buy land" title="COMPRAR TERRA"> +<floater name="buy land" title="COMPRAR TERRENO"> <text name="region_name_label"> Região: </text> - <text name="region_name_text" left="560"> + <text left="560" name="region_name_text"> (desconhecido) </text> <text name="region_type_label"> Tipo: </text> - <text name="region_type_text" left="560"> + <text left="560" name="region_type_text"> (desconhecido) </text> <text name="estate_name_label"> Propriedade: </text> - <text name="estate_name_text" left="560"> + <text left="560" name="estate_name_text"> (desconhecido) </text> - <text name="estate_owner_label" width="105" right="565"> + <text name="estate_owner_label" right="565" width="105"> Dono da propriedade: </text> - <text name="estate_owner_text" left="560" > + <text left="560" name="estate_owner_text"> (desconhecido) </text> <text name="resellable_changeable_label"> @@ -40,7 +40,7 @@ <text_editor name="covenant_editor"> Carregando... </text_editor> - <check_box label="Eu concordo com as definições do Corretor feitas acima." name="agree_covenant"/> + <check_box label="Eu concordo com as definições do Corretor feitas acima." name="agree_covenant"/> <text name="info_parcel_label"> Lote: </text> @@ -58,8 +58,7 @@ </text> <text name="info_price"> L$ 1500 -(L$ 1.1/m²) -vendido com os objetos +(L$ 1,1/m²) inclui objetos </text> <text name="info_action"> Comprar este lote irá: @@ -67,7 +66,7 @@ vendido com os objetos <text name="error_message"> Algo ainda não está correto. </text> - <button label="Ir para a página da web" name="error_web" width="150" /> + <button label="Ir para a página da web" name="error_web" width="150"/> <text name="account_action"> Evoluir sua conta para membro Premium </text> @@ -75,16 +74,16 @@ vendido com os objetos Somente membros Premium podem possuir terra. </text> <combo_box name="account_level"> - <combo_box.item name="US$9.95/month,billedmonthly" label="US$9.95/mês, debitado mensalmente" /> - <combo_box.item name="US$7.50/month,billedquarterly" label="US$7.50/mês, debitado trimestralmente" /> - <combo_box.item name="US$6.00/month,billedannually" label="US$6.00/mês, debitado anualmente" /> + <combo_box.item label="US$9.95/mês, pagamento mensal" name="US$9.95/month,billedmonthly"/> + <combo_box.item label="US$7,50/mês, pagamento trimestral" name="US$7.50/month,billedquarterly"/> + <combo_box.item label="US$6.00/mês, pagamento trimestral" name="US$6.00/month,billedannually"/> </combo_box> <text name="land_use_action"> Aumente sua taxa de locação de terra para US$ 40/mês. </text> <text name="land_use_reason"> - Você possui 1309 m² de terra. -Este lote tem 512 m² de terra. + Você tem 1309 m². +Este lote mede 512 m². </text> <text name="purchase_action"> Pagar ao Residente Joe L$4000 pela terra @@ -95,16 +94,16 @@ Este lote tem 512 m² de terra. <text name="currency_action" width="116"> Compre L$ adicionais </text> - <line_editor name="currency_amt" left="190" width="65"> + <line_editor left="190" name="currency_amt" width="65"> 1000 </line_editor> <text name="currency_est"> - por aproxim. US$ [AMOUNT2] + cerca de [LOCAL_AMOUNT] </text> <text name="currency_balance"> Você tem L$2,100. </text> - <check_box label="Remover [AMOUNT] m² de contribuição do grupo." name="remove_contribution"/> + <check_box label="Subtrair [AMOUNT] m² da minha contribuição." name="remove_contribution"/> <button label="Adquirir" name="buy_btn"/> <button label="Cancelar" name="cancel_btn"/> <string name="can_resell"> @@ -179,26 +178,26 @@ Este lote tem 512 m² de terra. Sua conta pode possuir uma terra. </string> <string name="land_holdings"> - Você possui [BUYER] m² de terra. + Você tem [BUYER] m². </string> <string name="pay_to_for_land"> Pagar L$ [AMOUNT] para [SELLER] por esta terra </string> <string name="buy_for_US"> - Comprar L$ [AMOUNT] por aprox. US$ [AMOUNT2], + Compre L$ [AMOUNT] por cerca de [LOCAL_AMOUNT], </string> <string name="parcel_meters"> - Este lote tem [AMOUNT] m². + Este lote tem [AMOUNT] m² </string> <string name="premium_land"> - Esta terra é premium e será taxada como [AMOUNT] m². + Esse é um terreno premium e custa o equivalente a [AMOUNT] m². </string> <string name="discounted_land"> - Esta terra tem desconto e será taxada como [AMOUNT] m². + Esse é um terreno com desconto, e custa o equivalente a [AMOUNT] m². </string> <string name="meters_supports_object"> [AMOUNT] m² -aceita [AMOUNT2] objetos +suporta [AMOUNT2] objetos </string> <string name="sold_with_objects"> vendido com objetos diff --git a/indra/newview/skins/default/xui/pt/floater_buy_object.xml b/indra/newview/skins/default/xui/pt/floater_buy_object.xml index e9968ed8f8..d71eb04cc4 100644 --- a/indra/newview/skins/default/xui/pt/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/pt/floater_buy_object.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="contents" title="COMPRAR CÓPIA DO OBJETO"> <text name="contents_text"> - e seus conteúdos: + Contém: </text> <text name="buy_text"> Comprar por L$[AMOUNT] de(a) [NAME]? diff --git a/indra/newview/skins/default/xui/pt/floater_camera.xml b/indra/newview/skins/default/xui/pt/floater_camera.xml index b61e261148..5114b19336 100644 --- a/indra/newview/skins/default/xui/pt/floater_camera.xml +++ b/indra/newview/skins/default/xui/pt/floater_camera.xml @@ -10,7 +10,22 @@ Mover a Câmera para Cima e para Baixo, para a Esquerda e para a Direita </floater.string> <panel name="controls"> - <joystick_track name="cam_track_stick" tool_tip="Mover a Câmera para Cima e para Baixo, para a Esquerda e para a Direita"/> - <joystick_zoom name="zoom" tool_tip="Aproximar a Câmera in direção ao Foco"/> + <joystick_track name="cam_track_stick" tool_tip="Move a câmera para cima e para baixo, direita e esquerda"/> + <panel name="zoom" tool_tip="Aproximar a Câmera in direção ao Foco"> + <slider_bar name="zoom_slider" tool_tip="Zoom de câmera para focalizar"/> + </panel> + <joystick_rotate name="cam_rotate_stick" tool_tip="Órbita em torno do foco da câmera"/> + <panel name="camera_presets"> + <button name="rear_view" tool_tip="Vista de trás"/> + <button name="group_view" tool_tip="Visualizar grupo"/> + <button name="front_view" tool_tip="Vista frontal"/> + <button name="mouselook_view" tool_tip="Visâo do mouse"/> + </panel> + </panel> + <panel name="buttons"> + <button label="" name="orbit_btn" tool_tip="Câmera orbital"/> + <button label="" name="pan_btn" tool_tip="Câmera Pan"/> + <button label="" name="avatarview_btn" tool_tip="ver como o avatar"/> + <button label="" name="freecamera_btn" tool_tip="Visualizar objeto"/> </panel> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_choose_group.xml b/indra/newview/skins/default/xui/pt/floater_choose_group.xml index ae395734e9..60f01a3733 100644 --- a/indra/newview/skins/default/xui/pt/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/pt/floater_choose_group.xml @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="groups" title="GRUPOS"> <text name="groupdesc"> Escolha um grupo: </text> - <button label="OK" label_selected="OK" name="OK" /> - <button label="Cancelar" label_selected="Cancelar" name="Cancel" /> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_color_picker.xml b/indra/newview/skins/default/xui/pt/floater_color_picker.xml index 6a4263f4ff..d60a815f30 100644 --- a/indra/newview/skins/default/xui/pt/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/pt/floater_color_picker.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="ColorPicker" title="SELETOR DE COR"> +<floater name="ColorPicker" title="DESTAQUE DE COR"> <text name="r_val_text"> Vermelho: </text> @@ -18,15 +18,14 @@ <text name="l_val_text"> Lum: </text> - <check_box label="Aplicar imediatamente" name="apply_immediate"/> - <button left_delta="150" name="color_pipette" /> - <button left_delta="55" label="Cancelar" label_selected="Cancelar" name="cancel_btn"/> - <button label="Selecionar" label_selected="Selecionar" name="select_btn"/> + <check_box label="inscrever-se agora" name="apply_immediate"/> + <button left_delta="150" name="color_pipette"/> + <button label="Cancelar" label_selected="Cancelar" left_delta="55" name="cancel_btn"/> + <button label="Ok" label_selected="Ok" name="select_btn"/> <text name="Current color:"> Cor atual: </text> <text name="(Drag below to save.)"> - (Arraste abaixo - para salvar) + (Arrastar abaixo para salvar) </text> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_customize.xml b/indra/newview/skins/default/xui/pt/floater_customize.xml index 55946933e7..447ca8c543 100644 --- a/indra/newview/skins/default/xui/pt/floater_customize.xml +++ b/indra/newview/skins/default/xui/pt/floater_customize.xml @@ -14,8 +14,8 @@ <button label="Tórax" label_selected="Tórax" name="Torso"/> <button label="Pernas" label_selected="Pernas" name="Legs"/> <radio_group name="sex radio"> - <radio_item name="radio" label="Feminino" /> - <radio_item name="radio2" label="Masculino" /> + <radio_item label="Feminino" name="radio"/> + <radio_item label="Masculino" name="radio2"/> </radio_group> <text name="title"> [DESC] @@ -47,10 +47,10 @@ Alternativamente, você pode criar uma nova de um esboço e usá-la. <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> </panel> <panel label="Pele" name="Skin"> - <button width="115" label="Cor de Pele" label_selected="Cor de Pele" name="Skin Color"/> - <button width="115" label="Detalhes Faciais" label_selected="Detalhes Faciais" name="Face Detail"/> - <button width="115" label="Maquiagem" label_selected="Maquiagem" name="Makeup"/> - <button width="115" label="Detalhes do Corpo" label_selected="Detalhes do Corpo" name="Body Detail"/> + <button label="Cor de Pele" label_selected="Cor de Pele" name="Skin Color" width="115"/> + <button label="Detalhes Faciais" label_selected="Detalhes Faciais" name="Face Detail" width="115"/> + <button label="Maquiagem" label_selected="Maquiagem" name="Makeup" width="115"/> + <button label="Detalhes do Corpo" label_selected="Detalhes do Corpo" name="Body Detail" width="115"/> <text name="title"> [DESC] </text> @@ -77,19 +77,19 @@ e usá-la. <text name="Item Action Label"> Pele: </text> - <texture_picker width="86" label="Tattoo: cabeça" name="Head Tattoos" tool_tip="Clique para escolher um desenho"/> - <texture_picker width="86" label="Tattoo: superior" name="Upper Tattoos" tool_tip="Clique para escolher um desenho"/> - <texture_picker width="86" label="Tattoo: inferior" name="Lower Tattoos" tool_tip="Clique para escolher um desenho"/> + <texture_picker label="Tattoo: cabeça" name="Head Tattoos" tool_tip="Clique para escolher um desenho" width="86"/> + <texture_picker label="Tattoo: superior" name="Upper Tattoos" tool_tip="Clique para escolher um desenho" width="86"/> + <texture_picker label="Tattoo: inferior" name="Lower Tattoos" tool_tip="Clique para escolher um desenho" width="86"/> <button label="Criar Nova Pele" label_selected="Criar Nova Pele" name="Create New"/> <button label="Salvar" label_selected="Salvar" name="Save"/> <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> </panel> <panel label="Cabelo" name="Hair"> - <button width="115" label="Cor" label_selected="Cor" name="Color"/> - <button width="115" label="Estilo" label_selected="Estilo" name="Style"/> - <button width="115" label="Sombrancelhas" label_selected="Sombrancelhas" name="Eyebrows"/> - <button width="115" label="Rosto" label_selected="Rosto" name="Facial"/> + <button label="Cor" label_selected="Cor" name="Color" width="115"/> + <button label="Estilo" label_selected="Estilo" name="Style" width="115"/> + <button label="Sombrancelhas" label_selected="Sombrancelhas" name="Eyebrows" width="115"/> + <button label="Rosto" label_selected="Rosto" name="Facial" width="115"/> <text name="title"> [DESC] </text> @@ -154,10 +154,10 @@ Alternativamente, você pode criar um novo modelo de um esboço e usá-lo. <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> </panel> - <panel label="Roupas" name="clothes_placeholder"/> + <placeholder label="Roupas" name="clothes_placeholder"/> <panel label="Camisa" name="Shirt"> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> - <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/> + <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/> <button label="Criar Nova Camisa" label_selected="Criar Nova Camisa" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> @@ -192,7 +192,7 @@ um esboço e usá-lo. </panel> <panel label="Calças" name="Pants"> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> - <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para abrir o conta-gotas."/> + <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/> <button label="Criar Novas Calças" label_selected="Criar Novas Calças" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> @@ -253,7 +253,7 @@ de um esboço e usá-lo. Sapatos: </text> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> - <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/> + <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/> <button label="Criar Novos Sapatos" label_selected="Criar Novos Sapatos" name="Create New" width="166"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> @@ -288,7 +288,7 @@ um esboço e usá-las. Meias: </text> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> - <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/> + <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/> <button label="Criar Novas Meias" label_selected="Criar Novas Meias" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> @@ -324,7 +324,7 @@ partir de um esboço e usá-lo. </text> <texture_picker label="Tecido Superior" name="Upper Fabric" tool_tip="Clique para escolher uma imagem." width="84"/> <texture_picker label="Tecido Inferior" name="Lower Fabric" tool_tip="Clique para escolher uma imagem." width="84"/> - <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/> + <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/> <button label="Criar Nova Jaqueta" label_selected="Criar Nova Jaqueta" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> @@ -359,7 +359,7 @@ partir de um esboço e usá-lo. Luvas: </text> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> - <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para abrir o conta-gotas"/> + <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/> <button label="Criar Novas Luvas" label_selected="Criar Novas Luvas" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> @@ -394,7 +394,7 @@ partir de um esboço e usá-lo. Camiseta: </text> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> - <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para abrir o conta-gotas"/> + <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/> <button label="Criar Nova Camiseta" label_selected="Criar Nova Camiseta" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> @@ -429,7 +429,7 @@ modelo a partir de um esboço e usá-lo. Roupas de Baixo: </text> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> - <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Clique para pegar o conta-gotas"/> + <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/> <button label="Criar Novas Roupas de Baixo" label_selected="Criar Novas Roupas de Baixo" name="Create New" width="180"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> @@ -464,16 +464,88 @@ partir de um esboço e usá-lo. Saia: </text> <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> - <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Click to open Color Picker"/> + <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/> <button label="Criar Nova Saia" label_selected="Criar Nova Saia" name="Create New"/> <button label="Remover" label_selected="Remover" name="Take Off"/> <button label="Salvar" label_selected="Salvar" name="Save"/> <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> <button label="Reverter" label_selected="Reverter" name="Revert"/> </panel> + <panel label="Alpha" name="Alpha"> + <text name="title"> + [DESC]: + </text> + <text name="title_no_modify"> + [DESC]: não pode ser modificado + </text> + <text name="title_loading"> + [DESC]: Carregando... + </text> + <text name="title_not_worn"> + [DESC]: não vestido + </text> + <text name="path"> + Localização: [PATH] + </text> + <text name="not worn instructions"> + Para por uma máscara alpha nova, arraste a máscara do inventário para o seu avatar. +Ou crie uma máscara nova e coloque-a. + </text> + <text name="no modify instructions"> + Você não está autorizado a modificar este acessório. + </text> + <text name="Item Action Label"> + Alpha: + </text> + <texture_picker label="Alpha inferior" name="Lower Alpha" tool_tip="Selecionar imagem"/> + <texture_picker label="Alpha de cima" name="Upper Alpha" tool_tip="Selecionar imagem"/> + <texture_picker label="Cabeça Alpha" name="Head Alpha" tool_tip="Selecionar imagem"/> + <texture_picker label="Olhos Alpha" name="Eye Alpha" tool_tip="Selecionar imagem"/> + <texture_picker label="Cabelo alpha" name="Hair Alpha" tool_tip="Selecionar imagem"/> + <button label="Criar Alpha novo" label_selected="Criar Alpha novo" name="Create New"/> + <button label="Tirar" label_selected="Tirar" name="Take Off"/> + <button label="Salvar" label_selected="Salvar" name="Save"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> + <button label="Reverter" label_selected="Reverter" name="Revert"/> + </panel> + <panel label="Tatuagem" name="Tattoo"> + <text name="title"> + [DESC]: + </text> + <text name="title_no_modify"> + [DESC]: não pode ser modificado + </text> + <text name="title_loading"> + [DESC]: Carregando... + </text> + <text name="title_not_worn"> + [DESC]: não vestido + </text> + <text name="path"> + Localização: [PATH] + </text> + <text name="not worn instructions"> + Para por uma tatuagem nova, arraste uma tatuagem do inventário para o seu avatar. +Ou crie uma tatuagem nova. + </text> + <text name="no modify instructions"> + Você não está autorizado a modificar este acessório. + </text> + <text name="Item Action Label"> + Tatuagem: + </text> + <texture_picker label="Tatuagem na cabeça" name="Head Tattoo" tool_tip="Selecionar imagem"/> + <texture_picker label="Tatuagem parte de cima" name="Upper Tattoo" tool_tip="Selecionar imagem"/> + <texture_picker label="Tatuagem de baixo" name="Lower Tattoo" tool_tip="Selecionar imagem"/> + <button label="Criar tatuagem" label_selected="Criar tatuagem" name="Create New"/> + <button label="Tirar" label_selected="Tirar" name="Take Off"/> + <button label="Salvar" label_selected="Salvar" name="Save"/> + <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> + <button label="Reverter" label_selected="Reverter" name="Revert"/> + </panel> </tab_container> <scroll_container left="249" name="panel_container"/> + <button label="Criar look" label_selected="Criar look" name="make_outfit_btn"/> <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> <button label="OK" label_selected="OK" name="Ok"/> - <button label="Criar Vestimenta..." label_selected="Criar Vestimenta..." name="Make Outfit" left="117" width="125" /> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_device_settings.xml b/indra/newview/skins/default/xui/pt/floater_device_settings.xml index fa4da834b8..48a4a6ef6f 100644 --- a/indra/newview/skins/default/xui/pt/floater_device_settings.xml +++ b/indra/newview/skins/default/xui/pt/floater_device_settings.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_device_settings" title="AJUSTES DO DISPOSITIVO DE CONVERSA POR VOZ"/> +<floater name="floater_device_settings" title="CONFIGURAÇÃO DE DISPOSITIVO DE VOZ"/> diff --git a/indra/newview/skins/default/xui/pt/floater_env_settings.xml b/indra/newview/skins/default/xui/pt/floater_env_settings.xml index 4a43801b48..3ca8d934c9 100644 --- a/indra/newview/skins/default/xui/pt/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/pt/floater_env_settings.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Environment Editor Floater" title="EDITOR DO AMBIENTE"> + <floater.string name="timeStr"> + [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc] + </floater.string> <text name="EnvTimeText"> Hora do Dia </text> @@ -13,13 +16,12 @@ Nuvens <text name="EnvWaterColorText"> Cor da água </text> - <color_swatch label="" name="EnvWaterColor" tool_tip="Clique para abrir o Editor de cores"/> + <color_swatch label="" name="EnvWaterColor" tool_tip="Selecionar a cor"/> <text name="EnvWaterFogText"> Névoa da água </text> <button bottom="-144" label="Usar hora da propriedade" name="EnvUseEstateTimeButton" width="155"/> - <button label="Céu Avançado" name="EnvAdvancedSkyButton" width="155" left="167"/> - <button label="Água Avançada" name="EnvAdvancedWaterButton" width="155" left="326"/> - <button label="?" name="EnvSettingsHelpButton"/> + <button label="Céu Avançado" left="167" name="EnvAdvancedSkyButton" width="155"/> + <button label="Água Avançada" left="326" name="EnvAdvancedWaterButton" width="155"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_gesture.xml b/indra/newview/skins/default/xui/pt/floater_gesture.xml index b0bc42685d..2e5b92aaf7 100644 --- a/indra/newview/skins/default/xui/pt/floater_gesture.xml +++ b/indra/newview/skins/default/xui/pt/floater_gesture.xml @@ -1,14 +1,25 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="gestures" title="GESTOS ATIVOS"> - <text name="help_label"> - Clicar duas vezes no gesto para executar animações e sons. - </text> +<floater label="Lugares" name="gestures" title="GESTOS"> + <floater.string name="loading"> + Carregando... + </floater.string> + <floater.string name="playing"> + (Em execução) + </floater.string> + <floater.string name="copy_name"> + Cópia de [COPY_NAME] + </floater.string> <scroll_list name="gesture_list"> - <column label="Acionar" name="trigger"/> - <column label="Chave" name="shortcut"/> - <column label="Nome" name="name"/> + <scroll_list.columns label="Nome" name="name"/> + <scroll_list.columns label="Bate-papo" name="trigger"/> + <scroll_list.columns label="Chave" name="shortcut"/> </scroll_list> - <button label="Novo" name="new_gesture_btn"/> + <panel label="bottom_panel" name="bottom_panel"> + <menu_button name="gear_btn" tool_tip="Mais opções"/> + <button name="new_gesture_btn" tool_tip="Criar novo gesto"/> + <button name="activate_btn" tool_tip="Ativar/Desativar gesto selecionado"/> + <button name="del_btn" tool_tip="Excluir este gesto"/> + </panel> <button label="Editar" name="edit_btn"/> <button label="Executar" name="play_btn"/> <button label="Parar" name="stop_btn"/> diff --git a/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml b/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml index 8921e6ea12..c666a941fe 100644 --- a/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/pt/floater_hardware_settings.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Hardware Settings Floater" title="AJUSTES DE HARDWARE"> +<floater name="Hardware Settings Floater" title="CONFIGURAÇÃO DO HARDWARE"> <text name="Filtering:"> Filtragem: </text> @@ -8,21 +8,21 @@ Suavização: </text> <combo_box label="Suavização" name="fsaa" width="94"> - <combo_box.item name="FSAADisabled" label="Desabilitado"/> - <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="Desativado" 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="Gama:" name="gamma"/> <text name="(brightness, lower is brighter)"> - (brilho, quanto menor, mais brilho, 0=usar padrão) + (0 = brilho padrão, menor = mais brilho) </text> <text name="Enable VBO:"> Habilitar VBO: </text> - <check_box label="Habilitar Objetos com Armazenamento de Vértices" name="vbo" tool_tip="Habilitando-o em máquinas novas, ele oferece um ganho de performance. Contudo, as máquinas antigas tem freqüentemente implementações pobres de VBOs e você pode ter travamentos quando esta opção é habilitada."/> - <slider label="Memória de Textura (MB):" name="GrapicsCardTextureMemory" tool_tip="Quantidade de memória a se reservar para texturas. Usa por padrão, a Memória da Placa de Vídeo. Sua redução pode aumentar a performance mas pode também deixar as texturas borradas."/> - <spinner label="Relação de Distância de Nevoeiro:" name="fog"/> + <check_box initial_value="true" label="Habilitar Objetos com Armazenamento de Vértices" name="vbo" tool_tip="Habilitando-o em máquinas novas, ele oferece um ganho de performance. Contudo, as máquinas antigas tem freqüentemente implementações pobres de VBOs e você pode ter travamentos quando esta opção é habilitada."/> + <slider label="Memória de texturas (MB):" name="GraphicsCardTextureMemory" tool_tip="Quanto da memória deve ser alocado para texturas. O padrão é definido pela memória da placa de vídeo. Reduzir este valor pode melhorar o desempenho, mas as texturas podem fica fora de foco."/> + <spinner label="Relação de Distância de Nevoeiro:" name="fog"/> <button label="OK" label_selected="OK" name="OK"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_help_browser.xml b/indra/newview/skins/default/xui/pt/floater_help_browser.xml new file mode 100644 index 0000000000..281bdbd183 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_help_browser.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_help_browser" title="NAVEGADOR DA AJUDA"> + <layout_stack name="stack1"> + <layout_panel name="external_controls"> + <button label="Abrir no navegador" name="open_browser"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_im.xml b/indra/newview/skins/default/xui/pt/floater_im.xml index 75c3409339..f6057c48f1 100644 --- a/indra/newview/skins/default/xui/pt/floater_im.xml +++ b/indra/newview/skins/default/xui/pt/floater_im.xml @@ -10,7 +10,7 @@ Clique no botão [BUTTON NAME] para aceitar/ conectar a este bate-papo em voz. </string> <string name="muted_message"> - Você emudeceu este residente. Enviar uma mensagem vai automaticamente reativá-lo novamente. + Você bloqueou este residente. Se quiser retirar o bloqueio, basta enviar uma mensagem. </string> <string name="generic_request_error"> Erro na requisição, por favor, tente novamente. diff --git a/indra/newview/skins/default/xui/pt/floater_im_container.xml b/indra/newview/skins/default/xui/pt/floater_im_container.xml new file mode 100644 index 0000000000..a21d4a6f1e --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_im_container.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<multi_floater name="floater_im_box" title="Mensagens instantâneas"/> diff --git a/indra/newview/skins/default/xui/pt/floater_im_session.xml b/indra/newview/skins/default/xui/pt/floater_im_session.xml new file mode 100644 index 0000000000..39dde3408b --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Painel de controle de MI" name="panel_im_control_panel"/> + <layout_panel> + <line_editor label="Para" name="chat_editor"/> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_image_preview.xml b/indra/newview/skins/default/xui/pt/floater_image_preview.xml index a0d8c02ef0..2ff1aa7915 100644 --- a/indra/newview/skins/default/xui/pt/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_image_preview.xml @@ -10,17 +10,17 @@ Prévia da imagem como: </text> - <combo_box label="Tipo de Roupas" name="clothing_type_combo" left="100" width="186"> - <combo_box.item name="Image" label="Imagem" /> - <combo_box.item name="Hair" label="Cabelo" /> - <combo_box.item name="FemaleHead" label="Cabeça Feminina" /> - <combo_box.item name="FemaleUpperBody" label="Parte Superior do Corpo Feminino" /> - <combo_box.item name="FemaleLowerBody" label="Parte Inferior do Corpo Feminino" /> - <combo_box.item name="MaleHead" label="Cabeça Masculina" /> - <combo_box.item name="MaleUpperBody" label="Parte Superior do Corpo Masculino" /> - <combo_box.item name="MaleLowerBody" label="Parte Inferiro do Corpo Masculino" /> - <combo_box.item name="Skirt" label="Saia" /> - <combo_box.item name="SculptedPrim" label="Primitiva Esculpida" /> + <combo_box label="Tipo de Roupas" left="100" name="clothing_type_combo" width="186"> + <combo_box.item label="Imagem" name="Image"/> + <combo_box.item label="Cabelo" name="Hair"/> + <combo_box.item label="Cabeça de mulher" name="FemaleHead"/> + <combo_box.item label="Cintura para cima, mulher" name="FemaleUpperBody"/> + <combo_box.item label="Cintura para baixo, mulher" name="FemaleLowerBody"/> + <combo_box.item label="Cabeça de homem" name="MaleHead"/> + <combo_box.item label="Cintura para cima, homem" name="MaleUpperBody"/> + <combo_box.item label="Cintura para baixo, homem" name="MaleLowerBody"/> + <combo_box.item label="Saia" name="Skirt"/> + <combo_box.item label="Prim esculpido" name="SculptedPrim"/> </combo_box> <text name="bad_image_text"> Incapaz de ler a imagem. diff --git a/indra/newview/skins/default/xui/pt/floater_incoming_call.xml b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml new file mode 100644 index 0000000000..79124966d1 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_incoming_call.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="incoming call" title="LIGAÇÃO DE DESCONHECIDO"> + <floater.string name="localchat"> + Bate-papo local + </floater.string> + <floater.string name="anonymous"> + anônimo + </floater.string> + <floater.string name="VoiceInviteP2P"> + está ligando. + </floater.string> + <floater.string name="VoiceInviteAdHoc"> + entrou numa ligação de voz via conferência. + </floater.string> + <text name="question"> + Sair do [CURRENT_CHAT] e entrar neste bate-papo? + </text> + <button label="Aceitar" label_selected="Aceitar" name="Accept"/> + <button label="Rejeitar" label_selected="Rejeitar" name="Reject"/> + <button label="Enviar MI" name="Start IM"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_inspect.xml b/indra/newview/skins/default/xui/pt/floater_inspect.xml index 97c2c6eaeb..6a00b1a628 100644 --- a/indra/newview/skins/default/xui/pt/floater_inspect.xml +++ b/indra/newview/skins/default/xui/pt/floater_inspect.xml @@ -1,11 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="inspect" title="INSPECIONAR OBJETO" min_width="450"> +<floater min_width="450" name="inspect" title="EXAMINAR OBJETOS"> + <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="Selecione um objeto nesta lista para destacá-lo in-world"> - <column label="Nome do Objeto" name="object_name"/> - <column label="Proprietário" name="owner_name"/> - <column label="Criador" name="creator_name"/> - <column label="Data de Criação" name="creation_date"/> + <scroll_list.columns label="Nome do Objeto" name="object_name"/> + <scroll_list.columns label="Proprietário" name="owner_name"/> + <scroll_list.columns label="Criador" name="creator_name"/> + <scroll_list.columns label="Data de Criação" name="creation_date"/> </scroll_list> - <button width="185" label="Ver Perfil do Proprietário..." label_selected="" name="button owner" tool_tip="Veja o perfil do proprietário do objeto destacado"/> - <button width="165" left="205" label="Ver perfil do criador..." label_selected="" name="button creator" tool_tip="Veja o perfil do criador original do objeto destacado"/> + <button label="Ver Perfil do Proprietário..." label_selected="" name="button owner" tool_tip="Veja o perfil do proprietário do objeto destacado" width="185"/> + <button label="Ver perfil do criador..." label_selected="" left="205" name="button creator" tool_tip="Veja o perfil do criador original do objeto destacado" width="165"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_inventory.xml b/indra/newview/skins/default/xui/pt/floater_inventory.xml index 1c2a3a9233..409261a136 100644 --- a/indra/newview/skins/default/xui/pt/floater_inventory.xml +++ b/indra/newview/skins/default/xui/pt/floater_inventory.xml @@ -1,47 +1,16 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Inventory" title="INVENTÁRIO"> - <search_editor label="Escreva aqui para busca" name="inventory search editor"/> - <tab_container name="inventory filter tabs"> - <inventory_panel label="Todos os Itens" name="All Items"/> - <inventory_panel label="Itens Recentes" name="Recent Items"/> - </tab_container> - <menu_bar name="Inventory Menu"> - <menu label="Arquivo" name="File"> - <menu_item_call label="Abrir" name="Open"/> - <menu_item_call label="Nova Janela" name="New Window"/> - <menu_item_call label="Mostrar Filtros" name="Show Filters"/> - <menu_item_call label="Redefinir Filtros" name="Reset Current"/> - <menu_item_call label="Fechar Todas as Pastas" name="Close All Folders"/> - <menu_item_call label="Limpar Lixeira" name="Empty Trash"/> - </menu> - <menu label="Criar" name="Create"> - <menu_item_call label="Nova Pasta" name="New Folder"/> - <menu_item_call label="Novo Script" name="New Script"/> - <menu_item_call label="Nova Nota" name="New Note"/> - <menu_item_call label="Novo Gesto" name="New Gesture"/> - <menu label="Nova Roupa" name="New Clothes"> - <menu_item_call label="Nova Camisa" name="New Shirt"/> - <menu_item_call label="Nova Calça" name="New Pants"/> - <menu_item_call label="Novos Sapatos" name="New Shoes"/> - <menu_item_call label="Novas Meias" name="New Socks"/> - <menu_item_call label="Nova Jaqueta" name="New Jacket"/> - <menu_item_call label="Nova Saia" name="New Skirt"/> - <menu_item_call label="Novas Luvas" name="New Gloves"/> - <menu_item_call label="Nova Anágua" name="New Undershirt"/> - <menu_item_call label="Novas Roupas de Baixo" name="New Underpants"/> - </menu> - <menu label="Parte do corpo" name="New Body Parts"> - <menu_item_call label="Nova Forma" name="New Shape"/> - <menu_item_call label="Nova Pele" name="New Skin"/> - <menu_item_call label="Novo Cabelo" name="New Hair"/> - <menu_item_call label="Novos Olhos" name="New Eyes"/> - </menu> - </menu> - <menu label="Ordenar" name="Sort"> - <menu_item_check label="Por Nome" name="By Name"/> - <menu_item_check label="Por Data" name="By Date"/> - <menu_item_check label="Pastas Sempre por Nome" name="Folders Always By Name"/> - <menu_item_check label="Pastas do sistema primeiro" name="System Folders To Top"/> - </menu> - </menu_bar> + <floater.string name="Title"> + Inventário + </floater.string> + <floater.string name="TitleFetching"> + Inventário ([ITEM_COUNT] Items) [FILTER] [FILTER] + </floater.string> + <floater.string name="TitleCompleted"> + Inventário ([ITEM_COUNT] Items) [FILTER] + </floater.string> + <floater.string name="Fetched"> + Obtido + </floater.string> + <panel label="Painel do inventário" name="Inventory Panel"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml index 2a6b02f9c2..8fe69c097d 100644 --- a/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml @@ -1,5 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="item properties" title="PROPRIEDADES DO ITEM DE INVENTÁRIO"> +<floater name="item properties" title="PROPRIEDADES DE ITEM NO INVENTÁRIO"> + <floater.string name="unknown"> + (desconhecido) + </floater.string> + <floater.string name="public"> + (público) + </floater.string> + <floater.string name="you_can"> + Você pode: + </floater.string> + <floater.string name="owner_can"> + Proprietário pode : + </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 @@ Qua Mai 24 12:50:46 2006 </text> <text name="OwnerLabel"> - Você pode: + Você: </text> - <check_box label="Modificar" name="CheckOwnerModify"/> + <check_box label="Editar" name="CheckOwnerModify"/> <check_box label="Copiar" name="CheckOwnerCopy"/> - <check_box label="Revender/Doar" name="CheckOwnerTransfer"/> - <text name="BaseMaskDebug"> - B: - </text> - <text name="OwnerMaskDebug"> - O: - </text> - <text name="GroupMaskDebug"> - G: + <check_box label="Revender" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Todos: </text> - <text name="EveryoneMaskDebug"> - E: + <check_box label="Cortar" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Grupo: </text> - <text name="NextMaskDebug"> - N: - </text> - <check_box label="Compartilhar com o grupo" name="CheckShareWithGroup"/> - <check_box label="Permitir qualquer um copiar" name="CheckEveryoneCopy"/> + <check_box label="Compartilhar" name="CheckShareWithGroup"/> <text name="NextOwnerLabel" width="230"> - Próximo dono pode: + Próximo proprietário: </text> - <check_box label="Modificar" name="CheckNextOwnerModify"/> + <check_box label="Editar" name="CheckNextOwnerModify"/> <check_box label="Copiar" name="CheckNextOwnerCopy"/> - <check_box label="Revender/Doar" name="CheckNextOwnerTransfer"/> - <text name="SaleLabel"> - Marcar Item: - </text> + <check_box label="Revender" name="CheckNextOwnerTransfer"/> <check_box label="À venda" name="CheckPurchase"/> - <radio_group name="RadioSaleType"> - <radio_item name="radio" label="Original" /> - <radio_item name="radio2" label="Cópia" /> - </radio_group> - <text name="TextPrice"> - Price: L$ + <combo_box name="combobox sale copy"> + <combo_box.item label="Cortar" name="Copy"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Preço:" name="Edit Cost"/> + <text name="CurrencySymbol"> + L$ </text> - <string name="unknown"> - (desconhecido) - </string> - <string name="public"> - (público) - </string> - <string name="you_can"> - Você pode: - </string> - <string name="owner_can"> - Proprietário pode : - </string> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_joystick.xml b/indra/newview/skins/default/xui/pt/floater_joystick.xml index 0793a0b161..ecc4fcc9e9 100644 --- a/indra/newview/skins/default/xui/pt/floater_joystick.xml +++ b/indra/newview/skins/default/xui/pt/floater_joystick.xml @@ -1,23 +1,23 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Joystick" title="CONFIGURAÇÃO DO JOYSTICK"> - <check_box name="enable_joystick" label="Habilitar Joystick:"/> + <check_box label="Habilitar Joystick:" name="enable_joystick"/> <text left="135" name="joystick_type" width="360"/> - <spinner label="Mapeamento: eixo X" name="JoystickAxis1" label_width="124" width="164"/> - <spinner label="Mapeamento: eixo Y" name="JoystickAxis2" label_width="124" width="164"/> - <spinner label="Mapeamento: eixo Z" name="JoystickAxis0" label_width="124" width="164"/> - <spinner label="Mapeamento: Elevação" name="JoystickAxis4" label_width="124" width="164"/> - <spinner label="Mapeamento: Guinada" name="JoystickAxis5" label_width="124" width="164"/> - <spinner label="Mapeamento: Rolagem" name="JoystickAxis3" label_width="124" width="164"/> - <spinner label="Mapeamento: Zoom" name="JoystickAxis6" label_width="124" width="164"/> - <check_box label="Zoom Direto" name="ZoomDirect" left="194"/> + <spinner label="Mapeamento: eixo X" label_width="124" name="JoystickAxis1" width="164"/> + <spinner label="Mapeamento: eixo Y" label_width="124" name="JoystickAxis2" width="164"/> + <spinner label="Mapeamento: eixo Z" label_width="124" name="JoystickAxis0" width="164"/> + <spinner label="Mapeamento: Elevação" label_width="124" name="JoystickAxis4" width="164"/> + <spinner label="Mapeamento: Guinada" label_width="124" name="JoystickAxis5" width="164"/> + <spinner label="Mapeamento: Rolagem" label_width="124" name="JoystickAxis3" width="164"/> + <spinner label="Mapeamento: Zoom" label_width="124" name="JoystickAxis6" width="164"/> + <check_box label="Zoom Direto" left="194" name="ZoomDirect"/> <check_box label="Cursor 3D" name="Cursor3D"/> <check_box label="Nível Automático" name="AutoLeveling"/> <text name="Control Modes:"> Modos de Controle: </text> - <check_box name="JoystickAvatarEnabled" label="Avatar"/> - <check_box name="JoystickBuildEnabled" left="192" label="Construir"/> - <check_box name="JoystickFlycamEnabled" label="Camera aérea"/> + <check_box label="Avatar" name="JoystickAvatarEnabled"/> + <check_box label="Construir" left="192" name="JoystickBuildEnabled"/> + <check_box label="Camera aérea" name="JoystickFlycamEnabled"/> <text name="XScale"> Escala X </text> @@ -27,13 +27,13 @@ <text name="ZScale"> Escala Z </text> - <text name="PitchScale" left="3" width="115"> + <text left="3" name="PitchScale" width="115"> Escala de Elevação </text> - <text name="YawScale" left="3" width="115"> + <text left="3" name="YawScale" width="115"> Escala da Guinada </text> - <text name="RollScale" left="3" width="115"> + <text left="3" name="RollScale" width="115"> Escala de Rolagem </text> <text name="XDeadZone"> @@ -45,13 +45,13 @@ <text name="ZDeadZone"> Zona Morta Z </text> - <text name="PitchDeadZone" left="3" width="115"> + <text left="3" name="PitchDeadZone" width="115"> Zona Morta: Elevação </text> - <text name="YawDeadZone" left="3" width="115"> + <text left="3" name="YawDeadZone" width="115"> Zona Morta: Guinada </text> - <text name="RollDeadZone" left="3" width="115"> + <text left="3" name="RollDeadZone" width="115"> Zona Morta: Rolagem </text> <text name="Feathering"> @@ -60,10 +60,10 @@ <text name="ZoomScale2"> Escala de Zoom </text> - <text name="ZoomDeadZone" width="110" left="4"> + <text left="4" name="ZoomDeadZone" width="110"> Zona Morta de Zoom </text> - <button label="Padrões do SpaceNavigator" name="SpaceNavigatorDefaults" font="SansSerifSmall"/> + <button font="SansSerifSmall" label="Padrões do SpaceNavigator" name="SpaceNavigatorDefaults"/> <button label="OK" label_selected="OK" name="ok_btn"/> <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/> <stat_view label="Monitor do Joystick" name="axis_view"> diff --git a/indra/newview/skins/default/xui/pt/floater_lagmeter.xml b/indra/newview/skins/default/xui/pt/floater_lagmeter.xml index 2728633438..9932318293 100644 --- a/indra/newview/skins/default/xui/pt/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/pt/floater_lagmeter.xml @@ -1,155 +1,154 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_lagmeter" title="MEDIDOR DE ATRASO"> - <button label="" label_selected="" name="client_lagmeter" tool_tip="Status de atraso no Cliente"/> - <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"> - Cliente: - </text> - <text name="client_text" font="SansSerifSmall"> - Normal - </text> - <button label="" label_selected="" name="network_lagmeter" tool_tip="Status de atraso na rede"/> - <text name="network"> - Rede: - </text> - <text name="network_text" font="SansSerifSmall"> - Normal - </text> - <button label="" label_selected="" name="server_lagmeter" tool_tip="Status de atraso no servidor"/> - <text name="server"> - Servidor: - </text> - <text name="server_text" font="SansSerifSmall"> - Normal - </text> - <button label="?" name="server_help"/> - <button label=">>" name="minimize"/> - <string name="max_title_msg"> +<floater name="floater_lagmeter" title="LAG - Índice"> + <floater.string name="max_title_msg"> Medidor de Atraso - </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"> Atraso - </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"> Cliente - </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"> Normal, janela por baixo - </string> - <string name="client_frame_time_critical_msg"> + </floater.string> + <floater.string name="client_frame_time_critical_msg"> Taxa de quadros do Cliente abaixo de [CLIENT_FRAME_RATE_CRITICAL] - </string> - <string name="client_frame_time_warning_msg"> + </floater.string> + <floater.string name="client_frame_time_warning_msg"> Taxa de quadros do Cliente entre [CLIENT_FRAME_RATE_CRITICAL] e [CLIENT_FRAME_RATE_WARNING] - </string> - <string name="client_frame_time_normal_msg"> + </floater.string> + <floater.string name="client_frame_time_normal_msg"> Normal - </string> - <string name="client_draw_distance_cause_msg"> + </floater.string> + <floater.string name="client_draw_distance_cause_msg"> Causa possível: Distância de desenho ajustada muito alta - </string> - <string name="client_texture_loading_cause_msg"> + </floater.string> + <floater.string name="client_texture_loading_cause_msg"> Causa possível: Carregamento de Imagens - </string> - <string name="client_texture_memory_cause_msg"> + </floater.string> + <floater.string name="client_texture_memory_cause_msg"> Causa possível: Muitas imagens na memória - </string> - <string name="client_complex_objects_cause_msg"> + </floater.string> + <floater.string name="client_complex_objects_cause_msg"> Causa possível: Muitos objetos complexos na cena - </string> - <string name="network_text_msg"> + </floater.string> + <floater.string name="network_text_msg"> Rede - </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"> Conexão está caindo para cerca de [NETWORK_PACKET_LOSS_CRITICAL]% de pacotes - </string> - <string name="network_packet_loss_warning_msg"> + </floater.string> + <floater.string name="network_packet_loss_warning_msg"> Conexão está caindo [NETWORK_PACKET_LOSS_WARNING]%-[NETWORK_PACKET_LOSS_CRITICAL]% de pacotes - </string> - <string name="network_performance_normal_msg"> + </floater.string> + <floater.string name="network_performance_normal_msg"> Normal - </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"> Tempo de conexão de ping é cerca de [NETWORK_PING_CRITICAL] ms - </string> - <string name="network_ping_warning_msg"> + </floater.string> + <floater.string name="network_ping_warning_msg"> Tempo de conexão de ping é [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"> Possível conexão ruim ou 'Largura de Banda' escolhida muito alta. - </string> - <string name="network_ping_cause_msg"> + </floater.string> + <floater.string name="network_ping_cause_msg"> Possível conexão ruim ou aplicativos compartilhando arquivos. - </string> - <string name="server_text_msg"> + </floater.string> + <floater.string name="server_text_msg"> Servidor - </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"> Taxa de quadros abaixo de [SERVER_FRAME_RATE_CRITICAL] - </string> - <string name="server_frame_time_warning_msg"> + </floater.string> + <floater.string name="server_frame_time_warning_msg"> Taxa de quadros entre [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"> Normal - </string> - <string name="server_physics_cause_msg"> + </floater.string> + <floater.string name="server_physics_cause_msg"> Causa possível: Muitos objetos físicos - </string> - <string name="server_scripts_cause_msg"> + </floater.string> + <floater.string name="server_scripts_cause_msg"> Causa possível: Muitos objetos com scripts - </string> - <string name="server_net_cause_msg"> + </floater.string> + <floater.string name="server_net_cause_msg"> Causa possível: Muito tráfego na rede - </string> - <string name="server_agent_cause_msg"> + </floater.string> + <floater.string name="server_agent_cause_msg"> Causa possível: Muitas pessoas se movendo na região - </string> - <string name="server_images_cause_msg"> + </floater.string> + <floater.string name="server_images_cause_msg"> Causa possível: Muitos cálculos de imagem - </string> - <string name="server_generic_cause_msg"> + </floater.string> + <floater.string name="server_generic_cause_msg"> Causa possível: Carga no simulador muito pesada - </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="Status de atraso no Cliente"/> + <text name="client"> + Cliente + </text> + <text font="SansSerifSmall" name="client_text"> + Normal + </text> + <text left="30" name="client_lag_cause" right="-10"/> + <button label="" label_selected="" name="network_lagmeter" tool_tip="Status de atraso na rede"/> + <text name="network"> + Rede + </text> + <text font="SansSerifSmall" name="network_text"> + Normal + </text> + <text left="30" name="network_lag_cause" right="-10"/> + <button label="" label_selected="" name="server_lagmeter" tool_tip="Status de atraso no servidor"/> + <text name="server"> + Servidor + </text> + <text font="SansSerifSmall" name="server_text"> + Normal + </text> + <text left="30" name="server_lag_cause" right="-32"/> + <button label=">>" name="minimize" tool_tip="Alternar o tamanho da janela"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_land_holdings.xml b/indra/newview/skins/default/xui/pt/floater_land_holdings.xml index d8588e2f05..2b0d6790f2 100644 --- a/indra/newview/skins/default/xui/pt/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/pt/floater_land_holdings.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="land holdings floater" title="MEU TERRENO"> +<floater name="land holdings floater" title="MEUS TERRENOS"> <scroll_list name="parcel list"> - <column label="Nome do Lote" name="name"/> + <column label="Lote" name="name"/> <column label="Região" name="location"/> <column label="Tipo" name="type"/> <column label="Área" name="area"/> </scroll_list> <button label="Teletransporte" label_selected="Teletransporte" name="Teleport" tool_tip="Teletransportar para o centro do terreno."/> - <button width="130" label="Mostrar no mapa" label_selected="Mostrar no mapa" name="Show on Map" tool_tip="Mostrar esse terreno no mapa do mundo."/> + <button label="Mapa" label_selected="Mapa" name="Show on Map" tool_tip="Mostrar terreno na mápa-mundi" width="130"/> <text name="contrib_label"> Contribuições para os seus grupos: </text> @@ -18,19 +18,19 @@ <text name="allowed_label" width="380"> Propriedades de terreno permitidas com o plano de pagamento atual: </text> - <text name="allowed_text" left_delta="390"> + <text left_delta="390" name="allowed_text"> [AREA] m² </text> <text name="current_label"> Propriedades de terrenos atuais: </text> - <text name="current_text" left_delta="390"> + <text left_delta="390" name="current_text"> [AREA] m² </text> <text name="available_label"> Disponível para compra de terras: </text> - <text name="available_text" left_delta="390"> + <text left_delta="390" name="available_text"> [AREA] m² </text> <string name="area_string"> diff --git a/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml index c0b726c476..1717088eae 100644 --- a/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml @@ -1,12 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="script ed float" title="SCRIPT: NOVO SCRIPT"> - <button label="Resetar" label_selected="Resetar" name="Reset"/> - <check_box label="Correndo" name="running"/> - <check_box label="Mono" name="mono" left="86"/> - <string name="not_allowed"> - Você não tem permissão para visualizar este script. - </string> - <string name="script_running"> + <floater.string name="not_allowed"> + Você não pode ver ou editar o script, uma vez que está definido como "não" copiar. Você precisa de permissões para ver ou editar um script dentro de um objeto. + </floater.string> + <floater.string name="script_running"> Executando - </string> + </floater.string> + <floater.string name="Title"> + Script: [NAME] + </floater.string> + <button label="Resetar" label_selected="Resetar" name="Reset"/> + <check_box initial_value="true" label="Correndo" name="running"/> + <check_box initial_value="true" label="Mono" left="86" name="mono"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_lsl_guide.xml b/indra/newview/skins/default/xui/pt/floater_lsl_guide.xml index 49a9e7fcf5..f9a5e08e97 100644 --- a/indra/newview/skins/default/xui/pt/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/pt/floater_lsl_guide.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="script ed float" title="LSL WIKI"> - <check_box label="Seguir o Cursor" name="lock_check" /> - <combo_box label="Bloquear" name="history_combo" left_delta="120" width="70"/> - <button label="Anterior" name="back_btn" left_delta="75"/> - <button label="Posterior" name="fwd_btn" /> + <check_box label="Seguir o Cursor" name="lock_check"/> + <combo_box label="Bloquear" left_delta="120" name="history_combo" width="70"/> + <button label="Anterior" left_delta="75" name="back_btn"/> + <button label="Posterior" name="fwd_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_media_settings.xml b/indra/newview/skins/default/xui/pt/floater_media_settings.xml new file mode 100644 index 0000000000..5af002c502 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_media_settings.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="media_settings" title="CONFIGURAÇÕES DE MÍDIA"> + <button label="OK" label_selected="OK" name="OK"/> + <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> + <button label="Aplicar" label_selected="Aplicar" name="Apply"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml b/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml index 4f93eb90e5..efb5da4ace 100644 --- a/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/pt/floater_mem_leaking.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="MemLeak" title="SIMULAÇÃO DE PERDA DE MEMÓRIA"> +<floater name="MemLeak" title="SIMULAR UM VAZAMENTO DE MEMÓRIA"> <spinner label="Velocidade da Perda (bytes por quadro):" name="leak_speed"/> <spinner label="Máximo de Memória Perdida (MB):" name="max_leak"/> <text name="total_leaked_label"> diff --git a/indra/newview/skins/default/xui/pt/floater_moveview.xml b/indra/newview/skins/default/xui/pt/floater_moveview.xml index 996a974254..7c4436537d 100644 --- a/indra/newview/skins/default/xui/pt/floater_moveview.xml +++ b/indra/newview/skins/default/xui/pt/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="Virar à esquerda"/> - <button label="" label_selected="" name="turn right btn" tool_tip="Virar à direita"/> - <button label="" label_selected="" name="move up btn" tool_tip="Pular ou Voar"/> - <button label="" label_selected="" name="move down btn" tool_tip="Agaixar ou pousar"/> - <joystick_slide name="slide left btn" tool_tip="Mover para a esquerda"/> - <joystick_slide name="slide right btn" tool_tip="Mover para a direita"/> - <joystick_turn name="forward btn" tool_tip="Mover para a frente."/> - <joystick_turn name="backward btn" tool_tip="Mover para trás"/> -</panel> + <string name="walk_forward_tooltip"> + Andar para frente (flecha para cima ou W) + </string> + <string name="walk_back_tooltip"> + Andar para trás (flecha para baixo ou S) + </string> + <string name="run_forward_tooltip"> + Correr para frente (flecha para cima ou W) + </string> + <string name="run_back_tooltip"> + Correr para trás (flecha para baixo ou S) + </string> + <string name="fly_forward_tooltip"> + Voar para frente (flecha para cima ou W) + </string> + <string name="fly_back_tooltip"> + Voar para trás (flecha para baixo ou S) + </string> + <panel name="panel_actions"> + <button label="" label_selected="" name="turn left btn" tool_tip="Virar à esquerda (flecha ESQ ou A)"/> + <button label="" label_selected="" name="turn right btn" tool_tip="Virar à direita (flecha DIR ou D)"/> + <button label="" label_selected="" name="move up btn" tool_tip="Voar para o alto (tecla E)"/> + <button label="" label_selected="" name="move down btn" tool_tip="Voar para baixo (tecla C)"/> + <joystick_turn name="forward btn" tool_tip="Andar para frente (flecha para cima ou W)"/> + <joystick_turn name="backward btn" tool_tip="Andar para trás (flecha para baixo ou S)"/> + </panel> + <panel name="panel_modes"> + <button label="" name="mode_walk_btn" tool_tip="Modo caminhar"/> + <button label="" name="mode_run_btn" tool_tip="Modo correr"/> + <button label="" name="mode_fly_btn" tool_tip="Modo voar"/> + <button label="Parar de voar" name="stop_fly_btn" tool_tip="Parar de voar"/> + </panel> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_mute_object.xml b/indra/newview/skins/default/xui/pt/floater_mute_object.xml index cc669951c3..97fbd35fcc 100644 --- a/indra/newview/skins/default/xui/pt/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/pt/floater_mute_object.xml @@ -1,12 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="mute by name" title="SILENCIAR OBJETO PELO NOME"> +<floater name="mute by name" title="BLOQUEAR OBJETO POR NOME"> <text name="message"> - Silenciar pelo nome afeta apenas conversa de objeto e MI, -não sons. Você deve digitar o nome exato do objeto. + Bloquear o objeto: </text> <line_editor name="object_name"> Nome do objeto </line_editor> + <text name="note"> + * Bloquear apenas texto do objeto, não sons + </text> <button label="OK" name="OK"/> <button label="Cancelar" name="Cancel"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml b/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml new file mode 100644 index 0000000000..5ba2dcd925 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="nearby_chat" title="Bate-papo local"/> diff --git a/indra/newview/skins/default/xui/pt/floater_outgoing_call.xml b/indra/newview/skins/default/xui/pt/floater_outgoing_call.xml new file mode 100644 index 0000000000..2078185315 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_outgoing_call.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="outgoing call" title="LIGANDO"> + <floater.string name="localchat"> + Bate-papo local + </floater.string> + <floater.string name="anonymous"> + anônimo + </floater.string> + <floater.string name="VoiceInviteP2P"> + está ligando. + </floater.string> + <floater.string name="VoiceInviteAdHoc"> + entrou numa ligação de voz via conferência. + </floater.string> + <text name="connecting"> + Conectando com [CALLEE_NAME] + </text> + <text name="calling"> + Ligando para [CALLEE_NAME] + </text> + <text name="noanswer"> + Não há resposta. Tente novamente mais tarde. + </text> + <text name="leaving"> + Saindo de [CURRENT_CHAT]. + </text> + <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_pay.xml b/indra/newview/skins/default/xui/pt/floater_pay.xml index 187df8fd18..81c861687f 100644 --- a/indra/newview/skins/default/xui/pt/floater_pay.xml +++ b/indra/newview/skins/default/xui/pt/floater_pay.xml @@ -1,21 +1,25 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <button label="L$1" label_selected="L$1" name="fastpay 1" left="112" /> - <button label="L$5" label_selected="L$5" name="fastpay 5" /> - <button label="L$10" label_selected="L$10" name="fastpay 10" left="112" /> - <button label="L$20" label_selected="L$20" name="fastpay 20" /> - <button label="Pagar" label_selected="Pagar" name="pay btn" /> - <button label="Cancelar" label_selected="Cancelar" name="cancel btn" /> - <text name="payee_label" width="110" left="5"> - Pagar residente: + <string name="payee_group"> + Pagar grupo + </string> + <string name="payee_resident"> + Pagar residente + </string> + <text left="5" name="payee_label" width="110"> + Pagar: </text> - <text name="payee_name" left="115"> + <icon name="icon_person" tool_tip="Pessoa"/> + <text left="115" name="payee_name"> [FIRST] [LAST] </text> - <text name="fastpay text" width="120" halign="left"> - Pagamento rápido: - </text> - <text name="amount text" left="4" > - Quantia: + <button label="L$1" label_selected="L$1" left="112" name="fastpay 1"/> + <button label="L$5" label_selected="L$5" name="fastpay 5"/> + <button label="L$10" label_selected="L$10" left="112" name="fastpay 10"/> + <button label="L$20" label_selected="L$20" name="fastpay 20"/> + <text left="4" name="amount text"> + Outro valor: </text> + <button label="Pagar" label_selected="Pagar" name="pay btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_pay_object.xml b/indra/newview/skins/default/xui/pt/floater_pay_object.xml index 3a3dd9e52e..161c7c6d4b 100644 --- a/indra/newview/skins/default/xui/pt/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/pt/floater_pay_object.xml @@ -1,31 +1,30 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Give Money" title=""> - <text name="payee_group" width="100" halign="left"> - Pagar Grupo: - </text> - <text name="payee_resident" width="120" halign="left" > - Pagar residente: - </text> - <text name="payee_name" left="105"> + <string halign="left" name="payee_group" width="100"> + Pagar grupo + </string> + <string halign="left" name="payee_resident" width="120"> + Pagar residente + </string> + <icon name="icon_person" tool_tip="Pessoa"/> + <text left="105" name="payee_name"> [FIRST] [LAST] </text> - <text name="object_name_label" left="5" width="95" halign="left"> + <text halign="left" left="5" name="object_name_label" width="95"> Via objeto: </text> - <text name="object_name_text" left="105" > + <icon name="icon_object" tool_tip="Objects"/> + <text left="105" name="object_name_text"> ... </text> - <text name="fastpay text" width="115" halign="left"> - Pagamento Rápido: - </text> - <text name="amount text" left="5" halign="left"> - Quantia: + <button label="L$1" label_selected="L$1" left="125" name="fastpay 1" width="70"/> + <button label="L$5" label_selected="L$5" left="200" name="fastpay 5" width="70"/> + <button label="L$10" label_selected="L$10" left="125" name="fastpay 10" width="70"/> + <button label="L$20" label_selected="L$20" left="200" name="fastpay 20" width="70"/> + <text halign="left" left="5" name="amount text"> + Outro valor: </text> - <button label="L$1" label_selected="L$1" name="fastpay 1" left="125" width="70"/> - <button label="L$5" label_selected="L$5" name="fastpay 5" left="200" width="70"/> - <button label="L$10" label_selected="L$10" name="fastpay 10" left="125" width="70"/> - <button label="L$20" label_selected="L$20" name="fastpay 20" left="200" width="70"/> - <button label="Pagar" label_selected="Pagar" name="pay btn" /> - <button label="Cancelar" label_selected="Cancelar" name="cancel btn" /> - <line_editor left="60" name="amount" width="50" /> + <line_editor left="60" name="amount" width="50"/> + <button label="Pagar" label_selected="Pagar" name="pay btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel btn"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_postcard.xml b/indra/newview/skins/default/xui/pt/floater_postcard.xml index cf63726df2..d3c5b6ec23 100644 --- a/indra/newview/skins/default/xui/pt/floater_postcard.xml +++ b/indra/newview/skins/default/xui/pt/floater_postcard.xml @@ -1,21 +1,21 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Postcard" title="FOTO POR EMAIL"> +<floater name="Postcard" title="ENVIAR FOTO VIA EMAIL"> <text name="to_label" width="135"> Email do Destinatário: </text> - <line_editor name="to_form" left="143" width="127" /> + <line_editor left="143" name="to_form" width="127"/> <text name="from_label"> Seu Email: </text> - <line_editor name="from_form" left="143" width="127" /> + <line_editor left="143" name="from_form" width="127"/> <text name="name_label"> Seu nome: </text> - <line_editor name="name_form" left="143" width="127" /> + <line_editor left="143" name="name_form" width="127"/> <text name="subject_label"> Assunto: </text> - <line_editor name="subject_form" left="143" width="127" /> + <line_editor left="143" name="subject_form" width="127"/> <line_editor label="Digite seu assunto aqui." name="subject_form"/> <text name="msg_label"> Mensagem: @@ -29,7 +29,7 @@ <button label="Cancelar" name="cancel_btn"/> <button label="Enviar" name="send_btn"/> <string name="default_subject"> - Cartão postal do [SECOND_LIFE] + Postal do [SECOND_LIFE]. </string> <string name="default_message"> Dá uma olhada nisto! diff --git a/indra/newview/skins/default/xui/pt/floater_preferences.xml b/indra/newview/skins/default/xui/pt/floater_preferences.xml index d2c3c79160..dc29bcf6b1 100644 --- a/indra/newview/skins/default/xui/pt/floater_preferences.xml +++ b/indra/newview/skins/default/xui/pt/floater_preferences.xml @@ -1,9 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Preferences" title="PREFERÊNCIAS" min_width="332" width="628"> +<floater min_width="332" name="Preferences" title="PREFERÊNCIAS" width="628"> <button label="OK" label_selected="OK" name="OK"/> <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <button label="Aplicar" label_selected="Aplicar" name="Apply"/> - <button label="Sobre" label_selected="Sobre" name="About..."/> - <button label="Ajuda" label_selected="Ajuda" name="Help"/> - <tab_container name="pref core" tab_width="128" width="628" /> + <tab_container name="pref core" tab_width="128" width="628"> + <panel label="Público geral" name="general"/> + <panel label="Vídeo" name="display"/> + <panel label="Privacidade" name="im"/> + <panel label="Som" name="audio"/> + <panel label="Bate-papo" name="chat"/> + <panel label="Notificações" name="msgs"/> + <panel label="Configurações" name="input"/> + <panel label="Avançado" name="advanced1"/> + </tab_container> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_animation.xml b/indra/newview/skins/default/xui/pt/floater_preview_animation.xml index 26ca8f87e0..c7d3affd73 100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/pt/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"> + Animação: [NOME] + </floater.string> <text name="desc txt"> Descrição: </text> - <button label="Executar in World" label_selected="Parar" left="20" name="Anim play btn" tool_tip="Executar esta animação para que outros vejam." width="131"/> - <button label="Executar localmente" label_selected="Parar" left="162" name="Anim audition btn" tool_tip="Executar esta animação somente para você ver." width="125"/> + <button label="Executar in World" label_selected="Parar" left="20" name="Anim play btn" tool_tip="Tocar essa animação de forma que outros possam ver" width="131"/> + <button label="Executar localmente" label_selected="Parar" left="162" name="Anim audition btn" tool_tip="Tocar essa animação de forma que apenas você possa ver" width="125"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_classified.xml b/indra/newview/skins/default/xui/pt/floater_preview_classified.xml index 0e8814b9f8..bb626430ed 100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_classified.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_classified.xml @@ -1,2 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="INFORMAÇÃO DO ANÚNCIO CLASSIFICADO"/> +<floater name="classified_preview" title="INFORMAÇÕES CLASSIFICADAS"> + <floater.string name="Title"> + Classificados: [NAME] + </floater.string> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_event.xml b/indra/newview/skins/default/xui/pt/floater_preview_event.xml index c03feacf0c..b422580f3b 100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_event.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_event.xml @@ -1,2 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="INFORMAÇÃO DO EVENTO"/> +<floater name="event_preview" title="DADOS DO EVENTO"> + <floater.string name="Title"> + Evento: [NAME] + </floater.string> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml index 87bf86c282..af4dceaa89 100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/pt/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"> + Selecionar animação: + </floater.string> + <floater.string name="step_sound"> + Selecionar animação: + </floater.string> + <floater.string name="step_chat"> + Diga por bate-papo: + </floater.string> + <floater.string name="step_wait"> + Espere: + </floater.string> + <floater.string name="stop_txt"> Parar - </string> - <string name="preview_txt"> + </floater.string> + <floater.string name="preview_txt"> Prévia - </string> - <string name="none_text"> + </floater.string> + <floater.string name="none_text"> -- Nenhum -- - </string> + </floater.string> + <floater.string name="Title"> + Gesto: [NAME] + </floater.string> <text name="desc_label"> Descrição: </text> @@ -22,37 +37,30 @@ <text name="key_label"> Tecla de Atalho: </text> - <combo_box label="Nenhum" name="modifier_combo" left="116" width="76"/> - <combo_box label="Nenhum" name="key_combo" width="76" left_delta="80"/> + <combo_box label="Nenhum" left="116" name="modifier_combo" width="76"/> + <combo_box label="Nenhum" left_delta="80" name="key_combo" width="76"/> <text name="library_label"> Biblioteca: </text> + <scroll_list name="library_list" width="84"/> + <button label="Incluir" left="118" name="add_btn" width="87"/> <text name="steps_label"> Passos: </text> - <scroll_list name="library_list" width="84"> - Animação -Som -Bate Papo -Esperar - </scroll_list> - <button label="Incluir" name="add_btn" left="118" width="87"/> - <button label="Mover Para Cima" name="up_btn" width="114" left_delta="-13"/> - <button label="Mover Para Baixo" name="down_btn" width="114"/> - <button label="Remover" name="delete_btn" width="84" left_delta="13"/> - <scroll_list left="226" name="step_list" width="205" /> - <text name="help_label"> - Todos os passos acontecem -simultaneamente, a menos que -você inclua passos de espera. - </text> + <scroll_list left="226" name="step_list" width="205"/> + <button label="P/ cima" left_delta="-13" name="up_btn" width="114"/> + <button label="P/ baixo" name="down_btn" width="114"/> + <button label="Remover" left_delta="13" name="delete_btn" width="84"/> <radio_group name="animation_trigger_type"> - <radio_item name="start" label="Iniciar" /> - <radio_item name="stop" label="Parar" /> + <radio_item label="OK" name="start"/> + <radio_item label="Pare" name="stop"/> </radio_group> - <check_box bottom_delta="34" label="até que as animações estejam concluídas" name="wait_anim_check"/> + <check_box bottom_delta="34" label="até que as animações estejam concluídas" name="wait_anim_check"/> <check_box bottom_delta="-30" label="tempo em segundos" name="wait_time_check"/> - <line_editor left_delta="130" name="wait_time_editor" /> + <line_editor left_delta="130" name="wait_time_editor"/> + <text name="help_label"> + Se não incluir etapas de espera, todas as etapas ocorrem ao mesmo tempo. + </text> <check_box label="Ativar" name="active_check" tool_tip="Gestos ativos podem ser gatilhados escrevendo suas frases de gatilho no chat ou através de suas teclas de atalho. Gestos normalmente ficam inativos quando existe um conflito nas teclas de atalho."/> <button label="Prévia" name="preview_btn"/> <button label="Salvar" name="save_btn"/> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture_info.xml new file mode 100644 index 0000000000..aabcff70d3 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture_info.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="ATALHO DE GESTO"/> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture_shortcut.xml new file mode 100644 index 0000000000..64bb7785f6 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture_shortcut.xml @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="ATALHO DE GESTO"> + <text name="trigger_label"> + Bate-papo: + </text> + <text name="key_label"> + Tecla: + </text> + <combo_box label="Nenhum" name="modifier_combo"/> + <combo_box label="Nenhum" name="key_combo"/> + <text name="replace_text" tool_tip="Substituir a(s) palavra(s) de comando. Por exemplo, substitua o comando 'olá' por 'oi' para trocar 'Olá, tudo bem' por 'Oi tudo bem'. O gesto também será executado."> + Trocar: + </text> + <line_editor name="replace_editor" tool_tip="Substituir a(s) palavra(s) de comando. Por exemplo, substitua o comando 'olá' por 'oi' para trocar 'Olá, tudo bem' por 'Oi tudo bem'. O gesto também será executado."/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture_steps.xml new file mode 100644 index 0000000000..aabcff70d3 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_preview_gesture_steps.xml @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Gesture" title="ATALHO DE GESTO"/> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml b/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml index 6f8944942a..6194bfffd6 100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/pt/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="Salvar" label_selected="Salvar" name="Save"/> + <floater.string name="no_object"> + Não foi possível encontrar o objeto que contém esta nota. + </floater.string> + <floater.string name="not_allowed"> + Você não está autorizado a ler esta nota. + </floater.string> + <floater.string name="Title"> + Anotação: [NAME] + </floater.string> + <floater.string label="Salvar" label_selected="Salvar" name="Save"> + Salvar + </floater.string> <text name="desc txt"> Descrição: </text> <text_editor name="Notecard Editor"> Carregando... </text_editor> - <string name="no_object"> - Não foi possível encontrar o objeto que contém esta nota. - </string> - <string name="not_allowed"> - Você não tem permissão de visualizar esta nota. - </string> + <button label="Salvar" label_selected="Salvar" name="Save"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_sound.xml b/indra/newview/skins/default/xui/pt/floater_preview_sound.xml index 3dd2f84f91..8691542d95 100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/pt/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"> + Som: [NAME] + </floater.string> <text name="desc txt"> Descrição: </text> - <button left_delta="-132" label="Executar in-World" label_selected="Executar in-World" name="Sound play btn" tool_tip="Executar este som para que todos possam ouvi-lo."/> - <button width="135" left="152" label="Executar Localmente" label_selected="Executar Localmente" name="Sound audition btn" tool_tip="Executar este som somente para você ouvir."/> + <button label="Executar in-World" label_selected="Executar in-World" left_delta="-132" name="Sound play btn" tool_tip="Tocar som para todos ouvirem"/> + <button label="Executar Localmente" label_selected="Executar Localmente" left="152" name="Sound audition btn" tool_tip="Tocar som de forma que apenas você possa ouvir" width="135"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_texture.xml b/indra/newview/skins/default/xui/pt/floater_preview_texture.xml index 72bc42fa19..066cf05163 100644 --- a/indra/newview/skins/default/xui/pt/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/pt/floater_preview_texture.xml @@ -1,9 +1,44 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview_texture"> + <floater.string name="Title"> + Textura: [NAME] + </floater.string> + <floater.string name="Copy"> + Copiar para inventário + </floater.string> <text name="desc txt"> Descrição: </text> <text name="dimensions"> - Dimensões: [WIDTH] x [HEIGHT] + [WIDTH]px x [HEIGHT]px </text> + <combo_box name="combo_aspect_ratio" tool_tip="Visualizar com proporção de aspecto fixa"> + <combo_item name="Unconstrained"> + Sem limites + </combo_item> + <combo_item name="1:1" tool_tip="Símbolo ou perfil RW do grupo"> + 1:1 + </combo_item> + <combo_item name="4:3" tool_tip="[SECOND_LIFE] perfil"> + 4:3 + </combo_item> + <combo_item name="10:7" tool_tip="Procurar anúncios classificados e marcos"> + 10:7 + </combo_item> + <combo_item name="3:2" tool_tip="Sobre terrenos"> + 3:2 + </combo_item> + <combo_item name="16:10"> + 16:10 + </combo_item> + <combo_item name="16:9" tool_tip="Perfis destacados"> + 16:9 + </combo_item> + <combo_item name="2:1"> + 2:1 + </combo_item> + </combo_box> + <button label="OK" name="keep"/> + <button label="Cancelar" name="discard"/> + <button label="Salvar como" name="save_tex_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_report_abuse.xml b/indra/newview/skins/default/xui/pt/floater_report_abuse.xml index 0d226a9502..7988056a3b 100644 --- a/indra/newview/skins/default/xui/pt/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/pt/floater_report_abuse.xml @@ -1,11 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="floater_report_abuse" title="REPORTAR ABUSO"> - <check_box label="Incluir cópia da tela" name="screen_check"/> + <floater.string name="Screenshot"> + Captura de tela + </floater.string> + <check_box label="Usar esta captura de tela" name="screen_check"/> <text name="reporter_title"> Denunciador: </text> <text name="reporter_field"> - Loremipsum Dolorsitamut + Loremipsum Dolorsitamut Longnamez </text> <text name="sim_title"> Região: @@ -20,11 +23,11 @@ {128.1, 128.1, 15.4} </text> <text name="select_object_label"> - Clique no botão e em seguida no objeto: + Clique no botão e em seguida no objeto abusivo: </text> <button label="" label_selected="" name="pick_btn" tool_tip="Object Picker - Identifica um objeto como o assunto deste report"/> <text name="object_name_label"> - Nome: + Objeto: </text> <text name="object_name"> Consetetur Sadipscing @@ -33,54 +36,53 @@ Proprietário: </text> <text name="owner_name"> - Hendrerit Vulputate + Hendrerit Vulputate Kamawashi Longname </text> <combo_box name="category_combo" tool_tip="Categoria -- Selecione a categoria que melhor descreve este report"> - <combo_box.item name="Select_category" label="Selecionar categoria"/> - <combo_box.item name="Age__Age_play" label="Idade > Idade no jogo"/> - <combo_box.item name="Age__Adult_resident_on_Teen_Second_Life" label="Idade > Residente adulto no Second Life Jovem"/> - <combo_box.item name="Age__Underage_resident_outside_of_Teen_Second_Life" label="Idade > Residente menor de idade fora do Second Life Teen"/> - <combo_box.item name="Assault__Combat_sandbox___unsafe_area" label="Assalto > Sandbox de combate / área não segura"/> - <combo_box.item name="Assault__Safe_area" label="Assalto > Área segura"/> - <combo_box.item name="Assault__Weapons_testing_sandbox" label="Assalto > Testando armas em sandbox"/> - <combo_box.item name="Commerce__Failure_to_deliver_product_or_service" label="Comércio > Falha em enviar produto ou serviço"/> - <combo_box.item name="Disclosure__Real_world_information" label="Revelar > Informação do mundo real"/> - <combo_box.item name="Disclosure__Remotely_monitoring chat" label="Revelar > Conversa monitorada remotamente"/> - <combo_box.item name="Disclosure__Second_Life_information_chat_IMs" label="Revelar > Informação do Second Life/conversa/MIs"/> - <combo_box.item name="Disturbing_the_peace__Unfair_use_of_region_resources" label="Distúrbio da paz > Uso injusto dos recursos da região"/> - <combo_box.item name="Disturbing_the_peace__Excessive_scripted_objects" label="Distúrbio da paz > Objetos com excesso de scripts"/> - <combo_box.item name="Disturbing_the_peace__Object_littering" label="Distúrbio da paz > Objeto despejando lixo"/> - <combo_box.item name="Disturbing_the_peace__Repetitive_spam" label="Distúrbio da paz > Spam repetitivo"/> - <combo_box.item name="Disturbing_the_peace__Unwanted_advert_spam" label="Distúrbio da paz > Spam de anúncio indesejado"/> - <combo_box.item name="Fraud__L$" label="Fraude > L$"/> - <combo_box.item name="Fraud__Land" label="Fraude > Terra"/> - <combo_box.item name="Fraud__Pyramid_scheme_or_chain_letter" label="Fraude > Esquema de pirâmide ou cartas encadeadas"/> - <combo_box.item name="Fraud__US$" label="Fraude > R$"/> - <combo_box.item name="Harassment__Advert_farms___visual_spam" label="Perturbação > Fazendas de Anúncios / spam visual"/> - <combo_box.item name="Harassment__Defaming_individuals_or_groups" label="Perturbação > Difamação de indivíduos ou grupos"/> - <combo_box.item name="Harassment__Impeding_movement" label="Perturbação > Impedindo movimentos"/> - <combo_box.item name="Harassment__Sexual_harassment" label="Perturbação > Perturbação sexual"/> - <combo_box.item name="Harassment__Solicting_inciting_others_to_violate_ToS" label="Perturbação > Solicitando/incitando outros a violarem o ToS"/> - <combo_box.item name="Harassment__Verbal_abuse" label="Perturbação > Abuso verbal"/> - <combo_box.item name="Indecency__Broadly_offensive_content_or_conduct" label="Indecência > Conteúdo ou conduta amplamente ofensivos"/> - <combo_box.item name="Indecency__Inappropriate_avatar_name" label="Indecência > Nome de avatar inapropriado"/> - <combo_box.item name="Indecency__Mature_content_in_PG_region" label="Indecência > Conduta ou conteúdo inapropriados numa região PG"/> - <combo_box.item name="Indecency__Inappropriate_content_in_Mature_region" label="Indecência > Conduta ou conteúdo inapropriados numa região Mature"/> - <combo_box.item name="Intellectual_property_infringement_Content_Removal" label="Violação de propriedade intelectual > Remoção de Conteúdo"/> - <combo_box.item name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit" label="Violação de Propriedade intelectual > Cópia Ilegal ou Aproveitar-se de Permissões"/> - <combo_box.item name="Intolerance" label="Intolerância"/> - <combo_box.item name="Land__Abuse_of_sandbox_resources" label="Terra > Abuso dos recursos da sandbox"/> - <combo_box.item name="Land__Encroachment__Objects_textures" label="Terra > Invasão > Objetos/texturas"/> - <combo_box.item name="Land__Encroachment__Particles" label="Terra > Invasão > Partículas"/> - <combo_box.item name="Land__Encroachment__Trees_plants" label="Terra > Violação > Árvores/plantas"/> - <combo_box.item name="Wagering_gambling" label="Apostas/jogos de azar"/> - <combo_box.item name="Other" label="Outro"/> + <combo_box.item label="Selecionar categoria" name="Select_category"/> + <combo_box.item label="Idade > Idade no jogo" name="Age__Age_play"/> + <combo_box.item label="Idade > Residente adulto no Second Life Jovem" name="Age__Adult_resident_on_Teen_Second_Life"/> + <combo_box.item label="Idade > Residente menor de idade fora do Second Life Teen" name="Age__Underage_resident_outside_of_Teen_Second_Life"/> + <combo_box.item label="Assalto > Sandbox de combate / área não segura" name="Assault__Combat_sandbox___unsafe_area"/> + <combo_box.item label="Assalto > Área segura" name="Assault__Safe_area"/> + <combo_box.item label="Assalto > Testando armas em sandbox" name="Assault__Weapons_testing_sandbox"/> + <combo_box.item label="Comércio > Falha em enviar produto ou serviço" name="Commerce__Failure_to_deliver_product_or_service"/> + <combo_box.item label="Revelar > Informação do mundo real" name="Disclosure__Real_world_information"/> + <combo_box.item label="Revelar > Conversa monitorada remotamente" name="Disclosure__Remotely_monitoring chat"/> + <combo_box.item label="Revelar > Informação do Second Life/conversa/MIs" name="Disclosure__Second_Life_information_chat_IMs"/> + <combo_box.item label="Distúrbio da paz > Uso injusto dos recursos da região" name="Disturbing_the_peace__Unfair_use_of_region_resources"/> + <combo_box.item label="Distúrbio da paz > Objetos com excesso de scripts" name="Disturbing_the_peace__Excessive_scripted_objects"/> + <combo_box.item label="Distúrbio da paz > Objeto despejando lixo" name="Disturbing_the_peace__Object_littering"/> + <combo_box.item label="Distúrbio da paz > Spam repetitivo" name="Disturbing_the_peace__Repetitive_spam"/> + <combo_box.item label="Distúrbio da paz > Spam de anúncio indesejado" name="Disturbing_the_peace__Unwanted_advert_spam"/> + <combo_box.item label="Fraude > L$" name="Fraud__L$"/> + <combo_box.item label="Fraude > Terra" name="Fraud__Land"/> + <combo_box.item label="Fraude > Esquema de pirâmide ou cartas encadeadas" name="Fraud__Pyramid_scheme_or_chain_letter"/> + <combo_box.item label="Fraude > R$" name="Fraud__US$"/> + <combo_box.item label="Perturbação > Fazendas de Anúncios / spam visual" name="Harassment__Advert_farms___visual_spam"/> + <combo_box.item label="Perturbação > Difamação de indivíduos ou grupos" name="Harassment__Defaming_individuals_or_groups"/> + <combo_box.item label="Perturbação > Impedindo movimentos" name="Harassment__Impeding_movement"/> + <combo_box.item label="Perturbação > Perturbação sexual" name="Harassment__Sexual_harassment"/> + <combo_box.item label="Perturbação > Solicitando/incitando outros a violarem o ToS" name="Harassment__Solicting_inciting_others_to_violate_ToS"/> + <combo_box.item label="Perturbação > Abuso verbal" name="Harassment__Verbal_abuse"/> + <combo_box.item label="Indecência > Conteúdo ou conduta amplamente ofensivos" name="Indecency__Broadly_offensive_content_or_conduct"/> + <combo_box.item label="Indecência > Nome de avatar inapropriado" name="Indecency__Inappropriate_avatar_name"/> + <combo_box.item label="Indecência > Conduta ou conteúdo inapropriados numa região PG" name="Indecency__Mature_content_in_PG_region"/> + <combo_box.item label="Indecência > Conduta ou conteúdo inapropriados numa região Mature" name="Indecency__Inappropriate_content_in_Mature_region"/> + <combo_box.item label="Violação de propriedade intelectual > Remoção de Conteúdo" name="Intellectual_property_infringement_Content_Removal"/> + <combo_box.item label="Violação de Propriedade intelectual > Cópia Ilegal ou Aproveitar-se de Permissões" name="Intellectual_property_infringement_CopyBot_or_Permissions_Exploit"/> + <combo_box.item label="Intolerância" name="Intolerance"/> + <combo_box.item label="Terra > Abuso dos recursos da sandbox" name="Land__Abuse_of_sandbox_resources"/> + <combo_box.item label="Terra > Invasão > Objetos/texturas" name="Land__Encroachment__Objects_textures"/> + <combo_box.item label="Terra > Invasão > Partículas" name="Land__Encroachment__Particles"/> + <combo_box.item label="Terra > Violação > Árvores/plantas" name="Land__Encroachment__Trees_plants"/> + <combo_box.item label="Apostas/jogos de azar" name="Wagering_gambling"/> + <combo_box.item label="Outro" name="Other"/> </combo_box> <text name="abuser_name_title"> Nome do Denunciado: </text> - <button label="Escolher Residente" label_selected="" name="select_abuser" tool_tip="Selecione o nome do Denunciado numa lista"/> - <check_box label="Não sei o nome do denunciado" name="omit_abuser_name" tool_tip="Marque aqui se você não consegue fornecer o nome do denunciado"/> + <button label="Selecionar" label_selected="" name="select_abuser" tool_tip="Selecione o nome do Denunciado numa lista"/> <text name="abuser_name_title2"> Local do Abuso: </text> @@ -91,13 +93,11 @@ Detalhes: </text> <text name="bug_aviso"> - Por favor, seja específico(a) sobre data, localidade, -natureza do abuso, texto relevante de conversa/MI e -selecione o objeto, se possível. + Seja o mais específico possível </text> <text name="incomplete_title"> - Nota: Relatos incompletos não serão investigados. + * Denúncias incompletas não serão investigadas </text> - <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/> <button label="Reportar Abuso" label_selected="Reportar Abuso" name="send_btn"/> + <button label="Cancelar" label_selected="Cancelar" name="cancel_btn"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/pt/floater_script_debug_panel.xml new file mode 100644 index 0000000000..e70a30fa24 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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/pt/floater_script_preview.xml b/indra/newview/skins/default/xui/pt/floater_script_preview.xml index 3c0570791c..5fafb0d1b8 100644 --- a/indra/newview/skins/default/xui/pt/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_script_preview.xml @@ -1,5 +1,8 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="preview lsl text" title="SCRIPT: ROTATION SCRIPT"> + <floater.string name="Title"> + Script: [NAME] + </floater.string> <text name="desc txt"> Descrição: </text> diff --git a/indra/newview/skins/default/xui/pt/floater_script_queue.xml b/indra/newview/skins/default/xui/pt/floater_script_queue.xml index 6e0e174c07..5fb6dd1c35 100644 --- a/indra/newview/skins/default/xui/pt/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/pt/floater_script_queue.xml @@ -1,4 +1,19 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="queue" title="RESETAR PROGRESSO"> + <floater.string name="Starting"> + Iniciando [START] de [COUNT] items. + </floater.string> + <floater.string name="Done"> + Pronto. + </floater.string> + <floater.string name="Resetting"> + Redefinindo + </floater.string> + <floater.string name="Running"> + Executando + </floater.string> + <floater.string name="NotRunning"> + Inerte + </floater.string> <button label="Fechar" label_selected="Fechar" name="close"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_script_search.xml b/indra/newview/skins/default/xui/pt/floater_script_search.xml index 3a62f1711f..8878590a4e 100644 --- a/indra/newview/skins/default/xui/pt/floater_script_search.xml +++ b/indra/newview/skins/default/xui/pt/floater_script_search.xml @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="script search" title="BUSCA DE SCRIPT" width="320"> - <check_box label="Não diferenciar Maiúsculas de Minúsculas" name="case_text" left="75"/> +<floater name="script search" title="BUSCAR SCRIPT" width="320"> + <check_box label="Não diferenciar Maiúsculas de Minúsculas" left="75" name="case_text"/> <button label="Buscar" label_selected="Buscar" name="search_btn" width="85"/> - <button label="Substituir" label_selected="Substituir" name="replace_btn" left="100" width="85"/> - <button label="Substituir Tudo" label_selected="Substituir Tudo" name="replace_all_btn" left="190" width="122"/> + <button label="Substituir" label_selected="Substituir" left="100" name="replace_btn" width="85"/> + <button label="Substituir Tudo" label_selected="Substituir Tudo" left="190" name="replace_all_btn" width="122"/> <text name="txt" width="65"> Buscar </text> <text name="txt2" width="65"> Substituir </text> - <line_editor left="75" name="search_text" width="240" /> - <line_editor left="75" name="replace_text" width="240" /> + <line_editor left="75" name="search_text" width="240"/> + <line_editor left="75" name="replace_text" width="240"/> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_search.xml b/indra/newview/skins/default/xui/pt/floater_search.xml new file mode 100644 index 0000000000..4bf7181180 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_search.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_search" title="BUSCAR"> + <floater.string name="loading_text"> + Carregando... + </floater.string> + <floater.string name="done_text"> + Pronto + </floater.string> + <layout_stack name="stack1"> + <layout_panel name="browser_layout"> + <text name="refresh_search"> + Buscar novamente com status God + </text> + </layout_panel> + </layout_stack> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_select_key.xml b/indra/newview/skins/default/xui/pt/floater_select_key.xml index e41a565d11..15772da434 100644 --- a/indra/newview/skins/default/xui/pt/floater_select_key.xml +++ b/indra/newview/skins/default/xui/pt/floater_select_key.xml @@ -2,6 +2,6 @@ <floater name="modal container" title=""> <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> <text name="Save item as:"> - Aperte uma tecla para selecionar + Pressione uma tecla para definir o botão disparador do Falar. </text> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_sell_land.xml b/indra/newview/skins/default/xui/pt/floater_sell_land.xml index f58c4098ef..e6d4dc7ed6 100644 --- a/indra/newview/skins/default/xui/pt/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/pt/floater_sell_land.xml @@ -1,65 +1,65 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="sell land" title="VENDER TERRENO"> - <scroll_container name="profile_scroll"> - <panel name="scroll_content_panel"> - <text name="info_parcel_label"> - Lote: - </text> - <text name="info_parcel"> - Nome do Lote - </text> - <text name="info_size_label"> - Tamanho: - </text> - <text name="info_size"> - [AREA] m² - </text> - <text name="info_action" bottom_delta="-67"> - Para vender este lote: - </text> - <icon bottom_delta="-66" name="step_price" /> - <text name="price_label"> - Defina um preço: - </text> - <text name="price_text"> - Escolha um preço apropriado para esta terra. - </text> - <text name="price_ld"> - L$ - </text> - <text name="price_per_m"> - (L$[PER_METER] por m²) - </text> - <text name="sell_to_label"> - Vender esta terra para: - </text> - <text name="sell_to_text"> - Escolha se venderá para qualquer um ou para um comprador em -particular. - </text> - <combo_box name="sell_to" bottom_delta="-32"> - <combo_box.item name="--selectone--" label="Selecione um --" /> - <combo_box.item name="Anyone" label="Qualquer um" /> - <combo_box.item name="Specificuser:" label="Usuário Específico:" /> - </combo_box> - <button label="Selecione..." name="sell_to_select_agent"/> - <text name="sell_objects_label"> - Vender os objetos com a terra? - </text> - <text name="sell_objects_text"> - Os objetos tranferíveis do proprietário do terreno que estão neste -lote irão mudar de propriedade. - </text> - <radio_group name="sell_objects" bottom_delta="-58"> - <radio_item name="no" label="Não, manter a propriedade sobre os objetos" /> - <radio_item name="yes" label="Sim, vender objetos com a terra" /> - </radio_group> - <button label="Mostrar Objetos" name="show_objects"/> - <text name="nag_message_label"> - LEMBRE-SE: Todas as vendas são finais. - </text> - <button label="Definir Terra para Venda" name="sell_btn"/> - <button label="Cancelar" name="cancel_btn"/> - </panel> - </scroll_container> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text name="info_parcel_label"> + Lote: + </text> + <text name="info_parcel"> + NOME DO LOTE + </text> + <text name="info_size_label"> + Tamanho: + </text> + <text name="info_size"> + [AREA] m² + </text> + <text bottom_delta="-67" name="info_action"> + Para vender este terreno: + </text> + <text name="price_label"> + 1. Preço: + </text> + <text name="price_text"> + Determine o preço adequado. + </text> + <text name="price_ld"> + L$ + </text> + <line_editor name="price"> + 0 + </line_editor> + <text name="price_per_m"> + (L$[PER_METER] por m²) + </text> + <text name="sell_to_label"> + 2. Vender para: + </text> + <text name="sell_to_text"> + Vender para qualquer pessoa ou determinado comprador. + </text> + <combo_box bottom_delta="-32" name="sell_to"> + <combo_box.item label="- Selecione -" name="--selectone--"/> + <combo_box.item label="Todos" name="Anyone"/> + <combo_box.item label="Pessoa específica:" name="Specificuser:"/> + </combo_box> + <button label="Selecionar" name="sell_to_select_agent"/> + <text name="sell_objects_label"> + 3. Vender o terreno com os objetos? + </text> + <text name="sell_objects_text"> + O objetos transferíveis do terreno passam a ser do novo dono. + </text> + <radio_group bottom_delta="-58" name="sell_objects"> + <radio_item label="Não, os objetos continuam sendo meus" name="no"/> + <radio_item label="Sim, vender o terreno com os objetos" name="yes"/> + </radio_group> + <button label="Mostrar objetos" name="show_objects"/> + <text name="nag_message_label"> + LEMBRE-SE: Qualquer transação de compra e venda é irreversível. + </text> + <button label="Colocar terreno à venda" name="sell_btn"/> + <button label="Cancelar" name="cancel_btn"/> + </panel> + </scroll_container> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_settings_debug.xml b/indra/newview/skins/default/xui/pt/floater_settings_debug.xml index 394a9771e0..dfffb89f30 100644 --- a/indra/newview/skins/default/xui/pt/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/pt/floater_settings_debug.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="settings_debug" title="CONFIGURAÇÕES DE DEBUG"> +<floater name="settings_debug" title="DEBUG SETTINGS"> <combo_box name="boolean_combo"> - <combo_box.item name="TRUE" label="VERDADEIRO" /> - <combo_box.item name="FALSE" label="FALSO" /> + <combo_box.item label="TRUE" name="TRUE"/> + <combo_box.item label="FALSE" name="FALSE"/> </combo_box> - <color_swatch label="Cor" name="color_swatch"/> + <color_swatch label="Cor" 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/pt/floater_snapshot.xml b/indra/newview/skins/default/xui/pt/floater_snapshot.xml index c3c4c73a89..b5d070c9d5 100644 --- a/indra/newview/skins/default/xui/pt/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/pt/floater_snapshot.xml @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Snapshot" title="PRÉVIA DA FOTO"> +<floater name="Snapshot" title="VER FOTO"> <text name="type_label"> Destino da foto </text> <radio_group label="Tipo de Foto" name="snapshot_type_radio"> - <radio_item name="postcard" label="Enviar por email" /> - <radio_item name="texture" label="Salvar no seu inventário (L$[AMOUNT])" /> - <radio_item name="local" label="Salvar no seu disco rígido" /> + <radio_item label="Enviar por email" name="postcard"/> + <radio_item label="Salvar no seu inventário (L$[AMOUNT])" name="texture"/> + <radio_item label="Salvar no seu disco rígido" name="local"/> </radio_group> <text name="file_size_label"> Tamanho do arquivo: [SIZE] KB @@ -15,12 +15,12 @@ <button label="Enviar" name="send_btn"/> <button label="Salvar (L$[AMOUNT])" name="upload_btn"/> <flyout_button label="Salvar" name="save_btn" tool_tip="Salvar imagem em um arquivo"> - <flyout_button.item name="save_item" label="Salvar"/> - <flyout_button.item name="saveas_item" label="Salvar como..."/> + <flyout_button.item label="Salvar" name="save_item"/> + <flyout_button.item label="Salvar como..." name="saveas_item"/> </flyout_button> <button label="Cancelar" name="discard_btn"/> - <button label="Mais >" name="more_btn" tool_tip="Opções Avançadas"/> - <button label="< Menos" name="less_btn" tool_tip="Opções Avançadas"/> + <button label="Mais >" name="more_btn" tool_tip="Opções avançadas"/> + <button label="< Menos" name="less_btn" tool_tip="Opções avançadas"/> <text name="type_label2"> Tamanho </text> @@ -28,50 +28,50 @@ Formato </text> <combo_box label="Resolução" name="postcard_size_combo"> - <combo_box.item name="CurrentWindow" label="Janela Atual" /> - <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="Customizado" /> + <combo_box.item label="Janela Atual" 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="Customizado" name="Custom"/> </combo_box> <combo_box label="Resolução" name="texture_size_combo"> - <combo_box.item name="CurrentWindow" label="Janela Atual" /> - <combo_box.item name="Small(128x128)" label="Pequeno (128x128)" /> - <combo_box.item name="Medium(256x256)" label="Médio (256x256)" /> - <combo_box.item name="Large(512x512)" label="Grande (512x512)" /> - <combo_box.item name="Custom" label="Customizado" /> + <combo_box.item label="Janela Atual" name="CurrentWindow"/> + <combo_box.item label="Pequeno (128x128)" name="Small(128x128)"/> + <combo_box.item label="Médio (256x256)" name="Medium(256x256)"/> + <combo_box.item label="Grande (512x512)" name="Large(512x512)"/> + <combo_box.item label="Customizado" name="Custom"/> </combo_box> <combo_box label="Resolução" name="local_size_combo"> - <combo_box.item name="CurrentWindow" label="Janela Atual" /> - <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="Customizado" /> + <combo_box.item label="Janela Atual" 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="Customizado" 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="Largura" name="snapshot_width" label_width="41" width="101"/> - <spinner label="Altura" name="snapshot_height" label_width="31" width="91" left="119"/> + <spinner label="Largura" label_width="41" name="snapshot_width" width="101"/> + <spinner label="Altura" label_width="31" left="119" name="snapshot_height" width="91"/> <check_box label="Restringir proporções" name="keep_aspect_check"/> <slider label="Qualidade da Imagem" name="image_quality_slider"/> <text name="layer_type_label"> Capturar: </text> <combo_box label="Camadas da Imagem" name="layer_types"> - <combo_box.item name="Colors" label="Cores" /> - <combo_box.item name="Depth" label="Formato" /> - <combo_box.item name="ObjectMattes" label="Decoração do Objeto" /> + <combo_box.item label="Cores" name="Colors"/> + <combo_box.item label="Formato" name="Depth"/> + <combo_box.item label="Decoração do Objeto" name="ObjectMattes"/> </combo_box> <check_box label="Mostrar interface na Foto" name="ui_check"/> <check_box bottom_delta="-17" label="Mostrar Objetos HUD na Foto" name="hud_check"/> <check_box bottom_delta="-17" label="Manter aberto após salvar" name="keep_open_check"/> - <check_box bottom_delta="-17" label="Quadro Congelado (prévia da tela inteira)" name="freeze_frame_check"/> + <check_box bottom_delta="-17" label="Quadro Congelado (prévia da tela inteira)" name="freeze_frame_check"/> <check_box bottom_delta="-29" label="Auto-atualizar" name="auto_snapshot_check"/> <string name="unknown"> desconhecido diff --git a/indra/newview/skins/default/xui/pt/floater_sound_preview.xml b/indra/newview/skins/default/xui/pt/floater_sound_preview.xml index d5d252c0dd..e62260c2e3 100644 --- a/indra/newview/skins/default/xui/pt/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_sound_preview.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Sound Preview" title="SOUND.WAV"> +<floater name="Sound Preview" title="SOM.WAV"> <text name="name_label"> Nome: </text> diff --git a/indra/newview/skins/default/xui/pt/floater_statistics.xml b/indra/newview/skins/default/xui/pt/floater_statistics.xml index c56c9fb2e0..ecbf638157 100644 --- a/indra/newview/skins/default/xui/pt/floater_statistics.xml +++ b/indra/newview/skins/default/xui/pt/floater_statistics.xml @@ -1,2 +1,2 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="stats floater" title="STATÍSTICA"/> +<floater name="stats floater" title="ESTATÍSTICAS"/> diff --git a/indra/newview/skins/default/xui/pt/floater_stats.xml b/indra/newview/skins/default/xui/pt/floater_stats.xml new file mode 100644 index 0000000000..11589b31b6 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_stats.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Statistics" title="ESTATÍSTICAS"> + <scroll_container name="statistics_scroll"> + <container_view name="statistics_view"> + <stat_view label="Básico" name="basic"> + <stat_bar label="FPS" name="fps"/> + <stat_bar label="Bandwidth" name="bandwidth"/> + <stat_bar label="Bandwidth" name="packet_loss"/> + <stat_bar label="Ping Sim" name="ping"/> + </stat_view> + <stat_view label="Avançado" name="advanced"> + <stat_view label="Render" name="render"> + <stat_bar label="KTris Drawn" name="ktrisframe"/> + <stat_bar label="KTris Drawn" name="ktrissec"/> + <stat_bar label="Total Objects" name="objs"/> + <stat_bar label="New Objects" name="newobjs"/> + </stat_view> + <stat_view label="Texture" name="texture"> + <stat_bar label="Count" name="numimagesstat"/> + <stat_bar label="Raw Count" name="numrawimagesstat"/> + <stat_bar label="GL Mem" name="gltexmemstat"/> + <stat_bar label="Formatted Mem" name="formattedmemstat"/> + <stat_bar label="Raw Mem" name="rawmemstat"/> + <stat_bar label="Bound Mem" name="glboundmemstat"/> + </stat_view> + <stat_view label="Rede" name="network"> + <stat_bar label="Packets In" name="packetsinstat"/> + <stat_bar label="Packets Out" name="packetsoutstat"/> + <stat_bar label="Objects" name="objectkbitstat"/> + <stat_bar label="Texture" name="texturekbitstat"/> + <stat_bar label="Asset" name="assetkbitstat"/> + <stat_bar label="Layers" name="layerskbitstat"/> + <stat_bar label="Actual In" name="actualinkbitstat"/> + <stat_bar label="Actual Out" name="actualoutkbitstat"/> + <stat_bar label="VFS Pending Ops" name="vfspendingoperations"/> + </stat_view> + </stat_view> + <stat_view label="Simulator" name="sim"> + <stat_bar label="Time Dilation" name="simtimedilation"/> + <stat_bar label="Sim FPS" name="simfps"/> + <stat_bar label="Physics FPS" name="simphysicsfps"/> + <stat_view label="Physics Details" name="physicsdetail"> + <stat_bar label="Pinned Objects" name="physicspinnedtasks"/> + <stat_bar label="Low LOD Objects" name="physicslodtasks"/> + <stat_bar label="Memory Allocated" name="physicsmemoryallocated"/> + <stat_bar label="Agent Updates/Sec" name="simagentups"/> + <stat_bar label="Main Agents" name="simmainagents"/> + <stat_bar label="Child Agents" name="simchildagents"/> + <stat_bar label="Objects" name="simobjects"/> + <stat_bar label="Active Objects" name="simactiveobjects"/> + <stat_bar label="Active Scripts" name="simactivescripts"/> + <stat_bar label="Script Events" name="simscripteps"/> + <stat_bar label="Packets In" name="siminpps"/> + <stat_bar label="Packets Out" name="simoutpps"/> + <stat_bar label="Pending Downloads" name="simpendingdownloads"/> + <stat_bar label="Pending Uploads" name="simpendinguploads"/> + <stat_bar label="Total Unacked Bytes" name="simtotalunackedbytes"/> + </stat_view> + <stat_view label="Time (ms)" name="simperf"> + <stat_bar label="Total Frame Time" name="simframemsec"/> + <stat_bar label="Net Time" name="simnetmsec"/> + <stat_bar label="Physics Time" name="simsimphysicsmsec"/> + <stat_bar label="Simulation Time" name="simsimothermsec"/> + <stat_bar label="Agent Time" name="simagentmsec"/> + <stat_bar label="Images Time" name="simimagesmsec"/> + <stat_bar label="Script Time" name="simscriptmsec"/> + </stat_view> + </stat_view> + </container_view> + </scroll_container> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_sys_well.xml b/indra/newview/skins/default/xui/pt/floater_sys_well.xml new file mode 100644 index 0000000000..b4760835b0 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_sys_well.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="sys_well_window" title="AVISOS"> + <string name="title_im_well_window"> + MIs + </string> + <string name="title_notification_well_window"> + AVISOS + </string> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_telehub.xml b/indra/newview/skins/default/xui/pt/floater_telehub.xml index 5c775ab45d..6b35d3f919 100644 --- a/indra/newview/skins/default/xui/pt/floater_telehub.xml +++ b/indra/newview/skins/default/xui/pt/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 conectado ao objeto [OBJECT] </text> @@ -17,16 +17,13 @@ <text name="spawn_points_text" width="265"> Pontos de Nascimento (posições, não objetos): </text> - <scroll_list name="spawn_points_list" width="265" /> - <button width="135" label="Adicionar Nascimento" name="add_spawn_point_btn"/> - <button width="130" label="Remover Nascimento" name="remove_spawn_point_btn" left="150"/> + <scroll_list name="spawn_points_list" width="265"/> + <button label="Adicionar Nascimento" name="add_spawn_point_btn" width="135"/> + <button label="Remover Nascimento" left="150" name="remove_spawn_point_btn" width="130"/> <text name="spawn_point_help"> - Selecione um objeto e clique Adicionar para -especificar a posição. -Em seguida, você pode mover ou apagar o objeto. -As posições são relativas ao centro do telehub. - -Selecione um item na lista para mostrar a posição -in-world. + Selecione o objeto e clique em 'Adicionar spawn' para especificar a posição. +O objeto pode ser excluído ou movido posteriormente. +As posições são definidas em relação ao centro do telehub. +Selecione um item da lista para realçá-lo inworld. </text> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml index b63c4a9bbf..69ea67699c 100644 --- a/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml @@ -1,22 +1,22 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="texture picker" title="PEGAR: TEXTURA"> +<floater name="texture picker" title="DESTAQUE: TEXTURA"> <string name="choose_picture"> Clique para escolher uma imagem </string> <text name="Multiple"> - Multiplo + Multiplas texturas </text> <text name="unknown"> - Dimensões: [DIMENSIONS] + Tamanho: [DIMENSÕES] </text> <button label="Padrão" label_selected="Padrão" name="Default"/> <button label="Nenhum" label_selected="Nenhum" name="None"/> <button label="Branco" label_selected="Branco" name="Blank"/> - <check_box label="Mostrar Pastas" name="show_folders_check"/> - <search_editor label="Clique aqui para buscar" name="inventory search editor"/> - <check_box label="Aplicar Imediatamente" name="apply_immediate_check"/> + <check_box label="Exibir pastas" name="show_folders_check"/> + <search_editor label="Filtrar texturas" name="inventory search editor"/> + <check_box label="Applicar agora" name="apply_immediate_check"/> <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <button label="Selecionar" label_selected="Selecionar" name="Select"/> + <button label="Ok" label_selected="Ok" name="Select"/> <string name="pick title"> Pegar: </string> diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml index b9ab018606..fb44c5c3bf 100644 --- a/indra/newview/skins/default/xui/pt/floater_tools.xml +++ b/indra/newview/skins/default/xui/pt/floater_tools.xml @@ -1,45 +1,81 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="toolbox floater" title="" short_title="CONSTRUIR" width="288"> +<floater name="toolbox floater" short_title="BUILD TOOLS" title="" width="288"> + <floater.string name="status_rotate"> + Arrastar as bandas coloridas para girar o objeto + </floater.string> + <floater.string name="status_scale"> + Clicar e arrastar para esticar o lado selecionado + </floater.string> + <floater.string name="status_move"> + Arrastar para mover, Shift-arrastar para copiar + </floater.string> + <floater.string name="status_modifyland"> + Clicar e reter para modificar a terra + </floater.string> + <floater.string name="status_camera"> + Clique e arraste para mexer a câmera + </floater.string> + <floater.string name="status_grab"> + Arraste para mexer, Ctrl para levantar, Ctrl+Shift para girar + </floater.string> + <floater.string name="status_place"> + Clique no mundo para construir + </floater.string> + <floater.string name="status_selectland"> + Clicar e arrastar para selecionar a terra + </floater.string> + <floater.string name="grid_screen_text"> + Tela + </floater.string> + <floater.string name="grid_local_text"> + Local + </floater.string> + <floater.string name="grid_world_text"> + Mundo + </floater.string> + <floater.string name="grid_reference_text"> + Referência + </floater.string> + <floater.string name="grid_attachment_text"> + Anexo + </floater.string> <button label="" label_selected="" name="button focus" tool_tip="Foco"/> <button label="" label_selected="" name="button move" tool_tip="Mover"/> <button label="" label_selected="" name="button edit" tool_tip="Editar"/> <button label="" label_selected="" name="button create" tool_tip="Criar"/> <button label="" label_selected="" name="button land" tool_tip="Terra"/> + <text name="text status" width="280"> + Arraste para mover, shift+Arrastar para Copiar + </text> <radio_group name="focus_radio_group"> <radio_item label="Zoom" name="radio zoom"/> <radio_item label="Órbita (Ctrl)" name="radio orbit"/> - <radio_item label="Pan (Ctrl-Shift)" name="radio pan"/> + <radio_item label="Pan (Ctrl+Shift)" name="radio pan"/> </radio_group> <radio_group name="move_radio_group"> <radio_item label="Mover" name="radio move"/> <radio_item label="Suspender (Ctrl)" name="radio lift"/> - <radio_item label="Girar (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="Posição" name="radio position"/> + <radio_item label="Movimentar" name="radio position"/> <radio_item label="Rotacionar (Ctrl)" name="radio rotate"/> - <radio_item label="Esticar (Ctrl-Shift)" name="radio stretch"/> - <radio_item label="Selecionar Textura" name="radio select face"/> + <radio_item label="Stretch (Ctrl+Shift)" name="radio stretch"/> + <radio_item label="Face selecionada" name="radio select face"/> </radio_group> - <check_box label="Editar partes unidas" name="checkbox edit linked parts"/> - <text name="text ruler mode"> - Régua: + <check_box label="Editar item linkado" name="checkbox edit linked parts"/> + <text name="RenderingCost" tool_tip="Mostra o cálculo do custo de renderização do objeto"> + þ: [COUNT] </text> - <combo_box name="combobox grid mode"> - <combo_box.item name="World" label="Mundo" - /> - <combo_box.item name="Local" label="Local" - /> - <combo_box.item name="Reference" label="Referência" - /> - </combo_box> <check_box label="Esticar ambos os lados" name="checkbox uniform"/> - <check_box label="Esticar Texturas" name="checkbox stretch textures"/> - <check_box label="Usar Grade" name="checkbox snap to grid"/> - <button label="Opções..." label_selected="Opções..." name="Options..."/> - <text name="text status" width="280"> - Arraste para mover, shift+Arrastar para Copiar - </text> + <check_box initial_value="true" label="Esticar Texturas" name="checkbox stretch textures"/> + <check_box initial_value="true" label="Mostrar na grade" name="checkbox snap to grid"/> + <combo_box name="combobox grid mode" tool_tip="Selecione o tipo de régua da grade onde o objeto será colocado"> + <combo_box.item label="Grid SL" name="World"/> + <combo_box.item label="Grid local" name="Local"/> + <combo_box.item label="Grid de referência" name="Reference"/> + </combo_box> + <button label="Opções..." label_selected="Opções..." name="Options..." tool_tip="Mais opções de grade"/> <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="Pirâmide"/> @@ -55,10 +91,10 @@ <button label="" label_selected="" name="ToolRing" tool_tip="Anel"/> <button label="" label_selected="" name="ToolTree" tool_tip="Árvore"/> <button label="" label_selected="" name="ToolGrass" tool_tip="Grama"/> - <check_box label="Manter selecionado" name="checkbox sticky"/> - <check_box label="Copiar selecionado" name="checkbox copy selection"/> - <check_box label="Centro" name="checkbox copy centers"/> - <check_box label="Rotacionar" name="checkbox copy rotates"/> + <check_box label="Ficar com ferramenta selecionado" name="checkbox sticky"/> + <check_box label="Copiar seleção" name="checkbox copy selection"/> + <check_box initial_value="true" label="Copiar parte central" name="checkbox copy centers"/> + <check_box label="Girar cópia" name="checkbox copy rotates"/> <radio_group name="land_radio_group"> <radio_item label="Selecionar Terra" name="radio select land"/> <radio_item label="Aplainar" name="radio flatten"/> @@ -68,7 +104,6 @@ <radio_item label="Endurecer" name="radio noise"/> <radio_item label="Reverter" name="radio revert"/> </radio_group> - <button label="Aplicar" label_selected="Aplicar" name="button apply to selection" tool_tip="Modificar Terra Selecionada"/> <text name="Bulldozer:"> Escavadeira: </text> @@ -78,14 +113,51 @@ <text name="Strength:"> Força </text> - <text name="obj_count" left="134"> - Objetos selecionados: [COUNT] + <button label="Aplicar" label_selected="Aplicar" name="button apply to selection" tool_tip="Modificar a terra selecionada"/> + <text left="134" name="obj_count"> + Objects: [COUNT] </text> - <text name="prim_count" left="134"> - primitivas: [COUNT] + <text left="134" name="prim_count"> + Prims: [COUNT] </text> <tab_container name="Object Info Tabs" tab_max_width="60" tab_min_width="30" width="288"> <panel label="Comum" name="General"> + <panel.string name="text deed continued"> + Doar + </panel.string> + <panel.string name="text deed"> + Doar + </panel.string> + <panel.string name="text modify info 1"> + Você pode modificar este objeto + </panel.string> + <panel.string name="text modify info 2"> + Você pode modificar estes objetos + </panel.string> + <panel.string name="text modify info 3"> + Você não pode modificar este objeto + </panel.string> + <panel.string name="text modify info 4"> + Você não pode modificar estes objetos + </panel.string> + <panel.string name="text modify warning"> + Selecione o objeto intereiro para configurar as autorizações + </panel.string> + <panel.string name="Cost Default"> + Preço: L$ + </panel.string> + <panel.string name="Cost Total"> + Total: L$ + </panel.string> + <panel.string name="Cost Per Unit"> + Preço unitário: L$ + </panel.string> + <panel.string name="Cost Mixed"> + Preço Misturado + </panel.string> + <panel.string name="Sale Mixed"> + Venda Misturada + </panel.string> <text name="Name:"> Nome: </text> @@ -98,135 +170,77 @@ <text name="Creator Name"> Thrax Linden </text> - <button label="Perfil..." label_selected="Perfil..." name="button creator profile"/> <text name="Owner:"> Proprietário: </text> <text name="Owner Name"> Thrax Linden </text> - <button label="Perfil..." label_selected="Perfil..." name="button owner profile"/> <text name="Group:"> Grupo: </text> - <text name="Group Name Proxy"> - The Lindens - </text> - <button label="Definir..." label_selected="Definir..." name="button set group"/> - <text name="Permissions:"> - Permissões: - </text> - - <check_box label="Compartilhar com o Grupo" name="checkbox share with group" tool_tip="Permite que todos os membros do grupo definido compartilhem e usem suas permissões para este objeto. Você precisa Doar ao Grupo para habilitar as restrições de função."/> - <string name="text deed continued"> - Doar... - </string> - <string name="text deed"> - Doar - </string> - <button label="Doar..." label_selected="Doar..." name="button deed" tool_tip="Objetos compartilhados do Grupo pode ser doados pelo gerente do grupo."/> - <check_box label="Permitir que qualquer um mova" name="checkbox allow everyone move"/> - <check_box label="Permitir que qualquer um copie" name="checkbox allow everyone copy"/> - <check_box label="Mostrar na busca" name="search_check" tool_tip="Permitir que as pessoas vejam este objeto nos resultados de busca"/> - <check_box label="À Venda" name="checkbox for sale"/> - <text name="Cost"> - Preço: L$ + <button label="Definir..." label_selected="Definir..." name="button set group" tool_tip="Selecione o grupo que terá acesso à autorização do objeto"/> + <name_box initial_value="Carregando..." name="Group Name Proxy"/> + <button label="Doar" label_selected="Doar" name="button deed" tool_tip="Ao doar este item, o próximo dono terá permissões de próximo dono. Objetos de grupos podem ser doados por um oficial do grupo."/> + <check_box label="Compartilhar" name="checkbox share with group" tool_tip="Permitir que todos os membros do grupo tenhas suas permissões de modificação para este objeto. Faça uma doação para ativar restrições de função."/> + <text name="label click action" width="220"> + Clique para: </text> + <combo_box name="clickaction" width="192"> + <combo_box.item label="Tocar (padrão)" name="Touch/grab(default)"/> + <combo_box.item label="Sentar no objeto" name="Sitonobject"/> + <combo_box.item label="Comprar objeto" name="Buyobject"/> + <combo_box.item label="Pagar Objeto" name="Payobject"/> + <combo_box.item label="Abrir" name="Open"/> + <combo_box.item label="Zoom" name="Zoom"/> + </combo_box> + <check_box label="À venda" name="checkbox for sale"/> <combo_box name="sale type"> <combo_box.item label="Cópia" name="Copy"/> <combo_box.item label="Conteúdo" name="Contents"/> <combo_box.item label="Original" name="Original"/> </combo_box> - - <text name="label click action" width="220"> - Quando clicado com o botão esquerdo: - </text> - <combo_box name="clickaction" width="192"> - <combo_box.item name="Touch/grab(default)" label="Tocar/Pegar (padrão)" - /> - <combo_box.item name="Sitonobject" label="Sentar no objeto" - /> - <combo_box.item name="Buyobject" label="Comprar objeto" - /> - <combo_box.item name="Payobject" label="Pagar Objeto" - /> - <combo_box.item name="Open" label="Abrir" - /> - <combo_box.item name="Play" label="Executar a mídia do lote" - /> - <combo_box.item name="Opemmedia" label="Abrir a mídia do lote" - /> - </combo_box> - <panel name="perms_build"> - <text name="perm_modify"> - Você pode modificar este objeto - </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:"> - Próximo Proprietário pode: - </text> - <check_box label="Modificar" name="checkbox next owner can modify"/> - <check_box label="Copiar" 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"> - Você pode modificar este objeto - </string> - <string name="text modify info 2"> - Você pode modificar estes objetos - </string> - <string name="text modify info 3"> - Você não pode modificar este objeto - </string> - <string name="text modify info 4"> - Você não pode modificar estes objetos - </string> - <string name="text modify warning"> - Você precisa selecionar o objeto todo para ajustar as permissões - </string> - <string name="Cost Default"> - Preço: L$ - </string> - <string name="Cost Total"> - Preço Total: L$ - </string> - <string name="Cost Per Unit"> - Preço Por: L$ - </string> - <string name="Cost Mixed"> - Preço Misturado - </string> - <string name="Sale Mixed"> - Venda Misturada - </string> + <spinner label="Preço: L$" name="Edit Cost"/> + <check_box label="Mostrar na busca" name="search_check" tool_tip="Permitir que as pessoas vejam este objeto nos resultados de busca"/> + <panel name="perms_build"> + <text name="perm_modify"> + Você pode modificar este objeto + </text> + <text name="Anyone can:"> + Todos: + </text> + <check_box label="Movimentar" name="checkbox allow everyone move"/> + <check_box label="Copiar" name="checkbox allow everyone copy"/> + <text name="Next owner can:"> + Próximo proprietário: + </text> + <check_box label="Modificar" name="checkbox next owner can modify"/> + <check_box label="Copiar" left_delta="80" name="checkbox next owner can copy"/> + <check_box label="Transferir" left_delta="67" name="checkbox next owner can transfer" tool_tip="O próximo dono poderá revender ou dar este objeto"/> + <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="Objeto" name="Object"> - <text name="select_single" width="272"> - Selecione apenas uma primitiva para editar os parâmetros. - </text> - <text name="edit_object"> - Editar os parâmetros do Objeto: - </text> <check_box label="Travado" name="checkbox locked" tool_tip="Previne que o objeto seja movido ou apagado. Muito útil para evitar edições não intencionais durante a construção."/> <check_box label="Física" name="Physical Checkbox Ctrl" tool_tip="Permite que os objetos sejam empurrados e sofram efeito da gravidade"/> - <check_box label="Temporário" name="Temporary Checkbox Ctrl" tool_tip="Faz com que o objeto seja apagado 1 minuto após ser criado."/> + <check_box label="Temporário" name="Temporary Checkbox Ctrl" tool_tip="O objeto será excluído um minuto depois de ser criado"/> <check_box label="Fantasma" name="Phantom Checkbox Ctrl" tool_tip="Faz com que o objeto não colida com outros objetos ou avatares"/> <text name="label position"> Posição (metros) @@ -246,48 +260,27 @@ <spinner label="X" name="Rot X"/> <spinner label="Y" name="Rot Y"/> <spinner label="Z" name="Rot Z"/> - <text name="label material"> - Material - </text> - <combo_box name="material"> - <combo_box.item name="Stone" label="Pedra" - /> - <combo_box.item name="Metal" label="Metal" - /> - <combo_box.item name="Glass" label="Vidro" - /> - <combo_box.item name="Wood" label="Madeira" - /> - <combo_box.item name="Flesh" label="Carne" - /> - <combo_box.item name="Plastic" label="Plástico" - /> - <combo_box.item name="Rubber" label="Couro" - /> - </combo_box> - <text name="label basetype"> - Forma básica - </text> <combo_box name="comboBaseType"> - <combo_box.item name="Box" label="Caixa" - /> - <combo_box.item name="Cylinder" label="Cilindro" - /> - <combo_box.item name="Prism" label="Prisma" - /> - <combo_box.item name="Sphere" label="Esfera" - /> - <combo_box.item name="Torus" label="Toróide" - /> - <combo_box.item name="Tube" label="Tubo" - /> - <combo_box.item name="Ring" label="Anel" - /> - <combo_box.item name="Sculpted" label="Esculpida" - /> + <combo_box.item label="Caixa" name="Box"/> + <combo_box.item label="Cilindro" name="Cylinder"/> + <combo_box.item label="Prisma" name="Prism"/> + <combo_box.item label="Esfera" name="Sphere"/> + <combo_box.item label="Toróide" name="Torus"/> + <combo_box.item label="Tubo" name="Tube"/> + <combo_box.item label="Anel" name="Ring"/> + <combo_box.item label="Esculpida" name="Sculpted"/> + </combo_box> + <combo_box name="material"> + <combo_box.item label="Pedra" name="Stone"/> + <combo_box.item label="Metal" name="Metal"/> + <combo_box.item label="Vidro" name="Glass"/> + <combo_box.item label="Madeira" name="Wood"/> + <combo_box.item label="Carne" name="Flesh"/> + <combo_box.item label="Plástico" name="Plastic"/> + <combo_box.item label="Couro" name="Rubber"/> </combo_box> <text name="text cut"> - Recorte Início e final + Path Cut (begin/end) </text> <spinner label="I" name="cut begin"/> <spinner label="F" name="cut end"/> @@ -301,17 +294,13 @@ Forma Vazia </text> <combo_box name="hole"> - <combo_box.item name="Default" label="Padrão" - /> - <combo_box.item name="Circle" label="Circulo" - /> - <combo_box.item name="Square" label="Quadrado" - /> - <combo_box.item name="Triangle" label="Triâgulo" - /> + <combo_box.item label="Padrão" name="Default"/> + <combo_box.item label="Circulo" name="Circle"/> + <combo_box.item label="Quadrado" name="Square"/> + <combo_box.item label="Triâgulo" name="Triangle"/> </combo_box> <text name="text twist"> - Torcer no Início e final + Twist (begin/end) </text> <spinner label="I" name="Twist Begin"/> <spinner label="F" name="Twist End"/> @@ -329,13 +318,13 @@ <spinner label="X" name="Shear X"/> <spinner label="Y" name="Shear Y"/> <text name="advanced_cut" width="156"> - Perfil Recortado no Início e fim + Profile Cut (begin/end) </text> <text name="advanced_dimple"> - Cova Início e final + Dimple (begin/end) </text> <text name="advanced_slice"> - Pedaço Início e fim + Slice (begin/end) </text> <spinner label="I" name="Path Limit Begin"/> <spinner label="F" name="Path Limit End"/> @@ -351,22 +340,17 @@ Revoluções </text> <texture_picker label="Texture de Escultura" name="sculpt texture control" tool_tip="Click to choose a picture"/> - <check_box label="Espelho" name="sculpt mirror control" tool_tip="Inverter a primitiva esculpida ao longo do eixo X."/> - <check_box label="De dentro para fora" name="sculpt invert control" tool_tip="Inverte as normais das primitivas esculpidas, fazendo-as parecer de dentro para fora."/> + <check_box label="Espelho" name="sculpt mirror control" tool_tip="Flips sculpted prim along the X axis"/> + <check_box label="De dentro para fora" name="sculpt invert control" tool_tip="Inverts the sculpted prims normals, making it appear inside-out"/> <text name="label sculpt type"> Tipo costura </text> <combo_box name="sculpt type control"> - <combo_box.item name="None" label="(nenhum)" - /> - <combo_box.item name="Sphere" label="Esfera" - /> - <combo_box.item name="Torus" label="Toróide" - /> - <combo_box.item name="Plane" label="Plano" - /> - <combo_box.item name="Cylinder" label="Cilindro" - /> + <combo_box.item label="(nenhum)" name="None"/> + <combo_box.item label="Esfera" name="Sphere"/> + <combo_box.item label="Toróide" name="Torus"/> + <combo_box.item label="Plano" name="Plane"/> + <combo_box.item label="Cilindro" name="Cylinder"/> </combo_box> </panel> <panel label="Recursos" name="Features"> @@ -376,7 +360,7 @@ <text name="edit_object"> Editar características do Objeto: </text> - <check_box label="Flexíbilidade" name="Flexible1D Checkbox Ctrl" tool_tip="Permite que o objeto flexione no eixo Z. (Somente no lado do Cliente)"/> + <check_box label="Flexíbilidade" name="Flexible1D Checkbox Ctrl" tool_tip="Allows object to flex about the Z axis (Client-side only)"/> <spinner label="Suavidade" name="FlexNumSections"/> <spinner label="Gravidade" name="FlexGravity"/> <spinner label="Arrastar" name="FlexFriction"/> @@ -386,17 +370,24 @@ <spinner label="Força Y" name="FlexForceY"/> <spinner label="Força Z" name="FlexForceZ"/> <check_box label="Luz" name="Light Checkbox Ctrl" tool_tip="Faz com que o objeto emita luz"/> - <text name="label color"> - Cor - </text> - <color_swatch label="" name="colorswatch" tool_tip="Clique para abrir o Seletor de Cores"/> + <color_swatch label="" name="colorswatch" tool_tip="Selecionar a cor"/> + <texture_picker label="" name="light texture control" tool_tip="Clique para selecionar uma imagem de projeção (só com renderização suspesa ativada)"/> <spinner label="Intensidade" name="Light Intensity"/> + <spinner label="FOV" name="Light FOV"/> <spinner label="Raio" name="Light Radius"/> + <spinner label="Enfocar" name="Light Focus"/> <spinner label="Queda" name="Light Falloff"/> + <spinner label="Ambiente" name="Light Ambiance"/> </panel> <panel label="Textura" name="Texture"> + <panel.string name="string repeats per meter"> + Repetir por Metro + </panel.string> + <panel.string name="string repeats per face"> + Repetir por Face + </panel.string> <texture_picker label="Textura" name="texture control" tool_tip="Clique para escolher uma imagem"/> - <color_swatch label="Cor" name="colorswatch" tool_tip="Clique para abrir o Seletor de Cores"/> + <color_swatch label="Cor" name="colorswatch" tool_tip="Selecionar a cor"/> <text name="color trans" width="100"> Transparência % </text> @@ -408,99 +399,69 @@ Mapeamento </text> <combo_box name="combobox texgen"> - <combo_box.item name="Default" label="Padrão" - /> - <combo_box.item name="Planar" label="Planar" - /> + <combo_box.item label="Padrão" name="Default"/> + <combo_box.item label="Planar" name="Planar"/> </combo_box> <text name="label shininess"> Brilho </text> <combo_box name="combobox shininess"> - <combo_box.item name="None" label="Nenhum" - /> - <combo_box.item name="Low" label="Baixo" - /> - <combo_box.item name="Medium" label="Médio" - /> - <combo_box.item name="High" label="Alto" - /> + <combo_box.item label="Nenhum" name="None"/> + <combo_box.item label="Baixo" name="Low"/> + <combo_box.item label="Médio" name="Medium"/> + <combo_box.item label="Alto" name="High"/> </combo_box> <text name="label bumpiness"> Ondulação </text> - <combo_box name="combobox bumpiness" width="100" > - <combo_box.item name="None" label="Nenhum" - /> - <combo_box.item name="Brightness" label="Claridade" - /> - <combo_box.item name="Darkness" label="Escuridão" - /> - <combo_box.item name="woodgrain" label="Granulação" - /> - <combo_box.item name="bark" label="Casca" - /> - <combo_box.item name="bricks" label="Tijolos" - /> - <combo_box.item name="checker" label="Caixa" - /> - <combo_box.item name="concrete" label="Concreto" - /> - <combo_box.item name="crustytile" label="Encaroçado" - /> - <combo_box.item name="cutstone" label="Pedra Cortante" - /> - <combo_box.item name="discs" label="Discos" - /> - <combo_box.item name="gravel" label="Cascalho" - /> - <combo_box.item name="petridish" label="Pedrisco" - /> - <combo_box.item name="siding" label="Revestimento" - /> - <combo_box.item name="stonetile" label="Empedrado" - /> - <combo_box.item name="stucco" label="Grafiato" - /> - <combo_box.item name="suction" label="Sulcos" - /> - <combo_box.item name="weave" label="Weave" - /> + <combo_box name="combobox bumpiness" width="100"> + <combo_box.item label="Nenhum" name="None"/> + <combo_box.item label="Claridade" name="Brightness"/> + <combo_box.item label="Escuridão" name="Darkness"/> + <combo_box.item label="Granulação" name="woodgrain"/> + <combo_box.item label="Casca" name="bark"/> + <combo_box.item label="Tijolos" name="bricks"/> + <combo_box.item label="Caixa" name="checker"/> + <combo_box.item label="Concreto" name="concrete"/> + <combo_box.item label="Encaroçado" name="crustytile"/> + <combo_box.item label="Pedra Cortante" name="cutstone"/> + <combo_box.item label="Discos" name="discs"/> + <combo_box.item label="Cascalho" name="gravel"/> + <combo_box.item label="Pedrisco" name="petridish"/> + <combo_box.item label="Revestimento" name="siding"/> + <combo_box.item label="Empedrado" name="stonetile"/> + <combo_box.item label="Grafiato" name="stucco"/> + <combo_box.item label="Sulcos" name="suction"/> + <combo_box.item label="Weave" name="weave"/> </combo_box> <text name="tex scale"> - Repetir por Face + Repeats / Face </text> <spinner label="Horizontal (U)" name="TexScaleU"/> <check_box label="Flip" name="checkbox flip s"/> <spinner label="Vertical (V)" name="TexScaleV"/> <check_box label="Flip" name="checkbox flip t"/> - <text name="tex rotate"> - Rotação (graus) - </text> - <string name="string repeats per meter"> - Repetir por Metro - </string> - <string name="string repeats per face"> - Repetir por Face - </string> - <text name="rpt"> - Repetir por Metro - </text> + <spinner label="Rotation˚" name="TexRot"/> + <spinner label="Repeats / Meter" name="rptctrl"/> <button label="Aplicar" label_selected="Aplicar" name="button apply"/> <text name="tex offset"> - Deslocamento + Texture Offset </text> <spinner label="Horizontal (U)" name="TexOffsetU"/> <spinner label="Vertical (V)" name="TexOffsetV"/> - <text name="textbox autofix"> - Alinhar Texturas - </text> - <button label="Alinhar" label_selected="Alinhar" name="button align"/> + <panel name="Add_Media"> + <text name="media_tex"> + Mídia + </text> + <button name="add_media" tool_tip="Adicionar mídia"/> + <button name="delete_media" tool_tip="Excluir esta textura de mídia"/> + <button name="edit_media" tool_tip="Editar esta mídia"/> + <button label="Alinhar" label_selected="Alinhar mídias" name="button align" tool_tip="Alinhar textura da mídia (após carregar mídia)"/> + </panel> </panel> <panel label="Conteúdo" name="Contents"> - <button label="Novo Script" label_selected="Novo Script" name="button new script"/> - <button label="Permissões" name="button permissions"/> - <panel name="ContentsInventory" width="272" /> + <button label="Novo Script" label_selected="Novo script" name="button new script"/> + <button label="Autorizações" name="button permissions"/> </panel> </tab_container> <panel name="land info panel"> @@ -508,62 +469,22 @@ Informações do Lote </text> <text name="label_area_price"> - Preço: L$[PRICE] por [AREA] m². + Preço: L$[PRICE] por [AREA] m² </text> <text name="label_area"> - Área: [AREA] m². + Área: [AREA] m² </text> - <button label="Sobre a Terra..." label_selected="Sobre a Terra..." name="button about land"/> - <check_box label="Mostrar donos" name="checkbox show owners" tool_tip="Colorir lotes de acordo com seus donos: Green = Sua terra Aqua = Terra do seu grupo Red = Possuída por outros Yellow = À venda Purple = A leilão Grey = Pública"/> - <button label="?" label_selected="?" name="button show owners help" left_delta="100"/> + <button label="Sobre terrenos" label_selected="Sobre terrenos" name="button about land"/> + <check_box label="Mostrar donos" name="checkbox show owners" tool_tip="Colorir lotes de acordo com seus donos: Green = Sua terra Aqua = Terra do seu grupo Red = Possuída por outros Yellow = À venda Purple = A leilão Grey = Pública"/> <text name="label_parcel_modify"> Modificar Lote </text> - <button label="Sub-Dividir" label_selected="Sub-Dividir" name="button subdivide land"/> - <button label="Unir" label_selected="Unir" name="button join land"/> + <button label="Subdividir" label_selected="Subdividir" name="button subdivide land"/> + <button label="Juntar" label_selected="Juntar" name="button join land"/> <text name="label_parcel_trans"> Transações com a Terra </text> - <button label="Comprar Terra" label_selected="Comprar Terra" name="button buy land"/> - <button label="Abandonar Terra" label_selected="Abandonar Terra" name="button abandon land"/> + <button label="Comprar terreno" label_selected="Comprar terreno" name="button buy land"/> + <button label="Abandonar terreno" label_selected="Abandonar terreno" name="button abandon land"/> </panel> - <floater.string name="status_rotate"> - Arrastar as bandas coloridas para girar o objeto - </floater.string> - <floater.string name="status_scale"> - Clicar e arrastar para esticar o lado selecionado - </floater.string> - <floater.string name="status_move"> - Arrastar para mover, Shift-arrastar para copiar - </floater.string> - <floater.string name="status_modifyland"> - Clicar e reter para modificar a terra - </floater.string> - <floater.string name="status_camera"> - Clicar e arrastar para mudar a vista - </floater.string> - <floater.string name="status_grab"> - Arrastar para mover, Ctrl para levantar, Ctrl-Shift para rotacionar - </floater.string> - <floater.string name="status_place"> - Clique no mundo para construir - </floater.string> - <floater.string name="status_selectland"> - Clicar e arrastar para selecionar a terra - </floater.string> - <floater.string name="grid_screen_text"> - Tela - </floater.string> - <floater.string name="grid_local_text"> - Local - </floater.string> - <floater.string name="grid_world_text"> - Mundo - </floater.string> - <floater.string name="grid_reference_text"> - Referência - </floater.string> - <floater.string name="grid_attachment_text"> - Anexo - </floater.string> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_top_objects.xml b/indra/newview/skins/default/xui/pt/floater_top_objects.xml index 15e69c450c..c6a62c9118 100644 --- a/indra/newview/skins/default/xui/pt/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/pt/floater_top_objects.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="top_objects" title="CARREGANDO..."> +<floater name="top_objects" title="Principais objetos:"> <text name="title_text"> Carregando... </text> @@ -16,20 +16,20 @@ </text> <button label="Mostrar Avisos" name="show_beacon_btn"/> <text name="obj_name_text"> - Nome do Objeto: + Nome do objeto: </text> <button label="Filtro" name="filter_object_btn"/> <text name="owner_name_text" width="130"> - Nome do Proprietário: + Proprietário: </text> <line_editor font="SansSerifSmall" left="140" name="id_editor" width="280"/> <line_editor font="SansSerifSmall" left="140" name="object_name_editor" width="280"/> <line_editor font="SansSerifSmall" left="140" name="owner_name_editor" width="280"/> <button label="Filtro" name="filter_owner_btn"/> <button label="Retornar Selecionado" name="return_selected_btn" width="170"/> - <button label="Retornar Tudo" name="return_all_btn" left="190"/> + <button label="Retornar Tudo" left="190" name="return_all_btn"/> <button label="Desabilitar Selecionado" name="disable_selected_btn" width="170"/> - <button label="Desabilitar Tudo" name="disable_all_btn" left="190"/> + <button label="Desabilitar Tudo" left="190" name="disable_all_btn"/> <button label="Atualizar" name="refresh_btn"/> <string name="top_scripts_title"> Principais Scripts diff --git a/indra/newview/skins/default/xui/pt/floater_tos.xml b/indra/newview/skins/default/xui/pt/floater_tos.xml index 7a0c187517..9a9666f9db 100644 --- a/indra/newview/skins/default/xui/pt/floater_tos.xml +++ b/indra/newview/skins/default/xui/pt/floater_tos.xml @@ -4,8 +4,7 @@ <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> <check_box label="Eu concordo com os Termos do Serviço" name="agree_chk"/> <text name="tos_heading"> - Por favor, leia os seguintes Termos de Serviço cuidadosamente. Para continuar acessando o -[SECOND_LIFE], você precisa aceitar o acordo. + Leia com atenção os Termos do Serviço. Para continuar a entrar no [SECOND_LIFE], é preciso aceitar o contrato. </text> <text_editor name="tos_text"> TOS_TEXT diff --git a/indra/newview/skins/default/xui/pt/floater_voice_controls.xml b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml new file mode 100644 index 0000000000..8348b375b1 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="floater_voice_controls" title="Controles de voz"> + <string name="title_nearby"> + VOZ LOCAL + </string> + <string name="title_group"> + Ligação de grupo com [GROUP] + </string> + <string name="title_adhoc"> + Teleconferência + </string> + <string name="title_peer_2_peer"> + Ligação para [NAME] + </string> + <string name="no_one_near"> + Ninguém por perto + </string> + <panel name="control_panel"> + <layout_stack> + <layout_panel name="leave_btn_panel"> + <button label="Desligar" name="leave_call_btn"/> + </layout_panel> + </layout_stack> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_water.xml b/indra/newview/skins/default/xui/pt/floater_water.xml index bad9aa0943..36b995d4fd 100644 --- a/indra/newview/skins/default/xui/pt/floater_water.xml +++ b/indra/newview/skins/default/xui/pt/floater_water.xml @@ -3,7 +3,7 @@ <text name="KeyFramePresetsText" width="154"> Pré-configurações da Água: </text> - <combo_box left_delta="160" name="WaterPresetsCombo" width="150" /> + <combo_box left_delta="160" name="WaterPresetsCombo" width="150"/> <button label="Novo" label_selected="Novo" name="WaterNewPreset"/> <button label="Salvar" label_selected="Salvar" name="WaterSavePreset"/> <button label="Deletar" label_selected="Deletar" name="WaterDeletePreset"/> @@ -13,19 +13,19 @@ Cor da névoa da Água </text> <button label="?" name="WaterFogColorHelp"/> - <color_swatch label="" name="WaterFogColor" tool_tip="Clique para abrir o Capturador de Cor"/> + <color_swatch label="" name="WaterFogColor" tool_tip="Selecionar a cor"/> <text name="WaterFogDensText"> Expoente da Densidade de névoa </text> - <button label="?" name="WaterFogDensityHelp" left="209"/> + <button label="?" left="209" name="WaterFogDensityHelp"/> <text name="WaterUnderWaterFogModText"> Modificador da névoa Subaquática </text> - <button label="?" name="WaterUnderWaterFogModHelp" left="209"/> + <button label="?" left="209" name="WaterUnderWaterFogModHelp"/> <text name="BDensText"> Escala da Marola de Reflexão </text> - <button label="?" name="WaterNormalScaleHelp" left="415"/> + <button label="?" left="415" name="WaterNormalScaleHelp"/> <text name="BHText2"> 1 </text> @@ -38,29 +38,29 @@ <text name="HDText"> Escala de Fresnel </text> - <button label="?" name="WaterFresnelScaleHelp" left="415"/> + <button label="?" left="415" name="WaterFresnelScaleHelp"/> <text name="FresnelOffsetText"> Deslocamento de Fresnel </text> - <button label="?" name="WaterFresnelOffsetHelp" left="415"/> + <button label="?" left="415" name="WaterFresnelOffsetHelp"/> <text name="DensMultText"> Refratar a Escala para Cima </text> - <button label="?" name="WaterScaleAboveHelp" left="640"/> + <button label="?" left="640" name="WaterScaleAboveHelp"/> <text name="WaterScaleBelowText"> Refratar a Escala para Baixo </text> - <button label="?" name="WaterScaleBelowHelp" left="640"/> + <button label="?" left="640" name="WaterScaleBelowHelp"/> <text name="MaxAltText"> Multiplicador de Difusão </text> - <button label="?" name="WaterBlurMultiplierHelp" left="640"/> + <button label="?" left="640" name="WaterBlurMultiplierHelp"/> </panel> <panel label="Imagem" name="Waves"> <text name="BHText"> Direção da Onda Maior </text> - <button label="?" name="WaterWave1Help" left="170"/> + <button label="?" left="170" name="WaterWave1Help"/> <text name="WaterWave1DirXText"> X </text> @@ -70,7 +70,7 @@ <text name="BHText2"> Direção da Onda Pequena </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/pt/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/pt/floater_whitelist_entry.xml new file mode 100644 index 0000000000..8f616396ca --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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"> + Digite um URL ou série de URLs para a lista de domínios permitidos + </text> + <line_editor name="whitelist_entry" tool_tip="Digite um URL ou série de URLs para a lista branca"/> + <button label="OK" name="ok_btn"/> + <button label="Cancelar" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_world_map.xml b/indra/newview/skins/default/xui/pt/floater_world_map.xml index 034602d6ea..81f8ce7846 100644 --- a/indra/newview/skins/default/xui/pt/floater_world_map.xml +++ b/indra/newview/skins/default/xui/pt/floater_world_map.xml @@ -1,53 +1,65 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="worldmap" title="MAPA MUNDI"> - <tab_container name="maptab"> - <panel label="Objetos" name="objects_mapview"/> - <panel label="Terreno" name="terrain_mapview"/> - </tab_container> - <text name="you_label"> - Você - </text> - <text name="home_label"> - Casa - </text> - <text name="auction_label"> - Leilão - </text> - <text name="land_for_sale_label"> - Terra à venda - </text> - <button label="Ir para Casa" label_selected="Ir para casa" name="Go Home" tool_tip="Teletransportar para sua Casa"/> - <check_box label="Residente" name="people_chk"/> - <check_box label="Infohub" name="infohub_chk"/> - <check_box label="Telehub" name="telehubchk"/> - <check_box label="Terra à Venda" name="land_for_sale_chk"/> - <text name="events_label"> - Eventos: - </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="Amigos Conectados" name="friend combo" tool_tip="Amigos para mostrar no Mapa"> - <combo_box.item name="item1" label="Amigos Conectados" /> - </combo_box> - <combo_box label="Landmarks" name="landmark combo" tool_tip="Landmark para mostrar no Mapa"> - <combo_box.item name="item1" label="Landmarks" /> - </combo_box> - <line_editor label="Procurar por nome de região" name="location" tool_tip="Digite o nome de uma Região"/> - <button label="Procurar" name="DoSearch" tool_tip="Procurar por região"/> - <text name="search_label"> - Resultados da Procura: - </text> - <text name="location_label"> - Localização: - </text> - <spinner name="spin x" tool_tip="Coordenada X da posição mostrada no mapa"/> - <spinner name="spin y" tool_tip="Coordenada Y da posição mostrada no mapa"/> - <spinner name="spin z" tool_tip="Coordenada Z da posição mostrada no Mapa"/> - <button font="SansSerifSmall" label="Teletransporte" label_selected="Teletransporte" name="Teleport" tool_tip="Teletransportar para a posição selecionada"/> - <button font="SansSerifSmall" left_delta="91" width="135" label="Mostrar destino" label_selected="Mostrar Destino" name="Show Destination" tool_tip="Centralizar mapa na posição selecionada"/> - <button font="SansSerifSmall" label="Limpar" label_selected="Limpar" name="Clear" tool_tip="Parar de percorrer"/> - <button font="SansSerifSmall" left_delta="91" width="135" label="Mostra minha localização" label_selected="Mostra minha localização" name="Show My Location" tool_tip="Centraliza o mapa na posição do seu Avatar"/> - <button font="SansSerifSmall" label="Copiar SLurl para área de transferência" name="copy_slurl" tool_tip="Copia a posição atual como SLurl para ser usada na Web"/> - <slider label="Zoom" name="zoom slider"/> +<floater name="worldmap" title="MAPA-MÚNDI"> + <panel name="layout_panel_1"> + <text name="events_label"> + Legenda + </text> + </panel> + <panel> + <button font="SansSerifSmall" label="Mostra minha localização" label_selected="Mostra minha localização" left_delta="91" name="Show My Location" tool_tip="Centrar o mapa na localização do meu avatar" width="135"/> + <text name="person_label"> + Eu + </text> + <check_box label="Residente" name="people_chk"/> + <check_box label="Infohub" name="infohub_chk"/> + <text name="infohub_label"> + Infohub + </text> + <check_box label="Terra à Venda" name="land_for_sale_chk"/> + <text name="land_sale_label"> + Venda de terreno + </text> + <text name="auction_label"> + pelo dono + </text> + <button label="Ir para Casa" label_selected="Ir para casa" name="Go Home" tool_tip="Teletransportar para minha casa"/> + <text name="Home_label"> + Casa + </text> + <text name="events_label"> + Eventos: + </text> + <check_box label="PG" name="event_chk"/> + <check_box initial_value="true" label="Mature" name="event_mature_chk"/> + <text name="mature_label"> + Moderado + </text> + <check_box label="Adult" name="event_adult_chk"/> + </panel> + <panel> + <text name="find_on_map_label"> + Localizar no mapa + </text> + </panel> + <panel> + <combo_box label="Amigos Conectados" name="friend combo" tool_tip="Mostrar amigos no mapa"> + <combo_box.item label="Amigos conectados" name="item1"/> + </combo_box> + <combo_box label="Meus marcos" name="landmark combo" tool_tip="Mostrar marco no mapa"> + <combo_box.item label="Meus marcos" name="item1"/> + </combo_box> + <search_editor label="Regiões por nome" name="location" tool_tip="Digite o nome de uma Região"/> + <button label="Buscar" name="DoSearch" tool_tip="Procurar por região"/> + <button font="SansSerifSmall" label="Teletransporte" label_selected="Teletransporte" name="Teleport" tool_tip="Teletransportar para a posição selecionada"/> + <button font="SansSerifSmall" label="Copiar SLurl" name="copy_slurl" tool_tip="Copia a localização atual como um SLurl para usar na web."/> + <button font="SansSerifSmall" label="Mostrar seleção" label_selected="Mostrar Destino" left_delta="91" name="Show Destination" tool_tip="Centralizar mapa na posição selecionada" 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/pt/inspect_avatar.xml b/indra/newview/skins/default/xui/pt/inspect_avatar.xml new file mode 100644 index 0000000000..8f35acf19e --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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"> + [IDADE] + </string> + <string name="Details"> + [PERFIL_SL] + </string> + <slider name="volume_slider" tool_tip="Volume de Voz" value="0.5"/> + <button label="Adicionar amigo" name="add_friend_btn"/> + <button label="MI" name="im_btn"/> + <button label="Mais" name="view_profile_btn"/> + <panel name="moderator_panel"> + <button label="Disabilitar Voz" name="disable_voice"/> + <button label="Habilitar Voz" name="enable_voice"/> + </panel> +</floater> diff --git a/indra/newview/skins/default/xui/pt/inspect_group.xml b/indra/newview/skins/default/xui/pt/inspect_group.xml new file mode 100644 index 0000000000..889d35f269 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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"> + Grupo privado + </string> + <string name="FreeToJoin"> + Livre para ingressar + </string> + <string name="CostToJoin"> + [AMOUNT]L$ para ingressar + </string> + <string name="YouAreMember"> + Você é um membro + </string> + <button label="Ingressar" name="join_btn"/> + <button label="Abandonar" name="leave_btn"/> + <button label="Visualizar Perfil" name="view_profile_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/inspect_object.xml b/indra/newview/skins/default/xui/pt/inspect_object.xml new file mode 100644 index 0000000000..e9f1ca3a0b --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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"> + Autor: [CREATOR] + </string> + <string name="CreatorAndOwner"> + Autor: [CREATOR] +Proprietário: [OWNER] + </string> + <string name="Price"> + L$[AMOUNT] + </string> + <string name="PriceFree"> + Grátis! + </string> + <string name="Touch"> + Tocar + </string> + <string name="Sit"> + Sentar + </string> + <button label="Comprar" name="buy_btn"/> + <button label="Pagar" name="pay_btn"/> + <button label="Pegar uma cópia" name="take_free_copy_btn"/> + <button label="Tocar" name="touch_btn"/> + <button label="Sentar" name="sit_btn"/> + <button label="Abrir" name="open_btn"/> + <icon name="secure_browsing" tool_tip="Navegação segura"/> + <button label="Mais" name="more_info_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/inspect_remote_object.xml b/indra/newview/skins/default/xui/pt/inspect_remote_object.xml new file mode 100644 index 0000000000..789194bf2e --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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"> + Proprietário: + </text> + <button label="Mapa" name="map_btn"/> + <button label="Bloquear" name="block_btn"/> + <button label="Fechar" name="close_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_other.xml b/indra/newview/skins/default/xui/pt/menu_attachment_other.xml new file mode 100644 index 0000000000..b6cf896836 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Ver perfil" name="Profile..."/> + <menu_item_call label="Adicionar amigo..." name="Add Friend"/> + <menu_item_call label="MI" name="Send IM..."/> + <menu_item_call label="Ligar" name="Call"/> + <menu_item_call label="Convidar para entrar no grupo" name="Invite..."/> + <menu_item_call label="Bloquear" name="Avatar Mute"/> + <menu_item_call label="Denunciar" name="abuse"/> + <menu_item_call label="Congelar" name="Freeze..."/> + <menu_item_call label="Ejetar" name="Eject..."/> + <menu_item_call label="Depurar" name="Debug..."/> + <menu_item_call label="Mais zoom" name="Zoom In"/> + <menu_item_call label="Pagar" name="Pay..."/> + <menu_item_call label="Perfil do objeto" name="Object Inspect"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_self.xml b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml new file mode 100644 index 0000000000..04f6227141 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Tocar" name="Attachment Object Touch"/> + <menu_item_call label="Editar" name="Edit..."/> + <menu_item_call label="Tirar" name="Detach"/> + <menu_item_call label="Largar" name="Drop"/> + <menu_item_call label="Ficar de pé" name="Stand Up"/> + <menu_item_call label="Minha aparência" name="Appearance..."/> + <menu_item_call label="Meus amigos" name="Friends..."/> + <menu_item_call label="Meus grupos" name="Groups..."/> + <menu_item_call label="Meu perfil" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml b/indra/newview/skins/default/xui/pt/menu_avatar_icon.xml new file mode 100644 index 0000000000..beba969b7e --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Ver perfil" name="Show Profile"/> + <menu_item_call label="Enviar MI..." name="Send IM"/> + <menu_item_call label="Adicionar amigo..." name="Add Friend"/> + <menu_item_call label="Remover amigo..." name="Remove Friend"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_other.xml b/indra/newview/skins/default/xui/pt/menu_avatar_other.xml new file mode 100644 index 0000000000..21c2cb196a --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Ver perfil" name="Profile..."/> + <menu_item_call label="Adicionar amigo..." name="Add Friend"/> + <menu_item_call label="MI" name="Send IM..."/> + <menu_item_call label="Ligar" name="Call"/> + <menu_item_call label="Convidar para entrar no grupo" name="Invite..."/> + <menu_item_call label="Bloquear" name="Avatar Mute"/> + <menu_item_call label="Denunciar" name="abuse"/> + <menu_item_call label="Congelar" name="Freeze..."/> + <menu_item_call label="Ejetar" name="Eject..."/> + <menu_item_call label="Depurar" name="Debug..."/> + <menu_item_call label="Mais zoom" name="Zoom In"/> + <menu_item_call label="Pagar" name="Pay..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_self.xml b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml new file mode 100644 index 0000000000..99d5ae9bec --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Ficar de pé" name="Stand Up"/> + <context_menu label="Tirar >" name="Take Off >"> + <context_menu label="Roupa >" name="Clothes >"> + <menu_item_call label="Camisa" name="Shirt"/> + <menu_item_call label="Calças" name="Pants"/> + <menu_item_call label="Saia" name="Skirt"/> + <menu_item_call label="Sapatos" name="Shoes"/> + <menu_item_call label="Meias" name="Socks"/> + <menu_item_call label="Jaqueta" name="Jacket"/> + <menu_item_call label="Luvas" name="Gloves"/> + <menu_item_call label="Camiseta" name="Self Undershirt"/> + <menu_item_call label="Roupa de baixo" name="Self Underpants"/> + <menu_item_call label="Tatuagem" name="Self Tattoo"/> + <menu_item_call label="Alpha" name="Self Alpha"/> + <menu_item_call label="Todas as roupas" name="All Clothes"/> + </context_menu> + <context_menu label="HUD >" name="Object Detach HUD"/> + <context_menu label="Tirar >" name="Object Detach"/> + <menu_item_call label="Tirar tudo" name="Detach All"/> + </context_menu> + <menu_item_call label="Minha aparência" name="Appearance..."/> + <menu_item_call label="Meus amigos" name="Friends..."/> + <menu_item_call label="Meus grupos" name="Groups..."/> + <menu_item_call label="Meu perfil" name="Profile..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_bottomtray.xml b/indra/newview/skins/default/xui/pt/menu_bottomtray.xml new file mode 100644 index 0000000000..43b446a67e --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Botão de gestos" name="ShowGestureButton"/> + <menu_item_check label="Botão de movimento" name="ShowMoveButton"/> + <menu_item_check label="Botão de ver" name="ShowCameraButton"/> + <menu_item_check label="Botão de fotos" name="ShowSnapshotButton"/> + <menu_item_call label="Cortar" name="NearbyChatBar_Cut"/> + <menu_item_call label="Copiar" name="NearbyChatBar_Copy"/> + <menu_item_call label="Colar" name="NearbyChatBar_Paste"/> + <menu_item_call label="Excluir" name="NearbyChatBar_Delete"/> + <menu_item_call label="Selecionar tudo" name="NearbyChatBar_Select_All"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_favorites.xml b/indra/newview/skins/default/xui/pt/menu_favorites.xml new file mode 100644 index 0000000000..062820fbca --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_favorites.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Popup"> + <menu_item_call label="Teletransportar" name="Teleport To Landmark"/> + <menu_item_call label="Ver/Editar marco" name="Landmark Open"/> + <menu_item_call label="Copiar SLurl" name="Copy slurl"/> + <menu_item_call label="Mostrar no mapa" name="Show On Map"/> + <menu_item_call label="Copiar" name="Landmark Copy"/> + <menu_item_call label="Colar" name="Landmark Paste"/> + <menu_item_call label="Excluir" name="Delete"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml b/indra/newview/skins/default/xui/pt/menu_gesture_gear.xml new file mode 100644 index 0000000000..70d8ae7a8e --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Adicionar/remover de favoritos" name="activate"/> + <menu_item_call label="Copiar" name="copy_gesture"/> + <menu_item_call label="Colar" name="paste"/> + <menu_item_call label="Copiar UUID" name="copy_uuid"/> + <menu_item_call label="Salvar para look atual" name="save_to_outfit"/> + <menu_item_call label="Editar" name="edit_gesture"/> + <menu_item_call label="Verificar" name="inspect"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_group_plus.xml b/indra/newview/skins/default/xui/pt/menu_group_plus.xml new file mode 100644 index 0000000000..1083845d68 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Entrar no grupo..." name="item_join"/> + <menu_item_call label="Novo grupo..." name="item_new"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml b/indra/newview/skins/default/xui/pt/menu_hide_navbar.xml new file mode 100644 index 0000000000..472ca466c9 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Mostrar barra de navegação" name="ShowNavbarNavigationPanel"/> + <menu_item_check label="Mostrar barra de favoritos" name="ShowNavbarFavoritesPanel"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_imchiclet_adhoc.xml b/indra/newview/skins/default/xui/pt/menu_imchiclet_adhoc.xml new file mode 100644 index 0000000000..ead949ba13 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Encerrar esta sessão" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_imchiclet_group.xml b/indra/newview/skins/default/xui/pt/menu_imchiclet_group.xml new file mode 100644 index 0000000000..dd177d1b8d --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Sobre o grupo" name="Show Profile"/> + <menu_item_call label="Mostrar sessão" name="Chat"/> + <menu_item_call label="Encerrar esta sessão" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_imchiclet_p2p.xml b/indra/newview/skins/default/xui/pt/menu_imchiclet_p2p.xml new file mode 100644 index 0000000000..d821b3ded0 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Ver perfil" name="Show Profile"/> + <menu_item_call label="Adicionar amigo..." name="Add Friend"/> + <menu_item_call label="Mostrar sessão" name="Send IM"/> + <menu_item_call label="Encerrar esta sessão" name="End Session"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/pt/menu_inspect_avatar_gear.xml new file mode 100644 index 0000000000..46c536e64b --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_inspect_avatar_gear.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Ver perfil" name="view_profile"/> + <menu_item_call label="Adicionar amigo..." name="add_friend"/> + <menu_item_call label="MI" name="im"/> + <menu_item_call label="Ligar" name="call"/> + <menu_item_call label="Teletransportar" name="teleport"/> + <menu_item_call label="Convidar para entrar no grupo" name="invite_to_group"/> + <menu_item_call label="Bloquear" name="block"/> + <menu_item_call label="Denunciar" name="report"/> + <menu_item_call label="Congelar" name="freeze"/> + <menu_item_call label="Ejetar" name="eject"/> + <menu_item_call label="Depurar" name="debug"/> + <menu_item_call label="Localizar no mapa" name="find_on_map"/> + <menu_item_call label="Mais zoom" name="zoom_in"/> + <menu_item_call label="Pagar" name="pay"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml new file mode 100644 index 0000000000..b69d205533 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Tocar" name="touch"/> + <menu_item_call label="Sentar" name="sit"/> + <menu_item_call label="Pagar" name="pay"/> + <menu_item_call label="Comprar" name="buy"/> + <menu_item_call label="Pegar" name="take"/> + <menu_item_call label="Pegar uma cópia" name="take_copy"/> + <menu_item_call label="Abrir" name="open"/> + <menu_item_call label="Editar" name="edit"/> + <menu_item_call label="Vestir" name="wear"/> + <menu_item_call label="Denunciar" name="report"/> + <menu_item_call label="Bloquear" name="block"/> + <menu_item_call label="Mais zoom" name="zoom_in"/> + <menu_item_call label="Tirar" name="remove"/> + <menu_item_call label="Mais informações" name="more_info"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml new file mode 100644 index 0000000000..2eba4ccb2d --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu name="Gear Menu"> + <menu_item_call label="Ficar de pé" name="stand_up"/> + <menu_item_call label="Minha aparência" name="my_appearance"/> + <menu_item_call label="Meu perfil" name="my_profile"/> + <menu_item_call label="Meus amigos" name="my_friends"/> + <menu_item_call label="Meus grupos" name="my_groups"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_inventory.xml b/indra/newview/skins/default/xui/pt/menu_inventory.xml index 486588158e..de33849d0c 100644 --- a/indra/newview/skins/default/xui/pt/menu_inventory.xml +++ b/indra/newview/skins/default/xui/pt/menu_inventory.xml @@ -12,7 +12,7 @@ <menu_item_call label="Novo Script" name="New Script"/> <menu_item_call label="Nova Nota" name="New Note"/> <menu_item_call label="Novo Gesto" name="New Gesture"/> - <menu label="Nova Roupa" name="New Clothes"> + <menu label="Novas roupas" name="New Clothes"> <menu_item_call label="Nova Camisa" name="New Shirt"/> <menu_item_call label="Nova Calça" name="New Pants"/> <menu_item_call label="Novos Calçados" name="New Shoes"/> @@ -22,31 +22,47 @@ <menu_item_call label="Novas Luvas" name="New Gloves"/> <menu_item_call label="Nova Anágua" name="New Undershirt"/> <menu_item_call label="Nova roupa de baixo" name="New Underpants"/> + <menu_item_call label="Nova máscara alfa" name="New Alpha Mask"/> + <menu_item_call label="Nova tatuagem" name="New Tattoo"/> </menu> - <menu label="Parte do corpo" name="New Body Parts"> + <menu label="Nova parte do corpo" name="New Body Parts"> <menu_item_call label="Nova forma" name="New Shape"/> <menu_item_call label="Nova pele" name="New Skin"/> <menu_item_call label="Novo cabelo" name="New Hair"/> <menu_item_call label="Novos olhos" name="New Eyes"/> </menu> + <menu label="Alterar fonte" name="Change Type"> + <menu_item_call label="Padrão" name="Default"/> + <menu_item_call label="Luvas" name="Gloves"/> + <menu_item_call label="Jaqueta" name="Jacket"/> + <menu_item_call label="Calças" name="Pants"/> + <menu_item_call label="Silhueta" name="Shape"/> + <menu_item_call label="Sapatos" name="Shoes"/> + <menu_item_call label="Camisa" name="Shirt"/> + <menu_item_call label="Saia" name="Skirt"/> + <menu_item_call label="Roupa de baixo" name="Underpants"/> + <menu_item_call label="Camiseta" name="Undershirt"/> + </menu> <menu_item_call label="Teletransporte" name="Landmark Open"/> <menu_item_call label="Abrir" name="Animation Open"/> <menu_item_call label="Abrir" name="Sound Open"/> <menu_item_call label="Remover item" name="Purge Item"/> <menu_item_call label="Restaurar item" name="Restore Item"/> + <menu_item_call label="Ir para o link" name="Goto Link"/> <menu_item_call label="Abrir" name="Open"/> <menu_item_call label="Propriedades" name="Properties"/> <menu_item_call label="Renomear" name="Rename"/> <menu_item_call label="Copy Asset UUID" name="Copy Asset UUID"/> <menu_item_call label="Copiar" name="Copy"/> <menu_item_call label="Colar" name="Paste"/> + <menu_item_call label="Colar como link" name="Paste As Link"/> <menu_item_call label="Apagar" name="Delete"/> <menu_item_call label="Remover os itens" name="Take Off Items"/> <menu_item_call label="Adicionar ao equipamento" name="Add To Outfit"/> <menu_item_call label="Substituir equipamento" name="Replace Outfit"/> <menu_item_call label="Iniciar conversa em conferência" name="Conference Chat Folder"/> <menu_item_call label="Executar" name="Sound Play"/> - <menu_item_call label="Sobre as Landmarks" name="Teleport To Landmark"/> + <menu_item_call label="Sobre o marco" name="About Landmark"/> <menu_item_call label="Executar in World" name="Animation Play"/> <menu_item_call label="Executar localmente" name="Animation Audition"/> <menu_item_call label="Mandar Mensagem Instantânea" name="Send Instant Message"/> @@ -54,8 +70,8 @@ <menu_item_call label="Iniciar conversa em conferência" name="Conference Chat"/> <menu_item_call label="Ativar" name="Activate"/> <menu_item_call label="Desativar" name="Deactivate"/> + <menu_item_call label="Salvar como" name="Save As"/> <menu_item_call label="Retirar de você" name="Detach From Yourself"/> - <menu_item_call label="Recuperar Última Posição" name="Restore to Last Position"/> <menu_item_call label="Vestir" name="Object Wear"/> <menu label="Anexar a" name="Attach To"/> <menu label="Anexar ao HUD" name="Attach To HUD"/> diff --git a/indra/newview/skins/default/xui/pt/menu_inventory_add.xml b/indra/newview/skins/default/xui/pt/menu_inventory_add.xml new file mode 100644 index 0000000000..d1bdcd3a8a --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_inventory_add.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="menu_inventory_add"> + <menu label="Upload" name="upload"> + <menu_item_call label="Imagem (L$[COST])..." name="Upload Image"/> + <menu_item_call label="Som (L$[COST])..." name="Upload Sound"/> + <menu_item_call label="Animação (L$[COST])..." name="Upload Animation"/> + <menu_item_call label="Volume (L$[COST] per file)..." name="Bulk Upload"/> + </menu> + <menu_item_call label="Nova pasta" name="New Folder"/> + <menu_item_call label="Novo script" name="New Script"/> + <menu_item_call label="Nova nota" name="New Note"/> + <menu_item_call label="Novo gesto" name="New Gesture"/> + <menu label="Novas roupas" name="New Clothes"> + <menu_item_call label="Nova camisa" name="New Shirt"/> + <menu_item_call label="Novas calças" name="New Pants"/> + <menu_item_call label="Novos sapatos" name="New Shoes"/> + <menu_item_call label="Novas meias" name="New Socks"/> + <menu_item_call label="Nova blusa" name="New Jacket"/> + <menu_item_call label="Nova saia" name="New Skirt"/> + <menu_item_call label="Novas luvas" name="New Gloves"/> + <menu_item_call label="Nova camiseta" name="New Undershirt"/> + <menu_item_call label="Novas roupa de baixo" name="New Underpants"/> + <menu_item_call label="Novo alpha" name="New Alpha"/> + <menu_item_call label="Nova tatuagem" name="New Tattoo"/> + </menu> + <menu label="Nova parte do corpo" name="New Body Parts"> + <menu_item_call label="Nova silhueta" name="New Shape"/> + <menu_item_call label="Nova pele" name="New Skin"/> + <menu_item_call label="Novo cabelo" name="New Hair"/> + <menu_item_call label="Novos olhos" name="New Eyes"/> + </menu> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/pt/menu_inventory_gear_default.xml new file mode 100644 index 0000000000..8bae7afddc --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Nova janela de inventário" name="new_window"/> + <menu_item_call label="Ordenar por nome" name="sort_by_name"/> + <menu_item_call label="Ordenar por mais recente" name="sort_by_recent"/> + <menu_item_call label="Mostrar filtros" name="show_filters"/> + <menu_item_call label="Restabelecer filtros" name="reset_filters"/> + <menu_item_call label="Fechar todas as pastas" name="close_folders"/> + <menu_item_call label="Esvaziar lixeira" name="empty_trash"/> + <menu_item_call label="Esvaziar achados e perdidos" name="empty_lostnfound"/> + <menu_item_call label="Salvar textura como" name="Save Texture As"/> + <menu_item_call label="Encontrar original" name="Find Original"/> + <menu_item_call label="Encontrar todos os links" name="Find All Links"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_land.xml b/indra/newview/skins/default/xui/pt/menu_land.xml new file mode 100644 index 0000000000..9182ce321a --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Sobre terrenos" name="Place Information..."/> + <menu_item_call label="Sentar aqui" name="Sit Here"/> + <menu_item_call label="Comprar este terreno" name="Land Buy"/> + <menu_item_call label="Comprar passe" name="Land Buy Pass"/> + <menu_item_call label="Construir" name="Create"/> + <menu_item_call label="Editar a topografia" name="Edit Terrain"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_landmark.xml b/indra/newview/skins/default/xui/pt/menu_landmark.xml new file mode 100644 index 0000000000..6accfebee7 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Copiar SLurl" name="copy"/> + <menu_item_call label="Excluir" name="delete"/> + <menu_item_call label="Criar destaque" name="pick"/> + <menu_item_call label="Adicionar à barra de favoritos" name="add_to_favbar"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml index 7ec324cb3f..3dd5d2c152 100644 --- a/indra/newview/skins/default/xui/pt/menu_login.xml +++ b/indra/newview/skins/default/xui/pt/menu_login.xml @@ -1,13 +1,30 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Login Menu"> - <menu label="Arquivo" name="File"> + <menu label="Eu" name="File"> + <menu_item_call label="Preferências" name="Preferences..."/> <menu_item_call label="Sair" name="Quit"/> </menu> - <menu label="Editar" name="Edit"> - <menu_item_call label="Preferências..." name="Preferences..."/> - </menu> <menu label="Ajuda" name="Help"> <menu_item_call label="Ajuda do [SECOND_LIFE]" name="Second Life Help"/> - <menu_item_call label="Sobre o [APP_NAME]..." name="About Second Life..."/> + </menu> + <menu label="Depurar" name="Debug"> + <menu label="Editar" name="Edit"> + <menu_item_call label="Desfazer" name="Undo"/> + <menu_item_call label="Repetir" name="Redo"/> + <menu_item_call label="Cortar" name="Cut"/> + <menu_item_call label="Copiar" name="Copy"/> + <menu_item_call label="Colar" name="Paste"/> + <menu_item_call label="Excluir" name="Delete"/> + <menu_item_call label="Replicar" name="Duplicate"/> + <menu_item_call label="Selecionar tudo" name="Select All"/> + <menu_item_call label="Desfazer seleção" name="Deselect"/> + </menu> + <menu_item_call label="Mostrar configurações" name="Debug Settings"/> + <menu_item_call label="Configurações da interface e cor" name="UI/Color Settings"/> + <menu_item_call label="Mostrar bandeja lateral" name="Show Side Tray"/> + <menu label="Testes de UI" name="UI Tests"/> + <menu_item_call label="Mostrar TOS" name="TOS"/> + <menu_item_call label="Mostrar mensagem crítica" name="Critical"/> + <menu_item_call label="Teste de navegador web" name="Web Browser Test"/> </menu> </menu_bar> diff --git a/indra/newview/skins/default/xui/pt/menu_mini_map.xml b/indra/newview/skins/default/xui/pt/menu_mini_map.xml index 1293f4e17f..f7b86b8f22 100644 --- a/indra/newview/skins/default/xui/pt/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/pt/menu_mini_map.xml @@ -3,6 +3,7 @@ <menu_item_call label="Zoom Perto" name="Zoom Close"/> <menu_item_call label="Zoom Médio" name="Zoom Medium"/> <menu_item_call label="Zoom Longe" name="Zoom Far"/> + <menu_item_check label="Girar mapa" name="Rotate Map"/> <menu_item_call label="Parar Acompanhamento" name="Stop Tracking"/> - <menu_item_call label="Perfil..." name="Profile"/> + <menu_item_call label="Mapa-múndi" name="World Map"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_navbar.xml b/indra/newview/skins/default/xui/pt/menu_navbar.xml new file mode 100644 index 0000000000..57c1471de3 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_navbar.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Navbar Menu"> + <menu_item_check label="Mostrar coordenadas" name="Show Coordinates"/> + <menu_item_check label="Mostrar as propriedades do terreno" name="Show Parcel Properties"/> + <menu_item_call label="Marco" name="Landmark"/> + <menu_item_call label="Cortar" name="Cut"/> + <menu_item_call label="Copiar" name="Copy"/> + <menu_item_call label="Colar" name="Paste"/> + <menu_item_call label="Excluir" name="Delete"/> + <menu_item_call label="Selecionar tudo" name="Select All"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_nearby_chat.xml b/indra/newview/skins/default/xui/pt/menu_nearby_chat.xml new file mode 100644 index 0000000000..f1ea83c837 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Mostrar quem está aqui..." name="nearby_people"/> + <menu_item_check label="Mostrar texto bloqueado" name="muted_text"/> + <menu_item_check label="Mostrar ícones de amigos" name="show_buddy_icons"/> + <menu_item_check label="Mostrar nomes" name="show_names"/> + <menu_item_check label="Mostrar ícones e nomes" name="show_icons_and_names"/> + <menu_item_call label="Tamanho da fonte" name="font_size"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_object.xml b/indra/newview/skins/default/xui/pt/menu_object.xml new file mode 100644 index 0000000000..658f44d692 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Tocar" name="Object Touch"/> + <menu_item_call label="Editar" name="Edit..."/> + <menu_item_call label="Construir" name="Build"/> + <menu_item_call label="Abrir" name="Open"/> + <menu_item_call label="Sentar aqui" name="Object Sit"/> + <menu_item_call label="Perfil do objeto" name="Object Inspect"/> + <context_menu label="Colocar no(a)" name="Put On"> + <menu_item_call label="Vestir" name="Wear"/> + <context_menu label="Anexar >" name="Object Attach"/> + <context_menu label="Anexar o HUD >" name="Object Attach HUD"/> + </context_menu> + <context_menu label="Tirar >" name="Remove"> + <menu_item_call label="Pegar" name="Pie Object Take"/> + <menu_item_call label="Denunciar abuso" name="Report Abuse..."/> + <menu_item_call label="Bloquear" name="Object Mute"/> + <menu_item_call label="Devolver" name="Return..."/> + <menu_item_call label="Excluir" name="Delete"/> + </context_menu> + <menu_item_call label="Pegar uma cópia" name="Take Copy"/> + <menu_item_call label="Pagar" name="Pay..."/> + <menu_item_call label="Comprar" name="Buy..."/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_object_icon.xml b/indra/newview/skins/default/xui/pt/menu_object_icon.xml new file mode 100644 index 0000000000..7af760a6ee --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Perfil do objeto..." name="Object Profile"/> + <menu_item_call label="Bloquear..." name="Block"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_participant_list.xml b/indra/newview/skins/default/xui/pt/menu_participant_list.xml new file mode 100644 index 0000000000..6db1fe7105 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Ver perfil" name="View Profile"/> + <menu_item_call label="Adicionar amigo..." name="Add Friend"/> + <menu_item_call label="MI" name="IM"/> + <menu_item_call label="Ligar" name="Call"/> + <menu_item_call label="Compartilhar" name="Share"/> + <menu_item_call label="Pagar" name="Pay"/> + <menu_item_check label="Bloquear/desbloquear" name="Block/Unblock"/> + <menu_item_check label="Silenciar texto" name="MuteText"/> + <menu_item_check label="Pode bater papo por escrito" name="AllowTextChat"/> + <menu_item_call label="Silenciar este participante" name="ModerateVoiceMuteSelected"/> + <menu_item_call label="Silenciar os demais" name="ModerateVoiceMuteOthers"/> + <menu_item_call label="Desfazer silenciar deste participante" name="ModerateVoiceUnMuteSelected"/> + <menu_item_call label="Desfazer silenciar dos demais" name="ModerateVoiceUnMuteOthers"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_friends_view_sort.xml new file mode 100644 index 0000000000..25a37488d7 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Ordenar por nome" name="sort_name"/> + <menu_item_check label="Ordenar por status" name="sort_status"/> + <menu_item_check label="Ver ícones de pessoas" name="view_icons"/> + <menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_people_groups_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_groups_view_sort.xml new file mode 100644 index 0000000000..86a9d2263f --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Mostrar ícones de grupos" name="Display Group Icons"/> + <menu_item_call label="Sair do grupo selecionado" name="Leave Selected Group"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby.xml new file mode 100644 index 0000000000..eb47f51ed0 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Ver perfil" name="View Profile"/> + <menu_item_call label="Adicionar amigo..." name="Add Friend"/> + <menu_item_call label="MI" name="IM"/> + <menu_item_call label="Ligar" name="Call"/> + <menu_item_call label="Compartilhar" name="Share"/> + <menu_item_call label="Pagar" name="Pay"/> + <menu_item_check label="Bloquear/desbloquear" name="Block/Unblock"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml new file mode 100644 index 0000000000..855e7c9920 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Adicionar amigo..." name="Add Friends"/> + <menu_item_call label="MI" name="IM"/> + <menu_item_call label="Ligar" name="Call"/> + <menu_item_call label="Compartilhar" name="Share"/> + <menu_item_call label="Pagar" name="Pay"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml new file mode 100644 index 0000000000..228ce46a31 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Ordenar por conversas mais recentes" name="sort_by_recent_speakers"/> + <menu_item_check label="Ordenar por nome" name="sort_name"/> + <menu_item_check label="Ordenar por distância" name="sort_distance"/> + <menu_item_check label="Ver ícones de pessoas" name="view_icons"/> + <menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_recent_view_sort.xml new file mode 100644 index 0000000000..f3b89e01cd --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Ordenar por mais recente" name="sort_most"/> + <menu_item_check label="Ordenar por nome" name="sort_name"/> + <menu_item_check label="Ver ícones de pessoas" name="view_icons"/> + <menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_picks.xml b/indra/newview/skins/default/xui/pt/menu_picks.xml new file mode 100644 index 0000000000..8b9e10fc02 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Editar" name="pick_edit"/> + <menu_item_call label="Teletransportar" name="pick_teleport"/> + <menu_item_call label="Mapa" name="pick_map"/> + <menu_item_call label="Excluir" name="pick_delete"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_picks_plus.xml b/indra/newview/skins/default/xui/pt/menu_picks_plus.xml new file mode 100644 index 0000000000..95a7c05262 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Adicionar" name="create_pick"/> + <menu_item_call label="Novo anúncio" name="create_classified"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_place.xml b/indra/newview/skins/default/xui/pt/menu_place.xml new file mode 100644 index 0000000000..282ea20a7a --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Criar marco" name="landmark"/> + <menu_item_call label="Criar destaque" name="pick"/> + <menu_item_call label="Comprar passe" name="pass"/> + <menu_item_call label="Editar" name="edit"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_place_add_button.xml b/indra/newview/skins/default/xui/pt/menu_place_add_button.xml new file mode 100644 index 0000000000..d099d04f8d --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Adicionar pasta" name="add_folder"/> + <menu_item_call label="Adicionar marco" name="add_landmark"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/pt/menu_places_gear_folder.xml new file mode 100644 index 0000000000..2059a9ed2d --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Adicionar marco" name="add_landmark"/> + <menu_item_call label="Adicionar pasta" name="add_folder"/> + <menu_item_call label="Cortar" name="cut"/> + <menu_item_call label="Copiar" name="copy_folder"/> + <menu_item_call label="Colar" name="paste"/> + <menu_item_call label="Renomear" name="rename"/> + <menu_item_call label="Excluir" name="delete"/> + <menu_item_call label="Expanda" name="expand"/> + <menu_item_call label="Recolher" name="collapse"/> + <menu_item_call label="Expandir todas as pastas" name="expand_all"/> + <menu_item_call label="Recolher todas as pastas" name="collapse_all"/> + <menu_item_check label="Ordenar por data" name="sort_by_date"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/pt/menu_places_gear_landmark.xml new file mode 100644 index 0000000000..52a9d13735 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Teletransportar" name="teleport"/> + <menu_item_call label="Mais informações" name="more_info"/> + <menu_item_call label="Mostrar no mapa" name="show_on_map"/> + <menu_item_call label="Adicionar marco" name="add_landmark"/> + <menu_item_call label="Adicionar pasta" name="add_folder"/> + <menu_item_call label="Cortar" name="cut"/> + <menu_item_call label="Copiar marco" name="copy_landmark"/> + <menu_item_call label="Copiar SLurl" name="copy_slurl"/> + <menu_item_call label="Colar" name="paste"/> + <menu_item_call label="Renomear" name="rename"/> + <menu_item_call label="Excluir" name="delete"/> + <menu_item_call label="Expandir todas as pastas" name="expand_all"/> + <menu_item_call label="Recolher todas as pastas" name="collapse_all"/> + <menu_item_check label="Ordenar por data" name="sort_by_date"/> + <menu_item_call label="Criar destaque" name="create_pick"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_profile_overflow.xml b/indra/newview/skins/default/xui/pt/menu_profile_overflow.xml new file mode 100644 index 0000000000..b3e09bc695 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Pagar" name="pay"/> + <menu_item_call label="Compartilhar" name="share"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_slurl.xml b/indra/newview/skins/default/xui/pt/menu_slurl.xml index 67a4b51b61..6d4c84fc3c 100644 --- a/indra/newview/skins/default/xui/pt/menu_slurl.xml +++ b/indra/newview/skins/default/xui/pt/menu_slurl.xml @@ -2,5 +2,5 @@ <menu name="Popup"> <menu_item_call label="Sobre a URL" name="about_url"/> <menu_item_call label="Teletransporte para a URL" name="teleport_to_url"/> - <menu_item_call label="Mostrar no Mapa" name="show_on_map"/> + <menu_item_call label="Mapa" name="show_on_map"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_gear.xml new file mode 100644 index 0000000000..f034509be8 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Expandir todas as pastas" name="Expand all folders"/> + <menu_item_call label="Recolher todas as pastas" name="Collapse all folders"/> + <menu_item_call label="Limpar histórico de teletransporte" name="Clear Teleport History"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_item.xml new file mode 100644 index 0000000000..b4216b7ddc --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Teletransportar" name="Teleport"/> + <menu_item_call label="Mais informações" name="More Information"/> + <menu_item_call label="Copiar para área de transferência" name="CopyToClipboard"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_teleport_history_tab.xml b/indra/newview/skins/default/xui/pt/menu_teleport_history_tab.xml new file mode 100644 index 0000000000..6a633cf74c --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Abrir" name="TabOpen"/> + <menu_item_call label="Fechar" name="TabClose"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_text_editor.xml b/indra/newview/skins/default/xui/pt/menu_text_editor.xml new file mode 100644 index 0000000000..31c284c6ed --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Cortar" name="Cut"/> + <menu_item_call label="Copiar" name="Copy"/> + <menu_item_call label="Colar" name="Paste"/> + <menu_item_call label="Excluir" name="Delete"/> + <menu_item_call label="Selecionar tudo" name="Select All"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_agent.xml b/indra/newview/skins/default/xui/pt/menu_url_agent.xml new file mode 100644 index 0000000000..ba5e055124 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Mostrar perfil de residente" name="show_agent"/> + <menu_item_call label="Copiar nome para área de transferência" name="url_copy_label"/> + <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_group.xml b/indra/newview/skins/default/xui/pt/menu_url_group.xml new file mode 100644 index 0000000000..5b67a69c9a --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Mostrar informações do grupo" name="show_group"/> + <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy_label"/> + <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_http.xml b/indra/newview/skins/default/xui/pt/menu_url_http.xml new file mode 100644 index 0000000000..e53a2572b8 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Abrir página da web" name="url_open"/> + <menu_item_call label="Abrir no navegador do SL" name="url_open_internal"/> + <menu_item_call label="Abrir no navegador externo" name="url_open_external"/> + <menu_item_call label="Copiar URL para área de transferência" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_inventory.xml b/indra/newview/skins/default/xui/pt/menu_url_inventory.xml new file mode 100644 index 0000000000..45c14355d0 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Mostrar item de inventário" name="show_item"/> + <menu_item_call label="Copiar nome para área de transferência" name="url_copy_label"/> + <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_map.xml b/indra/newview/skins/default/xui/pt/menu_url_map.xml new file mode 100644 index 0000000000..ba114cccaa --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Mostrar no mapa" name="show_on_map"/> + <menu_item_call label="Teletransportar para este lugar" name="teleport_to_location"/> + <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_objectim.xml b/indra/newview/skins/default/xui/pt/menu_url_objectim.xml new file mode 100644 index 0000000000..c197444181 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Mostrar informações sobre o objeto" name="show_object"/> + <menu_item_call label="Mostrar no mapa" name="show_on_map"/> + <menu_item_call label="Teletransportar para lugar do objeto" name="teleport_to_object"/> + <menu_item_call label="Copiar nome do objeto para área de transferência" name="url_copy_label"/> + <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_parcel.xml b/indra/newview/skins/default/xui/pt/menu_url_parcel.xml new file mode 100644 index 0000000000..6cc668bfd3 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Mostrar informações sobre este lote" name="show_parcel"/> + <menu_item_call label="Mostrar no mapa" name="show_on_map"/> + <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_slapp.xml b/indra/newview/skins/default/xui/pt/menu_url_slapp.xml new file mode 100644 index 0000000000..d0784149ac --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Executar este comando" name="run_slapp"/> + <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_slurl.xml b/indra/newview/skins/default/xui/pt/menu_url_slurl.xml new file mode 100644 index 0000000000..7216ccf0b3 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Mostrar informações sobre este lugar" name="show_place"/> + <menu_item_call label="Mostrar no mapa" name="show_on_map"/> + <menu_item_call label="Teletransportar para este lugar" name="teleport_to_location"/> + <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_url_teleport.xml b/indra/newview/skins/default/xui/pt/menu_url_teleport.xml new file mode 100644 index 0000000000..f007425646 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Teletransportar para este lugar" name="teleport"/> + <menu_item_call label="Mostrar no mapa" name="show_on_map"/> + <menu_item_call label="Copiar SLurl para área de transferência" name="url_copy"/> +</context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index 2c887fa50c..acadc952ca 100644 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -1,217 +1,326 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu_bar name="Main Menu"> - <menu name="Me"> + <menu label="Eu" name="Me"> <menu_item_call label="Preferências" 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=pt" /> + <menu_item_call label="Meu painel" name="Manage My Account"> + <menu_item_call.on_click name="ManageMyAccount_url" parameter="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=pt"/> </menu_item_call> + <menu_item_call label="Comprar L$" name="Buy and Sell L$"/> + <menu_item_call label="Meu perfil" name="Profile"/> + <menu_item_call label="Minha aparência" name="Appearance"/> + <menu_item_check label="Meu inventário" name="Inventory"/> + <menu_item_call label="Mostrar inventário na bandeja lateral" name="ShowSidetrayInventory"/> + <menu_item_call label="Meus gestos" name="Gestures"/> + <menu label="Meu status" name="Status"> + <menu_item_call label="Ausente" name="Set Away"/> + <menu_item_call label="Ocupado" name="Set Busy"/> + </menu> + <menu_item_call label="Request Admin Status" name="Request Admin Options"/> + <menu_item_call label="Sair do modo admin" name="Leave Admin Options"/> + <menu_item_call label="Sair do [APP_NAME]" name="Quit"/> </menu> - <menu label="Arquivo" name="File"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu label="Upload" name="upload"> - <menu_item_call label="Imagem (L$[COST])..." name="Upload Image"/> - <menu_item_call label="Som (L$[COST])..." name="Upload Sound"/> - <menu_item_call label="Animação (L$[COST])..." name="Upload Animation"/> - <menu_item_call label="Bulk (L$[COST] por arquivo)..." name="Bulk Upload"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Definir Permissões Padrão..." name="perm prefs"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Fechar janela" name="Close Window"/> - <menu_item_call label="Fechar todas as janelas" name="Close All Windows"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Salvar textura como..." name="Save Texture As..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Tirar Foto" name="Take Snapshot"/> - <menu_item_call label="Salvar Foto no disco" name="Snapshot to Disk"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Sair" name="Quit"/> - </menu> - <menu label="Editar" name="Edit"> - <menu_item_call label="Voltar" name="Undo"/> - <menu_item_call label="Avançar" name="Redo"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Cortar" name="Cut"/> - <menu_item_call label="Copiar" name="Copy"/> - <menu_item_call label="Colar" name="Paste"/> - <menu_item_call label="Apagar" name="Delete"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Procurar..." name="Search..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Selecionar todos" name="Select All"/> - <menu_item_call label="Retirar seleção" name="Deselect"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Duplicar" name="Duplicate"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu label="Anexar objeto" name="Attach Object"/> - <menu label="Desanexar objeto" name="Detach Object"/> - <menu label="Tirar a roupa" name="Take Off Clothing"> - <menu_item_call label="Camiseta" name="Shirt"/> - <menu_item_call label="Calças" name="Pants"/> - <menu_item_call label="Sapatos" name="Shoes"/> - <menu_item_call label="Meias" name="Socks"/> - <menu_item_call label="Blusa" name="Jacket"/> - <menu_item_call label="Luvas" name="Gloves"/> - <menu_item_call label="Anágua" name="Menu Undershirt"/> - <menu_item_call label="Roupa de baixo" name="Menu Underpants"/> - <menu_item_call label="saia" name="Skirt"/> - <menu_item_call label="Toda a roupa" name="All Clothes"/> - </menu> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Gestos..." name="Gestures..."/> - <menu_item_call label="Perfil..." name="Profile..."/> - <menu_item_call label="Aparência..." name="Appearance..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_check label="Amigos..." name="Friends..."/> - <menu_item_call label="Grupos..." name="Groups..."/> - <menu_item_separator label="-----------" name="separator8"/> - <menu_item_call label="Preferências..." name="Preferences..."/> - </menu> - <menu label="Exibir" name="View"> - <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> - <menu_item_call label="Visão do mouse" name="Mouselook"/> - <menu_item_check label="Construir" name="Build"/> - <menu_item_check label="Câmera voadora pelo joystick" name="Joystick Flycam"/> - <menu_item_call label="Resetar visão" name="Reset View"/> - <menu_item_call label="Olhar para o último movimento" name="Look at Last Chatter"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Barra de ferramentas" name="Toolbar"/> - <menu_item_check label="Conversa local" name="Chat History"/> - <menu_item_check label="Comunicar" name="Instant Message"/> - <menu_item_check label="Inventário" name="Inventory"/> - <menu_item_check label="Falantes Ativos" name="Active Speakers"/> - <menu_item_check label="Lista de residentes e objetos silenciados" name="Mute List"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Controles de câmera" name="Camera Controls"/> - <menu_item_check label="Controles de movimento" name="Movement Controls"/> - <menu_item_check label="Mapa do mundo" name="World Map"/> - <menu_item_check label="Mini-Mapa" name="Mini-Map"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Barra de estatísticas" name="Statistics Bar"/> - <menu_item_check label="Linhas de propriedades" name="Property Lines"/> - <menu_item_check label="Linhas de banimento" name="Banlines"/> - <menu_item_check label="Donos de terrenos" name="Land Owners"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu label="Dicas" name="Hover Tips"> - <menu_item_check label="Mostrar dicas" name="Show Tips"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Dicas de terreno" name="Land Tips"/> - <menu_item_check label="Dicas de todos os objetos" name="Tips On All Objects"/> - </menu> - <menu_item_check label="Luz para transparência" name="Highlight Transparent"/> - <menu_item_check label="Balizas" name="beacons"/> - <menu_item_check label="Esconder partículas" name="Hide Particles"/> - <menu_item_check label="Mostrar anexo em HUD" name="Show HUD Attachments"/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Mais zoom" name="Zoom In"/> - <menu_item_call label="Zoom padrão" name="Zoom Default"/> - <menu_item_call label="Menos zoom" name="Zoom Out"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Tela cheia" name="Toggle Fullscreen"/> - <menu_item_call label="Ajustar o tamanho da UI ao padrão" name="Set UI Size to Default"/> + <menu label="Comunicar" name="Communicate"> + <menu_item_call label="Meus amigos" name="My Friends"/> + <menu_item_call label="Meus grupos" name="My Groups"/> + <menu_item_check label="Bate-papo local" name="Nearby Chat"/> + <menu_item_call label="Pessoas por perto" name="Active Speakers"/> + <menu_item_check label="Mídia por perto" name="Nearby Media"/> </menu> <menu label="Mundo" name="World"> - <menu_item_call label="Conversa" name="Chat"/> - <menu_item_check label="Sempre Correr" name="Always Run"/> - <menu_item_check label="Voar" name="Fly"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Criar Landmark aqui" name="Create Landmark Here"/> - <menu_item_call label="Marcar como casa" name="Set Home to Here"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Teletransportar para casa" name="Teleport Home"/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Deixar ausente" name="Set Away"/> - <menu_item_call label="Deixar Ocupado" name="Set Busy"/> - <menu_item_call label="Parar Animação do Meu Avatar" name="Stop Animating My Avatar"/> - <menu_item_call label="Liberar teclas" name="Release Keys"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Histórico de conta..." name="Account History..."> - <on_click name="AccountHistory_url" userdata="WebLaunchAccountHistory,http://secondlife.com/account/transactions.php?lang=pt"/> - </menu_item_call> - <menu_item_call label="Gerenciar minha conta..." name="Manage My Account..."> - <on_click name="ManageMyAccount_url" userdata="WebLaunchJoinNow,http://secondlife.com/account/index.php?lang=pt"/> - </menu_item_call> - <menu_item_call label="Comprar L$..." name="Buy and Sell L$..."/> - <menu_item_separator label="-----------" name="separator5"/> - <menu_item_call label="Meu terreno..." name="My Land..."/> - <menu_item_call label="Sobre o terreno..." name="About Land..."/> - <menu_item_call label="Comprar terreno..." name="Buy Land..."/> - <menu_item_call label="Região/Propriedade..." name="Region/Estate..."/> - <menu_item_separator label="-----------" name="separator6"/> - <menu label="Configurações de ambiente" name="Environment Settings"> + <menu_item_check label="Movimentar" name="Movement Controls"/> + <menu_item_check label="Exibir" name="Camera Controls"/> + <menu_item_call label="Sobre terrenos" name="About Land"/> + <menu_item_call label="Região/Propriedade" name="Region/Estate"/> + <menu_item_call label="Comprar terreno" name="Buy Land"/> + <menu_item_call label="Meus terrenos" name="My Land"/> + <menu label="Mostrar" name="Land"> + <menu_item_check label="Limites" name="Ban Lines"/> + <menu_item_check label="Balizas" name="beacons"/> + <menu_item_check label="Limites do imóvel" name="Property Lines"/> + <menu_item_check label="Proprietários" name="Land Owners"/> + </menu> + <menu label="Marcos" name="Landmarks"> + <menu_item_call label="Colocar marco aqui" name="Create Landmark Here"/> + <menu_item_call label="Definir como casa" name="Set Home to Here"/> + </menu> + <menu_item_call label="Início" name="Teleport Home"/> + <menu_item_check label="Mini Mapa" name="Mini-Map"/> + <menu_item_check label="Mapa-múndi" name="World Map"/> + <menu_item_call label="Foto" name="Take Snapshot"/> + <menu label="Sol" name="Environment Settings"> <menu_item_call label="Amanhecer" name="Sunrise"/> <menu_item_call label="Meio-dia" name="Noon"/> <menu_item_call label="Pôr-do-Sol" name="Sunset"/> <menu_item_call label="Meia-noite" name="Midnight"/> - <menu_item_call label="Reverter ao padrão da região" name="Revert to Region Default"/> - <menu_item_separator label="-----------" name="separator"/> + <menu_item_call label="Usar o horário deste lugar" name="Revert to Region Default"/> <menu_item_call label="Editor de ambiente" name="Environment Editor"/> </menu> </menu> - <menu label="Ferramentas" name="Tools"> - <menu label="Selecionar ferramenta" name="Select Tool"> - <menu_item_call label="Foco" name="Focus"/> - <menu_item_call label="Mover" name="Move"/> - <menu_item_call label="Editar" name="Edit"/> - <menu_item_call label="Criar" name="Create"/> - <menu_item_call label="Terreno" name="Land"/> - </menu> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_check label="Selecionar apenas meus objetos" name="Select Only My Objects"/> - <menu_item_check label="Selecionar apenas objetos móveis" name="Select Only Movable Objects"/> - <menu_item_check label="Selecionar objetos pela vizinhança" name="Select By Surrounding"/> - <menu_item_check label="Mostrar seleções escondidas" name="Show Hidden Selection"/> - <menu_item_check label="Mostrar luz radiante para seleção" name="Show Light Radius for Selection"/> - <menu_item_check label="Mostrar seleções de feixes" name="Show Selection Beam"/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_check label="Alinhar à grade" name="Snap to Grid"/> - <menu_item_call label="Alinhar xy do objeto à grade" name="Snap Object XY to Grid"/> - <menu_item_call label="Usar seleção na grade" name="Use Selection for Grid"/> - <menu_item_call label="Opções de grade..." name="Grid Options..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_check label="Editar partes unidas" name="Edit Linked Parts"/> - <menu_item_call label="Unir" name="Link"/> - <menu_item_call label="Desunir" name="Unlink"/> - <menu_item_separator label="-----------" name="separator4"/> - <menu_item_call label="Foco na seleção" name="Focus on Selection"/> - <menu_item_call label="Zoom na Seleção" name="Zoom to Selection"/> - <menu_item_call label="Comprar el objeto" name="Menu Object Take"> - <on_enable userdata="Comprar,Pegar" name="EnableBuyOrTake"/> - </menu_item_call> - <menu_item_call label="Pegar cópia" name="Take Copy"/> - <menu_item_call label="Salvar objeto de volta aos conteúdos do objeto" name="Save Object Back to Object Contents"/> - <menu_item_separator label="-----------" name="separator6"/> - <menu_item_call label="Mostrar scripts defeituosos/Erros de janela" name="Show Script Warning/Error Window"/> - <menu label="Recompilar os scripts na seleção" name="Recompile Scripts in Selection"> - <menu_item_call label="Mono" name="Mono"/> - <menu_item_call label="LSL" name="LSL"/> - </menu> - <menu_item_call label="Resetar scripts selecionados" name="Reset Scripts in Selection"/> - <menu_item_call label="Ajustar scripts para rodar na seleção" name="Set Scripts to Running in Selection"/> - <menu_item_call label="Ajustar scripts para não rodar na seleção" name="Set Scripts to Not Running in Selection"/> + <menu label="Construir" name="BuildTools"> + <menu_item_check label="Construir" name="Show Build Tools"/> + <menu label="Selecionar ferramenta de construção" name="Select Tool"> + <menu_item_call label="Ferramenta enfoque" name="Focus"/> + <menu_item_call label="Ferramenta de movimentação" name="Move"/> + <menu_item_call label="Ferramenta de edição" name="Edit"/> + <menu_item_call label="Ferramenta criar" name="Create"/> + <menu_item_call label="Ferramenta de terrenos" name="Land"/> + </menu> + <menu label="Editar" name="Edit"> + <menu_item_call label="Desfazer" name="Undo"/> + <menu_item_call label="Repetir" name="Redo"/> + <menu_item_call label="Cortar" name="Cut"/> + <menu_item_call label="Copiar" name="Copy"/> + <menu_item_call label="Colar" name="Paste"/> + <menu_item_call label="Excluir" name="Delete"/> + <menu_item_call label="Replicar" name="Duplicate"/> + <menu_item_call label="Selecionar tudo" name="Select All"/> + <menu_item_call label="Desfazer seleção" name="Deselect"/> + </menu> + <menu_item_call label="Link" name="Link"/> + <menu_item_call label="Desconectar links" name="Unlink"/> + <menu_item_call label="Focus on Selection" name="Focus on Selection"/> + <menu_item_call label="Ampliar seleção" name="Zoom to Selection"/> + <menu label="Objeto:" name="Object"> + <menu_item_call label="Comprar" name="Menu Object Take"/> + <menu_item_call label="Pegar uma cópia" name="Take Copy"/> + <menu_item_call label="Salvar no meu inventário" name="Save Object Back to My Inventory"/> + <menu_item_call label="Save Back to Object Contents" name="Save Object Back to Object Contents"/> + </menu> + <menu label="Scripts" name="Scripts"> + <menu_item_call label="Recompilar scripts (LSL)" name="Mono"/> + <menu_item_call label="Recompilar scripts (LSL)" name="LSL"/> + <menu_item_call label="Reset Scripts" name="Reset Scripts"/> + <menu_item_call label="Scripts em modo execução" name="Set Scripts to Running"/> + <menu_item_call label="Scripts em modo não execução" name="Set Scripts to Not Running"/> + </menu> + <menu label="Opções" name="Options"> + <menu_item_check label="Edit Linked Parts" name="Edit Linked Parts"/> + <menu_item_call label="Set Default Upload Permissions" name="perm prefs"/> + <menu_item_check label="Mostrar permissões avançadas" name="DebugPermissions"/> + <menu label="Seleção" name="Selection"> + <menu_item_check label="Só selecionar meus objetos" name="Select Only My Objects"/> + <menu_item_check label="Só selecionar meus objetos" name="Select Only Movable Objects"/> + <menu_item_check label="Selecionar contornando" name="Select By Surrounding"/> + </menu> + <menu label="Mostrar" name="Show"> + <menu_item_check label="Mostrar seleção oculta" name="Show Hidden Selection"/> + <menu_item_check label="Show Light Radius for Selection" name="Show Light Radius for Selection"/> + <menu_item_check label="Show Selection Beam" name="Show Selection Beam"/> + </menu> + <menu label="Grade" name="Grid"> + <menu_item_check label="Mostrar na grade" name="Snap to Grid"/> + <menu_item_call label="Snap Object XY to Grid" name="Snap Object XY to Grid"/> + <menu_item_call label="Use Selection for Grid" name="Use Selection for Grid"/> + <menu_item_call label="Opções de grade" name="Grid Options"/> + </menu> + </menu> + <menu label="Selecionar partes conectadas" name="Select Linked Parts"> + <menu_item_call label="Select Next Part" name="Select Next Part"/> + <menu_item_call label="Select Previous Part" name="Select Previous Part"/> + <menu_item_call label="Include Next Part" name="Include Next Part"/> + <menu_item_call label="Include Previous Part" name="Include Previous Part"/> + </menu> </menu> <menu label="Ajuda" name="Help"> - <menu_item_call label="Ajuda [SECOND_LIFE]" name="Second Life Help"/> + <menu_item_call label="[SECOND_LIFE] Ajuda" name="Second Life Help"/> <menu_item_call label="Tutorial" name="Tutorial"/> - <menu_item_separator label="-----------" name="separator"/> - <menu_item_call label="Blog oficial da Linden..." name="Official Linden Blog..."/> - <menu_item_separator label="-----------" name="separator2"/> - <menu_item_call label="Portal de Scripts..." name="Scripting Portal..."/> - <menu_item_separator label="-----------" name="separator3"/> - <menu_item_call label="Reportar Abuso..." name="Report Abuse..."/> - <menu_item_call label="Colisões, impulsos e batidas..." name="Bumps, Pushes &amp; Hits..."/> - <menu_item_call label="Medidor de Lag" name="Lag Meter"/> - <menu_item_separator label="-----------" name="separator7"/> - <menu label="Reportando Bug" name="Bug Reporting"> - <menu_item_call label="Rastreador público de problemas..." name="Public Issue Tracker..."/> - <menu_item_call label="Ajuda do rastreador público de problemas..." name="Publc Issue Tracker Help..."/> - <menu_item_separator label="-----------" name="separator7"/> - <menu_item_call label="Reportando Bug 101..." name="Bug Reporing 101..."/> - <menu_item_call label="Questões de Segurança..." name="Security Issues..."/> - <menu_item_call label="Wiki de QA ..." name="QA Wiki..."/> - <menu_item_separator label="-----------" name="separator9"/> - <menu_item_call label="Reportar Bug..." name="Report Bug..."/> - </menu> - <menu_item_call label="Sobre [APP_NAME]..." name="About Second Life..."/> + <menu_item_call label="Denunciar abuso" name="Report Abuse"/> + <menu_item_call label="Relatar bug" name="Report Bug"/> + </menu> + <menu label="Avançado" name="Advanced"> + <menu_item_check label="Status 'ausente' em 30 minutos" name="Go Away/AFK When Idle"/> + <menu_item_call label="Parar minha animação" name="Stop Animating My Avatar"/> + <menu_item_call label="Recarregar texturas" name="Rebake Texture"/> + <menu_item_call label="Interface tamanho padrão" name="Set UI Size to Default"/> + <menu_item_check label="Limitar distância da seleção" name="Limit Select Distance"/> + <menu_item_check label="Disable Camera Constraints" name="Disable Camera Distance"/> + <menu_item_check label="Foto de alta resolução" name="HighResSnapshot"/> + <menu_item_check label="Compactar fotos para HD" name="QuietSnapshotsToDisk"/> + <menu_item_check label="Compactar fotos para HD" name="CompressSnapshotsToDisk"/> + <menu label="Ferramentas de desempenho" name="Performance Tools"> + <menu_item_call label="Lag Meter" name="Lag Meter"/> + <menu_item_check label="Barra de estatísticas" name="Statistics Bar"/> + <menu_item_check label="Show Avatar Rendering Cost" name="Avatar Rendering Cost"/> + </menu> + <menu label="Realces e visibilidade" name="Highlighting and Visibility"> + <menu_item_check label="Efeito baliza piscando" name="Cheesy Beacon"/> + <menu_item_check label="Hide Particles" name="Hide Particles"/> + <menu_item_check label="Ocultar seleções" name="Hide Selected"/> + <menu_item_check label="Realçar transparentes" name="Highlight Transparent"/> + <menu_item_check label="Mostrar anexos HUD" name="Show HUD Attachments"/> + <menu_item_check label="Mostrar retículo na vista subjetiva" name="ShowCrosshairs"/> + <menu_item_check label="Mostrar dicas de terreno" name="Land Tips"/> + </menu> + <menu label="Tipos de renderização" name="Rendering Types"> + <menu_item_check label="Simples" name="Simple"/> + <menu_item_check label="Alpha" name="Alpha"/> + <menu_item_check label="Árvore" name="Tree"/> + <menu_item_check label="Avatares" name="Character"/> + <menu_item_check label="SurfacePath" name="SurfacePath"/> + <menu_item_check label="Céu" name="Sky"/> + <menu_item_check label="Água" name="Water"/> + <menu_item_check label="Chão" name="Ground"/> + <menu_item_check label="Volume" name="Volume"/> + <menu_item_check label="Grama" name="Grass"/> + <menu_item_check label="Nuvens" name="Clouds"/> + <menu_item_check label="Particles" name="Particles"/> + <menu_item_check label="Elevação" name="Bump"/> + </menu> + <menu label="Recursos de renderização" name="Rendering Features"> + <menu_item_check label="Interface" name="UI"/> + <menu_item_check label="Selecionado" name="Selected"/> + <menu_item_check label="Realçado" name="Highlighted"/> + <menu_item_check label="Texturas dinâmicas" name="Dynamic Textures"/> + <menu_item_check label="Foot Shadows" name="Foot Shadows"/> + <menu_item_check label="Fog" name="Fog"/> + <menu_item_check label="Flexible Objects" name="Flexible Objects"/> + </menu> + <menu_item_check label="Executar diversas instâncias" name="Run Multiple Threads"/> + <menu_item_call label="Limpar cache de grupo" name="ClearGroupCache"/> + <menu_item_check label="Mouse Smoothing" name="Mouse Smoothing"/> + <menu_item_check label="Mostrar MIs no bate-papo" name="IMInChat"/> + <menu label="Atalhos" name="Shortcuts"> + <menu_item_check label="Busca" name="Search"/> + <menu_item_call label="Soltar objeto" name="Release Keys"/> + <menu_item_call label="Interface tamanho padrão" name="Set UI Size to Default"/> + <menu_item_check label="Correr sempre" name="Always Run"/> + <menu_item_check label="Voar" name="Fly"/> + <menu_item_call label="Fechar janela" name="Close Window"/> + <menu_item_call label="Fechar todas as janelas" name="Close All Windows"/> + <menu_item_call label="Gravar fotos no HD" name="Snapshot to Disk"/> + <menu_item_call label="Visão subjetiva" name="Mouselook"/> + <menu_item_check label="Flycam Joystick" name="Joystick Flycam"/> + <menu_item_call label="Visão padrão" name="Reset View"/> + <menu_item_call label="Olhar para quem fala por último" name="Look at Last Chatter"/> + <menu label="Selecionar ferramenta de construção" name="Select Tool"> + <menu_item_call label="Ferramenta enfoque" name="Focus"/> + <menu_item_call label="Ferramenta de movimentação" name="Move"/> + <menu_item_call label="Ferramenta de edição" name="Edit"/> + <menu_item_call label="Ferramenta criar" name="Create"/> + <menu_item_call label="Ferramenta de terrenos" name="Land"/> + </menu> + <menu_item_call label="Mais zoom" name="Zoom In"/> + <menu_item_call label="Zoom padrão" name="Zoom Default"/> + <menu_item_call label="Menos zoom" name="Zoom Out"/> + <menu_item_call label="Alternar tela inteira" name="Toggle Fullscreen"/> + </menu> + <menu_item_call label="Mostrar configurações de depuração" name="Debug Settings"/> + <menu_item_check label="Show Develop Menu" name="Debug Mode"/> + </menu> + <menu label="Desenvolver" name="Develop"> + <menu label="Painéis" name="Consoles"> + <menu_item_check label="Painel de textura" name="Texture Console"/> + <menu_item_check label="Debug Console" name="Debug Console"/> + <menu_item_call label="Painel de avisos" name="Notifications"/> + <menu_item_check label="Painel de tamanho de textura" name="Texture Size"/> + <menu_item_check label="Painel de texturas" name="Texture Category"/> + <menu_item_check label="Tempos" name="Fast Timers"/> + <menu_item_check label="Memória" name="Memory"/> + <menu_item_call label="Region Info to Debug Console" name="Region Info to Debug Console"/> + <menu_item_check label="Câmera:" name="Camera"/> + <menu_item_check label="Vento" name="Wind"/> + </menu> + <menu label="Show Info" name="Display Info"> + <menu_item_check label="Mostrar hora" name="Show Time"/> + <menu_item_check label="Show Render Info" name="Show Render Info"/> + <menu_item_check label="Mostrar cor sob o cursor" name="Show Color Under Cursor"/> + <menu_item_check label="Mostrar mudanças a objetos" name="Show Updates"/> + </menu> + <menu label="Force an Error" name="Force Errors"> + <menu_item_call label="Force Breakpoint" name="Force Breakpoint"/> + <menu_item_call label="Force LLError And Crash" name="Force LLError And Crash"/> + <menu_item_call label="Force Bad Memory Access" name="Force Bad Memory Access"/> + <menu_item_call label="Force an Infinite Loop" name="Force Infinite Loop"/> + <menu_item_call label="Force Driver Crash" name="Force Driver Carsh"/> + <menu_item_call label="Force Software Exception" name="Force Software Exception"/> + <menu_item_call label="Force Disconnect Viewer" name="Force Disconnect Viewer"/> + <menu_item_call label="Simulate a Memory Leak" name="Memory Leaking Simulation"/> + </menu> + <menu label="Render Tests" name="Render Tests"> + <menu_item_check label="Camera Offset" name="Camera Offset"/> + <menu_item_check label="Taxa de quadros aleatória" name="Randomize Framerate"/> + <menu_item_check label="Frame Test" name="Frame Test"/> + </menu> + <menu label="Rendering" name="Rendering"> + <menu_item_check label="Axes" name="Axes"/> + <menu_item_check label="Contornos" name="Wireframe"/> + <menu_item_check label="Global Illumination" name="Global Illumination"/> + <menu_item_check label="Texturas de animação" name="Animation Textures"/> + <menu_item_check label="Desativar texturas" name="Disable Textures"/> + <menu_item_check label="Render Attached Lights" name="Render Attached Lights"/> + <menu_item_check label="Render Attached Particles" name="Render Attached Particles"/> + <menu_item_check label="Objetos iridescentes" name="Hover Glow Objects"/> + </menu> + <menu label="Network" name="Network"> + <menu_item_check label="Pausar avatar" name="AgentPause"/> + <menu_item_call label="Drop a Packet" name="Drop a Packet"/> + </menu> + <menu_item_call label="Bumps, Pushes & Hits" name="Bumps, Pushes &amp; Hits"/> + <menu label="Mundo" name="World"> + <menu_item_check label="Impor sobre sol regional" name="Sim Sun Override"/> + <menu_item_check label="Efeito baliza piscando" name="Cheesy Beacon"/> + <menu_item_check label="Fixed Weather" name="Fixed Weather"/> + <menu_item_call label="Dump Region Object Cache" name="Dump Region Object Cache"/> + </menu> + <menu label="Interface" name="UI"> + <menu_item_call label="Teste de navegador web" name="Web Browser Test"/> + <menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/> + <menu_item_call label="Memory Stats" name="Memory Stats"/> + <menu_item_check label="Double-Click Auto-Pilot" name="Double-ClickAuto-Pilot"/> + <menu_item_check label="Debug Clicks" name="Debug Clicks"/> + <menu_item_check label="Debug Mouse Events" name="Debug Mouse Events"/> + </menu> + <menu label="XUI" name="XUI"> + <menu_item_call label="Recarregar cores" name="Reload Color Settings"/> + <menu_item_call label="Show Font Test" name="Show Font Test"/> + <menu_item_call label="Load from XML" name="Load from XML"/> + <menu_item_call label="Salvar para XML" name="Save to XML"/> + <menu_item_check label="Mostrar nomes XUI" name="Show XUI Names"/> + <menu_item_call label="Enviar MIs de teste" name="Send Test IMs"/> + </menu> + <menu label="Avatar" name="Character"> + <menu label="Grab Baked Texture" name="Grab Baked Texture"> + <menu_item_call label="Íris" name="Iris"/> + <menu_item_call label="Cabeça" name="Head"/> + <menu_item_call label="Cintura acima" name="Upper Body"/> + <menu_item_call label="Cintura para baixo" name="Lower Body"/> + <menu_item_call label="Saia" name="Skirt"/> + </menu> + <menu label="Testes de personagem" name="Character Tests"> + <menu_item_call label="Toggle Character Geometry" name="Toggle Character Geometry"/> + <menu_item_check label="Allow Select Avatar" name="Allow Select Avatar"/> + </menu> + <menu_item_call label="Force Params to Default" name="Force Params to Default"/> + <menu_item_check label="Dados da animação" name="Animation Info"/> + <menu_item_check label="Mostrar animação de movimento" name="Slow Motion Animations"/> + <menu_item_check label="Disable Level Of Detail" name="Disable LOD"/> + <menu_item_check label="Show Collision Skeleton" name="Show Collision Skeleton"/> + <menu_item_check label="Display Agent Target" name="Display Agent Target"/> + <menu_item_call label="Depurar texturas do avatar" name="Debug Avatar Textures"/> + </menu> + <menu_item_check label="Texturas HTTP" name="HTTP Textures"/> + <menu_item_check label="Console Window on next Run" name="Console Window"/> + <menu_item_check label="Mostrar menu admin" name="View Admin Options"/> + <menu_item_call label="Request Admin Status" name="Request Admin Options"/> + <menu_item_call label="Sair do modo admin" name="Leave Admin Options"/> + </menu> + <menu label="Admin" name="Admin"> + <menu label="Object"> + <menu_item_call label="Pegar uma cópia" name="Take Copy"/> + <menu_item_call label="Force Owner To Me" name="Force Owner To Me"/> + <menu_item_call label="Force Owner Permissive" name="Force Owner Permissive"/> + <menu_item_call label="Excluir" name="Delete"/> + <menu_item_call label="Lock" name="Lock"/> + </menu> + <menu label="Lote" name="Parcel"> + <menu_item_call label="Force Owner To Me" name="Owner To Me"/> + <menu_item_call label="Conteúdo da Linden Lab" name="Set to Linden Content"/> + <menu_item_call label="Pedir terras públicas" name="Claim Public Land"/> + </menu> + <menu label="Região" name="Region"> + <menu_item_call label="Dump Temporary Asset Data" name="Dump Temp Asset Data"/> + <menu_item_call label="Save Region 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/pt/mime_types_linux.xml b/indra/newview/skins/default/xui/pt/mime_types_linux.xml new file mode 100644 index 0000000000..789843cbba --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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"> + Conteúdo web + </label> + <tooltip name="web_tooltip"> + Este lugar possui conteúdo na web + </tooltip> + <playtip name="web_playtip"> + Mostrar conteúdo na web + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Filme + </label> + <tooltip name="movie_tooltip"> + Aqui tem um vídeo para você assistir + </tooltip> + <playtip name="movie_playtip"> + Mostrar vídeo + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Imagem + </label> + <tooltip name="image_tooltip"> + Aqui tem uma imagem para você ver + </tooltip> + <playtip name="image_playtip"> + Mostrar imagem + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Áudio + </label> + <tooltip name="audio_tooltip"> + Aqui tem um clipe de áudio para você ouvir + </tooltip> + <playtip name="audio_playtip"> + Tocar clipe + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Stream em tempo real + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Nenhum - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Nenhum - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Áudio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Vídeo + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Imagem + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Vídeo (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 Áudio/Vídeo + </label> + </mimetype> + <mimetype name="application/pdf"> + <label name="application/pdf_label"> + Arquivo PDF + </label> + </mimetype> + <mimetype name="application/postscript"> + <label name="application/postscript_label"> + Arquivo 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"> + Página 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"> + Áudio (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Áudio (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Áudio (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Áudio (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Imagem (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Imagem (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Imagem (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Imagem (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Imagem (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Imagem (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Página web + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Texto + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Vídeo (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Vídeo (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Vídeo (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Vídeo (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Vídeo (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Vídeo (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/pt/mime_types_mac.xml b/indra/newview/skins/default/xui/pt/mime_types_mac.xml new file mode 100644 index 0000000000..34b40e94ab --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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"> + Conteúdo Web + </label> + <tooltip name="web_tooltip"> + Esta localização tem conteúdo Web + </tooltip> + <playtip name="web_playtip"> + Exibir conteúdo Web + </playtip> + </widgetset> + <widgetset name="movie"> + <label name="movie_label"> + Filme + </label> + <tooltip name="movie_tooltip"> + Há um filme que vai passar aqui + </tooltip> + <playtip name="movie_playtip"> + Começar filme + </playtip> + </widgetset> + <widgetset name="image"> + <label name="image_label"> + Imagem + </label> + <tooltip name="image_tooltip"> + Ha uma imagem nesta localização + </tooltip> + <playtip name="image_playtip"> + Visualizar a imagem desta localização + </playtip> + </widgetset> + <widgetset name="audio"> + <label name="audio_label"> + Audio + </label> + <tooltip name="audio_tooltip"> + Há áudio nesta localização + </tooltip> + <playtip name="audio_playtip"> + Tocar o áudio desta localização + </playtip> + </widgetset> + <scheme name="rtsp"> + <label name="rtsp_label"> + Real Time Streaming + </label> + </scheme> + <mimetype name="blank"> + <label name="blank_label"> + - Nenhum - + </label> + </mimetype> + <mimetype name="none/none"> + <label name="none/none_label"> + - Nenhum - + </label> + </mimetype> + <mimetype name="audio/*"> + <label name="audio2_label"> + Áudio + </label> + </mimetype> + <mimetype name="video/*"> + <label name="video2_label"> + Vídeo + </label> + </mimetype> + <mimetype name="image/*"> + <label name="image2_label"> + Imagem + </label> + </mimetype> + <mimetype name="video/vnd.secondlife.qt.legacy"> + <label name="vnd.secondlife.qt.legacy_label"> + Filme (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 Áudio/Video + </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"> + Linguagem sincronizada de integração multimidia (SMIL) + </label> + </mimetype> + <mimetype name="application/xhtml+xml"> + <label name="application/xhtml+xml_label"> + Página 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"> + Áudio (MIDI) + </label> + </mimetype> + <mimetype name="audio/mpeg"> + <label name="audio/mpeg_label"> + Áudio (MP3) + </label> + </mimetype> + <mimetype name="audio/x-aiff"> + <label name="audio/x-aiff_label"> + Áudio (AIFF) + </label> + </mimetype> + <mimetype name="audio/x-wav"> + <label name="audio/x-wav_label"> + Áudio (WAV) + </label> + </mimetype> + <mimetype name="image/bmp"> + <label name="image/bmp_label"> + Imagem (BMP) + </label> + </mimetype> + <mimetype name="image/gif"> + <label name="image/gif_label"> + Imagem (GIF) + </label> + </mimetype> + <mimetype name="image/jpeg"> + <label name="image/jpeg_label"> + Imagem (JPEG) + </label> + </mimetype> + <mimetype name="image/png"> + <label name="image/png_label"> + Imagem (PNG) + </label> + </mimetype> + <mimetype name="image/svg+xml"> + <label name="image/svg+xml_label"> + Imagem (SVG) + </label> + </mimetype> + <mimetype name="image/tiff"> + <label name="image/tiff_label"> + Imagem (TIFF) + </label> + </mimetype> + <mimetype name="text/html"> + <label name="text/html_label"> + Página Web + </label> + </mimetype> + <mimetype name="text/plain"> + <label name="text/plain_label"> + Texto + </label> + </mimetype> + <mimetype name="text/xml"> + <label name="text/xml_label"> + XML + </label> + </mimetype> + <mimetype name="video/mpeg"> + <label name="video/mpeg_label"> + Filme (MPEG) + </label> + </mimetype> + <mimetype name="video/mp4"> + <label name="video/mp4_label"> + Filme (MP4) + </label> + </mimetype> + <mimetype name="video/quicktime"> + <label name="video/quicktime_label"> + Filme (QuickTime) + </label> + </mimetype> + <mimetype name="video/x-ms-asf"> + <label name="video/x-ms-asf_label"> + Filme (Windows Media ASF) + </label> + </mimetype> + <mimetype name="video/x-ms-wmv"> + <label name="video/x-ms-wmv_label"> + Filme (Windows Media WMV) + </label> + </mimetype> + <mimetype name="video/x-msvideo"> + <label name="video/x-msvideo_label"> + Filme (AVI) + </label> + </mimetype> +</mimetypes> diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index c3ce53861f..57130fb5cd 100644 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -9,74 +9,33 @@ <global name="implicitclosebutton"> Fechar </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="Mensagem de Alerta Desconhecida" name="MissingAlert"> - Sua versão do [APP_NAME] não sabe como mostrar a mensagem de alerta que acabou de receber. - -Detalhes do erro: O alerta chamado '[_NAME]' não foi encontrado em 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="Notificação desconhecida" name="MissingAlert"> + Esta versão do [APP_NAME] não consegue exibir o aviso recebido. Verifique se você possui a versão mais recente do Visualizador. + +Detalhes do erro: O aviso '[_NAME]' não foi localizado no arquivo notifications.xml. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="FloaterNotFound"> @@ -96,24 +55,18 @@ Detalhes do erro: O alerta chamado '[_NAME]' não foi encontrado em no <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sim"/> </notification> <notification name="BadInstallation"> - Ocorreu um erro atualizando o [APP_NAME]. Por favor, faça o download da última versão em secondlife.com. - <usetemplate - name="okbutton" - yestext="OK"/> + Um erro ocorreu ao atualizar o [APP_NAME]. [http://get.secondlife.com Baixe a versão atual] do Visualizador. + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LoginFailedNoNetwork"> - Erro de Rede: Não conseguiu estabelecer uma conexão. + Falha de conexão com o [SECOND_LIFE_GRID]. '[DIAGNOSTIC]' -Por favor, verifique sua conexão de rede. - <usetemplate - name="okbutton" - yestext="OK"/> +Verifique se a conexão à internet está funcionando. + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="MessageTemplateNotFound"> Modelo de Mensagem [PATH] não encontrado. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="WearableSave"> Salvar modificações? @@ -177,7 +130,7 @@ Você deseja permitir que os residentes selecionados tenham direito de edição? Membros não podem ser removidos dessa função. Os membros podem, eles próprios, recusar a função. Deseja continuar? - <usetemplate ignoretext="Quando adicionar membro ao grupo como dono" name="okcancelignore" notext="Não" yestext="Sim"/> + <usetemplate ignoretext="Confirmar antes de adicionar novo Proprietário do grupo" name="okcancelignore" notext="Não" yestext="Sim"/> </notification> <notification name="AssignDangerousActionWarning"> Você está prestes a adicionar a habilidade '[ACTION_NAME]' para a função '[ROLE_NAME]' @@ -197,58 +150,8 @@ Qualquer membro numa função com esta habilidade, pode atribuir a sí mesmo -- Adicionar esta habilidade a '[ROLE_NAME]'? <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> </notification> - <notification name="ClickPublishHelpLand"> - Selecionando "Publicar na Busca" -Clicando neste Box, será mostrado: -- este lote nos resultados de busca -- os objetos públicos deste lote -- este lote na busca da web - </notification> - <notification name="ClickSoundHelpLand"> - Mídia e Música podem apenas ser utilizadas dentro deste lote. As opções de Som e Voz podem ser restritas ao lote ou serão ouvidas por residentes fora do lote, dependendo de suas Classificações de maturidade. Ir para o Banco de Conhecimento para saber mais sobre como definir essas opções? - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=5046 - </url> - <usetemplate - name="okcancelbuttons" - yestext="Ir para o Banco de Conhecimento" - notext="Fechar" /> - </notification> - <notification name="ClickSearchHelpAll"> - Os resultados de busca são organizados com base na aba em que você se encontra, sua Classificação de maturidade, a categoria escolhida e outros fatores. Para mais detalhes, por favor veja o Banco de Conhecimento. - <url name="url"> - https://support.secondlife.com/ics/support/default.asp?deptID=4417&task=knowledge&questionID=4722 - </url> - <usetemplate - name="okcancelbuttons" - yestext="Ir para o Banco de Conhecimento" - notext="Fechar" /> - </notification> - <notification name="ClickPublishHelpLandDisabled"> - Você não pode fazer este lote visível na busca porque ele está localizado numa região que proíbe isso. - </notification> - <notification name="ClickPublishHelpAvatar"> - Selecionando "Mostrar na Busca" será mostrado: -- meu perfil nos resultados de busca -- um link para meu perfil nas páginas de grupos públicos - </notification> - <notification name="ClickPartnerHelpAvatar"> - Você pode propor a outro Residente ou dissolver uma parceria existente através do website [SECOND_LIFE]. - -Ir para o site do [SECOND_LIFE] para mais informações sobre parceria? - <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ir para a Página"/> - </notification> - <notification name="ClickUploadHelpPermissions"> - Suas permissões padrão podem não funcionar em regiões antigas. - </notification> - <notification name="ClickWebProfileHelpAvatar"> - Se este Residente definiu uma URL de perfil na web, então você pode: - * Clicar em 'Carregar' para ver a página na aba Web. - * Clicar Carregar > 'Em navegador externo' para ver a página no seu navegador de web padrão. - * Clicar Carregar > 'URL de Casa' para voltar ao perfil do Residente na web se você navegou adiante. - -Quando você está vendo seu próprio perfil, você pode entrar com qualquer URL como sendo seu perfil na web e clicar OK para definí-la. -Outros residentes podem visitar a URL que você definiu, quando eles olharem seu perfil. + <notification name="ClickUnimplemented"> + Infelizmente isso ainda não foi implementado. </notification> <notification name="JoinGroupCanAfford"> Unir-se a esse grupo custa L$[COST]. @@ -259,6 +162,12 @@ Deseja prosseguir? Associar-se a este grupo custa L$[COST]. Você não tem L$ suficientes para associar-se a este grupo. </notification> + <notification name="CreateGroupCost"> + Criar este grupo custa L$100. +Grupos ser formados por mais de um membro, caso contrário serão definitivamente excluídos. +Convite outros membros dentro de 48 horas. + <usetemplate canceltext="Cancelar" name="okcancelbuttons" notext="Cancelar" yestext="Criar grupo por L$100"/> + </notification> <notification name="LandBuyPass"> Por L$[COST] você pode ingressar no terreno ('[PARCEL_NAME]') por [TIME] horas. Comprar um passe de acesso? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> @@ -273,10 +182,10 @@ Seu preço de venda será L$[SALE_PRICE] e está autorizado para venda para [NA <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Continuar"/> </notification> <notification name="ConfirmLandSaleToAnyoneChange"> - ATENÇÃO: Ao clicar em 'vender para qualquer um' torna a sua terra disponível para toda a comunidade [SECOND_LIFE], mesmo aqueles que não estão nesta região. + ATENÇÃO: Clicar em 'vender a qualquer um' torna o terreno disponível para toda a comunidade do [SECOND_LIFE], inclusive residentes de outras regiões. -A área de [LAND_SIZE] m² de terra selecionada está posta para venda. -Seu preço de venda será L$ [SALE_PRICE] e está autorizado para [NAME]. +O terreno selecionado, de [LAND_SIZE] m², está sendo reservado para venda. +O preço será L$[SALE_PRICE] e [NAME] pode comprar o terreno. <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="ReturnObjectsDeededToGroup"> @@ -335,6 +244,12 @@ Objetos: [N] Toda esta região possui dano habilitado. Scripts devem ser permitidos para fazer as armas funcionarem. </notification> + <notification name="MultipleFacesSelected"> + Diversas faces foram selecionadas. +Se você optar por prosseguir, diversas ocorrências a mídia serão colocadas nas diferentes faces do objeto. +Para colocar a mídia em só uma face, selecione Selecionar face e clique na face desejada do objeto. Depois clique em Adicionar. + <usetemplate ignoretext="A mídia será colocada nas diferentes faces selecionadas." name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> <notification name="MustBeInParcel"> Você deve permanecer dentro do lote para definir o ponto de aterrissagem. </notification> @@ -369,6 +284,10 @@ Scripts devem ser permitidos para fazer as armas funcionarem. <notification name="CannotWearTrash"> Não é possível usar roupas ou partes do corpo que estão no lixo. </notification> + <notification name="MaxAttachmentsOnOutfit"> + Não foi possível anexar o objeto. +Ele ultrapassa o limite de anexos, de [MAX_ATTACHMENTS] objetos. Remova um objeto para poder anexar outro. + </notification> <notification name="CannotWearInfoNotComplete"> Você não pode vestir este item porque ele ainda não carregou. Por favor, tente novamente em um minuto. </notification> @@ -383,17 +302,22 @@ Você precisa de uma conta para entrar no [SECOND_LIFE]. Você gostaria de criar <usetemplate name="okcancelbuttons" notext="Tentar novamente" yestext="Criar uma nova conta"/> </notification> <notification name="AddClassified"> - Anúncios classificados aparecem na seção 'Classificados' do diretório de Busca e no [http://secondlife.com/community/classifieds/?lang=pt-BR secondlife.com] por uma semana. -Preencha seu anúncio e então clique 'Publicar...' para adicioná-lo ao diretório. -Será solicitado a você um preço a ser pago, quando você clicar Publicar. -Pagando mais, faz com que seu anúncio apareça em posição mais alta na lista e também em posição mais alta, quando as pessoas buscarem por palavras-chave. - <usetemplate ignoretext="Quando adicionando um Classificado novo" name="okcancelignore" notext="Cancelar" yestext="OK"/> + Os anúncios serão publicados na seção 'Classificados' das buscas e em [http://secondlife.com/community/classifieds secondlife.com] durante uma semana. +Escreva seu anúncio e clique em 'Publicar...' +Depois, decida quanto deseja pagar pelo anúncio. +Quanto mais você pagar, mais alto será o posicionamento do seu anúncio nos classficados e nos resultados de busca das suas palavras-chave. + <usetemplate ignoretext="Como colocar um anúncio" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="DeleteClassified"> Apagar classificado'[NAME]'? Não há reembolso por taxas já pagas. <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Apagar"/> </notification> + <notification name="DeleteMedia"> + Você optor por excluir a mídia associada a esta face. +Tem certeza de que quer prosseguir? + <usetemplate ignoretext="Confirmar antes de apagar mídia de objetos" name="okcancelignore" notext="Não" yestext="Sim"/> + </notification> <notification name="ClassifiedSave"> Salvar as mudanças no classificado [NAME]? <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Não Salvar" yestext="Salvar"/> @@ -424,17 +348,17 @@ Não há reembolso por taxas já pagas. <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> <notification name="CacheWillClear"> - O cache será limpo quando você reiniciar [APP_NAME]. + O cache será limpo quando o [APP_NAME] for iniciado. </notification> <notification name="CacheWillBeMoved"> - O Cache será removido após reiniciar [APP_NAME]. -Nota: Isto limpará o cache. + O cache será limpo quando o [APP_NAME] for iniciado. +Nota: Este procedimento limpa o cache. </notification> <notification name="ChangeConnectionPort"> - Configuração de porta terá efeito após reiniciar [APP_NAME]. + Reinicie o [APP_NAME] para ativar a reconfiguração da porta. </notification> <notification name="ChangeSkin"> - A nova pele será exibida após reiniciar [APP_NAME]. + Reinicie o [APP_NAME] para ativar a pele nova. </notification> <notification name="GoToAuctionPage"> Ir para a página do [SECOND_LIFE] para ver os detalhes do leilão ou fazer um lance? @@ -482,6 +406,11 @@ O objeto pode estar fora de alcance ou ter sido deletado. <notification name="SaveBytecodeFailReason"> Houve um problema em salvar uma compilação de script devido a seguinte razão: [REASON]. Por favor, tente salvar novamente o script mais tarde. </notification> + <notification name="StartRegionEmpty"> + Oops, você ainda não definiu sua região de partida. +Digite o nome da região na caixa 'Ponto de partida' ou selecione 'Última localização' ou 'Minha casa' como ponto de partida. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="CouldNotStartStopScript"> Não foi possível iniciar ou parar o script pois o objeto em que ele está não pôde ser encontrado. O objeto pode estar fora de alcance ou ter sido deletado. @@ -500,22 +429,21 @@ Você deseja visitar [_URL] para maiores informações? <url name="url" option="0"> http://secondlife.com/support/sysreqs.php?lang=pt </url> - <usetemplate ignoretext="Ao detectar hardware não suportado" name="okcancelignore" notext="Não" yestext="Sim"/> + <usetemplate ignoretext="O hardware do meu computador não é suportado" name="okcancelignore" notext="Não" yestext="Sim"/> </notification> <notification name="UnknownGPU"> - Seu sistema possui uma placa gráfica que nos é desconhecido neste momento. -Este é normalmente o caso de um novo hardware que nós não tivemos a chance de testar. [APP_NAME] vai muito provavelmente executar corretamente, mas talvez seja necessário ajustar suas configurações de gráficos para algo mais apropriado. -(Menu Editar > Preferências > Gráficos). + O [APP_NAME] não consegue reconhecer a placa de vídeo do seu computador. +Isto acontece quando novos hardwares que ainda não foram testados no [APP_NAME]. O [APP_NAME] provavelmente vai funcionar com sua placa de vídeo, mas talvez seja necessário checar as configurações de vídeo. +( Eu > Preferências > Vídeo) <form name="form"> - <ignore name="ignore" text="Ao detectar uma placa de vídeo desconhecida"/> + <ignore name="ignore" text="Minha placa de vídeo não foi reconhecida."/> </form> </notification> <notification name="DisplaySettingsNoShaders"> - [APP_NAME] travou quando inicializava os drivers gráficos. -A Qualidade Gráfica será ajustada para baixa, para evitar alguns erros comuns de drivers. -Isto irá desabilitar alguns atributos gráficos. -Nós recomendamos a atualização dos drivers de sua placa gráfica. -A Qualidade Gráfica pode ser aumentada no Preferências > Gráficos. + O [APP_NAME] sofreu uma pane ao iniciar os drivers de vídeo. +A Qualidade do vídeo será definida como baixa para evitar os erros de driver mais comuns. Assim, alguns recursos de vídeo serão desativados. +Tente atualizar o driver da sua placa de vídeo. +Para aumentar a qualidade do vídeo, vá para Preferências > Vídeo. </notification> <notification name="RegionNoTerraforming"> A região [REGION] não permite ser aplainada. @@ -566,6 +494,9 @@ Ele ou ela vai ficar temporariamente incapaz de se mover, usar o bate-papo ou in Ejetar [AVATAR_NAME] da sua terra? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Ejetar"/> </notification> + <notification name="EjectAvatarFromGroup"> + Você ejetou [AVATAR_NAME] do grupo [GROUP_NAME] + </notification> <notification name="AcquireErrorTooManyObjects"> Erro de aquisição: Muitos objetos selecionados. </notification> @@ -576,7 +507,7 @@ Por favor, mova todos os objetos a serem adquiridos para uma mesma região. <notification name="PromptGoToCurrencyPage"> [EXTRA] -Vá para [_URL] para informação sobre compra de L$. +Para mais informações sobre como comprar L$, consulte [_URL]. <url name="url"> http://secondlife.com/app/currency/?lang=pt-BR </url> @@ -665,12 +596,15 @@ Esperada [VALIDS] Incapaz de criar arquivo de saída: [FILE] </notification> <notification name="DoNotSupportBulkAnimationUpload"> - Atualmente, não suportamos o envio de arquivos de animação em massa. + O [APP_NAME] ainda não faz o upload de vários arquivos de animação de uma vez. </notification> <notification name="CannotUploadReason"> Incapaz de carregar [FILE] devido ao seguinte motivo: [REASON] Por favor tente novamente mais tarde. </notification> + <notification name="LandmarkCreated"> + Você adicionou "[LANDMARK_NAME]" a sua pasta [FOLDER_NAME]. + </notification> <notification name="CannotCreateLandmarkNotOwner"> Você não pode criar um ponto de referência porque o proprietário do terreno não permite. Tente novamente a alguns metros de distância. </notification> @@ -693,6 +627,9 @@ Selecione objetos com scripts. Selecione objetos com scripts que você tem permissão para modificar. </notification> + <notification name="CannotOpenScriptObjectNoMod"> + Impossível abrir script em objeto sem ter autorização para modificar. + </notification> <notification name="CannotSetRunningSelectObjectsNoScripts"> Impossibilitado de definir quaisquer scripts para 'rodando'. @@ -718,46 +655,44 @@ Pesquisava por: [FINALQUERY] Não é possível teletransportar-se. [REASON] </notification> - - <notification name="invalid_tport"> -Problema encontrado ao processar seu pedido de Teletransporte. Você pode tentar reiniciar antes de tentar teletransportar-se. Se você continuar a receber esta mensagem, por favor verifique a FAQ do Suporte Técnico em: -www.secondlife.com/support - </notification> - <notification name="invalid_region_handoff"> -Problema encontrado ao processar a passagem de regiões. Você pode tentar reiniciar antes de tentar atravessar regiões novamente. Se você continuar a receber esta mensagem, por favor verifique a FAQ do Suporte Técnico em: -www.secondlife.com/support - </notification> - <notification name="blocked_tport"> -Desculpe, teletransportes estão atualmente bloqueados. Tente novamente dentro de alguns instantes. Se você continuar com problemas de teletransporte, por favor tente deslogar e relogar para resolver o problema. - </notification> - <notification name="nolandmark_tport"> -Desculpe, mas o sistema não conseguiu localizar a landmark de destino. - </notification> - <notification name="timeout_tport"> -Desculpe, não foi possível para o sistema executar o teletransporte. Tente novamente dentro de alguns instantes. - </notification> - <notification name="noaccess_tport"> -Desculpe, você não tem acesso ao destino deste teletransporte. - </notification> - <notification name="missing_attach_tport"> -Seu anexos ainda não chegaram. Tente esperar por alguns momentos ou deslogar e logar antes de tentar teleransportar-se novamente. - </notification> - <notification name="too_many_uploads_tport"> -Afluxo nesta região é atualmente tão alto que seu pedido de teletransporte não será possível em tempo oportuno. Por favor, tente novamente em alguns minutos ou vá a uma área menos ocupada. - </notification> - <notification name="expired_tport"> -Desculpe, mas o sistema não conseguiu concluir o seu pedido de teletransporte em tempo hábil. Por favor, tente novamente em alguns minutos. - </notification> - <notification name="expired_region_handoff"> -Desculpe, mas o sistema não pôde concluir a sua travessia de região em tempo hábil. Por favor, tente novamente em alguns minutos. - </notification> - <notification name="no_host"> -Não foi possível encontrar o destino do teletransporte. O destino pode estar temporariamente indisponível ou não existir mais. Por favor, tente novamente em poucos minutos. - </notification> - <notification name="no_inventory_host"> -O sistema de inventário está indisponível no momento. - </notification> - + <notification name="invalid_tport"> + Houve um problema ao processar o teletransporte. Talvez seja preciso sair e entrar do Second Life para fazer o teletransporte. +Se você continuar a receber esta mensagem, consulte [SUPPORT_SITE]. + </notification> + <notification name="invalid_region_handoff"> + Problema encontrado ao processar a passagem de regiões. Talvez seja preciso sair e entrar do Second Life atravessar regiões novamente. +Se você continuar a receber esta mensagem, consulte [SUPPORT_SITE]. + </notification> + <notification name="blocked_tport"> + Desculpe, teletransportes estão atualmente bloqueados. Tente novamente dentro de alguns instantes. Se você continuar com problemas de teletransporte, por favor tente deslogar e relogar para resolver o problema. + </notification> + <notification name="nolandmark_tport"> + Desculpe, mas o sistema não conseguiu localizar a landmark de destino. + </notification> + <notification name="timeout_tport"> + Desculpe, não foi possível para o sistema executar o teletransporte. Tente novamente dentro de alguns instantes. + </notification> + <notification name="noaccess_tport"> + Desculpe, você não tem acesso ao destino deste teletransporte. + </notification> + <notification name="missing_attach_tport"> + Seu anexos ainda não chegaram. Tente esperar por alguns momentos ou deslogar e logar antes de tentar teleransportar-se novamente. + </notification> + <notification name="too_many_uploads_tport"> + Afluxo nesta região é atualmente tão alto que seu pedido de teletransporte não será possível em tempo oportuno. Por favor, tente novamente em alguns minutos ou vá a uma área menos ocupada. + </notification> + <notification name="expired_tport"> + Desculpe, mas o sistema não conseguiu concluir o seu pedido de teletransporte em tempo hábil. Por favor, tente novamente em alguns minutos. + </notification> + <notification name="expired_region_handoff"> + Desculpe, mas o sistema não pôde concluir a sua travessia de região em tempo hábil. Por favor, tente novamente em alguns minutos. + </notification> + <notification name="no_host"> + Não foi possível encontrar o destino do teletransporte. O destino pode estar temporariamente indisponível ou não existir mais. Por favor, tente novamente em poucos minutos. + </notification> + <notification name="no_inventory_host"> + O sistema de inventário está indisponível no momento. + </notification> <notification name="CannotSetLandOwnerNothingSelected"> Incapaz de estabelecer o proprietário do terreno: Nenhum lote selecionado. @@ -794,7 +729,7 @@ Nenhum lote selecionado. Não é possível achar a região em que este terreno se encontra. </notification> <notification name="CannotCloseFloaterBuyLand"> - Você não pode fechar a janela de Compra de Terreno até que o [APP_NAME] calcule o preço desta transação. + A janela Comprar terreno poderá ser fechada quando o [APP_NAME] determinar o preço da transação. </notification> <notification name="CannotDeedLandNothingSelected"> Não é possível transferir posse do terreno: @@ -805,8 +740,8 @@ Nenhum lote selecionado. Nenhum grupo selecionado. </notification> <notification name="CannotDeedLandNoRegion"> - Não é possível transferir posse do terreno: -Não é possível se achar a região em que este terreno se encontra. + Houve um problema ao processar a doação do terreno: +A região do terreno não pôde ser localizada. </notification> <notification name="CannotDeedLandMultipleSelected"> Impossibilitado de passar a propriedade da terra: @@ -815,11 +750,11 @@ Selecionados vários lotes. Tente selecionar um único lote. </notification> <notification name="ParcelCanPlayMedia"> - Esta localidade pode executar fluxo de mídia. -Fluxo de mídia necessita de uma conexão de Internet rápida. + Há mídia em stream disponível aqui. +O streaming requer uma conexão rápida. -Executar fluxo de mídia quando disponível? -(Você pode mudar esta opção mais tarde no Preferências > Áudio & Vídeo.) +Executar as mídias em stream detectadas? +(Esta opção pode ser modificada sob Preferências > Privacidade.) <usetemplate name="okcancelbuttons" notext="Desabilitar" yestext="Exibir Mídia"/> </notification> <notification name="CannotDeedLandWaitingForServer"> @@ -850,8 +785,8 @@ Você não tem permissão de liberar este lote. Os lotes que você possui estão em verde. </notification> <notification name="CannotReleaseLandRegionNotFound"> - Impossibilitado de abandonar a terra: -Não consegue achar a região em que esta terra se encontra. + Houve um problema ao processar o abandono do terreno: +A região do terreno não pôde ser localizada. </notification> <notification name="CannotReleaseLandNoTransfer"> Não é possível abandonar terreno: @@ -888,12 +823,12 @@ Quer dividir o terreno? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Dividir"/> </notification> <notification name="CannotDivideLandNoRegion"> - Impossibilitado de dividir a terra: -Não consegue achar a região em que esta terra se encontra. + Houve um problema ao processar a divisão do terreno: +A região do terreno não pôde ser localizada. </notification> <notification name="CannotJoinLandNoRegion"> - Impossibilitado de unir a terra: -Não consegue achar a região em que esta terra se encontra. + Houve um problema ao processar a junção dos terrenos: +A região do terreno não pôde ser localizada. </notification> <notification name="CannotJoinLandNothingSelected"> Não é possível unir terreno: @@ -918,17 +853,6 @@ Você vai ter que redefinir nome e as opções do novo lote. Unir a terra? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Unir"/> </notification> - <notification name="ShowOwnersHelp"> - Mostrar donos: -Colorir os lotes para mostrar o tipo de dono. - -Green = Sua terra -Aqua = Terra do seu Grupo -Red = Possuída por outros -Yellow = À venda -Purple = A leilão -Grey = Pública - </notification> <notification name="ConfirmNotecardSave"> Esta nota precisa ser salva antes do item ser copiado ou visualizado. Salvar nota? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Salvar"/> @@ -950,13 +874,13 @@ Grey = Pública Não é possível salvar '[NAME]' para um arquivo de vestimenta. Você precisa liberar algum espaço no seu computador e salvar o arquivo novamente. </notification> <notification name="CannotSaveToAssetStore"> - Impossibilitado de salvar [NAME] no armazenamento central de ativos. -Isso é geralmente uma falha temporária. Por favor personalize e salve novamente a vestimenta em poucos minutos. + Ocorreu um problema ao salvar [NAME]. +Em geral, essa é uma falha técnica temporária. Personalize e volte a salvar o item novamente dentro de alguns minutos. </notification> <notification name="YouHaveBeenLoggedOut"> - Você foi deslogado do [SECOND_LIFE]: + Você saiu do [SECOND_LIFE]: [MESSAGE] -Você ainda pode olhar o bate-papo e as mensagens instantâneas existentes, clicando em 'Exibir IM & bate-papo'. Caso contrário, clique em 'Sair' para sair do [APP_NAME] imediatamente. +Ainda é possível ler suas MIs e o bate-papo. Para isso, clique 'Ver MIs e bate-papo'. Ou clique em 'Sair' para sair do [APP_NAME] completamente. <usetemplate name="okcancelbuttons" notext="Sair" yestext="Exibir IM & bate-papo"/> </notification> <notification name="OnlyOfficerCanBuyLand"> @@ -1108,29 +1032,37 @@ Transferir propriedade destes [AREA] m² de terreno para o grupo '[GROUP_NA <notification name="ErrorMessage"> [ERROR_MESSAGE] </notification> - <notification name="AvatarMoved"> - Sua [TYPE] localização não está disponível no momento. - [HELP] -Você foi movido para uma região vizinha. + <notification name="AvatarMovedDesired"> + Esse destino não está disponível no momento. +Você chegou a uma região próxima. + </notification> + <notification name="AvatarMovedLast"> + Esse destino não está disponível no momento. +Você chegou a uma região próxima. + </notification> + <notification name="AvatarMovedHome"> + Esse destino não está disponível no momento. +Você chegou a uma região próxima. +Pense em usar outra região como casa. </notification> <notification name="ClothingLoading"> - Sua vestimenta ainda está baixando. -Você pode usar o [SECOND_LIFE] normalmente e os outros o visualizarão corretamente. + As suas roupas estão sendo transferidas. +Enquando isso, use o [SECOND_LIFE] normalmente. Seu visual será exibido corretamente. <form name="form"> - <ignore name="ignore" text="Quando o vestuário está levando muito tempo para fazer download"/> + <ignore name="ignore" text="A roupa está demorando para chegar"/> </form> </notification> <notification name="FirstRun"> - A instalação do [APP_NAME] está completa. + A instalação do [APP_NAME] está pronta. -Se esta é a primeira vez usando o[SECOND_LIFE], será necessário que você crie uma conta antes de poder se logar. -Retornar a [https://join.secondlife.com/index.php?lang=pt-BR secondlife.com] para criar uma nova conta? +Se você ainda não conhece o [SECOND_LIFE], basta criar uma conta para começar. +Voltar para [http://join.secondlife.com secondlife.com] para criar sua conta? <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Nova conta.."/> </notification> <notification name="LoginPacketNeverReceived"> - Estamos com problemas de conexão. Pode ser problema com a conexão de sua internet ou com os servidores do [SECOND_LIFE]. + Estamos detectando um problema de conexão. Pode haver um problema com a sua conexão à internet ou com o [SECOND_LIFE_GRID]. -Voce tanto pode checar a conexão de sua internet e tentar novamente em alguns minutos, ou clicar em Teletransporte para tentar teletransportar-se para sua casa. +Cheque sua conexão e tente em alguns minutos, clique na Ajuda para acessar o [SUPPORT_SITE], ou tente voltar para casa clicando em 'Teletransportar'. <url name="url"> http://br.secondlife.com/support/ </url> @@ -1152,10 +1084,10 @@ Por favor, escolha se o seu avatar é feminino ou masculino. Você pode mudar de [NAME] L$ [PRICE] Você não possui suficientes L$ para fazer isso. </notification> <notification name="GrantedModifyRights"> - Foi garantido à você o privilégio de alterar o(s) objeto(s) de [FIRST_NAME] [LAST_NAME]' + [NAME] autorizou você a editar seus objetos. </notification> <notification name="RevokedModifyRights"> - Seu privilégio para alterar o(s) objeto(s) de [FIRST_NAME] [LAST_NAME]'s foi removido. + Seu direito de modificar objetos do/da [NAME] foi revogado </notification> <notification name="FlushMapVisibilityCaches"> Isto irá descarregar os caches de mapa relativos a esta região. @@ -1232,94 +1164,107 @@ Por favor, ponha o objeto à venda e tente novamente. [DOWNLOAD_PATH] </notification> <notification name="DownloadWindowsMandatory"> - Uma nova versão do [APP_NAME] está disponível. + Existe uma nova versão do [APP_NAME] [MESSAGE] -Você deve baixar essa atualização para utilizar o [APP_NAME]. +Baixe a atualização para usar o [APP_NAME]. <usetemplate name="okcancelbuttons" notext="Sair" yestext="Atualizar"/> </notification> <notification name="DownloadWindows"> - Uma versão atualizada do [APP_NAME] está disponível. + Existe uma nova versão do [APP_NAME] [MESSAGE] -Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade. +Não é preciso passar para a nova versão, mas ela pode melhorar o desempenho e estabilidade do visualizador. <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Atualizar"/> </notification> <notification name="DownloadWindowsReleaseForDownload"> - Uma versão atualizada do [APP_NAME] está disponível. + Existe uma nova versão do [APP_NAME] [MESSAGE] -Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade. +Não é preciso passar para a nova versão, mas ela pode melhorar o desempenho e estabilidade do visualizador. <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Atualizar"/> </notification> + <notification name="DownloadLinuxMandatory"> + Existe uma nova versão do [APP_NAME] +[MESSAGE] +Baixe a atualização para usar o [APP_NAME]. + <usetemplate name="okcancelbuttons" notext="Sair" yestext="Baixar"/> + </notification> + <notification name="DownloadLinux"> + Existe uma nova versão do [APP_NAME] +[MESSAGE] +Não é preciso passar para a nova versão, mas ela pode melhorar o desempenho e estabilidade. + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Baixar"/> + </notification> + <notification name="DownloadLinuxReleaseForDownload"> + Existe uma nova versão do [APP_NAME] +[MESSAGE] +Não é preciso passar para a nova versão, mas ela pode melhorar o desempenho e estabilidade. + <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Baixar"/> + </notification> <notification name="DownloadMacMandatory"> - Uma nova versão do [APP_NAME] está disponível. + Existe uma nova versão do [APP_NAME] [MESSAGE] -Você deve baixar esta atualização para utilizar o [APP_NAME]. +Baixe a atualização para usar o [APP_NAME]. -Baixar para sua pasta de Aplicativos? +Salvar na pasta Aplicativos? <usetemplate name="okcancelbuttons" notext="Sair" yestext="Atualizar"/> </notification> <notification name="DownloadMac"> - Uma nova versão do [APP_NAME] está disponível. + Existe uma nova versão do [APP_NAME] [MESSAGE] -Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade. +Não é preciso passar para a nova versão, mas ela pode melhorar o desempenho e estabilidade do visualizador. -Baixar para a sua pasta de Aplicativos? +Salvar na pasta Aplicativos? <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Atualizar"/> </notification> <notification name="DownloadMacReleaseForDownload"> - Uma nova versão do [APP_NAME] está disponível. - + Existe uma nova versão do [APP_NAME] [MESSAGE] -Essa atualização não é mandatória, mas sugerimos que você a instale para melhorar a performance e a estabilidade. +Não é preciso passar para a nova versão, mas ela pode melhorar o desempenho e estabilidade do visualizador. -Baixar para sua pasta de Aplicativos? +Salvar na pasta Aplicativos? <usetemplate name="okcancelbuttons" notext="Continuar" yestext="Atualizar"/> </notification> <notification name="DeedObjectToGroup"> Delegar este objeto causará ao grupo: * Receber os L$ pagos ao objeto - <usetemplate ignoretext="Ao transferir objetos aos grupos" name="okcancelignore" notext="Cancelar" yestext="Acionar"/> + <usetemplate ignoretext="Confirmar doações de um objeto a um grupo antes de fazer a doação" name="okcancelignore" notext="Cancelar" yestext="Acionar"/> </notification> <notification name="WebLaunchExternalTarget"> - Abrir o navegador do seu sistema para ver este conteúdo? - <usetemplate ignoretext="Ao abrir o navegador web do seu sistema para visualizar uma página Web" name="okcancelignore" notext="Cancelar" yestext="OK"/> + Abrir uma janela do navegador para ver essas informações? + <usetemplate ignoretext="Abrir o navegador para acessar uma página na web" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="WebLaunchJoinNow"> - Ir ao www.secondlife.com para gerenciar sua conta? - <usetemplate ignoretext="Ao abrir o navegador web para gerenciar sua conta" name="okcancelignore" notext="Cancelar" yestext="OK"/> + Deseja abrir o [http://secondlife.com/account/ Painel] para gerenciar sua conta? + <usetemplate ignoretext="Abrir o navegador para acessar minha conta" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="WebLaunchSecurityIssues"> Visite a Wiki do [SECOND_LIFE] para detalhes de como Reportar um Problema de Segurança. - <usetemplate ignoretext="Ao abrir o navegador da web para visualizar a Wiki de Problemas de Segurança" name="okcancelignore" notext="Cancelar" yestext="OK"/> + <usetemplate ignoretext="Abrir o navegador para ver como denunciar uma ocorrência" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="WebLaunchQAWiki"> Visite o Wiki de QA do [SECOND_LIFE]. - <usetemplate ignoretext="Ao abrir o navegador web para visualizar a Wiki de QA" name="okcancelignore" notext="Cancelar" yestext="OK"/> + <usetemplate ignoretext="Abrir meu navegador para ver a página Wiki" name="okcancelignore" notext="Cancelar" yestext="OK"/> </notification> <notification name="WebLaunchPublicIssue"> Visite o Rastreador Público de Problemas do [SECOND_LIFE], onde você poderá reportar Bugs e outros Problemas. - <usetemplate ignoretext="Ao abrir o navegador web para visualizar o Rastreador Público de Problemas" name="okcancelignore" notext="Cancelar" yestext="Ir para a Página"/> - </notification> - <notification name="WebLaunchPublicIssueHelp"> - Visite a Wiki [SECOND_LIFE] para informações sobre como utilizar o Rastrador de Público de Problemas. - <usetemplate ignoretext="Ao abrir o navegador web para visualizar a wiki do Rastreador Público de Problemas" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/> + <usetemplate ignoretext="Abrir o navegador para usar o Monitor de problemas" name="okcancelignore" notext="Cancelar" yestext="Ir para a Página"/> </notification> <notification name="WebLaunchSupportWiki"> Ir até o Blog Oficial da Linden buscar pelas últimas notícias e informações. - <usetemplate ignoretext="Ao abrir o navegador da web para visualizar o blog" name="okcancelignore" notext="Cancelar" yestext="Ir até a página"/> + <usetemplate ignoretext="Abrir meu navegador para ler o blog" name="okcancelignore" notext="Cancelar" yestext="Ir até a página"/> </notification> <notification name="WebLaunchLSLGuide"> - Ir para a página guia do LSL para ajuda com script? - <usetemplate ignoretext="Ao abrir o navegador web para visualizar o Guia de Scripts." name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/> + Abrir o Guia de scripts para obter ajuda? + <usetemplate ignoretext="Abrir meu navegador para usar o Guia de scripts" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/> </notification> <notification name="WebLaunchLSLWiki"> - Ir para o portal LSL para ajuda com script? - <usetemplate ignoretext="Ao abrir o navegador da web para visualizar o Portal de LSL" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/> + Consultar o LSL Portal para obter ajuda com scripts? + <usetemplate ignoretext="Abrir meu navegador para consultar o LSL Portal" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/> </notification> <notification name="ReturnToOwner"> Você tem certeza que deseja retornar os objetos selecionados para seus proprietários? Objetos transferíveis doados irão retornar aos proprietários anteriores. *AVISO* Objetos doados não – transferíveis serão deletados! - <usetemplate ignoretext="Ao retornar objetos a seus proprietários" name="okcancelignore" notext="Cancelar" yestext="Retornar"/> + <usetemplate ignoretext="Confirmar antes de devolver objetos a seus donos" name="okcancelignore" notext="Cancelar" yestext="Retornar"/> </notification> <notification name="GroupLeaveConfirmMember"> Você é atualmente um membro do grupo [GROUP]. @@ -1331,14 +1276,14 @@ Deixar este grupo? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Expulsar todos os usuários"/> </notification> <notification name="MuteLinden"> - Desculpe, você não pode silenciar um Linden. + Desculpe, nenhum Linden pode ser bloqueado. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="CannotStartAuctionAlreadyForSale"> Você não pode começar um leilão com um lote que já foi colocado à venda. Desabilite a venda da terra se você tem certeza que deseja iniciar um leilão. </notification> - <notification label="Silenciar objeto pelo nome falhou" name="MuteByNameFailed"> - Você já silenciou este nome. + <notification label="Falha ao bloquear objeto por nome" name="MuteByNameFailed"> + Você já bloqueou este residente. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RemoveItemWarn"> @@ -1354,13 +1299,13 @@ Deixar este grupo? <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="BusyModeSet"> - Definido o Modo Ocupado. -Bate-papo e mensagens instantâneas serão escondidas. Mensagens instantâneas irão receber a sua resposta de modo ocupado. Todas as ofertas de teletransporte serão recusadas. Todas as ofertas de inventário irão para a sua Lixeira. - <usetemplate ignoretext="Ao definir o Modo Ocupado" name="okignore" yestext="OK"/> + Modo ocupado ativado. +O bate-papo e MIs não serão exibidos. MIs enviadas para você receberão sua resposta de modo ocupado. Todas as ofertas de teletransporte serão recusadas. Todas as ofertas de inventário serão colocadas na Lixeira. + <usetemplate ignoretext="Passar meu status para o modo ocupado" name="okignore" yestext="OK"/> </notification> <notification name="JoinedTooManyGroupsMember"> - Você já pertence a muitos grupos para entrar em outro. Por favor, deixe pelo menos um grupo antes de entrar neste. Para sair de um grupo, selecione o Menu Editar e a opção Meus 'Grupos...' -[NAME] convidou você para entrar num grupo como membro. + Você atingiu o limite máximo de grupos. Saia de outro grupo para poder entrar nesse ou recuse o convite. +[NAME] está te convidando para ser membro do grupo. [INVITE] <usetemplate name="okcancelbuttons" notext="Recusar" yestext="Entrar"/> </notification> @@ -1426,7 +1371,15 @@ Bate-papo e mensagens instantâneas serão escondidas. Mensagens instantâneas i </notification> <notification name="TeleportFromLandmark"> Você tem certeza que quer se teletransportar? - <usetemplate ignoretext="Ao se teletransportar a partir de uma Landmark no inventário" name="okcancelignore" notext="Cancelar" yestext="Teletransportar"/> + <usetemplate ignoretext="Confirmar se eu quero ser teletransportado para marcos" name="okcancelignore" notext="Cancelar" yestext="Teletransportar"/> + </notification> + <notification name="TeleportToPick"> + Teletransportar para [PICK]? + <usetemplate ignoretext="Confirmar se eu quero ser teletransportado para Destaques" name="okcancelignore" notext="Cancelar" yestext="Teletransportar"/> + </notification> + <notification name="TeleportToClassified"> + Teletransportar para [CLASSIFIED]? + <usetemplate ignoretext="Confirmar se eu quero ser teletransportado lugar do anúncio" name="okcancelignore" notext="Cancelar" yestext="Teletransportar"/> </notification> <notification label="Mensagem para todos na sua Propriedade" name="MessageEstate"> Digite um breve anúncio que será enviado para todos que estejam atualmente na sua propriedade. @@ -1495,9 +1448,7 @@ Isto mudará milhares de regiões e fará o spaceserver soluçar. Você não é permitido na Região devido à sua Classificação de maturidade. Isto pode ser o resultado da falta de informação de validação de sua idade. Por favor, verifique se você está com o último Visualizador instalado e vá ao Banco de Conhecimento para detalhes em como acessar áreas com esta classificação de maturidade. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="RegionEntryAccessBlocked_KB"> Você não é permitido nesta região devido à sua Classificação de maturidade. @@ -1506,37 +1457,26 @@ Ir para o Banco de Conhecimento para maiores informações sobre Classificaçõe <url name="url"> http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/pt </url> - <usetemplate - name="okcancelignore" - yestext="Ir para o Banco de Conhecimento" - notext="Fechar" - ignoretext="Quando a entrada na região está bloqueada devido à Classificação de maturidade"/> + <usetemplate ignoretext="Não posso entrar nessa região devido à classificação do conteúdo" name="okcancelignore" notext="Fechar" yestext="Ir para o Banco de Conhecimento"/> </notification> <notification name="RegionEntryAccessBlocked_Notify"> Você não é permitido nesta região devido à sua Classificação de maturidade. </notification> <notification name="RegionEntryAccessBlocked_Change"> - Você não é permitido nessa região devido à sua preferência de Classificação de maturidade. - -Você pode clicar em 'Mudar Preferência' para aumentar sua preferência de Classificação de maturidade agora e permitir sua entrada. Você estará habilitado a buscar e acessar conteúdo [REGIONMATURITY] a partir de agora. Se você desejar mais tarde voltar à configuração anterior, vá para Editar > Preferencias... > Geral. - <form name="form"> - <button - name="OK" - text="Mudar Preferência"/> - <button - default="true" - name="Cancel" - text="Fechar"/> - <ignore name="ignore" text="Quando a entrada na Região está bloqueada devido à preferência de Classificação de maturidade"/> - </form> + Você não pode entrar nessa região devido à sua seleção de maturidade. + +Clique em 'Mudar preferência' para aumentar o nível de maturidade e entrar nessa região. De agora em diante você pode buscar e acessar conteúdo [REGIONMATURITY] . Para modificar esta configuração, vá à Eu > Preferências > Geral. + <form name="form"> + <button name="OK" text="Mudar preferência"/> + <button default="true" name="Cancel" text="Fechar"/> + <ignore name="ignore" text="Minha preferência de maturidade impede que eu vá a uma região"/> + </form> </notification> <notification name="LandClaimAccessBlocked"> Você não pode reclamar esta terra devido à sua Classificação de maturidade. Isto pode ser o resultado de falta de informação na validação de sua idade. Por favor, verifique se você tem o último Visualizador instalado e vá para o Banco de Conhecimento para detalhes sobre o acesso de áreas com esta Classificação de maturidade. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LandClaimAccessBlocked_KB"> Você não pode reclamar esta terra devido à sua Classificação de maturidade. @@ -1545,32 +1485,22 @@ Ir para a o Banco de Conhecimento para maiores informações sobre Classificaç <url name="url"> http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/pt </url> - <usetemplate - name="okcancelignore" - yestext="Ir para o Banco de Conhecimento" - notext="Fechar" - ignoretext="Quando reclamar a Terra está bloqueado devido à Classificação de maturidade"/> + <usetemplate ignoretext="Não reivindicar essa região devido à classificação do conteúdo" name="okcancelignore" notext="Fechar" yestext="Ir para o Banco de Conhecimento"/> </notification> <notification name="LandClaimAccessBlocked_Notify"> Você não pode reclamar esta terra devido à sua Classificação de maturidade. </notification> <notification name="LandClaimAccessBlocked_Change"> - Você não pode reclamar esta terra devido à sua preferência de Classsificação de maturidade. + Você não pode reivindicar essa região devido à sua preferência de maturidade -Você pode clicar em 'Mudar Preferência' para aumentar sua preferência de Classificação de maturidade agora e permitir sua entrada. Você estará habilitado a buscar e acessar conteúdo [REGIONMATURITY] a partir de agora. Se você desejar mais tarde voltar à configuração anterior, vá para Editar > Preferencias... > Geral. - <usetemplate - name="okcancelignore" - yestext="Mudar Preferência" - notext="Fechar" - ignoretext="Quando reclamar a Terra está bloqueado devido à preferência de Classificação de maturidade"/> +Clique em 'Mudar preferência' para aumentar o nível de maturidade e entrar nessa região. De agora em diante você pode buscar e acessar conteúdo [REGIONMATURITY] . Para modificar esta configuração, vá à Eu > Preferências > Geral. + <usetemplate ignoretext="Minha preferência de conteúdo impede que eu reivindique terrenos" name="okcancelignore" notext="Fechar" yestext="Mudar Preferência"/> </notification> <notification name="LandBuyAccessBlocked"> Você não pode comprar esta terra devido à sua Classificação de maturidade. Isto pode ser o resultado de falta de informação na validação de sua idade. Por favor, verifique se você tem o último Visualizador instalado e vá para o Banco de Conhecimento para detalhes sobre o acesso de áreas com esta Classificação de maturidade. - <usetemplate - name="okbutton" - yestext="OK"/> + <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="LandBuyAccessBlocked_KB"> Você não pode comprar esta terra devido à sua Classificação de maturidade. @@ -1579,27 +1509,19 @@ Ir para o Banco de Conhecimento para maiores informações sobre Classificaçõe <url name="url"> http://wiki.secondlife.com/wiki/Linden_Lab_Official:Maturity_ratings:_an_overview/pt </url> - <usetemplate - name="okcancelignore" - yestext="Ir para o Banco de Conhecimento" - notext="Fechar" - ignoretext="Quando a compra de Terra está bloqueada devido à Classificação de maturidade"/> + <usetemplate ignoretext="Não posso comprar essa região devido à classificação do conteúdo" name="okcancelignore" notext="Fechar" yestext="Ir para o Banco de Conhecimento"/> </notification> <notification name="LandBuyAccessBlocked_Notify"> Você não pode comprar esta terra devido à sua Classificação de maturidade. </notification> <notification name="LandBuyAccessBlocked_Change"> - Você não pode comprar esta terra devido à sua preferência de Classificação de maturidade. + Você não pode comprar esse terreno devido à sua preferência de maturidade -Você pode clicar em 'Mudar Preferência' para aumentar sua preferência de Classificação de maturidade agora e permitir sua entrada. Você estará habilitado a buscar e acessar conteúdo [REGIONMATURITY] a partir de agora. Se você desejar mais tarde voltar à configuração anterior, vá para Editar > Preferencias... > Geral. - <usetemplate - name="okcancelignore" - yestext="Mudar Preferência" - notext="Fechar" - ignoretext="Quando a compra de Terra está bloqueada devido à preferência de Classificação de maturidade"/> +Clique em 'Mudar preferência' para aumentar o nível de maturidade e entrar nessa região. De agora em diante você pode buscar e acessar conteúdo [REGIONMATURITY] . Para modificar esta configuração, vá à Eu > Preferências > Geral. + <usetemplate ignoretext="Minha preferência de conteúdo não me deixa comprar terrenos" name="okcancelignore" notext="Fechar" yestext="Mudar Preferência"/> </notification> <notification name="TooManyPrimsSelected"> - "Muitos prims foram selecionados. Por favor, selecione [MAX_PRIM_COUNT] ou menos e tente novamente." + Muitos prims foram selecionados. Selecione [MAX_PRIM_COUNT] ou menos prims, e tente de novo <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="ProblemImportingEstateCovenant"> @@ -1632,19 +1554,11 @@ Publicar este classificado agora por L$ [AMOUNT]? </notification> <notification name="SetClassifiedMature"> Este classificado contém conteúdo Mature? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Não" - yestext="Sim"/> + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Não" yestext="Sim"/> </notification> <notification name="SetGroupMature"> Este grupo contém conteúdo Mature? - <usetemplate - canceltext="Cancelar" - name="yesnocancelbuttons" - notext="Não" - yestext="Sim"/> + <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Não" yestext="Sim"/> </notification> <notification label="Confirmar reiniciar" name="ConfirmRestart"> Você quer realmente reiniciar esta região em 2 minutos? @@ -1658,217 +1572,12 @@ Publicar este classificado agora por L$ [AMOUNT]? <button name="Cancel" text="Cancelar"/> </form> </notification> - <notification label="Bloquear Terraforma" name="HelpRegionBlockTerraform"> - Se esta opção for assinalada, donos de Terrenos não serão capazes de terraformar independentemente da configuração 'Editar Terreno' de suas terras por lote. - -Padrão: desligado - </notification> - <notification label="Bloquear Vôo" name="HelpRegionBlockFly"> - Se esta caixa estiver marcada, as pessoas não poderão voar nesta região independente das configurações por lote de 'Voar'. - -Padrão: desligado. - </notification> - <notification label="Mudança Conjunta das Permissões de Conteúdo" name="HelpBulkPermission"> - A ferramenta de Mudança Conjunta das Permissões lhe ajuda a mudar, rapidamente, as permissões de múltiplos itens que estão no conteúdo do(s) objeto(s) selecionado(s). Por favor observe que, no entanto, você está apenas definindo permissões para on itens que estão no conteúdo dos objetos selecionados -- não as permissões para o container dos próprios objetos. - -Também observe que as permissões não se aplicam aos conteúdos aninhados, contidos em quaisquer dos objetos. Sua solicitação opera apenas nos itens em exatamente um nível de profundidade. - -Você pode escolher seletivamente quais tipos de itens modificar, usando a lista de conferência aqui, abaixo de 'Tipos de Conteúdo'. Quando você seleciona Texturas, as fotos são incluídas. - -* Esta ferramenta apenas mudará as permissões em itens que você pode mudar. -* Você não pode dar ao Próximo dono, as permissões que você já não tem. -* As permissões ao Próximo dono são meramente solicitações. Se um dos itens não puder assumir todas as novas permissões, nenhuma delas mudará. - -Quando você estiver pronto para mudar as permissões globais, clique 'Aplicar' e aguarde os resultados na tela. - -Se você fechar a janela de Permissões Conjuntas enquanto elas estiverem sendo alteradas, a operação será suspensa. - </notification> - <notification label="Permitir Dano" name="HelpRegionAllowDamage"> - Marcar essa caixa habilita o sistema de vitalidade em todos os lotes independente das configurações individuais. Se esta caixa ficar desmarcada, os proprietários de lotes individuais ainda estarão aptos a ativar o sistema de vitalidade de seus lotes. - -Padrão: desligado. - </notification> - <notification label="Limite de Agentes" name="HelpRegionAgentLimit"> - Define o número máximo de residentes permitidos nesta região. -Quanto mais residentes existirem em sua região, pior pode ser a performance. - -Padrão: 40 - </notification> - <notification label="Bonus de Objetos" name="HelpRegionObjectBonus"> - O Bônus de objetos é um multiplicador para primitivas permitidas em qualquer lote. O intervalo permitido é de 1 a 10. -Se fixado em '1 ', 512m² de cada lote permitem 117 objetos. -Fixado em '2 ', 512m² cada lote permitem 234, ou o dobro, e assim por diante. -O número máximo de objetos permitidos por região permanece 15000 não importa qual seja o Bônus de objeto. Uma vez estabelecido, esteja ciente de que a redução do Bônus de objetos pode retornar objetos ou apagá-los. - -Padrão: 1.0 - </notification> - <notification label="Maturidade" name="HelpRegionMaturity"> - Define a Classificação de Maturidade da região, como mostrado na barra de menu, no topo de qualquer visualizador do Residente e nas dicas no Mapa-Mundi, quando o cursor passa sobre esta Região. Esta definição também afeta o acesso a esta Região e aos resultados de busca. Outros Residentes podem apenas entrar em Regiões ou ver resultados de busca com a mesma Classificação de maturidade que eles escolheram em suas preferências. - -Pode levar algum tempo até que esta mudança se reflita no mapa. - </notification> - <notification label="Restringir Empurrar" name="HelpRegionRestrictPushObject"> - Esta caixa de verificação Configura toda a região para permissões restritivas de empurrar. -Quando habilitada, os agentes só podem empurrar a si mesmos ou serem empurrados pelo dono do lote. -(Empurrar se refere à função LSL llPushObject().) - -Padrão: Desligado. - </notification> - <notification label="Unir/dividir lote" name="HelpParcelChanges"> - Configura se os lotes que não pertencem ao dono da propriedade podem ser unidos ou subdivididos. -Se esta opção estiver desmarcada: - * Apenas os donos ou gerentes de propriedades podem unir ou dividir lotes. - * Eles podem unir ou subdividir lotes pertencentes ao dono ou ao grupo onde eles tem os poderes apropriados. -Se esta opção estiver marcada: - * Todos os donos de lotes podem unir ou subdividir os lotes que eles possuem. - * Para lotes pertencentes a grupos, aqueles com os poderes apropriados podem unir ou subdividir lotes. - -Padrão: Marcado. - </notification> - <notification label="Não Mostrar na Pesquisa" name="HelpRegionSearch"> - Ao marcar esta caixa irá bloquear os donos de lotes de listar seus lotes na busca - -Padrão: desligado - </notification> <notification label="Modificar a maturidade da Região" name="RegionMaturityChange"> A classificação de maturidade para esta região foi atualizada. Pode levar algum tempo para que a mudança seja refletida no mapa. </notification> - <notification label="Revenda de Terreno" name="HelpRegionLandResell"> - Os gerentes e os donos de propriedades podem vender qualquer terreno pertencente ao dono da propriedade. -Se esta opção estiver desmarcada, os compradores não podem revender seus terrenos nesta região. -Se esta opção estiver marcada, compradores podem vender seus terrenos nesta região. - -Padrão: Desabilitada. - </notification> - <notification label="Desabilitar Scripts" name="HelpRegionDisableScripts"> - Quando a performance do simulador está ruim, um script pode ser o culpado. Abra a Barra de Estatísticas (Ctrl+Shift+1). Olhe no Simulador de Física FPS. Se estiver abaixo de 45, então abra o painel 'Tempo' localizado na parte de baixo da Barra de Estatísticas. Se o Tempo de Script indicar 25 ms ou mais, clique no botão 'Get Top CScripts'. Será dado o nome e a localização do script que pode estar causando uma performance ruim. Marque a caixa 'Desabilitar Scripts' e aperte o botão 'Aplicar'. Isto temporariamente desabilitará todos os scripts nesta região. Uma vez que você chegar ao local, investigue o script para determinar se ele está causando o problema. Você pode querer entrar em contato com o proprietário do script, excluir ou devolver o objeto. Desmarque a caixa 'Desabilitar Script' e então clique em 'Aplicar' para reativar os scripts na região. Padrão: desligado. - </notification> - <notification label="Desabilitar Colisões" name="HelpRegionDisableCollisions"> - Quando a performance do simulador é pobre, os objetos físicos podem ser os culpados.Abra a a Barra de Estatísticas (Ctrl+Shift+1). -Olhe a taxa de quadros por segundos (FPS) dos objetos físicos. - -Se ela estiver abaixo de 45, abra o painel de Tempo, localizado na parte inferior da Barra de Estatísticas. Se o Tempo (Físicos) do Simulador mostrar 20 ms ou mais, clique o botão 'Pegue os Maiores Colidentes'. Será fornecido a você o nome e a localidade dos objetos físicos que podem estar causando uma performance pobre. -Ativando a caixa Desabilitar Colisões e então pressionando o botão Aplicar, as colisões objeto-objeto serão temporariamente desabilitadas. Você pode precisar fazer isso para que possa viajar até a localidade onde observou um 'colidente-mor'. Uma vez tendo chegado à localidade, investigue o objeto – ele está constantemente colidindo com outros objetos? Você pode desejar contatar o dono do objeto ou deletar ou retornar o objeto. -Desative a caixa 'Desabilitar Colisões' e então use 'Aplicar' para reativar as colisões na região. - -Padrão: off - </notification> - <notification label="Desabilitar Física" name="HelpRegionDisablePhysics"> - Desabilitar Física é similar a desabilitar Colisões, com exceção de que todas as simulações físicas serão desabilitadas. Isto significa que não só os objetos pararão de colidir, mas também que os avatares não poderão se mover. - -Isto só deve ser usado quando Desabilitar Colisões não trouxer performance suficiente à região para investigar um problema de Física ou do 'Colidente-Mor'. - -Esteja certo de reabilitar Física quando você terminar, ou os avatares não poderão se mover. - -Default: desligado - </notification> - <notification label="Principais Colidentes" name="HelpRegionTopColliders"> - Mostra uma lista de objetos com o maior número de potenciais colisões objeto-objeto. Estes objetos podem diminuir a performance do simulador. -Selecione Ver > Barra de Estatísticas e olhe em Simulador > Tempo > Tempo de Simulação (Física) para ver se mais de 20 ms são gastos em física. - </notification> - <notification label="Principais Scripts" name="HelpRegionTopScripts"> - Mostra uma lista dos objetos gastando mais tempo rodando scripts LSL. Estes objetos podem diminuir a performance do simulador. -Selecione Ver > Barra de Estatísticas e olhe em Simulador > Tempo > Tempo de Script para ver se mais de 25 ms são gastos em scripts. - </notification> - <notification label="Reiniciar Região" name="HelpRegionRestart"> - Reinicia o processo do servidor rodando esta região, após um aviso de dois minutos. Todos os residentes nesta região serão desconectados. A região salvará seus dados e deverá retornar em até 90 segundos. - -Reiniciar a região não consertará a maioria dos problemas de performance, e deveria ser utilizada somente quando solicitado. - </notification> - <notification label="Altura da água" name="HelpRegionWaterHeight"> - Esta é a altura em metros onde a água aparece. Caso este ajuste seja diferente de 20 e você tenha águas adjacentes ao limite do seu terreno ou águas continentais, haverá uma abertura visível. - -Padrão: 20 - </notification> - <notification label="Limite do aumento" name="HelpRegionTerrainRaise"> - Esta é a distância em metros que os donos de lotes podem elevar o terreno, a partir da altura nivelada do terreno. - -Padrão: 4 - </notification> - <notification label="Limite mais baixo" name="HelpRegionTerrainLower"> - Esta é a distância em metros que os donos de lotes podem abaixar o terreno, a partir da altura nivelada do terreno. - -Padrão: -4 - </notification> - <notification label="Carregar terreno RAW" name="HelpRegionUploadRaw"> - Este botão faz upload de um arquivo .RAW para a região em que você está. -O arquivo precisa conter as dimensões/número de canais corretos: RGB, 256x256 e 13 canais. A melhor forma de criar um arquivo da região é baixando o arquivo .RAW existente. Um bom primeiro passo seria modificar o primeiro canal (altura da região) e fazer o upload do arquivo. - -O upload pode levar certa de 45 segundos. Note que fazer upload do arquivo da região *não* moverá os objetos que estão na região, apenas o terreno e as permissões associadas a ele. Isso pode fazer com que alguns objetos fiquem debaixo da terra. - -Para mais informações sobre edição dos campos de altura da região, consulte a ajuda F1. - </notification> - <notification label="Baixar RAW de terreno" name="HelpRegionDownloadRaw"> - Este botão faz download de um arquivo contendo dados de altura do campo, dimensões do lote, status de lotes à venda e algumas permissões de lote para este terreno. Ao abrir o arquivo em programas como o Photoshop, você precisa especificar as dimensões do documento, que são: RGB, 256x256 com 13 canais. Este arquivo de terras não pode ser aberto de outra forma. - -Para mais informações sobre edição dos campos de altura da região, consulte a Ajuda F1. - </notification> - <notification label="Usar Sol da Propriedade" name="HelpRegionUseEstateSun"> - Esta caixa de opção faz com que a posição do sol nesta região seja a mesma que no resto da região. - -Padrão: ligada - </notification> - <notification label="Sol fixo" name="HelpRegionFixedSun"> - Esta caixa de opção ajusta a posição do sol no equalizador de fuso e interrompe o movimento do sol. - -Padrão: desligada - </notification> - <notification label="Nivelar Terreno" name="HelpRegionBakeTerrain"> - Este botão salva a forma atual do terreno como o novo padrão para a região. Uma vez nivelado, o terreno pode reverter à forma que foi salva, sempre que você ou outros utilizarem a ferramenta 'Revert' na edição de terreno. O terreno nivelado é também o ponto médio entre os limites de elevação e redução de terreno. - </notification> - <notification label="Gerentes da Propriedade" name="HelpEstateEstateManager"> - Um gerente da propriedade é um residente a quem você delegou o controle das configurações da região. Ele pode alterar qualquer configuração da região, com exceção de elevar, abaixar ou nivelar o terreno. Em particular, eles podem permitir ou banir residentes da sua propriedade. Gerentes da propriedade só podem ser adicionados ou removidos pelo dono da propriedade. - -Um gerente não pode adicionar ou remover outro gerente. Por favor, escolha somente residentes em quem você confia para serem gerentes da propriedade, pois você poderá ser responsabilizado pelas ações deles. - </notification> - <notification label="Usar hora Global" name="HelpEstateUseGlobalTime"> - Esta caixa de opção faz com que o Sol em sua propriedade siga a mesma posição do Sol nas propriedades da 'mainland' do Linden Lab. - -Padrão: ligado - </notification> - <notification label="Sol fixo" name="HelpEstateFixedSun"> - Esta caixa de opção ajusta a posição do sol no equalizador de fuso e interrompe o movimento do sol. - </notification> - <notification label="Acesso público" name="HelpEstateExternallyVisible"> - Esta caixa de verificação define se os Residentes que estão em outras propriedades podem entrar nesta, sem estar em uma lista de acesso. - -Padrão: on - </notification> - <notification label="Permitir Teletransporte direto" name="HelpEstateAllowDirectTeleport"> - Quando marcada, permite que os residentes se teletransportem diretamente para qualquer ponto da sua propriedade. Quando desmarcada, os residentes serão teleportados para o telehub mais próximo. - -Padrão: desmarcada - </notification> - <notification label="Permitir acesso" name="HelpEstateAllowResident"> - Acesso a esta propriedade estará limitado aos Residentes listados aqui e em quaisquer grupos abaixo. -Esta definição está disponível apenas quando o Acesso Público estiver desmarcado. - </notification> - <notification label="Permitir acesso de grupo" name="HelpEstateAllowGroup"> - Acesso a esta propriedade estará limitado aos grupos listados aqui e a quaisquer Residentes acima. -Esta definição está disponível apenas quando o Acesso Público estiver desmarcado. - </notification> - <notification label="Endereço de Email do Abuso" name="HelpEstateAbuseEmailAddress"> - Configurar isto para um endereço de email válido, fará com que relatos de abuso nesta propriedade sejam enviados para esse endereço. -Definí-lo em branco fará com que os relatórios de abuso sejam enviados apenas para a Linden Lab. - </notification> - <notification label="Negar acesso" name="HelpEstateBanResident"> - Residentes desta lista estão proibidos de acessar a sua propriedade, independentemente de outras configurações. - </notification> - <notification label="Permitir Conversa por Voz" name="HelpEstateVoiceChat"> - Lotes nesta propriedade têm permissão para ter seus canais de voz próprios, nos quais os residentes podem ouvir e falar com os outros residentes próximos. - -Padrão: desligado - </notification> <notification label="Discordância de Versão de Voz" name="VoiceVersionMismatch"> - Esta versão do [APP_NAME] não é compatível com as características do Canal de Voz desta região. Para que a Conversa por Voz funcione corretamente, você precisará atualizar o [APP_NAME]. - </notification> - <notification label="Corretor da Propriedade" name="HelpEstateCovenant"> - Definir um corretor da propriedade lhe permite vender lotes nesta propriedade. Se um corretor não for definido, você não pode vender terras. O cartão do seu corretor pode ficar vazio se você não desejar aplicar quaisquer regras ou avisar os compradores sobre qualquer coisa em relação ao lote antes da compra. - -Um corretor pode ser usado para comunicar regras, orientações, informações culturais ou simplesmente suas expectativas quanto ao futuro comprador. Isto pode incluir zoneamento, regulamentos para construções, opções de pagamento ou qualquer outra informação que você julgar importante que o novo proprietário veja e concorde antes da compra. - -O comprador precisa concordar com o corretor marcando a caixa de verificação antes de concluir a compra. Corretores são sempre visíveis na caixa de diálogo 'Sobre a Terra' para todos os lotes que têm corretores definidos. + Esta versão do [APP_NAME] não é compatível com o recurso 'Bate-papo de voz' desta região. Para o bate-papo de voz funcionar, atualize o [APP_NAME]. </notification> <notification label="Impossível Comprar Objetos" name="BuyObjectOneOwner"> Não é possível comprar objetos de diferentes proprietários ao mesmo tempo. @@ -1956,53 +1665,36 @@ Por favor, re-insira sua senha e clique 'Confirmar Compra'. Estes itens serão movidos para o seu inventário, não copiados. Mover os itens do inventário? - <usetemplate ignoretext="Quando estiver movendo inventário não copiável a partir de objetos." name="okcancelignore" notext="Não mover" yestext="Mover"/> + <usetemplate ignoretext="Avisar antes de eu pegar items 'cópia proibida' de um objeto" name="okcancelignore" notext="Não mover" yestext="Mover"/> </notification> <notification name="MoveInventoryFromScriptedObject"> Você selecionou itens de inventário não copiáveis. Estes itens serão movidos para seu inventário, não copiados. Pelo fato de o objeto ter scripts, mover estes itens ao inventário pode provocar um mal funcionamento do script. Mover para o inventário o(s) item(s)? - <usetemplate ignoretext="Quando movendo objetos com scripts não copiáveis ao inventário" name="okcancelignore" notext="Não mover" yestext="Mover"/> + <usetemplate ignoretext="Avisar antes de eu pegar items 'cópia proibida' que podem quebrar objetos com script" name="okcancelignore" notext="Não mover" yestext="Mover"/> </notification> <notification name="ClickActionNotPayable"> - Aviso: A ação de 'Pagar Objeto' com clique foi definida, mas funcionará apenas se for adicionado um script com o evento money(). + Aviso: O clique em 'Pagar por objeto' foi processado, mas só pode funcionar se um script tiver um evento money(). <form name="form"> - <ignore name="ignore" text="Quando Definindo 'Pagar' em objetos sem eventos money()"/> + <ignore name="ignore" text="Definir 'Pagar por objeto' ao construir um objeto sem script money()"/> </form> </notification> <notification name="OpenObjectCannotCopy"> Não há itens neste objeto que você está autorizado a copiar. </notification> <notification name="WebLaunchAccountHistory"> - Ir para o site do [SECOND_LIFE] para visualizar o histórico de sua conta? - <usetemplate ignoretext="Ao abrir a página web de histórico de conta" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/> - </notification> - <notification name="ClickOpenF1Help"> - Visitar o website de Suporte do [SECOND_LIFE]? - <usetemplate ignoretext="Quando visitando o website de Suporte do [SECOND_LIFE]" name="okcancelignore" notext="Cancelar" yestext="Ir"/> + Deseja abrir o [http://secondlife.com/account/ Painel] para ver o histórico da sua conta? + <usetemplate ignoretext="Abrir o navegador para acessar minha conta" name="okcancelignore" notext="Cancelar" yestext="Ir para a página"/> </notification> <notification name="ConfirmQuit"> Tem certeza que deseja sair? - <usetemplate ignoretext="Quando Saindo do [APP_NAME]." name="okcancelignore" notext="Continuar" yestext="Sair"/> + <usetemplate ignoretext="Confirmar antes de sair" name="okcancelignore" notext="Não sair" yestext="Sair"/> </notification> <notification name="HelpReportAbuseEmailLL"> - Use esta ferramenta para reportar violações aos [http://secondlife.com/corporate/tos.php?lang=pt-BR Termos de Serviço] e aos [http://secondlife.com/corporate/cs.php?lang=pt-BR Padrões da Comunidade]. - -Todos os abusos aos Termos de Serviço e aos Padrões da Comunidade reportados, são investigados e resolvidos. Você pode ver a resolução do incidente na Reportagem de Incidentes em: - -http://secondlife.com/support/incidentreport.php - </notification> - <notification name="HelpReportAbuseEmailEO"> - IMPORTANTE: Esta reportagem irá para o dono da região em que você se encontra atualmente e não para a Linden Lab. - -Como um serviço aos residentes e visitantes, o dono da região em que você se encontra foi eleito para receber e resolver todas as reportagens originadas nesta região. A Linden Lab não irá investigar reportagens que você envia desta localidade. + Use esta ferramenta para denunciar infrações dos [http://secondlife.com/corporate/tos.php Termos do Serviço] e das [http://secondlife.com/corporate/cs.php Normas da Comunidade]. -O dono da região resolverá as reportagens baseado nas regras locais desta região, como definido na Declaração da propriedade. -(Veja as declarações indo ao menu Mundo e selecionando Sobre a Terra.) - -A resolução desta reportagem se aplica apenas a esta região; o acesso de Residentes às outras áreas do [SECOND_LIFE] não será afetado pelas decisões desta reportagem. -Apenas a Linden Lab pode restringir acesso a todo o [SECOND_LIFE]. +Todas as denúncias de abuso são investigadas e resolvidas. Para saber o que foi feito, consulte o [http://secondlife.com/support/incidentreport.php relatório de ocorrências]. </notification> <notification name="HelpReportAbuseSelectCategory"> Por favor, selecione uma categoria para a reportagem deste abuso. @@ -2026,17 +1718,18 @@ Seja tão específico quanto você puder, incluindo nomes e os detalhes do incid Fazer uma descrição precisa nos ajuda a arquivar e processar as reportagens de abuso. </notification> <notification name="HelpReportAbuseContainsCopyright"> - Caro Residente, + Caro residente, + +Aparentemente você fez uma denúncia de infranção de propriedade intelectual. Certifique-se de que sua denúncia está correta: -Você parece estar relatando violação de propriedade intelectual. Por favor, certifique-se de que está relatando corretamente: +(1) Procedimento do abuso Se você tem motivos para acreditar que um residente está burlando o sistema de autorização do [SECOND_LIFE] usando o CopyBot ou ferramentas parecidas para infringir direitos de propriedade intelectual, envie um relatório de abuso. A equipe anti-abuso investiga e impõe sanções em casos de infranção dos [SECOND_LIFE] [http://secondlife.com/corporate/tos.php Termos de Serviço] ou das [http://secondlife.com/corporate/cs.php Normas da Comunidade]. Entretando, a equipe anti-abuso não lida com pedidos de remoção de conteúdo do [SECOND_LIFE]. Tais pedidos não serão atendidos. -(1) O Processo de abuso. Você pode apresentar um relatório de abuso se você acredita que um Residente está infringindo o sistema de permissões do [SECOND_LIFE], por exemplo, utilizando ferramentas CopyBot para copiar ou similar, para violar os direitos de propriedade intelectual. A Equipe de Abuso investiga e divulga a ação disciplinar adequada para o comportamento que viola o Estatuto da Comunidade do [SECOND_LIFE] ou os Termos de Serviço. No entanto, a mesma não controla e não irá responder aos pedidos para remover o conteúdo do mundo [SECOND_LIFE]. +(2) Procedimentos DMCA ou remoção de conteúdo. Para solicitar a remoção de conteúdo do [SECOND_LIFE], é imprescindível enviar uma notificação de infração elaborada conforme as disposicões da [http://secondlife.com/corporate/dmca.php Política DMCA]. -(2) O processo de remoção de conteúdo ou DMCA. Para solicitar a remoção de conteúdo do [SECOND_LIFE], você deve enviar uma notificação válida de infração, conforme previsto em nossa Política de DMCA em http://secondlife.com/corporate/dmca.php. +Se você deseja continuar o procedimento de denúncia de abuso, feche esta janela e termine o relatório. A categoria 'CopyBot or Permissions Exploit' (robô de cópia ou exploit de autorização) -Se você ainda deseja prosseguir com o processo de abuso, por favor, feche esta janela e termine de enviar seu relatório. Pode ser necessário selecionar a categoria específica 'CopyBot Infração de Permissões'. +Obrigado. -Obrigado, Linden Lab </notification> <notification name="FailedRequirementsCheck"> @@ -2047,9 +1740,9 @@ Linden Lab Já existe um objeto anexado a este ponto do seu corpo. Você deseja substituí-lo pelo objeto selecionado? <form name="form"> - <ignore name="ignore" save_option="true" text="Ao substituir os anexos existentes"/> - <button name="Yes" text="Sim"/> - <button name="No" text="Não"/> + <ignore name="ignore" save_option="true" text="Trocar um anexo atual pelo item selecionado"/> + <button ignore="Replace Automatically" name="Yes" text="Sim"/> + <button ignore="Never Replace" name="No" text="Não"/> </form> </notification> <notification label="Aviso de Modo Ocupado" name="BusyModePay"> @@ -2057,18 +1750,22 @@ Você deseja substituí-lo pelo objeto selecionado? Você gostaria de deixar o modo Ocupado antes de completar esta transação? <form name="form"> - <ignore name="ignore" save_option="true" text="Ao pagar uma pessoa ou objeto no modo ocupado"/> - <button name="Yes" text="Sim"/> - <button name="No" text="Não"/> + <ignore name="ignore" save_option="true" text="Estou prestes a pagar alguém ou um objeto no modo ocupado"/> + <button ignore="Always leave Busy Mode" name="Yes" text="Sim"/> + <button ignore="Never leave Busy Mode" name="No" text="Não"/> </form> </notification> + <notification name="ConfirmDeleteProtectedCategory"> + A pasta '[FOLDERNAME]' é uma pasta do sistema. Excluir pastas de sistema pode deixar o sistema instável. Tem certeza de que quer prosseguir? + <usetemplate ignoretext="Confirmar antes de excluir pastas do sistema." name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> <notification name="ConfirmEmptyTrash"> - Tem certeza de que deseja remover permanentemente o conteúdo da lixeira de seu inventário? - <usetemplate ignoretext="Ao esvaziar a pasta da lixeira no seu inventário" name="okcancelignore" notext="Não" yestext="Sim"/> + Tem certeza de que deseja excluir o conteúdo da Lixeira? Para sempre? + <usetemplate ignoretext="Confirmar antes de esvaziar a pasta Lixeira" name="okcancelignore" notext="Não" yestext="Sim"/> </notification> <notification name="ConfirmClearBrowserCache"> - Você tem certeza que deseja limpar o cache do seu navegador? - <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> + Tem certeza de que quer apagar todo o histórico de viagens, web e buscas? + <usetemplate name="okcancelbuttons" notext="Não" yestext="OK"/> </notification> <notification name="ConfirmClearCookies"> Você tem certeza de que deseja limpar os cookies? @@ -2079,39 +1776,18 @@ Você gostaria de deixar o modo Ocupado antes de completar esta transação? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sim"/> </notification> <notification name="ConfirmEmptyLostAndFound"> - Deseja realmente remover permanentemente o conteúdo da pasta achados e perdidos? - <usetemplate ignoretext="Ao esvaziar pasta Achados e Perdidos do seu inventário" name="okcancelignore" notext="Não" yestext="Sim"/> + Tem certeza de que deseja excluir o conteúdo dos Achados e Perdidos? Para sempre? + <usetemplate ignoretext="Confirmar antes de esvaziar a pasta Achados e Perdidos" name="okcancelignore" notext="Não" yestext="Sim"/> </notification> <notification name="CopySLURL"> - A seguinte SLurl foi copiada para o seu clipboard: + O seguinte SLurl foi copiado para a área de transferência: [SLURL] -Coloque-a em uma página web para dar aos outros um fácil acesso a este local ou tente você, colando-a na barra de endereços do seu navegador. +Inclua um link para facilitar o acesso para visitantes. Teste o link na barra de endereço de qualquer navegador da web. <form name="form"> - <ignore name="ignore" text="Ao copiar a SURL para o seu clipboard"/> + <ignore name="ignore" text="SLurl copiado para área de transferência."/> </form> </notification> - <notification name="GraphicsPreferencesHelp"> - Este painel controla o tamanho da janela, resolução e a qualidade dos gráficos do computador cliente. O Preferências > Interface Gráfica permite escolher entre quatro níveis gráficos: Baixo, Médio, Alto e Ultra. Você também pode personalizar suas configurações de gráficos selecionando a opção Personalizar e manipulando as seguintes definições: - -Sombreamento: Ativar ou desativar vários tipos de sombreadores de pixel. - -Detalhes de Reflexão: Define os tipos de objetos que a água pode refletir. - -Renderização de Avatar: Define opções que afetam a forma como o cliente renderizará os avatares. - -Alcance: Afeta a distância do seu ponto de vista que os objetos serão renderizados na cena. - -Número máximo de partículas: Define o número máximo de partículas que será capaz de ver na sua tela de uma só vez. - -Qualidade de Pós-Processamento: Define a resolução com a qual o brilho será renderizado. - -Detalhes de malha: Ajusta a quantidade de detalhes ou número de triângulos utilizados na renderização de certos objetos. Um valor mais alto leva mais tempo para renderizar, mas torna esses objetos mais detalhados. - -Detalhe de Iluminação: Seleciona os tipos de luzes que você gostaria de renderizar. - -Detalhe de Terreno: Ajusta a quantidade de detalhes que você gostaria de ver para a textura do terreno. - </notification> <notification name="WLSavePresetAlert"> Você deseja substituir a pré-configuração salva? <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> @@ -2130,149 +1806,6 @@ Detalhe de Terreno: Ajusta a quantidade de detalhes que você gostaria de ver pa Existe efeito de Pós-Processamento. Você deseja substituí-lo? <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> </notification> - <notification name="HelpEditSky"> - Editar os controles graduais do WindLight para configurar e salvar um conjunto de céus. - </notification> - <notification name="HelpEditDayCycle"> - Definir quais céus colocar durante todo o dia. - </notification> - <notification name="EnvSettingsHelpButton"> - Essas configurações ajustam a forma como o ambiente parece localmente no seu computador. Sua placa de vídeo precisa suportar o sombreador atmosférico, a fim de ter acesso a todas as definições. - -Ajuste o controle gradual "Hora do Dia" para alterar a fase do dia localmente no visualizador. - -Ajuste o controle gradual de "Cobertura das nuvens" para controlar quantas nuvens cobrem o céu. - -Pegue uma cor na paleta de cores de "Cor da Água" para mudar a cor desta. - -Ajuste o controle gradual de "Névoa de Água" para controlar o quão densa é a névoa dentro da água. - -Clique "Usar Horário da Propriedade" para redefinir a hora do dia para o horário atual do dia da região e permanecer atrelado a ela. - -Clique "Céu Avançado " para abrir um editor com configurações mais avançadas para o céu. - -Clique "Água Avançada " para abrir um editor com configurações mais avançadas para a água. - </notification> - <notification name="HelpDayCycle"> - O editor de Ciclo do Dia dá a você o controle do céu durante um ciclo de dia/noite do [SECOND_LIFE]. Este é o ciclo usado pelo controle gradual da hora do dia do editor de ambiente básico. - -O editor do ciclo de dia trabalha configurando quadros-chave. Estes são pontos (representados pelos ícones cinza no gráfico de horário) que possuem um pré-ajuste de céu associado a eles. Conforme o dia passa, o céu do Windlight " anima " a interpolação entre esses quadros-chave. - -A seta amarela acima da linha de tempo representa a sua vista atual, baseada no horário do dia. Clique e arraste para ver como o seu dia será animado. Você pode adicionar ou deletar os quadros-chave pressionando os botões Adicionar Chave e Deletar chave ao lado direito da linha de tempo. - -Você pode configurar a posição do tempo de um quadro-chave arrastando-o pela linha do tempo, ou configurando manualmente no quadro de configurações do seu quadro-chave. Será possível a você associar o seu quadro-chave a este respectivo padrão WindLight. - -A duração do ciclo determina a duração geral do "dia". Configurá-la para um valor baixo (por exmplo, 2 min.) quer dizer que a linha do tempo de 24 horas será animada completamente em apenas dois minutos reais! Assim que estiver satisfeito com a linha do tempo e o ciclo dos quadros-chave, use os botões Play e Stop para uma prévia de como ficará o resultado. Lembre-se, você também pode utilizar a seta amarela indicadora do tempo acima da linha do tempo para ver o ciclo animado interativamente. Usando o botão do tempo da popriedade irá sincronizar a duração do seu dia ao ciclo diário da propriedade. - -Assim que estiver satisfeito com o seu ciclo diário, você pode salvá-lo ou carregá-lo através dos botões Salvar Dia Teste e Carregar Dia Teste. Note que, por enquanto, nós permitimos apenas um Ciclo de dia. - </notification> - <notification name="HelpBlueHorizon"> - Use os cursores Vermelho/Verde/Azul ( Red/Green/Blue -RGB) para ajustar as cores do céu. Você também pode usar o controle de Intensidade (I) para mover os três controles RGB simultaneamente. - </notification> - <notification name="HelpHazeHorizon"> - Haze Horizon é um dos parâmetros mais úteis para ajuste global de exposição de luz na cena. Ele é eficaz para simular diversas configurações de exposição, tais como configurações para super-exposição do sol e escuros halos de Iris. - </notification> - <notification name="HelpBlueDensity"> - A densidade global azul afeta a saturação da cor do céu e nevoeiro. Se você mover o controle gradual de intensidade (I) para a direita, as cores vão se tornar mais brilhantes e vibrantes. Se você movê-lo totalmente para a esquerda, as cores perdem intensidade e cor, eventualmente chegando a preto e branco. Se pretende um ajuste fino do equilíbrio de cor do céu, você pode controlar os diversos elementos da saturação, utilizando os controles graduais para vermelho / verde / azul (RGB). - </notification> - <notification name="HelpHazeDensity"> - Densidade de Poeira controla o nível de fumaça, poeira cinza na atmosfera. Eficaz para simular cenas com altos níveis de poeira e poluentes. É também efetivo em simular névoa e nevoeiro. - </notification> - <notification name="HelpDensityMult"> - O Multiplicador de Densidade pode ser usado para afetar a densidade atmosférica global. Com definições mais baixas, ele cria uma sensação de "ar rarefeito" e em definições mais altas, ele cria um efeito mais denso, mais esfumaçado. - </notification> - <notification name="HelpDistanceMult"> - Ajusta como a distância no WindLight é percebida. Um valor zero efetivamente desativa a influência do WindLight sobre terrenos e objetos. Valores superiores a 1 simulam os efeitos atmosféricos mais espessos a maiores distâncias. - </notification> - <notification name="HelpMaxAltitude"> - Max Altitude ajusta os cálculos de performance de altitude do WindLight, quando computa sua iluminação atmosférica. Em períodos vespertinos do dia, é útil para ajustar a "profundidade" de como o pôr-do-sol aparece. - </notification> - <notification name="HelpSunlightColor"> - Ajustar a cor e intensidade da luz direta na cena. - </notification> - <notification name="HelpSunAmbient"> - Ajusta a cor e a intensidade da luz ambiente atmosférica na cena. - </notification> - <notification name="HelpSunGlow"> - O controle gradual de Tamanho controla o tamanho do sol. -O controle gradual de Foco controla o quanto o sol aparecerá desfocado no céu. - </notification> - <notification name="HelpSceneGamma"> - Ajusta a distribuição na tela de luz e escuridão. - </notification> - <notification name="HelpStarBrightness"> - Ajusta o brilho das estrelas no céu. - </notification> - <notification name="HelpTimeOfDay"> - Controla a localização do sol no céu. Semelhante a elevação. - </notification> - <notification name="HelpEastAngle"> - Controla a localização do sol no céu. -Similar ao azimute. - </notification> - <notification name="HelpCloudColor"> - Edita as cores das nuvens, É normalmente recomendado manter o tom esbranquiçado, mas hey! Você pode se divertir se desejar. - </notification> - <notification name="HelpCloudDetail"> - Controla os detalhes da camada de imagem superior na imagem de nuvem principal. X e Y controla sua posição. D (Densidade) controla o quão cheio ou estratificada as nuvens devem aparecer. - </notification> - <notification name="HelpCloudDensity"> - Permite que você controle a posição das nuvens com os cursores X e Y e a densidade deles com o cursor D. - </notification> - <notification name="HelpCloudCoverage"> - Controla o quanto as nuvens cobrem o céu. - </notification> - <notification name="HelpCloudScale"> - Controla o dimensionamento da imagem de nuvens na cúpula celeste. - </notification> - <notification name="HelpCloudScrollX"> - Controla a velocidade das nuvens que se movem na direção X. - </notification> - <notification name="HelpCloudScrollY"> - Controla a velocidade que as núvens se movem na direção Y. - </notification> - <notification name="HelpClassicClouds"> - Marque esta check box para permitir a reprodução das nuvens clássicas mais velhas do [SECOND_LIFE], além das nuvens WindLight. - </notification> - <notification name="HelpWaterFogColor"> - Escolhe a cor da neblina subaquática. - </notification> - <notification name="HelpWaterFogDensity"> - Controla a densidade da neblina da água e a distância de visibilidade debaixo d'água. - </notification> - <notification name="HelpUnderWaterFogMod"> - Modifica o efeito do expoente de densidade de Neblina para controlar até onde você pode ver quando o seu avatar está imerso. - </notification> - <notification name="HelpWaterGlow"> - Controla o quanto a superfície da água deve brilhar. - </notification> - <notification name="HelpWaterNormalScale"> - Controla o escalonamento das três marolas que compõem a água. - </notification> - <notification name="HelpWaterFresnelScale"> - Controla o quanto de luz será refletido por ângulos diferentes. - </notification> - <notification name="HelpWaterFresnelOffset"> - Controla o quanto da intensidade da luz é refletida. - </notification> - <notification name="HelpWaterScaleAbove"> - Controla o quanto de luz será refratado olhando acima da superfície da água. - </notification> - <notification name="HelpWaterScaleBelow"> - Controla o quanto de luz sera refratado visto debaixo da superfície da água. - </notification> - <notification name="HelpWaterBlurMultiplier"> - Controla como ondas e reflexos são misturados. - </notification> - <notification name="HelpWaterNormalMap"> - Controla o mapeamento normal em todos os níveis da água para determinar reflexões / refrações. - </notification> - <notification name="HelpWaterWave1"> - Controla aonde e com que velocidade a versão em escala maior do mapa normal se move nas direções X e Y . - </notification> - <notification name="HelpWaterWave2"> - Controla onde e a velocidade com que o mapa normal em escala menor se move nas direções X e Y. - </notification> <notification name="NewSkyPreset"> Me dê o nome para o novo céu. <form name="form"> @@ -2318,35 +1851,33 @@ Similar ao azimute. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="Cannot_Purchase_an_Attachment"> - Os itens não podem ser comprados enquanto forem parte de um anexo. + Objetos não podem ser adquiridos quando estão anexados. </notification> <notification label="Sobre o pedido de Permissão de Débito" name="DebitPermissionDetails"> Conceder esse pedido dá permissão ao script para tirar Linden dólares (L$) de sua conta. Para revogar esta permissão, o proprietário do objeto deve excluir o objeto ou resetar os scripts dele. <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="AutoWearNewClothing"> - Você gostaria de vestir automaticamente o item de vestuário que você criar? - <usetemplate ignoretext="Automaticamente vestir novo vestuário" name="okcancelignore" notext="Não" yestext="Sim"/> + Vestir automaticamente a roupa que você vai criar? + <usetemplate ignoretext="Vestir as roupas que eu criar enquanto edito minha aparência" name="okcancelignore" notext="Não" yestext="Sim"/> </notification> <notification name="NotAgeVerified"> - Você precisa ter a idade verificada para acessar este lote. -Gostaria de visitar o site do [SECOND_LIFE] para verificação de idade? + Área restrita a residentes com idade comprovada. Deseja ir ao site do [SECOND_LIFE] para comprovar sua idade? [_URL] <url name="url" option="0"> https://secondlife.com/account/verification.php?lang=pt </url> - <usetemplate ignoretext="Alertar sobre a falta de verificação de idade" name="okcancelignore" notext="Não" yestext="Sim"/> + <usetemplate ignoretext="Ainda não comprovei minha idade" name="okcancelignore" notext="Não" yestext="Sim"/> </notification> <notification name="Cannot enter parcel: no payment info on file"> - Este lote exige que você tenha informações de pagamento no arquivo antes de poder acessá-lo. -Gostaria de visitar o site do [SECOND_LIFE] para configurá-lo? + Área restrita a residentes que já cadastraram seus dados de pagamento Deseja ir ao site do [SECOND_LIFE] para cuidar disso? [_URL] <url name="url" option="0"> https://secondlife.com/account/index.php?lang=pt </url> - <usetemplate ignoretext="Avisar sobre a falta de informação de pagamento." name="okcancelignore" notext="Não" yestext="Sim"/> + <usetemplate ignoretext="Ainda não tenho cadastro de pagamento" name="okcancelignore" notext="Não" yestext="Sim"/> </notification> <notification name="MissingString"> A sequência [STRING_NAME] está faltando do strings.xml @@ -2376,7 +1907,7 @@ Gostaria de visitar o site do [SECOND_LIFE] para configurá-lo? [FIRST] [LAST] está Offline </notification> <notification name="AddSelfFriend"> - Você não pode adicionar a si mesmo como amigo + Você é o máximo! Mesmo assim, não dá para adicionar a si mesmo(a) como amigo(a). </notification> <notification name="UploadingAuctionSnapshot"> Fazendo o upload das fotos do site da web e do mundo... @@ -2395,7 +1926,7 @@ Gostaria de visitar o site do [SECOND_LIFE] para configurá-lo? Feito o download de Terrain.raw </notification> <notification name="GestureMissing"> - O Gesto [NAME] não se encontra na base de dados + O gesto [NAME] não está no banco de dados. </notification> <notification name="UnableToLoadGesture"> Impossível de carregar o gesto [NAME]. @@ -2408,14 +1939,14 @@ Por favor, tente novamente. Impossível carregar o landmark. Por favor, tente de novo. </notification> <notification name="CapsKeyOn"> - Seu botão CAPS LOCK está ativado. -Como isto afeta a senha digitada, você provavelmente desejará desativá-lo. + A tecla Maiúsc. está ligada. +Ela pode afetar a digitação da senha. </notification> <notification name="NotecardMissing"> Notecard foi perdido no banco de dados. </notification> <notification name="NotecardNoPermissions"> - Permissões insuficientes para visualizar o notecard + Você não está autorizado a ler esta nota. </notification> <notification name="RezItemNoPermissions"> Sem permissões suficientes para criar objetos. @@ -2453,11 +1984,11 @@ Por favor, tente novamente. Por favor, tente novamente. </notification> <notification name="CannotBuyObjectsFromDifferentOwners"> - Impossível comprar objetos de diferentes compradores ao mesmo tempo. -Por favor, compre apenas um objeto. + Só dá para comprar objetos de um dono por vez. +Selecione só um objeto. </notification> <notification name="ObjectNotForSale"> - Este objeto não está a venda. + Este objeto não está à venda. </notification> <notification name="EnteringGodMode"> Entrando em god mode, nível [LEVEL] @@ -2466,10 +1997,10 @@ Por favor, compre apenas um objeto. Saindo do god mode, nível [LEVEL] </notification> <notification name="CopyFailed"> - A cópia falhou porque você não tem permissão para copiar. + Você não está autorizado a copiar isso. </notification> <notification name="InventoryAccepted"> - [NAME] aceitou sua oferta de inventário. + [NAME] recebeu sua oferta de inventário. </notification> <notification name="InventoryDeclined"> [NAME] rejeitou sua oferta de inventário. @@ -2484,12 +2015,14 @@ Por favor, compre apenas um objeto. Seu cartão de visita foi negado. </notification> <notification name="TeleportToLandmark"> - Agora que você chegou à mainland, você pode se teletransportar para locais como '[NAME]' clicando no botão de Inventário, no canto direito inferior de sua tela, e selecionando a pasta Landmarks. -Dê um duplo-clique na landmark e clique Teletransportar para viajar para o local desejado. + Para se teletransportar para lugares como '[NAME]', abra o painel 'Lugares' à direita da tela e selecione a guia Marcos. +Basta clicar em qualquer marco e depois clicar em 'Teletransportar' na parte inferior da tela. +(Também é possível clicar duas vezes no marco, ou clicar no marco com o botão direito e selecionar 'Teletransportar'.) </notification> <notification name="TeleportToPerson"> - Agora que você chegou à mainland, você pode contatar residentes como '[NAME]' clicando no botão de Inventário, canto direito inferior de sua tela, e selecionando a pasta Cartões de Visita. -Dê um duplo-clique num cartão de visita e em Mensagem Instantânea, digite sua mensagem. + Para entrar em contato com residentes como ''[NAME]', abra o painel 'Pessoas' à direita da tela. +Selecione o residente da lista e clique em 'MI' na parte de baixo do painel. +(Também é possível clicar duas vezes no nome, ou clicar no nome com o botão direito e selecionar 'MI'.) </notification> <notification name="CantSelectLandFromMultipleRegions"> Impossível selecionar terra nas fronteiras do servidor. Tente selecionar um pedaço menor de terra. @@ -2511,6 +2044,9 @@ Dê um duplo-clique num cartão de visita e em Mensagem Instantânea, digite sua <notification name="SystemMessage"> [MESSAGE] </notification> + <notification name="PaymentRecived"> + [MESSAGE] + </notification> <notification name="EventNotification"> Notificação de evento: @@ -2533,8 +2069,20 @@ Dê um duplo-clique num cartão de visita e em Mensagem Instantânea, digite sua [NAMES] </notification> <notification name="NoQuickTime"> - O software QuickTime da Apple parece não estar instalado em seu sistema. -Se você deseja ver fluxo de mídia em terrenos que aceitem isso, você deverá ir ao site do QickTime (http://www.apple.com/quicktime) e instalar o player do QuickTime. + Aparentemente o QuickTime da Apple ainda não foi instalado no seu computador. +Para ver mídia em stream nas regiões que oferecem esse formato, vá ao [http://www.apple.com/quicktime site do QuickTime] e instale o QuickTime Player. + </notification> + <notification name="NoPlugin"> + Nenhum plugin de mídia detectado para lidar com o tipo de mime "[MIME_TYPE]". Este tipo de mídia não poderão ser acessados. + </notification> + <notification name="MediaPluginFailed"> + Falha no plugin de mídia abaixo: + [PLUGIN] + +Instale o plugin novamente ou contate o fabricante se o problema persistir. + <form name="form"> + <ignore name="ignore" text="Falha do plugin de mídia"/> + </form> </notification> <notification name="OwnedObjectsReturned"> Os objetos que lhe pertencem no lote selecionado do terreno, voltaram ao seu inventário. @@ -2553,23 +2101,26 @@ Objetos não transferíveis dados ao grupo foram deletados. <notification name="UnOwnedObjectsReturned"> Os objetos no lote selecionado que NÃO são seus, voltaram aos seus donos. </notification> + <notification name="ServerObjectMessage"> + Mensagem de [NAME]: +[MSG] + </notification> <notification name="NotSafe"> - Esta terra permite que você sofra ataques. -Você pode ser ferido aqui. Se você morrer, você será teletransportado à sua posição inicial. + A opção 'danos' desta região está ativada. +Você pode se dar mal aqui. Se você morre, você será teletransportado de volta para casa. </notification> <notification name="NoFly"> - Este terreno tem a opção Voar desabilitada. -Ou seja, você não pode voar aqui. + Esta área desativou a opção de voar. +Logo, não é possível voar aqui. </notification> <notification name="PushRestricted"> - Esta terra é “Não empurre”. -Você não pode empurrar os outros, a não ser que seja o proprietário da terra. + Esta área não tolera empurrões. Não é possível empurrar os outros aqui, a não ser que você seja o proprietário. </notification> <notification name="NoVoice"> - O uso de voz está desabilitado nesta terra. + Esta área desativou o bate-papo de voz. Você não vai ouvir ninguém falar. </notification> <notification name="NoBuild"> - Este terreno tem a opção de construir desabilitada, ou seja, você não pode criar objetos aqui. + Esta área desativou a opção de construir. Não é possível construir ou fazer rez de objetos nesta área. </notification> <notification name="ScriptsStopped"> Um administrador não permitiu scripts temporariamente nesta região. @@ -2578,10 +2129,12 @@ Você não pode empurrar os outros, a não ser que seja o proprietário da terra Esta região não roda nenhum script. </notification> <notification name="NoOutsideScripts"> - Neste terreno, nenhum script funcionará, a não ser os scripts do próprio dono da terra. + Esta região não permite scripts de fora. + +Os únicos scripts que funcionam são os do proprietário do terreno. </notification> <notification name="ClaimPublicLand"> - Pode apenas reclamar terreno público na região em que você está. + Você só pode reivindicar terrenos públicos na região onde você está. </notification> <notification name="RegionTPAccessBlocked"> Você não é permitido na Região devido à sua Classificação de maturidade. Você precisa validar sua idade e/ou instalar o último Visualizador. @@ -2594,16 +2147,9 @@ Por favor, vá ao Banco de Conhecimento para detalhes sobre o acesso de áreas c <notification name="NoTeenGridAccess"> Sua conta não pode conectar a esta região da grade teen. </notification> - <notification name="NoHelpIslandTP"> - Você não pode se tele-transportar de volta à Ilha de Ajuda. -Vá para a Ilha de Ajuda Pública para repetir este tutorial. - </notification> <notification name="ImproperPaymentStatus"> Você não tem o status de pagamento adequado para entrar nesta região. </notification> - <notification name="MustGetAgeRegion"> - Você precisa ter sua idade verificada para entrar nesta região. - </notification> <notification name="MustGetAgeParcel"> Você precisa ter a idade verificada para entrar neste lote. </notification> @@ -2666,31 +2212,35 @@ Por favor, tente novamente em alguns instantes. Nenhum lote válido foi encontrado. </notification> <notification name="ObjectGiveItem"> - Um objeto nomeado [OBJECTFROMNAME] do dono [FIRST] [LAST] deu a você [OBJECTTYPE] nomeado '[OBJECTNAME]'. + Um objeto chamado [OBJECTFROMNAME] de [NAME_SLURL] lhe deu [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Segure"/> <button name="Discard" text="Descarte"/> - <button name="Mute" text="Mudo"/> + <button name="Mute" text="Bloquear"/> </form> </notification> <notification name="ObjectGiveItemUnknownUser"> - Um objeto nomeado [OBJECTFROMNAME], de dono desconhecido, deu a você um [OBJECTTYPE] nomeado [OBJECTNAME]. + Um objeto chamado [OBJECTFROMNAME] de (residente desconhecido) lhe deu [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Segure"/> <button name="Discard" text="Descarte"/> - <button name="Mute" text="Mudo"/> + <button name="Mute" text="Bloquear"/> </form> </notification> <notification name="UserGiveItem"> - [NAME]deu a voce um [OBJECTTYPE] nomeado '[OBJECTNAME]'. + [NAME_SLURL] lhe deu [OBJECTTYPE]: +[ITEM_SLURL] <form name="form"> <button name="Keep" text="Mantenha"/> + <button name="Show" text="Mostrar"/> <button name="Discard" text="Descarte"/> - <button name="Mute" text="Mudo"/> </form> </notification> <notification name="GodMessage"> [NAME] + [MESSAGE] </notification> <notification name="JoinGroup"> @@ -2702,7 +2252,7 @@ Por favor, tente novamente em alguns instantes. </form> </notification> <notification name="TeleportOffered"> - [NAME] ofereceu um teletransporte para seu local: + [NAME] quer te teletransportar para a região deles: [MESSAGE] <form name="form"> @@ -2729,6 +2279,9 @@ Por favor, tente novamente em alguns instantes. <button name="Decline" text="Recusar"/> </form> </notification> + <notification name="FriendshipOffered"> + Você convidou [TO_NAME] para ser seu amigo(a) + </notification> <notification name="OfferFriendshipNoMessage"> [NAME] está lhe oferecendo sua amizade. @@ -2753,12 +2306,12 @@ Isto adicionará uma anotação em seu inventário, de modo que você possa mand </form> </notification> <notification name="RegionRestartMinutes"> - A região será reiniciada em [MINUTES] minutos. -Se permanecer nesta região, você será desconectado. + Esta região será reiniciada em [MINUTES] minutos. +Se permanecer aqui, você será desconectado. </notification> <notification name="RegionRestartSeconds"> - Região será reiniciada em [SECONDS] segundos. -Se permanecer nesta região, você será desconectado. + Esta região será reiniciada em [SECONDS] segundos. +Se permanecer aqui, você será desconectado. </notification> <notification name="LoadWebPage"> Carregar página da web [URL]? @@ -2778,7 +2331,7 @@ Do objeto: [OBJECTNAME], dono: [NAME]? Falhou ao procurar [TYPE] nomeado [DESC] no banco de dados. </notification> <notification name="InvalidWearable"> - O item que você está tentando vestir usa uma característica que seu Visualizador não lê. Por favor, atualize sua versão do [APP_NAME] para vestir este item. + O item que você está tentando usar tem um recurso que seu Visualizador não consegue ler. Atualize o [APP_NAME] para poder vestir esse item. </notification> <notification name="ScriptQuestion"> '[OBJECTNAME]', um objeto pertencente a '[NAME]', gostaria de: @@ -2788,16 +2341,16 @@ Está OK? <form name="form"> <button name="Yes" text="Sim"/> <button name="No" text="Não"/> - <button name="Mute" text="Mudo"/> + <button name="Mute" text="Bloquear"/> </form> </notification> <notification name="ScriptQuestionCaution"> - '[OBJECTNAME]', um objeto de '[NAME]', gostaria de: + Um objeto chamado '[OBJECTNAME]', de '[NAME]' gostaria de: [QUESTIONS] -Se você não confia neste objeto ou em seu criador, você deveria negar o pedido. Para informações adicionais clique no botão Detalhes. +Se você não confia nos objetos deste autor, recuse-o. -Autorizar este pedido? +Deixar? <form name="form"> <button name="Grant" text="Autorizar"/> <button name="Deny" text="Negar"/> @@ -2818,39 +2371,44 @@ Autorizar este pedido? <button name="Ignore" text="Ignorar"/> </form> </notification> + <notification name="ScriptToast"> + [FIRST] [LAST], '[TITLE]' está pedindo dados de usuário. + <form name="form"> + <button name="Open" text="Abrir diálogo"/> + <button name="Ignore" text="Ignorar"/> + <button name="Block" text="Bloquear"/> + </form> + </notification> <notification name="FirstBalanceIncrease"> - Você recebeu uma quantia de L$[AMOUNT]. -Objetos e outros usuários podem dar L$ a você. -Seu saldo é mostrado no canto superior direito da tela. + Você acaba de ganhar L$[AMOUNT]. +Seu saldo em L$ está no canto direito superior. </notification> <notification name="FirstBalanceDecrease"> - Você pagou L$[AMOUNT]. -O seu balanço de dinheiro está sendo mostrado no canto superior direito da tela. + Você acaba de pagar L$[AMOUNT]. +Seu saldo em L$ está no canto direito superior. + </notification> + <notification name="BuyLindenDollarSuccess"> + Obrigado e volte sempre! + +Seu saldo L$ será atualizado findo o processamento da transação. Se o processamento levar mais de 20 min, a transação pode vir a ser cancelada. Neste caso, o valor da compra será creditado ao seu saldo em US$. + +Para checar o status do pagamento, consulte seu Histórico de transações no [http://secondlife.com/account/ Painel] </notification> <notification name="FirstSit"> - Você está sentado. -Use as setas (ou AWSD) para mudar a visão. -Clique em 'Levantar' para levantar. + Você está sentado(a). +Use as teclas de seta (ou AWSD) para olhar à sua volta. +Clique o botão 'Ficar de pé' para ficar de pé. </notification> <notification name="FirstMap"> - Clique e arraste para movimentar o mapa. -Dê um duplo clique para teletransportar-se. -Use os controles à direita para achar coisas e mostrar fundos diferentes. + Clique a arraste o mapa para olhar à sua volta. +Clique duas vezes para se teletransportar. +Use os controles à direita para achar coisas e exibir outros planos de fundo. </notification> <notification name="FirstBuild"> - Você pode construir novos objetos em algumas áreas do [SECOND_LIFE]. -Use as ferramentas acima, à esquerda para construir e tente manter apertadas as teclas Ctrl ou Alt para mudar rapidamente as ferramentas. -Aperte ESC para parar de construir. - </notification> - <notification name="FirstLeftClickNoHit"> - Clicando com esquerdo, você interage com os objetos especiais. -Se o ponteiro do mouse mudar a uma mão, você pode interagir com o objeto. -Clique com o direito que será mostrado sempre um menu das ações que você pode fazer. + Você abriu as Ferramentas de construção. Todos os objetos à sua volta foram criados com essas ferrametnas. </notification> <notification name="FirstTeleport"> - Esta região não permite teletransporte ponto-a-ponto. Assim, você foi teletransportado para o telehub mais próximo. -Seu destino está assinalado com um farol alto. -Siga a flecha vermelha até o farol, ou clique nela para apagar o farol. + Você só pode se teletransportar para certas áreas nesta região. A seta aponta o seu destino específico. Clique na seta para ignorá-la. </notification> <notification name="FirstOverrideKeys"> Suas chaves do movimento estão sendo seguras agora por um objeto. @@ -2859,87 +2417,81 @@ Alguns objetos (como armas) requerem que você passe para mouselook para usá-lo Pressione 'M' para fazer isto. </notification> <notification name="FirstAppearance"> - Você está editando sua aparência. -Para girar e ver em zoom, use as teclas de setas. -Quando terminar, aperte 'Salvar Tudo' para salvar sua aparência e sair. -Você pode editar sua aparência quantas vezes quiser. + Você está editando sua aparência. +Use as teclas de seta para olhar à sua volta. +Quando terminar, clique em 'Salvar tudo'. </notification> <notification name="FirstInventory"> - Este é o seu inventário, que contém objetos, notecards, roupas e outras coisas suas. -* Para vestir um objeto ou uma pasta completa, arraste-o para si mesmo(a). -* Para trzer um objeto ao mundo, arraste-o ao chão. -* Para ler um notecard, dê um duplo-click nele. + Este é seu inventário, onde ficam todos os seus pertences. + +* Para vestir uma peça, arraste-a para o seu corpo. +* Para fazer rez de um objeto, arraste-o para o chão. +* Para ler uma anotação, clique duas vezes nela. </notification> <notification name="FirstSandbox"> - Esta é a região conhecida como sandbox. -Os objetos que você constrói aqui podem ser deletados depois que você deixa a área. -As sandboxes são limpas de forma periódica. -Por favor, veja a informação no alto da tela, próxima ao nome da região. -As regiões de sandbox não são comuns e são marcadas com símbolos. + Este é um sandbox, uma área onde residentes podem aprender a construir. + +Qualquer objeto deixado aqui será apagado quando você sair. Não se esqueça de clicar duas vezes e selecionar 'Pegar' para levar seu projeto para o seu inventário. </notification> <notification name="FirstFlexible"> - Este objeto tem a propriedade flexível. -Objetos flexíveis não podem ser físicos e devem ser fantasmas até que a caixa de verificação seja desmarcada. + Este objeto é flexível. Flexis devem ser phantom, não físicos. </notification> <notification name="FirstDebugMenus"> - Você ativou o menu Avançado. -Este menu contém funcionalidades úteis para desenvolvedores debugarem o [SECOND_LIFE]. -Para mostrar esse menu no Windows pressione Ctrl+Alt+D. No Mac pressione ⌥⌘D. + Você abriu o menu Avançado. + +Para alternar este menu, + Windows Ctrl+Alt+D + Mac: ⌥⌘D </notification> <notification name="FirstSculptedPrim"> - Você está editando uma primitiva esculpida. -Primitivas esculpidas requerem uma textura especial para especificar suas formas. -Você encontrará exemplos dessas texturas na Biblioteca do Inventário. - </notification> - <notification name="FirstMedia"> - Você começou a tocar uma mídia. Mídias podem ser autorizadas a iniciar automaticamente se você assim escolher na janela de Preferências, sob Áudio/Vídeo. Atente para o risco de segurança que pode haver ao acessar websites de mídia que você não confia. + Você está editando um prim esculpido. Prims esculpidos requerem uma textura especial para definir o formato. </notification> <notification name="MaxListSelectMessage"> Você pode selecionar até [MAX_SELECT] itens desta lista. </notification> <notification name="VoiceInviteP2P"> - [NAME] está lhe convidando para uma conversa com voz. -Clique Aceitar para atender, ou Recusar para recusar o convite. Clique Mudo para calar quem está chamando. + [NAME] está te convidando para um bate-papo de voz. +Clique em Aceitar para atender ou em Recusar para recusar este convite. Clique em Bloquear para bloquear ligações deste avatar. <form name="form"> <button name="Accept" text="Aceitar"/> <button name="Decline" text="Recusar"/> - <button name="Mute" text="Mudo"/> + <button name="Mute" text="Bloquear"/> </form> </notification> <notification name="AutoUnmuteByIM"> - [FIRST] [LAST] recebeu uma Mensagem Instantânea sua e automaticamente não está mais no modo mudo. + [FIRST] [LAST] recebeu uma MI e foi desbloqueado(a) automaticamente. </notification> <notification name="AutoUnmuteByMoney"> - [FIRST] [LAST] recebeu pagamento seu e automaticamente não está mais no modo mudo. + [FIRST] [LAST] recebeu dinheiro e foi desbloqueado(a) automaticamente. </notification> <notification name="AutoUnmuteByInventory"> - [FIRST] [LAST] recebeu inventário seu e automaticamente não está mais mudo. + [FIRST] [LAST] recebeu dinheiro e foi desbloqueado(a) automaticamente. </notification> <notification name="VoiceInviteGroup"> - [NAME] juntou-se a uma conversa com voz do grupo [GROUP]. -Clique Aceitar para atender, ou Recusar para recusar o convite. Clique Mudo para calar quem está chamando. + [NAME] atendeu uma ligação de bate-papo de voz com o grupo [GROUP]. +Clique em Aceitar para atender ou em Recusar para recusar este convite. Clique em Bloquear para bloquear ligações deste avatar. <form name="form"> <button name="Accept" text="Aceitar"/> <button name="Decline" text="Recusar"/> - <button name="Mute" text="Mudo"/> + <button name="Mute" text="Bloquear"/> </form> </notification> <notification name="VoiceInviteAdHoc"> - [NAME] juntou-se a uma chamada de Conferência com voz... -Clique Aceitar para juntar-se à chamada ou Recusar para recusar o convite. Clique Mudo para calar este usuário. + [NAME] atendeu uma ligação de teleconferência. +Clique em Aceitar para atender ou em Recusar para recusar este convite. Clique em Bloquear para bloquear ligações deste avatar. <form name="form"> <button name="Accept" text="Aceitar"/> <button name="Decline" text="Recusar"/> - <button name="Mute" text="Mudo"/> + <button name="Mute" text="Bloquear"/> </form> </notification> <notification name="InviteAdHoc"> - [NAME] está lhe convidando para uma conversa em conferência... - Clique Aceitar para se juntar à conversa, ou Recusar para recusar o convite. Clique Mudo para calar este usuário. + [NAME] está te convidando para uma teleconferência de bate-papo. +Clique em Aceitar para atender ou em Recusar para recusar este convite. Clique em Bloquear para bloquear ligações deste avatar. <form name="form"> <button name="Accept" text="Aceitar"/> <button name="Decline" text="Recusar"/> - <button name="Mute" text="Mudo"/> + <button name="Mute" text="Bloquear"/> </form> </notification> <notification name="VoiceChannelFull"> @@ -2949,25 +2501,25 @@ Clique Aceitar para juntar-se à chamada ou Recusar para recusar o convite. Cliq Desculpe-nos. Esta área atingiu seu limite de capacidade para conversas com voz. Favor tentar usar voz em outra área. </notification> <notification name="VoiceChannelDisconnected"> - Você foi desconectado de [VOICE_CHANNEL_NAME]. Voce será reconectado agora à Conversa com voz local. + Você saiu da ligação com [VOICE_CHANNEL_NAME]. Agora você será reconectado ao bate-papo local. </notification> <notification name="VoiceChannelDisconnectedP2P"> - [VOICE_CHANNEL_NAME] desligou a chamada. Voce será reconectado agora à Conversa com voz local. + [VOICE_CHANNEL_NAME] encerrou a ligação. Agora você será reconectado ao bate-papo local. </notification> <notification name="P2PCallDeclined"> - [VOICE_CHANNEL_NAME] recusou sua chamada. Voce será reconectado agora à Conversa com voz local. + [VOICE_CHANNEL_NAME] recusou a ligação. Agora você será reconectado ao bate-papo local. </notification> <notification name="P2PCallNoAnswer"> - [VOICE_CHANNEL_NAME] não está disponível para aceitar sua chamada. Voce será reconectado agora à Conversa com voz local. + [VOICE_CHANNEL_NAME] não está disponível para atender sua ligação. Agora você será reconectado ao bate-papo local. </notification> <notification name="VoiceChannelJoinFailed"> - Falha na conexão com [VOICE_CHANNEL_NAME], tente novamente mais tarde. Voce será reconectado agora à Conversa com voz local. + Falha de conexão com [VOICE_CHANNEL_NAME]. Tente novamente mais tarde. Agora você será reconectado ao bate-papo local. </notification> <notification name="VoiceLoginRetry"> Estamos criando uma canal de voz para você. Isto pode levar até um minuto. </notification> <notification name="Cannot enter parcel: not a group member"> - Você não pode entrar nessa terra, você não é membro do grupo autorizado. + Só membros de um grupo podem acessar esta área. </notification> <notification name="Cannot enter parcel: banned"> Você não pode entrar nessa terra, você foi banido. @@ -2982,18 +2534,58 @@ Clique Aceitar para juntar-se à chamada ou Recusar para recusar o convite. Cliq Ocorreu um erro enquanto você tentava se conectar à conversa de voz de [VOICE_CHANNEL_NAME]. Favor tentar novamente mais tarde. </notification> <notification name="ServerVersionChanged"> - A região em que você entrou está rodando uma versão diferente de simulador. Clique aqui para mais detalhes. + Você chegou a uma região com uma versão diferente de servidor, que pode afetar o desempenho. [[URL] Consultar notas da versão.] + </notification> + <notification name="UnsupportedCommandSLURL"> + O SLurl no qual você clicou não é suportado. + </notification> + <notification name="BlockedSLURL"> + Um SLurl recebido de um navegador inidôneo foi bloqueado para a sua segurança. </notification> - <notification name="UnableToOpenCommandURL"> - A URL que vocÊ clicou não pode ser aberta no navegador web. + <notification name="ThrottledSLURL"> + Vários SLurls foram recebidos de um navegador inidôneo em pouco tempo. +Para sua segurança, os SLurls serão bloqueados por alguns instantes. + </notification> + <notification name="IMToast"> + [MESSAGE] + <form name="form"> + <button name="respondbutton" text="Responder"/> + </form> + </notification> + <notification name="AttachmentSaved"> + Anexo salvo. + </notification> + <notification name="UnableToFindHelpTopic"> + Nenhum tópico de ajuda foi encontrado com relação a este elemento. + </notification> + <notification name="ObjectMediaFailure"> + Erro do servidor: Falha ao atualizar ou executar a mídia. +'[ERROR]' + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="TextChatIsMutedByModerator"> + Seu texto de bate-papo foi silenciado pelo moderador. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="VoiceIsMutedByModerator"> + Sua voz foi silenciada pelo moderador. + <usetemplate name="okbutton" yestext="OK"/> + </notification> + <notification name="ConfirmClearTeleportHistory"> + Tem certeza que deseja apagar todo o seu histórico de teletransporte? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> + <notification name="BottomTrayButtonCanNotBeShown"> + O botão selecionado não pode ser exibido no momento. +O botão será exibido quando houver espaço suficente. </notification> <global name="UnsupportedCPU"> - A velocidade da sua CPU não suporta os requisitos mínimos exigidos. </global> <global name="UnsupportedGLRequirements"> - Você não parece ter os requisitos de hardware recomendados para rodar o [APP_NAME]. O [APP_NAME] exige uma placa gráfica OpenGL que tem apoio a multi- texturas. Se este for o caso, você pode se certificar de que tem os drivers mais recentes para sua placa gráfica, e os patches e pacotes de serviços para seu sistema operacional. + Aparentemente a sua máquina não atende os requisitos de hardware do [APP_NAME]. [APP_NAME] requer placas de vídeo OpenGL com suporte a multitexturas. Se sua place de vídeo tiver este perfil, atualize o driver da placa de vídeo, assim como patches e service packs do sistema operacional. -Se continuar com problemas, por favor visite: http://www.secondlife.com/support +Se você continuar a receber esta mensagem, consulte o [SUPPORT_SITE]. </global> <global name="UnsupportedCPUAmount"> 796 @@ -3007,10 +2599,8 @@ Se continuar com problemas, por favor visite: http://www.secondlife.com/support <global name="UnsupportedRAM"> - A memória do seu sistema não suporta os requisitos mínimos exigidos. </global> - <global name="PermYes"> - Sim - </global> - <global name="PermNo"> - Não + <global name="You can only set your 'Home Location' on your land or at a mainland Infohub."> + Se você tem um terreno, seu terreno pode ser sua casa. +Outra opção é procurar por lugares com a tag 'Infohub' no mapa. </global> </notifications> diff --git a/indra/newview/skins/default/xui/pt/panel_active_object_row.xml b/indra/newview/skins/default/xui/pt/panel_active_object_row.xml new file mode 100644 index 0000000000..73f6b2225f --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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"> + Objeto desconhecido + </string> + <text name="object_name"> + Objeto sem nome + </text> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_adhoc_control_panel.xml b/indra/newview/skins/default/xui/pt/panel_adhoc_control_panel.xml new file mode 100644 index 0000000000..aa8fd0b2d2 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Ligar" name="call_btn"/> + <button label="Desligar" name="end_call_btn"/> + <button label="Controles de voz" name="voice_ctrls_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml new file mode 100644 index 0000000000..ecaf062e41 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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]min + </string> + <string name="FormatHours"> + [COUNT]h + </string> + <string name="FormatDays"> + [COUNT]dias + </string> + <string name="FormatWeeks"> + [COUNT]semanas + </string> + <string name="FormatMonths"> + [COUNT]meses + </string> + <string name="FormatYears"> + [COUNT]anos + </string> + <text name="avatar_name" value="Desconhecido"/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/pt/panel_block_list_sidetray.xml new file mode 100644 index 0000000000..c5f93d719a --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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 de bloqueados + </text> + <scroll_list name="blocked" tool_tip="Lista atual dos residentes bloqueados"/> + <button label="Bloquear residente..." label_selected="Bloquear residente..." name="Block resident..." tool_tip="Selecione o residente a bloquear"/> + <button label="Bloquear objeto por nome..." label_selected="Bloquear objeto por nome..." name="Block object by name..."/> + <button label="Desbloquear" label_selected="Desbloquear" name="Unblock" tool_tip="Remover residente ou objeto da lista dos bloqueados"/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_bottomtray.xml b/indra/newview/skins/default/xui/pt/panel_bottomtray.xml new file mode 100644 index 0000000000..2a66620800 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_bottomtray.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="bottom_tray"> + <string name="SpeakBtnToolTip"> + Liga e desliga o microfone + </string> + <string name="VoiceControlBtnToolTip"> + Mostra/oculta os controles de voz + </string> + <layout_stack name="toolbar_stack"> + <layout_panel name="gesture_panel"> + <gesture_combo_box label="Gesto" name="Gesture" tool_tip="Mostra/oculta os gestos"/> + </layout_panel> + <layout_panel name="movement_panel"> + <button label="Movimentar" name="movement_btn" tool_tip="Mostra/oculta os controles de movimento"/> + </layout_panel> + <layout_panel name="cam_panel"> + <button label="Exibir" name="camera_btn" tool_tip="Mostra/oculta os controles da câmera"/> + </layout_panel> + <layout_panel name="snapshot_panel"> + <button label="" name="snapshots" tool_tip="Tirar foto"/> + </layout_panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_classified_info.xml b/indra/newview/skins/default/xui/pt/panel_classified_info.xml new file mode 100644 index 0000000000..6f48a36182 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Dados do anúncio"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text name="classified_name" value="[nome]"/> + <text name="classified_location" value="[carregando...]"/> + <text name="content_type" value="[content type]"/> + <text name="category" value="[category]"/> + <check_box label="Renovar automaticamente todas as semanas" name="auto_renew"/> + <text name="price_for_listing" tool_tip="Preço do anúncio."> + L$ [PRICE] + </text> + <text name="classified_desc" value="[descrição]"/> + </panel> + </scroll_container> + <panel name="buttons"> + <button label="Teletransportar" name="teleport_btn"/> + <button label="Mapa" name="show_on_map_btn"/> + <button label="Editar" name="edit_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_alpha.xml b/indra/newview/skins/default/xui/pt/panel_edit_alpha.xml new file mode 100644 index 0000000000..f8be9daf1b --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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 inferior" name="Lower Alpha" tool_tip="Selecionar imagem"/> + <texture_picker label="Alpha de cima" name="Upper Alpha" tool_tip="Selecionar imagem"/> + <texture_picker label="Cabeça Alpha" name="Head Alpha" tool_tip="Selecionar imagem"/> + <texture_picker label="Olhos Alpha" name="Eye Alpha" tool_tip="Selecionar imagem"/> + <texture_picker label="Cabelo alpha" name="Hair Alpha" tool_tip="Selecionar imagem"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_classified.xml b/indra/newview/skins/default/xui/pt/panel_edit_classified.xml new file mode 100644 index 0000000000..a754c5f070 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_edit_classified.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Editar anúncio" name="panel_edit_classified"> + <panel.string name="location_notice"> + (salvar para atualizar) + </panel.string> + <text name="title"> + Editar anúncio + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="Selecione uma imagem"/> + <text name="Name:"> + Cargo: + </text> + <text name="description_label"> + Descrição: + </text> + <text name="location_label"> + Localização: + </text> + <text name="classified_location"> + Carregando... + </text> + <button label="Usar configuração local" name="set_to_curr_location_btn"/> + <spinner label="L$" name="price_for_listing" tool_tip="Preço do anúncio" value="50"/> + <check_box label="Renovação automática semanal" name="auto_renew"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="Salvar" name="save_changes_btn"/> + <button label="Cancelar" name="cancel_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_eyes.xml b/indra/newview/skins/default/xui/pt/panel_edit_eyes.xml new file mode 100644 index 0000000000..2c73e67c4a --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Íris" name="Iris" tool_tip="Selecionar imagem"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="eyes_main_tab" title="Olhos"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_gloves.xml b/indra/newview/skins/default/xui/pt/panel_edit_gloves.xml new file mode 100644 index 0000000000..6b4141e4a7 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Tecido" name="Fabric" tool_tip="Selecionar imagem"/> + <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="gloves_main_tab" title="Luvas"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_hair.xml b/indra/newview/skins/default/xui/pt/panel_edit_hair.xml new file mode 100644 index 0000000000..b49f5850aa --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Selecionar imagem"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="hair_color_tab" title="Cor"/> + <accordion_tab name="hair_style_tab" title="Estilo"/> + <accordion_tab name="hair_eyebrows_tab" title="Sombrancelhas"/> + <accordion_tab name="hair_facial_tab" title="Faciais"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_jacket.xml b/indra/newview/skins/default/xui/pt/panel_edit_jacket.xml new file mode 100644 index 0000000000..dcccf76c26 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Tecido de cima" name="Upper Fabric" tool_tip="Selecionar imagem"/> + <texture_picker label="Tecido de baixo" name="Lower Fabric" tool_tip="Selecionar imagem"/> + <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="jacket_main_tab" title="Jaqueta"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_pants.xml b/indra/newview/skins/default/xui/pt/panel_edit_pants.xml new file mode 100644 index 0000000000..8cfa6933eb --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Tecido" name="Fabric" tool_tip="Selecionar imagem"/> + <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="pants_main_tab" title="Calças"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_pick.xml b/indra/newview/skins/default/xui/pt/panel_edit_pick.xml new file mode 100644 index 0000000000..f56533652d --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_edit_pick.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Editar destaques" name="panel_edit_pick"> + <text name="title"> + Editar destaques + </text> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <icon label="" name="edit_icon" tool_tip="Selecione uma imagem"/> + <text name="Name:"> + Cargo: + </text> + <text name="description_label"> + Descrição: + </text> + <text name="location_label"> + Localização: + </text> + <text name="pick_location"> + Carregando... + </text> + <button label="Usar configuração local" name="set_to_curr_location_btn"/> + </panel> + </scroll_container> + <panel label="bottom_panel" name="bottom_panel"> + <button label="Salvar [WHAT]" name="save_changes_btn"/> + <button label="Cancelar" name="cancel_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml b/indra/newview/skins/default/xui/pt/panel_edit_profile.xml index a989cab167..d7e7d30a73 100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/pt/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="Teste" /> - <string name="AcctTypeCharterMember" - value="Estatuto do membro" /> - <string name="AcctTypeEmployee" - value="Contratado da Linden Lab" /> - <string name="PaymentInfoUsed" - value="Infor. de pagamento utilizadas" /> - <string name="PaymentInfoOnFile" - value="Infor. de pagamento no arquivo" /> - <string name="NoPaymentInfoOnFile" - value="Sem infor. de pagamento no arquivo" /> - <string name="AgeVerified" - value="Idade Verificada" /> - <string name="NotAgeVerified" - value="Idade não Verificada" /> - <string name="partner_edit_link_url"> - http://www.secondlife.com/account/partners.php?lang=pt - </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="Parceiro:"/> - <panel name="partner_data_panel"> - <text name="partner_text" value="[FIRST] [LAST]"/> - </panel> - <text name="text_box3"> - Resposta no Modo Ocupado: - </text> - </panel> - </panel> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Editar perfil" name="edit_profile_panel"> + <string name="CaptionTextAcctInfo"> + [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] + </string> + <string name="RegisterDateFormat"> + [REG_DATE] ([AGE]) + </string> + <string name="AcctTypeResident" value="Residente"/> + <string name="AcctTypeTrial" value="Teste"/> + <string name="AcctTypeCharterMember" value="Estatuto do membro"/> + <string name="AcctTypeEmployee" value="Contratado da Linden Lab"/> + <string name="PaymentInfoUsed" value="Infor. de pagamento utilizadas"/> + <string name="PaymentInfoOnFile" value="Infor. de pagamento no arquivo"/> + <string name="NoPaymentInfoOnFile" value="Sem infor. de pagamento no arquivo"/> + <string name="AgeVerified" value="Idade Verificada"/> + <string name="NotAgeVerified" value="Idade não Verificada"/> + <string name="partner_edit_link_url"> + http://www.secondlife.com/account/partners.php?lang=pt + </string> + <string name="no_partner_text" value="Nenhum"/> + <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="Selecione uma imagem"/> + </panel> + <panel name="first_life_image_panel"> + <text name="real_world_photo_title_text" value="Mundo real:"/> + </panel> + <icon label="" name="real_world_edit_icon" tool_tip="Selecione uma imagem"/> + <text name="title_homepage_text"> + Página web: + </text> + <check_box label="Mostrar nos resultados de busca" name="show_in_search_checkbox"/> + <text name="title_acc_status_text" value="Minha conta:"/> + <text name="my_account_link" value="[[URL] Abrir meu painel]"/> + <text name="acc_status_text" value="Residente. Dados de pagamento: não constam"/> + <text name="title_partner_text" value="Parceiro(a):"/> + <text name="partner_edit_link" value="[[URL] Editar]"/> + </panel> + </panel> + </scroll_container> + <panel name="profile_me_buttons_panel"> + <button label="Salvar alterações" name="save_btn"/> + <button label="Cancelar" name="cancel_btn"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shape.xml b/indra/newview/skins/default/xui/pt/panel_edit_shape.xml new file mode 100644 index 0000000000..6a03c2e2ff --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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"> + Sexo: + </text> + <radio_group name="sex_radio"> + <radio_item label="Feminino" name="radio"/> + <radio_item label="Masculino" name="radio2"/> + </radio_group> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shape_body_tab" title="Corpo"/> + <accordion_tab name="shape_head_tab" title="Cabeça"/> + <accordion_tab name="shape_eyes_tab" title="Olhos"/> + <accordion_tab name="shape_ears_tab" title="Orelhas"/> + <accordion_tab name="shape_nose_tab" title="Nariz"/> + <accordion_tab name="shape_mouth_tab" title="Boca"/> + <accordion_tab name="shape_chin_tab" title="Queixo"/> + <accordion_tab name="shape_torso_tab" title="Tronco"/> + <accordion_tab name="shape_legs_tab" title="Pernas"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shirt.xml b/indra/newview/skins/default/xui/pt/panel_edit_shirt.xml new file mode 100644 index 0000000000..e9d4207e49 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="tecido" name="Fabric" tool_tip="Clique para escolher uma foto"/> + <color_swatch label="Cor/Matiz" name="Color/Tint" tool_tip="Clique para abrir o selecionador de cor"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shirt_main_tab" title="Camisa"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_shoes.xml b/indra/newview/skins/default/xui/pt/panel_edit_shoes.xml new file mode 100644 index 0000000000..79cb641079 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Tecido" name="Fabric" tool_tip="Selecionar imagem"/> + <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="shoes_main_tab" title="Sapatos"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_skin.xml b/indra/newview/skins/default/xui/pt/panel_edit_skin.xml new file mode 100644 index 0000000000..e3caf9f6f7 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Tatuagens na cabeça" name="Head Tattoos" tool_tip="Selecionar imagem"/> + <texture_picker label="Tatuagem parte de cima" name="Upper Tattoos" tool_tip="Selecionar imagem"/> + <texture_picker label="Tatuagem de baixo" name="Lower Tattoos" tool_tip="Selecionar imagem"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skin_color_tab" title="Cor da pele"/> + <accordion_tab name="skin_face_tab" title="Detalhe do rosto"/> + <accordion_tab name="skin_makeup_tab" title="Maquilagem"/> + <accordion_tab name="skin_body_tab" title="Detalhe do corpo"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_skirt.xml b/indra/newview/skins/default/xui/pt/panel_edit_skirt.xml new file mode 100644 index 0000000000..00ec0691ea --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Tecido" name="Fabric" tool_tip="Selecionar imagem"/> + <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="skirt_main_tab" title="Saia"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_socks.xml b/indra/newview/skins/default/xui/pt/panel_edit_socks.xml new file mode 100644 index 0000000000..88abc74716 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Tecido" name="Fabric" tool_tip="Selecionar imagem"/> + <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="socks_main_tab" title="Meias"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml b/indra/newview/skins/default/xui/pt/panel_edit_tattoo.xml new file mode 100644 index 0000000000..c11d800171 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Tatoo de cabeça" name="Head Tattoo" tool_tip="Clique para escolher uma foto"/> + <texture_picker label="Tatoo da parte superior do corpo" name="Upper Tattoo" tool_tip="Clique para escolher uma foto"/> + <texture_picker label="Tatoo da parte inferior do corpo" name="Lower Tattoo" tool_tip="Clique para escolher uma foto"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_underpants.xml b/indra/newview/skins/default/xui/pt/panel_edit_underpants.xml new file mode 100644 index 0000000000..10c34a1c0a --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Tecido" name="Fabric" tool_tip="Selecionar imagem"/> + <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="underpants_main_tab" title="Roupa de baixo"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/pt/panel_edit_undershirt.xml new file mode 100644 index 0000000000..fb7b919365 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Tecido" name="Fabric" tool_tip="Selecionar imagem"/> + <color_swatch label="Cor/Tonalidade" name="Color/Tint" tool_tip="Selecionar a cor"/> + </panel> + <accordion name="wearable_accordion"> + <accordion_tab name="undershirt_main_tab" title="Camiseta"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml b/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml new file mode 100644 index 0000000000..b85d481941 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Vestível" name="panel_edit_wearable"> + <string name="edit_shape_title"> + Editando forma + </string> + <string name="edit_skin_title"> + Editando pele + </string> + <string name="edit_hair_title"> + Editando cabelo + </string> + <string name="edit_eyes_title"> + Editando os olhos + </string> + <string name="edit_shirt_title"> + Editando camisa + </string> + <string name="edit_pants_title"> + Editando calças + </string> + <string name="edit_shoes_title"> + Editando sapatos + </string> + <string name="edit_socks_title"> + Editando meias + </string> + <string name="edit_jacket_title"> + Editando jaqueta + </string> + <string name="edit_skirt_title"> + Editando saia + </string> + <string name="edit_gloves_title"> + Editando luvas + </string> + <string name="edit_undershirt_title"> + Editando camiseta + </string> + <string name="edit_underpants_title"> + Editando roupa de baixo + </string> + <string name="edit_alpha_title"> + Editando máscara Alpha + </string> + <string name="edit_tattoo_title"> + Editando tatuagem + </string> + <string name="shape_desc_text"> + Forma: + </string> + <string name="skin_desc_text"> + Pele: + </string> + <string name="hair_desc_text"> + Cabelo: + </string> + <string name="eyes_desc_text"> + Olhos: + </string> + <string name="shirt_desc_text"> + Camisa: + </string> + <string name="pants_desc_text"> + Calças: + </string> + <string name="shoes_desc_text"> + Sapatos: + </string> + <string name="socks_desc_text"> + Meias: + </string> + <string name="jacket_desc_text"> + Jaqueta: + </string> + <string name="skirt_skirt_desc_text"> + Saia: + </string> + <string name="gloves_desc_text"> + Luvas: + </string> + <string name="undershirt_desc_text"> + Camiseta: + </string> + <string name="underpants_desc_text"> + Roupa de baixo: + </string> + <string name="alpha_desc_text"> + Máscara alpha: + </string> + <string name="tattoo_desc_text"> + Tatuagem: + </string> + <text name="edit_wearable_title" value="Editando forma"/> + <panel label="Camisa" name="wearable_type_panel"> + <text name="description_text" value="Forma:"/> + </panel> + <panel name="button_panel"> + <button label="Salvar como" name="save_as_button"/> + <button label="Reverter" name="revert_button"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_friends.xml b/indra/newview/skins/default/xui/pt/panel_friends.xml index d430d637ad..1bf7986825 100644 --- a/indra/newview/skins/default/xui/pt/panel_friends.xml +++ b/indra/newview/skins/default/xui/pt/panel_friends.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="friends"> <string name="Multiple"> - Múltiplos amigos... + Diversos amigos </string> <scroll_list name="friend_list" tool_tip="Aperte shift ou control enquanto clica para selecionar múltiplos amigos"> <column name="icon_online_status" tool_tip="Status Online"/> @@ -11,10 +11,10 @@ <column name="icon_edit_mine" tool_tip="Amigo pode editar, apagar ou pegar seus objetos"/> <column name="icon_edit_theirs" tool_tip="Você pode editar os objetos deste amigo"/> </scroll_list> - <button width="86" label="MI/Chamar" name="im_btn" tool_tip="Abrir sessão de Mensagem Instantânea"/> - <button width="86" label="Perfil" name="profile_btn" tool_tip="Mostrar foto, grupos e outras informações"/> - <button width="86" label="Teletransp..." name="offer_teleport_btn" tool_tip="Oferecer a este amigo o teletransporte para sua localização atual"/> - <button width="86" label="Pagar..." name="pay_btn" tool_tip="Dar Linden dólares (L$) a este amigo"/> - <button width="86" label="Remover..." name="remove_btn" tool_tip="Remover esta pessoa de sua lista de amigos"/> - <button width="86" label="Adicionar..." name="add_btn" tool_tip="Oferecer amizade a um residente"/> + <button label="MI/Chamar" name="im_btn" tool_tip="Abrir sessão de Mensagem Instantânea" width="86"/> + <button label="Perfil" name="profile_btn" tool_tip="Mostrar foto, grupos e outras informações" width="86"/> + <button label="Teletransportar" name="offer_teleport_btn" tool_tip="Oferecer a este amigo o teletransporte para sua localização atual" width="86"/> + <button label="Pagar" name="pay_btn" tool_tip="Dar Linden dólares (L$) a este amigo" width="86"/> + <button label="Tirar" name="remove_btn" tool_tip="Remover esta pessoa de sua lista de amigos" width="86"/> + <button label="Adicionar" name="add_btn" tool_tip="Oferecer amizade a um residente" width="86"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_group_control_panel.xml b/indra/newview/skins/default/xui/pt/panel_group_control_panel.xml new file mode 100644 index 0000000000..9dc53d54eb --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Perfil do grupo" name="group_info_btn"/> + <panel name="panel_call_buttons"> + <button label="Ligar para o grupo" name="call_btn"/> + <button label="Desligar" name="end_call_btn"/> + <button label="Abrir controles de voz" name="voice_ctrls_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_group_general.xml b/indra/newview/skins/default/xui/pt/panel_group_general.xml index 226011c138..6ff4f82ba7 100644 --- a/indra/newview/skins/default/xui/pt/panel_group_general.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_general.xml @@ -1,70 +1,37 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Geral" name="general_tab"> - <string name="help_text"> - A aba Geral contém informações gerais sobre este grupo, a lista dos donos e membros visíveis, preferências gerais do grupo e opções dos membros. Passe o mouse sobre as opções para mais ajuda. - </string> - <string name="group_info_unchanged"> - Informações gerais do grupo foram modificadas - </string> - <button label="?" label_selected="?" name="help_button"/> - <line_editor label="Digite o nome do seu novo grupo aqui" name="group_name_editor"/> - <text name="group_name"> - Digite o nome do seu novo grupo aqui - </text> - <text name="prepend_founded_by"> - Fundado por: - </text> - <text name="founder_name" left_delta="74" > - (espera) - </text> - <text name="group_charter_label"> - Declaração do Grupo - </text> - <texture_picker label="Insígnia do Grupo" name="insignia" tool_tip="Clique para escolher uma imagem"/> + <panel.string name="help_text"> + A guia Geral contém informações gerais sobre o grupo, uma lista de membros, preferências do grupo e opções para membros. + +Para obter mais ajuda, passe o mouse sobre as opções. + </panel.string> + <panel.string name="group_info_unchanged"> + Informações gerais do grupo modificadas. + </panel.string> + <panel.string name="incomplete_member_data_str"> + Recuperando dados do membro + </panel.string> <text_editor name="charter"> Declaração do grupo </text_editor> - <button label="Unir (L$0)" label_selected="Unir (L$0)" name="join_button"/> - <button label="Vista detalhada" label_selected="Vista detalhada" name="info_button"/> - <text name="text_owners_and_visible_members"> - Proprietários & Membros visíveis - </text> - <text name="text_owners_are_shown_in_bold"> - (Proprietários são mostrados em negrito ) - </text> <name_list name="visible_members"> - <name_list.columns label="Nome do membro" name="name"/> + <name_list.columns label="Membro" name="name"/> <name_list.columns label="Título" name="title"/> - <name_list.columns label="Último login" name="online"/> </name_list> - <text name="text_group_preferences"> - Preferências do Grupo + <text name="active_title_label"> + Meu cargo </text> + <combo_box name="active_title" tool_tip="Define o cargo que é exibido com o nome do seu avatar quando o grupo está ativo."/> + <check_box label="Receber avisos do grupo" name="receive_notices" tool_tip="Define o seu recebimento de avisos deste grupo. Desmarque esta opção se o grupo envia spam."/> + <check_box label="Mostrar no meu perfil" name="list_groups_in_profile" tool_tip="Define se você deseja incluir este grupo no seu perfil."/> <panel name="preferences_container"> - <check_box label="Mostre na busca" name="show_in_group_list" tool_tip="Deixe as pessoas verem este grupo nos resultados de busca."/> - <check_box label="Adesão aberta" name="open_enrollement" tool_tip="Definir se este grupo permite que novos membros entrem sem serem convidados"/> - <check_box label="Taxa de adesão:" name="check_enrollment_fee" tool_tip="Define se é necessária uma taxa de adesão para se unir ao grupo."/> - <spinner width="60" left_delta="120" name="spin_enrollment_fee" tool_tip="Os novos membros devem pagar esta taxa para se unir ao grupo quando a Taxa de Adesão está marcada."/> - <combo_box width="170" name="group_mature_check" tool_tip="Define se a informação do seu grupo é considerada mature."> - <combo_box.item name="select_mature" label="- Selecionar Maturidade -"/> - <combo_box.item name="mature" label="Conteúdo Mature"/> - <combo_box.item name="pg" label="Conteúdo PG"/> + <check_box label="Adesão aberta" name="open_enrollement" tool_tip="Controla a entrada de novos membros, com ou sem convite."/> + <check_box label="Taxa de associação" name="check_enrollment_fee" tool_tip="Controla a cobrança de uma taxa de associação ao grupo."/> + <spinner label="L$" left_delta="120" name="spin_enrollment_fee" tool_tip="Se a opção 'Taxa de associação' estiver marcada, novos membros precisam pagar o valor definido para entrar no grupo." width="60"/> + <combo_box name="group_mature_check" tool_tip="Define se a informação do seu grupo é considerada mature." width="170"> + <combo_box.item label="Conteúdo PG" name="pg"/> + <combo_box.item label="Conteúdo Mature" name="mature"/> </combo_box> - <panel name="title_container"> - <text name="active_title_label"> - Meu título ativo - </text> - <combo_box name="active_title" tool_tip="Define o título que aparece em seu avatar quando o grupo estiver ativo."/> - </panel> - <check_box label="Receber notícias do grupo" name="receive_notices" tool_tip="Define se Você deseja receber notícias deste grupo. Desmarque esta caixa se o grupo está lhe fazendo spam."/> - <check_box label="Listar grupo no meu perfil" name="list_groups_in_profile" tool_tip="Define se você deseja listar este grupo no seu Perfil"/> + <check_box initial_value="true" label="Mostre na busca" name="show_in_group_list" tool_tip="Incluir o grupo nos resultados de busca"/> </panel> - <string name="incomplete_member_data_str"> - Recuperando dados do membro - </string> - <string name="confirm_group_create_str"> - Criar este grupo irá custar L$100. -Você está realmente, realmente, REALMENTE seguro que deseja gastar L$100 para criar este grupo? -Esteja consciente de que se ninguém mais se juntar a este grupo dentro de 48 horas, este será dissolvido e o nome não estará disponível para uso futuro. - </string> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml new file mode 100644 index 0000000000..c547e4c646 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Sobre o grupo" name="GroupInfo"> + <panel.string name="default_needs_apply_text"> + As mudanças feitas nesta guia ainda não foram salvas + </panel.string> + <panel.string name="want_apply_text"> + Deseja salvar essas mudanças? + </panel.string> + <panel.string name="group_join_btn"> + Entrar (L$[AMOUNT]) + </panel.string> + <panel.string name="group_join_free"> + Grátis + </panel.string> + <text name="group_name" value="Carregando..."/> + <line_editor label="Digite o nome do grupo aqui" name="group_name_editor"/> + <texture_picker label="" name="insignia" tool_tip="Selecionar imagem"/> + <text name="prepend_founded_by"> + Fundador: + </text> + <name_box initial_value="(pesquisando)" name="founder_name"/> + <text name="join_cost_text"> + Grátis + </text> + <button label="ENTRAR AGORA!" name="btn_join"/> + <accordion name="groups_accordion"> + <accordion_tab name="group_general_tab" title="Público geral"/> + <accordion_tab name="group_roles_tab" title="Cargos"/> + <accordion_tab name="group_notices_tab" title="Avisos"/> + <accordion_tab name="group_land_tab" title="Terrenos/Bens"/> + </accordion> + <panel name="button_row"> + <button label="Crie" label_selected="Novo grupo" name="btn_create"/> + <button label="Salvar" label_selected="Salvar" name="btn_apply"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_group_invite.xml b/indra/newview/skins/default/xui/pt/panel_group_invite.xml index a02a17139b..4ed1b950a4 100644 --- a/indra/newview/skins/default/xui/pt/panel_group_invite.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_invite.xml @@ -1,23 +1,29 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Convidar um membro" name="invite_panel" width="224"> + <panel.string name="confirm_invite_owner_str"> + Você tem certeza de que deseja convidar novo(s) proprietário(s)? Esta ação é permanente! + </panel.string> + <panel.string name="loading"> + (carregando...) + </panel.string> + <panel.string name="already_in_group"> + Alguns avatares já estão nesse grupo e portanto não foram convidados. + </panel.string> <text name="help_text" width="214"> Voce pode selecionar vários residentes para convidar ao seu grupo. Clique 'Abrir Seletor de Residente' para iniciar. </text> <button label="Abrir Seletor de Residente" name="add_button" tool_tip=""/> - <name_list name="invitee_list" tool_tip="Mantenha apertada a tecla Control e clique nos nomes dos residentes para uma seleção múltipla."/> - <button left_delta="-7" width="214" label="Remove os selecionados acima da lista" name="remove_button" tool_tip="Remove os residentes selecionados acima da lista de convite."/> + <name_list name="invitee_list" tool_tip="Pressione Ctrl enquanto clica nos nomes dos residentes"/> + <button label="Remove os selecionados acima da lista" left_delta="-7" name="remove_button" tool_tip="Exclui os residentes selecionados acima da lista de convidados" width="214"/> <text name="role_text"> Escolha que Função atribuir a eles: </text> - <combo_box name="role_name" tool_tip="Escolha a partir da lista de Funções autorizadas a você para inclusão de membros."/> + <combo_box name="role_name" tool_tip="Selecione o cargo da lista de cargos que você pode designar a membros"/> <button label="Mandar convites" name="ok_button"/> <button label="Cancelar" name="cancel_button"/> - <string name="confirm_invite_owner_str"> - Você tem certeza de que deseja convidar novo(s) proprietário(s)? Esta ação é permanente! - </string> - <string name="loading"> - (carregando...) + <string name="GroupInvitation"> + Convite </string> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_group_land_money.xml b/indra/newview/skins/default/xui/pt/panel_group_land_money.xml index 5b09363e3c..aa7c7de75f 100644 --- a/indra/newview/skins/default/xui/pt/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/pt/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"> - Lotes pertencentes ao grupo são listados adiante, com os detalhes de contribuição. Um aviso aparece até que o Total de Terra em Uso seja menor ou igual à Contribuição Total. As abas de Planejamento, Detalhes e Vendas fornecem informações sobre as finanças do grupo. + Será exibido um aviso até o Total de terrenos usados for igual ou inferior à contribuição total. </string> <button label="?" name="help_button"/> <string name="cant_view_group_land_text"> - Você não tem permissão para ver as terras pertencentes ao grupo. + Você não está autorizado a acessar terrenos de grupos </string> <string name="cant_view_group_accounting_text"> - Você não tem permissão para ver as informações sobre as contas do grupo. + Você não está autorizado a acessar os dados de contabilidade do grupo. </string> <string name="loading_txt"> Carregando... @@ -17,68 +17,67 @@ Terra percentente ao grupo </text> <scroll_list name="group_parcel_list"> - <column label="Nome do Lote" name="name"/> + <column label="Lote" name="name"/> <column label="Região" name="location"/> <column label="Tipo" name="type"/> <column label="Área" name="area"/> </scroll_list> - <button label="Mostrar no Mapa" label_selected="Mostrar no Mapa" name="map_button" left="282" width="130"/> + <button label="Mapa" label_selected="Mapa" left="282" name="map_button" width="130"/> <text name="total_contributed_land_label"> - Contribuição Total: + Total contribuído: </text> <text name="total_contributed_land_value"> [AREA] m² </text> <text name="total_land_in_use_label"> - Total de Terra em Uso: + Total em uso: </text> <text name="total_land_in_use_value"> [AREA] m² </text> <text name="land_available_label"> - Terra Disponível: + Disponíveis: </text> <text name="land_available_value"> [AREA] m² </text> <text name="your_contribution_label"> - Sua Contribuição: + Sua contribuição: </text> <string name="land_contrib_error"> - Não é possível definir sua contribuição para o terreno. + Não foi possível definir sua contribuição </string> <text name="your_contribution_units"> - ( m² ) + m² </text> <text name="your_contribution_max_value"> - ([AMOUNT] máxima) + ([AMOUNT] max) </text> <text name="group_over_limit_text"> - Membros do grupo precisam contribuir com mais créditos de Terra para -garantir a terra em uso. + O terreno em uso requer mais créditos </text> <text name="group_money_heading"> Grupo L$ </text> <tab_container name="group_money_tab_container"> - <panel label="Planejamento" name="group_money_planning_tab"> + <panel label="PLANEJAMENTO" name="group_money_planning_tab"> <text_editor name="group_money_planning_text"> - Computando.. + Carregando... </text_editor> </panel> - <panel label="Detalhes" name="group_money_details_tab"> + <panel label="DETALHES" name="group_money_details_tab"> <text_editor name="group_money_details_text"> - Computando... + Carregando... </text_editor> - <button label="< Mais Cedo" label_selected="< Cedo" name="earlier_details_button" tool_tip="Voltar no Tempo"/> - <button label="Mais Tarde >" label_selected="Tarde >" name="later_details_button" tool_tip="Adiantar o Tempo"/> + <button label="< Mais Cedo" label_selected="< Cedo" name="earlier_details_button" tool_tip="Atrás"/> + <button label="Mais Tarde >" label_selected="Tarde >" name="later_details_button" tool_tip="Próximo"/> </panel> - <panel label="Vendas" name="group_money_sales_tab"> + <panel label="VENDAS" name="group_money_sales_tab"> <text_editor name="group_money_sales_text"> - Computando... + Carregando... </text_editor> - <button label="< Mais Cedo" label_selected="< Mais Cedo" name="earlier_sales_button" tool_tip="Voltar no Tempo"/> - <button label="Mais Tarde >" label_selected="Mais Tarde >" name="later_sales_button" tool_tip="Adiantar o Tempo"/> + <button label="< Mais Cedo" label_selected="< Mais Cedo" name="earlier_sales_button" tool_tip="Atrás"/> + <button label="Mais Tarde >" label_selected="Mais Tarde >" name="later_sales_button" tool_tip="Próximo"/> </panel> </tab_container> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_group_list_item.xml b/indra/newview/skins/default/xui/pt/panel_group_list_item.xml new file mode 100644 index 0000000000..c9fd7cdfe3 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Desconhecido"/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_group_notices.xml b/indra/newview/skins/default/xui/pt/panel_group_notices.xml index d5c0f01e33..66252a0473 100644 --- a/indra/newview/skins/default/xui/pt/panel_group_notices.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_notices.xml @@ -1,58 +1,54 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Notícias" name="notices_tab"> - <text name="help_text"> + <panel.string name="help_text"> As notícias são uma maneira rápida de comunicar-se através de um grupo transmitindo uma mensagem e entregando um item anexo, opcionalmente. As notícias vão apenas a membros do grupo que têm a função habilitada para receber notícias. Você pode desligar Notícias na aba Geral. - </text> - <text name="no_notices_text"> - Não existem notícias anteriores. - </text> - <button label="?" label_selected="?" name="help_button"/> - <text name="lbl"> - Arquivo de notícias do grupo - </text> + </panel.string> + <panel.string name="no_notices_text"> + Não há nenhum aviso antigo + </panel.string> <text name="lbl2"> - As notícias são mantidas por 14 dias. -Listas de aviso estão limitadas a 200 por grupo, diariamente. + Cada aviso é armazenado por 14 dias. +Cada grupo pode enviar no máximo 200 avisos/dia </text> <scroll_list name="notice_list"> - <column label="Assunto" name="subject"/> - <column label="Para" name="from"/> - <column label="Data" name="date"/> + <scroll_list.columns label="Assunto" name="subject"/> + <scroll_list.columns label="Para" name="from"/> + <scroll_list.columns label="Data" name="date"/> </scroll_list> <text name="notice_list_none_found"> - Nenhum encontrado. + Nenhum resultado foi encontrado. </text> - <button label="Criar nova notícia" label_selected="Criar nova notícia" name="create_new_notice"/> - <button label="Atualizar" label_selected="Atualizar Lista" name="refresh_notices"/> + <button label="Criar um novo aviso" label_selected="Criar nova notícia" name="create_new_notice" tool_tip="Criar um novo aviso"/> + <button label="Atualizar" label_selected="Atualizar Lista" name="refresh_notices" tool_tip="Atualizar lista de avisos"/> <panel label="Criar nova notícia" name="panel_create_new_notice"> <text name="lbl"> Criar uma notícia </text> - <text name="lbl2"> - Você pode adicionar um item simples à notícia, arrastando-o do seu Inventário para o painel. Itens anexados devem ser copiáveis e transferíveis e você não pode mandar uma pasta. - </text> - <text name="lbl3" left="20"> + <text left="20" name="lbl3"> Assunto: </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"> Mensagem: </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"> Anexo: </text> - <line_editor name="create_inventory_name" width="190" left_delta="74"/> - <button label="Remover o anexo" label_selected="Remover o anexo" name="remove_attachment"/> + <line_editor left_delta="74" name="create_inventory_name" width="190"/> + <text name="string"> + Arrastar e soltar o item aqui para anexá-lo: + </text> + <button label="Tirar" label_selected="Remover o anexo" name="remove_attachment"/> <button label="Enviar" label_selected="Enviar" name="send_notice"/> - <panel name="drop_target" tool_tip="Arraste um item do inventário para dentro da caixa de mensagem para enviá-lo com a notícia. Você deve ter permissão para copiar e transferir o objeto, para enviá-lo com a notícia."/> + <group_drop_target name="drop_target" tool_tip="Arrastar um item do inventário para a caixa para enviá-lo com o aviso. É preciso ter autorização de cópia e transferência do item para anexá-lo ao aviso."/> </panel> <panel label="Visualizar Notícia Anterior" name="panel_view_past_notice"> <text name="lbl"> Notícia arquivada </text> <text name="lbl2"> - Para enviar uma notícia nova, clique no botão 'Criar Nova Notícia' acima. + Para enviar um novo aviso, clique no botão + </text> <text name="lbl3"> Asunto: @@ -60,6 +56,6 @@ Listas de aviso estão limitadas a 200 por grupo, diariamente. <text name="lbl4"> Mensagem: </text> - <button label="Abrir o anexo" label_selected="Abrir o anexo" name="open_attachment"/> + <button label="Abrir anexo" label_selected="Abrir o anexo" name="open_attachment"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_group_notify.xml b/indra/newview/skins/default/xui/pt/panel_group_notify.xml new file mode 100644 index 0000000000..5a8ea81074 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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 do remetente / grupo"/> + </panel> + <text name="attachment" value="Anexo"/> + <button label="OK" name="btn_ok"/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_group_roles.xml b/indra/newview/skins/default/xui/pt/panel_group_roles.xml index 087cf0c107..cf9e9f2b8d 100644 --- a/indra/newview/skins/default/xui/pt/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_roles.xml @@ -1,146 +1,104 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Membros e Funções" name="roles_tab"> - <string name="default_needs_apply_text"> - Existem alterações não aplicadas na sub-aba atual. - </string> - <string name="want_apply_text"> - Você quer submeter essas alterações? - </string> - <button label="?" name="help_button"/> - <panel name="members_header"> - <text name="static"> - Membros e Funções - </text> - <text name="static2"> - São atribuídas funções com habilidades aos membros do grupo. -Estes ajustes podem ser facilmente customizados para uma flexibilidade -e organização maiores. - </text> - </panel> - <panel name="roles_header"> - <text name="static"> - Funções - </text> - <text name="role_properties_modifiable"> - Selecionar uma função abaixo. Você pode modificar o nome, a descrição -e o título do membro. - </text> - <text name="role_properties_not_modifiable"> - Selecione uma função abaixo para ver suas propriedades, membros e -habilidades permitidas. - </text> - <text bottom_delta="-28" name="role_actions_modifiable"> - Você também pode atribuir habilidades à função. - </text> - <text name="role_actions_not_modifiable"> - Você pode ver, mas não pode alterar habilidades atribuídas. - </text> - </panel> - <panel name="actions_header"> - <text name="static"> - Habilidades - </text> - <text name="static2"> - Você pode ver a descrição de uma habilidade e quais funções e membros -podem executar essa habilidade. - </text> - </panel> + <panel.string name="default_needs_apply_text"> + As mudanças feitas nesta guia ainda não foram salvas + </panel.string> + <panel.string name="want_apply_text"> + Deseja salvar essas mudanças? + </panel.string> <tab_container height="164" name="roles_tab_container"> - <panel height="148" label="Membros" name="members_sub_tab" tool_tip="Membros"> - <line_editor bottom="127" name="search_text"/> - <button label="Pesquisar" name="search_button" width="75"/> - <button label="Mostrar todos" name="show_all_button" left_delta="80"/> - <name_list name="member_list" bottom_delta="-105" height="104" > - <column label="Nome do membro" name="name"/> - <column label="Tarifa doada" name="donated"/> - <column label="Último login" name="online"/> - </name_list> - <button label="Convidar Novo Membro..." name="member_invite" width="165"/> - <button label="Ejetar do Grupo" name="member_eject"/> - <string name="help_text"> + <panel height="148" label="MEMBROS" name="members_sub_tab" tool_tip="Membros"> + <panel.string name="help_text"> Você pode adicionar ou remover as funções designadas aos membros. Selecione vários membros, segurando a tecla Ctrl e clicando em seus nomes. - </string> + </panel.string> + <filter_editor label="Filtrar por membro" name="filter_input"/> + <name_list bottom_delta="-105" height="104" name="member_list"> + <name_list.columns label="Membro" name="name"/> + <name_list.columns label="Doações" name="donated"/> + <name_list.columns label="Status" name="online"/> + </name_list> + <button label="Convidar" name="member_invite" width="165"/> + <button label="Ejetar" name="member_eject"/> </panel> - <panel height="148" label="Funções" name="roles_sub_tab"> - <line_editor bottom="127" name="search_text"/> - <button label="Busca" name="search_button" width="75"/> - <button label="Mostrar todos" name="show_all_button" left_delta="80"/> - <scroll_list name="role_list" bottom_delta="-104" height="104"> - <column label="Nome da função" name="name"/> - <column label="Título" name="title"/> - <column label="Membro" name="members"/> + <panel height="148" label="CARGOS" name="roles_sub_tab"> + <panel.string name="help_text"> + Cada cargo tem um nome e uma lista das funções que membros designados podem desempenhar. + Os membros podem ter um ou mais cargos. + Cada grupo pode ter 10 cargos, incluindo Membro e Dono do Grupo. + </panel.string> + <panel.string name="cant_delete_role"> + As funções 'Todos' e 'Owners' são especiais e não podem ser apagadas. + </panel.string> + <panel.string name="power_folder_icon"> + Inv_FolderClosed + </panel.string> + <filter_editor label="Filtrar por cargo" name="filter_input"/> + <scroll_list bottom_delta="-104" height="104" name="role_list"> + <scroll_list.columns label="Cargo" name="name"/> + <scroll_list.columns label="Título" name="title"/> + <scroll_list.columns label="#" name="members"/> </scroll_list> - <button label="Criar nova função..." name="role_create"/> + <button label="Adicionar cargo" name="role_create"/> <button label="Apagar função" name="role_delete"/> - <string name="help_text"> - As funções têm um título e uma lista de habilidades -permitidas que os membros podem executar. Os membros poderão ter um ou mais funções. - Um grupo poderá ter até 10 funções, incluíndo as funções dos membros e do dono do grupo. - </string> - <string name="cant_delete_role"> - As funções 'todos' e 'donos' são especiais e não podem ser deletadas. - </string> </panel> - <panel height="148" label="Habilidades" name="actions_sub_tab"> - <line_editor bottom="127" name="search_text"/> - <button label="Busca" name="search_button" width="75"/> - <button label="Mostrar todos" name="show_all_button" left_delta="80"/> - <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Selecione uma habilidade para ver mais detalhes."/> - <string name="help_text"> + <panel height="148" label="FUNÇÕES" name="actions_sub_tab" tool_tip="Você pode ver a descrição de uma função e quais cargos e membros podem desempenhá-la."> + <panel.string name="help_text"> As habilidades permitem que os membros nas funções façam coisas específicas dentro do grupo. Há uma grande variedade de habilidades. - </string> + </panel.string> + <filter_editor label="Filtrar por função" name="filter_input"/> + <scroll_list bottom_delta="-120" height="118" name="action_list" tool_tip="Selecione uma função para ver mais detalhes"/> </panel> </tab_container> <panel name="members_footer"> <text name="static"> - Funções atribuídas + Membros atribuídos </text> <text name="static2"> Habilidades permitidas </text> - <scroll_list name="member_allowed_actions" tool_tip="Para detalhes de cada habilidade permitida, veja a aba Habilidades."/> + <scroll_list name="member_allowed_actions" tool_tip="Clique na guia Funções para ver mais detalhes"/> </panel> <panel name="roles_footer"> <text name="static"> - Nome - </text> - <text name="static2"> - Descrição + Nome da função </text> <line_editor name="role_name"> Empregados </line_editor> <text name="static3"> - Título + Título da função </text> <line_editor name="role_title"> (esperando) </line_editor> + <text name="static2"> + Descrição + </text> <text_editor name="role_description"> (esperando) </text_editor> <text name="static4"> - Membros atribuídos + Cargos desempenhados </text> + <check_box label="Revelar membros" name="role_visible_in_list" tool_tip="Define se os membros dessa função são visíveis na guia geral para pessoas de fora do grupo."/> <text name="static5" tool_tip="Uma lista de habilidades que a função selecionada atualmente pode executar."> Habilidades permitidas </text> - <check_box label="Membros estão visíveis" name="role_visible_in_list" tool_tip="Selecione se os membros desta função estarão visíveis na aba Diversos, para as pessoas de fora do grupo."/> - <scroll_list name="role_allowed_actions" tool_tip="Para ver detalhes de cada habilidade permitida, veja a aba correspondente."/> + <scroll_list name="role_allowed_actions" tool_tip="Clique na guia Funções para ver mais detalhes"/> </panel> <panel name="actions_footer"> <text name="static"> - Descrição + Descrição da função </text> <text_editor name="action_description"> Essa habilidade permite tirar alguem do grupo. Somente o dono do grupo poderá retirar outro dono do grupo. </text_editor> <text name="static2"> - Funções com habilidades + Cargos com esta função </text> <text name="static3"> - Membros com habilidades + Membros com esta função </text> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_im_control_panel.xml b/indra/newview/skins/default/xui/pt/panel_im_control_panel.xml new file mode 100644 index 0000000000..f7102f2fb2 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Desconhecido"/> + <button label="Perfil" name="view_profile_btn"/> + <button label="Adicionar amigo" name="add_friend_btn"/> + <button label="Teletransportar" name="teleport_btn"/> + <button label="Compartilhar" name="share_btn"/> + <panel name="panel_call_buttons"> + <button label="Ligar" name="call_btn"/> + <button label="Desligar" name="end_call_btn"/> + <button label="Controles de voz" name="voice_ctrls_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_landmark_info.xml b/indra/newview/skins/default/xui/pt/panel_landmark_info.xml new file mode 100644 index 0000000000..97e7f51beb --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Criar Landmark"/> + <string name="title_edit_landmark" value="Editar Landmark"/> + <string name="title_landmark" value="Landmark"/> + <string name="not_available" value="(N\A)"/> + <string name="unknown" value="(desconhecido)"/> + <string name="public" value="(público)"/> + <string name="server_update_text"> + Informação do lugar não disponível sem atualização do servidor. + </string> + <string name="server_error_text"> + Informações sobre esta localização não está disponível neste momento, por favor, tente novamente mais tarde. + </string> + <string name="server_forbidden_text"> + Informações sobre esta localização está indisponível devido a restrições de acesso. Por favor, verifique as permissões com o proprietário da parcela. + </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="Perfil do Lugar"/> + <scroll_container name="place_scroll"> + <panel name="scrolling_panel"> + <text name="maturity_value" value="desconhecido"/> + <panel name="landmark_info_panel"> + <text name="owner_label" value="Proprietário:"/> + <text name="creator_label" value="Criador:"/> + <text name="created_label" value="Criado:"/> + </panel> + <panel name="landmark_edit_panel"> + <text name="title_label" value="Título:"/> + <text name="notes_label" value="Minhas notas:"/> + <text name="folder_label" value="Localização da Landmark:"/> + </panel> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_landmarks.xml b/indra/newview/skins/default/xui/pt/panel_landmarks.xml new file mode 100644 index 0000000000..693905e04c --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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 'Destaques'"/> + <accordion_tab name="tab_landmarks" title="Marcos"/> + <accordion_tab name="tab_inventory" title="Meu inventário"/> + <accordion_tab name="tab_library" title="Biblioteca"/> + </accordion> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/> + <button name="add_btn" tool_tip="Adicionar marco"/> + <dnd_button name="trash_btn" tool_tip="Excluir marco selecionado"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_login.xml b/indra/newview/skins/default/xui/pt/panel_login.xml index d7ff3f29df..3540a338ea 100644 --- a/indra/newview/skins/default/xui/pt/panel_login.xml +++ b/indra/newview/skins/default/xui/pt/panel_login.xml @@ -1,39 +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=pt-BR + http://join.secondlife.com/ </panel.string> <panel.string name="forgot_password_url"> http://secondlife.com/account/request.php?lang=pt </panel.string> -<panel name="login_widgets"> - <text name="first_name_text"> - Primeiro nome: - </text> - <text name="last_name_text"> - Sobrenome: - </text> - <text name="password_text"> - Senha: - </text> - <text name="start_location_text"> - Posição inicial: - </text> - <combo_box name="start_location_combo"> - <combo_box.item name="MyHome" label="Minha casa" /> - <combo_box.item name="MyLastLocation" label="Minha última localização" /> - <combo_box.item name="Typeregionname" label="< Digite o nome da região >" /> - </combo_box> - <check_box label="Lembrar senha" name="remember_check"/> - <button label="Entrar" label_selected="Entrar" name="connect_btn"/> - <text name="create_new_account_text"> - Registrar-se para uma conta - </text> - <text name="forgot_password_text" left="-240" width="230"> - Esqueceu seu nome de usuário ou senha? - </text> - <text name="channel_text"> - [VERSION] - </text> -</panel> + <layout_stack name="login_widgets"> + <layout_panel name="login"> + <text name="first_name_text"> + Primeiro nome: + </text> + <line_editor label="Nome" name="first_name_edit" tool_tip="[SECOND_LIFE] First Name"/> + <line_editor label="Sobrenome" name="last_name_edit" tool_tip="[SECOND_LIFE] Last Name"/> + <check_box label="Lembrar" name="remember_check"/> + <text name="start_location_text"> + Começar em: + </text> + <combo_box name="start_location_combo"> + <combo_box.item label="Minha casa" name="MyHome"/> + </combo_box> + <button label="conectar" name="connect_btn"/> + </layout_panel> + <layout_panel name="links"> + <text name="create_new_account_text"> + Cadastre-se + </text> + <text name="login_help"> + Precisa de ajuda ao conectar? + </text> + </layout_panel> + </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_main_inventory.xml b/indra/newview/skins/default/xui/pt/panel_main_inventory.xml new file mode 100644 index 0000000000..1bc080886d --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_main_inventory.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Coisas" name="main inventory panel"> + <panel.string name="Title"> + Coisas + </panel.string> + <filter_editor label="Filtro" name="inventory search editor"/> + <tab_container name="inventory filter tabs"> + <inventory_panel label="Todos os itens" name="All Items"/> + <inventory_panel label="Itens recentes" name="Recent Items"/> + </tab_container> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/> + <button name="add_btn" tool_tip="Adicionar novo item"/> + <dnd_button name="trash_btn" tool_tip="Remover item selecionado"/> + </panel> + <menu_bar name="Inventory Menu"> + <menu label="Arquivo" name="File"> + <menu_item_call label="Abrir" name="Open"/> + <menu label="Upload" name="upload"> + <menu_item_call label="Imagem (L$[COST])..." name="Upload Image"/> + <menu_item_call label="Som (L$[COST])..." name="Upload Sound"/> + <menu_item_call label="Animação (L$[COST])..." name="Upload Animation"/> + <menu_item_call label="Volume (L$[COST] per file)..." name="Bulk Upload"/> + </menu> + <menu_item_call label="Nova janela" name="New Window"/> + <menu_item_call label="Mostrar filtros" name="Show Filters"/> + <menu_item_call label="Restabelecer filtros" name="Reset Current"/> + <menu_item_call label="Fechar todas as pastas" name="Close All Folders"/> + <menu_item_call label="Esvaziar lixeira" name="Empty Trash"/> + <menu_item_call label="Esvaziar achados e perdidos" name="Empty Lost And Found"/> + </menu> + <menu label="Crie" name="Create"> + <menu_item_call label="Nova pasta" name="New Folder"/> + <menu_item_call label="Novo script" name="New Script"/> + <menu_item_call label="Nova nota" name="New Note"/> + <menu_item_call label="Novo gesto" name="New Gesture"/> + <menu label="Novas roupas" name="New Clothes"> + <menu_item_call label="Nova camisa" name="New Shirt"/> + <menu_item_call label="Novas calças" name="New Pants"/> + <menu_item_call label="Novos sapatos" name="New Shoes"/> + <menu_item_call label="Novas meias" name="New Socks"/> + <menu_item_call label="Nova blusa" name="New Jacket"/> + <menu_item_call label="Nova saia" name="New Skirt"/> + <menu_item_call label="Novas luvas" name="New Gloves"/> + <menu_item_call label="Nova camiseta" name="New Undershirt"/> + <menu_item_call label="Novas roupa de baixo" name="New Underpants"/> + <menu_item_call label="Novo alpha" name="New Alpha"/> + <menu_item_call label="Nova tatuagem" name="New Tattoo"/> + </menu> + <menu label="Nova parte do corpo" name="New Body Parts"> + <menu_item_call label="Nova silhueta" name="New Shape"/> + <menu_item_call label="Nova pele" name="New Skin"/> + <menu_item_call label="Novo cabelo" name="New Hair"/> + <menu_item_call label="Novos olhos" name="New Eyes"/> + </menu> + </menu> + <menu label="Classificar" name="Sort"> + <menu_item_check label="Por nome" name="By Name"/> + <menu_item_check label="Por data" name="By Date"/> + <menu_item_check label="Pastas sempre por nome" name="Folders Always By Name"/> + <menu_item_check label="Pastas do sistema no topo" name="System Folders To Top"/> + </menu> + </menu_bar> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_me.xml b/indra/newview/skins/default/xui/pt/panel_me.xml new file mode 100644 index 0000000000..c3fda2e886 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_me.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Meu perfil" name="panel_me"> + <tab_container name="tabs"> + <panel label="PERFIL" name="panel_profile"/> + <panel label="DESTAQUES" name="panel_picks"/> + </tab_container> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml b/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml new file mode 100644 index 0000000000..9815b8d0b4 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_media_settings_general.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Público geral" name="Media Settings General"> + <text name="home_label"> + Página web: + </text> + <text name="home_fails_whitelist_label"> + (Esta página não atende à lista de páginas aprovadas) + </text> + <line_editor name="home_url" tool_tip="Website desta mídia"/> + <text name="preview_label"> + Visualizar + </text> + <text name="current_url_label"> + Página atual: + </text> + <text name="current_url" tool_tip="Website desta mídia" value=""/> + <button label="Redefinir" name="current_url_reset_btn"/> + <check_box initial_value="false" label="Loop contínuo" name="auto_loop"/> + <check_box initial_value="false" label="Interagir no primeiro clique" name="first_click_interact"/> + <check_box initial_value="false" label="Zoom automático" name="auto_zoom"/> + <check_box initial_value="false" label="Mídia auto-executável" name="auto_play"/> + <text name="media_setting_note"> + Nota: Residentes podem redefinir a configuração. + </text> + <check_box initial_value="false" label="Dimensionamento automático na frente do objeto" name="auto_scale"/> + <text name="size_label"> + Tamanho: + </text> + <text name="X_label"> + X + </text> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml b/indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml new file mode 100644 index 0000000000..009dd0d752 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_media_settings_permissions.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Customizar" name="Media settings for controls"> + <text name="controls_label"> + Controles: + </text> + <combo_box name="controls"> + <combo_item name="Standard"> + Padrão + </combo_item> + <combo_item name="Mini"> + Mini + </combo_item> + </combo_box> + <check_box initial_value="false" label="Permitir navegação & interatividade" name="perms_owner_interact"/> + <check_box initial_value="false" label="Exibir barra de controle" name="perms_owner_control"/> + <check_box initial_value="false" label="Permitir navegação & interatividade" name="perms_group_interact"/> + <check_box initial_value="false" label="Exibir barra de controle" name="perms_group_control"/> + <check_box initial_value="false" label="Permitir navegação & interatividade" name="perms_anyone_interact"/> + <check_box initial_value="false" label="Exibir barra de controle" name="perms_anyone_control"/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_media_settings_security.xml b/indra/newview/skins/default/xui/pt/panel_media_settings_security.xml new file mode 100644 index 0000000000..adc93cc2f0 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_media_settings_security.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Segurança" name="Media Settings Security"> + <check_box initial_value="false" label="Acesso restrito a URLs especificados (pelo prefixo)" name="whitelist_enable"/> + <text name="home_url_fails_some_items_in_whitelist"> + URLs com falha de acesso na página inicial são indicados com um: + </text> + <button label="Adicionar" name="whitelist_add"/> + <button label="Excluir" name="whitelist_del"/> + <text name="home_url_fails_whitelist"> + Aviso: A página inicial especificada na aba Geral não consta na lista de acesso. Seu acesso será autorizado quando a lista for retificada. + </text> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_my_profile.xml b/indra/newview/skins/default/xui/pt/panel_my_profile.xml new file mode 100644 index 0000000000..8fd30873a7 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_my_profile.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Perfil" name="panel_profile"> + <string name="no_partner_text" value="Nenhum"/> + <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="Clique no botão Editar para trocar a imagem"/> + </panel> + <panel name="first_life_image_panel"> + <icon label="" name="real_world_edit_icon" tool_tip="Clique no botão Editar para trocar a imagem"/> + <text name="title_rw_descr_text" value="Mundo real:"/> + </panel> + <text name="me_homepage_text"> + Página web: + </text> + <text name="title_member_text" value="Membro desde:"/> + <text name="title_acc_status_text" value="Conta:"/> + <text name="acc_status_text" value="Residente. Dados de pagamento: não constam"/> + <text name="title_partner_text" value="Parceiro(a):"/> + <text name="title_groups_text" value="Grupos:"/> + </panel> + </scroll_container> + <panel name="profile_buttons_panel"> + <button label="Adicionar amigo" name="add_friend"/> + <button label="MI" name="im"/> + <button label="Ligar" name="call"/> + <button label="Mapa" name="show_on_map_btn"/> + <button label="Teletransportar" name="teleport"/> + </panel> + <panel name="profile_me_buttons_panel"> + <button label="Editar perfil" name="edit_profile_btn" tool_tip="Editar dados pessoais"/> + <button label="Editar aparência" name="edit_appearance_btn" tool_tip="Criar/editar aparência: corpo, roupa, etc."/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml b/indra/newview/skins/default/xui/pt/panel_navigation_bar.xml new file mode 100644 index 0000000000..49e1d916c7 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Voltar para região anterior"/> + <button name="forward_btn" tool_tip="Avançar uma região"/> + <button name="home_btn" tool_tip="Teletransportar para minha casa"/> + <location_input label="Onde" name="location_combo"/> + <search_combo_box label="Busca" name="search_combo_box" tool_tip="Busca"> + <combo_editor label="Buscar no [SECOND_LIFE]" name="search_combo_editor"/> + </search_combo_box> + </panel> + <favorites_bar name="favorite"> + <chevron_button name=">>" tool_tip="Mostrar mais favoritos"/> + </favorites_bar> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml b/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml new file mode 100644 index 0000000000..bdbf29e70b --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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"> + Bate-papo local + </text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml new file mode 100644 index 0000000000..9b993488be --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_nearby_chat_bar.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="chat_bar"> + <line_editor label="Clique aqui para bater papo." name="chat_box" tool_tip="Tecle Enter para falar, Ctrl+Enter para gritar"/> + <button name="show_nearby_chat" tool_tip="Mostra/oculta o histórico do bate-papo local"/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_notes.xml b/indra/newview/skins/default/xui/pt/panel_notes.xml new file mode 100644 index 0000000000..a5b2542e77 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_notes.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Anotações e Privacidade" 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="Minhas anotações privadas:"/> + <text name="status_message2" value="Deixar esta pessoa:"/> + <check_box label="Ver meu status" name="status_check"/> + <check_box label="Ver minha localização no mapa" name="map_check"/> + <check_box label="Pegar, editar ou excluir objetos meus" name="objects_check"/> + </panel> + </scroll_container> + </panel> + <panel name="notes_buttons_panel"> + <button label="Adicionar" name="add_friend" tool_tip="Oferecer amizade ao residente"/> + <button label="MI" name="im" tool_tip="Abrir sessão de mensagem instantânea"/> + <button label="Ligar" name="call" tool_tip="Ligar para este residente"/> + <button label="Mapa" name="show_on_map_btn" tool_tip="Exibir o residente no mapa"/> + <button label="Teletransportar" name="teleport" tool_tip="Oferecer teletransporte"/> + </panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml new file mode 100644 index 0000000000..98a9be29c8 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Vestimenta atual"/> + <accordion_tab name="tab_outfits" title="Minhas vestimentas"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_inventory_gear_default.xml b/indra/newview/skins/default/xui/pt/panel_outfits_inventory_gear_default.xml new file mode 100644 index 0000000000..5ef6edf9ec --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Substituir look atual" name="wear"/> + <menu_item_call label="Adicionar ao look atual" name="add"/> + <menu_item_call label="Tirar do look atual" name="remove"/> + <menu_item_call label="Renomear" name="rename"/> + <menu_item_call label="Tirar" name="remove_link"/> + <menu_item_call label="Excluir" name="delete"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/panel_people.xml b/indra/newview/skins/default/xui/pt/panel_people.xml new file mode 100644 index 0000000000..9d71c37c55 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_people.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<!-- Side tray panel --> +<panel label="Pessoas" name="people_panel"> + <string name="no_people" value="Nenhuma pessoa"/> + <string name="no_one_near" value="Ninguém por perto"/> + <string name="no_friends_online" value="Nenhum amigo online"/> + <string name="no_friends" value="Nenhum amigo"/> + <string name="no_groups" value="Nenhum grupo"/> + <string name="people_filter_label" value="Filtro de pessoas"/> + <string name="groups_filter_label" value="Filtro de grupos"/> + <filter_editor label="Filtro" name="filter_input"/> + <tab_container name="tabs"> + <panel label="PROXIMIDADE" name="nearby_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="nearby_view_sort_btn" tool_tip="Opções"/> + <button name="add_friend_btn" tool_tip="Adicionar o residente selecionado para sua lista de amigos"/> + </panel> + </panel> + <panel label="AMIGOS" name="friends_panel"> + <accordion name="friends_accordion"> + <accordion_tab name="tab_online" title="Online"/> + <accordion_tab name="tab_all" title="Todos"/> + </accordion> + <panel label="bottom_panel" name="bottom_panel"> + <button name="friends_viewsort_btn" tool_tip="Opções"/> + <button name="add_btn" tool_tip="Oferecer amizade para o residente"/> + <button name="del_btn" tool_tip="Remover a pessoa selecionada da sua lista de amigos"/> + </panel> + </panel> + <panel label="GRUPOS" name="groups_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="groups_viewsort_btn" tool_tip="Opções"/> + <button name="plus_btn" tool_tip="Ingressar em um grupo/Criar novo grupo"/> + <button name="activate_btn" tool_tip="Ativar o grupo selecionado"/> + </panel> + </panel> + <panel label="RECENTE" name="recent_panel"> + <panel label="bottom_panel" name="bottom_panel"> + <button name="recent_viewsort_btn" tool_tip="Opções"/> + <button name="add_friend_btn" tool_tip="Adicionar o residente selecionado para sua lista de amigos"/> + </panel> + </panel> + </tab_container> + <panel name="button_bar"> + <button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes"/> + <button label="MI" name="im_btn" tool_tip="Abrir sessão de mensagem instantânea"/> + <button label="Chamada" name="call_btn" tool_tip="Chamar este residente"/> + <button label="Compartilhar" name="share_btn"/> + <button label="Teletransporte" name="teleport_btn" tool_tip="Oferecer teletransporte"/> + <button label="Perfil do grupo" name="group_info_btn" tool_tip="Exibir informação de grupo"/> + <button label="Bate- papo de grupo" name="chat_btn" tool_tip="abrir sessão de bate- papo"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_pick_info.xml b/indra/newview/skins/default/xui/pt/panel_pick_info.xml new file mode 100644 index 0000000000..007965a8c9 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Detalhes do destaque"/> + <scroll_container name="profile_scroll"> + <panel name="scroll_content_panel"> + <text name="pick_name" value="[NAME]"/> + <text name="pick_location" value="[carregando...]"/> + <text name="pick_desc" value="[descrição]"/> + </panel> + </scroll_container> + <panel name="buttons"> + <button label="Teletransportar" name="teleport_btn"/> + <button label="Mapa" name="show_on_map_btn"/> + <button label="Editar" name="edit_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_picks.xml b/indra/newview/skins/default/xui/pt/panel_picks.xml new file mode 100644 index 0000000000..453954bc3e --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_picks.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Destaques" name="panel_picks"> + <string name="no_picks" value="Sem destaques"/> + <string name="no_classifieds" value="Sem classificados"/> + <text name="empty_picks_panel_text"> + Não ha nenhum destaque/ classificado aqui + </text> + <accordion name="accordion"> + <accordion_tab name="tab_picks" title="Destaques"/> + <accordion_tab name="tab_classifieds" title="Classificados"/> + </accordion> + <panel label="bottom_panel" name="edit_panel"> + <button name="new_btn" tool_tip="Criar um novo destaque ou classificado na localização atual"/> + </panel> + <panel name="buttons_cucks"> + <button label="Info" name="info_btn" tool_tip="Exibir informação de destaque"/> + <button label="Teletransportar" name="teleport_btn" tool_tip="Teletransportar para a área correspondente"/> + <button label="Mapa" name="show_on_map_btn" tool_tip="Exibir a área correspondente no Mapa Mundi"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_place_profile.xml b/indra/newview/skins/default/xui/pt/panel_place_profile.xml new file mode 100644 index 0000000000..371f7bdb1f --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Ligar"/> + <string name="off" value="Desligar"/> + <string name="anyone" value="Todos"/> + <string name="available" value="disponível"/> + <string name="allocated" value="alocados"/> + <string name="title_place" value="Perfil da região"/> + <string name="title_teleport_history" value="Localização do histórico de teletransportes"/> + <string name="not_available" value="(N\A)"/> + <string name="unknown" value="(Desconhecido)"/> + <string name="public" value="(público)"/> + <string name="none_text" value="(nenhum)"/> + <string name="sale_pending_text" value="(Venda em andamento)"/> + <string name="group_owned_text" value="(Propriedade do grupo)"/> + <string name="price_text" value="L$"/> + <string name="area_text" value="m²"/> + <string name="all_residents_text" value="Todos os residentes"/> + <string name="group_text" value="Grupo"/> + <string name="can_resell"> + Esta região permite a compra e venda de lotes. + </string> + <string name="can_not_resell"> + Esta região não permite a compra e venda de lotes. + </string> + <string name="can_change"> + Esta região permite a junção ou subdivisão de lotes. + </string> + <string name="can_not_change"> + Esta região não permite a junção ou subdivisão de lotes. + </string> + <string name="server_update_text"> + Dados sobre o local requerem atualização do servidor. + </string> + <string name="server_error_text"> + Dados sobre o local não disponíveis no momento. Favor tentar mais tarde. + </string> + <string name="server_forbidden_text"> + Dados sobre o local controlados por lista de acesso. Verifique se você está autorizado a acessá-los com o dono do lote. + </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="Perfil da região"/> + <scroll_container name="place_scroll"> + <panel name="scrolling_panel"> + <text name="owner_label" value="Proprietário:"/> + <text name="maturity_value" value="(Desconhecido)"/> + <accordion name="advanced_info_accordion"> + <accordion_tab name="parcel_characteristics_tab" title="Lote"> + <panel> + <text name="rating_label" value="Classificação:"/> + <text name="rating_value" value="(Desconhecido)"/> + <text name="voice_label" value="Voz:"/> + <text name="voice_value" value="Ligar"/> + <text name="fly_label" value="Voar:"/> + <text name="fly_value" value="Ligar"/> + <text name="push_label" value="Push:"/> + <text name="push_value" value="Desligar"/> + <text name="build_label" value="Construir:"/> + <text name="build_value" value="Ligar"/> + <text name="scripts_label" value="Scripts:"/> + <text name="scripts_value" value="Ligar"/> + <text name="damage_label" value="Dano:"/> + <text name="damage_value" value="Desligar"/> + <button label="Sobre terrenos" name="about_land_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="region_information_tab" title="Região"> + <panel> + <text name="region_name_label" value="Região:"/> + <text name="region_type_label" value="Tipo:"/> + <text name="region_rating_label" value="Classificação:"/> + <text name="region_owner_label" value="Proprietário:"/> + <text name="region_group_label" value="Grupo:"/> + <button label="Região/Propriedade" name="region_info_btn"/> + </panel> + </accordion_tab> + <accordion_tab name="estate_information_tab" title="Propriedade"> + <panel> + <text name="estate_name_label" value="Propriedade:"/> + <text name="estate_rating_label" value="Classificação:"/> + <text name="estate_owner_label" value="Proprietário:"/> + <text name="covenant_label" value="Contrato:"/> + </panel> + </accordion_tab> + <accordion_tab name="sales_tab" title="À venda"> + <panel> + <text name="sales_price_label" value="Preço:"/> + <text name="area_label" value="Área:"/> + <text name="traffic_label" value="Trânsito:"/> + <text name="primitives_label" value="Prims:"/> + <text name="parcel_scripts_label" value="Scripts:"/> + <text name="terraform_limits_label" value="Limite de terraplenagem:"/> + <text name="subdivide_label" value="Juntar/subdividir:"/> + <text name="resale_label" value="Revenda:"/> + <text name="sale_to_label" value="À venda para:"/> + </panel> + </accordion_tab> + </accordion> + </panel> + </scroll_container> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_places.xml b/indra/newview/skins/default/xui/pt/panel_places.xml new file mode 100644 index 0000000000..5c0f3cd11d --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_places.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Lugares" name="places panel"> + <string name="landmarks_tab_title" value="MEUS MARCOS"/> + <string name="teleport_history_tab_title" value="HISTÓRICO DE TELETRANSPORTES"/> + <filter_editor label="Filtrar lugares" name="Filter"/> + <panel name="button_panel"> + <button label="Teletransportar" name="teleport_btn"/> + <button label="Mapa" name="map_btn"/> + <button label="Editar" name="edit_btn"/> + <button label="Fechar" name="close_btn"/> + <button label="Cancelar" name="cancel_btn"/> + <button label="Salvar" name="save_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml index 5ca80bd74d..431f3ca8e1 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/pt/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="Balão de bate-papo" name="bubble_text_chat"/> + <color_swatch name="background" tool_tip="Escolha a cor do balão de bate-papo"/> + <slider label="Opacidade" name="bubble_chat_opacity"/> <text name="AspectRatioLabel1" tool_tip="largura / altura"> - Relação de Aspecto: + Relação de aspecto </text> <combo_box name="aspect_ratio" tool_tip="largura / altura"> <combo_box.item label="4:3 (CRT Padrão)" name="item1"/> @@ -9,4 +18,31 @@ <combo_box.item label="8:5 (tela ampla)" name="item3"/> <combo_box.item label="16:9 (tela ampla)" name="item4"/> </combo_box> + <check_box label="Auto-detectar" name="aspect_auto_detect"/> + <text name="heading1"> + Câmera: + </text> + <slider label="Ângulo de visão" name="camera_fov"/> + <slider label="Distância" name="camera_offset_scale"/> + <text name="heading2"> + Posicionamento automático da: + </text> + <check_box label="Construir/Editar" name="edit_camera_movement" tool_tip="Use o posicionamento automático da câmera quando entrar e sair do modo de edição"/> + <check_box label="Aparência" name="appearance_camera_movement" tool_tip="Use o posicionamento automático da câmera quando em modo de edição"/> + <text name="heading3"> + Avatares: + </text> + <check_box label="Mostre-me em visão de mouse" name="first_person_avatar_visible"/> + <check_box label="Teclas de seta sempre me movem" name="arrow_keys_move_avatar_check"/> + <check_box label="Dê dois toques e pressione para correr" name="tap_tap_hold_to_run"/> + <check_box label="Mover os lábios do avatar quando estiver falando" name="enable_lip_sync"/> + <check_box label="Mostrar erros de script" name="show_script_errors"/> + <radio_group name="show_location"> + <radio_item label="No bate papo" name="0"/> + <radio_item label="Em uma janela" name="1"/> + </radio_group> + <check_box label="Alternar para o modo microfone quando eu pressionar a tecla de falar:" name="push_to_talk_toggle_check" tool_tip="Quando em modo de alternância, pressione e solte o botão UMA vez para ligar e desligar o microfone. Quando em modo de alternância, o microfone só transmite sua enquanto o botão estiver pressionado."/> + <line_editor label="Botao apertar e falar" name="modifier_combo"/> + <button label="Definir chave" name="set_voice_hotkey_button"/> + <button label="Botão do meio do mouse" name="set_voice_middlemouse_button"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml index e060d784da..4cb823d432 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_alerts.xml @@ -1,18 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Popups" name="popups" title="Popups"> - <text name="dont_show_label"> - Não mostrar estas popups: + <text name="tell_me_label"> + Avisar: </text> - <button label="Habilitar esta popup" label_selected="Habilitar este popup" name="enable_popup"/> - <button label="Habilitar todas as popups..." label_selected="Reiniciar Dialogos que serão mostrados na próxima vez..." name="reset_dialogs_btn" tool_tip="Habilitar todas as popups opcionais e notificações de “primeiro uso”." width="200"/> + <check_box label="Quando eu gasto ou recebo L$" name="notify_money_change_checkbox"/> + <check_box label="Quando meus amigos entram e saem" name="friends_online_notify_checkbox"/> <text name="show_label"> - Mostrar estas popups: + Sempre mostrar esses alertas: </text> - <button label="Desabilitar todas estas popups..." name="skip_dialogs_btn" tool_tip="Desabilitar todas as popups opcionais e notificações de “primeiro uso”." width="200"/> - <text name="text_box2"> - Ofertas de notecards, texturas e landmarks: + <text name="dont_show_label"> + Nunca mostrar esses alertas: </text> - <check_box label="Aceitar automaticamente" name="accept_new_inventory"/> - <check_box label="Visualizar automaticamente após aceitar" name="show_new_inventory"/> - <check_box label="Mostrar automaticamente objetos aceitos recentemente no inventário." name="show_in_inventory"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml index aa40f97fe3..d6d8be7dc7 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml @@ -1,17 +1,13 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Chat" name="chat"> - <text name="text_box"> - Tamanho da Fonte -do Chat: - </text> <radio_group name="chat_font_size"> - <radio_item name="radio" label="Pequeno" /> - <radio_item name="radio2" label="Médio" /> - <radio_item name="radio3" label="Grande" /> + <radio_item label="Pequeno" name="radio"/> + <radio_item label="Média" name="radio2"/> + <radio_item label="Grande" name="radio3"/> </radio_group> <color_swatch label="Você" name="user"/> <text name="text_box1"> - Você + Eu </text> <color_swatch label="Outros" name="agent"/> <text name="text_box2"> @@ -37,23 +33,14 @@ do Chat: <text name="text_box7"> Dono </text> - <color_swatch label="Bolha" name="background"/> - <text name="text_box8"> - Bolha - </text> <color_swatch label="URLs" name="links"/> <text name="text_box9"> URLs </text> - <check_box label="Mostrar Erros de Script e avisos como chat comum" name="script_errors_as_chat"/> - <spinner label="Ocultar Chat depois" label_width="108" name="fade_chat_time" width="160"/> - <spinner left="373" name="max_chat_count"/> - <slider label="Opacidade" name="console_opacity"/> - <check_box label="Use a largura total da tela (Precisa reiniciar)" name="chat_full_width_check"/> - <check_box label="Feche a barra de conversa após pressionar retornar" name="close_chat_on_return_check"/> - <check_box label="Teclas de Setas sempre movem o avatar durante a conversa" name="arrow_keys_move_avatar_check"/> - <check_box label="Mostrar a hora na conversa local" name="show_timestamps_check"/> - <check_box label="Executar animação digitada quando estiver conversando" name="play_typing_animation"/> - <check_box label="Mostrar bolhas do chat" name="bubble_text_chat"/> - <slider label="Opacidade" name="bubble_chat_opacity"/> + <check_box initial_value="true" label="Executar animação digitada quando estiver conversando" name="play_typing_animation"/> + <check_box label="Envie MIs por email quando eu estiver desconectado" name="send_im_to_email"/> + <radio_group name="chat_window" tool_tip="Exibir cada bate-papo em uma janela ou em uma única janela com uma aba para cada pessoa (requer reinício)"> + <radio_item label="Janelas diferentes" name="radio"/> + <radio_item label="Uma janela" name="radio2"/> + </radio_group> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml index 8bde39545c..17f43943c1 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml @@ -1,90 +1,64 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Geral" name="general_panel"> - <combo_box name="start_location_combo"> - <combo_box.item name="MyHome" tool_tip="Como padrão, registrar na minha casa." label="Minha Casa"/> - <combo_box.item name="MyLastLocation" tool_tip="Por padrão, registrar na minha última localidade." label="Minha Última Localidade"/> - </combo_box> - <check_box label="Mostrar Posição Inicial na Tela de Login" name="show_location_checkbox"/> - <combo_box name="fade_out_combobox"> - <combo_box.item name="Never" label="Nunca"/> - <combo_box.item name="Show Temporarily" label="Mostrar Temporariamente"/> - <combo_box.item name="Always" label="Sempre"/> - </combo_box> - <check_box label="Avatar com Nomes Pequenos" name="small_avatar_names_checkbox"/> - <check_box label="Ocultar meu Nome na minha Tela" name="show_my_name_checkbox"/> - <text name="group_titles_textbox"> - Títulos dos Grupos: - </text> - <check_box label="Ocultar todos os Títulos de Grupos" name="show_all_title_checkbox"/> - <check_box label="Ocultar meu Título no Grupo" name="show_my_title_checkbox"/> - <color_swatch label="" name="effect_color_swatch" tool_tip="Clique para abrir o seletor de cores"/> - <text name="UI Size:"> - Tamanho da UI: + <text name="language_textbox"> + Linguagem: </text> - <check_box label="Usar escala independente da resolução" name="ui_auto_scale"/> - <spinner label="Tempo para ficar Ausente:" name="afk_timeout_spinner"/> - <check_box label="Avisar quando receber ou gastar Linden dollars (L$)" name="notify_money_change_checkbox"/> - <text name="maturity_desired_label"> - Classificação: + <combo_box name="language_combobox"> + <combo_box.item label="Padrão" name="System Default Language"/> + <combo_box.item label="English (Inglês)" name="English"/> + <combo_box.item label="Dansk (Dinamarquês) - Beta" name="Danish"/> + <combo_box.item label="Deutsch (Alemão) - Beta" name="Deutsch(German)"/> + <combo_box.item label="Español (Espanhol) - Beta" name="Spanish"/> + <combo_box.item label="Français (Francês) - Beta" name="French"/> + <combo_box.item label="Italiano - Beta" name="Italian"/> + <combo_box.item label="Nederlands (Holandês) - Beta" name="Dutch"/> + <combo_box.item label="Polski (Polonês) - Beta" name="Polish"/> + <combo_box.item label="Português - Beta" name="Portugese"/> + <combo_box.item label="日本語 (Japonês) - Beta" name="(Japanese)"/> + </combo_box> + <text name="language_textbox2"> + (Reinicie para mostrar o novo idioma) </text> <text name="maturity_desired_prompt"> Eu quero acessar conteúdo classificado: </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"> - Posição Inicial: + Ponto de partida: </text> - <text name="show_names_textbox"> - Mostrar Nomes: + <combo_box name="start_location_combo"> + <combo_box.item label="Minha Última Localidade" name="MyLastLocation" tool_tip="Por padrão, registrar na minha última localidade."/> + <combo_box.item label="Minha Casa" name="MyHome" tool_tip="Como padrão, registrar na minha casa."/> + </combo_box> + <check_box initial_value="true" label="Mostrar ao entrar" name="show_location_checkbox"/> + <text name="name_tags_textbox"> + Mostrar nomes: </text> + <radio_group name="Name_Tag_Preference"> + <radio_item label="Desligar" name="radio"/> + <radio_item label="Ligar" name="radio2"/> + <radio_item label="Brevemente" name="radio3"/> + </radio_group> + <check_box label="Mostrar meu nome" name="show_my_name_checkbox1"/> + <check_box initial_value="true" label="Nomes pequenos" name="small_avatar_names_checkbox"/> + <check_box label="Mostrar cargo" name="show_all_title_checkbox1"/> <text name="effects_color_textbox"> - Cores para Meus Efeitos: + Meus efeitos: + </text> + <color_swatch label="" name="effect_color_swatch" tool_tip="Clique para abrir o seletor de cores"/> + <text name="title_afk_text"> + Entrar no modo ausente em: </text> + <spinner label="Tempo para ficar Ausente:" name="afk_timeout_spinner"/> <text name="seconds_textbox"> segundos </text> - <text name="crash_report_textbox"> - Relatórios de Falhas: - </text> - <text name="language_textbox"> - Linguagem: - </text> - <text name="language_textbox2"> - (Precisa de reinício para efetivar) + <text name="text_box3"> + Mensagem do modo ocupado: </text> - <string name="region_name_prompt"> - Digite o nome da Região - </string> - <combo_box name="crash_behavior_combobox"> - <combo_box.item name="Askbeforesending" label="Perguntar antes de enviar"/> - <combo_box.item name="Alwayssend" label="Sempre enviar"/> - <combo_box.item name="Neversend" label="Nunca Enviar"/> - </combo_box> - <combo_box name="language_combobox"> - <combo_box.item name="System Default Language" label="Padrão do Sistema"/> - <combo_box.item name="English" label="English (Inglês)"/> - <combo_box.item name="Danish" label="Dansk (Dinamarquês) - Beta"/> - <combo_box.item name="Deutsch(German)" label="Deutsch (Alemão) - Beta"/> - <combo_box.item name="Spanish" label="Español (Espanhol) - Beta"/> - <combo_box.item name="French" label="Français (Francês) - Beta"/> - <combo_box.item name="Italian" label="Italiano - Beta"/> - <combo_box.item name="Hungarian" label="Magyar (Húngaro) - Beta"/> - <combo_box.item name="Dutch" label="Nederlands (Holandês) - Beta"/> - <combo_box.item name="Polish" label="Polski (Polonês) - Beta"/> - <combo_box.item name="Portugese" label="Português - 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="Українська (Ucraniano) - Beta"/> - <combo_box.item name="Chinese" label="中文 (简体) (Chinês) - Beta"/> - <combo_box.item name="(Japanese)" label="日本語 (Japonês) - Beta"/> - <combo_box.item name="(Korean)" label="한국어 (Coreano) - Beta"/> - </combo_box> - <check_box label="Compartilhar a linguagem com objetos" name="language_is_public" tool_tip="Isto permite que os objetos no mundo conheçam sua linguagem preferida."/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml index d7982ab940..252415ae2d 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml @@ -1,43 +1,18 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Gráficos" name="Display panel"> - <button label="?" name="GraphicsPreferencesHelpButton"/> - <check_box label="Execute Second Life em uma janela" name="windowed mode"/> - <text_editor bottom="-56" height="40" name="FullScreenInfo" width="480"> - Se desmarcado, o visualizador exibirá tela inteira quando fizer o acesso. - </text_editor> - <text name="WindowSizeLabel"> - Tamanho da Janela: + <text name="UI Size:"> + Interface: </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"> - Resolução de Display: - </text> - <text name="AspectRatioLabel1" tool_tip="largura / altura"> - Relação de Aspecto: - </text> - <combo_box name="aspect_ratio" tool_tip="largura / altura"> - <combo_box.item name="4:3(StandardCRT)" label="4:3 (CRT Padrão)" /> - <combo_box.item name="5:4(1280x1024LCD)" label="5:4 (1280x1024 LCD)" /> - <combo_box.item name="8:5(Widescreen)" label="8:5 (tela ampla)" /> - <combo_box.item name="16:9(Widescreen)" label="16:9 (tela ampla)" /> - </combo_box> - <check_box label="Auto-detectar a relação" name="aspect_auto_detect"/> - <text name="HigherText"> - Qualidade e - </text> - <text name="QualityText"> - Performance: + <text name="QualitySpeed"> + Qualidade e velocidade: </text> <text name="FasterText"> Mais rápido </text> + <text name="BetterText"> + Melhor + </text> <text name="ShadersPrefText"> Baixo </text> @@ -50,96 +25,82 @@ rápido <text name="ShadersPrefText4"> Ultra </text> - <text name="HigherText2"> - Mais alto - </text> - <text name="QualityText2"> - Qualidade - </text> - <check_box label="Personalizar" left="395" name="CustomSettings"/> - <panel name="CustomGraphics Panel"> - <text name="ShadersText"> - Sombreadores: - </text> - <check_box label="Bump de Mapeamento e Brilho" name="BumpShiny"/> - <check_box label="Sombreadores básicos" name="BasicShaders" tool_tip="Desabilitar esta opção poderá impedir que alguns drivers de placa de vídeo a travem."/> - <check_box label="Sombreadores Atmosféricos" name="WindLightUseAtmosShaders"/> - <check_box label="Reflexos de Água" name="Reflections"/> - <text name="ReflectionDetailText"> - Detalhes de Reflexão: - </text> - <radio_group name="ReflectionDetailRadio"> - <radio_item name="0" label="Terreno e Árvores" /> - <radio_item name="1" label="Todos os objetos estáticos" /> - <radio_item name="2" label="Todos os avatares e Objetos" /> - <radio_item name="3" label="Tudo" /> - </radio_group> - <text name="AvatarRenderingText"> - Renderização de Avatar: - </text> - <check_box label="Atributos do Avatar" name="AvatarImpostors"/> - <check_box label="Melhoria de Hardware" name="AvatarVertexProgram"/> - <check_box label="Vestimenta do Avatar" name="AvatarCloth"/> - <text name="DrawDistanceMeterText1"> - m - </text> - <text name="DrawDistanceMeterText2"> - m - </text> - <slider label="Distancia de desenho:" label_width="150" name="DrawDistance" width="255"/> - <slider label="Contador máx. de partículas:" label_width="150" name="MaxParticleCount" width="262"/> - <slider label="Qualidade de Pós-processamento:" label_width="178" name="RenderPostProcess" width="223"/> - <text name="MeshDetailText"> - Detalhes de Malha: - </text> - <slider label=" Objetos:" name="ObjectMeshDetail"/> - <slider label=" Primitivas Flexiveis:" name="FlexibleMeshDetail"/> - <slider label=" Árvores:" name="TreeMeshDetail"/> - <slider label=" Avatares:" name="AvatarMeshDetail"/> - <slider label=" Terreno:" name="TerrainMeshDetail"/> - <slider label=" Céu:" name="SkyMeshDetail"/> - <text name="PostProcessText"> - Baixo - </text> - <text name="ObjectMeshDetailText"> - Baixo - </text> - <text name="FlexibleMeshDetailText"> - Baixo - </text> - <text name="TreeMeshDetailText"> - Baixo - </text> - <text name="AvatarMeshDetailText"> - Baixo - </text> - <text name="TerrainMeshDetailText"> - Baixo - </text> - <text name="SkyMeshDetailText"> - Baixo - </text> - <text name="LightingDetailText"> - Detalhes de Iluminação: - </text> - <radio_group name="LightingDetailRadio"> - <radio_item name="SunMoon" label="Sol e Lua apenas" /> - <radio_item name="LocalLights" label="Luzes locais nas proximidades" /> - </radio_group> - <text name="TerrainDetailText"> - Detalhe do Terreno: - </text> - <radio_group left_delta="45" name="TerrainDetailRadio" width="276"> - <radio_item name="0" label="Baixo" /> - <radio_item name="2" label="Alto" /> - </radio_group> + <panel label="CustomGraphics" name="CustomGraphics Panel"> + <text name="ShadersText"> + Sombreadores: + </text> + <check_box initial_value="true" label="Bump de Mapeamento e Brilho" name="BumpShiny"/> + <check_box initial_value="true" label="Sombreadores básicos" name="BasicShaders" tool_tip="Desabilitar esta opção poderá impedir que alguns drivers de placa de vídeo a travem."/> + <check_box initial_value="true" label="Sombreadores Atmosféricos" name="WindLightUseAtmosShaders"/> + <check_box initial_value="true" label="Reflexos de Água" name="Reflections"/> + <text name="ReflectionDetailText"> + Detalhes de Reflexão: + </text> + <radio_group name="ReflectionDetailRadio"> + <radio_item label="Terreno e árvores" name="0"/> + <radio_item label="Todos os objetos estáticos" name="1"/> + <radio_item label="Todos os avatares e Objetos" name="2"/> + <radio_item label="Tudo" name="3"/> + </radio_group> + <text name="AvatarRenderingText"> + Renderização de Avatar: + </text> + <check_box initial_value="true" label="Atributos do Avatar" name="AvatarImpostors"/> + <check_box initial_value="true" label="Melhoria de Hardware" name="AvatarVertexProgram"/> + <check_box initial_value="true" label="Vestimenta do Avatar" name="AvatarCloth"/> + <slider label="Distancia de desenho:" label_width="150" name="DrawDistance" width="255"/> + <text name="DrawDistanceMeterText2"> + m + </text> + <slider label="Contador máx. de partículas:" label_width="150" name="MaxParticleCount" width="262"/> + <slider label="Qualidade de Pós-processamento:" label_width="178" name="RenderPostProcess" width="223"/> + <text name="MeshDetailText"> + Detalhes de Malha: + </text> + <slider label=" Objetos:" name="ObjectMeshDetail"/> + <slider label=" Primitivas Flexiveis:" name="FlexibleMeshDetail"/> + <slider label=" Árvores:" name="TreeMeshDetail"/> + <slider label=" Avatares:" name="AvatarMeshDetail"/> + <slider label=" Terreno:" name="TerrainMeshDetail"/> + <slider label=" Céu:" name="SkyMeshDetail"/> + <text name="PostProcessText"> + Baixo + </text> + <text name="ObjectMeshDetailText"> + Baixo + </text> + <text name="FlexibleMeshDetailText"> + Baixo + </text> + <text name="TreeMeshDetailText"> + Baixo + </text> + <text name="AvatarMeshDetailText"> + Baixo + </text> + <text name="TerrainMeshDetailText"> + Baixo + </text> + <text name="SkyMeshDetailText"> + Baixo + </text> + <text name="LightingDetailText"> + Detalhes de Iluminação: + </text> + <radio_group name="LightingDetailRadio"> + <radio_item label="Sol e Lua apenas" name="SunMoon"/> + <radio_item label="Luzes locais nas proximidades" name="LocalLights"/> + </radio_group> + <text name="TerrainDetailText"> + Detalhe do Terreno: + </text> + <radio_group left_delta="45" name="TerrainDetailRadio" width="276"> + <radio_item label="Baixo" name="0"/> + <radio_item label="Alto" name="2"/> + </radio_group> </panel> - <button label="Configurações Recomendadas" name="Defaults" width="190" left="110"/> - <button label="Opções de Hardware" label_selected="Opções de 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="Aplicar" label_selected="Aplicar" name="Apply"/> + <button label="Redefinir" left="110" name="Defaults" width="190"/> + <button label="Avançado" name="Advanced"/> + <button label="Hardware" label_selected="Hardware" name="GraphicsHardwareButton"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml index 84c6c934c8..fc83a0e97a 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_privacy.xml @@ -1,33 +1,27 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Comunicação" name="im"> - <text name="text_box"> - Minha situação online: + <panel.string name="log_in_to_change"> + autentique-se para mudar + </panel.string> + <button label="Limpar histórico" name="clear_cache"/> + <text name="cache_size_label_l"> + (Locações, imagens, web, histórico de busca) </text> - <check_box label="Apenas meus Amigos e Grupos podem me ver online" name="online_visibility"/> - <text name="text_box2"> - Opções MI: + <check_box label="Apenas amigos e grupos sabem que estou online" name="online_visibility"/> + <check_box label="Apenas amigos e grupos podem me chamar ou enviar MI" name="voice_call_friends_only_check"/> + <check_box label="Desligar o microfone quando terminar chamadas" name="auto_disengage_mic_check"/> + <check_box label="Aceitar cookies" name="cookies_enabled"/> + <check_box label="Permitir toque automático da mídia" name="autoplay_enabled"/> + <text name="Logs:"> + Logs: </text> - <string name="log_in_to_change"> - Logar para Alterar - </string> - <check_box label="Enviar MI para o e-mail ([EMAIL])" name="send_im_to_email"/> - <check_box label="Incluir MIs no console do chat" name="include_im_in_chat_console"/> - <check_box label="Mostrar data e hora na MI" name="show_timestamps_check"/> - <check_box label="Mostrar notificação de Amigo online" name="friends_online_notify_checkbox"/> - <text name="text_box3" width="134"> - Resposta no Modo -Ocupado: - </text> - <text name="text_box4"> - Opções de Registro: - </text> - <check_box label="Salvar um registro das MIs em meu computador" name="log_instant_messages"/> - <check_box label="Mostrar a hora nas MIs" name="log_instant_messages_timestamp"/> - <check_box label="Mostrar o final da última conversa em MI" name="log_show_history"/> - <check_box label="Salvar um registro da Conversa local em meu computador" name="log_chat"/> - <check_box label="Mostrar a hora no registro da Conversa local" name="log_chat_timestamp"/> - <check_box label="Mostrar MIs recebidas no registro de Conversa local" name="log_chat_IM"/> - <check_box label="Incluir data e hora" name="log_date_timestamp"/> - <button label="Mudar Local" label_selected="Alterar Caminho" name="log_path_button" width="120"/> + <check_box label="Salvar logs de bate- papo das proximidades no meu computador" name="log_nearby_chat"/> + <check_box label="Salvar logs de MI no meu computador" name="log_instant_messages"/> + <check_box label="Adicionar timestamp" name="show_timestamps_check_im"/> <line_editor left="278" name="log_path_string" right="-20"/> + <text name="log_path_desc"> + Localização dos logs + </text> + <button label="Navegar" label_selected="Navegar" name="log_path_button" width="120"/> + <button label="Lista dos bloqueados" name="block_list"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml index 3c94090131..002b3fa8a7 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_setup.xml @@ -1,33 +1,46 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Câmera" name="Input panel"> - <text name=" Mouselook Options:"> - Mouselook: +<panel label="Entrada e câmera" name="Input panel"> + <button bottom_delta="-40" label="Outros dispositivos" name="joystick_setup_button" width="165"/> + <text name="Mouselook:"> + Visão subjetiva: </text> - <text name=" Mouse Sensitivity:"> - Sensibilidade do Mouse: + <text name=" Mouse Sensitivity"> + Sensibilidade do mouse </text> - <check_box label="Inverter o Mouse" name="invert_mouse"/> - <text name=" Auto Fly Options:"> - Vôo Automático: + <check_box label="Inverter" name="invert_mouse"/> + <text name="Network:"> + Rede: </text> - <check_box label="Voar/Aterrissar pressionando teclas para cima/baixo" name="automatic_fly"/> - <text name=" Camera Options:"> - Opções de Câmera: + <text name="Maximum bandwidth"> + Largura de banda máxima </text> - <text name="camera_fov_label" width="218"> - Angulo de Visão da Câmera: + <text name="text_box2"> + kbps </text> - <slider bottom_delta="-6" width="128" left="360" name="camera_fov" /> - <text name="Camera Follow Distance:" width="218"> - Distância de Acompanhamento da Camêra: + <check_box label="Personalizar porta" name="connection_port_enabled"/> + <spinner label="Número da porta:" name="web_proxy_port"/> + <text name="cache_size_label_l"> + Tamanho do cache </text> - <slider bottom_delta="-6" width="128" left="360" name="camera_offset_scale" /> - <check_box label="Edição automática do movimento da câmera" name="edit_camera_movement" tool_tip="Usar posicionamento automático da câmera quando entrar e sair do modo de edição"/> - <check_box label="Movimento Automático da Câmera na edição de aparência" name="appearance_camera_movement" tool_tip="Usar posicionamento automático da câmera em modo de edição"/> - <text name="text2"> - Opções de Exibição -do Avatar: + <text name="text_box5"> + MB + </text> + <button label="Navegar" label_selected="Navegar" name="set_cache"/> + <button label="Redefinir" label_selected="Definir" name="reset_cache"/> + <text name="Cache location"> + Localização do cache + </text> + <text name="Web:"> + Web: + </text> + <radio_group name="use_external_browser"> + <radio_item label="Usar navegador incluso" name="internal" tool_tip="Use este navegador para consultar a ajuda, abrir links da web, etc. As janelas abrem dentro do [APP_NAME]."/> + <radio_item label="Usar meu navegador (IE, Firefox)" name="external" tool_tip="Use o navegador incluso para consultar a ajuda, abrir links da web, etc. Uso em tela inteira não recomendado."/> + </radio_group> + <check_box initial_value="false" label="Proxy web" name="web_proxy_enabled"/> + <line_editor name="web_proxy_editor" tool_tip="O nome ou endereço IP do proxy da sua preferência"/> + <button label="Navegar" label_selected="Navegar" name="set_proxy"/> + <text name="Proxy location"> + Localização do proxy </text> - <check_box label="Mostra o avatar em primeira pessoa" name="first_person_avatar_visible"/> - <button bottom_delta="-40" label="Configuração do Joystick" name="joystick_setup_button" width="165"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml index 5574679cde..37855672c9 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml @@ -1,39 +1,38 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Áudio & Vídeo" name="Preference Media panel"> - <slider label="Mestre" name="System Volume"/> +<panel label="Sons" name="Preference Media panel"> + <slider label="Volume principal" name="System Volume"/> + <check_box initial_value="true" label="Silenciar ao minimizar" name="mute_when_minimized"/> <slider label="Ambiente" name="Wind Volume"/> - <slider label="Sons" name="SFX Volume"/> + <slider label="Botões" name="UI Volume"/> <slider label="Mídia" name="Media Volume"/> - <slider label="UI" name="UI Volume"/> - <slider label="Música" name="Music Volume"/> + <slider label="Efeitos sonoros" name="SFX Volume"/> + <slider label="Streaming de música" name="Music Volume"/> + <check_box label="Voz" name="enable_voice_check"/> <slider label="Voz" name="Voice Volume"/> - <text_editor name="voice_unavailable"> - Bate-papo de Voz nâo está disponível - </text_editor> - <check_box label="Habilitar bate-papo de Voz" name="enable_voice_check"/> + <text name="Listen from"> + Ouvir a partir de: + </text> <radio_group name="ear_location"> - <radio_item name="0" label="Ouvir o bate-papo de voz pela posição de câmera" /> - <radio_item name="1" label="Ouvir o bate-papo de voz pela posição do avatar" /> + <radio_item label="Posição de câmera" name="0"/> + <radio_item label="Posição do avatar" name="1"/> </radio_group> - <button label="Configurações do dispositivo" name="device_settings_btn" width="180"/> - <text name="muting_text"> - Volume: - </text> - <text name="streaming_prefs_text"> - Preferências de -Streaming: - </text> - <text name="audio_prefs_text"> - Preferências de Áudio: - </text> - <panel label="Volume" name="Volume Panel"/> - <check_box label="Tocar música em streaming" name="streaming_music"/> - <check_box label="Tocar streaming de Mídia" name="streaming_video"/> - <check_box label="Tocar mídia automaticamente" name="auto_streaming_video"/> - <check_box label="Silenciar Áudio quando minimizar janela" name="mute_when_minimized"/> - <slider label="Efeito Doppler" name="Doppler Effect"/> - <slider label="Fator Distância" name="Distance Factor"/> - <slider label="Fator Rolloff" name="Rolloff Factor"/> - <spinner label="Mudar nível de alerta de L$" name="L$ Change Threshold" label_width="165" width="229"/> - <spinner label="Mudar nível de alerta de Saúde" name="Health Change Threshold" label_width="165" width="229"/> + <button label="Controles de entrada/saída" name="device_settings_btn" width="180"/> + <panel label="Configuração dos dispositivo" name="device_settings_panel"> + <panel.string name="default_text"> + Padrão + </panel.string> + <text name="Input"> + Entrada + </text> + <text name="My volume label"> + Meu volume: + </text> + <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Mude o volume usando o controle deslizante"/> + <text name="wait_text"> + Aguarde + </text> + <text name="Output"> + Saída + </text> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml new file mode 100644 index 0000000000..d8013c974f --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="URL da mídia"/> + <layout_stack name="media_address_url_icons"> + <layout_panel> + <icon name="media_whitelist_flag" tool_tip="Lista ativada"/> + </layout_panel> + <layout_panel> + <icon name="media_secure_lock_flag" tool_tip="Navegação segura"/> + </layout_panel> + </layout_stack> + </layout_panel> + <layout_panel name="media_play_position"> + <slider_bar initial_value="0.5" name="media_play_slider" tool_tip="Andamento do vídeo"/> + </layout_panel> + <layout_panel name="media_volume"> + <button name="media_mute_button" tool_tip="Silenciar esta mídia"/> + <slider name="volume_slider" tool_tip="Volume"/> + </layout_panel> + </layout_stack> + <layout_stack> + <panel name="media_progress_indicator"> + <progress_bar name="media_progress_bar" tool_tip="Carregando mídia"/> + </panel> + </layout_stack> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_profile.xml b/indra/newview/skins/default/xui/pt/panel_profile.xml index ff53aa6a41..a9a5116d3c 100644 --- a/indra/newview/skins/default/xui/pt/panel_profile.xml +++ b/indra/newview/skins/default/xui/pt/panel_profile.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="panel_profile"> +<panel label="Perfil" name="panel_profile"> <string name="CaptionTextAcctInfo"> [ACCTTYPE] [PAYMENTINFO] [AGEVERIFICATION] @@ -11,4 +11,38 @@ http://www.secondlife.com/account/partners.php?lang=pt </string> <string name="my_account_link_url" value="http://secondlife.com/my/account/index.php?lang=pt-BR"/> + <string name="no_partner_text" value="Ninguém"/> + <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="Mundo real:"/> + </panel> + <text name="me_homepage_text"> + Homepage: + </text> + <text name="title_member_text" value="Membro desde:"/> + <text name="title_acc_status_text" value="Status da conta:"/> + <text name="acc_status_text" value="Residente. Nenhuma info de pagamento no arquivo."/> + <text name="title_partner_text" value="Parceiro:"/> + <text name="title_groups_text" value="Grupos:"/> + </panel> + </scroll_container> + <panel name="profile_buttons_panel"> + <button label="Adicionar amigo" name="add_friend" tool_tip="Oferecer amizade para o residente"/> + <button label="MI" name="im" tool_tip="Abrir sessão de Mensagem instantânea"/> + <button label="Chamada" name="call" tool_tip="Chamar este residente"/> + <button label="Mapa" name="show_on_map_btn" tool_tip="exibir o residente no mapa"/> + <button label="Teletransporte" name="teleport" tool_tip="Oferecer teletransporte"/> + <button label="▼" name="overflow_btn" tool_tip="Pagar dinheiro ou compartilhar inventário com o residente"/> + </panel> + <panel name="profile_me_buttons_panel"> + <button label="Editar perfil" name="edit_profile_btn"/> + <button label="Editar aparência" name="edit_appearance_btn"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_profile_view.xml b/indra/newview/skins/default/xui/pt/panel_profile_view.xml new file mode 100644 index 0000000000..62a16c6fbe --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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"> + Conectado + </string> + <string name="status_offline"> + Desconectado + </string> + <text_editor name="user_name" value="Carregando..."/> + <text name="status" value="Conectado"/> + <tab_container name="tabs"> + <panel label="PERFIL" name="panel_profile"/> + <panel label="DESTAQUES" name="panel_picks"/> + <panel label="ANOTAÇÕES E PRIVACIDADE" name="panel_notes"/> + </tab_container> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_region_covenant.xml b/indra/newview/skins/default/xui/pt/panel_region_covenant.xml index 4977a1fac9..122cae940c 100644 --- a/indra/newview/skins/default/xui/pt/panel_region_covenant.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_covenant.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Corretagem" name="Covenant"> <text name="estate_section_lbl"> - Propriedade: + Propriedade </text> <text bottom_delta="-19" name="estate_name_lbl"> Nome: @@ -22,7 +22,7 @@ Última modificação: Quarta, 31 de dezembro de 1969 às 16:00:00 horas </text> <button label="?" name="covenant_help"/> - <text_editor name="covenant_editor" bottom="-247" height="162" > + <text_editor bottom="-247" height="162" name="covenant_editor"> Não há nenhuma regra fornecida para esta Propriedade. </text_editor> <button label="Resetar" name="reset_covenant"/> @@ -30,12 +30,11 @@ As mudanças das regras serão mostradas em todos os lotes da propriedade. </text> - <text bottom_delta="-36" name="covenant_instructions"> - Arraste e solte um notecard, para mudar as Regras desta - Propriedade. + <text bottom_delta="-36" name="covenant_instructions"> + Arrastar e soltar um notecard para alterar o Covenant para esta propriedade. </text> <text bottom_delta="-36" name="region_section_lbl"> - Região: + Região </text> <text name="region_name_lbl"> Nome: diff --git a/indra/newview/skins/default/xui/pt/panel_region_debug.xml b/indra/newview/skins/default/xui/pt/panel_region_debug.xml index 724df20155..2119a06e55 100644 --- a/indra/newview/skins/default/xui/pt/panel_region_debug.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_debug.xml @@ -22,18 +22,18 @@ <line_editor name="target_avatar_name"> (nenhum) </line_editor> - <button label="Escolher..." name="choose_avatar_btn"/> + <button label="Selecionar" name="choose_avatar_btn"/> <text name="options_text_lbl"> Opções: </text> - <check_box label="Retornar apenas aqueles objetos que contenham scripts" name="return_scripts" tool_tip="Retornar apenas objetos que contenham scripts."/> - <check_box label="Retornar apenas aqueles objetos na terra de alguém" name="return_other_land" tool_tip="Retornar apenas objetos que estejam na terra pertencente a alguém"/> - <check_box label="Retornar objetos em cada região desta propriedade" name="return_estate_wide" tool_tip="Retornar objetos em todas as regiões que constituem esta propriedade"/> + <check_box label="Com scripts" name="return_scripts" tool_tip="Só devolver objetos com scripts"/> + <check_box label="No terreno de outra pessoa" name="return_other_land" tool_tip="Retornar apenas objetos que estejam na terra pertencente a alguém"/> + <check_box label="Em todas as regiões desta propriedade" name="return_estate_wide" tool_tip="Retornar objetos em todas as regiões que constituem esta propriedade"/> <button label="Retornar" name="return_btn"/> - <button width="280" label="Pegar os principais colidentes..." name="top_colliders_btn" tool_tip="Lista dos objetos que experimentam as mais potenciais colisões"/> - <button label="?" name="top_colliders_help" left="297"/> - <button width="280" label="Pegar Principais Scripts..." name="top_scripts_btn" tool_tip="Lista de objetos gastando mais tempo rodando scripts"/> - <button label="?" name="top_scripts_help" left="297"/> + <button label="Pegar os principais colidentes..." name="top_colliders_btn" tool_tip="Lista dos objetos que experimentam as mais potenciais colisões" width="280"/> + <button label="?" left="297" name="top_colliders_help"/> + <button label="Pegar Principais Scripts..." name="top_scripts_btn" tool_tip="Lista de objetos gastando mais tempo rodando scripts" width="280"/> + <button label="?" left="297" name="top_scripts_help"/> <button label="Reiniciar a Região" name="restart_btn" tool_tip="Dar 2 minutos de contagem regressiva e reiniciar a região"/> <button label="?" name="restart_help"/> <button label="Atrasar o Reinicio" name="cancel_restart_btn" tool_tip="Atrasar o reinicio da região por uma hora"/> diff --git a/indra/newview/skins/default/xui/pt/panel_region_estate.xml b/indra/newview/skins/default/xui/pt/panel_region_estate.xml index f43402be15..c893472de1 100644 --- a/indra/newview/skins/default/xui/pt/panel_region_estate.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_estate.xml @@ -11,7 +11,7 @@ todas as regiões desta propriedade. (desconhecido) </text> <text name="owner_text"> - Proprietário: + Proprietário do imóvel: </text> <text name="estate_owner"> (desconhecido) @@ -24,10 +24,10 @@ todas as regiões desta propriedade. <check_box label="Permitir acesso público" name="externally_visible_check"/> <button label="?" name="externally_visible_help"/> <text name="Only Allow"> - Acesso restrito a Residentes... + Restringir acesso a contas confirmardas por: </text> - <check_box label="com info. de pagamento em arquivo" name="limit_payment" tool_tip="Banir residentes não identificados."/> - <check_box label="Adultos com idade verificada" name="limit_age_verified" tool_tip="Banir residentes que não tenham confirmado a sua idade. Ver support.secondlife.com para mais informações."/> + <check_box label="Dados de pagamento fornecidos" name="limit_payment" tool_tip="Banir residentes sem identificação"/> + <check_box label="Verificação de idade" name="limit_age_verified" tool_tip="Banir residentes que não comprovaram a idade. Consulte o [SUPPORT_SITE] para saber mais."/> <check_box label="Permitir conversa de voz" name="voice_chat_check"/> <button label="?" name="voice_chat_help"/> <check_box label="Permitir Tele-transporte direto" name="allow_direct_teleport"/> diff --git a/indra/newview/skins/default/xui/pt/panel_region_texture.xml b/indra/newview/skins/default/xui/pt/panel_region_texture.xml index 4787b59a8d..7f37919af2 100644 --- a/indra/newview/skins/default/xui/pt/panel_region_texture.xml +++ b/indra/newview/skins/default/xui/pt/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="Texturas de Chão" name="Textures"> <text name="region_text_lbl"> Região: @@ -36,22 +36,22 @@ <text name="height_text_lbl9"> Noroeste </text> - <spinner label="Baixo" name="height_start_spin_0" /> - <spinner label="Baixo" name="height_start_spin_1" /> - <spinner label="Baixo" name="height_start_spin_2" /> - <spinner label="Baixo" name="height_start_spin_3" /> - <spinner label="Alto" name="height_range_spin_0" /> - <spinner label="Alto" name="height_range_spin_1" /> - <spinner label="Alto" name="height_range_spin_2" /> - <spinner label="Alto" name="height_range_spin_3" /> + <spinner label="Baixo" name="height_start_spin_0"/> + <spinner label="Baixo" name="height_start_spin_1"/> + <spinner label="Baixo" name="height_start_spin_2"/> + <spinner label="Baixo" name="height_start_spin_3"/> + <spinner label="Alto" name="height_range_spin_0"/> + <spinner label="Alto" name="height_range_spin_1"/> + <spinner label="Alto" name="height_range_spin_2"/> + <spinner label="Alto" name="height_range_spin_3"/> <text name="height_text_lbl10"> - Estes valores respresentam o tipo de escala para as texturas acima. + Os valores representam o intervalo de mistura das texturas acima. </text> <text name="height_text_lbl11"> - Medido em metros, o valor Baixo é a altura máxima da Textura #1, + Em metros, o valor BAIXO é a altura MÁXIMA da Textura 1, e HIGH é a altura MÍNIMA da Textura 4. </text> <text name="height_text_lbl12"> e o valor Alto é a altura Mínima da Textura #4. </text> - <button label="Aplicar" name="apply_btn" /> + <button label="Aplicar" name="apply_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_script_ed.xml b/indra/newview/skins/default/xui/pt/panel_script_ed.xml new file mode 100644 index 0000000000..6f022945c2 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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"> + Carregando... + </panel.string> + <panel.string name="can_not_view"> + Você não pode ver ou editar o script, uma vez que está definido como "não" copiar ". Você precisa de permissões para ver ou editar um script dentro de um objeto. + </panel.string> + <panel.string name="public_objects_can_not_run"> + Objetos públicos não podem executar scripts + </panel.string> + <panel.string name="script_running"> + Executando + </panel.string> + <panel.string name="Title"> + Script: [NOME] + </panel.string> + <text_editor name="Script Editor"> + Carregando... + </text_editor> + <button label="Salvar" label_selected="Salvar" name="Save_btn"/> + <combo_box label="Inserir..." name="Insert..."/> + <menu_bar name="script_menu"> + <menu label="Arquivo" name="File"> + <menu_item_call label="Salvar" name="Save"/> + <menu_item_call label="Reverter todas as alterações" name="Revert All Changes"/> + </menu> + <menu label="Editar" name="Edit"> + <menu_item_call label="desfazer" name="Undo"/> + <menu_item_call label="Refazer" name="Redo"/> + <menu_item_call label="Cortar" name="Cut"/> + <menu_item_call label="Copiar" name="Copy"/> + <menu_item_call label="Colar" name="Paste"/> + <menu_item_call label="Selecionar tudo" name="Select All"/> + <menu_item_call label="Desmarcar" name="Deselect"/> + <menu_item_call label="Buscar / Substituir..." name="Search / Replace..."/> + </menu> + <menu label="Ajuda" name="Help"> + <menu_item_call label="ajuda..." name="Help..."/> + <menu_item_call label="ajuda palavra- chave..." name="Keyword Help..."/> + </menu> + </menu_bar> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_side_tray.xml b/indra/newview/skins/default/xui/pt/panel_side_tray.xml new file mode 100644 index 0000000000..7892fc9e0c --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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" tab_title="Home"> + <panel label="casa" name="panel_home"/> + </sidetray_tab> + <sidetray_tab description="Encontre seus amigos, contatos e pessoas nas proximidades." name="sidebar_people" tab_title="People"> + <panel_container name="panel_container"> + <panel label="Info de grupo" name="panel_group_info_sidetray"/> + <panel label="Residentes& Objetos bloqueados" name="panel_block_list_sidetray"/> + </panel_container> + </sidetray_tab> + <sidetray_tab description="Encontre lugares para ir e lugares que você ja visitou." label="Lugares" name="sidebar_places" tab_title="Places"> + <panel label="Lugares" name="panel_places"/> + </sidetray_tab> + <sidetray_tab description="Editar seu perfil público e destaques ." name="sidebar_me" tab_title="My Profile"> + <panel label="Eu" name="panel_me"/> + </sidetray_tab> + <sidetray_tab description="Muda sua aparência e visual atual." name="sidebar_appearance" tab_title="My Appearance"> + <panel label="Editar aparência" name="sidepanel_appearance"/> + </sidetray_tab> + <sidetray_tab description="Busca no seu inventário." name="sidebar_inventory" tab_title="My Inventory"> + <panel label="Editar inventário" name="sidepanel_inventory"/> + </sidetray_tab> +</side_tray> diff --git a/indra/newview/skins/default/xui/pt/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/pt/panel_side_tray_tab_caption.xml new file mode 100644 index 0000000000..7c06119901 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Bandeja lateral"/> + <button name="show_help" tool_tip="Mostrar ajuda"/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_stand_stop_flying.xml b/indra/newview/skins/default/xui/pt/panel_stand_stop_flying.xml new file mode 100644 index 0000000000..05869cf67a --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Levantar-se" name="stand_btn" tool_tip="Clique aqui para ficar de pé."/> + <button label="Parar de voar" name="stop_fly_btn" tool_tip="Parar de voar"/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_status_bar.xml b/indra/newview/skins/default/xui/pt/panel_status_bar.xml index 7f3d2b34a6..9485915263 100644 --- a/indra/newview/skins/default/xui/pt/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/pt/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 do pedaço de terra em que você está. Clique Sobre a Terra para informações."> - Nome do pedaço de terra vai aqui - </text> - <text name="BalanceText" tool_tip="Saldo"> - Carregando... - </text> - <button label="" label_selected="" name="buycurrency" tool_tip="Comprar dinheiro"/> - <text name="TimeText" tool_tip="Hora atual (do Pacífico)"> - 12:00 AM - </text> - <string name="StatBarDaysOfWeek"> + <panel.string name="StatBarDaysOfWeek"> Domingo:Segunda-feira:Terça-feira:Quarta-feira:Quinta-feira:Sexta-feira:Sábado - </string> - <string name="StatBarMonthsOfYear"> + </panel.string> + <panel.string name="StatBarMonthsOfYear"> Janeiro:Fevereiro:Março:Abril:Maio:Junho:Julho:Agosto:Setembro:Outubro:Novembro:Dezembro - </string> - <button label="" label_selected="" name="scriptout" tool_tip="Erros e avisos do Script"/> - <button label="" label_selected="" name="health" tool_tip="Saúde"/> - <text name="HealthText" tool_tip="Saúde"> - 100% - </text> - <button label="" label_selected="" name="no_fly" tool_tip="Não é permitido Voar"/> - <button label="" label_selected="" name="no_build" tool_tip="Construir/Rezzar não permitido"/> - <button label="" label_selected="" name="no_scripts" tool_tip="Scripts não permitidos"/> - <button label="" label_selected="" name="restrictpush" tool_tip="Não Empurrar"/> - <button label="" label_selected="" name="status_no_voice" tool_tip="Voz não disponível aqui"/> - <button label="" label_selected="" name="buyland" tool_tip="Comprar este lote"/> - <line_editor label="Buscar" name="search_editor" tool_tip="Buscar no [SECOND_LIFE]"/> - <button label="" label_selected="" name="search_btn" tool_tip="Buscar no [SECOND_LIFE]"/> - <string name="packet_loss_tooltip"> + </panel.string> + <panel.string name="packet_loss_tooltip"> Perda de pacote - </string> - <string name="bandwidth_tooltip"> + </panel.string> + <panel.string name="bandwidth_tooltip"> 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="Meu saldo: Comprar mais L$"/> + <text name="TimeText" tool_tip="Hora atual (Pacífico)"> + 12:00 AM + </text> + <button name="volume_btn" tool_tip="Volume geral"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_teleport_history.xml b/indra/newview/skins/default/xui/pt/panel_teleport_history.xml new file mode 100644 index 0000000000..9dc5aed91e --- /dev/null +++ b/indra/newview/skins/default/xui/pt/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="Hoje"/> + <accordion_tab name="yesterday" title="Ontem"/> + <accordion_tab name="2_days_ago" title="2 dias atrás"/> + <accordion_tab name="3_days_ago" title="3 dias atrás"/> + <accordion_tab name="4_days_ago" title="4 dias atrás"/> + <accordion_tab name="5_days_ago" title="5 dias atrás"/> + <accordion_tab name="6_days_and_older" title="6 dias e mais velhos"/> + <accordion_tab name="1_month_and_older" title="1 mês e mais velhos"/> + <accordion_tab name="6_months_and_older" title="6 meses e mais velhos"/> + </accordion> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_world_map.xml b/indra/newview/skins/default/xui/pt/panel_world_map.xml index 2fda713ec7..584ef8a666 100644 --- a/indra/newview/skins/default/xui/pt/panel_world_map.xml +++ b/indra/newview/skins/default/xui/pt/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"> + Carregando... + </panel.string> + <panel.string name="InvalidLocation"> + Localização inválida + </panel.string> <panel.string name="world_map_north"> N </panel.string> diff --git a/indra/newview/skins/default/xui/pt/role_actions.xml b/indra/newview/skins/default/xui/pt/role_actions.xml index 8d192d4002..2e6e4dd133 100644 --- a/indra/newview/skins/default/xui/pt/role_actions.xml +++ b/indra/newview/skins/default/xui/pt/role_actions.xml @@ -1,186 +1,71 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <role_actions> - <action_set - description="Esta habilidades incluem poderes de adicionar ou remover membros do grupo e permitir que novos membros se juntem sem um convite." - name="Membership"> - <action description="Convidar pessoas para este grupo" - longdescription="Convide pessoas para este grupo usando o botão 'Convidar nova pessoa...' em Membros & aba Funções > sub-aba Membros." - name="member invite" /> - <action description="Expulsar membros deste grupo" - longdescription="Expulse membros deste grupo usando o botão 'Expulsar do grupo' em Membros & aba Funções > sub-aba Membros. Um proprietário pode expulsar qualquer um, exceto outro proprietário. Se você não é um proprietário, um membro pode expulsá-lo do grupo se, e somente se, ele apenas tiver a função de todos e não outras funções. Para remover membros de funções, você precisa ter a habilidade 'Remover membros de funções'." - name="member eject" /> - <action - description="Ativar/desativar 'Abrir registro' e mudar 'Taxa de assinatura'" - longdescription="Ative/desative 'Abrir registro' para permitir que novos membros se unam sem um convite, e mude a 'Taxa de registro' na seção Preferência de grupo da aba Geral." - name="member options" /> + <action_set description="Esta habilidades incluem poderes de adicionar ou remover membros do grupo e permitir que novos membros se juntem sem um convite." name="Membership"> + <action description="Convidar pessoas para este grupo" longdescription="Em Membros > Cargos, use o botão 'Convidar' para convidar pessoas para entrar no grupo." name="member invite"/> + <action description="Expulsar membros deste grupo" longdescription="Em Membros > Cargos, use o botão 'Ejetar' para tirar pessoas do grupo. Proprietários podem expulsar qualquer pessoa, menos outro proprietário. Se você não é Proprietário, um membro só pode ser expulso se tiver cargo 'Todos' e nenhum outro cargo. Para destituir um membro de seu cargo, você precisa ter a função 'Destituir membro com cargo'." name="member eject"/> + <action description="Alterna entre 'Inscrições abertas' e 'Taxa de associação'." longdescription="Ative 'Inscrições abertas' para que novos membros entrem no grupo sem convite, mude a 'Taxa de associação' na seção Geral." name="member options"/> </action_set> - <action_set - description="Estas habilidades incluem poderes de adicionar, remover e mudar funções do grupo; adicionar e remover membros em funções e designar habilidades a funções." - name="Roles"> - <action description="Criar novas funções" - longdescription="Crie novas funções em Membros & aba Funções > sub-aba Funções." - name="role create" /> - <action description="Apagar funções" - longdescription="Apague funções em Membros & aba Funções > sub-aba Funções." - name="role delete" /> - <action description="Mudar nomes de função, títulos e descrições" - longdescription="Mude o nome de funções, títulos e descrições na parte inferior de Membros & aba Funções > sub-aba Funções após selecionar uma função." - name="role properties" /> - <action description="Designar membros para a função do designador" - longdescription="Designe membros a funções na seção de funções designadas de Membros & aba Funções > sub-aba Membros. Um membro com este poder pode somente adicionar membros para a função que o designador já possui." - name="role assign member limited" /> - <action description="Designar membros para qualquer função" - longdescription="Designe membros a qualquer função na seção de funções designadas de Membros & aba Funções > sub-aba Membros. *AVISO* Quaisquer membros em uma função com esta habilidade podem designar a si próprios--e quaisquer outros membros não proprietários--para funções que têm mais poderes do que as atuais, elevando-os a poderes próximos ao do proprietário. Certifique-se de saber o que está fazendo antes de designar esta habilidade." - name="role assign member" /> - <action description="Remover membros das funções" - longdescription="Remova membros de funções na seção de funções designadas de Membros & aba Funções > sub-aba Membros. Proprietários não podem ser removidos." - name="role remove member" /> - <action description="Determinar e remover habilidades em funções" - longdescription="Designe e remova habilidades em funções na seção habilidades pertmitidas de Membros & aba Funções > sub-aba Funções. *AVISO* Quaisquer membros em uma função com esta habilidade podem desginar a si próprios--e quaisquer outros membros não proprietários--todas as habilidades, elevando-os a poderes próximos ao do proprietário. Certifique-se de saber o que está fazendo antes de designar esta habilidade." - name="role change actions" /> + <action_set description="Estas habilidades incluem poderes de adicionar, remover e mudar funções do grupo; adicionar e remover membros em funções e designar habilidades a funções." name="Roles"> + <action description="Criar novas funções" longdescription="Crie novos cargos na guia Cargos." name="role create"/> + <action description="Apagar funções" longdescription="Exclua cargos na guia Cargos." name="role delete"/> + <action description="Modificar o nome, título e a descrição de cargos, e se o acesso a essas informações é público ou não" longdescription="Modificar o nome, título e a descrição de cargos, e se o acesso a essas informações é público ou não. Essas configurações ficam na guia Cargos, depois da seleção do cargo." name="role properties"/> + <action description="Designar membros para a função do designador" longdescription="Na lista Cargos desempenhados, distribua os cargos aos membros (em Cargos > guia Membros). Membros exercendo esta função devem exercer um cargo para poder adicionar outros membros ao mesmo cargo." name="role assign member limited"/> + <action description="Designar membros para qualquer função" longdescription="Designe cargos aos membros na lista Cargos desempenhados (Cargos > guia Membros). *ATENÇÃO* Qualquer membro exercendo um cargo com esta função pode se designar -- ou designar outros membros não-proprietários -- a cargos com mais poder do que têm. Ou seja, membros com essa função podem assumir poderes quase iguais aos do proprietário. Pense bem antes de dar esta função a alguém." name="role assign member"/> + <action description="Remover membros das funções" longdescription="Use a lista Cargos desempenhados para destituir membros de seus cargos (Cargos > guia Membros). Proprietários não podem ser destituídos." name="role remove member"/> + <action description="Determinar e remover habilidades em funções" longdescription="Use a lista Funções autorizadas para adicionar e tirar as funções de cada cargo (Cargos > guia Cargos). *ATENÇÃO* Qualquer membro exercendo um cargo com esta função pode dar a sim mesmo -- ou a outros membros não-proprietários -- todas as funções. Membros excercendo todas as funções podem assumir poderes quase iguais aos do proprietário. Pense bem antes de dar esta função a alguém." name="role change actions"/> </action_set> - <action_set - description="Estas habilidade incluem poderes para modificar esta identidade de grupo, como mudar a visibilidade pública, apresentação e insígnia." - name="Group Identity"> - <action - description="Mudar apresentação, insígnia, 'Publicar na web', e quais membros estão publicamente visíveis em Informações do Grupo." - longdescription="Mude a apresentação, insígnia, 'Publicar na web' e quais membros estão publicamente visíveis em Informações do grupo. É feito na aba Geral." - name="group change identity" /> + <action_set description="Estas habilidade incluem poderes para modificar esta identidade de grupo, como mudar a visibilidade pública, apresentação e insígnia." name="Group Identity"> + <action description="Mudar apresentação, insígnia, 'Publicar na web', e quais membros estão publicamente visíveis em Informações do Grupo." longdescription="Modificar o estatuto, símbolo e exibição nos resultados de busca. Use a seção Geral." name="group change identity"/> </action_set> - <action_set - description="Estas habilidades incluem poderes para transferir, modificar e vender terrenos do grupo. Vá pra a janela Sobre o terreno, clique com o botão direito no terreno e selecione 'Sobre o terreno...' ou clique na informação da parcela na barra do menu." - name="Parcel Management"> - <action description="Transferir e comprar terreno para o grupo" - longdescription="Transfere e compre terreno para o grupo. É feito em Sobre o terreno > aba Geral." - name="land deed" /> - <action description="Abandonar terreno para Governador Linden" - longdescription="Abandone terreno para Governador Linden. *AVISO* Qualquer membro em uma função com esta habilidade pode abandonar o terreno pertencente ao grupo em Sobre o terreno > aba Geral, revertendo à posse Linden sem uma venda! Certifique-se de saber o que está fazendo antes de designar esta habilidade." - name="land release" /> - <action description="Definir terreno para informação de venda" - longdescription="Defina informações de venda para terreno. *AVISO* Qualquer membro em uma função com esta habilidade pode vender terrenos pertencentes ao grupo em Sobre o terreno > aba Geral como quiser! Certifique-se de sabe o que está fazendo antes de designar esta habilidade." - name="land set sale info" /> - <action description="Subdividir e unir parcelas" - longdescription="Subdivide and join parcels. This is done by right-clicking the ground, 'Edit Terrain', and dragging your mouse on the land to make a selection. To subdivide, select what you want to split and click 'Subdivide...'. To join, select two or more contiguous parcels and click 'Join...'. " - name="land divide join" /> + <action_set description="Estas funções incluem poderes de transferir, vender e modificar os terrenos do grupo. Para acessar a janela 'Sobre terrenos', clique no chão com o botão direito e selecione 'Sobre terrenos'. Ou clique no ícone 'i' da barra de navegação." name="Parcel Management"> + <action description="Transferir e comprar terreno para o grupo" longdescription="Transfere e compre terreno para o grupo. É feito em Sobre o terreno > aba Geral." name="land deed"/> + <action description="Abandonar terreno para Governador Linden" longdescription="Abandone terreno para Governador Linden. *AVISO* Qualquer membro em uma função com esta habilidade pode abandonar o terreno pertencente ao grupo em Sobre o terreno > aba Geral, revertendo à posse Linden sem uma venda! Certifique-se de saber o que está fazendo antes de designar esta habilidade." name="land release"/> + <action description="Definir terreno para informação de venda" longdescription="Defina informações de venda para terreno. *AVISO* Qualquer membro em uma função com esta habilidade pode vender terrenos pertencentes ao grupo em Sobre o terreno > aba Geral como quiser! Certifique-se de sabe o que está fazendo antes de designar esta habilidade." name="land set sale info"/> + <action description="Subdividir e unir parcelas" longdescription="Juntar ou dividir lotes. Clique no chão com o botão direito, selecione 'Editar terreno' e arraste o mouse sobre o terreno para ver as opções. Para dividir um terreno, selecione a área a ser dividida e clique em 'Dividir'. Para juntar terrenos, selecione dois ou mais lotes adjacentes e clique em 'Juntar'." name="land divide join"/> </action_set> - <action_set - description="Estas habilidades incluem poderes para mudar o nome da parcelas e configurações de publicação, visibilidade da busca de diretório e ponto de aterrissagem & opções de rota de TP." - name="Parcel Identity"> - <action - description="Ativar/desativar 'Exibir em locais de encontro' e definir categoria" - longdescription="Ativar/desativar 'Exibir em locais de encontro' e configurar uma categoria de parcela em Sobre o terreno > aba Opções." - name="land find places" /> - <action - description="Mudar nome da parcela, descrição, e configurações 'Publicar na web'" - longdescription="Mude o nome da parcela, descrição e configurações de 'Publicar na web'. É feito em Sobre o terreno > aba Opções." - name="land change identity" /> - <action description="Definir ponto de aterrissagem e rota de teletransporte" - longdescription="Em uma parcela pertencente ao grupo, membros em uma função com esta habilidade podem definir um ponto de aterrissagem para especificar onde os teletransportes chegam e também definir a rota do teletransporte para um maior controle. É feito em Sobre o terreno > aba Opções." - name="land set landing point" /> + <action_set description="Estas habilidades incluem poderes para mudar o nome da parcelas e configurações de publicação, visibilidade da busca de diretório e ponto de aterrissagem & opções de rota de TP." name="Parcel Identity"> + <action description="Alternar 'Exibir nos resultados de busca' e selecionar a categoria" longdescription="Alterne entre 'Exibir nos resultados de busca' ou não, e selecione a categoria do terreno em 'Sobre o terreno'." name="land find places"/> + <action description="Mude o nome, a descrição e a exibição do terreno nos resultados de busca." longdescription="Mude o nome, a descrição e a exibição do terreno nos resultados de busca. Veja essas opções em Sobre o terreno > guia Opções." name="land change identity"/> + <action description="Definir ponto de aterrissagem e rota de teletransporte" longdescription="Em uma parcela pertencente ao grupo, membros em uma função com esta habilidade podem definir um ponto de aterrissagem para especificar onde os teletransportes chegam e também definir a rota do teletransporte para um maior controle. É feito em Sobre o terreno > aba Opções." name="land set landing point"/> </action_set> - <action_set - description="Estas habilidade incluem poderes que afetam opções de parcela, como 'Criar objetos', 'Editar terreno' e música & configurações de mídia." - name="Parcel Settings"> - <action description="Mudar música & configurações de mídia" - longdescription="Mude streaming de música e configurações de vídeo em Sobre o terreno > aba Mídia." - name="land change media" /> - <action description="Ativar/desativar 'Editar terreno'" - longdescription="Ative/desative 'Editar terreno'. *AVISO* Sobre o terreno > aba Opções > Editar terreno permite a qualquer um alterar as formas de seu terreno, substituir e mover plantas Linden. Certifique-se de saber o que está fazendo antes de desginar esta habilidade. A edição de terreno é ativada/desativada em Sobre o terreno > aba Opções." - name="land edit" /> - <action - description="Ativar/desativar variados Sobre o Terreno > Opções de configuração" - longdescription="Ative/desative 'Seguro (sem dano)', 'Voar', e permita a outros residentes: 'Criar objetos', 'Editar terreno', 'Criar pontos de referência', e 'Executar scripts' em um terreno pertencente ao grupo em Sobre o terreno > aba Opções." - name="land options" /> + <action_set description="Estas habilidade incluem poderes que afetam opções de parcela, como 'Criar objetos', 'Editar terreno' e música & configurações de mídia." name="Parcel Settings"> + <action description="Mudar música & configurações de mídia" longdescription="Mude streaming de música e configurações de vídeo em Sobre o terreno > aba Mídia." name="land change media"/> + <action description="Ativar/desativar 'Editar terreno'" longdescription="Ative/desative 'Editar terreno'. *AVISO* Sobre o terreno > aba Opções > Editar terreno permite a qualquer um alterar as formas de seu terreno, substituir e mover plantas Linden. Certifique-se de saber o que está fazendo antes de desginar esta habilidade. A edição de terreno é ativada/desativada em Sobre o terreno > aba Opções." name="land edit"/> + <action description="Ativar/desativar variados Sobre o Terreno > Opções de configuração" longdescription="Alterna as opções 'Seguro (zero danos)', 'Voar' e autorizar outros residentes a: 'Editar terreno', 'Contruir', 'Criar marcos' e 'Executar scripts' nos terrenos do grupo. Clique em Sobre o terreno > guia Opções." name="land options"/> </action_set> - <action_set - description="Estas habilidades incluem poderes que permitem a membros ultrapassar restrições em parcelas pertencentes ao grupo." - name="Parcel Powers"> - <action description="Sempre permitir 'Editar terreno'" - longdescription="Membros em uma função com esta habilidade podem editar terreno em uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno > aba Opções." - name="land allow edit land" /> - <action description="Sempre permitir 'Voar'" - longdescription="Membros em uma função com esta habilidade podem voar sobre uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno > aba Opções." - name="land allow fly" /> - <action description="Sempre permitir 'Criar objetos'" - longdescription="Membros em uma função com esta habilidade podem criar objetos em uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno > aba Opções." - name="land allow create" /> - <action description="Sempre permitir 'Criar ponto de referência'" - longdescription="Membros em uma função com esta habilidade podem colocar um ponto de referência uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno > aba Opções." - name="land allow landmark" /> - <action description="Permitir 'Colocar casa aqui' no terreno do grupo" - longdescription="Membros em uma função com esta habilidade podem usar o menu Mundo > Definir lar aqui em uma parcela do grupo (definir terreno ou transferir para este grupo)." - name="land allow set home" /> + <action_set description="Estas habilidades incluem poderes que permitem a membros ultrapassar restrições em parcelas pertencentes ao grupo." name="Parcel Powers"> + <action description="Sempre permitir 'Editar terreno'" longdescription="Membros em uma função com esta habilidade podem editar terreno em uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno > aba Opções." name="land allow edit land"/> + <action description="Sempre permitir 'Voar'" longdescription="Membros em uma função com esta habilidade podem voar sobre uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno > aba Opções." name="land allow fly"/> + <action description="Sempre permitir 'Criar objetos'" longdescription="Membros em uma função com esta habilidade podem criar objetos em uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno > aba Opções." name="land allow create"/> + <action description="Sempre permitir 'Criar ponto de referência'" longdescription="Membros em uma função com esta habilidade podem colocar um ponto de referência uma parcela pertencente ao grupo, mesmo se estiver desativada em Sobre o terreno > aba Opções." name="land allow landmark"/> + <action description="Permitir 'Colocar casa aqui' no terreno do grupo" longdescription="Membros exercendo cargos com esta função podem selecionar no menu Mundo > Marcos > Definir como casa em lotes doados ao grupo." name="land allow set home"/> </action_set> - <action_set - description="Estas habilidades incluem poderes de permitir ou restringir acesso a parcelas pertencentes ao grupo, incluindo congelar e expulsar residentes." - name="Parcel Access"> - <action description="Gerenciar listas de acesso à parcela" - longdescription="Gerencie a lista de acesso à parcela em Sobre o terreno > aba Acesso." - name="land manage allowed" /> - <action description="Gerenciar lista de banidos da parcela" - longdescription="Gerencie a lista de banidos da parcela em Sobre o terreno > aba Banido." - name="land manage banned" /> - <action description="Mudar configurações de parcela 'Vender passes...'" - longdescription="Mude configurações de 'Vender passes...' em Sobre o terreno > aba Acesso." - name="land manage passes" /> - <action description="Expulsar e congelar residentes nas parcelas" - longdescription="Membros em uma função com esta habilidade podem lidar com um residente indesejado em uma parcela pertencente ao grupo clicando com o botão direitos sobre ele, Mais > e selecionado 'Expulsar...' ou 'Congelar...'." - name="land admin" /> + <action_set description="Estas habilidades incluem poderes de permitir ou restringir acesso a parcelas pertencentes ao grupo, incluindo congelar e expulsar residentes." name="Parcel Access"> + <action description="Gerenciar listas de acesso à parcela" longdescription="Gerencie a lista de acesso à parcela em Sobre o terreno > aba Acesso." name="land manage allowed"/> + <action description="Gerenciar lista de banidos da parcela" longdescription="Administre as listas de acesso e bloqueio em Sobre o terreno > guia Acesso." name="land manage banned"/> + <action description="Modificar as opções 'Vender passes para'" longdescription="Mude as opções 'Vender passes para' em Sobre o terreno > guia Acesso." name="land manage passes"/> + <action description="Expulsar e congelar residentes nas parcelas" longdescription="Membros exercendo cargos com esta função podem lidar com residentes problemáticos nos terrenos do grupo. Clique no residente com o botão direito, depois selecione 'Ejetar' ou 'Congelar'." name="land admin"/> </action_set> - <action_set - description="Estas habilidades incluem poderes de permitir a membros retornar objetos e colocar e mover plantas Linden. Útil para que membros organizem a paisagem, porém deve ser usado com cuidado, devido a não ser possível desfazer a mudança dos objetos." - name="Parcel Content"> - <action description="Retornar objetos que pertencem ao grupo" - longdescription="Retorne objetos em parcelas pertencentes ao grupo que pertencem ao grupo em Sobre o terreno > aba Objetos." - name="land return group owned" /> - <action description="Retornar objetos definidos para o grupo" - longdescription="Retorne objetos em parcelas pertencentes ao grupo que em Sobre o terrreno > aba Objetos." - name="land return group set" /> - <action description="Retornar objetos que não pertencem ao grupo" - longdescription="Retorne objetos nas parcelas pertencentes a um grupo que estão sem grupo em em Sobre o terreno > aba Objetos." - name="land return non group" /> - <action description="Ajardinar usando plantas Linden" - longdescription="A habilidade de ajardinar permite colocar e mover árvores Linden, plantas e gramas. Estes itens podem ser encontrando na Biblioteca de seu inventário > pasta Objetos ou podem ser criados através do botão Construir." - name="land gardening" /> + <action_set description="Estas habilidades incluem poderes de permitir a membros retornar objetos e colocar e mover plantas Linden. Útil para que membros organizem a paisagem, porém deve ser usado com cuidado, devido a não ser possível desfazer a mudança dos objetos." name="Parcel Content"> + <action description="Retornar objetos que pertencem ao grupo" longdescription="Retorne objetos em parcelas pertencentes ao grupo que pertencem ao grupo em Sobre o terreno > aba Objetos." name="land return group owned"/> + <action description="Retornar objetos definidos para o grupo" longdescription="Retorne objetos em parcelas pertencentes ao grupo que em Sobre o terrreno > aba Objetos." name="land return group set"/> + <action description="Retornar objetos que não pertencem ao grupo" longdescription="Retorne objetos nas parcelas pertencentes a um grupo que estão sem grupo em em Sobre o terreno > aba Objetos." name="land return non group"/> + <action description="Ajardinar usando plantas Linden" longdescription="Função de paisagismo: poder de plantar e mudar árvores, plantas e grama Linden. A pasta Biblioteca > Objetos do inventário contém material de paisagismo. Use o menu Construir para criar suas próprias plantas." name="land gardening"/> </action_set> - <action_set - description="These Abilities include powers to deed, modify, and sell group-owned objects. These changes are done in the Edit Tools > General Tab. Right-click an object and Edit to see its settings. " - name="Object Management"> - <action description="Transferir objetos para o grupo" - longdescription="Transfere objetos para o grupo em Editar ferramentas > aba Geral." - name="object deed" /> - <action description="Manipular (mover, copiar, modificar) objetos do grupo" - longdescription="Manipule (mover,copiar, modificar) objetos pertencentes ao grupo em Editar Ferramentas > aba Geral." - name="object manipulate" /> - <action description="Definir objetos pertencentes ao grupo para venda" - longdescription="Defina objetos pertencentes ao grupo para venda em Editar Ferramentas > aba Geral." - name="object set sale" /> + <action_set description="Estas funções incluem poderes de transferir, vender e modificar os objetos do grupo. Essas opções ficam nas Ferramentas de contrução > guia Geral. Clique em um objeto com o botão direito e selecione Editar para ver as configurações do objeto." name="Object Management"> + <action description="Transferir objetos para o grupo" longdescription="Transfira objetos para o grupo em Ferramentas de construção > guia Geral." name="object deed"/> + <action description="Manipular (mover, copiar, modificar) objetos do grupo" longdescription="Manipule (transportar, copiar, modificar) objetos do grupo nas Ferramentas de construção > guia Geral." name="object manipulate"/> + <action description="Definir objetos pertencentes ao grupo para venda" longdescription="Ponha objetos do grupo à venda nas Ferramentas de construção > guia Geral." name="object set sale"/> </action_set> - <action_set - description="Estas habilidades incluem poderes que requerem que membros paguem dívidas e recebam dividendos do grupo, e restringem acesso ao histórico de conta do grupo." - name="Accounting"> - <action description="Pagar débitos e receber dividendos do grupo" - longdescription="Members in a Role with this Ability will automatically pay group liabilities and receive group dividends. This means they will receive a portion of group-owned land sales which are distributed daily, as well as contribute towards things like parcel listing fees. " - name="accounting accountable" /> + <action_set description="Estas habilidades incluem poderes que requerem que membros paguem dívidas e recebam dividendos do grupo, e restringem acesso ao histórico de conta do grupo." name="Accounting"> + <action description="Pagar débitos e receber dividendos do grupo" longdescription="Members in a Role with this Ability will automatically pay group liabilities and receive group dividends. This means they will receive a portion of group-owned land sales which are distributed daily, as well as contribute towards things like parcel listing fees. " name="accounting accountable"/> </action_set> - <action_set - description="Estas habilidade incluem poderes de permitir enviar, receber e ver avisos de grupo." - name="Notices"> - <action description="Enviar aviso" - longdescription="Membros em uma função com esta habiliade podem enviar avisos em Informações de grupo > aba Avisos." - name="notices send" /> - <action description="Receber novos avisos e ver os anteriores" - longdescription="Membros em uma função com esta habilidade podem receber os novos avisos e ver os anteriores em Informações de grupo > aba Avisos." - name="notices receive" /> + <action_set description="Estas habilidade incluem poderes de permitir enviar, receber e ver avisos de grupo." name="Notices"> + <action description="Enviar aviso" longdescription="Membros que exercem cargos com esta função podem enviar avisos na seção Avisos." name="notices send"/> + <action description="Receber novos avisos e ver os anteriores" longdescription="Membros que exercem cargos com esta função podem receber e ler avisos antigos na seção Avisos." name="notices receive"/> </action_set> - <action_set - description="Estas habilidades incluem poderes de permitir a membros definir e votar em propostas e ver histórico de votação." - name="Proposals"> - <action description="Criar proposta" - longdescription="Membros em uma função com esta habilidade podem criar proposta para serem votadas em Informações de grupo > aba Propostas." - name="proposal start" /> - <action description="Votar em propostas" - longdescription="Membros em uma função com esta habilidade podem votar em propostas em Informações de grupo > aba Propostas." - name="proposal vote" /> + <action_set description="Estas habilidades incluem poderes de permitir a membros definir e votar em propostas e ver histórico de votação." name="Proposals"> + <action description="Criar proposta" longdescription="Membros em uma função com esta habilidade podem criar proposta para serem votadas em Informações de grupo > aba Propostas." name="proposal start"/> + <action description="Votar em propostas" longdescription="Membros em uma função com esta habilidade podem votar em propostas em Informações de grupo > aba Propostas." name="proposal vote"/> </action_set> </role_actions> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml b/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml new file mode 100644 index 0000000000..73ec6fb068 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/sidepanel_appearance.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Looks" name="appearance panel"> + <string name="No Outfit" value="Nenhum"/> + <filter_editor label="Filtrar looks" name="Filter"/> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/> + <button name="newlook_btn" tool_tip="Novo look"/> + <dnd_button name="trash_btn" tool_tip="Remover item selecionado"/> + <button label="Vestir" name="wear_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml new file mode 100644 index 0000000000..75b737b8bd --- /dev/null +++ b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Coisas" name="objects panel"> + <panel label="" name="sidepanel__inventory_panel"> + <panel name="button_panel"> + <button label="Perfil" name="info_btn"/> + <button label="Vestir" name="wear_btn"/> + <button label="Tocar" name="play_btn"/> + <button label="Teletransportar" name="teleport_btn"/> + </panel> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml new file mode 100644 index 0000000000..556c631bf7 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="item properties" title="Propriedaded do item de inventário"> + <panel.string name="unknown"> + (desconhecido) + </panel.string> + <panel.string name="public"> + (público) + </panel.string> + <panel.string name="you_can"> + você pode: + </panel.string> + <panel.string name="owner_can"> + Proprietário pode: + </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="Propriedade do item"/> + <panel label=""> + <text name="LabelItemNameTitle"> + Nome: + </text> + <text name="LabelItemDescTitle"> + Descrição: + </text> + <text name="LabelCreatorTitle"> + Criador: + </text> + <button label="Perfil..." name="BtnCreator"/> + <text name="LabelOwnerTitle"> + Proprietário: + </text> + <button label="Perfil..." name="BtnOwner"/> + <text name="LabelAcquiredTitle"> + Adquirido: + </text> + <text name="LabelAcquiredDate"> + Quarta 24 de Maio 12:50:46 2006 + </text> + <text name="OwnerLabel"> + Você: + </text> + <check_box label="Editar" name="CheckOwnerModify"/> + <check_box label="Copiar" name="CheckOwnerCopy"/> + <check_box label="Revender" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Qualquer um: + </text> + <check_box label="Copiar" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Grupo: + </text> + <check_box label="Compartilhar" name="CheckShareWithGroup"/> + <text name="NextOwnerLabel"> + Próximo proprietário: + </text> + <check_box label="Editar" name="CheckNextOwnerModify"/> + <check_box label="Copiar" name="CheckNextOwnerCopy"/> + <check_box label="Revender" name="CheckNextOwnerTransfer"/> + <check_box label="À venda" name="CheckPurchase"/> + <combo_box name="combobox sale copy"> + <combo_box.item label="Copiar" name="Copy"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Preço:" name="Edit Cost"/> + <text name="CurrencySymbol"> + L$ + </text> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml new file mode 100644 index 0000000000..3ae728e69d --- /dev/null +++ b/indra/newview/skins/default/xui/pt/sidepanel_task_info.xml @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel name="object properties" title="Propriedades do objeto"> + <panel.string name="text deed continued"> + Doar + </panel.string> + <panel.string name="text deed"> + Doar + </panel.string> + <panel.string name="text modify info 1"> + Você pode modificar este objeto + </panel.string> + <panel.string name="text modify info 2"> + Você pode modificar estes objetos + </panel.string> + <panel.string name="text modify info 3"> + Você não pode modificar este objeto + </panel.string> + <panel.string name="text modify info 4"> + Você não pode modificar estes objetos + </panel.string> + <panel.string name="text modify warning"> + O objeto contém links ligando suas partes + </panel.string> + <panel.string name="Cost Default"> + Preço: L$ + </panel.string> + <panel.string name="Cost Total"> + Preço total: L$ + </panel.string> + <panel.string name="Cost Per Unit"> + Preço unitário: L$ + </panel.string> + <panel.string name="Cost Mixed"> + Preço misto + </panel.string> + <panel.string name="Sale Mixed"> + Venda mista + </panel.string> + <panel label=""> + <text name="Name:"> + Nome: + </text> + <text name="Description:"> + Descrição: + </text> + <text name="Creator:"> + Criador: + </text> + <text name="Owner:"> + Proprietário: + </text> + <text name="Group:"> + Grupo: + </text> + <button name="button set group" tool_tip="Selecione o grupo que terá acesso à autorização do objeto"/> + <name_box initial_value="Carregando..." name="Group Name Proxy"/> + <button label="Doar" label_selected="Doar" name="button deed" tool_tip="Ao doar este item, o próximo dono terá permissões de próximo dono. Objetos de grupos podem ser doados por um oficial do grupo."/> + <check_box label="Compartilhar" name="checkbox share with group" tool_tip="Permitir que todos os membros do grupo tenhas suas permissões de modificação para este objeto. Faça uma doação para ativar restrições de função."/> + <text name="label click action"> + Clique para: + </text> + <combo_box name="clickaction"> + <combo_box.item label="Tocar (padrão)" name="Touch/grab(default)"/> + <combo_box.item label="Sentar em objeto" name="Sitonobject"/> + <combo_box.item label="Comprar objeto" name="Buyobject"/> + <combo_box.item label="Pagar por objeto" name="Payobject"/> + <combo_box.item label="Abrir" name="Open"/> + </combo_box> + <check_box label="À venda" name="checkbox for sale"/> + <combo_box name="sale type"> + <combo_box.item label="Copiar" name="Copy"/> + <combo_box.item label="Conteúdo" name="Contents"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Preço: L$" name="Edit Cost"/> + <check_box label="Mostrar nos resultados de busca" name="search_check" tool_tip="Incluir o objeto nos resultados de busca"/> + <panel name="perms_build"> + <text name="perm_modify"> + Você pode modificar este objeto + </text> + <text name="Anyone can:"> + Todos: + </text> + <check_box label="Movimentar" name="checkbox allow everyone move"/> + <check_box label="Copiar" name="checkbox allow everyone copy"/> + <text name="Next owner can:"> + Próximo proprietário: + </text> + <check_box label="Modificar" name="checkbox next owner can modify"/> + <check_box label="Copiar" name="checkbox next owner can copy"/> + <check_box label="Transferir" name="checkbox next owner can transfer" tool_tip="O próximo dono poderá revender ou dar este objeto"/> + <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="Abrir" name="open_btn"/> + <button label="Pagar" name="pay_btn"/> + <button label="Comprar" name="buy_btn"/> + <button label="Cancelar" name="cancel_btn"/> + <button label="Salvar" name="save_btn"/> + </panel> +</panel> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index 9acfce99dd..0e2a8a88f1 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -4,10 +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="create_account_url">http://join.secondlife.com/index.php?lang=pt-BR</string> + <string name="SUPPORT_SITE"> + Portal de Apoio do Second Life + </string> + <string name="StartupDetectingHardware"> + Detectando hardware... + </string> + <string name="StartupLoading"> + Carregando + </string> <string name="LoginInProgress"> Fazendo Login. [APP_NAME] pode parecer congelado. Por favor, aguarde. </string> + <string name="LoginInProgressNoFrozen"> + Logando... + </string> <string name="LoginAuthenticating"> Autenticando </string> @@ -26,8 +37,11 @@ <string name="LoginInitializingMultimedia"> Inicializando multimídia... </string> + <string name="LoginInitializingFonts"> + Carregando fontes... + </string> <string name="LoginVerifyingCache"> - Verificando arquivos no cache (pode levar 60-90 segundos)... + Verificando arquivos cache (pode levar de 60-90 segundos)... </string> <string name="LoginProcessingResponse"> Processando Resposta... @@ -56,6 +70,15 @@ <string name="LoginDownloadingClothing"> Baixando roupas... </string> + <string name="LoginFailedNoNetwork"> + Erro de Rede: Não foi possível estabelecer a conexão, verifique sua conexão de rede. + </string> + <string name="Quit"> + Sair + </string> + <string name="create_account_url"> + http://join.secondlife.com/index.php?lang=pt-BR + </string> <string name="AgentLostConnection"> Esta região pode estar passando por problemas. Por favor, verifique sua conexão com a internet. </string> @@ -74,39 +97,9 @@ <string name="TooltipIsGroup"> (Grupo) </string> - <string name="TooltipFlagScript"> - Script - </string> - <string name="TooltipFlagPhysics"> - Física - </string> - <string name="TooltipFlagTouch"> - Toque - </string> - <string name="TooltipFlagL$"> - L$ - </string> - <string name="TooltipFlagDropInventory"> - Dar Inventário - </string> - <string name="TooltipFlagPhantom"> - Imaterial - </string> - <string name="TooltipFlagTemporary"> - Temporário - </string> - <string name="TooltipFlagRightClickMenu"> - (Clique com o botão direito para acessar o menu) - </string> - <string name="TooltipFreeToCopy"> - Cópia Permitida - </string> <string name="TooltipForSaleL$"> À venda: L$[AMOUNT] </string> - <string name="TooltipForSaleMsg"> - À venda: [MESSAGE] - </string> <string name="TooltipFlagGroupBuild"> Construído por Grupo </string> @@ -134,6 +127,76 @@ <string name="TooltipMustSingleDrop"> Apenas um item único pode ser arrastado para este local </string> + <string name="TooltipHttpUrl"> + Clique para ver essa página web + </string> + <string name="TooltipSLURL"> + Clique para ver a informação desta localização + </string> + <string name="TooltipAgentUrl"> + Clique para ver o perfil deste residente + </string> + <string name="TooltipGroupUrl"> + Clique para ver a descrição deste Grupo + </string> + <string name="TooltipEventUrl"> + Clique para ver a descrição deste evento + </string> + <string name="TooltipClassifiedUrl"> + Clique para ver este classificado + </string> + <string name="TooltipParcelUrl"> + Clique para ver a descrição desta parcela + </string> + <string name="TooltipTeleportUrl"> + Clique para teletransportar para esta localização + </string> + <string name="TooltipObjectIMUrl"> + Clique para ver a descrição deste objeto + </string> + <string name="TooltipMapUrl"> + Clique para ver esta localização no mapa + </string> + <string name="TooltipSLAPP"> + Clique para ativar no secondlife:// commando + </string> + <string name="CurrentURL" value="URL atual: [CurrentURL]"/> + <string name="SLurlLabelTeleport"> + Teletransportar para + </string> + <string name="SLurlLabelShowOnMap"> + Mostrar no mapa para + </string> + <string name="BUTTON_CLOSE_DARWIN"> + Fechar (⌘W) + </string> + <string name="BUTTON_CLOSE_WIN"> + Fechar (Ctrl+W) + </string> + <string name="BUTTON_RESTORE"> + Restaurar + </string> + <string name="BUTTON_MINIMIZE"> + Minimizar + </string> + <string name="BUTTON_TEAR_OFF"> + Separar-se da janela + </string> + <string name="BUTTON_DOCK"> + conectar-se à barra + </string> + <string name="BUTTON_UNDOCK"> + desconectar-se da barra + </string> + <string name="BUTTON_HELP"> + Mostrar ajuda + </string> + <string name="Searching"> + Buscando... + </string> + <string name="NoneFound"> + Não encontrado. + </string> <string name="RetrievingData"> Buscando... </string> @@ -188,8 +251,77 @@ <string name="AssetErrorUnknownStatus"> Status desconhecido </string> - <string name="AvatarEditingApparance"> - (Editando Aparência) + <string name="texture"> + textura + </string> + <string name="sound"> + som + </string> + <string name="calling card"> + cartão de visitas + </string> + <string name="landmark"> + landmark + </string> + <string name="legacy script"> + script obsoleto + </string> + <string name="clothing"> + roupas + </string> + <string name="object"> + objeto + </string> + <string name="note card"> + notecard + </string> + <string name="folder"> + pasta + </string> + <string name="root"> + raiz + </string> + <string name="lsl2 script"> + script LSL2 + </string> + <string name="lsl bytecode"> + bytecode LSL + </string> + <string name="tga texture"> + textura tga + </string> + <string name="body part"> + parte do corpo + </string> + <string name="snapshot"> + fotografia + </string> + <string name="lost and found"> + Achados e Perdidos + </string> + <string name="targa image"> + imagem targa + </string> + <string name="trash"> + Lixo + </string> + <string name="jpeg image"> + imagem jpeg + </string> + <string name="animation"> + animação + </string> + <string name="gesture"> + gesto + </string> + <string name="simstate"> + simstate + </string> + <string name="favorite"> + favorito + </string> + <string name="symbolic link"> + link </string> <string name="AvatarAway"> Distante @@ -411,7 +543,19 @@ Carregando... </string> <string name="worldmap_offline"> - Desconectado + Offline + </string> + <string name="worldmap_results_none_found"> + Nenhum encontrado. + </string> + <string name="Ok"> + OK + </string> + <string name="Premature end of file"> + término prematuro do arquivo + </string> + <string name="ST_NO_JOINT"> + Não é possível encontrar a raiz (ROOT) ou junção (JOINT). </string> <string name="whisper"> sussurra: @@ -419,6 +563,57 @@ <string name="shout"> grita: </string> + <string name="ringing"> + Conectando à conversa de Voz no mundo + </string> + <string name="connected"> + Conectado + </string> + <string name="unavailable"> + Voz não disponível na sua localização atual + </string> + <string name="hang_up"> + Desconectado da conversa de Voz no mundo + </string> + <string name="ScriptQuestionCautionChatGranted"> + '[OBJECTNAME]', um objeto de '[OWNERNAME]', localizado em [REGIONNAME] a [REGIONPOS], obteve permissão para: [PERMISSIONS]. + </string> + <string name="ScriptQuestionCautionChatDenied"> + '[OBJECTNAME]', um objeto de '[OWNERNAME]', localizado em [REGIONNAME] a [REGIONPOS], teve permissão negada para: [PERMISSIONS]. + </string> + <string name="ScriptTakeMoney"> + Tomar linden dólares (L$) de você + </string> + <string name="ActOnControlInputs"> + Atue nas suas entradas de controle + </string> + <string name="RemapControlInputs"> + Remapeie suas entradas de controle + </string> + <string name="AnimateYourAvatar"> + Faça uma animação para o seu avatar + </string> + <string name="AttachToYourAvatar"> + Anexe ao seu avatar + </string> + <string name="ReleaseOwnership"> + Libere a propriedade e torne-a pública + </string> + <string name="LinkAndDelink"> + Una e desuna de outros objetos + </string> + <string name="AddAndRemoveJoints"> + Adicione e remova junções com outros objetos + </string> + <string name="ChangePermissions"> + Modifique as permissões + </string> + <string name="TrackYourCamera"> + Acompanhe sua câmera + </string> + <string name="ControlYourCamera"> + Controle sua camera + </string> <string name="SIM_ACCESS_PG"> PG </string> @@ -437,8 +632,6 @@ <string name="land_type_unknown"> (desconhecido) </string> - <string name="covenant_never_modified">Última modificação: (nunca)</string> - <string name="covenant_modified">Última modificação: </string> <string name="all_files"> Todos os Arquivos </string> @@ -484,17 +677,739 @@ <string name="choose_the_directory"> Escolher Diretório </string> + <string name="AvatarSetNotAway"> + deixar como não away + </string> + <string name="AvatarSetAway"> + deixar como Away + </string> + <string name="AvatarSetNotBusy"> + deixar como não Ocupado + </string> + <string name="AvatarSetBusy"> + Deixar como Busy + </string> + <string name="shape"> + Silhueta + </string> + <string name="skin"> + Pele + </string> + <string name="hair"> + Cabelo + </string> + <string name="eyes"> + Olhos + </string> + <string name="shirt"> + Camisa + </string> + <string name="pants"> + calças + </string> + <string name="shoes"> + Sapatos + </string> + <string name="socks"> + Meias + </string> + <string name="jacket"> + Blusa + </string> + <string name="gloves"> + Luvas + </string> + <string name="undershirt"> + camiseta + </string> + <string name="underpants"> + roupa debaixo + </string> + <string name="skirt"> + saia + </string> + <string name="alpha"> + Alpha + </string> + <string name="tattoo"> + Tattoo + </string> + <string name="invalid"> + inválido + </string> + <string name="next"> + Próximo + </string> + <string name="ok"> + OK + </string> + <string name="GroupNotifyGroupNotice"> + Anúncio de grupo + </string> + <string name="GroupNotifyGroupNotices"> + Anúncios do grupo + </string> + <string name="GroupNotifySentBy"> + Enviado por + </string> + <string name="GroupNotifyAttached"> + Anexo: + </string> + <string name="GroupNotifyViewPastNotices"> + Ver últimos anúncios ou optar por não receber essas mensagens aqui. + </string> + <string name="GroupNotifyOpenAttachment"> + Abrir anexo + </string> + <string name="GroupNotifySaveAttachment"> + Salvar anexo + </string> + <string name="TeleportOffer"> + Oferta de teletransporte + </string> + <string name="StartUpNotification"> + [%d] nova notificação chegou enquanto você estava fora... + </string> + <string name="StartUpNotifications"> + [%d] Novas notificações chegaram enquanto você estava fora... + </string> + <string name="OverflowInfoChannelString"> + Você tem mais [%d] notificações + </string> + <string name="BodyPartsRightArm"> + Braço direito + </string> + <string name="BodyPartsHead"> + Cabeça + </string> + <string name="BodyPartsLeftArm"> + Braço esquerdo + </string> + <string name="BodyPartsLeftLeg"> + Perna esquerda + </string> + <string name="BodyPartsTorso"> + Tronco + </string> + <string name="BodyPartsRightLeg"> + Perna direita + </string> + <string name="GraphicsQualityLow"> + Baixo + </string> + <string name="GraphicsQualityMid"> + Meio + </string> + <string name="GraphicsQualityHigh"> + Alto + </string> + <string name="LeaveMouselook"> + Pressione ESC para retornar para visão do mundo + </string> + <string name="InventoryNoMatchingItems"> + Nenhum item correspondente encontrado no inventário. + </string> + <string name="InventoryNoTexture"> + Você não possui uma cópia desta textura no seu inventário + </string> + <string name="no_transfer" value="(não transferível)"/> + <string name="no_modify" value="(não modificável)"/> + <string name="no_copy" value="(não copiável)"/> + <string name="worn" value="(vestido)"/> + <string name="link" value="(link)"/> + <string name="broken_link" value="(link_quebrado)""/> + <string name="LoadingContents"> + Carregando conteúdo... + </string> + <string name="NoContents"> + Nenhum conteúdo + </string> + <string name="WornOnAttachmentPoint" value="(vestido em [ATTACHMENT_POINT])"/> + <string name="Chat" value="Bate papo :"/> + <string name="Sound" value="Som :"/> + <string name="Wait" value="--- Aguarde :"/> + <string name="AnimFlagStop" value="Parar animação :"/> + <string name="AnimFlagStart" value="Iniciar animação :"/> + <string name="Wave" value="Aceno"/> + <string name="HelloAvatar" value="Olá, avatar!"/> + <string name="ViewAllGestures" value="Ver tudo >>"/> + <string name="Animations" value="Animações,"/> + <string name="Calling Cards" value="Cartões de visitas,"/> + <string name="Clothing" value="Vestuário,"/> + <string name="Gestures" value="Gestos,"/> + <string name="Landmarks" value="Landmarks,"/> + <string name="Notecards" value="Notecards,"/> + <string name="Objects" value="Objetos,"/> + <string name="Scripts" value="Scripts,"/> + <string name="Sounds" value="Sons,"/> + <string name="Textures" value="Texturas,"/> + <string name="Snapshots" value="Fotografias,"/> + <string name="No Filters" value="Não"/> + <string name="Since Logoff" value="- desde desligado"/> + <string name="InvFolder My Inventory"> + Meu Inventorio + </string> + <string name="InvFolder My Favorites"> + Meus Favoritos + </string> + <string name="InvFolder Library"> + Biblioteca + </string> + <string name="InvFolder Textures"> + Texturas + </string> + <string name="InvFolder Sounds"> + Sons + </string> + <string name="InvFolder Calling Cards"> + Cartões de Visitas + </string> + <string name="InvFolder Landmarks"> + Landmarks + </string> + <string name="InvFolder Scripts"> + Scripts + </string> + <string name="InvFolder Clothing"> + Vestuário + </string> + <string name="InvFolder Objects"> + Objetos + </string> + <string name="InvFolder Notecards"> + Notecards + </string> + <string name="InvFolder New Folder"> + Nova Pasta + </string> + <string name="InvFolder Inventory"> + Inventário + </string> + <string name="InvFolder Uncompressed Images"> + Imagens Descompactadas + </string> + <string name="InvFolder Body Parts"> + Partes do Corpo + </string> + <string name="InvFolder Trash"> + Lixo + </string> + <string name="InvFolder Photo Album"> + Álbum de Fotografias + </string> + <string name="InvFolder Lost And Found"> + Achados e Perdidos + </string> + <string name="InvFolder Uncompressed Sounds"> + Sons Descompactados + </string> + <string name="InvFolder Animations"> + Animações + </string> + <string name="InvFolder Gestures"> + Gestos + </string> + <string name="InvFolder favorite"> + Favoritos + </string> + <string name="InvFolder Current Outfit"> + Vestimanta Atual + </string> + <string name="InvFolder My Outfits"> + Minhas Vestimentas + </string> + <string name="InvFolder Friends"> + Amigos + </string> + <string name="InvFolder All"> + Tudo + </string> + <string name="Buy"> + Comprar + </string> + <string name="BuyforL$"> + Comprar por L$ + </string> + <string name="Stone"> + Pedra + </string> + <string name="Metal"> + Metal + </string> + <string name="Glass"> + Vidro + </string> + <string name="Wood"> + Madeira + </string> + <string name="Flesh"> + Carne + </string> + <string name="Plastic"> + Plástico + </string> + <string name="Rubber"> + Borrracha + </string> + <string name="Light"> + Luz + </string> + <string name="KBShift"> + Shift + </string> + <string name="KBCtrl"> + Ctrl + </string> + <string name="Chest"> + Peito + </string> + <string name="Skull"> + Crânio + </string> + <string name="Left Shoulder"> + Ombro esquerdo + </string> + <string name="Right Shoulder"> + Ombro direito + </string> + <string name="Left Hand"> + Mão esquerda + </string> + <string name="Right Hand"> + Mão direita + </string> + <string name="Left Foot"> + Pé esquerdo + </string> + <string name="Right Foot"> + Pé direito + </string> + <string name="Spine"> + Espinha + </string> + <string name="Pelvis"> + Pelvis + </string> + <string name="Mouth"> + Boca + </string> + <string name="Chin"> + Queixo + </string> + <string name="Left Ear"> + Orelha esquerda + </string> + <string name="Right Ear"> + Orelha direita + </string> + <string name="Left Eyeball"> + Globo ocular esquerdo + </string> + <string name="Right Eyeball"> + Globo ocular direito + </string> + <string name="Nose"> + Nariz + </string> + <string name="R Upper Arm"> + Braço superior D + </string> + <string name="R Forearm"> + Antebraço D + </string> + <string name="L Upper Arm"> + Braço superior E + </string> + <string name="L Forearm"> + Antebraço E + </string> + <string name="Right Hip"> + Quadril direito + </string> + <string name="R Upper Leg"> + Coxa D + </string> + <string name="R Lower Leg"> + Perna inferior D + </string> + <string name="Left Hip"> + Quadril esquerdo + </string> + <string name="L Upper Leg"> + Coxa E + </string> + <string name="L Lower Leg"> + Perna inferior E + </string> + <string name="Stomach"> + Estômago + </string> + <string name="Left Pec"> + Pec esquerdo + </string> + <string name="Right Pec"> + Pec direito + </string> + <string name="YearsMonthsOld"> + [AGEYEARS] [AGEMONTHS] de idade + </string> + <string name="YearsOld"> + [AGEYEARS] de idade + </string> + <string name="MonthsOld"> + [AGEMONTHS] de idade + </string> + <string name="WeeksOld"> + [AGEWEEKS] de idade + </string> + <string name="DaysOld"> + [AGEDAYS] de idade + </string> + <string name="TodayOld"> + Cadastrado hoje + </string> + <string name="AgeYearsA"> + [COUNT] ano + </string> + <string name="AgeYearsB"> + [COUNT] anos + </string> + <string name="AgeYearsC"> + [COUNT] anos + </string> + <string name="AgeMonthsA"> + [COUNT] mês + </string> + <string name="AgeMonthsB"> + [COUNT] meses + </string> + <string name="AgeMonthsC"> + [COUNT] meses + </string> + <string name="AgeWeeksA"> + [COUNT] semana + </string> + <string name="AgeWeeksB"> + [COUNT] semanas + </string> + <string name="AgeWeeksC"> + [COUNT] semanas + </string> + <string name="AgeDaysA"> + [COUNT] dia + </string> + <string name="AgeDaysB"> + [COUNT] dias + </string> + <string name="AgeDaysC"> + [COUNT] dias + </string> + <string name="GroupMembersA"> + [COUNT] membro + </string> + <string name="GroupMembersB"> + [COUNT] membros + </string> + <string name="GroupMembersC"> + [COUNT] membros + </string> + <string name="AcctTypeResident"> + Residente + </string> + <string name="AcctTypeTrial"> + Prova + </string> + <string name="AcctTypeCharterMember"> + Lista de membros + </string> + <string name="AcctTypeEmployee"> + Empregado da Linden Lab + </string> + <string name="PaymentInfoUsed"> + Info de Pagamento usada + </string> + <string name="PaymentInfoOnFile"> + Info de Pagamento no Arquivo + </string> + <string name="NoPaymentInfoOnFile"> + Nenhuma Info de Pagamento no Arquivo + </string> + <string name="AgeVerified"> + Idade-verificada + </string> + <string name="NotAgeVerified"> + Idade não-verificada + </string> + <string name="Center 2"> + Centro 2 + </string> + <string name="Top Right"> + Topo direita + </string> + <string name="Top"> + Topo + </string> + <string name="Top Left"> + Topo esquerda + </string> + <string name="Center"> + Centro + </string> + <string name="Bottom Left"> + Inferior esquerdo + </string> + <string name="Bottom"> + Inferior + </string> + <string name="Bottom Right"> + Inferior direito + </string> + <string name="CompileQueueDownloadedCompiling"> + Downloaded, agora compilando + </string> + <string name="CompileQueueScriptNotFound"> + Script não encontrado no servidor. + </string> + <string name="CompileQueueProblemDownloading"> + Problema no download + </string> + <string name="CompileQueueInsufficientPermDownload"> + Permissões insuficientes para fazer o download do script. + </string> + <string name="CompileQueueInsufficientPermFor"> + Permissões insuficientes para + </string> + <string name="CompileQueueUnknownFailure"> + Falha desconhecida para download + </string> + <string name="CompileQueueTitle"> + Progresso do Recompilamento + </string> + <string name="CompileQueueStart"> + recompilar + </string> + <string name="ResetQueueTitle"> + Reset Progresso + </string> + <string name="ResetQueueStart"> + reset + </string> + <string name="RunQueueTitle"> + Definir funcionamento do progresso + </string> + <string name="RunQueueStart"> + deixar funcionando + </string> + <string name="NotRunQueueTitle"> + Definir progresso não funcionando + </string> + <string name="NotRunQueueStart"> + não deixar funcionando + </string> + <string name="CompileSuccessful"> + Compilação bem sucedida + </string> + <string name="CompileSuccessfulSaving"> + Compilação bem sucedida, salvando... + </string> + <string name="SaveComplete"> + Salvo. + </string> + <string name="ObjectOutOfRange"> + Script (objecto fora de alcance) + </string> + <string name="GodToolsObjectOwnedBy"> + Objeto [OBJECT] de propriedade de [OWNER] + </string> + <string name="GroupsNone"> + nenhum + </string> + <string name="Group" value="(grupo)"/> + <string name="Unknown"> + (Desconhecido) + </string> + <string name="SummaryForTheWeek" value="Resumo para esta semana, com início em"/> + <string name="NextStipendDay" value="Próximo dia de salário é"/> + <string name="GroupIndividualShare" value="Grupo Divisão individualI"/> + <string name="Balance"> + Balanço + </string> + <string name="Credits"> + Créditos + </string> + <string name="Debits"> + Débitos + </string> + <string name="Total"> + Total + </string> + <string name="NoGroupDataFound"> + Não ha dados de grupo para o grupo + </string> + <string name="IMParentEstate"> + propriedade dos pais + </string> + <string name="IMMainland"> + continente + </string> + <string name="IMTeen"> + adolescente + </string> + <string name="RegionInfoError"> + erro + </string> + <string name="RegionInfoAllEstatesOwnedBy"> + todas as propriedades pertencem a [OWNER] + </string> + <string name="RegionInfoAllEstatesYouOwn"> + todas as propriedades que você possui + </string> + <string name="RegionInfoAllEstatesYouManage"> + todas as propriedades que você gerencia para [OWNER] + </string> + <string name="RegionInfoAllowedResidents"> + Residentes permitidos : ([ALLOWEDAGENTS], max [MAXACCESS]) + </string> + <string name="RegionInfoAllowedGroups"> + Grupos permitidos: ([ALLOWEDGROUPS], max [MAXACCESS]) + </string> + <string name="CursorPos"> + Linha [LINE], Coluna [COLUMN] + </string> + <string name="PanelDirCountFound"> + [COUNT] encontrado + </string> + <string name="PanelContentsNewScript"> + Novo Script + </string> + <string name="MuteByName"> + (por nome) + </string> + <string name="MuteAgent"> + (residente) + </string> + <string name="MuteObject"> + (objeto) + </string> + <string name="MuteGroup"> + (grupo) + </string> + <string name="RegionNoCovenant"> + Não ha Contrato fornecido para essa Região. + </string> + <string name="RegionNoCovenantOtherOwner"> + Não ha Contrato fornecido para essa Região. O terreno nesta região está sendo vendido pelo Proprietário, não pela Linden Lab. Favor contatar o Proprietário da região para detalhes de venda. + </string> + <string name="covenant_last_modified"> + Última modificação: + </string> + <string name="none_text" value="(nenhum)"/> + <string name="never_text" value="(nunca)"/> + <string name="GroupOwned"> + Propriedade do Grupo + </string> + <string name="Public"> + Público + </string> + <string name="ClassifiedClicksTxt"> + Cliques: [TELEPORT] teletransporte, [MAP] mapa, [PROFILE] perfil + </string> + <string name="ClassifiedUpdateAfterPublish"> + (vai atualizar depois de publicado) + </string> + <string name="MultiPreviewTitle"> + Preview + </string> + <string name="MultiPropertiesTitle"> + Propriedades + </string> + <string name="InvOfferAnObjectNamed"> + um objeto chamado + </string> + <string name="InvOfferOwnedByGroup"> + possuído pelo grupo + </string> + <string name="InvOfferOwnedByUnknownGroup"> + possuído por um grupo desconhecido + </string> + <string name="InvOfferOwnedBy"> + possuído por + </string> + <string name="InvOfferOwnedByUnknownUser"> + possuído por usuário desconhecido + </string> + <string name="InvOfferGaveYou"> + deu a você + </string> + <string name="InvOfferYouDecline"> + Você declina + </string> + <string name="InvOfferFrom"> + de + </string> + <string name="GroupMoneyTotal"> + Total + </string> + <string name="GroupMoneyBought"> + comprou + </string> + <string name="GroupMoneyPaidYou"> + pagou a você + </string> + <string name="GroupMoneyPaidInto"> + depositado + </string> + <string name="GroupMoneyBoughtPassTo"> + comprou passe para + </string> + <string name="GroupMoneyPaidFeeForEvent"> + pagou taxa para o evento + </string> + <string name="GroupMoneyPaidPrizeForEvent"> + pagou prêmio para o evento + </string> + <string name="GroupMoneyBalance"> + Balanço + </string> + <string name="GroupMoneyCredits"> + Créditos + </string> + <string name="GroupMoneyDebits"> + Débitos + </string> + <string name="ViewerObjectContents"> + Conteúdo + </string> + <string name="AcquiredItems"> + Itens adquiridos + </string> + <string name="Cancel"> + Cancelar + </string> + <string name="UploadingCosts"> + Uploading [%s] custos + </string> + <string name="UnknownFileExtension"> + Extensão de arquivo desconhecida [.%s] +Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh + </string> + <string name="AddLandmarkNavBarMenu"> + Adicionar Landmark... + </string> + <string name="EditLandmarkNavBarMenu"> + Editar 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+ @@ -505,80 +1420,1789 @@ <string name="accel-win-shift"> Shift+ </string> - <string name="GraphicsQualityLow"> - Baixo + <string name="FileSaved"> + Arquivo salvo </string> - <string name="GraphicsQualityMid"> - Meio + <string name="Receiving"> + Recebendo </string> - <string name="GraphicsQualityHigh"> - Alto + <string name="AM"> + AM + </string> + <string name="PM"> + PM + </string> + <string name="PST"> + PST + </string> + <string name="PDT"> + PDT + </string> + <string name="Forward"> + Avante + </string> + <string name="Left"> + Esquerda + </string> + <string name="Right"> + Direita + </string> + <string name="Back"> + Atrás + </string> + <string name="North"> + Norte + </string> + <string name="South"> + Sul + </string> + <string name="West"> + Oeste + </string> + <string name="East"> + Leste + </string> + <string name="Up"> + Acima + </string> + <string name="Down"> + Abaixo + </string> + <string name="Any Category"> + Qualquer categoria + </string> + <string name="Shopping"> + Compras + </string> + <string name="Land Rental"> + Aluguel de terrenos + </string> + <string name="Property Rental"> + Aluguel de propriedade </string> + <string name="Special Attraction"> + Atração especial + </string> + <string name="New Products"> + Novos Produtos + </string> + <string name="Employment"> + Emprego + </string> + <string name="Wanted"> + Desejado + </string> + <string name="Service"> + Serviço + </string> + <string name="Personal"> + Pessoal + </string> + <string name="None"> + Nenhum + </string> + <string name="Linden Location"> + Locação Linden + </string> + <string name="Adult"> + Adult + </string> + <string name="Arts&Culture"> + Artes e Cultura + </string> + <string name="Business"> + Negócios + </string> + <string name="Educational"> + Educacional + </string> + <string name="Gaming"> + Jogos + </string> + <string name="Hangout"> + Moradia + </string> + <string name="Newcomer Friendly"> + Amigável a Novos Usuários + </string> + <string name="Parks&Nature"> + Parques & Natureza + </string> + <string name="Residential"> + Residencial + </string> + <string name="Stage"> + Estágio + </string> + <string name="Other"> + Outros + </string> + <string name="Any"> + Qualquer + </string> + <string name="You"> + Você + </string> + <string name="Multiple Media"> + Mídia múltipla + </string> + <string name="Play Media"> + Tocar/Pausar mídia + </string> + <string name="MBCmdLineError"> + Um erro foi encontrado analisando a linha de comando. +Consulte: http://wiki.secondlife.com/wiki/Client_parameters +Erro: + </string> + <string name="MBCmdLineUsg"> + [APP_NAME] Uso de linha de comando: + </string> + <string name="MBUnableToAccessFile"> + [APP_NAME] não é capaz de acessar um arquivo que ele precisa. - <!-- PARCEL_CATEGORY_UI_STRING --> - <string name="Linden Location">Locação Linden</string> - <string name="Adult">Adult</string> - <string name="Arts&Culture">Artes e Cultura</string> - <string name="Business">Negócios</string> - <string name="Educational">Educacional</string> - <string name="Gaming">Jogos</string> - <string name="Hangout">Moradia</string> - <string name="Newcomer Friendly">Amigável a Novos Usuários</string> - <string name="Parks&Nature">Parques & Natureza</string> - <string name="Residential">Residencial</string> - <string name="Shopping">Compras</string> - <string name="Other">Outros</string> - <string name="ringing"> - Conectando à conversa de Voz no mundo +Isto pode ocorrer porque você de alguma maneira tem várias cópias em execução, ou o seu sistema acredita de maneira incorreta que um arquivo está aberto. +Se a mensagem persistir, reinicie o computador e tente novamente. +Se o error persistir, pode ser necessário desinstalar completamente [APP_NAME] e reinstalá-lo. </string> - <string name="connected"> - Conectado + <string name="MBFatalError"> + Erro Fatal </string> - <string name="unavailable"> - Voz não disponível na sua localização atual + <string name="MBRequiresAltiVec"> + [APP_NAME] exige um processador com AltiVec (G4 ou superior). </string> - <string name="hang_up"> - Desconectado da conversa de Voz no mundo + <string name="MBAlreadyRunning"> + [APP_NAME] já está em execução. +Verifique a sua barra de tarefas para obter uma cópia do programa minimizado. +Se a mensagem persistir, reinicie o computador. + </string> + <string name="MBFrozenCrashed"> + [APP_NAME] parece ter congelado ou falhado na execução anterior. Você gostaria de enviar um relatório de falha? + </string> + <string name="MBAlert"> + Alerta + </string> + <string name="MBNoDirectX"> + [APP_NAME] é incapaz de detectar o DirectX 9.0b ou superior. +[APP_NAME] usa o DirectX para a detecção de hardware e / ou controladores desatualizados que podem causar problemas de estabilidade, desempenho ruim e falhas. Embora você possa executar [APP_NAME] sem ele, nós recomendamos fortemente que utilize o DirectX 9.0b. + +Deseja continuar? + </string> + <string name="MBWarning"> + Aviso + </string> + <string name="MBNoAutoUpdate"> + Atualização automática ainda não está implementada para o Linux. +Faça o download da versão mais recente do www.secondlife.com. + </string> + <string name="MBRegClassFailed"> + RegisterClass falhou + </string> + <string name="MBError"> + Erro + </string> + <string name="MBFullScreenErr"> + Incapaz de funcionar com tela cheia de [WIDTH] x [HEIGHT]. +Executando em janela. + </string> + <string name="MBDestroyWinFailed"> + Erro de desligamento ao destruir janela (DestroyWindow() failed) + </string> + <string name="MBShutdownErr"> + Erro de desligamento + </string> + <string name="MBDevContextErr"> + Não é possível fazer contexto do dispositivo GL + </string> + <string name="MBPixelFmtErr"> + Não é possível encontrar um formato de pixel adequado + </string> + <string name="MBPixelFmtDescErr"> + Não é possível encontrar descrição de formato de pixel + </string> + <string name="MBTrueColorWindow"> + [APP_NAME] requer True Color (32-bit) para ser executado. +Por favor, vá para as configurações de vídeo do computador e defina o modo de cores para 32-bit. + </string> + <string name="MBAlpha"> + [APP_NAME] é incapaz de executar porque ele não consegue obter um canal alpha de 8 bits. Geralmente isso ocorre devido a problemas de drivers da placa de vídeo. +Por favor, certifique-se que os últimos drivers da placa de vídeo estão instalados. +Também não se esqueça de definir seu monitor para True Color (32-bit), em painéis de controle Configurações> Display>. +Se você continuar a receber esta mensagem, contate o [SUPPORT_SITE]. + </string> + <string name="MBPixelFmtSetErr"> + ão é possível definir o formato de pixel + </string> + <string name="MBGLContextErr"> + Não é possível criar o contexto de renderização GL + </string> + <string name="MBGLContextActErr"> + Não é possível ativar o contexto de renderização GL + </string> + <string name="MBVideoDrvErr"> + [APP_NAME] é incapaz de funcionar por causa do seu driver de video não ter sido instalado corretamente, estão desatualizados, ou não são suportados pelo hardware. Por favor certifique-se que você possui os drivers de placa de vídeo mais recente e mesmo assim, tente reinstalá-los. + +If you continue to receive this message, contact the [SUPPORT_SITE]. + </string> + <string name="5 O'Clock Shadow"> + Sombra descuidada + </string> + <string name="All White"> + Todo branco + </string> + <string name="Anime Eyes"> + Olhos de Anime + </string> + <string name="Arced"> + arqueado + </string> + <string name="Arm Length"> + Comprimento do Braço + </string> + <string name="Attached"> + Anexado + </string> + <string name="Attached Earlobes"> + Lóbulos da orelha anexados + </string> + <string name="Back Bangs"> + Franja traseira + </string> + <string name="Back Bangs Down"> + franja traseira longa + </string> + <string name="Back Bangs Up"> + franja traseira arrepiada + </string> + <string name="Back Fringe"> + corte traseiro + </string> + <string name="Back Hair"> + cabelo traseiro + </string> + <string name="Back Hair Down"> + cabelo de trás longo + </string> + <string name="Back Hair Up"> + cabelo de trás arrepiado + </string> + <string name="Baggy"> + folgado + </string> + <string name="Bangs"> + Franja + </string> + <string name="Bangs Down"> + franja longa + </string> + <string name="Bangs Up"> + franja arrepiada + </string> + <string name="Beady Eyes"> + Olhos malévolos + </string> + <string name="Belly Size"> + Tamanho da barriga + </string> + <string name="Big"> + Grande + </string> + <string name="Big Butt"> + Traseiro Grande + </string> + <string name="Big Eyeball"> + Globo ocular grande + </string> + <string name="Big Hair Back"> + Cabelo volumoso: Trás + </string> + <string name="Big Hair Front"> + Cabelo volumoso: Frente + </string> + <string name="Big Hair Top"> + cabelo volumoso: Topo + </string> + <string name="Big Head"> + cabeça grande + </string> + <string name="Big Pectorals"> + Peitorais grandes + </string> + <string name="Big Spikes"> + espinhos grandes + </string> + <string name="Black"> + Negro + </string> + <string name="Blonde"> + Loiro + </string> + <string name="Blonde Hair"> + Cabelo Loiro + </string> + <string name="Blush"> + Blush + </string> + <string name="Blush Color"> + cor do Blush + </string> + <string name="Blush Opacity"> + Opacidade do Blush + </string> + <string name="Body Definition"> + definição do Corpo + </string> + <string name="Body Fat"> + Gordura corporal + </string> + <string name="Body Freckles"> + Sardas do corpo + </string> + <string name="Body Thick"> + Corpo cheio + </string> + <string name="Body Thickness"> + Espessura do corpo + </string> + <string name="Body Thin"> + Corpo magro + </string> + <string name="Bow Legged"> + pernas arqueadas + </string> + <string name="Breast Buoyancy"> + Flexibilidade dos seios + </string> + <string name="Breast Cleavage"> + Separação dos seios + </string> + <string name="Breast Size"> + Tamanho dos seios + </string> + <string name="Bridge Width"> + Largura do nariz + </string> + <string name="Broad"> + Largo + </string> + <string name="Brow Size"> + tamanho da sobrancelha + </string> + <string name="Bug Eyes"> + Olhos saltados + </string> + <string name="Bugged Eyes"> + Olhos esbugalhados + </string> + <string name="Bulbous"> + Bulbos + </string> + <string name="Bulbous Nose"> + Nariz em bulbo + </string> + <string name="Bushy Eyebrows"> + Sobrancelhas grossas + </string> + <string name="Bushy Hair"> + Cabelo grosso + </string> + <string name="Butt Size"> + Tamanho do traseiro + </string> + <string name="bustle skirt"> + Movimentação de saia + </string> + <string name="no bustle"> + Sem movimento + </string> + <string name="more bustle"> + Mais movimento + </string> + <string name="Chaplin"> + Chaplin + </string> + <string name="Cheek Bones"> + Maças do rosto + </string> + <string name="Chest Size"> + Tamanho do peito + </string> + <string name="Chin Angle"> + ângulo do queixo + </string> + <string name="Chin Cleft"> + Fissura do queixo + </string> + <string name="Chin Curtains"> + Barba de contorno + </string> + <string name="Chin Depth"> + Profundidade do queixo + </string> + <string name="Chin Heavy"> + Queixo pronunciado + </string> + <string name="Chin In"> + Queixo para dentro + </string> + <string name="Chin Out"> + Queixo para fora + </string> + <string name="Chin-Neck"> + Queixo-pescoço + </string> + <string name="Clear"> + Limpar + </string> + <string name="Cleft"> + Fenda + </string> + <string name="Close Set Eyes"> + Fechar conjunto de olhos + </string> + <string name="Closed"> + Fechado + </string> + <string name="Closed Back"> + Trás fechada + </string> + <string name="Closed Front"> + Frente fechada + </string> + <string name="Closed Left"> + Esquerda fechada + </string> + <string name="Closed Right"> + Direita fechada + </string> + <string name="Coin Purse"> + Pubis + </string> + <string name="Collar Back"> + Colarinho posterior + </string> + <string name="Collar Front"> + Colarinho anterior + </string> + <string name="Corner Down"> + Canto para baixo + </string> + <string name="Corner Normal"> + Canto normal + </string> + <string name="Corner Up"> + Canto para cima + </string> + <string name="Creased"> + Vincado + </string> + <string name="Crooked Nose"> + Nariz torto + </string> + <string name="Cropped Hair"> + Cabelo curto rente + </string> + <string name="Cuff Flare"> + bainha larga + </string> + <string name="Dark"> + Escuro + </string> + <string name="Dark Green"> + Verde escuro + </string> + <string name="Darker"> + mais escuro + </string> + <string name="Deep"> + Profundidade + </string> + <string name="Default Heels"> + Salto Padrão + </string> + <string name="Default Toe"> + Dedo do pé padrão + </string> + <string name="Dense"> + Densidade + </string> + <string name="Dense hair"> + Cabelo Denso + </string> + <string name="Double Chin"> + Queixo duplo + </string> + <string name="Downturned"> + Curvado para baixo + </string> + <string name="Duffle Bag"> + pubis + </string> + <string name="Ear Angle"> + ângulo da orelha + </string> + <string name="Ear Size"> + Tamanho da orelha + </string> + <string name="Ear Tips"> + Pontas das orelhas + </string> + <string name="Egg Head"> + Cabeça oval + </string> + <string name="Eye Bags"> + Olheiras + </string> + <string name="Eye Color"> + Cor dos olhos + </string> + <string name="Eye Depth"> + Profundidade dos olhos + </string> + <string name="Eye Lightness"> + Luminosidade dos olhos + </string> + <string name="Eye Opening"> + Abertura dos olhos + </string> + <string name="Eye Pop"> + Olho Saltado + </string> + <string name="Eye Size"> + Tamanho dos olhos + </string> + <string name="Eye Spacing"> + Espaçamento dos olhos + </string> + <string name="Eyeball Size"> + Tamanho do globo ocular + </string> + <string name="Eyebrow Arc"> + Arco da sobrancelha + </string> + <string name="Eyebrow Density"> + densidade da sobrancelha + </string> + <string name="Eyebrow Height"> + Altura da sobrancelha + </string> + <string name="Eyebrow Points"> + Pontas da sobrancelha + </string> + <string name="Eyebrow Size"> + Tamanho da sobrancelha + </string> + <string name="Eyelash Length"> + Comprimento das pestanas + </string> + <string name="Eyeliner"> + Delineador + </string> + <string name="Eyeliner Color"> + Cor do delineador + </string> + <string name="Eyes Back"> + Eyes Back + </string> + <string name="Eyes Bugged"> + Olhos esbugalhados + </string> + <string name="Eyes Forward"> + Eyes Forward + </string> + <string name="Eyes Long Head"> + Eyes Long Head + </string> + <string name="Eyes Shear Left Up"> + Ponta esquerda dos olhos para cima + </string> + <string name="Eyes Shear Right Up"> + Ponta direita dos olhos para cima + </string> + <string name="Eyes Short Head"> + Eyes Short Head + </string> + <string name="Eyes Spread"> + Extensão dos Olhos + </string> + <string name="Eyes Sunken"> + Olhos afundados + </string> + <string name="Eyes Together"> + Olhos juntos + </string> + <string name="Face Shear"> + Face raspada + </string> + <string name="Facial Definition"> + Definição facial + </string> + <string name="Far Set Eyes"> + Distância entre os olhos + </string> + <string name="Fat"> + Gordo + </string> + <string name="Fat Head"> + Cabeça gorda + </string> + <string name="Fat Lips"> + Lábios carnudos + </string> + <string name="Fat Lower"> + Inferior carnudo + </string> + <string name="Fat Lower Lip"> + Lábio superior carnudo + </string> + <string name="Fat Torso"> + Tronco corpulento + </string> + <string name="Fat Upper"> + Superior carnudo + </string> + <string name="Fat Upper Lip"> + lábio superior carnudo + </string> + <string name="Female"> + Feminino + </string> + <string name="Fingerless"> + Dedos + </string> + <string name="Fingers"> + Dedos + </string> + <string name="Flared Cuffs"> + Punhos largos + </string> + <string name="Flat"> + Chato + </string> + <string name="Flat Butt"> + Traseiro chato + </string> + <string name="Flat Head"> + Cabeça chata + </string> + <string name="Flat Toe"> + Dedos dos pés chatos + </string> + <string name="Foot Size"> + Tamanho dos pés + </string> + <string name="Forehead Angle"> + ângulo da testa + </string> + <string name="Forehead Heavy"> + Testa pronunciada + </string> + <string name="Freckles"> + Sardas + </string> + <string name="Front Bangs Down"> + Franja da frente longa + </string> + <string name="Front Bangs Up"> + Franja da frene arrepiada + </string> + <string name="Front Fringe"> + Franja + </string> + <string name="Front Hair"> + Cabelo da frente + </string> + <string name="Front Hair Down"> + Cabelo da frente baixo + </string> + <string name="Front Hair Up"> + cabelo da frente arrepiado + </string> + <string name="Full Back"> + Trás cheia + </string> + <string name="Full Eyeliner"> + Delienador cheio + </string> + <string name="Full Front"> + Frente cheia + </string> + <string name="Full Hair Sides"> + Cabelos laterais cheios + </string> + <string name="Full Sides"> + Lados cheios + </string> + <string name="Glossy"> + Brilhante + </string> + <string name="Glove Fingers"> + Dedos da luva + </string> + <string name="Glove Length"> + comprimento das luvas + </string> + <string name="Hair"> + Cabelo + </string> + <string name="Hair Back"> + Cabelo: Trás + </string> + <string name="Hair Front"> + Cabelo: Frente + </string> + <string name="Hair Sides"> + Cabelos: Lateral + </string> + <string name="Hair Sweep"> + Cabelo penteado + </string> + <string name="Hair Thickess"> + Espessura do cabelo + </string> + <string name="Hair Thickness"> + Espessura do cabelo + </string> + <string name="Hair Tilt"> + Divisão do cabelo + </string> + <string name="Hair Tilted Left"> + Divistão do cabelo esquerda + </string> + <string name="Hair Tilted Right"> + Divisão do cabelo direita + </string> + <string name="Hair Volume"> + Cabelo: Volume + </string> + <string name="Hand Size"> + Tamanho das mãos + </string> + <string name="Handlebars"> + bigode + </string> + <string name="Head Length"> + Comprimento da cabeça + </string> + <string name="Head Shape"> + Formato da cabeça + </string> + <string name="Head Size"> + Tamanho da cabeça + </string> + <string name="Head Stretch"> + Extensão da cabeça + </string> + <string name="Heel Height"> + Altura do salto + </string> + <string name="Heel Shape"> + Formato do salto + </string> + <string name="Height"> + Altura + </string> + <string name="High"> + alto + </string> + <string name="High Heels"> + Salto alto + </string> + <string name="High Jaw"> + Maxilar alto + </string> + <string name="High Platforms"> + Plataformas alta + </string> + <string name="High and Tight"> + Alto e justo + </string> + <string name="Higher"> + Mais alto + </string> + <string name="Hip Length"> + Comprimento do quadril + </string> + <string name="Hip Width"> + Largura do quadril + </string> + <string name="In"> + Dentro + </string> + <string name="In Shdw Color"> + Cor da sombra interna + </string> + <string name="In Shdw Opacity"> + Opacidade da sombra interna + </string> + <string name="Inner Eye Corner"> + Canto interno dos olhos + </string> + <string name="Inner Eye Shadow"> + Sombra interna dos olhos + </string> + <string name="Inner Shadow"> + Sombra interna + </string> + <string name="Jacket Length"> + Comprimento da blusa + </string> + <string name="Jacket Wrinkles"> + Dobras da Blusa + </string> + <string name="Jaw Angle"> + Ângulo da mandíbula + </string> + <string name="Jaw Jut"> + Posição do maxilar + </string> + <string name="Jaw Shape"> + Formato do maxilar + </string> + <string name="Join"> + Juntar + </string> + <string name="Jowls"> + Papo + </string> + <string name="Knee Angle"> + Ângulo do joelho + </string> + <string name="Knock Kneed"> + Joelhos para dentro + </string> + <string name="Large"> + Grande + </string> + <string name="Large Hands"> + Mãos grandes + </string> + <string name="Left Part"> + Parte esquerda + </string> + <string name="Leg Length"> + Comprimento da perna + </string> + <string name="Leg Muscles"> + Musculatura da perna + </string> + <string name="Less"> + Menos + </string> + <string name="Less Body Fat"> + Menos gordura corporal + </string> + <string name="Less Curtains"> + Menos barba + </string> + <string name="Less Freckles"> + Menos sardas + </string> + <string name="Less Full"> + Menos + </string> + <string name="Less Gravity"> + Menos gravidade + </string> + <string name="Less Love"> + Menos cintura + </string> + <string name="Less Muscles"> + Menos músculos + </string> + <string name="Less Muscular"> + Menos musculoso + </string> + <string name="Less Rosy"> + Menos rosado + </string> + <string name="Less Round"> + Menos arredondado + </string> + <string name="Less Saddle"> + Menos ancas + </string> + <string name="Less Square"> + Menos quadrado + </string> + <string name="Less Volume"> + Menos volume + </string> + <string name="Less soul"> + Menos alma + </string> + <string name="Lighter"> + Lighter + </string> + <string name="Lip Cleft"> + Fenda dos lábios + </string> + <string name="Lip Cleft Depth"> + Prfundidade da fenda dos lábios + </string> + <string name="Lip Fullness"> + Volume dos lábios + </string> + <string name="Lip Pinkness"> + Rosado dos lábios + </string> + <string name="Lip Ratio"> + Proporção dos lábios + </string> + <string name="Lip Thickness"> + Espessura dos lábios + </string> + <string name="Lip Width"> + Largura dos lábios + </string> + <string name="Lipgloss"> + Brilho dos lábios + </string> + <string name="Lipstick"> + Batom + </string> + <string name="Lipstick Color"> + Cor do batom + </string> + <string name="Long"> + Longo + </string> + <string name="Long Head"> + Cabeça alongada + </string> + <string name="Long Hips"> + Lábios longos + </string> + <string name="Long Legs"> + Pernas longas + </string> + <string name="Long Neck"> + Pescoço longo + </string> + <string name="Long Pigtails"> + Chiquinhas longas + </string> + <string name="Long Ponytail"> + Rabo de cavalo longo + </string> + <string name="Long Torso"> + Torso longo + </string> + <string name="Long arms"> + Braços longos + </string> + <string name="Longcuffs"> + Punho longo + </string> + <string name="Loose Pants"> + Pantalonas + </string> + <string name="Loose Shirt"> + Saia folgada + </string> + <string name="Loose Sleeves"> + Manga longa + </string> + <string name="Love Handles"> + Pneu + </string> + <string name="Low"> + baixo + </string> + <string name="Low Heels"> + Salto baixo + </string> + <string name="Low Jaw"> + maxilar baixo + </string> + <string name="Low Platforms"> + Plataformas baixas + </string> + <string name="Low and Loose"> + baixo e solto + </string> + <string name="Lower"> + diminuir + </string> + <string name="Lower Bridge"> + nariz baixo + </string> + <string name="Lower Cheeks"> + bochechas abaixadas + </string> + <string name="Male"> + Masculino + </string> + <string name="Middle Part"> + Parte do meio + </string> + <string name="More"> + Mais + </string> + <string name="More Blush"> + Mais blush + </string> + <string name="More Body Fat"> + Mais gordura corporal + </string> + <string name="More Curtains"> + Mais barba + </string> + <string name="More Eyeshadow"> + Mais sombra dos olhos + </string> + <string name="More Freckles"> + Mais sardas + </string> + <string name="More Full"> + Mais volume + </string> + <string name="More Gravity"> + Mais gravidade + </string> + <string name="More Lipstick"> + Mais batom + </string> + <string name="More Love"> + Mais cintura + </string> + <string name="More Lower Lip"> + Mais lábio inferior + </string> + <string name="More Muscles"> + Mais músculos + </string> + <string name="More Muscular"> + Mais musculoso + </string> + <string name="More Rosy"> + Mais rosado + </string> + <string name="More Round"> + Mais arredondado + </string> + <string name="More Saddle"> + Mais ancas + </string> + <string name="More Sloped"> + Mais inclinado + </string> + <string name="More Square"> + Mais quadrado + </string> + <string name="More Upper Lip"> + Mais lábios superiores + </string> + <string name="More Vertical"> + Mais vertical + </string> + <string name="More Volume"> + Mais Volume + </string> + <string name="More soul"> + Mais alma + </string> + <string name="Moustache"> + Bigode + </string> + <string name="Mouth Corner"> + Canto da boca + </string> + <string name="Mouth Position"> + Posição da boca + </string> + <string name="Mowhawk"> + Moicano + </string> + <string name="Muscular"> + Muscular + </string> + <string name="Mutton Chops"> + Costeletas + </string> + <string name="Nail Polish"> + Esmate das unhas + </string> + <string name="Nail Polish Color"> + Cor do esmalte das unhas + </string> + <string name="Narrow"> + Estreito + </string> + <string name="Narrow Back"> + Costas estreitas + </string> + <string name="Narrow Front"> + Frente estreita + </string> + <string name="Narrow Lips"> + Lábios estreitos + </string> + <string name="Natural"> + Natural + </string> + <string name="Neck Length"> + Comprimento do pescoço + </string> + <string name="Neck Thickness"> + Espessura do pescoço + </string> + <string name="No Blush"> + Sem Blush + </string> + <string name="No Eyeliner"> + Sem delineador + </string> + <string name="No Eyeshadow"> + Sem Sombra dos olhos + </string> + <string name="No Heels"> + Sem salto + </string> + <string name="No Lipgloss"> + Sem brilho labial + </string> + <string name="No Lipstick"> + Sem batom + </string> + <string name="No Part"> + Sem parte + </string> + <string name="No Polish"> + Sem esmalte + </string> + <string name="No Red"> + Sem vermelho + </string> + <string name="No Spikes"> + Sem espinhos + </string> + <string name="No White"> + Sem branco + </string> + <string name="No Wrinkles"> + Sem dobras + </string> + <string name="Normal Lower"> + Normal inferior + </string> + <string name="Normal Upper"> + Normal superior + </string> + <string name="Nose Left"> + Nariz para esquerda + </string> + <string name="Nose Right"> + Nariz para direita + </string> + <string name="Nose Size"> + Tamanho do nariz + </string> + <string name="Nose Thickness"> + Espessura do nariz + </string> + <string name="Nose Tip Angle"> + Ângulo da ponta do nariz + </string> + <string name="Nose Tip Shape"> + Formato da ponta do nariz + </string> + <string name="Nose Width"> + Largura do nariz + </string> + <string name="Nostril Division"> + Divisão das narinas + </string> + <string name="Nostril Width"> + Largura das narinas + </string> + <string name="Old"> + Velho + </string> + <string name="Opaque"> + Opaco + </string> + <string name="Open"> + Abrir + </string> + <string name="Open Back"> + Aberto atrás + </string> + <string name="Open Front"> + Aberto na frente + </string> + <string name="Open Left"> + Aberto esquerdo + </string> + <string name="Open Right"> + Aberto direito + </string> + <string name="Orange"> + Laranja + </string> + <string name="Out"> + Fora + </string> + <string name="Out Shdw Color"> + Cor da sombra externa + </string> + <string name="Out Shdw Opacity"> + Opacidade da sombra externa + </string> + <string name="Outer Eye Corner"> + Canto externo do olho + </string> + <string name="Outer Eye Shadow"> + Sombra externa do olho + </string> + <string name="Outer Shadow"> + Sombra externa + </string> + <string name="Overbite"> + Overbite + </string> + <string name="Package"> + Pubis + </string> + <string name="Painted Nails"> + Unhas pintadas + </string> + <string name="Pale"> + Pálido + </string> + <string name="Pants Crotch"> + Cavalo da calça + </string> + <string name="Pants Fit"> + Pants Fit + </string> + <string name="Pants Length"> + Comprimento das calças + </string> + <string name="Pants Waist"> + Cintura da calça + </string> + <string name="Pants Wrinkles"> + Dobras das calças + </string> + <string name="Part"> + Parte + </string> + <string name="Part Bangs"> + Parts da franja + </string> + <string name="Pectorals"> + Peitoral + </string> + <string name="Pigment"> + Pigmento + </string> + <string name="Pigtails"> + Chiquinhas + </string> + <string name="Pink"> + Rosa + </string> + <string name="Pinker"> + Mais rosado + </string> + <string name="Platform Height"> + Altura da plataforma + </string> + <string name="Platform Width"> + Largura da plataforma + </string> + <string name="Pointy"> + Pontudo + </string> + <string name="Pointy Heels"> + Salto agulha + </string> + <string name="Pointy Toe"> + Dedo dos pés pontudo + </string> + <string name="Ponytail"> + Rabo de cavalo + </string> + <string name="Poofy Skirt"> + Saia bufante + </string> + <string name="Pop Left Eye"> + Olho saltado esquerdo + </string> + <string name="Pop Right Eye"> + Olho saltado direito + </string> + <string name="Puffy"> + Inchado + </string> + <string name="Puffy Eyelids"> + Pálpebras inchadas + </string> + <string name="Rainbow Color"> + Cor do arco iris + </string> + <string name="Red Hair"> + Cabelo ruivo + </string> + <string name="Red Skin"> + Pele vermelha + </string> + <string name="Regular"> + Normal + </string> + <string name="Regular Muscles"> + Músculos normais + </string> + <string name="Right Part"> + Parte direita + </string> + <string name="Rosy Complexion"> + Rosado da face + </string> + <string name="Round"> + Arredondado + </string> + <string name="Round Forehead"> + Testa arredonda + </string> + <string name="Ruddiness"> + Rubor + </string> + <string name="Ruddy"> + Corado + </string> + <string name="Rumpled Hair"> + Cabelo desalinhado + </string> + <string name="Saddle Bags"> + Saddle Bags + </string> + <string name="Saddlebags"> + Saddlebags + </string> + <string name="Scrawny"> + Magricela + </string> + <string name="Scrawny Leg"> + Pernas magricelas + </string> + <string name="Separate"> + Separar + </string> + <string name="Shading"> + Sombreamento + </string> + <string name="Shadow hair"> + Sombra do cabelo + </string> + <string name="Shallow"> + raso + </string> + <string name="Shear Back"> + Trás rente + </string> + <string name="Shear Face"> + Face raspada + </string> + <string name="Shear Front"> + Frente rente + </string> + <string name="Shear Left"> + Rente esquerda + </string> + <string name="Shear Left Up"> + Esquerda rente para cima + </string> + <string name="Shear Right"> + Direita rente + </string> + <string name="Shear Right Up"> + Trás rente para cima + </string> + <string name="Sheared Back"> + Rente atrás + </string> + <string name="Sheared Front"> + Rente frente + </string> + <string name="Shift Left"> + Deslocar à esquerda + </string> + <string name="Shift Mouth"> + Deslocar boca + </string> + <string name="Shift Right"> + Deslocar direita + </string> + <string name="Shirt Bottom"> + Deslocar inferior + </string> + <string name="Shirt Fit"> + Deslocar ajuste + </string> + <string name="Shirt Wrinkles"> + Deslocar dobras + </string> + <string name="Shoe Height"> + Altura do sapato + </string> + <string name="Short"> + Curto + </string> + <string name="Short Arms"> + Braços curtos + </string> + <string name="Short Legs"> + Pernas curtas + </string> + <string name="Short Neck"> + Pescoço curto + </string> + <string name="Short Pigtails"> + Chiquinhas curtas + </string> + <string name="Short Ponytail"> + Rabo de cavalo curto + </string> + <string name="Short Sideburns"> + Costeletas curtas + </string> + <string name="Short Torso"> + Tronco curto + </string> + <string name="Short hips"> + Quadril curto + </string> + <string name="Shoulders"> + Ombros + </string> + <string name="Side Bangs"> + Franja lateral + </string> + <string name="Side Bangs Down"> + Franja lateral longa + </string> + <string name="Side Bangs Up"> + Franja lateral arrepiada + </string> + <string name="Side Fringe"> + pontas laterais + </string> + <string name="Sideburns"> + Costeletas + </string> + <string name="Sides Hair"> + Cabelo lateral + </string> + <string name="Sides Hair Down"> + Cabelo lateral long + </string> + <string name="Sides Hair Up"> + Cabelo lateral superior + </string> + <string name="Skinny"> + Magro + </string> + <string name="Skinny Neck"> + Pescoço fino + </string> + <string name="Skirt Fit"> + Ajuste de saia + </string> + <string name="Skirt Length"> + Comprimento da saia + </string> + <string name="Slanted Forehead"> + Testa inclinada + </string> + <string name="Sleeve Length"> + Comprimento da manga + </string> + <string name="Sleeve Looseness"> + Folga da manga + </string> + <string name="Slit Back"> + Abertura : Atrás + </string> + <string name="Slit Front"> + Abertura: Frente + </string> + <string name="Slit Left"> + Abertura: Esquerda + </string> + <string name="Slit Right"> + Abertura: Direita + </string> + <string name="Small"> + Pequeno + </string> + <string name="Small Hands"> + Mãos pequenas + </string> + <string name="Small Head"> + Cabeça pequena + </string> + <string name="Smooth"> + Suavizar + </string> + <string name="Smooth Hair"> + Suavizar cabelo + </string> + <string name="Socks Length"> + Comprimento das meias + </string> + <string name="Some"> + Alguns + </string> + <string name="Soulpatch"> + Cavanhaque + </string> + <string name="Sparse"> + Disperso + </string> + <string name="Spiked Hair"> + Cabelo espetado + </string> + <string name="Square"> + Quadrado + </string> + <string name="Square Toe"> + Dedo quadrado + </string> + <string name="Squash Head"> + Cabeça de Pera + </string> + <string name="Squash/Stretch Head"> + Cabeça esticada/forma de pera + </string> + <string name="Stretch Head"> + Cabeça esticada + </string> + <string name="Sunken"> + Afundar + </string> + <string name="Sunken Chest"> + Peito afundado + </string> + <string name="Sunken Eyes"> + Olhos afundados + </string> + <string name="Sweep Back"> + Pentear para trás + </string> + <string name="Sweep Forward"> + Pentear para frente + </string> + <string name="Swept Back"> + Pentear para trás + </string> + <string name="Swept Back Hair"> + Cabelo penteado para trás + </string> + <string name="Swept Forward"> + Penteado para frente + </string> + <string name="Swept Forward Hair"> + Cabelo penteado para frente + </string> + <string name="Tall"> + Alto + </string> + <string name="Taper Back"> + Afinar atrás + </string> + <string name="Taper Front"> + Afinar a frente + </string> + <string name="Thick Heels"> + Salto grosso + </string> + <string name="Thick Neck"> + Pescoço grosso + </string> + <string name="Thick Toe"> + Dedo grosso + </string> + <string name="Thickness"> + Espessura + </string> + <string name="Thin"> + Fino + </string> + <string name="Thin Eyebrows"> + Sobrancelhas finas + </string> + <string name="Thin Lips"> + Lábios finos + </string> + <string name="Thin Nose"> + Nariz fino + </string> + <string name="Tight Chin"> + Queixo apertado + </string> + <string name="Tight Cuffs"> + Punho justo + </string> + <string name="Tight Pants"> + Calça justa + </string> + <string name="Tight Shirt"> + Camisa justa + </string> + <string name="Tight Skirt"> + Saia justa + </string> + <string name="Tight Sleeves"> + Tight Sleeves + </string> + <string name="Tilt Left"> + Inclinado à esquerda + </string> + <string name="Tilt Right"> + Inclinado à direita + </string> + <string name="Toe Shape"> + Formato dos dedos + </string> + <string name="Toe Thickness"> + Espessura dos dos dedos + </string> + <string name="Torso Length"> + Comprimento do tronco + </string> + <string name="Torso Muscles"> + Músculos do tronco + </string> + <string name="Torso Scrawny"> + Tronco magricela + </string> + <string name="Unattached"> + Desanexado + </string> + <string name="Uncreased"> + Uncreased + </string> + <string name="Underbite"> + Underbite + </string> + <string name="Unnatural"> + Não natural + </string> + <string name="Upper Bridge"> + Parte alta do nariz + </string> + <string name="Upper Cheeks"> + Bochechas altas + </string> + <string name="Upper Chin Cleft"> + fenda do queixo alta + </string> + <string name="Upper Eyelid Fold"> + Curvatura dos cílios supériores + </string> + <string name="Upturned"> + Voltado para cima + </string> + <string name="Very Red"> + Bem vermelho + </string> + <string name="Waist Height"> + Altura da cintura + </string> + <string name="Well-Fed"> + Corpulento + </string> + <string name="White Hair"> + Grisalho + </string> + <string name="Wide"> + Amplo + </string> + <string name="Wide Back"> + Costas largas + </string> + <string name="Wide Front"> + Testa larga + </string> + <string name="Wide Lips"> + Lábios amplos + </string> + <string name="Wild"> + Selvagem + </string> + <string name="Wrinkles"> + Rugas + </string> + <string name="LocationCtrlAddLandmarkTooltip"> + Adicionar às minhas Landmarks + </string> + <string name="LocationCtrlEditLandmarkTooltip"> + Editar minhas Landmarks + </string> + <string name="LocationCtrlInfoBtnTooltip"> + Ver mais informações sobre a localização atual + </string> + <string name="LocationCtrlComboBtnTooltip"> + Meu histórico de localizações + </string> + <string name="UpdaterWindowTitle"> + [APP_NAME] Atualização + </string> + <string name="UpdaterNowUpdating"> + Atualizando agora o [APP_NAME]... + </string> + <string name="UpdaterNowInstalling"> + Instalando [APP_NAME]... + </string> + <string name="UpdaterUpdatingDescriptive"> + Seu visualizador [APP_NAME] está sendo atualizado para a versão mais recente. Isso pode levar algum tempo, então por favor seja paciente. + </string> + <string name="UpdaterProgressBarTextWithEllipses"> + Fazendo o download da atualização... + </string> + <string name="UpdaterProgressBarText"> + Fazendo o download da atualização + </string> + <string name="UpdaterFailDownloadTitle"> + Falha no download da atualização + </string> + <string name="UpdaterFailUpdateDescriptive"> + Um erro ocorreu ao atualizar [APP_NAME]. Por favor, faça o download da versão mais recente em www.secondlife.com. + </string> + <string name="UpdaterFailInstallTitle"> + Falha ao instalar a atualização + </string> + <string name="UpdaterFailStartTitle"> + Falha ao iniciar o visualizador + </string> + <string name="IM_logging_string"> + -- Log de mensagem instantânea habilitado -- + </string> + <string name="IM_typing_start_string"> + [NAME] está digitando... + </string> + <string name="Unnamed"> + (Anônimo) + </string> + <string name="IM_moderated_chat_label"> + (Moderado: Voz desativado por padrão) + </string> + <string name="IM_unavailable_text_label"> + Bate-papo de texto não está disponível para esta chamada. + </string> + <string name="IM_muted_text_label"> + Seu bate- papo de texto foi desabilitado por um Moderador do Grupo. + </string> + <string name="IM_default_text_label"> + Clique aqui para menagem instantânea. + </string> + <string name="IM_to_label"> + Para + </string> + <string name="IM_moderator_label"> + (Moderador) </string> - <string name="ScriptQuestionCautionChatGranted"> - '[OBJECTNAME]', um objeto de '[OWNERNAME]', localizado em [REGIONNAME] a [REGIONPOS], obteve permissão para: [PERMISSIONS]. - </string> - <string name="ScriptQuestionCautionChatDenied"> - '[OBJECTNAME]', um objeto de '[OWNERNAME]', localizado em [REGIONNAME] a [REGIONPOS], teve permissão negada para: [PERMISSIONS]. - </string> - <string name="ScriptTakeMoney"> - Tomar linden dólares (L$) de você - </string> - <string name="ActOnControlInputs"> - Atue nas suas entradas de controle - </string> - <string name="RemapControlInputs"> - Remapeie suas entradas de controle - </string> - <string name="AnimateYourAvatar"> - Faça uma animação para o seu avatar - </string> - <string name="AttachToYourAvatar"> - Anexe ao seu avatar - </string> - <string name="ReleaseOwnership"> - Libere a propriedade e torne-a pública - </string> - <string name="LinkAndDelink"> - Una e desuna de outros objetos - </string> - <string name="AddAndRemoveJoints"> - Adicione e remova junções com outros objetos - </string> - <string name="ChangePermissions"> - Modifique as permissões - </string> - <string name="TrackYourCamera"> - Acompanhe sua câmera - </string> - <string name="ControlYourCamera"> - Controle sua camera - </string> <string name="only_user_message"> Você é o único usuário desta sessão. </string> @@ -621,31 +3245,4 @@ <string name="close_on_no_ability"> Você não possui mais a habilidade de estar na sessão de bate-papo. </string> - <string name="AcctTypeResident"> - Residente - </string> - <string name="AcctTypeTrial"> - Teste - </string> - <string name="AcctTypeCharterMember"> - Estatuto do membro - </string> - <string name="AcctTypeEmployee"> - Contratado da Linden Lab - </string> - <string name="PaymentInfoUsed"> - Infor. de pagamento utilizadas - </string> - <string name="PaymentInfoOnFile"> - Infor. de pagamento no arquivo - </string> - <string name="NoPaymentInfoOnFile"> - Sem infor. de pagamento no arquivo - </string> - <string name="AgeVerified"> - Idade Verificada - </string> - <string name="NotAgeVerified"> - Idade não Verificada - </string> </strings> diff --git a/indra/newview/skins/default/xui/pt/teleport_strings.xml b/indra/newview/skins/default/xui/pt/teleport_strings.xml index 6eecc45bcf..1a0461082b 100644 --- a/indra/newview/skins/default/xui/pt/teleport_strings.xml +++ b/indra/newview/skins/default/xui/pt/teleport_strings.xml @@ -2,12 +2,12 @@ <teleport_messages> <message_set name="errors"> <message name="invalid_tport"> - Problema encontrado ao processar seu pedido de Teletransporte. Você pode tentar reiniciar antes de tentar teletransportar-se. Se você continuar a receber esta mensagem, por favor verifique a FAQ do Suporte Técnico em: -www.secondlife.com/support + Houve um problema ao processar o teletransporte. Talvez seja preciso sair e entrar do Second Life para fazer o teletransporte. +Se você continuar a receber esta mensagem, por favor consulte o [SUPPORT_SITE]. </message> <message name="invalid_region_handoff"> - Problema encontrado ao processar a passagem de regiões. Você pode tentar reiniciar antes de tentar atravessar regiões novamente. Se você continuar a receber esta mensagem, por favor verifique a FAQ do Suporte Técnico em: -www.secondlife.com/support + Problema encontrado ao processar a passagem de regiões. Talvez seja preciso sair e entrar do Second Life atravessar regiões novamente. +Se você continuar a receber esta mensagem, por favor consulte o [SUPPORT_SITE]. </message> <message name="blocked_tport"> Desculpe, teletransportes estão atualmente bloqueados. Tente novamente dentro de alguns instantes. Se você continuar com problemas de teletransporte, por favor tente deslogar e relogar para resolver o problema. diff --git a/indra/newview/tests/lldateutil_test.cpp b/indra/newview/tests/lldateutil_test.cpp index 142a5eb5e6..7ba82fbd2c 100644 --- a/indra/newview/tests/lldateutil_test.cpp +++ b/indra/newview/tests/lldateutil_test.cpp @@ -179,4 +179,14 @@ namespace tut LLDateUtil::ageFromDate("12/31/2009", mNow), "Joined today" ); } + + template<> template<> + void dateutil_object_t::test<5>() + { + set_test_name("2010 rollover"); + LLDate now(std::string("2010-01-04T12:00:00Z")); + ensure_equals("days", + LLDateUtil::ageFromDate("12/13/2009", now), + "3 weeks old" ); + } } diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp index 7b28a3b72c..ef93586c6e 100644 --- a/indra/newview/tests/lllogininstance_test.cpp +++ b/indra/newview/tests/lllogininstance_test.cpp @@ -2,7 +2,7 @@ * @file lllogininstance_test.cpp * @brief Test for lllogininstance.cpp. * - * $LicenseInfo:firstyear=2008&license=internal$ + * $LicenseInfo:firstyear=2008&license=viewergpl$ * Copyright (c) 2008, Linden Research, Inc. * $/LicenseInfo$ */ @@ -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 { diff --git a/indra/newview/tests/llviewerhelputil_test.cpp b/indra/newview/tests/llviewerhelputil_test.cpp index ec612c4606..eecc79d36c 100644 --- a/indra/newview/tests/llviewerhelputil_test.cpp +++ b/indra/newview/tests/llviewerhelputil_test.cpp @@ -78,9 +78,22 @@ static void substitute_string(std::string &input, const std::string &search, con } } +class LLAgent +{ +public: + LLAgent() {} + ~LLAgent() {} +#ifdef __GNUC__ + __attribute__ ((noinline)) +#endif + bool isGodlike() const { return FALSE; } +}; +LLAgent gAgent; + std::string LLWeb::expandURLSubstitutions(const std::string &url, const LLSD &default_subs) { + (void)gAgent.isGodlike(); // ref symbol to stop compiler from stripping it std::string new_url = url; substitute_string(new_url, "[TOPIC]", default_subs["TOPIC"].asString()); substitute_string(new_url, "[VERSION]", gVersion); @@ -91,6 +104,7 @@ std::string LLWeb::expandURLSubstitutions(const std::string &url, return new_url; } + //---------------------------------------------------------------------------- namespace tut diff --git a/indra/newview/tests/llxmlrpclistener_test.cpp b/indra/newview/tests/llxmlrpclistener_test.cpp index c94ba0a3e8..c2c7e963b9 100644 --- a/indra/newview/tests/llxmlrpclistener_test.cpp +++ b/indra/newview/tests/llxmlrpclistener_test.cpp @@ -4,7 +4,7 @@ * @date 2009-03-20 * @brief Test for llxmlrpclistener. * - * $LicenseInfo:firstyear=2009&license=internal$ + * $LicenseInfo:firstyear=2009&license=viewergpl$ * Copyright (c) 2009, Linden Research, Inc. * $/LicenseInfo$ */ diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 0db18525d7..3f379fcf75 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -822,13 +822,15 @@ class LinuxManifest(ViewerManifest): 'dst': self.get_dst_prefix(), 'inst': self.build_path_of(installer_name)}) try: - # --numeric-owner hides the username of the builder for - # security etc. - self.run_command('tar -C %(dir)s --numeric-owner -cjf ' - '%(inst_path)s.tar.bz2 %(inst_name)s' % { - 'dir': self.get_build_prefix(), - 'inst_name': installer_name, - 'inst_path':self.build_path_of(installer_name)}) + # 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 ' + '%(inst_path)s.tar.bz2 %(inst_name)s' % { + 'dir': self.get_build_prefix(), + 'inst_name': installer_name, + 'inst_path':self.build_path_of(installer_name)}) finally: self.run_command("mv %(inst)s %(dst)s" % { 'dst': self.get_dst_prefix(), @@ -852,9 +854,10 @@ class Linux_i686Manifest(LinuxManifest): print "Skipping %s - not found" % libfile pass - self.path("secondlife-stripped","bin/do-not-directly-run-secondlife-bin") - self.path("../linux_crash_logger/linux-crash-logger-stripped","bin/linux-crash-logger.bin") - self.path("../linux_updater/linux-updater-stripped", "bin/linux-updater.bin") + self.path("secondlife-bin","bin/do-not-directly-run-secondlife-bin") + + self.path("../linux_crash_logger/linux-crash-logger","bin/linux-crash-logger.bin") + self.path("../linux_updater/linux-updater", "bin/linux-updater.bin") self.path("../llplugin/slplugin/SLPlugin", "bin/SLPlugin") if self.prefix("res-sdl"): self.path("*") @@ -905,23 +908,16 @@ class Linux_i686Manifest(LinuxManifest): if self.prefix(src="vivox-runtime/i686-linux", dst="lib"): self.path("libortp.so") self.path("libsndfile.so.1") - #self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OAL lib + #self.path("libvivoxoal.so.1") # no - we'll re-use the viewer's own OpenAL lib self.path("libvivoxsdk.so") self.path("libvivoxplatform.so") self.end_prefix("lib") -class Linux_x86_64Manifest(LinuxManifest): - def construct(self): - super(Linux_x86_64Manifest, self).construct() - self.path("secondlife-stripped","bin/do-not-directly-run-secondlife-bin") - self.path("../linux_crash_logger/linux-crash-logger-stripped","linux-crash-logger.bin") - if self.prefix("res-sdl"): - self.path("*") - # recurse - self.end_prefix("res-sdl") + if self.args['buildtype'].lower() == 'release': + print "* Going strip-crazy on the packaged binaries, since this is a RELEASE build" + self.run_command("find %(d)r/bin %(d)r/lib -type f | xargs --no-run-if-empty strip -S" % {'d': self.get_dst_prefix()} ) # makes some small assumptions about our packaged dir structure - self.path("featuretable_linux.txt") - self.path("secondlife-i686.supp") +################################################################ if __name__ == "__main__": main() diff --git a/indra/test/llhttpclient_tut.cpp b/indra/test/llhttpclient_tut.cpp index c541997e89..2b1496e912 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(); diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp index d183aac208..0ff53f3e00 100644 --- a/indra/test_apps/llplugintest/llmediaplugintest.cpp +++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp @@ -1169,8 +1169,8 @@ void LLMediaPluginTest::keyboard( int key ) exit( 0 ); }; - mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_DOWN, key, 0 ); - mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_UP, key, 0 ); + mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_DOWN, key, 0 , LLSD()); + mSelectedPanel->mMediaSource->keyEvent( LLPluginClassMedia::KEY_EVENT_UP, key, 0, LLSD()); }; //////////////////////////////////////////////////////////////////////////////// diff --git a/indra/viewer_components/login/lllogin.cpp b/indra/viewer_components/login/lllogin.cpp index 364088ab31..b9f61ca7e1 100644 --- a/indra/viewer_components/login/lllogin.cpp +++ b/indra/viewer_components/login/lllogin.cpp @@ -143,7 +143,7 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD credential << " with uri '" << uri << "', credentials " << printable_credentials << LL_ENDL; // Arriving in SRVRequest state - LLEventStream replyPump("reply", true); + LLEventStream replyPump("SRVreply", true); // Should be an array of one or more uri strings. LLSD rewrittenURIs; { @@ -160,8 +160,11 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD credential seconds_to_timeout = credentials["cfg_srv_timeout"].asReal(); } - filter.eventAfter(seconds_to_timeout, - getProgressEventLLSD("offline", "fail.login")); + // If the SRV request times out (e.g. EXT-3934), simulate response: an + // array containing our original URI. + LLSD fakeResponse(LLSD::emptyArray()); + fakeResponse.append(uri); + filter.eventAfter(seconds_to_timeout, fakeResponse); std::string srv_pump_name = "LLAres"; if(credentials.has("cfg_srv_pump")) @@ -178,6 +181,10 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD credential } // we no longer need the filter LLEventPump& xmlrpcPump(LLEventPumps::instance().obtain("LLXMLRPCTransaction")); + // EXT-4193: use a DIFFERENT reply pump than for the SRV request. We used + // to share them -- but the EXT-3934 fix made it possible for an abandoned + // SRV response to arrive just as we were expecting the XMLRPC response. + LLEventStream loginReplyPump("loginreply", true); // Loop through the rewrittenURIs, counting attempts along the way. // Because of possible redirect responses, we may make more than one @@ -188,7 +195,7 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD credential urit != urend; ++urit) { LLSD request(credentials); - request["reply"] = replyPump.getName(); + request["reply"] = loginReplyPump.getName(); request["uri"] = *urit; std::string status; @@ -213,11 +220,11 @@ void LLLogin::Impl::login_(LLCoros::self& self, std::string uri, LLSD credential // possible for the reply to arrive before the post() call // returns. Subsequent responses, of course, must be awaited // without posting again. - for (mAuthResponse = validateResponse(replyPump.getName(), - postAndWait(self, request, xmlrpcPump, replyPump, "reply")); + for (mAuthResponse = validateResponse(loginReplyPump.getName(), + postAndWait(self, request, xmlrpcPump, loginReplyPump, "reply")); mAuthResponse["status"].asString() == "Downloading"; - mAuthResponse = validateResponse(replyPump.getName(), - waitForEventOn(self, replyPump))) + mAuthResponse = validateResponse(loginReplyPump.getName(), + waitForEventOn(self, loginReplyPump))) { // Still Downloading -- send progress update. sendProgressEvent("offline", "downloading"); diff --git a/indra/viewer_components/login/tests/lllogin_test.cpp b/indra/viewer_components/login/tests/lllogin_test.cpp index 7159959a4f..51f5cd0692 100644 --- a/indra/viewer_components/login/tests/lllogin_test.cpp +++ b/indra/viewer_components/login/tests/lllogin_test.cpp @@ -215,14 +215,14 @@ namespace tut void llviewerlogin_object::test<1>() { DEBUG; - // Testing login with immediate repsonses from Ares and XMLPRC + // Testing login with immediate responses from Ares and XMLPRC // The response from both requests will come before the post request exits. // This tests an edge case of the login state handling. LLEventStream llaresPump("LLAres"); // Dummy LLAres pump. LLEventStream xmlrpcPump("LLXMLRPCTransaction"); // Dummy XMLRPC pump bool respond_immediately = true; - // Have 'dummy ares' repsond immediately. + // Have 'dummy ares' respond immediately. LLAresListener dummyLLAres("dummy_llares", respond_immediately); dummyLLAres.listenTo(llaresPump); @@ -251,7 +251,7 @@ namespace tut DEBUG; // Tests a successful login in with delayed responses. // Also includes 'failure' that cause the login module - // To re-attempt connection, once from a basic failure + // to re-attempt connection, once from a basic failure // and once from the 'indeterminate' response. set_test_name("LLLogin multiple srv uris w/ success"); @@ -441,8 +441,8 @@ namespace tut // Testing normal login procedure. LLEventStream llaresPump("LLAres"); // Dummy LLAres pump. - // LLAresListener dummyLLAres("dummy_llares"); - // dummyLLAres.listenTo(llaresPump); + LLAresListener dummyLLAres("dummy_llares"); + dummyLLAres.listenTo(llaresPump); LLLogin login; LoginListener listener("test_ear"); @@ -464,6 +464,18 @@ namespace tut LLSD frame_event; mainloop.post(frame_event); - ensure_equals("SRV Failure", listener.lastEvent()["change"].asString(), "fail.login"); + // In this state we have NOT sent a reply from LLAresListener -- in + // fact there's no such object. Nonetheless, we expect the timeout to + // have stepped the login module forward to try to authenticate with + // the original URI. + ensure_equals("Auth state", listener.lastEvent()["change"].asString(), "authenticating"); + ensure_equals("Attempt", listener.lastEvent()["data"]["attempt"].asInteger(), 1); + ensure_equals("URI", listener.lastEvent()["data"]["request"]["uri"].asString(), "login.bar.com"); + + // EXT-4193: if the SRV reply isn't lost but merely late, and if it + // arrives just at the moment we're expecting the XMLRPC reply, the + // original code got confused and crashed. Drive that case here. We + // observe that without the fix, this call DOES repro. + dummyLLAres.sendReply(); } } diff --git a/install.xml b/install.xml index fdd7458384..17091d65a6 100644 --- a/install.xml +++ b/install.xml @@ -193,30 +193,30 @@ <key>darwin</key> <map> <key>md5sum</key> - <string>609c469ee1857723260b5a9943b9c2c1</string> + <string>71defd179827bf172b76d6020023e0e8</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-20100222a.tar.bz2</uri> </map> <key>linux</key> <map> <key>md5sum</key> - <string>7085044567999489d82b9ed28f16e480</string> + <string>d58ac1a8396ac983b67cc3e3541457e3</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-20100222a.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> <key>md5sum</key> - <string>6746ae9fd9aff98b15f7b9f0f40334ab</string> + <string>94fd43f534e2055858d524086384907d</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-20100219.tar.bz2</uri> </map> </map> </map> @@ -298,6 +298,25 @@ </map> </map> </map> + <key>pulseaudio</key> + <map> + <key>copyright</key> + <string>Copyright 2004-2006 Lennart Poettering, Copyright 2006 Pierre Ossman (ossman@cendio.se) for Cendio AB</string> + <key>description</key> + <string>pulseaudio: headers only</string> + <key>license</key> + <string>lgpl</string> + <key>packages</key> + <map> + <key>linux</key> + <map> + <key>md5sum</key> + <string>30cb00069fe2a545fbf7be1070386236</string> + <key>url</key> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/linux-pulse-headers-0.9.14.tar.bz2</uri> + </map> + </map> + </map> <key>elfio</key> <map> <key>license</key> @@ -436,9 +455,9 @@ <key>linux</key> <map> <key>md5sum</key> - <string>978ad7c67fe4a2419bfc841e2956ff9f</string> + <string>9de3f44be65645c7f6af236139596942</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/freetype-2.3.9-linux-20090521c.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/freetype-2.3.9-linux-2010-02-19a-nommap.tar.bz2</uri> </map> <key>linux64</key> <map> @@ -948,23 +967,23 @@ anguage Infrstructure (CLI) international standard</string> <key>darwin</key> <map> <key>md5sum</key> - <string>5362a53488693f9bd7d9083758af25eb</string> + <string>95f44f0023dddc80be4398fc4f213861</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20091218.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20100208.tar.bz2</uri> </map> <key>linux</key> <map> <key>md5sum</key> - <string>09674cbae982e7e7f6ebc7e1d06580e8</string> + <string>4c75b2f1e8524c7844ee3ea1cd59a3db</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20091216.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20100209b.tar.bz2</uri> </map> <key>windows</key> <map> <key>md5sum</key> - <string>4dd305f2ce38b2e55a2014ad3a2de34d</string> + <string>1e9798dc424a6f6c2bea50649bbcc7ae</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20091218.tar.bz2</uri> + <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100210.tar.bz2</uri> </map> </map> </map> @@ -1159,9 +1178,9 @@ anguage Infrstructure (CLI) international standard</string> <key>linux</key> <map> <key>md5sum</key> - <string>c8223e9454223e3d519fe40d71c3ddd2</string> + <string>75a7004ab14bea46594b1c652f1a6040</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openal-linux-20091216-56cc0386.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/openal-linux-20100120-3ad86a1c.tar.bz2</uri> </map> <key>linux64</key> <map> @@ -1367,23 +1386,23 @@ anguage Infrstructure (CLI) international standard</string> <key>darwin</key> <map> <key>md5sum</key> - <string>90a08e3a1dffa2ea45c1227c4d4d01f7</string> + <string>bce6f58d3d63bda049bb7059583ed8e8</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.0.0006.7714-darwin-20091208.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.8016-darwin-20100225.tar.bz2</uri> </map> <key>linux</key> <map> <key>md5sum</key> - <string>390fe4ed062cfb05bbc534772837ce5e</string> + <string>12aac7288af3565ac2730796cb6d8de6</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.0.0006.7714-linux-20091208.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.8016-linux-20100225.tar.bz2</uri> </map> <key>windows</key> <map> <key>md5sum</key> - <string>0232fb487bd31ea756604d139b2a2e34</string> + <string>8af04ae8c536e8db80f67e6e5305fb61</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.0.0006.7714-windows-20091208.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/vivox-3.1.0001.8016-windows-20100225.tar.bz2</uri> </map> </map> </map> diff --git a/scripts/install.py b/scripts/install.py index 78b8880b95..7368af0b37 100755 --- a/scripts/install.py +++ b/scripts/install.py @@ -793,8 +793,13 @@ def _getuser(): import getpass return getpass.getuser() except ImportError: - import win32api - return win32api.GetUserName() + import ctypes + MAX_PATH = 260 # according to a recent WinDef.h + name = ctypes.create_unicode_buffer(MAX_PATH) + namelen = ctypes.c_int(len(name)) # len in chars, NOT bytes + if not ctypes.windll.advapi32.GetUserNameW(name, ctypes.byref(namelen)): + raise ctypes.WinError() + return name.value def _default_installable_cache(): """In general, the installable files do not change much, so find a diff --git a/scripts/messages/message_template.msg b/scripts/messages/message_template.msg index a5a99d79f0..d4f791c202 100644 --- a/scripts/messages/message_template.msg +++ b/scripts/messages/message_template.msg @@ -53,7 +53,7 @@ version 2.0 // OpenCircuit - Tells the recipient's messaging system to open the descibed circuit { - OpenCircuit Fixed 0xFFFFFFFC NotTrusted Unencoded + OpenCircuit Fixed 0xFFFFFFFC NotTrusted Unencoded UDPBlackListed { CircuitInfo Single { IP IPADDR } @@ -1383,6 +1383,10 @@ version 2.0 { AgentID LLUUID } { KickedFromEstateID U32 } } + { + AgentInfo Single + { AgentEffectiveMaturity U32 } + } } // DataHomeLocationReply data->sim diff --git a/scripts/template_verifier.py b/scripts/template_verifier.py index 8bb5e1d76d..adcfcbcae6 100755 --- a/scripts/template_verifier.py +++ b/scripts/template_verifier.py @@ -103,7 +103,7 @@ MESSAGE_TEMPLATE = 'message_template.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 @@ -203,8 +203,13 @@ def getuser(): import getpass return getpass.getuser() except ImportError: - import win32api - return win32api.GetUserName() + import ctypes + MAX_PATH = 260 # according to a recent WinDef.h + name = ctypes.create_unicode_buffer(MAX_PATH) + namelen = ctypes.c_int(len(name)) # len in chars, NOT bytes + if not ctypes.windll.advapi32.GetUserNameW(name, ctypes.byref(namelen)): + raise ctypes.WinError() + return name.value def local_master_cache_filename(): """Returns the location of the master template cache (which is in the system tempdir) |