aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden
diff options
context:
space:
mode:
authorDavid Seikel2011-06-04 00:17:28 +1000
committerDavid Seikel2011-06-04 00:17:28 +1000
commit492eaaf4eec82327116f2605e3d8becf94bec1b3 (patch)
treedcddd674cb4861445c3ec5aaa59325b99a437614 /linden
parentSet the real bare minimum prim size to 0.00001, as 0 sized objects cause bugs. (diff)
parentFixing the menu to actually use its color options reveals how broken the whol... (diff)
downloadmeta-impy-492eaaf4eec82327116f2605e3d8becf94bec1b3.zip
meta-impy-492eaaf4eec82327116f2605e3d8becf94bec1b3.tar.gz
meta-impy-492eaaf4eec82327116f2605e3d8becf94bec1b3.tar.bz2
meta-impy-492eaaf4eec82327116f2605e3d8becf94bec1b3.tar.xz
Merge branch 'next' of git://github.com/jacek/imprudence into next
Conflicts (manually merged): linden/indra/llcommon/llversionviewer.h linden/indra/llvfs/lldir.cpp linden/indra/llvfs/lldir_mac.cpp linden/indra/newview/CMakeLists.txt linden/indra/newview/English.lproj/InfoPlist.strings linden/indra/newview/Info-Imprudence.plist linden/indra/newview/Info-meta-impy.plist linden/indra/newview/llappviewer.cpp linden/indra/newview/llpanellogin.cpp linden/indra/newview/packaging/mac/Info.plist.in linden/indra/newview/res/viewerRes.rc linden/indra/newview/skins/default/xui/en-us/floater_about.xml linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml linden/indra/newview/skins/default/xui/en-us/panel_preferences_skins.xml linden/indra/newview/skins/default/xui/en-us/panel_preferences_web.xml linden/indra/newview/skins/default/xui/zh/menu_viewer.xml linden/indra/newview/skins/default/xui/zh/panel_group_general.xml linden/indra/newview/viewer_manifest.py linden/indra/newview/viewerversion.cpp linden/indra/newview/viewerversion.h linden/install.xml Also some post merge tweaks.
Diffstat (limited to 'linden')
-rw-r--r--linden/indra/cmake/00-Common.cmake9
-rw-r--r--linden/indra/cmake/AddPackageTarget.cmake32
-rw-r--r--linden/indra/cmake/Audio.cmake16
-rw-r--r--linden/indra/cmake/BuildVersion.cmake25
-rw-r--r--linden/indra/cmake/DirectX.cmake4
-rw-r--r--linden/indra/cmake/LLWindow.cmake3
-rwxr-xr-xlinden/indra/develop.py6
-rw-r--r--linden/indra/llcommon/CMakeLists.txt10
-rw-r--r--linden/indra/llcommon/llsdserialize.cpp46
-rw-r--r--linden/indra/llcommon/llsdserialize_xml.cpp23
-rw-r--r--linden/indra/llcommon/llversionviewer.h22
-rw-r--r--linden/indra/llmessage/CMakeLists.txt10
-rwxr-xr-xlinden/indra/llplugin/llpluginclassmedia.cpp9
-rwxr-xr-xlinden/indra/llplugin/llpluginclassmedia.h5
-rwxr-xr-xlinden/indra/llplugin/llpluginmessage.cpp13
-rwxr-xr-xlinden/indra/llplugin/llpluginprocesschild.cpp57
-rwxr-xr-xlinden/indra/llplugin/llpluginprocesschild.h6
-rw-r--r--linden/indra/llrender/llglslshader.cpp4
-rw-r--r--linden/indra/llui/lllineeditor.cpp7
-rw-r--r--linden/indra/llui/llmenugl.cpp44
-rw-r--r--linden/indra/llui/llmenugl.h5
-rw-r--r--linden/indra/llui/lltexteditor.cpp12
-rw-r--r--linden/indra/llvfs/lldir.cpp2
-rw-r--r--linden/indra/llvfs/lldir_mac.cpp2
-rw-r--r--linden/indra/newview/CMakeLists.txt183
-rw-r--r--linden/indra/newview/English.lproj/InfoPlist.strings6
-rw-r--r--linden/indra/newview/app_settings/logcontrol.xml5
-rw-r--r--linden/indra/newview/app_settings/settings.xml118
-rw-r--r--linden/indra/newview/app_settings/viewerversion.xml25
-rw-r--r--linden/indra/newview/floaterlocalassetbrowse.cpp2
-rw-r--r--linden/indra/newview/hippogridmanager.cpp2
-rw-r--r--linden/indra/newview/impprefsfonts.cpp15
-rw-r--r--linden/indra/newview/impprefsfonts.h5
-rw-r--r--linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss4
-rw-r--r--linden/indra/newview/kowopenregionsettings.cpp8
-rwxr-xr-xlinden/indra/newview/linux_tools/wrapper.sh8
-rw-r--r--linden/indra/newview/llappviewer.cpp57
-rw-r--r--linden/indra/newview/llappviewerlinux.cpp2
-rw-r--r--linden/indra/newview/lldrawpoolwlsky.cpp17
-rw-r--r--linden/indra/newview/llface.cpp1
-rw-r--r--linden/indra/newview/llface.h2
-rw-r--r--linden/indra/newview/llfloaterabout.cpp18
-rw-r--r--linden/indra/newview/llfloaterchat.cpp2
-rw-r--r--linden/indra/newview/llfloatermediabrowser.cpp9
-rw-r--r--linden/indra/newview/llfloatermediabrowser.h1
-rw-r--r--linden/indra/newview/llfloaterpreference.cpp25
-rw-r--r--linden/indra/newview/llfloaterpreference.h2
-rw-r--r--linden/indra/newview/llfloaterreporter.cpp25
-rw-r--r--linden/indra/newview/llhudeffectlookat.cpp5
-rw-r--r--linden/indra/newview/llimpanel.cpp2
-rw-r--r--linden/indra/newview/llpanelavatar.cpp3
-rw-r--r--linden/indra/newview/llpaneldisplay.cpp50
-rw-r--r--linden/indra/newview/llpaneldisplay.h11
-rw-r--r--linden/indra/newview/llpanelgeneral.cpp47
-rw-r--r--linden/indra/newview/llpanelgeneral.h2
-rw-r--r--linden/indra/newview/llpanelgroupgeneral.cpp1
-rw-r--r--linden/indra/newview/llpanelgroupnotices.cpp8
-rw-r--r--linden/indra/newview/llpanelinput.cpp17
-rw-r--r--linden/indra/newview/llpanelinput.h2
-rw-r--r--linden/indra/newview/llpanellogin.cpp27
-rw-r--r--linden/indra/newview/llpanelmsgs.cpp4
-rw-r--r--linden/indra/newview/llpanelnetwork.cpp241
-rw-r--r--linden/indra/newview/llpanelnetwork.h20
-rw-r--r--linden/indra/newview/llpanelweb.cpp234
-rw-r--r--linden/indra/newview/llpanelweb.h60
-rw-r--r--linden/indra/newview/llprefsadvanced.cpp187
-rw-r--r--linden/indra/newview/llprefsadvanced.h13
-rw-r--r--linden/indra/newview/llprefschat.cpp322
-rw-r--r--linden/indra/newview/llprefschat.h1
-rw-r--r--linden/indra/newview/llprefscolors.cpp30
-rw-r--r--linden/indra/newview/llprefscolors.h4
-rw-r--r--linden/indra/newview/llprefsim.cpp58
-rw-r--r--linden/indra/newview/llprefsim.h2
-rw-r--r--linden/indra/newview/llprefsvoice.cpp6
-rw-r--r--linden/indra/newview/llstartup.cpp20
-rw-r--r--linden/indra/newview/lltexturecache.cpp1
-rw-r--r--linden/indra/newview/lltexturectrl.cpp4
-rw-r--r--linden/indra/newview/lltexturefetch.cpp55
-rw-r--r--linden/indra/newview/lltexturefetch.h2
-rw-r--r--linden/indra/newview/llviewerimagelist.cpp7
-rw-r--r--linden/indra/newview/llviewermedia.cpp11
-rw-r--r--linden/indra/newview/llviewermedia_streamingaudio.cpp2
-rw-r--r--linden/indra/newview/llviewermenu.cpp17
-rwxr-xr-xlinden/indra/newview/llviewermessage.cpp2
-rw-r--r--linden/indra/newview/llviewerwindow.cpp12
-rw-r--r--linden/indra/newview/llvoavatar.cpp64
-rw-r--r--linden/indra/newview/llvoavatar.h4
-rw-r--r--linden/indra/newview/llvoiceclient.cpp805
-rw-r--r--linden/indra/newview/llvoiceclient.h19
-rw-r--r--linden/indra/newview/llvovolume.cpp54
-rw-r--r--linden/indra/newview/llvovolume.h4
-rw-r--r--linden/indra/newview/packaging/mac/ConfigureDMG.scpt110
-rw-r--r--linden/indra/newview/packaging/mac/English.lproj/InfoPlist.strings5
-rw-r--r--linden/indra/newview/packaging/mac/English.lproj/language.txt (renamed from linden/indra/newview/English.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/GenerateInfoPlist.cmake39
-rw-r--r--linden/indra/newview/packaging/mac/German.lproj/language.txt (renamed from linden/indra/newview/German.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/Info.plist.in (renamed from linden/indra/newview/Info-meta-impy.plist)0
-rw-r--r--linden/indra/newview/packaging/mac/Japanese.lproj/language.txt (renamed from linden/indra/newview/Japanese.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/Korean.lproj/language.txt (renamed from linden/indra/newview/Korean.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/background.pngbin0 -> 19029 bytes
-rw-r--r--linden/indra/newview/packaging/mac/da.lproj/language.txt (renamed from linden/indra/newview/da.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/es.lproj/language.txt (renamed from linden/indra/newview/es.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/fr.lproj/language.txt (renamed from linden/indra/newview/fr.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/hu.lproj/language.txt (renamed from linden/indra/newview/hu.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/it.lproj/language.txt (renamed from linden/indra/newview/it.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/nl.lproj/language.txt (renamed from linden/indra/newview/nl.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/pl.lproj/language.txt (renamed from linden/indra/newview/pl.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/pt.lproj/language.txt (renamed from linden/indra/newview/pt.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/ru.lproj/language.txt (renamed from linden/indra/newview/ru.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/tr.lproj/language.txt (renamed from linden/indra/newview/tr.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/uk.lproj/language.txt (renamed from linden/indra/newview/uk.lproj/language.txt)0
-rw-r--r--linden/indra/newview/packaging/mac/viewer.nib/classes.nib (renamed from linden/indra/newview/SecondLife.nib/classes.nib)0
-rw-r--r--linden/indra/newview/packaging/mac/viewer.nib/info.nib (renamed from linden/indra/newview/SecondLife.nib/info.nib)0
-rw-r--r--linden/indra/newview/packaging/mac/viewer.nib/objects.xib (renamed from linden/indra/newview/SecondLife.nib/objects.xib)0
-rw-r--r--linden/indra/newview/packaging/mac/zh-Hans.lproj/language.txt (renamed from linden/indra/newview/zh-Hans.lproj/language.txt)0
-rw-r--r--linden/indra/newview/primbackup.cpp20
-rw-r--r--linden/indra/newview/res/viewerRes.rc14
-rw-r--r--linden/indra/newview/skins/default/textures/textures.xml5
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_about.xml36
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_about_land.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_busy.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_command_line.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_grid_default_selector.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_local_asset_browse.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml43
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_preview_notecard.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_radar.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_login.xml27
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml103
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/notifications.xml102
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_login.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml298
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml128
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml538
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_colors.xml167
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml57
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml392
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml500
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml176
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml238
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml602
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_popups.xml126
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_skins.xml65
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_voice.xml97
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_web.xml68
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_region_estate.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_about.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_about_land.xml221
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_animation_list.xml46
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_animation_preview.xml7
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_ao.xml150
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_area_search.xml51
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_asset_browser.xml18
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_autocorrect.xml72
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_build_options.xml82
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_busy.xml76
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_buy_contents.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_buy_currency.xml18
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_buy_land.xml21
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_buy_object.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_chat_history.xml9
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_chatterbox.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_chatterbox_vertical.xml11
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_choose_group.xml3
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_command_line.xml65
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_customize.xml88
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_dictionaries.xml18
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_directory.xml141
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_display_name.xml47
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_god_tools.xml12
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_grid_default_selector.xml15
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_grid_manager.xml118
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_group_titles.xml19
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_image_preview.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_inspect.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_instant_message.xml22
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_instant_message_group.xml7
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_inventory.xml62
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml1
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_joystick.xml210
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_local_asset_browse.xml98
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_media_browser.xml24
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_media_filter.xml92
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_message_builder.xml20
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_mini_map.xml3
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_name_description.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_new_outfit_dialog.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_notification.xml9
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_pay.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_postcard.xml3
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_preferences.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml50
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_preview_notecard_keep_discard.xml50
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_prim_import.xml7
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_radar.xml191
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_rlv_behaviour.xml14
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_script_ed_panel.xml1
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_search_replace.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_sell_land.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_snapshot.xml36
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_sound_preview.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_teleport_history.xml72
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml35
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_tools.xml95
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_tos.xml3
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_voice_license.xml25
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_water.xml17
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_windlight_manager.xml33
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_windlight_options.xml29
-rw-r--r--linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_attachment.xml7
-rw-r--r--linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_avatar.xml22
-rw-r--r--linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_land.xml12
-rw-r--r--linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_object.xml30
-rw-r--r--linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_self.xml29
-rw-r--r--linden/indra/newview/skins/default/xui/zh/menu_inventory.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/zh/menu_login.xml22
-rw-r--r--linden/indra/newview/skins/default/xui/zh/menu_pie_attachment.xml17
-rw-r--r--linden/indra/newview/skins/default/xui/zh/menu_pie_avatar.xml16
-rw-r--r--linden/indra/newview/skins/default/xui/zh/menu_pie_hud.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/zh/menu_pie_land.xml5
-rw-r--r--linden/indra/newview/skins/default/xui/zh/menu_pie_object.xml24
-rw-r--r--linden/indra/newview/skins/default/xui/zh/menu_pie_self.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/zh/menu_rightclick_text.xml142
-rw-r--r--linden/indra/newview/skins/default/xui/zh/menu_viewer.xml419
-rw-r--r--linden/indra/newview/skins/default/xui/zh/mime_types_linux.xml236
-rw-r--r--linden/indra/newview/skins/default/xui/zh/mime_types_mac.xml236
-rw-r--r--linden/indra/newview/skins/default/xui/zh/mime_types_windows.xml236
-rw-r--r--linden/indra/newview/skins/default/xui/zh/notifications.xml858
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_ao_remote_controls.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_ao_remote_expanded.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_audio.xml3
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_avatar.xml58
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_avatar_classified.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_classified.xml10
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_friends.xml6
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_group_general.xml12
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_group_land_money.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_groups.xml28
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_login.xml25
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_mini_map.xml9
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_overlaybar.xml9
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_particle_settings.xml44
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_place.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_place_small.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml166
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_audio.xml19
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml317
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml81
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_fonts.xml29
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_general.xml124
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml89
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_im.xml20
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_input.xml49
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_network.xml241
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_popups.xml31
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_skins.xml20
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_voice.xml11
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_preferences_web.xml30
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_radar.xml104
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_region_general.xml1
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_region_open_region_settings.xml67
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_speaker_controls.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_status_bar.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_toolbar.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_voice_options.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_windlight_controls.xml19
-rw-r--r--linden/indra/newview/skins/default/xui/zh/strings.xml25
-rwxr-xr-xlinden/indra/newview/viewer_manifest.py41
-rw-r--r--linden/indra/newview/viewerinfo.cpp148
-rw-r--r--linden/indra/newview/viewerinfo.h93
-rw-r--r--linden/indra/newview/viewerversion.cpp89
-rw-r--r--linden/indra/newview/viewerversion.h79
-rwxr-xr-xlinden/install.xml20
-rwxr-xr-xlinden/scripts/build_version.py62
-rwxr-xr-xlinden/scripts/package.py334
-rwxr-xr-xlinden/scripts/viewer_info.py101
280 files changed, 10804 insertions, 4102 deletions
diff --git a/linden/indra/cmake/00-Common.cmake b/linden/indra/cmake/00-Common.cmake
index 583e15e..9ff5906 100644
--- a/linden/indra/cmake/00-Common.cmake
+++ b/linden/indra/cmake/00-Common.cmake
@@ -14,10 +14,13 @@ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO
14 "-DLL_RELEASE=1 -D_SECURE_SCL=0 -DLL_SEND_CRASH_REPORTS=0 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1") 14 "-DLL_RELEASE=1 -D_SECURE_SCL=0 -DLL_SEND_CRASH_REPORTS=0 -DNDEBUG -DLL_RELEASE_WITH_DEBUG_INFO=1")
15 15
16 16
17# Don't bother with a MinSizeRel build. 17# Available build types / configurations.
18# Add our current build type first, to coax Xcode into selecting it by default.
18 19
19set(CMAKE_CONFIGURATION_TYPES "RelWithDebInfo;Release;Debug" CACHE STRING 20set(TYPES ${CMAKE_BUILD_TYPE} RelWithDebInfo Release Debug)
20 "Supported build types." FORCE) 21list(REMOVE_DUPLICATES TYPES)
22set(CMAKE_CONFIGURATION_TYPES ${TYPES} CACHE STRING "Supported build types." FORCE)
23unset(TYPES)
21 24
22 25
23# Determine the number of bits of this processor 26# Determine the number of bits of this processor
diff --git a/linden/indra/cmake/AddPackageTarget.cmake b/linden/indra/cmake/AddPackageTarget.cmake
new file mode 100644
index 0000000..66adf3e
--- /dev/null
+++ b/linden/indra/cmake/AddPackageTarget.cmake
@@ -0,0 +1,32 @@
1# This function adds a custom target named 'package', which runs
2# scripts/package.py to create an installer package.
3#
4# By default, you must manually build the 'package' target when you
5# are ready to create the installer package. But if the global
6# AUTOPACKAGE variable is ON ("cmake -D AUTOPACKAGE:BOOL=ON"), the
7# 'package' target will be added to the default build target.
8
9
10set(AUTOPACKAGE OFF CACHE BOOL
11 "Automatically build an installer package after compiling.")
12
13
14function( add_package_target )
15
16 if (AUTOPACKAGE)
17 add_custom_target(package ALL)
18 else (AUTOPACKAGE)
19 add_custom_target(package)
20 endif (AUTOPACKAGE)
21
22 add_custom_command(
23 TARGET package POST_BUILD
24 COMMAND
25 ${PYTHON_EXECUTABLE}
26 ${SCRIPTS_DIR}/package.py
27 --build-dir=${CMAKE_BINARY_DIR}
28 --build-type=${CMAKE_BUILD_TYPE}
29 --source-dir=${CMAKE_SOURCE_DIR}
30 )
31
32endfunction( add_package_target )
diff --git a/linden/indra/cmake/Audio.cmake b/linden/indra/cmake/Audio.cmake
index d23bc2f..10d11bb 100644
--- a/linden/indra/cmake/Audio.cmake
+++ b/linden/indra/cmake/Audio.cmake
@@ -32,6 +32,12 @@ else (STANDALONE)
32 set(VORBISENC_LIBRARIES vorbisenc) 32 set(VORBISENC_LIBRARIES vorbisenc)
33 set(VORBISFILE_LIBRARIES vorbisfile) 33 set(VORBISFILE_LIBRARIES vorbisfile)
34 endif (WINDOWS) 34 endif (WINDOWS)
35 if(LINUX AND ${ARCH} STREQUAL "x86_64")
36 set(VORBIS_LIBRARY_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib)
37 set(VORBISENC_LIBRARY_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib)
38 set(VORBISFILE_LIBRARY_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib)
39 set(OGG_LIBRARY_DIRS ${LIBS_PREBUILT_DIR}/${LL_ARCH_DIR}/lib)
40 endif(LINUX AND ${ARCH} STREQUAL "x86_64")
35endif (STANDALONE) 41endif (STANDALONE)
36 42
37link_directories( 43link_directories(
@@ -40,3 +46,13 @@ link_directories(
40 ${VORBISFILE_LIBRARY_DIRS} 46 ${VORBISFILE_LIBRARY_DIRS}
41 ${OGG_LIBRARY_DIRS} 47 ${OGG_LIBRARY_DIRS}
42 ) 48 )
49
50if(NOT vorbis_link_msg)
51 set(vorbis_link_msg ON CACHE BOOL "ogg vorbis linked from:\n")
52 message("ogg vorbis linked from:\n"
53 ${VORBIS_LIBRARY_DIRS} "\n"
54 ${VORBISENC_LIBRARY_DIRS} "\n"
55 ${VORBISFILE_LIBRARY_DIRS} "\n"
56 ${OGG_LIBRARY_DIRS} "\n"
57 )
58endif(NOT vorbis_link_msg)
diff --git a/linden/indra/cmake/BuildVersion.cmake b/linden/indra/cmake/BuildVersion.cmake
index 59b36ff..f86e9e5 100644
--- a/linden/indra/cmake/BuildVersion.cmake
+++ b/linden/indra/cmake/BuildVersion.cmake
@@ -2,17 +2,32 @@
2 2
3include(Python) 3include(Python)
4 4
5if (NOT SCRIPTS_DIR)
6 set( SCRIPTS_DIR "${CMAKE_SOURCE_DIR}/../scripts" )
7endif (NOT SCRIPTS_DIR)
8
5macro (build_version _target) 9macro (build_version _target)
6 execute_process( 10 execute_process(
7 COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/build_version.py 11 COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/viewer_info.py --version
8 viewerversion.xml ${CMAKE_CURRENT_SOURCE_DIR}/app_settings/
9 OUTPUT_VARIABLE ${_target}_VERSION 12 OUTPUT_VARIABLE ${_target}_VERSION
10 OUTPUT_STRIP_TRAILING_WHITESPACE 13 OUTPUT_STRIP_TRAILING_WHITESPACE
11 ) 14 )
12 15
13 if (${_target}_VERSION) 16 execute_process(
14 message(STATUS "Version of ${_target} is ${${_target}_VERSION}") 17 COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/viewer_info.py --name
18 OUTPUT_VARIABLE ${_target}_NAME
19 OUTPUT_STRIP_TRAILING_WHITESPACE
20 )
21
22 execute_process(
23 COMMAND ${PYTHON_EXECUTABLE} ${SCRIPTS_DIR}/viewer_info.py --bundle-id
24 OUTPUT_VARIABLE ${_target}_BUNDLE_ID
25 OUTPUT_STRIP_TRAILING_WHITESPACE
26 )
27
28 if ("${_target}_VERSION" AND "${_target}_NAME")
29 message(STATUS "Version of ${_target} is ${${_target}_NAME} ${${_target}_VERSION}")
15 else (${_target}_VERSION) 30 else (${_target}_VERSION)
16 message(SEND_ERROR "Could not determine ${_target} version") 31 message(SEND_ERROR "Could not determine ${_target} version")
17 endif (${_target}_VERSION) 32 endif ("${_target}_VERSION" AND "${_target}_NAME")
18endmacro (build_version) 33endmacro (build_version)
diff --git a/linden/indra/cmake/DirectX.cmake b/linden/indra/cmake/DirectX.cmake
index d406f37..e455755 100644
--- a/linden/indra/cmake/DirectX.cmake
+++ b/linden/indra/cmake/DirectX.cmake
@@ -3,6 +3,8 @@
3if (VIEWER AND WINDOWS) 3if (VIEWER AND WINDOWS)
4 find_path(DIRECTX_INCLUDE_DIR dxdiag.h 4 find_path(DIRECTX_INCLUDE_DIR dxdiag.h
5 "$ENV{DXSDK_DIR}/Include" 5 "$ENV{DXSDK_DIR}/Include"
6 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Include"
7 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Include"
6 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Include" 8 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Include"
7 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Include" 9 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Include"
8 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Include" 10 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Include"
@@ -23,6 +25,8 @@ if (VIEWER AND WINDOWS)
23 25
24 find_path(DIRECTX_LIBRARY_DIR dxguid.lib 26 find_path(DIRECTX_LIBRARY_DIR dxguid.lib
25 "$ENV{DXSDK_DIR}/Lib/x86" 27 "$ENV{DXSDK_DIR}/Lib/x86"
28 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2010)/Lib/x86"
29 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2009)/Lib/x86"
26 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Lib/x86" 30 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (August 2008)/Lib/x86"
27 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Lib/x86" 31 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (June 2008)/Lib/x86"
28 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Lib/x86" 32 "$ENV{PROGRAMFILES}/Microsoft DirectX SDK (March 2008)/Lib/x86"
diff --git a/linden/indra/cmake/LLWindow.cmake b/linden/indra/cmake/LLWindow.cmake
index 1023693..345359a 100644
--- a/linden/indra/cmake/LLWindow.cmake
+++ b/linden/indra/cmake/LLWindow.cmake
@@ -45,4 +45,7 @@ else (SERVER AND LINUX)
45 comdlg32 45 comdlg32
46 ) 46 )
47 endif (WINDOWS) 47 endif (WINDOWS)
48 if (LINUX)
49 list(APPEND LLWINDOW_LIBRARIES fontconfig)
50 endif (LINUX)
48endif (SERVER AND LINUX) 51endif (SERVER AND LINUX)
diff --git a/linden/indra/develop.py b/linden/indra/develop.py
index a705719..9f7c4f2 100755
--- a/linden/indra/develop.py
+++ b/linden/indra/develop.py
@@ -121,7 +121,7 @@ class PlatformSetup(object):
121 opts=quote(opts), 121 opts=quote(opts),
122 standalone=self.standalone, 122 standalone=self.standalone,
123 unattended=self.unattended, 123 unattended=self.unattended,
124 type=self.build_type.upper(), 124 type=self.build_type,
125 ) 125 )
126 #if simple: 126 #if simple:
127 # return 'cmake %(opts)s %(dir)r' % args 127 # return 'cmake %(opts)s %(dir)r' % args
@@ -287,7 +287,7 @@ class LinuxSetup(UnixSetup):
287 opts=quote(opts), 287 opts=quote(opts),
288 standalone=self.standalone, 288 standalone=self.standalone,
289 unattended=self.unattended, 289 unattended=self.unattended,
290 type=self.build_type.upper(), 290 type=self.build_type,
291 project_name=self.project_name 291 project_name=self.project_name
292 ) 292 )
293 if not self.is_internal_tree(): 293 if not self.is_internal_tree():
@@ -427,7 +427,7 @@ class DarwinSetup(UnixSetup):
427 unattended=self.unattended, 427 unattended=self.unattended,
428 project_name=self.project_name, 428 project_name=self.project_name,
429 universal=self.universal, 429 universal=self.universal,
430 type=self.build_type.upper() 430 type=self.build_type
431 ) 431 )
432 if self.universal == 'ON': 432 if self.universal == 'ON':
433 args['universal'] = '-DCMAKE_OSX_ARCHITECTURES:STRING=\'i386\'' 433 args['universal'] = '-DCMAKE_OSX_ARCHITECTURES:STRING=\'i386\''
diff --git a/linden/indra/llcommon/CMakeLists.txt b/linden/indra/llcommon/CMakeLists.txt
index ed04ca6..b6015a8 100644
--- a/linden/indra/llcommon/CMakeLists.txt
+++ b/linden/indra/llcommon/CMakeLists.txt
@@ -200,7 +200,7 @@ set_source_files_properties(${llcommon_HEADER_FILES}
200list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES}) 200list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES})
201 201
202add_library (llcommon SHARED ${llcommon_SOURCE_FILES}) 202add_library (llcommon SHARED ${llcommon_SOURCE_FILES})
203target_link_libraries( 203set (llcommon_link_LIBRARIES
204 llcommon 204 llcommon
205 ${APRUTIL_LIBRARIES} 205 ${APRUTIL_LIBRARIES}
206 ${APR_LIBRARIES} 206 ${APR_LIBRARIES}
@@ -218,3 +218,11 @@ if (DARWIN)
218 INSTALL_NAME_DIR "@executable_path/../Resources" 218 INSTALL_NAME_DIR "@executable_path/../Resources"
219 ) 219 )
220endif (DARWIN) 220endif (DARWIN)
221
222if (LINUX)
223 list(APPEND llcommon_link_LIBRARIES rt)
224endif (LINUX)
225
226target_link_libraries(
227 ${llcommon_link_LIBRARIES}
228 )
diff --git a/linden/indra/llcommon/llsdserialize.cpp b/linden/indra/llcommon/llsdserialize.cpp
index 9f4ce64..e2be922 100644
--- a/linden/indra/llcommon/llsdserialize.cpp
+++ b/linden/indra/llcommon/llsdserialize.cpp
@@ -441,7 +441,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
441 } 441 }
442 if(istr.fail()) 442 if(istr.fail())
443 { 443 {
444 llinfos << "STREAM FAILURE reading map." << llendl; 444 llwarns << "STREAM FAILURE reading map." << llendl;
445 parse_count = PARSE_FAILURE; 445 parse_count = PARSE_FAILURE;
446 } 446 }
447 break; 447 break;
@@ -460,7 +460,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
460 } 460 }
461 if(istr.fail()) 461 if(istr.fail())
462 { 462 {
463 llinfos << "STREAM FAILURE reading array." << llendl; 463 llwarns << "STREAM FAILURE reading array." << llendl;
464 parse_count = PARSE_FAILURE; 464 parse_count = PARSE_FAILURE;
465 } 465 }
466 break; 466 break;
@@ -496,7 +496,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
496 } 496 }
497 if(istr.fail()) 497 if(istr.fail())
498 { 498 {
499 llinfos << "STREAM FAILURE reading boolean." << llendl; 499 llwarns << "STREAM FAILURE reading boolean." << llendl;
500 parse_count = PARSE_FAILURE; 500 parse_count = PARSE_FAILURE;
501 } 501 }
502 break; 502 break;
@@ -522,7 +522,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
522 } 522 }
523 if(istr.fail()) 523 if(istr.fail())
524 { 524 {
525 llinfos << "STREAM FAILURE reading boolean." << llendl; 525 llwarns << "STREAM FAILURE reading boolean." << llendl;
526 parse_count = PARSE_FAILURE; 526 parse_count = PARSE_FAILURE;
527 } 527 }
528 break; 528 break;
@@ -535,7 +535,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
535 data = integer; 535 data = integer;
536 if(istr.fail()) 536 if(istr.fail())
537 { 537 {
538 llinfos << "STREAM FAILURE reading integer." << llendl; 538 llwarns << "STREAM FAILURE reading integer." << llendl;
539 parse_count = PARSE_FAILURE; 539 parse_count = PARSE_FAILURE;
540 } 540 }
541 break; 541 break;
@@ -549,7 +549,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
549 data = real; 549 data = real;
550 if(istr.fail()) 550 if(istr.fail())
551 { 551 {
552 llinfos << "STREAM FAILURE reading real." << llendl; 552 llwarns << "STREAM FAILURE reading real." << llendl;
553 parse_count = PARSE_FAILURE; 553 parse_count = PARSE_FAILURE;
554 } 554 }
555 break; 555 break;
@@ -563,7 +563,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
563 data = id; 563 data = id;
564 if(istr.fail()) 564 if(istr.fail())
565 { 565 {
566 llinfos << "STREAM FAILURE reading uuid." << llendl; 566 llwarns << "STREAM FAILURE reading uuid." << llendl;
567 parse_count = PARSE_FAILURE; 567 parse_count = PARSE_FAILURE;
568 } 568 }
569 break; 569 break;
@@ -578,7 +578,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
578 } 578 }
579 if(istr.fail()) 579 if(istr.fail())
580 { 580 {
581 llinfos << "STREAM FAILURE reading string." << llendl; 581 llwarns << "STREAM FAILURE reading string." << llendl;
582 parse_count = PARSE_FAILURE; 582 parse_count = PARSE_FAILURE;
583 } 583 }
584 break; 584 break;
@@ -600,7 +600,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
600 } 600 }
601 if(istr.fail()) 601 if(istr.fail())
602 { 602 {
603 llinfos << "STREAM FAILURE reading link." << llendl; 603 llwarns << "STREAM FAILURE reading link." << llendl;
604 parse_count = PARSE_FAILURE; 604 parse_count = PARSE_FAILURE;
605 } 605 }
606 break; 606 break;
@@ -623,7 +623,7 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
623 } 623 }
624 if(istr.fail()) 624 if(istr.fail())
625 { 625 {
626 llinfos << "STREAM FAILURE reading date." << llendl; 626 llwarns << "STREAM FAILURE reading date." << llendl;
627 parse_count = PARSE_FAILURE; 627 parse_count = PARSE_FAILURE;
628 } 628 }
629 break; 629 break;
@@ -636,14 +636,14 @@ S32 LLSDNotationParser::doParse(std::istream& istr, LLSD& data) const
636 } 636 }
637 if(istr.fail()) 637 if(istr.fail())
638 { 638 {
639 llinfos << "STREAM FAILURE reading data." << llendl; 639 llwarns << "STREAM FAILURE reading data." << llendl;
640 parse_count = PARSE_FAILURE; 640 parse_count = PARSE_FAILURE;
641 } 641 }
642 break; 642 break;
643 643
644 default: 644 default:
645 parse_count = PARSE_FAILURE; 645 parse_count = PARSE_FAILURE;
646 llinfos << "Unrecognized character while parsing: int(" << (int)c 646 llwarns << "Unrecognized character while parsing: int(" << (int)c
647 << ")" << llendl; 647 << ")" << llendl;
648 break; 648 break;
649 } 649 }
@@ -905,7 +905,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
905 } 905 }
906 if(istr.fail()) 906 if(istr.fail())
907 { 907 {
908 llinfos << "STREAM FAILURE reading binary map." << llendl; 908 llwarns << "STREAM FAILURE reading binary map." << llendl;
909 parse_count = PARSE_FAILURE; 909 parse_count = PARSE_FAILURE;
910 } 910 }
911 break; 911 break;
@@ -924,7 +924,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
924 } 924 }
925 if(istr.fail()) 925 if(istr.fail())
926 { 926 {
927 llinfos << "STREAM FAILURE reading binary array." << llendl; 927 llwarns << "STREAM FAILURE reading binary array." << llendl;
928 parse_count = PARSE_FAILURE; 928 parse_count = PARSE_FAILURE;
929 } 929 }
930 break; 930 break;
@@ -949,7 +949,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
949 data = (S32)ntohl(value_nbo); 949 data = (S32)ntohl(value_nbo);
950 if(istr.fail()) 950 if(istr.fail())
951 { 951 {
952 llinfos << "STREAM FAILURE reading binary integer." << llendl; 952 llwarns << "STREAM FAILURE reading binary integer." << llendl;
953 } 953 }
954 break; 954 break;
955 } 955 }
@@ -961,7 +961,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
961 data = ll_ntohd(real_nbo); 961 data = ll_ntohd(real_nbo);
962 if(istr.fail()) 962 if(istr.fail())
963 { 963 {
964 llinfos << "STREAM FAILURE reading binary real." << llendl; 964 llwarns << "STREAM FAILURE reading binary real." << llendl;
965 } 965 }
966 break; 966 break;
967 } 967 }
@@ -973,7 +973,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
973 data = id; 973 data = id;
974 if(istr.fail()) 974 if(istr.fail())
975 { 975 {
976 llinfos << "STREAM FAILURE reading binary uuid." << llendl; 976 llwarns << "STREAM FAILURE reading binary uuid." << llendl;
977 } 977 }
978 break; 978 break;
979 } 979 }
@@ -994,7 +994,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
994 } 994 }
995 if(istr.fail()) 995 if(istr.fail())
996 { 996 {
997 llinfos << "STREAM FAILURE reading binary (notation-style) string." 997 llwarns << "STREAM FAILURE reading binary (notation-style) string."
998 << llendl; 998 << llendl;
999 parse_count = PARSE_FAILURE; 999 parse_count = PARSE_FAILURE;
1000 } 1000 }
@@ -1014,7 +1014,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
1014 } 1014 }
1015 if(istr.fail()) 1015 if(istr.fail())
1016 { 1016 {
1017 llinfos << "STREAM FAILURE reading binary string." << llendl; 1017 llwarns << "STREAM FAILURE reading binary string." << llendl;
1018 parse_count = PARSE_FAILURE; 1018 parse_count = PARSE_FAILURE;
1019 } 1019 }
1020 break; 1020 break;
@@ -1033,7 +1033,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
1033 } 1033 }
1034 if(istr.fail()) 1034 if(istr.fail())
1035 { 1035 {
1036 llinfos << "STREAM FAILURE reading binary link." << llendl; 1036 llwarns << "STREAM FAILURE reading binary link." << llendl;
1037 parse_count = PARSE_FAILURE; 1037 parse_count = PARSE_FAILURE;
1038 } 1038 }
1039 break; 1039 break;
@@ -1046,7 +1046,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
1046 data = LLDate(real); 1046 data = LLDate(real);
1047 if(istr.fail()) 1047 if(istr.fail())
1048 { 1048 {
1049 llinfos << "STREAM FAILURE reading binary date." << llendl; 1049 llwarns << "STREAM FAILURE reading binary date." << llendl;
1050 parse_count = PARSE_FAILURE; 1050 parse_count = PARSE_FAILURE;
1051 } 1051 }
1052 break; 1052 break;
@@ -1075,7 +1075,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
1075 } 1075 }
1076 if(istr.fail()) 1076 if(istr.fail())
1077 { 1077 {
1078 llinfos << "STREAM FAILURE reading binary." << llendl; 1078 llwarns << "STREAM FAILURE reading binary." << llendl;
1079 parse_count = PARSE_FAILURE; 1079 parse_count = PARSE_FAILURE;
1080 } 1080 }
1081 break; 1081 break;
@@ -1083,7 +1083,7 @@ S32 LLSDBinaryParser::doParse(std::istream& istr, LLSD& data) const
1083 1083
1084 default: 1084 default:
1085 parse_count = PARSE_FAILURE; 1085 parse_count = PARSE_FAILURE;
1086 llinfos << "Unrecognized character while parsing: int(" << (int)c 1086 llwarns << "Unrecognized character while parsing: int(" << (int)c
1087 << ")" << llendl; 1087 << ")" << llendl;
1088 break; 1088 break;
1089 } 1089 }
diff --git a/linden/indra/llcommon/llsdserialize_xml.cpp b/linden/indra/llcommon/llsdserialize_xml.cpp
index 33206b4..dab6c1d 100644
--- a/linden/indra/llcommon/llsdserialize_xml.cpp
+++ b/linden/indra/llcommon/llsdserialize_xml.cpp
@@ -391,6 +391,14 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data)
391 391
392 if (status == XML_STATUS_ERROR) 392 if (status == XML_STATUS_ERROR)
393 { 393 {
394 std::string error_string( XML_ErrorString(XML_GetErrorCode( mParser )));
395 if ("parsing aborted" != error_string )//end of input
396 {
397 S32 line_number = XML_GetCurrentLineNumber( mParser );
398 llwarns << "LLXmlTree parse failed. Line " << line_number << ": "
399 << error_string << llendl;
400 }
401
394 break; 402 break;
395 } 403 }
396 } 404 }
@@ -408,7 +416,8 @@ S32 LLSDXMLParser::Impl::parse(std::istream& input, LLSD& data)
408 { 416 {
409 ((char*) buffer)[count ? count - 1 : 0] = '\0'; 417 ((char*) buffer)[count ? count - 1 : 0] = '\0';
410 } 418 }
411 llinfos << "LLSDXMLParser::Impl::parse: XML_STATUS_ERROR parsing:" << (char*) buffer << llendl; 419
420
412 data = LLSD(); 421 data = LLSD();
413 return LLSDParser::PARSE_FAILURE; 422 return LLSDParser::PARSE_FAILURE;
414 } 423 }
@@ -486,7 +495,13 @@ S32 LLSDXMLParser::Impl::parseLines(std::istream& input, LLSD& data)
486 if (status == XML_STATUS_ERROR 495 if (status == XML_STATUS_ERROR
487 && !mGracefullStop) 496 && !mGracefullStop)
488 { 497 {
489 llinfos << "LLSDXMLParser::Impl::parseLines: XML_STATUS_ERROR" << llendl; 498 std::string error_string( XML_ErrorString(XML_GetErrorCode( mParser )));
499 if ("parsing aborted" != error_string )//end of input
500 {
501 S32 line_number = XML_GetCurrentLineNumber( mParser );
502 llwarns << "LLXmlTree parse failed. Line " << line_number << ": "
503 << error_string << llendl;
504 }
490 return LLSDParser::PARSE_FAILURE; 505 return LLSDParser::PARSE_FAILURE;
491 } 506 }
492 507
@@ -552,7 +567,9 @@ void LLSDXMLParser::Impl::parsePart(const char* buf, int len)
552 XML_Status status = XML_Parse(mParser, buf, len, false); 567 XML_Status status = XML_Parse(mParser, buf, len, false);
553 if (status == XML_STATUS_ERROR) 568 if (status == XML_STATUS_ERROR)
554 { 569 {
555 llinfos << "Unexpected XML parsing error at start" << llendl; 570 std::string error_string( XML_ErrorString(XML_GetErrorCode( mParser )) );
571
572 llwarns << "Unexpected XML parsing error at start: " << error_string << llendl;
556 } 573 }
557 } 574 }
558} 575}
diff --git a/linden/indra/llcommon/llversionviewer.h b/linden/indra/llcommon/llversionviewer.h
index a571b95..e7d5134 100644
--- a/linden/indra/llcommon/llversionviewer.h
+++ b/linden/indra/llcommon/llversionviewer.h
@@ -33,8 +33,6 @@
33#ifndef LL_LLVERSIONVIEWER_H 33#ifndef LL_LLVERSIONVIEWER_H
34#define LL_LLVERSIONVIEWER_H 34#define LL_LLVERSIONVIEWER_H
35 35
36// Version info should be accessed using newview\viewerversion.h -- MC
37
38const S32 LL_VERSION_MAJOR = 1; 36const S32 LL_VERSION_MAJOR = 1;
39const S32 LL_VERSION_MINOR = 23; 37const S32 LL_VERSION_MINOR = 23;
40const S32 LL_VERSION_PATCH = 5; 38const S32 LL_VERSION_PATCH = 5;
@@ -42,17 +40,13 @@ const S32 LL_VERSION_BUILD = 136262;
42 40
43const char * const LL_VIEWER_NAME = "meta-impy"; 41const char * const LL_VIEWER_NAME = "meta-impy";
44 42
45// These aren't used anymore. 43// These aren't used anymore. See newview/viewerinfo.cpp instead.
46// The channel is ViewerChannelName in settings.xml 44//
47// The meta-impy version is set in app_settings\viewerversion.xml -- MC 45// const char * const LL_CHANNEL = "meta-impy";
48 46// const char * const IMP_VIEWER_NAME = "meta-impy";
49/*const char * const LL_CHANNEL = "meta-impy"; 47// const S32 IMP_VERSION_MAJOR = 0;
50 48// const S32 IMP_VERSION_MINOR = 0;
51const char * const IMP_VIEWER_NAME = "meta-impy"; 49// const S32 IMP_VERSION_PATCH = 0;
52 50// const char * const IMP_VERSION_TEST = "";
53const S32 IMP_VERSION_MAJOR = 1;
54const S32 IMP_VERSION_MINOR = 3;
55const S32 IMP_VERSION_PATCH = 0;
56const char * const IMP_VERSION_TEST = "beta 4";*/
57 51
58#endif 52#endif
diff --git a/linden/indra/llmessage/CMakeLists.txt b/linden/indra/llmessage/CMakeLists.txt
index b3f2b4c..61b6418 100644
--- a/linden/indra/llmessage/CMakeLists.txt
+++ b/linden/indra/llmessage/CMakeLists.txt
@@ -208,13 +208,21 @@ set_source_files_properties(${llmessage_HEADER_FILES}
208list(APPEND llmessage_SOURCE_FILES ${llmessage_HEADER_FILES}) 208list(APPEND llmessage_SOURCE_FILES ${llmessage_HEADER_FILES})
209 209
210add_library (llmessage ${llmessage_SOURCE_FILES}) 210add_library (llmessage ${llmessage_SOURCE_FILES})
211target_link_libraries( 211set (llmessage_link_LIBRARIES
212 llmessage 212 llmessage
213 ${CURL_LIBRARIES} 213 ${CURL_LIBRARIES}
214 ${CARES_LIBRARIES} 214 ${CARES_LIBRARIES}
215 ${OPENSSL_LIBRARIES} 215 ${OPENSSL_LIBRARIES}
216 ${CRYPTO_LIBRARIES} 216 ${CRYPTO_LIBRARIES}
217 ${XMLRPCEPI_LIBRARIES} 217 ${XMLRPCEPI_LIBRARIES}
218)
219if (LINUX)
220 list(APPEND llmessage_link_LIBRARIES pthread)
221endif (LINUX)
222
223target_link_libraries(
224 ${llmessage_link_LIBRARIES}
225
218 ) 226 )
219 227
220IF (NOT LINUX AND VIEWER) 228IF (NOT LINUX AND VIEWER)
diff --git a/linden/indra/llplugin/llpluginclassmedia.cpp b/linden/indra/llplugin/llpluginclassmedia.cpp
index f0a44f7..31a9d1d 100755
--- a/linden/indra/llplugin/llpluginclassmedia.cpp
+++ b/linden/indra/llplugin/llpluginclassmedia.cpp
@@ -1143,6 +1143,15 @@ void LLPluginClassMedia::setBrowserUserAgent(const std::string& user_agent)
1143 sendMessage(message); 1143 sendMessage(message);
1144} 1144}
1145 1145
1146#if LL_WINDOWS
1147void LLPluginClassMedia::showConsole()
1148{
1149 LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "show_console");
1150
1151 sendMessage(message);
1152}
1153#endif
1154
1146void LLPluginClassMedia::crashPlugin() 1155void LLPluginClassMedia::crashPlugin()
1147{ 1156{
1148 LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "crash"); 1157 LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "crash");
diff --git a/linden/indra/llplugin/llpluginclassmedia.h b/linden/indra/llplugin/llpluginclassmedia.h
index 0004971..098312d 100755
--- a/linden/indra/llplugin/llpluginclassmedia.h
+++ b/linden/indra/llplugin/llpluginclassmedia.h
@@ -229,6 +229,11 @@ public:
229 std::string getMediaName() const { return mMediaName; }; 229 std::string getMediaName() const { return mMediaName; };
230 std::string getMediaDescription() const { return mMediaDescription; }; 230 std::string getMediaDescription() const { return mMediaDescription; };
231 231
232 #if LL_WINDOWS
233 //Open a debug console for this plugin.
234 void showConsole();
235 #endif
236
232 // Crash the plugin. If you use this outside of a testbed, you will be punished. 237 // Crash the plugin. If you use this outside of a testbed, you will be punished.
233 void crashPlugin(); 238 void crashPlugin();
234 239
diff --git a/linden/indra/llplugin/llpluginmessage.cpp b/linden/indra/llplugin/llpluginmessage.cpp
index 0810a04..9c4940a 100755
--- a/linden/indra/llplugin/llpluginmessage.cpp
+++ b/linden/indra/llplugin/llpluginmessage.cpp
@@ -368,7 +368,8 @@ std::string LLPluginMessage::generate(void) const
368 368
369 // Pretty XML may be slightly easier to deal with while debugging... 369 // Pretty XML may be slightly easier to deal with while debugging...
370// LLSDSerialize::toXML(mMessage, result); 370// LLSDSerialize::toXML(mMessage, result);
371 LLSDSerialize::toPrettyXML(mMessage, result); 371// LLSDSerialize::toPrettyXML(mMessage, result);
372 result << mMessage;
372 373
373 return result.str(); 374 return result.str();
374} 375}
@@ -383,10 +384,12 @@ int LLPluginMessage::parse(const std::string &message)
383 // clear any previous state 384 // clear any previous state
384 clear(); 385 clear();
385 386
386 std::istringstream input(message); 387 std::istringstream input(message);
387 388
388 S32 parse_result = LLSDSerialize::fromXML(mMessage, input); 389
389 390// S32 parse_result = LLSDSerialize::fromXML(test, input);
391 S32 parse_result = LLSDSerialize::fromNotation( mMessage, input, LLSDSerialize::SIZE_UNLIMITED) ;
392
390 return (int)parse_result; 393 return (int)parse_result;
391} 394}
392 395
diff --git a/linden/indra/llplugin/llpluginprocesschild.cpp b/linden/indra/llplugin/llpluginprocesschild.cpp
index 0d95cac..168236e 100755
--- a/linden/indra/llplugin/llpluginprocesschild.cpp
+++ b/linden/indra/llplugin/llpluginprocesschild.cpp
@@ -42,6 +42,14 @@
42#include "llpluginmessagepipe.h" 42#include "llpluginmessagepipe.h"
43#include "llpluginmessageclasses.h" 43#include "llpluginmessageclasses.h"
44 44
45#if LL_WINDOWS
46#include <windows.h>
47#include <fcntl.h>
48#include <io.h>
49#include <iostream>
50#include <fstream>
51#endif
52
45static const F32 HEARTBEAT_SECONDS = 1.0f; 53static const F32 HEARTBEAT_SECONDS = 1.0f;
46static const F32 PLUGIN_IDLE_SECONDS = 1.0f / 100.0f; // Each call to idle will give the plugin this much time. 54static const F32 PLUGIN_IDLE_SECONDS = 1.0f / 100.0f; // Each call to idle will give the plugin this much time.
47 55
@@ -420,6 +428,12 @@ void LLPluginProcessChild::receiveMessageRaw(const std::string &message)
420 { 428 {
421 mSleepTime = parsed.getValueReal("time"); 429 mSleepTime = parsed.getValueReal("time");
422 } 430 }
431 #if LL_WINDOWS
432 else if(message_name == "show_console")
433 {
434 createConsole();
435 }
436 #endif
423 else if(message_name == "crash") 437 else if(message_name == "crash")
424 { 438 {
425 // Crash the plugin 439 // Crash the plugin
@@ -569,3 +583,46 @@ void LLPluginProcessChild::deliverQueuedMessages()
569 } 583 }
570 } 584 }
571} 585}
586
587#if LL_WINDOWS
588void LLPluginProcessChild::createConsole()
589{
590 const S32 MAX_CONSOLE_LINES = 500;
591
592 int h_con_handle;
593 long l_std_handle;
594
595 CONSOLE_SCREEN_BUFFER_INFO coninfo;
596 FILE *fp;
597
598 // allocate a console for this app
599 AllocConsole();
600
601 // set the screen buffer to be big enough to let us scroll text
602 GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
603 coninfo.dwSize.Y = MAX_CONSOLE_LINES;
604 SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);
605
606 // redirect unbuffered STDOUT to the console
607 l_std_handle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
608 h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT);
609 fp = _fdopen( h_con_handle, "w" );
610 *stdout = *fp;
611 setvbuf( stdout, NULL, _IONBF, 0 );
612
613 // redirect unbuffered STDIN to the console
614 l_std_handle = (long)GetStdHandle(STD_INPUT_HANDLE);
615 h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT);
616 fp = _fdopen( h_con_handle, "r" );
617 *stdin = *fp;
618 setvbuf( stdin, NULL, _IONBF, 0 );
619
620 // redirect unbuffered STDERR to the console
621 l_std_handle = (long)GetStdHandle(STD_ERROR_HANDLE);
622 h_con_handle = _open_osfhandle(l_std_handle, _O_TEXT);
623 fp = _fdopen( h_con_handle, "w" );
624 *stderr = *fp;
625 setvbuf( stderr, NULL, _IOFBF, 1024 ); //Assigning a buffer improves speed a LOT, esp on vista/win7
626 //_IOLBF is borked.
627}
628#endif \ No newline at end of file
diff --git a/linden/indra/llplugin/llpluginprocesschild.h b/linden/indra/llplugin/llpluginprocesschild.h
index 5d643d7..6d864bb 100755
--- a/linden/indra/llplugin/llpluginprocesschild.h
+++ b/linden/indra/llplugin/llpluginprocesschild.h
@@ -76,7 +76,11 @@ public:
76 76
77 // Inherited from LLPluginInstanceMessageListener 77 // Inherited from LLPluginInstanceMessageListener
78 /* virtual */ void receivePluginMessage(const std::string &message); 78 /* virtual */ void receivePluginMessage(const std::string &message);
79 79
80#if LL_WINDOWS
81 void createConsole();
82#endif
83
80private: 84private:
81 85
82 enum EState 86 enum EState
diff --git a/linden/indra/llrender/llglslshader.cpp b/linden/indra/llrender/llglslshader.cpp
index 08d6548..429cf6f 100644
--- a/linden/indra/llrender/llglslshader.cpp
+++ b/linden/indra/llrender/llglslshader.cpp
@@ -160,7 +160,9 @@ BOOL LLGLSLShader::createShader(vector<string> * attributes,
160 160
161BOOL LLGLSLShader::attachObject(std::string object) 161BOOL LLGLSLShader::attachObject(std::string object)
162{ 162{
163 if (LLShaderMgr::instance()->mShaderObjects.count(object) > 0) 163 //if (LLShaderMgr::instance()->mShaderObjects.count(object) > 0)
164 std::map<std::string, GLhandleARB> &ShaderObjects = LLShaderMgr::instance()->mShaderObjects;
165 if (ShaderObjects.find(object) != ShaderObjects.end())
164 { 166 {
165 stop_glerror(); 167 stop_glerror();
166 glAttachObjectARB(mProgramObject, LLShaderMgr::instance()->mShaderObjects[object]); 168 glAttachObjectARB(mProgramObject, LLShaderMgr::instance()->mShaderObjects[object]);
diff --git a/linden/indra/llui/lllineeditor.cpp b/linden/indra/llui/lllineeditor.cpp
index 453bb50..5f16853 100644
--- a/linden/indra/llui/lllineeditor.cpp
+++ b/linden/indra/llui/lllineeditor.cpp
@@ -223,18 +223,15 @@ LLLineEditor::LLLineEditor(const std::string& name, const LLRect& rect,
223 } 223 }
224 mImage = sImage; 224 mImage = sImage;
225 225
226
227 LLMenuGL* menu = LLUICtrlFactory::getInstance()->buildMenu("menu_rightclick_text.xml",this); 226 LLMenuGL* menu = LLUICtrlFactory::getInstance()->buildMenu("menu_rightclick_text.xml",this);
228 if (!menu) 227 if (!menu)
229 { 228 {
230 menu = new LLMenuGL(LLStringUtil::null); 229 menu = new LLMenuGL(LLStringUtil::null);
231 } 230 }
232 231
233 defineMenuCallbacks(menu); 232 defineMenuCallbacks(menu);
234 mPopupMenuHandle = menu->getHandle(); 233 mPopupMenuHandle = menu->getHandle();
235 menu->setBorderColor(gColors.getColor("MenuItemDisabledColor"));
236 menu->setBackgroundColor(gColors.getColor("MenuPopupBgColor")); 234 menu->setBackgroundColor(gColors.getColor("MenuPopupBgColor"));
237
238} 235}
239 236
240 237
@@ -1344,7 +1341,7 @@ void LLLineEditor::defineMenuCallbacks(LLMenuGL* menu) {
1344 "Select All Text", 1341 "Select All Text",
1345 this, 1342 this,
1346 (void*)context_enable_selectall); 1343 (void*)context_enable_selectall);
1347 menu->setCtrlResponse(1+LLCallbackInformation::LL_MENU_ITEM_CALL_GL_ON_CLICK, 1344 menu->setCtrlResponse(LLCallbackInformation::LL_MENU_ITEM_CALL_GL_ON_CLICK,
1348 "Select All Text", 1345 "Select All Text",
1349 this, 1346 this,
1350 (void*)context_selectall); 1347 (void*)context_selectall);
diff --git a/linden/indra/llui/llmenugl.cpp b/linden/indra/llui/llmenugl.cpp
index d5e1186..2d4a2f1 100644
--- a/linden/indra/llui/llmenugl.cpp
+++ b/linden/indra/llui/llmenugl.cpp
@@ -3099,8 +3099,7 @@ void LLMenuGL::draw( void )
3099 3099
3100 if( mBgVisible ) 3100 if( mBgVisible )
3101 { 3101 {
3102 gl_rect_2d( -1, getRect().getHeight()+2, getRect().getWidth()+2, -2, mBorderColor,FALSE); 3102 gl_rect_2d( 0, getRect().getHeight(), getRect().getWidth(), 0, mBackgroundColor );
3103 gl_rect_2d( 0, getRect().getHeight(), getRect().getWidth(), 0, mBackgroundColor );
3104 } 3103 }
3105 LLView::draw(); 3104 LLView::draw();
3106} 3105}
@@ -3157,37 +3156,18 @@ LLMenuGL* LLMenuGL::getChildMenuByName(const std::string& name, BOOL recurse) co
3157} 3156}
3158 3157
3159 3158
3160void LLMenuGL::setBackgroundColor( const LLColor4& color ) { 3159void LLMenuGL::setBackgroundColor( const LLColor4& color )
3161 3160{
3162 mBackgroundColor = color; 3161 mBackgroundColor = color;
3163 item_list_t::iterator item_iter; 3162 item_list_t::iterator item_iter;
3164 for (item_iter = mItems.begin(); item_iter != mItems.end(); ++item_iter) 3163 for (item_iter = mItems.begin(); item_iter != mItems.end(); ++item_iter)
3165 {
3166 if((*item_iter)->getType()=="menu")
3167 {
3168 LLMenuItemBranchGL *menuBranchItem = (LLMenuItemBranchGL*)(*item_iter);
3169 menuBranchItem->getBranch()->setBackgroundColor(color);
3170 }
3171 }
3172
3173
3174}
3175
3176
3177void LLMenuGL::setBorderColor( const LLColor4& color ) {
3178
3179 mBorderColor = color;
3180 item_list_t::iterator item_iter;
3181 for (item_iter = mItems.begin(); item_iter != mItems.end(); ++item_iter)
3182 { 3164 {
3183 if((*item_iter)->getType()=="menu") 3165 if((*item_iter)->getType()=="menu")
3184 { 3166 {
3185 LLMenuItemBranchGL *menuBranchItem = (LLMenuItemBranchGL*)(*item_iter); 3167 LLMenuItemBranchGL *menuBranchItem = (LLMenuItemBranchGL*)(*item_iter);
3186 menuBranchItem->getBranch()->setBorderColor(color); 3168 menuBranchItem->getBranch()->setBackgroundColor(color);
3187 } 3169 }
3188 } 3170 }
3189
3190
3191} 3171}
3192 3172
3193 3173
diff --git a/linden/indra/llui/llmenugl.h b/linden/indra/llui/llmenugl.h
index 9a9d1b0..3b57a32 100644
--- a/linden/indra/llui/llmenugl.h
+++ b/linden/indra/llui/llmenugl.h
@@ -514,10 +514,8 @@ public:
514 514
515 // background colors 515 // background colors
516 static void setDefaultBackgroundColor( const LLColor4& color ) { sDefaultBackgroundColor = color; } 516 static void setDefaultBackgroundColor( const LLColor4& color ) { sDefaultBackgroundColor = color; }
517 void setBackgroundColor( const LLColor4& color ); 517 void setBackgroundColor( const LLColor4& color );
518 void setBorderColor( const LLColor4& color );
519 const LLColor4& getBackgroundColor() const { return mBackgroundColor; } 518 const LLColor4& getBackgroundColor() const { return mBackgroundColor; }
520 const LLColor4& getBorderColor() const { return mBorderColor; }
521 void setBackgroundVisible( BOOL b ) { mBgVisible = b; } 519 void setBackgroundVisible( BOOL b ) { mBgVisible = b; }
522 void setCanTearOff(BOOL tear_off, LLHandle<LLFloater> parent_floater_handle = LLHandle<LLFloater>()); 520 void setCanTearOff(BOOL tear_off, LLHandle<LLFloater> parent_floater_handle = LLHandle<LLFloater>());
523 521
@@ -631,7 +629,6 @@ private:
631 static BOOL sKeyboardMode; 629 static BOOL sKeyboardMode;
632 630
633 LLColor4 mBackgroundColor; 631 LLColor4 mBackgroundColor;
634 LLColor4 mBorderColor;
635 BOOL mBgVisible; 632 BOOL mBgVisible;
636 LLMenuItemGL* mParentMenuItem; 633 LLMenuItemGL* mParentMenuItem;
637 LLUIString mLabel; 634 LLUIString mLabel;
diff --git a/linden/indra/llui/lltexteditor.cpp b/linden/indra/llui/lltexteditor.cpp
index 28859b1..8612427 100644
--- a/linden/indra/llui/lltexteditor.cpp
+++ b/linden/indra/llui/lltexteditor.cpp
@@ -389,14 +389,12 @@ LLTextEditor::LLTextEditor(
389 LLMenuGL* menu = LLUICtrlFactory::getInstance()->buildMenu("menu_rightclick_text.xml",this); 389 LLMenuGL* menu = LLUICtrlFactory::getInstance()->buildMenu("menu_rightclick_text.xml",this);
390 if (!menu) 390 if (!menu)
391 { 391 {
392 menu = new LLMenuGL(LLStringUtil::null); 392 menu = new LLMenuGL(LLStringUtil::null);
393 } 393 }
394 394
395 defineMenuCallbacks(menu); 395 defineMenuCallbacks(menu);
396 mPopupMenuHandle = menu->getHandle(); 396 mPopupMenuHandle = menu->getHandle();
397 menu->setBorderColor(gColors.getColor("MenuItemDisabledColor"));
398 menu->setBackgroundColor(gColors.getColor("MenuPopupBgColor")); 397 menu->setBackgroundColor(gColors.getColor("MenuPopupBgColor"));
399
400} 398}
401 399
402LLTextEditor::~LLTextEditor() 400LLTextEditor::~LLTextEditor()
@@ -636,7 +634,7 @@ void LLTextEditor::defineMenuCallbacks(LLMenuGL* menu) {
636 "Select All Text", 634 "Select All Text",
637 this, 635 this,
638 (void*)context_enable_selectall); 636 (void*)context_enable_selectall);
639 menu->setCtrlResponse(1+LLCallbackInformation::LL_MENU_ITEM_CALL_GL_ON_CLICK, 637 menu->setCtrlResponse(LLCallbackInformation::LL_MENU_ITEM_CALL_GL_ON_CLICK,
640 "Select All Text", 638 "Select All Text",
641 this, 639 this,
642 (void*)context_selectall); 640 (void*)context_selectall);
@@ -3869,6 +3867,12 @@ void LLTextEditor::onTabInto()
3869// virtual 3867// virtual
3870void LLTextEditor::clear() 3868void LLTextEditor::clear()
3871{ 3869{
3870 // Also clear any styling we might have added -- MC
3871 mParseHTML = FALSE;
3872 mParseHighlights = FALSE;
3873
3874 mSegments.clear();
3875
3872 setText(LLStringUtil::null); 3876 setText(LLStringUtil::null);
3873 std::for_each(mSegments.begin(), mSegments.end(), DeletePointer()); 3877 std::for_each(mSegments.begin(), mSegments.end(), DeletePointer());
3874 mSegments.clear(); 3878 mSegments.clear();
diff --git a/linden/indra/llvfs/lldir.cpp b/linden/indra/llvfs/lldir.cpp
index 8bd68f4..4f108b9 100644
--- a/linden/indra/llvfs/lldir.cpp
+++ b/linden/indra/llvfs/lldir.cpp
@@ -249,7 +249,7 @@ std::string LLDir::buildSLOSCacheDir() const
249 } 249 }
250 else 250 else
251 { 251 {
252 res = getOSCacheDir() + mDirDelimiter + "meta-impyExperimental"; 252 res = getOSCacheDir() + mDirDelimiter + "meta-impy";
253 } 253 }
254 return res; 254 return res;
255} 255}
diff --git a/linden/indra/llvfs/lldir_mac.cpp b/linden/indra/llvfs/lldir_mac.cpp
index 7fb235b..cb5c748 100644
--- a/linden/indra/llvfs/lldir_mac.cpp
+++ b/linden/indra/llvfs/lldir_mac.cpp
@@ -173,7 +173,7 @@ LLDir_Mac::LLDir_Mac()
173 if (error == noErr) 173 if (error == noErr)
174 { 174 {
175 FSRefToLLString(&cacheDirRef, mOSCacheDir); 175 FSRefToLLString(&cacheDirRef, mOSCacheDir);
176 (void)CFCreateDirectory(&cacheDirRef, CFSTR("meta-impyExperimental"),NULL); 176 (void)CFCreateDirectory(&cacheDirRef, CFSTR("meta-impy"),NULL);
177 } 177 }
178 178
179 // mOSUserAppDir 179 // mOSUserAppDir
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt
index f11ee12..83ad646 100644
--- a/linden/indra/newview/CMakeLists.txt
+++ b/linden/indra/newview/CMakeLists.txt
@@ -3,6 +3,7 @@
3project(viewer) 3project(viewer)
4 4
5include(00-Common) 5include(00-Common)
6include(AddPackageTarget)
6include(Boost) 7include(Boost)
7include(BuildVersion) 8include(BuildVersion)
8include(DBusGlib) 9include(DBusGlib)
@@ -361,7 +362,6 @@ set(viewer_SOURCE_FILES
361 llpanelplace.cpp 362 llpanelplace.cpp
362 llpanelskins.cpp 363 llpanelskins.cpp
363 llpanelvolume.cpp 364 llpanelvolume.cpp
364 llpanelweb.cpp
365 llparcelselection.cpp 365 llparcelselection.cpp
366 llpatchvertexarray.cpp 366 llpatchvertexarray.cpp
367 llpolymesh.cpp 367 llpolymesh.cpp
@@ -532,8 +532,8 @@ set(viewer_SOURCE_FILES
532 rlvextensions.cpp 532 rlvextensions.cpp
533 rlvfloaterbehaviour.cpp 533 rlvfloaterbehaviour.cpp
534 slfloatermediafilter.cpp 534 slfloatermediafilter.cpp
535 viewerinfo.cpp
535 viewertime.cpp 536 viewertime.cpp
536 viewerversion.cpp
537 windlightsettingsupdate.cpp 537 windlightsettingsupdate.cpp
538 wlfloatermanager.cpp 538 wlfloatermanager.cpp
539 wlfloaterwindlightsend.cpp 539 wlfloaterwindlightsend.cpp
@@ -830,7 +830,6 @@ set(viewer_HEADER_FILES
830 llpanelplace.h 830 llpanelplace.h
831 llpanelskins.h 831 llpanelskins.h
832 llpanelvolume.h 832 llpanelvolume.h
833 llpanelweb.h
834 llparcelselection.h 833 llparcelselection.h
835 llpatchvertexarray.h 834 llpatchvertexarray.h
836 llpolymesh.h 835 llpolymesh.h
@@ -1011,8 +1010,8 @@ set(viewer_HEADER_FILES
1011 slfloatermediafilter.h 1010 slfloatermediafilter.h
1012 VertexCache.h 1011 VertexCache.h
1013 VorbisFramework.h 1012 VorbisFramework.h
1013 viewerinfo.h
1014 viewertime.h 1014 viewertime.h
1015 viewerversion.h
1016 wlfloatermanager.h 1015 wlfloatermanager.h
1017 wlfloaterwindlightsend.h 1016 wlfloaterwindlightsend.h
1018 wlretrievesettings.h 1017 wlretrievesettings.h
@@ -1047,14 +1046,14 @@ if (DARWIN)
1047 viewer.icns 1046 viewer.icns
1048 macview.r 1047 macview.r
1049 gpu_table.txt 1048 gpu_table.txt
1050 Info-meta-impy.plist 1049 packaging/mac/Info.plist.in
1051 meta-impy.nib/ 1050 packaging/mac/viewer.nib/
1052 # CMake doesn't seem to support Xcode language variants well just yet 1051 # CMake doesn't seem to support Xcode language variants well just yet
1053 English.lproj/InfoPlist.strings 1052 packaging/mac/English.lproj/InfoPlist.strings
1054 English.lproj/language.txt 1053 packaging/mac/English.lproj/language.txt
1055 German.lproj/language.txt 1054 packaging/mac/German.lproj/language.txt
1056 Japanese.lproj/language.txt 1055 packaging/mac/Japanese.lproj/language.txt
1057 Korean.lproj/language.txt 1056 packaging/mac/Korean.lproj/language.txt
1058 ) 1057 )
1059 set_source_files_properties( 1058 set_source_files_properties(
1060 ${viewer_RESOURCE_FILES} 1059 ${viewer_RESOURCE_FILES}
@@ -1265,7 +1264,6 @@ set(viewer_APPSETTINGS_FILES
1265 app_settings/trees.xml 1264 app_settings/trees.xml
1266 app_settings/ultra_graphics.xml 1265 app_settings/ultra_graphics.xml
1267 app_settings/viewerart.xml 1266 app_settings/viewerart.xml
1268 app_settings/viewerversion.xml
1269 ${CMAKE_SOURCE_DIR}/../etc/message.xml 1267 ${CMAKE_SOURCE_DIR}/../etc/message.xml
1270 ${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg 1268 ${CMAKE_SOURCE_DIR}/../scripts/messages/message_template.msg
1271 ) 1269 )
@@ -1343,6 +1341,10 @@ add_executable(${VIEWER_BINARY_NAME}
1343 ) 1341 )
1344#check_message_template(${VIEWER_BINARY_NAME}) 1342#check_message_template(${VIEWER_BINARY_NAME})
1345 1343
1344
1345# NOTE: This variable is DEPRECATED, and should not be used anymore.
1346# The package target should always be added. The variable AUTOPACKAGE
1347# (in AddPackageTarget.cmake) controls whether package is auto-built.
1346set(PACKAGE OFF CACHE BOOL 1348set(PACKAGE OFF CACHE BOOL
1347 "Add a package target that builds an installer package.") 1349 "Add a package target that builds an installer package.")
1348 1350
@@ -1502,121 +1504,102 @@ set(ARTWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH
1502 1504
1503 1505
1504if (LINUX) 1506if (LINUX)
1505 add_custom_command( 1507 string(REPLACE "-bin" "-stripped"
1506 OUTPUT meta-impy-stripped 1508 VIEWER_STRIPPED_NAME ${VIEWER_BINARY_NAME})
1507 COMMAND strip
1508 ARGS --strip-debug -o meta-impy-stripped ${VIEWER_BINARY_NAME}
1509 DEPENDS meta-impy-bin
1510 )
1511 1509
1512 set(product meta-impy-${ARCH}-${viewer_VERSION}) 1510 add_dependencies(${VIEWER_BINARY_NAME}
1511 SLPlugin
1512 media_plugin_gstreamer010
1513 media_plugin_webkit)
1513 1514
1514 add_custom_command( 1515 add_custom_command(
1515 OUTPUT ${product}.tar.bz2 1516 OUTPUT ${VIEWER_STRIPPED_NAME}
1516 COMMAND ${PYTHON_EXECUTABLE} 1517 COMMAND strip
1517 ARGS 1518 ARGS --strip-debug -o ${VIEWER_STRIPPED_NAME} ${VIEWER_BINARY_NAME}
1518 ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py 1519 DEPENDS ${VIEWER_BINARY_NAME}
1519 --standalone=${STANDALONE} 1520 )
1520 --buildtype=${CMAKE_BUILD_TYPE} 1521
1521 --grid=${GRID} 1522 add_custom_target(
1522 --channel=${VIEWER_CHANNEL} 1523 viewer-manifest-target
1523 --login_channel=${VIEWER_LOGIN_CHANNEL} 1524 ALL
1524 --installer_name=${product} 1525 COMMAND
1525 --arch=${ARCH} 1526 ${PYTHON_EXECUTABLE}
1526 --source=${CMAKE_CURRENT_SOURCE_DIR} 1527 ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
1527 --artwork=${ARTWORK_DIR} 1528 --standalone=${STANDALONE}
1528 --build=${CMAKE_CURRENT_BINARY_DIR} 1529 --buildtype=${CMAKE_BUILD_TYPE}
1529 --dest=${CMAKE_CURRENT_BINARY_DIR}/packaged 1530 --grid=${GRID}
1530 --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched 1531 --channel=${VIEWER_CHANNEL}
1531 DEPENDS meta-impy-stripped ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py 1532 --login_channel=${VIEWER_LOGIN_CHANNEL}
1532 ) 1533 --arch=${ARCH}
1533 1534 --source=${CMAKE_CURRENT_SOURCE_DIR}
1534 add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_gstreamer010 media_plugin_webkit) 1535 --artwork=${ARTWORK_DIR}
1536 --build=${CMAKE_CURRENT_BINARY_DIR}
1537 --dest=${CMAKE_CURRENT_BINARY_DIR}/packaged
1538 DEPENDS
1539 ${VIEWER_STRIPPED_NAME}
1540 linux-crash-logger
1541 ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
1542 )
1543
1544 add_package_target()
1545 add_dependencies(package viewer-manifest-target)
1535 1546
1536 if (NOT INSTALL)
1537 add_custom_target(package ALL DEPENDS ${product}.tar.bz2)
1538 add_dependencies(package linux-crash-logger-strip-target)
1539 endif (NOT INSTALL)
1540endif (LINUX) 1547endif (LINUX)
1541 1548
1549
1542if (DARWIN) 1550if (DARWIN)
1543 set(product "meta-impy") 1551 set(product "${viewer_NAME}")
1552
1544 set_target_properties( 1553 set_target_properties(
1545 ${VIEWER_BINARY_NAME} 1554 ${VIEWER_BINARY_NAME}
1546 PROPERTIES 1555 PROPERTIES
1547 OUTPUT_NAME "${product}" 1556 OUTPUT_NAME "${product}"
1548 MACOSX_BUNDLE_INFO_STRING "info string - localize me"
1549 MACOSX_BUNDLE_ICON_FILE "viewer.icns"
1550 MACOSX_BUNDLE_GUI_IDENTIFIER "meta-impy"
1551 MACOSX_BUNDLE_LONG_VERSION_STRING "ververver"
1552 MACOSX_BUNDLE_BUNDLE_NAME "meta-impy"
1553 MACOSX_BUNDLE_SHORT_VERSION_STRING "asdf"
1554 MACOSX_BUNDLE_BUNDLE_VERSION "asdf"
1555 MACOSX_BUNDLE_COPYRIGHT "copyright linden lab 2007 - localize me and run me through a legal wringer"
1556 ) 1557 )
1558
1559 # Generate Info.plist from the template.
1560 add_custom_target(
1561 GenerateInfoPlist
1562 ALL
1563 COMMENT "Generating Info.plist..."
1564 VERBATIM
1565 DEPENDS
1566 ${CMAKE_CURRENT_SOURCE_DIR}/packaging/mac/GenerateInfoPlist.cmake
1567 ${CMAKE_CURRENT_SOURCE_DIR}/packaging/mac/Info.plist.in
1568 ${CMAKE_CURRENT_SOURCE_DIR}/viewerinfo.cpp
1569 COMMAND
1570 ${CMAKE_COMMAND}
1571 -DSOURCE_DIR=${CMAKE_SOURCE_DIR}
1572 -DBINARY_DIR=${CMAKE_BINARY_DIR}
1573 -P ${CMAKE_CURRENT_SOURCE_DIR}/packaging/mac/GenerateInfoPlist.cmake
1574 )
1575
1576 # Ensure that it's generated before the binary is built, so
1577 # that it will definitely be ready when viewer_manifest.py runs.
1578 add_dependencies(${VIEWER_BINARY_NAME} GenerateInfoPlist)
1579
1557 1580
1558 add_custom_command( 1581 add_custom_command(
1559 TARGET ${VIEWER_BINARY_NAME} POST_BUILD 1582 TARGET ${VIEWER_BINARY_NAME} POST_BUILD
1560 COMMAND ${PYTHON_EXECUTABLE} 1583 COMMAND ${PYTHON_EXECUTABLE}
1561 ARGS 1584 ARGS
1562 ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py 1585 ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
1563 --grid=${GRID}
1564 --actions=copy 1586 --actions=copy
1565 --configuration=${CMAKE_CFG_INTDIR}
1566 --source=${CMAKE_CURRENT_SOURCE_DIR}
1567 --artwork=${ARTWORK_DIR} 1587 --artwork=${ARTWORK_DIR}
1568 --build=${CMAKE_CURRENT_BINARY_DIR} 1588 --build=${CMAKE_CURRENT_BINARY_DIR}
1589 --buildtype=${CMAKE_BUILD_TYPE}
1590 --configuration=${CMAKE_CFG_INTDIR}
1569 --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app 1591 --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app
1592 --grid=${GRID}
1593 --source=${CMAKE_CURRENT_SOURCE_DIR}
1594 --standalone=${STANDALONE}
1570 DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py 1595 DEPENDS ${VIEWER_BINARY_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
1571 ) 1596 )
1572
1573 add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit media_plugin_gstreamer010)
1574
1575 if (PACKAGE)
1576 add_custom_target(package ALL DEPENDS ${VIEWER_BINARY_NAME})
1577 add_dependencies(package mac-updater mac-crash-logger)
1578
1579 add_custom_command(
1580 TARGET package POST_BUILD
1581 COMMAND ${PYTHON_EXECUTABLE}
1582 ARGS
1583 ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
1584 --standalone=${STANDALONE}
1585 --buildtype=${CMAKE_BUILD_TYPE}
1586 --grid=${GRID}
1587 --configuration=${CMAKE_CFG_INTDIR}
1588 --channel=${VIEWER_CHANNEL}
1589 --login_channel=${VIEWER_LOGIN_CHANNEL}
1590 --source=${CMAKE_CURRENT_SOURCE_DIR}
1591 --artwork=${ARTWORK_DIR}
1592 --build=${CMAKE_CURRENT_BINARY_DIR}
1593 --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app
1594 --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched
1595 1597
1596 DEPENDS 1598 add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit media_plugin_gstreamer010 mac-updater mac-crash-logger)
1597 ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
1598 )
1599 1599
1600 add_dependencies(${VIEWER_BINARY_NAME} SLPlugin media_plugin_quicktime media_plugin_webkit media_plugin_gstreamer010) 1600 add_package_target()
1601 add_custom_command( 1601 add_dependencies(package ${VIEWER_BINARY_NAME})
1602 TARGET package POST_BUILD
1603 COMMAND ${PYTHON_EXECUTABLE}
1604 ARGS
1605 ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
1606 --grid=${GRID}
1607 --configuration=${CMAKE_CFG_INTDIR}
1608 --channel=${VIEWER_CHANNEL}
1609 --login_channel=${VIEWER_LOGIN_CHANNEL}
1610 --source=${CMAKE_CURRENT_SOURCE_DIR}
1611 --artwork=${ARTWORK_DIR}
1612 --build=${CMAKE_CURRENT_BINARY_DIR}
1613 --dest=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/${product}.app
1614 --touch=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/.${product}.touched
1615 DEPENDS
1616 ${CMAKE_CURRENT_SOURCE_DIR}/viewer_manifest.py
1617 )
1618 1602
1619 endif (PACKAGE)
1620endif (DARWIN) 1603endif (DARWIN)
1621 1604
1622if (INSTALL) 1605if (INSTALL)
diff --git a/linden/indra/newview/English.lproj/InfoPlist.strings b/linden/indra/newview/English.lproj/InfoPlist.strings
deleted file mode 100644
index 3027772..0000000
--- a/linden/indra/newview/English.lproj/InfoPlist.strings
+++ /dev/null
@@ -1,6 +0,0 @@
1/* Localized versions of Info.plist keys */
2
3CFBundleName = "meta-impy";
4CFBundleShortVersionString = "meta-impy Experimental 2011.04.02";
5CFBundleGetInfoString = "meta-impy Experimental 2011.04.02";
6
diff --git a/linden/indra/newview/app_settings/logcontrol.xml b/linden/indra/newview/app_settings/logcontrol.xml
index 027afaf..a94bc1b 100644
--- a/linden/indra/newview/app_settings/logcontrol.xml
+++ b/linden/indra/newview/app_settings/logcontrol.xml
@@ -90,7 +90,12 @@
90 <!--<string>TextureCache</string>--> 90 <!--<string>TextureCache</string>-->
91 <!--<string>Throttle</string>--> 91 <!--<string>Throttle</string>-->
92 <!--<string>Voice</string>--> 92 <!--<string>Voice</string>-->
93 <!--<string>VoiceCaps</string>-->
94 <!--<string>VoiceSession</string>-->
95 <!--<string>VoiceDaemon</string>-->
96 <!--<string>VoiceDevice</string>-->
93 <!--<string>VivoxProtocolParser</string>--> 97 <!--<string>VivoxProtocolParser</string>-->
98 <!--<string>VivoxProtocolParserTag</string>-->
94 <!--<string>Wearable</string>--> 99 <!--<string>Wearable</string>-->
95 <!--<string>WindLight</string>--> 100 <!--<string>WindLight</string>-->
96 101
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 97c4c5c..cb026ef 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -39,16 +39,27 @@
39 <key>Value</key> 39 <key>Value</key>
40 <integer>0</integer> 40 <integer>0</integer>
41 </map> 41 </map>
42 <key>VoiceModule</key> 42 <key>VoiceModuleMumble</key>
43 <map> 43 <map>
44 <key>Comment</key> 44 <key>Comment</key>
45 <string>Executable file that runs voice. Platform specific parts (like .exe on windows) are added automatically.</string> 45 <string>Executable file that runs mumble voice . Platform specific parts (like .exe on windows) are added automatically, paths are stripped off if present. Defaults to mumble if empty</string>
46 <key>Persist</key> 46 <key>Persist</key>
47 <integer>1</integer> 47 <integer>1</integer>
48 <key>Type</key> 48 <key>Type</key>
49 <string>String</string> 49 <string>String</string>
50 <key>Value</key> 50 <key>Value</key>
51 <string>SLVoice</string> 51 <string />
52 </map>
53 <key>VoiceModuleVivox</key>
54 <map>
55 <key>Comment</key>
56 <string>Executable file that runs vivox voice. Platform specific parts (like .exe on windows) are added automatically, paths are stripped off if present. Defaults to SLVoice if empty.</string>
57 <key>Persist</key>
58 <integer>1</integer>
59 <key>Type</key>
60 <string>String</string>
61 <key>Value</key>
62 <string />
52 </map> 63 </map>
53 64
54 <!-- end Aurora-specific settings --> 65 <!-- end Aurora-specific settings -->
@@ -204,7 +215,7 @@
204 <key>AutoCloseOOC</key> 215 <key>AutoCloseOOC</key>
205 <map> 216 <map>
206 <key>Comment</key> 217 <key>Comment</key>
207 <string>Auto-close OOC chat (i.e. add \"))\" if not found and \"((\" was used)</string> 218 <string>Auto-close OOC chat (i.e. add &apos;&quot;))&apos;&quot; if not found and &apos;&quot;((&apos;&quot; was used)</string>
208 <key>Persist</key> 219 <key>Persist</key>
209 <integer>1</integer> 220 <integer>1</integer>
210 <key>Type</key> 221 <key>Type</key>
@@ -499,7 +510,7 @@
499 <key>OmitResidentAsLastName</key> 510 <key>OmitResidentAsLastName</key>
500 <map> 511 <map>
501 <key>Comment</key> 512 <key>Comment</key>
502 <string>Do not display "Resident" as the last name for new residents in their legacy name</string> 513 <string>Do not display &quot;Resident&quot; as the last name for new residents in their legacy name</string>
503 <key>Persist</key> 514 <key>Persist</key>
504 <integer>1</integer> 515 <integer>1</integer>
505 <key>Type</key> 516 <key>Type</key>
@@ -679,7 +690,7 @@
679 <key>GoAction</key> 690 <key>GoAction</key>
680 <map> 691 <map>
681 <key>Comment</key> 692 <key>Comment</key>
682 <string>How to move for "Go Here" or double-click move. Either "Autopilot" or "Teleport".</string> 693 <string>How to move for &quot;Go Here&quot; or double-click move. Either &quot;Autopilot&quot; or &quot;Teleport&quot;.</string>
683 <key>Persist</key> 694 <key>Persist</key>
684 <integer>1</integer> 695 <integer>1</integer>
685 <key>Type</key> 696 <key>Type</key>
@@ -1033,6 +1044,17 @@
1033 <key>Value</key> 1044 <key>Value</key>
1034 <integer>1</integer> 1045 <integer>1</integer>
1035 </map> 1046 </map>
1047 <key>ShowTimestamps</key>
1048 <map>
1049 <key>Comment</key>
1050 <string>Show timestamps in chat and IMs</string>
1051 <key>Persist</key>
1052 <integer>1</integer>
1053 <key>Type</key>
1054 <string>Boolean</string>
1055 <key>Value</key>
1056 <integer>1</integer>
1057 </map>
1036 <key>SpeedRez</key> 1058 <key>SpeedRez</key>
1037 <map> 1059 <map>
1038 <key>Comment</key> 1060 <key>Comment</key>
@@ -1067,7 +1089,7 @@
1067 <integer>1</integer> 1089 <integer>1</integer>
1068 </map> 1090 </map>
1069 <key>RenderWaterVoidCulling</key> 1091 <key>RenderWaterVoidCulling</key>
1070 <map> 1092 <map>
1071 <key>Comment</key> 1093 <key>Comment</key>
1072 <string>Cull void water objects when off-screen.</string> 1094 <string>Cull void water objects when off-screen.</string>
1073 <key>Persist</key> 1095 <key>Persist</key>
@@ -1089,16 +1111,16 @@
1089 <integer>0</integer> 1111 <integer>0</integer>
1090 </map> 1112 </map>
1091 <key>ResetFocusOnSelfClick</key> 1113 <key>ResetFocusOnSelfClick</key>
1092 <map> 1114 <map>
1093 <key>Comment</key> 1115 <key>Comment</key>
1094 <string>Setting this to TRUE resets your camera when you left-click your avatar</string> 1116 <string>Setting this to TRUE resets your camera when you left-click your avatar</string>
1095 <key>Persist</key> 1117 <key>Persist</key>
1096 <integer>1</integer> 1118 <integer>1</integer>
1097 <key>Type</key> 1119 <key>Type</key>
1098 <string>Boolean</string> 1120 <string>Boolean</string>
1099 <key>Value</key> 1121 <key>Value</key>
1100 <integer>1</integer> 1122 <integer>1</integer>
1101 </map> 1123 </map>
1102 <key>RezWithLandGroup</key> 1124 <key>RezWithLandGroup</key>
1103 <map> 1125 <map>
1104 <key>Comment</key> 1126 <key>Comment</key>
@@ -1542,7 +1564,7 @@
1542 </map> 1564 </map>
1543 1565
1544 <!-- Begin: OpenRegionInfo --> 1566 <!-- Begin: OpenRegionInfo -->
1545 1567
1546 <key>ToggleTeenMode</key> 1568 <key>ToggleTeenMode</key>
1547 <map> 1569 <map>
1548 <key>Comment</key> 1570 <key>Comment</key>
@@ -1554,7 +1576,7 @@
1554 <key>Value</key> 1576 <key>Value</key>
1555 <integer>1</integer> 1577 <integer>1</integer>
1556 </map> 1578 </map>
1557 1579
1558 <!-- Begin: AO--> 1580 <!-- Begin: AO-->
1559 1581
1560 <key>AOEnabled</key> 1582 <key>AOEnabled</key>
@@ -1805,7 +1827,7 @@
1805 <key>Value</key> 1827 <key>Value</key>
1806 <integer>1</integer> 1828 <integer>1</integer>
1807 </map> 1829 </map>
1808 1830
1809 <key>DownloadClientTags</key> 1831 <key>DownloadClientTags</key>
1810 <map> 1832 <map>
1811 <key>Comment</key> 1833 <key>Comment</key>
@@ -2160,9 +2182,9 @@
2160 <key>Value</key> 2182 <key>Value</key>
2161 <string>English (United States of America)</string> 2183 <string>English (United States of America)</string>
2162 </map> 2184 </map>
2163 2185
2164 <!-- End: Spellcheck & Translation --> 2186 <!-- End: Spellcheck & Translation -->
2165 2187
2166 <!-- Begin: RLVa --> 2188 <!-- Begin: RLVa -->
2167 2189
2168 <key>RestrainedLove</key> 2190 <key>RestrainedLove</key>
@@ -2234,7 +2256,7 @@
2234 <key>RLVaEnableWear</key> 2256 <key>RLVaEnableWear</key>
2235 <map> 2257 <map>
2236 <key>Comment</key> 2258 <key>Comment</key>
2237 <string>Enables the "Wear" option on the inventory item context menu for attachments</string> 2259 <string>Enables the &quot;Wear&quot; option on the inventory item context menu for attachments</string>
2238 <key>Persist</key> 2260 <key>Persist</key>
2239 <integer>1</integer> 2261 <integer>1</integer>
2240 <key>Type</key> 2262 <key>Type</key>
@@ -2256,7 +2278,7 @@
2256 <key>RLVaHideLockedLayers</key> 2278 <key>RLVaHideLockedLayers</key>
2257 <map> 2279 <map>
2258 <key>Comment</key> 2280 <key>Comment</key>
2259 <string>Hides "remove outfit" restricted worn clothing layers from @getoufit</string> 2281 <string>Hides &quot;remove outfit&quot; restricted worn clothing layers from @getoufit</string>
2260 <key>Persist</key> 2282 <key>Persist</key>
2261 <integer>1</integer> 2283 <integer>1</integer>
2262 <key>Type</key> 2284 <key>Type</key>
@@ -2289,7 +2311,7 @@
2289 <key>RLVaShowNameTags</key> 2311 <key>RLVaShowNameTags</key>
2290 <map> 2312 <map>
2291 <key>Comment</key> 2313 <key>Comment</key>
2292 <string>Display of names above avatars is subject to the general "Show Names" setting when @shownames=n restricted</string> 2314 <string>Display of names above avatars is subject to the general &quot;Show Names&quot; setting when @shownames=n restricted</string>
2293 <key>Persist</key> 2315 <key>Persist</key>
2294 <integer>1</integer> 2316 <integer>1</integer>
2295 <key>Type</key> 2317 <key>Type</key>
@@ -2343,7 +2365,7 @@
2343 </map> 2365 </map>
2344 2366
2345 <!-- End: RLVa --> 2367 <!-- End: RLVa -->
2346 2368
2347 <!-- Begin: socks5 --> 2369 <!-- Begin: socks5 -->
2348 2370
2349 <key>Socks5ProxyEnabled</key> 2371 <key>Socks5ProxyEnabled</key>
@@ -2554,11 +2576,11 @@
2554 <key>Value</key> 2576 <key>Value</key>
2555 <integer>-8888888</integer> 2577 <integer>-8888888</integer>
2556 </map> 2578 </map>
2557 2579
2558 <!-- End: full radar (Advanced menu) --> 2580 <!-- End: full radar (Advanced menu) -->
2559 2581
2560 <!-- END IMPRUDENCE-SPECIFIC SETTINGS --> 2582 <!-- END IMPRUDENCE-SPECIFIC SETTINGS -->
2561 2583
2562 <key>AFKTimeout</key> 2584 <key>AFKTimeout</key>
2563 <map> 2585 <map>
2564 <key>Comment</key> 2586 <key>Comment</key>
@@ -3014,7 +3036,7 @@
3014 <key>AutomaticFly</key> 3036 <key>AutomaticFly</key>
3015 <map> 3037 <map>
3016 <key>Comment</key> 3038 <key>Comment</key>
3017 <string>Fly by holding jump key or using "Fly" command (FALSE = fly by using "Fly" command only)</string> 3039 <string>Fly by holding jump key or using &quot;Fly&quot; command (FALSE = fly by using &quot;Fly&quot; command only)</string>
3018 <key>Persist</key> 3040 <key>Persist</key>
3019 <integer>1</integer> 3041 <integer>1</integer>
3020 <key>Type</key> 3042 <key>Type</key>
@@ -3973,17 +3995,6 @@
3973 <key>Value</key> 3995 <key>Value</key>
3974 <real>20.0</real> 3996 <real>20.0</real>
3975 </map> 3997 </map>
3976 <key>ChatShowTimestamps</key>
3977 <map>
3978 <key>Comment</key>
3979 <string>Show timestamps in chat</string>
3980 <key>Persist</key>
3981 <integer>1</integer>
3982 <key>Type</key>
3983 <string>Boolean</string>
3984 <key>Value</key>
3985 <integer>1</integer>
3986 </map>
3987 <key>ChatVisible</key> 3998 <key>ChatVisible</key>
3988 <map> 3999 <map>
3989 <key>Comment</key> 4000 <key>Comment</key>
@@ -5655,7 +5666,7 @@
5655 <key>DoubleClickAction</key> 5666 <key>DoubleClickAction</key>
5656 <map> 5667 <map>
5657 <key>Comment</key> 5668 <key>Comment</key>
5658 <string>What to do when you double-click. Either "None" or "Go".</string> 5669 <string>What to do when you double-click. Either &quot;None&quot; or &quot;Go&quot;.</string>
5659 <key>Persist</key> 5670 <key>Persist</key>
5660 <integer>1</integer> 5671 <integer>1</integer>
5661 <key>Type</key> 5672 <key>Type</key>
@@ -5891,7 +5902,7 @@
5891 <key>FindLandType</key> 5902 <key>FindLandType</key>
5892 <map> 5903 <map>
5893 <key>Comment</key> 5904 <key>Comment</key>
5894 <string>Controls which type of land you are searching for in Find Land interface ("All", "Auction", "For Sale")</string> 5905 <string>Controls which type of land you are searching for in Find Land interface (&quot;All&quot;, &quot;Auction&quot;, &quot;For Sale&quot;)</string>
5895 <key>Persist</key> 5906 <key>Persist</key>
5896 <integer>1</integer> 5907 <integer>1</integer>
5897 <key>Type</key> 5908 <key>Type</key>
@@ -7476,17 +7487,6 @@
7476 <key>Value</key> 7487 <key>Value</key>
7477 <integer>0</integer> 7488 <integer>0</integer>
7478 </map> 7489 </map>
7479 <key>IMShowTimestamps</key>
7480 <map>
7481 <key>Comment</key>
7482 <string>Show timestamps in IM</string>
7483 <key>Persist</key>
7484 <integer>1</integer>
7485 <key>Type</key>
7486 <string>Boolean</string>
7487 <key>Value</key>
7488 <integer>1</integer>
7489 </map>
7490 <key>IgnorePixelDepth</key> 7490 <key>IgnorePixelDepth</key>
7491 <map> 7491 <map>
7492 <key>Comment</key> 7492 <key>Comment</key>
@@ -7858,7 +7858,7 @@
7858 <key>LastFindPanel</key> 7858 <key>LastFindPanel</key>
7859 <map> 7859 <map>
7860 <key>Comment</key> 7860 <key>Comment</key>
7861 <string>Controls which find operation appears by default when clicking "Find" button </string> 7861 <string>Controls which find operation appears by default when clicking &quot;Find&quot; button </string>
7862 <key>Persist</key> 7862 <key>Persist</key>
7863 <integer>1</integer> 7863 <integer>1</integer>
7864 <key>Type</key> 7864 <key>Type</key>
@@ -8380,7 +8380,7 @@
8380 <key>MediaOnAPrimUI</key> 8380 <key>MediaOnAPrimUI</key>
8381 <map> 8381 <map>
8382 <key>Comment</key> 8382 <key>Comment</key>
8383 <string>Whether or not to show the "link sharing" UI</string> 8383 <string>Whether or not to show the &quot;link sharing&quot; UI</string>
8384 <key>Persist</key> 8384 <key>Persist</key>
8385 <integer>1</integer> 8385 <integer>1</integer>
8386 <key>Type</key> 8386 <key>Type</key>
@@ -8977,7 +8977,7 @@
8977 <key>OverlayTitle</key> 8977 <key>OverlayTitle</key>
8978 <map> 8978 <map>
8979 <key>Comment</key> 8979 <key>Comment</key>
8980 <string>Controls watermark text message displayed on screen when "ShowOverlayTitle" is enabled (one word, underscores become spaces)</string> 8980 <string>Controls watermark text message displayed on screen when &quot;ShowOverlayTitle&quot; is enabled (one word, underscores become spaces)</string>
8981 <key>Persist</key> 8981 <key>Persist</key>
8982 <integer>1</integer> 8982 <integer>1</integer>
8983 <key>Type</key> 8983 <key>Type</key>
@@ -13331,7 +13331,7 @@
13331 <key>UISndHealthReductionThreshold</key> 13331 <key>UISndHealthReductionThreshold</key>
13332 <map> 13332 <map>
13333 <key>Comment</key> 13333 <key>Comment</key>
13334 <string>Amount of health reduction required to trigger "pain" sound</string> 13334 <string>Amount of health reduction required to trigger &quot;pain&quot; sound</string>
13335 <key>Persist</key> 13335 <key>Persist</key>
13336 <integer>1</integer> 13336 <integer>1</integer>
13337 <key>Type</key> 13337 <key>Type</key>
@@ -13364,7 +13364,7 @@
13364 <key>UISndMoneyChangeThreshold</key> 13364 <key>UISndMoneyChangeThreshold</key>
13365 <map> 13365 <map>
13366 <key>Comment</key> 13366 <key>Comment</key>
13367 <string>Amount of change in L$ balance required to trigger "money" sound</string> 13367 <string>Amount of change in L$ balance required to trigger &quot;money&quot; sound</string>
13368 <key>Persist</key> 13368 <key>Persist</key>
13369 <integer>1</integer> 13369 <integer>1</integer>
13370 <key>Type</key> 13370 <key>Type</key>
@@ -13661,7 +13661,7 @@
13661 <key>UseDebugMenus</key> 13661 <key>UseDebugMenus</key>
13662 <map> 13662 <map>
13663 <key>Comment</key> 13663 <key>Comment</key>
13664 <string>Turns on "Debug" menu</string> 13664 <string>Turns on &quot;Debug&quot; menu</string>
13665 <key>Persist</key> 13665 <key>Persist</key>
13666 <integer>1</integer> 13666 <integer>1</integer>
13667 <key>Type</key> 13667 <key>Type</key>
diff --git a/linden/indra/newview/app_settings/viewerversion.xml b/linden/indra/newview/app_settings/viewerversion.xml
deleted file mode 100644
index 051f2a3..0000000
--- a/linden/indra/newview/app_settings/viewerversion.xml
+++ /dev/null
@@ -1,25 +0,0 @@
1<!--
2Set the version for Imprudence here!
3
4NOTE: llcommon/llviewerversion.h still
5contains the version for the LL viewer.
6
7OS-specific version resources still
8need to be changed manually - MC
9-->
10
11<viewer_version>
12
13 <!--int-->
14 <viewer version_major="1" />
15
16 <!--int-->
17 <viewer version_minor="4" />
18
19 <!--int-->
20 <viewer version_patch="0" />
21
22 <!--string-->
23 <viewer version_test="Experimental 2011.04.19" />
24
25</viewer_version>
diff --git a/linden/indra/newview/floaterlocalassetbrowse.cpp b/linden/indra/newview/floaterlocalassetbrowse.cpp
index 8ea13cc..8633ac4 100644
--- a/linden/indra/newview/floaterlocalassetbrowse.cpp
+++ b/linden/indra/newview/floaterlocalassetbrowse.cpp
@@ -943,7 +943,7 @@ void FloaterLocalAssetBrowser::UpdateRightSide()
943 sLFInstance->mLinkTxt->setText( unit->getLinkStatus() ); 943 sLFInstance->mLinkTxt->setText( unit->getLinkStatus() );
944 sLFInstance->mTypeComboBox->selectNthItem( unit->getType() ); 944 sLFInstance->mTypeComboBox->selectNthItem( unit->getType() );
945 945
946 sLFInstance->mTextureView->setEnabled(true); 946 sLFInstance->mTextureView->setEnabled(false);
947 sLFInstance->mUpdateChkBox->setEnabled(true); 947 sLFInstance->mUpdateChkBox->setEnabled(true);
948 sLFInstance->mTypeComboBox->setEnabled(true); 948 sLFInstance->mTypeComboBox->setEnabled(true);
949 } 949 }
diff --git a/linden/indra/newview/hippogridmanager.cpp b/linden/indra/newview/hippogridmanager.cpp
index 78539f8..4c46d3e 100644
--- a/linden/indra/newview/hippogridmanager.cpp
+++ b/linden/indra/newview/hippogridmanager.cpp
@@ -89,7 +89,7 @@ HippoGridInfo::HippoGridInfo(const std::string& gridNick) :
89 mPasswordAvatar(LLStringUtil::null), 89 mPasswordAvatar(LLStringUtil::null),
90 mXmlState(XML_VOID), 90 mXmlState(XML_VOID),
91 mVoiceConnector("SLVoice"), 91 mVoiceConnector("SLVoice"),
92 mRenderCompat(true), 92 mRenderCompat(false),
93 mMaxAgentGroups(-1), 93 mMaxAgentGroups(-1),
94 mCurrencySymbol("OS$"), 94 mCurrencySymbol("OS$"),
95 mRealCurrencySymbol("US$"), 95 mRealCurrencySymbol("US$"),
diff --git a/linden/indra/newview/impprefsfonts.cpp b/linden/indra/newview/impprefsfonts.cpp
index a4dcd34..505761b 100644
--- a/linden/indra/newview/impprefsfonts.cpp
+++ b/linden/indra/newview/impprefsfonts.cpp
@@ -51,6 +51,10 @@ ImpPrefsFonts::~ImpPrefsFonts()
51 51
52BOOL ImpPrefsFonts::postBuild() 52BOOL ImpPrefsFonts::postBuild()
53{ 53{
54 childSetValue("ui_scale_slider", gSavedSettings.getF32("UIScaleFactor"));
55 childSetValue("ui_auto_scale", gSavedSettings.getBOOL("UIAutoScale"));
56 childSetAction("reset_ui_size", onClickResetUISize, this);
57
54 refresh(); 58 refresh();
55 return true; 59 return true;
56} 60}
@@ -79,6 +83,9 @@ void ImpPrefsFonts::refresh()
79 83
80void ImpPrefsFonts::apply() 84void ImpPrefsFonts::apply()
81{ 85{
86 gSavedSettings.setF32("UIScaleFactor", childGetValue("ui_scale_slider").asReal());
87 gSavedSettings.setBOOL("UIAutoScale", childGetValue("ui_auto_scale"));
88
82 bool changed = false; 89 bool changed = false;
83 90
84 LLRadioGroup* fonts = getChild<LLRadioGroup>("fonts"); 91 LLRadioGroup* fonts = getChild<LLRadioGroup>("fonts");
@@ -126,3 +133,11 @@ void ImpPrefsFonts::apply()
126void ImpPrefsFonts::cancel() 133void ImpPrefsFonts::cancel()
127{ 134{
128} 135}
136
137// static
138void ImpPrefsFonts::onClickResetUISize(void* user_data)
139{
140 ImpPrefsFonts* self = (ImpPrefsFonts*)user_data;
141 F32 def = gSavedSettings.getControl("UIScaleFactor")->getDefault().asReal();
142 self->childSetValue("ui_scale_slider", def);
143}
diff --git a/linden/indra/newview/impprefsfonts.h b/linden/indra/newview/impprefsfonts.h
index 12aa0bb..0319261 100644
--- a/linden/indra/newview/impprefsfonts.h
+++ b/linden/indra/newview/impprefsfonts.h
@@ -1,6 +1,6 @@
1/** 1/**
2 * @file impprefsfonts.h 2 * @file impprefsfonts.h
3 * @brief Font preferences panel 3 * @brief UI and font preferences panel
4 * 4 *
5 * Copyright (c) 2010, Jacek Antonelli 5 * Copyright (c) 2010, Jacek Antonelli
6 * 6 *
@@ -40,6 +40,9 @@ public:
40 void refresh(); 40 void refresh();
41 void apply(); 41 void apply();
42 void cancel(); 42 void cancel();
43
44private:
45 static void onClickResetUISize(void*);
43}; 46};
44 47
45#endif // IMP_PREFSFONTS_H 48#endif // IMP_PREFSFONTS_H
diff --git a/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss b/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss
index 398c26d..aa31c3b 100644
--- a/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss
+++ b/linden/indra/newview/installers/windows/imprudence_installer_script_experimental.iss
@@ -9,11 +9,11 @@
9; These will change 9; These will change
10AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460} 10AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460}
11AppName=Imprudence Viewer Experimental 11AppName=Imprudence Viewer Experimental
12AppVerName=Imprudence Viewer 1.4.0 Experimental 2011.03.20 12AppVerName=Imprudence Viewer 1.4.0 Experimental 2011.04.19
13DefaultDirName={pf}\ImprudenceExperimental 13DefaultDirName={pf}\ImprudenceExperimental
14DefaultGroupName=Imprudence Viewer Experimental 14DefaultGroupName=Imprudence Viewer Experimental
15VersionInfoProductName=Imprudence Viewer Experimental 15VersionInfoProductName=Imprudence Viewer Experimental
16OutputBaseFilename=Imprudence-1.4.0-Experimental-2011.03.20-Setup 16OutputBaseFilename=Imprudence-1.4.0-Experimental-2011.04.19-Setup
17VersionInfoVersion=1.4.0 17VersionInfoVersion=1.4.0
18VersionInfoTextVersion=1.4.0 18VersionInfoTextVersion=1.4.0
19VersionInfoProductVersion=1.4.0 19VersionInfoProductVersion=1.4.0
diff --git a/linden/indra/newview/kowopenregionsettings.cpp b/linden/indra/newview/kowopenregionsettings.cpp
index 0c4bb38..6257147 100644
--- a/linden/indra/newview/kowopenregionsettings.cpp
+++ b/linden/indra/newview/kowopenregionsettings.cpp
@@ -36,7 +36,6 @@
36#include "llviewerobject.h" 36#include "llviewerobject.h"
37#include "llfloaterregioninfo.h" 37#include "llfloaterregioninfo.h"
38#include "llfloaterworldmap.h" 38#include "llfloaterworldmap.h"
39#include "llvoiceclient.h"
40#include "viewertime.h" 39#include "viewertime.h"
41 40
42//DEBUG includes 41//DEBUG includes
@@ -205,12 +204,7 @@ class OpenRegionInfoUpdate : public LLHTTPNode
205 { 204 {
206 gHippoLimits->mAllowParcelWindLight = body["AllowParcelWindLight"].asInteger() == 1; 205 gHippoLimits->mAllowParcelWindLight = body["AllowParcelWindLight"].asInteger() == 1;
207 } 206 }
208 if ( body.has("Voice") ) 207
209 {
210 gSavedSettings.setString("VoiceModule", body["Voice"].asString());
211 //gVoiceClient->close();
212 //gVoiceClient->start();
213 }
214 208
215 if (limitschanged) 209 if (limitschanged)
216 gFloaterTools->updateToolsSizeLimits(); 210 gFloaterTools->updateToolsSizeLimits();
diff --git a/linden/indra/newview/linux_tools/wrapper.sh b/linden/indra/newview/linux_tools/wrapper.sh
index 08ae537..d4eaf33 100755
--- a/linden/indra/newview/linux_tools/wrapper.sh
+++ b/linden/indra/newview/linux_tools/wrapper.sh
@@ -138,16 +138,16 @@ if [ -n "$LL_RUN_ERR" ]; then
138 fi 138 fi
139fi 139fi
140 140
141LOGS_PATH="${HOME}/.imprudence/logs" 141LOGS_PATH="${HOME}/.meta-impy/logs"
142if [ -f "${LOGS_PATH}/stack_trace.log" ]; then 142if [ -f "${LOGS_PATH}/stack_trace.log" ]; then
143 LOG_PACKAGE_NAME="MAIL-THIS-CRASHLOG-PLEASE.$(date +%y%m%d%H%M).tar.bz2" 143 LOG_PACKAGE_NAME="MAIL-THIS-CRASHLOG-PLEASE.$(date +%y%m%d%H%M).tar.bz2"
144 cp "${LOGS_PATH}/stack_trace.log" stack_trace.log 144 cp "${LOGS_PATH}/stack_trace.log" stack_trace.log
145 cp "${LOGS_PATH}/Imprudence.log" Imprudence.log 145 cp "${LOGS_PATH}/meta-impy.log" meta-impy.log
146 tar --numeric-owner -cjf ${LOG_PACKAGE_NAME} \ 146 tar --numeric-owner -cjf ${LOG_PACKAGE_NAME} \
147 stack_trace.log \ 147 stack_trace.log \
148 Imprudence.log 148 meta-impy.log
149 rm stack_trace.log 149 rm stack_trace.log
150 rm Imprudence.log 150 rm meta-impy.log
151 echo "You find a crash log package to mail to Imprudence here:" 151 echo "You find a crash log package to mail to Imprudence here:"
152 echo "${RUN_PATH}/${LOG_PACKAGE_NAME}" 152 echo "${RUN_PATH}/${LOG_PACKAGE_NAME}"
153 echo "See where to send: http://wiki.kokuaviewer.org/wiki/Imprudence:Debug_Logs#Where_to_Send_Them" 153 echo "See where to send: http://wiki.kokuaviewer.org/wiki/Imprudence:Debug_Logs#Where_to_Send_Them"
diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp
index 09b4eda..a026391 100644
--- a/linden/indra/newview/llappviewer.cpp
+++ b/linden/indra/newview/llappviewer.cpp
@@ -154,7 +154,7 @@
154#include "llflexibleobject.h" 154#include "llflexibleobject.h"
155#include "llvosurfacepatch.h" 155#include "llvosurfacepatch.h"
156#include "llslider.h" 156#include "llslider.h"
157#include "viewerversion.h" 157#include "viewerinfo.h"
158 158
159// includes for idle() idleShutdown() 159// includes for idle() idleShutdown()
160#include "floaterao.h" 160#include "floaterao.h"
@@ -602,7 +602,7 @@ bool LLAppViewer::init()
602 602
603 // Need to do this initialization before we do anything else, since anything 603 // Need to do this initialization before we do anything else, since anything
604 // that touches files should really go through the lldir API 604 // that touches files should really go through the lldir API
605 gDirUtilp->initAppDirs(ViewerVersion::getImpViewerName()); 605 gDirUtilp->initAppDirs(ViewerInfo::viewerName());
606 // set skin search path to default, will be overridden later 606 // set skin search path to default, will be overridden later
607 // this allows simple skinned file lookups to work 607 // this allows simple skinned file lookups to work
608 gDirUtilp->setSkinFolder("default"); 608 gDirUtilp->setSkinFolder("default");
@@ -624,15 +624,8 @@ bool LLAppViewer::init()
624 writeSystemInfo(); 624 writeSystemInfo();
625 625
626 626
627 // Build a string representing the current version number. 627 // String representing the current version name/number.
628 gCurrentVersion = llformat( 628 gCurrentVersion = ViewerInfo::terseInfo();
629 "%s %d.%d.%d.%d",
630 gSavedSettings.getString("VersionChannelName").c_str(),
631 ViewerVersion::getImpMajorVersion(),
632 ViewerVersion::getImpMinorVersion(),
633 ViewerVersion::getImpPatchVersion(),
634 0 // our 'build number'
635 );
636 629
637 ////////////////////////////////////////////////////////////////////////////// 630 //////////////////////////////////////////////////////////////////////////////
638 ////////////////////////////////////////////////////////////////////////////// 631 //////////////////////////////////////////////////////////////////////////////
@@ -1800,9 +1793,6 @@ std::string LLAppViewer::getSettingsFilename(const std::string& location_key,
1800 1793
1801bool LLAppViewer::initConfiguration() 1794bool LLAppViewer::initConfiguration()
1802{ 1795{
1803 // init Imprudence version - MC
1804 ViewerVersion::initViewerVersion();
1805
1806 //Set up internal pointers 1796 //Set up internal pointers
1807 gSettings[sGlobalSettingsName] = &gSavedSettings; 1797 gSettings[sGlobalSettingsName] = &gSavedSettings;
1808 gSettings[sPerAccountSettingsName] = &gSavedPerAccountSettings; 1798 gSettings[sPerAccountSettingsName] = &gSavedPerAccountSettings;
@@ -1848,9 +1838,9 @@ bool LLAppViewer::initConfiguration()
1848 // - set procedural settings 1838 // - set procedural settings
1849 gSavedSettings.setString("ClientSettingsFile", 1839 gSavedSettings.setString("ClientSettingsFile",
1850 // gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, getSettingsFilename("Default", "Global"))); 1840 // gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, getSettingsFilename("Default", "Global")));
1851 gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "settings_meta-impy_experimental.xml")); 1841 gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "settings_meta-impy.xml"));
1852 1842
1853 gSavedSettings.setString("VersionChannelName", ViewerVersion::getImpViewerName()); 1843 gSavedSettings.setString("VersionChannelName", ViewerInfo::nameWithVariant());
1854 1844
1855 //*FIX:Mani - Set default to disabling watchdog mainloop 1845 //*FIX:Mani - Set default to disabling watchdog mainloop
1856 // timeout for mac and linux. There is no call stack info 1846 // timeout for mac and linux. There is no call stack info
@@ -2096,7 +2086,7 @@ bool LLAppViewer::initConfiguration()
2096 mYieldTime = gSavedSettings.getS32("YieldTime"); 2086 mYieldTime = gSavedSettings.getS32("YieldTime");
2097 2087
2098 // XUI:translate 2088 // XUI:translate
2099 gSecondLife = ViewerVersion::getImpViewerName(); 2089 gSecondLife = ViewerInfo::viewerName();
2100 2090
2101 // Read skin/branding settings if specified. 2091 // Read skin/branding settings if specified.
2102 //if (! gDirUtilp->getSkinDir().empty() ) 2092 //if (! gDirUtilp->getSkinDir().empty() )
@@ -2468,11 +2458,12 @@ void LLAppViewer::writeSystemInfo()
2468{ 2458{
2469 gDebugInfo["SLLog"] = LLError::logFileName(); 2459 gDebugInfo["SLLog"] = LLError::logFileName();
2470 2460
2471 gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName"); 2461 gDebugInfo["ClientInfo"]["Name"] = ViewerInfo::viewerName();
2472 gDebugInfo["ClientInfo"]["MajorVersion"] = ViewerVersion::getImpMajorVersion(); 2462 gDebugInfo["ClientInfo"]["MajorVersion"] = ViewerInfo::versionMajor();
2473 gDebugInfo["ClientInfo"]["MinorVersion"] = ViewerVersion::getImpMinorVersion(); 2463 gDebugInfo["ClientInfo"]["MinorVersion"] = ViewerInfo::versionMinor();
2474 gDebugInfo["ClientInfo"]["PatchVersion"] = ViewerVersion::getImpPatchVersion(); 2464 gDebugInfo["ClientInfo"]["PatchVersion"] = ViewerInfo::versionPatch();
2475 gDebugInfo["ClientInfo"]["BuildVersion"] = 0; 2465 gDebugInfo["ClientInfo"]["ReleaseVersion"] = ViewerInfo::versionRelease();
2466 gDebugInfo["ClientInfo"]["ExtraVersion"] = ViewerInfo::versionExtra();
2476 2467
2477 gDebugInfo["CAFilename"] = gDirUtilp->getCAFile(); 2468 gDebugInfo["CAFilename"] = gDirUtilp->getCAFile();
2478 2469
@@ -2557,11 +2548,12 @@ void LLAppViewer::handleViewerCrash()
2557 2548
2558 //We already do this in writeSystemInfo(), but we do it again here to make /sure/ we have a version 2549 //We already do this in writeSystemInfo(), but we do it again here to make /sure/ we have a version
2559 //to check against no matter what 2550 //to check against no matter what
2560 gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName"); 2551 gDebugInfo["ClientInfo"]["Name"] = ViewerInfo::viewerName();
2561 gDebugInfo["ClientInfo"]["MajorVersion"] = ViewerVersion::getImpMajorVersion(); 2552 gDebugInfo["ClientInfo"]["MajorVersion"] = ViewerInfo::versionMajor();
2562 gDebugInfo["ClientInfo"]["MinorVersion"] = ViewerVersion::getImpMinorVersion(); 2553 gDebugInfo["ClientInfo"]["MinorVersion"] = ViewerInfo::versionMinor();
2563 gDebugInfo["ClientInfo"]["PatchVersion"] = ViewerVersion::getImpPatchVersion(); 2554 gDebugInfo["ClientInfo"]["PatchVersion"] = ViewerInfo::versionPatch();
2564 gDebugInfo["ClientInfo"]["BuildVersion"] = 0; 2555 gDebugInfo["ClientInfo"]["ReleaseVersion"] = ViewerInfo::versionRelease();
2556 gDebugInfo["ClientInfo"]["ExtraVersion"] = ViewerInfo::versionExtra();
2565 2557
2566 LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); 2558 LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
2567 if ( parcel && parcel->getMusicURL()[0]) 2559 if ( parcel && parcel->getMusicURL()[0])
@@ -4341,11 +4333,12 @@ void LLAppViewer::handleLoginComplete()
4341 initMainloopTimeout("Mainloop Init"); 4333 initMainloopTimeout("Mainloop Init");
4342 4334
4343 // Store some data to DebugInfo in case of a freeze. 4335 // Store some data to DebugInfo in case of a freeze.
4344 gDebugInfo["ClientInfo"]["Name"] = gSavedSettings.getString("VersionChannelName"); 4336 gDebugInfo["ClientInfo"]["Name"] = ViewerInfo::viewerName();
4345 gDebugInfo["ClientInfo"]["MajorVersion"] = ViewerVersion::getImpMajorVersion(); 4337 gDebugInfo["ClientInfo"]["MajorVersion"] = ViewerInfo::versionMajor();
4346 gDebugInfo["ClientInfo"]["MinorVersion"] = ViewerVersion::getImpMinorVersion(); 4338 gDebugInfo["ClientInfo"]["MinorVersion"] = ViewerInfo::versionMinor();
4347 gDebugInfo["ClientInfo"]["PatchVersion"] = ViewerVersion::getImpPatchVersion(); 4339 gDebugInfo["ClientInfo"]["PatchVersion"] = ViewerInfo::versionPatch();
4348 gDebugInfo["ClientInfo"]["BuildVersion"] = 0; 4340 gDebugInfo["ClientInfo"]["ReleaseVersion"] = ViewerInfo::versionRelease();
4341 gDebugInfo["ClientInfo"]["ExtraVersion"] = ViewerInfo::versionExtra();
4349 4342
4350 gDebugInfo["SettingsFilename"] = gSavedSettings.getString("ClientSettingsFile"); 4343 gDebugInfo["SettingsFilename"] = gSavedSettings.getString("ClientSettingsFile");
4351 gDebugInfo["CAFilename"] = gDirUtilp->getCAFile(); 4344 gDebugInfo["CAFilename"] = gDirUtilp->getCAFile();
diff --git a/linden/indra/newview/llappviewerlinux.cpp b/linden/indra/newview/llappviewerlinux.cpp
index eb713b8..1f84a11 100644
--- a/linden/indra/newview/llappviewerlinux.cpp
+++ b/linden/indra/newview/llappviewerlinux.cpp
@@ -472,7 +472,7 @@ gboolean viewer_app_api_HotplugJoystick(ViewerAppAPI *obj, gchar *dummy, gboolea
472 return TRUE; // the invokation succeeded, even if the actual dispatch didn't. 472 return TRUE; // the invokation succeeded, even if the actual dispatch didn't.
473 473
474 // TODO: fire this by the spacenavi udev rule. 474 // TODO: fire this by the spacenavi udev rule.
475 // for testing plug in joystick while Imprudence is running and type in a 475 // for testing plug in joystick while viewer is running and type in a
476 // console: dbus-send --type=method_call --dest=com.secondlife.ViewerAppAPIService /com/secondlife/ViewerAppAPI com.secondlife.ViewerAppAPI.HotplugJoystick string:'dummy' 476 // console: dbus-send --type=method_call --dest=com.secondlife.ViewerAppAPIService /com/secondlife/ViewerAppAPI com.secondlife.ViewerAppAPI.HotplugJoystick string:'dummy'
477} 477}
478 478
diff --git a/linden/indra/newview/lldrawpoolwlsky.cpp b/linden/indra/newview/lldrawpoolwlsky.cpp
index 451d08e..46de496 100644
--- a/linden/indra/newview/lldrawpoolwlsky.cpp
+++ b/linden/indra/newview/lldrawpoolwlsky.cpp
@@ -276,18 +276,17 @@ void LLDrawPoolWLSky::render(S32 pass)
276 LLVector3 const & origin = LLViewerCamera::getInstance()->getOrigin(); 276 LLVector3 const & origin = LLViewerCamera::getInstance()->getOrigin();
277 glPushMatrix(); 277 glPushMatrix();
278 278
279 glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]); 279 glTranslatef(origin.mV[0], origin.mV[1], origin.mV[2]);
280 280
281 // *NOTE: have to bind a texture here since register combiners blending in 281 // *NOTE: have to bind a texture here since register combiners blending in
282 // renderStars() requires something to be bound and we might as well only 282 // renderStars() requires something to be bound and we might as well only
283 // bind the moon's texture once. 283 // bind the moon's texture once.
284 LLImageGL * tex = gSky.mVOSkyp->mFace[LLVOSky::FACE_MOON]->getTexture(); 284 LLImageGL * tex = gSky.mVOSkyp->mFace[LLVOSky::FACE_MOON]->getTexture();
285 gGL.getTexUnit(0)->bind(tex); 285 gGL.getTexUnit(0)->bind(tex);
286 286
287 renderHeavenlyBodies(); 287 renderStars();
288 288
289 renderStars(); 289 renderHeavenlyBodies();
290
291 290
292 glPopMatrix(); 291 glPopMatrix();
293 292
diff --git a/linden/indra/newview/llface.cpp b/linden/indra/newview/llface.cpp
index aa8cd15..cf681fa 100644
--- a/linden/indra/newview/llface.cpp
+++ b/linden/indra/newview/llface.cpp
@@ -159,6 +159,7 @@ void LLFace::init(LLDrawable* drawablep, LLViewerObject* objp)
159 mIndicesIndex = 0; 159 mIndicesIndex = 0;
160 mTexture = NULL; 160 mTexture = NULL;
161 mTEOffset = -1; 161 mTEOffset = -1;
162 mIndexInTex = 0;
162 163
163 setDrawable(drawablep); 164 setDrawable(drawablep);
164 mVObjp = objp; 165 mVObjp = objp;
diff --git a/linden/indra/newview/llface.h b/linden/indra/newview/llface.h
index e31b93f..f870370 100644
--- a/linden/indra/newview/llface.h
+++ b/linden/indra/newview/llface.h
@@ -228,7 +228,7 @@ private:
228 U16 mGeomIndex; // index into draw pool 228 U16 mGeomIndex; // index into draw pool
229 U32 mIndicesCount; 229 U32 mIndicesCount;
230 U32 mIndicesIndex; // index into draw pool for indices (yeah, I know!) 230 U32 mIndicesIndex; // index into draw pool for indices (yeah, I know!)
231 S32 mIndexInTex ; 231 S32 mIndexInTex ; // index of this face in the texture's face list
232 232
233 //previous rebuild's geometry info 233 //previous rebuild's geometry info
234 U16 mLastGeomCount; 234 U16 mLastGeomCount;
diff --git a/linden/indra/newview/llfloaterabout.cpp b/linden/indra/newview/llfloaterabout.cpp
index a5d2c98..8878de5 100644
--- a/linden/indra/newview/llfloaterabout.cpp
+++ b/linden/indra/newview/llfloaterabout.cpp
@@ -59,7 +59,7 @@
59#include "llglheaders.h" 59#include "llglheaders.h"
60#include "llviewerwindow.h" 60#include "llviewerwindow.h"
61#include "llwindow.h" 61#include "llwindow.h"
62#include "viewerversion.h" 62#include "viewerinfo.h"
63 63
64// [RLVa:KB] 64// [RLVa:KB]
65#include "rlvhandler.h" 65#include "rlvhandler.h"
@@ -120,11 +120,7 @@ LLFloaterAbout::LLFloaterAbout()
120 viewer_link_style->setColor(gSavedSettings.getColor4("HTMLLinkColor")); 120 viewer_link_style->setColor(gSavedSettings.getColor4("HTMLLinkColor"));
121 121
122 // Version string 122 // Version string
123 std::string version = llformat( 123 std::string version = llformat("%s (%s %s)\n", ViewerInfo::prettyInfo().c_str(), __DATE__, __TIME__);
124 "%s %d.%d.%d %s (%s %s)\n",
125 ViewerVersion::getImpViewerName().c_str(),
126 ViewerVersion::getImpMajorVersion(), ViewerVersion::getImpMinorVersion(), ViewerVersion::getImpPatchVersion(), ViewerVersion::getImpTestVersion().c_str(),
127 __DATE__, __TIME__);
128 124
129 support_widget->appendColoredText(version, FALSE, FALSE, gColors.getColor("TextFgReadOnlyColor")); 125 support_widget->appendColoredText(version, FALSE, FALSE, gColors.getColor("TextFgReadOnlyColor"));
130 support_widget->appendStyledText(LLTrans::getString("ReleaseNotes"), false, false, viewer_link_style); 126 support_widget->appendStyledText(LLTrans::getString("ReleaseNotes"), false, false, viewer_link_style);
@@ -318,13 +314,13 @@ void LLFloaterAbout::onClickCopy(void* user_data)
318static std::string get_viewer_release_notes_url() 314static std::string get_viewer_release_notes_url()
319{ 315{
320 std::ostringstream version; 316 std::ostringstream version;
321 version << ViewerVersion::getImpMajorVersion() << "." 317 version << ViewerInfo::versionMajor() << "."
322 << ViewerVersion::getImpMinorVersion() << "." 318 << ViewerInfo::versionMinor() << "."
323 << ViewerVersion::getImpPatchVersion(); 319 << ViewerInfo::versionPatch();
324 320
325 // Append the test version if it's not empty 321 // Append the test version if it's not empty
326 if( !(ViewerVersion::getImpTestVersion().empty()) ) 322 if( !(ViewerInfo::versionExtra().empty()) )
327 version << "-" << ViewerVersion::getImpTestVersion(); 323 version << "-" << ViewerInfo::versionExtra();
328 324
329 std::ostringstream url; 325 std::ostringstream url;
330 url << RELEASE_NOTES_BASE_URL << version.str(); 326 url << RELEASE_NOTES_BASE_URL << version.str();
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp
index 4de7918..681cbb2 100644
--- a/linden/indra/newview/llfloaterchat.cpp
+++ b/linden/indra/newview/llfloaterchat.cpp
@@ -216,7 +216,7 @@ void add_timestamped_line(LLViewerTextEditor* edit, LLChat chat, const LLColor4&
216{ 216{
217 std::string line = chat.mText; 217 std::string line = chat.mText;
218 bool prepend_newline = true; 218 bool prepend_newline = true;
219 if (gSavedSettings.getBOOL("ChatShowTimestamps")) 219 if (gSavedSettings.getBOOL("ShowTimestamps"))
220 { 220 {
221 edit->appendTime(prepend_newline); 221 edit->appendTime(prepend_newline);
222 prepend_newline = false; 222 prepend_newline = false;
diff --git a/linden/indra/newview/llfloatermediabrowser.cpp b/linden/indra/newview/llfloatermediabrowser.cpp
index a78c9d1..54ffc0f 100644
--- a/linden/indra/newview/llfloatermediabrowser.cpp
+++ b/linden/indra/newview/llfloatermediabrowser.cpp
@@ -119,7 +119,6 @@ BOOL LLFloaterMediaBrowser::postBuild()
119 childSetAction("pause", onClickPlay, this); 119 childSetAction("pause", onClickPlay, this);
120 childSetAction("seek", onClickSeek, this); 120 childSetAction("seek", onClickSeek, this);
121 childSetAction("go", onClickGo, this); 121 childSetAction("go", onClickGo, this);
122 childSetAction("close", onClickClose, this);
123 childSetAction("open_browser", onClickOpenWebBrowser, this); 122 childSetAction("open_browser", onClickOpenWebBrowser, this);
124 childSetAction("assign", onClickAssign, this); 123 childSetAction("assign", onClickAssign, this);
125 childSetAction("home", onClickHome, this); 124 childSetAction("home", onClickHome, this);
@@ -248,14 +247,6 @@ void LLFloaterMediaBrowser::onClickGo(void* user_data)
248} 247}
249 248
250//static 249//static
251void LLFloaterMediaBrowser::onClickClose(void* user_data)
252{
253 LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
254
255 self->close();
256}
257
258//static
259void LLFloaterMediaBrowser::onClickOpenWebBrowser(void* user_data) 250void LLFloaterMediaBrowser::onClickOpenWebBrowser(void* user_data)
260{ 251{
261 LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; 252 LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data;
diff --git a/linden/indra/newview/llfloatermediabrowser.h b/linden/indra/newview/llfloatermediabrowser.h
index 7de1900..f2597f5 100644
--- a/linden/indra/newview/llfloatermediabrowser.h
+++ b/linden/indra/newview/llfloatermediabrowser.h
@@ -82,7 +82,6 @@ public:
82 static void onClickBack(void* user_data); 82 static void onClickBack(void* user_data);
83 static void onClickForward(void* user_data); 83 static void onClickForward(void* user_data);
84 static void onClickGo(void* user_data); 84 static void onClickGo(void* user_data);
85 static void onClickClose(void* user_data);
86 static void onClickOpenWebBrowser(void* user_data); 85 static void onClickOpenWebBrowser(void* user_data);
87 static void onClickAssign(void* user_data); 86 static void onClickAssign(void* user_data);
88 static void onClickHome(void* user_data); 87 static void onClickHome(void* user_data);
diff --git a/linden/indra/newview/llfloaterpreference.cpp b/linden/indra/newview/llfloaterpreference.cpp
index 7d0ef93..94eb2de 100644
--- a/linden/indra/newview/llfloaterpreference.cpp
+++ b/linden/indra/newview/llfloaterpreference.cpp
@@ -60,7 +60,6 @@
60#include "llpanellogin.h" 60#include "llpanellogin.h"
61#include "llpanelLCD.h" 61#include "llpanelLCD.h"
62#include "llpanelmsgs.h" 62#include "llpanelmsgs.h"
63#include "llpanelweb.h"
64#include "llpanelskins.h" 63#include "llpanelskins.h"
65#include "llprefsadvanced.h" 64#include "llprefsadvanced.h"
66#include "llprefschat.h" 65#include "llprefschat.h"
@@ -155,10 +154,6 @@ LLPreferenceCore::LLPreferenceCore(LLTabContainer* tab_container, LLButton * def
155 mTabContainer->addTabPanel(mNetworkPanel, mNetworkPanel->getLabel(), FALSE, onTabChanged, mTabContainer); 154 mTabContainer->addTabPanel(mNetworkPanel, mNetworkPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
156 mNetworkPanel->setDefaultBtn(default_btn); 155 mNetworkPanel->setDefaultBtn(default_btn);
157 156
158 mWebPanel = new LLPanelWeb();
159 mTabContainer->addTabPanel(mWebPanel, mWebPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
160 mWebPanel->setDefaultBtn(default_btn);
161
162 mDisplayPanel = new LLPanelDisplay(); 157 mDisplayPanel = new LLPanelDisplay();
163 mTabContainer->addTabPanel(mDisplayPanel, mDisplayPanel->getLabel(), FALSE, onTabChanged, mTabContainer); 158 mTabContainer->addTabPanel(mDisplayPanel, mDisplayPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
164 mDisplayPanel->setDefaultBtn(default_btn); 159 mDisplayPanel->setDefaultBtn(default_btn);
@@ -171,10 +166,6 @@ LLPreferenceCore::LLPreferenceCore(LLTabContainer* tab_container, LLButton * def
171 mTabContainer->addTabPanel(mPrefsChat->getPanel(), mPrefsChat->getPanel()->getLabel(), FALSE, onTabChanged, mTabContainer); 166 mTabContainer->addTabPanel(mPrefsChat->getPanel(), mPrefsChat->getPanel()->getLabel(), FALSE, onTabChanged, mTabContainer);
172 mPrefsChat->getPanel()->setDefaultBtn(default_btn); 167 mPrefsChat->getPanel()->setDefaultBtn(default_btn);
173 168
174 mPrefsColors = new LLPrefsColors();
175 mTabContainer->addTabPanel(mPrefsColors, mPrefsColors->getLabel(), FALSE, onTabChanged, mTabContainer);
176 mPrefsColors->setDefaultBtn(default_btn);
177
178 mPrefsIM = new LLPrefsIM(); 169 mPrefsIM = new LLPrefsIM();
179 mTabContainer->addTabPanel(mPrefsIM->getPanel(), mPrefsIM->getPanel()->getLabel(), FALSE, onTabChanged, mTabContainer); 170 mTabContainer->addTabPanel(mPrefsIM->getPanel(), mPrefsIM->getPanel()->getLabel(), FALSE, onTabChanged, mTabContainer);
180 mPrefsIM->getPanel()->setDefaultBtn(default_btn); 171 mPrefsIM->getPanel()->setDefaultBtn(default_btn);
@@ -201,6 +192,10 @@ LLPreferenceCore::LLPreferenceCore(LLTabContainer* tab_container, LLButton * def
201 mMsgPanel = new LLPanelMsgs(); 192 mMsgPanel = new LLPanelMsgs();
202 mTabContainer->addTabPanel(mMsgPanel, mMsgPanel->getLabel(), FALSE, onTabChanged, mTabContainer); 193 mTabContainer->addTabPanel(mMsgPanel, mMsgPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
203 mMsgPanel->setDefaultBtn(default_btn); 194 mMsgPanel->setDefaultBtn(default_btn);
195
196 mPrefsColors = new LLPrefsColors();
197 mTabContainer->addTabPanel(mPrefsColors, mPrefsColors->getLabel(), FALSE, onTabChanged, mTabContainer);
198 mPrefsColors->setDefaultBtn(default_btn);
204 199
205 mSkinsPanel = new LLPanelSkins(); 200 mSkinsPanel = new LLPanelSkins();
206 mTabContainer->addTabPanel(mSkinsPanel, mSkinsPanel->getLabel(), FALSE, onTabChanged, mTabContainer); 201 mTabContainer->addTabPanel(mSkinsPanel, mSkinsPanel->getLabel(), FALSE, onTabChanged, mTabContainer);
@@ -263,11 +258,6 @@ LLPreferenceCore::~LLPreferenceCore()
263 delete mMsgPanel; 258 delete mMsgPanel;
264 mMsgPanel = NULL; 259 mMsgPanel = NULL;
265 } 260 }
266 if (mWebPanel)
267 {
268 delete mWebPanel;
269 mWebPanel = NULL;
270 }
271 if (mSkinsPanel) 261 if (mSkinsPanel)
272 { 262 {
273 delete mSkinsPanel; 263 delete mSkinsPanel;
@@ -310,7 +300,6 @@ void LLPreferenceCore::apply()
310 // hardware menu apply 300 // hardware menu apply
311 LLFloaterHardwareSettings::instance()->apply(); 301 LLFloaterHardwareSettings::instance()->apply();
312 302
313 mWebPanel->apply();
314#if LL_LCD_COMPILE 303#if LL_LCD_COMPILE
315 // only add this option if we actually have a logitech keyboard / speaker set 304 // only add this option if we actually have a logitech keyboard / speaker set
316 if (gLcdScreen->Enabled()) 305 if (gLcdScreen->Enabled())
@@ -318,7 +307,6 @@ void LLPreferenceCore::apply()
318 mLCDPanel->apply(); 307 mLCDPanel->apply();
319 } 308 }
320#endif 309#endif
321// mWebPanel->apply();
322} 310}
323 311
324 312
@@ -341,7 +329,6 @@ void LLPreferenceCore::cancel()
341 // cancel hardware menu 329 // cancel hardware menu
342 LLFloaterHardwareSettings::instance()->cancel(); 330 LLFloaterHardwareSettings::instance()->cancel();
343 331
344 mWebPanel->cancel();
345#if LL_LCD_COMPILE 332#if LL_LCD_COMPILE
346 // only add this option if we actually have a logitech keyboard / speaker set 333 // only add this option if we actually have a logitech keyboard / speaker set
347 if (gLcdScreen->Enabled()) 334 if (gLcdScreen->Enabled())
@@ -349,7 +336,6 @@ void LLPreferenceCore::cancel()
349 mLCDPanel->cancel(); 336 mLCDPanel->cancel();
350 } 337 }
351#endif 338#endif
352// mWebPanel->cancel();
353} 339}
354 340
355// static 341// static
@@ -363,7 +349,8 @@ void LLPreferenceCore::onTabChanged(void* user_data, bool from_click)
363 349
364void LLPreferenceCore::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email) 350void LLPreferenceCore::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email)
365{ 351{
366 mPrefsIM->setPersonalInfo(visibility, im_via_email, email); 352 mPrefsIM->setPersonalInfo(visibility);
353 mPrefsChat->setPersonalInfo(im_via_email, email);
367} 354}
368 355
369void LLPreferenceCore::updateIsLoggedIn(bool enable) 356void LLPreferenceCore::updateIsLoggedIn(bool enable)
diff --git a/linden/indra/newview/llfloaterpreference.h b/linden/indra/newview/llfloaterpreference.h
index d5eccbc..ae4f4d9 100644
--- a/linden/indra/newview/llfloaterpreference.h
+++ b/linden/indra/newview/llfloaterpreference.h
@@ -48,7 +48,6 @@ class LLPanelDisplay;
48class LLPanelAudioPrefs; 48class LLPanelAudioPrefs;
49class LLPanelDebug; 49class LLPanelDebug;
50class LLPanelNetwork; 50class LLPanelNetwork;
51class LLPanelWeb;
52class LLMessageSystem; 51class LLMessageSystem;
53class LLPrefsChat; 52class LLPrefsChat;
54class LLPrefsVoice; 53class LLPrefsVoice;
@@ -92,7 +91,6 @@ private:
92 LLPrefsChat *mPrefsChat; 91 LLPrefsChat *mPrefsChat;
93 LLPrefsVoice *mPrefsVoice; 92 LLPrefsVoice *mPrefsVoice;
94 LLPrefsIM *mPrefsIM; 93 LLPrefsIM *mPrefsIM;
95 LLPanelWeb *mWebPanel;
96 LLPanelMsgs *mMsgPanel; 94 LLPanelMsgs *mMsgPanel;
97 LLPanelLCD *mLCDPanel; 95 LLPanelLCD *mLCDPanel;
98 LLPrefsAdvanced *mPrefsAdvanced; 96 LLPrefsAdvanced *mPrefsAdvanced;
diff --git a/linden/indra/newview/llfloaterreporter.cpp b/linden/indra/newview/llfloaterreporter.cpp
index 7f6386b..1911e4e 100644
--- a/linden/indra/newview/llfloaterreporter.cpp
+++ b/linden/indra/newview/llfloaterreporter.cpp
@@ -80,7 +80,7 @@
80#include "llselectmgr.h" 80#include "llselectmgr.h"
81#include "lluictrlfactory.h" 81#include "lluictrlfactory.h"
82#include "llviewernetwork.h" 82#include "llviewernetwork.h"
83#include "viewerversion.h" 83#include "viewerinfo.h"
84 84
85#include "llassetuploadresponders.h" 85#include "llassetuploadresponders.h"
86 86
@@ -742,13 +742,11 @@ LLSD LLFloaterReporter::gatherReport()
742 742
743 if ( mReportType == BUG_REPORT) 743 if ( mReportType == BUG_REPORT)
744 { 744 {
745 summary << short_platform << " V" << ViewerVersion::getLLMajorVersion() << "." 745 summary << short_platform << " "
746 << ViewerVersion::getLLMinorVersion() << "." 746 << ViewerInfo::terseInfo()
747 << ViewerVersion::getLLPatchVersion() << "." 747 << " (" << regionp->getName() << ")"
748 << ViewerVersion::getLLBuildVersion() 748 << "[" << category_name << "] "
749 << " (" << regionp->getName() << ")" 749 << "\"" << childGetValue("summary_edit").asString() << "\"";
750 << "[" << category_name << "] "
751 << "\"" << childGetValue("summary_edit").asString() << "\"";
752 } 750 }
753 else 751 else
754 { 752 {
@@ -763,10 +761,7 @@ LLSD LLFloaterReporter::gatherReport()
763 std::ostringstream details; 761 std::ostringstream details;
764 if (mReportType != BUG_REPORT) 762 if (mReportType != BUG_REPORT)
765 { 763 {
766 details << "V" << ViewerVersion::getLLMajorVersion() << "." // client version moved to body of email for abuse reports 764 details << ViewerInfo::terseInfo() << std::endl << std::endl;
767 << ViewerVersion::getLLMinorVersion() << "."
768 << ViewerVersion::getLLPatchVersion() << "."
769 << ViewerVersion::getLLBuildVersion() << std::endl << std::endl;
770 } 765 }
771 std::string object_name = childGetText("object_name"); 766 std::string object_name = childGetText("object_name");
772 std::string owner_name = childGetText("owner_name"); 767 std::string owner_name = childGetText("owner_name");
@@ -786,10 +781,8 @@ LLSD LLFloaterReporter::gatherReport()
786 781
787 std::string version_string; 782 std::string version_string;
788 version_string = llformat( 783 version_string = llformat(
789 "%d.%d.%d %s %s %s %s", 784 "%s %s %s %s %s",
790 ViewerVersion::getLLMajorVersion(), 785 ViewerInfo::terseInfo().c_str(),
791 ViewerVersion::getLLMinorVersion(),
792 ViewerVersion::getLLPatchVersion(),
793 platform, 786 platform,
794 gSysCPU.getFamily().c_str(), 787 gSysCPU.getFamily().c_str(),
795 gGLManager.mGLRenderer.c_str(), 788 gGLManager.mGLRenderer.c_str(),
diff --git a/linden/indra/newview/llhudeffectlookat.cpp b/linden/indra/newview/llhudeffectlookat.cpp
index ccd723f..333bd13 100644
--- a/linden/indra/newview/llhudeffectlookat.cpp
+++ b/linden/indra/newview/llhudeffectlookat.cpp
@@ -702,6 +702,11 @@ bool LLHUDEffectLookAt::calcTargetPosition()
702 702
703 LLVOAvatar* source_avatar = (LLVOAvatar*)(LLViewerObject*)mSourceObject; 703 LLVOAvatar* source_avatar = (LLVOAvatar*)(LLViewerObject*)mSourceObject;
704 704
705 if (!source_avatar->isBuilt())
706 {
707 return false;
708 }
709
705 if (target_obj && target_obj->mDrawable.notNull()) 710 if (target_obj && target_obj->mDrawable.notNull())
706 { 711 {
707 LLQuaternion target_rot; 712 LLQuaternion target_rot;
diff --git a/linden/indra/newview/llimpanel.cpp b/linden/indra/newview/llimpanel.cpp
index 7ccf49c..752ebb4 100644
--- a/linden/indra/newview/llimpanel.cpp
+++ b/linden/indra/newview/llimpanel.cpp
@@ -1660,7 +1660,7 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4
1660 // Actually add the line 1660 // Actually add the line
1661 std::string timestring; 1661 std::string timestring;
1662 bool prepend_newline = true; 1662 bool prepend_newline = true;
1663 if (gSavedSettings.getBOOL("IMShowTimestamps")) 1663 if (gSavedSettings.getBOOL("ShowTimestamps"))
1664 { 1664 {
1665 timestring = mHistoryEditor->appendTime(prepend_newline); 1665 timestring = mHistoryEditor->appendTime(prepend_newline);
1666 prepend_newline = false; 1666 prepend_newline = false;
diff --git a/linden/indra/newview/llpanelavatar.cpp b/linden/indra/newview/llpanelavatar.cpp
index 6a3a0bd..e3fe141 100644
--- a/linden/indra/newview/llpanelavatar.cpp
+++ b/linden/indra/newview/llpanelavatar.cpp
@@ -1990,6 +1990,7 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
1990 LLTextEditor* about_field = self->mPanelSecondLife->getChild<LLTextEditor>("about"); 1990 LLTextEditor* about_field = self->mPanelSecondLife->getChild<LLTextEditor>("about");
1991 if (about_field) 1991 if (about_field)
1992 { 1992 {
1993 about_field->clear();
1993 if (self->mAllowEdit && (self->mAvatarID == agent_id)) 1994 if (self->mAllowEdit && (self->mAvatarID == agent_id))
1994 { 1995 {
1995 about_field->setText(about_text); 1996 about_field->setText(about_text);
@@ -2009,8 +2010,10 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
2009 about_field = self->mPanelFirstLife->getChild<LLTextEditor>("about"); 2010 about_field = self->mPanelFirstLife->getChild<LLTextEditor>("about");
2010 if (about_field) 2011 if (about_field)
2011 { 2012 {
2013 about_field->clear();
2012 if (self->mAllowEdit && (self->mAvatarID == agent_id)) 2014 if (self->mAllowEdit && (self->mAvatarID == agent_id))
2013 { 2015 {
2016 about_field->setText(fl_about_text);
2014 } 2017 }
2015 else 2018 else
2016 { 2019 {
diff --git a/linden/indra/newview/llpaneldisplay.cpp b/linden/indra/newview/llpaneldisplay.cpp
index e8c67e8..00dc2cd 100644
--- a/linden/indra/newview/llpaneldisplay.cpp
+++ b/linden/indra/newview/llpaneldisplay.cpp
@@ -120,7 +120,6 @@ BOOL LLPanelDisplay::postBuild()
120 mCtrlWindowed->setCallbackUserData(this); 120 mCtrlWindowed->setCallbackUserData(this);
121 121
122 mAspectRatioLabel1 = getChild<LLTextBox>("AspectRatioLabel1"); 122 mAspectRatioLabel1 = getChild<LLTextBox>("AspectRatioLabel1");
123 mFullScreenInfo = getChild<LLTextEditor>("FullScreenInfo");
124 mDisplayResLabel = getChild<LLTextBox>("DisplayResLabel"); 123 mDisplayResLabel = getChild<LLTextBox>("DisplayResLabel");
125 124
126 S32 num_resolutions = 0; 125 S32 num_resolutions = 0;
@@ -229,7 +228,7 @@ BOOL LLPanelDisplay::postBuild()
229 mCtrlReflections = getChild<LLCheckBoxCtrl>("Reflections"); 228 mCtrlReflections = getChild<LLCheckBoxCtrl>("Reflections");
230 mCtrlReflections->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable); 229 mCtrlReflections->setCommitCallback(&LLPanelDisplay::onVertexShaderEnable);
231 mCtrlReflections->setCallbackUserData(this); 230 mCtrlReflections->setCallbackUserData(this);
232 mRadioReflectionDetail = getChild<LLRadioGroup>("ReflectionDetailRadio"); 231 mComboReflectionDetail = getChild<LLComboBox>("ReflectionDetailCombo");
233 232
234 // WindLight 233 // WindLight
235 mCtrlWindLight = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders"); 234 mCtrlWindLight = getChild<LLCheckBoxCtrl>("WindLightUseAtmosShaders");
@@ -251,11 +250,11 @@ BOOL LLPanelDisplay::postBuild()
251 250
252 //---------------------------------------------------------------------------- 251 //----------------------------------------------------------------------------
253 // radio set for lighting detail 252 // radio set for lighting detail
254 mRadioLightingDetail2 = getChild<LLRadioGroup>("LightingDetailRadio"); 253 mComboLightingDetail = getChild<LLComboBox>("LightingDetailCombo");
255 254
256 //---------------------------------------------------------------------------- 255 //----------------------------------------------------------------------------
257 // radio set for terrain detail mode 256 // radio set for terrain detail mode
258 mRadioTerrainDetail = getChild<LLRadioGroup>("TerrainDetailRadio"); 257 mComboTerrainDetail = getChild<LLComboBox>("TerrainDetailCombo");
259 258
260 //---------------------------------------------------------------------------- 259 //----------------------------------------------------------------------------
261 // Global Shader Enable 260 // Global Shader Enable
@@ -316,7 +315,6 @@ BOOL LLPanelDisplay::postBuild()
316 315
317 // Avatar imposter count 316 // Avatar imposter count
318 mCtrlAvatarMaxVisible = getChild<LLSliderCtrl>("AvatarMaxVisible"); 317 mCtrlAvatarMaxVisible = getChild<LLSliderCtrl>("AvatarMaxVisible");
319 mAvatarCountText = getChild<LLTextBox>("AvatarCountText");
320 318
321 // Text boxes (for enabling/disabling) 319 // Text boxes (for enabling/disabling)
322 mShaderText = getChild<LLTextBox>("ShadersText"); 320 mShaderText = getChild<LLTextBox>("ShadersText");
@@ -325,10 +323,7 @@ BOOL LLPanelDisplay::postBuild()
325 mTerrainText = getChild<LLTextBox>("TerrainDetailText"); 323 mTerrainText = getChild<LLTextBox>("TerrainDetailText");
326 mLightingText = getChild<LLTextBox>("LightingDetailText"); 324 mLightingText = getChild<LLTextBox>("LightingDetailText");
327 mMeshDetailText = getChild<LLTextBox>("MeshDetailText"); 325 mMeshDetailText = getChild<LLTextBox>("MeshDetailText");
328 326 mLimitsText = getChild<LLTextBox>("LimitsText");
329 static BOOL* sEnableWindlightRemote = rebind_llcontrol<BOOL>("EnableWindlightRemote", &gSavedSettings, true);
330 childSetValue("toggle_windlight_control", (*sEnableWindlightRemote));
331 mWLControl = (*sEnableWindlightRemote);
332 327
333 refresh(); 328 refresh();
334 329
@@ -420,10 +415,6 @@ void LLPanelDisplay::refresh()
420 mLightingDetail = gSavedSettings.getS32("RenderLightingDetail"); 415 mLightingDetail = gSavedSettings.getS32("RenderLightingDetail");
421 mTerrainDetail = gSavedSettings.getS32("RenderTerrainDetail"); 416 mTerrainDetail = gSavedSettings.getS32("RenderTerrainDetail");
422 417
423 // windlight remote
424 static BOOL* sEnableWindlightRemote = rebind_llcontrol<BOOL>("EnableWindlightRemote", &gSavedSettings, true);
425 mWLControl = (*sEnableWindlightRemote);
426
427 // max avatar count 418 // max avatar count
428 mAvatarMaxVisible = gSavedSettings.getS32("RenderAvatarMaxVisible"); 419 mAvatarMaxVisible = gSavedSettings.getS32("RenderAvatarMaxVisible");
429 420
@@ -449,7 +440,6 @@ void LLPanelDisplay::refreshEnabledState()
449 mCtrlAspectRatio->setVisible(isFullScreen); 440 mCtrlAspectRatio->setVisible(isFullScreen);
450 mAspectRatioLabel1->setVisible(isFullScreen); 441 mAspectRatioLabel1->setVisible(isFullScreen);
451 mCtrlAutoDetectAspect->setVisible(isFullScreen); 442 mCtrlAutoDetectAspect->setVisible(isFullScreen);
452 mFullScreenInfo->setVisible(!isFullScreen);
453 mWindowSizeLabel->setVisible(!isFullScreen); 443 mWindowSizeLabel->setVisible(!isFullScreen);
454 444
455 // disable graphics settings and exit if it's not set to custom 445 // disable graphics settings and exit if it's not set to custom
@@ -475,10 +465,7 @@ void LLPanelDisplay::refreshEnabledState()
475 bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump"); 465 bool bumpshiny = gGLManager.mHasCubeMap && LLCubeMap::sUseCubeMaps && LLFeatureManager::getInstance()->isFeatureAvailable("RenderObjectBump");
476 mCtrlBumpShiny->setEnabled(bumpshiny ? TRUE : FALSE); 466 mCtrlBumpShiny->setEnabled(bumpshiny ? TRUE : FALSE);
477 467
478 for (S32 i = 0; i < mRadioReflectionDetail->getItemCount(); ++i) 468 mComboReflectionDetail->setEnabled(mCtrlReflections->get() && reflections);
479 {
480 mRadioReflectionDetail->setIndexEnabled(i, mCtrlReflections->get() && reflections);
481 }
482 469
483 // Avatar Mode 470 // Avatar Mode
484 S32 max_avatar_shader = LLViewerShaderMgr::instance()->mMaxAvatarShaderLevel; 471 S32 max_avatar_shader = LLViewerShaderMgr::instance()->mMaxAvatarShaderLevel;
@@ -505,12 +492,12 @@ void LLPanelDisplay::refreshEnabledState()
505 BOOL shaders = mCtrlShaderEnable->get(); 492 BOOL shaders = mCtrlShaderEnable->get();
506 if (shaders) 493 if (shaders)
507 { 494 {
508 mRadioTerrainDetail->setValue(1); 495 mComboTerrainDetail->setValue(1);
509 mRadioTerrainDetail->setEnabled(FALSE); 496 mComboTerrainDetail->setEnabled(FALSE);
510 } 497 }
511 else 498 else
512 { 499 {
513 mRadioTerrainDetail->setEnabled(TRUE); 500 mComboTerrainDetail->setEnabled(TRUE);
514 } 501 }
515 502
516 // *HACK just checks to see if we can use shaders... 503 // *HACK just checks to see if we can use shaders...
@@ -588,7 +575,6 @@ void LLPanelDisplay::disableUnavailableSettings()
588 } 575 }
589 576
590 mCtrlAvatarMaxVisible->setEnabled(mCtrlAvatarImpostors->getValue().asBoolean()); 577 mCtrlAvatarMaxVisible->setEnabled(mCtrlAvatarImpostors->getValue().asBoolean());
591 mAvatarCountText->setEnabled(mCtrlAvatarImpostors->getValue().asBoolean());
592} 578}
593 579
594void LLPanelDisplay::setHiddenGraphicsState(bool isHidden) 580void LLPanelDisplay::setHiddenGraphicsState(bool isHidden)
@@ -622,10 +608,10 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden)
622 llassert(mCtrlShaderEnable != NULL); 608 llassert(mCtrlShaderEnable != NULL);
623 llassert(mCtrlAvatarImpostors != NULL); 609 llassert(mCtrlAvatarImpostors != NULL);
624 llassert(mCtrlAvatarCloth != NULL); 610 llassert(mCtrlAvatarCloth != NULL);
625 llassert(mRadioLightingDetail2 != NULL); 611 llassert(mComboLightingDetail != NULL);
626 612
627 llassert(mRadioTerrainDetail != NULL); 613 llassert(mComboTerrainDetail != NULL);
628 llassert(mRadioReflectionDetail != NULL); 614 llassert(mComboReflectionDetail != NULL);
629 615
630 llassert(mMeshDetailText != NULL); 616 llassert(mMeshDetailText != NULL);
631 llassert(mShaderText != NULL); 617 llassert(mShaderText != NULL);
@@ -633,7 +619,7 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden)
633 llassert(mAvatarText != NULL); 619 llassert(mAvatarText != NULL);
634 llassert(mLightingText != NULL); 620 llassert(mLightingText != NULL);
635 llassert(mTerrainText != NULL); 621 llassert(mTerrainText != NULL);
636 llassert(mAvatarCountText != NULL); 622 llassert(mLimitsText != NULL);
637 623
638 // enable/disable the states 624 // enable/disable the states
639 mGraphicsBorder->setVisible(!isHidden); 625 mGraphicsBorder->setVisible(!isHidden);
@@ -668,10 +654,10 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden)
668 mCtrlShaderEnable->setVisible(!isHidden); 654 mCtrlShaderEnable->setVisible(!isHidden);
669 mCtrlAvatarImpostors->setVisible(!isHidden); 655 mCtrlAvatarImpostors->setVisible(!isHidden);
670 mCtrlAvatarCloth->setVisible(!isHidden); 656 mCtrlAvatarCloth->setVisible(!isHidden);
671 mRadioLightingDetail2->setVisible(!isHidden); 657 mComboLightingDetail->setVisible(!isHidden);
672 658
673 mRadioTerrainDetail->setVisible(!isHidden); 659 mComboTerrainDetail->setVisible(!isHidden);
674 mRadioReflectionDetail->setVisible(!isHidden); 660 mComboReflectionDetail->setVisible(!isHidden);
675 661
676 // text boxes 662 // text boxes
677 mShaderText->setVisible(!isHidden); 663 mShaderText->setVisible(!isHidden);
@@ -679,8 +665,7 @@ void LLPanelDisplay::setHiddenGraphicsState(bool isHidden)
679 mAvatarText->setVisible(!isHidden); 665 mAvatarText->setVisible(!isHidden);
680 mLightingText->setVisible(!isHidden); 666 mLightingText->setVisible(!isHidden);
681 mTerrainText->setVisible(!isHidden); 667 mTerrainText->setVisible(!isHidden);
682 mAvatarCountText->setVisible(!isHidden); 668 mLimitsText->setVisible(!isHidden);
683
684 mMeshDetailText->setVisible(!isHidden); 669 mMeshDetailText->setVisible(!isHidden);
685 670
686 mCtrlAvatarMaxVisible->setVisible(!isHidden); 671 mCtrlAvatarMaxVisible->setVisible(!isHidden);
@@ -719,8 +704,6 @@ void LLPanelDisplay::cancel()
719 gSavedSettings.setS32("RenderMaxPartCount", mParticleCount); 704 gSavedSettings.setS32("RenderMaxPartCount", mParticleCount);
720 gSavedSettings.setS32("RenderGlowResolutionPow", mPostProcess); 705 gSavedSettings.setS32("RenderGlowResolutionPow", mPostProcess);
721 706
722 gSavedSettings.setBOOL("EnableWindlightRemote", mWLControl);
723
724 gSavedSettings.setS32("RenderAvatarMaxVisible", mAvatarMaxVisible); 707 gSavedSettings.setS32("RenderAvatarMaxVisible", mAvatarMaxVisible);
725} 708}
726 709
@@ -992,5 +975,4 @@ void LLPanelDisplay::onImpostorsEnable(LLUICtrl* ctrl, void* user_data)
992 LLCheckBoxCtrl* checkbox = (LLCheckBoxCtrl*)ctrl; 975 LLCheckBoxCtrl* checkbox = (LLCheckBoxCtrl*)ctrl;
993 976
994 self->mCtrlAvatarMaxVisible->setEnabled(checkbox->getValue().asBoolean()); 977 self->mCtrlAvatarMaxVisible->setEnabled(checkbox->getValue().asBoolean());
995 self->mAvatarCountText->setEnabled(checkbox->getValue().asBoolean());
996} 978}
diff --git a/linden/indra/newview/llpaneldisplay.h b/linden/indra/newview/llpaneldisplay.h
index d7727e7..e64e9ba 100644
--- a/linden/indra/newview/llpaneldisplay.h
+++ b/linden/indra/newview/llpaneldisplay.h
@@ -113,14 +113,13 @@ protected:
113 LLCheckBoxCtrl *mCtrlShaderEnable; 113 LLCheckBoxCtrl *mCtrlShaderEnable;
114 LLCheckBoxCtrl *mCtrlAvatarImpostors; 114 LLCheckBoxCtrl *mCtrlAvatarImpostors;
115 LLCheckBoxCtrl *mCtrlAvatarCloth; 115 LLCheckBoxCtrl *mCtrlAvatarCloth;
116 LLRadioGroup *mRadioLightingDetail2; 116 LLComboBox *mComboLightingDetail;
117 117
118 LLRadioGroup *mRadioTerrainDetail; 118 LLComboBox *mComboTerrainDetail;
119 LLRadioGroup *mRadioReflectionDetail; 119 LLComboBox *mComboReflectionDetail;
120 120
121 LLTextBox *mAspectRatioLabel1; 121 LLTextBox *mAspectRatioLabel1;
122 LLTextBox *mDisplayResLabel; 122 LLTextBox *mDisplayResLabel;
123 LLTextEditor *mFullScreenInfo;
124 LLTextBox *mWindowSizeLabel; 123 LLTextBox *mWindowSizeLabel;
125 124
126 LLTextBox *mShaderText; 125 LLTextBox *mShaderText;
@@ -137,7 +136,7 @@ protected:
137 LLTextBox *mTerrainFactorText; 136 LLTextBox *mTerrainFactorText;
138 LLTextBox *mSkyFactorText; 137 LLTextBox *mSkyFactorText;
139 LLTextBox *mPostProcessText; 138 LLTextBox *mPostProcessText;
140 LLTextBox *mAvatarCountText; 139 LLTextBox *mLimitsText;
141 140
142 BOOL mFSAutoDetectAspect; 141 BOOL mFSAutoDetectAspect;
143 F32 mAspectRatio; 142 F32 mAspectRatio;
@@ -173,8 +172,6 @@ protected:
173 172
174 S32 mAvatarMaxVisible; 173 S32 mAvatarMaxVisible;
175 174
176 BOOL mWLControl;
177
178 static void setGraphicsSettings(LLControlGroup& group); 175 static void setGraphicsSettings(LLControlGroup& group);
179 static void createGroup(); 176 static void createGroup();
180 177
diff --git a/linden/indra/newview/llpanelgeneral.cpp b/linden/indra/newview/llpanelgeneral.cpp
index 70146ce..ac957ed 100644
--- a/linden/indra/newview/llpanelgeneral.cpp
+++ b/linden/indra/newview/llpanelgeneral.cpp
@@ -36,7 +36,7 @@
36#include "llpanelgeneral.h" 36#include "llpanelgeneral.h"
37 37
38// project includes 38// project includes
39#include "llcolorswatch.h" 39#include "llcheckboxctrl.h"
40#include "llcombobox.h" 40#include "llcombobox.h"
41#include "lluictrlfactory.h" 41#include "lluictrlfactory.h"
42#include "llurlsimstring.h" 42#include "llurlsimstring.h"
@@ -90,28 +90,25 @@ BOOL LLPanelGeneral::postBuild()
90 childSetValue("show_location_checkbox", gSavedSettings.getBOOL("ShowStartLocation")); 90 childSetValue("show_location_checkbox", gSavedSettings.getBOOL("ShowStartLocation"));
91 childSetValue("show_all_title_checkbox", gSavedSettings.getBOOL("RenderHideGroupTitleAll")); 91 childSetValue("show_all_title_checkbox", gSavedSettings.getBOOL("RenderHideGroupTitleAll"));
92 childSetValue("show_my_name_checkbox", gSavedSettings.getBOOL("RenderNameHideSelf")); 92 childSetValue("show_my_name_checkbox", gSavedSettings.getBOOL("RenderNameHideSelf"));
93 childSetValue("small_avatar_names_checkbox", gSavedSettings.getBOOL("SmallAvatarNames")); 93 childSetValue("large_avatar_names_checkbox", !gSavedSettings.getBOOL("SmallAvatarNames"));
94 childSetValue("highlight_friends_checkbox", gSavedSettings.getBOOL("HighlightFriends")); 94 childSetValue("highlight_friends_checkbox", gSavedSettings.getBOOL("HighlightFriends"));
95 childSetValue("show_my_title_checkbox", gSavedSettings.getBOOL("RenderHideGroupTitle")); 95 //childSetValue("show_my_title_checkbox", gSavedSettings.getBOOL("RenderHideGroupTitle")); -- MC
96 childSetValue("afk_timeout_spinner", gSavedSettings.getF32("AFKTimeout")); 96
97 childSetEnabled("afk_timeout_spinner", gSavedSettings.getBOOL("AllowIdleAFK"));
98 childSetValue("afk_timeout_spinner", llround(gSavedSettings.getF32("AFKTimeout") / 60)); // User enters minutes, we store as seconds -- MC
97 childSetValue("afk_timeout_checkbox", gSavedSettings.getBOOL("AllowIdleAFK")); 99 childSetValue("afk_timeout_checkbox", gSavedSettings.getBOOL("AllowIdleAFK"));
100 childSetCommitCallback("afk_timeout_checkbox", onCommitAFKCheckbox, this);
101
98 childSetValue("mini_map_notify_chat", gSavedSettings.getBOOL("MiniMapNotifyChatRange")); 102 childSetValue("mini_map_notify_chat", gSavedSettings.getBOOL("MiniMapNotifyChatRange"));
99 childSetValue("mini_map_notify_sim", gSavedSettings.getBOOL("MiniMapNotifySimRange")); 103 childSetValue("mini_map_notify_sim", gSavedSettings.getBOOL("MiniMapNotifySimRange"));
100 104
101// mDisplayNamesUsage = gSavedSettings.getU32("DisplayNamesUsage"); 105// mDisplayNamesUsage = gSavedSettings.getU32("DisplayNamesUsage");
102// mLegacyNamesForFriends = gSavedSettings.getBOOL("LegacyNamesForFriends"); 106// mLegacyNamesForFriends = gSavedSettings.getBOOL("LegacyNamesForFriends");
103 107
104 getChild<LLColorSwatchCtrl>("effect_color_swatch")->set(gSavedSettings.getColor4("EffectColor"));
105
106 childSetValue("ui_scale_slider", gSavedSettings.getF32("UIScaleFactor"));
107 childSetValue("ui_auto_scale", gSavedSettings.getBOOL("UIAutoScale"));
108
109 LLComboBox* time_combobox = getChild<LLComboBox>("time_combobox"); 108 LLComboBox* time_combobox = getChild<LLComboBox>("time_combobox");
110 time_combobox->setCurrentByIndex(gSavedSettings.getU32("TimeFormat")); 109 time_combobox->setCurrentByIndex(gSavedSettings.getU32("TimeFormat"));
111 110
112 childSetValue("language_combobox", gSavedSettings.getString("Language")); 111 childSetValue("language_combobox", gSavedSettings.getString("Language"));
113
114 childSetAction("reset_ui_size", onClickResetUISize, this);
115 112
116 // if we have no agent, we can't let them choose anything 113 // if we have no agent, we can't let them choose anything
117 // if we have an agent, then we only let them choose if they have a choice 114 // if we have an agent, then we only let them choose if they have a choice
@@ -166,16 +163,13 @@ void LLPanelGeneral::apply()
166 gSavedSettings.setBOOL("ShowStartLocation", childGetValue("show_location_checkbox")); 163 gSavedSettings.setBOOL("ShowStartLocation", childGetValue("show_location_checkbox"));
167 gSavedSettings.setBOOL("RenderHideGroupTitleAll", childGetValue("show_all_title_checkbox")); 164 gSavedSettings.setBOOL("RenderHideGroupTitleAll", childGetValue("show_all_title_checkbox"));
168 gSavedSettings.setBOOL("RenderNameHideSelf", childGetValue("show_my_name_checkbox")); 165 gSavedSettings.setBOOL("RenderNameHideSelf", childGetValue("show_my_name_checkbox"));
169 gSavedSettings.setBOOL("SmallAvatarNames", childGetValue("small_avatar_names_checkbox")); 166 gSavedSettings.setBOOL("SmallAvatarNames", !childGetValue("large_avatar_names_checkbox"));
170 gSavedSettings.setBOOL("HighlightFriends", childGetValue("highlight_friends_checkbox")); 167 gSavedSettings.setBOOL("HighlightFriends", childGetValue("highlight_friends_checkbox"));
171 gSavedSettings.setBOOL("RenderHideGroupTitle", childGetValue("show_my_title_checkbox")); 168 //gSavedSettings.setBOOL("RenderHideGroupTitle", childGetValue("show_my_title_checkbox")); -- MC
172 gSavedSettings.setF32("AFKTimeout", childGetValue("afk_timeout_spinner").asReal()); 169 gSavedSettings.setF32("AFKTimeout", 60 * childGetValue("afk_timeout_spinner").asReal()); // User enters minutes, we store as seconds -- MC
173 gSavedSettings.setBOOL("AllowIdleAFK", childGetValue("afk_timeout_checkbox")); 170 gSavedSettings.setBOOL("AllowIdleAFK", childGetValue("afk_timeout_checkbox"));
174 gSavedSettings.setBOOL("MiniMapNotifyChatRange", childGetValue("mini_map_notify_chat")); 171 gSavedSettings.setBOOL("MiniMapNotifyChatRange", childGetValue("mini_map_notify_chat"));
175 gSavedSettings.setBOOL("MiniMapNotifySimRange", childGetValue("mini_map_notify_sim")); 172 gSavedSettings.setBOOL("MiniMapNotifySimRange", childGetValue("mini_map_notify_sim"));
176 gSavedSettings.setColor4("EffectColor", childGetValue("effect_color_swatch"));
177 gSavedSettings.setF32("UIScaleFactor", childGetValue("ui_scale_slider").asReal());
178 gSavedSettings.setBOOL("UIAutoScale", childGetValue("ui_auto_scale"));
179 gSavedSettings.setString("Language", childGetValue("language_combobox")); 173 gSavedSettings.setString("Language", childGetValue("language_combobox"));
180 174
181 /* 175 /*
@@ -218,14 +212,6 @@ void LLPanelGeneral::cancel()
218} 212}
219 213
220// static 214// static
221void LLPanelGeneral::onClickResetUISize(void* user_data)
222{
223 LLPanelGeneral* self = (LLPanelGeneral*)user_data;
224 F32 def = gSavedSettings.getControl("UIScaleFactor")->getDefault().asReal();
225 self->childSetValue("ui_scale_slider", def);
226}
227
228// static
229void LLPanelGeneral::onClickGrid(void *) 215void LLPanelGeneral::onClickGrid(void *)
230{ 216{
231 FloaterGridManager::getInstance()->open(); 217 FloaterGridManager::getInstance()->open();
@@ -241,3 +227,14 @@ void LLPanelGeneral::onLocationChanged(LLUICtrl* ctrl, void* data)
241 self->getChild<LLComboBox>("default_location_combo")->setTextEntry(LLURLSimString::sInstance.mSimString); 227 self->getChild<LLComboBox>("default_location_combo")->setTextEntry(LLURLSimString::sInstance.mSimString);
242 } 228 }
243} 229}
230
231// static
232void LLPanelGeneral::onCommitAFKCheckbox(LLUICtrl* ctrl, void* data)
233{
234 LLPanelGeneral* self = (LLPanelGeneral*)data;
235 LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl;
236
237 if (!self || !check) return;
238 self->childSetEnabled("afk_timeout_spinner", check->get());
239 self->childSetEnabled("minutes_textbox", check->get());
240}
diff --git a/linden/indra/newview/llpanelgeneral.h b/linden/indra/newview/llpanelgeneral.h
index 56cc3de..4080079 100644
--- a/linden/indra/newview/llpanelgeneral.h
+++ b/linden/indra/newview/llpanelgeneral.h
@@ -48,9 +48,9 @@ public:
48 void cancel(); 48 void cancel();
49 49
50private: 50private:
51 static void onClickResetUISize(void*);
52 static void onClickGrid(void*); 51 static void onClickGrid(void*);
53 static void onLocationChanged(LLUICtrl* ctrl, void* data); 52 static void onLocationChanged(LLUICtrl* ctrl, void* data);
53 static void onCommitAFKCheckbox(LLUICtrl* ctrl, void* data);
54 54
55 U32 mDisplayNamesUsage; 55 U32 mDisplayNamesUsage;
56 bool mLegacyNamesForFriends; 56 bool mLegacyNamesForFriends;
diff --git a/linden/indra/newview/llpanelgroupgeneral.cpp b/linden/indra/newview/llpanelgroupgeneral.cpp
index 8e61c60..8c522cc 100644
--- a/linden/indra/newview/llpanelgroupgeneral.cpp
+++ b/linden/indra/newview/llpanelgroupgeneral.cpp
@@ -814,6 +814,7 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
814 814
815 if (mEditCharter) 815 if (mEditCharter)
816 { 816 {
817 mEditCharter->clear();
817 if (mAllowEdit && can_change_ident) 818 if (mAllowEdit && can_change_ident)
818 { 819 {
819 mEditCharter->setText(gdatap->mCharter); 820 mEditCharter->setText(gdatap->mCharter);
diff --git a/linden/indra/newview/llpanelgroupnotices.cpp b/linden/indra/newview/llpanelgroupnotices.cpp
index 3d5cd3e..8135306 100644
--- a/linden/indra/newview/llpanelgroupnotices.cpp
+++ b/linden/indra/newview/llpanelgroupnotices.cpp
@@ -52,6 +52,7 @@
52#include "lltextbox.h" 52#include "lltextbox.h"
53 53
54#include "roles_constants.h" 54#include "roles_constants.h"
55#include "llviewercontrol.h"
55#include "llviewerwindow.h" 56#include "llviewerwindow.h"
56#include "llviewermessage.h" 57#include "llviewermessage.h"
57#include "llnotifications.h" 58#include "llnotifications.h"
@@ -533,7 +534,12 @@ void LLPanelGroupNotices::showNotice(const std::string& subject,
533 arrangeNoticeView(VIEW_PAST_NOTICE); 534 arrangeNoticeView(VIEW_PAST_NOTICE);
534 535
535 if(mViewSubject) mViewSubject->setText(subject); 536 if(mViewSubject) mViewSubject->setText(subject);
536 if(mViewMessage) mViewMessage->setText(message); 537 if(mViewMessage)
538 {
539 mViewMessage->clear();
540 mViewMessage->setParseHTML(TRUE);
541 mViewMessage->appendColoredText(message, false, false, gColors.getColor("TextFgReadOnlyColor"));
542 }
537 543
538 if (mInventoryOffer) 544 if (mInventoryOffer)
539 { 545 {
diff --git a/linden/indra/newview/llpanelinput.cpp b/linden/indra/newview/llpanelinput.cpp
index 32c4af3..9664b6f 100644
--- a/linden/indra/newview/llpanelinput.cpp
+++ b/linden/indra/newview/llpanelinput.cpp
@@ -31,7 +31,10 @@
31 */ 31 */
32 32
33#include "llviewerprecompiledheaders.h" 33#include "llviewerprecompiledheaders.h"
34
34#include "llpanelinput.h" 35#include "llpanelinput.h"
36
37#include "llcombobox.h"
35#include "lluictrlfactory.h" 38#include "lluictrlfactory.h"
36#include "llviewercamera.h" 39#include "llviewercamera.h"
37#include "llviewercontrol.h" 40#include "llviewercontrol.h"
@@ -60,7 +63,6 @@ BOOL LLPanelInput::postBuild()
60 mPreAdjustCameraOffsetScale = gSavedSettings.getF32("CameraOffsetScale"); 63 mPreAdjustCameraOffsetScale = gSavedSettings.getF32("CameraOffsetScale");
61 64
62 childSetValue("mouse_sensitivity", gSavedSettings.getF32("MouseSensitivity")); 65 childSetValue("mouse_sensitivity", gSavedSettings.getF32("MouseSensitivity"));
63 childSetValue("automatic_fly", gSavedSettings.getBOOL("AutomaticFly"));
64 childSetValue("invert_mouse", gSavedSettings.getBOOL("InvertMouse")); 66 childSetValue("invert_mouse", gSavedSettings.getBOOL("InvertMouse"));
65 childSetValue("edit_camera_movement", gSavedSettings.getBOOL("EditCameraMovement")); 67 childSetValue("edit_camera_movement", gSavedSettings.getBOOL("EditCameraMovement"));
66 childSetValue("appearance_camera_movement", gSavedSettings.getBOOL("AppearanceCameraMovement")); 68 childSetValue("appearance_camera_movement", gSavedSettings.getBOOL("AppearanceCameraMovement"));
@@ -75,6 +77,7 @@ BOOL LLPanelInput::postBuild()
75 fov_slider->setValue(LLViewerCamera::getInstance()->getView()); 77 fov_slider->setValue(LLViewerCamera::getInstance()->getView());
76 78
77 childSetValue("double_click_action", gSavedSettings.getString("DoubleClickAction")); 79 childSetValue("double_click_action", gSavedSettings.getString("DoubleClickAction"));
80 childSetCommitCallback("double_click_action", onCommitAction, this);
78 childSetValue("go_action", gSavedSettings.getString("GoAction")); 81 childSetValue("go_action", gSavedSettings.getString("GoAction"));
79 82
80 childSetValue("Disable camera constraints", gSavedSettings.getBOOL("DisableCameraConstraints")); 83 childSetValue("Disable camera constraints", gSavedSettings.getBOOL("DisableCameraConstraints"));
@@ -95,7 +98,6 @@ void LLPanelInput::apply()
95 mPreAdjustCameraOffsetScale = childGetValue("camera_offset_scale").asReal(); 98 mPreAdjustCameraOffsetScale = childGetValue("camera_offset_scale").asReal();
96 99
97 gSavedSettings.setF32("MouseSensitivity", childGetValue("mouse_sensitivity").asReal()); 100 gSavedSettings.setF32("MouseSensitivity", childGetValue("mouse_sensitivity").asReal());
98 gSavedSettings.setBOOL("AutomaticFly", childGetValue("automatic_fly"));
99 gSavedSettings.setBOOL("InvertMouse", childGetValue("invert_mouse")); 101 gSavedSettings.setBOOL("InvertMouse", childGetValue("invert_mouse"));
100 gSavedSettings.setBOOL("EditCameraMovement", childGetValue("edit_camera_movement")); 102 gSavedSettings.setBOOL("EditCameraMovement", childGetValue("edit_camera_movement"));
101 gSavedSettings.setBOOL("AppearanceCameraMovement", childGetValue("appearance_camera_movement")); 103 gSavedSettings.setBOOL("AppearanceCameraMovement", childGetValue("appearance_camera_movement"));
@@ -130,3 +132,14 @@ void LLPanelInput::onClickJoystickSetup(void* user_data)
130 } 132 }
131} 133}
132 134
135// static
136void LLPanelInput::onCommitAction(LLUICtrl* ctrl, void* user_data)
137{
138 LLPanelInput* self = (LLPanelInput*)user_data;
139 LLComboBox* combo = (LLComboBox*)ctrl;
140 if (self && combo)
141 {
142 self->childSetEnabled("go_action_label", combo->getSimple() == "Go");
143 self->childSetEnabled("go_action", combo->getSimple() == "Go");
144 }
145}
diff --git a/linden/indra/newview/llpanelinput.h b/linden/indra/newview/llpanelinput.h
index 9a2bebe..29bc04e 100644
--- a/linden/indra/newview/llpanelinput.h
+++ b/linden/indra/newview/llpanelinput.h
@@ -47,6 +47,8 @@ public:
47 47
48private: 48private:
49 static void onClickJoystickSetup(void* user_data); 49 static void onClickJoystickSetup(void* user_data);
50 static void onCommitAction(LLUICtrl* ctrl, void* user_data);
51
50 F32 mPreAdjustFOV; 52 F32 mPreAdjustFOV;
51 F32 mPreAdjustCameraOffsetScale; 53 F32 mPreAdjustCameraOffsetScale;
52}; 54};
diff --git a/linden/indra/newview/llpanellogin.cpp b/linden/indra/newview/llpanellogin.cpp
index 39df8b6..c709015 100644
--- a/linden/indra/newview/llpanellogin.cpp
+++ b/linden/indra/newview/llpanellogin.cpp
@@ -73,7 +73,7 @@
73#include "lluictrlfactory.h" 73#include "lluictrlfactory.h"
74#include "llhttpclient.h" 74#include "llhttpclient.h"
75#include "llweb.h" 75#include "llweb.h"
76#include "viewerversion.h" 76#include "viewerinfo.h"
77#include "llmediactrl.h" 77#include "llmediactrl.h"
78 78
79#include "llfloatermediabrowser.h" 79#include "llfloatermediabrowser.h"
@@ -264,25 +264,10 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
264 264
265 // childSetAction("quit_btn", onClickQuit, this); 265 // childSetAction("quit_btn", onClickQuit, this);
266 266
267 std::string imp_channel = gSavedSettings.getString("VersionChannelName"); 267 std::string imp_version = ViewerInfo::prettyInfo();
268 std::string imp_version = llformat("%d.%d.%d %s",
269 ViewerVersion::getImpMajorVersion(),
270 ViewerVersion::getImpMinorVersion(),
271 ViewerVersion::getImpPatchVersion(),
272 ViewerVersion::getImpTestVersion().c_str() );
273
274 std::string ll_channel = ViewerVersion::getLLViewerName();
275 std::string ll_version = llformat("%d.%d.%d (%d)",
276 ViewerVersion::getLLMajorVersion(),
277 ViewerVersion::getLLMinorVersion(),
278 ViewerVersion::getLLPatchVersion(),
279 ViewerVersion::getLLBuildVersion() );
280 268
281 LLTextBox* channel_text = getChild<LLTextBox>("channel_text"); 269 LLTextBox* channel_text = getChild<LLTextBox>("channel_text");
282 channel_text->setTextArg("[CHANNEL]", imp_channel);
283 channel_text->setTextArg("[VERSION]", imp_version); 270 channel_text->setTextArg("[VERSION]", imp_version);
284 channel_text->setTextArg("[ALT_CHANNEL]", ll_channel);
285 channel_text->setTextArg("[ALT_VERSION]", ll_version);
286 channel_text->setClickedCallback(onClickVersion); 271 channel_text->setClickedCallback(onClickVersion);
287 channel_text->setCallbackUserData(this); 272 channel_text->setCallbackUserData(this);
288 273
@@ -931,12 +916,8 @@ void LLPanelLogin::loadLoginPage()
931 } 916 }
932 917
933 // Channel and Version 918 // Channel and Version
934 std::string version = llformat("%d.%d.%d %s", 919 char* curl_channel = curl_escape(ViewerInfo::nameWithVariant().c_str(), 0);
935 ViewerVersion::getImpMajorVersion(), ViewerVersion::getImpMinorVersion(), 920 char* curl_version = curl_escape(ViewerInfo::versionNumbers4().c_str(), 0);
936 ViewerVersion::getImpPatchVersion(), ViewerVersion::getImpTestVersion().c_str() );
937
938 char* curl_channel = curl_escape(gSavedSettings.getString("VersionChannelName").c_str(), 0);
939 char* curl_version = curl_escape(version.c_str(), 0);
940 921
941 oStr << "&channel=" << curl_channel; 922 oStr << "&channel=" << curl_channel;
942 oStr << "&version=" << curl_version; 923 oStr << "&version=" << curl_version;
diff --git a/linden/indra/newview/llpanelmsgs.cpp b/linden/indra/newview/llpanelmsgs.cpp
index 9e04070..572bcc3 100644
--- a/linden/indra/newview/llpanelmsgs.cpp
+++ b/linden/indra/newview/llpanelmsgs.cpp
@@ -70,6 +70,8 @@ BOOL LLPanelMsgs::postBuild()
70 childSetValue("notify_money_change_checkbox", gSavedSettings.getBOOL("NotifyMoneyChange")); 70 childSetValue("notify_money_change_checkbox", gSavedSettings.getBOOL("NotifyMoneyChange"));
71 childSetLabelArg("notify_money_change_checkbox", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol()); 71 childSetLabelArg("notify_money_change_checkbox", "[CURRENCY]", gHippoGridManager->getConnectedGrid()->getCurrencySymbol());
72 72
73 childSetValue("friends_online_notify_checkbox", gSavedSettings.getBOOL("ChatOnlineNotification"));
74
73 return TRUE; 75 return TRUE;
74} 76}
75 77
@@ -166,6 +168,8 @@ void LLPanelMsgs::apply()
166 gSavedSettings.setBOOL("ShowNewInventory", childGetValue("show_new_inventory")); 168 gSavedSettings.setBOOL("ShowNewInventory", childGetValue("show_new_inventory"));
167 gSavedSettings.setBOOL("ShowInInventory", childGetValue("show_in_inventory")); 169 gSavedSettings.setBOOL("ShowInInventory", childGetValue("show_in_inventory"));
168 gSavedSettings.setBOOL("NotifyMoneyChange", childGetValue("notify_money_change_checkbox")); 170 gSavedSettings.setBOOL("NotifyMoneyChange", childGetValue("notify_money_change_checkbox"));
171
172 gSavedSettings.setBOOL("ChatOnlineNotification", childGetValue("friends_online_notify_checkbox").asBoolean());
169} 173}
170 174
171void LLPanelMsgs::cancel() 175void LLPanelMsgs::cancel()
diff --git a/linden/indra/newview/llpanelnetwork.cpp b/linden/indra/newview/llpanelnetwork.cpp
index 8dc6601..a867a9c 100644
--- a/linden/indra/newview/llpanelnetwork.cpp
+++ b/linden/indra/newview/llpanelnetwork.cpp
@@ -44,6 +44,30 @@
44#include "llviewercontrol.h" 44#include "llviewercontrol.h"
45#include "llviewerwindow.h" 45#include "llviewerwindow.h"
46 46
47// project includes
48#include "llcheckboxctrl.h"
49#include "hippogridmanager.h"
50#include "lluictrlfactory.h"
51#include "llviewercontrol.h"
52#include "llviewermedia.h"
53#include "llviewerwindow.h"
54#include "llpluginclassmedia.h"
55
56#include "hippogridmanager.h"
57#include "llpluginclassmedia.h"
58#include "llviewermedia.h"
59
60// helper functions for getting/freeing the web browser media
61// if creating/destroying these is too slow, we'll need to create
62// a static member and update all our static callbacks
63viewer_media_t get_web_media()
64{
65
66 viewer_media_t media_source = LLViewerMedia::newMediaImpl("", LLUUID::null, 0, 0, 0, 0, "text/html");
67
68 return media_source;
69}
70
47bool LLPanelNetwork::sSocksSettingsChanged; 71bool LLPanelNetwork::sSocksSettingsChanged;
48 72
49LLPanelNetwork::LLPanelNetwork() 73LLPanelNetwork::LLPanelNetwork()
@@ -54,16 +78,16 @@ LLPanelNetwork::LLPanelNetwork()
54BOOL LLPanelNetwork::postBuild() 78BOOL LLPanelNetwork::postBuild()
55{ 79{
56 std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, ""); 80 std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, "");
57 childSetText("cache_location", cache_location); 81 childSetText("disk_cache_location", cache_location);
58 82
59 childSetAction("clear_cache", onClickClearCache, this); 83 childSetAction("clear_disk_cache", onClickClearDiskCache, this);
60 childSetAction("set_cache", onClickSetCache, this); 84 childSetAction("set_disk_cache", onClickSetDiskCache, this);
61 childSetAction("reset_cache", onClickResetCache, this); 85 childSetAction("reset_disk_cache", onClickResetDiskCache, this);
62 86
63 childSetEnabled("connection_port", gSavedSettings.getBOOL("ConnectionPortEnabled")); 87 childSetEnabled("connection_port", gSavedSettings.getBOOL("ConnectionPortEnabled"));
64 childSetCommitCallback("connection_port_enabled", onCommitPort, this); 88 childSetCommitCallback("connection_port_enabled", onCommitPort, this);
65 89
66 childSetValue("cache_size", (F32)gSavedSettings.getU32("CacheSize")); 90 childSetValue("disk_cache_size", (F32)gSavedSettings.getU32("CacheSize"));
67 childSetValue("max_bandwidth", gSavedSettings.getF32("ThrottleBandwidthKBPS")); 91 childSetValue("max_bandwidth", gSavedSettings.getF32("ThrottleBandwidthKBPS"));
68 childSetValue("connection_port_enabled", gSavedSettings.getBOOL("ConnectionPortEnabled")); 92 childSetValue("connection_port_enabled", gSavedSettings.getBOOL("ConnectionPortEnabled"));
69 childSetValue("connection_port", (F32)gSavedSettings.getU32("ConnectionPort")); 93 childSetValue("connection_port", (F32)gSavedSettings.getU32("ConnectionPort"));
@@ -99,8 +123,48 @@ BOOL LLPanelNetwork::postBuild()
99 // Socks 5 settings, Set all controls and labels enabled state 123 // Socks 5 settings, Set all controls and labels enabled state
100 updateProxyEnabled(this, gSavedSettings.getBOOL("Socks5ProxyEnabled"), gSavedSettings.getString("Socks5AuthType")); 124 updateProxyEnabled(this, gSavedSettings.getBOOL("Socks5ProxyEnabled"), gSavedSettings.getString("Socks5AuthType"));
101 125
126 childSetEnabled("xmlrpc_proxy_editor", gSavedSettings.getBOOL("XMLRPCProxyEnabled"));
127 childSetEnabled("xmlrpc_proxy_port", gSavedSettings.getBOOL("XMLRPCProxyEnabled"));
128 childSetEnabled("xmlrpc_proxy_text_label", gSavedSettings.getBOOL("XMLRPCProxyEnabled"));
129
130 childSetValue("http_texture_check", gSavedSettings.getBOOL("ImagePipelineUseHTTP"));
131 childSetValue("speed_rez_check", gSavedSettings.getBOOL("SpeedRez"));
132 childSetValue("speed_rez_interval_spinner", (F32)gSavedSettings.getU32("SpeedRezInterval"));
133 childSetCommitCallback("speed_rez_check", onCommitSpeedRezCheckBox, this);
134
102 sSocksSettingsChanged = false; 135 sSocksSettingsChanged = false;
103 136
137 // formerly the Web panel -- MC
138 childSetAction("clear_web_cache", onClickClearWebCache, this);
139 childSetCommitCallback("web_proxy_enabled", onCommitWebProxyEnabled, this);
140
141 std::string value = gSavedSettings.getBOOL("UseExternalBrowser") ? "external" : "internal";
142 childSetValue("use_external_browser", value);
143
144 childSetValue("cookies_enabled", gSavedSettings.getBOOL("BrowserCookiesEnabled"));
145 childSetAction("clear_cookies", onClickClearCookies,this);
146
147 childSetValue("web_proxy_enabled", gSavedSettings.getBOOL("BrowserProxyEnabled"));
148 childSetValue("web_proxy_editor", gSavedSettings.getString("BrowserProxyAddress"));
149 childSetValue("web_proxy_port", gSavedSettings.getS32("BrowserProxyPort"));
150
151 if (gHippoGridManager->getConnectedGrid()->isSecondLife())
152 {
153 childSetValue("world_search_editor", gSavedSettings.getString("SearchURLQuery")) ;
154 }
155 else
156 {
157 childSetValue("world_search_editor", gSavedSettings.getString("SearchURLQueryOpenSim")) ;
158 }
159 childSetAction("world_search_reset_default", onClickSearchDefault, this);
160 childSetAction("world_search_clear", onClickSearchClear, this);
161
162 childSetEnabled("proxy_text_label", gSavedSettings.getBOOL("BrowserProxyEnabled"));
163 childSetEnabled("web_proxy_editor", gSavedSettings.getBOOL("BrowserProxyEnabled"));
164 childSetEnabled("web_proxy_port", gSavedSettings.getBOOL("BrowserProxyEnabled"));
165
166 refresh();
167
104 return TRUE; 168 return TRUE;
105} 169}
106 170
@@ -112,7 +176,7 @@ LLPanelNetwork::~LLPanelNetwork()
112 176
113void LLPanelNetwork::apply() 177void LLPanelNetwork::apply()
114{ 178{
115 gSavedSettings.setU32("CacheSize", childGetValue("cache_size").asInteger()); 179 gSavedSettings.setU32("CacheSize", childGetValue("disk_cache_size").asInteger());
116 gSavedSettings.setF32("ThrottleBandwidthKBPS", childGetValue("max_bandwidth").asReal()); 180 gSavedSettings.setF32("ThrottleBandwidthKBPS", childGetValue("max_bandwidth").asReal());
117 gSavedSettings.setBOOL("ConnectionPortEnabled", childGetValue("connection_port_enabled")); 181 gSavedSettings.setBOOL("ConnectionPortEnabled", childGetValue("connection_port_enabled"));
118 gSavedSettings.setU32("ConnectionPort", childGetValue("connection_port").asInteger()); 182 gSavedSettings.setU32("ConnectionPort", childGetValue("connection_port").asInteger());
@@ -130,6 +194,10 @@ void LLPanelNetwork::apply()
130 gSavedSettings.setString("Socks5Username", childGetValue("socks5_proxy_username")); 194 gSavedSettings.setString("Socks5Username", childGetValue("socks5_proxy_username"));
131 gSavedSettings.setString("Socks5Password", childGetValue("socks5_proxy_password")); 195 gSavedSettings.setString("Socks5Password", childGetValue("socks5_proxy_password"));
132 196
197 gSavedSettings.setBOOL("ImagePipelineUseHTTP", childGetValue("http_texture_check"));
198 gSavedSettings.setBOOL("SpeedRez", childGetValue("speed_rez_check"));
199 gSavedSettings.setU32("SpeedRezInterval", childGetValue("speed_rez_interval_spinner").asReal());
200
133 if (sSocksSettingsChanged) 201 if (sSocksSettingsChanged)
134 { 202 {
135 if (LLStartUp::getStartupState() != STATE_LOGIN_WAIT) 203 if (LLStartUp::getStartupState() != STATE_LOGIN_WAIT)
@@ -142,14 +210,62 @@ void LLPanelNetwork::apply()
142 LLSocks::getInstance()->updated(); 210 LLSocks::getInstance()->updated();
143 } 211 }
144 } 212 }
213
214 // formerly the Web panel -- MC
215 gSavedSettings.setBOOL("BrowserCookiesEnabled", childGetValue("cookies_enabled"));
216
217 bool proxy_enable = childGetValue("web_proxy_enabled");
218 std::string proxy_address = childGetValue("web_proxy_editor");
219 int proxy_port = childGetValue("web_proxy_port");
220 gSavedSettings.setBOOL("BrowserProxyEnabled", proxy_enable);
221 gSavedSettings.setString("BrowserProxyAddress", proxy_address);
222 gSavedSettings.setS32("BrowserProxyPort", proxy_port);
223 LLViewerMedia::setProxyConfig(proxy_enable, proxy_address, proxy_port);
224
225 if (gHippoGridManager->getConnectedGrid()->isSecondLife())
226 {
227 gSavedSettings.setString("SearchURLQuery", childGetValue("world_search_editor"));
228 }
229 else
230 {
231 gSavedSettings.setString("SearchURLQueryOpenSim", childGetValue("world_search_editor"));
232 }
233
234 bool value = childGetValue("use_external_browser").asString() == "external" ? true : false;
235 gSavedSettings.setBOOL("UseExternalBrowser", value);
236
237 viewer_media_t media_source = get_web_media();
238 if (media_source && media_source->hasMedia())
239 {
240 media_source->getMediaPlugin()->enable_cookies(childGetValue("cookies_enabled"));
241
242 bool proxy_enable = childGetValue("web_proxy_enabled");
243 std::string proxy_address = childGetValue("web_proxy_editor");
244 int proxy_port = childGetValue("web_proxy_port");
245 media_source->getMediaPlugin()->proxy_setup(proxy_enable, proxy_address, proxy_port);
246 }
145} 247}
146 248
147void LLPanelNetwork::cancel() 249void LLPanelNetwork::cancel()
148{ 250{
149} 251}
150 252
253void LLPanelNetwork::refresh()
254{
255 if (childGetValue("speed_rez_check").asBoolean())
256 {
257 childEnable("speed_rez_interval_spinner");
258 childEnable("speed_rez_seconds_text");
259 }
260 else
261 {
262 childDisable("speed_rez_interval_spinner");
263 childDisable("speed_rez_seconds_text");
264 }
265}
266
151// static 267// static
152void LLPanelNetwork::onClickClearCache(void*) 268void LLPanelNetwork::onClickClearDiskCache(void*)
153{ 269{
154 // flag client cache for clearing next time the client runs 270 // flag client cache for clearing next time the client runs
155 gSavedSettings.setBOOL("PurgeCacheOnNextStartup", TRUE); 271 gSavedSettings.setBOOL("PurgeCacheOnNextStartup", TRUE);
@@ -157,7 +273,7 @@ void LLPanelNetwork::onClickClearCache(void*)
157} 273}
158 274
159// static 275// static
160void LLPanelNetwork::onClickSetCache(void* user_data) 276void LLPanelNetwork::onClickSetDiskCache(void* user_data)
161{ 277{
162 LLPanelNetwork* self = (LLPanelNetwork*)user_data; 278 LLPanelNetwork* self = (LLPanelNetwork*)user_data;
163 279
@@ -173,19 +289,19 @@ void LLPanelNetwork::onClickSetCache(void* user_data)
173 std::string dir_name = picker.getDirName(); 289 std::string dir_name = picker.getDirName();
174 if (!dir_name.empty() && dir_name != cur_name) 290 if (!dir_name.empty() && dir_name != cur_name)
175 { 291 {
176 self->childSetText("cache_location", dir_name); 292 self->childSetText("disk_cache_location", dir_name);
177 LLNotifications::instance().add("CacheWillBeMoved"); 293 LLNotifications::instance().add("CacheWillBeMoved");
178 gSavedSettings.setString("NewCacheLocation", dir_name); 294 gSavedSettings.setString("NewCacheLocation", dir_name);
179 } 295 }
180 else 296 else
181 { 297 {
182 std::string cache_location = gDirUtilp->getCacheDir(); 298 std::string cache_location = gDirUtilp->getCacheDir();
183 self->childSetText("cache_location", cache_location); 299 self->childSetText("disk_cache_location", cache_location);
184 } 300 }
185} 301}
186 302
187// static 303// static
188void LLPanelNetwork::onClickResetCache(void* user_data) 304void LLPanelNetwork::onClickResetDiskCache(void* user_data)
189{ 305{
190 LLPanelNetwork* self = (LLPanelNetwork*)user_data; 306 LLPanelNetwork* self = (LLPanelNetwork*)user_data;
191 if (!gSavedSettings.getString("CacheLocation").empty()) 307 if (!gSavedSettings.getString("CacheLocation").empty())
@@ -194,7 +310,7 @@ void LLPanelNetwork::onClickResetCache(void* user_data)
194 LLNotifications::instance().add("CacheWillBeMoved"); 310 LLNotifications::instance().add("CacheWillBeMoved");
195 } 311 }
196 std::string cache_location = gDirUtilp->getCacheDir(true); 312 std::string cache_location = gDirUtilp->getCacheDir(true);
197 self->childSetText("cache_location", cache_location); 313 self->childSetText("disk_cache_location", cache_location);
198} 314}
199 315
200// static 316// static
@@ -300,3 +416,104 @@ void LLPanelNetwork::updateProxyEnabled(LLPanelNetwork * self, bool enabled, std
300 self->childSetEnabled("xmlrpc_proxy_port", !enabled); 416 self->childSetEnabled("xmlrpc_proxy_port", !enabled);
301 self->childSetEnabled("xmlrpc_proxy_text_label", !enabled); 417 self->childSetEnabled("xmlrpc_proxy_text_label", !enabled);
302} 418}
419
420// static
421void LLPanelNetwork::onClickClearWebCache(void*)
422{
423 LLNotifications::instance().add("ConfirmClearBrowserCache", LLSD(), LLSD(), callback_clear_browser_cache);
424}
425
426//static
427bool LLPanelNetwork::callback_clear_browser_cache(const LLSD& notification, const LLSD& response)
428{
429 S32 option = LLNotification::getSelectedOption(notification, response);
430 if ( option == 0 ) // YES
431 {
432 viewer_media_t media_source = get_web_media();
433 if (media_source && media_source->hasMedia())
434 media_source->getMediaPlugin()->clear_cache();
435 }
436 return false;
437}
438
439// static
440void LLPanelNetwork::onClickClearCookies(void*)
441{
442 LLNotifications::instance().add("ConfirmClearCookies", LLSD(), LLSD(), callback_clear_cookies);
443}
444
445//static
446bool LLPanelNetwork::callback_clear_cookies(const LLSD& notification, const LLSD& response)
447{
448 S32 option = LLNotification::getSelectedOption(notification, response);
449 if ( option == 0 ) // YES
450 {
451 viewer_media_t media_source = get_web_media();
452 if (media_source && media_source->hasMedia())
453 media_source->getMediaPlugin()->clear_cookies();
454 }
455 return false;
456}
457
458// static
459void LLPanelNetwork::onCommitCookies(LLUICtrl* ctrl, void* data)
460{
461 LLPanelNetwork* self = (LLPanelNetwork*)data;
462 LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl;
463
464 if (!self || !check) return;
465
466 viewer_media_t media_source = get_web_media();
467 if (media_source && media_source->hasMedia())
468 media_source->getMediaPlugin()->enable_cookies(check->get());
469}
470
471// static
472void LLPanelNetwork::onCommitWebProxyEnabled(LLUICtrl* ctrl, void* data)
473{
474 LLPanelNetwork* self = (LLPanelNetwork*)data;
475 LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl;
476
477 if (!self || !check) return;
478 self->childSetEnabled("web_proxy_editor", check->get());
479 self->childSetEnabled("web_proxy_port", check->get());
480 self->childSetEnabled("proxy_text_label", check->get());
481}
482
483// static
484void LLPanelNetwork::onClickSearchDefault(void* user_data)
485{
486 LLPanelNetwork* self = (LLPanelNetwork*)user_data;
487 LLControlVariable* controlp =
488 (gHippoGridManager->getConnectedGrid()->isSecondLife())
489 ?
490 gSavedSettings.getControl("SearchURLQuery")
491 :
492 gSavedSettings.getControl("SearchURLQueryOpenSim");
493
494 if (controlp)
495 {
496 self->childSetValue("world_search_editor",controlp->getDefault().asString()) ;
497 }
498 else
499 {
500 llwarns << "SearchURLQuery or SearchURLQueryOpenSim missing from settings.xml - thats bad!" << llendl;
501 }
502}
503
504// static
505void LLPanelNetwork::onClickSearchClear(void* user_data)
506{
507 LLPanelNetwork* self = (LLPanelNetwork*)user_data;
508 self->childSetValue("world_search_editor","") ;
509}
510
511//static
512void LLPanelNetwork::onCommitSpeedRezCheckBox(LLUICtrl* ctrl, void* user_data)
513{
514 LLPanelNetwork* self = (LLPanelNetwork*)user_data;
515 if (self)
516 {
517 self->refresh();
518 }
519}
diff --git a/linden/indra/newview/llpanelnetwork.h b/linden/indra/newview/llpanelnetwork.h
index 628f713..b8e5618 100644
--- a/linden/indra/newview/llpanelnetwork.h
+++ b/linden/indra/newview/llpanelnetwork.h
@@ -47,9 +47,13 @@ public:
47 void cancel(); 47 void cancel();
48 48
49private: 49private:
50 static void onClickClearCache(void*); 50 void refresh();
51 static void onClickSetCache(void*); 51
52 static void onClickResetCache(void*); 52 static void onCommitSpeedRezCheckBox(LLUICtrl* ctrl, void* user_data);
53
54 static void onClickClearDiskCache(void*);
55 static void onClickSetDiskCache(void*);
56 static void onClickResetDiskCache(void*);
53 static void onCommitPort(LLUICtrl* ctrl, void*); 57 static void onCommitPort(LLUICtrl* ctrl, void*);
54 static void onCommitXMLRPCProxyEnabled(LLUICtrl* ctrl, void* data); 58 static void onCommitXMLRPCProxyEnabled(LLUICtrl* ctrl, void* data);
55 static void onCommitSocks5ProxyEnabled(LLUICtrl* ctrl, void* data); 59 static void onCommitSocks5ProxyEnabled(LLUICtrl* ctrl, void* data);
@@ -60,6 +64,16 @@ private:
60 64
61 static bool sSocksSettingsChanged; 65 static bool sSocksSettingsChanged;
62 66
67 // formerly the web panel -- MC
68 static void onClickClearWebCache(void*);
69 static void onClickClearCookies(void*);
70 static void onClickSearchDefault(void* user_data);
71 static void onClickSearchClear(void* user_data);
72 static bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response);
73 static bool callback_clear_cookies(const LLSD& notification, const LLSD& response);
74 static void onCommitCookies(LLUICtrl* ctrl, void* data);
75 static void onCommitWebProxyEnabled(LLUICtrl* ctrl, void* data);
76
63}; 77};
64 78
65#endif 79#endif
diff --git a/linden/indra/newview/llpanelweb.cpp b/linden/indra/newview/llpanelweb.cpp
deleted file mode 100644
index 93441dd..0000000
--- a/linden/indra/newview/llpanelweb.cpp
+++ /dev/null
@@ -1,234 +0,0 @@
1/**
2 * @file LLPanelWeb.cpp
3 * @brief Network preferences panel
4 *
5 * $LicenseInfo:firstyear=2001&license=viewergpl$
6 *
7 * Copyright (c) 2001-2009, Linden Research, Inc.
8 *
9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab
11 * to you under the terms of the GNU General Public License, version 2.0
12 * ("GPL"), unless you have obtained a separate licensing agreement
13 * ("Other License"), formally executed by you and Linden Lab. Terms of
14 * the GPL can be found in doc/GPL-license.txt in this distribution, or
15 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
16 *
17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
22 *
23 * By copying, modifying or distributing this software, you acknowledge
24 * that you have read and understood your obligations described above,
25 * and agree to abide by those obligations.
26 *
27 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
28 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
29 * COMPLETENESS OR PERFORMANCE.
30 * $/LicenseInfo$
31 */
32
33#include "llviewerprecompiledheaders.h"
34
35// file include
36#include "llpanelweb.h"
37
38// project includes
39#include "llcheckboxctrl.h"
40#include "hippogridmanager.h"
41#include "lluictrlfactory.h"
42#include "llviewercontrol.h"
43#include "llviewermedia.h"
44#include "llviewerwindow.h"
45#include "llpluginclassmedia.h"
46
47// helper functions for getting/freeing the web browser media
48// if creating/destroying these is too slow, we'll need to create
49// a static member and update all our static callbacks
50viewer_media_t get_web_media()
51{
52
53 viewer_media_t media_source = LLViewerMedia::newMediaImpl("", LLUUID::null, 0, 0, 0, 0, "text/html");
54
55 return media_source;
56}
57
58LLPanelWeb::LLPanelWeb()
59{
60 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_web.xml");
61}
62
63BOOL LLPanelWeb::postBuild()
64{
65 childSetAction("clear_cache", onClickClearCache, this);
66 childSetCommitCallback("web_proxy_enabled", onCommitWebProxyEnabled, this);
67
68 std::string value = gSavedSettings.getBOOL("UseExternalBrowser") ? "external" : "internal";
69 childSetValue("use_external_browser", value);
70
71 childSetValue("cookies_enabled", gSavedSettings.getBOOL("BrowserCookiesEnabled"));
72 childSetAction("clear_cookies", onClickClearCookies,this);
73
74 childSetValue("web_proxy_enabled", gSavedSettings.getBOOL("BrowserProxyEnabled"));
75 childSetValue("web_proxy_editor", gSavedSettings.getString("BrowserProxyAddress"));
76 childSetValue("web_proxy_port", gSavedSettings.getS32("BrowserProxyPort"));
77
78 if (gHippoGridManager->getConnectedGrid()->isSecondLife())
79 {
80 childSetValue("world_search_editor", gSavedSettings.getString("SearchURLQuery")) ;
81 }
82 else
83 {
84 childSetValue("world_search_editor", gSavedSettings.getString("SearchURLQueryOpenSim")) ;
85 }
86 childSetAction("world_search_reset_default", onClickDefault, this);
87 childSetAction("world_search_clear", onClickClear, this);
88
89 childSetEnabled("proxy_text_label", gSavedSettings.getBOOL("BrowserProxyEnabled"));
90 childSetEnabled("web_proxy_editor", gSavedSettings.getBOOL("BrowserProxyEnabled"));
91 childSetEnabled("web_proxy_port", gSavedSettings.getBOOL("BrowserProxyEnabled"));
92
93 return TRUE;
94}
95
96
97
98LLPanelWeb::~LLPanelWeb()
99{
100 // Children all cleaned up by default view destructor.
101}
102
103void LLPanelWeb::apply()
104{
105 gSavedSettings.setBOOL("BrowserCookiesEnabled", childGetValue("cookies_enabled"));
106
107 bool proxy_enable = childGetValue("web_proxy_enabled");
108 std::string proxy_address = childGetValue("web_proxy_editor");
109 int proxy_port = childGetValue("web_proxy_port");
110 gSavedSettings.setBOOL("BrowserProxyEnabled", proxy_enable);
111 gSavedSettings.setString("BrowserProxyAddress", proxy_address);
112 gSavedSettings.setS32("BrowserProxyPort", proxy_port);
113 LLViewerMedia::setProxyConfig(proxy_enable, proxy_address, proxy_port);
114
115 if (gHippoGridManager->getConnectedGrid()->isSecondLife())
116 {
117 gSavedSettings.setString("SearchURLQuery", childGetValue("world_search_editor"));
118 }
119 else
120 {
121 gSavedSettings.setString("SearchURLQueryOpenSim", childGetValue("world_search_editor"));
122 }
123
124 bool value = childGetValue("use_external_browser").asString() == "external" ? true : false;
125 gSavedSettings.setBOOL("UseExternalBrowser", value);
126
127 viewer_media_t media_source = get_web_media();
128 if (media_source && media_source->hasMedia())
129 {
130 media_source->getMediaPlugin()->enable_cookies(childGetValue("cookies_enabled"));
131
132 bool proxy_enable = childGetValue("web_proxy_enabled");
133 std::string proxy_address = childGetValue("web_proxy_editor");
134 int proxy_port = childGetValue("web_proxy_port");
135 media_source->getMediaPlugin()->proxy_setup(proxy_enable, proxy_address, proxy_port);
136 }
137}
138
139void LLPanelWeb::cancel()
140{
141}
142
143// static
144void LLPanelWeb::onClickClearCache(void*)
145{
146 LLNotifications::instance().add("ConfirmClearBrowserCache", LLSD(), LLSD(), callback_clear_browser_cache);
147}
148
149//static
150bool LLPanelWeb::callback_clear_browser_cache(const LLSD& notification, const LLSD& response)
151{
152 S32 option = LLNotification::getSelectedOption(notification, response);
153 if ( option == 0 ) // YES
154 {
155 viewer_media_t media_source = get_web_media();
156 if (media_source && media_source->hasMedia())
157 media_source->getMediaPlugin()->clear_cache();
158 }
159 return false;
160}
161
162// static
163void LLPanelWeb::onClickClearCookies(void*)
164{
165 LLNotifications::instance().add("ConfirmClearCookies", LLSD(), LLSD(), callback_clear_cookies);
166}
167
168//static
169bool LLPanelWeb::callback_clear_cookies(const LLSD& notification, const LLSD& response)
170{
171 S32 option = LLNotification::getSelectedOption(notification, response);
172 if ( option == 0 ) // YES
173 {
174 viewer_media_t media_source = get_web_media();
175 if (media_source && media_source->hasMedia())
176 media_source->getMediaPlugin()->clear_cookies();
177 }
178 return false;
179}
180
181// static
182void LLPanelWeb::onCommitCookies(LLUICtrl* ctrl, void* data)
183{
184 LLPanelWeb* self = (LLPanelWeb*)data;
185 LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl;
186
187 if (!self || !check) return;
188
189 viewer_media_t media_source = get_web_media();
190 if (media_source && media_source->hasMedia())
191 media_source->getMediaPlugin()->enable_cookies(check->get());
192}
193// static
194void LLPanelWeb::onCommitWebProxyEnabled(LLUICtrl* ctrl, void* data)
195{
196 LLPanelWeb* self = (LLPanelWeb*)data;
197 LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl;
198
199 if (!self || !check) return;
200 self->childSetEnabled("web_proxy_editor", check->get());
201 self->childSetEnabled("web_proxy_port", check->get());
202 self->childSetEnabled("proxy_text_label", check->get());
203
204
205}
206
207// static
208void LLPanelWeb::onClickDefault(void* user_data)
209{
210 LLPanelWeb* self = (LLPanelWeb*)user_data;
211 LLControlVariable* controlp =
212 (gHippoGridManager->getConnectedGrid()->isSecondLife())
213 ?
214 gSavedSettings.getControl("SearchURLQuery")
215 :
216 gSavedSettings.getControl("SearchURLQueryOpenSim");
217
218 if (controlp)
219 {
220 self->childSetValue("world_search_editor",controlp->getDefault().asString()) ;
221 }
222 else
223 {
224 llwarns << "SearchURLQuery or SearchURLQueryOpenSim missing from settings.xml - thats bad!" << llendl;
225 }
226
227}
228
229// static
230void LLPanelWeb::onClickClear(void* user_data)
231{
232 LLPanelWeb* self = (LLPanelWeb*)user_data;
233 self->childSetValue("world_search_editor","") ;
234}
diff --git a/linden/indra/newview/llpanelweb.h b/linden/indra/newview/llpanelweb.h
deleted file mode 100644
index 3282827..0000000
--- a/linden/indra/newview/llpanelweb.h
+++ /dev/null
@@ -1,60 +0,0 @@
1/**
2 * @file llpanelweb.h
3 * @brief Web browser preferences panel
4 *
5 * $LicenseInfo:firstyear=2005&license=viewergpl$
6 *
7 * Copyright (c) 2005-2009, Linden Research, Inc.
8 *
9 * Second Life Viewer Source Code
10 * The source code in this file ("Source Code") is provided by Linden Lab
11 * to you under the terms of the GNU General Public License, version 2.0
12 * ("GPL"), unless you have obtained a separate licensing agreement
13 * ("Other License"), formally executed by you and Linden Lab. Terms of
14 * the GPL can be found in doc/GPL-license.txt in this distribution, or
15 * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
16 *
17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
22 *
23 * By copying, modifying or distributing this software, you acknowledge
24 * that you have read and understood your obligations described above,
25 * and agree to abide by those obligations.
26 *
27 * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
28 * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
29 * COMPLETENESS OR PERFORMANCE.
30 * $/LicenseInfo$
31 */
32
33#ifndef LL_LLPANELWEB_H
34#define LL_LLPANELWEB_H
35
36#include "llpanel.h"
37
38class LLPanelWeb : public LLPanel
39{
40public:
41 LLPanelWeb();
42 ~LLPanelWeb();
43
44 BOOL postBuild();
45
46 void apply();
47 void cancel();
48
49private:
50 static void onClickClearCache(void*);
51 static void onClickClearCookies(void*);
52 static void onClickDefault(void* user_data);
53 static void onClickClear(void* user_data);
54 static bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response);
55 static bool callback_clear_cookies(const LLSD& notification, const LLSD& response);
56 static void onCommitCookies(LLUICtrl* ctrl, void* data);
57 static void onCommitWebProxyEnabled(LLUICtrl* ctrl, void* data);
58};
59
60#endif
diff --git a/linden/indra/newview/llprefsadvanced.cpp b/linden/indra/newview/llprefsadvanced.cpp
index f1b2428..a9500f7 100644
--- a/linden/indra/newview/llprefsadvanced.cpp
+++ b/linden/indra/newview/llprefsadvanced.cpp
@@ -32,14 +32,11 @@
32 32
33#include "llcombobox.h" 33#include "llcombobox.h"
34 34
35#include "floatercommandline.h"
36#include "llagent.h" 35#include "llagent.h"
37#include "llprefsadvanced.h" 36#include "llprefsadvanced.h"
38#include "llviewercontrol.h" 37#include "llviewercontrol.h"
39#include "llviewermenu.h" 38#include "llviewermenu.h"
40#include "llvoavatar.h" 39#include "llvoavatar.h"
41#include "lgghunspell_wrapper.h"
42#include "lggautocorrectfloater.h"
43#include "llcombobox.h" 40#include "llcombobox.h"
44#include "llcolorswatch.h" 41#include "llcolorswatch.h"
45#include "llstartup.h" 42#include "llstartup.h"
@@ -57,9 +54,6 @@ LLPrefsAdvanced::LLPrefsAdvanced()
57 sInstance = this; 54 sInstance = this;
58 55
59 childSetCommitCallback("speed_rez_check", onCommitCheckBox, this); 56 childSetCommitCallback("speed_rez_check", onCommitCheckBox, this);
60 childSetCommitCallback("command_line_check", onCommitCheckBox, this);
61
62 childSetAction("command_line_btn", onClickCommandLine, this);
63} 57}
64 58
65LLPrefsAdvanced::~LLPrefsAdvanced() 59LLPrefsAdvanced::~LLPrefsAdvanced()
@@ -68,17 +62,6 @@ LLPrefsAdvanced::~LLPrefsAdvanced()
68 sInstance = NULL; 62 sInstance = NULL;
69} 63}
70 64
71void LLPrefsAdvanced::initHelpBtn(const std::string& name, const std::string& xml_alert)
72{
73 childSetAction(name, onClickHelp, new std::string(xml_alert));
74}
75
76void LLPrefsAdvanced::onClickHelp(void* data)
77{
78 std::string* xml_alert = (std::string*)data;
79 LLNotifications::instance().add(*xml_alert);
80}
81
82BOOL LLPrefsAdvanced::postBuild() 65BOOL LLPrefsAdvanced::postBuild()
83{ 66{
84 childSetValue("disable_log_screen_check", gSavedSettings.getBOOL("DisableLoginLogoutScreens")); 67 childSetValue("disable_log_screen_check", gSavedSettings.getBOOL("DisableLoginLogoutScreens"));
@@ -86,23 +69,15 @@ BOOL LLPrefsAdvanced::postBuild()
86 69
87 static BOOL* sShowClientNameTag = rebind_llcontrol<BOOL>("ShowClientNameTag", &gSavedSettings, true); 70 static BOOL* sShowClientNameTag = rebind_llcontrol<BOOL>("ShowClientNameTag", &gSavedSettings, true);
88 childSetValue("client_name_tag_check", (*sShowClientNameTag)); 71 childSetValue("client_name_tag_check", (*sShowClientNameTag));
89 static BOOL* sShowClientColor = rebind_llcontrol<BOOL>("ShowClientColor", &gSavedSettings, true);
90 childSetValue("client_name_color_check", (*sShowClientColor));
91 childSetValue("client_name_hover_check", gSavedSettings.getBOOL("ShowClientNameHoverTip")); 72 childSetValue("client_name_hover_check", gSavedSettings.getBOOL("ShowClientNameHoverTip"));
92 childSetValue("client_name_tag_broadcast_check", gSavedSettings.getBOOL("ShowMyClientTagToOthers")); 73 childSetValue("client_name_tag_broadcast_check", gSavedSettings.getBOOL("ShowMyClientTagToOthers"));
93 getChild<LLColorSwatchCtrl>("client_tag_color")->set(gSavedSettings.getColor4("ImprudenceTagColor"));
94 mClientTagColor = gSavedSettings.getColor4("ImprudenceTagColor");
95 74
96 childSetValue("http_texture_check", gSavedSettings.getBOOL("ImagePipelineUseHTTP"));
97 childSetValue("speed_rez_check", gSavedSettings.getBOOL("SpeedRez"));
98 childSetValue("speed_rez_interval_spinner", (F32)gSavedSettings.getU32("SpeedRezInterval"));
99 childSetValue("appearance_anim_check", gSavedSettings.getBOOL("AppearanceAnimate")); 75 childSetValue("appearance_anim_check", gSavedSettings.getBOOL("AppearanceAnimate"));
100 childSetValue("legacy_pie_menu_checkbox", gSavedSettings.getBOOL("LegacyPieEnabled")); 76 childSetValue("legacy_pie_menu_checkbox", gSavedSettings.getBOOL("LegacyPieEnabled"));
101 childSetValue("language_is_public", gSavedSettings.getBOOL("LanguageIsPublic")); 77 childSetValue("language_is_public", gSavedSettings.getBOOL("LanguageIsPublic"));
102 childSetValue("allow_mupose", gSavedSettings.getBOOL("AllowMUpose")); 78 childSetValue("allow_mupose", gSavedSettings.getBOOL("AllowMUpose"));
103 childSetValue("auto_close_ooc", gSavedSettings.getBOOL("AutoCloseOOC")); 79 childSetValue("auto_close_ooc", gSavedSettings.getBOOL("AutoCloseOOC"));
104 childSetValue("shadows_check", gSavedSettings.getBOOL("ShadowsEnabled")); 80 childSetValue("shadows_check", gSavedSettings.getBOOL("ShadowsEnabled"));
105 childSetValue("command_line_check", gSavedSettings.getBOOL("CmdLineChatbarEnabled"));
106 81
107 childSetValue("lightshare_combo", 82 childSetValue("lightshare_combo",
108 LLSD((S32)gSavedSettings.getU32("LightShareAllowed"))); 83 LLSD((S32)gSavedSettings.getU32("LightShareAllowed")));
@@ -110,19 +85,20 @@ BOOL LLPrefsAdvanced::postBuild()
110 LLComboBox* crash_behavior_combobox = getChild<LLComboBox>("crash_behavior_combobox"); 85 LLComboBox* crash_behavior_combobox = getChild<LLComboBox>("crash_behavior_combobox");
111 crash_behavior_combobox->setCurrentByIndex(gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING)); 86 crash_behavior_combobox->setCurrentByIndex(gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING));
112 87
113 getChild<LLComboBox>("EmeraldSpellBase")->setCommitCallback(onSpellBaseComboBoxCommit);
114 getChild<LLButton>("EmSpell_EditCustom")->setClickedCallback(onSpellEditCustom, this);
115 getChild<LLButton>("EmSpell_GetMore")->setClickedCallback(onSpellGetMore, this);
116 getChild<LLButton>("EmSpell_Add")->setClickedCallback(onSpellAdd, this);
117 getChild<LLButton>("EmSpell_Remove")->setClickedCallback(onSpellRemove, this);
118
119 getChild<LLButton>("ac_button")->setClickedCallback(onAutoCorrectButton,this);
120 initHelpBtn("EmeraldHelp_SpellCheck", "EmeraldHelp_SpellCheck");
121
122 getChild<LLButton>("reset_cloud_this_account")->setClickedCallback(onResetThisCloudButton,this); 88 getChild<LLButton>("reset_cloud_this_account")->setClickedCallback(onResetThisCloudButton,this);
123 getChild<LLButton>("save_cloud_this_account")->setClickedCallback(onSaveThisCloudButton,this); 89 getChild<LLButton>("save_cloud_this_account")->setClickedCallback(onSaveThisCloudButton,this);
124 getChild<LLButton>("save_cloud_any_account")->setClickedCallback(onSaveAnyoneCloudButton,this); 90 getChild<LLButton>("save_cloud_any_account")->setClickedCallback(onSaveAnyoneCloudButton,this);
125 91
92 childSetValue("automatic_fly", gSavedSettings.getBOOL("AutomaticFly"));
93
94 static BOOL* sEnableWindlightRemote = rebind_llcontrol<BOOL>("EnableWindlightRemote", &gSavedSettings, true);
95 childSetValue("toggle_windlight_control", (*sEnableWindlightRemote));
96 mWLControl = (*sEnableWindlightRemote);
97
98 childSetValue("script_errors_as_chat", gSavedSettings.getBOOL("ScriptErrorsAsChat"));
99 childSetValue("show_timestamps_check", gSavedSettings.getBOOL("ShowTimestamps"));
100 childSetValue("arrow_keys_move_avatar_check", gSavedSettings.getBOOL("ArrowKeysMoveAvatar"));
101
126 refresh(); 102 refresh();
127 103
128 return TRUE; 104 return TRUE;
@@ -133,18 +109,11 @@ void LLPrefsAdvanced::apply()
133 gSavedSettings.setBOOL("DisableLoginLogoutScreens", childGetValue("disable_log_screen_check")); 109 gSavedSettings.setBOOL("DisableLoginLogoutScreens", childGetValue("disable_log_screen_check"));
134 gSavedSettings.setBOOL("DisableTeleportScreens", childGetValue("disable_tp_screen_check")); 110 gSavedSettings.setBOOL("DisableTeleportScreens", childGetValue("disable_tp_screen_check"));
135 gSavedSettings.setBOOL("ShowClientNameTag", childGetValue("client_name_tag_check")); 111 gSavedSettings.setBOOL("ShowClientNameTag", childGetValue("client_name_tag_check"));
136 gSavedSettings.setBOOL("ShowClientColor", childGetValue("client_name_color_check"));
137 gSavedSettings.setBOOL("ShowClientNameHoverTip", childGetValue("client_name_hover_check")); 112 gSavedSettings.setBOOL("ShowClientNameHoverTip", childGetValue("client_name_hover_check"));
138 gSavedSettings.setColor4("ImprudenceTagColor", getChild<LLColorSwatchCtrl>("client_tag_color")->get());
139 mClientTagColor = getChild<LLColorSwatchCtrl>("client_tag_color")->get();
140 113
141 gSavedSettings.setBOOL("ImagePipelineUseHTTP", childGetValue("http_texture_check"));
142 gSavedSettings.setBOOL("SpeedRez", childGetValue("speed_rez_check"));
143 gSavedSettings.setU32("SpeedRezInterval", childGetValue("speed_rez_interval_spinner").asReal());
144 gSavedSettings.setBOOL("AppearanceAnimate", childGetValue("appearance_anim_check")); 114 gSavedSettings.setBOOL("AppearanceAnimate", childGetValue("appearance_anim_check"));
145 gSavedSettings.setBOOL("LanguageIsPublic", childGetValue("language_is_public")); 115 gSavedSettings.setBOOL("LanguageIsPublic", childGetValue("language_is_public"));
146 gSavedSettings.setBOOL("AllowMUpose", childGetValue("allow_mupose")); 116
147 gSavedSettings.setBOOL("AutoCloseOOC", childGetValue("auto_close_ooc"));
148 gSavedSettings.setU32("LightShareAllowed", 117 gSavedSettings.setU32("LightShareAllowed",
149 (U32)childGetValue("lightshare_combo").asInteger()); 118 (U32)childGetValue("lightshare_combo").asInteger());
150 119
@@ -210,8 +179,6 @@ void LLPrefsAdvanced::apply()
210 build_pie_menus(); 179 build_pie_menus();
211 } 180 }
212 181
213 gSavedSettings.setBOOL("CmdLineChatbarEnabled", childGetValue("command_line_check").asBoolean());
214
215 LLComboBox* crash_behavior_combobox = getChild<LLComboBox>("crash_behavior_combobox"); 182 LLComboBox* crash_behavior_combobox = getChild<LLComboBox>("crash_behavior_combobox");
216 gCrashSettings.setS32(CRASH_BEHAVIOR_SETTING, crash_behavior_combobox->getCurrentIndex()); 183 gCrashSettings.setS32(CRASH_BEHAVIOR_SETTING, crash_behavior_combobox->getCurrentIndex());
217 184
@@ -219,79 +186,34 @@ void LLPrefsAdvanced::apply()
219 { 186 {
220 onSaveThisCloudButton(NULL); 187 onSaveThisCloudButton(NULL);
221 } 188 }
189
190 gSavedSettings.setBOOL("AutomaticFly", childGetValue("automatic_fly"));
191
192 // windlight remote
193 static BOOL* sEnableWindlightRemote = rebind_llcontrol<BOOL>("EnableWindlightRemote", &gSavedSettings, true);
194 mWLControl = (*sEnableWindlightRemote);
195
196 gSavedSettings.setBOOL("AllowMUpose", childGetValue("allow_mupose"));
197 gSavedSettings.setBOOL("AutoCloseOOC", childGetValue("auto_close_ooc"));
198 gSavedSettings.setBOOL("ArrowKeysMoveAvatar", childGetValue("arrow_keys_move_avatar_check"));
199 gSavedSettings.setBOOL("ScriptErrorsAsChat", childGetValue("script_errors_as_chat"));
200 gSavedSettings.setBOOL("ShowTimestamps", childGetValue("show_timestamps_check"));
222} 201}
223 202
224void LLPrefsAdvanced::cancel() 203void LLPrefsAdvanced::cancel()
225{ 204{
226 gSavedSettings.setColor4("ImprudenceTagColor", mClientTagColor);
227// llwarns << "cancel" << llendl; 205// llwarns << "cancel" << llendl;
228// cool - "ok" is also cancel 206// cool - "ok" is also cancel
229// LLVOAvatar::sCloud.mPartData.mStartColor = mCloudStartColor; 207// LLVOAvatar::sCloud.mPartData.mStartColor = mCloudStartColor;
230// LLVOAvatar::sCloud.mPartData.mEndColor = mCloudEndColor; 208// LLVOAvatar::sCloud.mPartData.mEndColor = mCloudEndColor;
209
210 gSavedSettings.setBOOL("EnableWindlightRemote", mWLControl);
231} 211}
232 212
233void LLPrefsAdvanced::refresh() 213void LLPrefsAdvanced::refresh()
234{ 214{
235 if (childGetValue("speed_rez_check").asBoolean())
236 {
237 childEnable("speed_rez_interval_spinner");
238 childEnable("speed_rez_seconds_text");
239 }
240 else
241 {
242 childDisable("speed_rez_interval_spinner");
243 childDisable("speed_rez_seconds_text");
244 }
245
246 if (childGetValue("command_line_check").asBoolean())
247 {
248 childEnable("command_line_btn");
249 }
250 else
251 {
252 childDisable("command_line_btn");
253 }
254
255 LLComboBox* comboBox = getChild<LLComboBox>("EmeraldSpellBase");
256 if (comboBox != NULL)
257 {
258 comboBox->removeall();
259 std::vector<std::string> names = glggHunSpell->getDicts();
260 for (int i = 0; i < (int)names.size(); i++)
261 {
262 comboBox->add(names[i]);
263 }
264 comboBox->setSimple(gSavedSettings.getString("EmeraldSpellBase"));
265 }
266 comboBox = getChild<LLComboBox>("EmSpell_Avail");
267 if (comboBox != NULL)
268 {
269 LLSD selected = comboBox->getSelectedValue();
270 comboBox->removeall();
271 std::vector<std::string> names = glggHunSpell->getAvailDicts();
272 for (int i = 0; i < (int)names.size(); i++)
273 {
274 comboBox->add(names[i]);
275 }
276 comboBox->selectByValue(selected);
277 }
278 comboBox = getChild<LLComboBox>("EmSpell_Installed");
279 if (comboBox != NULL)
280 {
281 LLSD selected = comboBox->getSelectedValue();
282 comboBox->removeall();
283 std::vector<std::string> names = glggHunSpell->getInstalledDicts();
284 for (int i = 0; i < (int)names.size(); i++)
285 {
286 comboBox->add(names[i]);
287 }
288 comboBox->selectByValue(selected);
289 }
290
291
292 bool is_logged_in = LLStartUp::isLoggedIn(); 215 bool is_logged_in = LLStartUp::isLoggedIn();
293 setParticleControls(is_logged_in); 216 setParticleControls(is_logged_in);
294
295} 217}
296 218
297void LLPrefsAdvanced::draw() 219void LLPrefsAdvanced::draw()
@@ -363,65 +285,10 @@ void LLPrefsAdvanced::setParticleControls(bool is_logged_in)
363void LLPrefsAdvanced::onCommitCheckBox(LLUICtrl* ctrl, void* user_data) 285void LLPrefsAdvanced::onCommitCheckBox(LLUICtrl* ctrl, void* user_data)
364{ 286{
365 LLPrefsAdvanced* self = (LLPrefsAdvanced*)user_data; 287 LLPrefsAdvanced* self = (LLPrefsAdvanced*)user_data;
366 self->refresh(); 288 if (self)
367}
368
369void LLPrefsAdvanced::onSpellAdd(void* data)
370{
371 LLPrefsAdvanced* panel = (LLPrefsAdvanced*)data;
372 if(panel)
373 { 289 {
374 glggHunSpell->addButton(panel->childGetValue("EmSpell_Avail").asString()); 290 self->refresh();
375 } 291 }
376 panel->refresh();
377}
378
379void LLPrefsAdvanced::onSpellRemove(void* data)
380{
381 LLPrefsAdvanced* panel = (LLPrefsAdvanced*)data;
382 if(panel)
383 {
384 glggHunSpell->removeButton(panel->childGetValue("EmSpell_Installed").asString());
385 }
386 panel->refresh();
387}
388
389void LLPrefsAdvanced::onSpellGetMore(void* data)
390{
391 glggHunSpell->getMoreButton(data);
392}
393
394void LLPrefsAdvanced::onSpellEditCustom(void* data)
395{
396 glggHunSpell->editCustomButton();
397}
398
399void LLPrefsAdvanced::onSpellBaseComboBoxCommit(LLUICtrl* ctrl, void* userdata)
400{
401
402 LLComboBox* box = (LLComboBox*)ctrl;
403 if (box)
404 {
405 glggHunSpell->newDictSelection(box->getValue().asString());
406 //LLPanelEmerald* panel = (LLPanelEmerald*)userdata;//box->getParent();
407 if (sInstance)
408 {
409 sInstance->refresh();
410 }
411 }
412 //LLPanelEmerald* panel = (LLPanelEmerald*)userdata;
413 //if(panel)panel->refresh();
414}
415
416void LLPrefsAdvanced::onAutoCorrectButton(void * data)
417{
418 lggAutoCorrectFloaterStart::show(TRUE,data);
419}
420
421void LLPrefsAdvanced::onClickCommandLine(void* data)
422{
423 FloaterCommandLine::getInstance()->open();
424 FloaterCommandLine::getInstance()->center();
425} 292}
426 293
427void LLPrefsAdvanced::onResetThisCloudButton(void * data) 294void LLPrefsAdvanced::onResetThisCloudButton(void * data)
diff --git a/linden/indra/newview/llprefsadvanced.h b/linden/indra/newview/llprefsadvanced.h
index e4febcc..b863db3 100644
--- a/linden/indra/newview/llprefsadvanced.h
+++ b/linden/indra/newview/llprefsadvanced.h
@@ -51,30 +51,19 @@ private:
51 static LLPrefsAdvanced* sInstance; 51 static LLPrefsAdvanced* sInstance;
52 52
53 static void onCommitCheckBox(LLUICtrl* ctrl, void* user_data); 53 static void onCommitCheckBox(LLUICtrl* ctrl, void* user_data);
54 static void onClickCommandLine(void* data);
55
56 static void onSpellAdd(void* data);
57 static void onSpellRemove(void* data);
58 static void onSpellGetMore(void* data);
59 static void onSpellEditCustom(void* data);
60 static void onSpellBaseComboBoxCommit(LLUICtrl* ctrl, void* userdata);
61 static void onAutoCorrectButton(void * data);
62 static void onResetThisCloudButton(void * data); 54 static void onResetThisCloudButton(void * data);
63 static void onSaveThisCloudButton(void * data); 55 static void onSaveThisCloudButton(void * data);
64 static void onSaveAnyoneCloudButton(void * data); 56 static void onSaveAnyoneCloudButton(void * data);
65 57
66 LLColor4 mClientTagColor;
67
68protected: 58protected:
69 void setParticleControls(bool is_logged_in); 59 void setParticleControls(bool is_logged_in);
70 void initHelpBtn(const std::string& name, const std::string& xml_alert);
71 static void onClickHelp(void* data);
72 60
73private: 61private:
74 bool mWasLoggedIn; 62 bool mWasLoggedIn;
75 LLColor4 mCloudStartColor; 63 LLColor4 mCloudStartColor;
76 LLColor4 mCloudEndColor; 64 LLColor4 mCloudEndColor;
77 LLUUID mCloudTextureID; 65 LLUUID mCloudTextureID;
66 BOOL mWLControl;
78}; 67};
79 68
80#endif // LLPREFSADVANCED_H 69#endif // LLPREFSADVANCED_H
diff --git a/linden/indra/newview/llprefschat.cpp b/linden/indra/newview/llprefschat.cpp
index 5f74a25..9490ba2 100644
--- a/linden/indra/newview/llprefschat.cpp
+++ b/linden/indra/newview/llprefschat.cpp
@@ -33,13 +33,20 @@
33 33
34#include "llviewerprecompiledheaders.h" 34#include "llviewerprecompiledheaders.h"
35 35
36#include "llcombobox.h"
37#include "llpanel.h"
38#include "llstylemap.h"
39#include "lluictrlfactory.h"
40
41#include "floatercommandline.h"
42#include "llagent.h"
36#include "llchatbar.h" 43#include "llchatbar.h"
37#include "llfloaterchat.h" 44#include "llfloaterchat.h"
45#include "lgghunspell_wrapper.h"
46#include "lggautocorrectfloater.h"
38#include "llprefschat.h" 47#include "llprefschat.h"
39#include "llviewercontrol.h" 48#include "llviewercontrol.h"
40#include "lluictrlfactory.h" 49#include "llviewermessage.h"
41#include "llradiogroup.h"
42#include "llstylemap.h"
43 50
44class LLPrefsChatImpl : public LLPanel 51class LLPrefsChatImpl : public LLPanel
45{ 52{
@@ -47,44 +54,53 @@ public:
47 LLPrefsChatImpl(); 54 LLPrefsChatImpl();
48 /*virtual*/ ~LLPrefsChatImpl(){}; 55 /*virtual*/ ~LLPrefsChatImpl(){};
49 56
57 /*virtual*/ BOOL postBuild();
58
50 void apply(); 59 void apply();
51 void cancel(); 60 void cancel();
61 void refresh();
62 void setPersonalInfo(bool im_via_email, const std::string& email);
63 void initHelpBtn(const std::string& name, const std::string& xml_alert);
64
65 static void onAutoCorrectButton(void * data);
66 static void onClickHelp(void* data);
67 static void onClickCommandLine(void* data);
68 static void onCommitCheckBox(LLUICtrl* ctrl, void* user_data);
69 static void onSpellAdd(void* data);
70 static void onSpellRemove(void* data);
71 static void onSpellGetMore(void* data);
72 static void onSpellEditCustom(void* data);
73 static void onSpellBaseComboBoxCommit(LLUICtrl* ctrl, void* userdata);
74
75protected:
76 bool mOriginalIMViaEmail;
77 bool mGotPersonalInfo;
52 78
53private: 79private:
54 void refreshValues(); 80 bool mChatChannel;
55 S32 mChatSize;
56 F32 mChatPersist;
57 S32 mChatMaxLines;
58 BOOL mChatFullWidth;
59 BOOL mCloseChatOnReturn;
60 BOOL mArrowKeysMoveAvatar;
61 BOOL mShowTimestamps;
62 BOOL mPlayTypingAnim;
63 BOOL mChatBubbles;
64 BOOL mLocalChatBubbles;
65 BOOL mScriptErrorAsChat;
66 BOOL mChatChannel;
67 F32 mConsoleOpacity;
68 F32 mBubbleOpacity;
69 std::string mTranslateLanguage;
70 BOOL mTranslateChat;
71}; 81};
72 82
73LLPrefsChatImpl::LLPrefsChatImpl() 83LLPrefsChatImpl::LLPrefsChatImpl()
74 : LLPanel(std::string("Chat Panel")) 84 : LLPanel(std::string("Chat Panel")),
85 mChatChannel(false),
86 mOriginalIMViaEmail(false),
87 mGotPersonalInfo(false)
75{ 88{
76 refreshValues(); // initialize member data from saved settings
77
78 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_chat.xml"); 89 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_chat.xml");
90}
91
92BOOL LLPrefsChatImpl::postBuild()
93{
94 requires("send_im_to_email");
95 childSetLabelArg("send_im_to_email", "[EMAIL]", getString("log_in_to_change"));
96
97 // Don't enable these until we get personal data
98 childSetEnabled("send_im_to_email", false);
79 99
80 getChild<LLRadioGroup>("chat_font_size")->setSelectedIndex(gSavedSettings.getS32("ChatFontSize")); 100 getChild<LLComboBox>("chat_font_size")->setValue(gSavedSettings.getS32("ChatFontSize"));
81 childSetValue("fade_chat_time", gSavedSettings.getF32("ChatPersistTime")); 101 childSetValue("fade_chat_time", gSavedSettings.getF32("ChatPersistTime"));
82 childSetValue("max_chat_count", gSavedSettings.getS32("ConsoleMaxLines")); 102 childSetValue("max_chat_count", gSavedSettings.getS32("ConsoleMaxLines"));
83 103
84 childSetValue("arrow_keys_move_avatar_check", gSavedSettings.getBOOL("ArrowKeysMoveAvatar"));
85 childSetValue("show_timestamps_check", gSavedSettings.getBOOL("ChatShowTimestamps"));
86 childSetValue("script_errors_as_chat", gSavedSettings.getBOOL("ScriptErrorsAsChat"));
87
88 childSetValue("bubble_text_chat", gSavedSettings.getBOOL("UseChatBubbles")); 104 childSetValue("bubble_text_chat", gSavedSettings.getBOOL("UseChatBubbles"));
89 childSetValue("local_bubble_text_chat", gSavedSettings.getBOOL("UseLocalChatWithBubbles")); 105 childSetValue("local_bubble_text_chat", gSavedSettings.getBOOL("UseLocalChatWithBubbles"));
90 childSetValue("chat_full_width_check", gSavedSettings.getBOOL("ChatFullWidth")); 106 childSetValue("chat_full_width_check", gSavedSettings.getBOOL("ChatFullWidth"));
@@ -95,59 +111,89 @@ LLPrefsChatImpl::LLPrefsChatImpl()
95 childSetValue("bubble_chat_opacity", gSavedSettings.getF32("ChatBubbleOpacity")); 111 childSetValue("bubble_chat_opacity", gSavedSettings.getF32("ChatBubbleOpacity"));
96 childSetValue("translate_language_combobox", gSavedSettings.getString("TranslateLanguage")); 112 childSetValue("translate_language_combobox", gSavedSettings.getString("TranslateLanguage"));
97 childSetValue("translate_chat", gSavedSettings.getBOOL("TranslateChat")); 113 childSetValue("translate_chat", gSavedSettings.getBOOL("TranslateChat"));
98}
99 114
100void LLPrefsChatImpl::refreshValues()
101{
102 //set values
103 mChatSize = gSavedSettings.getS32("ChatFontSize");
104 mChatPersist = gSavedSettings.getF32("ChatPersistTime");
105 mChatMaxLines = gSavedSettings.getS32("ConsoleMaxLines");
106 mArrowKeysMoveAvatar = gSavedSettings.getBOOL("ArrowKeysMoveAvatar");
107 mShowTimestamps = gSavedSettings.getBOOL("ChatShowTimestamps");
108 mScriptErrorAsChat = gSavedSettings.getBOOL("ScriptErrorsAsChat");
109 mChatBubbles = gSavedSettings.getBOOL("UseChatBubbles");
110 mLocalChatBubbles = gSavedSettings.getBOOL("UseLocalChatWithBubbles");
111 mChatFullWidth = gSavedSettings.getBOOL("ChatFullWidth");
112 mCloseChatOnReturn = gSavedSettings.getBOOL("CloseChatOnReturn");
113 mPlayTypingAnim = gSavedSettings.getBOOL("PlayTypingAnim");
114 mChatChannel = gSavedSettings.getBOOL("ChatChannelSelect"); 115 mChatChannel = gSavedSettings.getBOOL("ChatChannelSelect");
115 mConsoleOpacity = gSavedSettings.getF32("ConsoleBackgroundOpacity"); 116
116 mTranslateLanguage = gSavedSettings.getString("TranslateLanguage"); 117 childSetValue("command_line_check", gSavedSettings.getBOOL("CmdLineChatbarEnabled"));
117 mTranslateChat = gSavedSettings.getBOOL("TranslateChat"); 118 childSetCommitCallback("command_line_check", onCommitCheckBox, this);
118 static F32* sChatBubbleOpacity = rebind_llcontrol<F32>("ChatBubbleOpacity", &gSavedSettings, true); 119 childSetAction("command_line_btn", onClickCommandLine, this);
119 mBubbleOpacity = *sChatBubbleOpacity; 120
121 getChild<LLComboBox>("EmeraldSpellBase")->setCommitCallback(onSpellBaseComboBoxCommit);
122 getChild<LLButton>("EmSpell_EditCustom")->setClickedCallback(onSpellEditCustom, this);
123 getChild<LLButton>("EmSpell_GetMore")->setClickedCallback(onSpellGetMore, this);
124 getChild<LLButton>("EmSpell_Add")->setClickedCallback(onSpellAdd, this);
125 getChild<LLButton>("EmSpell_Remove")->setClickedCallback(onSpellRemove, this);
126
127 getChild<LLButton>("ac_button")->setClickedCallback(onAutoCorrectButton, this);
128 initHelpBtn("EmeraldHelp_SpellCheck", "EmeraldHelp_SpellCheck");
129
130 childSetValue("include_im_in_chat_console", gSavedSettings.getBOOL("IMInChatConsole"));
131 childSetValue("include_im_in_chat_history", gSavedSettings.getBOOL("IMInChatHistory"));
132 childSetValue("vertical-imtabs-toggle", gSavedSettings.getBOOL("VerticalIMTabs"));
133
134 refresh();
135
136 return TRUE;
137}
138
139void LLPrefsChatImpl::refresh()
140{
141 if (childGetValue("command_line_check").asBoolean())
142 {
143 childEnable("command_line_btn");
144 }
145 else
146 {
147 childDisable("command_line_btn");
148 }
149
150 LLComboBox* comboBox = getChild<LLComboBox>("EmeraldSpellBase");
151 if (comboBox != NULL)
152 {
153 comboBox->removeall();
154 std::vector<std::string> names = glggHunSpell->getDicts();
155 for (int i = 0; i < (int)names.size(); i++)
156 {
157 comboBox->add(names[i]);
158 }
159 comboBox->setSimple(gSavedSettings.getString("EmeraldSpellBase"));
160 }
161 comboBox = getChild<LLComboBox>("EmSpell_Avail");
162 if (comboBox != NULL)
163 {
164 LLSD selected = comboBox->getSelectedValue();
165 comboBox->removeall();
166 std::vector<std::string> names = glggHunSpell->getAvailDicts();
167 for (int i = 0; i < (int)names.size(); i++)
168 {
169 comboBox->add(names[i]);
170 }
171 comboBox->selectByValue(selected);
172 }
173 comboBox = getChild<LLComboBox>("EmSpell_Installed");
174 if (comboBox != NULL)
175 {
176 LLSD selected = comboBox->getSelectedValue();
177 comboBox->removeall();
178 std::vector<std::string> names = glggHunSpell->getInstalledDicts();
179 for (int i = 0; i < (int)names.size(); i++)
180 {
181 comboBox->add(names[i]);
182 }
183 comboBox->selectByValue(selected);
184 }
120} 185}
121 186
122void LLPrefsChatImpl::cancel() 187void LLPrefsChatImpl::cancel()
123{ 188{
124 gSavedSettings.setS32("ChatFontSize", mChatSize);
125 gSavedSettings.setF32("ChatPersistTime", mChatPersist);
126 gSavedSettings.setS32("ConsoleMaxLines", mChatMaxLines);
127 gSavedSettings.setBOOL("ArrowKeysMoveAvatar", mArrowKeysMoveAvatar);
128 gSavedSettings.setBOOL("ChatShowTimestamps", mShowTimestamps);
129 gSavedSettings.setBOOL("ScriptErrorsAsChat", mScriptErrorAsChat);
130 gSavedSettings.setBOOL("UseChatBubbles", mChatBubbles);
131 gSavedSettings.setBOOL("UseLocalChatWithBubbles", mLocalChatBubbles);
132 gSavedSettings.setBOOL("ChatFullWidth", mChatFullWidth);
133 gSavedSettings.setBOOL("CloseChatOnReturn", mCloseChatOnReturn);
134 gSavedSettings.setBOOL("PlayTypingAnim", mPlayTypingAnim);
135 gSavedSettings.setBOOL("ChatChannelSelect", mChatChannel);
136 gSavedSettings.setF32("ConsoleBackgroundOpacity", mConsoleOpacity);
137 gSavedSettings.setF32("ChatBubbleOpacity", mBubbleOpacity);
138 gSavedSettings.setString("TranslateLanguage", mTranslateLanguage);
139 gSavedSettings.setBOOL("TranslateChat", mTranslateChat);
140} 189}
141 190
142void LLPrefsChatImpl::apply() 191void LLPrefsChatImpl::apply()
143{ 192{
144 gSavedSettings.setS32("ChatFontSize", getChild<LLRadioGroup>("chat_font_size")->getSelectedIndex()); 193 gSavedSettings.setS32("ChatFontSize", getChild<LLComboBox>("chat_font_size")->getValue().asInteger());
145 gSavedSettings.setF32("ChatPersistTime", childGetValue("fade_chat_time").asReal()); 194 gSavedSettings.setF32("ChatPersistTime", childGetValue("fade_chat_time").asReal());
146 gSavedSettings.setS32("ConsoleMaxLines", childGetValue("max_chat_count")); 195 gSavedSettings.setS32("ConsoleMaxLines", childGetValue("max_chat_count"));
147 196
148 gSavedSettings.setBOOL("ArrowKeysMoveAvatar", childGetValue("arrow_keys_move_avatar_check"));
149 gSavedSettings.setBOOL("ChatShowTimestamps", childGetValue("show_timestamps_check"));
150 gSavedSettings.setBOOL("ScriptErrorsAsChat", childGetValue("script_errors_as_chat"));
151 gSavedSettings.setBOOL("UseChatBubbles", childGetValue("bubble_text_chat")); 197 gSavedSettings.setBOOL("UseChatBubbles", childGetValue("bubble_text_chat"));
152 gSavedSettings.setBOOL("UseLocalChatWithBubbles", childGetValue("local_bubble_text_chat")); 198 gSavedSettings.setBOOL("UseLocalChatWithBubbles", childGetValue("local_bubble_text_chat"));
153 gSavedSettings.setBOOL("ChatFullWidth", childGetValue("chat_full_width_check")); 199 gSavedSettings.setBOOL("ChatFullWidth", childGetValue("chat_full_width_check"));
@@ -160,7 +206,7 @@ void LLPrefsChatImpl::apply()
160 gSavedSettings.setString("TranslateLanguage", childGetValue("translate_language_combobox")); 206 gSavedSettings.setString("TranslateLanguage", childGetValue("translate_language_combobox"));
161 gSavedSettings.setBOOL("TranslateChat", childGetValue("translate_chat")); 207 gSavedSettings.setBOOL("TranslateChat", childGetValue("translate_chat"));
162 208
163 BOOL chan_check = childGetValue("toggle_channel_control"); 209 bool chan_check = childGetValue("toggle_channel_control");
164 gSavedSettings.setBOOL("ChatChannelSelect", chan_check); 210 gSavedSettings.setBOOL("ChatChannelSelect", chan_check);
165 if (mChatChannel != chan_check) 211 if (mChatChannel != chan_check)
166 { 212 {
@@ -172,7 +218,138 @@ void LLPrefsChatImpl::apply()
172 mChatChannel = chan_check; 218 mChatChannel = chan_check;
173 } 219 }
174 220
175 refreshValues(); // member values become the official values and cancel becomes a no-op. 221 gSavedSettings.setBOOL("CmdLineChatbarEnabled", childGetValue("command_line_check").asBoolean());
222
223 gSavedSettings.setBOOL("VerticalIMTabs", childGetValue("vertical-imtabs-toggle").asBoolean());
224 gSavedSettings.setBOOL("IMInChatConsole", childGetValue("include_im_in_chat_console").asBoolean());
225 gSavedSettings.setBOOL("IMInChatHistory", childGetValue("include_im_in_chat_history").asBoolean());
226
227 if (mGotPersonalInfo)
228 {
229 bool new_im_via_email = childGetValue("send_im_to_email").asBoolean();
230
231 if (new_im_via_email != mOriginalIMViaEmail)
232 {
233 LLMessageSystem* msg = gMessageSystem;
234 msg->newMessageFast(_PREHASH_UpdateUserInfo);
235 msg->nextBlockFast(_PREHASH_AgentData);
236 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
237 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
238 msg->nextBlockFast(_PREHASH_UserData);
239 msg->addBOOLFast(_PREHASH_IMViaEMail, new_im_via_email);
240 gAgent.sendReliableMessage();
241 }
242 }
243
244 // Spell checking prefs aren't here because Emerald never supported the cancel button. We should fix this -- MC
245}
246
247// Enable and set the value of settings recieved from the sim in AgentInfoReply
248void LLPrefsChatImpl::setPersonalInfo(bool im_via_email, const std::string& email)
249{
250 mGotPersonalInfo = true;
251 mOriginalIMViaEmail = im_via_email;
252
253 childEnable("send_im_to_email");
254 childSetValue("send_im_to_email", im_via_email);
255
256 // Truncate the e-mail address if it's too long (to prevent going off
257 // the edge of the dialog).
258 std::string display_email(email);
259 if(display_email.size() > 30)
260 {
261 display_email.resize(30);
262 display_email += "...";
263 }
264 else if (display_email.empty())
265 {
266 display_email = getString("default_email_used");
267 }
268 childSetLabelArg("send_im_to_email", "[EMAIL]", display_email);
269}
270
271// static
272void LLPrefsChatImpl::onSpellAdd(void* data)
273{
274 LLPrefsChatImpl* panel = (LLPrefsChatImpl*)data;
275 if (panel)
276 {
277 glggHunSpell->addButton(panel->childGetValue("EmSpell_Avail").asString());
278 panel->refresh();
279 }
280}
281
282// static
283void LLPrefsChatImpl::onSpellRemove(void* data)
284{
285 LLPrefsChatImpl* panel = (LLPrefsChatImpl*)data;
286 if (panel)
287 {
288 glggHunSpell->removeButton(panel->childGetValue("EmSpell_Installed").asString());
289 panel->refresh();
290 }
291}
292
293// static
294void LLPrefsChatImpl::onSpellGetMore(void* data)
295{
296 glggHunSpell->getMoreButton(data);
297}
298
299// static
300void LLPrefsChatImpl::onSpellEditCustom(void* data)
301{
302 glggHunSpell->editCustomButton();
303}
304
305// static
306void LLPrefsChatImpl::onSpellBaseComboBoxCommit(LLUICtrl* ctrl, void* userdata)
307{
308 LLComboBox* box = (LLComboBox*)ctrl;
309 if (box)
310 {
311 glggHunSpell->newDictSelection(box->getValue().asString());
312 }
313 LLPrefsChatImpl* panel = (LLPrefsChatImpl*)userdata;
314 if (panel)
315 {
316 panel->refresh();
317 }
318}
319
320// static
321void LLPrefsChatImpl::onAutoCorrectButton(void * data)
322{
323 lggAutoCorrectFloaterStart::show(TRUE,data);
324}
325
326// static
327void LLPrefsChatImpl::onClickCommandLine(void* data)
328{
329 FloaterCommandLine::getInstance()->open();
330 FloaterCommandLine::getInstance()->center();
331}
332
333//static
334void LLPrefsChatImpl::onCommitCheckBox(LLUICtrl* ctrl, void* user_data)
335{
336 LLPrefsChatImpl* self = (LLPrefsChatImpl*)user_data;
337 if (self)
338 {
339 self->refresh();
340 }
341}
342
343void LLPrefsChatImpl::initHelpBtn(const std::string& name, const std::string& xml_alert)
344{
345 childSetAction(name, onClickHelp, new std::string(xml_alert));
346}
347
348// static
349void LLPrefsChatImpl::onClickHelp(void* data)
350{
351 std::string* xml_alert = (std::string*)data;
352 LLNotifications::instance().add(*xml_alert);
176} 353}
177 354
178//--------------------------------------------------------------------------- 355//---------------------------------------------------------------------------
@@ -197,6 +374,11 @@ void LLPrefsChat::cancel()
197 impl.cancel(); 374 impl.cancel();
198} 375}
199 376
377void LLPrefsChat::setPersonalInfo(bool im_via_email, const std::string& email)
378{
379 impl.setPersonalInfo(im_via_email, email);
380}
381
200LLPanel* LLPrefsChat::getPanel() 382LLPanel* LLPrefsChat::getPanel()
201{ 383{
202 return &impl; 384 return &impl;
diff --git a/linden/indra/newview/llprefschat.h b/linden/indra/newview/llprefschat.h
index 86718a8..64bfb36 100644
--- a/linden/indra/newview/llprefschat.h
+++ b/linden/indra/newview/llprefschat.h
@@ -44,6 +44,7 @@ public:
44 44
45 void apply(); 45 void apply();
46 void cancel(); 46 void cancel();
47 void setPersonalInfo(bool im_via_email, const std::string& email);
47 48
48 LLPanel* getPanel(); 49 LLPanel* getPanel();
49 50
diff --git a/linden/indra/newview/llprefscolors.cpp b/linden/indra/newview/llprefscolors.cpp
index b0bc345..0b4caf5 100644
--- a/linden/indra/newview/llprefscolors.cpp
+++ b/linden/indra/newview/llprefscolors.cpp
@@ -80,6 +80,12 @@ BOOL LLPrefsColors::postBuild()
80 childSetCommitCallback("HighlightOwnNameInChat", onCommitCheckSelfName, this); 80 childSetCommitCallback("HighlightOwnNameInChat", onCommitCheckSelfName, this);
81 childSetCommitCallback("HighlightFriendsChat", onCommitCheckFriends, this); 81 childSetCommitCallback("HighlightFriendsChat", onCommitCheckFriends, this);
82 82
83 getChild<LLColorSwatchCtrl>("effect_color_swatch")->set(gSavedSettings.getColor4("EffectColor"));
84
85 getChild<LLColorSwatchCtrl>("client_tag_color")->set(gSavedSettings.getColor4("ImprudenceTagColor"));
86 static BOOL* sShowClientColor = rebind_llcontrol<BOOL>("ShowClientColor", &gSavedSettings, true);
87 childSetValue("client_name_color_check", (*sShowClientColor));
88
83 return TRUE; 89 return TRUE;
84} 90}
85 91
@@ -96,6 +102,8 @@ void LLPrefsColors::refreshColors()
96 mHTMLLinkColor = gSavedSettings.getColor4("HTMLLinkColor"); 102 mHTMLLinkColor = gSavedSettings.getColor4("HTMLLinkColor");
97 mFriendsChatColor = gSavedSettings.getColor4("FriendsChatColor"); 103 mFriendsChatColor = gSavedSettings.getColor4("FriendsChatColor");
98 mOwnNameChatColor = gSavedSettings.getColor4("OwnNameChatColor"); 104 mOwnNameChatColor = gSavedSettings.getColor4("OwnNameChatColor");
105 mEffectColor = gSavedSettings.getColor4("EffectColor");
106 mClientTagColor = gSavedSettings.getColor4("ImprudenceTagColor");
99} 107}
100 108
101// static 109// static
@@ -113,9 +121,6 @@ void LLPrefsColors::updateSelfCheck()
113 childSetEnabled("nick01", highlight_names_enabled); 121 childSetEnabled("nick01", highlight_names_enabled);
114 childSetEnabled("nick02", highlight_names_enabled); 122 childSetEnabled("nick02", highlight_names_enabled);
115 childSetEnabled("nick03", highlight_names_enabled); 123 childSetEnabled("nick03", highlight_names_enabled);
116 childSetEnabled("nick01_text", highlight_names_enabled);
117 childSetEnabled("nick02_text", highlight_names_enabled);
118 childSetEnabled("nick03_text", highlight_names_enabled);
119} 124}
120 125
121// static 126// static
@@ -130,6 +135,18 @@ void LLPrefsColors::updateFriendsCheck()
130 getChild<LLColorSwatchCtrl>("FriendsChatColor")->setEnabled(childGetValue("HighlightFriendsChat")); 135 getChild<LLColorSwatchCtrl>("FriendsChatColor")->setEnabled(childGetValue("HighlightFriendsChat"));
131} 136}
132 137
138// static
139void LLPrefsColors::onCommitCheckClient(LLUICtrl* ctrl, void* userdata)
140{
141 LLPrefsColors* self = (LLPrefsColors*)userdata;
142 self->updateClientCheck();
143}
144
145void LLPrefsColors::updateClientCheck()
146{
147 getChild<LLColorSwatchCtrl>("client_tag_color")->setEnabled(childGetValue("client_name_color_checkt"));
148}
149
133void LLPrefsColors::cancel() 150void LLPrefsColors::cancel()
134{ 151{
135 gSavedSettings.setColor4("SystemChatColor", mSystemChatColor); 152 gSavedSettings.setColor4("SystemChatColor", mSystemChatColor);
@@ -143,6 +160,8 @@ void LLPrefsColors::cancel()
143 gSavedSettings.setColor4("HTMLLinkColor", mHTMLLinkColor); 160 gSavedSettings.setColor4("HTMLLinkColor", mHTMLLinkColor);
144 gSavedSettings.setColor4("FriendsChatColor", mFriendsChatColor); 161 gSavedSettings.setColor4("FriendsChatColor", mFriendsChatColor);
145 gSavedSettings.setColor4("OwnNameChatColor", mOwnNameChatColor); 162 gSavedSettings.setColor4("OwnNameChatColor", mOwnNameChatColor);
163 gSavedSettings.setColor4("EffectColor", mEffectColor);
164 gSavedSettings.setColor4("ImprudenceTagColor", mClientTagColor);
146} 165}
147 166
148void LLPrefsColors::apply() 167void LLPrefsColors::apply()
@@ -177,5 +196,10 @@ void LLPrefsColors::apply()
177 boost::trim(nick03); 196 boost::trim(nick03);
178 gSavedSettings.setString("HighlightNickname03", nick03); 197 gSavedSettings.setString("HighlightNickname03", nick03);
179 198
199 gSavedSettings.setColor4("EffectColor", childGetValue("effect_color_swatch"));
200
201 gSavedSettings.setBOOL("ShowClientColor", childGetValue("client_name_color_check"));
202 gSavedSettings.setColor4("ImprudenceTagColor", getChild<LLColorSwatchCtrl>("client_tag_color")->get());
203
180 refreshColors(); // member values become the official values and cancel becomes a no-op. 204 refreshColors(); // member values become the official values and cancel becomes a no-op.
181} 205}
diff --git a/linden/indra/newview/llprefscolors.h b/linden/indra/newview/llprefscolors.h
index 70bda89..d580add 100644
--- a/linden/indra/newview/llprefscolors.h
+++ b/linden/indra/newview/llprefscolors.h
@@ -47,9 +47,11 @@ public:
47private: 47private:
48 static void onCommitCheckSelfName(LLUICtrl* ctrl, void* userdata); 48 static void onCommitCheckSelfName(LLUICtrl* ctrl, void* userdata);
49 static void onCommitCheckFriends(LLUICtrl* ctrl, void* userdata); 49 static void onCommitCheckFriends(LLUICtrl* ctrl, void* userdata);
50 static void onCommitCheckClient(LLUICtrl* ctrl, void* userdata);
50 void refreshColors(); 51 void refreshColors();
51 void updateFriendsCheck(); 52 void updateFriendsCheck();
52 void updateSelfCheck(); 53 void updateSelfCheck();
54 void updateClientCheck();
53 55
54 LLColor4 mSystemChatColor; 56 LLColor4 mSystemChatColor;
55 LLColor4 mUserChatColor; 57 LLColor4 mUserChatColor;
@@ -62,6 +64,8 @@ private:
62 LLColor4 mHTMLLinkColor; 64 LLColor4 mHTMLLinkColor;
63 LLColor4 mFriendsChatColor; 65 LLColor4 mFriendsChatColor;
64 LLColor4 mOwnNameChatColor; 66 LLColor4 mOwnNameChatColor;
67 LLColor4 mEffectColor;
68 LLColor4 mClientTagColor;
65}; 69};
66 70
67#endif //LLPREFSCOLORS_H 71#endif //LLPREFSCOLORS_H
diff --git a/linden/indra/newview/llprefsim.cpp b/linden/indra/newview/llprefsim.cpp
index ddf027f..53be673 100644
--- a/linden/indra/newview/llprefsim.cpp
+++ b/linden/indra/newview/llprefsim.cpp
@@ -66,7 +66,7 @@ public:
66 66
67 void apply(); 67 void apply();
68 void cancel(); 68 void cancel();
69 void setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email); 69 void setPersonalInfo(const std::string& visibility);
70 void preparePerAccountPrefs(bool enable); 70 void preparePerAccountPrefs(bool enable);
71 void enableHistory(); 71 void enableHistory();
72 72
@@ -80,7 +80,6 @@ protected:
80 80
81 bool mGotPersonalInfo; 81 bool mGotPersonalInfo;
82 bool mGotPerAccountSettings; 82 bool mGotPerAccountSettings;
83 bool mOriginalIMViaEmail;
84 83
85 bool mOriginalHideOnlineStatus; 84 bool mOriginalHideOnlineStatus;
86 std::string mDirectoryVisibility; 85 std::string mDirectoryVisibility;
@@ -91,7 +90,6 @@ LLPrefsIMImpl::LLPrefsIMImpl()
91 : LLPanel(std::string("IM Prefs Panel")), 90 : LLPanel(std::string("IM Prefs Panel")),
92 mGotPersonalInfo(false), 91 mGotPersonalInfo(false),
93 mGotPerAccountSettings(false), 92 mGotPerAccountSettings(false),
94 mOriginalIMViaEmail(false),
95 mOriginalHideOnlineStatus(false) 93 mOriginalHideOnlineStatus(false)
96{ 94{
97 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_im.xml"); 95 LLUICtrlFactory::getInstance()->buildPanel(this, "panel_preferences_im.xml");
@@ -104,29 +102,14 @@ void LLPrefsIMImpl::cancel()
104BOOL LLPrefsIMImpl::postBuild() 102BOOL LLPrefsIMImpl::postBuild()
105{ 103{
106 requires("online_visibility"); 104 requires("online_visibility");
107 requires("send_im_to_email"); 105
108 if (!checkRequirements()) 106 if (!checkRequirements())
109 { 107 {
110 return FALSE; 108 return FALSE;
111 } 109 }
112 110
113 childSetLabelArg("send_im_to_email", "[EMAIL]", getString("log_in_to_change")); 111 // Don't enable this until we get personal data
114
115 // Don't enable these until we get personal data
116 childSetEnabled("online_visibility", false); 112 childSetEnabled("online_visibility", false);
117 childSetEnabled("send_im_to_email", false);
118
119 // These are safe to enable
120 childSetEnabled("include_im_in_chat_console", true);
121 childSetEnabled("include_im_in_chat_history", true);
122 childSetEnabled("show_timestamps_check", true);
123 childSetEnabled("friends_online_notify_checkbox", true);
124 childSetEnabled("vertical-imtabs-toggle", true);
125 childSetValue("include_im_in_chat_console", gSavedSettings.getBOOL("IMInChatConsole"));
126 childSetValue("include_im_in_chat_history", gSavedSettings.getBOOL("IMInChatHistory"));
127 childSetValue("show_timestamps_check", gSavedSettings.getBOOL("IMShowTimestamps"));
128 childSetValue("friends_online_notify_checkbox", gSavedSettings.getBOOL("ChatOnlineNotification"));
129 childSetValue("vertical-imtabs-toggle", gSavedSettings.getBOOL("VerticalIMTabs"));
130 113
131 childSetAction("log_path_button", onClickLogPath, this); 114 childSetAction("log_path_button", onClickLogPath, this);
132 childSetCommitCallback("log_chat",onCommitLogging,this); 115 childSetCommitCallback("log_chat",onCommitLogging,this);
@@ -194,11 +177,9 @@ void LLPrefsIMImpl::apply()
194 177
195 if (mGotPersonalInfo) 178 if (mGotPersonalInfo)
196 { 179 {
197 bool new_im_via_email = childGetValue("send_im_to_email").asBoolean();
198 bool new_hide_online = childGetValue("online_visibility").asBoolean(); 180 bool new_hide_online = childGetValue("online_visibility").asBoolean();
199 181
200 if((new_im_via_email != mOriginalIMViaEmail) 182 if (new_hide_online != mOriginalHideOnlineStatus)
201 ||(new_hide_online != mOriginalHideOnlineStatus))
202 { 183 {
203 LLMessageSystem* msg = gMessageSystem; 184 LLMessageSystem* msg = gMessageSystem;
204 msg->newMessageFast(_PREHASH_UpdateUserInfo); 185 msg->newMessageFast(_PREHASH_UpdateUserInfo);
@@ -206,7 +187,7 @@ void LLPrefsIMImpl::apply()
206 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); 187 msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
207 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); 188 msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
208 msg->nextBlockFast(_PREHASH_UserData); 189 msg->nextBlockFast(_PREHASH_UserData);
209 msg->addBOOLFast(_PREHASH_IMViaEMail, new_im_via_email); 190 //msg->addBOOLFast(_PREHASH_IMViaEMail, new_im_via_email);
210 // This hack is because we are representing several different 191 // This hack is because we are representing several different
211 // possible strings with a single checkbox. Since most users 192 // possible strings with a single checkbox. Since most users
212 // can only select between 2 values, we represent it as a 193 // can only select between 2 values, we represent it as a
@@ -223,19 +204,12 @@ void LLPrefsIMImpl::apply()
223 gAgent.sendReliableMessage(); 204 gAgent.sendReliableMessage();
224 } 205 }
225 } 206 }
226
227 gSavedSettings.setBOOL("VerticalIMTabs", childGetValue("vertical-imtabs-toggle").asBoolean());
228 gSavedSettings.setBOOL("IMInChatConsole", childGetValue("include_im_in_chat_console").asBoolean());
229 gSavedSettings.setBOOL("IMInChatHistory", childGetValue("include_im_in_chat_history").asBoolean());
230 gSavedSettings.setBOOL("IMShowTimestamps", childGetValue("show_timestamps_check").asBoolean());
231 gSavedSettings.setBOOL("ChatOnlineNotification", childGetValue("friends_online_notify_checkbox").asBoolean());
232} 207}
233 208
234// Enable and set the value of settings recieved from the sim in AgentInfoReply 209// Enable and set the value of settings recieved from the sim in AgentInfoReply
235void LLPrefsIMImpl::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email) 210void LLPrefsIMImpl::setPersonalInfo(const std::string& visibility)
236{ 211{
237 mGotPersonalInfo = true; 212 mGotPersonalInfo = true;
238 mOriginalIMViaEmail = im_via_email;
239 mDirectoryVisibility = visibility; 213 mDirectoryVisibility = visibility;
240 214
241 if(visibility == VISIBILITY_DEFAULT) 215 if(visibility == VISIBILITY_DEFAULT)
@@ -255,22 +229,6 @@ void LLPrefsIMImpl::setPersonalInfo(const std::string& visibility, bool im_via_e
255 229
256 childSetValue("online_visibility", mOriginalHideOnlineStatus); 230 childSetValue("online_visibility", mOriginalHideOnlineStatus);
257 childSetLabelArg("online_visibility", "[DIR_VIS]", mDirectoryVisibility); 231 childSetLabelArg("online_visibility", "[DIR_VIS]", mDirectoryVisibility);
258 childEnable("send_im_to_email");
259 childSetValue("send_im_to_email", im_via_email);
260
261 // Truncate the e-mail address if it's too long (to prevent going off
262 // the edge of the dialog).
263 std::string display_email(email);
264 if(display_email.size() > 30)
265 {
266 display_email.resize(30);
267 display_email += "...";
268 }
269 else if (display_email.empty())
270 {
271 display_email = getString("default_email_used");
272 }
273 childSetLabelArg("send_im_to_email", "[EMAIL]", display_email);
274} 232}
275 233
276// Enable and set the value of settings that need an account name 234// Enable and set the value of settings that need an account name
@@ -383,9 +341,9 @@ void LLPrefsIM::cancel()
383 impl.cancel(); 341 impl.cancel();
384} 342}
385 343
386void LLPrefsIM::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email) 344void LLPrefsIM::setPersonalInfo(const std::string& visibility)
387{ 345{
388 impl.setPersonalInfo(visibility, im_via_email, email); 346 impl.setPersonalInfo(visibility);
389} 347}
390 348
391void LLPrefsIM::preparePerAccountPrefs(bool enable) 349void LLPrefsIM::preparePerAccountPrefs(bool enable)
diff --git a/linden/indra/newview/llprefsim.h b/linden/indra/newview/llprefsim.h
index acf9b0f..054e4c7 100644
--- a/linden/indra/newview/llprefsim.h
+++ b/linden/indra/newview/llprefsim.h
@@ -45,7 +45,7 @@ public:
45 45
46 void apply(); 46 void apply();
47 void cancel(); 47 void cancel();
48 void setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email); 48 void setPersonalInfo(const std::string& visibility);
49 void preparePerAccountPrefs(bool enable); 49 void preparePerAccountPrefs(bool enable);
50 50
51 LLPanel* getPanel(); 51 LLPanel* getPanel();
diff --git a/linden/indra/newview/llprefsvoice.cpp b/linden/indra/newview/llprefsvoice.cpp
index 7c50f4a..0e8e816 100644
--- a/linden/indra/newview/llprefsvoice.cpp
+++ b/linden/indra/newview/llprefsvoice.cpp
@@ -153,8 +153,8 @@ void LLPrefsVoice::apply()
153 if (enable_voice && !gSavedSettings.getBOOL("VivoxLicenseAccepted")) 153 if (enable_voice && !gSavedSettings.getBOOL("VivoxLicenseAccepted"))
154 { 154 {
155 // This window enables voice chat if license is accepted 155 // This window enables voice chat if license is accepted
156 FloaterVoiceLicense::getInstance()->open(); 156 FloaterVoiceLicense::getInstance()->open();
157 FloaterVoiceLicense::getInstance()->center(); 157 FloaterVoiceLicense::getInstance()->center();
158 } 158 }
159 else 159 else
160 { 160 {
@@ -189,6 +189,8 @@ void LLPrefsVoice::onCommitEnableVoiceChat(LLUICtrl* ctrl, void* user_data)
189 self->childSetEnabled("push_to_talk_label", enable); 189 self->childSetEnabled("push_to_talk_label", enable);
190 self->childSetEnabled("voice_call_friends_only_check", enable); 190 self->childSetEnabled("voice_call_friends_only_check", enable);
191 self->childSetEnabled("auto_disengage_mic_check", enable); 191 self->childSetEnabled("auto_disengage_mic_check", enable);
192 self->childSetEnabled("privacy_heading", enable);
193 self->childSetEnabled("push_to_talk_heading", enable);
192 self->childSetEnabled("push_to_talk_toggle_check", enable); 194 self->childSetEnabled("push_to_talk_toggle_check", enable);
193 self->childSetEnabled("ear_location", enable); 195 self->childSetEnabled("ear_location", enable);
194 self->childSetEnabled("set_voice_hotkey_button", enable); 196 self->childSetEnabled("set_voice_hotkey_button", enable);
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp
index 89c944d..428596b 100644
--- a/linden/indra/newview/llstartup.cpp
+++ b/linden/indra/newview/llstartup.cpp
@@ -191,7 +191,7 @@
191#include "llwaterparammanager.h" 191#include "llwaterparammanager.h"
192#include "llagentlanguage.h" 192#include "llagentlanguage.h"
193#include "llsocks5.h" 193#include "llsocks5.h"
194#include "viewerversion.h" 194#include "viewerinfo.h"
195 195
196#include "lgghunspell_wrapper.h" 196#include "lgghunspell_wrapper.h"
197#include "jcfloater_animation_list.h" 197#include "jcfloater_animation_list.h"
@@ -539,9 +539,9 @@ bool idle_startup()
539 if(!start_messaging_system( 539 if(!start_messaging_system(
540 message_template_path, 540 message_template_path,
541 port, 541 port,
542 ViewerVersion::getLLMajorVersion(), 542 ViewerInfo::versionMajor(),
543 ViewerVersion::getLLMinorVersion(), 543 ViewerInfo::versionMinor(),
544 ViewerVersion::getLLPatchVersion(), 544 ViewerInfo::versionPatch(),
545 FALSE, 545 FALSE,
546 std::string(), 546 std::string(),
547 responder, 547 responder,
@@ -1891,8 +1891,7 @@ bool idle_startup()
1891 tmp = LLUserAuth::getInstance()->getResponse("max-agent-groups"); 1891 tmp = LLUserAuth::getInstance()->getResponse("max-agent-groups");
1892 if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setMaxAgentGroups(atoi(tmp.c_str())); 1892 if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setMaxAgentGroups(atoi(tmp.c_str()));
1893 1893
1894 tmp = LLUserAuth::getInstance()->getResponse("VoiceConnector"); 1894
1895 if (!tmp.empty()) gHippoGridManager->getConnectedGrid()->setVoiceConnector(tmp);
1896 gHippoGridManager->saveFile(); 1895 gHippoGridManager->saveFile();
1897 gHippoLimits->setLimits(); 1896 gHippoLimits->setLimits();
1898 1897
@@ -1938,8 +1937,7 @@ bool idle_startup()
1938 } 1937 }
1939 // else llwarns << "MapServerURL empty"<< llendl; 1938 // else llwarns << "MapServerURL empty"<< llendl;
1940 1939
1941 // Pass the user information to the voice chat server interface. 1940
1942 gVoiceClient->userAuthorized(firstname, lastname, gAgentID);
1943 } 1941 }
1944 else // if(successful_login) 1942 else // if(successful_login)
1945 { 1943 {
@@ -2072,6 +2070,7 @@ bool idle_startup()
2072 LL_DEBUGS("AppInitStartupState") << "STATE_SEED_CAP_GRANTED" << LL_ENDL; 2070 LL_DEBUGS("AppInitStartupState") << "STATE_SEED_CAP_GRANTED" << LL_ENDL;
2073 update_texture_fetch(); 2071 update_texture_fetch();
2074 2072
2073
2075 if ( gViewerWindow != NULL) 2074 if ( gViewerWindow != NULL)
2076 { // This isn't the first logon attempt, so show the UI 2075 { // This isn't the first logon attempt, so show the UI
2077 gViewerWindow->setNormalControlsVisible( TRUE ); 2076 gViewerWindow->setNormalControlsVisible( TRUE );
@@ -2130,6 +2129,9 @@ bool idle_startup()
2130 // 2129 //
2131 LL_INFOS("AppInit") << "Initializing communications..." << LL_ENDL; 2130 LL_INFOS("AppInit") << "Initializing communications..." << LL_ENDL;
2132 2131
2132 // Pass the user information to the voice chat server interface.
2133 gVoiceClient->userAuthorized(firstname, lastname, gAgentID);
2134
2133 // register callbacks for messages. . . do this after initial handshake to make sure that we don't catch any unwanted 2135 // register callbacks for messages. . . do this after initial handshake to make sure that we don't catch any unwanted
2134 register_viewer_callbacks(gMessageSystem); 2136 register_viewer_callbacks(gMessageSystem);
2135 2137
@@ -2149,7 +2151,7 @@ bool idle_startup()
2149 gCacheName->addObserver(callback_cache_name); 2151 gCacheName->addObserver(callback_cache_name);
2150 2152
2151 // Load stored cache if possible 2153 // Load stored cache if possible
2152 LLAppViewer::instance()->loadNameCache(); 2154 LLAppViewer::instance()->loadNameCache();
2153 2155
2154 // Start cache in not-running state until we figure out if we have 2156 // Start cache in not-running state until we figure out if we have
2155 // capabilities for display name lookup 2157 // capabilities for display name lookup
diff --git a/linden/indra/newview/lltexturecache.cpp b/linden/indra/newview/lltexturecache.cpp
index 5dc1018..d33d507 100644
--- a/linden/indra/newview/lltexturecache.cpp
+++ b/linden/indra/newview/lltexturecache.cpp
@@ -1207,6 +1207,7 @@ void LLTextureCache::readHeaderCache()
1207 { 1207 {
1208 purge_list.insert(iter->second); 1208 purge_list.insert(iter->second);
1209 } 1209 }
1210 llassert_always(purge_list.size() >= entries_to_purge);
1210 } 1211 }
1211 else 1212 else
1212 { 1213 {
diff --git a/linden/indra/newview/lltexturectrl.cpp b/linden/indra/newview/lltexturectrl.cpp
index ccc3ab2..e58b0b4 100644
--- a/linden/indra/newview/lltexturectrl.cpp
+++ b/linden/indra/newview/lltexturectrl.cpp
@@ -1304,6 +1304,7 @@ public:
1304 1304
1305BOOL LLTextureCtrl::handleHover(S32 x, S32 y, MASK mask) 1305BOOL LLTextureCtrl::handleHover(S32 x, S32 y, MASK mask)
1306{ 1306{
1307 if (!getEnabled()) { return FALSE; }
1307 getWindow()->setCursor(UI_CURSOR_HAND); 1308 getWindow()->setCursor(UI_CURSOR_HAND);
1308 return TRUE; 1309 return TRUE;
1309} 1310}
@@ -1311,6 +1312,7 @@ BOOL LLTextureCtrl::handleHover(S32 x, S32 y, MASK mask)
1311 1312
1312BOOL LLTextureCtrl::handleMouseDown(S32 x, S32 y, MASK mask) 1313BOOL LLTextureCtrl::handleMouseDown(S32 x, S32 y, MASK mask)
1313{ 1314{
1315 if (!getEnabled()) { return FALSE; }
1314 BOOL handled = LLUICtrl::handleMouseDown( x, y , mask ); 1316 BOOL handled = LLUICtrl::handleMouseDown( x, y , mask );
1315 if( handled ) 1317 if( handled )
1316 { 1318 {
@@ -1421,6 +1423,8 @@ BOOL LLTextureCtrl::handleDragAndDrop(S32 x, S32 y, MASK mask,
1421 EAcceptance *accept, 1423 EAcceptance *accept,
1422 std::string& tooltip_msg) 1424 std::string& tooltip_msg)
1423{ 1425{
1426 if (!getEnabled()) { return FALSE; }
1427
1424 BOOL handled = FALSE; 1428 BOOL handled = FALSE;
1425 1429
1426 // this downcast may be invalid - but if the second test below 1430 // this downcast may be invalid - but if the second test below
diff --git a/linden/indra/newview/lltexturefetch.cpp b/linden/indra/newview/lltexturefetch.cpp
index ab867a6..bdad2b8 100644
--- a/linden/indra/newview/lltexturefetch.cpp
+++ b/linden/indra/newview/lltexturefetch.cpp
@@ -874,15 +874,6 @@ bool LLTextureFetchWorker::doWork(S32 param)
874 } 874 }
875 } 875 }
876 876
877 // *TODO: remove this hack when not needed anymore
878 S32 buggy_range_fudge = 0;
879 if (LLTextureFetch::hasBuggyHTTPRange())
880 {
881 buggy_range_fudge = 1;
882 resetFormattedData(); // discard any previous data we had
883 cur_size = 0 ;
884 }
885
886 mRequestedSize = mDesiredSize; 877 mRequestedSize = mDesiredSize;
887 mRequestedDiscard = mDesiredDiscard; 878 mRequestedDiscard = mDesiredDiscard;
888 mRequestedSize -= cur_size; 879 mRequestedSize -= cur_size;
@@ -898,7 +889,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
898 mGetReason.clear(); 889 mGetReason.clear();
899 LL_DEBUGS("TextureFetch") << "HTTP GET: " << mID << " Offset: " << offset 890 LL_DEBUGS("TextureFetch") << "HTTP GET: " << mID << " Offset: " << offset
900 << " Bytes: " << mRequestedSize 891 << " Bytes: " << mRequestedSize
901 << " Range: " << offset << "-" << offset+mRequestedSize-1+buggy_range_fudge 892 << " Range: " << offset << "-" << offset+mRequestedSize-1
902 << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << max_bandwidth 893 << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << max_bandwidth
903 << LL_ENDL; 894 << LL_ENDL;
904 setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority); 895 setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
@@ -908,7 +899,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
908 // Will call callbackHttpGet when curl request completes 899 // Will call callbackHttpGet when curl request completes
909 std::vector<std::string> headers; 900 std::vector<std::string> headers;
910 headers.push_back("Accept: image/x-j2c"); 901 headers.push_back("Accept: image/x-j2c");
911 res = mFetcher->mCurlGetRequest->getByteRange(mUrl, headers, offset, mRequestedSize + buggy_range_fudge, 902 res = mFetcher->mCurlGetRequest->getByteRange(mUrl, headers, offset, mRequestedSize,
912 new HTTPGetResponder(mFetcher, mID, LLTimer::getTotalTime(), mRequestedSize, offset)); 903 new HTTPGetResponder(mFetcher, mID, LLTimer::getTotalTime(), mRequestedSize, offset));
913 } 904 }
914 if (!res) 905 if (!res)
@@ -2279,45 +2270,3 @@ void LLTextureFetch::dump()
2279 << llendl; 2270 << llendl;
2280 } 2271 }
2281} 2272}
2282
2283// This tries to detect if the sim has this bug:
2284// http://opensimulator.org/mantis/view.php?id=5081
2285//
2286// *TODO: This is a *HACK and may not work if the grid is heterogenous.
2287// Remove it once OpenSim versions in the wild are > 0.7.0.2!
2288#include "hippogridmanager.h"
2289#include <boost/regex.hpp>
2290//static
2291bool LLTextureFetch::hasBuggyHTTPRange()
2292{
2293 static std::string s_version;
2294 static bool buggy = false;
2295 if ((s_version != gLastVersionChannel) && !gLastVersionChannel.empty())
2296 {
2297 s_version = gLastVersionChannel;
2298 buggy = false;
2299 if (gHippoGridManager->getConnectedGrid()->getPlatform() == HippoGridInfo::PLATFORM_OPENSIM)
2300 {
2301 std::string ver_string;
2302 try
2303 {
2304 const boost::regex re(".*OpenSim.*?([0-9.]+).+");
2305 ver_string = regex_replace(s_version, re, "\\1", boost::match_default);
2306 }
2307 catch(std::runtime_error)
2308 {
2309 ver_string = "0.0";
2310 }
2311 LLStringUtil::replaceChar(ver_string, '.', '0');
2312 ver_string = "0." + ver_string;
2313 F64 version = atof(ver_string.c_str());
2314 // we look for "0.6.8" < version < "0.7.0.3"
2315 if ((version > 0.00608) && (version < 0.0070003))
2316 {
2317 buggy = true;
2318 llwarns << "Setting buggy http ranges mode for current sim, because we're on " << s_version << llendl;
2319 }
2320 }
2321 }
2322 return buggy;
2323}
diff --git a/linden/indra/newview/lltexturefetch.h b/linden/indra/newview/lltexturefetch.h
index 5fa2d1c..6c6bb52 100644
--- a/linden/indra/newview/lltexturefetch.h
+++ b/linden/indra/newview/lltexturefetch.h
@@ -86,8 +86,6 @@ public:
86 86
87 LLTextureInfo* getTextureInfo() { return &mTextureInfo; } 87 LLTextureInfo* getTextureInfo() { return &mTextureInfo; }
88 88
89 static bool hasBuggyHTTPRange(); // *TODO: remove this *HACK once buggy OpenSim versions are gone
90
91protected: 89protected:
92 void addToNetworkQueue(LLTextureFetchWorker* worker); 90 void addToNetworkQueue(LLTextureFetchWorker* worker);
93 void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel); 91 void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel);
diff --git a/linden/indra/newview/llviewerimagelist.cpp b/linden/indra/newview/llviewerimagelist.cpp
index 039896f..de92903 100644
--- a/linden/indra/newview/llviewerimagelist.cpp
+++ b/linden/indra/newview/llviewerimagelist.cpp
@@ -193,6 +193,13 @@ void LLViewerImageList::doPreloadImages()
193 mImagePreloads.insert(image); 193 mImagePreloads.insert(image);
194 } 194 }
195 195
196 // Preload default unrezzad avatar cloud
197 image = getImageFromFile("cloud-particle.j2c",MIPMAP_YES,IMMEDIATE_YES,0,0,DEFAULT_UNREZZED_AVATAR_PARTICLE);
198 if (image)
199 {
200 image->setAddressMode(LLTexUnit::TAM_WRAP);
201 mImagePreloads.insert(image);
202 }
196} 203}
197 204
198static std::string get_texture_list_name() 205static std::string get_texture_list_name()
diff --git a/linden/indra/newview/llviewermedia.cpp b/linden/indra/newview/llviewermedia.cpp
index 2ba6b50..c38408d 100644
--- a/linden/indra/newview/llviewermedia.cpp
+++ b/linden/indra/newview/llviewermedia.cpp
@@ -40,7 +40,7 @@
40#include "llviewerimage.h" 40#include "llviewerimage.h"
41#include "llviewerwindow.h" 41#include "llviewerwindow.h"
42#include "llviewerimagelist.h" 42#include "llviewerimagelist.h"
43//#include "viewerversion.h" 43//#include "viewerinfo.h"
44 44
45#include "llpluginclassmedia.h" 45#include "llpluginclassmedia.h"
46 46
@@ -261,7 +261,7 @@ std::string LLViewerMedia::getCurrentUserAgent()
261 std::ostringstream codec; 261 std::ostringstream codec;
262 codec << "SecondLife/"; 262 codec << "SecondLife/";
263 codec << "C64 Basic V2"; 263 codec << "C64 Basic V2";
264 //codec << ViewerVersion::getImpMajorVersion() << "." << ViewerVersion::getImpMinorVersion() << "." << ViewerVersion::getImpPatchVersion() << " " << ViewerVersion::getImpTestVersion(); 264 //codec << " " << ViewerInfo::versionNumbers3();
265 //codec << " (" << channel << "; " << skin_name << " skin)"; 265 //codec << " (" << channel << "; " << skin_name << " skin)";
266// llinfos << codec.str() << llendl; 266// llinfos << codec.str() << llendl;
267 267
@@ -547,6 +547,13 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
547 547
548 if (media_source->init(launcher_name, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins"))) 548 if (media_source->init(launcher_name, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins")))
549 { 549 {
550 #if LL_WINDOWS
551 if (gSavedSettings.getBOOL("ShowConsoleWindow"))
552 {
553 media_source->showConsole();
554 }
555 #endif
556
550 return media_source; 557 return media_source;
551 } 558 }
552 else 559 else
diff --git a/linden/indra/newview/llviewermedia_streamingaudio.cpp b/linden/indra/newview/llviewermedia_streamingaudio.cpp
index 6a4dd0f..f02870b 100644
--- a/linden/indra/newview/llviewermedia_streamingaudio.cpp
+++ b/linden/indra/newview/llviewermedia_streamingaudio.cpp
@@ -96,7 +96,7 @@ void LLStreamingAudio_MediaPlugins::stop()
96 { 96 {
97 mMediaPlugin->stop(); 97 mMediaPlugin->stop();
98 } 98 }
99 99 llinfos << "Stopping internet stream." << llendl;
100 mURL.clear(); 100 mURL.clear();
101} 101}
102 102
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp
index b85f3ca..9b5c687 100644
--- a/linden/indra/newview/llviewermenu.cpp
+++ b/linden/indra/newview/llviewermenu.cpp
@@ -564,7 +564,7 @@ void pre_init_menus()
564 // static information 564 // static information
565 LLColor4 color; 565 LLColor4 color;
566 color = gColors.getColor( "MenuDefaultBgColor" ); 566 color = gColors.getColor( "MenuDefaultBgColor" );
567 LLMenuGL::setDefaultBackgroundColor( color ); 567 LLMenuGL::setDefaultBackgroundColor(color);
568 color = gColors.getColor( "MenuItemEnabledColor" ); 568 color = gColors.getColor( "MenuItemEnabledColor" );
569 LLMenuItemGL::setEnabledColor( color ); 569 LLMenuItemGL::setEnabledColor( color );
570 color = gColors.getColor( "MenuItemDisabledColor" ); 570 color = gColors.getColor( "MenuItemDisabledColor" );
@@ -651,18 +651,8 @@ void init_menus()
651 color = gColors.getColor( "MenuPopupBgColor" ); 651 color = gColors.getColor( "MenuPopupBgColor" );
652 gPopupMenuView->setBackgroundColor( color ); 652 gPopupMenuView->setBackgroundColor( color );
653 653
654 // If we are not in production, use a different color to make it apparent.
655 if (LLViewerLogin::getInstance()->isInProductionGrid())
656 {
657 color = gColors.getColor( "MenuBarBgColor" );
658 }
659 else
660 {
661 color = gColors.getColor( "MenuNonProductionBgColor" );
662 }
663 gMenuBarView = (LLMenuBarGL*)LLUICtrlFactory::getInstance()->buildMenu("menu_viewer.xml", gMenuHolder); 654 gMenuBarView = (LLMenuBarGL*)LLUICtrlFactory::getInstance()->buildMenu("menu_viewer.xml", gMenuHolder);
664 gMenuBarView->setRect(LLRect(0, top, 0, top - MENU_BAR_HEIGHT)); 655 gMenuBarView->setRect(LLRect(0, top, 0, top - MENU_BAR_HEIGHT));
665 gMenuBarView->setBackgroundColor( color );
666 656
667 // gMenuBarView->setItemVisible("Tools", FALSE); 657 // gMenuBarView->setItemVisible("Tools", FALSE);
668 gMenuBarView->arrange(); 658 gMenuBarView->arrange();
@@ -673,8 +663,7 @@ void init_menus()
673 // flash when an item is triggered (the flash occurs in the holder) 663 // flash when an item is triggered (the flash occurs in the holder)
674 gViewerWindow->getRootView()->addChild(gMenuHolder); 664 gViewerWindow->getRootView()->addChild(gMenuHolder);
675 665
676 gViewerWindow->setMenuBackgroundColor(false, 666 gViewerWindow->setMenuBackgroundColor(false, LLViewerLogin::getInstance()->isInProductionGrid());
677 LLViewerLogin::getInstance()->isInProductionGrid());
678 667
679 // Assume L$10 for now, the server will tell us the real cost at login 668 // Assume L$10 for now, the server will tell us the real cost at login
680 std::string fee = gHippoGridManager->getConnectedGrid()->getCurrencySymbol() + "10"; 669 std::string fee = gHippoGridManager->getConnectedGrid()->getCurrencySymbol() + "10";
@@ -723,8 +712,6 @@ void init_menus()
723 LLRect menuBarRect = gLoginMenuBarView->getRect(); 712 LLRect menuBarRect = gLoginMenuBarView->getRect();
724 gLoginMenuBarView->setRect(LLRect(menuBarRect.mLeft, menuBarRect.mTop, gViewerWindow->getRootView()->getRect().getWidth() - menuBarRect.mLeft, menuBarRect.mBottom)); 713 gLoginMenuBarView->setRect(LLRect(menuBarRect.mLeft, menuBarRect.mTop, gViewerWindow->getRootView()->getRect().getWidth() - menuBarRect.mLeft, menuBarRect.mBottom));
725 714
726 gLoginMenuBarView->setBackgroundColor( color );
727
728 gMenuHolder->addChild(gLoginMenuBarView); 715 gMenuHolder->addChild(gLoginMenuBarView);
729} 716}
730 717
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp
index 84e2b7e..3e686f4 100755
--- a/linden/indra/newview/llviewermessage.cpp
+++ b/linden/indra/newview/llviewermessage.cpp
@@ -1973,7 +1973,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
1973 { 1973 {
1974 case IM_CONSOLE_AND_CHAT_HISTORY: 1974 case IM_CONSOLE_AND_CHAT_HISTORY:
1975 // These are used for system messages, hence don't need the name, 1975 // These are used for system messages, hence don't need the name,
1976 // as it is always "Imprudence". 1976 // as it is always "Imprudence". Or "meta-impy" maybe? shrugs
1977 // *TODO:translate 1977 // *TODO:translate
1978 args["MESSAGE"] = message; 1978 args["MESSAGE"] = message;
1979 1979
diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp
index 868094e..a49dde6 100644
--- a/linden/indra/newview/llviewerwindow.cpp
+++ b/linden/indra/newview/llviewerwindow.cpp
@@ -2025,15 +2025,15 @@ void LLViewerWindow::setMenuBackgroundColor(bool god_mode, bool dev_grid)
2025 LLSD args; 2025 LLSD args;
2026 LLColor4 new_bg_color; 2026 LLColor4 new_bg_color;
2027 2027
2028 if(god_mode && LLViewerLogin::getInstance()->isInProductionGrid()) 2028 if (god_mode && dev_grid)
2029 { 2029 {
2030 new_bg_color = gColors.getColor( "MenuBarGodBgColor" ); 2030 new_bg_color = gColors.getColor( "MenuBarGodBgColor" );
2031 } 2031 }
2032 else if(god_mode && !LLViewerLogin::getInstance()->isInProductionGrid()) 2032 else if(god_mode && !dev_grid)
2033 { 2033 {
2034 new_bg_color = gColors.getColor( "MenuNonProductionGodBgColor" ); 2034 new_bg_color = gColors.getColor( "MenuNonProductionGodBgColor" );
2035 } 2035 }
2036 else if(!god_mode && !LLViewerLogin::getInstance()->isInProductionGrid()) 2036 else if(!god_mode && !dev_grid)
2037 { 2037 {
2038 new_bg_color = gColors.getColor( "MenuNonProductionBgColor" ); 2038 new_bg_color = gColors.getColor( "MenuNonProductionBgColor" );
2039 } 2039 }
@@ -2042,10 +2042,12 @@ void LLViewerWindow::setMenuBackgroundColor(bool god_mode, bool dev_grid)
2042 new_bg_color = gColors.getColor( "MenuBarBgColor" ); 2042 new_bg_color = gColors.getColor( "MenuBarBgColor" );
2043 } 2043 }
2044 2044
2045 if(gMenuBarView) 2045 // Not doing this is a cheap workaround for the menu not having a good way to tell
2046 // the difference between bar and item color -- MC
2047 /*if(gMenuBarView)
2046 { 2048 {
2047 gMenuBarView->setBackgroundColor( new_bg_color ); 2049 gMenuBarView->setBackgroundColor( new_bg_color );
2048 } 2050 }*/
2049 2051
2050 if(gStatusBar) 2052 if(gStatusBar)
2051 { 2053 {
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index c268580..5c537a8 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -67,8 +67,9 @@
67#include "lltexlayer.h" 67#include "lltexlayer.h"
68#include "lltoolgrab.h" // for needsRenderBeam 68#include "lltoolgrab.h" // for needsRenderBeam
69#include "lltoolmgr.h" // for needsRenderBeam 69#include "lltoolmgr.h" // for needsRenderBeam
70#include "lltoolmorph.h" 70#include "lltoolmorph.h" // for auto de-ruth
71#include "llviewercamera.h" 71#include "llviewercamera.h"
72#include "llviewergenericmessage.h"
72#include "llviewerimagelist.h" 73#include "llviewerimagelist.h"
73#include "llviewermedia.h" 74#include "llviewermedia.h"
74#include "llviewermenu.h" 75#include "llviewermenu.h"
@@ -870,6 +871,8 @@ LLVOAvatar::LLVOAvatar(const LLUUID& id,
870 mOohMorph = NULL; 871 mOohMorph = NULL;
871 mAahMorph = NULL; 872 mAahMorph = NULL;
872 873
874 mRuthTimer.reset();
875
873 //------------------------------------------------------------------------- 876 //-------------------------------------------------------------------------
874 // initialize joint, mesh and shape members 877 // initialize joint, mesh and shape members
875 //------------------------------------------------------------------------- 878 //-------------------------------------------------------------------------
@@ -1525,7 +1528,7 @@ void LLVOAvatar::loadCloud(const std::string& filename, LLPartSysData& particle
1525 if(particles.mPartImageID.isNull() || default_id == particles.mPartImageID) 1528 if(particles.mPartImageID.isNull() || default_id == particles.mPartImageID)
1526 { 1529 {
1527 LLViewerImage* cloud_image = 1530 LLViewerImage* cloud_image =
1528 gImageList.getImageFromFile("cloud-particle.j2c", MIPMAP_YES, IMMEDIATE_YES, 0, 0, default_id); 1531 gImageList.getImage(default_id);
1529 particles.mPartImageID = cloud_image->getID(); 1532 particles.mPartImageID = cloud_image->getID();
1530 } 1533 }
1531} 1534}
@@ -7461,6 +7464,8 @@ BOOL LLVOAvatar::updateIsFullyLoaded()
7461 loading = TRUE; 7464 loading = TRUE;
7462 } 7465 }
7463 7466
7467 updateRuthTimer(loading);
7468
7464 // special case to keep nudity off orientation island - 7469 // special case to keep nudity off orientation island -
7465 // this is fragilely dependent on the compositing system, 7470 // this is fragilely dependent on the compositing system,
7466 // which gets available textures in the following order: 7471 // which gets available textures in the following order:
@@ -7513,6 +7518,35 @@ BOOL LLVOAvatar::updateIsFullyLoaded()
7513 return changed; 7518 return changed;
7514} 7519}
7515 7520
7521void LLVOAvatar::updateRuthTimer(bool loading)
7522{
7523 if (isSelf() || !loading)
7524 {
7525 return;
7526 }
7527
7528 if (mPreviousFullyLoaded)
7529 {
7530 mRuthTimer.reset();
7531 }
7532
7533 const F32 LOADING_TIMEOUT__SECONDS = 90.f;
7534 if (mRuthTimer.getElapsedTimeF32() > LOADING_TIMEOUT__SECONDS)
7535 {
7536 llinfos << "Ruth Timer timeout: Missing texture data for '" << getFullname() << "' "
7537 << "( Params loaded : " << !visualParamWeightsAreDefault() << " ) "
7538 << "( Lower : " << isTextureDefined(TEX_LOWER_BAKED) << " ) "
7539 << "( Upper : " << isTextureDefined(TEX_UPPER_BAKED) << " ) "
7540 << "( Head : " << isTextureDefined(TEX_HEAD_BAKED) << " )."
7541 << llendl;
7542
7543 //LLAvatarPropertiesProcessor::getInstance()->sendAvatarTexturesRequest(getID());
7544 std::vector<std::string> strings;
7545 strings.push_back(getID().asString());
7546 send_generic_message("avatartexturesrequest", strings);
7547 mRuthTimer.reset();
7548 }
7549}
7516 7550
7517BOOL LLVOAvatar::isFullyLoaded() 7551BOOL LLVOAvatar::isFullyLoaded()
7518{ 7552{
@@ -7603,7 +7637,8 @@ LLGLuint LLVOAvatar::getScratchTexName( LLGLenum format, U32* texture_bytes )
7603 { 7637 {
7604 case GL_LUMINANCE: components = 1; internal_format = GL_LUMINANCE8; break; 7638 case GL_LUMINANCE: components = 1; internal_format = GL_LUMINANCE8; break;
7605 case GL_ALPHA: components = 1; internal_format = GL_ALPHA8; break; 7639 case GL_ALPHA: components = 1; internal_format = GL_ALPHA8; break;
7606 case GL_COLOR_INDEX: components = 1; internal_format = GL_COLOR_INDEX8_EXT; break; 7640// Deprecated. See http://svn.secondlife.com/trac/linden/changeset/2757
7641// case GL_COLOR_INDEX: components = 1; internal_format = GL_COLOR_INDEX8_EXT; break;
7607 case GL_LUMINANCE_ALPHA: components = 2; internal_format = GL_LUMINANCE8_ALPHA8; break; 7642 case GL_LUMINANCE_ALPHA: components = 2; internal_format = GL_LUMINANCE8_ALPHA8; break;
7608 case GL_RGB: components = 3; internal_format = GL_RGB8; break; 7643 case GL_RGB: components = 3; internal_format = GL_RGB8; break;
7609 case GL_RGBA: components = 4; internal_format = GL_RGBA8; break; 7644 case GL_RGBA: components = 4; internal_format = GL_RGBA8; break;
@@ -8756,7 +8791,6 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
8756 8791
8757 if( !param ) 8792 if( !param )
8758 { 8793 {
8759 llwarns << "Number of params in AvatarAppearance msg does not match number of params in avatar xml file." << llendl;
8760 break; 8794 break;
8761 } 8795 }
8762 8796
@@ -8798,10 +8832,9 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
8798 } 8832 }
8799 } 8833 }
8800 8834
8801 S32 expected_tweakable_count = getVisualParamCountInGroup(VISUAL_PARAM_GROUP_TWEAKABLE); // don't worry about VISUAL_PARAM_GROUP_TWEAKABLE_NO_TRANSMIT 8835 while( param && (param->getGroup() != VISUAL_PARAM_GROUP_TWEAKABLE) )
8802 if (num_blocks != expected_tweakable_count)
8803 { 8836 {
8804 llinfos << "Number of params in AvatarAppearance msg (" << num_blocks << ") does not match number of tweakable params in avatar xml file (" << expected_tweakable_count << "). Processing what we can. Object: " << getID() << llendl; 8837 param = getNextVisualParam();
8805 } 8838 }
8806 8839
8807 if (params_changed) 8840 if (params_changed)
@@ -8822,6 +8855,23 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
8822 else 8855 else
8823 { 8856 {
8824 llwarns << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl; 8857 llwarns << "AvatarAppearance msg received without any parameters, object: " << getID() << llendl;
8858 const F32 LOADING_TIMEOUT_SECONDS = 60.f;
8859 // this isn't really a problem if we already have a non-default shape
8860 if (visualParamWeightsAreDefault() && mRuthTimer.getElapsedTimeF32() > LOADING_TIMEOUT_SECONDS)
8861 {
8862 // re-request appearance, hoping that it comes back with a shape next time
8863 llinfos << "Re-requesting AvatarAppearance for object: " << getID() << llendl;
8864 //LLAvatarPropertiesProcessor::getInstance()->sendAvatarTexturesRequest(getID());
8865 std::vector<std::string> strings;
8866 strings.push_back(getID().asString());
8867 send_generic_message("avatartexturesrequest", strings);
8868 mRuthTimer.reset();
8869 }
8870 else
8871 {
8872 llinfos << "That's okay, we already have a non-default shape for object: " << getID() << llendl;
8873 // we don't really care.
8874 }
8825 } 8875 }
8826 8876
8827 setCompositeUpdatesEnabled( TRUE ); 8877 setCompositeUpdatesEnabled( TRUE );
diff --git a/linden/indra/newview/llvoavatar.h b/linden/indra/newview/llvoavatar.h
index 4d08bf0..5dbc945 100644
--- a/linden/indra/newview/llvoavatar.h
+++ b/linden/indra/newview/llvoavatar.h
@@ -231,6 +231,7 @@ public:
231 231
232 BOOL isVisible(); 232 BOOL isVisible();
233 BOOL isSelf() const { return mIsSelf; } 233 BOOL isSelf() const { return mIsSelf; }
234 bool isBuilt() const { return mIsBuilt; }
234 BOOL isCulled() const { return mCulled; } 235 BOOL isCulled() const { return mCulled; }
235 236
236public: 237public:
@@ -371,12 +372,15 @@ public:
371public: 372public:
372 BOOL isFullyLoaded(); 373 BOOL isFullyLoaded();
373 BOOL updateIsFullyLoaded(); 374 BOOL updateIsFullyLoaded();
375protected:
376 void updateRuthTimer(bool loading);
374private: 377private:
375 BOOL mFullyLoaded; 378 BOOL mFullyLoaded;
376 BOOL mPreviousFullyLoaded; 379 BOOL mPreviousFullyLoaded;
377 BOOL mFullyLoadedInitialized; 380 BOOL mFullyLoadedInitialized;
378 S32 mFullyLoadedFrameCounter; 381 S32 mFullyLoadedFrameCounter;
379 LLFrameTimer mFullyLoadedTimer; 382 LLFrameTimer mFullyLoadedTimer;
383 LLFrameTimer mRuthTimer;
380 384
381 //-------------------------------------------------------------------- 385 //--------------------------------------------------------------------
382 // Collision Volumes 386 // Collision Volumes
diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp
index 63362be..4b5d3ce 100644
--- a/linden/indra/newview/llvoiceclient.cpp
+++ b/linden/indra/newview/llvoiceclient.cpp
@@ -139,22 +139,23 @@ class LLViewerVoiceAccountProvisionResponder :
139 public LLHTTPClient::Responder 139 public LLHTTPClient::Responder
140{ 140{
141public: 141public:
142 LLViewerVoiceAccountProvisionResponder(int retries) 142 LLViewerVoiceAccountProvisionResponder(int retries, LLUUID response_id)
143 { 143 {
144 mRetries = retries; 144 mRetries = retries;
145 mResponseID = response_id;
145 } 146 }
146 147
147 virtual void error(U32 status, const std::string& reason) 148 virtual void error(U32 status, const std::string& reason)
148 { 149 {
149 if ( mRetries > 0 ) 150 if ( mRetries > 0 )
150 { 151 {
151 LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, retrying. status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL; 152 LL_DEBUGS("VoiceCaps") << "ProvisionVoiceAccountRequest returned an error, retrying. status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL;
152 if ( gVoiceClient ) gVoiceClient->requestVoiceAccountProvision( 153 if ( gVoiceClient ) gVoiceClient->requestVoiceAccountProvision(
153 mRetries - 1); 154 mRetries - 1);
154 } 155 }
155 else 156 else
156 { 157 {
157 LL_WARNS("Voice") << "ProvisionVoiceAccountRequest returned an error, too many retries (giving up). status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL; 158 LL_DEBUGS("VoiceCaps") << "ProvisionVoiceAccountRequest returned an error, too many retries (giving up). status = " << status << ", reason = \"" << reason << "\"" << LL_ENDL;
158 if ( gVoiceClient ) gVoiceClient->giveUp(); 159 if ( gVoiceClient ) gVoiceClient->giveUp();
159 } 160 }
160 } 161 }
@@ -166,7 +167,7 @@ public:
166 std::string voice_sip_uri_hostname; 167 std::string voice_sip_uri_hostname;
167 std::string voice_account_server_uri; 168 std::string voice_account_server_uri;
168 169
169 LL_DEBUGS("Voice") << "ProvisionVoiceAccountRequest response:" << ll_pretty_print_sd(content) << LL_ENDL; 170 LL_DEBUGS("VoiceCaps") << "ProvisionVoiceAccountRequest response:" << ll_pretty_print_sd(content) << LL_ENDL;
170 171
171 if(content.has("voice_sip_uri_hostname")) 172 if(content.has("voice_sip_uri_hostname"))
172 voice_sip_uri_hostname = content["voice_sip_uri_hostname"].asString(); 173 voice_sip_uri_hostname = content["voice_sip_uri_hostname"].asString();
@@ -179,12 +180,14 @@ public:
179 content["username"].asString(), 180 content["username"].asString(),
180 content["password"].asString(), 181 content["password"].asString(),
181 voice_sip_uri_hostname, 182 voice_sip_uri_hostname,
182 voice_account_server_uri); 183 voice_account_server_uri,
184 mResponseID);
183 } 185 }
184 } 186 }
185 187
186private: 188private:
187 int mRetries; 189 int mRetries;
190 LLUUID mResponseID;
188}; 191};
189 192
190/** 193/**
@@ -364,7 +367,7 @@ LLIOPipe::EStatus LLVivoxProtocolParser::process_impl(
364 // If this message isn't set to be squelched, output the raw XML received. 367 // If this message isn't set to be squelched, output the raw XML received.
365 if(!squelchDebugOutput) 368 if(!squelchDebugOutput)
366 { 369 {
367 LL_DEBUGS("Voice") << "parsing: " << mInput.substr(start, delim - start) << LL_ENDL; 370 LL_DEBUGS("VivoxProtocolParser") << "parsing: " << mInput.substr(start, delim - start) << LL_ENDL;
368 } 371 }
369 372
370 start = delim + 3; 373 start = delim + 3;
@@ -378,7 +381,7 @@ LLIOPipe::EStatus LLVivoxProtocolParser::process_impl(
378 if(!gVoiceClient->mConnected) 381 if(!gVoiceClient->mConnected)
379 { 382 {
380 // If voice has been disabled, we just want to close the socket. This does so. 383 // If voice has been disabled, we just want to close the socket. This does so.
381 LL_INFOS("Voice") << "returning STATUS_STOP" << LL_ENDL; 384 LL_INFOS("VivoxProtocolParser") << "returning STATUS_STOP" << LL_ENDL;
382 return STATUS_STOP; 385 return STATUS_STOP;
383 } 386 }
384 387
@@ -452,13 +455,13 @@ void LLVivoxProtocolParser::StartTag(const char *tag, const char **attr)
452 } 455 }
453 } 456 }
454 } 457 }
455 LL_DEBUGS("VivoxProtocolParser") << tag << " (" << responseDepth << ")" << LL_ENDL; 458 LL_DEBUGS("VivoxProtocolParserTag") << tag << " (" << responseDepth << ")" << LL_ENDL;
456 } 459 }
457 else 460 else
458 { 461 {
459 if (ignoringTags) 462 if (ignoringTags)
460 { 463 {
461 LL_DEBUGS("VivoxProtocolParser") << "ignoring tag " << tag << " (depth = " << responseDepth << ")" << LL_ENDL; 464 LL_DEBUGS("VivoxProtocolParserTag") << "ignoring tag " << tag << " (depth = " << responseDepth << ")" << LL_ENDL;
462 } 465 }
463 else 466 else
464 { 467 {
@@ -471,7 +474,7 @@ void LLVivoxProtocolParser::StartTag(const char *tag, const char **attr)
471 ignoreDepth = responseDepth; 474 ignoreDepth = responseDepth;
472 accumulateText = false; 475 accumulateText = false;
473 476
474 LL_DEBUGS("VivoxProtocolParser") << "starting ignore, ignoreDepth is " << ignoreDepth << LL_ENDL; 477 LL_DEBUGS("VivoxProtocolParserTag") << "starting ignore, ignoreDepth is " << ignoreDepth << LL_ENDL;
475 } 478 }
476 else if (!stricmp("CaptureDevices", tag)) 479 else if (!stricmp("CaptureDevices", tag))
477 { 480 {
@@ -512,18 +515,18 @@ void LLVivoxProtocolParser::EndTag(const char *tag)
512 { 515 {
513 if (ignoreDepth == responseDepth) 516 if (ignoreDepth == responseDepth)
514 { 517 {
515 LL_DEBUGS("VivoxProtocolParser") << "end of ignore" << LL_ENDL; 518 LL_DEBUGS("VivoxProtocolParserTag") << "end of ignore" << LL_ENDL;
516 ignoringTags = false; 519 ignoringTags = false;
517 } 520 }
518 else 521 else
519 { 522 {
520 LL_DEBUGS("VivoxProtocolParser") << "ignoring tag " << tag << " (depth = " << responseDepth << ")" << LL_ENDL; 523 LL_DEBUGS("VivoxProtocolParserTag") << "ignoring tag " << tag << " (depth = " << responseDepth << ")" << LL_ENDL;
521 } 524 }
522 } 525 }
523 526
524 if (!ignoringTags) 527 if (!ignoringTags)
525 { 528 {
526 LL_DEBUGS("VivoxProtocolParser") << "processing tag " << tag << " (depth = " << responseDepth << ")" << LL_ENDL; 529 LL_DEBUGS("VivoxProtocolParserTag") << "processing tag " << tag << " (depth = " << responseDepth << ")" << LL_ENDL;
527 530
528 // Closing a tag. Finalize the text we've accumulated and reset 531 // Closing a tag. Finalize the text we've accumulated and reset
529 if (!stricmp("ReturnCode", tag)) 532 if (!stricmp("ReturnCode", tag))
@@ -1008,12 +1011,13 @@ static LLVoiceClientFriendsObserver *friendslist_listener = NULL;
1008class LLVoiceClientCapResponder : public LLHTTPClient::Responder 1011class LLVoiceClientCapResponder : public LLHTTPClient::Responder
1009{ 1012{
1010public: 1013public:
1011 LLVoiceClientCapResponder(void){}; 1014 LLVoiceClientCapResponder(LLUUID response_id):mResponseID(response_id) {};
1012 1015
1013 virtual void error(U32 status, const std::string& reason); // called with bad status codes 1016 virtual void error(U32 status, const std::string& reason); // called with bad status codes
1014 virtual void result(const LLSD& content); 1017 virtual void result(const LLSD& content);
1015 1018
1016private: 1019private:
1020 LLUUID mResponseID;
1017}; 1021};
1018 1022
1019void LLVoiceClientCapResponder::error(U32 status, const std::string& reason) 1023void LLVoiceClientCapResponder::error(U32 status, const std::string& reason)
@@ -1027,7 +1031,7 @@ void LLVoiceClientCapResponder::result(const LLSD& content)
1027{ 1031{
1028 LLSD::map_const_iterator iter; 1032 LLSD::map_const_iterator iter;
1029 1033
1030 LL_DEBUGS("Voice") << "ParcelVoiceInfoRequest response:" << ll_pretty_print_sd(content) << LL_ENDL; 1034 LL_DEBUGS("VoiceCaps") << "ParcelVoiceInfoRequest response:\n" << ll_pretty_print_sd(content) << LL_ENDL;
1031 1035
1032 if ( content.has("voice_credentials") ) 1036 if ( content.has("voice_credentials") )
1033 { 1037 {
@@ -1045,7 +1049,7 @@ void LLVoiceClientCapResponder::result(const LLSD& content)
1045 voice_credentials["channel_credentials"].asString(); 1049 voice_credentials["channel_credentials"].asString();
1046 } 1050 }
1047 1051
1048 gVoiceClient->setSpatialChannel(uri, credentials); 1052 gVoiceClient->setSpatialChannel(uri, credentials, mResponseID);
1049 } 1053 }
1050} 1054}
1051 1055
@@ -1126,6 +1130,8 @@ LLVoiceClient::LLVoiceClient()
1126 mAudioSessionChanged = false; 1130 mAudioSessionChanged = false;
1127 1131
1128 // Initial dirty state 1132 // Initial dirty state
1133 mAccountActive = false;
1134 mVAPRequested = false;
1129 mSpatialCoordsDirty = false; 1135 mSpatialCoordsDirty = false;
1130 mPTTDirty = true; 1136 mPTTDirty = true;
1131 mFriendsListDirty = true; 1137 mFriendsListDirty = true;
@@ -1169,11 +1175,13 @@ LLVoiceClient::LLVoiceClient()
1169 // Ignoring SIGCHLD should prevent zombies from being created. Alternately, we could use wait(), but I'd rather not do that. 1175 // Ignoring SIGCHLD should prevent zombies from being created. Alternately, we could use wait(), but I'd rather not do that.
1170 signal(SIGCHLD, SIG_IGN); 1176 signal(SIGCHLD, SIG_IGN);
1171#endif 1177#endif
1172 1178 if(!gSavedSettings.getBOOL("CmdLineDisableVoice"))//no reason to lag non-voice users
1173 // set up state machine 1179 {
1174 setState(stateDisabled); 1180 // set up state machine
1175 1181 setState(stateDisabled);
1176 gIdleCallbacks.addFunction(idle, this); 1182
1183 gIdleCallbacks.addFunction(idle, this);
1184 }
1177} 1185}
1178 1186
1179//--------------------------------------------------- 1187//---------------------------------------------------
@@ -1347,22 +1355,33 @@ void LLVoiceClient::userAuthorized(const std::string& firstName, const std::stri
1347 sConnectingToAgni = LLViewerLogin::getInstance()->isInProductionGrid(); 1355 sConnectingToAgni = LLViewerLogin::getInstance()->isInProductionGrid();
1348 1356
1349 mAccountName = nameFromID(agentID); 1357 mAccountName = nameFromID(agentID);
1358 mAccountActive = true;
1350} 1359}
1351 1360
1352void LLVoiceClient::requestVoiceAccountProvision(S32 retries) 1361void LLVoiceClient::requestVoiceAccountProvision(S32 retries)
1353{ 1362{
1354 if ( gAgent.getRegion() && mVoiceEnabled ) 1363 LLViewerRegion* region = gAgent.getRegion();
1364 if ( mVoiceEnabled && region && region->capabilitiesReceived())
1355 { 1365 {
1356 std::string url = 1366 std::string url = region->getCapability("ProvisionVoiceAccountRequest");
1357 gAgent.getRegion()->getCapability( 1367
1358 "ProvisionVoiceAccountRequest"); 1368 if ( url.empty() )
1369 {
1370 mVAPRequested = false;
1371 mAccountActive = false;
1372 LL_DEBUGS("VoiceSession") << "Cancel Session: ProvisionVoiceAccountRequest capability empty."
1373 << llendl;
1374 setState(stateDisableCleanup);
1375 }
1359 1376
1360 if ( url == "" ) return; 1377 LL_DEBUGS("VoiceCaps") << "Got ProvisionVoiceAccountRequest capability: "
1378 << url << llendl;
1361 1379
1380 mVAPCapResponseID.generate();
1362 LLHTTPClient::post( 1381 LLHTTPClient::post(
1363 url, 1382 url,
1364 LLSD(), 1383 LLSD(),
1365 new LLViewerVoiceAccountProvisionResponder(retries)); 1384 new LLViewerVoiceAccountProvisionResponder(retries, mVAPCapResponseID));
1366 } 1385 }
1367} 1386}
1368 1387
@@ -1370,11 +1389,46 @@ void LLVoiceClient::login(
1370 const std::string& account_name, 1389 const std::string& account_name,
1371 const std::string& password, 1390 const std::string& password,
1372 const std::string& voice_sip_uri_hostname, 1391 const std::string& voice_sip_uri_hostname,
1373 const std::string& voice_account_server_uri) 1392 const std::string& voice_account_server_uri,
1393 const LLUUID& response_id)
1374{ 1394{
1395 if(response_id != mVAPCapResponseID) return;
1396
1397 std::string new_scheme;
1398 std::string old_scheme;
1399 if(!voice_account_server_uri.empty())
1400 {
1401 new_scheme = voice_account_server_uri.substr(0, voice_account_server_uri.find("://"));
1402 }
1403 if(!mDaemonScheme.empty())
1404 {
1405 old_scheme = mDaemonScheme;
1406 }
1407 else
1408 {
1409 old_scheme = new_scheme;
1410 }
1411
1375 mVoiceSIPURIHostName = voice_sip_uri_hostname; 1412 mVoiceSIPURIHostName = voice_sip_uri_hostname;
1376 mVoiceAccountServerURI = voice_account_server_uri; 1413 mVoiceAccountServerURI = voice_account_server_uri;
1377 1414
1415
1416 LL_DEBUGS("VoiceCaps") << "new_scheme: \"" << new_scheme << "\""
1417 << "\nold_scheme: \"" << old_scheme << "\""
1418 << "\ngateway running: " << ( isGatewayRunning() ? "true" : "false" ) << llendl;
1419 if(!isGatewayRunning() )
1420 {
1421 loadDaemon(new_scheme);
1422 }
1423 else if(old_scheme != new_scheme)
1424 {
1425 mAccountActive = true;
1426 LL_DEBUGS("VoiceSession") << "Cancel Session: Protocol changed."
1427 << llendl;
1428 setState(stateDisableCleanup);
1429 }
1430
1431
1378 if(!mAccountHandle.empty()) 1432 if(!mAccountHandle.empty())
1379 { 1433 {
1380 // Already logged in. 1434 // Already logged in.
@@ -1432,6 +1486,185 @@ void LLVoiceClient::login(
1432 } 1486 }
1433} 1487}
1434 1488
1489void LLVoiceClient::loadDaemon(const std::string& scheme)
1490{
1491
1492 // Launch the voice daemon
1493
1494
1495 // *FIX:Mani - Using the executable dir instead
1496 // of mAppRODataDir, the working directory from which the app
1497 // is launched.
1498 //std::string exe_path = gDirUtilp->getAppRODataDir();
1499 std::string exe_path = gDirUtilp->getExecutableDir();
1500 exe_path += gDirUtilp->getDirDelimiter();
1501
1502#if LL_DARWIN
1503 exe_path += "../Resources/";
1504#endif
1505
1506 //exe_path += gSavedSettings.getString("VoiceModule");
1507 llwarns << "Scheme: " << scheme << llendl;
1508
1509 std::string module;
1510 if (scheme == "tcp")
1511 {
1512
1513 module = gSavedSettings.getString("VoiceModuleMumble").empty() ?
1514 "mumble" : gSavedSettings.getString("VoiceModuleMumble");
1515 }
1516 else
1517 {
1518 module = gSavedSettings.getString("VoiceModuleVivox").empty() ?
1519 "SLVoice" : gSavedSettings.getString("VoiceModuleVivox");
1520 }
1521
1522 size_t pos_to_tst = module.find_last_of("/\\");
1523 if( pos_to_tst != std::string::npos )
1524 {
1525 module = module.substr(pos_to_tst+1);
1526 }
1527
1528#if LL_WINDOWS
1529 std::string extension = ".exe";
1530 if ( module.rfind(extension) != module.length()-extension.length())
1531 {
1532 module.append(extension);
1533 }
1534#endif
1535
1536 exe_path.append(module);
1537
1538 // See if the vivox executable exists
1539 llstat s;
1540 if(!LLFile::stat(exe_path, &s))
1541 {
1542 // vivox executable exists. Build the command line and launch the daemon.
1543 // SLIM SDK: these arguments are no longer necessary.
1544 // std::string args = " -p tcp -h -c";
1545 std::string args;
1546 std::string cmd;
1547 std::string loglevel = gSavedSettings.getString("VivoxDebugLevel");
1548
1549 if(loglevel.empty())
1550 {
1551 loglevel = "-1"; // turn logging off completely
1552 }
1553
1554 args += " -ll ";
1555 args += loglevel;
1556
1557 llwarns << "Voice loaded from: " << exe_path << " " << args << LL_ENDL;
1558
1559#if LL_WINDOWS
1560 PROCESS_INFORMATION pinfo;
1561 STARTUPINFOA sinfo;
1562 memset(&sinfo, 0, sizeof(sinfo));
1563 std::string exe_dir = gDirUtilp->getAppRODataDir();
1564
1565
1566 // So retarded. Windows requires that the second parameter to CreateProcessA be a writable (non-const) string...
1567 char *args2 = new char[args.size() + 1];
1568 strcpy(args2, args.c_str());
1569
1570 if(!CreateProcessA(exe_path.c_str(), args2, NULL, NULL, FALSE, 0, NULL, exe_dir.c_str(), &sinfo, &pinfo))
1571 {
1572 // DWORD dwErr = GetLastError();
1573 }
1574 else
1575 {
1576 // foo = pinfo.dwProcessId; // get your pid here if you want to use it later on
1577 // CloseHandle(pinfo.hProcess); // stops leaks - nothing else
1578 sGatewayHandle = pinfo.hProcess;
1579 CloseHandle(pinfo.hThread); // stops leaks - nothing else
1580 }
1581
1582 delete[] args2;
1583#else // LL_WINDOWS
1584 // This should be the same for mac and linux
1585 {
1586 std::vector<std::string> arglist;
1587 arglist.push_back(exe_path);
1588
1589 // Split the argument string into separate strings for each argument
1590 typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
1591 boost::char_separator<char> sep(" ");
1592 tokenizer tokens(args, sep);
1593 tokenizer::iterator token_iter;
1594
1595 for(token_iter = tokens.begin(); token_iter != tokens.end(); ++token_iter)
1596 {
1597 arglist.push_back(*token_iter);
1598 }
1599
1600 // create an argv vector for the child process
1601 char **fakeargv = new char*[arglist.size() + 1];
1602 int i;
1603 for(i=0; i < arglist.size(); i++)
1604 fakeargv[i] = const_cast<char*>(arglist[i].c_str());
1605
1606 fakeargv[i] = NULL;
1607
1608 fflush(NULL); // flush all buffers before the child inherits them
1609 pid_t id = vfork();
1610 if(id == 0)
1611 {
1612 // child
1613 execv(exe_path.c_str(), fakeargv);
1614
1615 // If we reach this point, the exec failed.
1616 // Use _exit() instead of exit() per the vfork man page.
1617 _exit(0);
1618 }
1619
1620 // parent
1621 delete[] fakeargv;
1622 sGatewayPID = id;
1623
1624 }
1625
1626#endif // LL_WINDOWS
1627
1628 mDaemonScheme = scheme;
1629 mDaemonHost = LLHost(gSavedSettings.getString("VoiceHost").c_str(), gSavedSettings.getU32("VoicePort"));
1630
1631 // Dirty the states we'll need to sync with the daemon when it comes up.
1632 mPTTDirty = true;
1633 mMicVolumeDirty = true;
1634 mSpeakerVolumeDirty = true;
1635 mSpeakerMuteDirty = true;
1636 // These only need to be set if they're not default (i.e. empty string).
1637 mCaptureDeviceDirty = !mCaptureDevice.empty();
1638 mRenderDeviceDirty = !mRenderDevice.empty();
1639
1640 mMainSessionGroupHandle.clear();
1641
1642 // kick in
1643
1644 mUpdateTimer.setTimerExpirySec(CONNECT_THROTTLE_SECONDS);
1645 mUpdateTimer.start();
1646
1647 setState(stateDaemonLaunched);
1648
1649 //trigger parcel changed in the state engine
1650 mCurrentRegionName.append("kick in");
1651
1652
1653 }
1654 else
1655 {
1656 LL_WARNS("Voice") << exe_path << " not found." << LL_ENDL;
1657 mAccountActive = false;
1658 LL_DEBUGS("VoiceSession") << "Cancel Session: no module"
1659 << llendl;
1660 setState(stateDisableCleanup);
1661 }
1662
1663 // we are done, re-allow ProvisionVoiceAccountRequest
1664 mVAPRequested = false;
1665}
1666
1667
1435void LLVoiceClient::idle(void* user_data) 1668void LLVoiceClient::idle(void* user_data)
1436{ 1669{
1437 LLVoiceClient* self = (LLVoiceClient*)user_data; 1670 LLVoiceClient* self = (LLVoiceClient*)user_data;
@@ -1527,6 +1760,8 @@ void LLVoiceClient::setState(state inState)
1527} 1760}
1528void LLVoiceClient::close() 1761void LLVoiceClient::close()
1529{ 1762{
1763 LL_DEBUGS("VoiceSession") << "Cancel Session: LLVoiceClient::close() called."
1764 << llendl;
1530 setState(stateDisableCleanup); 1765 setState(stateDisableCleanup);
1531} 1766}
1532 1767
@@ -1537,11 +1772,20 @@ void LLVoiceClient::start()
1537 1772
1538void LLVoiceClient::stateMachine() 1773void LLVoiceClient::stateMachine()
1539{ 1774{
1775 if( stateJail == getState())
1776 {
1777 return;
1778 }
1779
1780 if(gSavedSettings.getBOOL("CmdLineDisableVoice"))
1781 {
1782 // Voice is locked out, we must not launch the vivox daemon.
1783 setState(stateJail);
1784 }
1540 1785
1541 // Disable voice as long as the viewer is disconnected from the sim (login/relog) 1786 // Disable voice as long as the viewer is disconnected from the sim (login/relog)
1542 setVoiceEnabled(!gDisconnected 1787 setVoiceEnabled(!gDisconnected
1543 && gSavedSettings.getBOOL("EnableVoiceChat") 1788 && gSavedSettings.getBOOL("EnableVoiceChat") );
1544 && !gSavedSettings.getBOOL("CmdLineDisableVoice") );
1545 1789
1546 if(mVoiceEnabled) 1790 if(mVoiceEnabled)
1547 { 1791 {
@@ -1560,12 +1804,10 @@ void LLVoiceClient::stateMachine()
1560 { 1804 {
1561 // if voice was turned off after the daemon was launched but before we could connect to it, we may need to issue a kill. 1805 // if voice was turned off after the daemon was launched but before we could connect to it, we may need to issue a kill.
1562 LL_WARNS("Voice") << "Disabling voice before connection to daemon, terminating." << LL_ENDL; 1806 LL_WARNS("Voice") << "Disabling voice before connection to daemon, terminating." << LL_ENDL;
1563 killGateway();
1564 } 1807 }
1565 1808 LL_DEBUGS("VoiceSession") << "Cancel Session: User turned off voice or logs off."
1566 logout(); 1809 << llendl;
1567 connectorShutdown(); 1810 mAccountActive = false;
1568
1569 setState(stateDisableCleanup); 1811 setState(stateDisableCleanup);
1570 } 1812 }
1571 } 1813 }
@@ -1574,47 +1816,21 @@ void LLVoiceClient::stateMachine()
1574 if(mVoiceEnabled) 1816 if(mVoiceEnabled)
1575 { 1817 {
1576 LLViewerRegion *region = gAgent.getRegion(); 1818 LLViewerRegion *region = gAgent.getRegion();
1577 LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); 1819 if(region && region->capabilitiesReceived())
1578
1579 if(region && parcel)
1580 { 1820 {
1581 S32 parcelLocalID = parcel->getLocalID(); 1821 LLParcel *parcel = LLViewerParcelMgr::getInstance()->getAgentParcel();
1582 std::string regionName = region->getName(); 1822 if(parcel)
1583 std::string capURI = region->getCapability("ParcelVoiceInfoRequest");
1584
1585// LL_DEBUGS("Voice") << "Region name = \"" << regionName << "\", parcel local ID = " << parcelLocalID << ", cap URI = \"" << capURI << "\"" << LL_ENDL;
1586
1587 // The region name starts out empty and gets filled in later.
1588 // Also, the cap gets filled in a short time after the region cross, but a little too late for our purposes.
1589 // If either is empty, wait for the next time around.
1590 if(!regionName.empty())
1591 { 1823 {
1592 if(!capURI.empty()) 1824 S32 parcelLocalID = parcel->getLocalID();
1593 { 1825 std::string regionName = region->getName();
1594 if((parcelLocalID != mCurrentParcelLocalID) || (regionName != mCurrentRegionName)) 1826
1595 { 1827 if((parcelLocalID != mCurrentParcelLocalID) || (regionName != mCurrentRegionName))
1596 // We have changed parcels. Initiate a parcel channel lookup.
1597 mCurrentParcelLocalID = parcelLocalID;
1598 mCurrentRegionName = regionName;
1599
1600 parcelChanged();
1601 }
1602 }
1603 else
1604 { 1828 {
1605 static int count = 0; 1829 // We have changed parcels. Initiate a parcel channel lookup.
1606 static int count2 = 0; 1830 mCurrentParcelLocalID = parcelLocalID;
1607 static int num = 1; 1831 mCurrentRegionName = regionName;
1608 ++count; 1832
1609 if (count % num == 0) 1833 parcelChanged();
1610 {
1611 LL_DEBUGS("Voice") << "region doesn't have ParcelVoiceInfoRequest capability. This is normal for a short time after teleporting, but bad if it persists for very long (" << count << ")." << LL_ENDL;
1612 if (num < 1000 && ++count2 == 10)
1613 {
1614 num *= 10;
1615 count2 = 0;
1616 }
1617 }
1618 } 1834 }
1619 } 1835 }
1620 } 1836 }
@@ -1624,191 +1840,65 @@ void LLVoiceClient::stateMachine()
1624 { 1840 {
1625 //MARK: stateDisableCleanup 1841 //MARK: stateDisableCleanup
1626 case stateDisableCleanup: 1842 case stateDisableCleanup:
1627 // Clean up and reset everything. 1843 // Clean up and reset everything.
1844
1845 mVAPCapResponseID.setNull();
1846 mPIRCapResponseID.setNull();
1847
1848 if(isGatewayRunning())
1849 {
1850 killGateway();
1851 }
1852 logoutSendMessage();
1853 mConnected = false;
1854
1855
1628 closeSocket(); 1856 closeSocket();
1629 deleteAllSessions(); 1857 deleteAllSessions();
1630 deleteAllBuddies(); 1858 deleteAllBuddies();
1631 1859
1632 mConnectorHandle.clear(); 1860 mConnectorHandle.clear();
1633 mAccountHandle.clear(); 1861 mAccountHandle.clear();
1634 mAccountPassword.clear(); 1862 mAccountPassword.clear();
1635 mVoiceAccountServerURI.clear(); 1863 mVoiceAccountServerURI.clear();
1636 1864 mVAPRequested = false;
1637 setState(stateDisabled); 1865 setState(stateDisabled);
1638 break; 1866 break;
1639 1867
1640 //MARK: stateDisabled 1868 //MARK: stateDisabled
1641 case stateDisabled: 1869 case stateDisabled:
1642 if(mTuningMode || (mVoiceEnabled && !mAccountName.empty())) 1870 if(mTuningMode || (mVoiceEnabled && mAccountActive && !mAccountName.empty()))
1643 { 1871 {
1644 setState(stateStart); 1872 setState(stateStart);
1645 } 1873 }
1646 break; 1874 break;
1647 1875
1648 //MARK: stateStart 1876 //MARK: stateStart
1649 case stateStart: 1877 case stateStart:
1650 if(gSavedSettings.getBOOL("CmdLineDisableVoice")) 1878 {
1651 { 1879 LLViewerRegion *region = gAgent.getRegion();
1652 // Voice is locked out, we must not launch the vivox daemon. 1880 bool have_region = (NULL != region && region->capabilitiesReceived());
1653 setState(stateJail); 1881 if(mVoiceEnabled && !mVAPRequested && !mAccountName.empty() && have_region)
1654 }
1655 else if(!isGatewayRunning())
1656 { 1882 {
1657 if(true) 1883 mVAPRequested = true;
1658 { 1884 requestVoiceAccountProvision();
1659 // Launch the voice daemon
1660
1661 // *FIX:Mani - Using the executable dir instead
1662 // of mAppRODataDir, the working directory from which the app
1663 // is launched.
1664 //std::string exe_path = gDirUtilp->getAppRODataDir();
1665 std::string exe_path = gDirUtilp->getExecutableDir();
1666 exe_path += gDirUtilp->getDirDelimiter();
1667#if LL_DARWIN
1668 exe_path += "../Resources/";
1669#endif
1670 exe_path += gSavedSettings.getString("VoiceModule");
1671#if LL_WINDOWS
1672 exe_path += ".exe";
1673#endif
1674 // See if the vivox executable exists
1675 llstat s;
1676 if(!LLFile::stat(exe_path, &s))
1677 {
1678 // vivox executable exists. Build the command line and launch the daemon.
1679 // SLIM SDK: these arguments are no longer necessary.
1680// std::string args = " -p tcp -h -c";
1681 std::string args;
1682 std::string cmd;
1683 std::string loglevel = gSavedSettings.getString("VivoxDebugLevel");
1684
1685 if(loglevel.empty())
1686 {
1687 loglevel = "-1"; // turn logging off completely
1688 }
1689
1690 args += " -ll ";
1691 args += loglevel;
1692
1693 LL_DEBUGS("Voice") << "Args for SLVoice: " << args << LL_ENDL;
1694
1695#if LL_WINDOWS
1696 PROCESS_INFORMATION pinfo;
1697 STARTUPINFOA sinfo;
1698 memset(&sinfo, 0, sizeof(sinfo));
1699 std::string exe_dir = gDirUtilp->getAppRODataDir();
1700 cmd = gSavedSettings.getString("VoiceModule");
1701 cmd += ".exe";
1702 cmd += args;
1703
1704 // So retarded. Windows requires that the second parameter to CreateProcessA be a writable (non-const) string...
1705 char *args2 = new char[args.size() + 1];
1706 strcpy(args2, args.c_str());
1707
1708 if(!CreateProcessA(exe_path.c_str(), args2, NULL, NULL, FALSE, 0, NULL, exe_dir.c_str(), &sinfo, &pinfo))
1709 {
1710// DWORD dwErr = GetLastError();
1711 }
1712 else
1713 {
1714 // foo = pinfo.dwProcessId; // get your pid here if you want to use it later on
1715 // CloseHandle(pinfo.hProcess); // stops leaks - nothing else
1716 sGatewayHandle = pinfo.hProcess;
1717 CloseHandle(pinfo.hThread); // stops leaks - nothing else
1718 }
1719
1720 delete[] args2;
1721#else // LL_WINDOWS
1722 // This should be the same for mac and linux
1723 {
1724 std::vector<std::string> arglist;
1725 arglist.push_back(exe_path);
1726
1727 // Split the argument string into separate strings for each argument
1728 typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
1729 boost::char_separator<char> sep(" ");
1730 tokenizer tokens(args, sep);
1731 tokenizer::iterator token_iter;
1732
1733 for(token_iter = tokens.begin(); token_iter != tokens.end(); ++token_iter)
1734 {
1735 arglist.push_back(*token_iter);
1736 }
1737
1738 // create an argv vector for the child process
1739 char **fakeargv = new char*[arglist.size() + 1];
1740 int i;
1741 for(i=0; i < arglist.size(); i++)
1742 fakeargv[i] = const_cast<char*>(arglist[i].c_str());
1743
1744 fakeargv[i] = NULL;
1745
1746 fflush(NULL); // flush all buffers before the child inherits them
1747 pid_t id = vfork();
1748 if(id == 0)
1749 {
1750 // child
1751 execv(exe_path.c_str(), fakeargv);
1752
1753 // If we reach this point, the exec failed.
1754 // Use _exit() instead of exit() per the vfork man page.
1755 _exit(0);
1756 }
1757
1758 // parent
1759 delete[] fakeargv;
1760 sGatewayPID = id;
1761 }
1762#endif // LL_WINDOWS
1763 mDaemonHost = LLHost(gSavedSettings.getString("VoiceHost").c_str(), gSavedSettings.getU32("VoicePort"));
1764 }
1765 else
1766 {
1767 LL_WARNS("Voice") << exe_path << " not found." << LL_ENDL;
1768 mVoiceEnabled = false;
1769 }
1770 }
1771 else
1772 {
1773 // SLIM SDK: port changed from 44124 to 44125.
1774 // We can connect to a client gateway running on another host. This is useful for testing.
1775 // To do this, launch the gateway on a nearby host like this:
1776 // vivox-gw.exe -p tcp -i 0.0.0.0:44125
1777 // and put that host's IP address here.
1778 mDaemonHost = LLHost(gSavedSettings.getString("VoiceHost"), gSavedSettings.getU32("VoicePort"));
1779 }
1780
1781 mUpdateTimer.start();
1782 mUpdateTimer.setTimerExpirySec(CONNECT_THROTTLE_SECONDS);
1783
1784 setState(stateDaemonLaunched);
1785
1786 // Dirty the states we'll need to sync with the daemon when it comes up.
1787 mPTTDirty = true;
1788 mMicVolumeDirty = true;
1789 mSpeakerVolumeDirty = true;
1790 mSpeakerMuteDirty = true;
1791 // These only need to be set if they're not default (i.e. empty string).
1792 mCaptureDeviceDirty = !mCaptureDevice.empty();
1793 mRenderDeviceDirty = !mRenderDevice.empty();
1794
1795 mMainSessionGroupHandle.clear();
1796 } 1885 }
1797 break; 1886 } break;
1798 1887
1799 //MARK: stateDaemonLaunched 1888 //MARK: stateDaemonLaunched
1800 case stateDaemonLaunched: 1889 case stateDaemonLaunched:
1801 if(mUpdateTimer.hasExpired()) 1890 if(mUpdateTimer.hasExpired())
1802 { 1891 {
1803 LL_DEBUGS("Voice") << "Connecting to vivox daemon" << LL_ENDL; 1892
1804
1805 mUpdateTimer.setTimerExpirySec(CONNECT_THROTTLE_SECONDS); 1893 mUpdateTimer.setTimerExpirySec(CONNECT_THROTTLE_SECONDS);
1806 1894
1807 if(!mSocket) 1895 if(!mSocket)
1808 { 1896 {
1897 LL_DEBUGS("VoiceDaemon") << "Connecting to voice daemon. Protocol: "
1898 << mDaemonScheme << LL_ENDL;
1809 mSocket = LLSocket::create(LLSocket::STREAM_TCP); 1899 mSocket = LLSocket::create(LLSocket::STREAM_TCP);
1810 } 1900 }
1811 1901
1812 mConnected = mSocket->blockingConnect(mDaemonHost); 1902 mConnected = mSocket->blockingConnect(mDaemonHost);
1813 if(mConnected) 1903 if(mConnected)
1814 { 1904 {
@@ -1817,6 +1907,7 @@ void LLVoiceClient::stateMachine()
1817 else 1907 else
1818 { 1908 {
1819 // If the connect failed, the socket may have been put into a bad state. Delete it. 1909 // If the connect failed, the socket may have been put into a bad state. Delete it.
1910 LL_DEBUGS("VoiceDaemon") << "voice daemon not ready yet, retrying" << LL_ENDL;
1820 closeSocket(); 1911 closeSocket();
1821 } 1912 }
1822 } 1913 }
@@ -1842,9 +1933,8 @@ void LLVoiceClient::stateMachine()
1842 1933
1843 setState(stateConnected); 1934 setState(stateConnected);
1844 } 1935 }
1845
1846 break; 1936 break;
1847 1937
1848 //MARK: stateConnected 1938 //MARK: stateConnected
1849 case stateConnected: 1939 case stateConnected:
1850 // Initial devices query 1940 // Initial devices query
@@ -1871,24 +1961,16 @@ void LLVoiceClient::stateMachine()
1871 } 1961 }
1872 else if(!mAccountName.empty() && mVoiceEnabled) 1962 else if(!mAccountName.empty() && mVoiceEnabled)
1873 { 1963 {
1874 LLViewerRegion *region = gAgent.getRegion(); 1964 if ( mAccountPassword.empty() )
1875
1876 if(region)
1877 { 1965 {
1878 if ( region->getCapability("ProvisionVoiceAccountRequest") != "" ) 1966 requestVoiceAccountProvision();
1879 { 1967 }
1880 if ( mAccountPassword.empty() ) 1968 else
1881 { 1969 {
1882 requestVoiceAccountProvision(); 1970 setState(stateConnectorStart);
1883 }
1884 setState(stateConnectorStart);
1885 }
1886 else
1887 {
1888 LL_DEBUGS("Voice") << "region doesn't have ProvisionVoiceAccountRequest capability!" << LL_ENDL;
1889 }
1890 } 1971 }
1891 } 1972 }
1973
1892 break; 1974 break;
1893 1975
1894 //MARK: stateMicTuningStart 1976 //MARK: stateMicTuningStart
@@ -2025,7 +2107,10 @@ void LLVoiceClient::stateMachine()
2025 if(mLoginRetryCount > MAX_LOGIN_RETRIES) 2107 if(mLoginRetryCount > MAX_LOGIN_RETRIES)
2026 { 2108 {
2027 LL_WARNS("Voice") << "too many login retries, giving up." << LL_ENDL; 2109 LL_WARNS("Voice") << "too many login retries, giving up." << LL_ENDL;
2028 setState(stateLoginFailed); 2110 LL_DEBUGS("VoiceSession") << "Cancel Session: too many login retries."
2111 << llendl;
2112 mAccountActive = false;
2113 setState(stateDisableCleanup);
2029 } 2114 }
2030 else 2115 else
2031 { 2116 {
@@ -2385,7 +2470,11 @@ void LLVoiceClient::stateMachine()
2385 2470
2386 //MARK: stateConnectorStopped 2471 //MARK: stateConnectorStopped
2387 case stateConnectorStopped: // connector stop received 2472 case stateConnectorStopped: // connector stop received
2473 {
2474 LL_DEBUGS("VoiceSession") << "Cancel Session: entered stateConnectorStopped."
2475 << llendl;
2388 setState(stateDisableCleanup); 2476 setState(stateDisableCleanup);
2477 }
2389 break; 2478 break;
2390 2479
2391 //MARK: stateConnectorFailed 2480 //MARK: stateConnectorFailed
@@ -2396,6 +2485,8 @@ void LLVoiceClient::stateMachine()
2396 case stateConnectorFailedWaiting: 2485 case stateConnectorFailedWaiting:
2397 if(!mVoiceEnabled) 2486 if(!mVoiceEnabled)
2398 { 2487 {
2488 LL_DEBUGS("VoiceSession") << "Cancel Session: entered stateConnectorFailedWaiting."
2489 << llendl;
2399 setState(stateDisableCleanup); 2490 setState(stateDisableCleanup);
2400 } 2491 }
2401 break; 2492 break;
@@ -2408,6 +2499,8 @@ void LLVoiceClient::stateMachine()
2408 case stateLoginFailedWaiting: 2499 case stateLoginFailedWaiting:
2409 if(!mVoiceEnabled) 2500 if(!mVoiceEnabled)
2410 { 2501 {
2502 LL_DEBUGS("VoiceSession") << "Cancel Session: entered stateLoginFailedWaiting."
2503 << llendl;
2411 setState(stateDisableCleanup); 2504 setState(stateDisableCleanup);
2412 } 2505 }
2413 break; 2506 break;
@@ -2569,7 +2662,7 @@ void LLVoiceClient::sessionGroupCreateSendMessage()
2569 2662
2570void LLVoiceClient::sessionCreateSendMessage(sessionState *session, bool startAudio, bool startText) 2663void LLVoiceClient::sessionCreateSendMessage(sessionState *session, bool startAudio, bool startText)
2571{ 2664{
2572 LL_DEBUGS("Voice") << "requesting create: " << session->mSIPURI << LL_ENDL; 2665 LL_DEBUGS("VoiceSession") << "requesting create: " << session->mSIPURI << LL_ENDL;
2573 2666
2574 session->mCreateInProgress = true; 2667 session->mCreateInProgress = true;
2575 if(startAudio) 2668 if(startAudio)
@@ -2605,7 +2698,7 @@ void LLVoiceClient::sessionCreateSendMessage(sessionState *session, bool startAu
2605 2698
2606void LLVoiceClient::sessionGroupAddSessionSendMessage(sessionState *session, bool startAudio, bool startText) 2699void LLVoiceClient::sessionGroupAddSessionSendMessage(sessionState *session, bool startAudio, bool startText)
2607{ 2700{
2608 LL_DEBUGS("Voice") << "requesting create: " << session->mSIPURI << LL_ENDL; 2701 LL_DEBUGS("VoiceSession") << "requesting create: " << session->mSIPURI << LL_ENDL;
2609 2702
2610 session->mCreateInProgress = true; 2703 session->mCreateInProgress = true;
2611 if(startAudio) 2704 if(startAudio)
@@ -2642,7 +2735,7 @@ void LLVoiceClient::sessionGroupAddSessionSendMessage(sessionState *session, boo
2642 2735
2643void LLVoiceClient::sessionMediaConnectSendMessage(sessionState *session) 2736void LLVoiceClient::sessionMediaConnectSendMessage(sessionState *session)
2644{ 2737{
2645 LL_DEBUGS("Voice") << "connecting audio to session handle: " << session->mHandle << LL_ENDL; 2738 LL_DEBUGS("VoiceSession") << "connecting audio to session handle: " << session->mHandle << LL_ENDL;
2646 2739
2647 session->mMediaConnectInProgress = true; 2740 session->mMediaConnectInProgress = true;
2648 2741
@@ -2660,7 +2753,7 @@ void LLVoiceClient::sessionMediaConnectSendMessage(sessionState *session)
2660 2753
2661void LLVoiceClient::sessionTextConnectSendMessage(sessionState *session) 2754void LLVoiceClient::sessionTextConnectSendMessage(sessionState *session)
2662{ 2755{
2663 LL_DEBUGS("Voice") << "connecting text to session handle: " << session->mHandle << LL_ENDL; 2756 LL_DEBUGS("VoiceSession") << "connecting text to session handle: " << session->mHandle << LL_ENDL;
2664 2757
2665 std::ostringstream stream; 2758 std::ostringstream stream;
2666 2759
@@ -2689,7 +2782,7 @@ void LLVoiceClient::leaveAudioSession()
2689{ 2782{
2690 if(mAudioSession) 2783 if(mAudioSession)
2691 { 2784 {
2692 LL_DEBUGS("Voice") << "leaving session: " << mAudioSession->mSIPURI << LL_ENDL; 2785 LL_DEBUGS("VoiceSession") << "leaving session: " << mAudioSession->mSIPURI << LL_ENDL;
2693 2786
2694 switch(getState()) 2787 switch(getState())
2695 { 2788 {
@@ -2724,7 +2817,7 @@ void LLVoiceClient::leaveAudioSession()
2724 } 2817 }
2725 else 2818 else
2726 { 2819 {
2727 LL_WARNS("Voice") << "called with no session handle" << LL_ENDL; 2820 LL_WARNS("VoiceSession") << "called with no session handle" << LL_ENDL;
2728 setState(stateSessionTerminated); 2821 setState(stateSessionTerminated);
2729 } 2822 }
2730 break; 2823 break;
@@ -2734,13 +2827,13 @@ void LLVoiceClient::leaveAudioSession()
2734 break; 2827 break;
2735 2828
2736 default: 2829 default:
2737 LL_WARNS("Voice") << "called from unknown state" << LL_ENDL; 2830 LL_WARNS("VoiceSession") << "called from unknown state" << LL_ENDL;
2738 break; 2831 break;
2739 } 2832 }
2740 } 2833 }
2741 else 2834 else
2742 { 2835 {
2743 LL_WARNS("Voice") << "called with no active session" << LL_ENDL; 2836 LL_WARNS("VoiceSession") << "called with no active session" << LL_ENDL;
2744 setState(stateSessionTerminated); 2837 setState(stateSessionTerminated);
2745 } 2838 }
2746} 2839}
@@ -2749,7 +2842,7 @@ void LLVoiceClient::sessionTerminateSendMessage(sessionState *session)
2749{ 2842{
2750 std::ostringstream stream; 2843 std::ostringstream stream;
2751 2844
2752 LL_DEBUGS("Voice") << "Sending Session.Terminate with handle " << session->mHandle << LL_ENDL; 2845 LL_DEBUGS("VoiceSession") << "Sending Session.Terminate with handle " << session->mHandle << LL_ENDL;
2753 stream 2846 stream
2754 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.Terminate.1\">" 2847 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.Terminate.1\">"
2755 << "<SessionHandle>" << session->mHandle << "</SessionHandle>" 2848 << "<SessionHandle>" << session->mHandle << "</SessionHandle>"
@@ -2762,7 +2855,7 @@ void LLVoiceClient::sessionGroupTerminateSendMessage(sessionState *session)
2762{ 2855{
2763 std::ostringstream stream; 2856 std::ostringstream stream;
2764 2857
2765 LL_DEBUGS("Voice") << "Sending SessionGroup.Terminate with handle " << session->mGroupHandle << LL_ENDL; 2858 LL_DEBUGS("VoiceSession") << "Sending SessionGroup.Terminate with handle " << session->mGroupHandle << LL_ENDL;
2766 stream 2859 stream
2767 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"SessionGroup.Terminate.1\">" 2860 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"SessionGroup.Terminate.1\">"
2768 << "<SessionGroupHandle>" << session->mGroupHandle << "</SessionGroupHandle>" 2861 << "<SessionGroupHandle>" << session->mGroupHandle << "</SessionGroupHandle>"
@@ -2775,7 +2868,7 @@ void LLVoiceClient::sessionMediaDisconnectSendMessage(sessionState *session)
2775{ 2868{
2776 std::ostringstream stream; 2869 std::ostringstream stream;
2777 2870
2778 LL_DEBUGS("Voice") << "Sending Session.MediaDisconnect with handle " << session->mHandle << LL_ENDL; 2871 LL_DEBUGS("VoiceSession") << "Sending Session.MediaDisconnect with handle " << session->mHandle << LL_ENDL;
2779 stream 2872 stream
2780 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.MediaDisconnect.1\">" 2873 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.MediaDisconnect.1\">"
2781 << "<SessionGroupHandle>" << session->mGroupHandle << "</SessionGroupHandle>" 2874 << "<SessionGroupHandle>" << session->mGroupHandle << "</SessionGroupHandle>"
@@ -2791,7 +2884,7 @@ void LLVoiceClient::sessionTextDisconnectSendMessage(sessionState *session)
2791{ 2884{
2792 std::ostringstream stream; 2885 std::ostringstream stream;
2793 2886
2794 LL_DEBUGS("Voice") << "Sending Session.TextDisconnect with handle " << session->mHandle << LL_ENDL; 2887 LL_DEBUGS("VoiceSession") << "Sending Session.TextDisconnect with handle " << session->mHandle << LL_ENDL;
2795 stream 2888 stream
2796 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.TextDisconnect.1\">" 2889 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Session.TextDisconnect.1\">"
2797 << "<SessionGroupHandle>" << session->mGroupHandle << "</SessionGroupHandle>" 2890 << "<SessionGroupHandle>" << session->mGroupHandle << "</SessionGroupHandle>"
@@ -2823,13 +2916,13 @@ void LLVoiceClient::getRenderDevicesSendMessage()
2823 2916
2824void LLVoiceClient::clearCaptureDevices() 2917void LLVoiceClient::clearCaptureDevices()
2825{ 2918{
2826 LL_DEBUGS("Voice") << "called" << LL_ENDL; 2919 LL_DEBUGS("VoiceDevice") << "called" << LL_ENDL;
2827 mCaptureDevices.clear(); 2920 mCaptureDevices.clear();
2828} 2921}
2829 2922
2830void LLVoiceClient::addCaptureDevice(const std::string& name) 2923void LLVoiceClient::addCaptureDevice(const std::string& name)
2831{ 2924{
2832 LL_DEBUGS("Voice") << name << LL_ENDL; 2925 LL_DEBUGS("VoiceDevice") << name << LL_ENDL;
2833 2926
2834 mCaptureDevices.push_back(name); 2927 mCaptureDevices.push_back(name);
2835} 2928}
@@ -2861,13 +2954,13 @@ void LLVoiceClient::setCaptureDevice(const std::string& name)
2861 2954
2862void LLVoiceClient::clearRenderDevices() 2955void LLVoiceClient::clearRenderDevices()
2863{ 2956{
2864 LL_DEBUGS("Voice") << "called" << LL_ENDL; 2957 LL_DEBUGS("VoiceDevice") << "called" << LL_ENDL;
2865 mRenderDevices.clear(); 2958 mRenderDevices.clear();
2866} 2959}
2867 2960
2868void LLVoiceClient::addRenderDevice(const std::string& name) 2961void LLVoiceClient::addRenderDevice(const std::string& name)
2869{ 2962{
2870 LL_DEBUGS("Voice") << name << LL_ENDL; 2963 LL_DEBUGS("VoiceDevice") << name << LL_ENDL;
2871 mRenderDevices.push_back(name); 2964 mRenderDevices.push_back(name);
2872} 2965}
2873 2966
@@ -2951,7 +3044,7 @@ void LLVoiceClient::tuningRenderStopSendMessage()
2951 3044
2952void LLVoiceClient::tuningCaptureStartSendMessage(int duration) 3045void LLVoiceClient::tuningCaptureStartSendMessage(int duration)
2953{ 3046{
2954 LL_DEBUGS("Voice") << "sending CaptureAudioStart" << LL_ENDL; 3047 LL_DEBUGS("VoiceDevice") << "sending CaptureAudioStart" << LL_ENDL;
2955 3048
2956 std::ostringstream stream; 3049 std::ostringstream stream;
2957 stream 3050 stream
@@ -2964,7 +3057,7 @@ void LLVoiceClient::tuningCaptureStartSendMessage(int duration)
2964 3057
2965void LLVoiceClient::tuningCaptureStopSendMessage() 3058void LLVoiceClient::tuningCaptureStopSendMessage()
2966{ 3059{
2967 LL_DEBUGS("Voice") << "sending CaptureAudioStop" << LL_ENDL; 3060 LL_DEBUGS("VoiceDevice") << "sending CaptureAudioStop" << LL_ENDL;
2968 3061
2969 std::ostringstream stream; 3062 std::ostringstream stream;
2970 stream 3063 stream
@@ -3033,17 +3126,17 @@ void LLVoiceClient::daemonDied()
3033 LL_WARNS("Voice") << "Connection to vivox daemon lost. Resetting state."<< LL_ENDL; 3126 LL_WARNS("Voice") << "Connection to vivox daemon lost. Resetting state."<< LL_ENDL;
3034 3127
3035 // Try to relaunch the daemon 3128 // Try to relaunch the daemon
3129 LL_DEBUGS("VoiceSession") << "Cancel Session: voice daemon died."
3130 << llendl;
3036 setState(stateDisableCleanup); 3131 setState(stateDisableCleanup);
3037} 3132}
3038 3133
3039void LLVoiceClient::giveUp() 3134void LLVoiceClient::giveUp()
3040{ 3135{
3041 // All has failed. Clean up and stop trying. 3136 mAccountActive = false;
3042 closeSocket(); 3137 LL_DEBUGS("VoiceSession") << "Cancel Session: giveUp() called."
3043 deleteAllSessions(); 3138 << llendl;
3044 deleteAllBuddies(); 3139 setState(stateDisableCleanup);
3045
3046 setState(stateJail);
3047} 3140}
3048 3141
3049static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVector3d &pos, LLVector3 &vel) 3142static void oldSDKTransform (LLVector3 &left, LLVector3 &up, LLVector3 &at, LLVector3d &pos, LLVector3 &vel)
@@ -3378,7 +3471,7 @@ void LLVoiceClient::buildSetCaptureDevice(std::ostringstream &stream)
3378{ 3471{
3379 if(mCaptureDeviceDirty) 3472 if(mCaptureDeviceDirty)
3380 { 3473 {
3381 LL_DEBUGS("Voice") << "Setting input device = \"" << mCaptureDevice << "\"" << LL_ENDL; 3474 LL_DEBUGS("VoiceDevice") << "Setting input device = \"" << mCaptureDevice << "\"" << LL_ENDL;
3382 3475
3383 stream 3476 stream
3384 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Aux.SetCaptureDevice.1\">" 3477 << "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Aux.SetCaptureDevice.1\">"
@@ -4099,29 +4192,29 @@ void LLVoiceClient::reapSession(sessionState *session)
4099 { 4192 {
4100 if(!session->mHandle.empty()) 4193 if(!session->mHandle.empty())
4101 { 4194 {
4102 LL_DEBUGS("Voice") << "NOT deleting session " << session->mSIPURI << " (non-null session handle)" << LL_ENDL; 4195 LL_DEBUGS("VoiceSession") << "NOT deleting session " << session->mSIPURI << " (non-null session handle)" << LL_ENDL;
4103 } 4196 }
4104 else if(session->mCreateInProgress) 4197 else if(session->mCreateInProgress)
4105 { 4198 {
4106 LL_DEBUGS("Voice") << "NOT deleting session " << session->mSIPURI << " (create in progress)" << LL_ENDL; 4199 LL_DEBUGS("VoiceSession") << "NOT deleting session " << session->mSIPURI << " (create in progress)" << LL_ENDL;
4107 } 4200 }
4108 else if(session->mMediaConnectInProgress) 4201 else if(session->mMediaConnectInProgress)
4109 { 4202 {
4110 LL_DEBUGS("Voice") << "NOT deleting session " << session->mSIPURI << " (connect in progress)" << LL_ENDL; 4203 LL_DEBUGS("VoiceSession") << "NOT deleting session " << session->mSIPURI << " (connect in progress)" << LL_ENDL;
4111 } 4204 }
4112 else if(session == mAudioSession) 4205 else if(session == mAudioSession)
4113 { 4206 {
4114 LL_DEBUGS("Voice") << "NOT deleting session " << session->mSIPURI << " (it's the current session)" << LL_ENDL; 4207 LL_DEBUGS("VoiceSession") << "NOT deleting session " << session->mSIPURI << " (it's the current session)" << LL_ENDL;
4115 } 4208 }
4116 else if(session == mNextAudioSession) 4209 else if(session == mNextAudioSession)
4117 { 4210 {
4118 LL_DEBUGS("Voice") << "NOT deleting session " << session->mSIPURI << " (it's the next session)" << LL_ENDL; 4211 LL_DEBUGS("VoiceSession") << "NOT deleting session " << session->mSIPURI << " (it's the next session)" << LL_ENDL;
4119 } 4212 }
4120 else 4213 else
4121 { 4214 {
4122 // TODO: Question: Should we check for queued text messages here? 4215 // TODO: Question: Should we check for queued text messages here?
4123 // We don't have a reason to keep tracking this session, so just delete it. 4216 // We don't have a reason to keep tracking this session, so just delete it.
4124 LL_DEBUGS("Voice") << "deleting session " << session->mSIPURI << LL_ENDL; 4217 LL_DEBUGS("VoiceSession") << "deleting session " << session->mSIPURI << LL_ENDL;
4125 deleteSession(session); 4218 deleteSession(session);
4126 session = NULL; 4219 session = NULL;
4127 } 4220 }
@@ -4179,17 +4272,17 @@ void LLVoiceClient::leftAudioSession(
4179 case stateJoinSessionFailed: 4272 case stateJoinSessionFailed:
4180 case stateJoinSessionFailedWaiting: 4273 case stateJoinSessionFailedWaiting:
4181 // normal transition 4274 // normal transition
4182 LL_DEBUGS("Voice") << "left session " << session->mHandle << " in state " << state2string(getState()) << LL_ENDL; 4275 LL_DEBUGS("VoiceSession") << "left session " << session->mHandle << " in state " << state2string(getState()) << LL_ENDL;
4183 setState(stateSessionTerminated); 4276 setState(stateSessionTerminated);
4184 break; 4277 break;
4185 4278
4186 case stateSessionTerminated: 4279 case stateSessionTerminated:
4187 // this will happen sometimes -- there are cases where we send the terminate and then go straight to this state. 4280 // this will happen sometimes -- there are cases where we send the terminate and then go straight to this state.
4188 LL_WARNS("Voice") << "left session " << session->mHandle << " in state " << state2string(getState()) << LL_ENDL; 4281 LL_WARNS("VoiceSession") << "left session " << session->mHandle << " in state " << state2string(getState()) << LL_ENDL;
4189 break; 4282 break;
4190 4283
4191 default: 4284 default:
4192 LL_WARNS("Voice") << "unexpected SessionStateChangeEvent (left session) in state " << state2string(getState()) << LL_ENDL; 4285 LL_WARNS("VoiceSession") << "unexpected SessionStateChangeEvent (left session) in state " << state2string(getState()) << LL_ENDL;
4193 setState(stateSessionTerminated); 4286 setState(stateSessionTerminated);
4194 break; 4287 break;
4195 } 4288 }
@@ -4249,7 +4342,7 @@ void LLVoiceClient::mediaStreamUpdatedEvent(
4249{ 4342{
4250 sessionState *session = findSession(sessionHandle); 4343 sessionState *session = findSession(sessionHandle);
4251 4344
4252 LL_DEBUGS("Voice") << "session " << sessionHandle << ", status code " << statusCode << ", string \"" << statusString << "\"" << LL_ENDL; 4345 LL_DEBUGS("VoiceSession") << "session " << sessionHandle << ", status code " << statusCode << ", string \"" << statusString << "\"" << LL_ENDL;
4253 4346
4254 if(session) 4347 if(session)
4255 { 4348 {
@@ -4314,7 +4407,7 @@ void LLVoiceClient::mediaStreamUpdatedEvent(
4314 } 4407 }
4315 else 4408 else
4316 { 4409 {
4317 LL_WARNS("Voice") << "session " << sessionHandle << "not found"<< LL_ENDL; 4410 LL_WARNS("VoiceSession") << "session " << sessionHandle << "not found"<< LL_ENDL;
4318 } 4411 }
4319} 4412}
4320 4413
@@ -4435,7 +4528,7 @@ void LLVoiceClient::participantRemovedEvent(
4435 } 4528 }
4436 else 4529 else
4437 { 4530 {
4438 LL_DEBUGS("Voice") << "unknown session " << sessionHandle << LL_ENDL; 4531 LL_DEBUGS("VoiceSession") << "unknown session " << sessionHandle << LL_ENDL;
4439 } 4532 }
4440} 4533}
4441 4534
@@ -4479,7 +4572,7 @@ void LLVoiceClient::participantUpdatedEvent(
4479 } 4572 }
4480 else 4573 else
4481 { 4574 {
4482 LL_WARNS("Voice") << "unknown session " << sessionHandle << LL_ENDL; 4575 LL_WARNS("VoiceSession") << "unknown session " << sessionHandle << LL_ENDL;
4483 } 4576 }
4484} 4577}
4485 4578
@@ -5058,22 +5151,44 @@ LLVoiceClient::participantState* LLVoiceClient::findParticipantByID(const LLUUID
5058 5151
5059void LLVoiceClient::parcelChanged() 5152void LLVoiceClient::parcelChanged()
5060{ 5153{
5061 if(getState() >= stateNoChannel) 5154 mAccountActive = true;
5155 LLViewerRegion* region = gAgent.getRegion();
5156 if( (getState() >= stateNoChannel) && region && region->capabilitiesReceived())
5062 { 5157 {
5063 // If the user is logged in, start a channel lookup. 5158 // If the user is logged in, start a channel lookup,
5064 LL_DEBUGS("Voice") << "sending ParcelVoiceInfoRequest (" << mCurrentRegionName << ", " << mCurrentParcelLocalID << ")" << LL_ENDL; 5159 // but not if already in a private call/conference (then SL regions return an empty cap).
5160 //
5065 5161
5066 std::string url = gAgent.getRegion()->getCapability("ParcelVoiceInfoRequest"); 5162 std::string url = region->getCapability("ParcelVoiceInfoRequest");
5067 LLSD data; 5163 LL_DEBUGS("VoiceCaps") << "sending ParcelVoiceInfoRequest (" << mCurrentRegionName << ", " << mCurrentParcelLocalID << ")" << " cap url:" << url << LL_ENDL;
5068 LLHTTPClient::post( 5164 if(! url.empty() )
5069 url, 5165 {
5070 data, 5166 mPIRCapResponseID.generate();
5071 new LLVoiceClientCapResponder); 5167 LLSD data;
5168 LLHTTPClient::post(
5169 url,
5170 data,
5171 new LLVoiceClientCapResponder(mPIRCapResponseID));
5172 }
5173 else
5174 {
5175
5176 mAccountActive = false;
5177 LL_DEBUGS("VoiceSession") << "Cancel Session: ParcelVoiceInfoRequest cap empty."
5178 << llendl;
5179 setState(stateDisableCleanup);
5180 }
5181 }
5182 else if (region && !region->capabilitiesReceived())
5183 {
5184 // We don't know yet where to get the cap so requesting it makes no sense
5185 mCurrentRegionName.append("retry");
5186 return;
5072 } 5187 }
5073 else 5188 else
5074 { 5189 {
5075 // The transition to stateNoChannel needs to kick this off again. 5190 // The transition to stateNoChannel needs to kick this off again.
5076 LL_WARNS("Voice") << "not logged in yet, deferring" << LL_ENDL; 5191 LL_DEBUGS("Voice") << "not logged in yet, deferring" << LL_ENDL;
5077 } 5192 }
5078} 5193}
5079 5194
@@ -5086,12 +5201,42 @@ void LLVoiceClient::switchChannel(
5086{ 5201{
5087 bool needsSwitch = false; 5202 bool needsSwitch = false;
5088 5203
5089 LL_DEBUGS("Voice") 5204 LL_DEBUGS("VoiceSession")
5090 << "called in state " << state2string(getState()) 5205 << "Switch channel called in state " << state2string(getState())
5091 << " with uri \"" << uri << "\"" 5206 << " with uri \"" << uri << "\""
5092 << (spatial?", spatial is true":", spatial is false") 5207 << (spatial?", spatial is true":", spatial is false")
5093 << LL_ENDL; 5208 << LL_ENDL;
5094 5209
5210 size_t new_uri_find_sip = std::string::npos;
5211 size_t old_uri_find_sip = std::string::npos;
5212 if(!uri.empty())
5213 {
5214 new_uri_find_sip = uri.find("sip:");
5215 }
5216
5217 if( mNextAudioSession
5218 && !( mNextAudioSession->mSIPURI.empty() )
5219 && (mNextAudioSession->mSIPURI != uri) )
5220 {
5221 old_uri_find_sip = mNextAudioSession->mSIPURI.find("sip:");
5222 }
5223 else
5224 {
5225
5226 // just logged in or voice disabled land in SL,
5227 // anyway right daemon is already up
5228 old_uri_find_sip = new_uri_find_sip;
5229 }
5230
5231 if(old_uri_find_sip != new_uri_find_sip)
5232 {
5233 mAccountActive = true;
5234 LL_DEBUGS("VoiceSession") << "Cancel Session: Session type changed"
5235 << llendl;
5236 setState(stateDisableCleanup);
5237 return;
5238 }
5239
5095 switch(getState()) 5240 switch(getState())
5096 { 5241 {
5097 case stateJoinSessionFailed: 5242 case stateJoinSessionFailed:
@@ -5148,7 +5293,7 @@ void LLVoiceClient::switchChannel(
5148 if(uri.empty()) 5293 if(uri.empty())
5149 { 5294 {
5150 // Leave any channel we may be in 5295 // Leave any channel we may be in
5151 LL_DEBUGS("Voice") << "leaving channel" << LL_ENDL; 5296 LL_DEBUGS("VoiceSession") << "leaving channel" << LL_ENDL;
5152 5297
5153 sessionState *oldSession = mNextAudioSession; 5298 sessionState *oldSession = mNextAudioSession;
5154 mNextAudioSession = NULL; 5299 mNextAudioSession = NULL;
@@ -5160,7 +5305,7 @@ void LLVoiceClient::switchChannel(
5160 } 5305 }
5161 else 5306 else
5162 { 5307 {
5163 LL_DEBUGS("Voice") << "switching to channel " << uri << LL_ENDL; 5308 LL_DEBUGS("VoiceSession") << "switching to channel " << uri << LL_ENDL;
5164 5309
5165 mNextAudioSession = addSession(uri); 5310 mNextAudioSession = addSession(uri);
5166 mNextAudioSession->mHash = hash; 5311 mNextAudioSession->mHash = hash;
@@ -5205,8 +5350,14 @@ void LLVoiceClient::setNonSpatialChannel(
5205 5350
5206void LLVoiceClient::setSpatialChannel( 5351void LLVoiceClient::setSpatialChannel(
5207 const std::string &uri, 5352 const std::string &uri,
5208 const std::string &credentials) 5353 const std::string &credentials,
5354 const LLUUID& response_id)
5209{ 5355{
5356 if (response_id != mPIRCapResponseID)
5357 {
5358 return;
5359 }
5360
5210 mSpatialSessionURI = uri; 5361 mSpatialSessionURI = uri;
5211 mSpatialSessionCredentials = credentials; 5362 mSpatialSessionCredentials = credentials;
5212 mAreaVoiceDisabled = mSpatialSessionURI.empty(); 5363 mAreaVoiceDisabled = mSpatialSessionURI.empty();
@@ -5282,7 +5433,7 @@ bool LLVoiceClient::sendTextMessage(const LLUUID& participant_id, const std::str
5282 } 5433 }
5283 else 5434 else
5284 { 5435 {
5285 LL_DEBUGS("Voice") << "Session not found for participant ID " << participant_id << LL_ENDL; 5436 LL_DEBUGS("VoiceSession") << "Session not found for participant ID " << participant_id << LL_ENDL;
5286 } 5437 }
5287 5438
5288 return result; 5439 return result;
@@ -5331,7 +5482,7 @@ void LLVoiceClient::endUserIMSession(const LLUUID &uuid)
5331 } 5482 }
5332 else 5483 else
5333 { 5484 {
5334 LL_DEBUGS("Voice") << "Session not found for participant ID " << uuid << LL_ENDL; 5485 LL_DEBUGS("VoiceSession") << "Session not found for participant ID " << uuid << LL_ENDL;
5335 } 5486 }
5336} 5487}
5337 5488
@@ -5452,7 +5603,7 @@ void LLVoiceClient::declineInvite(std::string &sessionHandle)
5452 5603
5453void LLVoiceClient::leaveNonSpatialChannel() 5604void LLVoiceClient::leaveNonSpatialChannel()
5454{ 5605{
5455 LL_DEBUGS("Voice") 5606 LL_DEBUGS("VoiceSession")
5456 << "called in state " << state2string(getState()) 5607 << "called in state " << state2string(getState())
5457 << LL_ENDL; 5608 << LL_ENDL;
5458 5609
@@ -5640,7 +5791,9 @@ bool LLVoiceClient::inSpatialChannel(void)
5640 5791
5641 if(mAudioSession) 5792 if(mAudioSession)
5642 result = mAudioSession->mIsSpatial; 5793 result = mAudioSession->mIsSpatial;
5643 5794 if(mNextAudioSession)
5795 result |= !(mNextAudioSession->mIsSpatial);
5796
5644 return result; 5797 return result;
5645} 5798}
5646 5799
@@ -5821,11 +5974,13 @@ void LLVoiceClient::setVoiceEnabled(bool enabled)
5821 mVoiceEnabled = enabled; 5974 mVoiceEnabled = enabled;
5822 if (enabled) 5975 if (enabled)
5823 { 5976 {
5977 mAccountActive = true;
5824 LLVoiceChannel::getCurrentVoiceChannel()->activate(); 5978 LLVoiceChannel::getCurrentVoiceChannel()->activate();
5825 } 5979 }
5826 else 5980 else
5827 { 5981 {
5828 // Turning voice off looses your current channel -- this makes sure the UI isn't out of sync when you re-enable it. 5982 // Turning voice off looses your current channel -- this makes sure the UI isn't out of sync when you re-enable it.
5983 mAccountActive = false;
5829 LLVoiceChannel::getCurrentVoiceChannel()->deactivate(); 5984 LLVoiceChannel::getCurrentVoiceChannel()->deactivate();
5830 } 5985 }
5831 } 5986 }
@@ -6397,7 +6552,7 @@ LLVoiceClient::sessionState *LLVoiceClient::addSession(const std::string &uri, c
6397 { 6552 {
6398 // No existing session found. 6553 // No existing session found.
6399 6554
6400 LL_DEBUGS("Voice") << "adding new session: handle " << handle << " URI " << uri << LL_ENDL; 6555 LL_DEBUGS("VoiceSession") << "adding new session: handle " << handle << " URI " << uri << LL_ENDL;
6401 result = new sessionState(); 6556 result = new sessionState();
6402 result->mSIPURI = uri; 6557 result->mSIPURI = uri;
6403 result->mHandle = handle; 6558 result->mHandle = handle;
@@ -6416,7 +6571,7 @@ LLVoiceClient::sessionState *LLVoiceClient::addSession(const std::string &uri, c
6416 if(uri != result->mSIPURI) 6571 if(uri != result->mSIPURI)
6417 { 6572 {
6418 // TODO: Should this be an internal error? 6573 // TODO: Should this be an internal error?
6419 LL_DEBUGS("Voice") << "changing uri from " << result->mSIPURI << " to " << uri << LL_ENDL; 6574 LL_DEBUGS("VoiceSession") << "changing uri from " << result->mSIPURI << " to " << uri << LL_ENDL;
6420 setSessionURI(result, uri); 6575 setSessionURI(result, uri);
6421 } 6576 }
6422 6577
@@ -6425,17 +6580,17 @@ LLVoiceClient::sessionState *LLVoiceClient::addSession(const std::string &uri, c
6425 if(handle.empty()) 6580 if(handle.empty())
6426 { 6581 {
6427 // There's at least one race condition where where addSession was clearing an existing session handle, which caused things to break. 6582 // There's at least one race condition where where addSession was clearing an existing session handle, which caused things to break.
6428 LL_DEBUGS("Voice") << "NOT clearing handle " << result->mHandle << LL_ENDL; 6583 LL_DEBUGS("VoiceSession") << "NOT clearing handle " << result->mHandle << LL_ENDL;
6429 } 6584 }
6430 else 6585 else
6431 { 6586 {
6432 // TODO: Should this be an internal error? 6587 // TODO: Should this be an internal error?
6433 LL_DEBUGS("Voice") << "changing handle from " << result->mHandle << " to " << handle << LL_ENDL; 6588 LL_DEBUGS("VoiceSession") << "changing handle from " << result->mHandle << " to " << handle << LL_ENDL;
6434 setSessionHandle(result, handle); 6589 setSessionHandle(result, handle);
6435 } 6590 }
6436 } 6591 }
6437 6592
6438 LL_DEBUGS("Voice") << "returning existing session: handle " << handle << " URI " << uri << LL_ENDL; 6593 LL_DEBUGS("VoiceSession") << "returning existing session: handle " << handle << " URI " << uri << LL_ENDL;
6439 } 6594 }
6440 6595
6441 verifySessionState(); 6596 verifySessionState();
@@ -6455,14 +6610,14 @@ void LLVoiceClient::setSessionHandle(sessionState *session, const std::string &h
6455 { 6610 {
6456 if(iter->second != session) 6611 if(iter->second != session)
6457 { 6612 {
6458 LL_ERRS("Voice") << "Internal error: session mismatch!" << LL_ENDL; 6613 LL_ERRS("VoiceSession") << "Internal error: session mismatch!" << LL_ENDL;
6459 } 6614 }
6460 6615
6461 mSessionsByHandle.erase(iter); 6616 mSessionsByHandle.erase(iter);
6462 } 6617 }
6463 else 6618 else
6464 { 6619 {
6465 LL_ERRS("Voice") << "Internal error: session handle not found in map!" << LL_ENDL; 6620 LL_ERRS("VoiceSession") << "Internal error: session handle not found in map!" << LL_ENDL;
6466 } 6621 }
6467 } 6622 }
6468 6623
@@ -6494,7 +6649,7 @@ void LLVoiceClient::deleteSession(sessionState *session)
6494 { 6649 {
6495 if(iter->second != session) 6650 if(iter->second != session)
6496 { 6651 {
6497 LL_ERRS("Voice") << "Internal error: session mismatch" << LL_ENDL; 6652 LL_ERRS("VoiceSession") << "Internal error: session mismatch" << LL_ENDL;
6498 } 6653 }
6499 mSessionsByHandle.erase(iter); 6654 mSessionsByHandle.erase(iter);
6500 } 6655 }
@@ -6525,7 +6680,7 @@ void LLVoiceClient::deleteSession(sessionState *session)
6525 6680
6526void LLVoiceClient::deleteAllSessions() 6681void LLVoiceClient::deleteAllSessions()
6527{ 6682{
6528 LL_DEBUGS("Voice") << "called" << LL_ENDL; 6683 LL_DEBUGS("VoiceSession") << "called" << LL_ENDL;
6529 6684
6530 while(!mSessions.empty()) 6685 while(!mSessions.empty())
6531 { 6686 {
@@ -6534,20 +6689,20 @@ void LLVoiceClient::deleteAllSessions()
6534 6689
6535 if(!mSessionsByHandle.empty()) 6690 if(!mSessionsByHandle.empty())
6536 { 6691 {
6537 LL_ERRS("Voice") << "Internal error: empty session map, non-empty handle map" << LL_ENDL; 6692 LL_ERRS("VoiceSession") << "Internal error: empty session map, non-empty handle map" << LL_ENDL;
6538 } 6693 }
6539} 6694}
6540 6695
6541void LLVoiceClient::verifySessionState(void) 6696void LLVoiceClient::verifySessionState(void)
6542{ 6697{
6543 // This is mostly intended for debugging problems with session state management. 6698 // This is mostly intended for debugging problems with session state management.
6544 LL_DEBUGS("Voice") << "Total session count: " << mSessions.size() << " , session handle map size: " << mSessionsByHandle.size() << LL_ENDL; 6699 LL_DEBUGS("VoiceSession") << "Total session count: " << mSessions.size() << " , session handle map size: " << mSessionsByHandle.size() << LL_ENDL;
6545 6700
6546 for(sessionIterator iter = sessionsBegin(); iter != sessionsEnd(); iter++) 6701 for(sessionIterator iter = sessionsBegin(); iter != sessionsEnd(); iter++)
6547 { 6702 {
6548 sessionState *session = *iter; 6703 sessionState *session = *iter;
6549 6704
6550 LL_DEBUGS("Voice") << "session " << session << ": handle " << session->mHandle << ", URI " << session->mSIPURI << LL_ENDL; 6705 LL_DEBUGS("VoiceSession") << "session " << session << ": handle " << session->mHandle << ", URI " << session->mSIPURI << LL_ENDL;
6551 6706
6552 if(!session->mHandle.empty()) 6707 if(!session->mHandle.empty())
6553 { 6708 {
@@ -6555,13 +6710,13 @@ void LLVoiceClient::verifySessionState(void)
6555 sessionMap::iterator i2 = mSessionsByHandle.find(&(session->mHandle)); 6710 sessionMap::iterator i2 = mSessionsByHandle.find(&(session->mHandle));
6556 if(i2 == mSessionsByHandle.end()) 6711 if(i2 == mSessionsByHandle.end())
6557 { 6712 {
6558 LL_ERRS("Voice") << "internal error (handle " << session->mHandle << " not found in session map)" << LL_ENDL; 6713 LL_ERRS("VoiceSession") << "internal error (handle " << session->mHandle << " not found in session map)" << LL_ENDL;
6559 } 6714 }
6560 else 6715 else
6561 { 6716 {
6562 if(i2->second != session) 6717 if(i2->second != session)
6563 { 6718 {
6564 LL_ERRS("Voice") << "internal error (handle " << session->mHandle << " in session map points to another session)" << LL_ENDL; 6719 LL_ERRS("VoiceSession") << "internal error (handle " << session->mHandle << " in session map points to another session)" << LL_ENDL;
6565 } 6720 }
6566 } 6721 }
6567 } 6722 }
@@ -6574,13 +6729,13 @@ void LLVoiceClient::verifySessionState(void)
6574 sessionIterator i2 = mSessions.find(session); 6729 sessionIterator i2 = mSessions.find(session);
6575 if(i2 == mSessions.end()) 6730 if(i2 == mSessions.end())
6576 { 6731 {
6577 LL_ERRS("Voice") << "internal error (session for handle " << session->mHandle << " not found in session map)" << LL_ENDL; 6732 LL_ERRS("VoiceSession") << "internal error (session for handle " << session->mHandle << " not found in session map)" << LL_ENDL;
6578 } 6733 }
6579 else 6734 else
6580 { 6735 {
6581 if(session->mHandle != (*i2)->mHandle) 6736 if(session->mHandle != (*i2)->mHandle)
6582 { 6737 {
6583 LL_ERRS("Voice") << "internal error (session for handle " << session->mHandle << " points to session with different handle " << (*i2)->mHandle << ")" << LL_ENDL; 6738 LL_ERRS("VoiceSession") << "internal error (session for handle " << session->mHandle << " points to session with different handle " << (*i2)->mHandle << ")" << LL_ENDL;
6584 } 6739 }
6585 } 6740 }
6586 } 6741 }
@@ -7010,6 +7165,8 @@ class LLViewerParcelVoiceInfo : public LLHTTPNode
7010 { 7165 {
7011 LLSD body = input["body"]; 7166 LLSD body = input["body"];
7012 7167
7168 LL_DEBUGS("VoiceCaps") << "ParcelVoiceInfo response: "
7169 << ll_pretty_print_sd(input) << LL_ENDL;
7013 //body has "region_name" (str), "parcel_local_id"(int), 7170 //body has "region_name" (str), "parcel_local_id"(int),
7014 //"voice_credentials" (map). 7171 //"voice_credentials" (map).
7015 7172
@@ -7036,7 +7193,10 @@ class LLViewerParcelVoiceInfo : public LLHTTPNode
7036 voice_credentials["channel_credentials"].asString(); 7193 voice_credentials["channel_credentials"].asString();
7037 } 7194 }
7038 7195
7039 gVoiceClient->setSpatialChannel(uri, credentials); 7196 LLUUID response_id;
7197 response_id.generate();
7198 gVoiceClient->setPIRCapResponseID(response_id);
7199 gVoiceClient->setSpatialChannel(uri, credentials, response_id);
7040 } 7200 }
7041 } 7201 }
7042 } 7202 }
@@ -7050,10 +7210,13 @@ class LLViewerRequiredVoiceVersion : public LLHTTPNode
7050 const LLSD& context, 7210 const LLSD& context,
7051 const LLSD& input) const 7211 const LLSD& input) const
7052 { 7212 {
7213
7053 //You received this messsage (most likely on region cross or 7214 //You received this messsage (most likely on region cross or
7054 //teleport) 7215 //teleport)
7055 if ( input.has("body") && input["body"].has("major_version") ) 7216 if ( input.has("body") && input["body"].has("major_version") )
7056 { 7217 {
7218 LL_DEBUGS("VoiceCaps") << "RequiredVoiceVersion response: "
7219 << ll_pretty_print_sd(input)<< LL_ENDL;
7057 int major_voice_version = 7220 int major_voice_version =
7058 input["body"]["major_version"].asInteger(); 7221 input["body"]["major_version"].asInteger();
7059// int minor_voice_version = 7222// int minor_voice_version =
diff --git a/linden/indra/newview/llvoiceclient.h b/linden/indra/newview/llvoiceclient.h
index 9ef3be9..f5c6d87 100644
--- a/linden/indra/newview/llvoiceclient.h
+++ b/linden/indra/newview/llvoiceclient.h
@@ -424,11 +424,15 @@ static void updatePosition(void);
424 const std::string& account_name, 424 const std::string& account_name,
425 const std::string& password, 425 const std::string& password,
426 const std::string& voice_sip_uri_hostname, 426 const std::string& voice_sip_uri_hostname,
427 const std::string& voice_account_server_uri); 427 const std::string& voice_account_server_uri,
428 const LLUUID& response_id);
429
428 void loginSendMessage(); 430 void loginSendMessage();
429 void logout(); 431 void logout();
430 void logoutSendMessage(); 432 void logoutSendMessage();
431 433
434 void loadDaemon(const std::string& scheme);
435
432 void accountListBlockRulesSendMessage(); 436 void accountListBlockRulesSendMessage();
433 void accountListAutoAcceptRulesSendMessage(); 437 void accountListAutoAcceptRulesSendMessage();
434 438
@@ -474,7 +478,8 @@ static void updatePosition(void);
474 const std::string &credentials); 478 const std::string &credentials);
475 void setSpatialChannel( 479 void setSpatialChannel(
476 const std::string &uri, 480 const std::string &uri,
477 const std::string &credentials); 481 const std::string &credentials,
482 const LLUUID& response_id);
478 // start a voice session with the specified user 483 // start a voice session with the specified user
479 void callUser(const LLUUID &uuid); 484 void callUser(const LLUUID &uuid);
480 485
@@ -519,7 +524,7 @@ static void updatePosition(void);
519 524
520 void close(); 525 void close();
521 void start(); 526 void start();
522 527 void setPIRCapResponseID(const LLUUID& response_id){ mPIRCapResponseID = response_id; }
523 private: 528 private:
524 529
525 // internal state for a simple state machine. This is used to deal with the asynchronous nature of some of the messages. 530 // internal state for a simple state machine. This is used to deal with the asynchronous nature of some of the messages.
@@ -595,7 +600,13 @@ static void updatePosition(void);
595 std::string mAccountDisplayName; 600 std::string mAccountDisplayName;
596 std::string mAccountFirstName; 601 std::string mAccountFirstName;
597 std::string mAccountLastName; 602 std::string mAccountLastName;
598 603
604 bool mAccountActive;
605 bool mVAPRequested;
606 std::string mDaemonScheme;
607 LLUUID mVAPCapResponseID;
608 LLUUID mPIRCapResponseID;
609
599 bool mTuningMode; 610 bool mTuningMode;
600 float mTuningEnergy; 611 float mTuningEnergy;
601 std::string mTuningAudioFile; 612 std::string mTuningAudioFile;
diff --git a/linden/indra/newview/llvovolume.cpp b/linden/indra/newview/llvovolume.cpp
index 4a53d4e..8d5bfb4 100644
--- a/linden/indra/newview/llvovolume.cpp
+++ b/linden/indra/newview/llvovolume.cpp
@@ -93,7 +93,6 @@ LLVOVolume::LLVOVolume(const LLUUID &id, const LLPCode pcode, LLViewerRegion *re
93 mRelativeXformInvTrans.setIdentity(); 93 mRelativeXformInvTrans.setIdentity();
94 94
95 mLOD = MIN_LOD; 95 mLOD = MIN_LOD;
96 mSculptLevel = -2;
97 mTextureAnimp = NULL; 96 mTextureAnimp = NULL;
98 mVObjRadius = LLVector3(1,1,0.5f).length(); 97 mVObjRadius = LLVector3(1,1,0.5f).length();
99 mNumFaces = 0; 98 mNumFaces = 0;
@@ -507,9 +506,8 @@ void LLVOVolume::updateTextureVirtualSize()
507 506
508 if (isSculpted()) 507 if (isSculpted())
509 { 508 {
510 LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT); 509 updateSculptTexture();
511 LLUUID id = sculpt_params->getSculptTexture(); 510
512 mSculptTexture = gImageList.getImage(id);
513 if (mSculptTexture.notNull()) 511 if (mSculptTexture.notNull())
514 { 512 {
515 mSculptTexture->setBoostLevel(llmax((S32)mSculptTexture->getBoostLevel(), 513 mSculptTexture->setBoostLevel(llmax((S32)mSculptTexture->getBoostLevel(),
@@ -532,14 +530,14 @@ void LLVOVolume::updateTextureVirtualSize()
532 } 530 }
533 } 531 }
534 532
535 S32 texture_discard = mSculptTexture->getCachedRawImageLevel(); //try to match the texture 533 S32 texture_discard = mSculptTexture->getDiscardLevel(); //try to match the texture
536 S32 current_discard = mSculptLevel; 534 S32 current_discard = getVolume() ? getVolume()->getSculptLevel() : -2;
537 535
538 if (texture_discard >= 0 && //texture has some data available 536 if (texture_discard >= 0 && //texture has some data available
539 (texture_discard < current_discard || //texture has more data than last rebuild 537 (texture_discard < current_discard || //texture has more data than last rebuild
540 current_discard < 0)) //no previous rebuild 538 current_discard < 0)) //no previous rebuild
541 { 539 {
542 markForUpdate(FALSE); 540 gPipeline.markRebuild(mDrawable, LLDrawable::REBUILD_VOLUME, FALSE);
543 mSculptChanged = TRUE; 541 mSculptChanged = TRUE;
544 } 542 }
545 543
@@ -687,19 +685,17 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &volume_params, const S32 detail
687 mVolumeImpl->onSetVolume(volume_params, detail); 685 mVolumeImpl->onSetVolume(volume_params, detail);
688 } 686 }
689 687
688 updateSculptTexture();
690 if (isSculpted()) 689 if (isSculpted())
691 { 690 {
692 mSculptTexture = gImageList.getImage(volume_params.getSculptID());
693 if (mSculptTexture.notNull()) 691 if (mSculptTexture.notNull())
694 { 692 {
695 sculpt(); 693 sculpt();
696 mSculptLevel = getVolume()->getSculptLevel();
697 mSculptSurfaceArea = getVolume()->sculptGetSurfaceArea(); 694 mSculptSurfaceArea = getVolume()->sculptGetSurfaceArea();
698 } 695 }
699 } 696 }
700 else 697 else
701 { 698 {
702 mSculptTexture = NULL;
703 mSculptSurfaceArea = 0.0; 699 mSculptSurfaceArea = 0.0;
704 } 700 }
705 701
@@ -708,6 +704,38 @@ BOOL LLVOVolume::setVolume(const LLVolumeParams &volume_params, const S32 detail
708 return FALSE; 704 return FALSE;
709} 705}
710 706
707
708void LLVOVolume::updateSculptTexture()
709{
710 LLPointer<LLViewerImage> old_sculpt = mSculptTexture;
711 if (isSculpted())
712 {
713 LLSculptParams *sculpt_params = (LLSculptParams *)getParameterEntry(LLNetworkData::PARAMS_SCULPT);
714 LLUUID id = sculpt_params->getSculptTexture();
715 if (id.notNull())
716 {
717 mSculptTexture = gImageList.getImage(id);
718 }
719 }
720 else
721 {
722 mSculptTexture = NULL;
723 }
724
725 if (mSculptTexture != old_sculpt)
726 {
727 if (old_sculpt.notNull())
728 {
729 old_sculpt->removeVolume(this);
730 }
731 if (mSculptTexture.notNull())
732 {
733 mSculptTexture->addVolume(this);
734 }
735 }
736}
737
738
711// sculpt replaces generate() for sculpted surfaces 739// sculpt replaces generate() for sculpted surfaces
712void LLVOVolume::sculpt() 740void LLVOVolume::sculpt()
713{ 741{
@@ -718,7 +746,7 @@ void LLVOVolume::sculpt()
718 S8 sculpt_components = 0; 746 S8 sculpt_components = 0;
719 const U8* sculpt_data = NULL; 747 const U8* sculpt_data = NULL;
720 748
721 S32 discard_level = mSculptTexture->getCachedRawImageLevel() ; 749 S32 discard_level = mSculptTexture->getDiscardLevel() ;
722 LLImageRaw* raw_image = mSculptTexture->getCachedRawImage() ; 750 LLImageRaw* raw_image = mSculptTexture->getCachedRawImage() ;
723 751
724 S32 max_discard = mSculptTexture->getMaxDiscardLevel(); 752 S32 max_discard = mSculptTexture->getMaxDiscardLevel();
@@ -762,7 +790,7 @@ void LLVOVolume::sculpt()
762 } 790 }
763 getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level); 791 getVolume()->sculpt(sculpt_width, sculpt_height, sculpt_components, sculpt_data, discard_level);
764 792
765 /*//notify rebuild any other VOVolumes that reference this sculpty volume 793 //notify rebuild any other VOVolumes that reference this sculpty volume
766 for (S32 i = 0; i < mSculptTexture->getNumVolumes(); ++i) 794 for (S32 i = 0; i < mSculptTexture->getNumVolumes(); ++i)
767 { 795 {
768 LLVOVolume* volume = (*(mSculptTexture->getVolumeList()))[i]; 796 LLVOVolume* volume = (*(mSculptTexture->getVolumeList()))[i];
@@ -770,7 +798,7 @@ void LLVOVolume::sculpt()
770 { 798 {
771 gPipeline.markRebuild(volume->mDrawable, LLDrawable::REBUILD_GEOMETRY, FALSE); 799 gPipeline.markRebuild(volume->mDrawable, LLDrawable::REBUILD_GEOMETRY, FALSE);
772 } 800 }
773 }*/ 801 }
774 } 802 }
775} 803}
776 804
diff --git a/linden/indra/newview/llvovolume.h b/linden/indra/newview/llvovolume.h
index 7fba28c..2da1d7a 100644
--- a/linden/indra/newview/llvovolume.h
+++ b/linden/indra/newview/llvovolume.h
@@ -171,6 +171,7 @@ public:
171 void setTexture(const S32 face); 171 void setTexture(const S32 face);
172 S32 getIndexInTex() const {return mIndexInTex ;} 172 S32 getIndexInTex() const {return mIndexInTex ;}
173 /*virtual*/ BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false); 173 /*virtual*/ BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false);
174 void updateSculptTexture();
174 void setIndexInTex(S32 index) { mIndexInTex = index ;} 175 void setIndexInTex(S32 index) { mIndexInTex = index ;}
175 void sculpt(); 176 void sculpt();
176 void updateRelativeXform(); 177 void updateRelativeXform();
@@ -232,7 +233,6 @@ private:
232 LLFrameTimer mTextureUpdateTimer; 233 LLFrameTimer mTextureUpdateTimer;
233 S32 mLOD; 234 S32 mLOD;
234 BOOL mLODChanged; 235 BOOL mLODChanged;
235 S32 mSculptLevel;
236 BOOL mSculptChanged; 236 BOOL mSculptChanged;
237 LLMatrix4 mRelativeXform; 237 LLMatrix4 mRelativeXform;
238 LLMatrix3 mRelativeXformInvTrans; 238 LLMatrix3 mRelativeXformInvTrans;
@@ -240,7 +240,7 @@ private:
240 F32 mVObjRadius; 240 F32 mVObjRadius;
241 LLVolumeInterface *mVolumeImpl; 241 LLVolumeInterface *mVolumeImpl;
242 LLPointer<LLViewerImage> mSculptTexture; 242 LLPointer<LLViewerImage> mSculptTexture;
243 S32 mIndexInTex; 243 S32 mIndexInTex; // index of this volume in the texture's volume list
244 244
245 // statics 245 // statics
246public: 246public:
diff --git a/linden/indra/newview/packaging/mac/ConfigureDMG.scpt b/linden/indra/newview/packaging/mac/ConfigureDMG.scpt
new file mode 100644
index 0000000..198ab9e
--- /dev/null
+++ b/linden/indra/newview/packaging/mac/ConfigureDMG.scpt
@@ -0,0 +1,110 @@
1(*
2
3@file ConfigureDMG.scpt
4@author Jacek Antonelli
5@brief Script for configuring the Mac installer disk image.
6
7Copyright (c) 2011, Jacek Antonelli
8
9Permission is hereby granted, free of charge, to any person
10obtaining a copy of this software and associated documentation files
11(the "Software"), to deal in the Software without restriction,
12including without limitation the rights to use, copy, modify, merge,
13publish, distribute, sublicense, and/or sell copies of the Software,
14and to permit persons to whom the Software is furnished to do so,
15subject to the following conditions:
16
17The above copyright notice and this permission notice shall be
18included in all copies or substantial portions of the Software.
19
20THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
24BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
25ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
26CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27SOFTWARE.
28
29-----
30
31This AppleScript script configures the view options and icon layout of
32the Mac installer disk image (DMG) as part of the packaging process.
33See also scripts/package.py, which executes this script.
34
35This script takes two required positional command line arguments:
36
37 1: the name of the mounted volume (e.g. for "/Volumes/Imprudence Installer",
38 the volume name is "Imprudence Installer").
39 2: the name of the application file (e.g. "Imprudence.app").
40
41Example usage:
42
43 osascript ConfigureDMG.scpt "Imprudence Installer" "Imprudence.app"
44
45Some preparation is necessary before running this script:
46
47 * The target disk image must be currently attached as a volume, with
48 the volume name specified by the first command line argument.
49 * The volume must contain the application file, with the file
50 name specified by the second command line argument.
51 * The volume must contain the "background.png" image file.
52 * The volume must not contain a file or folder named "Applications".
53 * It might be necessary to "Enable access for assistive devices"
54 in System Preferences > Universal Access.
55
56*)
57
58on run argv
59
60 -- Read the first positional argument, the volume name.
61 set volumeName to item 1 of argv
62
63 -- Read the second positional argument, the app name.
64 set appName to item 2 of argv
65
66 tell application "Finder" to tell disk volumeName
67 -- Open the volume in a Finder window.
68 open
69 set theWindow to the container window
70
71 -- Tweak some options.
72 set current view of theWindow to icon view
73 set toolbar visible of theWindow to false
74 set statusbar visible of theWindow to false
75
76 -- Set window to position {150,150}, size {+600,+420}.
77 set bounds of theWindow to {150, 150, 750, 570}
78
79 -- Tweak some more options.
80 set viewOptions to the icon view options of theWindow
81 set arrangement of viewOptions to not arranged
82 set icon size of viewOptions to 128
83
84 -- Make sure background.png is visible, so Finder can see it.
85 set bgPicPath to the quoted form of (the POSIX path of (it as alias) & "background.png")
86 do shell script ("SetFile -a v " & bgPicPath)
87 update without registering applications
88
89 -- Use background.png as the background picture.
90 set background picture of viewOptions to file "background.png"
91
92 -- Now set background.png to invisible, so the end user won't see it.
93 do shell script ("SetFile -a V " & bgPicPath)
94
95 -- Position the application file.
96 set position of item appName of theWindow to {138, 260}
97
98 -- Create and position an alias to the Applications folder.
99 set appAlias to make new alias file at theWindow to POSIX file "/Applications"
100 set name of appAlias to "Applications"
101 set position of appAlias to {470, 260}
102
103 -- Visually update the window so all the changes take effect.
104 update without registering applications
105
106 -- Pause briefly so we can admire the results.
107 delay 2
108 end tell
109
110end run
diff --git a/linden/indra/newview/packaging/mac/English.lproj/InfoPlist.strings b/linden/indra/newview/packaging/mac/English.lproj/InfoPlist.strings
new file mode 100644
index 0000000..1ebe727
--- /dev/null
+++ b/linden/indra/newview/packaging/mac/English.lproj/InfoPlist.strings
@@ -0,0 +1,5 @@
1/* Localized versions of Info.plist keys */
2
3CFBundleName = "Imprudence";
4CFBundleShortVersionString = "Imprudence 1.4.0 beta 1";
5CFBundleGetInfoString = "Imprudence 1.4.0 beta 1";
diff --git a/linden/indra/newview/English.lproj/language.txt b/linden/indra/newview/packaging/mac/English.lproj/language.txt
index bc0aa57..bc0aa57 100644
--- a/linden/indra/newview/English.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/English.lproj/language.txt
diff --git a/linden/indra/newview/packaging/mac/GenerateInfoPlist.cmake b/linden/indra/newview/packaging/mac/GenerateInfoPlist.cmake
new file mode 100644
index 0000000..ecbec34
--- /dev/null
+++ b/linden/indra/newview/packaging/mac/GenerateInfoPlist.cmake
@@ -0,0 +1,39 @@
1#
2# Generate the Info.plist file from the template.
3# Only @-style "@VARIABLES@" are substituted in the template (not "${VARIABLES}").
4#
5# This script is needed because CMake has no other way to perform
6# configure_file() as a build-time custom command. :(
7#
8# When running this script, you must define (-D) SOURCE_DIR and
9# BINARY_DIR to refer to indra and the build directory respectively.
10# (Equivalent to CMAKE_SOURCE_DIR and CMAKE_BINARY_DIR in
11# CMakeLists.txt )
12#
13
14if (NOT SOURCE_DIR)
15 message( FATAL_ERROR "You forgot to define SOURCE_DIR!" )
16endif (NOT SOURCE_DIR)
17
18if (NOT BINARY_DIR)
19 message( FATAL_ERROR "You forgot to define BINARY_DIR!" )
20endif (NOT BINARY_DIR)
21
22set(SCRIPTS_DIR "${SOURCE_DIR}/../scripts")
23set(CMAKE_MODULE_PATH "${SOURCE_DIR}/cmake/" "${CMAKE_ROOT/Modules}")
24
25include(BuildVersion)
26build_version(viewer)
27
28SET( BUNDLE_NAME "${viewer_NAME}" )
29SET( EXECUTABLE "${viewer_NAME}" )
30set( BUNDLE_VERSION "${viewer_VERSION}" )
31set( SHORT_VERSION_STRING "${viewer_NAME} ${viewer_VERSION}" )
32set( ICON_FILE "viewer.icns" )
33set( IDENTIFIER "${viewer_BUNDLE_ID}" )
34set( SIGNATURE "impr" )
35
36configure_file(
37 ${SOURCE_DIR}/newview/packaging/mac/Info.plist.in
38 ${BINARY_DIR}/newview/packaging/mac/Info.plist
39 @ONLY)
diff --git a/linden/indra/newview/German.lproj/language.txt b/linden/indra/newview/packaging/mac/German.lproj/language.txt
index c42e816..c42e816 100644
--- a/linden/indra/newview/German.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/German.lproj/language.txt
diff --git a/linden/indra/newview/Info-meta-impy.plist b/linden/indra/newview/packaging/mac/Info.plist.in
index 3469e5c..3469e5c 100644
--- a/linden/indra/newview/Info-meta-impy.plist
+++ b/linden/indra/newview/packaging/mac/Info.plist.in
diff --git a/linden/indra/newview/Japanese.lproj/language.txt b/linden/indra/newview/packaging/mac/Japanese.lproj/language.txt
index c6e3ab6..c6e3ab6 100644
--- a/linden/indra/newview/Japanese.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/Japanese.lproj/language.txt
diff --git a/linden/indra/newview/Korean.lproj/language.txt b/linden/indra/newview/packaging/mac/Korean.lproj/language.txt
index b03ec72..b03ec72 100644
--- a/linden/indra/newview/Korean.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/Korean.lproj/language.txt
diff --git a/linden/indra/newview/packaging/mac/background.png b/linden/indra/newview/packaging/mac/background.png
new file mode 100644
index 0000000..9b0b0b2
--- /dev/null
+++ b/linden/indra/newview/packaging/mac/background.png
Binary files differ
diff --git a/linden/indra/newview/da.lproj/language.txt b/linden/indra/newview/packaging/mac/da.lproj/language.txt
index 316d25d..316d25d 100644
--- a/linden/indra/newview/da.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/da.lproj/language.txt
diff --git a/linden/indra/newview/es.lproj/language.txt b/linden/indra/newview/packaging/mac/es.lproj/language.txt
index 6c43814..6c43814 100644
--- a/linden/indra/newview/es.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/es.lproj/language.txt
diff --git a/linden/indra/newview/fr.lproj/language.txt b/linden/indra/newview/packaging/mac/fr.lproj/language.txt
index 717280a..717280a 100644
--- a/linden/indra/newview/fr.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/fr.lproj/language.txt
diff --git a/linden/indra/newview/hu.lproj/language.txt b/linden/indra/newview/packaging/mac/hu.lproj/language.txt
index 6c604cf..6c604cf 100644
--- a/linden/indra/newview/hu.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/hu.lproj/language.txt
diff --git a/linden/indra/newview/it.lproj/language.txt b/linden/indra/newview/packaging/mac/it.lproj/language.txt
index c919714..c919714 100644
--- a/linden/indra/newview/it.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/it.lproj/language.txt
diff --git a/linden/indra/newview/nl.lproj/language.txt b/linden/indra/newview/packaging/mac/nl.lproj/language.txt
index d5f5c2a..d5f5c2a 100644
--- a/linden/indra/newview/nl.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/nl.lproj/language.txt
diff --git a/linden/indra/newview/pl.lproj/language.txt b/linden/indra/newview/packaging/mac/pl.lproj/language.txt
index 55239f3..55239f3 100644
--- a/linden/indra/newview/pl.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/pl.lproj/language.txt
diff --git a/linden/indra/newview/pt.lproj/language.txt b/linden/indra/newview/packaging/mac/pt.lproj/language.txt
index 9e3340e..9e3340e 100644
--- a/linden/indra/newview/pt.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/pt.lproj/language.txt
diff --git a/linden/indra/newview/ru.lproj/language.txt b/linden/indra/newview/packaging/mac/ru.lproj/language.txt
index adc719b..adc719b 100644
--- a/linden/indra/newview/ru.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/ru.lproj/language.txt
diff --git a/linden/indra/newview/tr.lproj/language.txt b/linden/indra/newview/packaging/mac/tr.lproj/language.txt
index 44266bf..44266bf 100644
--- a/linden/indra/newview/tr.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/tr.lproj/language.txt
diff --git a/linden/indra/newview/uk.lproj/language.txt b/linden/indra/newview/packaging/mac/uk.lproj/language.txt
index fbc658f..fbc658f 100644
--- a/linden/indra/newview/uk.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/uk.lproj/language.txt
diff --git a/linden/indra/newview/SecondLife.nib/classes.nib b/linden/indra/newview/packaging/mac/viewer.nib/classes.nib
index ea58db1..ea58db1 100644
--- a/linden/indra/newview/SecondLife.nib/classes.nib
+++ b/linden/indra/newview/packaging/mac/viewer.nib/classes.nib
diff --git a/linden/indra/newview/SecondLife.nib/info.nib b/linden/indra/newview/packaging/mac/viewer.nib/info.nib
index 1b531de..1b531de 100644
--- a/linden/indra/newview/SecondLife.nib/info.nib
+++ b/linden/indra/newview/packaging/mac/viewer.nib/info.nib
diff --git a/linden/indra/newview/SecondLife.nib/objects.xib b/linden/indra/newview/packaging/mac/viewer.nib/objects.xib
index 7ef13e0..7ef13e0 100644
--- a/linden/indra/newview/SecondLife.nib/objects.xib
+++ b/linden/indra/newview/packaging/mac/viewer.nib/objects.xib
diff --git a/linden/indra/newview/zh-Hans.lproj/language.txt b/linden/indra/newview/packaging/mac/zh-Hans.lproj/language.txt
index 147d659..147d659 100644
--- a/linden/indra/newview/zh-Hans.lproj/language.txt
+++ b/linden/indra/newview/packaging/mac/zh-Hans.lproj/language.txt
diff --git a/linden/indra/newview/primbackup.cpp b/linden/indra/newview/primbackup.cpp
index a534cef..29b635e 100644
--- a/linden/indra/newview/primbackup.cpp
+++ b/linden/indra/newview/primbackup.cpp
@@ -632,6 +632,8 @@ void primbackup::export_next_texture()
632 632
633void primbackup::import_object(bool upload) 633void primbackup::import_object(bool upload)
634{ 634{
635
636
635 textures.clear(); 637 textures.clear();
636 assetmap.clear(); 638 assetmap.clear();
637 current_asset=LLUUID::null; 639 current_asset=LLUUID::null;
@@ -648,9 +650,21 @@ void primbackup::import_object(bool upload)
648 std::string file_name = file_picker.getFirstFile().c_str(); 650 std::string file_name = file_picker.getFirstFile().c_str();
649 folder = gDirUtilp->getDirName(file_name); 651 folder = gDirUtilp->getDirName(file_name);
650 652
651 llifstream import_file(file_name); 653 {
652 LLSDSerialize::fromXML(llsd, import_file); 654 LLSD import_llsd;
653 import_file.close(); 655 llifstream import_file(file_name);
656 S32 status;
657 status = LLSDSerialize::fromXML(import_llsd, import_file);
658 import_file.close();
659
660 if (LLSDParser::PARSE_FAILURE == status)
661 {
662 llwarns << "invalid xml file." << llendl;
663 return;
664 }
665
666 llsd = import_llsd;
667 }
654 668
655 show(); 669 show();
656 670
diff --git a/linden/indra/newview/res/viewerRes.rc b/linden/indra/newview/res/viewerRes.rc
index 65d4cbb..e4d8e9c 100644
--- a/linden/indra/newview/res/viewerRes.rc
+++ b/linden/indra/newview/res/viewerRes.rc
@@ -138,8 +138,8 @@ TOOLMEDIAOPEN CURSOR "toolmediaopen.cur"
138// 138//
139 139
140VS_VERSION_INFO VERSIONINFO 140VS_VERSION_INFO VERSIONINFO
141 FILEVERSION 1,3,0 141 FILEVERSION 1,4,0
142 PRODUCTVERSION 1,3,0 142 PRODUCTVERSION 1,4,0
143 FILEFLAGSMASK 0x3fL 143 FILEFLAGSMASK 0x3fL
144#ifdef _DEBUG 144#ifdef _DEBUG
145 FILEFLAGS 0x1L 145 FILEFLAGS 0x1L
@@ -155,12 +155,12 @@ BEGIN
155 BLOCK "040904b0" 155 BLOCK "040904b0"
156 BEGIN 156 BEGIN
157 VALUE "CompanyName", "meta-impy Viewer Project" 157 VALUE "CompanyName", "meta-impy Viewer Project"
158 VALUE "FileDescription", "meta-impy Experimental" 158 VALUE "FileDescription", "meta-impy"
159 VALUE "FileVersion", "2011.04.02" 159 VALUE "FileVersion", "1.4.0 beta 1"
160 VALUE "InternalName", "meta-impy Experimental" 160 VALUE "InternalName", "meta-impy"
161 VALUE "OriginalFilename", "meta-impy.exe" 161 VALUE "OriginalFilename", "meta-impy.exe"
162 VALUE "ProductName", "meta-impy Weekly" 162 VALUE "ProductName", "meta-impy"
163 VALUE "ProductVersion", "2011.04.02" 163 VALUE "ProductVersion", "1.4.0 beta 1"
164 END 164 END
165 END 165 END
166 BLOCK "VarFileInfo" 166 BLOCK "VarFileInfo"
diff --git a/linden/indra/newview/skins/default/textures/textures.xml b/linden/indra/newview/skins/default/textures/textures.xml
index 60fb4e0..9151ee9 100644
--- a/linden/indra/newview/skins/default/textures/textures.xml
+++ b/linden/indra/newview/skins/default/textures/textures.xml
@@ -397,5 +397,10 @@
397 <texture name="media_btn_stoploading.png"/> 397 <texture name="media_btn_stoploading.png"/>
398 <texture name="media_panel_divider.png"/> 398 <texture name="media_panel_divider.png"/>
399 <texture name="media_panel_scrollbg.png"/> 399 <texture name="media_panel_scrollbg.png"/>
400
401 <texture name="go-previous-4.png"/>
402 <texture name="go-next-4.png"/>
403 <texture name="view-refresh-5.png"/>
404 <texture name="go-home-4.png"/>
400 405
401</textures> 406</textures>
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_about.xml b/linden/indra/newview/skins/default/xui/en-us/floater_about.xml
index d0f72c2..95cdcd0 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_about.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_about.xml
@@ -57,24 +57,24 @@
57 57
58 Many thanks to the many residents in many grids who contributed towards this viewer in countless ways. 58 Many thanks to the many residents in many grids who contributed towards this viewer in countless ways.
59 59
60 3Dconnexion SDK Copyright (C) 1992-2007 3Dconnexion 60 3Dconnexion SDK Copyright © 1992-2007 3Dconnexion
61 APR Copyright (C) 2000-2004 The Apache Software Foundation 61 APR Copyright © 2000-2004 The Apache Software Foundation
62 cURL Copyright (C) 1996-2002, Daniel Stenberg, (daniel@haxx.se) 62 cURL Copyright © 1996-2002, Daniel Stenberg, (daniel@haxx.se)
63 DBus/dbus-glib Copyright (C) 2002, 2003 CodeFactory AB / Copyright (C) 2003, 2004 Red Hat, Inc. 63 DBus/dbus-glib Copyright © 2002, 2003 CodeFactory AB / Copyright © 2003, 2004 Red Hat, Inc.
64 expat Copyright (C) 1998, 1999, 2000 Thai Open Source Software Center Ltd. 64 expat Copyright © 1998, 1999, 2000 Thai Open Source Software Center Ltd.
65 FreeType Copyright (C) 1996-2002, The FreeType Project (www.freetype.org). 65 FreeType Copyright © 1996-2002, The FreeType Project (www.freetype.org).
66 GL Copyright (C) 1999-2004 Brian Paul. 66 GL Copyright © 1999-2004 Brian Paul.
67 Havok.com(TM) Copyright (C) 1999-2001, Telekinesys Research Limited. 67 Havok.com(TM) Copyright © 1999-2001, Telekinesys Research Limited.
68 jpeg2000 Copyright (C) 2001, David Taubman, The University of New South Wales (UNSW) 68 jpeg2000 Copyright © 2001, David Taubman, The University of New South Wales (UNSW)
69 jpeglib Copyright (C) 1991-1998, Thomas G. Lane. 69 jpeglib Copyright © 1991-1998, Thomas G. Lane.
70 ogg/vorbis Copyright (C) 2001, Xiphophorus 70 ogg/vorbis Copyright © 2001, Xiphophorus
71 OpenSSL Copyright (C) 1998-2002 The OpenSSL Project. 71 OpenSSL Copyright © 1998-2002 The OpenSSL Project.
72 SDL Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga 72 SDL Copyright © 1997, 1998, 1999, 2000, 2001, 2002 Sam Lantinga
73 SSLeay Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 73 SSLeay Copyright © 1995-1998 Eric Young (eay@cryptsoft.com)
74 xmlrpc-epi Copyright (C) 2000 Epinions, Inc. 74 xmlrpc-epi Copyright © 2000 Epinions, Inc.
75 zlib Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler. 75 zlib Copyright © 1995-2002 Jean-loup Gailly and Mark Adler.
76 google-perftools Copyright (c) 2005, Google Inc. 76 google-perftools Copyright © 2005, Google Inc.
77 Code from FAAD2 is copyright (c) Nero AG, www.nero.com 77 Code from FAAD2 is copyright © Nero AG, www.nero.com
78 78
79 All rights reserved. See LICENSE-libraries.txt for details. 79 All rights reserved. See LICENSE-libraries.txt for details.
80 80
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_about_land.xml b/linden/indra/newview/skins/default/xui/en-us/floater_about_land.xml
index d57ca5f..fcaa869 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_about_land.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_about_land.xml
@@ -888,7 +888,7 @@ Only large parcels can be listed in search.
888 height="16" 888 height="16"
889 left="10" 889 left="10"
890 length="1" 890 length="1"
891 name="at URL:" 891 name="Current URL:"
892 type="string" 892 type="string"
893 width="65"> 893 width="65">
894 Current URL: 894 Current URL:
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_busy.xml b/linden/indra/newview/skins/default/xui/en-us/floater_busy.xml
index 9f55f67..50ec87c 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_busy.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_busy.xml
@@ -93,4 +93,4 @@
93 <button bottom_delta="0" follows="top|right" height="22" label="OK" 93 <button bottom_delta="0" follows="top|right" height="22" label="OK"
94 right="-85" name="btn_ok" tool_tip="" enabled="true" width="80" /> 94 right="-85" name="btn_ok" tool_tip="" enabled="true" width="80" />
95 95
96</floater> \ No newline at end of file 96</floater>
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_command_line.xml b/linden/indra/newview/skins/default/xui/en-us/floater_command_line.xml
index 13b334b..a1eb3c8 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_command_line.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_command_line.xml
@@ -93,12 +93,12 @@
93 font="SansSerifSmall" height="20" left_delta="0" max_length="256" mouse_opaque="true" 93 font="SansSerifSmall" height="20" left_delta="0" max_length="256" mouse_opaque="true"
94 tool_tip="Clears the Chat History to prevent lag effects from chat spammers." name="CmdLineChatbarClearChat" control_name="CmdLineChatbarClearChat" width="200"/> 94 tool_tip="Clears the Chat History to prevent lag effects from chat spammers." name="CmdLineChatbarClearChat" control_name="CmdLineChatbarClearChat" width="200"/>
95 <text bottom_delta="-18" follows="left|top" font="SansSerifSmall" height="16" left_delta="0" 95 <text bottom_delta="-18" follows="left|top" font="SansSerifSmall" height="16" left_delta="0"
96 name="loltxt15" width="512"> Set the media url (usage: cmd url type)</text> 96 name="set_media_url_text" width="512"> Set the media url (usage: cmd url type)</text>
97 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-20" follows="left|top" 97 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-20" follows="left|top"
98 font="SansSerifSmall" height="20" left_delta="0" max_length="256" mouse_opaque="true" 98 font="SansSerifSmall" height="20" left_delta="0" max_length="256" mouse_opaque="true"
99 tool_tip="Sets and plays your media stream to the entered url" name="CmdLineChatbarMedia" control_name="CmdLineChatbarMedia" width="200"/> 99 tool_tip="Sets and plays your media stream to the entered url" name="CmdLineChatbarMedia" control_name="CmdLineChatbarMedia" width="200"/>
100 <text bottom_delta="-18" follows="left|top" font="SansSerifSmall" height="16" left_delta="0" 100 <text bottom_delta="-18" follows="left|top" font="SansSerifSmall" height="16" left_delta="0"
101 name="loltxt15" width="512"> Set the music stream url (usage: cmd url)</text> 101 name="set_music_url_text" width="512"> Set the music stream url (usage: cmd url)</text>
102 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-20" follows="left|top" 102 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-20" follows="left|top"
103 font="SansSerifSmall" height="20" left_delta="0" max_length="256" mouse_opaque="true" 103 font="SansSerifSmall" height="20" left_delta="0" max_length="256" mouse_opaque="true"
104 tool_tip="sets and plays your music stream to the entered url" name="CmdLineChatbarMusic" control_name="CmdLineChatbarMusic" width="200"/> 104 tool_tip="sets and plays your music stream to the entered url" name="CmdLineChatbarMusic" control_name="CmdLineChatbarMusic" width="200"/>
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_grid_default_selector.xml b/linden/indra/newview/skins/default/xui/en-us/floater_grid_default_selector.xml
index 157588d..51ba35f 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_grid_default_selector.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_grid_default_selector.xml
@@ -17,4 +17,4 @@
17 right="-5" name="btn_cancel" width="85" /> 17 right="-5" name="btn_cancel" width="85" />
18 <button bottom_delta="0" follows="bottom|right" height="20" label="OK" 18 <button bottom_delta="0" follows="bottom|right" height="20" label="OK"
19 left_delta="-90" name="btn_ok" width="85" /> 19 left_delta="-90" name="btn_ok" width="85" />
20</floater> \ No newline at end of file 20</floater>
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml b/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml
index 3ab7c7b..554f79d 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_inventory.xml
@@ -170,7 +170,7 @@
170 </menu_item_call> 170 </menu_item_call>
171 </menu> 171 </menu>
172 <menu bottom_delta="-599" drop_shadow="true" height="85" left="0" 172 <menu bottom_delta="-599" drop_shadow="true" height="85" left="0"
173 mouse_opaque="false" name="New Body Parts" opaque="true" width="118"> 173 mouse_opaque="false" label="New Body Parts" name="New Body Parts" opaque="true" width="118">
174 <menu_item_call bottom_delta="-18" height="18" label="New Shape" left="0" mouse_opaque="true" 174 <menu_item_call bottom_delta="-18" height="18" label="New Shape" left="0" mouse_opaque="true"
175 name="New Shape" width="118"> 175 name="New Shape" width="118">
176 <on_click filter="" function="Inventory.DoCreate" userdata="shape" /> 176 <on_click filter="" function="Inventory.DoCreate" userdata="shape" />
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_local_asset_browse.xml b/linden/indra/newview/skins/default/xui/en-us/floater_local_asset_browse.xml
index f9bb3a7..a8ce59c 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_local_asset_browse.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_local_asset_browse.xml
@@ -118,12 +118,12 @@
118 default_image_name="Default" 118 default_image_name="Default"
119 can_apply_immediately="true" 119 can_apply_immediately="true"
120 follows="left|top" 120 follows="left|top"
121 label="Texture"
122 bottom_delta="20" 121 bottom_delta="20"
123 left_delta="0" 122 left_delta="0"
124 mouse_opaque="true" 123 mouse_opaque="true"
125 name="texture_view" 124 name="texture_view"
126 visible="true" 125 visible="true"
126 enabled="false"
127 /> 127 />
128 128
129 <check_box 129 <check_box
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml b/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml
index c1bfdcc..76eee6f 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_media_browser.xml
@@ -3,20 +3,20 @@
3 height="440" min_height="140" min_width="467" name="floater_about" 3 height="440" min_height="140" min_width="467" name="floater_about"
4 rect_control="FloaterMediaRect" title="Web Browser" width="560"> 4 rect_control="FloaterMediaRect" title="Web Browser" width="560">
5 <layout_stack name="stack1" bottom="0" follows="left|right|top|bottom" left="10" top="-20" width="540"> 5 <layout_stack name="stack1" bottom="0" follows="left|right|top|bottom" left="10" top="-20" width="540">
6 <layout_panel auto_resize="false" bottom="0" height="20" left="0" name="nav_controls" user_resize="false" 6 <layout_panel auto_resize="false" bottom="0" height="25" left="0" name="nav_controls" user_resize="false"
7 width="800"> 7 width="800">
8 <button bottom="0" follows="left|top" height="20" label="Back" left="0" name="back" 8 <button bottom="0" follows="left|top" height="25" label="" image_overlay="go-previous-4.png" left="0" name="back"
9 width="55" /> 9 width="25" />
10 <button bottom_delta="0" follows="left|top" height="20" label="Forward" left_delta="55" 10 <button bottom_delta="0" follows="left|top" height="25" label="" image_overlay="go-next-4.png" left_delta="27"
11 name="forward" width="68" /> 11 name="forward" width="25" />
12 <button bottom_delta="0" enabled="false" follows="left|top" height="20" label="Reload" 12 <button bottom_delta="0" enabled="false" follows="left|top" height="25" label="" image_overlay="view-refresh-5.png"
13 left_delta="70" name="reload" width="70" /> 13 left_delta="27" name="reload" width="25" />
14 <combo_box allow_text_entry="true" bottom_delta="0" follows="left|top|right" height="20" 14 <combo_box allow_text_entry="true" bottom_delta="4" follows="left|top|right" height="20"
15 left_delta="75" max_chars="255" name="address" width="485" /> 15 left_delta="29" max_chars="255" name="address" width="622" />
16 <button bottom_delta="0" enabled="false" follows="right|top" height="20" label="Go" 16 <button bottom_delta="-4" enabled="false" follows="right|top" height="25" label="Go" font="SansSerif"
17 left_delta="487" name="go" width="55" /> 17 left_delta="625" name="go" width="55" />
18 <button bottom_delta="0" enabled="true" follows="right|top" height="20" label="Home" 18 <button bottom_delta="0" enabled="true" follows="right|top" height="25" label="" image_overlay="go-home-4.png"
19 left_delta="58" name="home" width="55" /> 19 left_delta="58" name="home" width="35" />
20 </layout_panel> 20 </layout_panel>
21 <layout_panel auto_resize="false" bottom="0" height="20" left="0" name="time_controls" user_resize="false" 21 <layout_panel auto_resize="false" bottom="0" height="20" left="0" name="time_controls" user_resize="false"
22 width="800"> 22 width="800">
@@ -33,22 +33,19 @@
33 </layout_panel> 33 </layout_panel>
34 <layout_panel auto_resize="false" bottom="0" height="20" left="0" 34 <layout_panel auto_resize="false" bottom="0" height="20" left="0"
35 name="parcel_owner_controls" user_resize="false" width="540"> 35 name="parcel_owner_controls" user_resize="false" width="540">
36 <button bottom="0" enabled="false" follows="left|top" height="20" 36 <button bottom="0" enabled="false" follows="left|top" height="22"
37 label="Send Current URL to Parcel" left="0" name="assign" width="200" /> 37 label="Send Current URL To Parcel" left="0" name="assign" width="200" />
38 </layout_panel> 38 </layout_panel>
39 <layout_panel auto_resize="true" bottom="0" height="20" left="0" name="external_controls" user_resize="false" 39 <layout_panel auto_resize="true" bottom="0" height="20" left="0" name="external_controls" user_resize="false"
40 width="540"> 40 width="540">
41 <web_browser bottom="30" follows="left|right|top|bottom" left="0" name="browser" top="20" 41 <web_browser bottom="30" follows="left|right|top|bottom" left="0" name="browser" top="20"
42 width="540" /> 42 width="540" />
43 <button bottom="5" follows="bottom|left" height="20" label="Open in My Web Browser" 43 <button bottom="4" follows="bottom|left" height="22" label="Open In External Browser" font="SansSerif"
44 left="0" name="open_browser" width="185" /> 44 left="0" name="open_browser" width="185" />
45 <check_box bottom="5" control_name="UseExternalBrowser" follows="bottom|left" height="20" 45 <check_box bottom="6" control_name="UseExternalBrowser" follows="bottom|left" height="22"
46 label="Always open in my web browser" left_delta="184" name="open_always" 46 label="Always open in external browser" left_delta="190" name="open_always" width="200" />
47 width="200" /> 47 <button bottom="4" enabled="false" follows="bottom|right" height="22" label="Set As Home" font="SansSerif"
48 <button bottom="5" enabled="false" follows="bottom|right" height="20" label="Set As Home" 48 left="-110" name="set_home" width="104" />
49 left="-176" name="set_home" width="104" />
50 <button bottom="5" follows="bottom|right" height="20" label="Close" left="-70"
51 name="close" width="70" />
52 </layout_panel> 49 </layout_panel>
53 </layout_stack> 50 </layout_stack>
54 <string name="home_page_url"> 51 <string name="home_page_url">
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_preview_notecard.xml b/linden/indra/newview/skins/default/xui/en-us/floater_preview_notecard.xml
index fe2d977..ce6ab7d 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_preview_notecard.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_preview_notecard.xml
@@ -20,14 +20,14 @@
20 <menu_bar bottom="-56" drop_shadow="false" enabled="true" follows="left|top|right" 20 <menu_bar bottom="-56" drop_shadow="false" enabled="true" follows="left|top|right"
21 height="18" left="8" mouse_opaque="false" name="motecard_menu" opaque="false" 21 height="18" left="8" mouse_opaque="false" name="motecard_menu" opaque="false"
22 tear_off="false" width="220"> 22 tear_off="false" width="220">
23 <menu drop_shadow="true" enabled="true" mouse_opaque="false" name="File" opaque="true" tear_off="false"> 23 <menu drop_shadow="true" enabled="true" label="File" mouse_opaque="false" name="File" opaque="true" tear_off="false">
24 <menu_item_call enabled="false" mouse_opaque="true" label="Save" name="Save Menu" shortcut="control|S" /> 24 <menu_item_call enabled="false" mouse_opaque="true" label="Save" name="Save Menu" shortcut="control|S" />
25 <menu_item_separator /> 25 <menu_item_separator />
26 <menu_item_call enabled="false" mouse_opaque="true" label="Export Text..." name="Export Text..." /> 26 <menu_item_call enabled="false" mouse_opaque="true" label="Export Text..." name="Export Text..." />
27 <menu_item_call enabled="false" mouse_opaque="true" label="Import Text..." name="Import Text..." /> 27 <menu_item_call enabled="false" mouse_opaque="true" label="Import Text..." name="Import Text..." />
28 </menu> 28 </menu>
29 <menu bottom_delta="16" left="0" drop_shadow="true" enabled="true" height="198" width="150" 29 <menu bottom_delta="16" left="0" drop_shadow="true" enabled="true" height="198" width="150"
30 mouse_opaque="false" name="Edit" opaque="true" tear_off="false"> 30 label="Edit" mouse_opaque="false" name="Edit" opaque="true" tear_off="false">
31 <menu_item_call bottom_delta="-30" enabled="false" height="20" label="Undo" left="0" 31 <menu_item_call bottom_delta="-30" enabled="false" height="20" label="Undo" left="0"
32 mouse_opaque="true" name="Undo" width="139" /> 32 mouse_opaque="true" name="Undo" width="139" />
33 <menu_item_call bottom_delta="-50" enabled="false" height="20" label="Redo" left="0" 33 <menu_item_call bottom_delta="-50" enabled="false" height="20" label="Redo" left="0"
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_radar.xml b/linden/indra/newview/skins/default/xui/en-us/floater_radar.xml
index 7db7330..bfe30d4 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_radar.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_radar.xml
@@ -187,7 +187,7 @@
187 tool_tip="Report avatars getting within or beyond the draw distance" /> 187 tool_tip="Report avatars getting within or beyond the draw distance" />
188 188
189 <check_box height="16" label="Avatars within/beyond the shout range" 189 <check_box height="16" label="Avatars within/beyond the shout range"
190 left="20" bottom_delta="-18" name="alerts_chat" 190 left="20" bottom_delta="-18" name="alerts_shout"
191 width="200" follows="bottom|left" 191 width="200" follows="bottom|left"
192 hidden="false" mouse_opaque="true" font="SansSerifSmall" 192 hidden="false" mouse_opaque="true" font="SansSerifSmall"
193 initial_value="true" enabled="true" radio_style="false" 193 initial_value="true" enabled="true" radio_style="false"
@@ -324,4 +324,4 @@
324 /> 324 />
325 </panel> 325 </panel>
326 </tab_container> 326 </tab_container>
327</floater> \ No newline at end of file 327</floater>
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_login.xml b/linden/indra/newview/skins/default/xui/en-us/menu_login.xml
index 87907ec..ffdafe2 100644
--- a/linden/indra/newview/skins/default/xui/en-us/menu_login.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/menu_login.xml
@@ -1,18 +1,24 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<menu_bar name="Login Menu" opaque="true" tear_off="false" height="18" bottom="-18" follows="left|top|right"> 2<menu_bar name="Login Menu" opaque="true" tear_off="false"
3 <menu create_jump_keys="true" label="File" name="File" opaque="true" tear_off="false"> 3 mouse_opaque="false"
4 <menu_item_call label="Quit" name="Quit" shortcut="control|Q"> 4 drop_shadow="false"
5 <on_click function="File.Quit" userdata="" /> 5 height="18" bottom="-18" follows="left|top|right">
6 </menu_item_call> 6 <menu create_jump_keys="true" label="File" name="File" opaque="true" tear_off="false"
7 </menu> 7 drop_shadow="true" mouse_opaque="false">
8 <menu create_jump_keys="true" label="Edit" name="Edit" 8 <menu_item_call label="Quit" name="Quit" shortcut="control|Q">
9 opaque="true" tear_off="false"> 9 <on_click function="File.Quit" userdata="" />
10 </menu_item_call>
11 </menu>
12 <menu create_jump_keys="true" label="Edit" name="Edit"
13 opaque="true" tear_off="false"
14 drop_shadow="true" mouse_opaque="false">
10 <menu_item_call label="Preferences..." name="Preferences..." shortcut="control|P"> 15 <menu_item_call label="Preferences..." name="Preferences..." shortcut="control|P">
11 <on_click function="ShowFloater" userdata="preferences" /> 16 <on_click function="ShowFloater" userdata="preferences" />
12 </menu_item_call> 17 </menu_item_call>
13 </menu> 18 </menu>
14 <menu create_jump_keys="true" label="Help" name="Help" 19 <menu create_jump_keys="true" label="Help" name="Help"
15 opaque="true" tear_off="false"> 20 opaque="true" tear_off="false"
21 drop_shadow="true" mouse_opaque="false">
16 <menu_item_call label="Grid Help" name="Grid Help" shortcut="F1"> 22 <menu_item_call label="Grid Help" name="Grid Help" shortcut="F1">
17 <on_click function="ShowFloater" userdata="help f1" /> 23 <on_click function="ShowFloater" userdata="help f1" />
18 </menu_item_call> 24 </menu_item_call>
@@ -32,7 +38,8 @@
32 <on_click function="ShowFloater" userdata="about" /> 38 <on_click function="ShowFloater" userdata="about" />
33 </menu_item_call> 39 </menu_item_call>
34 </menu> 40 </menu>
35 <menu name="Advanced" create_jump_keys="true" opaque="true"> 41 <menu name="Advanced" create_jump_keys="true" opaque="true"
42 drop_shadow="true" mouse_opaque="false">
36 <menu_item_call name="Debug Settings" label="Debug Settings"> 43 <menu_item_call name="Debug Settings" label="Debug Settings">
37 <on_click function="Advanced.ShowDebugSettings" userdata="" /> 44 <on_click function="Advanced.ShowDebugSettings" userdata="" />
38 </menu_item_call> 45 </menu_item_call>
diff --git a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
index 603c212..03967d9 100644
--- a/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
@@ -1,12 +1,13 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2 2
3<menu_bar name="Main Menu" drop_shadow="false" follows="left|top|right" 3<menu_bar name="Main Menu" drop_shadow="false" follows="left|top|right"
4 opaque="false" tear_off="false"> 4 opaque="false" mouse_opaque="false" tear_off="false">
5 5
6 6
7 <!-- FILE --> 7 <!-- FILE -->
8 8
9 <menu name="File" create_jump_keys="true" label="File" 9 <menu name="File" create_jump_keys="true" label="File"
10 drop_shadow="true" mouse_opaque="false"
10 opaque="true" tear_off="true"> 11 opaque="true" tear_off="true">
11 <menu label="Upload" create_jump_keys="true" name="Upload" 12 <menu label="Upload" create_jump_keys="true" name="Upload"
12 opaque="true" tear_off="true"> 13 opaque="true" tear_off="true">
@@ -103,6 +104,7 @@
103 <!-- EDIT --> 104 <!-- EDIT -->
104 105
105 <menu name="Edit" create_jump_keys="true" label="Edit" 106 <menu name="Edit" create_jump_keys="true" label="Edit"
107 drop_shadow="true" mouse_opaque="false"
106 opaque="true" tear_off="true"> 108 opaque="true" tear_off="true">
107 <menu_item_call name="Undo" enabled="false" label="Undo" 109 <menu_item_call name="Undo" enabled="false" label="Undo"
108 shortcut="control|Z"> 110 shortcut="control|Z">
@@ -156,13 +158,16 @@
156 <menu_item_separator /> 158 <menu_item_separator />
157 159
158 <menu name="Attach Object" create_jump_keys="true" 160 <menu name="Attach Object" create_jump_keys="true"
161 drop_shadow="true" mouse_opaque="false"
159 label="Attach Object" opaque="true" tear_off="true" /> 162 label="Attach Object" opaque="true" tear_off="true" />
160 163
161 <menu name="Detach Object" create_jump_keys="true" 164 <menu name="Detach Object" create_jump_keys="true"
165 drop_shadow="true" mouse_opaque="false"
162 label="Detach Object" opaque="true" tear_off="true" /> 166 label="Detach Object" opaque="true" tear_off="true" />
163 167
164 168
165 <menu name="Take Off Clothing" create_jump_keys="true" 169 <menu name="Take Off Clothing" create_jump_keys="true"
170 drop_shadow="true" mouse_opaque="false"
166 label="Take Off Clothing" opaque="true" tear_off="true"> 171 label="Take Off Clothing" opaque="true" tear_off="true">
167 172
168 <menu_item_call name="Shirt" enabled="false" label="Shirt"> 173 <menu_item_call name="Shirt" enabled="false" label="Shirt">
@@ -295,6 +300,7 @@
295 <!-- VIEW --> 300 <!-- VIEW -->
296 301
297 <menu name="View" create_jump_keys="true" label="View" 302 <menu name="View" create_jump_keys="true" label="View"
303 drop_shadow="true" mouse_opaque="false"
298 opaque="true" tear_off="true"> 304 opaque="true" tear_off="true">
299 <menu_item_call name="Mouselook" label="Mouselook" 305 <menu_item_call name="Mouselook" label="Mouselook"
300 shortcut="M"> 306 shortcut="M">
@@ -406,6 +412,7 @@
406 </menu_item_check> 412 </menu_item_check>
407 <menu_item_separator /> 413 <menu_item_separator />
408 <menu name="Hover Tips" create_jump_keys="true" label="Hover Tips" 414 <menu name="Hover Tips" create_jump_keys="true" label="Hover Tips"
415 drop_shadow="true" mouse_opaque="false"
409 opaque="true" tear_off="true"> 416 opaque="true" tear_off="true">
410 <menu_item_check name="Show Tips" label="Show Tips" 417 <menu_item_check name="Show Tips" label="Show Tips"
411 shortcut="control|shift|T"> 418 shortcut="control|shift|T">
@@ -449,8 +456,9 @@
449 <on_check function="View.CheckHUDAttachments" /> 456 <on_check function="View.CheckHUDAttachments" />
450 </menu_item_check> 457 </menu_item_check>
451 <menu_item_separator /> 458 <menu_item_separator />
452 <menu name="Zoom Level" create_jump_keys="true" 459 <menu name="Zoom Level" label="Zoom Level" create_jump_keys="true"
453 label="Zoom Level" opaque="true" tear_off="true"> 460 drop_shadow="true" mouse_opaque="false"
461 opaque="true" tear_off="true">
454 <menu_item_call name="Zoom In" label="Zoom In" 462 <menu_item_call name="Zoom In" label="Zoom In"
455 shortcut="control|0"> 463 shortcut="control|0">
456 <on_click function="View.ZoomIn" userdata="" /> 464 <on_click function="View.ZoomIn" userdata="" />
@@ -483,6 +491,7 @@
483 <!-- WORLD --> 491 <!-- WORLD -->
484 492
485 <menu name="World" create_jump_keys="true" label="World" 493 <menu name="World" create_jump_keys="true" label="World"
494 drop_shadow="true" mouse_opaque="false"
486 opaque="true" tear_off="true"> 495 opaque="true" tear_off="true">
487 <menu_item_call name="Chat" label="Chat" shortcut=""> 496 <menu_item_call name="Chat" label="Chat" shortcut="">
488 <on_click function="World.Chat" userdata="" /> 497 <on_click function="World.Chat" userdata="" />
@@ -562,8 +571,9 @@
562 <on_click function="ShowFloater" userdata="about region" /> 571 <on_click function="ShowFloater" userdata="about region" />
563 </menu_item_call> 572 </menu_item_call>
564 <menu_item_separator /> 573 <menu_item_separator />
565 <menu name="Environment Settings" create_jump_keys="true" 574 <menu name="Environment Settings" label="Environment Settings"
566 label="Environment Settings" opaque="true" tear_off="true"> 575 create_jump_keys="true" drop_shadow="true"
576 mouse_opaque="false" opaque="true" tear_off="true">
567 <menu_item_call name="Sunrise" label="Sunrise"> 577 <menu_item_call name="Sunrise" label="Sunrise">
568 <on_click function="World.EnvSettings" userdata="sunrise" /> 578 <on_click function="World.EnvSettings" userdata="sunrise" />
569 </menu_item_call> 579 </menu_item_call>
@@ -595,8 +605,10 @@
595 <!-- TOOLS --> 605 <!-- TOOLS -->
596 606
597 <menu name="Tools" create_jump_keys="true" label="Tools" 607 <menu name="Tools" create_jump_keys="true" label="Tools"
608 drop_shadow="true" mouse_opaque="false"
598 opaque="true" tear_off="true" visible="false"> 609 opaque="true" tear_off="true" visible="false">
599 <menu name="Select Tool" create_jump_keys="true" label="Choose Tool" 610 <menu name="Select Tool" create_jump_keys="true" label="Choose Tool"
611 drop_shadow="true" mouse_opaque="false"
600 opaque="true" tear_off="true"> 612 opaque="true" tear_off="true">
601 <menu_item_call name="Focus" label="Focus" shortcut="control|1"> 613 <menu_item_call name="Focus" label="Focus" shortcut="control|1">
602 <on_click function="Tools.SelectTool" userdata="focus" /> 614 <on_click function="Tools.SelectTool" userdata="focus" />
@@ -626,6 +638,7 @@
626 <on_enable function="Tools.SomethingSelectedNoHUD" /> 638 <on_enable function="Tools.SomethingSelectedNoHUD" />
627 </menu_item_call> 639 </menu_item_call>
628 <menu name="Selection Options" label="Selection Options" 640 <menu name="Selection Options" label="Selection Options"
641 drop_shadow="true" mouse_opaque="false"
629 create_jump_keys="true" opaque="true" tear_off="true"> 642 create_jump_keys="true" opaque="true" tear_off="true">
630 <menu_item_check name="Select Only My Objects" 643 <menu_item_check name="Select Only My Objects"
631 label="Select Only My Objects"> 644 label="Select Only My Objects">
@@ -774,6 +787,7 @@
774 </menu_item_call> 787 </menu_item_call>
775 <menu name="Recompile Scripts in Selection" create_jump_keys="true" 788 <menu name="Recompile Scripts in Selection" create_jump_keys="true"
776 label="Recompile Scripts in Selection" opaque="true" 789 label="Recompile Scripts in Selection" opaque="true"
790 drop_shadow="true" mouse_opaque="false"
777 tear_off="true"> 791 tear_off="true">
778 <menu_item_call name="Mono" label="Mono"> 792 <menu_item_call name="Mono" label="Mono">
779 <on_click function="Tools.SelectedScriptAction" 793 <on_click function="Tools.SelectedScriptAction"
@@ -820,6 +834,7 @@
820 <!-- HELP --> 834 <!-- HELP -->
821 835
822 <menu name="Help" create_jump_keys="true" label="Help" 836 <menu name="Help" create_jump_keys="true" label="Help"
837 drop_shadow="true" mouse_opaque="false"
823 opaque="true" tear_off="true"> 838 opaque="true" tear_off="true">
824 <menu_item_call name="Grid Help" label="Grid Help" 839 <menu_item_call name="Grid Help" label="Grid Help"
825 shortcut="F1"> 840 shortcut="F1">
@@ -868,14 +883,14 @@
868 883
869 <!-- ADVANCED --> 884 <!-- ADVANCED -->
870 885
871 <menu name="Advanced" drop_shadow="true" 886 <menu label="Advanced" name="Advanced" drop_shadow="true"
872 opaque="true" tear_off="true"> 887 mouse_opaque="false" opaque="true" tear_off="true">
873 888
874 889
875 <!-- CONSOLES --> 890 <!-- CONSOLES -->
876 891
877 <menu name="Consoles" drop_shadow="true" 892 <menu label="Consoles" name="Consoles" drop_shadow="true"
878 opaque="true" tear_off="true"> 893 mouse_opaque="false" opaque="true" tear_off="true">
879 <menu_item_check name="Frame Console" label="Frame Console" 894 <menu_item_check name="Frame Console" label="Frame Console"
880 shortcut="control|shift|2"> 895 shortcut="control|shift|2">
881 <on_click function="Advanced.ToggleConsole" 896 <on_click function="Advanced.ToggleConsole"
@@ -958,8 +973,8 @@
958 973
959 <!-- HUD INFO --> 974 <!-- HUD INFO -->
960 975
961 <menu name="HUD Info" drop_shadow="true" 976 <menu label="HUD Info" name="HUD Info" drop_shadow="true"
962 opaque="true" tear_off="true"> 977 mouse_opaque="false" opaque="true" tear_off="true">
963 <menu_item_check name="Velocity" label="Velocity"> 978 <menu_item_check name="Velocity" label="Velocity">
964 <on_click function="Advanced.ToggleHUDInfo" 979 <on_click function="Advanced.ToggleHUDInfo"
965 userdata="velocity" /> 980 userdata="velocity" />
@@ -1027,12 +1042,12 @@
1027 1042
1028 <!-- RENDERING --> 1043 <!-- RENDERING -->
1029 1044
1030 <menu name="Rendering" drop_shadow="true" 1045 <menu label="Rendering" name="Rendering" drop_shadow="true"
1031 opaque="true" tear_off="true"> 1046 mouse_opaque="false" opaque="true" tear_off="true">
1032 1047
1033 <!-- TYPES --> 1048 <!-- TYPES -->
1034 <menu name="Types" drop_shadow="true" 1049 <menu label="Types" name="Types" drop_shadow="true"
1035 opaque="true" tear_off="true"> 1050 mouse_opaque="false" opaque="true" tear_off="true">
1036 <menu_item_check name="Simple" label="Simple" 1051 <menu_item_check name="Simple" label="Simple"
1037 shortcut="control|alt|shift|1"> 1052 shortcut="control|alt|shift|1">
1038 <on_click function="Advanced.ToggleRenderType" 1053 <on_click function="Advanced.ToggleRenderType"
@@ -1128,8 +1143,8 @@
1128 1143
1129 1144
1130 <!-- FEATURES --> 1145 <!-- FEATURES -->
1131 <menu name="Features" drop_shadow="true" 1146 <menu label="Features" name="Features" drop_shadow="true"
1132 opaque="true" tear_off="true"> 1147 mouse_opaque="false" opaque="true" tear_off="true">
1133 <menu_item_check name="UI" label="UI" 1148 <menu_item_check name="UI" label="UI"
1134 shortcut="alt|shift|F1"> 1149 shortcut="alt|shift|F1">
1135 <on_click function="Advanced.ToggleFeature" 1150 <on_click function="Advanced.ToggleFeature"
@@ -1191,8 +1206,8 @@
1191 1206
1192 1207
1193 <!-- INFO DISPLAYS --> 1208 <!-- INFO DISPLAYS -->
1194 <menu name="Info Displays" drop_shadow="true" 1209 <menu label="Info Displays" name="Info Displays" drop_shadow="true"
1195 opaque="true" tear_off="true"> 1210 mouse_opaque="false" opaque="true" tear_off="true">
1196 <menu_item_check name="Verify" label="Verify"> 1211 <menu_item_check name="Verify" label="Verify">
1197 <on_click function="Advanced.ToggleInfoDisplay" 1212 <on_click function="Advanced.ToggleInfoDisplay"
1198 userdata="verify" /> 1213 userdata="verify" />
@@ -1318,8 +1333,8 @@
1318 1333
1319 1334
1320 <!-- RENDER TESTS --> 1335 <!-- RENDER TESTS -->
1321 <menu name="Render Tests" drop_shadow="true" 1336 <menu label="Render Tests" name="Render Tests" drop_shadow="true"
1322 opaque="true" tear_off="true"> 1337 mouse_opaque="false" opaque="true" tear_off="true">
1323 <menu_item_check name="Camera Offset" label="Camera Offset"> 1338 <menu_item_check name="Camera Offset" label="Camera Offset">
1324 <on_click function="ToggleControl" 1339 <on_click function="ToggleControl"
1325 userdata="CameraOffset" /> 1340 userdata="CameraOffset" />
@@ -1463,8 +1478,8 @@
1463 1478
1464 <!-- WORLD --> 1479 <!-- WORLD -->
1465 1480
1466 <menu name="World" drop_shadow="true" 1481 <menu label="World" name="World" drop_shadow="true"
1467 opaque="true" tear_off="true"> 1482 mouse_opaque="false" opaque="true" tear_off="true">
1468 <!-- Disabled because you can't do this in Windlight. 1483 <!-- Disabled because you can't do this in Windlight.
1469 <menu_item_check name="Mouse Moves Sun" 1484 <menu_item_check name="Mouse Moves Sun"
1470 label="Mouse Moves Sun" 1485 label="Mouse Moves Sun"
@@ -1499,9 +1514,11 @@
1499 1514
1500 <!-- RLVa --> 1515 <!-- RLVa -->
1501 1516
1502 <menu name="RLVa" drop_shadow="true" opaque="true" tear_off="true"> 1517 <menu label="RLVa" name="RLVa" drop_shadow="true"
1518 mouse_opaque="false" opaque="true" tear_off="true">
1503 1519
1504 <menu name="Debug" drop_shadow="true" opaque="true" tear_off="true"> 1520 <menu label="Debug" name="Debug" drop_shadow="true"
1521 mouse_opaque="false" opaque="true" tear_off="true">
1505 1522
1506 <menu_item_check name="Show Debug Messages" 1523 <menu_item_check name="Show Debug Messages"
1507 label="Show Debug Messages"> 1524 label="Show Debug Messages">
@@ -1574,8 +1591,8 @@
1574 1591
1575 <!-- UI --> 1592 <!-- UI -->
1576 1593
1577 <menu name="UI" drop_shadow="true" 1594 <menu label="UI" name="UI" drop_shadow="true"
1578 opaque="true" tear_off="true"> 1595 mouse_opaque="false" opaque="true" tear_off="true">
1579 1596
1580 1597
1581 <menu_item_check name="Use default system color picker" 1598 <menu_item_check name="Use default system color picker"
@@ -1735,8 +1752,8 @@
1735 1752
1736 <!-- XUI --> 1753 <!-- XUI -->
1737 1754
1738 <menu name="XUI" drop_shadow="true" 1755 <menu label="XUI" name="XUI" drop_shadow="true"
1739 opaque="true" tear_off="true"> 1756 mouse_opaque="false" opaque="true" tear_off="true">
1740 <menu_item_call name="Floater Test" 1757 <menu_item_call name="Floater Test"
1741 label="Floater Test"> 1758 label="Floater Test">
1742 <on_click function="Advanced.ShowFloaterTest" 1759 <on_click function="Advanced.ShowFloaterTest"
@@ -1781,11 +1798,11 @@
1781 1798
1782 <!-- CHARACTER --> 1799 <!-- CHARACTER -->
1783 1800
1784 <menu name="Character" drop_shadow="true" 1801 <menu label="Character" name="Character" drop_shadow="true"
1785 opaque="true" tear_off="true"> 1802 mouse_opaque="false" opaque="true" tear_off="true">
1786 1803
1787 <menu name="Grab Baked Texture" drop_shadow="true" 1804 <menu label="Grab Baked Texture" name="Grab Baked Texture" drop_shadow="true"
1788 opaque="true" tear_off="true"> 1805 mouse_opaque="false" opaque="true" tear_off="true">
1789 1806
1790 <menu_item_call name="Iris" enabled="false" 1807 <menu_item_call name="Iris" enabled="false"
1791 label="Iris"> 1808 label="Iris">
@@ -1825,8 +1842,8 @@
1825 </menu> 1842 </menu>
1826 1843
1827 <!-- CHARACTER TESTS --> 1844 <!-- CHARACTER TESTS -->
1828 <menu name="Character Tests" drop_shadow="true" 1845 <menu label="Character Tests" name="Character Tests" drop_shadow="true"
1829 opaque="true" tear_off="true"> 1846 mouse_opaque="false" opaque="true" tear_off="true">
1830 <menu_item_call name="Appearance To XML" 1847 <menu_item_call name="Appearance To XML"
1831 label="Appearance To XML"> 1848 label="Appearance To XML">
1832 <on_click function="Advanced.ToggleAppearanceToXML" 1849 <on_click function="Advanced.ToggleAppearanceToXML"
@@ -1996,8 +2013,8 @@
1996 2013
1997 <!-- CRASH --> 2014 <!-- CRASH -->
1998 2015
1999 <menu name="Crash" drop_shadow="true" 2016 <menu label="Crash" name="Crash" drop_shadow="true"
2000 opaque="true" tear_off="true"> 2017 mouse_opaque="false" opaque="true" tear_off="true">
2001 <menu_item_call name="Force Bad Memory Access" 2018 <menu_item_call name="Force Bad Memory Access"
2002 label="Force Bad Memory Access"> 2019 label="Force Bad Memory Access">
2003 <on_click function="Advanced.Crash" 2020 <on_click function="Advanced.Crash"
@@ -2034,8 +2051,8 @@
2034 2051
2035 <!-- NETWORK --> 2052 <!-- NETWORK -->
2036 2053
2037 <menu name="Network" drop_shadow="true" 2054 <menu label="Network" name="Network" drop_shadow="true"
2038 opaque="true" tear_off="true"> 2055 mouse_opaque="false" opaque="true" tear_off="true">
2039 <menu_item_call name="Enable Message Log" 2056 <menu_item_call name="Enable Message Log"
2040 label="Enable Message Log"> 2057 label="Enable Message Log">
2041 <on_click function="Advanced.EnableMessageLog" 2058 <on_click function="Advanced.EnableMessageLog"
@@ -2071,8 +2088,8 @@
2071 2088
2072 <!-- RECORDER --> 2089 <!-- RECORDER -->
2073 2090
2074 <menu name="Recorder" drop_shadow="true" 2091 <menu label="Recorder" name="Recorder" drop_shadow="true"
2075 opaque="true" tear_off="true"> 2092 mouse_opaque="false" opaque="true" tear_off="true">
2076 <menu_item_check name="Full Session Logging" 2093 <menu_item_check name="Full Session Logging"
2077 label="Full Session Logging"> 2094 label="Full Session Logging">
2078 <on_click function="ToggleControl" 2095 <on_click function="ToggleControl"
@@ -2129,8 +2146,8 @@
2129 2146
2130 <!-- ADMIN OPTIONS --> 2147 <!-- ADMIN OPTIONS -->
2131 2148
2132 <menu name="Admin Options" drop_shadow="true" 2149 <menu label="Admin Options" name="Admin Options" drop_shadow="true"
2133 opaque="true" tear_off="true"> 2150 mouse_opaque="false" opaque="true" tear_off="true">
2134 <menu_item_check name="View Admin Options" 2151 <menu_item_check name="View Admin Options"
2135 label="View Admin Options" 2152 label="View Admin Options"
2136 shortcut="control|alt|V"> 2153 shortcut="control|alt|V">
diff --git a/linden/indra/newview/skins/default/xui/en-us/notifications.xml b/linden/indra/newview/skins/default/xui/en-us/notifications.xml
index 1dcde4f..b682534 100644
--- a/linden/indra/newview/skins/default/xui/en-us/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/notifications.xml
@@ -1733,7 +1733,7 @@ Cannot find the region this land is in.
1733 type="alertmodal"> 1733 type="alertmodal">
1734Unable to buy land: 1734Unable to buy land:
1735 1735
1736Your allowed/preferred maturity level does not permit you to buy this land. You may need to your maturity level in Preferences first. 1736Your allowed/preferred maturity level does not permit you to buy this land. You may need to adjust your maturity level in Preferences first.
1737</notification> 1737</notification>
1738 1738
1739<notification 1739<notification
@@ -6920,44 +6920,44 @@ Typing stop packets - sends encrypted messages differently so they do not wind u
6920 type="alert"> 6920 type="alert">
6921The following constants are accepted in this tab: 6921The following constants are accepted in this tab:
6922 6922
6923PX -- X-axis position 6923PX — X-axis position
6924PY -- Y-axis position 6924PY — Y-axis position
6925PZ -- Z-axis position 6925PZ — Z-axis position
6926SX -- X-axis size 6926SX — X-axis size
6927SY -- Y-axis size 6927SY — Y-axis size
6928SZ -- Z-axis size 6928SZ — Z-axis size
6929RX -- X-axis rotation 6929RX — X-axis rotation
6930RY -- Y-axis rotation 6930RY — Y-axis rotation
6931RZ -- Z-axis rotation 6931RZ — Z-axis rotation
6932CB -- Path cut begin 6932CB — Path cut begin
6933CE -- Path cut end 6933CE — Path cut end
6934HLW -- Hollow size 6934HLW — Hollow size
6935SKW -- Skew 6935SKW — Skew
6936PB -- Slice/Dimple/Profile cut begin 6936PB — Slice/Dimple/Profile cut begin
6937PE -- Slice/Dimple/Profile cut end 6937PE — Slice/Dimple/Profile cut end
6938TB -- Twist begin 6938TB — Twist begin
6939TE -- Twist end 6939TE — Twist end
6940SHX -- X-axis top shear 6940SHX — X-axis top shear
6941SHY -- Y-axis top shear 6941SHY — Y-axis top shear
6942HLX -- X-axis hole size 6942HLX — X-axis hole size
6943HLY -- Y-axis hole size 6943HLY — Y-axis hole size
6944TPX -- X-axis taper 6944TPX — X-axis taper
6945TPY -- Y-axis taper 6945TPY — Y-axis taper
6946ROF -- Radius offset 6946ROF — Radius offset
6947REV -- Revolutions 6947REV — Revolutions
6948 6948
6949PI -- pi 6949PI — π
6950TWO_PI -- 2pi 6950TWO_PI — 2π
6951PI_BY_TWO -- pi/2 6951PI_BY_TWO — π/2
6952SQRT2 -- Square root of 2 6952SQRT2 — Square root of 2
6953DEG_TO_RAD -- DEG_TO_RAD conversion (pi/180) 6953DEG_TO_RAD — degrees to radians (pi/180)
6954RAD_TO_DEG -- RAD_TO_DEG conversion (180/pi) 6954RAD_TO_DEG — radians to degrees (180/pi)
6955GRAVITY -- -9.8 6955GRAVITY — -9.8
6956 6956
6957* -- Multiplication 6957* — Multiplication
6958\ -- Division 6958\ — Division
6959 -- Addition 6959 — Addition
6960- -- Subtraction 6960- — Subtraction
6961 6961
6962For information about this feature, click "More Info". 6962For information about this feature, click "More Info".
6963 <url option="1" name="url"> 6963 <url option="1" name="url">
@@ -6975,18 +6975,18 @@ For information about this feature, click "More Info".
6975 type="alert"> 6975 type="alert">
6976The following constants are accepted in this tab: 6976The following constants are accepted in this tab:
6977 6977
6978TSU -- Repeats per face (horizontal) 6978TSU — Repeats per face (horizontal)
6979TSV -- Repeats per face (vertical) 6979TSV — Repeats per face (vertical)
6980TOU -- Offsets per face (horizontal) 6980TOU — Offsets per face (horizontal)
6981TOV -- Offsets per face (vertical) 6981TOV — Offsets per face (vertical)
6982TRNS -- Transparency 6982TRNS — Transparency
6983TROT -- Texture rotation 6983TROT — Texture rotation
6984GLOW -- Glow 6984GLOW — Glow
6985 6985
6986* -- Multiplication 6986* — Multiplication
6987\ -- Division 6987\ — Division
6988 -- Addition 6988 — Addition
6989- -- Subtraction 6989- — Subtraction
6990 6990
6991For information about this feature, click "More Info". 6991For information about this feature, click "More Info".
6992 <url option="1" name="url"> 6992 <url option="1" name="url">
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_login.xml b/linden/indra/newview/skins/default/xui/en-us/panel_login.xml
index 35ecc6e..d60f985 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_login.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_login.xml
@@ -213,6 +213,6 @@
213 border_visible="false" border_drop_shadow_visible="false" 213 border_visible="false" border_drop_shadow_visible="false"
214 font="SansSerifSmall" mouse_opaque="true" 214 font="SansSerifSmall" mouse_opaque="true"
215 hover="true" hover_color="50 115 185"> 215 hover="true" hover_color="50 115 185">
216 [CHANNEL] [VERSION] 216 [VERSION]
217 </text> 217 </text>
218</panel> 218</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml
index fbd605f..b589a1d 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml
@@ -1,122 +1,176 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Advanced" left="102" mouse_opaque="true" 18 height="408" label="Advanced" left="102" mouse_opaque="true"
4 name="advanced_panel" width="517"> 19 name="advanced_panel" width="517">
5 <!-- Start organizing these when we get enough of 'em - MC --> 20
6 <!-- The time is now! Chris Tuchs -->
7 <tab_container label="Page 2" bottom="0" height="450" left="0" mouse_opaque="false" 21 <tab_container label="Page 2" bottom="0" height="450" left="0" mouse_opaque="false"
8 name="tab2" tab_min_width="50" tab_position="top" width="495" bg_opaque_color="0,0,0,0.0"> 22 name="tab2" tab_min_width="50" tab_position="top" width="495" bg_opaque_color="0,0,0,0.0">
23
9 24
10 <panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 25 <panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
11 height="408" label="Main" left="102" mouse_opaque="true" 26 height="408" label="Main" left="102" mouse_opaque="true"
12 name="main_panel" width="517"> 27 name="main_panel" width="517">
13 <check_box bottom="-30" enabled="true" 28
29
30 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
31 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
32 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
33 mouse_opaque="true" name="user_interface_text" v_pad="0" width="394">
34 User Interface:
35 </text>
36
37 <check_box bottom_delta="-25" enabled="true"
14 follows="left|top" font="SansSerifSmall" height="16" 38 follows="left|top" font="SansSerifSmall" height="16"
15 initial_value="false" label="Disable login/logout screens" left="12" 39 initial_value="false" label="Disable login/logout screens" left_delta="30"
16 mouse_opaque="true" name="disable_log_screen_check" radio_style="false" 40 mouse_opaque="true" name="disable_log_screen_check" radio_style="false"
17 width="217" /> 41 width="217" />
18 <check_box bottom_delta="-18" enabled="true" follows="left|top" 42 <check_box bottom_delta="0" enabled="true" follows="left|top"
19 font="SansSerifSmall" height="16" initial_value="false" 43 font="SansSerifSmall" height="16" initial_value="false"
20 label="Disable teleport screen" left="12" mouse_opaque="true" 44 label="Disable teleport screen" left="270" mouse_opaque="true"
21 name="disable_tp_screen_check" radio_style="false" width="217" /> 45 name="disable_tp_screen_check" radio_style="false" width="217" />
46 <check_box bottom_delta="-18" enabled="true" follows="left|top"
47 font="SansSerifSmall" height="16" initial_value="false"
48 label="Show WindLight toolbar" left="50" mouse_opaque="true"
49 name="toggle_windlight_control" radio_style="false" width="237"
50 control_name="EnableWindlightRemote" />
51 <check_box bottom_delta="-18" enabled="true"
52 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
53 label="Use legacy pie menus" left_delta="0"
54 mouse_opaque="true" name="legacy_pie_menu_checkbox" radio_style="false"
55 width="256" />
56
57
58 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
59 height="1" left="55" name="border" width="380" />
60
61
62 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
63 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
64 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
65 mouse_opaque="true" name="avatar_text" v_pad="0" width="394">
66 Avatar:
67 </text>
68
22 <check_box bottom_delta="-25" enabled="true" follows="left|top" 69 <check_box bottom_delta="-25" enabled="true" follows="left|top"
23 font="SansSerifSmall" height="16" initial_value="false" 70 font="SansSerifSmall" height="16" initial_value="false"
24 label="Show client names in nametags" left="12" mouse_opaque="true" 71 label="Show client names in nametags" left_delta="30" mouse_opaque="true"
25 name="client_name_tag_check" radio_style="false" width="160" /> 72 name="client_name_tag_check" radio_style="false" width="160" />
26 <check_box bottom_delta="-18" enabled="true" follows="left|top" 73 <check_box bottom_delta="0" enabled="true" follows="left|top"
27 font="SansSerifSmall" height="16" initial_value="false" 74 font="SansSerifSmall" height="16" initial_value="false"
28 label="Show client names in hovertip" left_delta="0" mouse_opaque="true" 75 label="Show client names in hovertip" left="270" mouse_opaque="true"
29 name="client_name_hover_check" radio_style="false" width="160" /> 76 name="client_name_hover_check" radio_style="false" width="160" />
30 <check_box bottom_delta="-18" enabled="true" follows="left|top" 77 <check_box bottom_delta="-18" enabled="true" follows="left|top"
31 font="SansSerifSmall" height="16" initial_value="false" 78 font="SansSerifSmall" height="16" initial_value="false"
32 label="Show your client name to others" left_delta="0" mouse_opaque="true" 79 label="Show your client name to others" left="50" mouse_opaque="true"
33 name="client_name_tag_broadcast_check" radio_style="false" width="217" /> 80 name="client_name_tag_broadcast_check" radio_style="false" width="217" />
34 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-122"
35 can_apply_immediately="true" color="0.79 0.44 0.88 1"
36 enabled="true" follows="left|top"
37 height="65" label="Imprudence" left="250" mouse_opaque="true"
38 name="client_tag_color" width="65" />
39 <check_box bottom_delta="-18" enabled="true" follows="left|top"
40 font="SansSerifSmall" height="16" initial_value="false"
41 label="Show client names with color" left_delta="0" mouse_opaque="true"
42 name="client_name_color_check" radio_style="false" width="160" />
43 <check_box bottom_delta="-25" enabled="true" follows="left|top"
44 font="SansSerifSmall" height="16" initial_value="false"
45 label="Enable shadows (WARNING: unstable and requires Ultra graphics)" left="12" mouse_opaque="true"
46 name="shadows_check" radio_style="false" width="217" />
47 <text bottom_delta="-25" left="16" height="15" width="300"
48 follows="top|left">
49 Allow region WindLight settings (LightShare):
50 </text>
51 <combo_box name="lightshare_combo"
52 bottom_delta="-2" left_delta="250" height="18" width="135"
53 allow_text_entry="false" follows="left|top">
54 <combo_item type="string" name="never" value="0">
55 Never
56 </combo_item>
57 <combo_item type="string" name="ask" value="1">
58 Ask me every time
59 </combo_item>
60 <combo_item type="string" name="always" value="2">
61 Always
62 </combo_item>
63 </combo_box>
64 <check_box bottom_delta="-25" enabled="true" follows="left|top"
65 font="SansSerifSmall" height="16" initial_value="false"
66 label="Use HTTP texture fetching (experimental)" left="12" mouse_opaque="true"
67 name="http_texture_check" radio_style="false" width="217" />
68 <check_box bottom_delta="-18" enabled="true" follows="left|top" 81 <check_box bottom_delta="-18" enabled="true" follows="left|top"
69 font="SansSerifSmall" height="16" initial_value="false" 82 font="SansSerifSmall" height="16" initial_value="false"
70 label="Increase rez speed via draw distance stepping" left="12" mouse_opaque="true" 83 tool_tip="Toggle editing animation and standing up when entering appearance mode"
71 name="speed_rez_check" radio_style="false" width="217" /> 84 label="Animate avatar when editing appearance" left_delta="0" mouse_opaque="true"
72 <spinner bottom_delta="-18" decimal_digits="0"
73 tool_tip="Interval in seconds between each draw distance increment"
74 follows="left|top" height="16" increment="1" initial_val="12"
75 label="Step interval every:" label_width="105" left_delta="20" max_val="20"
76 min_val="1" mouse_opaque="true" name="speed_rez_interval_spinner" width="145" />
77 <text bottom_delta="0" follows="top|left" height="15" left_delta="150"
78 name="speed_rez_seconds_text" width="115">
79 seconds
80 </text>
81 <check_box bottom_delta="-25" enabled="true" follows="left|top"
82 font="SansSerifSmall" height="16" initial_value="false"
83 tool_tip="Toggle editing animation and standing up when entering appearance mode"
84 label="Animate avatar when editing appearance" left="12" mouse_opaque="true"
85 name="appearance_anim_check" radio_style="false" width="217" /> 85 name="appearance_anim_check" radio_style="false" width="217" />
86 <check_box bottom_delta="-25" control_name="HeadFollowsMouse" enabled="true" 86 <check_box bottom_delta="-18" control_name="HeadFollowsMouse" enabled="true"
87 follows="left|top" font="SansSerifSmall" height="16" 87 follows="left|top" font="SansSerifSmall" height="16"
88 label="Head follows mouse" tooltip="If your avatars head follows your mouse movements" left="12" 88 label="Head follows mouse" tooltip="If your avatars head follows your mouse movements" left_delta="0"
89 mouse_opaque="true" name="head_follows_mouse_checkbox" radio_style="false" 89 mouse_opaque="true" name="head_follows_mouse_checkbox" radio_style="false"
90 width="256" /> 90 width="256" />
91 <check_box bottom_delta="-25" enabled="true" 91 <check_box bottom_delta="-18" enabled="true"
92 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
93 label="Use legacy pie menus" left="12"
94 mouse_opaque="true" name="legacy_pie_menu_checkbox" radio_style="false"
95 width="256" />
96 <check_box bottom_delta="-25" enabled="true"
97 follows="left|top" font="SansSerifSmall" height="16" hidden="false" 92 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
98 initial_value="false" label="Share language with objects" left="12" 93 initial_value="false" label="Share language with objects" left_delta="0"
99 mouse_opaque="true" name="language_is_public" 94 mouse_opaque="true" name="language_is_public"
100 radio_style="false" tool_tip="This lets in-world objects know your preferred language." 95 radio_style="false" tool_tip="This lets in-world objects know your preferred language."
101 width="256" /> 96 width="256" />
102 <check_box bottom_delta="-25" enabled="true" 97 <check_box bottom_delta="-18" enabled="true" follows="left|top"
98 font="SansSerifSmall" height="16" label="Fly/land on holding up/down"
99 left_delta="0" mouse_opaque="true" name="automatic_fly" radio_style="false"
100 width="178" />
101 <check_box bottom_delta="-18" enabled="true"
102 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
103 label="Arrow keys always move avatar when chatting" left_delta="0"
104 mouse_opaque="true" name="arrow_keys_move_avatar_check" radio_style="false"
105 width="237" />
106
107
108 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
109 height="1" left="55" name="border" width="380" />
110
111
112 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
113 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
114 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
115 mouse_opaque="true" name="chat_text" v_pad="0" width="394">
116 Chat:
117 </text>
118
119 <check_box bottom_delta="-25" control_name="ScriptErrorsAsChat" enabled="true"
120 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
121 label="Show script errors and warnings as regular chat" left_delta="30"
122 mouse_opaque="true" name="script_errors_as_chat" radio_style="false"
123 width="275" />
124 <check_box bottom_delta="-18" enabled="true" follows="left|top"
125 font="SansSerifSmall" height="16" initial_value="false"
126 label="Show timestamps with messages" left_delta="0" mouse_opaque="true"
127 name="show_timestamps_check" radio_style="false" width="237" />
128 <check_box bottom_delta="-18" enabled="true"
103 follows="left|top" font="SansSerifSmall" height="16" hidden="false" 129 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
104 initial_value="false" label="Use MU* pose style chat and IM" left="12" 130 initial_value="false" label="Use MU* pose style chat and IM" left_delta="0"
105 mouse_opaque="true" name="allow_mupose" 131 mouse_opaque="true" name="allow_mupose"
106 radio_style="false" tool_tip="Use MU* pose style in chat and IM (with ':' as a synonymous to '/me ')." 132 radio_style="false" tool_tip="Use MU* pose style in chat and IM (with ':' as a synonymous to '/me ')."
107 width="256" /> 133 width="256" />
108 <check_box bottom_delta="0" enabled="true" 134 <check_box bottom_delta="0" enabled="true"
109 follows="left|top" font="SansSerifSmall" height="16" hidden="false" 135 follows="left|top" font="SansSerifSmall" height="16" hidden="false"
110 initial_value="false" label="Auto-close OOC (( )) chat" left_delta="250" 136 initial_value="false" label="Auto-close OOC (( )) chat" left="270"
111 mouse_opaque="true" name="auto_close_ooc" 137 mouse_opaque="true" name="auto_close_ooc"
112 radio_style="false" tool_tip="Auto-close OOC chat (i.e. add )) if not found and (( was used)." 138 radio_style="false" tool_tip="Auto-close OOC chat (i.e. add )) if not found and (( was used)."
113 width="256" /> 139 width="256" />
114 <check_box bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 140
115 initial_value="false" label="Use the chatbar as a command line" left="12" 141
116 mouse_opaque="true" name="command_line_check" radio_style="false" width="270"/> 142 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
117 <button bottom_delta="-20" follows="left|top" font="SansSerif" height="20" width="150" 143 height="1" left="55" name="border" width="380" />
118 label="Chatbar Commands" name="command_line_btn" left="12" 144
119 tool_tip="Set specific chatbar command line commands here" /> 145
146 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
147 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
148 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
149 mouse_opaque="true" name="textbox" v_pad="0" width="394">
150 World:
151 </text>
152
153 <check_box bottom_delta="-25" enabled="true" follows="left|top"
154 font="SansSerifSmall" height="16" initial_value="false"
155 label="Enable shadows (WARNING: unstable and requires Ultra graphics)" left_delta="30" mouse_opaque="true"
156 name="shadows_check" radio_style="false" width="217" />
157 <text bottom_delta="-25" left_delta="0" height="15" width="300"
158 follows="top|left" name="lightshare_text">
159 Allow region WindLight settings (LightShare):
160 </text>
161 <combo_box name="lightshare_combo"
162 bottom_delta="-2" left="275" height="18" width="160"
163 allow_text_entry="false" follows="left|top">
164 <combo_item type="string" name="never" value="0">
165 Never
166 </combo_item>
167 <combo_item type="string" name="ask" value="1">
168 Ask me every time
169 </combo_item>
170 <combo_item type="string" name="always" value="2">
171 Always
172 </combo_item>
173 </combo_box>
120 174
121 <!-- Uncomment when we start using the crash logger - MC --> 175 <!-- Uncomment when we start using the crash logger - MC -->
122 <!--<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 176 <!--<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
@@ -138,69 +192,33 @@
138 Never send 192 Never send
139 </combo_item> 193 </combo_item>
140 </combo_box>--> 194 </combo_box>-->
195
141 196
142 </panel> 197 </panel>
143 198
144 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="SpellCheck" 199
145 left="1" mouse_opaque="true" name="SpellCheck" width="418"> 200 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="Avatar Cloud"
146 <button bottom="-25" follows="left|top" font="SansSerifSmall" height="18" label="?"
147 name="EmeraldHelp_SpellCheck" tool_tip="Click here for help regarding the settings in this page."
148 right="490" width="18"/>
149 <check_box bottom="-25" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
150 label="Show misspelled words in red" left="12" mouse_opaque="true" name="EmeraldSpellDisplay"
151 control_name="EmeraldSpellDisplay" width="126"/>
152 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left="12"
153 name="EmSpell_txt1" width="512">
154 Current language (dictionary):
155 </text>
156 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
157 max_chars="200" mouse_opaque="true" name="EmeraldSpellBase" width="250"
158 control_name="EmeraldSpellBase" tool_tip=""/>
159 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left="12"
160 name="EmSpell_txt3" width="512">
161 Downloaded languages (dictionaries):
162 </text>
163 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
164 max_chars="200" mouse_opaque="true" name="EmSpell_Avail" width="250"
165 control_name="EmSpell_Avail" tool_tip=""/>
166 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="20" label="Install"
167 name="EmSpell_Add" tool_tip="" left_delta="255" width="80"/>
168 <button bottom_delta="-22" follows="left|top" font="SansSerifSmall" height="20" label="Download More..."
169 name="EmSpell_GetMore" tool_tip="Get more dictionaries availabe online" left="12" width="250"/>
170 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left="12"
171 name="EmSpell_txt2" width="512">
172 Additional custom languages (dictionaries):
173 </text>
174 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
175 max_chars="200" mouse_opaque="true" name="EmSpell_Installed" width="250"
176 control_name="EmSpell_Installed" tool_tip=""/>
177 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="20" label="Remove"
178 name="EmSpell_Remove" tool_tip="" left_delta="255" width="80"/>
179 <!--<button bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="18" label="Edit Custom dictionary"
180 name="EmSpell_EditCustom" tool_tip="" left_delta="20" width="130"/>-->
181 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left="12"
182 name="EmSpell_txt4" width="512">
183To use spellcheck, right-click a misspelled word
184(red or otherwise) and select its replacement
185 </text>
186 <button name="ac_button" label="AutoCorrect Options..." halign="center"
187 tool_tip="Modify the AutoCorrect word list and settings" left="12"
188 bottom_delta="-50" width="180" height="20" font="SansSerifSmall" follows="left|top"/>
189 </panel>
190 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="Eye Candy"
191 left="1" mouse_opaque="true" filename="panel_particle_settings.xml" name="AvatarCloud" width="418"> 201 left="1" mouse_opaque="true" filename="panel_particle_settings.xml" name="AvatarCloud" width="418">
192 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 202
193 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 203
194 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 204 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
195 mouse_opaque="true" name="must_be_logged_in_textbox" v_pad="0" width="394"> 205 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top"
196 You must be logged in to change this 206 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10"
197 </text> 207 mouse_opaque="true" name="must_be_logged_in_textbox" v_pad="0" width="394">
198 <check_box bottom_delta="-4" control_name="PreviewAvatarAsCloud" enabled="true" 208 You must be logged in to change this
199 follows="left|top" font="SansSerifSmall" height="16" 209 </text>
200 label="Preview avatar as cloud" left="10" 210 <check_box bottom_delta="-4" control_name="PreviewAvatarAsCloud" enabled="true"
201 mouse_opaque="true" name="preview_cloud" 211 follows="left|top" font="SansSerifSmall" height="16"
202 radio_style="false" tool_tip="Preview avatar as cloud when already rezzed" 212 label="Preview avatar as cloud" left="10"
203 width="80" /> 213 mouse_opaque="true" name="preview_cloud"
214 radio_style="false" tool_tip="Preview avatar as cloud when already rezzed"
215 width="80" />
216
217
204 </panel> 218 </panel>
219
220
205 </tab_container> 221 </tab_container>
222
223
206</panel> 224</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml
index 355d7e8..5a94d6a 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml
@@ -1,93 +1,121 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Audio &amp; Video" left="102" mouse_opaque="true" 18 height="408" label="Audio &amp; Video" left="102" mouse_opaque="true"
4 name="Media panel" width="517"> 19 name="Media panel" width="517">
20
21
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 22 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
6 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top" 23 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
7 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 24 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
8 mouse_opaque="true" name="muting_text" v_pad="0" width="128"> 25 mouse_opaque="true" name="muting_text" v_pad="0" width="128">
9 Volume: 26 Volume:
10 </text> 27 </text>
11 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 28
12 bottom="-202" drop_shadow_visible="true" enabled="true" follows="left|top" 29 <panel border="true" bottom_delta="-180" enabled="true" filename="panel_audio.xml"
13 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 30 follows="left|top|right|bottom" height="180" label="Volume" left_delta="30"
14 mouse_opaque="true" name="streaming_prefs_text" v_pad="0" width="128">
15 Streaming:
16 </text>
17 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
18 bottom="-315" drop_shadow_visible="true" enabled="true" follows="left|top"
19 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10"
20 mouse_opaque="true" name="audio_prefs_text" v_pad="0" width="128">
21 Audio:
22 </text>
23 <panel border="true" bottom="-187" enabled="true" filename="panel_audio.xml"
24 follows="left|top|right|bottom" height="180" label="Volume" left="148"
25 mouse_opaque="true" name="Volume Panel" width="260" /> 31 mouse_opaque="true" name="Volume Panel" width="260" />
26 <check_box bottom="-205" control_name="AudioStreamingMusic" enabled="true" 32
33
34 <view_border bevel_style="none" border_thickness="1" bottom_delta="0" follows="left|top"
35 height="1" left="55" name="border" width="380" />
36
37
38 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
39 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
40 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
41 mouse_opaque="true" name="streaming_prefs_text" v_pad="0" width="128">
42 Streaming:
43 </text>
44
45 <check_box bottom_delta="-25" control_name="AudioStreamingMusic" enabled="true"
27 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 46 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
28 label="Play streaming music when available (uses more bandwidth)" 47 label="Play streaming music when available (uses more bandwidth)"
29 left="142" mouse_opaque="true" name="streaming_music" radio_style="false" 48 left_delta="30" mouse_opaque="true" name="streaming_music" radio_style="false"
30 width="339" /> 49 width="339" />
31 <check_box bottom_delta="-20" control_name="ShowStreamTitle" enabled="true" 50 <check_box bottom_delta="-20" control_name="ShowStreamTitle" enabled="true"
32 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 51 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
33 label="Show stream info in chat" left="162" mouse_opaque="true" 52 label="Show stream info in chat" left_delta="30" mouse_opaque="true"
34 name="show_stream_title" radio_style="false" width="338" /> 53 name="show_stream_title" radio_style="false" width="338" />
35 <check_box bottom_delta="-20" control_name="AudioStreamingVideo" enabled="true" 54 <check_box bottom_delta="-20" control_name="AudioStreamingVideo" enabled="true"
36 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 55 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
37 label="Play Streaming Media When Available (uses more bandwidth)" 56 label="Play Streaming Media When Available (uses more bandwidth)"
38 left="142" mouse_opaque="true" name="streaming_video" radio_style="false" 57 left_delta="-30" mouse_opaque="true" name="streaming_video" radio_style="false"
39 width="338" /> 58 width="338" />
40 <check_box bottom_delta="-20" control_name="ParcelMediaAutoPlayEnable" enabled="true" 59 <check_box bottom_delta="-20" control_name="ParcelMediaAutoPlayEnable" enabled="true"
41 follows="left|top" font="SansSerifSmall" height="16" 60 follows="left|top" font="SansSerifSmall" height="16"
42 initial_value="true" label="Automatically play media" left="162" 61 initial_value="true" label="Automatically play media" left_delta="30"
43 mouse_opaque="true" name="auto_streaming_video" radio_style="false" 62 mouse_opaque="true" name="auto_streaming_video" radio_style="false"
44 width="338" /> 63 width="338" />
45 <check_box bottom_delta="-20" control_name="MediaOnAPrimUI" enabled="true" 64 <check_box bottom_delta="-20" control_name="MediaOnAPrimUI" enabled="true"
46 follows="left|top" font="SansSerifSmall" height="16" 65 follows="left|top" font="SansSerifSmall" height="16"
47 initial_value="true" label="Media helper widget" left="162" 66 initial_value="true" label="Media helper widget" left_delta="0"
48 mouse_opaque="true" name="media_helper_widget" radio_style="false" 67 mouse_opaque="true" name="media_helper_widget" radio_style="false"
49 width="338" /> 68 width="338" />
50 <check_box bottom_delta="-20" control_name="MediaEnableFilter" enabled="true" 69 <check_box bottom_delta="-20" control_name="MediaEnableFilter" enabled="true"
51 follows="left|top" font="SansSerifSmall" height="16" 70 follows="left|top" font="SansSerifSmall" height="16"
52 initial_value="true" label="Filter media URLs" left="142" 71 initial_value="true" label="Filter media URLs" left_delta="-30"
53 mouse_opaque="true" name="enable_media_filter" radio_style="false" 72 mouse_opaque="true" name="enable_media_filter" radio_style="false"
54 width="200" /> 73 width="200" />
55 <button name="show_media_filter" font="SansSerif" label="Media Filter Settings" halign="center" 74 <button name="show_media_filter" font="SansSerifSmall" label="Media Filter Settings" halign="center"
56 tool_tip="Edit settings and the blocked and allowed lists for the Media Filter." 75 tool_tip="Edit settings and the blocked and allowed lists for the Media Filter."
57 enabled="false" mouse_opaque="true" follows="top|right" 76 enabled="false" mouse_opaque="true" follows="left|top"
58 bottom_delta="-2" right="-15" height="20" width="180" /> 77 bottom_delta="-2" left="270" height="20" width="160" />
59 <check_box bottom_delta="-33" control_name="MuteWhenMinimized" enabled="true" 78
79
80 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
81 height="1" left="55" name="border" width="380" />
82
83
84 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
85 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
86 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
87 mouse_opaque="true" name="audio_prefs_text" v_pad="0" width="128">
88 Audio:
89 </text>
90
91 <check_box bottom_delta="-25" control_name="MuteWhenMinimized" enabled="true"
60 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 92 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
61 label="Mute audio when window minimized" left="142" mouse_opaque="true" 93 label="Mute audio when minimized" left_delta="30" mouse_opaque="true"
62 name="mute_when_minimized" radio_style="false" width="215" /> 94 name="mute_when_minimized" radio_style="false" width="215" />
63 <spinner bottom_delta="-20" control_name="UISndMoneyChangeThreshold" decimal_digits="0" 95 <spinner bottom_delta="-20" control_name="UISndMoneyChangeThreshold" decimal_digits="0"
64 enabled="true" follows="left|top" height="16" increment="10" 96 enabled="true" follows="left|top" height="16" increment="10"
65 initial_val="10" label="[CURRENCY] change threshold:" label_width="158" left="148" 97 initial_val="10" label="[CURRENCY] sound threshhold:" label_width="138" left_delta="0"
66 max_val="10000" min_val="0" mouse_opaque="true" name="L$ Change Threshold" 98 max_val="10000" min_val="0" mouse_opaque="true" name="L$ Change Threshold"
67 width="212" /> 99 width="192" />
68 <spinner bottom_delta="-20" control_name="UISndHealthReductionThreshold" 100 <spinner bottom_delta="-20" control_name="UISndHealthReductionThreshold"
69 decimal_digits="0" enabled="true" follows="left|top" height="16" 101 decimal_digits="0" enabled="true" follows="left|top" height="16"
70 increment="10" initial_val="20" label="Health change threshold:" 102 increment="10" initial_val="20" label="Health sound threshold:"
71 label_width="158" left="148" max_val="10000" min_val="0" 103 label_width="138" left_delta="0" max_val="10000" min_val="0"
72 mouse_opaque="true" name="Health change threshold" width="212" /> 104 mouse_opaque="true" name="Health change threshold" width="192" />
73 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 105 <check_box bottom_delta="40" enabled="true" follows="left|top"
74 bottom_delta="-27" drop_shadow_visible="true" enabled="true" follows="left|top"
75 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10"
76 mouse_opaque="true" name="ambient_prefs_text" v_pad="0" width="128">
77 Ambient:
78 </text>
79 <check_box bottom_delta="-4" enabled="true" follows="left|top"
80 font="SansSerifSmall" height="16" initial_value="false" 106 font="SansSerifSmall" height="16" initial_value="false"
81 label="Enable wind generation" left="142" mouse_opaque="true" 107 label="Enable wind generation" left="270" mouse_opaque="true"
82 name="mute_wind_check" radio_style="false" width="217" /> 108 name="mute_wind_check" radio_style="false" width="217" />
83 <slider bottom_delta="-20" control_name="AudioLevelDoppler" edit_text="true" 109 <slider bottom_delta="-20" control_name="AudioLevelDoppler" edit_text="true"
84 enabled="true" follows="left|top" height="15" increment="0.1" 110 enabled="true" follows="left|top" height="15" increment="0.1"
85 initial_val="1" label="Doppler effect:" label_width="100" left="148" 111 initial_val="1" label="Doppler effect:" label_width="100" left_delta="0"
86 max_val="2" min_val="0" mouse_opaque="true" name="Doppler Effect" 112 max_val="2" min_val="0" mouse_opaque="true" name="Doppler Effect"
87 show_text="true" width="250" /> 113 show_text="true" width="200" />
88 <slider bottom_delta="-20" control_name="AudioLevelRolloff" edit_text="true" 114 <slider bottom_delta="-20" control_name="AudioLevelRolloff" edit_text="true"
89 enabled="true" follows="left|top" height="15" increment="0.1" 115 enabled="true" follows="left|top" height="15" increment="0.1"
90 initial_val="1" label="Rolloff factor:" label_width="100" left="148" 116 initial_val="1" label="Rolloff factor:" label_width="100" left_delta="0"
91 max_val="2" min_val="0" mouse_opaque="true" name="Rolloff Factor" 117 max_val="2" min_val="0" mouse_opaque="true" name="Rolloff Factor"
92 show_text="true" width="250" /> 118 show_text="true" width="200" />
119
120
93</panel> 121</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml
index 9ead3bf..e14442a 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_chat.xml
@@ -1,196 +1,358 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Chat" left="102" mouse_opaque="true" name="chat" 18 height="408" label="Chat" left="102" mouse_opaque="true" name="chat"
4 width="517"> 19 width="517">
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 20
6 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 21 <tab_container bottom="0" height="450" left="0" mouse_opaque="false"
7 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 22 name="chattab2" tab_min_width="50" tab_position="top" width="495" bg_opaque_color="0,0,0,0.0">
8 mouse_opaque="false" name="text_box" v_pad="0" width="128"> 23
9 Font Size: 24
10 </text> 25 <!-- CHAT OPTIONS PANEL -->
11 <radio_group bottom="-40" draw_border="true" enabled="true" 26
12 follows="left|top" height="30" left="148" mouse_opaque="true" 27
13 name="chat_font_size" width="331"> 28 <panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
14 <radio_item type="string" length="1" bottom="-24" enabled="true" height="16" left="0" mouse_opaque="true" 29 height="408" label="Chat &amp; IMs" left="102" mouse_opaque="true"
15 name="radio" width="98"> 30 name="chat_panel" width="517">
16 Small 31
17 </radio_item> 32 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
18 <radio_item type="string" length="1" bottom="-24" enabled="true" height="16" left="110" mouse_opaque="true" 33 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
19 name="radio2" width="98"> 34 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
20 Medium 35 mouse_opaque="false" name="text_box" v_pad="0" width="128">
21 </radio_item> 36 Chat Text Size:
22 <radio_item type="string" length="1" bottom="-24" enabled="true" height="16" left="220" mouse_opaque="true" 37 </text>
23 name="radio3" width="98"> 38
24 Large 39 <combo_box allow_text_entry="false" bottom_delta="-25" enabled="true" follows="left|top"
25 </radio_item> 40 height="16" left_delta="30" max_chars="100" mouse_opaque="true"
26 </radio_group> 41 name="chat_font_size" width="160">
27 42 <combo_item type="string" length="1" enabled="true" name="0" value="0">
28 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 43 Small
29 bottom_delta="-40" drop_shadow_visible="true" enabled="true" follows="left|top" 44 </combo_item>
30 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 45 <combo_item type="string" length="1" enabled="true" name="1" value="1">
31 mouse_opaque="false" name="text_translate_chat" v_pad="0" width="128"> 46 Medium
32 Translate Chat: 47 </combo_item>
33 </text> 48 <combo_item type="string" length="1" enabled="true" name="2" value="2">
34 <check_box bottom_delta="-3" control_name="TranslateChat" enabled="true" follows="left|top" 49 Large
35 font="SansSerifSmall" height="16" initial_value="false" 50 </combo_item>
36 label="Use machine translation while chatting (powered by Google)" left="148" mouse_opaque="true" 51 </combo_box>
37 name="translate_chat" radio_style="false" width="237" /> 52
38 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 53
39 bottom_delta="-16" drop_shadow_visible="true" enabled="true" follows="left|top" 54 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
40 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="149" 55 height="1" left="55" name="border" width="380" />
41 mouse_opaque="false" name="text_translate_chat" v_pad="0" width="160"> 56
42 Translate into this language: 57
43 </text> 58 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
44 <combo_box allow_text_entry="true" bottom_delta="-5" enabled="true" 59 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
45 follows="left|top" height="16" left_delta="183" max_chars="135" 60 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
46 mouse_opaque="true" name="translate_language_combobox" width="146"> 61 mouse_opaque="false" name="text_box3" v_pad="0" width="135">
47 <combo_item type="string" length="1" enabled="true" name="System Default Language" value="default"> 62 Chat Console:
48 System Default 63 </text>
49 </combo_item> 64 <spinner bottom_delta="-25" control_name="ChatPersistTime" decimal_digits="0"
50 <combo_item type="string" length="1" enabled="true" name="English" value="en"> 65 enabled="true" follows="left|top" height="16" increment="1"
51 English 66 initial_val="10" label="Fade chat after" label_width="80" left_delta="30"
52 </combo_item> 67 max_val="60" min_val="2" mouse_opaque="true" name="fade_chat_time"
53 68 width="130" />
54 <!-- After "System Default" and "English", please keep the rest of these combo_items in alphabetical order by the first character in the string. --> 69 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
55 70 bottom_delta="6" drop_shadow_visible="true" enabled="true"
56 <combo_item type="string" length="1" enabled="true" name="Danish" value="da"> 71 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
57 Dansk (Danish) 72 height="10" left_delta="135" mouse_opaque="false" name="text_box4" v_pad="0"
58 </combo_item> 73 width="80">
59 <combo_item type="string" length="1" enabled="true" name="Deutsch(German)" value="de"> 74 seconds and
60 Deutsch (German) 75 </text>
61 </combo_item> 76 <spinner bottom_delta="-6" decimal_digits="0"
62 <combo_item type="string" length="1" enabled="true" name="Spanish" value="es"> 77 enabled="true" follows="left|top" height="16" increment="1"
63 Español (Spanish) 78 initial_val="10" left_delta="82" max_val="50" min_val="1" mouse_opaque="true"
64 </combo_item> 79 name="max_chat_count" width="60" />
65 <combo_item type="string" length="1" enabled="true" name="French" value="fr"> 80 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
66 Français (French) 81 bottom_delta="6" drop_shadow_visible="true" enabled="true"
67 </combo_item> 82 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
68 <combo_item type="string" length="1" enabled="true" name="Italian" value="it"> 83 height="10" left_delta="65" mouse_opaque="false" name="text_box5" v_pad="0"
69 Italiano (Italian) 84 width="60">
70 </combo_item> 85 lines
71 <combo_item type="string" length="1" enabled="true" name="Hungarian" value="hu"> 86 </text>
72 Magyar (Hungarian) 87
73 </combo_item> 88 <slider bottom_delta="-25" can_edit_text="false" control_name="ConsoleBackgroundOpacity"
74 <combo_item type="string" length="1" enabled="true" name="Dutch" value="nl"> 89 decimal_digits="3" enabled="true" follows="left|top" height="12"
75 Nederlands (Dutch) 90 increment="0.05" initial_val="1" label="Console opacity:" left="50" max_val="1"
76 </combo_item> 91 min_val="0" mouse_opaque="true" name="console_opacity" show_text="true"
77 <combo_item type="string" length="1" enabled="true" name="Polish" value="pl"> 92 value="0.4" width="200" />
78 Polski (Polish) 93 <check_box bottom_delta="-4" control_name="ChatFullWidth" enabled="true"
79 </combo_item> 94 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
80 <combo_item type="string" length="1" enabled="true" name="Portugese" value="pt"> 95 label="Full screen width (requires restart)" left="270"
81 Portugués (Portuguese) 96 mouse_opaque="true" name="chat_full_width_check" radio_style="false"
82 </combo_item> 97 width="239" />
83 <combo_item type="string" length="1" enabled="true" name="Russian" value="ru"> 98
84 РуÑÑкий (Russian) 99
85 </combo_item> 100 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
86 <combo_item type="string" length="1" enabled="true" name="Turkish" value="tr"> 101 height="1" left="55" name="border" width="380" />
87 Türkçe (Turkish) 102
88 </combo_item> 103
89 <combo_item type="string" length="1" enabled="true" name="Ukrainian" value="uk"> 104 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
90 УкраїнÑька (Ukrainian) 105 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
91 </combo_item> 106 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
92 <combo_item type="string" length="1" enabled="true" name="Chinese" value="zh"> 107 mouse_opaque="false" name="text_box7" v_pad="0" width="128">
93 中文 (简体) (Chinese) 108 Chat Bubbles:
94 </combo_item> 109 </text>
95 <combo_item type="string" length="1" enabled="true" name="(Japanese)" value="ja"> 110
96 日本語 (Japanese) 111 <check_box bottom_delta="-25" control_name="UseChatBubbles" enabled="true" follows="left|top"
97 </combo_item> 112 font="SansSerifSmall" height="16" initial_value="false"
98 <combo_item type="string" length="1" enabled="true" name="(Korean)" value="ko"> 113 label="Show chat bubbles" left_delta="30" mouse_opaque="true"
99 한국어 (Korean) 114 name="bubble_text_chat" radio_style="false" width="237" />
100 </combo_item> 115 <check_box bottom_delta="-0" control_name="UseLocalChatBubbles" enabled="true" follows="left|top"
101 </combo_box> 116 font="SansSerifSmall" height="16" initial_value="false"
117 label="Show local chat and bubbles" left="270" mouse_opaque="true"
118 name="local_bubble_text_chat" radio_style="false" width="237" />
119 <slider bottom_delta="-20" can_edit_text="false" control_name="ChatBubbleOpacity"
120 decimal_digits="3" enabled="true" follows="left|top" height="12"
121 increment="0.05" initial_val="1" label="Bubble opacity:" left="50" max_val="1"
122 min_val="0" mouse_opaque="true" name="bubble_chat_opacity" show_text="true"
123 value="0.5" width="200" />
124
125
126 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
127 height="1" left="55" name="border" width="380" />
128
129
130 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
131 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
132 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
133 mouse_opaque="false" name="text_box6" v_pad="0" width="135">
134 Chatbar:
135 </text>
136
137 <check_box bottom_delta="-25" enabled="true"
138 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
139 label="Close chatbar after hitting return" left_delta="30" mouse_opaque="true"
140 name="close_chat_on_return_check" radio_style="false" width="237" />
141 <check_box bottom_delta="0" enabled="true" follows="left|top"
142 font="SansSerifSmall" height="16" initial_value="false"
143 label="Show custom chat channel" left="270" mouse_opaque="true"
144 name="toggle_channel_control" radio_style="false" width="237" />
145 <check_box bottom_delta="-20" enabled="true"
146 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
147 label="Play typing animation when chatting" left="50" mouse_opaque="true"
148 name="play_typing_animation" radio_style="false" width="237" />
149 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
150 initial_value="false" label="Use the chatbar as a command line" left="50"
151 mouse_opaque="true" name="command_line_check" radio_style="false" width="250"/>
152 <button bottom_delta="-2" follows="left|top" font="SansSerifSmall" height="20" width="160"
153 label="Chatbar Commands" name="command_line_btn" left="270"
154 tool_tip="Set specific chatbar command line commands here" />
155
156
157 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
158 height="1" left="55" name="border" width="380" />
159
160
161 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
162 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
163 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
164 mouse_opaque="false" name="Instant Messages:" v_pad="0" width="135">
165 Instant Messages:
166 </text>
167
168 <check_box bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall"
169 height="16" initial_value="false" label="Send offline IMs to email ([EMAIL])"
170 left_delta="30" mouse_opaque="true" name="send_im_to_email" radio_style="false"
171 width="350" />
172 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
173 bottom_delta="-14" drop_shadow_visible="true" enabled="true" follows="left|top"
174 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
175 mouse_opaque="false" name="show_ims_label" v_pad="0" width="100">
176 Show IMs in:
177 </text>
178 <check_box bottom_delta="-6" enabled="true" follows="left|top"
179 font="SansSerifSmall" height="16" initial_value="false"
180 label="Main chat" left="150" mouse_opaque="true"
181 name="include_im_in_chat_console" radio_style="false" width="100" />
182 <check_box bottom_delta="0" enabled="true" follows="left|top"
183 font="SansSerifSmall" height="16" initial_value="false"
184 label="Local Chat window" left="270" mouse_opaque="true"
185 name="include_im_in_chat_history" radio_style="false" width="100" />
186 <check_box bottom_delta="-20" enabled="true"
187 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
188 label="Vertical IM tabs (requires restart)" left="50" mouse_opaque="true"
189 name="vertical-imtabs-toggle" radio_style="false" width="270" />
190
191
192 </panel>
193
194
195 <!-- SPELL CHECKING AND TRANSLATE PANEL -->
196
197
198 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="Spell Checking &amp; Translate"
199 left="1" mouse_opaque="true" name="spell_check_tab" width="418">
200
201
202 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
203 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
204 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
205 mouse_opaque="false" name="text_box" v_pad="0" width="128">
206 Spell Checking:
207 </text>
208 <check_box bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
209 label="Enable spell checking" left_delta="30" mouse_opaque="true" name="EmeraldSpellDisplay"
210 control_name="EmeraldSpellDisplay" width="126"/>
211 <text bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="16" left_delta="30"
212 name="EmSpell_txt4" width="512">
213 Right-click a misspelled/red-underlined word to correct
214 </text>
215
216 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left_delta="-30"
217 name="EmSpell_txt1" width="512">
218 Current language (dictionary):
219 </text>
220 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
221 max_chars="200" mouse_opaque="true" name="EmeraldSpellBase" width="250"
222 control_name="EmeraldSpellBase" tool_tip=""/>
223
224 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left_delta="0"
225 name="EmSpell_txt3" width="512">
226 Downloaded languages (dictionaries):
227 </text>
228 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
229 max_chars="200" mouse_opaque="true" name="EmSpell_Avail" width="250"
230 control_name="EmSpell_Avail" tool_tip=""/>
231
232 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="20" label="Install"
233 name="EmSpell_Add" tool_tip="" left_delta="255" width="110"/>
234
235 <button bottom_delta="-22" follows="left|top" font="SansSerifSmall" height="20" label="Download More..."
236 name="EmSpell_GetMore" tool_tip="Get more dictionaries availabe online" left="50" width="250"/>
237
238 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="16" left_delta="0"
239 name="EmSpell_txt2" width="512">
240 Additional custom languages (dictionaries):
241 </text>
242 <combo_box allow_text_entry="false" bottom_delta="-20" left_delta="0" follows="left|top" height="18"
243 max_chars="200" mouse_opaque="true" name="EmSpell_Installed" width="250"
244 control_name="EmSpell_Installed" tool_tip=""/>
245
246 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="20" label="Remove"
247 name="EmSpell_Remove" tool_tip="" left_delta="255" width="110"/>
248
249 <!--<button bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="18" label="Edit Custom dictionary"
250 name="EmSpell_EditCustom" tool_tip="" left_delta="20" width="130"/>-->
251
252 <button name="ac_button" label="AutoCorrect..." halign="center"
253 tool_tip="Modify the AutoCorrect word list and settings" left="50"
254 bottom_delta="-40" width="160" height="20" font="SansSerifSmall" follows="left|top"/>
255
256
257 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
258 height="1" left="55" name="border" width="380" />
259
260
261 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
262 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
263 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
264 mouse_opaque="false" name="text_translate" v_pad="0" width="128">
265 Translate Chat:
266 </text>
267 <check_box bottom_delta="-25" control_name="TranslateChat" enabled="true" follows="left|top"
268 font="SansSerifSmall" height="16" initial_value="false"
269 label="Use machine translation while chatting (powered by Google)" left_delta="30" mouse_opaque="true"
270 name="translate_chat" radio_style="false" width="237" />
271
272 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
273 bottom_delta="-16" drop_shadow_visible="true" enabled="true" follows="left|top"
274 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
275 mouse_opaque="false" name="text_translate_chat" v_pad="0" width="160">
276 Translate into this language:
277 </text>
278
279 <combo_box allow_text_entry="false" bottom_delta="-5" enabled="true"
280 follows="left|top" height="16" left="270" max_chars="135"
281 mouse_opaque="true" name="translate_language_combobox" width="160">
282 <combo_item type="string" length="1" enabled="true" name="System Default Language" value="default">
283 System Default
284 </combo_item>
285 <combo_item type="string" length="1" enabled="true" name="English" value="en">
286 English
287 </combo_item>
288
289 <!-- After "System Default" and "English", please keep the rest of these combo_items in alphabetical order by the first character in the string. -->
290
291 <combo_item type="string" length="1" enabled="true" name="Danish" value="da">
292 Dansk (Danish)
293 </combo_item>
294 <combo_item type="string" length="1" enabled="true" name="Deutsch(German)" value="de">
295 Deutsch (German)
296 </combo_item>
297 <combo_item type="string" length="1" enabled="true" name="Spanish" value="es">
298 Español (Spanish)
299 </combo_item>
300 <combo_item type="string" length="1" enabled="true" name="French" value="fr">
301 Français (French)
302 </combo_item>
303 <combo_item type="string" length="1" enabled="true" name="Italian" value="it">
304 Italiano (Italian)
305 </combo_item>
306 <combo_item type="string" length="1" enabled="true" name="Hungarian" value="hu">
307 Magyar (Hungarian)
308 </combo_item>
309 <combo_item type="string" length="1" enabled="true" name="Dutch" value="nl">
310 Nederlands (Dutch)
311 </combo_item>
312 <combo_item type="string" length="1" enabled="true" name="Polish" value="pl">
313 Polski (Polish)
314 </combo_item>
315 <combo_item type="string" length="1" enabled="true" name="Portugese" value="pt">
316 Portugués (Portuguese)
317 </combo_item>
318 <combo_item type="string" length="1" enabled="true" name="Russian" value="ru">
319 РуÑÑкий (Russian)
320 </combo_item>
321 <combo_item type="string" length="1" enabled="true" name="Turkish" value="tr">
322 Türkçe (Turkish)
323 </combo_item>
324 <combo_item type="string" length="1" enabled="true" name="Ukrainian" value="uk">
325 УкраїнÑька (Ukrainian)
326 </combo_item>
327 <combo_item type="string" length="1" enabled="true" name="Chinese" value="zh">
328 中文 (简体) (Chinese)
329 </combo_item>
330 <combo_item type="string" length="1" enabled="true" name="(Japanese)" value="ja">
331 日本語 (Japanese)
332 </combo_item>
333 <combo_item type="string" length="1" enabled="true" name="(Korean)" value="ko">
334 한국어 (Korean)
335 </combo_item>
336 </combo_box>
337
338
339 <button bottom="-20" follows="left|top" font="SansSerifSmall" height="18" label="?"
340 name="EmeraldHelp_SpellCheck" tool_tip="Click here for help regarding the settings in this page."
341 right="490" width="18"/>
342
343
344 </panel>
345
346
347 </tab_container>
348
102 349
103 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 350 <string name="log_in_to_change">
104 bottom_delta="-40" drop_shadow_visible="true" enabled="true" follows="left|top" 351 log in to change
105 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 352 </string>
106 mouse_opaque="false" name="text_box3" v_pad="0" width="135"> 353 <string name="default_email_used">
107 Chat Console: 354 using default address
108 </text> 355 </string>
109 <spinner bottom_delta="-8" control_name="ChatPersistTime" decimal_digits="0"
110 enabled="true" follows="left|top" height="16" increment="1"
111 initial_val="10" label="Fade chat after" label_width="80" left="148"
112 max_val="60" min_val="2" mouse_opaque="true" name="fade_chat_time"
113 width="130" />
114 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
115 bottom_delta="6" drop_shadow_visible="true" enabled="true"
116 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
117 height="10" left="282" mouse_opaque="false" name="text_box4" v_pad="0"
118 width="80">
119 (seconds)
120 </text>
121 <spinner bottom_delta="-6" decimal_digits="0"
122 enabled="true" follows="left|top" height="16" increment="1"
123 initial_val="10" left="340" max_val="50" min_val="1" mouse_opaque="true"
124 name="max_chat_count" width="60" />
125 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
126 bottom_delta="6" drop_shadow_visible="true" enabled="true"
127 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
128 height="10" left="405" mouse_opaque="false" name="text_box5" v_pad="0"
129 width="60">
130 (# lines)
131 </text>
132 <slider bottom_delta="-25" can_edit_text="false" control_name="ConsoleBackgroundOpacity"
133 decimal_digits="3" enabled="true" follows="left|top" height="12"
134 increment="0.05" initial_val="1" label="Console opacity:" left="148" max_val="1"
135 min_val="0" mouse_opaque="true" name="console_opacity" show_text="true"
136 value="0.4" width="225" />
137 <check_box bottom_delta="-25" control_name="ChatFullWidth" enabled="true"
138 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
139 label="Use full screen width (requires restart)" left="148"
140 mouse_opaque="true" name="chat_full_width_check" radio_style="false"
141 width="239" />
142
143 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
144 bottom_delta="-40" drop_shadow_visible="true" enabled="true" follows="left|top"
145 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12"
146 mouse_opaque="false" name="text_box7" v_pad="0" width="128">
147 Chat Bubbles:
148 </text>
149 <check_box bottom_delta="-8" control_name="UseChatBubbles" enabled="true" follows="left|top"
150 font="SansSerifSmall" height="16" initial_value="false"
151 label="Show chat bubbles" left="148" mouse_opaque="true"
152 name="bubble_text_chat" radio_style="false" width="237" />
153 <check_box bottom_delta="-0" control_name="UseLocalChatBubbles" enabled="true" follows="left|top"
154 font="SansSerifSmall" height="16" initial_value="false"
155 label="Show local chat and bubbles" left="288" mouse_opaque="true"
156 name="local_bubble_text_chat" radio_style="false" width="237" />
157 <slider bottom_delta="-20" can_edit_text="false" control_name="ChatBubbleOpacity"
158 decimal_digits="3" enabled="true" follows="left|top" height="12"
159 increment="0.05" initial_val="1" label="Bubble opacity:" left="148" max_val="1"
160 min_val="0" mouse_opaque="true" name="bubble_chat_opacity" show_text="true"
161 value="0.5" width="225" />
162 356
163 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
164 bottom_delta="-40" drop_shadow_visible="true" enabled="true" follows="left|top"
165 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12"
166 mouse_opaque="false" name="text_box6" v_pad="0" width="135">
167 Miscellaneous:
168 </text>
169 <check_box bottom_delta="-8" enabled="true"
170 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
171 label="Close chat bar after hitting return" left="148" mouse_opaque="true"
172 name="close_chat_on_return_check" radio_style="false" width="237" />
173 <check_box bottom_delta="-18" enabled="true"
174 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
175 label="Arrow keys always move avatar when chatting" left="148"
176 mouse_opaque="true" name="arrow_keys_move_avatar_check" radio_style="false"
177 width="237" />
178 <check_box bottom_delta="-18" enabled="true"
179 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
180 label="Show timestamps in Local Chat" left="148" mouse_opaque="true"
181 name="show_timestamps_check" radio_style="false" width="237" />
182 <check_box bottom_delta="-18" control_name="ScriptErrorsAsChat" enabled="true"
183 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
184 label="Show script errors and warnings as regular chat" left="148"
185 mouse_opaque="true" name="script_errors_as_chat" radio_style="false"
186 width="275" />
187 <check_box bottom_delta="-18" enabled="true"
188 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
189 label="Play typing animation when chatting" left="148" mouse_opaque="true"
190 name="play_typing_animation" radio_style="false" width="237" />
191 <check_box bottom_delta="-18" enabled="true" follows="left|top"
192 font="SansSerifSmall" height="16" initial_value="false"
193 label="Show custom chat channel" left="148" mouse_opaque="true"
194 name="toggle_channel_control" radio_style="false" width="237" />
195 357
196</panel> 358</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_colors.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_colors.xml
index 40a75a6..9b55822 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_colors.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_colors.xml
@@ -1,115 +1,152 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Chat Colors" left="102" mouse_opaque="true" name="colors" 18 height="408" label="Colors" left="102" mouse_opaque="true" name="colors"
4 width="517"> 19 width="517">
20
21
22 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
23 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
24 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
25 mouse_opaque="true" name="effects_color_textbox" v_pad="0" width="394">
26 Selection Beam Color:
27 </text>
28
29 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-80"
30 can_apply_immediately="false" color="1 1 1 1"
31 enabled="true" follows="left|top" height="65" label="" left="50"
32 mouse_opaque="true" name="effect_color_swatch"
33 tool_tip="Click to open Color Picker" width="65" />
34
35
36 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
37 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
38 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="270"
39 mouse_opaque="true" name="client_tag_color_textbox" v_pad="0" width="394">
40 Client Tag Color:
41 </text>
42 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-80"
43 can_apply_immediately="true" color="0.79 0.44 0.88 1"
44 enabled="true" follows="left|top"
45 height="65" label="Imprudence" left_delta="30" mouse_opaque="true"
46 name="client_tag_color" width="65" />
47 <check_box bottom_delta="45" enabled="true" follows="left|top"
48 font="SansSerifSmall" height="16" initial_value="false"
49 label="Color client tags" left_delta="76" mouse_opaque="true"
50 name="client_name_color_check" radio_style="false" width="160" />
51
52
53 <view_border bevel_style="none" border_thickness="1" bottom_delta="-60" follows="left|top"
54 height="1" left="55" name="border" width="380" />
55
56
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 57 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
6 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 58 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
7 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 59 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
8 mouse_opaque="false" name="text_box2" v_pad="0" width="128"> 60 mouse_opaque="false" name="text_box2" v_pad="0" width="128">
9 Chat Colors: 61 Chat:
10 </text> 62 </text>
11 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-75" 63
64 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-80"
12 can_apply_immediately="true" color="1 1 1 1" control_name="UserChatColor" 65 can_apply_immediately="true" color="1 1 1 1" control_name="UserChatColor"
13 enabled="true" follows="left|top" height="65" label="Your chat" left="120" 66 enabled="true" follows="left|top" height="65" label="Your chat" left="50"
14 mouse_opaque="true" name="user" width="65" /> 67 mouse_opaque="true" name="user" width="65" />
15 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-75" 68 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
16 can_apply_immediately="true" color="1 1 1 1" control_name="AgentChatColor" 69 can_apply_immediately="true" color="1 1 1 1" control_name="AgentChatColor"
17 enabled="true" follows="left|top" height="65" label="Others' chat" left_delta="76" 70 enabled="true" follows="left|top" height="65" label="Others' chat" left_delta="76"
18 mouse_opaque="true" name="agent" width="65" /> 71 mouse_opaque="true" name="agent" width="65" />
19 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-75" 72 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
20 can_apply_immediately="true" color="0.6 0.6 1 1" 73 can_apply_immediately="true" color="0.6 0.6 1 1"
21 enabled="true" follows="left|top" height="65" label="IMs" left_delta="76" 74 enabled="true" follows="left|top" height="65" label="IMs" left_delta="76"
22 mouse_opaque="true" name="im" width="65" /> 75 mouse_opaque="true" name="im" width="65" />
23 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-75" 76 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
24 can_apply_immediately="true" color="0.8 1 1 1" 77 can_apply_immediately="true" color="0.8 1 1 1"
25 enabled="true" follows="left|top" 78 enabled="true" follows="left|top"
26 height="65" label="System" left_delta="76" mouse_opaque="true" 79 height="65" label="System" left_delta="76" mouse_opaque="true"
27 name="system" width="65" /> 80 name="system" width="65" />
28 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-75" 81 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
29 can_apply_immediately="true" color="0.82 0.82 0.99 1" 82 can_apply_immediately="true" color="0.82 0.82 0.99 1"
30 control_name="ScriptErrorColor" enabled="true" follows="left|top" 83 control_name="ScriptErrorColor" enabled="true" follows="left|top"
31 height="65" label="Script errors" left_delta="76" mouse_opaque="true" 84 height="65" label="Script errors" left_delta="76" mouse_opaque="true"
32 name="script_error" width="65" /> 85 name="script_error" width="65" />
33 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-146" 86
87 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-70"
34 can_apply_immediately="true" color="0.7 0.9 0.7 1" 88 can_apply_immediately="true" color="0.7 0.9 0.7 1"
35 control_name="ObjectChatColor" enabled="true" follows="left|top" 89 control_name="ObjectChatColor" enabled="true" follows="left|top"
36 height="65" label="Object chat" left="120" mouse_opaque="true" 90 height="65" label="Object chat" left="50" mouse_opaque="true"
37 name="objects" width="65" /> 91 name="objects" width="65" />
38 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-146" 92 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
39 can_apply_immediately="true" color="0.7 0.9 0.7 1" 93 can_apply_immediately="true" color="0.7 0.9 0.7 1"
40 control_name="ObjectIMColor" enabled="true" follows="left|top" 94 control_name="ObjectIMColor" enabled="true" follows="left|top"
41 height="65" label="Object IMs" left_delta="76" mouse_opaque="true" 95 height="65" label="Object IMs" left_delta="76" mouse_opaque="true"
42 name="object_ims" width="65" /> 96 name="object_ims" width="65" />
43 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-146" 97 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
44 can_apply_immediately="true" color="0.7 0.9 0.7 1" 98 can_apply_immediately="true" color="0.7 0.9 0.7 1"
45 enabled="true" follows="left|top" 99 enabled="true" follows="left|top"
46 height="65" label="Owner chat" left_delta="76" mouse_opaque="true" name="owner" 100 height="65" label="Owner chat" left_delta="76" mouse_opaque="true" name="owner"
47 width="65" /> 101 width="65" />
48 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-146" 102 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
49 can_apply_immediately="true" color="0 0 0 1" 103 can_apply_immediately="true" color="0 0 0 1"
50 enabled="true" follows="left|top" 104 enabled="true" follows="left|top"
51 height="65" label="Bubble chat" left_delta="76" mouse_opaque="true" 105 height="65" label="Bubble chat" left_delta="76" mouse_opaque="true"
52 name="background" width="65" /> 106 name="background" width="65" />
53 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom="-146" 107 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="0"
54 can_apply_immediately="true" color="0.6 0.6 1 1" 108 can_apply_immediately="true" color="0.6 0.6 1 1"
55 enabled="true" follows="left|top" height="65" 109 enabled="true" follows="left|top" height="65"
56 label="Links" left_delta="76" mouse_opaque="true" name="links" width="65" /> 110 label="Links" left_delta="76" mouse_opaque="true" name="links" width="65" />
111
112 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-85"
113 can_apply_immediately="true" color="1 1 1 1" control_name="FriendsChatColor"
114 enabled="true" follows="left|top" height="65" label="Friends" left="50"
115 mouse_opaque="true" name="FriendsChatColor" width="65" />
116 <check_box bottom_delta="45" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
117 initial_value="true" label="Highlight chat from friends" left_delta="76"
118 mouse_opaque="true" name="HighlightFriendsChat" radio_style="false" width="270"/>
57 119
58 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 120 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-121"
59 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" 121 can_apply_immediately="true" color="1 1 1 1" control_name="OwnNameChatColor"
60 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 122 enabled="true" follows="left|top" height="65" label="Your name" left="50"
61 mouse_opaque="false" name="text_box3" v_pad="0" width="128"> 123 mouse_opaque="true" name="OwnNameChatColor" width="65" />
62 Line Highlighting: 124 <check_box bottom_delta="45" enabled="true" follows="left|top"
63 </text> 125 font="SansSerifSmall" height="16" initial_value="true"
64 126 label="Highlight local chat containing your name and/or nicknames:" left_delta="76" mouse_opaque="true"
65 <check_box bottom_delta="-7" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 127 name="HighlightOwnNameInChat" radio_style="false" width="217" />
66 initial_value="true" label="Highlight chat from friends" left="120"
67 mouse_opaque="true" name="HighlightFriendsChat" radio_style="false" width="270"/>
68 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-70"
69 can_apply_immediately="true" color="1 1 1 1" control_name="FriendsChatColor"
70 enabled="true" follows="left|top" height="65" label="Friends" left_delta="20"
71 mouse_opaque="true" name="FriendsChatColor" width="65" />
72
73 <check_box bottom_delta="-25" enabled="true" follows="left|top"
74 font="SansSerifSmall" height="16" initial_value="true"
75 label="Highlight local chat containing your name" left="120" mouse_opaque="true"
76 name="HighlightOwnNameInChat" radio_style="false" width="217" />
77 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16" 128 <check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall" height="16"
78 initial_value="true" label="Highlight group chat containing your name" left_delta="0" 129 initial_value="true" label="Highlight group chat containing your name and/or nicknames:" left_delta="0"
79 mouse_opaque="true" name="HighlightOwnNameInIM" radio_style="false" width="270"/> 130 mouse_opaque="true" name="HighlightOwnNameInIM" radio_style="false" width="270"/>
80 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-70"
81 can_apply_immediately="true" color="1 1 1 1" control_name="OwnNameChatColor"
82 enabled="true" follows="left|top" height="65" label="Your name" left_delta="20"
83 mouse_opaque="true" name="OwnNameChatColor" width="65" />
84 131
85 <text bottom_delta="-30" follows="left|top" font="SansSerifSmall" height="20" 132
86 left="140" name="nick01_text" width="150"> 133 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-22"
87 Highlight nickname 1: 134 enabled="true" follows="left|top" font="SansSerif" label="Nickname 1"
88 </text> 135 handle_edit_keys_directly="true" height="18" left_delta="0"
89 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="3"
90 enabled="true" follows="left|top" font="SansSerif"
91 handle_edit_keys_directly="true" height="20" left_delta="125"
92 max_length="50" mouse_opaque="true" name="nick01" 136 max_length="50" mouse_opaque="true" name="nick01"
93 select_all_on_focus_received="true" width="160" word_wrap="false" /> 137 select_all_on_focus_received="true" width="110" word_wrap="false" />
94 138
95 <text bottom_delta="-25" follows="left|top" font="SansSerifSmall" height="20" 139 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="0"
96 left="140" name="nick02_text" width="150"> 140 enabled="true" follows="left|top" font="SansSerif" label="Nickname 2"
97 Highlight nickname 2: 141 handle_edit_keys_directly="true" height="18" left_delta="120"
98 </text>
99 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="3"
100 enabled="true" follows="left|top" font="SansSerif"
101 handle_edit_keys_directly="true" height="20" left_delta="125"
102 max_length="50" mouse_opaque="true" name="nick02" 142 max_length="50" mouse_opaque="true" name="nick02"
103 select_all_on_focus_received="true" width="160" word_wrap="false" /> 143 select_all_on_focus_received="true" width="110" word_wrap="false" />
104 144
105 <text bottom_delta="-25" follows="left|top" font="SansSerifSmall" height="20" 145 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="0"
106 left="140" name="nick03_text" width="150"> 146 enabled="true" follows="left|top" font="SansSerif" label="Nickname 3"
107 Highlight nickname 3: 147 handle_edit_keys_directly="true" height="18" left_delta="120"
108 </text>
109 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="3"
110 enabled="true" follows="left|top" font="SansSerif"
111 handle_edit_keys_directly="true" height="20" left_delta="125"
112 max_length="50" mouse_opaque="true" name="nick03" 148 max_length="50" mouse_opaque="true" name="nick03"
113 select_all_on_focus_received="true" width="160" word_wrap="false" /> 149 select_all_on_focus_received="true" width="110" word_wrap="false" />
150
114 151
115</panel> 152</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml
index c64ce9f..cd896b8 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_fonts.xml
@@ -1,15 +1,35 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2 2
3<panel name="font_panel" label="Fonts" 3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
17<panel name="fonts_panel" label="Fonts"
4 bottom="-409" left="102" height="408" width="517" 18 bottom="-409" left="102" height="408" width="517"
5 border="true" follows="left|top|right|bottom"> 19 border="true" follows="left|top|right|bottom">
6 20
7 <text bottom="-25" left="10" height="15" width="300"> 21 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
8 User interface font (requires restart): 22 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top"
23 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
24 mouse_opaque="true" name="fontselect" v_pad="0" width="128" font-style="BOLD|SHADOW">
25 Select UI Font:
26 </text>
27 <text font="SansSerifSmall" bottom="-22" left_delta="80" height="12" name="(requires restart)" width="300">
28 (requires restart)
9 </text> 29 </text>
10 30
11 <radio_group name="fonts" draw_border="false" 31 <radio_group name="fonts" draw_border="false"
12 top="-30" left="20" bottom="0" right="-20" 32 top="-30" left="50" bottom="0" right="-20"
13 follows="top|left|bottom|right"> 33 follows="top|left|bottom|right">
14 34
15 <radio_item name="DroidSans" bottom="-20" left="0" height="20"> 35 <radio_item name="DroidSans" bottom="-20" left="0" height="20">
@@ -48,12 +68,37 @@
48 68
49 69
50 <spinner name="font_mult" label="Font size multiplier:" label_width="130" 70 <spinner name="font_mult" label="Font size multiplier:" label_width="130"
51 bottom="-280" left="20" height="16" width="180" follows="left|top" 71 bottom_delta="150" left="50" height="16" width="180" follows="left|top"
52 decimal_digits="2" increment="0.01" max_val="3.0" min_val="0.1" 72 decimal_digits="2" increment="0.01" max_val="3.0" min_val="0.1"
53 tool_tip="Multiply all font sizes by this amount." /> 73 tool_tip="Multiply all font sizes by this amount." />
54 74
55 <check_box name="font_round" follows="left|top" 75 <check_box name="font_round" follows="left|top"
56 bottom="-300" left="20" height="16" width="300" 76 bottom_delta="-20" left_delta="0" height="16" width="300"
57 label="Force integer font sizes (may fix blurry fonts)" /> 77 label="Force integer font sizes (may fix blurry fonts)" />
58 78
79
80 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
81 height="1" left="55" name="border" width="380" />
82
83
84 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
85 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
86 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
87 mouse_opaque="true" name="UI Size:" v_pad="0" width="128" font-style="BOLD|SHADOW">
88 UI Size:
89 </text>
90
91 <slider bottom_delta="22" can_edit_text="true" label_width="0" label=""
92 decimal_digits="3" enabled="true" height="16" increment="0.001"
93 initial_val="1" left="50" max_val="1.4" min_val="0.75" mouse_opaque="true"
94 name="ui_scale_slider" show_text="true" value="1" width="160" />
95 <button bottom_delta="-48" enabled="true" follows="left|top"
96 font="SansSerifSmall" halign="center" height="20" label="Reset to Default"
97 left="270" mouse_opaque="true"
98 name="reset_ui_size" scale_image="true" width="160" />
99 <check_box bottom_delta="-20" enabled="true" follows="left|top"
100 font="SansSerifSmall" height="16" initial_value="false"
101 label="Use resolution independent scale" left="50" mouse_opaque="true"
102 name="ui_auto_scale" radio_style="false" width="256" />
103
59</panel> 104</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml
index 8b354b4..e96def5 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml
@@ -1,18 +1,35 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="General" left="102" mouse_opaque="true" 18 height="408" label="General" left="102" mouse_opaque="true"
4 name="general_panel" width="517"> 19 name="general_panel" width="517">
20
21
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 22 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
6 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 23 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
7 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 24 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20" font-style="BOLD|SHADOW"
8 mouse_opaque="true" name="start_location_textbox" v_pad="0" width="394"> 25 mouse_opaque="true" name="start_location_textbox" v_pad="0" width="394">
9 Start Location: 26 Default Start Location:
10 </text> 27 </text>
11 <string name="region_name_prompt"> 28 <string name="region_name_prompt">
12 &lt;Type region name&gt; 29 &lt;Type region name&gt;
13 </string> 30 </string>
14 <combo_box name="default_location_combo" 31 <combo_box name="default_location_combo"
15 bottom="-22" left="155" height="16" width="150" 32 bottom_delta="-25" left="50" height="16" width="160"
16 follows="left|top" font="SansSerifSmall" 33 follows="left|top" font="SansSerifSmall"
17 mouse_opaque="true" allow_text_entry="true" max_chars="128"> 34 mouse_opaque="true" allow_text_entry="true" max_chars="128">
18 <combo_item name="MyHome" value="My Home"> 35 <combo_item name="MyHome" value="My Home">
@@ -26,153 +43,122 @@
26 </combo_item> 43 </combo_item>
27 </combo_box> 44 </combo_box>
28 <button name="grid_btn" label="Grid Manager" 45 <button name="grid_btn" label="Grid Manager"
29 bottom_delta="-3" left="330" height="20" width="100" 46 bottom_delta="-3" left="270" height="20" width="160"
30 follows="left|top" font="SansSerifSmall" halign="center" 47 follows="left|top" font="SansSerifSmall" halign="center"
31 mouse_opaque="true" scale_image="TRUE" /> 48 mouse_opaque="true" scale_image="TRUE" />
32 <check_box bottom="-44" enabled="true" follows="left|top" 49 <check_box bottom_delta="-17" enabled="true" follows="left|top"
33 font="SansSerifSmall" height="16" initial_value="true" 50 font="SansSerifSmall" height="16" initial_value="true"
34 label="Show start location at login screen" left="151" mouse_opaque="true" 51 label="Show at login screen" left="50" mouse_opaque="true"
35 name="show_location_checkbox" radio_style="false" width="256" /> 52 name="show_location_checkbox" radio_style="false" width="256" />
53
54
55 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
56 height="1" left="55" name="border" width="380" />
57
58
36 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 59 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
37 bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top" 60 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
38 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 61 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20" font-style="BOLD|SHADOW"
39 mouse_opaque="true" name="show_names_textbox" v_pad="0" width="394"> 62 mouse_opaque="true" name="show_names_textbox" v_pad="0" width="394">
40 Nametags: 63 Nametags:
41 </text> 64 </text>
42 <combo_box bottom_delta="0" follows="left|top" height="18" left="155" 65 <combo_box bottom_delta="-30" follows="left|top" height="18" left="50"
43 mouse_opaque="true" name="fade_out_combobox" width="146"> 66 mouse_opaque="true" name="fade_out_combobox" width="160">
44 <combo_item name="Never" value="Never"> 67 <combo_item name="Never" value="Never">
45 Never show 68 Never show nametags
46 </combo_item> 69 </combo_item>
47 <combo_item name="Show Temporarily" value="Show Temporarily"> 70 <combo_item name="Show Temporarily" value="Show Temporarily">
48 Temporarily show 71 Briefly show nametags
49 </combo_item> 72 </combo_item>
50 <combo_item name="Always" value="Always"> 73 <combo_item name="Always" value="Always">
51 Always show 74 Always show nametags
52 </combo_item> 75 </combo_item>
53 </combo_box> 76 </combo_box>
54 <check_box bottom_delta="0" follows="left|top" 77 <check_box bottom_delta="0" follows="left|top"
55 font="SansSerifSmall" height="16" initial_value="true" 78 font="SansSerifSmall" height="16" initial_value="false"
56 label="Small avatar names" left="330" name="small_avatar_names_checkbox" 79 label="Large nametags" left="270" name="large_avatar_names_checkbox"
57 width="200" /> 80 width="200" />
58 <check_box bottom_delta="-20" follows="left|top" 81 <check_box bottom_delta="-20" follows="left|top"
59 font="SansSerifSmall" height="16" initial_value="false" 82 font="SansSerifSmall" height="16" initial_value="false"
60 label="Hide my name on my screen" left="151" name="show_my_name_checkbox" 83 label="Hide my nametag" left="50" name="show_my_name_checkbox"
61 width="200" /> 84 width="200" />
62 85 <check_box bottom_delta="0" follows="left|top"
63 <check_box bottom_delta="-20" follows="left|top"
64 font="SansSerifSmall" height="16" initial_value="false" 86 font="SansSerifSmall" height="16" initial_value="false"
65 label="Highlight friends tags" left="151" name="highlight_friends_checkbox" 87 label="Bold my friends' nametags" left="270" name="highlight_friends_checkbox"
66 width="200" /> 88 width="200" />
67 <text type="string" length="1" bottom_delta="-24" follows="left|top" font="SansSerifSmall" h_pad="0" 89 <check_box bottom_delta="-20" follows="left|top"
68 halign="left" height="16" left="10" name="Display_Names_textbox" v_pad="0" 90 font="SansSerifSmall" height="16" initial_value="false"
69 width="394"> 91 label="Hide group titles in nametags" left="50" mouse_opaque="true"
92 name="show_all_title_checkbox" radio_style="false" width="256" />
93
94
95 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
96 height="1" left="55" name="border" width="380" />
97
98
99 <text type="string" length="1" bottom_delta="-20" follows="left|top" font="SansSerifSmall" h_pad="0"
100 halign="left" height="10" left="20" name="Display_Names_textbox" v_pad="0"
101 width="394" font-style="BOLD|SHADOW">
70 Display Names: 102 Display Names:
71 </text> 103 </text>
72 <radio_group name="displaynames" draw_border="false" 104 <radio_group name="displaynames" draw_border="false"
73 bottom_delta="0" left_delta="60" height="18" 105 bottom_delta="-30" left="50" height="18"
74 follows="top|left" 106 follows="top|left"
75 control_name="DisplayNamesUsage"> 107 control_name="DisplayNamesUsage">
76 <radio_item name="0" bottom_delta="-8" left_delta="40" height="18"> 108 <radio_item name="0" bottom_delta="-8" left="0" height="18">
77 Legacy Names 109 Show legacy names
78 </radio_item> 110 </radio_item>
79 <radio_item name="1" bottom_delta="0" left_delta="50" height="18"> 111 <radio_item name="1" bottom_delta="0" left_delta="70" height="18">
80 Display Names 112 Show display names
81 </radio_item> 113 </radio_item>
82 <radio_item name="2" bottom_delta="0" left_delta="50" height="18"> 114 <radio_item name="2" bottom_delta="0" left_delta="70" height="18">
83 Show Both 115 Show Both
84 </radio_item> 116 </radio_item>
85 </radio_group> 117 </radio_group>
86 <check_box bottom_delta="-20" follows="left|top" control_name="LegacyNamesForFriends" 118 <check_box bottom_delta="-17" follows="left|top" control_name="LegacyNamesForFriends"
87 font="SansSerifSmall" height="16" initial_value="false" 119 font="SansSerifSmall" height="16" initial_value="false"
88 label="Show legacy names for friends" left="151" name="legacy_friends_checkbox" 120 label="Show legacy names for friends" left="50" name="legacy_friends_checkbox"
89 width="200" /> 121 width="200" />
90 <text type="string" length="1" bottom_delta="-24" follows="left|top" font="SansSerifSmall" h_pad="0" 122
91 halign="left" height="16" left="10" name="group_titles_textbox" v_pad="0" 123
92 width="394"> 124 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
93 Group Titles: 125 height="1" left="55" name="border" width="380" />
94 </text> 126
95 <check_box bottom_delta="0" follows="left|top" 127
96 font="SansSerifSmall" height="16" initial_value="false"
97 label="Hide all group titles" left="151" mouse_opaque="true"
98 name="show_all_title_checkbox" radio_style="false" width="256" />
99 <check_box bottom_delta="0" follows="left|top"
100 font="SansSerifSmall" height="16" initial_value="false"
101 label="Hide my group title" left="330" name="show_my_title_checkbox"
102 radio_style="false" width="256" />
103 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
104 bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top"
105 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10"
106 mouse_opaque="true" name="effects_color_textbox" v_pad="0" width="394">
107 Selection Beam Color:
108 </text>
109 <color_swatch border_color="0.45098 0.517647 0.607843 1" bottom_delta="-44"
110 can_apply_immediately="false" color="1 1 1 1"
111 enabled="true" follows="left|top" height="55" label="" left="153"
112 mouse_opaque="true" name="effect_color_swatch"
113 tool_tip="Click to open Color Picker" width="45" />
114 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 128 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
115 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" 129 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
116 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 130 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20" font-style="BOLD|SHADOW"
117 mouse_opaque="true" name="UI Size:" v_pad="0" width="128"> 131 mouse_opaque="true" name="afk_textbox" v_pad="0" width="394">
118 UI Size: 132 Idle Away:
119 </text> 133 </text>
120 <slider bottom_delta="42" can_edit_text="true" 134 <check_box bottom_delta="-25" enabled="true" follows="left|top"
121 decimal_digits="3" enabled="true" height="16" increment="0.001" 135 font="SansSerifSmall" height="16" initial_value="false"
122 initial_val="1" left="148" max_val="1.4" min_val="0.75" mouse_opaque="true" 136 label="Go Away/AFK when idle after" left="50" mouse_opaque="true"
123 name="ui_scale_slider" show_text="true" value="1" width="220" /> 137 name="afk_timeout_checkbox" radio_style="false" width="256" />
124 <button bottom_delta="-48" enabled="true" follows="left|top" 138 <spinner bottom_delta="0" decimal_digits="0" enabled="true"
125 font="SansSerif" halign="center" height="22" label="Reset" 139 follows="left|top" height="16" increment="1" initial_val="5"
126 label_selected="Reset" left_delta="226" mouse_opaque="true" 140 label="" label_width="0" left="270" max_val="360"
127 name="reset_ui_size" scale_image="true" width="80" /> 141 min_val="1" mouse_opaque="true" name="afk_timeout_spinner" width="50" />
128 <check_box bottom_delta="-14" enabled="true" follows="left|top"
129 font="SansSerifSmall" height="16" initial_value="false"
130 label="Use resolution independent scale" left="151" mouse_opaque="true"
131 name="ui_auto_scale" radio_style="false" width="256" />
132 <spinner bottom_delta="-24" decimal_digits="0" enabled="true"
133 follows="left|top" height="16" increment="1" initial_val="300"
134 label="Away Timeout:" label_width="141" left="10" max_val="600"
135 min_val="30" mouse_opaque="true" name="afk_timeout_spinner" width="202" />
136 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
137 bottom_delta="6" drop_shadow_visible="true" enabled="true" follows="left|top"
138 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="220"
139 mouse_opaque="true" name="seconds_textbox" v_pad="0" width="128">
140 seconds
141 </text>
142 <check_box bottom_delta="-5" enabled="true" follows="left|top"
143 font="SansSerifSmall" height="16" initial_value="false"
144 label="Go Away/AFK when idle" left="330" mouse_opaque="true"
145 name="afk_timeout_checkbox" radio_style="false" width="256" />
146 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 142 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
147 bottom_delta="-27" drop_shadow_visible="true" enabled="true" follows="left|top" 143 bottom_delta="5" drop_shadow_visible="true" enabled="true" follows="left|top"
148 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 144 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="55"
149 mouse_opaque="true" name="Mini-Map Notify:" v_pad="0" width="128"> 145 mouse_opaque="true" name="minutes_textbox" v_pad="0" width="128">
150 Mini-Map Notify: 146 minute(s)
151 </text> 147 </text>
152 <check_box bottom_delta="-4" enabled="true" 148
153 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 149
154 label="Entering chat range" left="151" 150 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
155 mouse_opaque="true" name="mini_map_notify_chat" radio_style="false" 151 height="1" left="55" name="border" width="380" />
156 width="256" /> 152
157 <check_box bottom_delta="0" enabled="true" 153
158 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
159 label="Entering sim" left="330"
160 mouse_opaque="true" name="mini_map_notify_sim" radio_style="false"
161 width="256" />
162 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 154 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
163 bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top" 155 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
164 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 156 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20" font-style="BOLD|SHADOW"
165 mouse_opaque="true" name="maturity_desired_label" v_pad="0" width="394"> 157 mouse_opaque="true" name="maturity_desired_label" v_pad="0" width="394">
166 Rating: 158 Access Content Rated:
167 </text>
168 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
169 bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top"
170 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="151"
171 mouse_opaque="true" name="maturity_desired_prompt" v_pad="0" width="394">
172 I want to access content rated:
173 </text> 159 </text>
174 <combo_box bottom_delta="-6" follows="left|top" height="18" left="315" 160 <combo_box bottom_delta="-25" follows="left|top" height="18" left="50"
175 mouse_opaque="true" name="maturity_desired_combobox" width="150"> 161 mouse_opaque="true" name="maturity_desired_combobox" width="160">
176 <combo_item name="Desired_Adult" value="42"> 162 <combo_item name="Desired_Adult" value="42">
177 PG, Mature and Adult 163 PG, Mature and Adult
178 </combo_item> 164 </combo_item>
@@ -185,100 +171,108 @@
185 </combo_box> 171 </combo_box>
186 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 172 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
187 bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top" 173 bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top"
188 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="315" 174 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
189 mouse_opaque="true" name="maturity_desired_textbox" v_pad="0" width="150"> 175 mouse_opaque="true" name="maturity_desired_textbox" v_pad="0" width="160">
190 PG only 176 PG only
191 </text> 177 </text>
192 178
179
180 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
181 height="1" left="55" name="border" width="380" />
182
193 183
194 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 184 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
195 bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top" 185 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
196 font="SansSerifSmall" h_pad="0" halign="left" height="18" left="10" 186 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20" font-style="BOLD|SHADOW"
197 mouse_opaque="true" name="time_textbox" v_pad="0" width="394">
198 Clock:
199 </text>
200 <combo_box allow_text_entry="false" bottom_delta="0" enabled="true" follows="left|top"
201 height="18" left="153" max_chars="20" mouse_opaque="true"
202 name="time_combobox" width="146">
203 <combo_item type="string" name="12HourTime" value="PST 12">
204 12-hour PST/PDT
205 </combo_item>
206 <combo_item type="string" name="24HourTime" value="PST 24">
207 24-hour PST/PDT
208 </combo_item>
209 <combo_item type="string" name="UTCTime" value="UTC">
210 UTC
211 </combo_item>
212 </combo_box>
213 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
214 bottom_delta="-24" drop_shadow_visible="true" enabled="true" follows="left|top"
215 font="SansSerifSmall" h_pad="0" halign="left" height="18" left="10"
216 mouse_opaque="true" name="language_textbox" v_pad="0" width="394"> 187 mouse_opaque="true" name="language_textbox" v_pad="0" width="394">
217 Language: 188 Language:
218 </text> 189 </text>
219 <combo_box allow_text_entry="false" bottom_delta="0" enabled="true" 190 <combo_box allow_text_entry="false" bottom_delta="-30" enabled="true"
220 follows="left|top" height="18" left="153" max_chars="135" 191 follows="left|top" height="18" left="50" max_chars="135"
221 mouse_opaque="true" name="language_combobox" width="146"> 192 mouse_opaque="true" name="language_combobox" width="160">
222 <combo_item type="string" length="1" enabled="true" name="System Default Language" value="default"> 193 <combo_item type="string" length="1" enabled="true" name="System Default Language" value="default">
223 System Default 194 System Default
224 </combo_item> 195 </combo_item>
225 <combo_item type="string" length="1" enabled="true" name="English" value="en-us"> 196 <combo_item type="string" length="1" enabled="true" name="English" value="en-us">
226 English 197 English
227 </combo_item> 198 </combo_item>
228 199
229 <!-- After "System Default" and "English", please keep the rest of these combo_items in alphabetical order by the first character in the string. --> 200 <!-- After "System Default" and "English", please keep the rest of these combo_items in alphabetical order by the first character in the string. -->
230 201
231 <combo_item type="string" length="1" enabled="true" name="Danish" value="da"> 202 <combo_item type="string" length="1" enabled="true" name="Danish" value="da">
232 Dansk (Danish) - Beta 203 Dansk (Danish) - Beta
233 </combo_item> 204 </combo_item>
234 <combo_item type="string" length="1" enabled="true" name="Deutsch(German)" value="de"> 205 <combo_item type="string" length="1" enabled="true" name="Deutsch(German)" value="de">
235 Deutsch (German) - Beta 206 Deutsch (German) - Beta
236 </combo_item> 207 </combo_item>
237 <combo_item type="string" length="1" enabled="true" name="Spanish" value="es"> 208 <combo_item type="string" length="1" enabled="true" name="Spanish" value="es">
238 Español (Spanish) - Beta 209 Español (Spanish) - Beta
239 </combo_item> 210 </combo_item>
240 <combo_item type="string" length="1" enabled="true" name="French" value="fr"> 211 <combo_item type="string" length="1" enabled="true" name="French" value="fr">
241 Français (French) - Beta 212 Français (French) - Beta
242 </combo_item> 213 </combo_item>
243 <combo_item type="string" length="1" enabled="true" name="Italian" value="it"> 214 <combo_item type="string" length="1" enabled="true" name="Italian" value="it">
244 Italiano (Italian) - Beta 215 Italiano (Italian) - Beta
245 </combo_item> 216 </combo_item>
246 <combo_item type="string" length="1" enabled="true" name="Hungarian" value="hu"> 217 <combo_item type="string" length="1" enabled="true" name="Hungarian" value="hu">
247 Magyar (Hungarian) - Beta 218 Magyar (Hungarian) - Beta
248 </combo_item> 219 </combo_item>
249 <combo_item type="string" length="1" enabled="true" name="Dutch" value="nl"> 220 <combo_item type="string" length="1" enabled="true" name="Dutch" value="nl">
250 Nederlands (Dutch) - Beta 221 Nederlands (Dutch) - Beta
251 </combo_item> 222 </combo_item>
252 <combo_item type="string" length="1" enabled="true" name="Polish" value="pl"> 223 <combo_item type="string" length="1" enabled="true" name="Polish" value="pl">
253 Polski (Polish) - Beta 224 Polski (Polish) - Beta
254 </combo_item> 225 </combo_item>
255 <combo_item type="string" length="1" enabled="true" name="Portugese" value="pt"> 226 <combo_item type="string" length="1" enabled="true" name="Portugese" value="pt">
256 Portugués (Portuguese) - Beta 227 Portugués (Portuguese) - Beta
257 </combo_item> 228 </combo_item>
258 <combo_item type="string" length="1" enabled="true" name="Russian" value="ru"> 229 <combo_item type="string" length="1" enabled="true" name="Russian" value="ru">
259 РуÑÑкий (Russian) - Beta 230 РуÑÑкий (Russian) - Beta
260 </combo_item> 231 </combo_item>
261 <combo_item type="string" length="1" enabled="true" name="Turkish" value="tr"> 232 <combo_item type="string" length="1" enabled="true" name="Turkish" value="tr">
262 Türkçe (Turkish) - Beta 233 Türkçe (Turkish) - Beta
263 </combo_item> 234 </combo_item>
264 <combo_item type="string" length="1" enabled="true" name="Ukrainian" value="uk"> 235 <combo_item type="string" length="1" enabled="true" name="Ukrainian" value="uk">
265 УкраїнÑька (Ukrainian) - Beta 236 УкраїнÑька (Ukrainian) - Beta
266 </combo_item> 237 </combo_item>
267 <combo_item type="string" length="1" enabled="true" name="Chinese" value="zh"> 238 <combo_item type="string" length="1" enabled="true" name="Chinese" value="zh">
268 中文 (简体) (Chinese) - Beta 239 中文 (简体) (Chinese) - Beta
269 </combo_item> 240 </combo_item>
270 <combo_item type="string" length="1" enabled="true" name="(Japanese)" value="ja"> 241 <combo_item type="string" length="1" enabled="true" name="(Japanese)" value="ja">
271 日本語 (Japanese) - Beta 242 日本語 (Japanese) - Beta
272 </combo_item> 243 </combo_item>
273 <combo_item type="string" length="1" enabled="true" name="(Korean)" value="ko"> 244 <combo_item type="string" length="1" enabled="true" name="(Korean)" value="ko">
274 한국어 (Korean) - Beta 245 한국어 (Korean) - Beta
275 </combo_item> 246 </combo_item>
276 </combo_box> 247 </combo_box>
277 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 248 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
278 bottom_delta="0" drop_shadow_visible="true" enabled="true" 249 bottom_delta="-20" drop_shadow_visible="true" enabled="true"
279 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 250 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
280 height="18" left_delta="150" mouse_opaque="true" name="language_textbox2" 251 height="18" left="50" mouse_opaque="true" name="language_textbox2"
281 v_pad="0" width="400"> 252 v_pad="0" width="380">
282 (requires restart for full effect) 253 (requires restart)
283 </text> 254 </text>
255
256
257 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
258 bottom_delta="50" drop_shadow_visible="true" enabled="true" follows="left|top"
259 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="270" font-style="BOLD|SHADOW"
260 mouse_opaque="true" name="time_textbox" v_pad="0" width="394">
261 Inworld Clock:
262 </text>
263 <combo_box allow_text_entry="false" bottom_delta="-30" enabled="true" follows="left|top"
264 height="18" left="300" max_chars="20" mouse_opaque="true"
265 name="time_combobox" width="160">
266 <combo_item type="string" name="12HourTime" value="PST 12">
267 12-hour PST/PDT
268 </combo_item>
269 <combo_item type="string" name="24HourTime" value="PST 24">
270 24-hour PST/PDT
271 </combo_item>
272 <combo_item type="string" name="UTCTime" value="UTC">
273 UTC
274 </combo_item>
275 </combo_box>
276
277
284</panel> 278</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml
index fe19929..2e92689 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml
@@ -1,75 +1,92 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Graphics" left="102" mouse_opaque="true" 18 height="408" label="Graphics" left="102" mouse_opaque="true"
4 name="Display panel" width="517"> 19 name="Display panel" width="517">
20
21
5 <button bottom="-22" follows="left|top" font="SansSerif" height="18" label="?" 22 <button bottom="-22" follows="left|top" font="SansSerif" height="18" label="?"
6 left="470" name="GraphicsPreferencesHelpButton" width="22" /> 23 left="470" name="GraphicsPreferencesHelpButton" width="22" />
7 <check_box bottom="-23" enabled="true" follows="left|top" font="SansSerifSmall" 24
25
26 <text type="string" length="1" bottom="-20" follows="left|top" font="SansSerifSmall" h_pad="0"
27 halign="left" height="10" left="20" name="Display_textbox" v_pad="0"
28 width="394" font-style="BOLD|SHADOW">
29 Display Mode:
30 </text>
31
32
33 <check_box bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall"
8 height="16" initial_value="false" 34 height="16" initial_value="false"
9 label="Run meta-impy in a window" left="10" mouse_opaque="true" 35 tool_tip="If unchecked, viewer will display full-screen when logged in"
36 label="Windowed mode" left_delta="30" mouse_opaque="true"
10 name="windowed mode" radio_style="false" width="100" /> 37 name="windowed mode" radio_style="false" width="100" />
11 <check_box bottom_delta="0" enabled="true" follows="left|top" 38
12 font="SansSerifSmall" height="16" initial_value="false"
13 label="Show WindLight toolbar" left="275" mouse_opaque="true"
14 name="toggle_windlight_control" radio_style="false" width="237"
15 control_name="EnableWindlightRemote" />
16 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom="-43"
17 embedded_items="false" enabled="false" follows="left|top"
18 font="SansSerifSmall" height="20" hide_border="true"
19 hide_scrollbar="true" left="10" max_length="65535" mouse_opaque="true"
20 name="FullScreenInfo" tab_stop="false" width="350" word_wrap="true">
21 If unchecked, viewer will display full-screen when logged in.
22 </text_editor>
23 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 39 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
24 bottom="-62" drop_shadow_visible="true" enabled="true" follows="left|top" 40 bottom_delta="-16" drop_shadow_visible="true" enabled="true" follows="left|top"
25 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 41 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
26 mouse_opaque="true" name="WindowSizeLabel" v_pad="0" width="128"> 42 mouse_opaque="true" name="WindowSizeLabel" v_pad="0" width="128">
27 Window size: 43 Window size:
28 </text> 44 </text>
29 <combo_box allow_text_entry="false" bottom="-67" enabled="true" follows="left|top" 45 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
46 bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top"
47 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
48 mouse_opaque="true" name="DisplayResLabel" v_pad="0" width="128">
49 Display resolution:
50 </text>
51 <combo_box allow_text_entry="false" bottom_delta="-4" enabled="true" follows="left|top"
30 height="18" left="185" max_chars="20" mouse_opaque="true" 52 height="18" left="185" max_chars="20" mouse_opaque="true"
31 name="windowsize combo" width="150"> 53 name="windowsize combo" width="160">
32 <combo_item type="string" length="1" enabled="true" name="800x600" value="800 x 600"> 54 <combo_item type="string" length="1" enabled="true" name="800x600" value="800 x 600">
33 800x600 55 800×600
34 </combo_item> 56 </combo_item>
35 <combo_item type="string" length="1" enabled="true" name="720x480" value="720 x 480"> 57 <combo_item type="string" length="1" enabled="true" name="720x480" value="720 x 480">
36 720x480 (NTSC) 58 720×480 (NTSC)
37 </combo_item> 59 </combo_item>
38 <combo_item type="string" length="1" enabled="true" name="768x576" value="768 x 576"> 60 <combo_item type="string" length="1" enabled="true" name="768x576" value="768 x 576">
39 768x576 (PAL) 61 768×576 (PAL)
40 </combo_item> 62 </combo_item>
41 <combo_item type="string" length="1" enabled="true" name="1024x768" value="1024 x 768"> 63 <combo_item type="string" length="1" enabled="true" name="1024x768" value="1024 x 768">
42 1024x768 64 1024×768
43 </combo_item> 65 </combo_item>
44 <combo_item type="string" length="1" enabled="true" name="1280x720" value="1280 x 720"> 66 <combo_item type="string" length="1" enabled="true" name="1280x720" value="1280 x 720">
45 1280x720 (HDV720) 67 1280×720 (HDV720)
46 </combo_item> 68 </combo_item>
47 <combo_item type="string" length="1" enabled="true" name="1440x1080" value="1440 x 1080"> 69 <combo_item type="string" length="1" enabled="true" name="1440x1080" value="1440 x 1080">
48 1440x1080 (HDV1080) 70 1440×1080 (HDV1080)
49 </combo_item> 71 </combo_item>
50 <combo_item type="string" length="1" enabled="true" name="1920x1080" value="1920 x 1080"> 72 <combo_item type="string" length="1" enabled="true" name="1920x1080" value="1920 x 1080">
51 1920x1080 (HD1080) 73 1920×1080 (HD1080)
52 </combo_item> 74 </combo_item>
53 </combo_box> 75 </combo_box>
54 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 76 <combo_box allow_text_entry="false" bottom_delta="0" enabled="true" follows="left|top"
55 bottom="-62" drop_shadow_visible="true" enabled="true" follows="left|top"
56 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10"
57 mouse_opaque="true" name="DisplayResLabel" v_pad="0" width="128">
58 Display resolution:
59 </text>
60 <combo_box allow_text_entry="false" bottom="-67" enabled="true" follows="left|top"
61 height="18" left="185" max_chars="20" mouse_opaque="true" 77 height="18" left="185" max_chars="20" mouse_opaque="true"
62 name="fullscreen combo" width="150" /> 78 name="fullscreen combo" width="160" />
79
63 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 80 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
64 bottom="-39" drop_shadow_visible="true" enabled="true" follows="left|top" 81 bottom_delta="-16" drop_shadow_visible="true" enabled="true" follows="left|top"
65 font="SansSerifSmall" h_pad="0" halign="left" height="12" 82 font="SansSerifSmall" h_pad="0" halign="left" height="12"
66 left="10" mouse_opaque="true" name="AspectRatioLabel1" 83 left="50" mouse_opaque="true" name="AspectRatioLabel1"
67 tool_tip="width / height" v_pad="0" width="160"> 84 tool_tip="width / height" v_pad="0" width="160">
68 Aspect ratio: 85 Aspect ratio:
69 </text> 86 </text>
70 <combo_box allow_text_entry="true" bottom="-43" enabled="true" follows="left|top" 87 <combo_box allow_text_entry="true" bottom_delta="-4" enabled="true" follows="left|top"
71 height="16" left="185" max_chars="100" mouse_opaque="true" 88 height="16" left="185" max_chars="100" mouse_opaque="true"
72 name="aspect_ratio" tool_tip="width / height" width="150"> 89 name="aspect_ratio" tool_tip="width / height" width="160">
73 <combo_item type="string" length="1" enabled="true" name="4:3(StandardCRT)" value="1.333333"> 90 <combo_item type="string" length="1" enabled="true" name="4:3(StandardCRT)" value="1.333333">
74 4:3 (Standard CRT) 91 4:3 (Standard CRT)
75 </combo_item> 92 </combo_item>
@@ -83,321 +100,318 @@
83 16:9 (Widescreen) 100 16:9 (Widescreen)
84 </combo_item> 101 </combo_item>
85 </combo_box> 102 </combo_box>
86 <check_box bottom="-44" control_name="FullScreenAutoDetectAspectRatio" enabled="true" 103 <check_box bottom_delta="-2" control_name="FullScreenAutoDetectAspectRatio" enabled="true"
87 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 104 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
88 label="Auto-detect ratio" left="358" mouse_opaque="true" 105 label="Auto-detect" left_delta="165" mouse_opaque="true"
89 name="aspect_auto_detect" radio_style="false" width="256" /> 106 name="aspect_auto_detect" radio_style="false" width="256" />
90 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 107
91 bottom="-85" drop_shadow_visible="true" enabled="true" follows="left|top" 108
92 font="SansSerifSmall" h_pad="0" halign="left" height="12" 109 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
93 left="10" mouse_opaque="true" name="HigherText" v_pad="0" width="80"> 110 height="1" left="55" name="border" width="380" />
94 Quality and 111
95 </text> 112
96 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 113 <text type="string" length="1" bottom_delta="-20" follows="left|top" font="SansSerifSmall" h_pad="0"
97 bottom_delta="-14" drop_shadow_visible="true" enabled="true" 114 halign="left" height="10" left="20" name="textbox" v_pad="0"
98 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 115 width="394" font-style="BOLD|SHADOW">
99 height="12" left_delta="0" mouse_opaque="true" 116 Performance
100 name="QualityText" v_pad="0" width="95"> 117 </text>
101 performance: 118 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
102 </text> 119 bottom_delta="-22" drop_shadow_visible="true" enabled="true" follows="left|top"
103 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
104 bottom="-86" drop_shadow_visible="true" enabled="true" follows="left|top"
105 font="SansSerifSmall" h_pad="0" halign="left" height="12"
106 left="115" mouse_opaque="true" name="FasterText" v_pad="0" width="80">
107 Faster
108 </text>
109 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
110 bottom="-105" drop_shadow_visible="true" enabled="true" follows="left|top"
111 font="SansSerifSmall" h_pad="0" halign="left" height="12" 120 font="SansSerifSmall" h_pad="0" halign="left" height="12"
112 left="158" mouse_opaque="true" name="ShadersPrefText" v_pad="0" width="40"> 121 left="110" mouse_opaque="true" name="ShadersPrefText" v_pad="0" width="40">
113 Low 122 Low
114 </text> 123 </text>
115 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 124 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
116 bottom_delta="0" drop_shadow_visible="true" enabled="true" 125 bottom_delta="0" drop_shadow_visible="true" enabled="true"
117 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 126 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
118 height="12" left_delta="47" mouse_opaque="true" 127 height="12" left_delta="62" mouse_opaque="true"
119 name="ShadersPrefText2" v_pad="0" width="40"> 128 name="ShadersPrefText2" v_pad="0" width="40">
120 Mid 129 Mid
121 </text> 130 </text>
122 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 131 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
123 bottom_delta="0" drop_shadow_visible="true" enabled="true" 132 bottom_delta="0" drop_shadow_visible="true" enabled="true"
124 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 133 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
125 height="12" left_delta="47" mouse_opaque="true" 134 height="12" left_delta="62" mouse_opaque="true"
126 name="ShadersPrefText3" v_pad="0" width="40"> 135 name="ShadersPrefText3" v_pad="0" width="40">
127 High 136 High
128 </text> 137 </text>
129 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 138 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
130 bottom_delta="0" drop_shadow_visible="true" enabled="true" 139 bottom_delta="0" drop_shadow_visible="true" enabled="true"
131 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 140 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
132 height="12" left_delta="47" mouse_opaque="true" 141 height="12" left_delta="62" mouse_opaque="true"
133 name="ShadersPrefText4" v_pad="0" width="40"> 142 name="ShadersPrefText4" v_pad="0" width="40">
134 Ultra 143 Ultra
135 </text> 144 </text>
136 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 145 <icon bottom_delta="18" color="0.12 0.12 0.12 1.0" height="14" follows="left|top"
137 bottom="-80" drop_shadow_visible="true" enabled="true" follows="left|top" 146 image_name="rounded_square.tga" left="123" name="LowGraphicsDivet"
138 font="SansSerifSmall" h_pad="0" halign="left" height="12"
139 left="334" mouse_opaque="true" name="HigherText2" v_pad="0" width="80">
140 Higher
141 </text>
142 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
143 bottom_delta="-14" drop_shadow_visible="true" enabled="true"
144 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
145 height="12" left_delta="0" mouse_opaque="true"
146 name="QualityText2" v_pad="0" width="95">
147 Quality
148 </text>
149 <icon bottom="-89" color="0.12 0.12 0.12 1.0" height="14" follows="left|top"
150 image_name="rounded_square.tga" left="173" name="LowGraphicsDivet"
151 width="2" /> 147 width="2" />
152 <icon bottom_delta="0" color="0.12 0.12 0.12 1.0" height="14" follows="left|top" 148 <icon bottom_delta="0" color="0.12 0.12 0.12 1.0" height="14" follows="left|top"
153 image_name="rounded_square.tga" left_delta="44" name="MidGraphicsDivet" 149 image_name="rounded_square.tga" left_delta="60" name="MidGraphicsDivet"
154 width="2" /> 150 width="2" />
155 <icon bottom_delta="0" color="0.12 0.12 0.12 1.0" height="14" follows="left|top" 151 <icon bottom_delta="0" color="0.12 0.12 0.12 1.0" height="14" follows="left|top"
156 image_name="rounded_square.tga" left_delta="44" name="HighGraphicsDivet" 152 image_name="rounded_square.tga" left_delta="61" name="HighGraphicsDivet"
157 width="2" /> 153 width="2" />
158 <icon bottom_delta="0" color="0.12 0.12 0.12 1.0" height="14" follows="left|top" 154 <icon bottom_delta="0" color="0.12 0.12 0.12 1.0" height="14" follows="left|top"
159 image_name="rounded_square.tga" left_delta="44" name="UltraGraphicsDivet" 155 image_name="rounded_square.tga" left_delta="61" name="UltraGraphicsDivet"
160 width="2" /> 156 width="2" />
161 <slider bottom="-90" can_edit_text="false" control_name="RenderQualityPerformance" 157 <slider bottom_delta="0" can_edit_text="false" control_name="RenderQualityPerformance"
162 decimal_digits="0" enabled="true" follows="left|top" height="16" 158 decimal_digits="0" enabled="true" follows="left|top" height="16"
163 increment="1" initial_val="0" label="" label_width="0" 159 increment="1" initial_val="0" label="" label_width="0"
164 left="165" max_val="3" min_val="0" mouse_opaque="true" 160 left="115" max_val="3" min_val="0" mouse_opaque="true"
165 name="QualityPerformanceSelection" show_text="false" width="150" /> 161 name="QualityPerformanceSelection" show_text="false" width="200" />
166 <check_box bottom="-91" control_name="RenderCustomSettings" enabled="true" 162 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
163 bottom_delta="2" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
164 font="SansSerifSmall" h_pad="0" halign="left" height="12"
165 left="340" mouse_opaque="true" name="HigherText2" v_pad="0" width="200">
166 Graphics Quality
167 </text>
168
169
170 <check_box bottom_delta="-50" control_name="RenderCustomSettings" enabled="true"
167 follows="left|top" font="SansSerifSmall" height="16" 171 follows="left|top" font="SansSerifSmall" height="16"
168 initial_value="true" label="Custom" left="385" mouse_opaque="true" 172 initial_value="true" label="Advanced options" left="50" mouse_opaque="true"
169 name="CustomSettings" radio_style="false" width="256" /> 173 name="CustomSettings" radio_style="false" width="256" />
170 <view_border bevel_style="none" border_thickness="1" bottom="-415" follows="left|top" 174
171 height="300" left="5" name="GraphicsBorder" width="485" /> 175 <button bottom_delta="0" enabled="true" font="SansSerifSmall" halign="center" height="20"
172 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 176 label="Recommended Settings" left="210" mouse_opaque="true"
173 bottom="-130" drop_shadow_visible="true" enabled="true" follows="left|top" 177 name="Defaults" scale_image="true" width="160" follows="left|top" />
174 font="SansSerifSmall" h_pad="0" halign="left" height="12" 178 <button bottom_delta="0" enabled="true" font="SansSerifSmall" halign="center" height="20"
179 label="Hardware"
180 left_delta="165" mouse_opaque="true" name="GraphicsHardwareButton"
181 scale_image="true" width="110" follows="left|top" />
182
183
184 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
185 bottom_delta="-15" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
186 font="SansSerifSmall" h_pad="0" halign="left" height="10"
175 left="10" mouse_opaque="true" name="ShadersText" v_pad="0" width="128"> 187 left="10" mouse_opaque="true" name="ShadersText" v_pad="0" width="128">
176 Shaders: 188 Shaders:
177 </text> 189 </text>
178 <check_box bottom="-153" control_name="RenderObjectBump" enabled="true" follows="left|top" 190 <check_box bottom_delta="-23" control_name="RenderObjectBump" enabled="true" follows="left|top"
179 font="SansSerifSmall" height="16" initial_value="true" 191 font="SansSerifSmall" height="16" initial_value="true"
180 label="Bump mapping and shiny" left="10" mouse_opaque="true" 192 label="Bump mapping and shiny" left_delta="10" mouse_opaque="true"
181 name="BumpShiny" radio_style="false" width="256" /> 193 name="BumpShiny" radio_style="false" width="256" />
182 <check_box bottom_delta="-17" control_name="VertexShaderEnable" enabled="true" 194 <check_box bottom_delta="-18" control_name="VertexShaderEnable" enabled="true"
183 follows="left|top" font="SansSerifSmall" height="16" 195 follows="left|top" font="SansSerifSmall" height="16"
184 initial_value="true" label="Basic shaders" left_delta="0" 196 initial_value="true" label="Basic shaders" left_delta="0"
185 mouse_opaque="true" name="BasicShaders" radio_style="false" 197 mouse_opaque="true" name="BasicShaders" radio_style="false"
186 tool_tip="Disabling this option may prevent some graphics card drivers from crashing." 198 tool_tip="Disabling this option may prevent some graphics card drivers from crashing."
187 width="315" /> 199 width="315" />
188 <check_box bottom_delta="-17" control_name="WindLightUseAtmosShaders" enabled="true" 200 <check_box bottom_delta="-18" control_name="WindLightUseAtmosShaders" enabled="true"
189 follows="left|top" font="SansSerifSmall" height="16" 201 follows="left|top" font="SansSerifSmall" height="16"
190 initial_value="true" label="Atmospheric shaders" left_delta="0" 202 initial_value="true" label="Atmospheric shaders" left_delta="0"
191 mouse_opaque="true" name="WindLightUseAtmosShaders" radio_style="false" 203 mouse_opaque="true" name="WindLightUseAtmosShaders" radio_style="false"
192 width="256" /> 204 width="256" />
193 <check_box bottom_delta="-17" control_name="RenderWaterReflections" enabled="true" 205 <check_box bottom_delta="-18" control_name="RenderWaterReflections" enabled="true"
194 follows="left|top" font="SansSerifSmall" height="16" 206 follows="left|top" font="SansSerifSmall" height="16"
195 initial_value="true" label="Water reflections" left_delta="0" 207 initial_value="true" label="Water reflections" left_delta="0"
196 mouse_opaque="true" name="Reflections" radio_style="false" width="256" /> 208 mouse_opaque="true" name="Reflections" radio_style="false" width="256" />
197 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 209
198 bottom="-223" drop_shadow_visible="true" enabled="true" follows="left|top" 210 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
199 font="SansSerifSmall" h_pad="0" halign="left" height="12" 211 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
200 left="10" mouse_opaque="true" name="ReflectionDetailText" v_pad="0" 212 font="SansSerifSmall" h_pad="0" halign="left" height="10"
213 left_delta="-10" mouse_opaque="true" name="ReflectionDetailText" v_pad="0"
201 width="128"> 214 width="128">
202 Reflection Detail: 215 Water Reflections:
203 </text> 216 </text>
204 <radio_group bottom_delta="-73" control_name="RenderReflectionDetail" draw_border="false" 217 <combo_box allow_text_entry="false" bottom_delta="-23" enabled="true" follows="left|top"
205 enabled="true" follows="left|top" height="70" 218 height="16" left_delta="10" max_chars="100" mouse_opaque="true" control_name="RenderReflectionDetail"
206 left_delta="-2" mouse_opaque="true" name="ReflectionDetailRadio" 219 name="ReflectionDetailCombo" width="160">
207 width="321"> 220 <combo_item type="string" length="1" enabled="true" name="0" value="0">
208 <radio_item type="string" length="1" bottom="-19" enabled="true" follows="left|top" height="16" 221 Terrain and trees
209 left="3" mouse_opaque="true" name="0" width="315"> 222 </combo_item>
210 Terrain and trees 223 <combo_item type="string" length="1" enabled="true" name="1" value="1">
211 </radio_item> 224 All static objects
212 <radio_item type="string" length="1" bottom="-35" enabled="true" follows="left|top" height="16" 225 </combo_item>
213 left="3" mouse_opaque="true" name="1" width="315"> 226 <combo_item type="string" length="1" enabled="true" name="2" value="2">
214 All static objects 227 All avatars and objects
215 </radio_item> 228 </combo_item>
216 <radio_item type="string" length="1" bottom="-51" enabled="true" follows="left|top" height="16" 229 <combo_item type="string" length="1" enabled="true" name="3" value="3">
217 left="3" mouse_opaque="true" name="2" width="315"> 230 Everything
218 All avatars and objects 231 </combo_item>
219 </radio_item> 232 </combo_box>
220 <radio_item type="string" length="1" bottom="-67" enabled="true" follows="left|top" height="16" 233
221 left="3" mouse_opaque="true" name="3" width="315"> 234 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
222 Everything 235 bottom_delta="-25" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
223 </radio_item> 236 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="-10"
224 </radio_group>
225 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
226 bottom="-313" drop_shadow_visible="true" enabled="true" follows="left|top"
227 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10"
228 mouse_opaque="true" name="AvatarRenderingText" v_pad="0" width="128"> 237 mouse_opaque="true" name="AvatarRenderingText" v_pad="0" width="128">
229 Avatar Rendering: 238 Avatar Rendering:
230 </text> 239 </text>
231 <check_box bottom_delta="-23" control_name="RenderUseImpostors" enabled="true" 240 <check_box bottom_delta="-23" control_name="RenderUseImpostors" enabled="true"
232 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 241 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
233 label="Avatar impostors" left_delta="0" mouse_opaque="true" 242 label="Avatar impostors" left_delta="10" mouse_opaque="true"
234 name="AvatarImpostors" radio_style="false" width="256" /> 243 name="AvatarImpostors" radio_style="false" width="256" />
235 <check_box bottom_delta="-17" control_name="RenderAvatarVP" enabled="true" 244 <check_box bottom_delta="-18" control_name="RenderAvatarVP" enabled="true"
236 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 245 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
237 label="Hardware skinning" left_delta="0" mouse_opaque="true" 246 label="Hardware skinning" left_delta="0" mouse_opaque="true"
238 name="AvatarVertexProgram" radio_style="false" width="256" /> 247 name="AvatarVertexProgram" radio_style="false" width="256" />
239 <check_box bottom_delta="-17" control_name="RenderAvatarCloth" enabled="true" 248 <check_box bottom_delta="-18" control_name="RenderAvatarCloth" enabled="true"
240 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 249 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
241 label="Avatar cloth" left_delta="0" mouse_opaque="true" name="AvatarCloth" 250 label="Avatar cloth" left_delta="0" mouse_opaque="true" name="AvatarCloth"
242 radio_style="false" width="256" /> 251 radio_style="false" width="256" />
252
253
254 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
255 bottom_delta="-27" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
256 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="-10"
257 mouse_opaque="true" name="TerrainDetailText" v_pad="0" width="128">
258 Terrain Detail:
259 </text>
260 <combo_box allow_text_entry="false" bottom_delta="-23" enabled="true" follows="left|top"
261 height="16" left_delta="10" max_chars="100" mouse_opaque="true" control_name="RenderTerrainDetail"
262 name="TerrainDetailCombo" width="160">
263 <combo_item type="string" length="1" enabled="true" name="0" value="0">
264 Low
265 </combo_item>
266 <combo_item type="string" length="1" enabled="true" name="1" value="1">
267 High
268 </combo_item>
269 </combo_box>
270
271
243 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 272 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
244 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 273 bottom="-190" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
245 font="SansSerifSmall" h_pad="0" halign="left" height="12" left_delta="0" 274 font="SansSerifSmall" h_pad="0" halign="left" height="10"
246 mouse_opaque="true" name="AvatarCountText" v_pad="0" width="128"> 275 left="210" mouse_opaque="true" name="LimitsText" v_pad="0" width="128">
247 Max. non-imposters: 276 Limits:
248 </text> 277 </text>
249 <slider bottom_delta="-20" can_edit_text="true" control_name="RenderAvatarMaxVisible" 278 <slider bottom_delta="-23" can_edit_text="true" control_name="RenderFarClip"
250 decimal_digits="0" enabled="true" follows="left|top" height="16"
251 increment="1" initial_val="35" label=""
252 label_width="0" left_delta="0" max_val="50" min_val="0" mouse_opaque="true"
253 name="AvatarMaxVisible" show_text="true" width="100" />
254 <slider bottom="-135" can_edit_text="true" control_name="RenderFarClip"
255 decimal_digits="0" enabled="true" follows="left|top" height="16" 279 decimal_digits="0" enabled="true" follows="left|top" height="16"
256 increment="4" initial_val="160" label="Draw distance (meters):" 280 increment="4" initial_val="160" label="Draw distance (meters):"
257 label_width="140" left="215" max_val="1024" min_val="32" mouse_opaque="true" 281 label_width="140" left_delta="10" max_val="1024" min_val="32" mouse_opaque="true"
258 name="DrawDistance" show_text="true" width="262" /> 282 name="DrawDistance" show_text="true" width="262" />
259 <slider bottom_delta="-20" can_edit_text="true" control_name="RenderMaxPartCount" 283 <slider bottom_delta="-18" can_edit_text="true" control_name="RenderMaxPartCount"
260 decimal_digits="0" enabled="true" follows="left|top" height="16" 284 decimal_digits="0" enabled="true" follows="left|top" height="16"
261 increment="256" initial_val="4096" 285 increment="256" initial_val="4096"
262 label="Max. particle count:" label_width="140" left_delta="0" 286 label="Max. particle count:" label_width="140" left_delta="0"
263 max_val="8192" min_val="0" mouse_opaque="true" name="MaxParticleCount" 287 max_val="8192" min_val="0" mouse_opaque="true" name="MaxParticleCount"
264 show_text="true" width="262" /> 288 show_text="true" width="262" />
265 <slider bottom_delta="-20" can_edit_text="false" control_name="RenderGlowResolutionPow" 289 <slider bottom_delta="-18" can_edit_text="true" control_name="RenderAvatarMaxVisible"
290 decimal_digits="0" enabled="true" follows="left|top" height="16"
291 increment="1" initial_val="35" label="Max. non-imposters:"
292 label_width="140" left_delta="0" max_val="50" min_val="0" mouse_opaque="true"
293 name="AvatarMaxVisible" show_text="true" width="250" />
294 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderGlowResolutionPow"
266 decimal_digits="0" enabled="true" follows="left|top" height="16" 295 decimal_digits="0" enabled="true" follows="left|top" height="16"
267 increment="1" initial_val="8" label="Post process quality:" 296 increment="1" initial_val="8" label="Post process quality:"
268 label_width="140" left_delta="0" max_val="9" min_val="8" 297 label_width="140" left_delta="0" max_val="9" min_val="8"
269 mouse_opaque="true" name="RenderPostProcess" show_text="false" width="223" /> 298 mouse_opaque="true" name="RenderPostProcess" show_text="false" width="223" />
270 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 299
271 bottom_delta="-17" drop_shadow_visible="true" enabled="true" 300
301 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
302 bottom_delta="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
272 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 303 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
273 height="12" left="215" mouse_opaque="true" name="MeshDetailText" v_pad="0" 304 height="12" left_delta="0" mouse_opaque="true" name="MeshDetailText" v_pad="0"
274 width="128"> 305 width="128">
275 Mesh Detail: 306 Mesh Detail:
276 </text> 307 </text>
277 <slider bottom_delta="-22" can_edit_text="false" control_name="RenderVolumeLODFactor" 308 <slider bottom_delta="-23" can_edit_text="false" control_name="RenderVolumeLODFactor"
278 decimal_digits="3" enabled="true" follows="left|top" height="16" 309 decimal_digits="3" enabled="true" follows="left|top" height="16"
279 increment="0.125" initial_val="160" label=" Objects:" 310 increment="0.125" initial_val="160" label=" Objects:"
280 label_width="140" left_delta="0" max_val="4" min_val="0" 311 label_width="140" left_delta="0" max_val="4" min_val="0"
281 mouse_opaque="true" name="ObjectMeshDetail" show_text="false" width="223" /> 312 mouse_opaque="true" name="ObjectMeshDetail" show_text="false" width="223" />
282 <slider bottom_delta="-20" can_edit_text="false" control_name="RenderFlexTimeFactor" 313 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderFlexTimeFactor"
283 decimal_digits="3" enabled="true" follows="left|top" height="16" 314 decimal_digits="3" enabled="true" follows="left|top" height="16"
284 increment="0.1" initial_val="160" label=" Flexiprims:" 315 increment="0.1" initial_val="160" label=" Flexiprims:"
285 label_width="140" left_delta="0" max_val="1" min_val="0" 316 label_width="140" left_delta="0" max_val="1" min_val="0"
286 mouse_opaque="true" name="FlexibleMeshDetail" show_text="false" width="223" /> 317 mouse_opaque="true" name="FlexibleMeshDetail" show_text="false" width="223" />
287 <slider bottom_delta="-20" can_edit_text="false" control_name="RenderTreeLODFactor" 318 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderTreeLODFactor"
288 decimal_digits="3" enabled="true" follows="left|top" height="16" 319 decimal_digits="3" enabled="true" follows="left|top" height="16"
289 increment="0.125" initial_val="160" label=" Trees:" 320 increment="0.125" initial_val="160" label=" Trees:"
290 label_width="140" left_delta="0" max_val="1" min_val="0" 321 label_width="140" left_delta="0" max_val="1" min_val="0"
291 mouse_opaque="true" name="TreeMeshDetail" show_text="false" width="223" /> 322 mouse_opaque="true" name="TreeMeshDetail" show_text="false" width="223" />
292 <slider bottom_delta="-20" can_edit_text="false" control_name="RenderAvatarLODFactor" 323 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderAvatarLODFactor"
293 decimal_digits="3" enabled="true" follows="left|top" height="16" 324 decimal_digits="3" enabled="true" follows="left|top" height="16"
294 increment="0.125" initial_val="160" label=" Avatars:" 325 increment="0.125" initial_val="160" label=" Avatars:"
295 label_width="140" left_delta="0" max_val="1" min_val="0" 326 label_width="140" left_delta="0" max_val="1" min_val="0"
296 mouse_opaque="true" name="AvatarMeshDetail" show_text="false" width="223" /> 327 mouse_opaque="true" name="AvatarMeshDetail" show_text="false" width="223" />
297 <slider bottom_delta="-20" can_edit_text="false" control_name="RenderTerrainLODFactor" 328 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderTerrainLODFactor"
298 decimal_digits="3" enabled="true" follows="left|top" height="16" 329 decimal_digits="3" enabled="true" follows="left|top" height="16"
299 increment="0.125" initial_val="160" label=" Terrain:" 330 increment="0.125" initial_val="160" label=" Terrain:"
300 label_width="140" left_delta="0" max_val="2" min_val="1" 331 label_width="140" left_delta="0" max_val="2" min_val="1"
301 mouse_opaque="true" name="TerrainMeshDetail" show_text="false" width="223" /> 332 mouse_opaque="true" name="TerrainMeshDetail" show_text="false" width="223" />
302 <slider bottom_delta="-20" can_edit_text="false" control_name="WLSkyDetail" 333 <slider bottom_delta="-18" can_edit_text="false" control_name="WLSkyDetail"
303 decimal_digits="0" enabled="true" follows="left|top" height="16" 334 decimal_digits="0" enabled="true" follows="left|top" height="16"
304 increment="8" initial_val="160" label=" Sky:" 335 increment="8" initial_val="160" label=" Sky:"
305 label_width="140" left_delta="0" max_val="128" min_val="16" 336 label_width="140" left_delta="0" max_val="128" min_val="16"
306 mouse_opaque="true" name="SkyMeshDetail" show_text="false" width="223" /> 337 mouse_opaque="true" name="SkyMeshDetail" show_text="false" width="223" />
307 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 338
308 bottom="-172" drop_shadow_visible="true" enabled="true" follows="left|top" 339
340 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
341 bottom="-266" drop_shadow_visible="true" enabled="true" follows="left|top"
309 font="SansSerifSmall" h_pad="0" halign="left" height="12" 342 font="SansSerifSmall" h_pad="0" halign="left" height="12"
310 left="444" mouse_opaque="true" name="PostProcessText" v_pad="0" width="128"> 343 left="444" mouse_opaque="true" name="PostProcessText" v_pad="0" width="128">
311 Low 344 Low
312 </text> 345 </text>
313 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 346 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
314 bottom="-210" drop_shadow_visible="true" enabled="true" follows="left|top" 347 bottom_delta="-44" drop_shadow_visible="true" enabled="true" follows="left|top"
315 font="SansSerifSmall" h_pad="0" halign="left" height="12" 348 font="SansSerifSmall" h_pad="0" halign="left" height="12"
316 left="444" mouse_opaque="true" name="ObjectMeshDetailText" v_pad="0" 349 left="444" mouse_opaque="true" name="ObjectMeshDetailText" v_pad="0"
317 width="128"> 350 width="128">
318 Low 351 Low
319 </text> 352 </text>
320 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 353 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
321 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 354 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
322 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 355 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
323 height="12" left_delta="0" mouse_opaque="true" 356 height="12" left_delta="0" mouse_opaque="true"
324 name="FlexibleMeshDetailText" v_pad="0" width="128"> 357 name="FlexibleMeshDetailText" v_pad="0" width="128">
325 Low 358 Low
326 </text> 359 </text>
327 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 360 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
328 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 361 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
329 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 362 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
330 height="12" left_delta="0" mouse_opaque="true" 363 height="12" left_delta="0" mouse_opaque="true"
331 name="TreeMeshDetailText" v_pad="0" width="128"> 364 name="TreeMeshDetailText" v_pad="0" width="128">
332 Low 365 Low
333 </text> 366 </text>
334 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 367 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
335 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 368 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
336 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 369 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
337 height="12" left_delta="0" mouse_opaque="true" 370 height="12" left_delta="0" mouse_opaque="true"
338 name="AvatarMeshDetailText" v_pad="0" width="128"> 371 name="AvatarMeshDetailText" v_pad="0" width="128">
339 Low 372 Low
340 </text> 373 </text>
341 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 374 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
342 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 375 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
343 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 376 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
344 height="12" left_delta="0" mouse_opaque="true" 377 height="12" left_delta="0" mouse_opaque="true"
345 name="TerrainMeshDetailText" v_pad="0" width="128"> 378 name="TerrainMeshDetailText" v_pad="0" width="128">
346 Low 379 Low
347 </text> 380 </text>
348 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 381 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
349 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 382 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
350 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 383 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
351 height="12" left_delta="0" mouse_opaque="true" 384 height="12" left_delta="0" mouse_opaque="true"
352 name="SkyMeshDetailText" v_pad="0" width="128"> 385 name="SkyMeshDetailText" v_pad="0" width="128">
353 Low 386 Low
354 </text> 387 </text>
355 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 388
356 bottom="-331" drop_shadow_visible="true" enabled="true" follows="left|top" 389
390 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
391 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
357 font="SansSerifSmall" h_pad="0" halign="left" height="12" 392 font="SansSerifSmall" h_pad="0" halign="left" height="12"
358 left="210" mouse_opaque="true" name="LightingDetailText" v_pad="0" 393 left="210" mouse_opaque="true" name="LightingDetailText" v_pad="0"
359 width="128"> 394 width="128">
360 Lighting Detail: 395 Lighting Detail:
361 </text> 396 </text>
362 <radio_group bottom_delta="-43" control_name="RenderLightingDetail" draw_border="false" 397 <combo_box allow_text_entry="false" bottom_delta="-23" enabled="true" follows="left|top"
363 enabled="true" follows="left|top" height="38" left_delta="0" 398 height="16" left_delta="10" max_chars="100" mouse_opaque="true" control_name="RenderLightingDetail"
364 mouse_opaque="true" name="LightingDetailRadio" width="321"> 399 name="LightingDetailCombo" width="160">
365 <radio_item type="string" length="1" bottom="-19" enabled="true" follows="left|top" height="16" 400 <combo_item type="string" length="1" enabled="true" name="0" value="0">
366 left="3" mouse_opaque="true" name="SunMoon" width="156"> 401 Sun and moon only
367 Sun and moon only 402 </combo_item>
368 </radio_item> 403 <combo_item type="string" length="1" enabled="true" name="1" value="1">
369 <radio_item type="string" length="1" bottom="-35" enabled="true" follows="left|top" height="16" 404 Nearby local lights
370 left="3" mouse_opaque="true" name="LocalLights" width="156"> 405 </combo_item>
371 Nearby local lights 406 </combo_box>
372 </radio_item> 407
373 </radio_group> 408
374 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 409 <view_border bevel_style="none" border_thickness="1" bottom="-448" follows="left|top"
375 bottom="-331" drop_shadow_visible="true" enabled="true" follows="left|top" 410 height="271" left="5" name="GraphicsBorder" width="488" />
376 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="360" 411
377 mouse_opaque="true" name="TerrainDetailText" v_pad="0" width="128"> 412
378 Terrain Detail:
379 </text>
380 <radio_group bottom_delta="-43" control_name="RenderTerrainDetail" draw_border="false"
381 enabled="true" follows="left|top" height="38" left_delta="0"
382 mouse_opaque="true" name="TerrainDetailRadio" width="321">
383 <radio_item type="string" length="1" bottom="-19" enabled="true" follows="left|top" height="16"
384 left="3" mouse_opaque="true" name="0" width="315">
385 Low
386 </radio_item>
387 <radio_item type="string" length="1" bottom="-35" enabled="true" follows="left|top" height="16"
388 left="3" mouse_opaque="true" name="2" width="315">
389 High
390 </radio_item>
391 </radio_group>
392 <button bottom="4" enabled="true" font="SansSerif" halign="center" height="20"
393 label="Recommended Settings" left="130" mouse_opaque="true"
394 name="Defaults" scale_image="true" width="170" follows="left|bottom" />
395 <button bottom="4" enabled="true" font="SansSerif" halign="center" height="20"
396 label="Hardware Options" label_selected="Hardware Options"
397 left="310" mouse_opaque="true" name="GraphicsHardwareButton"
398 scale_image="true" width="170" follows="left|bottom" />
399 <string name="resolution_format"> 413 <string name="resolution_format">
400 [RES_X] x [RES_Y] 414 [RES_X] × [RES_Y]
401 </string> 415 </string>
402 <string name="aspect_ratio_text"> 416 <string name="aspect_ratio_text">
403 [NUM]:[DEN] 417 [NUM]:[DEN]
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml
index 2c71998..93bc84c 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml
@@ -1,117 +1,111 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="IMs &amp; Logging" left="102" mouse_opaque="true" name="im" 18 height="408" label="Logging &amp; Privacy" left="102" mouse_opaque="true" name="im"
4 width="517"> 19 width="517">
20
21
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 22 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
6 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 23 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
7 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 24 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
8 mouse_opaque="false" name="text_box" v_pad="0" width="128"> 25 mouse_opaque="false" name="Logging:" v_pad="0" width="128">
9 My Online Status: 26 Logging:
10 </text> 27 </text>
11 <check_box bottom="-25" enabled="true" follows="left|top" font="SansSerifSmall" 28
12 height="16" initial_value="false" 29 <check_box bottom_delta="-25" enabled="true"
13 label="Only my Friends and Groups can see when I am online"
14 left="148" mouse_opaque="true" name="online_visibility" radio_style="false"
15 width="350" />
16 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
17 bottom="-40" drop_shadow_visible="true" enabled="true" follows="left|top"
18 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12"
19 mouse_opaque="false" name="text_box2" v_pad="0" width="128">
20 IM Options:
21 </text>
22 <string name="log_in_to_change">
23 log in to change
24 </string>
25 <string name="default_email_used">
26 using default address
27 </string>
28 <check_box bottom="-45" enabled="true" follows="left|top" font="SansSerifSmall"
29 height="16" initial_value="false" label="Send IM to email ([EMAIL])"
30 left="148" mouse_opaque="true" name="send_im_to_email" radio_style="false"
31 width="350" />
32 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
33 bottom="-59" drop_shadow_visible="true" enabled="true" follows="left|top"
34 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="148"
35 mouse_opaque="false" name="show_ims_label" v_pad="0" width="100">
36 Show IMs in:
37 </text>
38 <check_box bottom="-65" enabled="true" follows="left|top"
39 font="SansSerifSmall" height="16" initial_value="false"
40 label="Main chat" left="248" mouse_opaque="true"
41 name="include_im_in_chat_console" radio_style="false" width="100" />
42 <check_box bottom="-65" enabled="true" follows="left|top"
43 font="SansSerifSmall" height="16" initial_value="false"
44 label="Local Chat window" left="348" mouse_opaque="true"
45 name="include_im_in_chat_history" radio_style="false" width="100" />
46 <check_box bottom="-85" enabled="true" follows="left|top"
47 font="SansSerifSmall" height="16" initial_value="false"
48 label="Show timestamps in IM" left="148" mouse_opaque="true"
49 name="show_timestamps_check" radio_style="false" width="237" />
50 <check_box bottom="-105" enabled="true"
51 follows="left|top" font="SansSerifSmall" height="16" 30 follows="left|top" font="SansSerifSmall" height="16"
52 initial_value="false" label="Show online Friend notifications" left="148" 31 initial_value="false" label="Save a log of IM on my computer" left_delta="30"
53 mouse_opaque="true" name="friends_online_notify_checkbox" 32 mouse_opaque="true" name="log_instant_messages" radio_style="false"
54 radio_style="false" width="256" /> 33 width="237" />
55 <check_box bottom_delta="-20" enabled="true"
56 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
57 label="Vertical IM tabs (requires restart)" left_delta="0" mouse_opaque="true"
58 name="vertical-imtabs-toggle" radio_style="false" width="270" />
59 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
60 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
61 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12"
62 mouse_opaque="false" name="text_box3" v_pad="0" width="128">
63 Busy Mode Response:
64 </text>
65 <text_editor type="string" length="1" bottom_delta="-60" embedded_items="false" enabled="true" follows="left|top"
66 font="SansSerifSmall" height="70" left="148" max_length="255"
67 mouse_opaque="true" name="busy_response" width="330" word_wrap="true" spell_check="true" />
68 <button bottom_delta="-25" follows="top|right" height="22" label="IM Response Options"
69 left="164" name="busy_adv_btn" tool_tip="Instant message Auto-Response options"
70 width="180" />
71 <button bottom_delta="0" follows="left|top" height="22" label="OTR Options"
72 left="330" name="otr_adv_btn" tool_tip="Off The Record options"
73 width="120" />
74 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
75 bottom_delta="-23" drop_shadow_visible="true" enabled="true" follows="left|top"
76 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12"
77 mouse_opaque="false" name="text_box4" v_pad="0" width="128">
78 Logging Options:
79 </text>
80 <check_box bottom_delta="-7" enabled="true"
81 follows="left|top" font="SansSerifSmall" height="16"
82 initial_value="false" label="Save a log of IM on my computer" left="148"
83 mouse_opaque="true" name="log_instant_messages" radio_style="false"
84 width="237" />
85 <check_box bottom_delta="-20" enabled="true" 34 <check_box bottom_delta="-20" enabled="true"
86 follows="left|top" font="SansSerifSmall" height="16" 35 follows="left|top" font="SansSerifSmall" height="16"
87 initial_value="false" label="Show timestamps in IM log" left="168" 36 initial_value="false" label="Show timestamps in IM log" left_delta="30"
88 mouse_opaque="true" name="log_instant_messages_timestamp" radio_style="false" 37 mouse_opaque="true" name="log_instant_messages_timestamp" radio_style="false"
89 width="217" /> 38 width="217" />
90 <check_box bottom_delta="-20" enabled="true" follows="left|top" 39 <check_box bottom_delta="-20" enabled="true" follows="left|top"
91 font="SansSerifSmall" height="16" initial_value="false" 40 font="SansSerifSmall" height="16" initial_value="false"
92 label="Show the end of last IM conversation" left="168" mouse_opaque="true" 41 label="Show the end of last IM conversation" left_delta="0" mouse_opaque="true"
93 name="log_show_history" radio_style="false" width="217" /> 42 name="log_show_history" radio_style="false" width="217" />
94 <check_box bottom_delta="-20" enabled="true" follows="left|top" 43 <check_box bottom_delta="-20" enabled="true" follows="left|top"
95 font="SansSerifSmall" height="16" initial_value="false" label="Save a log of Local Chat on my computer" 44 font="SansSerifSmall" height="16" initial_value="false" label="Save a log of Local Chat on my computer"
96 left="148" mouse_opaque="true" name="log_chat" radio_style="false" 45 left_delta="-30" mouse_opaque="true" name="log_chat" radio_style="false"
97 width="237" /> 46 width="237" />
98 <check_box bottom_delta="-20" enabled="true" follows="left|top" 47 <check_box bottom_delta="-20" enabled="true" follows="left|top"
99 font="SansSerifSmall" height="16" initial_value="false" 48 font="SansSerifSmall" height="16" initial_value="false"
100 label="Show timestamps in Local Chat log" left="168" mouse_opaque="true" 49 label="Show timestamps in Local Chat log" left_delta="30" mouse_opaque="true"
101 name="log_chat_timestamp" radio_style="false" width="217" /> 50 name="log_chat_timestamp" radio_style="false" width="217" />
102 <check_box bottom_delta="-20" enabled="true" follows="left|top" 51 <check_box bottom_delta="-20" enabled="true" follows="left|top"
103 font="SansSerifSmall" height="16" initial_value="false" 52 font="SansSerifSmall" height="16" initial_value="false"
104 label="Show incoming IM in Local Chat log" left="168" mouse_opaque="true" 53 label="Show incoming IM in Local Chat log" left_delta="0" mouse_opaque="true"
105 name="log_chat_IM" radio_style="false" width="217" /> 54 name="log_chat_IM" radio_style="false" width="217" />
106 <check_box bottom_delta="-20" enabled="true" follows="left|top" 55 <check_box bottom_delta="-20" enabled="true" follows="left|top"
107 font="SansSerifSmall" height="16" initial_value="false" 56 font="SansSerifSmall" height="16" initial_value="false"
108 label="Include date with timestamps" left="148" mouse_opaque="true" 57 label="Include date with timestamps" left_delta="-30" mouse_opaque="true"
109 name="log_date_timestamp" radio_style="false" width="237" /> 58 name="log_date_timestamp" radio_style="false" width="237" />
110 <button bottom_delta="-22" follows="left|top" font="SansSerif" halign="center" 59 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
111 height="20" label="Change Path" label_selected="Change Path" left="148" 60 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
112 mouse_opaque="true" name="log_path_button" width="96" /> 61 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
113 <line_editor border_drop_shadow_visible="false" border_visible="false" bottom_delta="1" 62 mouse_opaque="false" name="Log location:" v_pad="0" width="128">
114 drop_shadow_visible="true" enabled="false" follows="top|left|right" 63 Log location:
115 font="SansSerifSmall" halign="right" height="19" left="248" 64 </text>
116 max_length="254" mouse_opaque="false" name="log_path_string" right="-20" /> 65 <line_editor border_drop_shadow_visible="false" border_visible="false" bottom_delta="-25"
66 drop_shadow_visible="true" enabled="false" follows="top|left|right" width="395"
67 font="SansSerifSmall" halign="right" height="19" left_delta="0"
68 max_length="254" mouse_opaque="false" name="log_path_string" />
69 <button bottom_delta="-25" follows="left|top" font="SansSerifSmall" halign="center"
70 height="20" label="Change Location" left_delta="0"
71 mouse_opaque="true" name="log_path_button" width="160" />
72
73
74
75 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
76 height="1" left="55" name="border" width="380" />
77
78
79 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
80 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
81 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
82 mouse_opaque="false" name="Privacy:" v_pad="0" width="128">
83 Privacy:
84 </text>
85 <check_box bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall"
86 height="16" initial_value="false"
87 label="Only my Friends and Groups can see when I am online"
88 left_delta="30" mouse_opaque="true" name="online_visibility" radio_style="false"
89 width="350" />
90 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
91 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
92 font="SansSerifSmall" h_pad="0" halign="left" height="10" left_delta="0"
93 mouse_opaque="false" name="text_box3" v_pad="0" width="128">
94 Busy Mode Response:
95 </text>
96 <text_editor type="string" length="1" bottom_delta="-75" embedded_items="false" enabled="true" follows="left|top"
97 font="SansSerifSmall" height="70" left_delta="0" max_length="255"
98 mouse_opaque="true" name="busy_response" width="330" word_wrap="true" spell_check="true" />
99 <button bottom_delta="-30" follows="top|left" height="20" label="Auto-Response Options"
100 left_delta="0" name="busy_adv_btn" tool_tip="Instant message Auto-Response options"
101 width="160" font="SansSerifSmall" />
102 <button bottom_delta="0" follows="left|top" height="22" label="OTR Options"
103 left_delta="200" name="otr_adv_btn" tool_tip="Off The Record options"
104 width="120" />
105
106 <string name="log_in_to_change">
107 log in to change
108 </string>
109
110
117</panel> 111</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml
index 70c8464..5713933 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml
@@ -1,152 +1,180 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Input &amp; Camera" left="102" mouse_opaque="true" 18 height="408" label="Input &amp; Camera" left="102" mouse_opaque="true"
4 name="Input panel" width="517"> 19 name="Input panel" width="517">
20
21
22 <text name="double_click_action_label" font-style="BOLD|SHADOW"
23 bottom="-26" left="20" height="16" width="200"
24 follows="left|top" font="SansSerifSmall" mouse_opaque="true">
25 Double-Click Action:
26 </text>
27
28 <combo_box name="double_click_action"
29 bottom_delta="-25" left_delta="30" height="18" width="160"
30 follows="left|top" mouse_opaque="true">
31 <combo_item name="None" value="None">
32 No action
33 </combo_item>
34 <combo_item name="Go" value="Go">
35 Autopilot
36 </combo_item>
37 </combo_box>
38
39 <text name="go_action_label"
40 bottom_delta="-25" left_delta="0" height="18" width="200"
41 follows="left|top" font="SansSerifSmall" mouse_opaque="true">
42 Autopilot:
43 </text>
44
45 <combo_box name="go_action"
46 bottom_delta="0" left_delta="70" height="18" width="90"
47 follows="left|top" mouse_opaque="true">
48 <combo_item name="Move" value="Move">
49 Move
50 </combo_item>
51 <combo_item name="Teleport" value="Teleport">
52 Teleport
53 </combo_item>
54 </combo_box>
55
56
57 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
58 height="1" left="55" name="border" width="380" />
59
60
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 61 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
6 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 62 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
7 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 63 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
8 mouse_opaque="true" name=" Mouselook Options:" v_pad="0" width="266"> 64 mouse_opaque="true" name=" Mouselook Options:" v_pad="0" width="266">
9 Mouselook: 65 Mouselook:
10 </text> 66 </text>
11 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 67 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
12 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 68 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
13 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="148" 69 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
14 mouse_opaque="true" name=" Mouse Sensitivity:" v_pad="0" width="128"> 70 mouse_opaque="true" name=" Mouse Sensitivity:" v_pad="0" width="128">
15 Mouse sensitivity: 71 Mouse sensitivity:
16 </text> 72 </text>
17 <slider_bar bottom="-26" enabled="true" follows="left|top" 73 <slider_bar bottom_delta="-6" enabled="true" follows="left|top"
18 height="16" increment="0.25" initial_val="2" left="276" max_val="15" 74 height="16" increment="0.25" initial_val="2" left_delta="98" max_val="15"
19 min_val="0" mouse_opaque="true" name="mouse_sensitivity" width="128" /> 75 min_val="0" mouse_opaque="true" name="mouse_sensitivity" width="88" />
20 <check_box bottom_delta="-18" enabled="true" follows="left|top" 76 <check_box bottom_delta="0" enabled="true" follows="left|top"
21 font="SansSerifSmall" height="16" label="Invert mouse" left="148" 77 font="SansSerifSmall" height="16" label="Invert mouse" left="270"
22 mouse_opaque="true" name="invert_mouse" radio_style="false" width="128" /> 78 mouse_opaque="true" name="invert_mouse" radio_style="false" width="128" />
23 <check_box bottom_delta="-18" enabled="true" 79 <check_box bottom_delta="-20" enabled="true"
24 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 80 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
25 label="Show avatar in mouselook" left="148" mouse_opaque="true" name="first_person_avatar_visible" 81 label="Show my avatar in mouselook" left_delta="0" mouse_opaque="true" name="first_person_avatar_visible"
26 radio_style="false" width="256" /> 82 radio_style="false" width="256" />
83
84
85 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
86 height="1" left="55" name="border" width="380" />
87
88
27 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 89 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
28 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" 90 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
29 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 91 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20" font-style="BOLD|SHADOW"
30 mouse_opaque="true" name=" Auto Fly Options:" v_pad="0" width="266"> 92 mouse_opaque="true" name="text2" v_pad="0" width="128">
31 Auto-Fly: 93 Joystick:
32 </text> 94 </text>
33 <check_box bottom_delta="-6" enabled="true" follows="left|top" 95 <button bottom_delta="-25" follows="left|top" font="SansSerifSmall" height="20"
34 font="SansSerifSmall" height="16" label="Fly/land on holding up/down" 96 label="Joystick Setup" left="50" mouse_opaque="true"
35 left="148" mouse_opaque="true" name="automatic_fly" radio_style="false" 97 name="joystick_setup_button" width="160" />
36 width="178" /> 98
99
100 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
101 height="1" left="55" name="border" width="380" />
102
103
37 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 104 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
38 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top" 105 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
39 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="10" 106 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
40 mouse_opaque="true" name=" Camera Options:" v_pad="0" width="266"> 107 mouse_opaque="true" name="Camera Options:" v_pad="0" width="266">
41 Default Camera: 108 Camera:
42 </text> 109 </text>
110 <check_box bottom_delta="-25" enabled="true"
111 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
112 label="Automatic edit camera movement" left="50" mouse_opaque="true"
113 name="edit_camera_movement" radio_style="false"
114 tool_tip="Use automatic camera positioning when entering and exiting edit mode"
115 width="201" />
116 <check_box bottom_delta="-20" enabled="true"
117 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
118 label="Automatic appearance camera movement" left_delta="0" mouse_opaque="true"
119 name="appearance_camera_movement" radio_style="false"
120 tool_tip="Use automatic camera positioning while in edit mode" width="242" />
121 <check_box bottom_delta="-20" enabled="true"
122 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
123 label="Disable camera constraints" left_delta="0" mouse_opaque="true"
124 name="Disable camera constraints" radio_style="false"
125 tool_tip="Disables camera limits such as distance and terrain" width="242" />
126 <check_box bottom_delta="-20" enabled="true"
127 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
128 label="Disable minimum zoom distance" left_delta="30" mouse_opaque="true"
129 name="disable_min_zoom_check" radio_style="false"
130 tool_tip="Disables minimum zoom distance for prims and avatars" width="242" />
131
132
43 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 133 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
44 bottom_delta="0" drop_shadow_visible="true" enabled="true" follows="left|top" 134 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top"
45 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="148" 135 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
46 mouse_opaque="true" name="camera_fov_label" v_pad="0" width="128"> 136 mouse_opaque="true" name="camera_fov_label" v_pad="0" width="128">
47 Camera view angle: 137 View angle:
48 </text> 138 </text>
49 <slider bottom_delta="-6" can_edit_text="true" 139 <slider bottom_delta="-6" can_edit_text="true"
50 decimal_digits="2" enabled="true" follows="left|top" width="128" height="16" 140 decimal_digits="2" enabled="true" follows="left|top" width="100" height="16"
51 increment=".025" initial_val="1.57" left="276" max_val="2.97" min_val=".17" 141 increment=".025" initial_val="1.57" left_delta="98" max_val="2.97" min_val=".17"
52 mouse_opaque="true" name="camera_fov" show_text="false" value="60" /> 142 mouse_opaque="true" name="camera_fov" show_text="false" value="60" />
143
53 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 144 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
54 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" 145 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top"
55 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="148" 146 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
56 mouse_opaque="true" name="Camera Follow Distance:" v_pad="0" width="128"> 147 mouse_opaque="true" name="Camera Follow Distance:" v_pad="0" width="128">
57 Camera follow distance: 148 Follow distance:
58 </text> 149 </text>
59 <slider bottom_delta="-6" can_edit_text="true" control_name="CameraOffsetScale" 150 <slider bottom_delta="-6" can_edit_text="true" control_name="CameraOffsetScale"
60 decimal_digits="2" enabled="true" follows="left|top" height="16" 151 decimal_digits="2" enabled="true" follows="left|top" height="16"
61 increment=".025" initial_val="1" left="276" min_val=".5" max_val="3" 152 increment=".025" initial_val="1" left_delta="98" min_val=".5" max_val="3"
62 mouse_opaque="true" name="camera_offset_scale" show_text="false" value="1" 153 mouse_opaque="true" name="camera_offset_scale" show_text="false" value="1"
63 width="128" /> 154 width="100" />
155
64 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 156 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
65 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" 157 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top"
66 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="148" 158 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
67 mouse_opaque="true" name="Camera Transition Time:" v_pad="0" width="128"> 159 mouse_opaque="true" name="Camera Transition Time:" v_pad="0" width="128">
68 Camera transition time: 160 Transition time:
69 </text> 161 </text>
70 <slider bottom_delta="-6" can_edit_text="true" decimal_digits="1" 162 <slider bottom_delta="-6" can_edit_text="true" decimal_digits="1"
71 enabled="true" follows="left|top" height="16" increment="0.1" 163 enabled="true" follows="left|top" height="16" increment="0.1"
72 initial_val="0.4" left="276" max_val="4" min_val="0" mouse_opaque="true" 164 initial_val="0.4" left_delta="98" max_val="4" min_val="0" mouse_opaque="true"
73 name="zoom_time" show_text="false" value="2" width="128" /> 165 name="zoom_time" show_text="false" value="2" width="100" />
166
74 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 167 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
75 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top" 168 bottom_delta="-18" drop_shadow_visible="true" enabled="true" follows="left|top"
76 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="148" 169 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
77 mouse_opaque="true" name="Camera Smoothing:" v_pad="0" width="128"> 170 mouse_opaque="true" name="Camera Smoothing:" v_pad="0" width="128">
78 Camera smoothing: 171 Smoothing:
79 </text> 172 </text>
80 <slider bottom_delta="-6" can_edit_text="true" 173 <slider bottom_delta="-6" can_edit_text="true"
81 decimal_digits="1" enabled="true" follows="left|top" height="16" 174 decimal_digits="1" enabled="true" follows="left|top" height="16"
82 increment="0.1" initial_val="1" left="276" max_val="9" min_val="0" 175 increment="0.1" initial_val="1" left_delta="98" max_val="9" min_val="0"
83 mouse_opaque="true" name="camera_position_smoothing" show_text="false" value="2" 176 mouse_opaque="true" name="camera_position_smoothing" show_text="false" value="2"
84 width="128" /> 177 width="100" />
85 <check_box bottom_delta="-24" enabled="true"
86 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
87 label="Automatic edit camera movement" left="148" mouse_opaque="true"
88 name="edit_camera_movement" radio_style="false"
89 tool_tip="Use automatic camera positioning when entering and exiting edit mode"
90 width="201" />
91 <check_box bottom_delta="-18" enabled="true"
92 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
93 label="Automatic appearance camera movement" left="148" mouse_opaque="true"
94 name="appearance_camera_movement" radio_style="false"
95 tool_tip="Use automatic camera positioning while in edit mode" width="242" />
96 <check_box bottom_delta="-18" enabled="true"
97 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
98 label="Disable camera constraints" left="148" mouse_opaque="true"
99 name="Disable camera constraints" radio_style="false"
100 tool_tip="Disables camera limits such as distance and terrain" width="242" />
101 <check_box bottom_delta="-18" enabled="true"
102 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
103 label="Disable minimum zoom distance" left="168" mouse_opaque="true"
104 name="disable_min_zoom_check" radio_style="false"
105 tool_tip="Disables minimum zoom distance for prims and avatars" width="242" />
106 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
107 bottom_delta="-32" drop_shadow_visible="true" enabled="true" follows="left|top"
108 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10"
109 mouse_opaque="true" name="text2" v_pad="0" width="128">
110 Joystick:
111 </text>
112 <button bottom_delta="-4" follows="left|top" font="SansSerif" height="20"
113 label="Joystick Setup" left="148" mouse_opaque="true"
114 name="joystick_setup_button" width="155" />
115
116
117 <text name="double_click_action_label"
118 bottom_delta="-35" left="10" height="18" width="200"
119 follows="left|top" font="SansSerifSmall" mouse_opaque="true">
120 Double-Click Action:
121 </text>
122
123 <combo_box name="double_click_action"
124 bottom_delta="0" left_delta="138" height="18" width="150"
125 follows="left|top" mouse_opaque="true">
126 <combo_item name="None" value="None">
127 None
128 </combo_item>
129 <combo_item name="Go" value="Go">
130 Autopilot
131 </combo_item>
132 </combo_box>
133
134 178
135 <text name="go_action_label"
136 bottom_delta="-20" left="10" height="18" width="200"
137 follows="left|top" font="SansSerifSmall" mouse_opaque="true">
138 Autopilot Style:
139 </text>
140
141 <combo_box name="go_action"
142 bottom_delta="0" left_delta="138" height="18" width="150"
143 follows="left|top" mouse_opaque="true">
144 <combo_item name="Move" value="Move">
145 Move
146 </combo_item>
147 <combo_item name="Teleport" value="Teleport">
148 Teleport
149 </combo_item>
150 </combo_box>
151 179
152</panel> 180</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml
index 7d6bb4a..57d8f31 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml
@@ -1,178 +1,434 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Network" left="102" mouse_opaque="true" name="network" 18 height="408" label="Network" left="102" mouse_opaque="true" name="network"
4 width="517"> 19 width="517">
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 20
6 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" 21
7 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="12" 22 <tab_container bottom="0" height="450" left="0" mouse_opaque="false"
8 mouse_opaque="false" name="text_box" v_pad="0" width="200"> 23 name="networktab2" tab_min_width="50" tab_position="top" width="495" bg_opaque_color="0,0,0,0.0">
9 Maximum bandwidth: 24
10 </text> 25
11 <slider bottom_delta="-25" can_edit_text="true" control_name="ThrottleBandwidthKBPS" 26 <!-- BANDWIDTH SETTINGS PANEL -->
12 decimal_digits="0" enabled="true" follows="left|top" height="15" 27
13 increment="10" initial_val="1000" left_delta="0" max_val="5000" min_val="50" 28
14 mouse_opaque="true" name="max_bandwidth" show_text="true" value="1000" 29 <panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
15 width="180" /> 30 height="408" label="Performance" left="102" mouse_opaque="true"
16 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 31 name="bandwidth_panel" width="517">
17 bottom_delta="4" drop_shadow_visible="true" enabled="true" 32
18 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 33
19 height="10" left_delta="186" mouse_opaque="false" name="text_box2" 34 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
20 v_pad="0" width="200"> 35 bottom="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
21 kbps (kilobits per second) 36 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
22 </text> 37 mouse_opaque="false" name="text_box" v_pad="0" width="200">
23 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 38 Maximum Viewer Bandwidth:
24 bottom_delta="-25" drop_shadow_visible="true" enabled="true" 39 </text>
25 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 40 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
26 height="10" left="12" mouse_opaque="false" name="cache_size_label_l" 41 bottom_delta="-25" drop_shadow_visible="true" enabled="true"
27 v_pad="0" width="200"> 42 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
28 Disk cache size (MB): 43 height="10" left="50" mouse_opaque="false" name="Speed:"
29 </text> 44 v_pad="0" width="200">
30 <slider bottom_delta="-25" can_edit_text="true" control_name="CacheSize" 45 Speed:
31 decimal_digits="0" enabled="true" follows="left|top" height="15" 46 </text>
32 increment="10" initial_val="50" left_delta="0" max_val="1000" min_val="10" 47 <slider bottom_delta="-4" can_edit_text="true" control_name="ThrottleBandwidthKBPS"
33 mouse_opaque="true" name="cache_size" show_text="true" width="180" /> 48 decimal_digits="0" enabled="true" follows="left|top" height="15"
34 <button bottom_delta="-4" enabled="true" follows="left|top" 49 increment="10" initial_val="1000" left_delta="50" max_val="5000" min_val="50"
35 font="SansSerif" halign="center" height="22" label="Clear Disk Cache" left="340" 50 mouse_opaque="true" name="max_bandwidth" show_text="true" value="1000"
36 left_delta="186" mouse_opaque="true" name="clear_cache" scale_image="true" 51 width="160" />
37 width="150" /> 52 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
38 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 53 bottom_delta="4" drop_shadow_visible="true" enabled="true"
39 bottom_delta="-17" drop_shadow_visible="true" enabled="true" 54 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
40 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 55 height="10" left_delta="166" mouse_opaque="false" name="text_box2"
41 height="10" left="12" mouse_opaque="false" name="cache_location_label" 56 v_pad="0" width="200">
42 v_pad="0" width="200"> 57 kbps (kilobits per second)
43 Disk cache location: 58 </text>
44 </text> 59
45 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-28" 60
46 enabled="false" follows="left|top" font="SansSerif" 61 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
47 handle_edit_keys_directly="true" height="20" left_delta="0" 62 height="1" left="55" name="border" width="380" />
48 max_length="4096" mouse_opaque="true" name="cache_location" 63
49 select_all_on_focus_received="false" width="470" word_wrap="false" /> 64
50 <button bottom_delta="-25" enabled="true" follows="left|top" font="SansSerif" 65 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
51 halign="center" height="22" label="Set" label_selected="Set" left_delta="0" 66 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
52 mouse_opaque="true" name="set_cache" scale_image="true" width="100" /> 67 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
53 <button bottom="-105" bottom_delta="0" enabled="true" follows="left|top" 68 mouse_opaque="false" name="Texture Fetching:" v_pad="0" width="200">
54 font="SansSerif" halign="center" height="22" label="Reset" 69 Texture Fetching:
55 label_selected="Set" left_delta="103" mouse_opaque="true" 70 </text>
56 name="reset_cache" scale_image="true" width="100" /> 71
57 <check_box bottom="-173" bottom_delta="-25" control_name="ConnectionPortEnabled" 72 <check_box bottom_delta="-25" enabled="true" follows="left|top"
58 enabled="true" follows="left|top" font="SansSerifSmall" height="16" 73 font="SansSerifSmall" height="16" initial_value="false"
59 initial_value="false" label="Enable custom outgoing port" left="12" 74 label="Use HTTP texture fetching (experimental)" left="50" mouse_opaque="true"
60 mouse_opaque="true" name="connection_port_enabled" radio_style="false" 75 name="http_texture_check" radio_style="false" width="217" />
61 tool_tip="Enables custom port for outgoing connections" 76
62 width="256" /> 77 <check_box bottom_delta="-25" enabled="true" follows="left|top"
63 <spinner bottom="-193" bottom_delta="-20" control_name="ConnectionPort" 78 font="SansSerifSmall" height="16" initial_value="false"
64 decimal_digits="0" enabled="true" follows="left|top" height="16" 79 label="Increase rez speed via draw distance stepping" left_delta="0" mouse_opaque="true"
65 increment="1" initial_val="13000" label="Port number:" label_width="75" 80 name="speed_rez_check" radio_style="false" width="217" />
66 left_delta="20" max_val="13050" min_val="13000" mouse_opaque="true" 81 <spinner bottom_delta="-20" decimal_digits="0"
67 name="connection_port" width="140" /> 82 tool_tip="Interval in seconds between each draw distance increment"
68 83 follows="left|top" height="16" increment="1" initial_val="12"
69 <!-- XMLRPC PROXY --> 84 label="Step interval every:" label_width="105" left_delta="30" max_val="20"
70 85 min_val="1" mouse_opaque="true" name="speed_rez_interval_spinner" width="145" />
71 <check_box bottom_delta="-25" enabled="true" 86 <text bottom_delta="0" follows="top|left" height="15" left_delta="150"
72 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 87 name="speed_rez_seconds_text" width="115">
73 label="Enable XMLRPC proxy (Login, Land, and Money purchases)" left="15" mouse_opaque="true" 88 seconds
74 name="xmlrpc_proxy_enabled" radio_style="false" width="300" /> 89 </text>
75 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 90
76 bottom_delta="-18" drop_shadow_visible="true" enabled="true" 91
77 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 92 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
78 height="10" left_delta="20" mouse_opaque="false" name="xmlrpc_proxy_text_label" 93 height="1" left="55" name="border" width="380" />
79 v_pad="0" width="128"> 94
80 Address: 95
81 </text> 96 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
82 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif" 97 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
83 height="20" left="112" name="xmlrpc_proxy_editor" 98 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
84 tool_tip="The name or IP address of the proxy you would like to use" 99 mouse_opaque="false" name="Disk Cache:" v_pad="0" width="200">
85 width="200" /> 100 Disk Cache:
86 <spinner bottom_delta="-20" decimal_digits="0" 101 </text>
87 enabled="true" follows="left|top" height="16" increment="1" 102
88 initial_val="80" label="Port number:" label_width="75" left="35" 103 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
89 max_val="65535" min_val="10" mouse_opaque="true" name="xmlrpc_proxy_port" 104 bottom_delta="-25" drop_shadow_visible="true" enabled="true"
90 width="140" /> 105 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
91 106 height="10" left="50" mouse_opaque="false" name="cache_size_label_l"
92 <!-- SOCKS 5 PROXY --> 107 v_pad="0" width="200">
93 108 Size:
94 <check_box bottom_delta="-24" enabled="true" 109 </text>
95 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 110 <slider bottom_delta="-4" can_edit_text="true" control_name="CacheSize"
96 label="Enable SOCKS 5 proxy" left="15" mouse_opaque="true" 111 decimal_digits="0" enabled="true" follows="left|top" height="15"
97 name="socks5_proxy_enabled" radio_style="false" width="256" /> 112 increment="10" initial_val="50" left_delta="50" max_val="1000" min_val="10"
98 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 113 mouse_opaque="true" name="disk_cache_size" show_text="true" width="160" />
99 bottom_delta="-18" drop_shadow_visible="true" enabled="true" 114 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
100 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 115 bottom_delta="4" drop_shadow_visible="true" enabled="true"
101 height="10" left="35" mouse_opaque="false" name="socks5_host_label" 116 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
102 v_pad="0" width="128"> 117 height="10" left_delta="166" mouse_opaque="false" name="text_box5"
103 SOCKS 5 host: 118 v_pad="0" width="200">
104 </text> 119 megabytes
105 <line_editor bottom_delta="-6" enabled="true" follows="left|top" font="SansSerif" 120 </text>
106 height="20" left="113" name="socks5_proxy_host" 121
107 tool_tip="The name or IP address of the SOCKS5 proxy you would like to use" 122 <button bottom_delta="-30" enabled="true" follows="left|top"
108 width="200" /> 123 font="SansSerifSmall" halign="center" height="20" label="Clear Disk Cache"
109 <spinner bottom_delta="-20" decimal_digits="0" 124 left="50" mouse_opaque="true" name="clear_disk_cache" scale_image="true"
110 enabled="true" follows="left|top" height="16" increment="1" 125 width="160" />
111 initial_val="80" label="Port number:" label_width="75" left="35" 126
112 max_val="65535" min_val="10" mouse_opaque="true" name="socks5_proxy_port" 127 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
113 width="140" /> 128 bottom_delta="-25" drop_shadow_visible="true" enabled="true"
114 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 129 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
115 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 130 height="10" left="50" mouse_opaque="false" name="cache_location_label"
116 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 131 v_pad="0" width="200">
117 height="10" left="35" mouse_opaque="false" name="socks5_auth_label" 132 Location:
118 v_pad="0" width="128"> 133 </text>
119 SOCKS 5 authentication: 134 <line_editor bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-25"
120 </text> 135 enabled="false" follows="left|top" font="SansSerif"
121 <radio_group bottom_delta="-6" draw_border="false" follows="left|top" height="20" left="35" 136 handle_edit_keys_directly="true" height="20" left_delta="0"
122 name="socks5_auth" width="420"> 137 max_length="4096" mouse_opaque="true" name="disk_cache_location"
123 <radio_item bottom="0" height="20" left_delta="80" name="None" width="50" 138 select_all_on_focus_received="false" width="395" word_wrap="false" />
124 tool_tip="No authentication"> 139 <button bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall"
125 None 140 halign="center" height="20" label="Change Location" left_delta="0"
126 </radio_item> 141 mouse_opaque="true" name="set_disk_cache" scale_image="true" width="160" />
127 <radio_item bottom="0" height="20" left_delta="50" name="UserPass" width="50" 142 <button bottom_delta="0" enabled="true" follows="left|top"
128 tool_tip="Username / Password authentication"> 143 font="SansSerifSmall" halign="center" height="20" label="Reset to Default"
129 Username / Password 144 left_delta="165" mouse_opaque="true"
130 </radio_item> 145 name="reset_disk_cache" scale_image="true" width="160" />
131 </radio_group> 146
132 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 147
133 bottom_delta="-16" drop_shadow_visible="true" enabled="true" 148 </panel>
134 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 149
135 height="10" left="122" mouse_opaque="false" name="socks5_username_label" 150
136 v_pad="0" width="128"> 151 <!-- PROXY SETTINGS PANEL -->
137 Username: 152
138 </text> 153
139 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif" 154 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="Proxy Settings"
140 height="20" left="200" name="socks5_proxy_username" 155 left="1" mouse_opaque="true" name="proxies" width="418">
141 tool_tip="Username for the Socks5 proxy" 156
142 width="200" /> 157
143 158 <!-- XMLRPC PROXY -->
144 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 159
145 bottom_delta="-14" drop_shadow_visible="true" enabled="true" 160
146 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 161 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
147 height="10" left="122" mouse_opaque="false" name="socks5_password_label" 162 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
148 v_pad="0" width="128"> 163 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
149 Password: 164 mouse_opaque="false" name="text_box" v_pad="0" width="200">
150 </text> 165 XMLRPC:
151 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif" 166 </text>
152 height="20" left="200" name="socks5_proxy_password" 167
153 tool_tip="Password for the Socks5 proxy" 168 <check_box bottom_delta="-25" enabled="true"
154 width="200" /> 169 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
155 170 label="Enable XMLRPC proxy (Login, Land, and Money purchases)" left="50" mouse_opaque="true"
156 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 171 name="xmlrpc_proxy_enabled" radio_style="false" width="300" />
157 bottom_delta="-20" drop_shadow_visible="true" enabled="true" 172
158 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 173 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
159 height="10" left="35" mouse_opaque="false" name="http_proxy_label" 174 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
160 v_pad="0" width="128"> 175 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
161 HTTP proxy: 176 height="10" left_delta="30" mouse_opaque="false" name="xmlrpc_proxy_text_label"
162 </text> 177 v_pad="0" width="128">
163 <radio_group bottom_delta="-8" draw_border="false" follows="left|top" height="20" left="35" 178 Address:
164 name="socks5_http_proxy_type" width="380" > 179 </text>
165 <radio_item height="20" bottom="0" left="100" name="None" width="50" 180 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif"
166 tool_tip="No HTTP proxy"> 181 height="20" left_delta="50" name="xmlrpc_proxy_editor"
167 None 182 tool_tip="The name or IP address of the proxy you would like to use"
168 </radio_item> 183 width="200" />
169 <radio_item height="20" bottom="0" left="170" name="Socks" width="50" 184 <spinner bottom_delta="-20" decimal_digits="0"
170 tool_tip="Use Socks for HTTP proxy"> 185 enabled="true" follows="left|top" height="16" increment="1"
171 SOCKS 5 186 initial_val="80" label="Port number:" label_width="75" left_delta="-50"
172 </radio_item> 187 max_val="65535" min_val="10" mouse_opaque="true" name="xmlrpc_proxy_port"
173 <radio_item height="20" bottom="0" left="250" name="Web" width="50" 188 width="140" />
174 tool_tip="Use web proxy for HTTP proxy"> 189
175 Web 190
176 </radio_item> 191 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
177 </radio_group> 192 height="1" left="55" name="border" width="380" />
193
194
195 <!-- SOCKS 5 PROXY -->
196
197
198 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
199 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
200 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
201 mouse_opaque="false" name="text_box" v_pad="0" width="200">
202 SOCKS 5:
203 </text>
204
205 <check_box bottom_delta="-25" enabled="true"
206 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
207 label="Enable SOCKS 5 proxy" left="50" mouse_opaque="true"
208 name="socks5_proxy_enabled" radio_style="false" width="256" />
209
210 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
211 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
212 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
213 height="10" left_delta="30" mouse_opaque="false" name="socks5_host_label"
214 v_pad="0" width="128">
215 SOCKS 5 host:
216 </text>
217 <line_editor bottom_delta="-6" enabled="true" follows="left|top" font="SansSerif"
218 height="20" left_delta="80" name="socks5_proxy_host"
219 tool_tip="The name or IP address of the SOCKS5 proxy you would like to use"
220 width="200" />
221 <spinner bottom_delta="-20" decimal_digits="0"
222 enabled="true" follows="left|top" height="16" increment="1"
223 initial_val="80" label="Port number:" label_width="78" left_delta="-80"
224 max_val="65535" min_val="10" mouse_opaque="true" name="socks5_proxy_port"
225 width="140" />
226
227 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
228 bottom_delta="-20" drop_shadow_visible="true" enabled="true"
229 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
230 height="10" left_delta="0" mouse_opaque="false" name="socks5_auth_label"
231 v_pad="0" width="128">
232 SOCKS 5 authentication:
233 </text>
234 <radio_group bottom_delta="-6" draw_border="false" follows="left|top" height="20" left_delta="0"
235 name="socks5_auth" width="420">
236 <radio_item bottom="0" height="20" left_delta="80" name="None" width="50"
237 tool_tip="No authentication">
238 None
239 </radio_item>
240 <radio_item bottom="0" height="20" left_delta="50" name="UserPass" width="50"
241 tool_tip="Username / Password authentication">
242 Username / Password
243 </radio_item>
244 </radio_group>
245
246 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
247 bottom_delta="-16" drop_shadow_visible="true" enabled="true"
248 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
249 height="10" left="122" mouse_opaque="false" name="socks5_username_label"
250 v_pad="0" width="128">
251 Username:
252 </text>
253 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif"
254 height="20" left="200" name="socks5_proxy_username"
255 tool_tip="Username for the Socks5 proxy"
256 width="200" />
257
258 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
259 bottom_delta="-14" drop_shadow_visible="true" enabled="true"
260 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
261 height="10" left="122" mouse_opaque="false" name="socks5_password_label"
262 v_pad="0" width="128">
263 Password:
264 </text>
265 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif"
266 height="20" left="200" name="socks5_proxy_password"
267 tool_tip="Password for the Socks5 proxy"
268 width="200" />
269
270
271 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
272 height="1" left="55" name="border" width="380" />
273
274
275 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
276 bottom_delta="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
277 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
278 height="10" left="20" mouse_opaque="false" name="http_proxy_label"
279 v_pad="0" width="128">
280 HTTP Textures Proxy:
281 </text>
282 <radio_group bottom_delta="-25" draw_border="false" follows="left|top" height="20" left="50"
283 name="socks5_http_proxy_type" width="380" >
284 <radio_item height="20" bottom="0" left="50" name="None" width="50"
285 tool_tip="No HTTP proxy">
286 None
287 </radio_item>
288 <radio_item height="20" bottom="0" left="160" name="Socks" width="50"
289 tool_tip="Use Socks for HTTP proxy">
290 SOCKS 5
291 </radio_item>
292 <radio_item height="20" bottom="0" left="270" name="Web" width="50"
293 tool_tip="Use web proxy for HTTP proxy">
294 Web
295 </radio_item>
296 </radio_group>
297
298
299 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
300 height="1" left="55" name="border" width="380" />
301
302
303 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
304 bottom_delta="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
305 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
306 height="10" left="20" mouse_opaque="false" name="port_label"
307 v_pad="0" width="128">
308 Ougoing Connections:
309 </text>
310 <check_box bottom_delta="-25" control_name="ConnectionPortEnabled"
311 enabled="true" follows="left|top" font="SansSerifSmall" height="16"
312 initial_value="false" label="Enable custom outgoing port" left_delta="30"
313 mouse_opaque="true" name="connection_port_enabled" radio_style="false"
314 tool_tip="Enables custom port for outgoing connections"
315 width="256" />
316 <spinner bottom_delta="-20" control_name="ConnectionPort"
317 decimal_digits="0" enabled="true" follows="left|top" height="16"
318 increment="1" initial_val="13000" label="Port number:" label_width="75"
319 left_delta="30" max_val="13050" min_val="13000" mouse_opaque="true"
320 name="connection_port" width="140" />
321
322
323 </panel>
324
325
326 <!-- WEB BROWSER PANEL -->
327
328
329 <panel border="true" bottom="-580" follows="left|top|right|bottom" height="525" label="Web Browser"
330 left="1" mouse_opaque="true" name="web_browser" width="418">
331
332
333 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
334 bottom="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
335 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
336 height="10" left="20" mouse_opaque="false" name="open_links_label"
337 v_pad="0" width="128">
338 Open Links In:
339 </text>
340
341 <radio_group bottom_delta="-45" draw_border="false" follows="top|left" height="40" left="50"
342 name="use_external_browser" width="480">
343 <radio_item bottom="-20" height="20" left="0" name="external" width="480"
344 tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen.">
345 My external browser (Firefox, Safari, Internet Explorer, etc.)
346 </radio_item>
347 <radio_item bottom="-40" height="20" left="0" name="internal" width="480"
348 tool_tip="Use the internal browser for help, web links, etc. This browser opens as a new window inside Imprudence.">
349 Imprudence's internal browser
350 </radio_item>
351 </radio_group>
352
353
354 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
355 height="1" left="55" name="border" width="380" />
356
357
358 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
359 bottom_delta="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
360 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
361 height="10" left="20" mouse_opaque="false" name="internal_browser_label"
362 v_pad="0" width="128">
363 Internal Browser:
364 </text>
365
366 <button bottom_delta="-30" enabled="true" follows="left|top" font="SansSerifSmall"
367 halign="center" height="20" label="Clear Internal Browser Cache" left_delta="30"
368 mouse_opaque="true" name="clear_web_cache" scale_image="true" width="320" />
369
370 <check_box bottom_delta="-35" enabled="true" follows="left|top"
371 font="SansSerifSmall" height="16" initial_value="false"
372 label="Accept cookies while using internal browser" left_delta="0" mouse_opaque="true"
373 tool_top="Allows the internal browser to accept cookies from websites"
374 name="cookies_enabled" radio_style="false" width="256" />
375 <button bottom_delta="-25" enabled="true" follows="left|top" font="SansSerifSmall"
376 halign="center" height="20" label="Clear Cookies" left_delta="30"
377 tool_tip="Clear Cookies"
378 mouse_opaque="true" name="clear_ookies" scale_image="true" width="160" />
379
380 <check_box bottom_delta="-35" enabled="true"
381 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
382 label="Enable proxy for internal browser" left="50" mouse_opaque="true"
383 name="web_proxy_enabled" radio_style="false" width="256" />
384
385 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
386 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
387 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
388 height="10" left_delta="30" mouse_opaque="false" name="proxy_text_label"
389 v_pad="0" width="128">
390 Address:
391 </text>
392 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif"
393 height="20" left_delta="50" name="web_proxy_editor"
394 tool_tip="The name or IP address of the proxy you would like to use"
395 width="200" />
396 <spinner bottom_delta="-20" decimal_digits="0"
397 enabled="true" follows="left|top" height="16" increment="1"
398 initial_val="80" label="Port number:" label_width="75" left_delta="-50"
399 max_val="12000" min_val="10" mouse_opaque="true" name="web_proxy_port"
400 width="140" />
401
402
403 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
404 height="1" left="55" name="border" width="380" />
405
406
407 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
408 bottom_delta="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
409 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
410 height="10" left="20" mouse_opaque="false" name="search_url_label"
411 v_pad="0" width="200">
412 Custom All (Web) Search URL:
413 </text>
414
415 <line_editor bottom_delta="-25" enabled="true" follows="left|top"
416 font="SansSerifSmall" height="18" left_delta="30" name="world_search_editor"
417 tool_tip="Address of the world search engine you would like to use"
418 width="395" />
419 <button bottom_delta="-22" enabled="true" follows="left|top" font="SansSerifSmall"
420 halign="center" height="20" label="Clear" left_delta="0"
421 tool_tip="clear field"
422 mouse_opaque="true" name="world_search_clear" scale_image="true" width="160" />
423 <button bottom_delta="0" enabled="true" follows="left|top" font="SansSerifSmall"
424 halign="center" height="20" label="Reset to Default" left_delta="165"
425 mouse_opaque="true" name="world_search_reset_default" scale_image="true" width="160" />
426
427
428 </panel>
429
430
431 </tab_container>
432
433
178</panel> 434</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_popups.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_popups.xml
index 2168137..061d02c 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_popups.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_popups.xml
@@ -1,47 +1,117 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel border="true" bottom="0" height="500" label="Popups" left="0" name="popups" 2
3 title="Popups" width="400"> 3<!--
4 <text bottom="-20" follows="top|left" left="15" width="300" name="dont_show_label"> 4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5 Hide These Popups: 5
6 </text> 6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7 <scroll_list follows="top|left" height="88" left="15" name="disabled_popups" width="480" /> 7
8 <button follows="top|left" height="20" label="Enable This Popup" left="15" 8USE LINES BETWEEN GROUPS
9 name="enable_popup" width="175" /> 9
10 <button follows="top|left" height="20" label="Enable All Popups" left="200" 10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11 name="reset_dialogs_btn" 11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
17<panel border="true" bottom="-409" height="408" label="Notifications" left="0" name="popups"
18 title="Notifications" width="400">
19
20
21 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
22 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top"
23 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
24 mouse_opaque="true" name="dont_show_label" v_pad="0" width="200" font-style="BOLD|SHADOW">
25 Hide These Notifications:
26 </text>
27
28 <scroll_list follows="top|left" height="88" left="50" name="disabled_popups" width="420"/>
29
30 <button follows="top|left" height="20" label="Enable This" left="50" bottom_delta="-22"
31 name="enable_popup" width="160" font="SansSerifSmall" />
32 <button follows="top|left" height="20" label="Enable All" left="270"
33 name="reset_dialogs_btn" font="SansSerifSmall"
12 tool_tip="Enable all of the optional popups and &apos;first time use&apos; notifications." 34 tool_tip="Enable all of the optional popups and &apos;first time use&apos; notifications."
13 width="175" bottom_delta="0" /> 35 width="160" bottom_delta="0" />
14 <text follows="top|left" left="15" width="128" name="show_label" bottom_delta="-24"> 36
15 Show These Popups: 37
16 </text> 38 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
17 <scroll_list follows="top|left" height="88" left="15" name="enabled_popups" width="480" /> 39 bottom_delta="-25" drop_shadow_visible="true" enabled="true" follows="left|top"
18 <button bottom_delta="-24" follows="top|left" height="20" 40 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
19 label="Disable All Popups" left="200" 41 mouse_opaque="true" name="show_label" v_pad="0" width="200" font-style="BOLD|SHADOW">
20 name="skip_dialogs_btn" 42 Show These Notifications:
43 </text>
44
45 <scroll_list follows="top|left" height="88" left="50" name="enabled_popups" width="420" />
46
47 <button bottom_delta="-22" follows="top|left" height="20"
48 label="Disable All" left="270"
49 name="skip_dialogs_btn" font="SansSerifSmall"
21 tool_tip="Disable all of the optional popups and &apos;first time use&apos; notifications." 50 tool_tip="Disable all of the optional popups and &apos;first time use&apos; notifications."
22 width="175" /> 51 width="160" />
52
53
54 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
55 height="1" left="55" name="border" width="380" />
56
57
23 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 58 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
24 bottom_delta="-24" drop_shadow_visible="true" enabled="true" 59 bottom_delta="-20" drop_shadow_visible="true" enabled="true" font-style="BOLD|SHADOW"
25 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" 60 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
26 height="10" left="15" mouse_opaque="false" name="text_box2" v_pad="0" 61 height="10" left="20" mouse_opaque="false" name="text_box2" v_pad="0"
27 width="270"> 62 width="270">
28 Offers of Notecards, Textures and Landmarks: 63 Inventory Offers:
29 </text> 64 </text>
30 <check_box bottom_delta="-25" enabled="true" 65 <check_box bottom_delta="-25" enabled="true"
31 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 66 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
32 label="Automatically accept" left="40" mouse_opaque="true" 67 label="Automatically accept" left="50" mouse_opaque="true"
33 name="accept_new_inventory" radio_style="false" width="270" /> 68 name="accept_new_inventory" radio_style="false" width="270" />
34 <check_box bottom_delta="-20" enabled="true" 69 <check_box bottom_delta="-20" enabled="true"
35 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 70 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
36 label="Automatically view after accepting" left="40" mouse_opaque="true" 71 label="Automatically view Notecards, Textures and Landmarks after accepting" left_delta="0" mouse_opaque="true"
37 name="show_new_inventory" radio_style="false" width="270" /> 72 name="show_new_inventory" radio_style="false" width="270" />
38 <check_box bottom_delta="-20" enabled="true" 73 <check_box bottom_delta="-20" enabled="true"
39 follows="left|top" font="SansSerifSmall" height="16" initial_value="true" 74 follows="left|top" font="SansSerifSmall" height="16" initial_value="true"
40 label="Automatically show newly accepted objects in inventory" left="40" mouse_opaque="true" 75 label="Automatically show newly accepted objects in inventory" left_delta="0" mouse_opaque="true"
41 name="show_in_inventory" radio_style="false" width="270" /> 76 name="show_in_inventory" radio_style="false" width="270" />
42 <check_box bottom_delta="-30" enabled="true" 77
78
79 <view_border bevel_style="none" border_thickness="1" bottom_delta="-15" follows="left|top"
80 height="1" left="55" name="border" width="380" />
81
82
83 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
84 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top"
85 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20" font-style="BOLD|SHADOW"
86 mouse_opaque="true" name="radar_text" v_pad="0" width="128">
87 Chat Notifications:
88 </text>
89 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
90 bottom_delta="-16" drop_shadow_visible="true" enabled="true" follows="left|top"
91 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="50"
92 mouse_opaque="true" name="When an avatar enters:" v_pad="0" width="128">
93 When an avatar enters:
94 </text>
95 <check_box bottom_delta="-6" enabled="true"
96 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
97 label="Chat range" left="270"
98 mouse_opaque="true" name="mini_map_notify_chat" radio_style="false"
99 width="256" />
100 <check_box bottom_delta="0" enabled="true"
101 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
102 label="Current region" left="390"
103 mouse_opaque="true" name="mini_map_notify_sim" radio_style="false"
104 width="256" />
105
106 <check_box bottom_delta="-20" enabled="true"
107 follows="left|top" font="SansSerifSmall" height="16"
108 initial_value="false" label="When Friends come online" left="50"
109 mouse_opaque="true" name="friends_online_notify_checkbox"
110 radio_style="false" width="256" />
111 <check_box bottom_delta="0" enabled="true"
43 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 112 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
44 label="Notify when [CURRENCY] spent or received" left="15" 113 label="When [CURRENCY] spent or received" left="270"
45 mouse_opaque="true" name="notify_money_change_checkbox" radio_style="false" 114 mouse_opaque="true" name="notify_money_change_checkbox" radio_style="false"
46 width="256" /> 115 width="256" />
116
47</panel> 117</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_skins.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_skins.xml
index 4a5c95a..eae0103 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_skins.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_skins.xml
@@ -1,14 +1,39 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2
3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 17<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Skins" left="102" mouse_opaque="true" 18 height="408" label="Skins" left="102" mouse_opaque="true"
4 name="Skins panel" width="517"> 19 name="Skins panel" width="517">
20
21
5 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 22 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
6 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top" 23 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
7 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="10" 24 font="SansSerifSmall" h_pad="0" halign="left" height="12" left="20"
8 mouse_opaque="true" name="muting_text" v_pad="0" width="500"> 25 mouse_opaque="true" name="muting_text" v_pad="0" width="500">
9 Select a skin (requires restart). (Please see the skin folders for information and credits) 26 Select Skin:
10 </text> 27 </text>
11 <radio_group bottom="0" draw_border="false" follows="top|left" height="380" left="12" 28
29 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
30 bottom="-22" drop_shadow_visible="true" enabled="true" follows="left|top"
31 font="SansSerifSmall" h_pad="0" halign="left" height="12" left_delta="80"
32 mouse_opaque="true" name="requires_restart_text" v_pad="0" width="500">
33 (requires restart). See skin folder for credits
34 </text>
35
36 <radio_group bottom="0" draw_border="false" follows="top|left" height="380" left="50"
12 name="skin_selection" width="480"> 37 name="skin_selection" width="480">
13 <radio_item bottom="-20" height="20" left="0" name="meta7" width="480"> 38 <radio_item bottom="-20" height="20" left="0" name="meta7" width="480">
14 meta 7 39 meta 7
@@ -24,40 +49,40 @@
24 </radio_item> 49 </radio_item>
25 </radio_group> 50 </radio_group>
26 51
27 <button left="130" bottom="-125" width="216" height="95" name="meta7_preview" 52 <button left="150" bottom="-130" width="216" height="95" name="meta7_preview"
28 scale_image="true" label="" image_selected="skin_thumbnail_meta7.png" 53 scale_image="true" label="" image_selected="skin_thumbnail_meta7.png"
29 image_unselected="skin_thumbnail_meta7.png" image_hover_selected="skin_thumbnail_meta7.png" 54 image_hover_selected="skin_thumbnail_meta7.png" image_unselected="skin_thumbnail_meta7.png"
30 image_hover_unselected="skin_thumbnail_meta7.png" follows="left|top" /> 55 image_hover_unselected="skin_thumbnail_meta7.png" follows="left|top" />
31 <button left="130" bottom_delta="-100" width="216" height="95" name="m7white_preview" 56 <button left="150" bottom_delta="-100" width="216" height="95" name="m7white_preview"
32 scale_image="true" label="" image_selected="skin_thumbnail_white_meta7.png" 57 scale_image="true" label="" image_selected="skin_thumbnail_white_meta7.png"
33 image_hover_selected="skin_thumbnail_white_meta7.png" image_unselected="skin_thumbnail_white_meta7.png" 58 image_hover_selected="skin_thumbnail_white_meta7.png" image_unselected="skin_thumbnail_white_meta7.png"
34 image_hover_unselected="skin_thumbnail_white_meta7.png" follows="left|top" /> 59 image_hover_unselected="skin_thumbnail_white_meta7.png" follows="left|top" />
35 <button left="130" bottom_delta="-100" width="216" height="95" name="pslpurple_preview" 60 <button left="150" bottom_delta="-100" width="216" height="95" name="pslpurple_preview"
36 scale_image="true" label="" image_selected="skin_thumbnail_pslpurple.png" 61 scale_image="true" label="" image_selected="skin_thumbnail_pslpurple.png"
37 image_hover_selected="skin_thumbnail_pslpurple.png" image_unselected="skin_thumbnail_pslpurple.png" 62 image_hover_selected="skin_thumbnail_pslpurple.png" image_unselected="skin_thumbnail_pslpurple.png"
38 image_hover_unselected="skin_thumbnail_pslpurple.png" follows="left|top" /> 63 image_hover_unselected="skin_thumbnail_pslpurple.png" follows="left|top" />
39 <button left="130" bottom_delta="-100" width="216" height="95" name="classic_preview" 64 <button left="150" bottom_delta="-100" width="216" height="95" name="classic_preview"
40 scale_image="true" label="" image_selected="skin_thumbnail_default.png" 65 scale_image="true" label="" image_selected="skin_thumbnail_default.png"
41 image_hover_selected="skin_thumbnail_default.png" image_unselected="skin_thumbnail_default.png" 66 image_hover_selected="skin_thumbnail_default.png" image_unselected="skin_thumbnail_default.png"
42 image_hover_unselected="skin_thumbnail_default.png" follows="left|top" /> 67 image_hover_unselected="skin_thumbnail_default.png" follows="left|top" />
43 <text name="skin_current_text" 68 <text name="skin_current_text" font-style="BOLD|SHADOW"
44 left="10" bottom="5" halign="left" height="12" 69 left="20" bottom="5" halign="left" height="12"
45 follows="left|bottom" h_pad="0" v_pad="0" 70 follows="left|bottom" h_pad="0" v_pad="0"
46 bg_visible="false" drop_shadow_visible="true" 71 bg_visible="false" drop_shadow_visible="true"
47 border_visible="false" border_drop_shadow_visible="false" 72 border_visible="false" border_drop_shadow_visible="false"
48 font="SansSerif" mouse_opaque="true"> 73 font="SansSerifSmall" mouse_opaque="true">
49 Other Skin Name: 74 Custom Skin Name:
50 </text> 75 </text>
51 <line_editor name="skin_current_edit" 76 <line_editor name="skin_current_edit"
52 bottom_delta="0" left_delta="120" height="20" width="120" 77 bottom_delta="-2" left_delta="110" height="18" width="160"
53 follows="left|bottom" font="SansSerif" 78 follows="left|bottom" font="SansSerif"
54 bevel_style="in" border_style="line" border_thickness="1" 79 bevel_style="in" border_style="line" border_thickness="1"
55 max_length="31" mouse_opaque="true" 80 max_length="31" mouse_opaque="true"
56 handle_edit_keys_directly="true" 81 handle_edit_keys_directly="true"
57 select_all_on_focus_received="true" /> 82 select_all_on_focus_received="true" />
58 <button name="save_skin" label="Save" 83 <button name="save_skin" label="Save"
59 bottom_delta="-2" left_delta="120" height="24" width="90" 84 bottom_delta="-2" left_delta="165" height="20" width="110"
60 follows="left|center" font="SansSerif" halign="center" 85 follows="left|center" font="SansSerifSmall" halign="center"
61 mouse_opaque="true" scale_image="TRUE" /> 86 mouse_opaque="true" scale_image="TRUE" />
62</panel> 87</panel>
63 88
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_voice.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_voice.xml
index b4939ca..d9c3f5e 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_voice.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_voice.xml
@@ -1,20 +1,39 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 2
3 height="408" label="Voice" left="102" mouse_opaque="true" name="chat" 3<!--
4ALL PREFS OPTIONS START AT 20px FROM LEFT, 10px FROM TOP
5
6USE bottom_delta BETWEEN OPTIONS IN A GROUP
7
8USE LINES BETWEEN GROUPS
9
10USE font-style="BOLD|SHADOW" FOR GROUP LABELS
11
12GROUP LABEL CONTENTS ARE INDENTED 30px
13
14USE left="270" FOR TABBING OPTIONS
15-->
16
17<panel border="true" bottom="-20" enabled="true" follows="left|top|right|bottom"
18 height="408" label="Voice" left="102" mouse_opaque="true" name="voice_chat"
4 width="517"> 19 width="517">
5 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-26" 20
6 embedded_items="false" enabled="false" follows="left|top" 21
7 font="SansSerifSmall" height="20" hide_border="true" hide_scrollbar="true" 22 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom="-30"
8 left_delta="8" max_length="65535" mouse_opaque="true" 23 embedded_items="false" enabled="false" follows="left|top"
9 name="voice_unavailable" tab_stop="false" width="450" word_wrap="true"> 24 font="SansSerifSmall" height="20" hide_border="true" hide_scrollbar="true"
10 Voice Chat Is Not Available 25 left="20" max_length="65535" mouse_opaque="true"
11 </text_editor> 26 name="voice_unavailable" tab_stop="false" width="450" word_wrap="true">
12 <check_box bottom_delta="0" enabled="true" 27 Voice Chat Is Not Available
13 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 28 </text_editor>
14 label="Enable voice chat" left="8" mouse_opaque="true" 29 <check_box bottom="-26" enabled="true"
15 name="enable_voice_check" radio_style="false" width="200" /> 30 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
31 label="Enable voice chat" left="20" mouse_opaque="true"
32 name="enable_voice_check" radio_style="false" width="200" />
33
34
16 <radio_group bottom_delta="-40" draw_border="false" follows="left|top" height="40" 35 <radio_group bottom_delta="-40" draw_border="false" follows="left|top" height="40"
17 left_delta="20" name="ear_location" width="364"> 36 left_delta="30" name="ear_location" width="364">
18 <radio_item type="string" length="1" bottom="-19" follows="left|top" height="16" left="3" name="0" width="315"> 37 <radio_item type="string" length="1" bottom="-19" follows="left|top" height="16" left="3" name="0" width="315">
19 Hear Voice Chat from camera position. 38 Hear Voice Chat from camera position.
20 </radio_item> 39 </radio_item>
@@ -22,17 +41,19 @@
22 Hear Voice Chat from avatar position. 41 Hear Voice Chat from avatar position.
23 </radio_item> 42 </radio_item>
24 </radio_group> 43 </radio_group>
25 <text type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-20" 44
26 embedded_items="false" enabled="true" follows="left|top" 45
46 <text type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-30"
47 embedded_items="false" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
27 font="SansSerifSmall" height="16" hide_border="true" hide_scrollbar="true" 48 font="SansSerifSmall" height="16" hide_border="true" hide_scrollbar="true"
28 left_delta="0" max_length="65535" mouse_opaque="true" 49 left="20" max_length="65535" mouse_opaque="true"
29 name="push_to_talk_heading" width="445" word_wrap="true"> 50 name="push_to_talk_heading" width="445" word_wrap="true">
30 Push To Talk: 51 Push To Talk:
31 </text> 52 </text>
32 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-60" 53 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-60"
33 embedded_items="false" enabled="false" follows="left|top" 54 embedded_items="false" enabled="false" follows="left|top"
34 font="SansSerifSmall" height="65" hide_border="true" hide_scrollbar="true" 55 font="SansSerifSmall" height="65" hide_border="true" hide_scrollbar="true"
35 left_delta="20" max_length="65535" mouse_opaque="true" 56 left_delta="30" max_length="65535" mouse_opaque="true"
36 name="voice_chat_description" tab_stop="false" width="465" word_wrap="true"> 57 name="voice_chat_description" tab_stop="false" width="465" word_wrap="true">
37 Push-to-Talk mode lets you control when your voice is transmitted. When in toggle mode, press and release the push-to-talk trigger to switch your microphone on and off. When not in toggle mode, the microphone is active only when the trigger is held down. 58 Push-to-Talk mode lets you control when your voice is transmitted. When in toggle mode, press and release the push-to-talk trigger to switch your microphone on and off. When not in toggle mode, the microphone is active only when the trigger is held down.
38 </text_editor> 59 </text_editor>
@@ -51,34 +72,38 @@
51 drop_shadow_visible="true" enabled="false" 72 drop_shadow_visible="true" enabled="false"
52 follows="top|left" font="SansSerifSmall" halign="right" height="19" 73 follows="top|left" font="SansSerifSmall" halign="right" height="19"
53 left_delta="0" max_length="254" mouse_opaque="false" name="modifier_combo" 74 left_delta="0" max_length="254" mouse_opaque="false" name="modifier_combo"
54 width="280" /> 75 width="320" />
55 <button bottom_delta="-25" follows="left|top" font="SansSerif" halign="center" 76 <button bottom_delta="-25" follows="left|top" font="SansSerifSmall" halign="center"
56 height="20" label="Set Key" left_delta="0" mouse_opaque="true" 77 height="20" label="Set Key" left_delta="0" mouse_opaque="true"
57 name="set_voice_hotkey_button" width="115" /> 78 name="set_voice_hotkey_button" width="160" />
58 <button bottom_delta="0" follows="left|top" font="SansSerif" halign="center" height="20" 79 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" halign="center" height="20"
59 label="Middle Mouse Button" left_delta="120" mouse_opaque="true" 80 label="Reset to Default" left_delta="165" mouse_opaque="true"
60 name="set_voice_middlemouse_button" width="160" /> 81 name="set_voice_middlemouse_button" width="160" />
61 <text allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-25" 82
62 embedded_items="false" enabled="true" follows="left|top" height="16" 83
63 left="28" name="privacy_heading" width="445"> 84 <text allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-30" font="SansSerifSmall"
85 embedded_items="false" enabled="true" follows="left|top" height="16" font-style="BOLD|SHADOW"
86 left="30" name="privacy_heading" width="445">
64 Privacy: 87 Privacy:
65 </text> 88 </text>
66 <check_box bottom_delta="-20" enabled="true" 89 <check_box bottom_delta="-20" enabled="true"
67 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 90 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
68 label="Only accept voice calls from people on My Friends list" 91 label="Only accept calls from my friends"
69 left_delta="20" mouse_opaque="true" name="voice_call_friends_only_check" 92 left_delta="30" mouse_opaque="true" name="voice_call_friends_only_check"
70 radio_style="false" width="200" /> 93 radio_style="false" width="200" />
71 <check_box bottom_delta="-18" enabled="true" 94 <check_box bottom_delta="-18" enabled="true"
72 follows="left|top" font="SansSerifSmall" height="16" initial_value="false" 95 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
73 label="Switch off microphone when ending IM calls" 96 label="Switch off microphone when ending calls"
74 mouse_opaque="true" name="auto_disengage_mic_check" 97 mouse_opaque="true" name="auto_disengage_mic_check"
75 radio_style="false" width="200" /> 98 radio_style="false" width="200" />
76 <button bottom_delta="-40" follows="left|top" font="SansSerif" height="20" 99
77 label="Device Settings" left="28" mouse_opaque="true" 100
78 name="device_settings_btn" width="155" /> 101 <button bottom_delta="-40" follows="left|top" font="SansSerifSmall" height="20"
79 <button bottom_delta="0" follows="left|top" font="SansSerif" halign="center" height="20" 102 label="Device Settings" left="30" mouse_opaque="true"
80 label="Reconnect to Voice" left_delta="160" mouse_opaque="true" 103 name="device_settings_btn" width="160" />
81 name="reset_voice" width="160" /> 104 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" halign="center" height="20"
105 label="Reconnect to Voice" left_delta="160" mouse_opaque="true"
106 name="reset_voice" width="160" />
82 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-32" 107 <text_editor type="string" length="1" allow_html="false" bg_readonly_color="0 0 0 0" bottom_delta="-32"
83 embedded_items="false" enabled="false" follows="left|top" 108 embedded_items="false" enabled="false" follows="left|top"
84 font="SansSerifSmall" height="35" hide_border="true" hide_scrollbar="true" 109 font="SansSerifSmall" height="35" hide_border="true" hide_scrollbar="true"
@@ -86,4 +111,6 @@
86 name="device_settings_text" tab_stop="false" width="450" word_wrap="true"> 111 name="device_settings_text" tab_stop="false" width="450" word_wrap="true">
87 NOTE: Running the Device Settings will temporarily disconnect you from Voice Chat, and changes you make will be immediately applied. 112 NOTE: Running the Device Settings will temporarily disconnect you from Voice Chat, and changes you make will be immediately applied.
88 </text_editor> 113 </text_editor>
114
115
89</panel> 116</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_web.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_web.xml
deleted file mode 100644
index b4dbbb5..0000000
--- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_web.xml
+++ /dev/null
@@ -1,68 +0,0 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" label="Web Browser" left="102" mouse_opaque="true" name="web"
4 width="517">
5 <radio_group bottom="-45" draw_border="false" follows="top|left" height="40" left="12"
6 name="use_external_browser" width="480">
7 <radio_item bottom="-20" height="20" left="0" name="external" width="480"
8 tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen.">
9 Use external web browser (Firefox, Safari, Internet Explorer)
10 </radio_item>
11 <radio_item bottom="-40" height="20" left="0" name="internal" width="480"
12 tool_tip="Use the built-in web browser for help, web links, etc. This browser opens as a new window inside the viewer.">
13 Use built-in web browser
14 </radio_item>
15 </radio_group>
16 <button bottom_delta="-30" enabled="true" follows="left|top" font="SansSerif"
17 halign="center" height="22" label="Clear Built-In Browser Cache" left="35"
18 mouse_opaque="true" name="clear_cache" scale_image="true" width="250" />
19 <check_box bottom_delta="-35" enabled="true" follows="left|top"
20 font="SansSerifSmall" height="16" initial_value="false"
21 label="Accept cookies while using built-in web browser" left="15" mouse_opaque="true"
22 tool_top="Allows the built-in web browser to accept cookies from websites"
23 name="cookies_enabled" radio_style="false" width="256" />
24 <button bottom_delta="-25" enabled="true" follows="left|top" font="SansSerif"
25 halign="center" height="20" label="Clear Cookies" left_delta="20"
26 tool_tip="Clear Cookies"
27 mouse_opaque="true" name="clear_ookies" scale_image="true" width="110" />
28 <check_box bottom_delta="-35" enabled="true"
29 follows="left|top" font="SansSerifSmall" height="16" initial_value="false"
30 label="Enable proxy for built-in web browser" left="15" mouse_opaque="true"
31 name="web_proxy_enabled" radio_style="false" width="256" />
32 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
33 bottom_delta="-18" drop_shadow_visible="true" enabled="true"
34 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
35 height="10" left_delta="20" mouse_opaque="false" name="proxy_text_label"
36 v_pad="0" width="128">
37 Address:
38 </text>
39 <line_editor bottom_delta="-8" enabled="true" follows="left|top" font="SansSerif"
40 height="20" left="112" name="web_proxy_editor"
41 tool_tip="The name or IP address of the proxy you would like to use"
42 width="200" />
43 <spinner bottom_delta="-20" decimal_digits="0"
44 enabled="true" follows="left|top" height="16" increment="1"
45 initial_val="80" label="Port number:" label_width="75" left="35"
46 max_val="12000" min_val="10" mouse_opaque="true" name="web_proxy_port"
47 width="140" />
48 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
49 bottom_delta="-30" drop_shadow_visible="true" enabled="true"
50 follows="left|top" font="SansSerifSmall" h_pad="0" halign="left"
51 height="10" left="15" mouse_opaque="false" name="cache_size_label_l"
52 v_pad="0" width="200">
53 Custom All (web) search tab URL:
54 </text>
55 <line_editor bottom_delta="-25" enabled="true" follows="left|top"
56 font="SansSerifSmall" height="18" left="15" name="world_search_editor"
57 tool_tip="Address of the world search engine you would like to use"
58 width="400" />
59 <button bottom_delta="-22" enabled="true" follows="left|top" font="SansSerif"
60 halign="center" height="20" label="Reset" left="15"
61 tool_tip="Reset to default"
62 mouse_opaque="true" name="world_search_reset_default" scale_image="true" width="80" />
63 <button bottom_delta="0" enabled="true" follows="left|top" font="SansSerif"
64 halign="center" height="20" label="Clear" left_delta="85"
65 tool_tip="clear field"
66 mouse_opaque="true" name="world_search_clear" scale_image="true" width="80" />
67
68</panel>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_region_estate.xml b/linden/indra/newview/skins/default/xui/en-us/panel_region_estate.xml
index 5dd738a..bcbff32 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_region_estate.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_region_estate.xml
@@ -25,7 +25,7 @@ regions in the estate.
25 (unknown) 25 (unknown)
26 </text> 26 </text>
27 <view_border bevel_style="in" border="true" border_thickness="1" bottom_delta="-295" 27 <view_border bevel_style="in" border="true" border_thickness="1" bottom_delta="-295"
28 follows="top|left" height="350" left="6" width="250" /> 28 follows="top|left" height="290" left="6" width="250" />
29 <check_box bottom_delta="265" follows="left|top" height="20" label="Use Global Time" 29 <check_box bottom_delta="265" follows="left|top" height="20" label="Use Global Time"
30 left="12" name="use_global_time_check" width="200" /> 30 left="12" name="use_global_time_check" width="200" />
31 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?" 31 <button bottom_delta="0" follows="left|top" font="SansSerifSmall" height="18" label="?"
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_about.xml b/linden/indra/newview/skins/default/xui/zh/floater_about.xml
index b14f06f..bb975e0 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_about.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_about.xml
@@ -1,6 +1,14 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="floater_about" title="关于第二人生"> 2<floater name="floater_about" title="关于第二人生">
3 <tab_container name="about_tab">
4 <panel label="版本" name="support_panel">
5 <button label="å¤åˆ¶åˆ°å‰ªè´´æ¿" name="copy_btn" />
6 </panel>
7 <panel label="工作人员" name="credits_panel" />
8 </tab_container>
9
3 <string name="you_are_at"> 10 <string name="you_are_at">
4 您现在ä½äºŽ [POSITION] 11 您现在ä½äºŽ [POSITION]
5 </string> 12 </string>
13
6</floater> 14</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_about_land.xml b/linden/indra/newview/skins/default/xui/zh/floater_about_land.xml
index d9c52a2..c83cb24 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_about_land.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_about_land.xml
@@ -2,10 +2,10 @@
2<floater name="floaterland" title="关于土地"> 2<floater name="floaterland" title="关于土地">
3 <tab_container name="landtab"> 3 <tab_container name="landtab">
4 <panel label="一般" name="land_general_panel"> 4 <panel label="一般" name="land_general_panel">
5 <text length="1" name="Name:" type="string"> 5 <text name="Name:" type="string">
6 åå­—: 6 åå­—:
7 </text> 7 </text>
8 <text length="1" name="Description:" type="string"> 8 <text name="Description:" type="string">
9 æè¿°: 9 æè¿°:
10 </text> 10 </text>
11 <text name="LandType"> 11 <text name="LandType">
@@ -20,56 +20,56 @@
20 <text name="ContentRatingText"> 20 <text name="ContentRatingText">
21 Adult 21 Adult
22 </text> 22 </text>
23 <text length="1" name="Owner:" type="string"> 23 <text name="Owner:" type="string">
24 主人: 24 主人:
25 </text> 25 </text>
26 <text length="1" name="OwnerText" type="string"> 26 <text name="OwnerText" type="string">
27 Leyla Linden 27 Leyla Linden
28 </text> 28 </text>
29 <button label="档案..." label_selected="档案..." name="Profile..."/> 29 <button label="档案..." label_selected="档案..." name="Profile..."/>
30 <text length="1" name="Group:" type="string"> 30 <text name="Group:" type="string">
31 社团: 31 社团:
32 </text> 32 </text>
33 <button label="更改..." label_selected="更改..." name="Set..."/> 33 <button label="更改..." label_selected="更改..." name="Set..."/>
34 <check_box label="å…许转让给社团" name="check deed" tool_tip="一个社团官员å¯ä»¥è½¬è®©è¿™å—土地至社团,使其被社团的土地é…é¢æ”¯æŒã€‚"/> 34 <check_box label="å…许转让给社团" name="check deed" tool_tip="一个社团官员å¯ä»¥è½¬è®©è¿™å—土地至社团,使其被社团的土地é…é¢æ”¯æŒã€‚"/>
35 <button label="转让..." label_selected="转让..." name="Deed..." tool_tip="åªæœ‰ä½ æ˜¯æ‰€é€‰ç¤¾å›¢å®˜å‘˜çš„时候æ‰èƒ½è½¬è®©åœŸåœ°ã€‚"/> 35 <button label="转让..." label_selected="转让..." name="Deed..." tool_tip="åªæœ‰ä½ æ˜¯æ‰€é€‰ç¤¾å›¢å®˜å‘˜çš„时候æ‰èƒ½è½¬è®©åœŸåœ°ã€‚"/>
36 <check_box label="土地拥有者通过转让土地æ¥è´¡çŒ®" name="check contrib" tool_tip="当土地转让到社团,原土地拥有者将需贡献足够的土地æ¥æ”¯æŒã€‚"/> 36 <check_box label="拥有者在转让åŒæ—¶ç»™å‡ºè´¡çŒ®" name="check contrib" tool_tip="当土地被转让给社团时, å‰ä¸€ä¸ªä¸»äººè´¡çŒ®è¶³å¤Ÿçš„土地é…é¢ä»¥æ”¯æŒåœŸåœ°çš„è¿è¡Œã€‚"/>
37 <text length="1" name="For Sale:" type="string"> 37 <text name="For Sale:" type="string">
38 出售: 38 出售:
39 </text> 39 </text>
40 <text length="1" name="Not for sale." type="string"> 40 <text name="Not for sale." type="string">
41 éžå–状æ€ã€‚ 41 éžå–状æ€ã€‚
42 </text> 42 </text>
43 <text length="1" name="For Sale: Price L$[PRICE]." type="string"> 43 <text name="For Sale: Price L$[PRICE]." type="string">
44 价格: L$[PRICE](L$[PRICE_PER_SQM]/m²)。 44 价格: [CURRENCY][PRICE] ([CURRENCY][PRICE_PER_SQM]/m²)。
45 </text> 45 </text>
46 <button label="出售土地..." label_selected="出售土地..." name="Sell Land..."/> 46 <button label="出售土地..." label_selected="出售土地..." name="Sell Land..."/>
47 <text length="1" name="For sale to" type="string"> 47 <text name="For sale to" type="string">
48 出售给: [BUYER] 48 出售给: [BUYER]
49 </text> 49 </text>
50 <text length="1" name="Sell with landowners objects in parcel." type="string"> 50 <text name="Sell with landowners objects in parcel." type="string">
51 出售中包括物体。 51 出售中包括物体。
52 </text> 52 </text>
53 <text length="1" name="Selling with no objects in parcel." type="string"> 53 <text name="Selling with no objects in parcel." type="string">
54 出售中ä¸åŒ…括物体。 54 出售中ä¸åŒ…括物体。
55 </text> 55 </text>
56 <button label="å–消土地出售" label_selected="å–消土地出售" name="Cancel Land Sale"/> 56 <button label="å–消土地出售" label_selected="å–消土地出售" name="Cancel Land Sale"/>
57 <text length="1" name="Claimed:" type="string"> 57 <text name="Claimed:" type="string">
58 认购时间: 58 认购时间:
59 </text> 59 </text>
60 <text length="1" name="DateClaimText" type="string"> 60 <text name="DateClaimText" type="string">
61 星期二 八月15日 13:47:25 2006年 61 星期二 八月15日 13:47:25 2006年
62 </text> 62 </text>
63 <text length="1" name="PriceLabel" type="string"> 63 <text name="PriceLabel" type="string">
64 é¢ç§¯ï¼š 64 é¢ç§¯ï¼š
65 </text> 65 </text>
66 <text length="1" name="PriceText" type="string"> 66 <text name="PriceText" type="string">
67 4048m² 67 4048m²
68 </text> 68 </text>
69 <text length="1" name="Traffic:" type="string"> 69 <text name="Traffic:" type="string">
70 æµé‡: 70 æµé‡:
71 </text> 71 </text>
72 <text length="1" name="DwellText" type="string"> 72 <text name="DwellText" type="string">
73 0 73 0
74 </text> 74 </text>
75 <button label="购买土地..." label_selected="购买土地..." name="Buy Land..."/> 75 <button label="购买土地..." label_selected="购买土地..." name="Buy Land..."/>
@@ -123,31 +123,31 @@
123 <text name="estate_section_lbl"> 123 <text name="estate_section_lbl">
124 地产: 124 地产:
125 </text> 125 </text>
126 <text length="1" name="estate_name_lbl" type="string"> 126 <text name="estate_name_lbl" type="string">
127 å称: 127 å称:
128 </text> 128 </text>
129 <text length="1" name="estate_name_text" type="string"> 129 <text name="estate_name_text" type="string">
130 大陆 130 大陆
131 </text> 131 </text>
132 <text length="1" name="estate_owner_lbl" type="string"> 132 <text name="estate_owner_lbl" type="string">
133 拥有者: 133 拥有者:
134 </text> 134 </text>
135 <text length="1" name="estate_owner_text" type="string"> 135 <text name="estate_owner_text" type="string">
136 (æ— ) 136 (æ— )
137 </text> 137 </text>
138 <text_editor length="1" name="covenant_editor" type="string"> 138 <text_editor name="covenant_editor" type="string">
139 è¿™å—地产没有æ供任何契约åˆåŒã€‚ 139 è¿™å—地产没有æ供任何契约åˆåŒã€‚
140 </text_editor> 140 </text_editor>
141 <text length="1" name="covenant_timestamp_text" type="string"> 141 <text name="covenant_timestamp_text" type="string">
142 上次修改时间 星期三12 月3 1日 16:00:00 1969年 142 上次修改时间 星期三12 月3 1日 16:00:00 1969年
143 </text> 143 </text>
144 <text name="region_section_lbl"> 144 <text name="region_section_lbl">
145 地区: 145 地区:
146 </text> 146 </text>
147 <text length="1" name="region_name_lbl" type="string"> 147 <text name="region_name_lbl" type="string">
148 å称: 148 å称:
149 </text> 149 </text>
150 <text length="1" name="region_name_text" type="string"> 150 <text name="region_name_text" type="string">
151 leyla 151 leyla
152 </text> 152 </text>
153 <text name="region_landtype_lbl"> 153 <text name="region_landtype_lbl">
@@ -165,13 +165,13 @@
165 <text name="resellable_lbl"> 165 <text name="resellable_lbl">
166 转售: 166 转售:
167 </text> 167 </text>
168 <text length="1" name="resellable_clause" type="string"> 168 <text name="resellable_clause" type="string">
169 此地区内购买的土地ä¸èƒ½è¢«é‡æ–°å‡ºå”®ã€‚ 169 此地区内购买的土地ä¸èƒ½è¢«é‡æ–°å‡ºå”®ã€‚
170 </text> 170 </text>
171 <text name="changeable_lbl"> 171 <text name="changeable_lbl">
172 划分: 172 划分:
173 </text> 173 </text>
174 <text length="1" name="changeable_clause" type="string"> 174 <text name="changeable_clause" type="string">
175 此地区内购买的土地ä¸èƒ½è¢«åˆå¹¶æˆ–划分。 175 此地区内购买的土地ä¸èƒ½è¢«åˆå¹¶æˆ–划分。
176 </text> 176 </text>
177 <string name="can_resell"> 177 <string name="can_resell">
@@ -191,7 +191,7 @@
191 <text name="parcel_object_bonus"> 191 <text name="parcel_object_bonus">
192 区域é¢å¤–物体因数: [BONUS] 192 区域é¢å¤–物体因数: [BONUS]
193 </text> 193 </text>
194 <text length="1" name="Simulator primitive usage:" type="string"> 194 <text name="Simulator primitive usage:" type="string">
195 模拟器元件使用情况: 195 模拟器元件使用情况:
196 </text> 196 </text>
197 <text left="146" name="objects_available"> 197 <text left="146" name="objects_available">
@@ -203,53 +203,53 @@
203 <string name="objects_deleted_text"> 203 <string name="objects_deleted_text">
204 [COUNT] 个, 最多 [MAX] 个 ([DELETED] 个将会被删除) 204 [COUNT] 个, 最多 [MAX] 个 ([DELETED] 个将会被删除)
205 </string> 205 </string>
206 <text length="1" name="Primitives parcel supports:" type="string"> 206 <text name="Primitives parcel supports:" type="string">
207 地å—支æŒå…ƒä»¶æ•°: 207 地å—支æŒå…ƒä»¶æ•°:
208 </text> 208 </text>
209 <text left="146" length="1" name="object_contrib_text" type="string" width="222"> 209 <text left="146" name="object_contrib_text" type="string" width="222">
210 [COUNT] 个 210 [COUNT] 个
211 </text> 211 </text>
212 <text length="1" name="Primitives on parcel:" type="string"> 212 <text name="Primitives on parcel:" type="string">
213 地å—上的元件数: 213 地å—上的元件数:
214 </text> 214 </text>
215 <text left="146" length="1" name="total_objects_text" type="string" width="58"> 215 <text left="146" name="total_objects_text" type="string" width="58">
216 [COUNT] 个 216 [COUNT] 个
217 </text> 217 </text>
218 <text length="1" name="Owned by parcel owner:" type="string"> 218 <text name="Owned by parcel owner:" type="string">
219 土地拥有者所有: 219 土地拥有者所有:
220 </text> 220 </text>
221 <text left="146" length="1" name="owner_objects_text" type="string" width="58"> 221 <text left="146" name="owner_objects_text" type="string" width="58">
222 [COUNT] 个 222 [COUNT] 个
223 </text> 223 </text>
224 <button label="显示" label_selected="显示" name="ShowOwner"/> 224 <button label="显示" label_selected="显示" name="ShowOwner"/>
225 <button label="归还..." label_selected="归还..." name="ReturnOwner..." tool_tip="将物体归还其主人。"/> 225 <button label="归还..." label_selected="归还..." name="ReturnOwner..." tool_tip="将物体归还其主人。"/>
226 <text length="1" name="Set to group:" type="string"> 226 <text name="Set to group:" type="string">
227 设为社团的元件数: 227 设为社团的元件数:
228 </text> 228 </text>
229 <text left="146" length="1" name="group_objects_text" type="string" width="58"> 229 <text left="146" name="group_objects_text" type="string" width="58">
230 [COUNT] 个 230 [COUNT] 个
231 </text> 231 </text>
232 <button label="显示" label_selected="显示" name="ShowGroup"/> 232 <button label="显示" label_selected="显示" name="ShowGroup"/>
233 <button label="归还..." label_selected="归还..." name="ReturnGroup..." tool_tip="将物体归还其主人。"/> 233 <button label="归还..." label_selected="归还..." name="ReturnGroup..." tool_tip="将物体归还其主人。"/>
234 <text length="1" name="Owned by others:" type="string"> 234 <text name="Owned by others:" type="string">
235 为其他人所有: 235 为其他人所有:
236 </text> 236 </text>
237 <text left="146" length="1" name="other_objects_text" type="string" width="58"> 237 <text left="146" name="other_objects_text" type="string" width="58">
238 [COUNT] 个 238 [COUNT] 个
239 </text> 239 </text>
240 <button label="显示" label_selected="显示" name="ShowOther"/> 240 <button label="显示" label_selected="显示" name="ShowOther"/>
241 <button label="归还..." label_selected="归还..." name="ReturnOther..." tool_tip="将物体归还其主人。"/> 241 <button label="归还..." label_selected="归还..." name="ReturnOther..." tool_tip="将物体归还其主人。"/>
242 <text length="1" name="Selected / sat upon:" type="string"> 242 <text name="Selected / sat upon:" type="string">
243 被选择 / 被å上的: 243 被选择 / 被å上的:
244 </text> 244 </text>
245 <text left="146" length="1" name="selected_objects_text" type="string" width="58"> 245 <text left="146" name="selected_objects_text" type="string" width="58">
246 [COUNT] 个 246 [COUNT] 个
247 </text> 247 </text>
248 <text length="1" name="Autoreturn" type="string"> 248 <text name="Autoreturn" type="string">
249 自动归还其他居民的物体 (分钟, 0为关闭): 249 自动归还其他居民的物体 (分钟, 0为关闭):
250 </text> 250 </text>
251 <line_editor name="clean other time" right="-170"/> 251 <line_editor name="clean other time" right="-170"/>
252 <text length="1" name="Object Owners:" type="string"> 252 <text name="Object Owners:" type="string">
253 物体主人: 253 物体主人:
254 </text> 254 </text>
255 <button label="æ›´æ–°åå•" label_selected="æ›´æ–°åå•" left="78" name="Refresh List"/> 255 <button label="æ›´æ–°åå•" label_selected="æ›´æ–°åå•" left="78" name="Refresh List"/>
@@ -263,7 +263,7 @@
263 </name_list> 263 </name_list>
264 </panel> 264 </panel>
265 <panel label="选项" name="land_options_panel"> 265 <panel label="选项" name="land_options_panel">
266 <text length="1" name="allow_label" type="string"> 266 <text name="allow_label" type="string">
267 å…许其他居民: 267 å…许其他居民:
268 </text> 268 </text>
269 <check_box label="编辑地形" name="edit land check" tool_tip="如果选中的è¯ï¼Œè°éƒ½èƒ½ç¼–辑您的土地地形。最好是ä¸è¦é€‰ä¸­è¿™é¡¹ï¼Œå› ä¸ºæ‚¨æ€»å¯ä»¥ç¼–辑您自己的土地。"/> 269 <check_box label="编辑地形" name="edit land check" tool_tip="如果选中的è¯ï¼Œè°éƒ½èƒ½ç¼–辑您的土地地形。最好是ä¸è¦é€‰ä¸­è¿™é¡¹ï¼Œå› ä¸ºæ‚¨æ€»å¯ä»¥ç¼–辑您自己的土地。"/>
@@ -284,7 +284,7 @@
284 </text> 284 </text>
285 <check_box label="所有居民" name="check other scripts"/> 285 <check_box label="所有居民" name="check other scripts"/>
286 <check_box label="社团" name="check group scripts"/> 286 <check_box label="社团" name="check group scripts"/>
287 <text length="1" name="land_options_label" type="string"> 287 <text name="land_options_label" type="string">
288 土地选项: 288 土地选项:
289 </text> 289 </text>
290 <check_box label="安全 (ä¸ä¼šå—伤)" name="check safe" tool_tip="如果选中的è¯ï¼ŒåœŸåœ°è®¾ç½®ä¸ºå®‰å…¨ï¼Œç¦ç”¨æ ¼æ–—伤害。ä¸é€‰ä¸­çš„è¯ï¼Œå¯ç”¨æ ¼æ–—伤害。"/> 290 <check_box label="安全 (ä¸ä¼šå—伤)" name="check safe" tool_tip="如果选中的è¯ï¼ŒåœŸåœ°è®¾ç½®ä¸ºå®‰å…¨ï¼Œç¦ç”¨æ ¼æ–—伤害。ä¸é€‰ä¸­çš„è¯ï¼Œå¯ç”¨æ ¼æ–—伤害。"/>
@@ -392,11 +392,11 @@
392 <string name="mature_check_adult_tooltip"> 392 <string name="mature_check_adult_tooltip">
393 您的地å—ä¿¡æ¯æˆ–其内容被认为是adult内容。 393 您的地å—ä¿¡æ¯æˆ–其内容被认为是adult内容。
394 </string> 394 </string>
395 <text length="1" name="Snapshot:" type="string"> 395 <text name="Snapshot:" type="string">
396 å¿«ç…§: 396 å¿«ç…§:
397 </text> 397 </text>
398 <texture_picker label="" name="snapshot_ctrl" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/> 398 <texture_picker label="" name="snapshot_ctrl" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/>
399 <text length="1" name="landing_point" type="string"> 399 <text name="landing_point" type="string">
400 ç€é™†ç‚¹: [LANDING] 400 ç€é™†ç‚¹: [LANDING]
401 </text> 401 </text>
402 <string name="landing_point_none"> 402 <string name="landing_point_none">
@@ -404,17 +404,17 @@
404 </string> 404 </string>
405 <button label="设置" label_selected="设置" name="Set" tool_tip="设置访问者抵达时的ç€é™†ç‚¹ã€‚将会设置到您化身在该地å—内的ä½ç½®ã€‚"/> 405 <button label="设置" label_selected="设置" name="Set" tool_tip="设置访问者抵达时的ç€é™†ç‚¹ã€‚将会设置到您化身在该地å—内的ä½ç½®ã€‚"/>
406 <button label="清除" label_selected="清除" name="Clear" tool_tip="清除ç€é™†ç‚¹"/> 406 <button label="清除" label_selected="清除" name="Clear" tool_tip="清除ç€é™†ç‚¹"/>
407 <text length="1" name="Teleport Routing: " type="string"> 407 <text name="Teleport Routing: " type="string">
408 瞬间移动传é€è·¯çº¿: 408 瞬间移动传é€è·¯çº¿:
409 </text> 409 </text>
410 <combo_box name="landing type" tool_tip="Teleport Routing -- 选择如何应对到你的土地的瞬间移动。"> 410 <combo_box name="landing type" tool_tip="Teleport Routing -- 选择如何应对到你的土地的瞬间移动。">
411 <combo_item length="1" name="Blocked" type="string"> 411 <combo_item name="Blocked" type="string">
412 ä¸å…许 412 ä¸å…许
413 </combo_item> 413 </combo_item>
414 <combo_item length="1" name="LandingPoint" type="string"> 414 <combo_item name="LandingPoint" type="string">
415 ç€é™†ç‚¹ 415 ç€é™†ç‚¹
416 </combo_item> 416 </combo_item>
417 <combo_item length="1" name="Anywhere" type="string"> 417 <combo_item name="Anywhere" type="string">
418 ä»»æ„ä½ç½® 418 ä»»æ„ä½ç½®
419 </combo_item> 419 </combo_item>
420 </combo_box> 420 </combo_box>
@@ -434,12 +434,43 @@
434 媒体 URL: 434 媒体 URL:
435 </text> 435 </text>
436 <button label="设置..." label_selected="设置..." name="set_media_url"/> 436 <button label="设置..." label_selected="设置..." name="set_media_url"/>
437 <text
438 name="Current URL:">
439 å½“å‰ URL:
440 </text>
441
442 <button
443 label="é‡ç½®..."
444 label_selected="é‡ç½®..."
445 name="reset_media_url"
446 right="-12" />
447 <check_box label="éšè—媒体 URL" name="hide_media_url" tool_tip="选中该项将会对未被授æƒçš„查看该地å—ä¿¡æ¯çš„人éšè—媒体 URL 。注æ„对 HTML 类型,此项ä¸å¯ç”¨ã€‚"/>
448 <text
449 font="SansSerifSmall"
450 name="media_reset"
451 right="-264"
452 tool_tip="地å—在该时间之åŽï¼Œå°†è‡ªåŠ¨è¿”回åˆå§‹ URL (0 为ä¸è¿”回)"
453 type="string"
454 width="185">
455 在
456 </text>
457 <spinner
458 name="media_reset_time"
459 right="-195"
460 tool_tip="地å—在该时间之åŽï¼Œå°†è‡ªåŠ¨è¿”回åˆå§‹ URL (0 为ä¸è¿”回)" />
461 <text
462
463 name="minutes"
464 tool_tip="地å—在该时间之åŽï¼Œå°†è‡ªåŠ¨è¿”回åˆå§‹ URL (0 为ä¸è¿”回)"
465 right="-90">
466 分钟åŽå›žåˆ°åˆå§‹ URL
467 </text>
437 <text name="Description:"> 468 <text name="Description:">
438 æè¿°: 469 æè¿°:
439 </text> 470 </text>
440 <line_editor name="url_description" tool_tip="在播放/加载按钮æ—显示的文字"/> 471 <line_editor name="url_description" tool_tip="在播放/加载按钮æ—显示的文字"/>
441 <text length="1" name="Media texture:" type="string"> 472 <text name="Media texture:" type="string">
442 媒体 æè´¨: 473 æè´¨:
443 </text> 474 </text>
444 <texture_picker label="" name="media texture" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/> 475 <texture_picker label="" name="media texture" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/>
445 <text name="replace_texture_help"> 476 <text name="replace_texture_help">
@@ -447,38 +478,98 @@
447显示选择的动画或网页。) 478显示选择的动画或网页。)
448 </text> 479 </text>
449 <text name="Options:"> 480 <text name="Options:">
450 媒体 选项: 481 选项:
451 </text> 482 </text>
452 <check_box label="è‡ªåŠ¨è°ƒæ•´å†…å®¹å¤§å° " name="media_auto_scale" tool_tip="打开此项将自动缩放该地å—上的内容。其速度和质é‡å¯èƒ½ä¼šç¨ç¨é™ä½Žï¼Œä½†ä¸ä¼šéœ€è¦ä»»ä½•å…¶ä»–çš„æ质缩放或对é½ã€‚"/> 483 <check_box label="è‡ªåŠ¨è°ƒæ•´å†…å®¹å¤§å° " name="media_auto_scale" tool_tip="打开此项将自动缩放该地å—上的内容。其速度和质é‡å¯èƒ½ä¼šç¨ç¨é™ä½Žï¼Œä½†ä¸ä¼šéœ€è¦ä»»ä½•å…¶ä»–çš„æ质缩放或对é½ã€‚"/>
453 <check_box label="循环播放" name="media_loop" tool_tip="循环播放媒体。当媒体播放完毕时,它将从开始处é‡æ–°æ’­æ”¾ã€‚"/> 484 <check_box label="循环播放" name="media_loop" tool_tip="循环播放媒体。当媒体播放完毕时,它将从开始处é‡æ–°æ’­æ”¾ã€‚"/>
454 <check_box label="éšè—媒体 URL" name="hide_media_url" tool_tip="打开该选项将对未ç»å…许的土地信æ¯å¯Ÿçœ‹è€…éšè—媒体 URL。请注æ„该选项ä¸é€‚用于 HTML 类型。"/>
455 <check_box label="éšè—éŸ³ä¹ URL" name="hide_music_url" tool_tip="打开该选项将对未ç»å…许的土地信æ¯å¯Ÿçœ‹è€…éšè—éŸ³ä¹ URL。"/>
456 <text name="media_size" tool_tip="渲染媒体的尺寸,设为 0 使用默认值"> 485 <text name="media_size" tool_tip="渲染媒体的尺寸,设为 0 使用默认值">
457 媒体尺寸: 486 媒体尺寸:
458 </text> 487 </text>
459 <spinner name="media_size_width" tool_tip="渲染媒体的尺寸,设为 0 使用默认值"/> 488
460 <spinner name="media_size_height" tool_tip="渲染媒体的尺寸,设为 0 使用默认值"/> 489 <spinner name="media_size_width" tool_tip="渲染媒体的尺寸,设为 0 使用默认值"/>
461 <text name="pixels" right="-10"> 490 <text
491 name="pixels">
462 åƒç´  492 åƒç´ 
463 </text> 493 </text>
494 <text
495 name="Interaction:">
496 交互:
497 </text>
498 <radio_group
499 name="radio_navigate_allow">
500 <radio_item
501 name="Anyone"
502 tool_tip="任何居民都å¯ä»¥å’Œåª’体交互。">
503 任何人
504 </radio_item>
505 <radio_item
506 name="Group"
507 tool_tip="社团æƒé™æŽ§åˆ¶è°å¯ä»¥ä¸Žåª’体交互。">
508 社团
509 </radio_item>
510 </radio_group>
511 <check_box
512 label="ä»…å…许æµè§ˆè¿™äº›åŸŸ:"
513 name="check navigate filter" />
514 <line_editor
515 name="navigate_filter_domain" />
516 <button
517 label="添加..."
518 label_selected="添加..."
519 name="add_navigate_filter" />
520 <scroll_list
521 name="filter_list">
522 <column
523 label="域å"
524 name="domain" />
525 </scroll_list>
526 <button
527 label="移除"
528 label_selected="移除"
529 name="remove_navigate_filter" />
530 </panel>
531 <panel
532 label="音频"
533 layout="topleft"
534 name="land_audio_panel"
535 top_delta="1">
464 <text name="MusicURL:"> 536 <text name="MusicURL:">
465 éŸ³ä¹ URL: 537 éŸ³ä¹ URL:
466 </text> 538 </text>
467 <line_editor name="music_url" right="-15"/> 539 <check_box label="éšè—éŸ³ä¹ URL" name="hide_music_url" tool_tip="选中该项将会对未被授æƒçš„查看该地å—ä¿¡æ¯çš„人éšè—媒体 URL 。"/>
540
468 <text name="Sound:"> 541 <text name="Sound:">
469 声音: 542 声音:
470 </text> 543 </text>
471 <check_box label="动作和物å“的声音åªå­˜åœ¨äºŽæ­¤åœ°å—。" name="check sound local"/> 544 <check_box label="é™åˆ¶åŠ¨ä½œå’Œç‰©å“的声音到此地å—。" name="check_sound_local"/>
472 <button label="?" label_selected="?" name="?"/> 545 <button label="?" label_selected="?" name="?"/>
473 <text name="Voice settings:"> 546 <text name="Voice:">
474 语音: 547 语音:
475 </text> 548 </text>
549<radio_group
550 name="parcel_voice_channel">
551 <radio_item
552 name="Estate"
553 tool_tip="使用地产语音频é“。">
554 地产频é“
555 </radio_item>
556 <radio_item
557 name="Parcel"
558 tool_tip="é™åˆ¶è¯­éŸ³åˆ°è¯¥åœ°å—。">
559 地å—频é“
560 </radio_item>
561 <radio_item
562 name="Disabled"
563 tool_tip="在此地å—上ç¦ç”¨è¯­éŸ³ã€‚">
564 ç¦ç”¨
565 </radio_item>
566 </radio_group>
476 <check_box label="使用语音功能" name="parcel_enable_voice_channel"/> 567 <check_box label="使用语音功能" name="parcel_enable_voice_channel"/>
477 <check_box label="å…许使用地产声音频é“(由地产所创建)" name="parcel_enable_voice_channel_is_estate_disabled"/> 568 <check_box label="å…许使用地产声音频é“(由地产所创建)" name="parcel_enable_voice_channel_is_estate_disabled"/>
478 <check_box label="é™åˆ¶å£°éŸ³äºŽåœ°å—ç§æœ‰é¢‘é“" name="parcel_enable_voice_channel_parcel"/> 569 <check_box label="é™åˆ¶å£°éŸ³äºŽåœ°å—ç§æœ‰é¢‘é“" name="parcel_enable_voice_channel_parcel"/>
479 </panel> 570 </panel>
480 <panel label="访问" name="land_access_panel"> 571 <panel label="访问" name="land_access_panel">
481 <text length="1" name="Limit access to this parcel to:" type="string"> 572 <text name="Limit access to this parcel to:" type="string">
482 对该地å—的访问 573 对该地å—的访问
483 </text> 574 </text>
484 <check_box label="å…许公众访问" name="public_access"/> 575 <check_box label="å…许公众访问" name="public_access"/>
@@ -500,7 +591,7 @@
500 社团 591 社团
501 </combo_item> 592 </combo_item>
502 </combo_box> 593 </combo_box>
503 <spinner label="L$ 标价:" name="PriceSpin"/> 594 <spinner label="[CURRENCY] 标价:" name="PriceSpin"/>
504 <spinner label="访问时间:" name="HoursSpin"/> 595 <spinner label="访问时间:" name="HoursSpin"/>
505 <text label="总是å…许" name="AllowedText"> 596 <text label="总是å…许" name="AllowedText">
506 被å…许的居民 597 被å…许的居民
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_animation_list.xml b/linden/indra/newview/skins/default/xui/zh/floater_animation_list.xml
new file mode 100644
index 0000000..43f528a
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_animation_list.xml
@@ -0,0 +1,46 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="animation list"
4 title="动画列表">
5 <scroll_list
6 name="animation_list"
7 tool_tip="按Shift或Ctrlæ¥é€‰æ‹©å¤šä¸ªæ¡ç›®">
8 <!-- Icons relating to the avatar, currently: tracking, and marked -->
9 <column
10 name="Anim Name"
11 label="动画å称" />
12 <column
13 name="Animation UUID"
14 label="动画 UUID" />
15 <!--<column name="object_name" label="Distance" dynamicwidth="true"/>-->
16 <column
17 name="Source Object UUID"
18 label="æºç‰©ä½“ UUID" />
19 <column
20 name="Source Owner"
21 label="æºæ‹¥æœ‰è€…" />
22 <!-- What the avatar is doing: producing sounds, rezzing, particles, etc -->
23 </scroll_list>
24
25 <button
26 label="åœæ­¢é€‰ä¸­é¡¹"
27 name="Stop Selected"
28 tool_tip="åœæ­¢é€‰ä¸­çš„动画" />
29 <button
30 label="撤回选中项"
31 name="Revoke Selected"
32 tool_tip="撤回选中物体的动画许å¯" />
33 <button
34 label="åœæ­¢+撤回选中项"
35 name="Stop+Revoke Selected"
36 tool_tip="撤回选中物体的动画许å¯ï¼Œå¹¶ä¸”åœæ­¢é€‰ä¸­çš„动画" />
37 <button
38 label="打开拥有者档案"
39 name="Open Owner Profile"
40 tool_tip="打开选中物体拥有者的档案" />
41 <button
42 label="归还物体"
43 name="Return Object"
44 tool_tip="归还选中物体,如果你有相关土地æƒåŠ›çš„è¯" />
45
46</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_animation_preview.xml b/linden/indra/newview/skins/default/xui/zh/floater_animation_preview.xml
index 9e28bf6..4fa2db3 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_animation_preview.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_animation_preview.xml
@@ -59,7 +59,7 @@
59 </text> 59 </text>
60 <combo_box label="" name="emote_combo" tool_tip="控制在动画中的表情"> 60 <combo_box label="" name="emote_combo" tool_tip="控制在动画中的表情">
61 <combo_item name="[None]"> 61 <combo_item name="[None]">
62 [None] 62 [æ— ]
63 </combo_item> 63 </combo_item>
64 <combo_item name="Aaaaah"> 64 <combo_item name="Aaaaah">
65 å•Šå•Šå•Š 65 å•Šå•Šå•Š
@@ -147,7 +147,7 @@
147我们推è从Poser 4软件中导出的BVH文件 147我们推è从Poser 4软件中导出的BVH文件
148 </text> 148 </text>
149 <button label="å–消" name="cancel_btn"/> 149 <button label="å–消" name="cancel_btn"/>
150 <button label="上传(L$[AMOUNT])" name="ok_btn"/> 150 <button label="上传 ([UPLOADFEE])" name="ok_btn"/>
151 <string name="failed_to_initialize"> 151 <string name="failed_to_initialize">
152 åˆå§‹åŒ–动作失败。 152 åˆå§‹åŒ–动作失败。
153 </string> 153 </string>
@@ -161,4 +161,7 @@
161 161
162[STATUS] 162[STATUS]
163 </string> 163 </string>
164 <string name="in_world">
165 动画预览将在你的化身上播放。
166 </string>
164</floater> 167</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_ao.xml b/linden/indra/newview/skins/default/xui/zh/floater_ao.xml
new file mode 100644
index 0000000..df83b85
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_ao.xml
@@ -0,0 +1,150 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="geminifloater"
4 title="动画覆盖">
5
6 <text
7 name="Give inventory"
8 tool_tip="拖动 ZHAO II 记事å¡åˆ°è¿™é‡Œã€‚动画必须和记事å¡åœ¨åŒä¸€ä¸ªæ–‡ä»¶å¤¹ä¸­ã€‚">
9 拖动 ZHAO II 记事å¡åˆ°è¿™é‡Œ
10 </text>
11 <text
12 name="ao_nc_text"
13 tool_tip="">
14 ç›®å‰è®¾ç½®åˆ°: ITEM
15 </text>
16
17 <button
18 name="opencard"
19 label="打开记事å¡" />
20 <button
21 name="reloadcard"
22 label="啥信" />
23
24 <check_box
25 label="å¯ç”¨åŠ¨ç”»è¦†ç›–"
26 name="AOEnabled" />
27 <check_box
28 label="å¯ç”¨å姿覆盖"
29 name="AOSitsEnabled" />
30
31 <text
32 name="buttons_desc">
33 站立:
34 </text>
35 <combo_box
36 name="stands"
37 label="" />
38 <button
39 name="prevstand"
40 tool_tip="上一个站立动画"
41 label="&lt;&lt;" />
42 <button
43 name="nextstand"
44 tool_tip="下一个站立动画"
45 label="&gt;&gt;" />
46 <check_box
47 label="站立动画顺åºéšæœº"
48 name="AOStandRandomize" />
49 <check_box
50 label="第一人称视角中ç¦ç”¨ç«™ç«‹"
51 name="AONoStandsInMouselook" />
52 <check_box
53 label="显示动画覆盖工具æ "
54 name="ao_remote_checkbox" />
55 <spinner
56 name="standtime"
57 label="站立切æ¢æ—¶é—´:"
58 tool_tip="切æ¢ç«™ç«‹åŠ¨ç”»æ’­æ”¾çš„时间。" />
59
60 <button
61 name="newcard"
62 label="新建记事å¡æ¨¡æ¿" />
63
64 <button
65 label="展开 &gt;&gt;"
66 name="more_btn"
67 tool_tip="高级选项" />
68 <button
69 label="&lt;&lt; 折å "
70 name="less_btn"
71 tool_tip="高级选项" />
72
73 <tab_container
74 label="默认"
75 name="tabcontainer"
76 tab_min_width="50">
77 <panel
78 label="默认动画"
79 name="tabdefaultanims">
80
81 <text
82 name="textdefaultwalk">
83 èµ°è·¯:
84 </text>
85 <text
86 name="textdefaultrun">
87 è·‘æ­¥:
88 </text>
89 <text
90 name="textdefaultjump">
91 跳跃:
92 </text>
93 <text
94 name="textdefaultsit">
95 å下:
96 </text>
97 <text
98 name="textdefaultgsit">
99 å在地上:
100 </text>
101 <text
102 name="textdefaultcrouch">
103 蹲下:
104 </text>
105 <text
106 name="textdefaultcrouchwalk">
107 蹲走:
108 </text>
109 <text
110 name="textdefaultfall">
111 下è½:
112 </text>
113 <text
114 name="textdefaulthover">
115 浮空:
116 </text>
117 <combo_box
118 name="hovers"
119 label="" />
120 <text
121 name="textdefaultfly">
122 飞行:
123 </text>
124 <text
125 name="textdefaultflyslow">
126 慢速飞行:
127 </text>
128 <text
129 name="textdefaultflyup">
130 å‘上飞行:
131 </text>
132 <text
133 name="textdefaultflydown">
134 å‘下飞行:
135 </text>
136 <text
137 name="textdefaultland">
138 ç€é™†:
139 </text>
140 <text
141 name="textdefaultstandup">
142 起身:
143 </text>
144 <text
145 name="textdefaultprejump">
146 预跳跃:
147 </text>
148 </panel>
149</tab_container>
150</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_area_search.xml b/linden/indra/newview/skins/default/xui/zh/floater_area_search.xml
new file mode 100644
index 0000000..7a8a4d8
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_area_search.xml
@@ -0,0 +1,51 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="area search"
4 title="区域物体æœç´¢">
5 <text
6 name="name_label">
7 å称æœç´¢å­—符串:
8 </text>
9 <text
10 name="desc_label">
11 æè¿°æœç´¢å­—符串:
12 </text>
13
14 <text
15 name="owner_label">
16 拥有者æœç´¢å­—符串:
17 </text>
18 <text
19 name="group_label">
20 社团æœç´¢å­—符串:
21 </text>
22 <scroll_list
23 name="result_list">
24 <column
25 name="Name"
26 label="å称"
27 tool_tip="åŒå‡»ä»»ä½•é¡¹ç›®åœ¨ç‰©ä½“çš„ä½ç½®æ˜¾ç¤ºä¿¡æ ‡" />
28 <column
29 name="Description"
30 label="æè¿°"
31 tool_tip="åŒå‡»ä»»ä½•é¡¹ç›®åœ¨ç‰©ä½“çš„ä½ç½®æ˜¾ç¤ºä¿¡æ ‡" />
32 <column
33 name="Owner"
34 label="拥有者"
35 tool_tip="åŒå‡»ä»»ä½•é¡¹ç›®åœ¨ç‰©ä½“çš„ä½ç½®æ˜¾ç¤ºä¿¡æ ‡" />
36 <column
37 name="Group"
38 label="社团"
39 tool_tip="åŒå‡»ä»»ä½•é¡¹ç›®åœ¨ç‰©ä½“çš„ä½ç½®æ˜¾ç¤ºä¿¡æ ‡" />
40 </scroll_list>
41 <button
42 name="Refresh"
43 label="刷新" />
44 <button
45 name="Stop"
46 label="åœæ­¢" />
47 <text
48 name="counter">
49 已列出/等待中/总计
50 </text>
51</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_asset_browser.xml b/linden/indra/newview/skins/default/xui/zh/floater_asset_browser.xml
new file mode 100644
index 0000000..32292f5
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_asset_browser.xml
@@ -0,0 +1,18 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="asset browser"
4 title="æè´¨æµè§ˆå™¨">
5
6 <button
7 label="下一页 &gt;&gt;"
8 name="button next" />
9
10 <button
11 label="&lt;&lt; 上一页"
12 name="button previous" />
13
14 <button
15 label="刷新"
16 name="button refresh" />
17
18</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_autocorrect.xml b/linden/indra/newview/skins/default/xui/zh/floater_autocorrect.xml
new file mode 100644
index 0000000..f616163
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_autocorrect.xml
@@ -0,0 +1,72 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="em_ac_floater"
4 title="自动更正设置">
5 <check_box
6 font="SansSerif"
7 label="å¯ç”¨è‡ªåŠ¨æ›´æ­£"
8 name="em_ac_enable"
9 tool_tip="你必须选中这个框æ‰èƒ½ä½¿ç”¨è¿™äº›è®¾ç½®ï¼Œä»–将会æœç´¢ä½ çš„所有å¯å†™çš„文本输入,并用替æ¢é¡¹æ›¿æ¢ä»»ä½•æœç´¢æ¡ç›®" />
10 <button
11 name="em_ac_loadlist"
12 label="读å–列表.."
13 tool_tip="点击这里从文件导入之å‰å¯¼å‡ºçš„列表" />
14 <text
15 name="em_ac_notecard">
16
17 拖动è¦è¯»å–çš„
18 记事å¡åˆ°è¿™é‡Œã€‚
19 </text>
20 <text
21 font="SansSerif"
22 name="em_ac_text1">列表å称 列表项目</text>
23 <text
24 font="SansSerif"
25 name="em_ac_text_name">列表å称</text>
26 <text
27 font="SansSerif"
28 name="em_ac_text2">作者:</text>
29 <view_border
30 name="em_ac_box2" />
31 <text
32 font="SansSerif"
33 name="em_ac_text_author">作者å</text>
34 <check_box
35 font="SansSerif"
36 label="å¯ç”¨ï¼Œä¼˜å…ˆçº§:"
37 name="em_ac_list_enabled"
38 tool_tip="你是å¦å¸Œæœ›ä½¿ç”¨è¯¥åˆ—表" />
39 <spinner
40 label=""
41 name="em_ac_priority"
42 tool_tip="决定列表使用的顺åºã€‚高优先级的列表将在低优先级列表之å‰ç”¨æ¥æ›¿æ¢æ–‡å­—。" />
43 <check_box
44 label="显示æ示"
45 name="em_ac_list_show"
46 tool_tip="æ¯å½“一个å•è¯è¢«æ›¿æ¢æ—¶ï¼Œå¼¹å‡ºæ示" />
47 <check_box
48 label="匹é…整个å•è¯"
49 name="em_ac_list_style"
50 tool_tip="仅当整个å•è¯å®Œå…¨åŒ¹é…æ—¶æ‰è¿›è¡Œæ›¿æ¢ã€‚ä¸é€‰ä¸­çš„è¯ï¼Œå°†åœ¨å•è¯å†…部替æ¢æ–‡å­—。" />
51 <!--Only replace when matches a whole word. If unselected, will replace inside words.-->
52 <button
53 name="em_ac_deletelist"
54 label="删除列表"
55 tool_tip="这将删除整个å•è¯å’Œæ›¿æ¢é¡¹åˆ—表。此动作ä¸èƒ½æ’¤é”€ã€‚" />
56 <button
57 name="em_ac_exportlist"
58 label="导出列表"
59 tool_tip="这将ä¿å­˜ä½ çš„当å‰åˆ—表到文件供共享或编辑。" />
60 <button
61 name="em_ac_addentry"
62 label="添加æ¡ç›®" />
63 <button
64 name="em_ac_rementry"
65 label="移除æ¡ç›®" />
66 <text
67 name="em_ac_text3">已自动更正的è¯æ•°:</text>
68 <text
69 name="em_ac_stats">计数</text>
70
71
72</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml b/linden/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml
index d5dcc23..c99401e 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_avatar_picker.xml
@@ -24,7 +24,7 @@
24 </panel> 24 </panel>
25 </tab_container> 25 </tab_container>
26 <button label="选择" label_selected="选择" name="Select"/> 26 <button label="选择" label_selected="选择" name="Select"/>
27 <button label="å–消" label_selected="å–消" name="Cancel"/> 27 <button label="关闭" label_selected="关闭" name="Cancel"/>
28 <string name="not_found"> 28 <string name="not_found">
29 没有找到“[TEXT]†29 没有找到“[TEXT]â€
30 </string> 30 </string>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_build_options.xml b/linden/indra/newview/skins/default/xui/zh/floater_build_options.xml
index ece9941..5727508 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_build_options.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_build_options.xml
@@ -1,14 +1,84 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="build options floater" title="网格选项"> 2<floater
3 <spinner label="网格å•ä½ (ç±³)" name="GridResolution" /> 3 name="build options floater"
4 <spinner label="网格宽度 (米)" name="GridDrawSize" /> 4 title="高级建造选项">
5 <text name="text_box7"> 网格选项:</text>
6 <spinner
7 label="网格å•ä½ (ç±³):"
8 name="GridResolution" />
9 <spinner
10 label="网格范围 (米):"
11 name="GridDrawSize" />
5 <check_box 12 <check_box
6
7 label="å¯ç”¨å­å•ä½å¯¹é½" 13 label="å¯ç”¨å­å•ä½å¯¹é½"
8 name="GridSubUnit" /> 14 name="GridSubUnit" />
9 <check_box 15 <check_box
10
11 label="显示剖é¢" 16 label="显示剖é¢"
12 name="GridCrossSection" /> 17 name="GridCrossSection" />
13 <slider label="æ ¼å­ä¸é€æ˜Žåº¦" name="GridOpacity" /> 18 <slider
19 label="网格ä¸é€æ˜Žåº¦:"
20 name="GridOpacity"
21 value="0.7" />
22
23 <text
24 name="text_box3"> 物体大å°:</text>
25
26 <spinner
27 label="X 尺寸:"
28 name="X size" />
29 <spinner
30 label="Y 尺寸:"
31 name="Y size" />
32 <spinner
33 label="Z 尺寸:"
34 name="Z size" />
35
36 <text
37 name="text_box6">旋转中心:</text>
38 <spinner
39 label="X ä½ç½®:"
40 name="X pos" />
41 <spinner
42 label="Y ä½ç½®:"
43 name="Y pos" />
44 <spinner
45 label="Z ä½ç½®:"
46 name="Z pos" />
47 <check_box
48 label="值为百分比"
49 tool_tip="默认设置为百分比,æ¯ä¸ªè½´éƒ½è®¾ç½®ä¸º 50"
50 name="PivotPercToggle" />
51
52 <check_box
53 label="显示选中项轮廓"
54 name="BuildPrefsRenderHighlight_toggle" />
55 <check_box
56 label="é™åˆ¶é€‰æ‹©è·ç¦»"
57 tooltip=""
58 name="limit_select_dist_check" />
59 <check_box
60 label="显示轴于根元件ä½ç½®"
61 tool_tip="默认行为是在链接组的é‡å¿ƒä½ç½®æ˜¾ç¤ºè½´ã€‚选中该项将在根元件ä½ç½®æ˜¾ç¤ºè½´ã€‚"
62 name="BuildPrefsActualRoot_toggle" />
63 <check_box
64 label="以地å—社团创建物体"
65 tooltip="创建物体时使用地å—社团的身份 (如果å¯èƒ½)"
66 name="grouplandrez" />
67 <spinner
68 tool_tip="设置移动ã€æ—‹è½¬å’Œç¼©æ”¾çš„å°æ•°ç²¾åº¦"
69 label="物体编辑å°æ•°ä½:"
70 name="spinner_decimal" />
71
72 <button
73 label="应用"
74 name="btn_apply" />
75 <button
76 label="å–消"
77 name="btn_cancel" />
78 <button
79 label="确定"
80 name="btn_ok" />
81 <button
82 label="é‡ç½®ä¸ºé»˜è®¤å€¼"
83 name="btn_reset" />
14</floater> 84</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_busy.xml b/linden/indra/newview/skins/default/xui/zh/floater_busy.xml
new file mode 100644
index 0000000..eb5a9b2
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_busy.xml
@@ -0,0 +1,76 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="busy"
4 title="IM Response Options"
5 can_tear_off="false">
6
7 <check_box
8 label="自动回å¤æ”¶åˆ°çš„å³æ—¶æ¶ˆæ¯"
9 name="InstantMessageResponseEnabled" />
10 <check_box
11 label="Announce 收到的å³æ—¶æ¶ˆæ¯"
12 name="InstantMessageAnnounceIncoming" />
13 <check_box
14 label="å·èµ°ç„¦ç‚¹ (Steal focus)/自动回å¤é€šå‘Šåœ¨é¡¶ç«¯å¼¹å‡º"
15 name="InstantMessageAnnounceStealFocus" />
16 <check_box
17 label="自动回å¤éžå¥½å‹"
18 name="InstantMessageResponseFriends" />
19 <check_box
20 label="自动回å¤å±è”½çš„人"
21 name="InstantMessageResponseMuted" />
22 <check_box
23 label="自动回å¤ä»»ä½•äºº"
24 name="InstantMessageResponseAnyone" />
25 <check_box
26 label="对方一开始打字就自动回å¤"
27 name="InstantMessageShowOnTyping" />
28 <check_box
29 label="如果信æ¯è¢«è‡ªåŠ¨å›žå¤å°±ä¸è¦æ˜¾ç¤º"
30 name="InstantMessageShowResponded" />
31 <check_box
32 label="自动回å¤æ‰€æœ‰ä¿¡æ¯" name="InstantMessageResponseRepeat" />
33
34 <text
35 name="text_box1">
36 回å¤æ–‡å­—:
37 </text>
38 <text
39 name="text_box_a">
40 使用‘#f’代替收件人的å
41 </text>
42 <text
43 name="text_box_b">
44 使用‘#l’代替收件人的姓
45 </text>
46 <text
47 name="text_box_c">
48 使用‘#t’代替当å‰æ—¶é—´
49 </text>
50
51 <check_box
52 label="回å¤æ—¶åŒæ—¶é€å‡ºç‰©ä½“"
53 name="InstantMessageResponseItem" />
54
55 <text
56 name="Give inventory"
57 tool_tip="拖动到这里的库存æ¡ç›®å°†ä¼šè¢«åœ¨è‡ªåŠ¨å›žå¤æ—¶é€å‡ºã€‚">
58 拖动库存æ¡ç›®åˆ°è¿™é‡Œ
59 </text>
60
61 <text
62 name="im_give_disp_rect_txt"
63 tool_tip="">
64 ç›®å‰è®¾ç½®åˆ°: ITEM
65 </text>
66
67 <button
68 label="å–消"
69 name="btn_cancel"
70 tool_tip=""/>
71 <button
72 label="确定"
73 name="btn_ok"
74 tool_tip="" />
75
76</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_buy_contents.xml b/linden/indra/newview/skins/default/xui/zh/floater_buy_contents.xml
index 2ce722e..7f1d106 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_buy_contents.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_buy_contents.xml
@@ -4,7 +4,7 @@
4 [NAME] 包括: 4 [NAME] 包括:
5 </text> 5 </text>
6 <text name="buy_text"> 6 <text name="buy_text">
7 以 L$[AMOUNT] 从 [NAME] 处购买? 7 以 [CURRENCY][AMOUNT] 从 [NAME] 处购买?
8 </text> 8 </text>
9 <button label="å–消" label_selected="å–消" name="cancel_btn" /> 9 <button label="å–消" label_selected="å–消" name="cancel_btn" />
10 <button label="è´­ä¹°" label_selected="è´­ä¹°" name="buy_btn" /> 10 <button label="è´­ä¹°" label_selected="è´­ä¹°" name="buy_btn" />
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_buy_currency.xml b/linden/indra/newview/skins/default/xui/zh/floater_buy_currency.xml
index f4ce5b6..78fc763 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_buy_currency.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_buy_currency.xml
@@ -17,19 +17,19 @@
17 正在连接 LindeX... 17 正在连接 LindeX...
18 </text> 18 </text>
19 <text name="buy_action_unknown"> 19 <text name="buy_action_unknown">
20 在 LindeX è´§å¸äº¤æ¢æ‰€è´­ä¹° L$ 20 在 è´§å¸äº¤æ¢æ‰€è´­ä¹° [CURRENCY]
21 </text> 21 </text>
22 <text name="buy_action"> 22 <text name="buy_action">
23 [NAME] L$ [PRICE] 23 [NAME] [CURRENCY] [PRICE]
24 </text> 24 </text>
25 <text name="currency_action"> 25 <text name="currency_action">
26 è´­ä¹°L$ 26 è´­ä¹°[CURRENCY]
27 </text> 27 </text>
28 <line_editor name="currency_amt"> 28 <line_editor name="currency_amt">
29 1234 29 1234
30 </line_editor> 30 </line_editor>
31 <text name="currency_est"> 31 <text name="currency_est">
32 需è¦å¤§æ¦‚ US$ [USD] 32 需è¦å¤§æ¦‚ [REALCURRENCY] [USD]
33 </text> 33 </text>
34 <text name="getting_data"> 34 <text name="getting_data">
35 获å–æ•°æ®... 35 获å–æ•°æ®...
@@ -38,22 +38,22 @@
38 ä½ ç›®å‰æœ‰ 38 ä½ ç›®å‰æœ‰
39 </text> 39 </text>
40 <text name="balance_amount"> 40 <text name="balance_amount">
41 L$ [AMT] 41 [CURRENCY] [AMT]
42 </text> 42 </text>
43 <text name="buying_label"> 43 <text name="buying_label">
44 你正在购买 44 你正在购买
45 </text> 45 </text>
46 <text name="buying_amount"> 46 <text name="buying_amount">
47 L$ [AMT] 47 [CURRENCY] [AMT]
48 </text> 48 </text>
49 <text name="total_label"> 49 <text name="total_label">
50 ä½ çš„å¸æˆ·ç»“余是 50 ä½ çš„å¸æˆ·ç»“余是
51 </text> 51 </text>
52 <text name="total_amount"> 52 <text name="total_amount">
53 L$ [AMT] 53 [CURRENCY] [AMT]
54 </text> 54 </text>
55 <text name="purchase_warning_repurchase"> 55 <text name="purchase_warning_repurchase">
56 确认此次æ“作åªä¼šè´­ä¹°çŽ°é’žã€‚ 56 确认此次æ“作åªä¼šè´­ä¹°è´§å¸ã€‚
57你需è¦é‡è¯•è¯¥æ“作。 57你需è¦é‡è¯•è¯¥æ“作。
58 </text> 58 </text>
59 <text name="purchase_warning_notenough"> 59 <text name="purchase_warning_notenough">
@@ -62,6 +62,6 @@
62 <button label="å–消" name="cancel_btn"/> 62 <button label="å–消" name="cancel_btn"/>
63 <button label="è´­ä¹°" name="buy_btn"/> 63 <button label="è´­ä¹°" name="buy_btn"/>
64 <string name="buy_currency"> 64 <string name="buy_currency">
65 以大约 US$ [USD] 购买 L$ [LINDENS] 65 以大约 [REALCURRENCY] [USD] 购买 [CURRENCY] [LINDENS]
66 </string> 66 </string>
67</floater> 67</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_buy_land.xml b/linden/indra/newview/skins/default/xui/zh/floater_buy_land.xml
index 45c5832..2474ed3 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_buy_land.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_buy_land.xml
@@ -97,7 +97,7 @@
97 你有L$2,100. 97 你有L$2,100.
98 </text> 98 </text>
99 <text name="currency_action"> 99 <text name="currency_action">
100 è´­ä¹°é¢å¤–çš„ L$ 100 è´­ä¹°é¢å¤–çš„ [CURRENCY]
101 </text> 101 </text>
102 <line_editor name="currency_amt"> 102 <line_editor name="currency_amt">
103 1000 103 1000
@@ -186,10 +186,10 @@
186 你拥有[BUYER]平方米的土地。 186 你拥有[BUYER]平方米的土地。
187 </string> 187 </string>
188 <string name="pay_to_for_land"> 188 <string name="pay_to_for_land">
189 支付L$ [AMOUNT] 至 [SELLER] è´­ä¹°è¿™å—土地 189 支付[CURRENCY] [AMOUNT] 至 [SELLER] è´­ä¹°è¿™å—土地
190 </string> 190 </string>
191 <string name="buy_for_US"> 191 <string name="buy_for_US">
192 以大约US$[AMOUNT2]购买L$[AMOUNT], 192 以大约US$[AMOUNT2]购买[CURRENCY][AMOUNT],
193 </string> 193 </string>
194 <string name="parcel_meters"> 194 <string name="parcel_meters">
195 è¿™å—土地的é¢ç§¯ä¸º[AMOUNT]平方米。 195 è¿™å—土地的é¢ç§¯ä¸º[AMOUNT]平方米。
@@ -210,30 +210,31 @@
210 <string name="sold_without_objects"> 210 <string name="sold_without_objects">
211 物å“ä¸åŒ…括在其中 211 物å“ä¸åŒ…括在其中
212 </string> 212 </string>
213<!--Does not appear to be using [CURRENCY]-->
213 <string name="info_price_string"> 214 <string name="info_price_string">
214 L$[PRICE] 215 [CURRENCY][PRICE]
215(L$[PRICE_PER_SQM]/m²) 216([CURRENCY][PRICE_PER_SQM]/m²)
216[SOLD_WITH_OBJECTS] 217[SOLD_WITH_OBJECTS]
217 </string> 218 </string>
218 <string name="insufficient_land_credits"> 219 <string name="insufficient_land_credits">
219 在这次购买完æˆä¹‹å‰ï¼Œç¤¾å›¢[GROUP]将需è¦è¶³å¤Ÿçš„被贡献的土地所用的信用é¢åº¦ï¼Œæ¥è¦†ç›–这片土地。 220 在这次购买完æˆä¹‹å‰ï¼Œç¤¾å›¢[GROUP]将需è¦è¶³å¤Ÿçš„被贡献的土地所用的信用é¢åº¦ï¼Œæ¥è¦†ç›–这片土地。
220 </string> 221 </string>
221 <string name="have_enough_lindens"> 222 <string name="have_enough_lindens">
222 你有L$ [AMOUNT], 这些钱足够购买这å—土地。 223 你有[CURRENCY] [AMOUNT], 这些钱足够购买这å—土地。
223 </string> 224 </string>
224 <string name="not_enough_lindens"> 225 <string name="not_enough_lindens">
225 ä½ åªæœ‰L$ [AMOUNT], ä½ è¿˜éœ€è¦ L$ [AMOUNT2]。 226 ä½ åªæœ‰[CURRENCY] [AMOUNT], ä½ è¿˜éœ€è¦ [CURRENCY] [AMOUNT2]。
226 </string> 227 </string>
227 <string name="balance_left"> 228 <string name="balance_left">
228 此项消费åŽ, 你还会有L$ [AMOUNT]结余. 229 此项消费åŽ, 你还会有[CURRENCY] [AMOUNT]结余.
229 </string> 230 </string>
230 <string name="balance_needed"> 231 <string name="balance_needed">
231 你需è¦è´­ä¹°è‡³å°‘ L$ [AMOUNT]æ¥è´­ä¹°è¿™å—土地。 232 你需è¦è´­ä¹°è‡³å°‘ [CURRENCY] [AMOUNT]æ¥è´­ä¹°è¿™å—土地。
232 </string> 233 </string>
233 <string name="no_parcel_selected"> 234 <string name="no_parcel_selected">
234 (没有选择地å—) 235 (没有选择地å—)
235 </string> 236 </string>
236 <string name="buy_currency"> 237 <string name="buy_currency">
237 以大约 US$ [USD] 购买 L$ [LINDENS] 238 以大约 US$ [USD] 购买 [CURRENCY] [LINDENS]
238 </string> 239 </string>
239</floater> 240</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_buy_object.xml b/linden/indra/newview/skins/default/xui/zh/floater_buy_object.xml
index b7c977c..b32286c 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_buy_object.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_buy_object.xml
@@ -4,7 +4,7 @@
4 以åŠå®ƒçš„内容: 4 以åŠå®ƒçš„内容:
5 </text> 5 </text>
6 <text name="buy_text"> 6 <text name="buy_text">
7 以 L$[AMOUNT] 从 [NAME] 处购买? 7 以 [CURRENCY][AMOUNT] 从 [NAME] 处购买?
8 </text> 8 </text>
9 <button label="å–消" label_selected="å–消" name="cancel_btn" /> 9 <button label="å–消" label_selected="å–消" name="cancel_btn" />
10 <button label="è´­ä¹°" label_selected="è´­ä¹°" name="buy_btn" /> 10 <button label="è´­ä¹°" label_selected="è´­ä¹°" name="buy_btn" />
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_chat_history.xml b/linden/indra/newview/skins/default/xui/zh/floater_chat_history.xml
index 7dcd40d..2fdc1bf 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_chat_history.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_chat_history.xml
@@ -19,13 +19,13 @@
19 -- æ—¥å¿—ç»“æŸ -- 19 -- æ—¥å¿—ç»“æŸ --
20 </string> 20 </string>
21 <string name="ScriptQuestionCautionChatGranted"> 21 <string name="ScriptQuestionCautionChatGranted">
22 ‘[OBJECTNAME]’, 主人为 ‘[OWNERNAME]’ 的物体, ä½äºŽ [REGIONNAME] 地区 [REGIONPOS], 已被授予以下æƒåˆ©ï¼š [PERMISSIONS]。 22 ‘[OBJECTNAME]’, ‘[OWNERNAME]’ 所拥有的物体, ä½äºŽ [REGIONNAME] 地区 [REGIONPOS], 已被授予以下æƒåˆ©ï¼š [PERMISSIONS]。
23 </string> 23 </string>
24 <string name="ScriptQuestionCautionChatDenied"> 24 <string name="ScriptQuestionCautionChatDenied">
25 ‘[OBJECTNAME]’, 主人为 ‘[OWNERNAME]’ 的物体, ä½äºŽ [REGIONNAME] 地区 [REGIONPOS], 已被拒ç»ä»¥ä¸‹æƒåˆ©ï¼š [PERMISSIONS]。 25 ‘[OBJECTNAME]’, ‘[OWNERNAME]’ 所拥有的物体, ä½äºŽ [REGIONNAME] 地区 [REGIONPOS], 已被拒ç»ä»¥ä¸‹æƒåˆ©ï¼š [PERMISSIONS]。
26 </string> 26 </string>
27 <string name="ScriptTakeMoney"> 27 <string name="ScriptTakeMoney">
28 从您那里å–èµ°æž—ç™»å¸(L$) 28 从您那里å–èµ°è´§å¸
29 </string> 29 </string>
30 <string name="ActOnControlInputs"> 30 <string name="ActOnControlInputs">
31 对您的控制输入åšå‡ºå应 31 对您的控制输入åšå‡ºå应
@@ -65,6 +65,9 @@
65 </combo_item> 65 </combo_item>
66 </combo_box> 66 </combo_box>
67 <check_box label="显示å±è”½çš„文字" name="show mutes"/> 67 <check_box label="显示å±è”½çš„文字" name="show mutes"/>
68 <check_box
69 label="翻译èŠå¤© (ç”± Google 强力驱动)"
70 name="translate chat" />
68 <button label="&lt; &lt;" label_selected="&gt; &gt;" name="toggle_active_speakers_btn" tool_tip="显示在该å³æ—¶é€šä¿¡ä¼šè¯ä¸­æ´»åŠ¨çš„å‚与者。"/> 71 <button label="&lt; &lt;" label_selected="&gt; &gt;" name="toggle_active_speakers_btn" tool_tip="显示在该å³æ—¶é€šä¿¡ä¼šè¯ä¸­æ´»åŠ¨çš„å‚与者。"/>
69 <panel name="chat_panel"> 72 <panel name="chat_panel">
70 <string name="gesture_label"> 73 <string name="gesture_label">
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_chatterbox.xml b/linden/indra/newview/skins/default/xui/zh/floater_chatterbox.xml
index 6d30952..d8735d8 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_chatterbox.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_chatterbox.xml
@@ -1,3 +1,9 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<multi_floater name="floater_chatterbox" title="交æµ"> 2<multi_floater name="floater_chatterbox" title="交æµ">
3 <string name="unread_count_string_singular">
4 æ¡æœªè¯»æ¶ˆæ¯
5 </string>
6 <string name="unread_count_string_plural">
7 æ¡æœªè¯»æ¶ˆæ¯
8 </string>
3</multi_floater> \ No newline at end of file 9</multi_floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_chatterbox_vertical.xml b/linden/indra/newview/skins/default/xui/zh/floater_chatterbox_vertical.xml
new file mode 100644
index 0000000..c7a4a1e
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_chatterbox_vertical.xml
@@ -0,0 +1,11 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<multi_floater
3 name="floater_chatterbox"
4 title="交æµ">
5 <string name="unread_count_string_singular">
6 æ¡æœªè¯»æ¶ˆæ¯
7 </string>
8 <string name="unread_count_string_plural">
9 æ¡æœªè¯»æ¶ˆæ¯
10 </string>
11</multi_floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_choose_group.xml b/linden/indra/newview/skins/default/xui/zh/floater_choose_group.xml
index f43eddd..75d94e1 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_choose_group.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_choose_group.xml
@@ -5,4 +5,7 @@
5 </text> 5 </text>
6 <button label="OK" label_selected="OK" name="OK" /> 6 <button label="OK" label_selected="OK" name="OK" />
7 <button label="å–消" label_selected="å–消" name="Cancel" /> 7 <button label="å–消" label_selected="å–消" name="Cancel" />
8 <string name="none">
9 æ— 
10 </string>
8</floater> 11</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_command_line.xml b/linden/indra/newview/skins/default/xui/zh/floater_command_line.xml
new file mode 100644
index 0000000..97bb8b5
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_command_line.xml
@@ -0,0 +1,65 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="busy"
4 title="èŠå¤©æ å‘½ä»¤"
5 can_tear_off="false">
6 <text
7 name="loltxt2"> 区域内瞬间移动 (用法: 命令 x y z)</text>
8 <text
9 name="loltxt3"> çž¬é—´ç§»åŠ¨åˆ°åœ°é¢ (用法: 命令)</text>
10 <text
11 name="loltxt4"> 瞬间移动到高度 (用法: 命令 z)</text>
12 <text
13 name="loltxt5"> 瞬间移动回家 (用法: 命令)</text>
14 <text
15 name="loltxt6"> åˆ›å»ºä¸€ä¸ªå¹³å° (用法: 命令 0 - 30)</text>
16 <slider
17 name="CmdLineChatbarPlatformSize"
18 label="宽度"
19 tool_tip="您想è¦å¤šå¤§çš„å¹³å°ï¼Ÿ" />
20 <text
21 name="loltxt7"> 瞬间移动到其他区域 (用法: 命令 区域å称)</text>
22 <check_box
23 label="瞬间移动时ä¿æŒä½ç½®"
24 name="toggle" />
25 <text
26 name="loltxt8"> è®¡ç®—è¡¨è¾¾å¼ (用法: 命令 SIN(2+2))</text>
27 <text
28 name="add_autokorrect">添加自动更正è¯æ±‡(命令 列表|原è¯|æ›´æ­£)</text>
29 <text
30 name="loltxt9"> 改å˜æ绘è·ç¦» (用法: 命令 è·ç¦»)</text>
31 <text
32 name="loltxt10"> 瞬间移动到摄åƒæœºä½ç½® (用法: 命令)</text>
33 <text
34 name="loltxt11"> 获å–键值相对应的化身åå­— (用法: 命令 键值)</text>
35 <text
36 name="loltxt12"> 邀请化身瞬间移动 (用法: 命令 键值)</text>
37 <text
38 name="loltxt13"> 瞬间移动到化身ä½ç½® (用法: 命令 åå­—)</text>
39 <line_editor
40 tool_tip="å字大å°å†™ä¸é‡è¦ï¼Œåªé”®å…¥å字的一部分也å¯ä»¥ã€‚打开å°åœ°å›¾çš„è¯ï¼Œæ•ˆæžœæ›´ä½³ã€‚"
41 name="CmdLineChatbarTP2" />
42 <text
43 name="loltxt14"> 打开(on)/关闭(off)动作覆盖器 (用法: 命令 on/off)</text>
44 <text
45 name="loltxt15"> 清除èŠå¤©è®°å½• (用法: 命令)</text>
46 <line_editor
47 tool_tip="清除èŠå¤©è®°å½•é˜²æ­¢å¡æœºã€‚"
48 name="CmdLineChatbarClearChat" />
49
50 <text
51 name="set_media_url_text"> 设置媒体 URL(用法: 命令 url 类型)</text>
52 <line_editor
53 tool_tip="设置媒体æµä½ç½®åˆ°æŒ‡å®šçš„ URL 并播放"
54 name="CmdLineChatbarMedia" />
55 <text
56 name="set_music_url_text"> 设置音ä¹æµ URL (用法: 命令 url)</text>
57
58 <line_editor
59 tool_tip="设置音ä¹æµä½ç½®åˆ°æŒ‡å®šçš„ URL 并播放"
60 name="CmdLineChatbarMusic" />
61 <button
62 label="?"
63 name="Help_CmdLine"
64 tool_tip="点击这里获å–该页é¢è®¾ç½®çš„帮助。" />
65</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_customize.xml b/linden/indra/newview/skins/default/xui/zh/floater_customize.xml
index ef14187..d6d1384 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_customize.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_customize.xml
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<floater name="floater customize" title="外表"> 2<floater name="floater customize" title="外观">
3 <tab_container name="customize tab container"> 3 <tab_container name="customize tab container">
4 <panel label="身体部ä½" name="body_parts_placeholder"/> 4 <panel label="身体部ä½" name="body_parts_placeholder"/>
5 <panel label="体型" name="Shape"> 5 <panel label="体型" name="Shape">
@@ -465,8 +465,92 @@
465 <button label="å¦å­˜ä¸º..." label_selected="å¦å­˜ä¸º..." name="Save As"/> 465 <button label="å¦å­˜ä¸º..." label_selected="å¦å­˜ä¸º..." name="Save As"/>
466 <button label="æ¢å¤" label_selected="æ¢å¤" name="Revert"/> 466 <button label="æ¢å¤" label_selected="æ¢å¤" name="Revert"/>
467 </panel> 467 </panel>
468 <panel label="纹身" name="Tattoo">
469 <text length="1" name="title">
470 [DESC]
471 </text>
472 <text length="1" name="title_no_modify">
473 [DESC]: 无法修改
474 </text>
475 <text length="1" name="title_loading" type="string">
476 [DESC]: 载入中...
477 </text>
478 <text length="1" name="title_not_worn" type="string">
479 [DESC]: 没有被穿ç€
480 </text>
481 <text length="1" name="path" type="string">
482 ä½äºŽ[PATH]
483 </text>
484 <text length="1" name="not worn instructions" type="string">
485 è¦ä½¿ç”¨æ–°çš„纹身,需从你的库存中拖拽一个新的纹身至你的化身上。
486或者,你也å¯ä»¥ä»Žæ–°åˆ›å»ºä¸€ä¸ªï¼Œå¹¶ç©¿ä¸Šå®ƒã€‚
487 </text>
488 <text length="1" name="no modify instructions" type="string">
489 你没有修改这件æœé¥°çš„æƒåˆ©ã€‚
490 </text>
491 <text name="Item Action Label">
492 纹身:
493 </text>
494 <texture_picker label="头部纹身" name="Head Tattoo" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/>
495 <texture_picker label="上身的纹身" name="Upper Tattoo" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/>
496 <texture_picker label="下身纹身" name="Lower Tattoo" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/>
497 <color_swatch label="颜色" name="Color/Tint" tool_tip="点击这里æ¥æ‰“开色彩选择器"/>
498 <button label="创建新的纹身" label_selected="创建新的纹身" name="Create New"/>
499 <button label="脱掉" label_selected="脱掉" name="Take Off"/>
500 <button label="存储" label_selected="存储" name="Save"/>
501 <button label="å¦å­˜ä¸º..." label_selected="å¦å­˜ä¸º..." name="Save As"/>
502 <button label="æ¢å¤" label_selected="æ¢å¤" name="Revert"/>
503 </panel>
504 <panel label="é€æ˜Žåº¦" name="Alpha">
505 <text length="1" name="title">
506 [DESC]
507 </text>
508 <text length="1" name="title_no_modify">
509 [DESC]: 无法修改
510 </text>
511 <text length="1" name="title_loading" type="string">
512 [DESC]: 载入中...
513 </text>
514 <text length="1" name="title_not_worn" type="string">
515 [DESC]: 没有被穿ç€
516 </text>
517 <text length="1" name="path" type="string">
518 ä½äºŽ[PATH]
519 </text>
520 <text length="1" name="not worn instructions" type="string">
521 è¦ä½¿ç”¨æ–°çš„é€æ˜Žåº¦è’™æ¿ï¼Œéœ€ä»Žä½ çš„库存中拖拽一个新的é€æ˜Žåº¦è’™æ¿è‡³ä½ çš„化身上。
522或者,你也å¯ä»¥ä»Žæ–°åˆ›å»ºä¸€ä¸ªï¼Œå¹¶ç©¿ä¸Šå®ƒã€‚
523 </text>
524 <text length="1" name="no modify instructions" type="string">
525 你没有修改这件æœé¥°çš„æƒåˆ©ã€‚
526 </text>
527 <text name="Item Action Label">
528 é€æ˜Žåº¦è’™æ¿ï¼š
529 </text>
530 <texture_picker label="头部é€æ˜Žåº¦" name="Head Alpha" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/>
531 <texture_picker label="上身é€æ˜Žåº¦" name="Upper Alpha" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/>
532 <texture_picker label="下身é€æ˜Žåº¦" name="Lower Alpha" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/>
533 <texture_picker label="头å‘é€æ˜Žåº¦" name="Hair Alpha" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/>
534 <texture_picker label="眼ç›é€æ˜Žåº¦" name="Eye Alpha" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/>
535 <button label="创建新的é€æ˜Žåº¦è’™æ¿" label_selected="创建新的é€æ˜Žåº¦è’™æ¿" name="Create New"/>
536 <button label="脱掉" label_selected="脱掉" name="Take Off"/>
537 <button label="存储" label_selected="存储" name="Save"/>
538 <button label="å¦å­˜ä¸º..." label_selected="å¦å­˜ä¸º..." name="Save As"/>
539 <button label="æ¢å¤" label_selected="æ¢å¤" name="Revert"/>
540 </panel>
468 </tab_container> 541 </tab_container>
542 <text
543 name="AvatarHeightText">
544 化身高度:
545 </text>
546 <text name="includes_shoes">
547 (包括鞋)
548 </text>
549
550 <button name="Import" label="导入" />
551 <button name="Export" label="导出" />
552
553 <button label="ä¿å­˜ä¸ºè£…æŸ" label_selected="ä¿å­˜ä¸ºè£…æŸ" name="Make Outfit" />
469 <button label="å–消" label_selected="å–消" name="Cancel"/> 554 <button label="å–消" label_selected="å–消" name="Cancel"/>
470 <button label="确定" label_selected="确定" name="Ok"/> 555 <button label="确定" label_selected="确定" name="Ok"/>
471 <button label="Make Outfit..." label_selected="制作装æŸ..." name="Make Outfit"/>
472</floater> 556</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_dictionaries.xml b/linden/indra/newview/skins/default/xui/zh/floater_dictionaries.xml
new file mode 100644
index 0000000..0964d75
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_dictionaries.xml
@@ -0,0 +1,18 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="EmeraldIRC_dictionaries"
4 title="下载新è¯å…¸">
5 <text
6 name="EmDics_txt">
7以下是å¯ä»¥ä»Ž Imprudence 网站下载的附加è¯å…¸çš„列表。
8
9请选择您想下载的è¯å…¸ï¼Œç„¶åŽæŒ‰ä¸‹è½½æŒ‰é’®ã€‚</text>
10 <combo_box
11 allow_text_entry="false"
12 max_chars="255"
13 name="Emerald_combo_dics"
14 tool_tip="" />
15 <button
16 label="下载"
17 name="Emerald_dic_download" />
18</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_directory.xml b/linden/indra/newview/skins/default/xui/zh/floater_directory.xml
index 063676a..0850f58 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_directory.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_directory.xml
@@ -1,7 +1,67 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<floater name="directory" title="æœç´¢"> 2<floater name="directory" title="æœç´¢">
3 <tab_container name="Directory Tabs"> 3 <tab_container name="Directory Tabs">
4 <panel label="All" name="find_all_panel"> 4 <panel
5 label="全部"
6 name="find_all_old_panel">
7 <text name="find">
8 查找:
9 </text>
10 <button label="æœç´¢" label_selected="æœç´¢" name="Search" />
11 <string name="searching_text">
12 查找中……
13 </string>
14 <string name="not_found_text">
15 什么也没找到。
16 </string> <button
17 label="åŽé€€"
18 name="back_btn" />
19 <button
20 label="å‰è¿›"
21 name="forward_btn" />
22 <line_editor
23 label="æœç´¢"
24 name="search_editor"
25 tool_tip="æœç´¢ç¬¬äºŒäººç”Ÿ" />
26 <check_box label="PG 内容" name="incpg"/>
27 <check_box label="Mature 内容" name="incmature"/>
28 <check_box label="Adult 内容" name="incadult"/>
29 <scroll_list
30 fg_disable_color="1, 1, 1, 1"
31 name="results">
32 <column
33 label=""
34 name="icon" />
35 <column
36 label="å称"
37 name="name" />
38 <column
39 label="ä»·æ ¼"
40 name="price" />
41 <column
42 label="时间 (PT)"
43 name="date" />
44 <column
45 label="时间"
46 name="time" />
47 <column
48 label="æµé‡"
49 name="dwell" />
50 <column
51 label="é¢ç§¯"
52 name="area" />
53 <column
54 label="[CURRENCY]/m²"
55 name="per_meter" />
56 <column
57 label="在线"
58 name="online" />
59 <column
60 label="团员"
61 name="members" />
62 </scroll_list>
63 </panel>
64 <panel label="全部 (Web)" name="find_all_panel">
5 <string name="searching_text"> 65 <string name="searching_text">
6 查找中…… 66 查找中……
7 </string> 67 </string>
@@ -9,7 +69,7 @@
9 什么也没找到。 69 什么也没找到。
10 </string> 70 </string>
11 <text name="find"> 71 <text name="find">
12 寻找: 72 查找:
13 </text> 73 </text>
14 <line_editor label="æœç´¢" name="search_editor" tool_tip="æœç´¢ç¬¬äºŒäººç”Ÿ"/> 74 <line_editor label="æœç´¢" name="search_editor" tool_tip="æœç´¢ç¬¬äºŒäººç”Ÿ"/>
15 <button label="åŽé€€" name="back_btn"/> 75 <button label="åŽé€€" name="back_btn"/>
@@ -35,9 +95,9 @@
35 Wiki 95 Wiki
36 </combo_item> 96 </combo_item>
37 </combo_box> 97 </combo_box>
38 <check_box label="PG内容" name="incpg"/> 98 <check_box label="PG 内容" name="incpg"/>
39 <check_box label="Mature内容" name="incmature"/> 99 <check_box label="Mature 内容" name="incmature"/>
40 <check_box label="Adult内容" name="incadult"/> 100 <check_box label="Adult 内容" name="incadult"/>
41 <button label="?" label_selected="?" name="?"/> 101 <button label="?" label_selected="?" name="?"/>
42 <string name="loading_text"> 102 <string name="loading_text">
43 加载中... 103 加载中...
@@ -56,9 +116,9 @@
56 <text name="find"> 116 <text name="find">
57 寻找: 117 寻找:
58 </text> 118 </text>
59 <check_box label="PG内容" name="incpg"/> 119 <check_box label="PG 内容" name="incpg"/>
60 <check_box label="Mature内容" name="incmature"/> 120 <check_box label="Mature 内容" name="incmature"/>
61 <check_box label="Adult内容" name="incadult"/> 121 <check_box label="Adult 内容" name="incadult"/>
62 <combo_box name="Category"> 122 <combo_box name="Category">
63 <combo_item name="AnyCategory"> 123 <combo_item name="AnyCategory">
64 ä»»æ„分类 124 ä»»æ„分类
@@ -98,8 +158,8 @@
98 <scroll_list name="results"> 158 <scroll_list name="results">
99 <column label="" name="icon"/> 159 <column label="" name="icon"/>
100 <column label="" name="type"/> 160 <column label="" name="type"/>
101 <column label="Name" name="name"/> 161 <column label="å称" name="name"/>
102 <column label="Price" name="price"/> 162 <column label="ä»·æ ¼" name="price"/>
103 </scroll_list> 163 </scroll_list>
104 <button label="下一页 &gt;" label_selected="下一页 &gt;" name="Next &gt;"/> 164 <button label="下一页 &gt;" label_selected="下一页 &gt;" name="Next &gt;"/>
105 <button label="&lt; 上一页" label_selected="&lt; 上一页" name="&lt; Prev"/> 165 <button label="&lt; 上一页" label_selected="&lt; 上一页" name="&lt; Prev"/>
@@ -169,9 +229,9 @@
169 其他 229 其他
170 </combo_item> 230 </combo_item>
171 </combo_box> 231 </combo_box>
172 <check_box label="PG内容" name="incpg"/> 232 <check_box label="PG 内容" name="incpg"/>
173 <check_box label="Mature内容" name="incmature"/> 233 <check_box label="Mature 内容" name="incmature"/>
174 <check_box label="Adult内容" name="incadult"/> 234 <check_box label="Adult 内容" name="incadult"/>
175 <button label="æœç´¢" label_selected="æœç´¢" name="Search" tool_tip="æœç´¢"/> 235 <button label="æœç´¢" label_selected="æœç´¢" name="Search" tool_tip="æœç´¢"/>
176 <button label="删除" label_selected="删除" name="Delete"/> 236 <button label="删除" label_selected="删除" name="Delete"/>
177 <scroll_list name="results"> 237 <scroll_list name="results">
@@ -185,7 +245,7 @@
185 <button label="下一页 &gt;" label_selected="下一页 &gt;" name="Next &gt;"/> 245 <button label="下一页 &gt;" label_selected="下一页 &gt;" name="Next &gt;"/>
186 <button label="&lt; 上一页" label_selected="&lt; 上一页" name="&lt; Prev"/> 246 <button label="&lt; 上一页" label_selected="&lt; 上一页" name="&lt; Prev"/>
187 </panel> 247 </panel>
188 <panel label="热门地点" name="showcase_panel"> 248 <panel label="ç¹è‰²ä»‹ç»" name="showcase_panel">
189 <string name="searching_text"> 249 <string name="searching_text">
190 查找中…… 250 查找中……
191 </string> 251 </string>
@@ -209,15 +269,15 @@
209 什么也没找到。 269 什么也没找到。
210 </string> 270 </string>
211 <string name="land_help_text"> 271 <string name="land_help_text">
212 土地å¯ä»¥ç›´æŽ¥ç”¨æž—登元购买(L$),也å¯ä»¥ç”¨æž—登元或美元æ‹å–。 272 土地å¯ä»¥ç›´æŽ¥ç”¨ä¸–界中的货å¸è´­ä¹°ï¼Œä¹Ÿå¯ä»¥ç”¨ä¸–界中的货å¸æˆ–真实货å¸æ‹å–。
213è¦ç›´æŽ¥è´­ä¹°, 进入该地å—,然åŽç‚¹å‡»èœå•æ ä¸Šçš„地点å称。 273è¦ç›´æŽ¥è´­ä¹°, 进入该地å—,然åŽç‚¹å‡»èœå•æ ä¸Šçš„地点å称。
214 </string> 274 </string>
215 <text name="find"> 275 <text name="find">
216 寻找: 276 寻找:
217 </text> 277 </text>
218 <check_box label="PG内容" name="incpg"/> 278 <check_box label="PG 内容" name="incpg"/>
219 <check_box label="Mature内容" name="incmature"/> 279 <check_box label="Mature 内容" name="incmature"/>
220 <check_box label="Adult内容" name="incadult"/> 280 <check_box label="Adult 内容" name="incadult"/>
221 <combo_box bottom="-64" left="224" name="type" width="168"> 281 <combo_box bottom="-64" left="224" name="type" width="168">
222 <combo_item name="AllTypes"> 282 <combo_item name="AllTypes">
223 所有类型 283 所有类型
@@ -234,7 +294,7 @@
234 </combo_box> 294 </combo_box>
235 <check_box label="标价 &#8804; " name="pricecheck"/> 295 <check_box label="标价 &#8804; " name="pricecheck"/>
236 <text name="pricecheck_symbol"> 296 <text name="pricecheck_symbol">
237 L$ 297 [CURRENCY]
238 </text> 298 </text>
239 <check_box label="地区 &#8805; " name="areacheck"/> 299 <check_box label="地区 &#8805; " name="areacheck"/>
240 <text left="190" name="areacheck_symbol" width="75"> 300 <text left="190" name="areacheck_symbol" width="75">
@@ -248,9 +308,9 @@
248 <column label="" name="type"/> 308 <column label="" name="type"/>
249 <column label="å称" name="name"/> 309 <column label="å称" name="name"/>
250 <column label="类型" name="landtype"/> 310 <column label="类型" name="landtype"/>
251 <column label="L$ ä»·æ ¼" name="price"/> 311 <column label="[CURRENCY] ä»·æ ¼" name="price"/>
252 <column label="é¢ç§¯" name="area"/> 312 <column label="é¢ç§¯" name="area"/>
253 <column label="L$/m²" name="per_meter"/> 313 <column label="[CURRENCY]/m²" name="per_meter"/>
254 </scroll_list> 314 </scroll_list>
255 <button label="下一页&gt;" label_selected="下一页&gt;" name="Next &gt;"/> 315 <button label="下一页&gt;" label_selected="下一页&gt;" name="Next &gt;"/>
256 <button label="&lt; 之å‰" label_selected="&lt; 之å‰" name="&lt; Prev"/> 316 <button label="&lt; 之å‰" label_selected="&lt; 之å‰" name="&lt; Prev"/>
@@ -265,9 +325,9 @@
265 <text name="find"> 325 <text name="find">
266 查找: 326 查找:
267 </text> 327 </text>
268 <check_box label="PG内容" name="incpg"/> 328 <check_box label="PG 内容" name="incpg"/>
269 <check_box label="Mature内容" name="incmature"/> 329 <check_box label="Mature 内容" name="incmature"/>
270 <check_box label="Adult内容" name="incadult"/> 330 <check_box label="Adult 内容" name="incadult"/>
271 <combo_box name="Category"> 331 <combo_box name="Category">
272 <combo_item name="AnyCategory"> 332 <combo_item name="AnyCategory">
273 ä»»æ„分类 333 ä»»æ„分类
@@ -389,16 +449,41 @@
389 <line_editor label="查找" name="search_editor" tool_tip="æœç´¢ç¬¬äºŒäººç”Ÿ"/> 449 <line_editor label="查找" name="search_editor" tool_tip="æœç´¢ç¬¬äºŒäººç”Ÿ"/>
390 <button label="åŽé€€" name="back_btn"/> 450 <button label="åŽé€€" name="back_btn"/>
391 <button label="å‰è¿›" name="forward_btn"/> 451 <button label="å‰è¿›" name="forward_btn"/>
392 <button label="æœç´¢" label_selected="æœç´¢" name="search_btn"/> 452 <button label="æœç´¢" label_selected="æœç´¢" name="Search"/>
393 <check_box label="PG内容" name="incpg"/> 453 <check_box label="PG 内容" name="incpg"/>
394 <check_box label="Mature内容" name="incmature"/> 454 <check_box label="Mature 内容" name="incmature"/>
395 <check_box label="Adult内容" name="incadult"/> 455 <check_box label="Adult 内容" name="incadult"/>
456 name="incadult" />
457 <scroll_list
458 name="results">
459 <column
460 label=""
461 name="icon"
462 sort_ascending="false" />
463 <column
464 label=""
465 name="type" />
466 <column
467 label="å称"
468 name="name" />
469 <column
470 label="团员"
471 name="members"
472 sort_ascending="false" />
473 <column
474 label=""
475 name="score" />
476 </scroll_list>
396 <string name="loading_text"> 477 <string name="loading_text">
397 加载中... 478 加载中...
398 </string> 479 </string>
399 <string name="done_text"> 480 <string name="done_text">
400 å®Œæˆ 481 完æˆ
401 </string> 482 </string>
483
402 </panel> 484 </panel>
403 </tab_container> 485 </tab_container>
486 <check_box
487 name="save_results_check"
488 label="ä¿å­˜æœç´¢ç»“æžœ">
404</floater> 489</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_display_name.xml b/linden/indra/newview/skins/default/xui/zh/floater_display_name.xml
new file mode 100644
index 0000000..142f446
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_display_name.xml
@@ -0,0 +1,47 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="Display Name"
4 title="更改显示å称">
5 <text
6 name="info_text1"
7 wrap="true">
8 您给化身的å称å«åšæ˜¾ç¤ºå称。
9 </text>
10 <text
11 name="info_text2"
12 wrap="true">
13 您æ¯ä¸ªæ˜ŸæœŸå¯ä»¥æ›´æ”¹ä¸€æ¬¡ã€‚
14 </text>
15 <text
16 name="now_ok_text">
17 如果您愿æ„çš„è¯ï¼ŒçŽ°åœ¨å°±å¯ä»¥æ›´æ”¹å®ƒã€‚
18 </text>
19 <text
20 name="lockout_text"
21 visible="false">
22 您必须等到 [TIME] 之åŽæ‰èƒ½æ›´æ”¹å®ƒã€‚
23 </text>
24 <text
25 name="set_name_label">
26 新的显示å称:
27 </text>
28 <line_editor
29 name="display_name_editor" />
30 <text
31 name="name_confirm_label">
32 å†é”®å…¥ä¸€æ¬¡ä½ çš„æ–°å字以确认:
33 </text>
34 <line_editor
35 name="display_name_confirm" />
36 <button
37 name="save_btn"
38 label="ä¿å­˜"
39 tool_tip="ä¿å­˜æ‚¨çš„新显示å称" />
40 <button
41 name="reset_btn"
42 label="é‡ç½®"
43 tool_tip="将显示å称é‡ç½®ä¸ºç”¨æˆ·å" />
44 <button
45 name="cancel_btn"
46 label="å–消" />
47</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_god_tools.xml b/linden/indra/newview/skins/default/xui/zh/floater_god_tools.xml
index b5db758..bf16b7f 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_god_tools.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_god_tools.xml
@@ -38,7 +38,7 @@
38 地产ID: 38 地产ID:
39 </text> 39 </text>
40 <text name="parent id"> 40 <text name="parent id">
41 æ¯åŒºåŸŸID: 41 上级ID:
42 </text> 42 </text>
43 <line_editor name="parentestate" tool_tip="这是这å—区域的æ¯åŒºåŸŸã€‚" /> 43 <line_editor name="parentestate" tool_tip="这是这å—区域的æ¯åŒºåŸŸã€‚" />
44 <text name="Grid Pos: "> 44 <text name="Grid Pos: ">
@@ -53,7 +53,7 @@
53 å¸å•æ˜Žç»†: 53 å¸å•æ˜Žç»†:
54 </text> 54 </text>
55 <text name="land cost text"> 55 <text name="land cost text">
56 L$æ¯å¹³æ–¹ç±³: 56 [CURRENCY] æ¯å¹³æ–¹ç±³:
57 </text> 57 </text>
58 <button label="æ›´æ–°" label_selected="æ›´æ–°" name="Refresh" 58 <button label="æ›´æ–°" label_selected="æ›´æ–°" name="Refresh"
59 tool_tip="点击这里æ¥æ›´æ–°ä»¥ä¸Šä¿¡æ¯." /> 59 tool_tip="点击这里æ¥æ›´æ–°ä»¥ä¸Šä¿¡æ¯." />
@@ -88,12 +88,12 @@
88 label_selected="删除目标于他人土地上有脚本的物体" 88 label_selected="删除目标于他人土地上有脚本的物体"
89 name="Delete Target&apos;s Scripted Objects On Others Land" 89 name="Delete Target&apos;s Scripted Objects On Others Land"
90 tool_tip="删除他人土地上目标所有有脚本的物体。(ä¸å¯å¤åˆ¶)的物体将被返还。" /> 90 tool_tip="删除他人土地上目标所有有脚本的物体。(ä¸å¯å¤åˆ¶)的物体将被返还。" />
91 <button label="删除*任何*土地上选中的脚本东东" 91 <button label="删除目标于*任何*土地上选中的脚本物体"
92 label_selected="删除*任何*土地上选中的脚本东东" 92 label_selected="删除目标于*任何*土地上选中的脚本物体"
93 name="Delete Target&apos;s Scripted Objects On *Any* Land" 93 name="Delete Target&apos;s Scripted Objects On *Any* Land"
94 tool_tip="删除该区域中目标所有有脚本的物体。(ä¸å¯å¤åˆ¶)的物体将被返还。" /> 94 tool_tip="删除该区域中目标所有有脚本的物体。(ä¸å¯å¤åˆ¶)的物体将被返还。" />
95 <button label="删除*所有*选中的东东" 95 <button label="删除*所有*选中的物体"
96 label_selected="删除*所有*选中的东东" 96 label_selected="删除*所有*选中的物体"
97 name="Delete *ALL* Of Target&apos;s Objects" 97 name="Delete *ALL* Of Target&apos;s Objects"
98 tool_tip="删除该区域中目标所有的物体。(ä¸å¯å¤åˆ¶)的物体将被返还。" /> 98 tool_tip="删除该区域中目标所有的物体。(ä¸å¯å¤åˆ¶)的物体将被返还。" />
99 <button label="获å–首è¦ç¢°æ’žæº" label_selected="å–最首è¦ç¢°æ’žæº" 99 <button label="获å–首è¦ç¢°æ’žæº" label_selected="å–最首è¦ç¢°æ’žæº"
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_grid_default_selector.xml b/linden/indra/newview/skins/default/xui/zh/floater_grid_default_selector.xml
new file mode 100644
index 0000000..9921ad2
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_grid_default_selector.xml
@@ -0,0 +1,15 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="default_grid"
4 title="选择默认网格">
5 <text
6 name="select_label">
7 或者使用网格管ç†å™¨æ·»åŠ æ–°çš„网格
8 </text>
9 <button
10 label="å–消"
11 name="btn_cancel" />
12 <button
13 label="确定"
14 name="btn_ok" />
15</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_grid_manager.xml b/linden/indra/newview/skins/default/xui/zh/floater_grid_manager.xml
new file mode 100644
index 0000000..7342567
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_grid_manager.xml
@@ -0,0 +1,118 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="floater_login"
4 title="网格管ç†å™¨">
5
6 <!-- Grid Selector -->
7 <text
8 name="grid_selector_label">
9 选择网格:
10 </text>
11
12 <scroll_list
13 name="grid_selector">
14 <column
15 label="网格列表"
16 name="grid" />
17 </scroll_list>
18
19 <!-- Grid Selector Buttons -->
20 <button
21 label="添加新网格"
22 name="btn_add" />
23 <button
24 label="创建网格副本"
25 name="btn_copy" />
26 <button
27 label="删除网格"
28 name="btn_delete" />
29
30 <!-- Grid Details -->
31 <text
32 name="gridnick_text">
33 网格昵称 (唯一):
34 </text>
35 <line_editor
36 name="gridnick"
37 label="必须填写" />
38 <text
39 name="gridname_text">
40 网格å称:
41 </text>
42 <line_editor
43 name="gridname"
44 label="必须填写" />
45 <text
46 name="first_name_text">
47 å:
48 </text>
49 <text
50 name="username_text">
51 用户å:
52 </text>
53 <text
54 name="last_name_text">
55 姓:
56 </text>
57 <text
58 name="avatar_password_text">
59 密ç :
60 </text>
61 <text
62 name="loginuri_text">
63 登入 URI:
64 </text>
65 <line_editor
66 name="loginuri"
67 label="必须填写" />
68 <button
69 label="获å–网格信æ¯"
70 name="btn_gridinfo" />
71 <button
72 label="清除信æ¯"
73 name="btn_clear" />
74 <text
75 name="loginpage_text">
76 ç½‘æ ¼ä¿¡æ¯ URL:
77 </text>
78 <text
79 name="loginpage_text">
80 登入页é¢:
81 </text>
82 <text
83 name="helperuri_text">
84 辅助 URI:
85 </text>
86 <text
87 name="website_text">
88 网站:
89 </text>
90 <text
91 name="support_text">
92 支æŒ:
93 </text>
94 <text
95 name="register_text">
96 账户:
97 </text>
98 <text
99 name="password_text">
100 密ç :
101 </text>
102 <text
103 name="search_text">
104 æœç´¢ç½‘页:
105 </text>
106 <button
107 label="应用"
108 label_selected="应用"
109 name="btn_apply" />
110 <button
111 label="å–消"
112 label_selected="å–消"
113 name="btn_cancel" />
114 <button
115 label="确定"
116 label_selected="确定"
117 name="btn_ok" />
118</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_group_titles.xml b/linden/indra/newview/skins/default/xui/zh/floater_group_titles.xml
new file mode 100644
index 0000000..5c24f84
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_group_titles.xml
@@ -0,0 +1,19 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="goup titles"
4 title="社团头衔">
5 <scroll_list
6 name="titles_list">
7 <column
8 name="title"
9 label="头衔" />
10 <column
11 name="group_name"
12 label="社团" />
13 <!--éšè—字段,用于存储 UUID,请ä¿æŒå®½åº¦ä¸º 0-->
14 </scroll_list>
15 <button
16 name="activate"
17 label="激活"
18 tool_tip="激活选中的社团头衔" />
19</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_image_preview.xml b/linden/indra/newview/skins/default/xui/zh/floater_image_preview.xml
index d3bf113..02a76a6 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_image_preview.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_image_preview.xml
@@ -50,6 +50,10 @@
50 <check_box 50 <check_box
51 label="使用无æŸåŽ‹ç¼©" 51 label="使用无æŸåŽ‹ç¼©"
52 name="lossless_check" /> 52 name="lossless_check" />
53 <check_box
54 label="ä¸´æ—¶å›¾åƒ (å…è´¹)"
55 name="temp_check"
56 tooltip="设置资产为临时的,这æ„味ç€å®ƒæ˜¯å…费的,但是作为代价,仅在一段时间内有效,之åŽå®ƒå°±æ¶ˆå¤±äº†ã€‚" />
53 <button label="å–消" name="cancel_btn" /> 57 <button label="å–消" name="cancel_btn" />
54 <button label="上传(L$[AMOUNT])" name="ok_btn" /> 58 <button label="上传 ([UPLOADFEE])" name="ok_btn" />
55</floater> 59</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_inspect.xml b/linden/indra/newview/skins/default/xui/zh/floater_inspect.xml
index fff47d5..5288300 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_inspect.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_inspect.xml
@@ -4,11 +4,19 @@
4 tool_tip="从这份列表中选择一项物体æ¥åœ¨ä¸–界中çªå‡ºæ˜¾ç¤ºå®ƒ"> 4 tool_tip="从这份列表中选择一项物体æ¥åœ¨ä¸–界中çªå‡ºæ˜¾ç¤ºå®ƒ">
5 <column label="物体å称" name="object_name" /> 5 <column label="物体å称" name="object_name" />
6 <column label="主人åå­—" name="owner_name" /> 6 <column label="主人åå­—" name="owner_name" />
7 <column label="上个拥有者åå­—" name="last_owner_name" />
7 <column label="创建者åå­—" name="creator_name" /> 8 <column label="创建者åå­—" name="creator_name" />
9 <column label="é¢" name="face_num" width="48"/>
10 <column label="顶点" name="vertex_num" width="48" />
11 <column label="脚本" name="script_num" width="48" />
12 <column label="库存总计" name="inv_num" />
8 <column label="创建时间" name="creation_date" /> 13 <column label="创建时间" name="creation_date" />
9 </scroll_list> 14 </scroll_list>
10 <button label="查看主人档案..." name="button owner" 15 <button label="查看主人档案..." name="button owner"
11 tool_tip="查看çªå‡ºæ˜¾ç¤ºç‰©ä½“的主人的档案" /> 16 tool_tip="查看çªå‡ºæ˜¾ç¤ºç‰©ä½“的主人的档案" />
17 <button
18 label="查看上个拥有者档案" name="button_last_owner"
19 tool_tip="查看çªå‡ºæ˜¾ç¤ºç‰©ä½“的创建者的档案" />
12 <button label="查看创建者档案..." name="button creator" 20 <button label="查看创建者档案..." name="button creator"
13 tool_tip="查看çªå‡ºæ˜¾ç¤ºç‰©ä½“的创建者的档案" /> 21 tool_tip="查看çªå‡ºæ˜¾ç¤ºç‰©ä½“的创建者的档案" />
14</floater> 22</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_instant_message.xml b/linden/indra/newview/skins/default/xui/zh/floater_instant_message.xml
index a59000c..14af4f9 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_instant_message.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_instant_message.xml
@@ -33,7 +33,27 @@
33 <string name="add_friend_string"> 33 <string name="add_friend_string">
34 æ·»åŠ ä¸ºå¥½å‹ 34 添加为好å‹
35 </string> 35 </string>
36 <flyout_button label="档案..." name="profile_callee_btn"/> 36
37
38 <string
39 name="add_friend_string">
40 添加好å‹
41 </string>
42 <flyout_button label="档案..." name="profile_callee_btn" >
43 <flyout_button_item name="history_entry">
44 查看对è¯åŽ†å²
45 </flyout_button_item>
46 <flyout_button_item name="pay_entry">
47 付款
48 </flyout_button_item>
49 <flyout_button_item name="teleport_entry">
50 邀请瞬间移动
51 </flyout_button_item>
52 </flyout_button>
53 <text
54 name="inventory_send">
55 拖动库存æ¡ç›®åˆ°è¿™é‡Œé€å‡º
56 </text>
37 <button label="呼å«" name="start_call_btn"/> 57 <button label="呼å«" name="start_call_btn"/>
38 <button label="结æŸå‘¼å«" name="end_call_btn" pad_right="10" visible="false"/> 58 <button label="结æŸå‘¼å«" name="end_call_btn" pad_right="10" visible="false"/>
39 <panel name="speaker_controls"> 59 <panel name="speaker_controls">
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_instant_message_group.xml b/linden/indra/newview/skins/default/xui/zh/floater_instant_message_group.xml
index 2171bd1..1c35524 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_instant_message_group.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_instant_message_group.xml
@@ -54,6 +54,13 @@
54 <button 54 <button
55 label="社团信æ¯" 55 label="社团信æ¯"
56 name="group_info_btn" /> 56 name="group_info_btn" />
57 <flyout_button
58 label="社团信æ¯"
59 name="group_info_btn">
60 <flyout_button_item name="history_entry">
61 查看èŠå¤©åŽ†å²
62 </flyout_button_item>
63 </flyout_button>
57 <button 64 <button
58 image_overlay_alignment="left" 65 image_overlay_alignment="left"
59 label="加入通è¯" 66 label="加入通è¯"
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_inventory.xml b/linden/indra/newview/skins/default/xui/zh/floater_inventory.xml
index 1f90496..65f2463 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_inventory.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_inventory.xml
@@ -2,9 +2,51 @@
2<floater name="Inventory" title="库存"> 2<floater name="Inventory" title="库存">
3 <search_editor label="在这里输入è¦æŸ¥æ‰¾çš„物体" name="inventory search editor"/> 3 <search_editor label="在这里输入è¦æŸ¥æ‰¾çš„物体" name="inventory search editor"/>
4 <tab_container name="inventory filter tabs"> 4 <tab_container name="inventory filter tabs">
5 <inventory_panel label="所有物体" name="All Items"/> 5 <inventory_panel label="所有物å“" name="All Items"/>
6 <inventory_panel label="最近使用的物体" name="Recent Items"/> 6 <inventory_panel label="最近使用的物å“" name="Recent Items"/>
7 <inventory_panel label="ç©¿ç€çš„物å“" name="Worn Items" />
7 </tab_container> 8 </tab_container>
9 <text
10 name="group_titles_textbox">
11 快速过滤:
12 </text>
13
14 <!-- Inventory Type Filter Labels -->
15 <string name="filter_type_all">所有类型</string>
16 <string name="filter_type_animation">动画</string>
17 <string name="filter_type_bodypart">身体部ä½</string>
18 <string name="filter_type_callingcard">å片</string>
19 <string name="filter_type_clothing">衣物</string>
20 <string name="filter_type_gesture">动作</string>
21 <string name="filter_type_landmark">地标</string>
22 <string name="filter_type_notecard">记事å¡</string>
23 <string name="filter_type_object">物体</string>
24 <string name="filter_type_script">脚本</string>
25 <string name="filter_type_sound">声音</string>
26 <string name="filter_type_texture">æè´¨</string>
27 <string name="filter_type_snapshot">å¿«ç…§</string>
28 <string name="filter_type_custom">自定义...</string>
29
30 <combo_box
31 name="Quick Filter"
32 label="快速过滤">
33
34 <combo_item name="filter_type_all">所有类型</combo_item>
35 <combo_item name="filter_type_animation">动画</combo_item>
36 <combo_item name="filter_type_bodypart">身体部ä½</combo_item>
37 <combo_item name="filter_type_callingcard">å片</combo_item>
38 <combo_item name="filter_type_clothing">衣物</combo_item>
39 <combo_item name="filter_type_gesture">动作</combo_item>
40 <combo_item name="filter_type_landmark">地标</combo_item>
41 <combo_item name="filter_type_notecard">记事å¡</combo_item>
42 <combo_item name="filter_type_object">物体</combo_item>
43 <combo_item name="filter_type_script">脚本</combo_item>
44 <combo_item name="filter_type_sound">声音</combo_item>
45 <combo_item name="filter_type_texture">æè´¨</combo_item>
46 <combo_item name="filter_type_snapshot">å¿«ç…§</combo_item>
47 <combo_item name="filter_type_custom">自定义...</combo_item>
48
49 </combo_box>
8 <menu_bar name="Inventory Menu"> 50 <menu_bar name="Inventory Menu">
9 <menu label="文件 " name="File"> 51 <menu label="文件 " name="File">
10 <menu_item_call label="打开" name="Open"/> 52 <menu_item_call label="打开" name="Open"/>
@@ -19,7 +61,7 @@
19 <menu_item_call label="新的脚本" name="New Script"/> 61 <menu_item_call label="新的脚本" name="New Script"/>
20 <menu_item_call label="新的记事å¡" name="New Note"/> 62 <menu_item_call label="新的记事å¡" name="New Note"/>
21 <menu_item_call label="新的动作" name="New Gesture"/> 63 <menu_item_call label="新的动作" name="New Gesture"/>
22 <menu name="New Clothes"> 64 <menu name="New Clothes" label="新建衣物">
23 <menu_item_call label="新建衬衫" name="New Shirt"/> 65 <menu_item_call label="新建衬衫" name="New Shirt"/>
24 <menu_item_call label="新建裤å­" name="New Pants"/> 66 <menu_item_call label="新建裤å­" name="New Pants"/>
25 <menu_item_call label="新建鞋å­" name="New Shoes"/> 67 <menu_item_call label="新建鞋å­" name="New Shoes"/>
@@ -27,10 +69,12 @@
27 <menu_item_call label="新建夹克" name="New Jacket"/> 69 <menu_item_call label="新建夹克" name="New Jacket"/>
28 <menu_item_call label="新建裙å­" name="New Skirt"/> 70 <menu_item_call label="新建裙å­" name="New Skirt"/>
29 <menu_item_call label="新建手套" name="New Gloves"/> 71 <menu_item_call label="新建手套" name="New Gloves"/>
30 <menu_item_call label="新建汗衫" name="New Undershirt"/> 72 <menu_item_call label="新建内衣" name="New Undershirt"/>
31 <menu_item_call label="æ–°è§å†…è¡£" name="New Underpants"/> 73 <menu_item_call label="新建内裤" name="New Underpants"/>
74 <menu_item_call label="新建纹身" name="New Tattoo" />
75 <menu_item_call label="新建é€æ˜Žåº¦è’™æ¿" name="New Alpha" />
32 </menu> 76 </menu>
33 <menu name="New Body Parts"> 77 <menu name="New Body Parts" label="新建身体部ä½">
34 <menu_item_call label="新建外形" name="New Shape"/> 78 <menu_item_call label="新建外形" name="New Shape"/>
35 <menu_item_call label="新建皮肤" name="New Skin"/> 79 <menu_item_call label="新建皮肤" name="New Skin"/>
36 <menu_item_call label="新建头å‘" name="New Hair"/> 80 <menu_item_call label="新建头å‘" name="New Hair"/>
@@ -43,5 +87,11 @@
43 <menu_item_check label="文件夹总是按å称排列" name="Folders Always By Name"/> 87 <menu_item_check label="文件夹总是按å称排列" name="Folders Always By Name"/>
44 <menu_item_check label="系统文件夹置顶" name="System Folders To Top"/> 88 <menu_item_check label="系统文件夹置顶" name="System Folders To Top"/>
45 </menu> 89 </menu>
90 <menu label="查找选项" name="Search">
91 <menu_item_check label="按å称" name="By Name" />
92 <menu_item_check label="按创建者" name="By Creator" />
93 <menu_item_check label="按æè¿°" name="By Description" />
94 <menu_item_check label="按全部" name="By All" />
95 </menu>
46 </menu_bar> 96 </menu_bar>
47</floater> 97</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml b/linden/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml
index 34ccc79..b6c9a6c 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_inventory_item_properties.xml
@@ -68,7 +68,7 @@
68 </radio_item> 68 </radio_item>
69 </radio_group> 69 </radio_group>
70 <text name="TextPrice"> 70 <text name="TextPrice">
71 价格:L$ 71 价格:[CURRENCY]
72 </text> 72 </text>
73 <string name="unknown"> 73 <string name="unknown">
74 (未知) 74 (未知)
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml b/linden/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml
index 95a0808..089de84 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml
@@ -2,6 +2,7 @@
2<floater name="Inventory Finder" title="inventory_recent_items"> 2<floater name="Inventory Finder" title="inventory_recent_items">
3 <check_box label="动画" name="check_animation" /> 3 <check_box label="动画" name="check_animation" />
4 <check_box label="通è¯å¡" name="check_calling_card" /> 4 <check_box label="通è¯å¡" name="check_calling_card" />
5 <check_box label="身体部ä½" name="check_bodypart" />
5 <check_box label="衣物" name="check_clothing" /> 6 <check_box label="衣物" name="check_clothing" />
6 <check_box label="动作" name="check_gesture" /> 7 <check_box label="动作" name="check_gesture" />
7 <check_box label="地标" name="check_landmark" /> 8 <check_box label="地标" name="check_landmark" />
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_joystick.xml b/linden/indra/newview/skins/default/xui/zh/floater_joystick.xml
index de512aa..7db5b59 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_joystick.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_joystick.xml
@@ -1,5 +1,205 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="Joystick" title="Joystick Configuration"> 2<floater
3 <button label="确定" label_selected="确定" name="ok_btn"/> 3 name="Joystick"
4 <button label="å–消" label_selected="å–消" name="cancel_btn"/> 4 title="游æˆæŽ§åˆ¶å™¨è®¾ç½®">
5</floater> 5
6 <check_box
7 name="enable_joystick">å¯ç”¨æ‰‹æŸ„:</check_box>
8 <check_box
9 name="auto_enable_joystick">自动å¯ç”¨æ‰‹æŸ„</check_box>
10 <spinner
11 name="JoystickAxis1"
12 label="X 轴映射" />
13 <spinner
14 name="JoystickAxis2"
15 label="Y 轴映射" />
16 <spinner
17 name="JoystickAxis0"
18 label="Z 轴映射" />
19
20 <spinner
21 name="JoystickAxis4"
22 label="俯仰映射" />
23 <spinner
24 name="JoystickAxis5"
25 label="å航映射" />
26 <spinner
27 name="JoystickAxis3"
28 label="滚转映射" />
29
30 <spinner
31 name="JoystickAxis6"
32 label="缩放映射" />
33 <check_box
34 label="直接缩放"
35 name="ZoomDirect" />
36 <check_box
37 label="三维光标"
38 name="Cursor3D" />
39 <check_box
40 label="自动平衡"
41 name="AutoLeveling" />
42
43 <text
44 name="Control Modes:">
45 控制模å¼:
46 </text>
47
48 <check_box
49 name="JoystickAvatarEnabled">化身</check_box>
50 <check_box
51 name="JoystickBuildEnabled">建造</check_box>
52 <check_box
53 name="JoystickFlycamEnabled">æµè§ˆ</check_box>
54
55 <text
56 name="XScale">X Scale</text>
57 <spinner
58 name="AvatarAxisScale1" />
59 <spinner
60 name="BuildAxisScale1" />
61 <spinner
62 name="FlycamAxisScale1" />
63
64 <text
65 name="YScale">Y Scale</text>
66 <spinner
67 name="AvatarAxisScale2" />
68 <spinner
69 name="BuildAxisScale2" />
70 <spinner
71 name="FlycamAxisScale2" />
72
73 <text
74 name="ZScale">Z Scale</text>
75 <spinner
76 name="AvatarAxisScale0" />
77 <spinner
78 name="BuildAxisScale0" />
79 <spinner
80 name="FlycamAxisScale0" />
81
82 <text
83 name="PitchScale">Pitch Scale</text>
84 <spinner
85 name="AvatarAxisScale4" />
86 <spinner
87 name="BuildAxisScale4" />
88 <spinner
89 name="FlycamAxisScale4" />
90
91 <text
92 name="YawScale">Yaw Scale</text>
93 <spinner
94 name="AvatarAxisScale5" />
95 <spinner
96 name="BuildAxisScale5" />
97 <spinner
98 name="FlycamAxisScale5" />
99
100 <text
101 name="RollScale">Roll Scale</text>
102 <spinner
103 name="BuildAxisScale3" />
104 <spinner
105 name="FlycamAxisScale3" />
106
107
108 <text
109 name="XDeadZone">X Dead Zone</text>
110 <spinner
111 name="AvatarAxisDeadZone1" />
112 <spinner
113 name="BuildAxisDeadZone1" />
114 <spinner
115 name="FlycamAxisDeadZone1" />
116
117 <text
118 name="YDeadZone">Y Dead Zone</text>
119 <spinner
120 name="AvatarAxisDeadZone2" />
121 <spinner
122 name="BuildAxisDeadZone2" />
123 <spinner
124 name="FlycamAxisDeadZone2" />
125
126 <text
127 name="ZDeadZone">Z Dead Zone</text>
128 <spinner
129 name="AvatarAxisDeadZone0" />
130 <spinner
131 name="BuildAxisDeadZone0" />
132 <spinner
133 name="FlycamAxisDeadZone0" />
134
135 <text
136 name="PitchDeadZone">Pitch Dead Zone</text>
137 <spinner
138 name="AvatarAxisDeadZone4" />
139 <spinner
140 name="BuildAxisDeadZone4" />
141 <spinner
142 name="FlycamAxisDeadZone4" />
143
144 <text
145 name="YawDeadZone">Yaw Dead Zone</text>
146 <spinner
147 name="AvatarAxisDeadZone5" />
148 <spinner
149 name="BuildAxisDeadZone5" />
150 <spinner
151 name="FlycamAxisDeadZone5" />
152
153 <text
154 name="RollDeadZone">Roll Dead Zone</text>
155 <spinner
156 name="BuildAxisDeadZone3" />
157 <spinner
158 name="FlycamAxisDeadZone3" />
159
160 <text
161 name="Feathering">Feathering</text>
162 <slider
163 label=""
164 name="AvatarFeathering"
165 value="0.7" />
166 <slider
167 label=""
168 name="BuildFeathering"
169 value="0.7" />
170 <slider
171 label=""
172 name="FlycamFeathering"
173 value="0.7" />
174
175 <text
176 name="ZoomScale2">Zoom Scale</text>
177 <spinner
178 name="FlycamAxisScale6"
179 label="" />
180 <text
181 name="ZoomDeadZone">Zoom Dead Zone</text>
182 <spinner
183 name="FlycamAxisDeadZone6"
184 label="" />
185
186 <button
187 label="SpaceNavigator 默认值"
188 name="SpaceNavigatorDefaults" />
189
190 <button
191 label="确定"
192 label_selected="确定"
193 name="ok_btn" />
194 <button
195 label="å–消"
196 label_selected="å–消"
197 name="cancel_btn" />
198
199 <string
200 name="JoystickMonitor">游æˆæŽ§åˆ¶å™¨ç›‘视器</string>
201 <string
202 name="Axis">è½´ [NUM]</string>
203 <string
204 name="NoDevice">没有检测到设备</string>
205</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_local_asset_browse.xml b/linden/indra/newview/skins/default/xui/zh/floater_local_asset_browse.xml
new file mode 100644
index 0000000..45f2ea1
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_local_asset_browse.xml
@@ -0,0 +1,98 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<!-- Local Asset Browser: xui --><!-- floater definition start --><floater
3 name="local_bitmap_browser_floater"
4 title="本地æ质属性">
5
6 <button
7 name="add_btn"
8 label="添加" />
9 <button
10 name="del_btn"
11 label="移除" />
12 <button
13 name="upload_btn"
14 label="ä¸Šä¼ å›¾åƒ ([UPLOADFEE])..." />
15 <column
16 name="bitmap_name"
17 label="å称" />
18 <column
19 name="bitmap_uuid"
20 label="UUID" />
21 </scroll_list>
22 <text
23 name="path_caption_text"
24 visible="true">
25 本地路径:
26 </text>
27 <text
28 name="uuid_caption_text"
29 visible="true">
30 本地 UUID:
31 </text>
32
33 <texture_picker
34 label="æè´¨"
35 name="texture_view"/>
36
37 <check_box
38 label="ä¿æŒæ›´æ–°"
39 name="keep_updating_checkbox"
40 tool_tip="å¯ç”¨å®šæ—¶æ£€æŸ¥ç¡¬ç›˜ä¸Šçš„ä½å›¾æ˜¯å¦å·²æ›´æ–°"/>
41
42 <combo_box
43 visible="true"
44 allow_text_entry="false"
45 max_chars="20"
46 name="type_combobox">
47
48 <combo_item
49 name="type_texture"
50 value="type_texture">
51 æè´¨
52 </combo_item>
53
54 <combo_item
55 name="type_sculptie"
56 value="type_sculptie">
57 雕塑æè´¨
58 </combo_item>
59
60 <combo_item
61 name="type_layer"
62 value="type_layer">
63 衣物
64 </combo_item>
65
66 </combo_box>
67
68 <text
69 name="time_caption_text"
70 visible="true">
71 时间:
72 </text>
73
74 <text
75 name="time_text"
76 visible="true">
77 (date here)
78 </text>
79
80 <text
81 name="link_caption_text"
82 visible="true">
83 链接:
84 </text>
85
86 <text
87 name="link_text"
88 visible="true">
89 (link status)
90 </text>
91
92 <text
93 name="name_caption_text"
94 visible="true">
95 å称:
96 </text>
97
98</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_media_browser.xml b/linden/indra/newview/skins/default/xui/zh/floater_media_browser.xml
index d10c3e0..1ae48ea 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_media_browser.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_media_browser.xml
@@ -10,18 +10,33 @@
10 <layout_panel 10 <layout_panel
11 name="nav_controls"> 11 name="nav_controls">
12 <button 12 <button
13 label="åŽé€€"
14 name="back" /> 13 name="back" />
15 <button 14 <button
16 label="å‰è¿›"
17 name="forward" /> 15 name="forward" />
18 <button 16 <button
19 label="刷新"
20 name="reload" /> 17 name="reload" />
21 <button 18 <button
22 label="转到" 19 label="转到"
23 name="go" /> 20 name="go" />
24 </layout_panel> 21 </layout_panel>
22 <layout_panel
23 name="time_controls">
24 <button
25 label="快退"
26 name="rewind" />
27 <button
28 label=""
29 name="play" />
30 <button
31 label=""
32 name="pause" />
33 <button
34 label="åœæ­¢"
35 name="stop" />
36 <button
37 label="å¿«è¿›"
38 name="seek" />
39 </layout_panel>
25 <layout_panel 40 <layout_panel
26 name="parcel_owner_controls"> 41 name="parcel_owner_controls">
27 <button 42 <button
@@ -39,8 +54,9 @@
39 <button 54 <button
40 label="关闭" 55 label="关闭"
41 name="close" /> 56 name="close" />
57 <button label="设置为主页" name="set_home"/>
42 </layout_panel> 58 </layout_panel>
43 </layout_stack> 59 </layout_stack>
44</floater> 60</floater>
45 61
46<!--Translated for Second Life 1.19.1 RC3 --> \ No newline at end of file 62<!--Translated for Second Life 1.19.1 RC3 -->
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_media_filter.xml b/linden/indra/newview/skins/default/xui/zh/floater_media_filter.xml
new file mode 100644
index 0000000..c4d63ab
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_media_filter.xml
@@ -0,0 +1,92 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="floatermediafilter"
4 title="媒体过滤">
5
6 <check_box
7 name="enable_mediafilter"
8 label="å¯ç”¨åª’体过滤"
9 tool_tip="æ ¹æ®åŸŸå过滤媒体 URL。" />
10
11 <check_box
12 name="filter_only_remote"
13 label="仅过滤脚本å¯åŠ¨çš„åª’ä½“æµ (较ä¸å®‰å…¨)"
14 tool_tip="这将防止弹出窗å£è¯¢é—®å±è”½åœ°å—上永久设置的URL。仅脚本对媒体URL的更改以åŠè„šæœ¬è¯·æ±‚播放媒体æµä¼šè¢«è¿‡æ»¤ã€‚" />
15
16 <text
17 name="info1">
18 粗体显示的域åä½äºŽæŒç»­åˆ—表中 (å³åˆ—于白åå•æˆ–黑åå•ä¸­).
19 </text>
20 <text
21 name="info2">
22 斜体显示的域åä½äºŽä¼šè¯åˆ—表中 (å³ä¸´æ—¶è¢«å…许或被ç¦æ­¢).
23 </text>
24
25 <scroll_list
26 name="whitelist_list">
27 <column
28 name="whitelist_col"
29 label="å…许的域å或æœåŠ¡å™¨å¯¹è±¡" />
30 </scroll_list>
31
32 <scroll_list
33 name="blacklist_list">
34 <column
35 name="blacklist_col"
36 label="阻止的域å或æœåŠ¡å™¨å¯¹è±¡" />
37 </scroll_list>
38
39 <button
40 name="add_whitelist"
41 label="添加..."
42 tool_tip="添加æœåŠ¡å™¨åˆ°å…许列表" />
43
44 <button
45 name="remove_whitelist"
46 label="移除"
47 tool_tip="从å…许列表中清除选中的æœåŠ¡å™¨" />
48
49 <button
50 name="clear_lists"
51 label="清除列表"
52 tool_tip="清除所有列表" />
53
54 <button
55 name="show_ips"
56 label="显示 IP"
57 tool_tip="显示域å所对应的IPåœ°å€ (由于DNS查询,列表刷新时将会使客户端åœæ­¢)" />
58
59 <button
60 name="add_blacklist"
61 label="添加..."
62 tool_tip="添加æœåŠ¡å™¨åˆ°" />
63
64 <button
65 name="remove_blacklist"
66 label="移除"
67 tool_tip="从ç¦æ­¢åˆ—表中清除选中的æœåŠ¡å™¨" />
68
69 <text
70 name="add_text">
71 新域å:
72 </text>
73
74 <check_box
75 name="match_ip"
76 label="添加/删除相关的 IP"
77 tool_tip="添加或删除域åæ—¶åŒæ—¶æ·»åŠ æˆ–删除其 IP 地å€" />
78
79 <line_editor
80 name="input_domain"
81 tool_tip="键入新的URL,域å,IP 地å€æˆ–脚本对象 HTTP æœåŠ¡å™¨è·¯å¾„" />
82
83 <button
84 name="cancel_domain"
85 label="å–消" />
86 <button
87 name="commit_domain"
88 label="添加"
89 tool_tip="添加到列表中" />
90</floater>
91
92
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_message_builder.xml b/linden/indra/newview/skins/default/xui/zh/floater_message_builder.xml
new file mode 100644
index 0000000..efceead
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_message_builder.xml
@@ -0,0 +1,20 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="Message Builder"
4 title="消æ¯å»ºé€ å™¨">
5 <scroll_list
6 name="net_list">
7 </scroll_list>
8 <combo_box
9 name="untrusted_message_combo"
10 tool_tip="ä¸å¯ä¿¡">
11 </combo_box>
12 <combo_box
13 name="trusted_message_combo"
14 tool_tip="å¯ä¿¡">
15 </combo_box>
16 <button
17 name="send_btn"
18 label="å‘é€"
19 tool_tip="å‘é€ (Ctrl-Enter)" />
20</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_mini_map.xml b/linden/indra/newview/skins/default/xui/zh/floater_mini_map.xml
index 430dd05..50e89c4 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_mini_map.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_mini_map.xml
@@ -1,4 +1,5 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<floater name="minimap"> 2<floater name="minimap">
3 <panel label="微型地图" name="mini_mapview" tool_tip="(åŒå‡»æ‰“开地图)"/> 3 <panel label="微型地图" name="mini_mapview"/>
4 <button name="toggle_radar" tool_tip="显示或éšè—é›·è¾¾" />
4</floater> 5</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_name_description.xml b/linden/indra/newview/skins/default/xui/zh/floater_name_description.xml
index 55beb81..1f7fc32 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_name_description.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_name_description.xml
@@ -7,5 +7,5 @@
7 æè¿°: 7 æè¿°:
8 </text> 8 </text>
9 <button label="å–消" name="cancel_btn" /> 9 <button label="å–消" name="cancel_btn" />
10 <button label="上传 (L$[AMOUNT])" name="ok_btn" /> 10 <button label="上传 ([UPLOADFEE])" name="ok_btn" />
11</floater> 11</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_new_outfit_dialog.xml b/linden/indra/newview/skins/default/xui/zh/floater_new_outfit_dialog.xml
index 8fbbf92..2edaa33 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_new_outfit_dialog.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_new_outfit_dialog.xml
@@ -16,6 +16,8 @@
16 <check_box label="内衣" name="checkbox_Undershirt" /> 16 <check_box label="内衣" name="checkbox_Undershirt" />
17 <check_box label="内裤" name="checkbox_Underpants" /> 17 <check_box label="内裤" name="checkbox_Underpants" />
18 <check_box label="裙å­" name="checkbox_Skirt" /> 18 <check_box label="裙å­" name="checkbox_Skirt" />
19 <check_box label="纹身" name="checkbox_Tattoo" />
20 <check_box label="é€æ˜Žåº¦" name="checkbox_Alpha" />
19 <check_box label="胸部" name="checkbox_Chest" /> 21 <check_box label="胸部" name="checkbox_Chest" />
20 <check_box label="头部" name="checkbox_Skull" /> 22 <check_box label="头部" name="checkbox_Skull" />
21 <check_box label="左肩" name="checkbox_Left Shoulder" /> 23 <check_box label="左肩" name="checkbox_Left Shoulder" />
@@ -70,6 +72,8 @@
70 <text type="string" length="1" name="Items to include in outfit:"> 72 <text type="string" length="1" name="Items to include in outfit:">
71 装æŸä¸­åŒ…括的物å“: 73 装æŸä¸­åŒ…括的物å“:
72 </text> 74 </text>
75 <button label="全部选中" name="Check All" />
76 <button label="全部ä¸é€‰" name="Uncheck All" />
73 <text type="string" length="1" name="Body Parts:"> 77 <text type="string" length="1" name="Body Parts:">
74 体形 78 体形
75 </text> 79 </text>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_notification.xml b/linden/indra/newview/skins/default/xui/zh/floater_notification.xml
new file mode 100644
index 0000000..d24a0fe
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_notification.xml
@@ -0,0 +1,9 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 title="æ示控制å°"
4 name="notification">
5 <combo_box
6 label="回å¤"
7 name="response">
8 </combo_box>
9</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_pay.xml b/linden/indra/newview/skins/default/xui/zh/floater_pay.xml
index ac30075..85ce2f3 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_pay.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_pay.xml
@@ -6,9 +6,11 @@
6 </text> 6 </text>
7 7
8 <text name="amount text"> 8 <text name="amount text">
9 æ•°é‡: 9 é¢åº¦:
10 </text>
11 <text name="message text">
12 备注:
10 </text> 13 </text>
11
12 <button name="pay btn" label="支付" /> 14 <button name="pay btn" label="支付" />
13 <button name="cancel btn" label="å–消" /> 15 <button name="cancel btn" label="å–消" />
14 16
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_postcard.xml b/linden/indra/newview/skins/default/xui/zh/floater_postcard.xml
index 656d75b..2e54772 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_postcard.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_postcard.xml
@@ -20,12 +20,11 @@
20 在这里键入你的信æ¯ã€‚ 20 在这里键入你的信æ¯ã€‚
21 </text_editor> 21 </text_editor>
22 <text name="fine_print"> 22 <text name="fine_print">
23 如果你的收件人加入SL,你会得到一份介ç»å¥–励。
24 </text> 23 </text>
25 <button label="å–消" name="cancel_btn"/> 24 <button label="å–消" name="cancel_btn"/>
26 <button label="å‘é€" name="send_btn"/> 25 <button label="å‘é€" name="send_btn"/>
27 <string name="default_subject"> 26 <string name="default_subject">
28 æ¥è‡ªç¬¬äºŒäººç”Ÿçš„明信片 27 æ¥è‡ª [GRID_NAME] 的明信片
29 </string> 28 </string>
30 <string name="default_message"> 29 <string name="default_message">
31 瞧瞧这个! 30 瞧瞧这个!
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_preferences.xml b/linden/indra/newview/skins/default/xui/zh/floater_preferences.xml
index 0af9120..61267ef 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_preferences.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_preferences.xml
@@ -5,5 +5,7 @@
5 <button label="å–消" label_selected="å–消" name="Cancel" /> 5 <button label="å–消" label_selected="å–消" name="Cancel" />
6 <button label="应用" label_selected="应用" name="Apply" /> 6 <button label="应用" label_selected="应用" name="Apply" />
7 <button label="帮助" label_selected="帮助" name="Help" /> 7 <button label="帮助" label_selected="帮助" name="Help" />
8 8 <button label="支æŒ" name="Support" />
9 <button label="全部é‡ç½®ä¸ºé»˜è®¤å€¼" name="reset_btn"
10 tooltip="将所有选项æ¢å¤åˆ°é»˜è®¤å€¼ (需è¦é‡å¯åŠ¨)"/>
9</floater> 11</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml b/linden/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml
index af229f1..a27d210 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_preview_gesture.xml
@@ -28,7 +28,7 @@
28 库: 28 库:
29 </text> 29 </text>
30 <text name="steps_label"> 30 <text name="steps_label">
31 阶段: 31 步骤:
32 </text> 32 </text>
33 <scroll_list name="library_list"> 33 <scroll_list name="library_list">
34 动画 34 动画
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml b/linden/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml
index 60ef174..be9daf5 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_preview_notecard.xml
@@ -4,6 +4,56 @@
4 <text type="string" length="1" name="desc txt"> 4 <text type="string" length="1" name="desc txt">
5 æè¿°: 5 æè¿°:
6 </text> 6 </text>
7 <menu_bar
8 name="motecard_menu">
9 <menu
10 name="File"
11 label="文件">
12 <menu_item_call
13 label="ä¿å­˜"
14 name="Save Menu"/>
15 <menu_item_call
16 label="导出文字..."
17 name="Export Text..." />
18 <menu_item_call
19 label="导入文字..."
20 name="Import Text..." />
21 </menu>
22 <menu
23 label="编辑"
24 name="Edit">
25 <menu_item_call
26 label="撤销"
27 name="Undo" />
28 <menu_item_call
29 label="é‡åš"
30 name="Redo" />
31 <menu_item_separator
32 label="-----------"
33 name="separator1" />
34 <menu_item_call
35 label="剪切"
36 name="Cut" />
37 <menu_item_call
38 label="å¤åˆ¶"
39 name="Copy" />
40 <menu_item_call
41 label="粘贴"
42 name="Paste" />
43 <menu_item_call
44 label="全选"
45 name="Select All" />
46 <menu_item_call
47 label="å…¨ä¸é€‰"
48 name="Deselect" />
49 <menu_item_separator
50 label="-----------"
51 name="separator3" />
52 <menu_item_call
53 label="查找 / 替æ¢..."
54 name="Search / Replace..." />
55 </menu>
56 </menu_bar>
7 <text_editor type="string" length="1" name="Notecard Editor"> 57 <text_editor type="string" length="1" name="Notecard Editor">
8 请等待... 58 请等待...
9 </text_editor> 59 </text_editor>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_preview_notecard_keep_discard.xml b/linden/indra/newview/skins/default/xui/zh/floater_preview_notecard_keep_discard.xml
index 3853f05..f8d2327 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_preview_notecard_keep_discard.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_preview_notecard_keep_discard.xml
@@ -6,6 +6,56 @@
6 <text type="string" length="1" name="desc txt"> 6 <text type="string" length="1" name="desc txt">
7 æè¿°: 7 æè¿°:
8 </text> 8 </text>
9 <menu_bar
10 name="motecard_menu">
11 <menu
12 name="File"
13 label="文件">
14 <menu_item_call
15 label="ä¿å­˜"
16 name="Save Menu"/>
17 <menu_item_call
18 label="导出文字..."
19 name="Export Text..." />
20 <menu_item_call
21 label="导入文字..."
22 name="Import Text..." />
23 </menu>
24 <menu
25 label="编辑"
26 name="Edit">
27 <menu_item_call
28 label="撤销"
29 name="Undo" />
30 <menu_item_call
31 label="é‡åš"
32 name="Redo" />
33 <menu_item_separator
34 label="-----------"
35 name="separator1" />
36 <menu_item_call
37 label="剪切"
38 name="Cut" />
39 <menu_item_call
40 label="å¤åˆ¶"
41 name="Copy" />
42 <menu_item_call
43 label="粘贴"
44 name="Paste" />
45 <menu_item_call
46 label="全选"
47 name="Select All" />
48 <menu_item_call
49 label="å…¨ä¸é€‰"
50 name="Deselect" />
51 <menu_item_separator
52 label="-----------"
53 name="separator3" />
54 <menu_item_call
55 label="查找 / 替æ¢..."
56 name="Search / Replace..." />
57 </menu>
58 </menu_bar>
9 <button label="ä¿ç•™" label_selected="ä¿ç•™" name="Keep" /> 59 <button label="ä¿ç•™" label_selected="ä¿ç•™" name="Keep" />
10 <button label="放弃" label_selected="放弃" name="Discard" /> 60 <button label="放弃" label_selected="放弃" name="Discard" />
11 <string 61 <string
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_prim_import.xml b/linden/indra/newview/skins/default/xui/zh/floater_prim_import.xml
new file mode 100644
index 0000000..dfe1601
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_prim_import.xml
@@ -0,0 +1,7 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="Import"
4 title="导入进度">
5 <text
6 name="name_label"> 进度 </text>
7</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_radar.xml b/linden/indra/newview/skins/default/xui/zh/floater_radar.xml
new file mode 100644
index 0000000..cdb6d0a
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_radar.xml
@@ -0,0 +1,191 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="radar"
4 title="é›·è¾¾">
5
6 <scroll_list
7 name="avatar_list"
8 tool_tip="ç‚¹å‡»æ—¶æŒ‰ä½ Shift 或 Control 选择多å化身">
9 <column
10 name="marked"
11 label="标记"
12 tool_tip="标记的化身" />
13 <column
14 name="avatar_name"
15 label="åå­—"
16 tool_tip="ç‚¹å‡»æ—¶æŒ‰ä½ Shift 或 Control 选择多å化身" />
17 <column
18 name="distance"
19 label="è·ç¦»"
20 tool_tip="到您的化身的è·ç¦» (红色=èŠå¤©è·ç¦»å†…, 黄色=å–Šå«è·ç¦»å†…, 绿色=æ绘è·ç¦»å†…)" />
21 <column
22 name="position"
23 label="ä½ç½®"
24 tool_tip="区域内的ä½ç½® (X, Y), 或区域外大致方å‘" />
25 <column
26 name="altitude"
27 label="高度"
28 tool_tip="高度" />
29 </scroll_list>
30
31 <tab_container
32 name="actions_tab_container">
33 <panel
34 label="化身"
35 name="actions_tab">
36 <!-- upper row -->
37 <button
38 name="profile_btn"
39 label="档案"
40 tool_tip="显示图片ã€ç¤¾å›¢å’Œå…¶ä»–ä¿¡æ¯" />
41 <button
42 name="track_btn"
43 label="追踪/å–消"
44 tool_tip="切æ¢è¿½è¸ªè¯¥åŒ–身的ä½ç½®" />
45 <button
46 name="get_key_btn"
47 label="获å–键值"
48 tool_tip="å¤åˆ¶åŒ–身的键值到剪贴æ¿" />
49 <!-- upper middle row -->
50 <button
51 name="im_btn"
52 label="å³æ—¶æ¶ˆæ¯"
53 tool_tip="打开å³æ—¶é€šä¿¡ä¼šè¯" />
54 <button
55 name="offer_btn"
56 label="邀请瞬移"
57 tool_tip="邀请此人瞬间移动到你的ä½ç½®" />
58 <button
59 name="teleport_btn"
60 label="瞬移到"
61 tool_tip="瞬间移动到他人的ä½ç½®" />
62 <!-- lower middle row-->
63 <button
64 name="mark_btn"
65 label="标记/å–消"
66 tool_tip="在列表中标记或å–消标记该化身" />
67 <button
68 name="prev_marked_btn"
69 label="上个标记"
70 tool_tip="èšç„¦æ‘„åƒæœºäºŽä¸Šä¸ªå·²æ ‡è®°çš„化身" />
71 <button
72 name="next_marked_btn"
73 label="下个标记"
74 tool_tip="èšç„¦æ‘„åƒæœºäºŽä¸‹ä¸ªå·²æ ‡è®°çš„化身" />
75 <!-- lower row-->
76 <button
77 name="focus_btn"
78 label="èšç„¦"
79 tool_tip="èšç„¦æ‘„åƒæœºäºŽå½“å‰é€‰ä¸­çš„化身" />
80 <button
81 name="prev_in_list_btn"
82 label="上个"
83 tool_tip="èšç„¦æ‘„åƒæœºäºŽåˆ—表中上一个化身" />
84 <button
85 name="next_in_list_btn"
86 label="下个"
87 tool_tip="èšç„¦æ‘„åƒæœºäºŽåˆ—表中下一个化身" />
88
89 </panel>
90
91 <panel
92 label="æ醒"
93 name="alerts_tab">
94 <check_box
95 label="èŠå¤©ä¸­æ˜¾ç¤ºæ醒"
96 name="radar_alerts"
97 tool_tip="在èŠå¤©è®°å½•ä¸­æ˜¾ç¤ºè¿›å…¥å’Œç¦»å¼€èŒƒå›´çš„化身" />
98
99 <check_box
100 label="化身进入 / 离开区域"
101 name="alerts_sim"
102 tool_tip="报告进入或离开区域的化身" />
103
104 <check_box
105 label="化身进入 / 离开æ绘è·ç¦»"
106 name="alerts_draw"
107 tool_tip="报告进入或离开æ绘è·ç¦»çš„化身" />
108
109 <check_box
110 label="化身进入 / 离开喊å«è·ç¦»"
111 name="alerts_shout"
112 tool_tip="报告进入或离开喊å«è·ç¦»çš„化身" />
113
114 <check_box
115 label="化身进入 / 离开èŠå¤©è·ç¦»"
116 name="alerts_chat"
117 tool_tip="报告进入或离开èŠå¤©è·ç¦»çš„化身" />
118 </panel>
119
120 <panel
121 label="管ç†"
122 name="land_tab">
123
124 <!-- Upper row -->
125 <button
126 name="mute_btn"
127 label="å±è”½/解除"
128 tool_tip="å±è”½æˆ–解除å±è”½è¯¥åŒ–身 (å±è”½çš„化身å字会在列表中以红色高亮显示)。" />
129 <button
130 name="freeze_btn"
131 label="冻结"
132 tool_tip="冻结该化身,防止其移动" />
133 <button
134 name="ar_btn"
135 label="报告"
136 tool_tip="报告该化身的ä¸è‰¯è¡Œä¸ºã€‚" />
137 <!-- Lower row -->
138 <button
139 name="eject_btn"
140 label="驱é€"
141 tool_tip="从地å—中驱é€è¯¥åŒ–身。" />
142
143 <button
144 name="estate_eject_btn"
145 label="从地产中驱é€"
146 tool_tip="从地产中驱é€è¯¥åŒ–身。" />
147 </panel>
148
149 <panel
150 label="选项"
151 name="options_tab">
152 <check_box
153 label="æ›´æ–°"
154 name="update_enabled_cb"
155 tool_tip="选择化身列表应何时更新" />
156 <text
157 name="rate">
158 速率:
159 </text>
160 <radio_group
161 name="update_rate"
162 tool_tip="雷达更新频率 (高频率将é™ä½Ž FPS)">
163 <radio_item
164 name="high">
165 高
166 </radio_item>
167 <radio_item
168 name="medium">
169 中
170 </radio_item>
171 <radio_item
172 name="low">
173 低
174 </radio_item>
175 </radio_group>
176 <check_box
177 label="关闭时继续æ醒"
178 name="keep_open"
179 tool_tip="éšè—窗å£è€Œä¸å…³é—­ï¼Œä»¥ç»§ç»­åœ¨èŠå¤©è®°å½•ä¸­æ˜¾ç¤ºè¿›å…¥çš„化身" />
180 <check_box
181 label="å‘é€é”®å€¼åˆ° HUD"
182 name="radar_chat_keys"
183 tool_tip="设置是å¦å°†åŒ–身的键值å‘é€ç»™LSL脚本" />
184 <button
185 name="send_keys_btn"
186 label="现在å‘é€"
187 tool_tip="ç«‹å³å°†æ‰€æœ‰é”®å€¼å‘é€åˆ° HUD" />
188 </panel>
189 </tab_container>
190</floater>
191
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_rlv_behaviour.xml b/linden/indra/newview/skins/default/xui/zh/floater_rlv_behaviour.xml
new file mode 100644
index 0000000..8aefafd
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_rlv_behaviour.xml
@@ -0,0 +1,14 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="rlvBehaviours"
4 title="激活的 RLV é™åˆ¶">
5 <scroll_list
6 name="behaviour_list">
7 <column
8 label="é™åˆ¶"
9 name="behaviour" />
10 <column
11 label="物体å称"
12 name="name" />
13 </scroll_list>
14</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_script_ed_panel.xml b/linden/indra/newview/skins/default/xui/zh/floater_script_ed_panel.xml
index 27c97aa..28d80c5 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_script_ed_panel.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_script_ed_panel.xml
@@ -54,6 +54,7 @@
54 label="帮助" 54 label="帮助"
55 name="Help"> 55 name="Help">
56 <menu_item_call label="帮助..." name="Help..." /> 56 <menu_item_call label="帮助..." name="Help..." />
57 <menu_item_call label="打开 Autoscript" name="Launch Autoscript..." width="112" />
57 <menu_item_call 58 <menu_item_call
58 label="LSL Wiki 帮助..." 59 label="LSL Wiki 帮助..."
59 name="LSL Wiki Help..." /> 60 name="LSL Wiki Help..." />
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_search_replace.xml b/linden/indra/newview/skins/default/xui/zh/floater_search_replace.xml
index d21b657..5a2d724 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_search_replace.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_search_replace.xml
@@ -4,10 +4,10 @@
4 <button label="查找" label_selected="查找" name="search_btn" /> 4 <button label="查找" label_selected="查找" name="search_btn" />
5 <button label="替æ¢" label_selected="替æ¢" name="replace_btn" /> 5 <button label="替æ¢" label_selected="替æ¢" name="replace_btn" />
6 <button label="全部替æ¢" label_selected="全部替æ¢" name="replace_all_btn" /> 6 <button label="全部替æ¢" label_selected="全部替æ¢" name="replace_all_btn" />
7 <text type="string" length="1" name="txt"> 7 <text type="string" name="search_label">
8 查找 8 查找
9 </text> 9 </text>
10 <text type="string" length="1" name="txt2"> 10 <text type="string" name="replace_label">
11 æ›¿æ¢ 11 替æ¢
12 </text> 12 </text>
13</floater> 13</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_sell_land.xml b/linden/indra/newview/skins/default/xui/zh/floater_sell_land.xml
index 7ecc330..499d4c4 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_sell_land.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_sell_land.xml
@@ -22,10 +22,10 @@
22 为这å—土地选择一个åˆé€‚çš„ä»·ä½ 22 为这å—土地选择一个åˆé€‚çš„ä»·ä½
23 </text> 23 </text>
24 <text name="price_ld"> 24 <text name="price_ld">
25 L$ 25 [CURRENCY]
26 </text> 26 </text>
27 <text name="price_per_m"> 27 <text name="price_per_m">
28 (L$[PER_METER]æ¯å¹³æ–¹ç±³) 28 ([CURRENCY][PER_METER] æ¯å¹³æ–¹ç±³)
29 </text> 29 </text>
30 <text name="sell_to_label"> 30 <text name="sell_to_label">
31 把土地出售给: 31 把土地出售给:
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_snapshot.xml b/linden/indra/newview/skins/default/xui/zh/floater_snapshot.xml
index e0f9a17..ed90d9c 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_snapshot.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_snapshot.xml
@@ -8,7 +8,7 @@
8 通过电å­é‚®ä»¶å‘é€ 8 通过电å­é‚®ä»¶å‘é€
9 </radio_item> 9 </radio_item>
10 <radio_item name="texture"> 10 <radio_item name="texture">
11 ä¿å­˜è‡³åº“å­˜ (L$[AMOUNT]) 11 ä¿å­˜è‡³åº“å­˜ ([UPLOADFEE])
12 </radio_item> 12 </radio_item>
13 <radio_item name="local"> 13 <radio_item name="local">
14 ä¿å­˜è‡³ç¡¬ç›˜ 14 ä¿å­˜è‡³ç¡¬ç›˜
@@ -19,7 +19,7 @@
19 </text> 19 </text>
20 <button label="刷新截图" name="new_snapshot_btn"/> 20 <button label="刷新截图" name="new_snapshot_btn"/>
21 <button label="å‘é€" name="send_btn"/> 21 <button label="å‘é€" name="send_btn"/>
22 <button label="上传 (L$[AMOUNT])" name="upload_btn"/> 22 <button label="上传 ([UPLOADFEE])" name="upload_btn"/>
23 <flyout_button label="ä¿å­˜" list_position="below" name="save_btn" tool_tip="ä¿å­˜å›¾åƒåˆ°æ–‡ä»¶"> 23 <flyout_button label="ä¿å­˜" list_position="below" name="save_btn" tool_tip="ä¿å­˜å›¾åƒåˆ°æ–‡ä»¶">
24 <flyout_button_item name="save_item"> 24 <flyout_button_item name="save_item">
25 ä¿å­˜ 25 ä¿å­˜
@@ -42,13 +42,13 @@
42 当å‰çª—å£ 42 当å‰çª—å£
43 </combo_item> 43 </combo_item>
44 <combo_item name="640x480"> 44 <combo_item name="640x480">
45 640x480 45 640×480
46 </combo_item> 46 </combo_item>
47 <combo_item name="800x600"> 47 <combo_item name="800x600">
48 800x600 48 800×600
49 </combo_item> 49 </combo_item>
50 <combo_item name="1024x768"> 50 <combo_item name="1024x768">
51 1024x768 51 1024×768
52 </combo_item> 52 </combo_item>
53 <combo_item name="Custom"> 53 <combo_item name="Custom">
54 自定义 54 自定义
@@ -59,13 +59,13 @@
59 当å‰çª—å£ 59 当å‰çª—å£
60 </combo_item> 60 </combo_item>
61 <combo_item name="Small(128x128)"> 61 <combo_item name="Small(128x128)">
62 å° (128x128) 62 å° (128×128)
63 </combo_item> 63 </combo_item>
64 <combo_item name="Medium(256x256)"> 64 <combo_item name="Medium(256x256)">
65 中 (256x256) 65 中 (256×256)
66 </combo_item> 66 </combo_item>
67 <combo_item name="Large(512x512)"> 67 <combo_item name="Large(512x512)">
68 大 (512x512) 68 大 (512×512)
69 </combo_item> 69 </combo_item>
70 <combo_item name="Custom"> 70 <combo_item name="Custom">
71 自定义 71 自定义
@@ -76,22 +76,22 @@
76 当å‰çª—å£ 76 当å‰çª—å£
77 </combo_item> 77 </combo_item>
78 <combo_item name="320x240"> 78 <combo_item name="320x240">
79 320x240 79 320×240
80 </combo_item> 80 </combo_item>
81 <combo_item name="640x480"> 81 <combo_item name="640x480">
82 640x480 82 640×480
83 </combo_item> 83 </combo_item>
84 <combo_item name="800x600"> 84 <combo_item name="800x600">
85 800x600 85 800×600
86 </combo_item> 86 </combo_item>
87 <combo_item name="1024x768"> 87 <combo_item name="1024x768">
88 1024x768 88 1024×768
89 </combo_item> 89 </combo_item>
90 <combo_item name="1280x1024"> 90 <combo_item name="1280x1024">
91 1280x1024 91 1280×1024
92 </combo_item> 92 </combo_item>
93 <combo_item name="1600x1200"> 93 <combo_item name="1600x1200">
94 1600x1200 94 1600×1200
95 </combo_item> 95 </combo_item>
96 <combo_item name="Custom"> 96 <combo_item name="Custom">
97 自定义 97 自定义
@@ -104,6 +104,9 @@
104 <combo_item name="JPEG"> 104 <combo_item name="JPEG">
105 JPEG 105 JPEG
106 </combo_item> 106 </combo_item>
107 <combo_item name="TGA">
108 TGA
109 </combo_item>
107 <combo_item name="BMP"> 110 <combo_item name="BMP">
108 BMP 111 BMP
109 </combo_item> 112 </combo_item>
@@ -112,8 +115,9 @@
112 <spinner label="高度" name="snapshot_height"/> 115 <spinner label="高度" name="snapshot_height"/>
113 <check_box label="ä¿æŒç”»é¢å®½é«˜æ¯”" name="keep_aspect_check"/> 116 <check_box label="ä¿æŒç”»é¢å®½é«˜æ¯”" name="keep_aspect_check"/>
114 <slider label="图åƒè´¨é‡" name="image_quality_slider"/> 117 <slider label="图åƒè´¨é‡" name="image_quality_slider"/>
118 <check_box label="åŒå€è§£æžåº¦" name="high_res_check" />
115 <text name="layer_type_label"> 119 <text name="layer_type_label">
116 获å–: 120 截å–:
117 </text> 121 </text>
118 <combo_box label="ç”»é¢å›¾å±‚" name="layer_types"> 122 <combo_box label="ç”»é¢å›¾å±‚" name="layer_types">
119 <combo_item name="Colors"> 123 <combo_item name="Colors">
@@ -131,6 +135,8 @@
131 <check_box label="ä¿å­˜åŽä¿æŒçª—å£å¼€å¯" name="keep_open_check"/> 135 <check_box label="ä¿å­˜åŽä¿æŒçª—å£å¼€å¯" name="keep_open_check"/>
132 <check_box label="冻结当å‰ç”»é¢(å…¨å±é¢„览)" name="freeze_frame_check"/> 136 <check_box label="冻结当å‰ç”»é¢(å…¨å±é¢„览)" name="freeze_frame_check"/>
133 <check_box label="自动截图" name="auto_snapshot_check"/> 137 <check_box label="自动截图" name="auto_snapshot_check"/>
138 <check_box enabled="true" label="ä¸´æ—¶å›¾åƒ (å…è´¹)"
139 tooltip="设置资产为临时的,这æ„味ç€å®ƒæ˜¯å…费的,但是作为代价,仅在一段时间内有效,之åŽå®ƒå°±æ¶ˆå¤±äº†ã€‚" />
134 <string name="unknown"> 140 <string name="unknown">
135 未知 141 未知
136 </string> 142 </string>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_sound_preview.xml b/linden/indra/newview/skins/default/xui/zh/floater_sound_preview.xml
index ac9c149..40c564f 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_sound_preview.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_sound_preview.xml
@@ -7,5 +7,5 @@
7 æè¿°: 7 æè¿°:
8 </text> 8 </text>
9 <button label="å–消" label_selected="å–消" name="cancel_btn" /> 9 <button label="å–消" label_selected="å–消" name="cancel_btn" />
10 <button label="上传 (L$[AMOUNT])" label_selected="上传 (L$[AMOUNT])" name="ok_btn" /> 10 <button label="上传 ([UPLOADFEE])" label_selected="上传 ([UPLOADFEE])" name="ok_btn" />
11</floater> 11</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_teleport_history.xml b/linden/indra/newview/skins/default/xui/zh/floater_teleport_history.xml
new file mode 100644
index 0000000..b4dd5de
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_teleport_history.xml
@@ -0,0 +1,72 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="teleporthistory"
4 title="瞬间移动历å²">
5 <tab_container
6 name="tplisttabs">
7 <panel
8 label="瞬间移动到"
9 name="TP-in">
10 <scroll_list
11 name="places_list_in">
12 <column
13 label="区域"
14 name="region" />
15 <column
16 label="ä½ç½®"
17 name="position" />
18 <column
19 label="访问时间"
20 name="visited" />
21 <!--Hidden fields, used as storage for prebuilt strings, please keep at width 0-->
22 <column
23 label="SLURL"
24 name="slurl" />
25 <column
26 label="Sim String"
27 name="simstring" />
28 </scroll_list>
29 </panel>
30 <panel
31 label="瞬间移动从"
32 name="TP-out">
33 <scroll_list
34 name="places_list_out">
35 <column
36 label="区域"
37 name="region" />
38 <column
39 label="ä½ç½®"
40 name="position" />
41 <column
42 label="访问时间"
43 name="visited" />
44 <!--Hidden fields, used as storage for prebuilt strings, please keep at width 0-->
45 <column
46 label="SLURL"
47 name="slurl" />
48 <column
49 label="Sim String"
50 name="simstring" />
51 </scroll_list>
52 </panel>
53 </tab_container>
54 <button
55 label="瞬间移动"
56 label_selected="瞬间移动"
57 name="teleport"
58 tool_tip="瞬间移动到所选ä½ç½®" />
59 <button
60 label="在地图上显示"
61 label_selected="在地图上显示"
62 name="show_on_map"
63 tool_tip="居中显示该地点" />
64 <button
65 label="清除历å²"
66 name="clear_history"
67 tool_tip="清除ä¿å­˜çš„历å²" />
68 <button
69 label="å¤åˆ¶ SLURL 到剪贴æ¿"
70 name="copy_slurl"
71 tool_tip="å¤åˆ¶å½“å‰ä½ç½®ä¸º SLURL 供分享。" />
72</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml b/linden/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
index bbca686..7e41a58 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_texture_ctrl.xml
@@ -15,6 +15,7 @@
15 <button label="默认" label_selected="默认" name="Default" /> 15 <button label="默认" label_selected="默认" name="Default" />
16 <button label="æ— æè´¨" label_selected="æ— æè´¨" name="None" /> 16 <button label="æ— æè´¨" label_selected="æ— æè´¨" name="None" />
17 <button label="空白" label_selected="空白" name="Blank" /> 17 <button label="空白" label_selected="空白" name="Blank" />
18 <button label="é€æ˜Ž" label_selected="é€æ˜Ž" name="Invisible" />
18 <check_box label="显示文件夹" name="show_folders_check" /> 19 <check_box label="显示文件夹" name="show_folders_check" />
19 <check_box label="ç«‹å³åº”用" name="apply_immediate_check" /> 20 <check_box label="ç«‹å³åº”用" name="apply_immediate_check" />
20 <button label="" label_selected="" name="Pipette" /> 21 <button label="" label_selected="" name="Pipette" />
@@ -23,4 +24,38 @@
23 <string name="pick title"> 24 <string name="pick title">
24 选择: 25 选择:
25 </string> 26 </string>
27
28 <tab_container name="actions_tab_container">
29 <panel label="库存" name="server_tab">
30 <search_editor
31 label="在这里键入è¦æŸ¥æ‰¾çš„æè´¨"
32 name="inventory search editor" />
33 </panel>
34 <panel
35 label="我的电脑"
36 name="local_tab">
37 <!-- tag: vaa emerald local_asset_browser [begin] -->
38 <text
39 name="select_local">
40 选择你的电脑上的æ质在世界内预览
41 Select texture on your computer to preview inworld
42 </text>
43 <button
44 label="添加"
45 name="Add" />
46 <button
47 label="移除"
48 name="Remove" />
49 <button
50 label="属性..."
51 name="Browser" />
52 <scroll_list
53 name="local_name_list">
54 <column
55 name="unit_name"
56 label="å称" />
57 </scroll_list>
58 <!-- tag: vaa emerald local_asset_browser [end] -->
59 </panel>
60 </tab_container>
26</floater> 61</floater>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_tools.xml b/linden/indra/newview/skins/default/xui/zh/floater_tools.xml
index 4f7bcf1..f608b78 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_tools.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_tools.xml
@@ -14,7 +14,12 @@
14 <check_box label="ä½ç½®" name="radio position"/> 14 <check_box label="ä½ç½®" name="radio position"/>
15 <check_box label="旋转(Ctrl)" name="radio rotate"/> 15 <check_box label="旋转(Ctrl)" name="radio rotate"/>
16 <check_box label="拉伸(Ctrl-Shift)" name="radio stretch"/> 16 <check_box label="拉伸(Ctrl-Shift)" name="radio stretch"/>
17 <check_box label="选择æè´¨" name="radio select face"/> 17 <check_box label="选择表é¢æ·»åŠ æè´¨" name="radio select face"/>
18 <check_box label="å¯¹é½ (按 Shift 堆砌)"
19 name="radio align"
20 tool_tip="Align aligns all selected prims' edges along an axis, Pack moves all selected prims' edges so they're touching" />
21 <button label="链接" label_selected="链接" name="link_btn" />
22 <button label="解除链接" label_selected="解除链接" name="unlink_btn"/>
18 <check_box label="编辑连接部件" name="checkbox edit linked parts"/> 23 <check_box label="编辑连接部件" name="checkbox edit linked parts"/>
19 <text name="text ruler mode"> 24 <text name="text ruler mode">
20 标尺: 25 标尺:
@@ -33,7 +38,7 @@
33 <check_box label="åŒæ—¶æ‹‰ä¼¸ä¸¤è¾¹" name="checkbox uniform"/> 38 <check_box label="åŒæ—¶æ‹‰ä¼¸ä¸¤è¾¹" name="checkbox uniform"/>
34 <check_box label="拉伸æè´¨" name="checkbox stretch textures"/> 39 <check_box label="拉伸æè´¨" name="checkbox stretch textures"/>
35 <check_box label="使用网格" name="checkbox snap to grid"/> 40 <check_box label="使用网格" name="checkbox snap to grid"/>
36 <button label="选项..." label_selected="选项..." name="Options..."/> 41 <button label="建造选项..." label_selected="建造选项..." name="Options..."/>
37 <text name="text status"> 42 <text name="text status">
38 拖动æ¥ç§»åŠ¨ç‰©ä½“, æŒ‰ä½ Shift 拖动æ¥å¤åˆ¶ 43 拖动æ¥ç§»åŠ¨ç‰©ä½“, æŒ‰ä½ Shift 拖动æ¥å¤åˆ¶
39 </text> 44 </text>
@@ -74,11 +79,14 @@
74 强度 79 强度
75 </text> 80 </text>
76 <text name="obj_count"> 81 <text name="obj_count">
77 选择物å:[COUNT] 82 选择物ä½æ•°ï¼š[COUNT]
78 </text> 83 </text>
79 <text name="prim_count"> 84 <text name="prim_count">
80 元件:[COUNT] 85 元件数:[COUNT]
81 </text> 86 </text>
87 <text name="link_num">
88 链接编å·: [NUMBER]
89 </text>
82 <tab_container name="Object Info Tabs"> 90 <tab_container name="Object Info Tabs">
83 <panel label="一般" name="General"> 91 <panel label="一般" name="General">
84 <text name="Name:"> 92 <text name="Name:">
@@ -98,7 +106,7 @@
98 主人: 106 主人:
99 </text> 107 </text>
100 <text name="Owner Name"> 108 <text name="Owner Name">
101 斯雷è¨æ–¯Â·æž—ç™» 109 Kakurady Drakenar
102 </text> 110 </text>
103 <button label="档案..." label_selected="档案..." name="button owner profile"/> 111 <button label="档案..." label_selected="档案..." name="button owner profile"/>
104 <text name="Group:"> 112 <text name="Group:">
@@ -126,7 +134,7 @@
126 <check_box label="在æœç´¢ä¸­æ˜¾ç¤º" name="search_check" tool_tip="让别人å¯ä»¥åœ¨æœç´¢ç»“果中看到这件物体。"/> 134 <check_box label="在æœç´¢ä¸­æ˜¾ç¤º" name="search_check" tool_tip="让别人å¯ä»¥åœ¨æœç´¢ç»“果中看到这件物体。"/>
127 <check_box label="出售" name="checkbox for sale"/> 135 <check_box label="出售" name="checkbox for sale"/>
128 <text name="Cost"> 136 <text name="Cost">
129 ä»·æ ¼: L$ 137 ä»·æ ¼: [CURRENCY]
130 </text> 138 </text>
131 <radio_group name="sale type"> 139 <radio_group name="sale type">
132 <radio_item name="Original"> 140 <radio_item name="Original">
@@ -139,6 +147,21 @@
139 内容 147 内容
140 </radio_item> 148 </radio_item>
141 </radio_group> 149 </radio_group>
150 <button
151 label="å¤åˆ¶é”®å€¼"
152 label_selected="å¤åˆ¶é”®å€¼"
153 name="button copy key"
154 tool_tip="å¤åˆ¶ç‰©ä½“的键值到剪贴æ¿ã€‚" />
155 <text
156 name="Anyone can:">
157 任何人都å¯ä»¥:
158 </text>
159 <check_box
160 label="移动"
161 name="checkbox allow everyone move" />
162 <check_box
163 label="å¤åˆ¶"
164 name="checkbox allow everyone copy" />
142 <text name="Next owner can:"> 165 <text name="Next owner can:">
143 下个拥有者å¯ä»¥: 166 下个拥有者å¯ä»¥:
144 </text> 167 </text>
@@ -205,24 +228,24 @@
205 必须选择一个完整的物体æ¥è®¾ç½®è®¸å¯ã€‚ 228 必须选择一个完整的物体æ¥è®¾ç½®è®¸å¯ã€‚
206 </string> 229 </string>
207 <string name="Cost Default"> 230 <string name="Cost Default">
208 ä»·æ ¼: L$ 231 ä»·æ ¼: [CURRENCY]
209 </string> 232 </string>
210 <string name="Cost Total"> 233 <string name="Cost Total">
211 总价格: L$ 234 总价格: [CURRENCY]
212 </string> 235 </string>
213 <string name="Cost Per Unit"> 236 <string name="Cost Per Unit">
214 æ¯ä¸ªçš„ä»·æ ¼: L$ 237 å•ä»·: [CURRENCY]
215 </string> 238 </string>
216 <string name="Cost Mixed"> 239 <string name="Cost Mixed">
217 æ··åˆä»·æ ¼ 240 ä»·æ ¼ä¸ç›¸åŒ
218 </string> 241 </string>
219 <string name="Sale Mixed"> 242 <string name="Sale Mixed">
220 æ··åˆé”€å”® 243 部分ä¸å‡ºå”®
221 </string> 244 </string>
222 </panel> 245 </panel>
223 <panel label="物体" name="Object"> 246 <panel label="物体" name="Object">
224 <text name="select_single"> 247 <text name="select_single">
225 一次åªèƒ½ç¼–辑一个元件的å‚数。请选择å•ä¸ªå…ƒä»¶ã€‚ 248 ä¸èƒ½åŒæ—¶ç¼–辑多个元件的å‚数。请选择å•ä¸ªå…ƒä»¶ã€‚
226 </text> 249 </text>
227 <text name="edit_object"> 250 <text name="edit_object">
228 编辑物体å‚æ•°: 251 编辑物体å‚æ•°:
@@ -237,15 +260,50 @@
237 <spinner label="X" name="Pos X"/> 260 <spinner label="X" name="Pos X"/>
238 <spinner label="Y" name="Pos Y"/> 261 <spinner label="Y" name="Pos Y"/>
239 <spinner label="Z" name="Pos Z"/> 262 <spinner label="Z" name="Pos Z"/>
263 <button
264 name="copypos"
265 tool_tip="å¤åˆ¶ä½ç½®" />
266 <button
267 name="pastepos"
268 tool_tip="粘贴ä½ç½®" />
269 <button
270 label="p"
271 name="pasteposclip"
272 tool_tip="从剪贴æ¿ç²˜è´´ä½ç½®" />
240 <text name="label size"> 273 <text name="label size">
241 尺寸 (米) 274 尺寸 (米)
242 </text> 275 </text>
243 <spinner label="X" name="Scale X"/> 276 <spinner label="X" name="Scale X"/>
244 <spinner label="Y" name="Scale Y"/> 277 <spinner label="Y" name="Scale Y"/>
245 <spinner label="Z" name="Scale Z"/> 278 <spinner label="Z" name="Scale Z"/>
279 <button
280 label="C"
281 name="copysize"
282 tool_tip="å¤åˆ¶å°ºå¯¸" />
283 <button
284 label="P"
285 name="pastesize"
286 tool_tip="粘贴尺寸" />
287 <button
288 label="p"
289 name="pastesizeclip"
290 tool_tip="从剪贴æ¿ç²˜è´´å°ºå¯¸" />
246 <text name="label rotation"> 291 <text name="label rotation">
247 旋转 (角度) 292 旋转 (角度)
248 </text> 293 </text>
294 <button
295 label="C"
296 name="copyrot"
297 tool_tip="å¤åˆ¶æ–¹å‘" />
298 <button
299 label="P"
300 name="pasterot"
301 tool_tip="粘贴方å‘" />
302 <button
303 label="p"
304 name="pasterotclip"
305 tool_tip="从剪贴æ¿ç²˜è´´æ–¹å‘" />
306
249 <spinner label="X" name="Rot X"/> 307 <spinner label="X" name="Rot X"/>
250 <spinner label="Y" name="Rot Y"/> 308 <spinner label="Y" name="Rot Y"/>
251 <spinner label="Z" name="Rot Z"/> 309 <spinner label="Z" name="Rot Z"/>
@@ -518,6 +576,10 @@
518 编织 576 编织
519 </combo_item> 577 </combo_item>
520 </combo_box> 578 </combo_box>
579 <check_box
580 label="对é½å¹³é¢æè´¨"
581 name="checkbox planar align"
582 tool_tip="所有选中é¢çš„æ质与最åŽé€‰ä¸­é¢çš„æ质对é½ã€‚需è¦é€‰æ‹©å¹³é¢æ质映射。" />
521 <text name="tex scale"> 583 <text name="tex scale">
522 æ¯é¢é‡å¤æ¬¡æ•° 584 æ¯é¢é‡å¤æ¬¡æ•°
523 </text> 585 </text>
@@ -556,10 +618,10 @@
556 </tab_container> 618 </tab_container>
557 <panel name="land info panel"> 619 <panel name="land info panel">
558 <text name="label_parcel_info"> 620 <text name="label_parcel_info">
559 åœŸåœ°ä¿¡æ¯ 621 土地信æ¯:
560 </text> 622 </text>
561 <text name="label_area_price"> 623 <text name="label_area_price">
562 ä»·æ ¼: L$[PRICE] æ¯ [AREA]平方米. 624 ä»·æ ¼: [CURRENCY][PRICE] æ¯ [AREA]平方米.
563 </text> 625 </text>
564 <text name="label_area"> 626 <text name="label_area">
565 é¢ç§¯: [AREA] 平方米. 627 é¢ç§¯: [AREA] 平方米.
@@ -594,8 +656,11 @@
594 点击并拖动æ¥æ›´æ”¹è§†è§’ 656 点击并拖动æ¥æ›´æ”¹è§†è§’
595 </string> 657 </string>
596 <string name="status_grab"> 658 <string name="status_grab">
597 拖动以移动,按ä½Ctrl抬起,Ctrl+Shift旋转 659 æ‹–åŠ¨ä»¥ç§»åŠ¨ï¼ŒæŒ‰ä½ Ctrl 抬起,Ctrl+Shift 旋转
598 </string> 660 </string>
661 <string name="status_align">
662 CTRL-A 以对é½åˆ°è½´, CTRL-Shift-A 堆砌
663 </string>
599 <string name="status_place"> 664 <string name="status_place">
600 在世界中点击以创建 665 在世界中点击以创建
601 </string> 666 </string>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_tos.xml b/linden/indra/newview/skins/default/xui/zh/floater_tos.xml
index ed16075..29f7341 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_tos.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_tos.xml
@@ -9,8 +9,7 @@
9 æœåŠ¡æ¡æ¬¾åè®® 9 æœåŠ¡æ¡æ¬¾åè®®
10 </text> 10 </text>
11 <text name="tos_heading"> 11 <text name="tos_heading">
12 登陆第二人生å‰è¯·ä»”细阅读下列æœåŠ¡æ¡æ¬¾ã€‚è¦ç»§ç»­ç™»å½•åˆ°ç¬¬äºŒäººç”Ÿï¼Œ 12 登陆å‰è¯·ä»”细阅读下列æœåŠ¡æ¡æ¬¾ã€‚è¦ç»§ç»­ç™»å½•ï¼Œæ‚¨å¿…须接å—该å议。
13您必须接å—该å议。
14 </text> 13 </text>
15 <web_browser name="tos_html"/> 14 <web_browser name="tos_html"/>
16 15
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_voice_license.xml b/linden/indra/newview/skins/default/xui/zh/floater_voice_license.xml
new file mode 100644
index 0000000..06fc9c1
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_voice_license.xml
@@ -0,0 +1,25 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="modal container"
4 title="">
5 <button
6 label="继续"
7 label_selected="继续"
8 name="Continue" />
9 <button
10 label="å–消"
11 label_selected="å–消"
12 name="Cancel" />
13 <check_box
14 label="我接å—Vivox使用æ¡ä¾‹ã€‚"
15 name="agree_chk" />
16 <text
17 name="license_heading">
18请仔细阅读以下的æ¡ä¾‹æ–‡æœ¬ã€‚
19è¦ä½¿ç”¨Vivox语音èŠå¤©ï¼Œæ‚¨å¿…须接å—æ¡ä¾‹æ¬¾é¡¹ã€‚
20 </text>
21 <!-- Loading text says: "Loading Vivox Acceptable Use Policy..." URL encoded -->
22 <web_browser
23 name="license_html"
24 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//vivox.com/vivox_aup.html%22%3EVivox%20Acceptable%20Use%20Policy%3C/a%3E...%3C/h2%3E %3C/body%3E %3C/html%3E" />
25</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_water.xml b/linden/indra/newview/skins/default/xui/zh/floater_water.xml
index bc4091a..0defeb3 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_water.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_water.xml
@@ -5,7 +5,22 @@
5 </text> 5 </text>
6 <combo_box allow_text_entry="false" max_chars="20" name="WaterPresetsCombo"/> 6 <combo_box allow_text_entry="false" max_chars="20" name="WaterPresetsCombo"/>
7 <button label="新建" label_selected="新建" name="WaterNewPreset"/> 7 <button label="新建" label_selected="新建" name="WaterNewPreset"/>
8 <button label="ä¿å­˜" label_selected="ä¿å­˜" name="WaterSavePreset"/> 8 <flyout_button
9 label="ä¿å­˜åˆ°ç¡¬ç›˜"
10 name="WaterSavePreset">
11 <flyout_button_item
12 name="save_inventory_item">
13 ä¿å­˜åˆ°åº“å­˜
14 </flyout_button_item>
15 <flyout_button_item
16 name="save_disk_item">
17 ä¿å­˜åˆ°ç¡¬ç›˜
18 </flyout_button_item>
19 <flyout_button_item
20 name="send_to_server_item">
21 å‘é€åˆ°æœåŠ¡å™¨
22 </flyout_button_item>
23 </flyout_button>
9 <button label="删除" label_selected="Delete" name="WaterDeletePreset"/> 24 <button label="删除" label_selected="Delete" name="WaterDeletePreset"/>
10 <tab_container name="Water Tabs" tab_position="top"> 25 <tab_container name="Water Tabs" tab_position="top">
11 <panel label="设置" name="Settings"> 26 <panel label="设置" name="Settings">
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_windlight_manager.xml b/linden/indra/newview/skins/default/xui/zh/floater_windlight_manager.xml
new file mode 100644
index 0000000..f69e94d
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/floater_windlight_manager.xml
@@ -0,0 +1,33 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater
3 name="WindLight send to server floater"
4 title="WindLight 管ç†å™¨">
5 <button
6 label="当å‰åœ°å—"
7 label_selected="当å‰åœ°å—"
8 name="this_parcel" />
9 <button
10 label="所有地å—"
11 label_selected="所有地å—"
12 name="all_parcels" />
13 <button
14 label="当å‰åŒºåŸŸ"
15 label_selected="当å‰åŒºåŸŸ"
16 name="this_region" />
17 <text
18 name="KeyFramePresetsText">
19 预设:
20 </text>
21 <button
22 label="显示"
23 label_selected="显示"
24 name="show" />
25 <button
26 label="设置为当å‰é¢„设"
27 label_selected="设置为当å‰é¢„设"
28 name="set_to_current" />
29 <button
30 label="移除"
31 label_selected="移除"
32 name="remove" />
33</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_windlight_options.xml b/linden/indra/newview/skins/default/xui/zh/floater_windlight_options.xml
index e9c260d..bbce687 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_windlight_options.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_windlight_options.xml
@@ -4,7 +4,22 @@
4 天空预设: 4 天空预设:
5 </text> 5 </text>
6 <button label="新建" label_selected="新建" name="WLNewPreset"/> 6 <button label="新建" label_selected="新建" name="WLNewPreset"/>
7 <button label="ä¿å­˜" label_selected="ä¿å­˜" name="WLSavePreset"/> 7 <flyout_button
8 label="ä¿å­˜åˆ°ç¡¬ç›˜"
9 name="WLSavePreset">
10 <flyout_button_item
11 name="save_inventory_item">
12 ä¿å­˜åˆ°åº“å­˜
13 </flyout_button_item>
14 <flyout_button_item
15 name="save_disk_item">
16 ä¿å­˜åˆ°ç¡¬ç›˜
17 </flyout_button_item>
18 <flyout_button_item
19 name="send_to_server_item">
20 å‘é€åˆ°æœåŠ¡å™¨
21 </flyout_button_item>
22 </flyout_button>
8 <button label="删除" label_selected="删除" name="WLDeletePreset"/> 23 <button label="删除" label_selected="删除" name="WLDeletePreset"/>
9 <button label="日夜循环编辑器" label_selected="日夜循环编辑器" name="WLDayCycleMenuButton"/> 24 <button label="日夜循环编辑器" label_selected="日夜循环编辑器" name="WLDayCycleMenuButton"/>
10 <tab_container name="WindLight Tabs" tab_position="top"> 25 <tab_container name="WindLight Tabs" tab_position="top">
@@ -64,6 +79,10 @@
64 </text> 79 </text>
65 <button label="?" name="WLMaxAltitudeHelp"/> 80 <button label="?" name="WLMaxAltitudeHelp"/>
66 <slider label="" name="WLMaxAltitude" /> 81 <slider label="" name="WLMaxAltitude" />
82 <button
83 label="日夜周期编辑器"
84 label_selected="日夜周期编辑器"
85 name="WLDayCycleMenuButton" />
67 </panel> 86 </panel>
68 <panel label="光照" name="Lighting"> 87 <panel label="光照" name="Lighting">
69 <text name="SLCText"> 88 <text name="SLCText">
@@ -181,6 +200,14 @@
181 <check_box label="Lock" name="WLCloudLockY"/> 200 <check_box label="Lock" name="WLCloudLockY"/>
182 <check_box label="渲染旧云层" name="DrawClassicClouds"/> 201 <check_box label="渲染旧云层" name="DrawClassicClouds"/>
183 <button label="?" name="WLClassicCloudsHelp"/> 202 <button label="?" name="WLClassicCloudsHelp"/>
203 <text
204 name="WLCloudHeightText">
205 旧云层高度
206 </text>
207 <text
208 name="WLCloudClassicRangeText">
209 旧云层范围
210 </text>
184 </panel> 211 </panel>
185 </tab_container> 212 </tab_container>
186 <string name="WLDefaultSkyNames"> 213 <string name="WLDefaultSkyNames">
diff --git a/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_attachment.xml b/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_attachment.xml
new file mode 100644
index 0000000..a6204ea
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_attachment.xml
@@ -0,0 +1,7 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<pie_menu name="Attachment Pie">
3 <menu_item_call label="丢下" name="Drop" />
4 <menu_item_call label="审查" name="Object Inspect" />
5 <menu_item_call label="å¸ä¸‹" name="Detach" />
6 <menu_item_call label="编辑..." name="Edit" />
7</pie_menu>
diff --git a/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_avatar.xml b/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_avatar.xml
new file mode 100644
index 0000000..f23c2f4
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_avatar.xml
@@ -0,0 +1,22 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<pie_menu name="Avatar Pie">
3 <menu_item_call label="档案..." name="Profile..." />
4 <menu_item_call label="å±è”½" name="Avatar Mute" />
5 <!--TODO-->
6 <menu_item_call label="å‰å¾€" name="Go To" />
7 <menu_item_call label="报告..." name="abuse"/>
8
9
10 <menu_item_call label="添加好å‹..." name="Add Friend" />
11 <menu_item_call label="付款..." name="Pay..." />
12 <pie_menu label="更多 &gt;" name="More &gt;">
13 <menu_item_call label="冻结..." name="Freeze..." />
14 <menu_item_call label="赠与å片" name="Give Card" />
15 <menu_item_call label="社团邀请..." name="Invite..." />
16 <menu_item_call label="驱é€..." name="Eject..." />
17 <menu_item_call label="调试..." name="Debug..." />
18 <menu_item_call label="审查" name="Avatar Inspect"/>
19 <menu_item_call label="éšè—" name="Derender" />
20 </pie_menu>
21 <menu_item_call label="å‘é€æ¶ˆæ¯..." name="Send IM..." />
22</pie_menu>
diff --git a/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_land.xml b/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_land.xml
new file mode 100644
index 0000000..97241fd
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_land.xml
@@ -0,0 +1,12 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<pie_menu name="Land Pie">
3 <menu_item_call label="关于土地..." name="About Land..." />
4 <menu_item_call label="建造" name="Create" />
5 <menu_item_call label="å‰å¾€" name="Go Here" />
6 <menu_item_call label="å在这里" name="Sit Here" />
7 <menu_item_call label="购买通行è¯" name="Land Buy Pass" />
8 <menu_item_call label="编辑地形" name="Edit Terrain" />
9 <menu_item_call label="购买土地..." name="Land Buy" />
10 <menu_item_call label="添加地标" name="Add Landmark">
11</pie_menu>
12<!-- Translated for Second Life 1.19.0 (80267) --> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_object.xml b/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_object.xml
new file mode 100644
index 0000000..bb9e8b1
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_object.xml
@@ -0,0 +1,30 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<pie_menu name="Object Pie">
3 <menu_item_call label="打开" name="Open"/>
4 <menu_item_call label="触摸" name="Object Touch" />
5 <menu_item_call label="å在这里" name="Object Sit" />
6 <menu_item_call label="æ‹¿èµ°" name="Pie Object Take" />
7 <menu_item_call label="付款..." name="Pay..."/>
8 <menu_item_call label="创造" name="Create"/>
9 <pie_menu label="更多 &gt;" name="More &gt;">
10 <menu_item_call label="删除" name="Delete"/>
11 <menu_item_call label="穿上" name="Wear"/>
12 <menu_item_call label="拿走副本" name="Take Copy"/>
13 <pie_menu label="装上到HUD &gt;" name="Object Attach HUD"/>
14 <pie_menu label="装备到&gt;" name="Object Attach"/>
15 <menu_item_call label="归还..." name="Return..."/>
16 <pie_menu label="更多 &gt;" name="Rate Menu">
17 <menu_item_call label="导出" name="Export" />
18 <menu_item_call label="å±è”½" name="Object Mute" />
19 <menu_item_call label="报告..." name="Report Abuse..." />
20 <menu_item_call label="å‰å¾€" name="Go To" />
21 <menu_item_call label="å±è”½" name="Object Mute"/>
22 <menu_item_call label="审查" name="Object Inspect"/>
23 <menu_item_call label="éšè—" name="Derender" />
24 <menu_item_call name="链接" label="Link" />
25 <menu_item_call name="解除链接" label="Unlink" />
26 </pie_menu>
27 <menu_item_call label="è´­ä¹°..." name="Buy..."/>
28 </pie_menu>
29 <menu_item_call label="编辑..." name="Edit..."/>
30</pie_menu>
diff --git a/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_self.xml b/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_self.xml
new file mode 100644
index 0000000..2b79bf2
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/legacy_menu_pie_self.xml
@@ -0,0 +1,29 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<pie_menu name="Self Pie">
3 <menu_item_call label="档案..." name="Profile..." />
4 <menu_item_call label="社团..." name="Groups..." />
5 <menu_item_call label="去往..." name="Go..." />
6 <menu_item_call label="起身" name="Stand Up" />
7 <menu_item_call label="朋å‹..." name="Friends..." />
8 <menu_item_call label="动作..." name="Gestures..." />
9 <pie_menu label="脱下 &gt;" name="Take Off &gt;">
10 <pie_menu label="æœé¥° &gt;" name="Clothes &gt;">
11 <menu_item_call label="衬衣" name="Shirt" />
12 <menu_item_call label="裤å­" name="Pants" />
13 <menu_item_call label="éž‹å­" name="Shoes" />
14 <menu_item_call label="袜å­" name="Socks" />
15 <menu_item_call label="夹克" name="Jacket" />
16 <menu_item_call label="手套" name="Gloves" />
17 <pie_menu label="更多 &gt;" name="More &gt;">
18 <menu_item_call label="内衣" name="Self Undershirt" />
19 <menu_item_call label="所有æœé¥°" name="All Clothes" />
20 <menu_item_call label="内裤" name="Self Underpants" />
21 </pie_menu>
22 <menu_item_call label="裙å­" name="Skirt" />
23 </pie_menu>
24 <pie_menu label="HUD &gt;" name="Object Detach HUD" />
25 <pie_menu label="å¸ä¸‹ &gt;" name="Object Detach" />
26 <menu_item_call label="分开全部" name="Detach All" />
27 </pie_menu>
28 <menu_item_call label="外观..." name="Appearance..." />
29</pie_menu>
diff --git a/linden/indra/newview/skins/default/xui/zh/menu_inventory.xml b/linden/indra/newview/skins/default/xui/zh/menu_inventory.xml
index fee52b9..4a1547e 100644
--- a/linden/indra/newview/skins/default/xui/zh/menu_inventory.xml
+++ b/linden/indra/newview/skins/default/xui/zh/menu_inventory.xml
@@ -22,6 +22,8 @@
22 <menu_item_call label="新建手套" name="New Gloves"/> 22 <menu_item_call label="新建手套" name="New Gloves"/>
23 <menu_item_call label="新建内衣" name="New Undershirt"/> 23 <menu_item_call label="新建内衣" name="New Undershirt"/>
24 <menu_item_call label="新建内裤" name="New Underpants"/> 24 <menu_item_call label="新建内裤" name="New Underpants"/>
25 <menu_item_call label="新建纹身" name="New Tattoo" />
26 <menu_item_call label="新建é€æ˜Žåº¦è’™æ¿" name="New Alpha" />
25 </menu> 27 </menu>
26 <menu name="New Body Parts"> 28 <menu name="New Body Parts">
27 <menu_item_call label="新建体型" name="New Shape"/> 29 <menu_item_call label="新建体型" name="New Shape"/>
@@ -38,6 +40,7 @@
38 <menu_item_call label="属性" name="Properties"/> 40 <menu_item_call label="属性" name="Properties"/>
39 <menu_item_call label="é‡å‘½å" name="Rename"/> 41 <menu_item_call label="é‡å‘½å" name="Rename"/>
40 <menu_item_call label="å¤åˆ¶èµ„产UUID" name="Copy Asset UUID"/> 42 <menu_item_call label="å¤åˆ¶èµ„产UUID" name="Copy Asset UUID"/>
43 <menu_item_call label="剪切" name="Cut" />
41 <menu_item_call label="å¤åˆ¶" name="Copy"/> 44 <menu_item_call label="å¤åˆ¶" name="Copy"/>
42 <menu_item_call label="粘贴" name="Paste"/> 45 <menu_item_call label="粘贴" name="Paste"/>
43 <menu_item_call label="删除" name="Delete"/> 46 <menu_item_call label="删除" name="Delete"/>
@@ -55,12 +58,15 @@
55 <menu_item_call label="激活" name="Activate"/> 58 <menu_item_call label="激活" name="Activate"/>
56 <menu_item_call label="解除激活" name="Deactivate"/> 59 <menu_item_call label="解除激活" name="Deactivate"/>
57 <menu_item_call label="从自己身上å¸ä¸‹" name="Detach From Yourself"/> 60 <menu_item_call label="从自己身上å¸ä¸‹" name="Detach From Yourself"/>
58 <menu_item_call label="æ¢å¤è‡³ä¸Šä¸€ä½ç½®" name="Restore to Last Position"/> 61 <menu_item_call label="æ¢å¤è‡³æœåŽä½ç½®" name="Restore to Last Position"/>
59 <menu_item_call label="穿上" name="Object Wear"/> 62 <menu_item_call label="穿上" name="Object Wear"/>
60 <menu label="装备至" name="Attach To"/> 63 <menu label="装备至" name="Attach To"/>
61 <menu label="装备到HUD" name="Attach To HUD"/> 64 <menu label="装备到HUD" name="Attach To HUD"/>
62 <menu_item_call label="编辑" name="Wearable Edit"/> 65 <menu_item_call label="编辑" name="Wearable Edit"/>
63 <menu_item_call label="穿上" name="Wearable Wear"/> 66 <menu_item_call label="穿上" name="Wearable Wear"/>
64 <menu_item_call label="脱掉" name="Take Off"/> 67 <menu_item_call label="脱掉" name="Take Off"/>
68 <menu_item_call label="使用 WindLight 设置" name="Use WindLight Settings" />
69 <menu_item_call label="使用水é¢è®¾ç½®" name="Use WaterLight Settings" />
70 <menu_item_call label="编辑 WindLight 设置" name="Edit WindLight Settings" />
65 <menu_item_call label="--æ— å¯ç”¨é€‰é¡¹--" name="--no options--"/> 71 <menu_item_call label="--æ— å¯ç”¨é€‰é¡¹--" name="--no options--"/>
66</menu> 72</menu>
diff --git a/linden/indra/newview/skins/default/xui/zh/menu_login.xml b/linden/indra/newview/skins/default/xui/zh/menu_login.xml
index a00ae90..8c70de2 100644
--- a/linden/indra/newview/skins/default/xui/zh/menu_login.xml
+++ b/linden/indra/newview/skins/default/xui/zh/menu_login.xml
@@ -32,5 +32,25 @@
32 name="About Second Life..."> 32 name="About Second Life...">
33 <on_click /> 33 <on_click />
34 </menu_item_call> 34 </menu_item_call>
35 <menu_item_call
36 label="Grid Help"
37 name="Grid Help" />
38 <menu_item_call
39 label="Imprudence 网络日志"
40 name="Imprudence Blog" />
41 <menu_item_call
42 label="Imprudence 论å›"
43 name="Imprudence Forums" />
44 <menu_item_call
45 label="关于 Imprudence"
46 name="About Imprudence" />
47 </menu>
48 <menu
49 label="高级"
50 name="Advanced">
51 <menu_item_call
52 name="Debug Settings"
53 label="调试设置" />
35 </menu> 54 </menu>
36</menu_bar> \ No newline at end of file 55</menu_bar>
56
diff --git a/linden/indra/newview/skins/default/xui/zh/menu_pie_attachment.xml b/linden/indra/newview/skins/default/xui/zh/menu_pie_attachment.xml
index 7891fd1..321a652 100644
--- a/linden/indra/newview/skins/default/xui/zh/menu_pie_attachment.xml
+++ b/linden/indra/newview/skins/default/xui/zh/menu_pie_attachment.xml
@@ -1,15 +1,18 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<pie_menu name="Attachment Pie"> 2<pie_menu name="Attachment Pie">
3 <menu_item_call label="档案..." name="Profile..."/> 3 <menu_item_call label="档案..." name="Profile..."/>
4 <menu_item_call label="丢下" name="Drop" /> 4 <menu_item_call label="社团..." name="Groups"/>
5 <menu_item_call label="社团..." name="Groups..."/> 5 <menu_item_call label="触摸" name="Attachment Touch"/>
6 <menu_item_call label="触摸" name="Attachment Object Touch"> 6
7 <on_enable userdata="触摸" name="EnableTouch"/>
8 </menu_item_call>
9 <menu_item_call label="起身" name="Stand Up"/> 7 <menu_item_call label="起身" name="Stand Up"/>
10 <menu_item_call label="å¸ä¸‹" name="Detach" /> 8
11 <menu_item_call label="好å‹..." name="Friends..."/> 9 <menu_item_call label="好å‹..." name="Friends"/>
12 <menu_item_call label="动作..." name="Gestures..."/> 10 <menu_item_call label="动作..." name="Gestures..."/>
13 <menu_item_call label="外观..." name="Appearance..."/> 11 <menu_item_call label="外观..." name="Appearance..."/>
14 <menu_item_call label="编辑..." name="Edit..."/> 12 <menu_item_call label="编辑..." name="Edit..."/>
13 <pie_menu label="更多 &gt;" name="More &gt;">
14 <menu_item_call label="丢下" name="Drop" />
15 <menu_item_call label="å¸ä¸‹" name="Detach" />
16 <menu_item_call label="审查" name="Object Inspect" />
17 </pie_menu>
15</pie_menu> 18</pie_menu>
diff --git a/linden/indra/newview/skins/default/xui/zh/menu_pie_avatar.xml b/linden/indra/newview/skins/default/xui/zh/menu_pie_avatar.xml
index 684e9a3..8f983d6 100644
--- a/linden/indra/newview/skins/default/xui/zh/menu_pie_avatar.xml
+++ b/linden/indra/newview/skins/default/xui/zh/menu_pie_avatar.xml
@@ -1,19 +1,21 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<pie_menu name="Avatar Pie"> 2<pie_menu name="Avatar Pie">
3 <menu_item_call label="档案..." name="Profile..." /> 3 <menu_item_call label="档案" name="Profile" />
4 <menu_item_call label="å±è”½" name="Avatar Mute" /> 4 <menu_item_call label="å±è”½" name="Avatar Mute" />
5 <!--TODO--> 5 <!--TODO-->
6 <menu_item_call label="去往" name="Go To" /> 6 <menu_item_call label="å‰å¾€" name="Go To" />
7 <menu_item_call label="报告..." name="abuse"/> 7 <menu_item_call label="社团邀请..." name="Invite..." />
8
8 <menu_item_call label="添加好å‹..." name="Add Friend" /> 9 <menu_item_call label="添加好å‹..." name="Add Friend" />
9 <menu_item_call label="付款..." name="Pay..." /> 10 <menu_item_call label="付款..." name="Pay..." />
10 <pie_menu label="更多 &gt;" name="More &gt;"> 11 <pie_menu label="更多 &gt;" name="More &gt;">
11 <menu_item_call label="冻结..." name="Freeze..." /> 12 <menu_item_call label="冻结..." name="Freeze" />
12 <menu_item_call label="赠与å片" name="Give Card" /> 13 <menu_item_call label="赠与å片" name="Give Card" />
13 <menu_item_call label="社团邀请..." name="Invite..." /> 14 <menu_item_call label="报告..." name="abuse"/>
14 <menu_item_call label="驱é€..." name="Eject..." /> 15 <menu_item_call label="驱é€..." name="Eject" />
15 <menu_item_call label="调试..." name="Debug..." /> 16 <menu_item_call label="调试..." name="Debug..." />
16 <menu_item_call label="审查" name="Object Inspect"/> 17 <menu_item_call label="审查" name="Avatar Inspect"/>
18 <menu_item_call label="éšè—" name="Derender" />
17 </pie_menu> 19 </pie_menu>
18 <menu_item_call label="å‘é€æ¶ˆæ¯..." name="Send IM..." /> 20 <menu_item_call label="å‘é€æ¶ˆæ¯..." name="Send IM..." />
19</pie_menu> 21</pie_menu>
diff --git a/linden/indra/newview/skins/default/xui/zh/menu_pie_hud.xml b/linden/indra/newview/skins/default/xui/zh/menu_pie_hud.xml
new file mode 100644
index 0000000..773c5bd
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/menu_pie_hud.xml
@@ -0,0 +1,8 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<pie_menu name="HUD Pie">
3 <menu_item_call label="丢下" name="Drop" />
4 <menu_item_call label="触摸" name="Attachment Touch" />
5 <menu_item_call label="审查" name="Object Inspect" />
6 <menu_item_call label="å¸ä¸‹" name="Detach" />
7 <menu_item_call label="编辑..." name="Edit..." />
8</pie_menu> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/menu_pie_land.xml b/linden/indra/newview/skins/default/xui/zh/menu_pie_land.xml
index fb420b8..97241fd 100644
--- a/linden/indra/newview/skins/default/xui/zh/menu_pie_land.xml
+++ b/linden/indra/newview/skins/default/xui/zh/menu_pie_land.xml
@@ -1,11 +1,12 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<pie_menu name="Land Pie"> 2<pie_menu name="Land Pie">
3 <menu_item_call label="关于土地..." name="About Land..." /> 3 <menu_item_call label="关于土地..." name="About Land..." />
4 <menu_item_call label="创建" name="Create" /> 4 <menu_item_call label="建造" name="Create" />
5 <menu_item_call label="去这里" name="Go Here" /> 5 <menu_item_call label="å‰å¾€" name="Go Here" />
6 <menu_item_call label="å在这里" name="Sit Here" /> 6 <menu_item_call label="å在这里" name="Sit Here" />
7 <menu_item_call label="购买通行è¯" name="Land Buy Pass" /> 7 <menu_item_call label="购买通行è¯" name="Land Buy Pass" />
8 <menu_item_call label="编辑地形" name="Edit Terrain" /> 8 <menu_item_call label="编辑地形" name="Edit Terrain" />
9 <menu_item_call label="购买土地..." name="Land Buy" /> 9 <menu_item_call label="购买土地..." name="Land Buy" />
10 <menu_item_call label="添加地标" name="Add Landmark">
10</pie_menu> 11</pie_menu>
11<!-- Translated for Second Life 1.19.0 (80267) --> \ No newline at end of file 12<!-- Translated for Second Life 1.19.0 (80267) --> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/menu_pie_object.xml b/linden/indra/newview/skins/default/xui/zh/menu_pie_object.xml
index 0a43667..5d28932 100644
--- a/linden/indra/newview/skins/default/xui/zh/menu_pie_object.xml
+++ b/linden/indra/newview/skins/default/xui/zh/menu_pie_object.xml
@@ -1,18 +1,13 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<pie_menu name="Object Pie"> 2<pie_menu name="Object Pie">
3 <menu_item_call label="打开" name="Open"/> 3 <menu_item_call label="打开" name="Open"/>
4 <menu_item_call label="创造" name="Create"/> 4 <menu_item_call label="购买..." name="Buy..."/>
5 <menu_item_call label="触摸" name="Object Touch"> 5 <menu_item_call label="触摸" name="Object Touch" />
6 <on_enable userdata="触摸" name="EnableTouch"/> 6 <menu_item_call label="å在这里" name="Object Sit" />
7 </menu_item_call> 7 <menu_item_call label="æ‹¿èµ°" name="Pie Object Take" />
8 <menu_item_call label="å在这里" name="Object Sit">
9 <on_enable userdata="å在这里,起身" name="EnableSitOrStand"/>
10 </menu_item_call>
11 <menu_item_call label="æ‹¿èµ°" name="Pie Object Take">
12 <on_enable userdata="è´­ä¹°,æ‹¿èµ°" name="EnableBuyOrTake"/>
13 </menu_item_call>
14 <menu_item_call label="付款..." name="Pay..."/> 8 <menu_item_call label="付款..." name="Pay..."/>
15 <pie_menu label="更多 &gt;" name="More &gt;"> 9 <pie_menu label="更多 &gt;" name="More &gt;">
10 <menu_item_call label="建造" name="Create"/>
16 <menu_item_call label="删除" name="Delete"/> 11 <menu_item_call label="删除" name="Delete"/>
17 <menu_item_call label="穿上" name="Wear"/> 12 <menu_item_call label="穿上" name="Wear"/>
18 <menu_item_call label="拿走副本" name="Take Copy"/> 13 <menu_item_call label="拿走副本" name="Take Copy"/>
@@ -20,11 +15,16 @@
20 <pie_menu label="装备到&gt;" name="Object Attach"/> 15 <pie_menu label="装备到&gt;" name="Object Attach"/>
21 <menu_item_call label="归还..." name="Return..."/> 16 <menu_item_call label="归还..." name="Return..."/>
22 <pie_menu label="更多 &gt;" name="Rate Menu"> 17 <pie_menu label="更多 &gt;" name="Rate Menu">
23 <menu_item_call label="报告..." name="Report Abuse..."/> 18 <menu_item_call label="导出" name="Export" />
19 <menu_item_call label="å±è”½" name="Object Mute" />
20 <menu_item_call label="报告..." name="Report Abuse..." />
21 <menu_item_call label="å‰å¾€" name="Go To" />
24 <menu_item_call label="å±è”½" name="Object Mute"/> 22 <menu_item_call label="å±è”½" name="Object Mute"/>
25 <menu_item_call label="审查" name="Object Inspect"/> 23 <menu_item_call label="审查" name="Object Inspect"/>
24 <menu_item_call label="éšè—" name="Derender" />
25 <menu_item_call name="链接" label="Link" />
26 <menu_item_call name="解除链接" label="Unlink" />
26 </pie_menu> 27 </pie_menu>
27 <menu_item_call label="è´­ä¹°..." name="Buy..."/>
28 </pie_menu> 28 </pie_menu>
29 <menu_item_call label="编辑..." name="Edit..."/> 29 <menu_item_call label="编辑..." name="Edit..."/>
30</pie_menu> 30</pie_menu>
diff --git a/linden/indra/newview/skins/default/xui/zh/menu_pie_self.xml b/linden/indra/newview/skins/default/xui/zh/menu_pie_self.xml
index 2b79bf2..75bb349 100644
--- a/linden/indra/newview/skins/default/xui/zh/menu_pie_self.xml
+++ b/linden/indra/newview/skins/default/xui/zh/menu_pie_self.xml
@@ -1,10 +1,10 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<pie_menu name="Self Pie"> 2<pie_menu name="Self Pie">
3 <menu_item_call label="档案..." name="Profile..." /> 3 <menu_item_call label="档案..." name="Profile..." />
4 <menu_item_call label="社团..." name="Groups..." /> 4 <menu_item_call label="社团" name="Groups" />
5 <menu_item_call label="去往..." name="Go..." /> 5 <menu_item_call label="åå¾€..." name="Go..." />
6 <menu_item_call label="起身" name="Stand Up" /> 6 <menu_item_call label="起身" name="Stand Up" />
7 <menu_item_call label="朋å‹..." name="Friends..." /> 7 <menu_item_call label="好å‹" name="Friends" />
8 <menu_item_call label="动作..." name="Gestures..." /> 8 <menu_item_call label="动作..." name="Gestures..." />
9 <pie_menu label="脱下 &gt;" name="Take Off &gt;"> 9 <pie_menu label="脱下 &gt;" name="Take Off &gt;">
10 <pie_menu label="æœé¥° &gt;" name="Clothes &gt;"> 10 <pie_menu label="æœé¥° &gt;" name="Clothes &gt;">
@@ -16,7 +16,9 @@
16 <menu_item_call label="手套" name="Gloves" /> 16 <menu_item_call label="手套" name="Gloves" />
17 <pie_menu label="更多 &gt;" name="More &gt;"> 17 <pie_menu label="更多 &gt;" name="More &gt;">
18 <menu_item_call label="内衣" name="Self Undershirt" /> 18 <menu_item_call label="内衣" name="Self Undershirt" />
19 <menu_item_call label="é€æ˜Žåº¦è’™æ¿" name="Self Alpha" />
19 <menu_item_call label="所有æœé¥°" name="All Clothes" /> 20 <menu_item_call label="所有æœé¥°" name="All Clothes" />
21 <menu_item_call label="纹身" name="Self Tattoo" />
20 <menu_item_call label="内裤" name="Self Underpants" /> 22 <menu_item_call label="内裤" name="Self Underpants" />
21 </pie_menu> 23 </pie_menu>
22 <menu_item_call label="裙å­" name="Skirt" /> 24 <menu_item_call label="裙å­" name="Skirt" />
diff --git a/linden/indra/newview/skins/default/xui/zh/menu_rightclick_text.xml b/linden/indra/newview/skins/default/xui/zh/menu_rightclick_text.xml
index 36fa667..7282c5e 100644
--- a/linden/indra/newview/skins/default/xui/zh/menu_rightclick_text.xml
+++ b/linden/indra/newview/skins/default/xui/zh/menu_rightclick_text.xml
@@ -1,116 +1,30 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2 2<menu name="Text Edit Menu">
3<menu drop_shadow="true" 3 <menu_item_call label="剪切" name="Cut Text" />
4 mouse_opaque="false" name="Text Edit Menu" opaque="true"> 4 <menu_item_call label="å¤åˆ¶" name="Copy Text" />
5 <menu_item_call label="Cut" mouse_opaque="true" 5 <menu_item_call label="粘贴" name="Paste Text" />
6 name="Cut Text"> 6 <menu_item_call label="删除" name="Delete Text" />
7 <on_click function="textfield_cut" userdata="about" /> 7 <menu_item_call label="全选" name="Select All Text" />
8 <on_enable function="textfield_cut_enable" /> 8 <menu name="Translation Options" label="翻译为...">
9 </menu_item_call> 9 <!--
10 <menu_item_call label="Copy" mouse_opaque="true" 10 <menu_item_call label="英语" name="Translate Text" />
11 name="Copy Text" > 11 <menu_item_call label="丹麦语" name="Translate Text" />
12 <on_click function="textfield_copy" userdata="" /> 12 <menu_item_call label="德语" name="Translate Text" />
13 <on_enable function="textfield_copy_enable" /> 13 <menu_item_call label="西ç­ç‰™è¯­" name="Translate Text" />
14 </menu_item_call> 14 <menu_item_call label="法语" name="Translate Text" />
15 <menu_item_call label="Paste" mouse_opaque="true" 15 <menu_item_call label="æ„大利语" name="Translate Text" />
16 name="Paste Text" > 16 <menu_item_call label="匈牙利语 " name="Translate Text" />
17 <on_click function="textfield_paste" userdata="" /> 17 <menu_item_call label="è·å…°è¯­" name="Translate Text" />
18 <on_enable function="textfield_paste_enable" /> 18 <menu_item_call label="波兰语" name="Translate Text" />
19 </menu_item_call> 19 <menu_item_call label="è‘¡è„牙语" name="Translate Text" />
20 <menu_item_call label="Delete" mouse_opaque="true" 20 <menu_item_call label="俄语" name="Translate Text" />
21 name="Delete Text" > 21 <menu_item_call label="土耳其语" name="Translate Text" />
22 <on_click function="textfield_delete" userdata="" /> 22 <menu_item_call label="乌克兰语" name="Translate Text" />
23 <on_enable function="textfield_delete_enable" /> 23 <menu_item_call label="中文" name="Translate Text" />
24 </menu_item_call> 24 <menu_item_call label="日语" name="Translate Text" />
25 <menu_item_separator /> 25 <menu_item_call label="韩语/æœé²œè¯­" name="Translate Text" />
26 <menu_item_call label="Select All" mouse_opaque="true" 26 -->
27 name="Select All Text" > 27 </menu>
28 <on_click function="textfield_selectall" userdata="" />
29 <on_enable function="textfield_selectall_enable" />
30 </menu_item_call>
31 <menu_item_separator name="Translate" />
32 <menu drop_shadow="true"
33 mouse_opaque="false" name="Translation Options"
34 bottom_delta="0" label="Translate To..." opaque="true" >
35 <menu_item_call label="English" mouse_opaque="true"
36 name="Translate Text" >
37 <on_click function="textfield_translate" translate="true" userdata="en" />
38 <on_enable function="textfield_translate_enable" />
39 </menu_item_call>
40 <menu_item_call label="Danish" mouse_opaque="true"
41 name="Translate Text" >
42 <on_click function="textfield_translate" translate="true" userdata="da" />
43 <on_enable function="textfield_translate_enable" />
44 </menu_item_call>
45 <menu_item_call label="Deutsch (German)" mouse_opaque="true"
46 name="Translate Text" >
47 <on_click function="textfield_translate" translate="true" userdata="de" />
48 <on_enable function="textfield_translate_enable" />
49 </menu_item_call>
50 <menu_item_call label="Spanish" mouse_opaque="true"
51 name="Translate Text" >
52 <on_click function="textfield_translate" translate="true" userdata="es" />
53 <on_enable function="textfield_translate_enable" />
54 </menu_item_call>
55 <menu_item_call label="French" mouse_opaque="true"
56 name="Translate Text" >
57 <on_click function="textfield_translate" translate="true" userdata="fr" />
58 <on_enable function="textfield_translate_enable" />
59 </menu_item_call>
60 <menu_item_call label="Italian" mouse_opaque="true"
61 name="Translate Text" >
62 <on_click function="textfield_translate" translate="true" userdata="it" />
63 <on_enable function="textfield_translate_enable" />
64 </menu_item_call>
65 <menu_item_call label="Hungarian" mouse_opaque="true"
66 name="Translate Text" >
67 <on_click function="textfield_translate" translate="true" userdata="hu" />
68 <on_enable function="textfield_translate_enable" />
69 </menu_item_call>
70 <menu_item_call label="Dutch" mouse_opaque="true"
71 name="Translate Text" >
72 <on_click function="textfield_translate" translate="true" userdata="nl" />
73 <on_enable function="textfield_translate_enable" />
74 </menu_item_call>
75 <menu_item_call label="Polish" mouse_opaque="true"
76 name="Translate Text" >
77 <on_click function="textfield_translate" translate="true" userdata="pl" />
78 <on_enable function="textfield_translate_enable" />
79 </menu_item_call>
80 <menu_item_call label="Portugese" mouse_opaque="true"
81 name="Translate Text" >
82 <on_click function="textfield_translate" translate="true" userdata="pt" />
83 <on_enable function="textfield_translate_enable" />
84 </menu_item_call>
85 <menu_item_call label="Russian" mouse_opaque="true"
86 name="Translate Text" >
87 <on_click function="textfield_translate" translate="true" userdata="ru" />
88 <on_enable function="textfield_translate_enable" />
89 </menu_item_call>
90 <menu_item_call label="Turkish" mouse_opaque="true"
91 name="Translate Text" >
92 <on_click function="textfield_translate" translate="true" userdata="tr" />
93 <on_enable function="textfield_translate_enable" />
94 </menu_item_call>
95 <menu_item_call label="Ukrainian" mouse_opaque="true"
96 name="Translate Text" >
97 <on_click function="textfield_translate" translate="true" userdata="uk" />
98 <on_enable function="textfield_translate_enable" />
99 </menu_item_call>
100 <menu_item_call label="Chinese" mouse_opaque="true"
101 name="Translate Text" >
102 <on_click function="textfield_translate" translate="true" userdata="zh" />
103 <on_enable function="textfield_translate_enable" />
104 </menu_item_call>
105 <menu_item_call label="Japanese" mouse_opaque="true"
106 name="Translate Text" >
107 <on_click function="textfield_translate" translate="true" userdata="ja" />
108 <on_enable function="textfield_translate_enable" />
109 </menu_item_call>
110 <menu_item_call label="Korean" mouse_opaque="true"
111 name="Translate Text" >
112 <on_click function="textfield_translate" translate="true" userdata="ko" />
113 <on_enable function="textfield_translate_enable" />
114 </menu_item_call>
115 </menu>
116</menu> 28</menu>
29
30
diff --git a/linden/indra/newview/skins/default/xui/zh/menu_viewer.xml b/linden/indra/newview/skins/default/xui/zh/menu_viewer.xml
index 0a2ea1b..b18bbde 100644
--- a/linden/indra/newview/skins/default/xui/zh/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/zh/menu_viewer.xml
@@ -2,15 +2,19 @@
2<menu_bar name="Main Menu"> 2<menu_bar name="Main Menu">
3 <menu label="文件" name="File"> 3 <menu label="文件" name="File">
4 <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/> 4 <tearoff_menu label="~~~~~~~~~~~" name="~~~~~~~~~~~"/>
5 <menu label="上传" name="upload"> 5 <menu label="上传" name="Upload">
6 <menu_item_call label="图åƒï¼ˆL$[COST])..." name="Upload Image"/> 6 <menu_item_call label="ä¸Šä¼ å›¾åƒ ([UPLOADFEE])..." name="Upload Image"/>
7 <menu_item_call label="声音(L$[COST])..." name="Upload Sound"/> 7 <menu_item_call label="上传声音 ([UPLOADFEE])..." name="Upload Sound"/>
8 <menu_item_call label="动画(L$[COST])..." name="Upload Animation"/> 8 <menu_item_call label="上传动画 ([UPLOADFEE])..." name="Upload Animation"/>
9 <menu_item_call label="大宗(æ¯ä»½éœ€ä»˜L$[COST])..." name="Bulk Upload"/> 9 <menu_item_call label="批é‡ä¸Šä¼  (æ¯ä¸ªæ–‡ä»¶éœ€ [UPLOADFEE])..." name="Bulk Upload"/>
10 <menu_item_separator label="-----------" name="separator"/>
11 <menu_item_call label="设置默认æƒé™..." name="perm prefs"/> 10 <menu_item_call label="设置默认æƒé™..." name="perm prefs"/>
12 </menu> 11 </menu>
13 <menu_item_separator label="-----------" name="separator"/> 12 <menu_item_call label="导入物体..." name="Import" />
13 <menu_item_call label="导入并上传... (æ¯ä¸ªæè´¨ [UPLOADFEE])" name="ImportUpload" />
14 <menu_item_call label="导出所选物体..." name="Export" />
15 <menu_item_call
16 name="Minimize All Windows"
17 label="最å°åŒ–所有窗å£" />
14 <menu_item_call label="关闭窗å£" name="Close Window"/> 18 <menu_item_call label="关闭窗å£" name="Close Window"/>
15 <menu_item_call label="关闭所有窗å£" name="Close All Windows"/> 19 <menu_item_call label="关闭所有窗å£" name="Close All Windows"/>
16 <menu_item_separator label="-----------" name="separator2"/> 20 <menu_item_separator label="-----------" name="separator2"/>
@@ -49,15 +53,20 @@
49 <menu_item_call label="内衣" name="Menu Undershirt"/> 53 <menu_item_call label="内衣" name="Menu Undershirt"/>
50 <menu_item_call label="内裤" name="Menu Underpants"/> 54 <menu_item_call label="内裤" name="Menu Underpants"/>
51 <menu_item_call label="裙å­" name="Skirt"/> 55 <menu_item_call label="裙å­" name="Skirt"/>
56 <menu_item_call label="纹身" name="Tattoo" />
57 <menu_item_call label="é€æ˜Žåº¦è’™æ¿" name="Alpha" />
52 <menu_item_call label="所有æœé¥°" name="All Clothes"/> 58 <menu_item_call label="所有æœé¥°" name="All Clothes"/>
53 </menu> 59 </menu>
54 <menu_item_separator label="-----------" name="separator6"/> 60 <menu_item_separator label="-----------" name="separator6"/>
55 <menu_item_call label="动作..." name="Gestures..."/> 61 <menu_item_call label="动作..." name="Gestures"/>
56 <menu_item_call label="档案..." name="Profile..."/> 62 <menu_item_call label="档案..." name="Profile..."/>
57 <menu_item_call label="外观..." name="Appearance..."/> 63 <menu_item_call label="外观..." name="Appearance..."/>
58 <menu_item_separator label="-----------" name="separator7"/> 64 <menu_item_call label="显示å称..." name="Display Name..." />
59 <menu_item_check label="朋å‹..." name="Friends..."/> 65 <menu_item_call label="刷新外观" name="Refresh Appearance" />
60 <menu_item_call label="社团..." name="Groups..."/> 66 <menu_item_separator label="-----------" name="separator7" />
67 <menu_item_check label="好å‹..." name="Friends"/>
68 <menu_item_call label="社团..." name="Groups"/>
69 <menu_item_check label="媒体过滤" name="Media Filter" />
61 <menu_item_separator label="-----------" name="separator8"/> 70 <menu_item_separator label="-----------" name="separator8"/>
62 <menu_item_call label="å‚数设置..." name="Preferences..."/> 71 <menu_item_call label="å‚数设置..." name="Preferences..."/>
63 </menu> 72 </menu>
@@ -69,17 +78,20 @@
69 <menu_item_call label="é‡æ–°è®¾ç½®è§†è§’" name="Reset View"/> 78 <menu_item_call label="é‡æ–°è®¾ç½®è§†è§’" name="Reset View"/>
70 <menu_item_call label="查看最åŽä¸€æ¬¡èŠå¤©è€…" name="Look at Last Chatter"/> 79 <menu_item_call label="查看最åŽä¸€æ¬¡èŠå¤©è€…" name="Look at Last Chatter"/>
71 <menu_item_separator label="-----------" name="separator"/> 80 <menu_item_separator label="-----------" name="separator"/>
81 <menu_item_check label="网络æµè§ˆå™¨" name="Web Browser" />
72 <menu_item_check label="工具æ " name="Toolbar"/> 82 <menu_item_check label="工具æ " name="Toolbar"/>
73 <menu_item_check label="èŠå¤©è®°å½•" name="Chat History"/> 83 <menu_item_check label="èŠå¤©è®°å½•" name="Chat History"/>
74 <menu_item_check label="å³æ—¶æ¶ˆæ¯" name="Instant Message"/> 84 <menu_item_check label="å³æ—¶æ¶ˆæ¯" name="Instant Message"/>
75 <menu_item_check label="库存" name="Inventory"/> 85 <menu_item_check label="库存" name="Inventory"/>
76 <menu_item_check label="活跃的说è¯äºº" name="Active Speakers"/> 86 <menu_item_check label="活跃的说è¯äºº" name="Active Speakers"/>
77 <menu_item_check label="å±è”½åå•" name="Mute List"/> 87 <menu_item_check label="å±è”½åå•" name="Mute List"/>
88 <menu_item_check label="瞬间移动历å²" name="Teleport History" />
78 <menu_item_separator label="-----------" name="separator2"/> 89 <menu_item_separator label="-----------" name="separator2"/>
79 <menu_item_check label="æ‘„åƒå¤´æŽ§åˆ¶" name="Camera Controls"/> 90 <menu_item_check label="æ‘„åƒå¤´æŽ§åˆ¶" name="Camera Controls"/>
80 <menu_item_check label="移动控制" name="Movement Controls"/> 91 <menu_item_check label="移动控制" name="Movement Controls"/>
81 <menu_item_check label="世界地图" name="World Map"/> 92 <menu_item_check label="世界地图" name="World Map"/>
82 <menu_item_check label="迷你地图" name="Mini-Map"/> 93 <menu_item_check label="迷你地图" name="Mini-Map"/>
94 <menu_item_check label="动画覆盖" name="AO" />
83 <menu_item_separator label="-----------" name="separator3"/> 95 <menu_item_separator label="-----------" name="separator3"/>
84 <menu_item_check label="统计æ¡" name="Statistics Bar"/> 96 <menu_item_check label="统计æ¡" name="Statistics Bar"/>
85 <menu_item_check label="地å—边线" name="Property Lines"/> 97 <menu_item_check label="地å—边线" name="Property Lines"/>
@@ -97,11 +109,14 @@
97 <menu_item_check label="éšè—ç²’å­" name="Hide Particles"/> 109 <menu_item_check label="éšè—ç²’å­" name="Hide Particles"/>
98 <menu_item_check label="显示界é¢é™„件" name="Show HUD Attachments"/> 110 <menu_item_check label="显示界é¢é™„件" name="Show HUD Attachments"/>
99 <menu_item_separator label="-----------" name="separator5"/> 111 <menu_item_separator label="-----------" name="separator5"/>
100 <menu_item_call label="缩å°" name="Zoom In"/>
101 <menu_item_call label="默认缩放" name="Zoom Default"/>
102 <menu_item_call label="放大" name="Zoom Out"/>
103 <menu_item_separator label="-----------" name="separator6"/> 112 <menu_item_separator label="-----------" name="separator6"/>
104 <menu_item_call label="切æ¢å…¨å±çŠ¶æ€" name="Toggle Fullscreen"/> 113 <menu_item_call label="切æ¢å…¨å±çŠ¶æ€" name="Toggle Fullscreen"/>
114 <menu label="缩放" name="Zoom Level">
115 <menu_item_call label="缩å°" name="Zoom In"/>
116 <menu_item_call label="默认缩放" name="Zoom Default"/>
117 <menu_item_call label="放大" name="Zoom Out"/>
118 </menu>
119 <menu_item_check name="Toggle Advanced Menu" label="高级èœå•"/>
105 <menu_item_call label="设置用户界é¢å°ºå¯¸ä¸ºé»˜è®¤å€¼" name="Set UI Size to Default"/> 120 <menu_item_call label="设置用户界é¢å°ºå¯¸ä¸ºé»˜è®¤å€¼" name="Set UI Size to Default"/>
106 </menu> 121 </menu>
107 <menu label="世界" name="World"> 122 <menu label="世界" name="World">
@@ -115,18 +130,19 @@
115 <menu_item_call label="瞬间移动回家" name="Teleport Home"/> 130 <menu_item_call label="瞬间移动回家" name="Teleport Home"/>
116 <menu_item_separator label="-----------" name="separator3"/> 131 <menu_item_separator label="-----------" name="separator3"/>
117 <menu_item_call label="设æˆç¦»å¼€çŠ¶æ€" name="Set Away"/> 132 <menu_item_call label="设æˆç¦»å¼€çŠ¶æ€" name="Set Away"/>
118 <menu_item_call label="设æˆç¹å¿™çŠ¶æ€" name="Set Busy"/> 133 <menu_item_call label="设æˆå¿™ç¢ŒçŠ¶æ€" name="Set Busy"/>
134 <menu_item_check label="自动回å¤å³æ—¶æ¶ˆæ¯" name="Auto-Respond to IMs" />
119 <menu_item_call label="åœæ­¢åŒ–身动画" name="Stop Animating My Avatar"/> 135 <menu_item_call label="åœæ­¢åŒ–身动画" name="Stop Animating My Avatar"/>
120 <menu_item_call label="释放按键" name="Release Keys"/> 136 <menu_item_call label="释放按键" name="Release Keys"/>
121 <menu_item_separator label="-----------" name="separator4"/> 137 <menu_item_separator label="-----------" name="separator4"/>
122 <menu_item_call label="å¸æˆ·åŽ†å²çºªå½•..." name="Account History..."/> 138 <menu_item_call label="å¸æˆ·åŽ†å²çºªå½•..." name="Account History..."/>
123 <menu_item_call label="管ç†æˆ‘çš„å¸æˆ·..." name="Manage My Account..."/> 139 <menu_item_call label="管ç†æˆ‘çš„å¸æˆ·..." name="Manage My Account..."/>
124 <menu_item_call label="è´­ä¹° L$..." name="Buy and Sell L$..."/> 140 <menu_item_call label="è´­ä¹° [CURRENCY]..." name="Buy and Sell L$..."/>
125 <menu_item_separator label="-----------" name="separator5"/> 141 <menu_item_separator label="-----------" name="separator5"/>
126 <menu_item_call label="我的土地..." name="My Land..."/> 142 <menu_item_call label="我的土地..." name="My Land"/>
127 <menu_item_call label="关于土地..." name="About Land..."/> 143 <menu_item_call label="关于土地..." name="About Land"/>
128 <menu_item_call label="购买土地..." name="Buy Land..."/> 144 <menu_item_call label="购买土地..." name="Buy Land..."/>
129 <menu_item_call label="地区/地产..." name="Region/Estate..."/> 145 <menu_item_call label="地区/地产..." name="Region/Estate"/>
130 <menu_item_separator label="-----------" name="separator6"/> 146 <menu_item_separator label="-----------" name="separator6"/>
131 <menu label="环境设置" name="Environment Settings"> 147 <menu label="环境设置" name="Environment Settings">
132 <menu_item_call label="日出" name="Sunrise"/> 148 <menu_item_call label="日出" name="Sunrise"/>
@@ -146,28 +162,34 @@
146 <menu_item_call label="土地" name="Land"/> 162 <menu_item_call label="土地" name="Land"/>
147 </menu> 163 </menu>
148 <menu_item_separator label="-----------" name="separator"/> 164 <menu_item_separator label="-----------" name="separator"/>
149 <menu_item_check label="åªé€‰æ‹©æˆ‘的物体" name="Select Only My Objects"/> 165 <menu label="选择选项" name="Selection Options">
150 <menu_item_check label="åªé€‰æ‹©å¯ç§»åŠ¨çš„物体" name="Select Only Movable Objects"/> 166 <menu_item_check label="åªé€‰æ‹©æˆ‘的物体" name="Select Only My Objects"/>
151 <menu_item_check label="选中包围区域" name="Select By Surrounding"/> 167 <menu_item_check label="åªé€‰æ‹©å¯ç§»åŠ¨çš„物体" name="Select Only Movable Objects"/>
152 <menu_item_check label="显示éšè—的选中项" name="Show Hidden Selection"/> 168 <menu_item_check label="åªé€‰æ‹©å¯å¤åˆ¶çš„物体" name="Select Only Copyable Objects" />
153 <menu_item_check label="显示选择项的光照åŠå¾„" name="Show Light Radius for Selection"/> 169 <menu_item_check label="包围选择" name="Select By Surrounding" />
154 <menu_item_check label="显示选择导引" name="Show Selection Beam"/> 170 <menu_item_check label="显示éšè—的选中项" name="Show Hidden Selection"/>
171 <menu_item_check label="显示选中项轮廓" name="Show Selection Outlines" />
172 <menu_item_check label="显示选中项的光照åŠå¾„" name="Show Light Radius for Selection"/>
173 <menu_item_check label="显示选择导引" name="Show Selection Beam"/>
174 </menu>
175
155 <menu_item_separator label="-----------" name="separator2"/> 176 <menu_item_separator label="-----------" name="separator2"/>
156 <menu_item_check label="对é½åˆ°ç½‘æ ¼" name="Snap to Grid"/> 177 <menu_item_check label="对é½åˆ°ç½‘æ ¼" name="Snap to Grid"/>
157 <menu_item_call label="在 XY é¢ä¸Šå¯¹é½ç½‘æ ¼" name="Snap Object XY to Grid"/> 178 <menu_item_call label="在 XY é¢ä¸Šå¯¹é½ç½‘æ ¼" name="Snap Object XY to Grid"/>
158 <menu_item_call label="以选项作为网格" name="Use Selection for Grid"/> 179 <menu_item_call label="以选项作为网格" name="Use Selection for Grid"/>
159 <menu_item_call label="网格选项..." name="Grid Options..."/> 180 <menu_item_call label="高级建造选项..." name="Advanced Build Options..."/>
160 <menu_item_separator label="-----------" name="separator3"/> 181 <menu_item_separator label="-----------" name="separator3"/>
161 <menu_item_check label="编辑链接部件" name="Edit Linked Parts" shortcut=""/> 182 <menu_item_check label="编辑链接部件" name="Edit Linked Parts" />
183 <menu_item_check label="选择链接部件" name="Select Linked Parts" />
162 <menu_item_call label="链接" name="Link"/> 184 <menu_item_call label="链接" name="Link"/>
163 <menu_item_call label="解除链接" name="Unlink"/> 185 <menu_item_call label="解除链接" name="Unlink"/>
164 <menu_item_separator label="-----------" name="separator4"/> 186 <menu_item_separator label="-----------" name="separator4"/>
165 <menu_item_call label="èšç„¦äºŽæ‰€é€‰ç‰©ä½“" name="Focus on Selection"/> 187 <menu_item_call label="èšç„¦äºŽæ‰€é€‰ç‰©ä½“" name="Focus on Selection"/>
166 <menu_item_call label="缩放到所选物体" name="Zoom to Selection"/> 188 <menu_item_call label="缩放到所选物体" name="Zoom to Selection"/>
167 <menu_item_call label="购买物体" name="Menu Object Take"> 189 <menu_item_call label="创建副本" name="Duplicate" />
168 <on_enable userdata="购买,拿走" name="EnableBuyOrTake"/> 190 <menu_item_call label="购买物体" name="Menu Object Take" />
169 </menu_item_call>
170 <menu_item_call label="拿走副本" name="Take Copy"/> 191 <menu_item_call label="拿走副本" name="Take Copy"/>
192 <menu_item_call label="归还物体" name="Return..." />
171 <menu_item_call label="将物体存回至物体内容" name="Save Object Back to Object Contents"/> 193 <menu_item_call label="将物体存回至物体内容" name="Save Object Back to Object Contents"/>
172 <menu_item_separator label="-----------" name="separator6"/> 194 <menu_item_separator label="-----------" name="separator6"/>
173 <menu_item_call label="显示脚本警告/错误窗å£" name="Show Script Warning/Error Window"/> 195 <menu_item_call label="显示脚本警告/错误窗å£" name="Show Script Warning/Error Window"/>
@@ -178,17 +200,30 @@
178 <menu_item_call label="é‡ç½®æ‰€é€‰é¡¹ä¸­è„šæœ¬" name="Reset Scripts in Selection"/> 200 <menu_item_call label="é‡ç½®æ‰€é€‰é¡¹ä¸­è„šæœ¬" name="Reset Scripts in Selection"/>
179 <menu_item_call label="设置所选项中脚本è¿è¡Œ" name="Set Scripts to Running in Selection"/> 201 <menu_item_call label="设置所选项中脚本è¿è¡Œ" name="Set Scripts to Running in Selection"/>
180 <menu_item_call label="设置所选项中脚本ä¸è¿è¡Œ" name="Set Scripts to Not Running in Selection"/> 202 <menu_item_call label="设置所选项中脚本ä¸è¿è¡Œ" name="Set Scripts to Not Running in Selection"/>
203 <menu_item_call
204 name="Set permissions on selected task inventory"
205 label="批é‡è®¾ç½®æƒé™"/>
181 </menu> 206 </menu>
182 <menu label="帮助" name="Help"> 207 <menu label="帮助" name="Help">
183 <menu_item_call label="第二人生帮助" name="Second Life Help"/> 208 <menu_item_call label="第二人生帮助" name="Second Life Help"/>
184 <menu_item_call label="教程" name="Tutorial"/> 209 <menu_item_call label="教程" name="Tutorial"/>
185 <menu_item_separator label="-----------" name="separator"/> 210 <menu_item_separator label="-----------" name="separator"/>
186 <menu_item_call label="官方林登åšå®¢..." name="Official Linden Blog..."/> 211 <menu_item_call label="Imprudence 网络日志" name="Imprudence Blog" />
212 <menu_item_call label="Imprudence 论å›" name="Imprudence Forums" />
213 <menu_item_call label="脚本å‚考首页" name="Scripting Portal">
214 <!--
215 <on_click
216 function="PromptShowURL"
217 name="ScriptingPortal_url"
218 userdata="WebLaunchLSLWiki,http://wiki.secondlife.com/wiki/LSL_Portal/zh-Hans" />
219 -->
220 </menu_item_call>
221
187 <menu_item_separator label="-----------" name="separator2"/> 222 <menu_item_separator label="-----------" name="separator2"/>
188 <menu_item_call label="脚本 Wiki 门户..." name="Scripting Portal..."/> 223 <menu_item_call label="脚本 Wiki 门户..." name="Scripting Portal..."/>
189 <menu_item_separator label="-----------" name="separator3"/> 224 <menu_item_separator label="-----------" name="separator3"/>
190 <menu_item_call label="报告ä¸è‰¯è¡Œä¸º..." name="Report Abuse..."/> 225 <menu_item_call label="报告ä¸è‰¯è¡Œä¸º..." name="Report Abuse..."/>
191 <menu_item_call label="颠簸,推动和碰撞..." name="Bumps, Pushes &amp;amp; Hits..."/> 226 <menu_item_call label="颠簸,推动和碰撞..." name="Bumps, Pushes &amp; Hits"/>
192 <menu_item_call label="延迟计é‡å™¨" name="Lag Meter"/> 227 <menu_item_call label="延迟计é‡å™¨" name="Lag Meter"/>
193 <menu create_jump_keys="true" drop_shadow="true" label="错误汇报" name="Bug Reporting" opaque="true" tear_off="true"> 228 <menu create_jump_keys="true" drop_shadow="true" label="错误汇报" name="Bug Reporting" opaque="true" tear_off="true">
194 <menu_item_call label="公开 Issue Tracker..." name="Public Issue Tracker..."/> 229 <menu_item_call label="公开 Issue Tracker..." name="Public Issue Tracker..."/>
@@ -199,6 +234,324 @@
199 <menu_item_call label="è´¨é‡ä¿è¯ Wiki..." name="QA Wiki..."/> 234 <menu_item_call label="è´¨é‡ä¿è¯ Wiki..." name="QA Wiki..."/>
200 <menu_item_call label="汇报错误..." name="Report Bug..."/> 235 <menu_item_call label="汇报错误..." name="Report Bug..."/>
201 </menu> 236 </menu>
202 <menu_item_call label="关于第二人生 meta-impy..." name="About meta-impy..."/>
203 </menu> 237 </menu>
238
239 <menu label="高级" name="Advanced">
240 <!-- CONSOLES -->
241 <menu name="Consoles" label="控制å°">
242 <menu_item_check name="Frame Console" label="帧控制å°" />
243 <menu_item_check name="Texture Console" label="æ质控制å°" />
244 <menu_item_check name="Debug Console" label="调试信æ¯" />
245 <menu_item_check name="Fast Timers" label="快速计时器" />
246 <!-- Requires compiled-in support, I think?
247 <menu_item_check name="Memory" label="Memory"
248 shortcut="control|shift|0">
249 <on_click function="Advanced.ToggleConsole"
250 userdata="memory" />
251 <on_check function="Advanced.CheckConsole"
252 userdata="memory" />
253 </menu_item_check>
254 -->
255 <menu_item_call name="Notifications Console" label="æ示控制å°" />
256 <menu_item_call name="Message Log" label="消æ¯æ—¥å¿—" />
257 <menu_item_call name="Message Builder" label="消æ¯å»ºç­‘器" />
258 <menu_item_call name="Region Info to Debug Console" label="区域信æ¯åˆ°è°ƒè¯•æŽ§åˆ¶å°" />
259 <menu_item_call name="Group Info to Debug Console" label="社团信æ¯åˆ°è°ƒè¯•æŽ§åˆ¶å°" />
260 <menu_item_call name="Capabilities Info to Debug Console" label="Capabilities ä¿¡æ¯åˆ°è°ƒè¯•æŽ§åˆ¶å°" />
261 </menu>
262 <menu_item_call name="Reload personal setting overrides" label="é‡æ–°è½½å…¥ä¸ªäººè®¾ç½®" />
263 <!-- HUD INFO -->
264 <menu name="HUD Info" label="HUD ä¿¡æ¯">
265 <menu_item_check name="Velocity" label="速度" />
266 <menu_item_check name="Camera" label="æ‘„åƒæœº" />
267 <menu_item_check name="Wind" label="风" />
268 <!--Field of View-->
269 <menu_item_check name="FOV" label="FOV" />
270 </menu>
271 <menu_item_call label="å在地上" name="Ground Sit" />
272 <menu_item_call name="Teleport to Ground" label="瞬间移动到地é¢" />
273 <menu_item_check label="幻影化身" name="Phantom" />
274 <menu_item_check label="动画列表" name="Animation List" />
275 <menu_item_check label="全功能雷达" name="Full Radar" />
276 <menu_item_check label="区域物体æœç´¢" name="Area Object Search" />
277 <menu_item_check label="资产æµè§ˆå™¨" name="asset browser" />
278 <!-- RENDERING -->
279 <menu name="Rendering" label="渲染">
280 <!-- TYPES -->
281 <menu name="Types" label="类型">
282 <menu_item_check name="Simple" label="简å•" />
283 <menu_item_check name="Alpha" label="é€æ˜Žåº¦" />
284 <menu_item_check name="Tree" label="树木" />
285 <menu_item_check name="Character" label="人物" />
286 <menu_item_check name="SurfacePatch" label="SurfacePatch" />
287 <menu_item_check name="Sky" label="天空" />
288 <menu_item_check name="Water" label="æ°´é¢" />
289 <menu_item_check name="Ground" label="地é¢" />
290 <menu_item_check name="Volume" label="体积" />
291 <menu_item_check name="Grass" label="è‰æœ¨" />
292 <menu_item_check name="Clouds" label="云层" />
293 <menu_item_check name="Particles" label="ç²’å­" />
294 <menu_item_check name="Bump" label="凹凸贴图" />
295 </menu>
296 <!-- FEATURES -->
297 <menu name="Features" label="特å¾">
298 <menu_item_check name="UI" label="ç•Œé¢" />
299 <menu_item_check name="Selected" label="选中项" />
300 <menu_item_check name="Highlighted" label="高亮" />
301 <menu_item_check name="Dynamic Textures" label="动æ€æè´¨" />
302 <menu_item_check name="Foot Shadows" label="脚阴影" />
303 <menu_item_check name="Fog" label="雾" />
304 <menu_item_check name="Test FRInfo" label="测试 FRInfo" />
305 <menu_item_check name="Flexible Objects" label="活动物体" />
306 </menu>
307 <!-- INFO DISPLAYS -->
308 <menu name="Info Displays" label="ä¿¡æ¯æ˜¾ç¤º">
309 <menu_item_check name="Verify" label="验è¯" />
310 <menu_item_check name="BBoxes" label="包围盒" />
311 <menu_item_check name="Points" label="点" />
312 <menu_item_check name="Octree" label="å…«å‰æ ‘" />
313 <menu_item_check name="Occlusion" label="é®è”½" />
314 <menu_item_check name="Render Batches" label="渲染批次" />
315 <menu_item_check name="Animated Textures" label="æ质动画" />
316 <menu_item_check name="Texture Priority" label="æ质优先级" />
317 <menu_item_check name="Avatar Rendering Cost" label="化身渲染开销" />
318 <menu_item_check name="Texture Area (sqrt(A))" label="æè´¨é¢ç§¯ (sqrt(A))" />
319 <menu_item_check name="Face Area (sqrt(A))" label="表é¢é¢ç§¯ (sqrt(A))" />
320 <menu_item_check name="Pick Render" label="选å–渲染" />
321 <menu_item_check name="Lights" label="å…‰æº" />
322 <menu_item_check name="Particles" label="ç²’å­" />
323 <menu_item_check name="Composition" label="Composition" />
324 <menu_item_check name="Glow" label="å‘å…‰" />
325 <menu_item_check name="Raycasting" label="光线投射" />
326 <menu_item_check name="Sculpt" label="雕塑元件" />
327 <menu_item_check name="Vectorize Perf Test" label="å‘é‡åŒ–性能测试" />
328 </menu>
329 <!-- RENDER TESTS -->
330 <menu name="Render Tests" label="渲染测试">
331 <menu_item_check name="Camera Offset" label="æ‘„åƒæœºå移" />
332 <menu_item_check name="Randomize Framerate" label="éšæœºåŒ–帧率" />
333 <menu_item_check name="Periodic Slow Frame" label="周期性å‡æ…¢å¸§" />
334 <menu_item_check name="Frame Test" label="帧测试" />
335 </menu>
336 <menu_item_check name="Axes" label="è½´" />
337 <menu_item_check name="Hide Selected" label="éšè—选中项" />
338 <menu_item_check name="Tangent Basis" label="切å‘基础" />
339 <menu_item_call name="Selected Texture Info" label="选中的æ质信æ¯" />
340 <menu_item_check name="Wireframe" label="线框" />
341 <menu_item_check name="Object-Object Occlusion" label="对象对对象é®è”½" />
342 <menu_item_check name="Debug GL" label="调试 GL" />
343 <menu_item_check name="Debug Pipeline" label="调试æµæ°´çº¿" />
344 <menu_item_check name="Fast Alpha" label="快速é€æ˜Žåº¦" />
345 <menu_item_check name="Animate Trees" label="树木动画" />
346 <menu_item_check name="Animate Textures" label="æ质动画" />
347 <menu_item_check name="Disable Textures" label="ç¦ç”¨æè´¨" />
348 <!-- Disabled because it doesn't seem to be used anymore.
349 <menu_item_check name="HTTP Get Textures"
350 label="HTTP Get Textures">
351 <on_click function="ToggleControl"
352 userdata="ImagePipelineUseHTTP" />
353 <on_check control="ImagePipelineUseHTTP" />
354 </menu_item_check>
355 -->
356 <menu_item_check name="Run Multiple Threads" label="è¿è¡Œå¤šä¸ªçº¿ç¨‹" />
357 <!-- Disabled because it doesn't work very well?
358 <menu_item_check name="Dynamic Reflections"
359 label="Dynamic Reflections">
360 <on_click function="ToggleControl"
361 userdata="RenderDynamicReflections" />
362 <on_check control="RenderDynamicReflections" />
363 </menu_item_check>
364 -->
365 <menu_item_check name="Cheesy Beacon" label="给力的信标" />
366 <menu_item_check name="Attached Lights" label="装备的光æº" />
367 <menu_item_check name="Attached Particles" label="装备的粒å­æº" />
368 </menu>
369 <!-- WORLD -->
370 <menu name="World" label="世界">
371 <!-- Disabled because you can't do this in Windlight.
372 <menu_item_check name="Mouse Moves Sun"
373 label="Mouse Moves Sun"
374 shortcut="control|alt|M">
375 <on_click function="ToggleControl" userdata="MouseSun" />
376 <on_check control="MouseSun" />
377 </menu_item_check>
378 -->
379 <menu_item_check name="Sim Sun Override" label="模拟器太阳覆盖" />
380 <menu_item_call name="Dump Scripted Camera" label="脚本摄åƒæœºæŽ§åˆ¶è½¬å‚¨" />
381 <menu_item_check name="Fixed Weather" label="固定天气" />
382 <menu_item_call name="Dump Region Object Cache" label="转储区域物体缓存" />
383 </menu>
384 <!-- RLVa -->
385 <menu name="RLVa">
386 <menu name="Debug" label="调试">
387 <menu_item_check name="Show Debug Messages" label="显示调试信æ¯" />
388 <menu_item_check name="Enable Legacy Naming" label="å¯ç”¨æ—§å¼å‘½å" />
389 </menu>
390 <menu_item_check name="Enable Wear" label="å¯ç”¨ç©¿ç€" />
391 <menu_item_check name="Hide locked layers" label="éšè—é”定的衣物层次" />
392 <menu_item_check name="Hide locked attachments" label="éšè—é”定的附件" />
393 <!--
394 <menu_item_check name="Hide locked inventory"
395 label="Hide locked inventory">
396 <on_click function="ToggleControl"
397 userdata="RLVaHideLockedInventory" />
398 <on_check control="RLVaHideLockedInventory" />
399 </menu_item_check>
400 -->
401 <menu_item_check name="Forbid Give to #RLV" label="ç¦æ­¢ç»™ä¸Žåˆ° #RLV" />
402 <menu_item_check name="Show Name Tags" label="显示姓å标签" />
403 <menu_item_call name="Restrictions..." label="é™åˆ¶..." />
404 </menu>
405 <!-- UI -->
406 <menu name="UI" label="ç•Œé¢">
407 <menu_item_check name="Use default system color picker" label="使用系统默认颜色选择器" />
408 <menu_item_check name="Show search panel in overlay bar" label="覆盖æ ä¸­æ˜¾ç¤ºæœç´¢é¢æ¿" />
409 <menu_item_call name="Reload Balance" label="é‡æ–°è½½å…¥ [CURRENCY] ä½™é¢" />
410 <menu_item_call name="Web Browser Test" label="网络æµè§ˆå™¨æµ‹è¯•" />
411 <!--
412 *TODO: Make this a proper toggle item with the "X" indicator.
413 1. Add a "Advanced.CheckEditableUI" function in llviewermenu.cpp.
414 2. Change this surrounding menu_item_call to a menu_item_check.
415 3. Uncomment the "on_check" line below.
416 -->
417 <menu_item_call name="Editable UI" label="å¯ç¼–辑的用户界é¢">
418 <!--
419 <on_check function="Advanced.CheckEditableUI" userdata="" />
420 -->
421 </menu_item_call>
422 <menu_item_call name="Dump SelectMgr" label="转储 SelectMgr" />
423 <menu_item_call name="Dump Inventory" label="转储库存" />
424 <menu_item_call name="Dump Focus Holder" label="转储焦点æŒæœ‰è€…" />
425 <menu_item_call name="Print Selected Object Info" label="打å°é€‰ä¸­ç‰©ä½“ä¿¡æ¯" />
426 <menu_item_call name="Print Agent Info" label="æ‰“å° Agent ä¿¡æ¯" />
427 <menu_item_call name="Memory Stats" label="内存状æ€" />
428 <menu_item_call name="Clear Cached Group Info" label="清除缓存的社团信æ¯" />
429 <menu_item_check name="Debug SelectMgr" label="调试 SelectMgr" />
430 <menu_item_check name="Debug Clicks" label="调试点击" />
431 <menu_item_check name="Debug Views" label="调试视图" />
432 <menu_item_check name="Show Name Tooltips" label="显示å称æ示" />
433 <menu_item_check name="Debug Mouse Events" label="调试鼠标事件" />
434 <menu_item_check name="Debug Keys" label="调试键盘" />
435 <menu_item_check name="Debug WindowProc" label="调试 WindowProc" />
436 <menu_item_check name="Debug Text Editor Tips" label="调试文本编辑器æ示" />
437 <menu_item_check name="Show Time" label="显示时间" />
438 <menu_item_check name="Show Render Info" label="显示渲染信æ¯" />
439 <menu_item_check name="Show Matrices" label="显示矩阵" />
440 <menu_item_check name="Show Color Under Cursor" label="显示指针之下的颜色" />
441 </menu>
442 <!-- XUI -->
443 <menu name="XUI">
444 <menu_item_call name="Floater Test" label="浮动框测试" />
445 <menu_item_call name="Font Test" label="字体测试" />
446 <menu_item_call name="Export Menus to XML..." label="导出èœå•åˆ° XML..." />
447 <menu_item_call name="Edit UI..." label="编辑界é¢..." />
448 <menu_item_call name="Load from XML..." label="从 XML 读å–..." />
449 <menu_item_call name="Save to XML..." label="ä¿å­˜åˆ° XML..." />
450 <menu_item_check name="Show XUI Names" label="显示 XUI å称" />
451 </menu>
452 <!-- CHARACTER -->
453 <menu name="Character" label="人物">
454 <menu name="Grab Baked Texture" label="获å–烘烤æè´¨">
455 <menu_item_call name="Iris" label="瞳孔" />
456 <menu_item_call name="Head" label="头部" />
457 <menu_item_call name="Upper Body" label="上身" />
458 <menu_item_call name="Lower Body" label="下身" />
459 <menu_item_call name="Skirt" label="裙å­" />
460 </menu>
461 <!-- CHARACTER TESTS -->
462 <menu name="Character Tests" label="人物测试">
463 <menu_item_call name="Appearance To XML" label="外观到 XML" />
464 <menu_item_call name="Toggle Character Geometry" label="切æ¢è§’色几何" />
465 <menu_item_call name="Test Male" label="测试男性" />
466 <menu_item_call name="Test Female" label="测试女性" />
467 <menu_item_call name="Toggle PG" label="测试未æˆå¹´æ¨¡å¼" />
468 <menu_item_check name="Allow Select Avatar" label="å…许选择化身" />
469 </menu>
470 <menu_item_check name="Enable Lip Sync (Beta)" label="å¯ç”¨å£åž‹åŒæ­¥ (测试)" />
471 <menu_item_check name="Tap-Tap-Hold To Run" label="åŒæ•²å¹¶æŒ‰ä½è·‘æ­¥" />
472 <menu_item_call name="Force Params to Default" label="强制å‚数到默认值" />
473 <menu_item_call name="Reload Vertex Shader" label="é‡æ–°è½½å…¥é¡¶ç‚¹ç€è‰²å™¨" />
474 <menu_item_check label="Animation Info" name="动画信æ¯" />
475 <!--
476 *TODO: Make this a proper toggle item with the "X" indicator.
477 1. Add a "Advanced.CheckSlowmotionAnimation" function in
478 llviewermenu.cpp.
479 2. Change this surrounding menu_item_call to a menu_item_check.
480 3. Uncomment the "on_check" line below.
481 -->
482 <menu_item_call name="Slow Motion Animations" label="慢动作动画" />
483 <menu_item_check name="Show Look At" label="显示视线目标" />
484 <menu_item_check name="Show Point At" label="显示指å‘目标" />
485 <menu_item_check name="Private Look At" label="对他人éšè—视线目标" />
486 <menu_item_check name="Private Point At" label="对他人éšè—指å‘目标" />
487 <menu_item_check name="Debug Joint Updates" label="调试关节更新" />
488 <menu_item_check name="Disable LOD" label="ç¦ç”¨ LOD" />
489 <menu_item_check name="Debug Character Vis" label="调试人物å¯è§æ€§" />
490 <!-- Disabled. See DEV-14477
491 <menu_item_check name="Show Collision Plane"
492 label="Show Collision Plane">
493 <on_click function="Advanced.ToggleShowCollisionPlane"
494 userdata="" />
495 <on_check function="Advanced.CheckShowCollisionPlane"
496 userdata="" />
497 </menu_item_check>
498 -->
499 <menu_item_check name="Show Collision Skeleton" label="显示碰撞骨骼" />
500 <menu_item_check name="Display Agent Target" label="显示 Agent 目标" />
501 <menu_item_check name="Debug Rotation" label="调试旋转" />
502 <menu_item_call name="Dump Attachments" label="打å°é™„件" />
503 <menu_item_call label="Reload Avatar Cloud Particle" name="é‡æ–°åŠ è½½åŒ–身云粒å­" />
504 </menu>
505 <!-- CRASH -->
506 <menu name="Crash" label="崩溃">
507 <menu_item_call name="Force Bad Memory Access" label="强制无效内存访问" />
508 <menu_item_call name="Force LLError And Crash" label="强制 LLError 并崩溃" />
509 <menu_item_call name="Force Infinite Loop" label="强制无é™å¾ªçŽ¯" />
510 <menu_item_call name="Force Driver Crash" label="强制驱动程åºå´©æºƒ" />
511 <menu_item_call name="Force Disconnect Viewer" label="强制断开连接" />
512 <menu_item_check name="Output Debug Minidump" label="输出调试å°è½¬å‚¨" />
513 </menu>
514 <!-- NETWORK -->
515 <menu name="Network" label="网络">
516 <menu_item_call name="Enable Message Log" label="å¯ç”¨æ¶ˆæ¯æ—¥å¿—" />
517 <menu_item_call name="Disable Message Log" label="ç¦ç”¨æ¶ˆæ¯æ—¥å¿—" />
518 <menu_item_check name="Velocity Interpolate Objects" label="物体速度æ’值" />
519 <menu_item_check name="Ping Interpolate Object Positions" label="Ping Interpolate Object Positions" />
520 <menu_item_call name="Drop a Packet" label="丢弃一个å°åŒ…" />
521 </menu>
522 <!-- RECORDER -->
523 <menu name="Recorder" label="记录器">
524 <menu_item_check name="Full Session Logging" label="录制整个会è¯" />
525 <menu_item_call name="Start Logging" label="开始记录" />
526 <menu_item_call name="Stop Logging" label="åœæ­¢è®°å½•" />
527 <menu_item_call name="Log 10 Seconds" label="记录 10 秒" />
528 <menu_item_call name="Log 30 Seconds" label="记录 30 秒" />
529 <menu_item_call name="Log 60 Seconds" label="记录 60 秒" />
530 <menu_item_call name="Start Playback" label="开始播放" />
531 <menu_item_call name="Stop Playback" label="åœæ­¢æ’­æ”¾" />
532 <menu_item_check name="Loop Playback" label="循环播放" />
533 <menu_item_call name="Start Record" label="开始录制" />
534 <menu_item_call name="Stop Record" label="åœæ­¢å½•åˆ¶" />
535 </menu>
536 <!-- ADMIN OPTIONS -->
537 <menu name="Admin Options" label="管ç†å‘˜é€‰é¡¹">
538 <menu_item_check name="View Admin Options" label="显示管ç†å‘˜é€‰é¡¹" />
539 <menu_item_call name="Request Admin Status" label="请求管ç†å‘˜çŠ¶æ€" />
540 <menu_item_call name="Leave Admin Status" label="离开管ç†å‘˜çŠ¶æ€" />
541 </menu>
542 <menu_item_check name="Show Updates" label="显示更新" />
543 <menu_item_check name="Quiet Snapshots to Disk" label="无声快照到ç£ç›˜" />
544 <menu_item_call name="Compress Image..." label="压缩图åƒ..." />
545 <menu_item_check name="Disable Max Build Constraints" label="ç¦ç”¨å»ºé€ å°ºå¯¸æœ€å¤§é™åˆ¶" />
546 <menu_item_check name="Debug Permissions" label="调试æƒé™" />
547 <menu_item_check name="Mouse Smoothing" label="鼠标平滑" />
548 <menu_item_check name="Show Mouselook Crosshairs" label="显示第一人称视角准星" />
549 <menu_item_check name="Console Window" label="控制å°çª—å£" />
550 <menu_item_check name="Restrained Love Support" label="Restrained Love 支æŒ" />
551 <menu_item_check name="Allow Multiple Instances" label="å…许多个实例" />
552 <menu_item_call name="Logout" label="登出 (ä¸ç¨³å®š)" />
553 <menu_item_call name="Debug Settings" label="调试设置" />
554 </menu>
555
556
204</menu_bar> 557</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/zh/mime_types_linux.xml b/linden/indra/newview/skins/default/xui/zh/mime_types_linux.xml
new file mode 100644
index 0000000..3fedf28
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/mime_types_linux.xml
@@ -0,0 +1,236 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<mimetypes name="default">
3 <widgetset name="web">
4 <label name="web_label">
5 网页内容
6 </label>
7 <tooltip name="web_tooltip">
8 该区域有网页内容
9 </tooltip>
10 <playtip name="web_playtip">
11 显示网页内容
12 </playtip>
13 </widgetset>
14 <widgetset name="movie">
15 <label name="movie_label">
16 影片
17 </label>
18 <tooltip name="movie_tooltip">
19 这里å¯ä»¥æ’­æ”¾å½±ç‰‡
20 </tooltip>
21 <playtip name="movie_playtip">
22 播放影片
23 </playtip>
24 </widgetset>
25 <widgetset name="none">
26 <label name="none_label">
27 无内容
28 </label>
29 <tooltip name="none_tooltip">
30 这里没有媒体
31 </tooltip>
32 <playtip name="none_playtip" />
33 </widgetset>
34 <widgetset name="image">
35 <label name="image_label">
36 图åƒ
37 </label>
38 <tooltip name="image_tooltip">
39 这里有图åƒ
40 </tooltip>
41 <playtip name="image_playtip">
42 显示该ä½ç½®çš„图åƒ
43 </playtip>
44 </widgetset>
45 <widgetset name="audio">
46 <label name="audio_label">
47 音频
48 </label>
49 <tooltip name="audio_tooltip">
50 这里å¯ä»¥æ’­æ”¾éŸ³é¢‘
51 </tooltip>
52 <playtip name="audio_playtip">
53 播放该ä½ç½®çš„音频
54 </playtip>
55 </widgetset>
56 <scheme name="rtsp">
57 <label name="rtsp_label">
58 实时æµåª’体 (RTSP)
59 </label>
60 </scheme>
61 <mimetype name="blank">
62 <label name="blank_label">
63 - æ—  -
64 </label>
65 </mimetype>
66 <mimetype name="none/none">
67 <label name="none/none_label">
68 - æ—  -
69 </label>
70 </mimetype>
71 <mimetype name="audio/*">
72 <label name="audio2_label">
73 音频
74 </label>
75 </mimetype>
76 <mimetype name="video/*">
77 <label name="video2_label">
78 视频
79 </label>
80 </mimetype>
81 <mimetype name="image/*">
82 <label name="image2_label">
83 图åƒ
84 </label>
85 </mimetype>
86 <mimetype name="video/vnd.secondlife.qt.legacy">
87 <label name="vnd.secondlife.qt.legacy_label">
88 影片 (QuickTime)
89 </label>
90 </mimetype>
91 <mimetype name="application/javascript">
92 <label name="application/javascript_label">
93 Javascript
94 </label>
95 </mimetype>
96 <mimetype name="application/ogg">
97 <label name="application/ogg_label">
98 Ogg 音频/视频
99 </label>
100 </mimetype>
101 <mimetype name="application/pdf">
102 <label name="application/pdf_label">
103 PDF 文档
104 </label>
105 </mimetype>
106 <mimetype name="application/postscript">
107 <label name="application/postscript_label">
108 Postscript 文档
109 </label>
110 </mimetype>
111 <mimetype name="application/rtf">
112 <label name="application/rtf_label">
113 带格å¼åŒ–的文本 (RTF)
114 </label>
115 </mimetype>
116 <mimetype name="application/smil">
117 <label name="application/smil_label">
118 åŒæ­¥å¤šåª’体集æˆè¯­è¨€ (SMIL)
119 </label>
120 </mimetype>
121 <mimetype name="application/xhtml+xml">
122 <label name="application/xhtml+xml_label">
123 网页 (XHTML)
124 </label>
125 </mimetype>
126 <mimetype name="application/x-director">
127 <label name="application/x-director_label">
128 Macromedia Director
129 </label>
130 </mimetype>
131 <mimetype name="application/x-shockwave-flash">
132 <label name="application/x-shockwave-flash_label">
133 Flash
134 </label>
135 </mimetype>
136 <mimetype name="audio/mid">
137 <label name="audio/mid_label">
138 音频 (MIDI)
139 </label>
140 </mimetype>
141 <mimetype name="audio/mpeg">
142 <label name="audio/mpeg_label">
143 音频 (MP3)
144 </label>
145 </mimetype>
146 <mimetype name="audio/x-aiff">
147 <label name="audio/x-aiff_label">
148 音频 (AIFF)
149 </label>
150 </mimetype>
151 <mimetype name="audio/x-wav">
152 <label name="audio/x-wav_label">
153 音频 (WAV)
154 </label>
155 </mimetype>
156 <mimetype name="image/bmp">
157 <label name="image/bmp_label">
158 å›¾åƒ (BMP)
159 </label>
160 </mimetype>
161 <mimetype name="image/gif">
162 <label name="image/gif_label">
163 å›¾åƒ (GIF)
164 </label>
165 </mimetype>
166 <mimetype name="image/jpeg">
167 <label name="image/jpeg_label">
168 å›¾åƒ (JPEG)
169 </label>
170 </mimetype>
171 <mimetype name="image/png">
172 <label name="image/png_label">
173 å›¾åƒ (PNG)
174 </label>
175 </mimetype>
176 <mimetype name="image/svg+xml">
177 <label name="image/svg+xml_label">
178 å›¾åƒ (SVG)
179 </label>
180 </mimetype>
181 <mimetype name="image/tiff">
182 <label name="image/tiff_label">
183 å›¾åƒ (TIFF)
184 </label>
185 </mimetype>
186 <mimetype name="text/html">
187 <label name="text/html_label">
188 网页
189 </label>
190 </mimetype>
191 <mimetype name="text/plain">
192 <label name="text/plain_label">
193 文本
194 </label>
195 </mimetype>
196 <mimetype name="text/xml">
197 <label name="text/xml_label">
198 XML
199 </label>
200 </mimetype>
201 <mimetype name="video/mpeg">
202 <label name="video/mpeg_label">
203 影片 (MPEG)
204 </label>
205 </mimetype>
206 <mimetype name="video/mp4">
207 <label name="video/mp4_label">
208 影片 (MP4)
209 </label>
210 </mimetype>
211 <mimetype name="video/x-m4v">
212 <label name="video/m4v_label">
213 影片 (M4V)
214 </label>
215 </mimetype>
216 <mimetype name="video/quicktime">
217 <label name="video/quicktime_label">
218 影片 (QuickTime)
219 </label>
220 </mimetype>
221 <mimetype name="video/x-ms-asf">
222 <label name="video/x-ms-asf_label">
223 影片 (Windows Media ASF)
224 </label>
225 </mimetype>
226 <mimetype name="video/x-ms-wmv">
227 <label name="video/x-ms-wmv_label">
228 影片 (Windows Media WMV)
229 </label>
230 </mimetype>
231 <mimetype name="video/x-msvideo">
232 <label name="video/x-msvideo_label">
233 影片 (AVI)
234 </label>
235 </mimetype>
236</mimetypes>
diff --git a/linden/indra/newview/skins/default/xui/zh/mime_types_mac.xml b/linden/indra/newview/skins/default/xui/zh/mime_types_mac.xml
new file mode 100644
index 0000000..3fedf28
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/mime_types_mac.xml
@@ -0,0 +1,236 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<mimetypes name="default">
3 <widgetset name="web">
4 <label name="web_label">
5 网页内容
6 </label>
7 <tooltip name="web_tooltip">
8 该区域有网页内容
9 </tooltip>
10 <playtip name="web_playtip">
11 显示网页内容
12 </playtip>
13 </widgetset>
14 <widgetset name="movie">
15 <label name="movie_label">
16 影片
17 </label>
18 <tooltip name="movie_tooltip">
19 这里å¯ä»¥æ’­æ”¾å½±ç‰‡
20 </tooltip>
21 <playtip name="movie_playtip">
22 播放影片
23 </playtip>
24 </widgetset>
25 <widgetset name="none">
26 <label name="none_label">
27 无内容
28 </label>
29 <tooltip name="none_tooltip">
30 这里没有媒体
31 </tooltip>
32 <playtip name="none_playtip" />
33 </widgetset>
34 <widgetset name="image">
35 <label name="image_label">
36 图åƒ
37 </label>
38 <tooltip name="image_tooltip">
39 这里有图åƒ
40 </tooltip>
41 <playtip name="image_playtip">
42 显示该ä½ç½®çš„图åƒ
43 </playtip>
44 </widgetset>
45 <widgetset name="audio">
46 <label name="audio_label">
47 音频
48 </label>
49 <tooltip name="audio_tooltip">
50 这里å¯ä»¥æ’­æ”¾éŸ³é¢‘
51 </tooltip>
52 <playtip name="audio_playtip">
53 播放该ä½ç½®çš„音频
54 </playtip>
55 </widgetset>
56 <scheme name="rtsp">
57 <label name="rtsp_label">
58 实时æµåª’体 (RTSP)
59 </label>
60 </scheme>
61 <mimetype name="blank">
62 <label name="blank_label">
63 - æ—  -
64 </label>
65 </mimetype>
66 <mimetype name="none/none">
67 <label name="none/none_label">
68 - æ—  -
69 </label>
70 </mimetype>
71 <mimetype name="audio/*">
72 <label name="audio2_label">
73 音频
74 </label>
75 </mimetype>
76 <mimetype name="video/*">
77 <label name="video2_label">
78 视频
79 </label>
80 </mimetype>
81 <mimetype name="image/*">
82 <label name="image2_label">
83 图åƒ
84 </label>
85 </mimetype>
86 <mimetype name="video/vnd.secondlife.qt.legacy">
87 <label name="vnd.secondlife.qt.legacy_label">
88 影片 (QuickTime)
89 </label>
90 </mimetype>
91 <mimetype name="application/javascript">
92 <label name="application/javascript_label">
93 Javascript
94 </label>
95 </mimetype>
96 <mimetype name="application/ogg">
97 <label name="application/ogg_label">
98 Ogg 音频/视频
99 </label>
100 </mimetype>
101 <mimetype name="application/pdf">
102 <label name="application/pdf_label">
103 PDF 文档
104 </label>
105 </mimetype>
106 <mimetype name="application/postscript">
107 <label name="application/postscript_label">
108 Postscript 文档
109 </label>
110 </mimetype>
111 <mimetype name="application/rtf">
112 <label name="application/rtf_label">
113 带格å¼åŒ–的文本 (RTF)
114 </label>
115 </mimetype>
116 <mimetype name="application/smil">
117 <label name="application/smil_label">
118 åŒæ­¥å¤šåª’体集æˆè¯­è¨€ (SMIL)
119 </label>
120 </mimetype>
121 <mimetype name="application/xhtml+xml">
122 <label name="application/xhtml+xml_label">
123 网页 (XHTML)
124 </label>
125 </mimetype>
126 <mimetype name="application/x-director">
127 <label name="application/x-director_label">
128 Macromedia Director
129 </label>
130 </mimetype>
131 <mimetype name="application/x-shockwave-flash">
132 <label name="application/x-shockwave-flash_label">
133 Flash
134 </label>
135 </mimetype>
136 <mimetype name="audio/mid">
137 <label name="audio/mid_label">
138 音频 (MIDI)
139 </label>
140 </mimetype>
141 <mimetype name="audio/mpeg">
142 <label name="audio/mpeg_label">
143 音频 (MP3)
144 </label>
145 </mimetype>
146 <mimetype name="audio/x-aiff">
147 <label name="audio/x-aiff_label">
148 音频 (AIFF)
149 </label>
150 </mimetype>
151 <mimetype name="audio/x-wav">
152 <label name="audio/x-wav_label">
153 音频 (WAV)
154 </label>
155 </mimetype>
156 <mimetype name="image/bmp">
157 <label name="image/bmp_label">
158 å›¾åƒ (BMP)
159 </label>
160 </mimetype>
161 <mimetype name="image/gif">
162 <label name="image/gif_label">
163 å›¾åƒ (GIF)
164 </label>
165 </mimetype>
166 <mimetype name="image/jpeg">
167 <label name="image/jpeg_label">
168 å›¾åƒ (JPEG)
169 </label>
170 </mimetype>
171 <mimetype name="image/png">
172 <label name="image/png_label">
173 å›¾åƒ (PNG)
174 </label>
175 </mimetype>
176 <mimetype name="image/svg+xml">
177 <label name="image/svg+xml_label">
178 å›¾åƒ (SVG)
179 </label>
180 </mimetype>
181 <mimetype name="image/tiff">
182 <label name="image/tiff_label">
183 å›¾åƒ (TIFF)
184 </label>
185 </mimetype>
186 <mimetype name="text/html">
187 <label name="text/html_label">
188 网页
189 </label>
190 </mimetype>
191 <mimetype name="text/plain">
192 <label name="text/plain_label">
193 文本
194 </label>
195 </mimetype>
196 <mimetype name="text/xml">
197 <label name="text/xml_label">
198 XML
199 </label>
200 </mimetype>
201 <mimetype name="video/mpeg">
202 <label name="video/mpeg_label">
203 影片 (MPEG)
204 </label>
205 </mimetype>
206 <mimetype name="video/mp4">
207 <label name="video/mp4_label">
208 影片 (MP4)
209 </label>
210 </mimetype>
211 <mimetype name="video/x-m4v">
212 <label name="video/m4v_label">
213 影片 (M4V)
214 </label>
215 </mimetype>
216 <mimetype name="video/quicktime">
217 <label name="video/quicktime_label">
218 影片 (QuickTime)
219 </label>
220 </mimetype>
221 <mimetype name="video/x-ms-asf">
222 <label name="video/x-ms-asf_label">
223 影片 (Windows Media ASF)
224 </label>
225 </mimetype>
226 <mimetype name="video/x-ms-wmv">
227 <label name="video/x-ms-wmv_label">
228 影片 (Windows Media WMV)
229 </label>
230 </mimetype>
231 <mimetype name="video/x-msvideo">
232 <label name="video/x-msvideo_label">
233 影片 (AVI)
234 </label>
235 </mimetype>
236</mimetypes>
diff --git a/linden/indra/newview/skins/default/xui/zh/mime_types_windows.xml b/linden/indra/newview/skins/default/xui/zh/mime_types_windows.xml
new file mode 100644
index 0000000..3fedf28
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/mime_types_windows.xml
@@ -0,0 +1,236 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<mimetypes name="default">
3 <widgetset name="web">
4 <label name="web_label">
5 网页内容
6 </label>
7 <tooltip name="web_tooltip">
8 该区域有网页内容
9 </tooltip>
10 <playtip name="web_playtip">
11 显示网页内容
12 </playtip>
13 </widgetset>
14 <widgetset name="movie">
15 <label name="movie_label">
16 影片
17 </label>
18 <tooltip name="movie_tooltip">
19 这里å¯ä»¥æ’­æ”¾å½±ç‰‡
20 </tooltip>
21 <playtip name="movie_playtip">
22 播放影片
23 </playtip>
24 </widgetset>
25 <widgetset name="none">
26 <label name="none_label">
27 无内容
28 </label>
29 <tooltip name="none_tooltip">
30 这里没有媒体
31 </tooltip>
32 <playtip name="none_playtip" />
33 </widgetset>
34 <widgetset name="image">
35 <label name="image_label">
36 图åƒ
37 </label>
38 <tooltip name="image_tooltip">
39 这里有图åƒ
40 </tooltip>
41 <playtip name="image_playtip">
42 显示该ä½ç½®çš„图åƒ
43 </playtip>
44 </widgetset>
45 <widgetset name="audio">
46 <label name="audio_label">
47 音频
48 </label>
49 <tooltip name="audio_tooltip">
50 这里å¯ä»¥æ’­æ”¾éŸ³é¢‘
51 </tooltip>
52 <playtip name="audio_playtip">
53 播放该ä½ç½®çš„音频
54 </playtip>
55 </widgetset>
56 <scheme name="rtsp">
57 <label name="rtsp_label">
58 实时æµåª’体 (RTSP)
59 </label>
60 </scheme>
61 <mimetype name="blank">
62 <label name="blank_label">
63 - æ—  -
64 </label>
65 </mimetype>
66 <mimetype name="none/none">
67 <label name="none/none_label">
68 - æ—  -
69 </label>
70 </mimetype>
71 <mimetype name="audio/*">
72 <label name="audio2_label">
73 音频
74 </label>
75 </mimetype>
76 <mimetype name="video/*">
77 <label name="video2_label">
78 视频
79 </label>
80 </mimetype>
81 <mimetype name="image/*">
82 <label name="image2_label">
83 图åƒ
84 </label>
85 </mimetype>
86 <mimetype name="video/vnd.secondlife.qt.legacy">
87 <label name="vnd.secondlife.qt.legacy_label">
88 影片 (QuickTime)
89 </label>
90 </mimetype>
91 <mimetype name="application/javascript">
92 <label name="application/javascript_label">
93 Javascript
94 </label>
95 </mimetype>
96 <mimetype name="application/ogg">
97 <label name="application/ogg_label">
98 Ogg 音频/视频
99 </label>
100 </mimetype>
101 <mimetype name="application/pdf">
102 <label name="application/pdf_label">
103 PDF 文档
104 </label>
105 </mimetype>
106 <mimetype name="application/postscript">
107 <label name="application/postscript_label">
108 Postscript 文档
109 </label>
110 </mimetype>
111 <mimetype name="application/rtf">
112 <label name="application/rtf_label">
113 带格å¼åŒ–的文本 (RTF)
114 </label>
115 </mimetype>
116 <mimetype name="application/smil">
117 <label name="application/smil_label">
118 åŒæ­¥å¤šåª’体集æˆè¯­è¨€ (SMIL)
119 </label>
120 </mimetype>
121 <mimetype name="application/xhtml+xml">
122 <label name="application/xhtml+xml_label">
123 网页 (XHTML)
124 </label>
125 </mimetype>
126 <mimetype name="application/x-director">
127 <label name="application/x-director_label">
128 Macromedia Director
129 </label>
130 </mimetype>
131 <mimetype name="application/x-shockwave-flash">
132 <label name="application/x-shockwave-flash_label">
133 Flash
134 </label>
135 </mimetype>
136 <mimetype name="audio/mid">
137 <label name="audio/mid_label">
138 音频 (MIDI)
139 </label>
140 </mimetype>
141 <mimetype name="audio/mpeg">
142 <label name="audio/mpeg_label">
143 音频 (MP3)
144 </label>
145 </mimetype>
146 <mimetype name="audio/x-aiff">
147 <label name="audio/x-aiff_label">
148 音频 (AIFF)
149 </label>
150 </mimetype>
151 <mimetype name="audio/x-wav">
152 <label name="audio/x-wav_label">
153 音频 (WAV)
154 </label>
155 </mimetype>
156 <mimetype name="image/bmp">
157 <label name="image/bmp_label">
158 å›¾åƒ (BMP)
159 </label>
160 </mimetype>
161 <mimetype name="image/gif">
162 <label name="image/gif_label">
163 å›¾åƒ (GIF)
164 </label>
165 </mimetype>
166 <mimetype name="image/jpeg">
167 <label name="image/jpeg_label">
168 å›¾åƒ (JPEG)
169 </label>
170 </mimetype>
171 <mimetype name="image/png">
172 <label name="image/png_label">
173 å›¾åƒ (PNG)
174 </label>
175 </mimetype>
176 <mimetype name="image/svg+xml">
177 <label name="image/svg+xml_label">
178 å›¾åƒ (SVG)
179 </label>
180 </mimetype>
181 <mimetype name="image/tiff">
182 <label name="image/tiff_label">
183 å›¾åƒ (TIFF)
184 </label>
185 </mimetype>
186 <mimetype name="text/html">
187 <label name="text/html_label">
188 网页
189 </label>
190 </mimetype>
191 <mimetype name="text/plain">
192 <label name="text/plain_label">
193 文本
194 </label>
195 </mimetype>
196 <mimetype name="text/xml">
197 <label name="text/xml_label">
198 XML
199 </label>
200 </mimetype>
201 <mimetype name="video/mpeg">
202 <label name="video/mpeg_label">
203 影片 (MPEG)
204 </label>
205 </mimetype>
206 <mimetype name="video/mp4">
207 <label name="video/mp4_label">
208 影片 (MP4)
209 </label>
210 </mimetype>
211 <mimetype name="video/x-m4v">
212 <label name="video/m4v_label">
213 影片 (M4V)
214 </label>
215 </mimetype>
216 <mimetype name="video/quicktime">
217 <label name="video/quicktime_label">
218 影片 (QuickTime)
219 </label>
220 </mimetype>
221 <mimetype name="video/x-ms-asf">
222 <label name="video/x-ms-asf_label">
223 影片 (Windows Media ASF)
224 </label>
225 </mimetype>
226 <mimetype name="video/x-ms-wmv">
227 <label name="video/x-ms-wmv_label">
228 影片 (Windows Media WMV)
229 </label>
230 </mimetype>
231 <mimetype name="video/x-msvideo">
232 <label name="video/x-msvideo_label">
233 影片 (AVI)
234 </label>
235 </mimetype>
236</mimetypes>
diff --git a/linden/indra/newview/skins/default/xui/zh/notifications.xml b/linden/indra/newview/skins/default/xui/zh/notifications.xml
index 415e5e7..0596e76 100644
--- a/linden/indra/newview/skins/default/xui/zh/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/zh/notifications.xml
@@ -4,12 +4,18 @@
4 <!-- I think "Second Life" should not be localized, actually. -Jacek --> 4 <!-- I think "Second Life" should not be localized, actually. -Jacek -->
5 <!-- 5 <!--
6 <global name="SECOND_LIFE"> 6 <global name="SECOND_LIFE">
7 二人生 7 第二人生
8 </global> 8 </global>
9 --> 9 -->
10
11 <!-- *警告* *警告* *警告* -->
12
13 <!-- 在 Visual Studio 中自动缩进打开åŽç¼–辑该文件将会导致界é¢æŽ’ç‰ˆé”™è¯¯ï¼ -->
14
15 <!-- *警告* *警告* *警告* -->
10 16
11 <global name="skipnexttime"> 17 <global name="skipnexttime">
12 下次ä¸è¦å†è®©æˆ‘çœ‹è¿™ä¸ªäº 18 下次ä¸å†æ˜¾ç¤ºã€‚
13 </global> 19 </global>
14 <global name="alwayschoose"> 20 <global name="alwayschoose">
15 总是选择该选项 21 总是选择该选项
@@ -37,7 +43,7 @@
37 name="OK" 43 name="OK"
38 text="$yestext"/> 44 text="$yestext"/>
39 <button 45 <button
40 name="Cancel" 46 name="å–消"
41 text="$notext"/> 47 text="$notext"/>
42 </form> 48 </form>
43 </template> 49 </template>
@@ -49,7 +55,7 @@
49 text="$yestext"/> 55 text="$yestext"/>
50 <button 56 <button
51 57
52 name="Cancel" 58 name="å–消"
53 text="$notext"/> 59 text="$notext"/>
54 <ignore text="$ignoretext"/> 60 <ignore text="$ignoretext"/>
55 </form> 61 </form>
@@ -61,7 +67,7 @@
61 name="OK" 67 name="OK"
62 text="$yestext"/> 68 text="$yestext"/>
63 <button 69 <button
64 name="Help" 70 name="帮助"
65 text="$helptext"/> 71 text="$helptext"/>
66 </form> 72 </form>
67 </template> 73 </template>
@@ -69,18 +75,18 @@
69 <template name="yesnocancelbuttons"> 75 <template name="yesnocancelbuttons">
70 <form> 76 <form>
71 <button 77 <button
72 name="Yes" 78 name="是"
73 text="$yestext"/> 79 text="$yestext"/>
74 <button 80 <button
75 name="No" 81 name="å¦"
76 text="$notext"/> 82 text="$notext"/>
77 <button 83 <button
78 name="Cancel" 84 name="å–消"
79 text="$canceltext"/> 85 text="$canceltext"/>
80 </form> 86 </form>
81 </template> 87 </template>
82 <notification functor="GenericAcknowledge" label="未知警报" name="MissingAlert"> 88 <notification functor="GenericAcknowledge" label="未知警报" name="MissingAlert">
83 您的第[VIEWER_NAME]版本无法显示所接收到的讯æ¯ã€‚ 89 您的 [VIEWER_NAME] 版本无法显示所接收到的讯æ¯ã€‚
84 90
85错误详情:无法在notifications.xml中找到‘[_NAME]’。 91错误详情:无法在notifications.xml中找到‘[_NAME]’。
86 <usetemplate name="okbutton" yestext="确定"/> 92 <usetemplate name="okbutton" yestext="确定"/>
@@ -103,7 +109,7 @@
103 <usetemplate name="okcancelbuttons" notext="å–消" yestext="是"/> 109 <usetemplate name="okcancelbuttons" notext="å–消" yestext="是"/>
104 </notification> 110 </notification>
105 <notification name="BadInstallation"> 111 <notification name="BadInstallation">
106 第[VIEWER_NAME]å‡çº§é”™è¯¯ã€‚请从[VIEWER_SITE]é‡æ–°ä¸‹è½½å®‰è£…最新版本。 112 [VIEWER_NAME] å‡çº§é”™è¯¯ã€‚请从[VIEWER_SITE]é‡æ–°ä¸‹è½½å®‰è£…最新版本。
107 <usetemplate 113 <usetemplate
108 name="okbutton" 114 name="okbutton"
109 yestext="确定"/> 115 yestext="确定"/>
@@ -262,33 +268,33 @@
262其他居民在观看你的档案的时候å¯ä»¥è®¿é—®ä½ æ‰€æŒ‡å®šçš„URL。 268其他居民在观看你的档案的时候å¯ä»¥è®¿é—®ä½ æ‰€æŒ‡å®šçš„URL。
263 </notification> 269 </notification>
264 <notification name="JoinGroupCanAfford"> 270 <notification name="JoinGroupCanAfford">
265 加入该社团需花费L$[COST]。 271 加入该社团需花费[CURRENCY][COST]。
266ä½ æ„¿æ„继续å—? 272ä½ æ„¿æ„继续å—?
267 <usetemplate name="okcancelbuttons" notext="å–消" yestext="加入"/> 273 <usetemplate name="okcancelbuttons" notext="å–消" yestext="加入"/>
268 </notification> 274 </notification>
269 <notification name="JoinGroupCannotAfford"> 275 <notification name="JoinGroupCannotAfford">
270 加入该社团需花费 L$[COST]。 276 加入该社团需花费 [CURRENCY][COST]。
271您拥有的 L$ ä¸å¤Ÿã€‚ 277您拥有的 [CURRENCY] ä¸å¤Ÿã€‚
272 </notification> 278 </notification>
273 <notification name="LandBuyPass"> 279 <notification name="LandBuyPass">
274 花费 L$[COST] ä½ å°±å¯ä»¥è¿›å…¥è¿™å—土地(‘[PARCEL_NAME]’) 280 花费 [CURRENCY][COST] ä½ å°±å¯ä»¥è¿›å…¥è¿™å—土地(‘[PARCEL_NAME]’)
275[TIME]å°æ—¶ã€‚是å¦è´­ä¹°é€šè¡Œè¯ï¼Ÿ 281[TIME]å°æ—¶ã€‚是å¦è´­ä¹°é€šè¡Œè¯ï¼Ÿ
276 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/> 282 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/>
277 </notification> 283 </notification>
278 <notification name="SalePriceRestriction"> 284 <notification name="SalePriceRestriction">
279 如果出售给任何人,出售价格必须 &gt; L$0。 285 如果出售给任何人,出售价格必须 &gt; [CURRENCY]0。
280如果售价为L$0,请选定一个用户æ¥å”®å‡ºã€‚ 286如果售价为[CURRENCY]0,请选定一个用户æ¥å”®å‡ºã€‚
281 </notification> 287 </notification>
282 <notification name="ConfirmLandSaleChange"> 288 <notification name="ConfirmLandSaleChange">
283 所选的 [LAND_SIZE]平方米土地正被设置为代售。 289 所选的 [LAND_SIZE]平方米土地正被设置为代售。
284你的售价将是为 L$[SALE_PRICE]并将被授æƒå”®ç»™[NAME]。 290你的售价将是为 [CURRENCY][SALE_PRICE]并将被授æƒå”®ç»™[NAME]。
285 <usetemplate name="okcancelbuttons" notext="å–消" yestext="确定"/> 291 <usetemplate name="okcancelbuttons" notext="å–消" yestext="确定"/>
286 </notification> 292 </notification>
287 <notification name="ConfirmLandSaleToAnyoneChange"> 293 <notification name="ConfirmLandSaleToAnyoneChange">
288 请注æ„: 点击 ‘售出给任何人’ 将使你的土地对整个第[GRID_NAME]社区开放,包括当å‰ä¸åœ¨è¿™ä¸ªåœ°åŒºä¸­çš„人。 294 请注æ„: 点击 ‘售出给任何人’ 将使你的土地对整个 [GRID_NAME] 社区开放,包括当å‰ä¸åœ¨è¿™ä¸ªåœ°åŒºä¸­çš„人。
289 295
290所选的 [LAND_SIZE]平方米土地正被设置为代售。 296所选的 [LAND_SIZE]平方米土地正被设置为代售。
291你的售价将是为 L$[SALE_PRICE]并将被授æƒå”®ç»™[NAME]。 297你的售价将是为 [CURRENCY][SALE_PRICE]并将被授æƒå”®ç»™[NAME]。
292 <usetemplate name="okcancelbuttons" notext="å–消" yestext="确定"/> 298 <usetemplate name="okcancelbuttons" notext="å–消" yestext="确定"/>
293 </notification> 299 </notification>
294 <notification name="ReturnObjectsDeededToGroup"> 300 <notification name="ReturnObjectsDeededToGroup">
@@ -512,7 +518,7 @@
512 无法写入文件 [[FILE]] 518 无法写入文件 [[FILE]]
513 </notification> 519 </notification>
514 <notification name="UnsupportedHardware"> 520 <notification name="UnsupportedHardware">
515 警告: 您的系统没有满足第[VIEWER_NAME]的最低系统需求。如果您继续使用第[VIEWER_NAME],您å¯èƒ½ä¼šå¾—到糟糕的性能体验。ä¸å¹¸çš„是,我们无法为ä¸æ”¯æŒçš„系统é…备æ供技术支æŒã€‚ 521 警告: 您的系统没有满足 [VIEWER_NAME] 的最低系统需求。如果您继续使用 [VIEWER_NAME] ,您å¯èƒ½ä¼šå¾—到糟糕的性能体验。ä¸å¹¸çš„是,我们无法为ä¸æ”¯æŒçš„系统é…备æ供技术支æŒã€‚
516 522
517MINSPECS 523MINSPECS
518您希望访问 [_URL] 得到更多信æ¯å—? 524您希望访问 [_URL] 得到更多信æ¯å—?
@@ -524,7 +530,7 @@ MINSPECS
524 <notification name="UnknownGPU"> 530 <notification name="UnknownGPU">
525 您的系统中安装了一个我们所ä¸çŸ¥é“的显å¡ã€‚ 531 您的系统中安装了一个我们所ä¸çŸ¥é“的显å¡ã€‚
526è¿™ç»å¸¸å‘生于我们还没有æ¥å¾—åŠæµ‹è¯•çš„新硬件上。 532è¿™ç»å¸¸å‘生于我们还没有æ¥å¾—åŠæµ‹è¯•çš„新硬件上。
527第[VIEWER_NAME]将很å¯èƒ½æ­£å¸¸è¿è¡Œï¼Œä½†æ‚¨ä¹Ÿè®¸è¦ 533 [VIEWER_NAME] 将很å¯èƒ½æ­£å¸¸è¿è¡Œï¼Œä½†æ‚¨ä¹Ÿè®¸è¦
528调节您的图形设定到更åˆé€‚的水平上。 534调节您的图形设定到更åˆé€‚的水平上。
529(编辑 &gt; 首选项 &gt; 图åƒ)。 535(编辑 &gt; 首选项 &gt; 图åƒ)。
530 <form name="form"> 536 <form name="form">
@@ -678,19 +684,24 @@ MINSPECS
678[FILE] 684[FILE]
679 </notification> 685 </notification>
680 <notification name="UnknownVorbisEncodeFailure"> 686 <notification name="UnknownVorbisEncodeFailure">
681 对文件进行 Vorbis ç¼–ç æ—¶å‘生错误: [FILE] 687 对文件进行 Vorbis ç¼–ç æ—¶å‘生错误:
688[FILE]
682 </notification> 689 </notification>
683 <notification name="CannotEncodeFile"> 690 <notification name="CannotEncodeFile">
684 无法编ç æ–‡ä»¶[FILE] 691 无法编ç æ–‡ä»¶
692[FILE]
685 </notification> 693 </notification>
686 <notification name="CorruptResourceFile"> 694 <notification name="CorruptResourceFile">
687 å´©å的的资æºæ–‡ä»¶ï¼š [FILE] 695 å´©å的的资æºæ–‡ä»¶ï¼š
696[FILE]
688 </notification> 697 </notification>
689 <notification name="UnknownResourceFileVersion"> 698 <notification name="UnknownResourceFileVersion">
690 未知的林登资æºæ–‡ä»¶ç‰ˆæœ¬å‘现于文件: [FILE] 699 未知的林登资æºæ–‡ä»¶ç‰ˆæœ¬å‘现于文件:
700[FILE]
691 </notification> 701 </notification>
692 <notification name="UnableToCreateOutputFile"> 702 <notification name="UnableToCreateOutputFile">
693 无法创建输出文件: [FILE] 703 无法创建输出文件:
704[FILE]
694 </notification> 705 </notification>
695 <notification name="DoNotSupportBulkAnimationUpload"> 706 <notification name="DoNotSupportBulkAnimationUpload">
696 我们现在ä¸æ”¯æŒå¤§å®—上传动画文件。 707 我们现在ä¸æ”¯æŒå¤§å®—上传动画文件。
@@ -832,8 +843,13 @@ www.secondlife.com/support
832 无法购买土地: 843 无法购买土地:
833无法找到该土地所在区域。 844无法找到该土地所在区域。
834 </notification> 845 </notification>
846 <notification name="CannotBuyLandMaturity">
847 无法购买土地:
848
849你所能访问的/选择的é™åˆ¶çº§åˆ«ä¸å…许你购买该土地。你å¯èƒ½é¦–先需è¦åœ¨å‚数设定中更改你的é™åˆ¶çº§åˆ«ã€‚
850</notification>
835 <notification name="CannotCloseFloaterBuyLand"> 851 <notification name="CannotCloseFloaterBuyLand">
836 在第[GRID_NAME]完æˆå¯¹è¿™æ¬¡äº¤æ˜“çš„ä¼°ä»·å‰ï¼Œ 852 在 [GRID_NAME] 完æˆå¯¹è¿™æ¬¡äº¤æ˜“çš„ä¼°ä»·å‰ï¼Œ
837ä½ ä¸èƒ½å…³é—­â€œè´­ä¹°åœŸåœ°â€çª—å£ã€‚ 853ä½ ä¸èƒ½å…³é—­â€œè´­ä¹°åœŸåœ°â€çª—å£ã€‚
838 </notification> 854 </notification>
839 <notification name="CannotDeedLandNothingSelected"> 855 <notification name="CannotDeedLandNothingSelected">
@@ -908,8 +924,9 @@ www.secondlife.com/support
908 </notification> 924 </notification>
909 <notification name="ReleaseLandWarning"> 925 <notification name="ReleaseLandWarning">
910 你将放弃é¢ç§¯ä¸º [AREA] 平方米的土地。 926 你将放弃é¢ç§¯ä¸º [AREA] 平方米的土地。
911放弃该土地会将他从你拥有的土地中 927
912移走, ä¸ä¼šå…‘æ¢æˆä»»ä½• L$。 928放弃该土地会将它从你æŒæœ‰çš„土地中
929去除, 但ä¸ä¼šé€€è¿˜ä»»ä½• [CURRENCY]。
913 930
914是å¦æ”¾å¼ƒåœŸåœ°ï¼Ÿ 931是å¦æ”¾å¼ƒåœŸåœ°ï¼Ÿ
915 <usetemplate name="okcancelbuttons" notext="å–消" yestext="确定"/> 932 <usetemplate name="okcancelbuttons" notext="å–消" yestext="确定"/>
@@ -1001,6 +1018,7 @@ www.secondlife.com/support
1001 </notification> 1018 </notification>
1002 <notification name="CannotSaveToAssetStore"> 1019 <notification name="CannotSaveToAssetStore">
1003 无法储存 [NAME] 至中央资料æœåŠ¡å™¨ã€‚ 1020 无法储存 [NAME] 至中央资料æœåŠ¡å™¨ã€‚
1021
1004这通常åªæ˜¯ä¸´æ—¶çš„问题。请自定义åŽå†æ¬¡ä¿å­˜ã€‚ 1022这通常åªæ˜¯ä¸´æ—¶çš„问题。请自定义åŽå†æ¬¡ä¿å­˜ã€‚
1005 1023
1006如果问题ä¾ç„¶å­˜åœ¨ï¼Œè¯·ç‚¹å‡» 1024如果问题ä¾ç„¶å­˜åœ¨ï¼Œè¯·ç‚¹å‡»
@@ -1008,7 +1026,7 @@ www.secondlife.com/support
1008您的网络设置的具体信æ¯ã€‚ 1026您的网络设置的具体信æ¯ã€‚
1009 </notification> 1027 </notification>
1010 <notification name="YouHaveBeenLoggedOut"> 1028 <notification name="YouHaveBeenLoggedOut">
1011 ä½ å·²ç»é€€å‡º[GRID_NAME]: 1029 ä½ å·²ç»è¢«é€€å‡º[GRID_NAME]:
1012 1030
1013[MESSAGE] 1031[MESSAGE]
1014 1032
@@ -1031,7 +1049,7 @@ www.secondlife.com/support
1031 <notification label="添加好å‹" name="AddFriendWithMessage"> 1049 <notification label="添加好å‹" name="AddFriendWithMessage">
1032 好å‹é—´å¯ä»¥ç›¸äº’授æƒæŸ¥çœ‹å„自在地图上的ä½ç½®å’Œåœ¨çº¿çŠ¶æ€ã€‚ 1050 好å‹é—´å¯ä»¥ç›¸äº’授æƒæŸ¥çœ‹å„自在地图上的ä½ç½®å’Œåœ¨çº¿çŠ¶æ€ã€‚
1033 1051
1034加 [NAME] 为好å‹å—? 1052是å¦æè®® [NAME] æˆä¸ºå¥½å‹ï¼Ÿ
1035 <form name="form"> 1053 <form name="form">
1036 <input name="message" type="text"> 1054 <input name="message" type="text">
1037 您想æˆä¸ºæˆ‘的好å‹ä¹ˆï¼Ÿ 1055 您想æˆä¸ºæˆ‘的好å‹ä¹ˆï¼Ÿ
@@ -1069,7 +1087,7 @@ www.secondlife.com/support
1069 你必须给分类广告设定一个å字。 1087 你必须给分类广告设定一个å字。
1070 </notification> 1088 </notification>
1071 <notification name="MinClassifiedPrice"> 1089 <notification name="MinClassifiedPrice">
1072 广告刊登出价必须大于 L$[MIN_PRICE]。 1090 广告刊登出价必须大于 [CURRENCY][MIN_PRICE]。
1073 1091
1074请输入一个更高的价格。 1092请输入一个更高的价格。
1075 </notification> 1093 </notification>
@@ -1192,8 +1210,7 @@ www.secondlife.com/support
1192 </notification> 1210 </notification>
1193 <notification name="ClothingLoading"> 1211 <notification name="ClothingLoading">
1194 你的装æŸä»åœ¨ä¸‹è½½ä¸­ã€‚ 1212 你的装æŸä»åœ¨ä¸‹è½½ä¸­ã€‚
1195你现在å¯ä»¥æŒ‰æ­£å¸¸çš„使用这个世界, 1213你现在å¯ä»¥æŒ‰æ­£å¸¸åœ°ä½¿ç”¨ [GRID_NAME],其他用户也å¯ä»¥çœ‹è§ä½ ã€‚
1196其他用户也å¯ä»¥çœ‹è§ä½ ã€‚
1197 <form name="form"> 1214 <form name="form">
1198 <ignore name="ignore" text="装æŸä¸‹è½½æ—¶é—´å¤ªé•¿"/> 1215 <ignore name="ignore" text="装æŸä¸‹è½½æ—¶é—´å¤ªé•¿"/>
1199 </form> 1216 </form>
@@ -1208,7 +1225,7 @@ www.secondlife.com/support
1208 <usetemplate name="okcancelbuttons" notext="继续" yestext="æ–°å¸æˆ·..."/> 1225 <usetemplate name="okcancelbuttons" notext="继续" yestext="æ–°å¸æˆ·..."/>
1209 </notification> 1226 </notification>
1210 <notification name="LoginPacketNeverReceived"> 1227 <notification name="LoginPacketNeverReceived">
1211 我们é‡åˆ°äº†ä¸€äº›è¿žæŽ¥ä¸Šçš„麻烦。问题å¯èƒ½å‡ºåœ¨æ‚¨çš„互è”网连接,也å¯èƒ½å‡ºåœ¨ç¬¬[GRID_NAME]çš„æœåŠ¡å™¨ã€‚ 1228 我们é‡åˆ°äº†ä¸€äº›è¿žæŽ¥ä¸Šçš„麻烦。问题å¯èƒ½å‡ºåœ¨æ‚¨çš„互è”网连接,也å¯èƒ½å‡ºåœ¨ [GRID_NAME] çš„æœåŠ¡å™¨ã€‚
1212 1229
1213请几分钟åŽå†è¯•, 或点击帮助连接我们的支æŒé¡µé¢ï¼Œæˆ–选择 “瞬间移动†æ¥å°è¯•çž¬é—´ç§»åŠ¨å›žå®¶ã€‚ 1230请几分钟åŽå†è¯•, 或点击帮助连接我们的支æŒé¡µé¢ï¼Œæˆ–选择 “瞬间移动†æ¥å°è¯•çž¬é—´ç§»åŠ¨å›žå®¶ã€‚
1214 <form name="form"> 1231 <form name="form">
@@ -1227,7 +1244,7 @@ www.secondlife.com/support
1227 <usetemplate name="okcancelbuttons" notext="女性" yestext="男性"/> 1244 <usetemplate name="okcancelbuttons" notext="女性" yestext="男性"/>
1228 </notification> 1245 </notification>
1229 <notification name="NotEnoughCurrency"> 1246 <notification name="NotEnoughCurrency">
1230 [NAME] L$ [PRICE] 您没有足够的 L$ æ¥è¿™æ ·åšã€‚ 1247 [NAME] [CURRENCY] [PRICE] 您没有足够的 [CURRENCY] æ¥è¿™æ ·åšã€‚
1231 </notification> 1248 </notification>
1232 <notification name="GrantedModifyRights"> 1249 <notification name="GrantedModifyRights">
1233 ä½ å·²ç»è¢«æŽˆäºˆç‰¹æƒï¼Œä½ å¯ä»¥ä»»æ„修改[FIRST_NAME] [LAST_NAME]的物体。 1250 ä½ å·²ç»è¢«æŽˆäºˆç‰¹æƒï¼Œä½ å¯ä»¥ä»»æ„修改[FIRST_NAME] [LAST_NAME]的物体。
@@ -1282,17 +1299,17 @@ www.secondlife.com/support
1282 <usetemplate name="okcancelbuttons" notext="å–消" yestext="烘烤"/> 1299 <usetemplate name="okcancelbuttons" notext="å–消" yestext="烘烤"/>
1283 </notification> 1300 </notification>
1284 <notification name="MaxAllowedAgentOnRegion"> 1301 <notification name="MaxAllowedAgentOnRegion">
1285 你最多åªèƒ½åˆ—出 [MAX_AGENTS]åå…许的居民。 1302 你最多åªèƒ½åˆ—出 [MAX_AGENTS] åå…许的居民。
1286 </notification> 1303 </notification>
1287 <notification name="MaxBannedAgentsOnRegion"> 1304 <notification name="MaxBannedAgentsOnRegion">
1288 你最多åªèƒ½åˆ—出 [MAX_BANNED] åç¦æ­¢çš„居民。 1305 你最多åªèƒ½åˆ—出 [MAX_BANNED] åç¦æ­¢çš„居民。
1289 </notification> 1306 </notification>
1290 <notification name="MaxAgentOnRegionBatch"> 1307 <notification name="MaxAgentOnRegionBatch">
1291 å°è¯•æ·»åŠ  [NUM_ADDED] å代表时失败: 1308 å°è¯•æ·»åŠ  [NUM_ADDED] å代表时失败:
1292超出 [LIST_TYPE] [MAX_AGENTS]åçš„é™åˆ¶ [NUM_EXCESS]å。 1309超出 [LIST_TYPE] [MAX_AGENTS] åçš„é™åˆ¶ [NUM_EXCESS] å。
1293 </notification> 1310 </notification>
1294 <notification name="MaxAllowedGroupsOnRegion"> 1311 <notification name="MaxAllowedGroupsOnRegion">
1295 ä½ åªèƒ½æœ‰[MAX_GROUPS]个å…许的社团。 1312 ä½ åªèƒ½æœ‰ [MAX_GROUPS] 个å…许的社团。
1296 <usetemplate name="okcancelbuttons" notext="å–消" yestext="烘烤"/> 1313 <usetemplate name="okcancelbuttons" notext="å–消" yestext="烘烤"/>
1297 </notification> 1314 </notification>
1298 <notification name="MaxManagersOnRegion"> 1315 <notification name="MaxManagersOnRegion">
@@ -1330,7 +1347,7 @@ www.secondlife.com/support
1330 <usetemplate name="okcancelbuttons" notext="继续" yestext="下载"/> 1347 <usetemplate name="okcancelbuttons" notext="继续" yestext="下载"/>
1331 </notification> 1348 </notification>
1332 <notification name="DownloadWindowsReleaseForDownload"> 1349 <notification name="DownloadWindowsReleaseForDownload">
1333 [VIEWER_NAME] 有新版本å¯ç”¨ã€‚ 1350 [VIEWER_NAME] 有新版本å¯ç”¨ã€‚
1334[MESSAGE] 1351[MESSAGE]
1335 1352
1336这个更新ä¸æ˜¯å¿…须的,但我们建议下载并安装此更新,以改善性能和稳定性。 1353这个更新ä¸æ˜¯å¿…须的,但我们建议下载并安装此更新,以改善性能和稳定性。
@@ -1364,7 +1381,7 @@ www.secondlife.com/support
1364 </notification> 1381 </notification>
1365 <notification name="DeedObjectToGroup"> 1382 <notification name="DeedObjectToGroup">
1366 转让此物体会导致社团: 1383 转让此物体会导致社团:
1367* 收到付给该物体的L$。 1384* 收到付给该物体的 [CURRENCY]。
1368 <usetemplate ignoretext="转让物体到社团" name="okcancelignore" notext="å–消" yestext="转让"/> 1385 <usetemplate ignoretext="转让物体到社团" name="okcancelignore" notext="å–消" yestext="转让"/>
1369 </notification> 1386 </notification>
1370 <notification name="WebLaunchExternalTarget"> 1387 <notification name="WebLaunchExternalTarget">
@@ -1462,7 +1479,9 @@ www.secondlife.com/support
1462一个旧社团, 或者拒ç»æ–°ç¤¾å›¢é‚€è¯·ã€‚ 1479一个旧社团, 或者拒ç»æ–°ç¤¾å›¢é‚€è¯·ã€‚
1463离开社团请选择‘编辑’èœå•ä¸‹çš„ 1480离开社团请选择‘编辑’èœå•ä¸‹çš„
1464‘我的社团...’选项。 1481‘我的社团...’选项。
1482
1465[NAME]邀请你æˆä¸ºè¯¥ç¤¾å›¢æˆå‘˜ã€‚ 1483[NAME]邀请你æˆä¸ºè¯¥ç¤¾å›¢æˆå‘˜ã€‚
1484
1466[INVITE] 1485[INVITE]
1467 <usetemplate name="okcancelbuttons" notext="è°¢ç»" yestext="加入"/> 1486 <usetemplate name="okcancelbuttons" notext="è°¢ç»" yestext="加入"/>
1468 </notification> 1487 </notification>
@@ -1581,7 +1600,7 @@ www.secondlife.com/support
1581 <notification name="RegionEntryAccessBlocked"> 1600 <notification name="RegionEntryAccessBlocked">
1582 您的é™åˆ¶çº§ä¸å…许您访问此地区。这å¯èƒ½æ˜¯ç”±äºŽæ‚¨çš„年龄还没有被验è¯ã€‚ 1601 您的é™åˆ¶çº§ä¸å…许您访问此地区。这å¯èƒ½æ˜¯ç”±äºŽæ‚¨çš„年龄还没有被验è¯ã€‚
1583 1602
1584请检查您的第[VIEWER_NAME]是å¦æ˜¯æœ€æ–°ç‰ˆæœ¬å¹¶åˆ°çŸ¥è¯†åº“去了解有关区访问æƒé™å’Œé™åˆ¶çº§çš„关系。 1603请检查您的 [VIEWER_NAME] 是å¦æ˜¯æœ€æ–°ç‰ˆæœ¬å¹¶åˆ°çŸ¥è¯†åº“去了解有关区访问æƒé™å’Œé™åˆ¶çº§çš„关系。
1585 <usetemplate 1604 <usetemplate
1586 name="okbutton" 1605 name="okbutton"
1587 yestext="确定"/> 1606 yestext="确定"/>
@@ -1619,7 +1638,7 @@ www.secondlife.com/support
1619 <notification name="LandClaimAccessBlocked"> 1638 <notification name="LandClaimAccessBlocked">
1620 您的é™åˆ¶çº§ä¸å…许您申请此地的产æƒã€‚è¿™å¯èƒ½æ˜¯ç”±äºŽæ‚¨è¿˜æ²¡æœ‰é€šè¿‡å¹´é¾„验è¯ã€‚ 1639 您的é™åˆ¶çº§ä¸å…许您申请此地的产æƒã€‚è¿™å¯èƒ½æ˜¯ç”±äºŽæ‚¨è¿˜æ²¡æœ‰é€šè¿‡å¹´é¾„验è¯ã€‚
1621 1640
1622请检查您的第[VIEWER_NAME]是å¦æ˜¯æœ€æ–°ç‰ˆæœ¬å¹¶åˆ°çŸ¥è¯†åº“去了解有关区访问æƒé™å’Œé™åˆ¶çº§çš„关系。 1641请检查您的 [VIEWER_NAME] 是å¦æ˜¯æœ€æ–°ç‰ˆæœ¬å¹¶åˆ°çŸ¥è¯†åº“去了解有关区访问æƒé™å’Œé™åˆ¶çº§çš„关系。
1623 <usetemplate 1642 <usetemplate
1624 name="okbutton" 1643 name="okbutton"
1625 yestext="确定"/> 1644 yestext="确定"/>
@@ -1653,7 +1672,7 @@ www.secondlife.com/support
1653 <notification name="LandBuyAccessBlocked"> 1672 <notification name="LandBuyAccessBlocked">
1654 您的é™åˆ¶çº§ä¸å…许您购买此土地。这å¯èƒ½æ˜¯ç”±äºŽæ‚¨è¿˜æ²¡æœ‰é€šè¿‡å¹´é¾„验è¯ã€‚ 1673 您的é™åˆ¶çº§ä¸å…许您购买此土地。这å¯èƒ½æ˜¯ç”±äºŽæ‚¨è¿˜æ²¡æœ‰é€šè¿‡å¹´é¾„验è¯ã€‚
1655 1674
1656请检查您的第[VIEWER_NAME]是å¦æ˜¯æœ€æ–°ç‰ˆæœ¬å¹¶åˆ°çŸ¥è¯†åº“去了解有关区访问æƒé™å’Œé™åˆ¶çº§çš„关系。 1675请检查您的 [VIEWER_NAME] 是å¦æ˜¯æœ€æ–°ç‰ˆæœ¬å¹¶åˆ°çŸ¥è¯†åº“去了解有关区访问æƒé™å’Œé™åˆ¶çº§çš„关系。
1657 <usetemplate 1676 <usetemplate
1658 name="okbutton" 1677 name="okbutton"
1659 yestext="确定"/> 1678 yestext="确定"/>
@@ -1709,7 +1728,7 @@ www.secondlife.com/support
1709 <notification name="PublishClassified"> 1728 <notification name="PublishClassified">
1710 请éµè®°ï¼š 分类广告费用ä¸ä¼šé€€è¿˜ã€‚ 1729 请éµè®°ï¼š 分类广告费用ä¸ä¼šé€€è¿˜ã€‚
1711 1730
1712是å¦ä»¥L$[AMOUNT]å‘布广告? 1731是å¦ä»¥ [CURRENCY][AMOUNT] å‘布广告?
1713 <usetemplate name="okcancelbuttons" notext="å–消" yestext="å‘布"/> 1732 <usetemplate name="okcancelbuttons" notext="å–消" yestext="å‘布"/>
1714 </notification> 1733 </notification>
1715 <notification name="SetClassifiedMature"> 1734 <notification name="SetClassifiedMature">
@@ -1746,6 +1765,14 @@ www.secondlife.com/support
1746 1765
1747默认: 关 1766默认: 关
1748 </notification> 1767 </notification>
1768 <notification
1769 label="最å°å¹´é¾„"
1770 name="HelpRegionMinimumAge"
1771 type="alertmodal">
1772进入该地区的用户其账户必须至少已建立这么多天æ‰èƒ½è¿›å…¥ã€‚
1773
1774默认: 0 (ç¦ç”¨)
1775</notification>
1749 <notification label="é”定飞翔" name="HelpRegionBlockFly"> 1776 <notification label="é”定飞翔" name="HelpRegionBlockFly">
1750 如果选择此项,无论æ¯ä¸ªåœ°å—设置如何, 1777 如果选择此项,无论æ¯ä¸ªåœ°å—设置如何,
1751人们都ä¸èƒ½åœ¨æ­¤åŒºåŸŸå†…飞行。 1778人们都ä¸èƒ½åœ¨æ­¤åŒºåŸŸå†…飞行。
@@ -1783,7 +1810,7 @@ www.secondlife.com/support
1783 <notification label="é™åˆ¶æŽ¨åŠ¨" name="HelpRegionRestrictPushObject"> 1810 <notification label="é™åˆ¶æŽ¨åŠ¨" name="HelpRegionRestrictPushObject">
1784 设定所有区域为é™åˆ¶æŽ¨åŠ¨åŒºã€‚å±…æ°‘åªèƒ½æŽ¨åŠ¨è‡ªå·±ï¼Œæˆ–者由土地主人的脚本代ç æŽ¨åŠ¨ã€‚ 1811 设定所有区域为é™åˆ¶æŽ¨åŠ¨åŒºã€‚å±…æ°‘åªèƒ½æŽ¨åŠ¨è‡ªå·±ï¼Œæˆ–者由土地主人的脚本代ç æŽ¨åŠ¨ã€‚
1785 1812
1786(推动功能和llPushObject() LSL函数有关。) 1813(推动指的是llPushObject() LSL函数。)
1787 1814
1788默认: 关 1815默认: 关
1789 </notification> 1816 </notification>
@@ -1800,11 +1827,11 @@ www.secondlife.com/support
1800 1827
1801默认: 选择 1828默认: 选择
1802 </notification> 1829 </notification>
1803 <notification label="Do Not Show In Search" name="HelpRegionSearch"> 1830 <notification label="ä¸åœ¨æœç´¢ä¸­æ˜¾ç¤º" name="HelpRegionSearch">
1804 打开该选项将阻止地å—拥有者在æœç´¢ä¸­åˆ—出他们的地å—。 1831 打开该选项将阻止地å—拥有者在æœç´¢ä¸­åˆ—出他们的地å—。
1805默认:关 1832默认:关
1806 </notification> 1833 </notification>
1807 <notification label="更改区域的æˆäººæŒ‡æ•°è®¾å®š" name="RegionMaturityChange"> 1834 <notification label="更改区域的设定" name="RegionMaturityChange">
1808 此区域内的æˆäººå†…容等级已ç»æ›´æ–°ã€‚ 1835 此区域内的æˆäººå†…容等级已ç»æ›´æ–°ã€‚
1809 1836
1810但是,世界地图更新时间需è¦å¤§çº¦5分钟, 1837但是,世界地图更新时间需è¦å¤§çº¦5分钟,
@@ -1947,8 +1974,8 @@ www.secondlife.com/support
1947 地产ç»ç†æ˜¯ä½ å§”派的负责区域控制 1974 地产ç»ç†æ˜¯ä½ å§”派的负责区域控制
1948和地产调节的居民。 地产ç»ç† 1975和地产调节的居民。 地产ç»ç†
1949有æƒæ”¹å˜æŽ§åˆ¶æ¿å†…任何调节项, 除了上传, 1976有æƒæ”¹å˜æŽ§åˆ¶æ¿å†…任何调节项, 除了上传,
1950下载, 和压缩地形。特别的, 他们有æƒå…许 1977下载, 和压缩地形。值得指出的一点是
1951或ç¦æ­¢å±…民进入你的地产。 1978他们有æƒå…许或ç¦æ­¢å±…民进入你的地产。
1952 1979
1953地产ç»ç†åªèƒ½è¢«åœ°äº§ä¸»äººé›‡ä½£æˆ–辞退 1980地产ç»ç†åªèƒ½è¢«åœ°äº§ä¸»äººé›‡ä½£æˆ–辞退
1954, ä¸èƒ½äº’相之间委派。请选择你信任的 1981, ä¸èƒ½äº’相之间委派。请选择你信任的
@@ -2005,8 +2032,8 @@ www.secondlife.com/support
2005默认:关 2032默认:关
2006 </notification> 2033 </notification>
2007 <notification label="语音èŠå¤©ç‰ˆæœ¬ä¸ç¬¦åˆ" name="VoiceVersionMismatch"> 2034 <notification label="语音èŠå¤©ç‰ˆæœ¬ä¸ç¬¦åˆ" name="VoiceVersionMismatch">
2008 该版本的第[VIEWER_NAME]与该地区的语音èŠå¤©ä¸å…¼å®¹ã€‚ 2035 该版本的 [VIEWER_NAME] 与该地区的语音èŠå¤©ä¸å…¼å®¹ã€‚
2009为了正常使用语音èŠå¤©ä½ éœ€è¦æ›´æ–°ç¬¬[VIEWER_NAME]。 2036为了正常使用语音èŠå¤©ä½ éœ€è¦æ›´æ–° [VIEWER_NAME] 。
2010 </notification> 2037 </notification>
2011 <notification label="ä¸åŠ¨äº§å¥‘约åˆåŒ" name="HelpEstateCovenant"> 2038 <notification label="ä¸åŠ¨äº§å¥‘约åˆåŒ" name="HelpEstateCovenant">
2012 设置ä¸åŠ¨äº§çš„契约åˆåŒä½¿ä½ å¯ä»¥å‡ºå”®åœ°äº§ä¸­çš„土地。如果ä¸åŠ¨äº§å¥‘约åˆåŒæ²¡æœ‰è®¾ç½®ï¼Œä½ åˆ™ä¸èƒ½å‡ºå”®åœŸåœ°ã€‚如果在买主购买之å‰ï¼Œä½ ä¸æƒ³åœ¨åœŸåœ°ä¸Šè®¾ç½®ä»»ä½•ç›¸å…³çš„给买主的æ„è§å’Œè§„定,你的契约åˆåŒçš„注释å¡å¯ä»¥æ˜¯ç©ºçš„。 2039 设置ä¸åŠ¨äº§çš„契约åˆåŒä½¿ä½ å¯ä»¥å‡ºå”®åœ°äº§ä¸­çš„土地。如果ä¸åŠ¨äº§å¥‘约åˆåŒæ²¡æœ‰è®¾ç½®ï¼Œä½ åˆ™ä¸èƒ½å‡ºå”®åœŸåœ°ã€‚如果在买主购买之å‰ï¼Œä½ ä¸æƒ³åœ¨åœŸåœ°ä¸Šè®¾ç½®ä»»ä½•ç›¸å…³çš„给买主的æ„è§å’Œè§„定,你的契约åˆåŒçš„注释å¡å¯ä»¥æ˜¯ç©ºçš„。
@@ -2028,48 +2055,50 @@ www.secondlife.com/support
2028请仅选择一件物体,å†è¯•ä¸€æ¬¡ã€‚ 2055请仅选择一件物体,å†è¯•ä¸€æ¬¡ã€‚
2029 </notification> 2056 </notification>
2030 <notification name="BuyOriginal"> 2057 <notification name="BuyOriginal">
2031 是å¦ä»¥ L$[PRICE] 购买原物体? 2058 是å¦ä»¥ [CURRENCY][PRICE] 购买原物体?
2032ä½ å°†æˆä¸ºç‰©ä½“的主人。 2059ä½ å°†æˆä¸ºç‰©ä½“的主人。
2033ä½ å°†å¯ä»¥ï¼š 2060ä½ å°†å¯ä»¥ï¼š
2034 修改: [MODIFYPERM] 2061• 修改: [MODIFYPERM]
2035 å¤åˆ¶ï¼š [COPYPERM] 2062• å¤åˆ¶ï¼š [COPYPERM]
2036 转å–或赠é€ï¼š [RESELLPERM] 2063• 转å–或赠é€ï¼š [RESELLPERM]
2037 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/> 2064 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/>
2038 </notification> 2065 </notification>
2039 <notification name="BuyOriginalNoOwner"> 2066 <notification name="BuyOriginalNoOwner">
2040 是å¦ä»¥ L$[PRICE] 购买原物体? 2067 是å¦ä»¥ [CURRENCY][PRICE] 购买原物体?
2041ä½ å°†æˆä¸ºç‰©ä½“的主人。 2068ä½ å°†æˆä¸ºç‰©ä½“的主人。
2042ä½ å°†å¯ä»¥ï¼š 2069ä½ å°†å¯ä»¥ï¼š
2043 修改: [MODIFYPERM] 2070• 修改: [MODIFYPERM]
2044 å¤åˆ¶ï¼š [COPYPERM] 2071• å¤åˆ¶ï¼š [COPYPERM]
2045 转å–或赠é€ï¼š [RESELLPERM] 2072• 转å–或赠é€ï¼š [RESELLPERM]
2046 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/> 2073 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/>
2047 </notification> 2074 </notification>
2048 <notification name="BuyCopy"> 2075 <notification name="BuyCopy">
2049 是å¦ä»¥ L$[PRICE] 从 [OWNER] 购买物体的副本? 2076 是å¦ä»¥ [CURRENCY][PRICE] 从 [OWNER] 购买物体的副本?
2050这件物体将被å¤åˆ¶åˆ°ä½ çš„库存。 2077这件物体将被å¤åˆ¶åˆ°ä½ çš„库存。
2051ä½ å°†å¯ä»¥ï¼š 2078ä½ å°†å¯ä»¥ï¼š
2052 修改: [MODIFYPERM] 2079• 修改: [MODIFYPERM]
2053 å¤åˆ¶ï¼š [COPYPERM] 2080• å¤åˆ¶ï¼š [COPYPERM]
2054 转å–或赠é€ï¼š [RESELLPERM] 2081• 转å–或赠é€ï¼š [RESELLPERM]
2055 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/> 2082 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/>
2056 </notification> 2083 </notification>
2057 <notification name="BuyCopyNoOwner"> 2084 <notification name="BuyCopyNoOwner">
2058 是å¦ä»¥ L$[PRICE] 购买物体的副本? 2085 是å¦ä»¥ [CURRENCY][PRICE] 购买物体的副本?
2059这件物体将被å¤åˆ¶åˆ°ä½ çš„库存。 2086这件物体将被å¤åˆ¶åˆ°ä½ çš„库存。
2060ä½ å°†å¯ä»¥ï¼š 2087ä½ å°†å¯ä»¥ï¼š
2061 修改: [MODIFYPERM] 2088• 修改: [MODIFYPERM]
2062 å¤åˆ¶ï¼š [COPYPERM] 2089• å¤åˆ¶ï¼š [COPYPERM]
2063 转å–或赠é€ï¼š [RESELLPERM] 2090• 转å–或赠é€ï¼š [RESELLPERM]
2064 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/> 2091 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/>
2065 </notification> 2092 </notification>
2066 <notification name="BuyContents"> 2093 <notification name="BuyContents">
2067 是å¦ä»¥ L$[PRICE] 从 [OWNER] 购买内容? 2094 是å¦ä»¥ [CURRENCY][PRICE] 从 [OWNER] 购买内容?
2095
2068它们将被å¤åˆ¶åˆ°ä½ çš„库存。 2096它们将被å¤åˆ¶åˆ°ä½ çš„库存。
2069 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/> 2097 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/>
2070 </notification> 2098 </notification>
2071 <notification name="BuyContentsNoOwner"> 2099 <notification name="BuyContentsNoOwner">
2072 是å¦ä»¥ L$[PRICE] 购买内容? 2100 是å¦ä»¥ [CURRENCY][PRICE] 购买内容?
2101
2073它们将被å¤åˆ¶åˆ°ä½ çš„库存。 2102它们将被å¤åˆ¶åˆ°ä½ çš„库存。
2074 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/> 2103 <usetemplate name="okcancelbuttons" notext="å–消" yestext="è´­ä¹°"/>
2075 </notification> 2104 </notification>
@@ -2082,6 +2111,7 @@ www.secondlife.com/support
2082 </notification> 2111 </notification>
2083 <notification name="ConfirmPurchasePassword" type="password"> 2112 <notification name="ConfirmPurchasePassword" type="password">
2084 此项交易将: 2113 此项交易将:
2114
2085 [ACTION] 2115 [ACTION]
2086 2116
2087你确定è¦ç»§ç»­è´­ä¹°å—? 2117你确定è¦ç»§ç»­è´­ä¹°å—?
@@ -2127,16 +2157,19 @@ www.secondlife.com/support
2127 这个物体中没有你能够å¤åˆ¶çš„项目。 2157 这个物体中没有你能够å¤åˆ¶çš„项目。
2128 </notification> 2158 </notification>
2129 <notification name="WebLaunchAccountHistory"> 2159 <notification name="WebLaunchAccountHistory">
2130 是å¦å‰å¾€ç¬¬[SECOND_LIFE]网站查看你的å¸æˆ·è®°å½•ï¼Ÿ 2160 是å¦å‰å¾€ [SECOND_LIFE] 网站查看你的å¸æˆ·è®°å½•ï¼Ÿ
2131 <usetemplate ignoretext="打开æµè§ˆå™¨æŸ¥çœ‹å¸æˆ·è®°å½•" name="okcancelignore" notext="å–消" yestext="打开网页"/> 2161 <usetemplate ignoretext="打开æµè§ˆå™¨æŸ¥çœ‹å¸æˆ·è®°å½•" name="okcancelignore" notext="å–消" yestext="打开网页"/>
2132 </notification> 2162 </notification>
2133 <notification name="ClickOpenF1Help"> 2163 <notification name="ClickOpenF1Help">
2134 访问第[SECOND_LIFE]帮助网站å—? 2164 访问 [SECOND_LIFE] 帮助网站å—?
2135 <usetemplate ignoretext="访问第[SECOND_LIFE]帮助网站时" name="okcancelignore" notext="å–消" yestext="打开页é¢"/> 2165 <usetemplate ignoretext="访问 [SECOND_LIFE] 帮助网站时" name="okcancelignore" notext="å–消" yestext="打开页é¢"/>
2166 </notification>
2167 <notification name="NoSupportUrl">
2168 [GRID_NAME] 没有支æŒç½‘页的链接。
2136 </notification> 2169 </notification>
2137 <notification name="ConfirmQuit"> 2170 <notification name="ConfirmQuit">
2138 确定退出? 2171 确定退出?
2139 <usetemplate ignoretext="退出第[VIEWER_NAME]时" name="okcancelignore" notext="继续" yestext="退出"/> 2172 <usetemplate ignoretext="退出 [VIEWER_NAME] 时" name="okcancelignore" notext="继续" yestext="退出"/>
2140 </notification> 2173 </notification>
2141 <notification name="HelpReportAbuseEmailLL"> 2174 <notification name="HelpReportAbuseEmailLL">
2142 使用该工具æ¥æŠ¥å‘Šè¿åæœåŠ¡æ¡æ¬¾å’Œç¤¾åŒºæ ‡å‡†ã€‚ 请访问: 2175 使用该工具æ¥æŠ¥å‘Šè¿åæœåŠ¡æ¡æ¬¾å’Œç¤¾åŒºæ ‡å‡†ã€‚ 请访问:
@@ -2157,9 +2190,9 @@ www.secondlife.com/support
2157è¿™å—区域的主人将éµå®ˆåŸºäºŽåœŸåœ°å¥‘约所概述的当地规则,解决报告。 2190è¿™å—区域的主人将éµå®ˆåŸºäºŽåœŸåœ°å¥‘约所概述的当地规则,解决报告。
2158(ä½ å¯ä»¥ä»Žä¸–ç•Œèœå•ä¸­é€‰æ‹© “关于土地†æ¥æŸ¥çœ‹å¥‘约。) 2191(ä½ å¯ä»¥ä»Žä¸–ç•Œèœå•ä¸­é€‰æ‹© “关于土地†æ¥æŸ¥çœ‹å¥‘约。)
2159 2192
2160该报告的解决结果仅对该区域有效;居民对第[GRID_NAME]其他地方的使用 2193该报告的解决结果仅对该区域有效;居民对 [GRID_NAME] 其他地方的使用
2161å°†ä¸ä¼šå—该报告结果的影å“。<!-- åªæœ‰æž—登实验室能够é™åˆ¶è®¿é—®æ•´ä¸ª 2194å°†ä¸ä¼šå—该报告结果的影å“。<!-- åªæœ‰æž—登实验室能够é™åˆ¶è®¿é—®æ•´ä¸ª
2162第[GRID_NAME]。--> 2195[GRID_NAME]。-->
2163 </notification> 2196 </notification>
2164 <notification name="HelpReportBug"> 2197 <notification name="HelpReportBug">
2165 这个工具åªç”¨æ¥æŠ¥å‘Šä¸Žæ述或预期工作ä¸ä¸€è‡´çš„技术功能。请尽能æ供详细资料。 2198 这个工具åªç”¨æ¥æŠ¥å‘Šä¸Žæ述或预期工作ä¸ä¸€è‡´çš„技术功能。请尽能æ供详细资料。
@@ -2187,17 +2220,14 @@ http://secondlife.com/community/support.php
2187 </notification> 2220 </notification>
2188 <notification name="HelpReportAbuseAbuserLocationEmpty"> 2221 <notification name="HelpReportAbuseAbuserLocationEmpty">
2189 请输入ä¸è‰¯è¡Œä¸ºå‘生的地å€ã€‚ 2222 请输入ä¸è‰¯è¡Œä¸ºå‘生的地å€ã€‚
2190
2191输入正确的æè¿°å¯ä»¥å¸®åŠ©æˆ‘们归档和处ç†ä¸è‰¯è¡Œä¸ºæŠ¥å‘Šã€‚ 2223输入正确的æè¿°å¯ä»¥å¸®åŠ©æˆ‘们归档和处ç†ä¸è‰¯è¡Œä¸ºæŠ¥å‘Šã€‚
2192 </notification> 2224 </notification>
2193 <notification name="HelpReportAbuseSummaryEmpty"> 2225 <notification name="HelpReportAbuseSummaryEmpty">
2194 请输入ä¸è‰¯è¡Œä¸ºçš„概况。 2226 请输入ä¸è‰¯è¡Œä¸ºçš„概况。
2195
2196输入对事件的正确æè¿°å¯ä»¥å¸®åŠ©æˆ‘们归档和处ç†ä¸è‰¯è¡Œä¸ºæŠ¥å‘Šã€‚ 2227输入对事件的正确æè¿°å¯ä»¥å¸®åŠ©æˆ‘们归档和处ç†ä¸è‰¯è¡Œä¸ºæŠ¥å‘Šã€‚
2197 </notification> 2228 </notification>
2198 <notification name="HelpReportBugSummaryEmpty"> 2229 <notification name="HelpReportBugSummaryEmpty">
2199 请输入错误概况。 2230 请输入错误概况。
2200
2201输入对事件的正确æè¿°å¯ä»¥å¸®åŠ©æˆ‘们归档和处ç†é”™è¯¯æŠ¥å‘Šã€‚ 2231输入对事件的正确æè¿°å¯ä»¥å¸®åŠ©æˆ‘们归档和处ç†é”™è¯¯æŠ¥å‘Šã€‚
2202 </notification> 2232 </notification>
2203 <notification name="HelpReportAbuseDetailsEmpty"> 2233 <notification name="HelpReportAbuseDetailsEmpty">
@@ -2215,9 +2245,9 @@ http://secondlife.com/community/support.php
2215 亲爱的居民, 2245 亲爱的居民,
2216如果您将è¦æŠ¥å‘ŠçŸ¥è¯†äº§æƒä¾µçŠ¯ï¼Œè¯·ç¡®è®¤æ‚¨é€šè¿‡æ­£ç¡®çš„æ–¹å¼æŠ¥å‘Šï¼š 2246如果您将è¦æŠ¥å‘ŠçŸ¥è¯†äº§æƒä¾µçŠ¯ï¼Œè¯·ç¡®è®¤æ‚¨é€šè¿‡æ­£ç¡®çš„æ–¹å¼æŠ¥å‘Šï¼š
2217 2247
2218(1) ä¸è‰¯è¡Œä¸ºæŠ¥å‘Šæ‰‹ç»­ã€‚您å¯ä»¥æ交一份ä¸è‰¯è¡Œä¸ºæŠ¥å‘Šï¼Œå¦‚果您相信æŸä½å±…民正在利用第[SECOND_LIFE]许å¯ç³»ç»Ÿçš„æ¼æ´žï¼Œä¾‹å¦‚使用 CopyBot 或者类似的å¤åˆ¶å·¥å…·ï¼Œæ¥ä¾µçŠ¯çŸ¥è¯†äº§æƒã€‚ä¸è‰¯è¡Œä¸ºè°ƒæŸ¥å°ç»„负责对于è¿å第[SECOND_LIFE]社区标准或æœåŠ¡æ¡æ¬¾çš„行为进行调查以åŠå®žè¡Œç›¸åº”的惩罚措施。但是,ä¸è‰¯è¡Œä¸ºè°ƒæŸ¥å°ç»„ä¸è´Ÿè´£ä»Žä¸–界中移除内容,并且ä¸ä¼šå¯¹è¿™ç±»è¯·æ±‚作出回应。 2248(1) ä¸è‰¯è¡Œä¸ºæŠ¥å‘Šæ‰‹ç»­ã€‚您å¯ä»¥æ交一份ä¸è‰¯è¡Œä¸ºæŠ¥å‘Šï¼Œå¦‚果您相信æŸä½å±…民正在利用 [SECOND_LIFE] 许å¯ç³»ç»Ÿçš„æ¼æ´žï¼Œä¾‹å¦‚使用 CopyBot 或者类似的å¤åˆ¶å·¥å…·ï¼Œæ¥ä¾µçŠ¯çŸ¥è¯†äº§æƒã€‚ä¸è‰¯è¡Œä¸ºè°ƒæŸ¥å°ç»„负责对于è¿å [SECOND_LIFE] 社区标准或æœåŠ¡æ¡æ¬¾çš„行为进行调查以åŠå®žè¡Œç›¸åº”的惩罚措施。但是,ä¸è‰¯è¡Œä¸ºè°ƒæŸ¥å°ç»„ä¸è´Ÿè´£ä»Žä¸–界中移除内容,并且ä¸ä¼šå¯¹è¿™ç±»è¯·æ±‚作出回应。
2219 2249
2220(2) DMCA (æ•°å­—åƒå¹´ç‰ˆæƒå定) 或者说内容移除手续。 è¦è¯·æ±‚从第[SECOND_LIFE]中去除内容,您*å¿…é¡»*æ交一份按我们 DMCA æ¡ä¾‹ http://secondlife.com/corporate/dmca.php 中所指出的,有效的侵æƒé€šçŸ¥ã€‚ 2250(2) DMCA (æ•°å­—åƒå¹´ç‰ˆæƒå定) 或者说内容移除手续。 è¦è¯·æ±‚从 [SECOND_LIFE] 中去除内容,您*å¿…é¡»*æ交一份按我们 DMCA æ¡ä¾‹ http://secondlife.com/corporate/dmca.php 中所指出的,有效的侵æƒé€šçŸ¥ã€‚
2221 2251
2222如果您ä»å¸Œæœ›ç»§ç»­ä¸è‰¯è¡Œä¸ºçš„报告,请关闭此窗å£ï¼Œå¹¶å®Œæˆæ交您的报告。 2252如果您ä»å¸Œæœ›ç»§ç»­ä¸è‰¯è¡Œä¸ºçš„报告,请关闭此窗å£ï¼Œå¹¶å®Œæˆæ交您的报告。
2223您å¯èƒ½éœ€è¦é€‰æ‹© ‘CopyBot 或利用æ¼æ´žâ€™ 这一特定分类。 2253您å¯èƒ½éœ€è¦é€‰æ‹© ‘CopyBot 或利用æ¼æ´žâ€™ 这一特定分类。
@@ -2228,10 +2258,12 @@ http://secondlife.com/community/support.php
2228 </notification> 2258 </notification>
2229 <notification name="FailedRequirementsCheck"> 2259 <notification name="FailedRequirementsCheck">
2230 以下必须的部件丢失于 [FLOATER]: 2260 以下必须的部件丢失于 [FLOATER]:
2261
2231[COMPONENTS] 2262[COMPONENTS]
2232 </notification> 2263 </notification>
2233 <notification label="替æ¢å·²ç»å­˜åœ¨çš„附件" name="ReplaceAttachment"> 2264 <notification label="替æ¢å·²ç»å­˜åœ¨çš„附件" name="ReplaceAttachment">
2234 å·²ç»æœ‰ä¸€ä¸ªç‰©ä½“附在身体的这个部ä½ä¸Šäº†ã€‚ 2265 å·²ç»æœ‰ä¸€ä¸ªç‰©ä½“附在身体的这个部ä½ä¸Šäº†ã€‚
2266
2235你是å¦è¦ç”¨æ‰€é€‰ç‰©ä½“替代它? 2267你是å¦è¦ç”¨æ‰€é€‰ç‰©ä½“替代它?
2236 <form name="form"> 2268 <form name="form">
2237 <ignore name="ignore" save_option="true" text="替æ¢å·²æœ‰çš„附件时"/> 2269 <ignore name="ignore" save_option="true" text="替æ¢å·²æœ‰çš„附件时"/>
@@ -2345,7 +2377,7 @@ http://secondlife.com/community/support.php
2345点击 ‘高级水é¢é€‰é¡¹â€™ æ¥æ‰“开较高级水é¢è®¾ç½®çš„编辑器。 2377点击 ‘高级水é¢é€‰é¡¹â€™ æ¥æ‰“开较高级水é¢è®¾ç½®çš„编辑器。
2346 </notification> 2378 </notification>
2347 <notification name="HelpDayCycle"> 2379 <notification name="HelpDayCycle">
2348 日夜周期编辑器给予你对第[GRID_NAME]日夜循环中天空的控制。这也是基础环境编辑器的时间滑å—所使用的周期。 2380 日夜周期编辑器给予你对 [GRID_NAME] 日夜循环中天空的控制。这也是基础环境编辑器的时间滑å—所使用的周期。
2349 2381
2350日夜周期编辑器的基础是关键帧。它们是带有天空预设的节点 (在时间图上以ç°è‰²çš„点表示)。当时间æµé€ï¼ŒWindLight 的天空 也会通过过在这些关键帧之间æ’值而产生å˜åŒ–。 2382日夜周期编辑器的基础是关键帧。它们是带有天空预设的节点 (在时间图上以ç°è‰²çš„点表示)。当时间æµé€ï¼ŒWindLight 的天空 也会通过过在这些关键帧之间æ’值而产生å˜åŒ–。
2351 2383
@@ -2427,7 +2459,7 @@ http://secondlife.com/community/support.php
2427 控制云层在 Y 轴移动的速度。 2459 控制云层在 Y 轴移动的速度。
2428 </notification> 2460 </notification>
2429 <notification name="HelpClassicClouds"> 2461 <notification name="HelpClassicClouds">
2430 选å–该框以在渲染 WindLight 的云层åŒæ—¶æ¸²æŸ“第[SECOND_LIFE]的旧云层。 2462 选å–该框以在渲染 WindLight 的云层åŒæ—¶æ¸²æŸ“ [SECOND_LIFE] 的旧云层。
2431 </notification> 2463 </notification>
2432 <notification name="HelpWaterFogColor"> 2464 <notification name="HelpWaterFogColor">
2433 控制水雾颜色。 2465 控制水雾颜色。
@@ -2515,8 +2547,8 @@ http://secondlife.com/community/support.php
2515 <notification name="Cannot_Purchase_an_Attachment"> 2547 <notification name="Cannot_Purchase_an_Attachment">
2516 物å“作为附件时无法购买。 2548 物å“作为附件时无法购买。
2517 </notification> 2549 </notification>
2518 <notification label="About Requests for the Debit Permission" name="DebitPermissionDetails"> 2550 <notification label="关于æ款æƒé™è¯·æ±‚" name="DebitPermissionDetails">
2519 授予该请求将给予脚本æŒç»­çš„从您的å¸æˆ·ä¸­æå–æž—ç™»å¸ (L$) 的许å¯ã€‚è¦å–消这项许å¯ï¼Œç‰©ä½“的拥有者必须删除物体或é‡ç½®ç‰©ä½“中的脚本。 2551 授予该请求将给予脚本æŒç»­çš„从您的å¸æˆ·ä¸­æå– [CURRENCY] 的许å¯ã€‚è¦å–消这项许å¯ï¼Œç‰©ä½“的拥有者必须删除物体或é‡ç½®ç‰©ä½“中的脚本。
2520 <usetemplate name="okbutton" yestext="确定"/> 2552 <usetemplate name="okbutton" yestext="确定"/>
2521 </notification> 2553 </notification>
2522 <notification name="AutoWearNewClothing"> 2554 <notification name="AutoWearNewClothing">
@@ -2525,17 +2557,17 @@ http://secondlife.com/community/support.php
2525 </notification> 2557 </notification>
2526 <notification name="NotAgeVerified"> 2558 <notification name="NotAgeVerified">
2527 您需è¦éªŒè¯å¹´é¾„æ‰èƒ½è¿›å…¥è¿™ä¸ªåœ°å—。 2559 您需è¦éªŒè¯å¹´é¾„æ‰èƒ½è¿›å…¥è¿™ä¸ªåœ°å—。
2528您希望访问第[SECOND_LIFE]网站验è¯æ‚¨çš„年龄å—? 2560您希望访问 [SECOND_LIFE] 网站验è¯æ‚¨çš„年龄å—?
2529 2561
2530[_URL] 2562[_URL]
2531 <url name="url" option="0"> 2563 <url name="url" option="0">
2532 https://secondlife.com/account/verification.php 2564 https://secondlife.com/account/verification.php
2533 </url> 2565 </url>
2534 <usetemplate ignoretext="警告没有验è¯å¹´é¾„æ—¶" name="okcancelignore" notext="å¦" yestext="是"/> 2566 <usetemplate ignoretext="没有验è¯å¹´é¾„时警告" name="okcancelignore" notext="å¦" yestext="是"/>
2535 </notification> 2567 </notification>
2536 <notification name="Cannot enter parcel: no payment info on file"> 2568 <notification name="Cannot enter parcel: no payment info on file">
2537 在您访问该土地å‰ï¼Œæ‚¨çš„å¸æˆ·éœ€è¦ä»˜æ¬¾ä¿¡æ¯ã€‚ 2569 在您访问该土地å‰ï¼Œæ‚¨çš„å¸æˆ·éœ€è¦ä»˜æ¬¾ä¿¡æ¯ã€‚
2538您è¦åˆ°[SECOND_LIFE]网站æ¥è®¾ç½®ä¹ˆï¼Ÿ 2570您è¦åˆ° [SECOND_LIFE] 网站æ¥è®¾ç½®ä¹ˆï¼Ÿ
2539 2571
2540[_URL] 2572[_URL]
2541 <url name="url" option="0"> 2573 <url name="url" option="0">
@@ -2549,6 +2581,68 @@ http://secondlife.com/community/support.php
2549 <notification name="SystemMessageTip"> 2581 <notification name="SystemMessageTip">
2550 [MESSAGE] 2582 [MESSAGE]
2551 </notification> 2583 </notification>
2584 <notification name="SetDisplayNameSuccess">
2585 你好 [DISPLAY_NAME]!
2586
2587 和真实生活中一样,大家认识新åå­—è¦æœ‰ä¸€æ®µæ—¶é—´ã€‚所以若新的显示å称没有立å³åœ¨ç‰©ä½“ã€è„šæœ¬ã€æœç´¢ç­‰ç­‰ä¸­æ›´æ–°çš„è¯ï¼Œè¯·ç¨å¾…几天。
2588 </notification>
2589
2590 <notification name="SetDisplayNameBlocked">
2591 抱歉,你ä¸èƒ½æ›´æ”¹ä½ çš„显示å称。若你觉得这ä¸åº”该å‘生,请è”系支æŒäººå‘˜ã€‚
2592 </notification>
2593
2594 <notification name="SetDisplayNameFailedLength">
2595 抱歉,那个å字太长了。显示å称最长å¯ä»¥æœ‰ [LENGTH] 个字符。
2596
2597 请å°è¯•çŸ­ä¸€ç‚¹çš„å字。
2598 </notification>
2599
2600 <notification name="SetDisplayNameFailedGeneric">
2601 抱歉,我们ä¸èƒ½è®¾ç½®ä½ çš„显示å称。请ç¨å€™å†è¯•ã€‚
2602 </notification>
2603
2604 <notification
2605 icon="alertmodal.tga"
2606 name="SetDisplayNameMismatch">
2607 你键入的显示å称ä¸ä¸€è‡´ã€‚请é‡æ–°è¾“入。
2608 </notification>
2609
2610 <!-- *NOTE: This should never happen -->
2611 <notification name="AgentDisplayNameUpdateThresholdExceeded">
2612 抱歉,你è¦å¤šç­‰ä¸€æ®µæ—¶é—´æ‰èƒ½æ›´æ”¹ä½ çš„显示å称。
2613
2614 å‚è§ http://wiki.secondlife.com/wiki/Setting_your_display_name
2615
2616 请ç¨å€™å†è¯•ã€‚
2617 </notification>
2618
2619 <notification
2620 icon="alertmodal.tga"
2621 name="AgentDisplayNameSetBlocked">
2622 抱歉,我们ä¸èƒ½è®¾ç½®ä½ æ‰€å¸Œæœ›çš„显示å称,因为其中å«æœ‰ç¦æ­¢ç”¨è¯ã€‚
2623
2624 请å°è¯•åˆ«çš„å字。
2625 </notification>
2626
2627 <notification
2628 icon="alertmodal.tga"
2629 name="AgentDisplayNameSetInvalidUnicode">
2630 你所希望设置的显示å称包å«æ— æ•ˆå­—符。
2631 </notification>
2632
2633 <notification
2634 icon="alertmodal.tga"
2635 name="AgentDisplayNameSetOnlyPunctuation">
2636 你的显示å称必须å«æœ‰ä¸æ˜¯æ ‡ç‚¹ç¬¦å·çš„字。
2637 </notification>
2638
2639
2640 <notification
2641 icon="notifytip.tga"
2642 name="DisplayNameUpdate">
2643 [OLD_NAME] ([SLID]) 已改å为 [NEW_NAME].
2644 </notification>
2645
2552 <notification name="Cancelled"> 2646 <notification name="Cancelled">
2553 å·²å–消 2647 å·²å–消
2554 </notification> 2648 </notification>
@@ -2578,7 +2672,7 @@ http://secondlife.com/community/support.php
2578(å¤§æ¦‚è¦ 5 分钟) 2672(å¤§æ¦‚è¦ 5 分钟)
2579 </notification> 2673 </notification>
2580 <notification name="UploadPayment"> 2674 <notification name="UploadPayment">
2581 您为了上传付出了 L$[AMOUNT]。 2675 您为了上传付出了 [CURRENCY][AMOUNT]。
2582 </notification> 2676 </notification>
2583 <notification name="UploadWebSnapshotDone"> 2677 <notification name="UploadWebSnapshotDone">
2584 快照已ç»è¢«ä¸Šä¼ è‡³ç½‘页。 2678 快照已ç»è¢«ä¸Šä¼ è‡³ç½‘页。
@@ -2603,6 +2697,7 @@ http://secondlife.com/community/support.php
2603 </notification> 2697 </notification>
2604 <notification name="CapsKeyOn"> 2698 <notification name="CapsKeyOn">
2605 大写é”定处于开å¯çŠ¶æ€ã€‚ 2699 大写é”定处于开å¯çŠ¶æ€ã€‚
2700
2606因为这会影å“您键入的密ç ï¼Œ 2701因为这会影å“您键入的密ç ï¼Œ
2607也许您会想把它关掉。 2702也许您会想把它关掉。
2608 </notification> 2703 </notification>
@@ -2730,12 +2825,26 @@ http://secondlife.com/community/support.php
2730 </notification> 2825 </notification>
2731 <notification name="DeactivatedGesturesTrigger"> 2826 <notification name="DeactivatedGesturesTrigger">
2732 å–消激活了触å‘器相åŒçš„动作: 2827 å–消激活了触å‘器相åŒçš„动作:
2828
2733[NAMES] 2829[NAMES]
2734 </notification> 2830 </notification>
2735 <notification name="NoQuickTime"> 2831 <notification name="NoQuickTime">
2736 Apple å…¬å¸çš„ QuickTime 没有安装在你的æ“作系统中。如果你希望观看在支æŒçš„地å—中播放的媒体æµï¼Œåˆ™éœ€è¦ä»Ž 2832 Apple å…¬å¸çš„ QuickTime 没有安装在你的æ“作系统中。如果你希望观看在支æŒçš„地å—中播放的媒体æµï¼Œåˆ™éœ€è¦ä»Ž
2737QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。 2833QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2738 </notification> 2834 </notification>
2835 <notification name="NoPlugin">
2836 æ²¡æœ‰æ‰¾åˆ°èƒ½å¤„ç† â€œ[MIME_TYPE]†MIME 类型的æ’件。此类媒体将ä¸å¯ç”¨ã€‚
2837 </notification>
2838 <notification name="MediaPluginFailed">
2839 以下的媒体æ’件已崩溃:
2840 [PLUGIN]
2841
2842 请é‡æ–°å®‰è£…或如果æŒç»­é‡åˆ°é—®é¢˜ï¼Œæ¸…è”系供应商。
2843 <form name="form">
2844 <ignore name="ignore"
2845 text="媒体æ’件崩溃时"/>
2846 </form>
2847 </notification>
2739 <notification name="OwnedObjectsReturned"> 2848 <notification name="OwnedObjectsReturned">
2740 在所选地å—上你所拥有的物体已ç»è¢«å½’还至你的库存中。 2849 在所选地å—上你所拥有的物体已ç»è¢«å½’还至你的库存中。
2741 </notification> 2850 </notification>
@@ -2749,7 +2858,9 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2749 </notification> 2858 </notification>
2750 <notification name="GroupObjectsReturned"> 2859 <notification name="GroupObjectsReturned">
2751 在所选地å—上,与社团 [GROUPNAME] 分享的物体已ç»è¢«å½’还至它们的主人的库存里。 2860 在所选地å—上,与社团 [GROUPNAME] 分享的物体已ç»è¢«å½’还至它们的主人的库存里。
2861
2752å¯è½¬è®©çš„转让到社团的物体已ç»è¢«å½’还至它们先å‰ä¸»äººå¤„。 2862å¯è½¬è®©çš„转让到社团的物体已ç»è¢«å½’还至它们先å‰ä¸»äººå¤„。
2863
2753ä¸å¯è½¬è®©çš„转让到社团的物体已ç»åˆ é™¤ã€‚ 2864ä¸å¯è½¬è®©çš„转让到社团的物体已ç»åˆ é™¤ã€‚
2754 </notification> 2865 </notification>
2755 <notification name="UnOwnedObjectsReturned"> 2866 <notification name="UnOwnedObjectsReturned">
@@ -2757,14 +2868,17 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2757 </notification> 2868 </notification>
2758 <notification name="NotSafe"> 2869 <notification name="NotSafe">
2759 è¿™å—土地打开了伤害选项 (‘ä¸å®‰å…¨â€™)。 2870 è¿™å—土地打开了伤害选项 (‘ä¸å®‰å…¨â€™)。
2871
2760您在这里å¯èƒ½ä¼šå—伤。如果您死了,您将会被瞬间移动至您的家ä½ç½®ã€‚ 2872您在这里å¯èƒ½ä¼šå—伤。如果您死了,您将会被瞬间移动至您的家ä½ç½®ã€‚
2761 </notification> 2873 </notification>
2762 <notification name="NoFly"> 2874 <notification name="NoFly">
2763 è¿™å—土地关闭了飞行 (‘ä¸èƒ½é£žè¡Œâ€™)。 2875 è¿™å—土地关闭了飞行 (‘ä¸èƒ½é£žè¡Œâ€™)。
2876
2764您ä¸èƒ½åœ¨è¿™é‡Œé£žè¡Œã€‚ 2877您ä¸èƒ½åœ¨è¿™é‡Œé£žè¡Œã€‚
2765 </notification> 2878 </notification>
2766 <notification name="PushRestricted"> 2879 <notification name="PushRestricted">
2767 è¿™å—土地 ‘ä¸å…许推动’。 2880 è¿™å—土地 ‘ä¸å…许推动’。
2881
2768您ä¸èƒ½æŽ¨åŠ¨è¿™é‡Œçš„任何物体,除éžæ‚¨æ‹¥æœ‰è¿™å—土地。 2882您ä¸èƒ½æŽ¨åŠ¨è¿™é‡Œçš„任何物体,除éžæ‚¨æ‹¥æœ‰è¿™å—土地。
2769 </notification> 2883 </notification>
2770 <notification name="NoVoice"> 2884 <notification name="NoVoice">
@@ -2772,6 +2886,7 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2772 </notification> 2886 </notification>
2773 <notification name="NoBuild"> 2887 <notification name="NoBuild">
2774 è¿™å—土地上关闭了建造 (‘ä¸èƒ½å»ºé€ â€™)。 2888 è¿™å—土地上关闭了建造 (‘ä¸èƒ½å»ºé€ â€™)。
2889
2775您ä¸èƒ½åœ¨æ­¤åˆ›å»ºç‰©ä½“。 2890您ä¸èƒ½åœ¨æ­¤åˆ›å»ºç‰©ä½“。
2776 </notification> 2891 </notification>
2777 <notification name="ScriptsStopped"> 2892 <notification name="ScriptsStopped">
@@ -2782,13 +2897,14 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2782 </notification> 2897 </notification>
2783 <notification name="NoOutsideScripts"> 2898 <notification name="NoOutsideScripts">
2784 è¿™å—土地关闭了外部脚本 (‘没有外部脚本’)。 2899 è¿™å—土地关闭了外部脚本 (‘没有外部脚本’)。
2900
2785除了属于土地主人的脚本,任何脚本在这里都ä¸ä¼šè¿è¡Œã€‚ 2901除了属于土地主人的脚本,任何脚本在这里都ä¸ä¼šè¿è¡Œã€‚
2786 </notification> 2902 </notification>
2787 <notification name="ClaimPublicLand"> 2903 <notification name="ClaimPublicLand">
2788 åªèƒ½å¯¹æ‚¨æ‰€åœ¨çš„公共土地上申请产æƒã€‚ 2904 åªèƒ½å¯¹æ‚¨æ‰€åœ¨çš„公共土地上申请产æƒã€‚
2789 </notification> 2905 </notification>
2790 <notification name="RegionTPAccessBlocked"> 2906 <notification name="RegionTPAccessBlocked">
2791 您的é™åˆ¶çº§ä¸å…许您进入此地。您å¯èƒ½éœ€è¦ä¸‹è½½å¹¶å®‰è£…最新的第[VIEWER_NAME]软件或å–得年龄验è¯ã€‚ 2907 您的é™åˆ¶çº§ä¸å…许您进入此地。您å¯èƒ½éœ€è¦ä¸‹è½½å¹¶å®‰è£…最新的 [VIEWER_NAME] 软件或å–得年龄验è¯ã€‚
2792 2908
2793请去知识库了解更多关于访问æƒé™ä¸Žé™åˆ¶çº§çš„关系。 2909请去知识库了解更多关于访问æƒé™ä¸Žé™åˆ¶çº§çš„关系。
2794 </notification> 2910 </notification>
@@ -2799,8 +2915,8 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2799 您的账å·ä¸èƒ½è¿žæŽ¥åˆ°è¯¥â€œå°‘年专属区â€ã€‚ 2915 您的账å·ä¸èƒ½è¿žæŽ¥åˆ°è¯¥â€œå°‘年专属区â€ã€‚
2800 </notification> 2916 </notification>
2801 <notification name="NoHelpIslandTP"> 2917 <notification name="NoHelpIslandTP">
2802 您ä¸èƒ½çž¬é—´è½¬ç§»å›žâ€œæ´åŠ©å²›â€ã€‚ 2918 您ä¸èƒ½çž¬é—´ç§»åŠ¨å›ž “Help Islandâ€ã€‚
2803去“公共æ´åŠ©å²›â€é‡å¤æ‚¨çš„教程。 2919去 “Help Island Public†é‡å¤æ‚¨çš„教程。
2804 </notification> 2920 </notification>
2805 <notification name="ImproperPaymentStatus"> 2921 <notification name="ImproperPaymentStatus">
2806 您没有适当的付款信æ¯ï¼Œä¸èƒ½è¿›å…¥æ­¤åŒºã€‚ 2922 您没有适当的付款信æ¯ï¼Œä¸èƒ½è¿›å…¥æ­¤åŒºã€‚
@@ -2848,19 +2964,19 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2848 没有有效的回路 2964 没有有效的回路
2849 </notification> 2965 </notification>
2850 <notification name="NoValidTimestamp"> 2966 <notification name="NoValidTimestamp">
2851 没有有效的时间标记 2967 没有有效的时间戳
2852 </notification> 2968 </notification>
2853 <notification name="NoPendingConnection"> 2969 <notification name="NoPendingConnection">
2854 无法建立连接。 2970 无法建立连接。
2855 </notification> 2971 </notification>
2856 <notification name="InternalUsherError"> 2972 <notification name="InternalUsherError">
2857 瞬间转移的传é€è¿‡ç¨‹å¯¼è‡´äº†ä¸€ä¸ªæœåŠ¡å™¨é”™è¯¯ã€‚第[GRID_NAME]æœåŠ¡å™¨å¯èƒ½å­˜åœ¨å¼‚常。 2973 瞬间转移的传é€è¿‡ç¨‹å¯¼è‡´äº†ä¸€ä¸ªæœåŠ¡å™¨é”™è¯¯ã€‚ [GRID_NAME] æœåŠ¡å™¨å¯èƒ½å­˜åœ¨å¼‚常。
2858 </notification> 2974 </notification>
2859 <notification name="NoGoodTPDestination"> 2975 <notification name="NoGoodTPDestination">
2860 在此地区中无法找到一个åˆé€‚çš„ä¼ é€ç‚¹ã€‚ 2976 在此地区中无法找到一个åˆé€‚çš„ä¼ é€ç‚¹ã€‚
2861 </notification> 2977 </notification>
2862 <notification name="InternalErrorRegionResolver"> 2978 <notification name="InternalErrorRegionResolver">
2863 您的瞬间转移请求在解释全局å标时导致了一个æœåŠ¡å™¨é”™è¯¯ã€‚第[GRID_NAME]æœåŠ¡å™¨å¯èƒ½å­˜åœ¨å¼‚常。 2979 您的瞬间转移请求在解释全局å标时导致了一个æœåŠ¡å™¨é”™è¯¯ã€‚ [GRID_NAME] æœåŠ¡å™¨å¯èƒ½å­˜åœ¨å¼‚常。
2864 </notification> 2980 </notification>
2865 <notification name="NoValidLanding"> 2981 <notification name="NoValidLanding">
2866 找ä¸åˆ°ä¸€ä¸ªæœ‰æ•ˆçš„é™è½ç‚¹ 2982 找ä¸åˆ°ä¸€ä¸ªæœ‰æ•ˆçš„é™è½ç‚¹
@@ -2894,6 +3010,7 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2894 </notification> 3010 </notification>
2895 <notification name="GodMessage"> 3011 <notification name="GodMessage">
2896 [NAME] 3012 [NAME]
3013
2897[MESSAGE] 3014[MESSAGE]
2898 </notification> 3015 </notification>
2899 <notification name="JoinGroup"> 3016 <notification name="JoinGroup">
@@ -2915,6 +3032,7 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2915 </notification> 3032 </notification>
2916 <notification name="GotoURL"> 3033 <notification name="GotoURL">
2917 [MESSAGE] 3034 [MESSAGE]
3035
2918[URL] 3036[URL]
2919 <form name="form"> 3037 <form name="form">
2920 <button name="Later" text="ç¨åŽ"/> 3038 <button name="Later" text="ç¨åŽ"/>
@@ -2930,6 +3048,8 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2930 <form name="form"> 3048 <form name="form">
2931 <button name="Accept" text="接å—"/> 3049 <button name="Accept" text="接å—"/>
2932 <button name="Decline" text="è°¢ç»"/> 3050 <button name="Decline" text="è°¢ç»"/>
3051 <button name="Profile" text="档案"/>
3052 <button name="Ignore" text="忽略"/>
2933 </form> 3053 </form>
2934 </notification> 3054 </notification>
2935 <notification name="OfferFriendshipNoMessage"> 3055 <notification name="OfferFriendshipNoMessage">
@@ -2938,6 +3058,8 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2938 <form name="form"> 3058 <form name="form">
2939 <button name="Accept" text="接å—"/> 3059 <button name="Accept" text="接å—"/>
2940 <button name="Decline" text="è°¢ç»"/> 3060 <button name="Decline" text="è°¢ç»"/>
3061 <button name="Profile" text="档案"/>
3062 <button name="Ignore" text="忽略"/>
2941 </form> 3063 </form>
2942 </notification> 3064 </notification>
2943 <notification name="FriendshipAccepted"> 3065 <notification name="FriendshipAccepted">
@@ -2947,19 +3069,24 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2947 [NAME] è°¢ç»äº†æ‚¨çš„好å‹é‚€è¯·ã€‚ 3069 [NAME] è°¢ç»äº†æ‚¨çš„好å‹é‚€è¯·ã€‚
2948 </notification> 3070 </notification>
2949 <notification name="OfferCallingCard"> 3071 <notification name="OfferCallingCard">
2950 [FIRST] [LAST] è¦ç»™ä½ ä»–的通è¯å¡ã€‚这将在你的库存中添加一个书签,这样你就å¯ä»¥å¿«é€Ÿçš„通过å³æ—¶æ¶ˆæ¯è”系这ä½å±…民。 3072 [FIRST] [LAST] è¦ç»™ä½ ä»–的通è¯å¡ã€‚
3073
3074这将在你的库存中添加一个书签,这样你就å¯ä»¥å¿«é€Ÿçš„通过å³æ—¶æ¶ˆæ¯è”系这ä½å±…民。
2951 <form name="form"> 3075 <form name="form">
2952 <button name="Accept" text="接å—"/> 3076 <button name="Accept" text="接å—"/>
2953 <button name="Decline" text="è°¢ç»"/> 3077 <button name="Decline" text="è°¢ç»"/>
3078 <button name="Ignore" text="忽略"/>
2954 </form> 3079 </form>
2955 </notification> 3080 </notification>
2956 <notification name="RegionRestartMinutes"> 3081 <notification name="RegionRestartMinutes">
2957 地区将在 [MINUTES]分钟åŽé‡æ–°å¯åŠ¨ã€‚ 3082 区域将在 [MINUTES]分钟åŽé‡æ–°å¯åŠ¨ã€‚
2958如果ä»ç•™åœ¨æ­¤åœ°åŒºå†…,您将会被登出。 3083
3084如果ä»ç•™åœ¨æ­¤åŒºåŸŸå†…,您将会被登出。
2959 </notification> 3085 </notification>
2960 <notification name="RegionRestartSeconds"> 3086 <notification name="RegionRestartSeconds">
2961 区域将在 [MINUTES]秒åŽé‡æ–°å¯åŠ¨ã€‚ 3087 区域将在 [MINUTES]秒åŽé‡æ–°å¯åŠ¨ã€‚
2962如果ä»ç•™åœ¨æ­¤åœ°åŒºå†…,您将会被登出。 3088
3089如果ä»ç•™åœ¨æ­¤åŒºåŸŸå†…,您将会被登出。
2963 </notification> 3090 </notification>
2964 <notification name="LoadWebPage"> 3091 <notification name="LoadWebPage">
2965 是å¦è½½å…¥ç½‘页[URL]? 3092 是å¦è½½å…¥ç½‘页[URL]?
@@ -2979,12 +3106,13 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2979 在数æ®åº“中没能找到å为 [DESC] çš„[TYPE]。 3106 在数æ®åº“中没能找到å为 [DESC] çš„[TYPE]。
2980 </notification> 3107 </notification>
2981 <notification name="InvalidWearable"> 3108 <notification name="InvalidWearable">
2982 您所è¦ç©¿æˆ´çš„物å“使用了一ç§å½“å‰å®¢æˆ·ç«¯æ— æ³•å¤„ç†çš„功能。请å‡çº§æ‚¨çš„第[VIEWER_NAME]版本以正确穿戴此物å“。 3109 您所è¦ç©¿æˆ´çš„物å“使用了一ç§å½“å‰å®¢æˆ·ç«¯æ— æ³•å¤„ç†çš„功能。请å‡çº§æ‚¨çš„ [VIEWER_NAME] 版本以正确穿戴此物å“。
2983 </notification> 3110 </notification>
2984 <notification name="ScriptQuestion"> 3111 <notification name="ScriptQuestion">
2985 ‘[OBJECTNAME]’, 一件 ‘[NAME]’ 拥有的物体, 想è¦ï¼š 3112 ‘[OBJECTNAME]’, 一件 ‘[NAME]’ 拥有的物体, 想è¦ï¼š
2986 3113
2987[QUESTIONS] 3114[QUESTIONS]
3115
2988这样å¯ä»¥å—? 3116这样å¯ä»¥å—?
2989 <form name="form"> 3117 <form name="form">
2990 <button name="Yes" text="å…许"/> 3118 <button name="Yes" text="å…许"/>
@@ -2996,6 +3124,7 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
2996 ‘[OBJECTNAME]’, 一件 ‘[NAME]’ 拥有的物体, 想è¦ï¼š 3124 ‘[OBJECTNAME]’, 一件 ‘[NAME]’ 拥有的物体, 想è¦ï¼š
2997 3125
2998[QUESTIONS] 3126[QUESTIONS]
3127
2999如果您ä¸ä¿¡ä»»è¯¥ç‰©ä½“和它的创建者,您应该拒ç»è¿™è¯·æ±‚。点击细节按钮察看详细资料。 3128如果您ä¸ä¿¡ä»»è¯¥ç‰©ä½“和它的创建者,您应该拒ç»è¿™è¯·æ±‚。点击细节按钮察看详细资料。
3000 3129
3001是å¦æŽˆäºˆè®¸å¯ï¼Ÿ 3130是å¦æŽˆäºˆè®¸å¯ï¼Ÿ
@@ -3020,17 +3149,22 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
3020 </form> 3149 </form>
3021 </notification> 3150 </notification>
3022 <notification name="FirstBalanceIncrease"> 3151 <notification name="FirstBalanceIncrease">
3023 您刚收到了 L$[AMOUNT]。 3152 您刚收到了 [CURRENCY][AMOUNT]。
3024物体和其他用户å¯ä»¥å‘您支付L$。 3153
3154物体和其他用户å¯ä»¥å‘您支付 [CURRENCY]。
3155
3025您的å¸æˆ·ä½™é¢æ˜¾ç¤ºåœ¨å±å¹•çš„å³ä¸Šè§’。 3156您的å¸æˆ·ä½™é¢æ˜¾ç¤ºåœ¨å±å¹•çš„å³ä¸Šè§’。
3026 </notification> 3157 </notification>
3027 <notification name="FirstBalanceDecrease"> 3158 <notification name="FirstBalanceDecrease">
3028 您刚支付了 L$[AMOUNT]。 3159 您刚支付了 [CURRENCY][AMOUNT]。
3160
3029您的å¸æˆ·ä½™é¢æ˜¾ç¤ºåœ¨å±å¹•çš„å³ä¸Šè§’。 3161您的å¸æˆ·ä½™é¢æ˜¾ç¤ºåœ¨å±å¹•çš„å³ä¸Šè§’。
3030 </notification> 3162 </notification>
3031 <notification name="FirstSit"> 3163 <notification name="FirstSit">
3032 您正在åç€ã€‚ 3164 您正在åç€ã€‚
3165
3033使用方å‘é”® (或者AWSD) æ¥æ”¹å˜è§†è§’。 3166使用方å‘é”® (或者AWSD) æ¥æ”¹å˜è§†è§’。
3167
3034点击 ‘站起æ¥â€™ 按钮起身。 3168点击 ‘站起æ¥â€™ 按钮起身。
3035 </notification> 3169 </notification>
3036 <notification name="FirstMap"> 3170 <notification name="FirstMap">
@@ -3038,6 +3172,12 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
3038åŒå‡»ä»¥çž¬é—´ç§»åŠ¨ã€‚ 3172åŒå‡»ä»¥çž¬é—´ç§»åŠ¨ã€‚
3039使用å³è¾¹çš„控件查找信æ¯ï¼Œå¹¶æ˜¾ç¤ºä¸åŒçš„背景。 3173使用å³è¾¹çš„控件查找信æ¯ï¼Œå¹¶æ˜¾ç¤ºä¸åŒçš„背景。
3040 </notification> 3174 </notification>
3175 <notification
3176 icon="notify.tga"
3177 name="FirstMiniMap"
3178 type="notify">
3179 å³é”®å•å‡»è¿·ä½ åœ°å›¾æŸ¥çœ‹æ›´å¤šé€‰é¡¹ã€‚
3180 </notification>
3041 <notification name="FirstBuild"> 3181 <notification name="FirstBuild">
3042 您å¯ä»¥åœ¨ [GRID_NAME] çš„æŸäº›åŒºåŸŸä¸­åˆ›å»ºæ–°ç‰©ä½“。 3182 您å¯ä»¥åœ¨ [GRID_NAME] çš„æŸäº›åŒºåŸŸä¸­åˆ›å»ºæ–°ç‰©ä½“。
3043使用左上角的工具建造,也试一试按下 Ctrl 或者 Alt 键快速地切æ¢å·¥å…·ã€‚ 3183使用左上角的工具建造,也试一试按下 Ctrl 或者 Alt 键快速地切æ¢å·¥å…·ã€‚
@@ -3064,9 +3204,9 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
3064 </notification> 3204 </notification>
3065 <notification name="FirstInventory"> 3205 <notification name="FirstInventory">
3066 这是您的库存,是存放物体ã€è®°äº‹å¡ã€è¡£æœå’Œæ‚¨æ‹¥æœ‰çš„其他东西的地方。 3206 这是您的库存,是存放物体ã€è®°äº‹å¡ã€è¡£æœå’Œæ‚¨æ‹¥æœ‰çš„其他东西的地方。
3067* è¦ç©¿ä¸Šç‰©ä½“或装备文件夹,将它拖动到您自己身上。 3207• è¦ç©¿ä¸Šç‰©ä½“或装备文件夹,将它拖动到您自己身上。
3068* è¦å°†ç‰©ä½“带入世界中,将它拖动到地上。 3208• è¦å°†ç‰©ä½“带入世界中,将它拖动到地上。
3069* è¦é˜…读记事å¡ï¼ŒåŒå‡»å®ƒã€‚ 3209• è¦é˜…读记事å¡ï¼ŒåŒå‡»å®ƒã€‚
3070 </notification> 3210 </notification>
3071 <notification name="FirstSandbox"> 3211 <notification name="FirstSandbox">
3072 这是一å—沙盒区域。 3212 这是一å—沙盒区域。
@@ -3080,17 +3220,41 @@ QuickTime网站 (http://www.apple.com/quicktime) 安装 QuickTime Player。
3080 </notification> 3220 </notification>
3081 <notification name="FirstDebugMenus"> 3221 <notification name="FirstDebugMenus">
3082 您已å¯ç”¨äº†é«˜çº§èœå•ã€‚ 3222 您已å¯ç”¨äº†é«˜çº§èœå•ã€‚
3083该èœå•åŒ…å«å¯¹è°ƒè¯•ç¬¬[VIEWER_NAME]çš„å¼€å‘者有用的功能。 3223该èœå•åŒ…å«å¯¹è°ƒè¯• [VIEWER_NAME] çš„å¼€å‘者有用的功能。
3084è¦åˆ‡æ¢è¯¥èœå•ï¼Œåœ¨ Windows 中按 Ctrl-Alt-D。 在 Mac 中按 Cmd-Opt-Shift-D。 3224è¦åˆ‡æ¢è¯¥èœå•ï¼Œåœ¨ Windows 中按 Ctrl-Alt-D。 在 Mac 中按 Cmd-Opt-Shift-D。
3085 </notification> 3225 </notification>
3086 <notification name="FirstSculptedPrim"> 3226 <notification name="FirstSculptedPrim">
3087 您正在编辑 sculpted 元件。 3227 您正在编辑雕塑元件。
3088Sculpted 元件需è¦ç‰¹æ®Šçš„æè´¨æ¥æŒ‡å®šå…¶å½¢çŠ¶ã€‚ 3228雕塑元件需è¦ç‰¹æ®Šçš„æè´¨æ¥æŒ‡å®šå…¶å½¢çŠ¶ã€‚
3089您å¯ä»¥åœ¨åº“存库中找到示范 sculpted æ质。 3229您å¯ä»¥åœ¨åº“存中找到示范雕塑æ质。
3090 </notification> 3230 </notification>
3091 <notification name="FirstMedia"> 3231 <notification name="FirstMedia">
3092 您已ç»å¼€å§‹æ’­æ”¾åª’体。媒体å¯ä»¥åœ¨å‚数设置的音频和视频一æ ä¸­è®¾ç½®ä¸ºè‡ªåŠ¨æ’­æ”¾ã€‚请注æ„这对于您ä¸ä¿¡ä»»çš„媒体站点å¯èƒ½ä¼šæœ‰å®‰å…¨éšæ‚£ã€‚ 3232 您已ç»å¼€å§‹æ’­æ”¾åª’体。媒体å¯ä»¥åœ¨å‚数设置的音频和视频一æ ä¸­è®¾ç½®ä¸ºè‡ªåŠ¨æ’­æ”¾ã€‚请注æ„这对于您ä¸ä¿¡ä»»çš„媒体站点å¯èƒ½ä¼šæœ‰å®‰å…¨éšæ‚£ã€‚
3093 </notification> 3233 </notification>
3234<notification name="FirstRLVDetach">
3235您的一个或多个附件已被 Restrained Life 设置为ä¸å¯å¸ä¸‹ã€‚
3236请注æ„è¿™åŒæ—¶ä¼šç¦ç”¨æ‰€æœ‰é™„件的‘穿上’选项,除éžå®ƒä»¬è¢«æ­£ç¡®åœ°å‘½å。
3237
3238详细资料请在 SL Wiki 上æœç´¢â€˜Restrained Life’。
3239</notification>
3240
3241<notification name="FirstRLVFartouch">
3242您已被è·ç¦»è§¦æ‘¸é™åˆ¶: 您将ä¸èƒ½è§¦æ‘¸ç¦»æ‚¨çš„化身1.5米以外的物体,直到é™åˆ¶è§£é™¤ã€‚
3243
3244æ示: è·ç¦»å¤–的物体在鼠标划过时将ä¸ä¼šæ”¹å˜æŒ‡é’ˆï¼Œå¹¶ä¸”如果您å°è¯•å³é”®ç‚¹å‡»çš„è¯å°†ä¼šå¬åˆ°é”™è¯¯æ示音。
3245</notification>
3246
3247<notification name="FirstRLVGiveToRLV">
3248接å—物å“时,å称以 &apos;#RLV/~&apos; 开始的文件夹å¯ä»¥è¢«è‡ªåŠ¨æ”¾ç½®åœ¨æ‚¨çš„ #RLV 共享文件夹下。
3249
3250请注æ„,一旦å¯ç”¨ï¼ŒæŽ¥å—的物å“将会立å³å¯ä¾›è„šæœ¬ä½¿ç”¨ï¼Œå¹¶å¯ä»¥è°ƒç”¨ RLV API 的所有功能,这å¯èƒ½å¯¼è‡´æ„想ä¸åˆ°çš„或令人ä¸å¿«çš„情况å‘生。
3251
3252您是å¦å¸Œæœ›å¯ç”¨è¿™ä¸ªåŠŸèƒ½?
3253 <usetemplate
3254 name="okcancelbuttonscanceldefault"
3255 notext="å¦"
3256 yestext="是"/>
3257</notification>
3094 <notification name="MaxListSelectMessage"> 3258 <notification name="MaxListSelectMessage">
3095 您从该列表中最多åªèƒ½é€‰æ‹©[MAX_SELECT] 个项目。 3259 您从该列表中最多åªèƒ½é€‰æ‹©[MAX_SELECT] 个项目。
3096 </notification> 3260 </notification>
@@ -3184,11 +3348,483 @@ Sculpted 元件需è¦ç‰¹æ®Šçš„æè´¨æ¥æŒ‡å®šå…¶å½¢çŠ¶ã€‚
3184 <notification name="UnableToOpenCommandURL"> 3348 <notification name="UnableToOpenCommandURL">
3185 您点击的URLä¸èƒ½ä»Žè¯¥æµè§ˆå™¨ä¸­æ‰“开。 3349 您点击的URLä¸èƒ½ä»Žè¯¥æµè§ˆå™¨ä¸­æ‰“开。
3186 </notification> 3350 </notification>
3351 <notification name="QueryClientTags">
3352 您是å¦å¸Œæœ›ä»Ž kokuaviewer.org 自动更新客户端标识数æ®åº“?
3353
3354这将确ä¿æ‚¨å…³äºŽå…¶å®ƒå®¢æˆ·ç«¯çš„资料是最新的。
3355 <form name="form">
3356 <button
3357 name="Yes"
3358 text="是"/>
3359 <button
3360 name="No"
3361 text="å¦"/>
3362 </form>
3363 </notification>
3364<!--Begin Imprudence notifications-->
3365
3366<notification name="ClickBuildConstants">
3367本标签页中å¯ä»¥ä½¿ç”¨ä»¥ä¸‹å¸¸æ•°:
3368
3369PX — X è½´ä½ç½®
3370PY — Y è½´ä½ç½®
3371PZ — Z è½´ä½ç½®
3372SX — X 轴尺寸
3373SY — Y 轴尺寸
3374SZ — Z 轴尺寸
3375RX — X 轴角度
3376RY — Y 轴角度
3377RZ — Z 轴角度
3378CB — 路径截断开始
3379CE — 路径截断结æŸ
3380HLW — 窟窿大å°
3381SKW — 倾斜
3382PB — 切片/凹陷/剖é¢æˆªæ–­å¼€å§‹
3383PE — 切片/凹陷/剖é¢æˆªæ–­ç»“æŸ
3384TB — 扭曲开始
3385TE — 扭曲结æŸ
3386SHX — X 轴顶é¢å€¾æ–œ
3387SHY — Y 轴顶é¢å€¾æ–œ
3388HLX — X 轴洞的尺寸
3389HLY — Y 轴洞的尺寸
3390TPX — X 轴锥形
3391TPY — Y 轴锥形
3392ROF — åŠå¾„å˜åŒ–
3393REV — 旋转次数
3394
3395PI — π
3396TWO_PI — 2π
3397PI_BY_TWO — π/2
3398SQRT2 — 2的平方根
3399DEG_TO_RAD — è§’åº¦åˆ°å¼§åº¦è½¬æ¢ (Ï€/180)
3400RAD_TO_DEG — å¼§åº¦åˆ°è§’åº¦è½¬æ¢ (180/Ï€)
3401GRAVITY — -9.8
3402
3403* — 乘
3404\ — 除
3405+ — 加
3406- — å‡
3407
3408更多信æ¯è¯·ç‚¹å‡» “更多信æ¯â€ã€‚
3409 <usetemplate
3410 name="okhelpbuttons"
3411 yestext="确定"
3412 helptext="更多信æ¯"/>
3413</notification>
3414
3415<notification name="ClickTextureConstants" type="alert">
3416本标签页中å¯ä»¥ä½¿ç”¨ä»¥ä¸‹å¸¸æ•°:
3417
3418TSU — æ¯é¢é‡å¤æ¬¡æ•° (æ°´å¹³)
3419TSV — æ¯é¢é‡å¤æ¬¡æ•° (åž‚ç›´)
3420TOU — ä½ç§» (æ°´å¹³)
3421TOV — ä½ç§» (åž‚ç›´)
3422TRNS — é€æ˜Žåº¦
3423TROT — æ质旋转角度
3424GLOW — å‘å…‰
3425
3426* — 乘
3427\ — 除
3428+ — 加
3429- — å‡
3430
3431更多信æ¯è¯·ç‚¹å‡» “更多信æ¯â€ã€‚
3432 <usetemplate
3433 name="okhelpbuttons"
3434 yestext="确定"
3435 helptext="更多信æ¯"/>
3436</notification>
3437
3438<notification name="ConfirmAutoPilot">
3439你确定è¦å‰å¾€è¿™é‡Œå—?
3440 <usetemplate
3441 ignoretext="使用自动寻路时"
3442 name="okcancelignore"
3443 notext="å–消"
3444 yestext="å‰å¾€"/>
3445</notification>
3446
3447<!--looks like a singular they - not much I can do about it - Kaku -->
3448<notification name="ConfirmDerender">
3449您确定è¦éšè— [NAME]?
3450
3451[NAME] å°†ä¸å†è¢«æ¸²æŸ“,直到您离开区域或他们更æ¢è£…æŸã€‚
3452 <usetemplate
3453 ignoretext="éšè—物体或化身时"
3454 name="okcancelignore"
3455 notext="å–消"
3456 yestext="éšè—"/>
3457</notification>
3458
3459<notification name="ConfirmDoubleClickTP">
3460您确定è¦çž¬é—´ç§»åŠ¨åˆ°è¿™é‡Œå—?
3461 <usetemplate
3462 ignoretext="åŒå‡»çž¬é—´ç§»åŠ¨æ—¶"
3463 name="okcancelignore"
3464 notext="å–消"
3465 yestext="瞬间移动"/>
3466</notification>
3467
3468<notification name="ConfirmMuteAgent">
3469您确定è¦å±è”½ [NAME] (å±…æ°‘)å—?
3470 <usetemplate
3471 ignoretext="å±è”½å±…æ°‘æ—¶"
3472 name="okcancelignore"
3473 notext="å–消"
3474 yestext="å±è”½"/>
3475</notification>
3476
3477<notification name="ConfirmMuteObject">
3478您确定è¦å±è”½ [NAME] (物体)å—?
3479 <usetemplate
3480 ignoretext="å±è”½ç‰©ä½“æ—¶"
3481 name="okcancelignore"
3482 notext="å–消"
3483 yestext="å±è”½"/>
3484</notification>
3485
3486<notification name="ConfirmToggleFullscreen">
3487您确定è¦åˆ‡æ¢å…¨å±æ¨¡å¼å—?
3488 <usetemplate
3489 name="okcancelbuttons"
3490 notext="å–消"
3491 yestext="切æ¢"/>
3492</notification>
3493
3494<notification name="ConfirmRemoveAllClothes">
3495您确定è¦è„±ä¸‹æ‰€æœ‰è¡£ç‰©å—?
3496 <usetemplate
3497 ignoretext="脱下所有衣物时"
3498 name="okcancelignore"
3499 notext="å–消"
3500 yestext="脱下"/>
3501</notification>
3502
3503<notification name="ConfirmResetAllPreferences">
3504您确定è¦é‡ç½®æ‰€æœ‰è®¾ç½®å—?
3505
3506设置将在 [VIEWER_NAME] é‡æ–°å¯åŠ¨æ—¶æ¸…除。
3507 <usetemplate
3508 ignoretext="é‡ç½®è®¾ç½®æ—¶"
3509 name="okcancelignore"
3510 notext="å–消"
3511 yestext="é‡ç½®"/>
3512</notification>
3513
3514<notification name="ConfirmRestoreToWorld">
3515您确定è¦æ¢å¤è¯¥ç‰©ä½“到其最åŽçš„ä½ç½®å—?
3516
3517警告: 如果你ä¸ç¡®å®šç‰©ä½“会æ¢å¤åˆ°å“ªé‡Œ, ä¸è¦æ‰§è¡Œæ¢å¤!
3518
3519更多信æ¯è¯·ç‚¹å‡» “更多信æ¯â€ã€‚
3520 <usetemplate
3521 name="okcancelhelpignore"
3522 yestext="æ¢å¤"
3523 helptext="更多信æ¯"
3524 notext="å–消"
3525 ignoretext="æ¢å¤ç‰©ä½“到其最åŽä½ç½®æ—¶" />
3526</notification>
3527
3528<notification name="ConfirmTeleportHome">
3529您确定è¦çž¬é—´ç§»åŠ¨å›žå®¶å—?
3530 <usetemplate
3531 ignoretext="瞬间移动回家时"
3532 name="okcancelignore"
3533 notext="å–消"
3534 yestext="瞬间移动"/>
3535</notification>
3536
3537<notification name="ConnectingToRegionError">
3538无法连接到当å‰åŒºåŸŸã€‚请å°è¯•ç™»å…¥åˆ°å…¶ä»–区域。
3539
3540默认登录区域å¯ä»¥åœ¨å‚数设置的一般选项å¡ä¸­è®¾ç½®ã€‚
3541</notification>
3542
3543<notification name="DisconnectedFromRegion">
3544您与所在的区域的链接已被断开。无法继续。
3545</notification>
3546
3547<notification name="GridsNoNick">
3548ä¸èƒ½ä¿å­˜æ–°çš„网格信æ¯ã€‚
3549
3550您必须指定一个唯一的网格昵称。
3551</notification>
3552
3553<notification name="GridsNoLoginUri">
3554ä¸èƒ½ä¿å­˜æ–°ç½‘æ ¼ ‘[NAME]’.
3555
3556您必须指定登入 URI 。
3557</notification>
3558
3559<notification name="GridInfoDirty">
3560您有未ä¿å­˜çš„更改,将会丢失。继续?
3561 <usetemplate
3562 ignoretext="创建新网格时"
3563 name="okcancelignore"
3564 notext="å–消"
3565 yestext="继续"/>
3566</notification>
3567
3568<notification name="GridExists">
3569ä¸èƒ½ä¿å­˜æ–°ç½‘æ ¼ ‘[NAME]’.
3570
3571昵称相åŒçš„网格已ç»å­˜åœ¨ã€‚
3572</notification>
3573
3574<notification
3575 icon="alertmodal.tga"
3576 name="GridInfoNoLoginUri"
3577 type="alertmodal">
3578 获å–网格信æ¯éœ€è¦å…¶ç™»å…¥ URI.
3579</notification>
3580
3581<notification name="GridInfoNoLoginUri">
3582获å–网格的信æ¯éœ€è¦ç½‘格登入 URI。
3583</notification>
3584
3585<notification name="GridInfoError">
3586无法从æœåŠ¡å™¨èŽ·å–网格信æ¯ã€‚
3587</notification>
3588
3589<notification name="IMLogNotFound">
3590找ä¸åˆ°ä¸Ž [NAME] çš„å³æ—¶èŠå¤©è®°å½•ã€‚
3591 <usetemplate
3592 name="okbutton"
3593 yestext="确定"/>
3594</notification>
3595
3596<notification name="InvalidLogInSecondLife">
3597å“Žå‘€! 您所输入的登入å称格å¼ä¸å¯¹ï¼
3598
3599[SECOND_LIFE] 接å—以下登入åæ ¼å¼:
3600
3601 - 用户å
3602 - 用户å.Resident
3603 - å.姓
3604
3605如果您没有账户的è¯ï¼Œè¦ä¸è¦çŽ°åœ¨åˆ›å»ºä¸€ä¸ªï¼Ÿ
3606 <usetemplate
3607 name="okcancelbuttons"
3608 notext="å†è¯•ä¸€æ¬¡"
3609 yestext="创建账户"/>
3610</notification>
3611
3612<notification name="InvalidPassword">
3613您已输入了无效的密ç ï¼è¯·é‡è¯•ã€‚
3614</notification>
3615
3616<notification name="IncompleteInventoryItem">
3617您正访问的物å“尚未在本地å¯ç”¨ã€‚请ç¨å€™å†è¯•ã€‚
3618</notification>
3619
3620<notification name="ShowLookAtInfo">
3621显示视线目标是一个调试功能,å¯ä»¥æ˜¾ç¤ºåŒ–身的头部在看什么东西。请注æ„: 这项功能并*ä¸ä¼š*显示化身的摄åƒæœºè§†è§’实际æœå‘哪个方å‘。请ä¸è¦ä¾èµ–该功能ä¿æŠ¤ä»»ä½•éšç§!
3622 <usetemplate
3623 ignoretext="设置显示视线目标时"
3624 name="okignore"
3625 yestext="OK"/>
3626</notification>
3627
3628<notification name="WebLaunchImprudenceBlog">
3629å‰å¾€ Imprudence 官方日志阅读最新的新闻和信æ¯ã€‚
3630 <usetemplate
3631 ignoretext="打开网络æµè§ˆå™¨é˜…读网络日志时"
3632 name="okcancelignore"
3633 notext="å–消"
3634 yestext="打开网页"/>
3635</notification>
3636
3637<notification name="WebLaunchImprudenceForums">
3638å‰å¾€ Imprudence 官方论å›è®¨è®º Imprudence 工程。
3639 <usetemplate
3640 ignoretext="打开网络æµè§ˆå™¨é˜…读论å›æ—¶"
3641 name="okcancelignore"
3642 notext="å–消"
3643 yestext="打开网页"/>
3644</notification>
3645
3646<notification
3647 icon="alert.tga"
3648 name="WebLaunchAutoscript"
3649 type="alert">
3650打开 Autoscript 生æˆå™¨ (ç”± 3greeneggs.com 制作)?
3651 <usetemplate
3652 ignoretext="打开 Autoscript 生æˆå™¨"
3653 name="okcancelignore"
3654 notext="å–消"
3655 yestext="确定"/>
3656</notification>
3657
3658<notification
3659 icon="notify.tga"
3660 name="FirstAO"
3661 type="notify">
3662使用方法å¯ä»¥åœ¨æ–°å»ºè®°äº‹å¡æ¨¡æ¿ä¸­æ‰¾åˆ°ã€‚使用工具æ æ‰“开或关闭动画覆盖。
3663</notification>
3664
3665<notification
3666 icon="notifytip.tga"
3667 name="NoShadows"
3668 type="notifytip">
3669ä¸èƒ½å¯ç”¨é˜´å½±ï¼Œå› ä¸ºæ‚¨çš„图形设置过低。请确定您的图åƒè®¾ç½®ä¸º “æžé«˜â€ 并已å¯ç”¨äº†åŸºæœ¬å’Œå¤§æ°”ç€è‰²å™¨ã€‚
3670</notification>
3671
3672<notification name="NoTextureExportSL">
3673为了éµå®ˆ Second Life æœåŠ¡åè®®, Imprudence 没有下载导出物体的任何æ质。
3674</notification>
3675
3676<notification
3677 icon="alert.tga"
3678 name="Help_CmdLine"
3679 type="alert">
3680å„ç§å‘½ä»¤è¡ŒåŠŸèƒ½çš„选项。
3681
3682è¦ä½¿ç”¨æŸä¸€æ¡å‘½ä»¤, 在èŠå¤©æ  (本地èŠå¤©) 中键入命令并按回车键。
3683</notification>
3684
3685<notification label="拼写检查帮助" name="EmeraldHelp_SpellCheck">
3686è¦æ‹¼å†™æ£€æŸ¥æŸä¸ªå•è¯, å³é”®ç‚¹å‡»å®ƒ, 然åŽé€‰æ‹©æ­£ç¡®çš„è¯æ›¿æ¢ã€‚
3687您å¯ä»¥é€‰æ‹©ä¸€ä¸ªåŸºæœ¬è¾žå…¸, 该辞典储存语å¼å’ŒåŸºæœ¬è¯æ±‡ã€‚
3688您也å¯ä»¥é€‰æ‹©å®‰è£…其他è¯æ±‡åˆ—表, åªè¦ä»Žåˆ—è¡¨ä¸­é€‰ä¸­ç„¶åŽ â€œå®‰è£…â€ã€‚
3689</notification>
3690
3691<notification
3692 name="ConfirmLightShare"
3693 type="notify"
3694 icon="notify.tga">
3695该区域正在广播自定义天空和水é¢è®¾ç½®ã€‚
3696应用该区域的设定? (&quot;忽略&quot; 将会忽略所有区域设置,直到你离开这个区域。)
3697 <form name="form">
3698 <button name="apply" text="应用"/>
3699 <button name="temp" text="现在ä¸è¦"/>
3700 <button name="region" text="忽略"/>
3701 </form>
3702</notification>
3703
3704<notification
3705 name="ChangeFont"
3706 icon="notify.tga"
3707 type="notify">
3708新字体将在您é‡æ–°å¯åŠ¨ [VIEWER_NAME] åŽä½¿ç”¨ã€‚
3709</notification>
3710
3711<notification name="FirstPrivacy">
3712注æ„: Second Life æœåŠ¡æ¡æ¬¾è¦æ±‚所有客户端,包括 Imprudence 查看器, 连接到 Second Life æ—¶æ¯ 5 分钟å‘林登实验室å‘é€ä¸€ä¸ª “统计数æ®å°åŒ…â€ã€‚
3713
3714该å°åŒ…包括关于您的计算机以åŠæ‚¨ä½¿ç”¨ Second Life 的情况的一些éžä¸ªäººè¯†åˆ«æ€§çš„ä¿¡æ¯, 例如您的计算机硬件和æ“作系统,平å‡å¸§çŽ‡ï¼Œè®¿é—®çš„区域数,附近化身数é‡ï¼Œä»¥åŠå…¶ä»–ä¿¡æ¯ã€‚请阅读 Second Life éšç§æ”¿ç­–了解林登实验室如何使用此项以åŠå…¶ä»–ä¿¡æ¯ã€‚
3715
3716该å°åŒ…ä»…å‘é€ç»™æž—登实验室; Imprudence å¼€å‘者并ä¸æŽ¥æ”¶æˆ–采集任何此类信æ¯ã€‚
3717
3718Second Life æœåŠ¡æ¡æ¬¾ä¸å…许您选择ä¸å‘é€æ­¤ä¿¡æ¯ã€‚登入 Second Life 代表您åŒæ„采集这些数æ®ã€‚
3719 <usetemplate
3720 name="okcancelbuttons"
3721 yestext="登入" notext="å–消"/>
3722</notification>
3723
3724<notification
3725 icon="alert.tga"
3726 name="MediaAlert"
3727 type="alert">
3728该地å—的拥有者已请求查看器加载以下 [TYPE] URL:
3729
3730[URL]
3731
3732您å¯ä»¥é€‰æ‹©å…许或ç¦æ­¢å¯¹åº”的域å或世界内物体æœåŠ¡å™¨:
3733
3734[DOMAIN]
3735
3736“å…许†和 “ç¦æ­¢â€ 仅对该会è¯æœ‰æ•ˆï¼Œè€Œ “黑åå•â€ å’Œ “白åå•â€ 永久有效。
3737 <form name="form">
3738 <button
3739 name="Allow"
3740 text="å…许"/>
3741 <button
3742 name="Deny"
3743 text="ç¦æ­¢"/>
3744 <button
3745 name="Blacklist"
3746 text="黑åå•"/>
3747 <button
3748 name="Whitelist"
3749 text="白åå•"/>
3750 </form>
3751 </notification>
3752
3753 <notification
3754 name="MediaListed">
3755[DOMAIN] 的媒体/音频 URL å·²ç»è¢« [LISTED]
3756 </notification>
3757
3758 <notification name="MediaBlocked">
3759å±è”½äº†æ¥è‡ª [DOMAIN] 的媒体/音频。
3760 </notification>
3761
3762 <notification name="MediaFiltersCleared">
3763媒体过滤列表已ç»æ¸…除
3764 </notification>
3765
3766 <notification name="ProxyNeedRestart">
3767Socks 代ç†æœåŠ¡å™¨è®¾ç½®å°†åœ¨æ‚¨é‡æ–°å¯åŠ¨ [VIEWER_NAME] åŽç”Ÿæ•ˆ.
3768 </notification>
3769
3770 <notification name="SOCKS_CONNECT_OK">
3771æˆåŠŸè¿žæŽ¥ Socks5 代ç†æœåŠ¡å™¨ [PROXY]。
3772 </notification>
3773
3774 <notification name="SOCKS_NOT_PERMITTED">
3775Socks5 代ç†æœåŠ¡å™¨ [PROXY] æ‹’ç»äº†è¿žæŽ¥ï¼Œè¿žæŽ¥æœªè¢«è§„则å…许
3776 </notification>
3777
3778 <notification name="SOCKS_CONNECT_ERROR">
3779Socks5 代ç†æœåŠ¡å™¨ [PROXY] æ‹’ç»äº†è¿žæŽ¥, 无法打开 TCP 连接
3780 </notification>
3781
3782 <notification name="SOCKS_NOT_ACCEPTABLE">
3783Socks5 代ç†æœåŠ¡å™¨ [PROXY] æ‹’ç»äº†é€‰ä¸­çš„身份验è¯ç³»ç»Ÿ
3784 </notification>
3785
3786 <notification name="SOCKS_AUTH_FAIL">
3787Socks5 代ç†æœåŠ¡å™¨ [PROXY] 报告您的身份验è¯ä¿¡æ¯æ— æ•ˆ
3788 </notification>
3789
3790 <notification name="SOCKS_UDP_FWD_NOT_GRANTED">
3791Socks5 代ç†æœåŠ¡å™¨ [PROXY] æ‹’ç»äº† UDP å…³è”请求
3792 </notification>
3793
3794 <notification name="SOCKS_HOST_CONNECT_FAILED">
3795无法连接到 Socks5 代ç†æœåŠ¡å™¨ [PROXY]
3796 </notification>
3797
3798<!--End Imprudence notifications-->
3799 <!-- [KITTY VIEWER] -->
3800 <notification
3801 icon="alertmodal.tga"
3802 name="KittyInvalidWaterlightNotecard"
3803 type="alert">
3804[NAME] ä¸æ˜¯æœ‰æ•ˆçš„æ°´é¢è®¾å®šèµ„产。
3805 </notification>
3806
3807 <notification
3808 icon="alertmodal.tga"
3809 name="KittyInvalidWindlightNotecard"
3810 type="alert">
3811[NAME] ä¸æ˜¯æœ‰æ•ˆçš„ WindLight 设定资产。
3812 </notification>
3813
3814 <notification
3815 name="KittyWLSaveNotecardAlert">
3816您是å¦è¦è¦†ç›–å·²ç»ä¿å­˜çš„预设?
3817 <usetemplate
3818 name="okcancelbuttons"
3819 notext="å¦"
3820 yestext="是"/>
3821 </notification>
3822 <!-- [/KITTY VIEWER] -->
3187 <global name="UnsupportedCPU"> 3823 <global name="UnsupportedCPU">
3188 - 您的 CPU(中央处ç†å™¨)速度没有达到最低需求。 3824 - 您的 CPU(中央处ç†å™¨)速度没有达到最低需求。
3189 </global> 3825 </global>
3190 <global name="UnsupportedGLRequirements"> 3826 <global name="UnsupportedGLRequirements">
3191 您似乎没有满足第[VIEWER_NAME]的系统需求的硬件。第[VIEWER_NAME]需è¦æ”¯æŒå¤šé‡æè´¨ (multitexture) 3827 您似乎没有满足 [VIEWER_NAME] 的系统需求的硬件。 [VIEWER_NAME] 需è¦æ”¯æŒå¤šé‡æè´¨ (multitexture)
3192çš„ OpenGL 显示å¡ã€‚如果您满足这个æ¡ä»¶çš„è¯ï¼Œä¹Ÿè®¸æ‚¨éœ€è¦ç¡®è®¤å·²ç» 3828çš„ OpenGL 显示å¡ã€‚如果您满足这个æ¡ä»¶çš„è¯ï¼Œä¹Ÿè®¸æ‚¨éœ€è¦ç¡®è®¤å·²ç»
3193安装了您的显示å¡çš„最新驱动程åºã€ä»¥åŠæ“作系统的 Service Pack 和补ä¸ã€‚ 3829安装了您的显示å¡çš„最新驱动程åºã€ä»¥åŠæ“作系统的 Service Pack 和补ä¸ã€‚
3194 3830
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_ao_remote_controls.xml b/linden/indra/newview/skins/default/xui/zh/panel_ao_remote_controls.xml
new file mode 100644
index 0000000..75d01fe
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/panel_ao_remote_controls.xml
@@ -0,0 +1,6 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel name="ao_controls">
3 <button label="动画覆盖" label_selected="动画覆盖" name="ao_btn"
4 tool_tip="点击这里切æ¢åŠ¨ç”»è¦†ç›–器" />
5 <button name="popup_btn" tool_tip="更多选项" width="22" />
6</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_ao_remote_expanded.xml b/linden/indra/newview/skins/default/xui/zh/panel_ao_remote_expanded.xml
new file mode 100644
index 0000000..283d7cf
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/panel_ao_remote_expanded.xml
@@ -0,0 +1,8 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel
3 name="ao_remote">
4 <button
5 label="å姿覆盖关闭"
6 label_selected="å姿覆盖打开"
7 name="ao_sit_btn" />
8</panel> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_audio.xml b/linden/indra/newview/skins/default/xui/zh/panel_audio.xml
index a537046..182b184 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_audio.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_audio.xml
@@ -23,6 +23,9 @@
23 <slider 23 <slider
24 name="Wind Volume" 24 name="Wind Volume"
25 label="环境" /> 25 label="环境" />
26 <slider
27 label="动作"
28 name="Gestures Volume" />
26 <slider name="UI Volume" 29 <slider name="UI Volume"
27 label="ç•Œé¢" /> 30 label="ç•Œé¢" />
28 31
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_avatar.xml b/linden/indra/newview/skins/default/xui/zh/panel_avatar.xml
index a1ed123..1d1848d 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_avatar.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_avatar.xml
@@ -1,7 +1,10 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<panel name="Panel Avatar"> 2<panel name="Panel Avatar">
3 <tab_container name="tab"> 3 <tab_container name="tab">
4 <panel label="Avatar" name="2nd Life"> 4 <panel label="档案" name="2nd Life">
5 <button label="å¤åˆ¶é”®å€¼" label_selected="å¤åˆ¶é”®å€¼" name="btn_copy_uuid" />
6
7
5 <string name="CaptionTextAcctInfo"> 8 <string name="CaptionTextAcctInfo">
6[ACCTTYPE] 9[ACCTTYPE]
7[PAYMENTINFO] 10[PAYMENTINFO]
@@ -14,7 +17,7 @@
14 试用者 17 试用者
15 </string> 18 </string>
16 <string name="AcctTypeCharterMember"> 19 <string name="AcctTypeCharterMember">
17 宪章制定委员会æˆå‘˜ 20 终身会员
18 </string> 21 </string>
19 <string name="AcctTypeEmployee"> 22 <string name="AcctTypeEmployee">
20 林登实验室雇员 23 林登实验室雇员
@@ -40,11 +43,23 @@
40 <text name="online_yes"> 43 <text name="online_yes">
41 当å‰åœ¨çº¿ 44 当å‰åœ¨çº¿
42 </text> 45 </text>
46 <text name="online_no">
47 ä¸åœ¨çº¿
48 </text>
49 <text name="online_unknown">
50 在线状æ€æœªçŸ¥
51 </text>
43 <text name="label"> 52 <text name="label">
44 出生: 53 出生:
45 </text> 54 </text>
55 <string name="copy_key_info">
56 已将 [AVATAR] 的键值å¤åˆ¶åˆ°å‰ªè´´æ¿: [KEY]
57 </string>
58 <string name="days_old_text">
59 ([DAYS] 天)
60 </string>
46 <text name="label2"> 61 <text name="label2">
47 账户: 62 账户信æ¯:
48 </text> 63 </text>
49 <text name="partner_label" tool_tip="第二人生æ­æ¡£ã€‚è¦èŽ·å–更多关于如何设置此项功能, 请登陆www.secondlife.com/partner"> 64 <text name="partner_label" tool_tip="第二人生æ­æ¡£ã€‚è¦èŽ·å–更多关于如何设置此项功能, 请登陆www.secondlife.com/partner">
50 æ­æ¡£: 65 æ­æ¡£:
@@ -61,7 +76,7 @@
61 社团: 76 社团:
62 </text> 77 </text>
63 <text name="About:"> 78 <text name="About:">
64 关于: 79 关于: (8196个字)
65 </text> 80 </text>
66 <text name="(500 chars)"> 81 <text name="(500 chars)">
67 (500 个字) 82 (500 个字)
@@ -69,8 +84,11 @@
69 <text name="Give item:"> 84 <text name="Give item:">
70 给与物å“: 85 给与物å“:
71 </text> 86 </text>
72 <text name="Give inventory" tool_tip="è¦æŠŠåº“存中的物体赠与这个人,将其拖动到这里。"> 87 <text name="drop target" tool_tip="è¦æŠŠåº“存中的物体赠与这个人,将其拖动到这里。">
73 放置库存物å“于此。 88 拖动库存æ¡ç›®
89 </text>
90 <text name="Give inventory 2" tool_tip="è¦æŠŠåº“存中的物体赠与这个人,将其拖动到这里。">
91 到这里赠与居民
74 </text> 92 </text>
75 <check_box label="在æœç´¢ç»“果中显示" name="allow_publish" tool_tip="在æœç´¢ä¸­æ˜¾ç¤ºé¢å¤–ä¿¡æ¯ï¼Œä¾‹å¦‚æ述和照片。"/> 93 <check_box label="在æœç´¢ç»“果中显示" name="allow_publish" tool_tip="在æœç´¢ä¸­æ˜¾ç¤ºé¢å¤–ä¿¡æ¯ï¼Œä¾‹å¦‚æ述和照片。"/>
76 <button label="?" label_selected="?" name="?"/> 94 <button label="?" label_selected="?" name="?"/>
@@ -78,17 +96,18 @@
78 <button label="邀请瞬间移动..." label_selected="邀请瞬间移动..." name="Offer Teleport..."/> 96 <button label="邀请瞬间移动..." label_selected="邀请瞬间移动..." name="Offer Teleport..."/>
79 <button label="添加为好å‹..." label_selected="添加为好å‹..." name="Add Friend..."/> 97 <button label="添加为好å‹..." label_selected="添加为好å‹..." name="Add Friend..."/>
80 <button label="付款..." label_selected="付款..." name="Pay..."/> 98 <button label="付款..." label_selected="付款..." name="Pay..."/>
81 <button label="å³æ—¶æ¶ˆæ¯..." label_selected="å³æ—¶æ¶ˆæ¯..." name="Instant Message..." tool_tip="å³æ—¶é€šä¿¡"/> 99 <button label="å³æ—¶æ¶ˆæ¯..." label_selected="å³æ—¶æ¶ˆæ¯..." name="Instant Message..." tool_tip="å³æ—¶æ¶ˆæ¯ (IM)"/>
82 <button label="å±è”½" label_selected="å±è”½" name="Mute"/> 100 <button label="å±è”½" label_selected="å±è”½" name="Mute"/>
101 <button label="邀请加入社团..." label_selected="邀请加入社团..." name="Invite to Group..." />
83 </panel> 102 </panel>
84 <panel label="Web" name="WebProfile"> 103 <panel label="Web" name="WebProfile">
85 <line_editor is_unicode="false" name="url_edit"/> 104 <line_editor is_unicode="false" name="url_edit"/>
86 <flyout_button label="加载" label_selected="加载" name="load" tool_tip="用内部æµè§ˆå™¨æ‰“开这个档案页é¢ã€‚"> 105 <flyout_button label="加载" label_selected="加载" name="load" tool_tip="用内部æµè§ˆå™¨æ‰“开这个档案页é¢ã€‚">
87 <flyout_button_item name="open_item"> 106 <flyout_button_item name="open_item">
88 在外部æµè§ˆå™¨ä¸­ 107 在外部æµè§ˆå™¨ä¸­æ‰“å¼€
89 </flyout_button_item> 108 </flyout_button_item>
90 <flyout_button_item name="home_item"> 109 <flyout_button_item name="home_item">
91 家连接 110 返回起始页é¢
92 </flyout_button_item> 111 </flyout_button_item>
93 </flyout_button> 112 </flyout_button>
94 <button label="?" label_selected="?" name="web_profile_help"/> 113 <button label="?" label_selected="?" name="web_profile_help"/>
@@ -122,31 +141,31 @@
122 </panel> 141 </panel>
123 <panel label="收è—" name="Picks"> 142 <panel label="收è—" name="Picks">
124 <text name="Tell everyone about your favorite places in Second Life."> 143 <text name="Tell everyone about your favorite places in Second Life.">
125 告诉大家你在第二人生中最喜欢的地点。 144 告诉大家你最喜欢的地点。
126 </text> 145 </text>
127 <button label="新建..." label_selected="新建..." name="New..."/> 146 <button label="新建..." label_selected="新建..." name="New..."/>
128 <button label="删除..." label_selected="删除..." name="Delete..."/> 147 <button label="删除..." label_selected="删除..." name="Delete..."/>
129 <text name="loading_text"> 148 <text name="loading_text">
130 加载... 149 载入中...
131 </text> 150 </text>
132 </panel> 151 </panel>
133 <panel label="分类广告" name="Classified"> 152 <panel label="分类广告" name="Classified">
134 <text name="Place an ad in Second Life&apos;s classified listings."> 153 <text name="Place an ad in Second Life&apos;s classified listings.">
135 在第二人生的分类æ ä¸­åˆŠç™»å¹¿å‘Šã€‚ 154 在分类广告æ ä¸­åˆŠç™»å¹¿å‘Šã€‚
136 </text> 155 </text>
137 <button label="新建..." label_selected="新建..." name="New..."/> 156 <button label="新建..." label_selected="新建..." name="New..."/>
138 <button label="删除..." label_selected="删除..." name="Delete..."/> 157 <button label="删除..." label_selected="删除..." name="Delete..."/>
139 <text name="loading_text"> 158 <text name="loading_text">
140 加载... 159 载入中...
141 </text> 160 </text>
142 </panel> 161 </panel>
143 <panel label="第一人生" name="1st Life"> 162 <panel label="真实生活" name="1st Life">
144 <text name="Photo:"> 163 <text name="Photo:">
145 照片: 164 照片:
146 </text> 165 </text>
147 <texture_picker label="" name="img" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/> 166 <texture_picker label="" name="img" tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡"/>
148 <text name="Info:"> 167 <text name="Info:">
149 消æ¯: 168 æ¶ˆæ¯ (8196 个字):
150 </text> 169 </text>
151 <text name="(250 chars)"> 170 <text name="(250 chars)">
152 (250个字) 171 (250个字)
@@ -154,7 +173,7 @@
154 </panel> 173 </panel>
155 <panel label="我的备注" name="My Notes"> 174 <panel label="我的备注" name="My Notes">
156 <string name="Loading"> 175 <string name="Loading">
157 加载... 176 载入中...
158 </string> 177 </string>
159 <text name="label"> 178 <text name="label">
160 使用这å—空间æ¥è®°å½•ä½ å…³äºŽè¿™ä¸ªäººçš„笔记。 追踪交易 179 使用这å—空间æ¥è®°å½•ä½ å…³äºŽè¿™ä¸ªäººçš„笔记。 追踪交易
@@ -171,7 +190,7 @@
171 <button label="CSR" label_selected="CSR" name="csr_btn" tool_tip="对此ä½å±…æ°‘å¼€å¯é¡¾å®¢æœåŠ¡å·¥å…·ã€‚"/> 190 <button label="CSR" label_selected="CSR" name="csr_btn" tool_tip="对此ä½å±…æ°‘å¼€å¯é¡¾å®¢æœåŠ¡å·¥å…·ã€‚"/>
172 <string name="ShowOnMapNonFriend"> 191 <string name="ShowOnMapNonFriend">
173 在地图上显示ä½ç½®ã€‚ 192 在地图上显示ä½ç½®ã€‚
174由于你和它们之间没有å‹è°Šå…³ç³»ï¼Œæ‰€ä»¥åˆšæ‰çš„æ“作无效。 193由于你和对方之间没有å‹è°Šå…³ç³»ï¼Œæ‰€ä»¥åˆšæ‰çš„æ“作无效。
175 </string> 194 </string>
176 <string name="ShowOnMapFriendOffline"> 195 <string name="ShowOnMapFriendOffline">
177 在地图上显示ä½ç½®ã€‚ 196 在地图上显示ä½ç½®ã€‚
@@ -190,6 +209,9 @@
190 邀请瞬间移动到你所在的ä½ç½®ã€‚ 209 邀请瞬间移动到你所在的ä½ç½®ã€‚
191 </string> 210 </string>
192 <string name="Loading"> 211 <string name="Loading">
193 加载... 212 载入中...
213 </string>
214 <string name="HiddenLabel">
215 (éšè—)
194 </string> 216 </string>
195</panel> 217</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_avatar_classified.xml b/linden/indra/newview/skins/default/xui/zh/panel_avatar_classified.xml
index f70eef3..761d58a 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_avatar_classified.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_avatar_classified.xml
@@ -26,7 +26,7 @@
26 <button label="å‘布..." name="classified_update_btn"/> 26 <button label="å‘布..." name="classified_update_btn"/>
27 <check_box label="æ¯å‘¨è‡ªåŠ¨æ›´æ–°" name="auto_renew_check"/> 27 <check_box label="æ¯å‘¨è‡ªåŠ¨æ›´æ–°" name="auto_renew_check"/>
28 <string name="ad_placed_paid"> 28 <string name="ad_placed_paid">
29 广告å‘布: [DATE],为此付出了 L$[AMT]。 29 广告å‘布: [DATE],为此付出了 [CURRENCY][AMT]。
30 </string> 30 </string>
31 <string name="update_txt"> 31 <string name="update_txt">
32 æ›´æ–° 32 æ›´æ–°
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_classified.xml b/linden/indra/newview/skins/default/xui/zh/panel_classified.xml
index 09ded10..7646245 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_classified.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_classified.xml
@@ -6,21 +6,21 @@
6 <button label="瞬间移动" name="classified_teleport_btn"/> 6 <button label="瞬间移动" name="classified_teleport_btn"/>
7 <button label="在地图中显示" name="classified_map_btn"/> 7 <button label="在地图中显示" name="classified_map_btn"/>
8 <button label="档案" name="classified_profile_btn"/> 8 <button label="档案" name="classified_profile_btn"/>
9 <combo_box name="classified_mature_check"> 9 <combo_box label="" name="classified_mature_check">
10 <combo_item name="select_mature"> 10 <combo_item name="select_mature">
11 -选择é™åˆ¶çº§- 11 - 选择é™åˆ¶çº§ -
12 </combo_item> 12 </combo_item>
13 <combo_item name="mature"> 13 <combo_item name="mature">
14 Mature Content 14 Mature内容
15 </combo_item> 15 </combo_item>
16 <combo_item name="pg"> 16 <combo_item name="pg">
17 PG Content 17 PG内容
18 </combo_item> 18 </combo_item>
19 </combo_box> 19 </combo_box>
20 <combo_box label="" name="classified_category_combo"/> 20 <combo_box label="" name="classified_category_combo"/>
21 <button label="æ›´æ–°" name="classified_update_btn"/> 21 <button label="æ›´æ–°" name="classified_update_btn"/>
22 <string name="ad_placed_paid"> 22 <string name="ad_placed_paid">
23 广告地å€ï¼š[DATE],å‘布付款 L$[AMT] 23 广告å布: [DATE],为此付出了 [CURRENCY][AMT]。
24 </string> 24 </string>
25 <string name="update_txt"> 25 <string name="update_txt">
26 æ›´æ–° 26 æ›´æ–°
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_friends.xml b/linden/indra/newview/skins/default/xui/zh/panel_friends.xml
index fafb6e8..16b16fc 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_friends.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_friends.xml
@@ -9,12 +9,16 @@
9 <column name="icon_visible_online" tool_tip="好å‹å¯ä»¥çœ‹è§ä½ æ˜¯å¦åœ¨çº¿"/> 9 <column name="icon_visible_online" tool_tip="好å‹å¯ä»¥çœ‹è§ä½ æ˜¯å¦åœ¨çº¿"/>
10 <column name="icon_visible_map" tool_tip="好å‹å¯ä»¥åœ¨åœ°å›¾ä¸Šæ‰¾åˆ°ä½ "/> 10 <column name="icon_visible_map" tool_tip="好å‹å¯ä»¥åœ¨åœ°å›¾ä¸Šæ‰¾åˆ°ä½ "/>
11 <column name="icon_edit_mine" tool_tip="好å‹å¯ä»¥ç¼–辑你的物体"/> 11 <column name="icon_edit_mine" tool_tip="好å‹å¯ä»¥ç¼–辑你的物体"/>
12 <column name="icon_visible_map" tool_tip="ä½ å¯ä»¥åœ¨åœ°å›¾ä¸Šæ‰¾åˆ°è¿™ä½å¥½å‹"/>
12 <column name="icon_edit_theirs" tool_tip="ä½ å¯ä»¥ç¼–辑这ä½å¥½å‹çš„物体"/> 13 <column name="icon_edit_theirs" tool_tip="ä½ å¯ä»¥ç¼–辑这ä½å¥½å‹çš„物体"/>
13 </scroll_list> 14 </scroll_list>
14 <button label="èŠå¤©/呼å«" name="im_btn" tool_tip="打开å³æ—¶é€šä¿¡ä¼šè¯"/> 15 <button label="èŠå¤©/呼å«" name="im_btn" tool_tip="打开å³æ—¶é€šä¿¡ä¼šè¯"/>
15 <button label="档案" name="profile_btn" tool_tip="显示图片ã€ç¤¾å›¢å’Œå…¶ä»–ä¿¡æ¯"/> 16 <button label="档案" name="profile_btn" tool_tip="显示图片ã€ç¤¾å›¢å’Œå…¶ä»–ä¿¡æ¯"/>
16 <button label="瞬间移动..." name="offer_teleport_btn" tool_tip="邀请该好å‹çž¬é—´ç§»åŠ¨åˆ°ä½ çš„当å‰ä½ç½®"/> 17 <button label="瞬间移动..." name="offer_teleport_btn" tool_tip="邀请该好å‹çž¬é—´ç§»åŠ¨åˆ°ä½ çš„当å‰ä½ç½®"/>
17 <button label="付款..." name="pay_btn" tool_tip="给这ä½å¥½å‹æž—ç™»å¸ (L$)"/> 18 <button label="付款..." name="pay_btn" tool_tip="给这ä½å¥½å‹è´§å¸"/>
18 <button label="移除..." name="remove_btn" tool_tip="将这个人从你的好å‹åˆ—表中去除"/> 19 <button label="移除..." name="remove_btn" tool_tip="将这个人从你的好å‹åˆ—表中去除"/>
19 <button label="添加..." name="add_btn" tool_tip="邀请其他居民æˆä¸ºä½ çš„好å‹"/> 20 <button label="添加..." name="add_btn" tool_tip="邀请其他居民æˆä¸ºä½ çš„好å‹"/>
21 <search_editor bottom="-24" enabled="true" follows="left|right|top" font="SansSerif"
22 height="18" left="10" right="-100" name="buddy_search"
23 label="在这里打字查找好å‹" width="130" />
20</panel> 24</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_group_general.xml b/linden/indra/newview/skins/default/xui/zh/panel_group_general.xml
index 43d6d3e..cddaac2 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_group_general.xml
@@ -26,7 +26,7 @@
26 <text_editor name="charter"> 26 <text_editor name="charter">
27 社团宪章 27 社团宪章
28 </text_editor> 28 </text_editor>
29 <button label="加入(L$0)" label_selected="加入(L$0)" name="join_button"/> 29 <button label="加入 (å…è´¹)" label_selected="加入 (å…è´¹)" name="join_button"/>
30 <button label="详细视图" label_selected="详细察看" name="info_button"/> 30 <button label="详细视图" label_selected="详细察看" name="info_button"/>
31 <text name="text_owners_and_visible_members"> 31 <text name="text_owners_and_visible_members">
32 拥有者和å¯è§çš„会员 32 拥有者和å¯è§çš„会员
@@ -45,7 +45,7 @@
45 <panel name="preferences_container"> 45 <panel name="preferences_container">
46 <check_box label="在æœç´¢ä¸­æ˜¾ç¤º" name="show_in_group_list" tool_tip="让别人在æœç´¢ç»“果中看到这个社团。"/> 46 <check_box label="在æœç´¢ä¸­æ˜¾ç¤º" name="show_in_group_list" tool_tip="让别人在æœç´¢ç»“果中看到这个社团。"/>
47 <check_box label="公开注册" name="open_enrollement" tool_tip="设置该社团是å¦å…许新会员加入而ä¸éœ€è¦è¢«é‚€è¯·ã€‚"/> 47 <check_box label="公开注册" name="open_enrollement" tool_tip="设置该社团是å¦å…许新会员加入而ä¸éœ€è¦è¢«é‚€è¯·ã€‚"/>
48 <check_box label="注册费用: L$" name="check_enrollment_fee" tool_tip="设定是å¦æ”¶å°†å–社团入会费。"/> 48 <check_box label="注册费用: [CURRENCY]" name="check_enrollment_fee" tool_tip="设定是å¦æ”¶å°†å–社团入会费。"/>
49 <spinner name="spin_enrollment_fee" tool_tip="如果选择了注册费用的è¯ï¼Œæ–°ä¼šå‘˜åŠ å…¥ç¤¾å›¢æ—¶å¿…须付出这笔费用。"/> 49 <spinner name="spin_enrollment_fee" tool_tip="如果选择了注册费用的è¯ï¼Œæ–°ä¼šå‘˜åŠ å…¥ç¤¾å›¢æ—¶å¿…须付出这笔费用。"/>
50 <combo_box name="group_mature_check" tool_tip="设置是å¦åº”将社团信æ¯çœ‹ä½œMature内容。"> 50 <combo_box name="group_mature_check" tool_tip="设置是å¦åº”将社团信æ¯çœ‹ä½œMature内容。">
51 <combo_item name="select_mature"> 51 <combo_item name="select_mature">
@@ -65,12 +65,16 @@
65 <combo_box name="active_title" tool_tip="设置当该社团激活时,在化身姓å标签中显示的头衔。"/> 65 <combo_box name="active_title" tool_tip="设置当该社团激活时,在化身姓å标签中显示的头衔。"/>
66 </panel> 66 </panel>
67 <check_box label="接å—社团通知" name="receive_notices" tool_tip="设置您是å¦æƒ³è¦ä»Žè¯¥ç¤¾å›¢æŽ¥å—通知。如果这个社团å‘您乱å‘垃圾信æ¯ï¼Œé‚£å°±å–消选择这项。"/> 67 <check_box label="接å—社团通知" name="receive_notices" tool_tip="设置您是å¦æƒ³è¦ä»Žè¯¥ç¤¾å›¢æŽ¥å—通知。如果这个社团å‘您乱å‘垃圾信æ¯ï¼Œé‚£å°±å–消选择这项。"/>
68 <check_box
69 label="加入社团èŠå¤©"
70 name="receive_chat"
71 tool_tip="设置是å¦æƒ³å‚加社团èŠå¤©ã€‚如果这个社团å‘您乱å‘垃圾信æ¯ï¼Œé‚£å°±å–消选择这项。" />
68 <check_box label="在我的档案中列出该社团" name="list_groups_in_profile" tool_tip="设置您是å¦æƒ³è¦åœ¨æ¡£æ¡ˆä¸­åˆ—出该社团"/> 72 <check_box label="在我的档案中列出该社团" name="list_groups_in_profile" tool_tip="设置您是å¦æƒ³è¦åœ¨æ¡£æ¡ˆä¸­åˆ—出该社团"/>
69 </panel> 73 </panel>
70 <string name="incomplete_member_data_str"> 74 <string name="incomplete_member_data_str">
71 é‡æ–°èŽ·å–ä¼šå‘˜ä¿¡æ¯ 75 获å–团员信æ¯ä¸­
72 </string> 76 </string>
73 <string name="confirm_group_create_str"> 77 <string name="confirm_group_create_str">
74你真的,真的,真----çš„----确定è¦èŠ±è´¹M$0æ¥åˆ›å»ºè¿™ä¸ªç¤¾å›¢å—? 78你真的,真的,真----çš„----确定è¦èŠ±è´¹[GROUPCREATEFEE]æ¥åˆ›å»ºè¿™ä¸ªç¤¾å›¢å—?
75 </string> 79 </string>
76</panel> 80</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_group_land_money.xml b/linden/indra/newview/skins/default/xui/zh/panel_group_land_money.xml
index cf1866c..0c0a64a 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_group_land_money.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_group_land_money.xml
@@ -11,7 +11,7 @@
11 你没有查看这个社团账户信æ¯çš„æƒé™ã€‚ 11 你没有查看这个社团账户信æ¯çš„æƒé™ã€‚
12 </string> 12 </string>
13 <string name="loading_txt"> 13 <string name="loading_txt">
14 载入... 14 载入中...
15 </string> 15 </string>
16 <text name="group_land_heading"> 16 <text name="group_land_heading">
17 社团所æŒæœ‰åœŸåœ° 17 社团所æŒæœ‰åœŸåœ°
@@ -55,7 +55,7 @@
55 社团æˆå‘˜å¿…须贡献更多的土地é¢åº¦ï¼Œæ¥æ”¯æŒåœŸåœ°çš„使用。 55 社团æˆå‘˜å¿…须贡献更多的土地é¢åº¦ï¼Œæ¥æ”¯æŒåœŸåœ°çš„使用。
56 </text> 56 </text>
57 <text name="group_money_heading"> 57 <text name="group_money_heading">
58 社团资产 L$ 58 社团 [CURRENCY]
59 </text> 59 </text>
60 <tab_container name="group_money_tab_container"> 60 <tab_container name="group_money_tab_container">
61 <panel label="计划" name="group_money_planning_tab"> 61 <panel label="计划" name="group_money_planning_tab">
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_groups.xml b/linden/indra/newview/skins/default/xui/zh/panel_groups.xml
index cb658cb..a67c585 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_groups.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_groups.xml
@@ -1,5 +1,24 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel name="groups"> 2<panel name="groups">
3 <scroll_list
4 name="group list">
5 <column
6 label="社团å称"
7 name="name" />
8 <column
9 label="通知"
10 name="receive_notices"
11 tool_tip="接å—该社团的通知" />
12 <column
13 label="èŠå¤©"
14 name="join_group_chat"
15 tool_tip="å‚加该社团的社团èŠå¤©" />
16 <column
17 label="公开"
18 name="list_in_profile"
19 image="ff_visible_online_button.tga"
20 tool_tip="在你的档案中列出该社团" />
21 </scroll_list>
3 <text name="groupdesc" > 22 <text name="groupdesc" >
4 您当å‰æ¿€æ´»çš„社团以粗体表示。 23 您当å‰æ¿€æ´»çš„社团以粗体表示。
5 </text> 24 </text>
@@ -17,6 +36,12 @@
17 label="激活" 36 label="激活"
18 name="Activate" /> 37 name="Activate" />
19 <button 38 <button
39 label="头衔..."
40 name="Titles..." />
41 <button
42 label="邀请..."
43 name="Invite..." />
44 <button
20 label="离开" 45 label="离开"
21 name="Leave" /> 46 name="Leave" />
22 <button 47 <button
@@ -25,5 +50,8 @@
25 <button 50 <button
26 label="æœç´¢..." 51 label="æœç´¢..."
27 name="Search..." /> 52 name="Search..." />
53 <search_editor
54 name="group_search"
55 label="æœç´¢ä½ çš„社团" />
28</panel> 56</panel>
29<!--Translated for Second Life 1.19.0 (79185)--> \ No newline at end of file 57<!--Translated for Second Life 1.19.0 (79185)--> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_login.xml b/linden/indra/newview/skins/default/xui/zh/panel_login.xml
index a10df47..b43d441 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_login.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_login.xml
@@ -1,11 +1,32 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel name="panel_login"> 2<panel name="panel_login">
3 <web_browser name="login_html"
4 bottom="102" top="-1" left="0" right="-1"
5 border_visible="false" follows="top|left|bottom|right"
6 start_url="data:text/html,
7 %3Chtml%3E
8 %3Chead%3E %3C/head%3E
9 %3Cbody bgcolor=%22#5a2d65%22 text=%22ffffff%22%3E
10 %3Ctable width=%22100%%22 height=%22100%%22 border=%220%22%3E
11 %3Ctr%3E
12 %3Ctd align=%22center%22 valign=%22middle%22 style=%22font-size:0.8em;%22%3E
13 %3Cimg src=%22imprudence_loading.png%22 align=%22absmiddle%22%3E
14 %3Cbr/%3E
15 %3CH1%3E请ç¨å€™...%3C/H1%3E
16 %3C/td%3E
17 %3C/tr%3C
18 %3C/table%3E
19 %3C/body%3E
20 %3C/html%3E" />
3 <text name="first_name_text"> 21 <text name="first_name_text">
4 å: 22 å:
5 </text> 23 </text>
6 <text name="last_name_text"> 24 <text name="last_name_text">
7 姓: 25 姓:
8 </text> 26 </text>
27 <text name="username_text">
28 登入å称:
29 </text>
9 <text name="password_text"> 30 <text name="password_text">
10 密ç : 31 密ç :
11 </text> 32 </text>
@@ -27,6 +48,10 @@
27 <text name="full_screen_text"> 48 <text name="full_screen_text">
28 登陆åŽæ˜¾ç¤ºå™¨ä¼šé‡‡ç”¨å…¨å±æ˜¾ç¤ºã€‚ 49 登陆åŽæ˜¾ç¤ºå™¨ä¼šé‡‡ç”¨å…¨å±æ˜¾ç¤ºã€‚
29 </text> 50 </text>
51 <text name="grid_text">
52 网格:
53 </text>
54 <button name="grid_btn" label="网格管ç†å™¨" />
30 <button label="æ–°å¸æˆ·..." label_selected="æ–°å¸æˆ·..." name="new_account_btn" /> 55 <button label="æ–°å¸æˆ·..." label_selected="æ–°å¸æˆ·..." name="new_account_btn" />
31 <button label="登入" label_selected="登入" name="connect_btn" /> 56 <button label="登入" label_selected="登入" name="connect_btn" />
32 <button label="å‚数选择..." label_selected="å‚数选择..." name="preferences_btn" /> 57 <button label="å‚数选择..." label_selected="å‚数选择..." name="preferences_btn" />
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_mini_map.xml b/linden/indra/newview/skins/default/xui/zh/panel_mini_map.xml
index cc55e26..655d866 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_mini_map.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_mini_map.xml
@@ -24,4 +24,13 @@
24 <text name="nw_label" width="40"> 24 <text name="nw_label" width="40">
25 西北 25 西北
26 </text> 26 </text>
27 <string name="tooltip_tp">
28 åŒå‡»çž¬é—´ç§»åŠ¨
29 </string>
30 <string name="tooltip_pan">
31 æŒ‰ä½ Shift 拖动平移
32 </string>
33 <string name="tooltip_map">
34 åŒå‡»æ‰“开地图
35 </string>
27</panel> 36</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_overlaybar.xml b/linden/indra/newview/skins/default/xui/zh/panel_overlaybar.xml
index 6e5424d..98ccab6 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_overlaybar.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_overlaybar.xml
@@ -4,13 +4,16 @@
4 <layout_panel min_width="420" name="main_panel"> 4 <layout_panel min_width="420" name="main_panel">
5 <layout_stack name="chatbar_and_buttons"> 5 <layout_stack name="chatbar_and_buttons">
6 <layout_panel name="state_buttons"> 6 <layout_panel name="state_buttons">
7 <button label="已收到å³æ—¶æ¶ˆæ¯" label_selected="已收到å³æ—¶æ¶ˆæ¯" name="IM Received" tool_tip="你有一个未察看的å³æ—¶æ¶ˆæ¯ã€‚请点击察看"/> 7 <button label="æ¡æœªè¯»æ¶ˆæ¯" label_selected="æ¡æœªè¯»æ¶ˆæ¯" name="IM Received" tool_tip="你有一æ¡æœªå¯Ÿçœ‹çš„å³æ—¶æ¶ˆæ¯ã€‚请点击察看"/>
8 <button label="å–消忙碌状æ€" label_selected="å–消忙碌状æ€" name="Set Not Busy" tool_tip="èŠå¤©ä¸Žå³æ—¶æ¶ˆæ¯æ¨¡å¼å·²å¯¹ä½ éšè—。 点击这里æ¥è®¾å®šä½ ä¸åœ¨å¿™ç¢Œæ¨¡å¼ä¸‹"/> 8 <button label="å–消忙碌状æ€" label_selected="å–消忙碌状æ€" name="Set Not Busy" tool_tip="èŠå¤©ä¸Žå³æ—¶æ¶ˆæ¯æ¨¡å¼å·²å¯¹ä½ éšè—。 点击这里离开忙碌模å¼"/>
9 <button label="三维æµè§ˆ" label_selected="三维æµè§ˆ" name="Flycam" tool_tip="你的手柄当å‰è¢«æ‰‹æŸ„所控制,点击这里释放。"/> 9 <button label="三维æµè§ˆ" label_selected="三维æµè§ˆ" name="Flycam" tool_tip="你的视角当å‰è¢«æ‰‹æŸ„所控制,点击这里释放。"/>
10 <button label="第一人称视角" label_selected="第一人称视角" name="Mouselook" tool_tip="使用鼠标控制å±å¹•ã€‚如果你有枪,点击则å¯ä»¥å°„击。"/> 10 <button label="第一人称视角" label_selected="第一人称视角" name="Mouselook" tool_tip="使用鼠标控制å±å¹•ã€‚如果你有枪,点击则å¯ä»¥å°„击。"/>
11 <button label="起身" label_selected="起身" name="Stand Up" tool_tip="点击这里æ¥ç«™ç«‹"/> 11 <button label="起身" label_selected="起身" name="Stand Up" tool_tip="点击这里æ¥ç«™ç«‹"/>
12 </layout_panel> 12 </layout_panel>
13 </layout_stack> 13 </layout_stack>
14 </layout_panel> 14 </layout_panel>
15 </layout_stack> 15 </layout_stack>
16 <string name="unread_count_string_plural">
17 æ¡æœªè¯»æ¶ˆæ¯
18 </string>
16</panel> 19</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_particle_settings.xml b/linden/indra/newview/skins/default/xui/zh/panel_particle_settings.xml
new file mode 100644
index 0000000..5bc7ca6
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/panel_particle_settings.xml
@@ -0,0 +1,44 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel
3 label="ç²’å­è®¾ç½®"
4 name="ParticleSettings">
5
6 <text
7 name="part_start_color_textbox">
8 起始颜色:
9 </text>
10 <color_swatch
11 name="part_start_color_swatch"
12 tool_tip="点击这里æ¥æ‰“开色彩选择器" />
13 <text
14 name="part_end_color_textbox">
15 结æŸé¢œè‰²:
16 </text>
17 <color_swatch
18 label=""
19 name="part_end_color_swatch"
20 tool_tip="点击这里æ¥æ‰“开色彩选择器" />
21 <text
22 name="part_texture_textbox">
23 æè´¨:
24 </text>
25
26 <texture_picker
27 label=""
28 name="part_texture_picker"
29 tool_tip="点击这里æ¥é€‰æ‹©å›¾ç‰‡" />
30 <button
31 name="reset_cloud_this_account"
32 label="é‡ç½®è¯¥è´¦æˆ·"
33 tool_tip="é‡ç½®è¯¥è´¦æˆ·çš„化身粒å­äº‘到默认值" />
34 <button
35 name="save_cloud_this_account"
36 label="ä¿å­˜è¯¥è´¦æˆ·"
37 tool_tip="ä¿å­˜è¯¥è´¦æˆ·çš„化身粒å­äº‘" />
38 <button
39 name="save_cloud_any_account"
40 label="ä¿å­˜æ‰€æœ‰è´¦æˆ·"
41 tool_tip="ä¿å­˜åŒ–身粒å­äº‘设置到所有账户" />
42</panel>
43
44
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_place.xml b/linden/indra/newview/skins/default/xui/zh/panel_place.xml
index 91512d9..b2c5492 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_place.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_place.xml
@@ -37,7 +37,7 @@
37 </string> 37 </string>
38 <string 38 <string
39 name="forsale_text"> 39 name="forsale_text">
40 以L$[PRICE]的价格出售 40 以 [CURRENCY][PRICE] 的价格出售
41 </string> 41 </string>
42 <string 42 <string
43 name="auction_text"> 43 name="auction_text">
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_place_small.xml b/linden/indra/newview/skins/default/xui/zh/panel_place_small.xml
index bbda749..1e978d0 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_place_small.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_place_small.xml
@@ -25,7 +25,7 @@
25 é¢ç§¯ï¼š[AREA]平方米。 25 é¢ç§¯ï¼š[AREA]平方米。
26 </string> 26 </string>
27 <string name="forsale_text"> 27 <string name="forsale_text">
28 以L$[PRICE]出售 28 以 [CURRENCY][PRICE] 出售
29 </string> 29 </string>
30 <string name="auction_text"> 30 <string name="auction_text">
31 æ‹å– ID [ID]。 31 æ‹å– ID [ID]。
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml
index f3ce87e..65cfee8 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_advanced.xml
@@ -1,4 +1,164 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel name="advanced_panel"> 2<panel
3 <check_box label="与物体共享语言" name="language_is_public" tool_tip="这使得世界内的物体å¯ä»¥çŸ¥é“ä½ å好的语言。"/> 3 label="高级"
4 name="advanced_panel">
5 <!-- Start organizing these when we get enough of 'em - MC -->
6 <tab_container
7 label="第 2 页"
8 name="tab2"
9 tab_min_width="50">
10
11 <panel
12 label="主è¦"
13 name="main_panel">
14 <text name="user_interface_text">
15 用户界é¢:
16 </text>
17
18 <check_box
19 label="ç¦ç”¨ç™»å…¥ / 登出å±å¹•"
20 name="disable_log_screen_check" />
21 <check_box
22 label="ç¦ç”¨çž¬é—´ç§»åŠ¨å±å¹•"
23 name="disable_tp_screen_check" />
24 <check_box
25 label="显示 WindLight 工具æ "
26 name="toggle_windlight_control" />
27 <check_box
28 label="使用旧å¼èœå•"
29 name="legacy_pie_menu_checkbox" />
30 <text name="avatar_text">
31 化身:
32 </text>
33
34 <check_box
35 label="在姓å标签中显示客户端å称"
36 name="client_name_tag_check" />
37 <check_box
38 label="用颜色显示客户端å称"
39 name="client_name_color_check" />
40 <check_box
41 label="悬åœæ示中显示客户端å称"
42 name="client_name_hover_check" />
43 <check_box
44 label="对他人显示你的客户端å称"
45 name="client_name_tag_broadcast_check" />
46 <check_box
47 tool_tip="切æ¢ç¼–辑外观时是å¦èµ·ç«‹è½¬èº«ã€‚"
48 label="编辑外观时播放化身动画"
49 name="appearance_anim_check" />
50 <check_box label="头部跟éšé¼ æ ‡" tooltip="如果您的化身头部跟éšæ‚¨çš„鼠标动作" name="head_follows_mouse_checkbox" />
51 <check_box label="起飞/ç€é™†é€šè¿‡é”®ç›˜ä¸Š/下键控制" name="automatic_fly"/>
52 <check_box label="èŠå¤©æ—¶ç®­å¤´é”®æ€»æ˜¯ç§»åŠ¨ä½ çš„化身"
53 name="arrow_keys_move_avatar_check" />
54
55 <text name="chat_text">
56 èŠå¤©:
57 </text>
58 <check_box label="以èŠå¤©å½¢å¼æ˜¾ç¤ºè„šæœ¬é”™è¯¯å’Œè­¦å‘Š" name="script_errors_as_chat" />
59 <check_box label="显示收到消æ¯çš„时间" name="show_timestamps_check" />
60 <check_box
61 label="èŠå¤©å’Œå³æ—¶é€šä¿¡ä¸­ä½¿ç”¨ MU* 风格动作"
62 name="allow_mupose"
63 tool_tip="èŠå¤©å’Œå³æ—¶é€šä¿¡ä¸­ä½¿ç”¨ MU* 风格动作 (':' å¯ä»¥ç”¨æ¥ä»£æ›¿ '/me ')。" />
64 <check_box
65 label="自动关闭 OOC (( )) å‘言"
66 name="auto_close_ooc"
67 tool_tip="自动关闭脱离角色的å‘言 (å³æ˜¯ï¼Œ 如果键入了 (( 但没有 )) 就添加 )) )." />
68
69 <text
70 name="textbox">
71 世界:
72 </text>
73 <check_box
74 label="å¯ç”¨é˜´å½± (警告: ä¸ç¨³å®šå¹¶éœ€è¦å›¾åƒè®¾ç½®ä¸ºæœ€é«˜)"
75 name="shadows_check" />
76 <text name="lightshare_text">
77 å¯ç”¨åŒºåŸŸ WindLight 设置 (LightShare):
78 </text>
79 <combo_box
80 name="lightshare_combo"
81 allow_text_entry="false">
82 <combo_item
83 name="never"
84 value="0">
85 从ä¸
86 </combo_item>
87 <combo_item
88 name="ask"
89 value="1">
90 æ¯æ¬¡éƒ½è¯¢é—®æˆ‘
91 </combo_item>
92 <combo_item
93 name="always"
94 value="2">
95 总是
96 </combo_item>
97 </combo_box>
98
99 <check_box label="用颜色区别客户端" name="client_name_color_check" />
100
101
102 <check_box
103 label="使用 HTTP 获å–æè´¨ (实验性)"
104 name="http_texture_check" />
105 <check_box
106 label="通过é€æ¸å¢žåŠ æ绘è·ç¦»åŠ é€Ÿè½½å…¥"
107 name="speed_rez_check" />
108 <spinner
109 tool_tip="æ绘è·ç¦»å¢žåŠ ä¹‹é—´çš„å°†å„"
110 label="步进间隔:"
111 name="speed_rez_interval_spinner" />
112 <text
113 name="speed_rez_seconds_text">
114 seconds
115 </text>
116
117
118 <check_box label="与物体共享语言" name="language_is_public" tool_tip="这使得世界内的物体å¯ä»¥çŸ¥é“ä½ å好的语言。"/>
119
120
121
122 <!-- Uncomment when we start using the crash logger - MC -->
123 <!--<text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
124 bottom_delta="-30" drop_shadow_visible="true" enabled="true" follows="left|top"
125 font="SansSerifSmall" h_pad="0" halign="left" height="18" left="12"
126 mouse_opaque="true" name="crash_report_textbox" v_pad="0" width="394">
127 崩溃报告:
128 </text>
129 <combo_box allow_text_entry="false" bottom_delta="0" enabled="true" follows="left|top"
130 height="18" left="153" max_chars="20" mouse_opaque="true"
131 name="crash_behavior_combobox" width="146">
132 <combo_item type="string" length="1" enabled="true" name="Askbeforesending" value="Ask before sending">
133 Ask before sending
134 </combo_item>
135 <combo_item type="string" length="1" enabled="true" name="Alwayssend" value="Always send">
136 Always send
137 </combo_item>
138 <combo_item type="string" length="1" enabled="true" name="Neversend" value="Never send">
139 Never send
140 </combo_item>
141 </combo_box>-->
142
143 <button
144 label="é‡ç½®æ‰€æœ‰é€‰é¡¹åˆ°é»˜è®¤å€¼"
145 name="reset_btn"
146 tool_tip="é‡ç½®æ‰€æœ‰é€‰é¡¹åˆ°é»˜è®¤å€¼ (需è¦é‡å¯åŠ¨)" />
147 </panel>
148
149
150 <panel
151 label="化身粒å­è®¾ç½®"
152 name="AvatarCloud">
153 <text
154 name="must_be_logged_in_textbox">
155 必须登入åŽæ‰èƒ½æ›´æ”¹
156 </text>
157 <check_box
158 label="预览化身为云"
159 name="preview_cloud"
160 tool_tip="预览化身为云,å³ä½¿å·²ç» rezzed" />
161 </panel>
162 </tab_container>
163
4</panel> 164</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_audio.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_audio.xml
index 3b505b7..8c61f4f 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_preferences_audio.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_audio.xml
@@ -4,19 +4,30 @@
4 音é‡: 4 音é‡:
5 </text> 5 </text>
6 <text name="streaming_prefs_text"> 6 <text name="streaming_prefs_text">
7 æµåª’体首选项: 7 æµåª’体:
8 </text> 8 </text>
9 <text name="audio_prefs_text"> 9 <text name="audio_prefs_text">
10 音频首选项: 10 音频:
11 </text> 11 </text>
12 <panel label="音é‡" name="Volume Panel"/> 12 <panel label="音é‡" name="Volume Panel"/>
13 <check_box label="当音ä¹å¯ç”¨æ—¶æ’­æ”¾éŸ³ä¹æµ(会å ç”¨æ›´å¤šå¸¦å®½)" name="streaming_music"/> 13 <check_box label="当音ä¹å¯ç”¨æ—¶æ’­æ”¾éŸ³ä¹æµ(会å ç”¨æ›´å¤šå¸¦å®½)" name="streaming_music"/>
14 <check_box label="èŠå¤©è®°å½•ä¸­æ˜¾ç¤ºæµä¿¡æ¯" name="show_stream_title" />
14 <check_box label="当视频å¯ç”¨æ—¶æ’­æ”¾è§†é¢‘æµ(会å ç”¨æ›´å¤šå¸¦å®½)" name="streaming_video"/> 15 <check_box label="当视频å¯ç”¨æ—¶æ’­æ”¾è§†é¢‘æµ(会å ç”¨æ›´å¤šå¸¦å®½)" name="streaming_video"/>
15 <check_box label="自动播放媒体" name="auto_streaming_video"/> 16 <check_box label="自动播放媒体" name="auto_streaming_video"/>
17 <check_box label="媒体控制å°å·¥å…·" name="media_helper_widget" />
18 <check_box label="过滤媒体 URL" name="enable_media_filter" />
19 <button
20 name="show_media_filter"
21 label="媒体过滤设置"
22 tool_tip="编辑媒体过滤器的设置和å…许和ç¦æ­¢åˆ—表。" />
16 <check_box label="当窗å£æœ€å°åŒ–æ—¶å±è”½å£°éŸ³" name="mute_when_minimized"/> 23 <check_box label="当窗å£æœ€å°åŒ–æ—¶å±è”½å£°éŸ³" name="mute_when_minimized"/>
17 <slider label="多普勒效应" name="Doppler Effect" width="250"/> 24 <slider label="多普勒效应" name="Doppler Effect" width="250"/>
18 <slider label="è·ç¦»ç³»æ•°" name="Distance Factor"/> 25 <slider label="è·ç¦»ç³»æ•°" name="Distance Factor"/>
19 <slider label="è¡°å‡ç³»æ•°:" name="Rolloff Factor"/> 26 <slider label="è¡°å‡ç³»æ•°:" name="Rolloff Factor"/>
20 <spinner label="L$ å˜åŒ–阈值" name="L$ Change Threshold"/> 27 <spinner label="[CURRENCY] å˜åŒ–阈值" name="L$ Change Threshold"/>
21 <spinner label="生命值å˜åŒ–阈值" name="Health Change Threshold"/> 28 <spinner label="生命值å˜åŒ–阈值" name="Health change threshold"/>
29 <text name="ambient_prefs_text">
30 环境:
31 </text>
32 <check_box label="å¯ç”¨é£Žå£°" name="mute_wind_check" />
22</panel> 33</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
index 143821d..e2df77f 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
@@ -1,72 +1,253 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel label="èŠå¤©" name="chat"> 2<panel label="èŠå¤©" name="chat">
3 <text type="string" length="1" name="text_box"> 3 <tab_container
4 èŠå¤©å­—体大å°: 4 name="chattab2">
5 </text> 5 <panel
6 <radio_group name="chat_font_size"> 6 label="èŠå¤©å’Œå³æ—¶æ¶ˆæ¯"
7 <radio_item type="string" length="1" name="radio"> 7 name="chat_panel">
8 å°å· 8 <text type="string" length="1" name="text_box">
9 </radio_item> 9 èŠå¤©å­—体大å°:
10 <radio_item type="string" length="1" name="radio2"> 10 </text>
11 ä¸­å· 11 <combo_box
12 </radio_item> 12 name="chat_font_size">
13 <radio_item type="string" length="1" name="radio3"> 13 <combo_item name="0">
14 å¤§å· 14 å°å·
15 </radio_item> 15 </combo_item>
16 </radio_group> 16 <combo_item name="1">
17 <text type="string" length="1" name="text_box2"> 17 中å·
18 èŠå¤©é¢œè‰²: 18 </combo_item>
19 </text> 19 <combo_item name="2">
20 <!--Geneko Nemeth: 最多åªèƒ½å†™ä¸‰ä¸ªå­—。/Maximum 3 Chinese characters.--> 20 大å·
21 <color_swatch 21 </combo_item>
22 label="您" 22 </combo_box>
23 name="user" />
24 <color_swatch
25 label="其他人"
26 name="agent" />
27 <color_swatch
28 label="å³æ—¶"
29 name="im" />
30 <color_swatch label="系统" name="system" />
31 <color_swatch label="错误" name="script_error" />
32 <color_swatch label="用户" name="users" />
33 <color_swatch label="物体" name="objects" />
34 <color_swatch label="Owner" name="owner" />
35 <color_swatch label="æ°”çƒ" name="background" />
36 <color_swatch label="链接" name="links" />
37 <text type="string" length="1" name="text_box3">
38 èŠå¤©æŽ§åˆ¶å°:
39 </text>
40 <spinner label="对è¯æ·¡å‡ºæ—¶é—´" name="fade_chat_time" />
41 <text type="string" length="1" name="text_box4">
42 (秒)
43 </text>
44 <text type="string" length="1" name="text_box5">
45 (行)
46 </text>
47 <slider label="ä¸é€æ˜Žåº¦" name="console_opacity" />
48 <check_box
49 label="使用全å±å®½åº¦ (需è¦é‡å¯åŠ¨)"
50 name="chat_full_width_check" />
51 <text type="string" length="1" name="text_box6">
52 èŠå¤©é€‰é¡¹:
53 </text>
54 <check_box label="用全å±å®½åº¦èŠå¤© (需é‡å¯)" name="chat_full_width_check" />
55 <check_box label="按回车键关闭èŠå¤©æ " name="close_chat_on_return_check" />
56 <check_box label="èŠå¤©æ—¶ç®­å¤´é”®æ€»æ˜¯ç§»åŠ¨ä½ çš„化身"
57 name="arrow_keys_move_avatar_check" />
58 <check_box label="本地èŠå¤©æ—¶æ˜¾ç¤ºæ—¶é—´æˆ³" name="show_timestamps_check" />
59 <check_box
60 label="èŠå¤©æ—¶æ’­æ”¾æ‰“字动画"
61 name="play_typing_animation" />
62 <text type="string" length="1" name="text_box7">
63 èŠå¤©æ°”çƒ:
64 </text>
65 <check_box label="使用气çƒèŠå¤©" name="bubble_text_chat" />
66 <slider label="ä¸é€æ˜Žåº¦" name="bubble_chat_opacity" />
67 <text type="string" length="1" name="text_box8">
68 脚本错误:
69 </text>
70 <check_box label="以èŠå¤©å½¢å¼æ˜¾ç¤ºè„šæœ¬é”™è¯¯å’Œè­¦å‘Š" name="script_errors_as_chat" />
71 23
24 <text type="string" length="1" name="text_box2">
25 èŠå¤©é¢œè‰²:
26 </text>
27 <color_swatch
28 label="您"
29 name="user" />
30 <color_swatch
31 label="其他人"
32 name="agent" />
33 <color_swatch
34 label="å³æ—¶æ¶ˆæ¯"
35 name="im" />
36 <color_swatch label="系统" name="system" />
37 <color_swatch label="错误" name="script_error" />
38 <color_swatch label="用户" name="users" />
39 <color_swatch label="物体" name="objects" />
40 <color_swatch label="Owner" name="owner" />
41 <color_swatch label="æ°”çƒ" name="background" />
42 <color_swatch label="链接" name="links" />
43 <text type="string" length="1" name="text_box3">
44 èŠå¤©æŽ§åˆ¶å°:
45 </text>
46 <spinner label="对è¯æ·¡å‡ºæ—¶é—´" name="fade_chat_time" />
47 <text type="string" length="1" name="text_box4">
48 (秒)
49 </text>
50 <text type="string" length="1" name="text_box5">
51 (行)
52 </text>
53 <slider label="ä¸é€æ˜Žåº¦" name="console_opacity" />
54 <check_box
55 label="使用全å±å®½åº¦ (需è¦é‡å¯åŠ¨)"
56 name="chat_full_width_check" />
57 <text type="string" length="1" name="text_box6">
58 èŠå¤©æ :
59 </text>
60 <check_box label="用全å±å®½åº¦èŠå¤© (需é‡å¯)" name="chat_full_width_check" />
61 <check_box label="按回车键关闭èŠå¤©æ " name="close_chat_on_return_check" />
62 <check_box
63 label="èŠå¤©æ—¶æ’­æ”¾æ‰“字动画"
64 name="play_typing_animation" />
65 <check_box
66 label="å°†èŠå¤©æ ä½œä¸ºå‘½ä»¤è¡Œä½¿ç”¨"
67 name="command_line_check" />
68 <button
69 label="èŠå¤©æ å‘½ä»¤"
70 name="command_line_btn"
71 tool_tip="Set specific chatbar command line commands here" />
72 <text type="string" length="1" name="text_box7">
73 èŠå¤©æ°”çƒ:
74 </text>
75 <check_box label="使用气çƒèŠå¤©" name="bubble_text_chat" />
76 <check_box
77 label="åŒæ—¶æ˜¾ç¤ºæœ¬åœ°èŠå¤©å’Œæ°”çƒ"
78 name="local_bubble_text_chat" />
79 <slider label="ä¸é€æ˜Žåº¦" name="bubble_chat_opacity" />
80 <text type="string" length="1" name="text_box8">
81 脚本错误:
82 </text>
83 <check_box
84 label="显示自定义èŠå¤©é¢‘é“"
85 name="toggle_channel_control" />
86 <text
87 name="Instant Messages:">
88 å³æ—¶æ¶ˆæ¯:
89 </text>
90
91 <check_box label="å‘é€å³æ—¶æ¶ˆæ¯è‡³ç”µå­é‚®ä»¶([EMAIL])" name="send_im_to_email" />
92 <text
93 name="show_ims_label">
94 显示å³æ—¶æ¶ˆæ¯:
95 </text>
96 <check_box
97 label="èŠå¤©æŽ§åˆ¶å°"
98 name="include_im_in_chat_console" />
99 <check_box
100 label="本地èŠå¤©çª—å£"
101 name="include_im_in_chat_history" />
102 <check_box
103 label="åž‚ç›´å³æ—¶æ¶ˆæ¯æ ‡ç­¾é¡µ (需è¦é‡å¯åŠ¨)"
104 name="vertical-imtabs-toggle" />
105 </panel>
106 <panel
107 label="拼写检查"
108 name="spell_check_tab">
109
110 <text name="text_box">
111 拼写检查:
112 </text>
113 <button
114 label="?"
115 name="EmeraldHelp_SpellCheck"
116 tool_tip="点击这里获å–该页é¢è®¾ç½®çš„帮助。" />
117 <check_box
118 label="以红色显示拼错的è¯"
119 name="EmeraldSpellDisplay" />
120 <text
121 name="EmSpell_txt1">
122 当å‰è¯­è¨€ (è¯å…¸):
123 </text>
124 <text
125 name="EmSpell_txt3">
126 下载语言 (è¯å…¸):
127 </text>
128 <button
129 label="安装"
130 name="EmSpell_Add"
131 tool_tip="" />
132 <button
133 label="下载更多..."
134 name="EmSpell_GetMore"
135 tool_tip="在线获å–更多è¯å…¸" />
136 <text
137 name="EmSpell_txt2">
138 附加的自定义è¯å…¸:
139 </text>
140 <button
141 label="移除"
142 name="EmSpell_Remove"
143 tool_tip="" />
144 <!--<button bottom_delta="-20" follows="left|top" font="SansSerifSmall" height="18" label="Edit Custom dictionary"
145 name="EmSpell_EditCustom" tool_tip="" left_delta="20" width="130"/>-->
146 <text
147 name="EmSpell_txt4">
148 è¦ä½¿ç”¨æ‹¼å†™æ£€æŸ¥ï¼Œå³é”®å•å‡»æ‹¼é”™çš„è¯å¹¶é€‰æ‹©æ­£ç¡®çš„è¯æ›¿æ¢ã€‚
149 </text>
150 <button
151 name="ac_button"
152 label="自动更正设定..."
153 tool_tip="更改自动更正è¯æ±‡è¡¨å’Œè®¾ç½®" />
154 <text
155 name="text_translate">
156 翻译èŠå¤©:
157 </text>
158 <check_box
159 label="机器翻译èŠå¤© (ç”± Google 强力驱动)"
160 name="translate_chat" />
161 <text
162 name="text_translate_chat">
163 翻译为以下语言:
164 </text>
165 <combo_box
166 name="translate_language_combobox">
167 <combo_item
168 name="System Default Language">
169 系统默认值
170 </combo_item>
171 <combo_item
172 name="English">
173 English (英语)
174 </combo_item>
175
176 <!-- After "System Default" and "English", please keep the rest of these combo_items in alphabetical order by the first character in the string. -->
177
178 <combo_item
179 name="Danish">
180 Dansk (丹麦语)
181 </combo_item>
182 <combo_item
183 name="Deutsch(German)">
184 Deutsch (德语)
185 </combo_item>
186 <combo_item
187 name="Spanish">
188 Español (西ç­ç‰™è¯­)
189 </combo_item>
190 <combo_item
191 name="French">
192 Français (法语)
193 </combo_item>
194 <combo_item
195 name="Italian">
196 Italiano (æ„大利语)
197 </combo_item>
198 <combo_item
199 name="Hungarian">
200 Magyar (匈牙利语)
201 </combo_item>
202 <combo_item
203 name="Dutch">
204 Nederlands (è·å…°è¯­)
205 </combo_item>
206 <combo_item
207 name="Polish">
208 Polski (波兰语)
209 </combo_item>
210 <combo_item
211 name="Portugese">
212 Portugués (è‘¡è„牙语)
213 </combo_item>
214 <combo_item
215 name="Russian">
216 РуÑÑкий (俄语)
217 </combo_item>
218 <combo_item
219 name="Turkish">
220 Türkçe (土耳其语)
221 </combo_item>
222 <combo_item
223 name="Ukrainian"
224 value="uk">
225 УкраїнÑька (乌克兰语)
226 </combo_item>
227 <combo_item
228 name="Chinese"
229 value="zh">
230 中文
231 </combo_item>
232 <combo_item
233 name="(Japanese)"
234 value="ja">
235 日本語
236 </combo_item>
237 <combo_item
238 name="(Korean)"
239 value="ko">
240 한국어 (韩语)
241 </combo_item>
242 </combo_box>
243 </panel>
244
245 </tab_container>
246 <string name="log_in_to_change">
247 登陆åŽæ›´æ”¹
248 </string>
249 <string
250 name="default_email_used">
251 使用默认的电å­é‚®ä»¶åœ°å€
252 </string>
72</panel> 253</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml
new file mode 100644
index 0000000..691e052
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_colors.xml
@@ -0,0 +1,81 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel
3 label="èŠå¤©é¢œè‰²"
4 name="colors">
5 <text
6 name="text_box2">
7 èŠå¤©é¢œè‰²:
8 </text>
9 <text
10 name="effects_color_textbox">
11 我的选择光æŸé¢œè‰²:
12 </text>
13 <color_swatch
14 name="effect_color_swatch"
15 tool_tip="点击这里æ¥æ‰“开色彩选择器" />
16
17 <text
18 name="client_tag_color_textbox">
19 客户端标签颜色:
20 </text>
21 <check_box label="用颜色区别客户端" name="client_name_color_check" />
22 <color_swatch
23 label="ä½ çš„èŠå¤©"
24 name="user" />
25 <color_swatch
26 label="他人的èŠå¤©"
27 name="agent" />
28 <color_swatch
29 label="å³æ—¶æ¶ˆæ¯"
30 name="im" />
31 <color_swatch
32 label="系统"
33 name="system" />
34 <color_swatch
35 label="脚本错误"
36 name="script_error" />
37 <color_swatch
38 label="物体的èŠå¤©"
39 name="objects" />
40 <color_swatch
41 label="物体å³æ—¶æ¶ˆæ¯"
42 name="object_ims" />
43 <color_swatch
44 label="物体对拥有者"
45 name="owner" />
46 <color_swatch
47 label="èŠå¤©æ°”çƒ"
48 name="background" />
49 <color_swatch
50 label="链接"
51 name="links" />
52
53 <text
54 name="text_box3">
55 高亮:
56 </text>
57
58 <check_box
59 label="高亮好å‹çš„èŠå¤©"
60 name="HighlightFriendsChat" />
61 <color_swatch
62 label="好å‹"
63 name="FriendsChatColor" />
64
65 <check_box
66 label="高亮å«æœ‰ä½ çš„å字的本地èŠå¤©"
67 name="HighlightOwnNameInChat" />
68 <check_box
69 label="高亮å«æœ‰ä½ çš„å字的社团èŠå¤©"
70 name="HighlightOwnNameInIM" />
71 <color_swatch
72 label="ä½ çš„åå­—"
73 name="OwnNameChatColor" />
74
75 <line_editor label="高亮昵称 1:"
76 name="nick01" />
77 <line_editor label="高亮昵称 2:"
78 name="nick02" />
79 <line_editor label="高亮昵称 3:"
80 name="nick03">
81</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_fonts.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_fonts.xml
new file mode 100644
index 0000000..ecb4e60
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_fonts.xml
@@ -0,0 +1,29 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel
3 name="fonts_panel"
4 label="字体">
5
6 <text name="fontselect">
7 用户界é¢å­—体:
8 </text>
9 <text name="(requires restart)">
10 (需è¦é‡å¯åŠ¨)
11 </text>
12
13 <spinner
14 name="font_mult"
15 label="字体放大å€æ•°:"
16 tool_tip="所有字体尺寸将被乘以这个数。" />
17
18 <check_box
19 name="font_round"
20 label="å¼ºåˆ¶æ•´æ•°å­—ä½“å¤§å° (也许能解决字体模糊问题)" />
21 <text name="UI Size:">
22 ç•Œé¢å°ºå¯¸:
23 </text>
24 <button
25 label="é‡ç½®"
26 label_selected="é‡ç½®"
27 name="reset_ui_size" />
28 <check_box label="使用分辨率无关尺寸" name="ui_auto_scale"/>
29</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_general.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
index 926231c..429bff3 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_general.xml
@@ -1,30 +1,74 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<panel label="一般选项" name="general_panel"> 2<panel label="一般选项" name="general_panel">
3 <radio_group draw_border="false" name="default_start_location"> 3 <combo_box
4 <radio_item name="MyHome" tool_tip="默认登录到我的家。"> 4 name="default_location_combo"
5 我的家 5 allow_text_entry="true"
6 </radio_item> 6 max_chars="128">
7 <radio_item name="MyLastLocation" tool_tip="默认登录到我最åŽçš„ä½ç½®ã€‚"> 7 <combo_item
8 我最åŽåœ¨çš„ä½ç½® 8 name="MyHome"
9 </radio_item> 9 value="My Home">
10 </radio_group> 10 我的家
11 <check_box label="在登陆界é¢ä¸Šæ˜¾ç¤ºèµ·å§‹ä½ç½®" name="show_location_checkbox"/> 11 </combo_item>
12 <combo_item
13 name="MyLastLocation"
14 value="My Last Location">
15 我最åŽåœ¨çš„ä½ç½®
16 </combo_item>
17 <combo_item
18 name="Typeregionname"
19 value="&lt;Type region name&gt;">
20 &lt;输入地域å&gt;
21 </combo_item>
22 </combo_box>
23 <check_box label="在登陆界é¢ä¸Šæ˜¾ç¤º" name="show_location_checkbox"/>
24 <button
25 name="grid_btn"
26 label="网格管ç†å™¨" />
12 <combo_box name="fade_out_combobox"> 27 <combo_box name="fade_out_combobox">
13 <combo_item name="Never"> 28 <combo_item name="Never">
14 从ä¸æ˜¾ç¤º 29 从ä¸æ˜¾ç¤º
15 </combo_item> 30 </combo_item>
16 <combo_item name="Show Temporarily"> 31 <combo_item name="Show Temporarily">
17 暂时显示 32 短暂地显示
18 </combo_item> 33 </combo_item>
19 <combo_item name="Always"> 34 <combo_item name="Always">
20 总是显示 35 总是显示
21 </combo_item> 36 </combo_item>
22 </combo_box> 37 </combo_box>
23 <check_box label="化身å字使用å°å·å­—体" name="small_avatar_names_checkbox"/> 38 <check_box label="放大姓å标签" name="large_avatar_names_checkbox"/>
24 <check_box label="在我的å±å¹•ä¸Šéšè—我的åå­—" name="show_my_name_checkbox"/> 39 <check_box label="在我的å±å¹•ä¸Šéšè—我的åå­—" name="show_my_name_checkbox"/>
40 <check_box
41 label="粗体显示好å‹çš„姓å标签"
42 name="highlight_friends_checkbox" />
43 <text
44 name="Display_Names_textbox">
45 显示å称:
46 </text>
47 <radio_group
48 name="displaynames">
49 <radio_item
50 name="0">
51 ç»å…¸åå­—
52 </radio_item>
53 <radio_item
54 name="1">
55 显示å称
56 </radio_item>
57 <radio_item
58 name="2">
59 两者都显示
60 </radio_item>
61 </radio_group>
62 <check_box
63 label="显示好å‹çš„ç»å…¸åå­—"
64 name="legacy_friends_checkbox" />
25 <text name="group_titles_textbox"> 65 <text name="group_titles_textbox">
26 社团头衔: 66 社团头衔:
27 </text> 67 </text>
68 <text
69 name="show_names_textbox">
70 姓å标签:
71 </text>
28 <check_box label="éšè—所有社团头衔" name="show_all_title_checkbox"/> 72 <check_box label="éšè—所有社团头衔" name="show_all_title_checkbox"/>
29 <check_box label="éšè—我的社团头衔" name="show_my_title_checkbox"/> 73 <check_box label="éšè—我的社团头衔" name="show_my_title_checkbox"/>
30 <color_swatch label="" name="effect_color_swatch" tool_tip="点击这里æ¥æ‰“开色彩选择器"/> 74 <color_swatch label="" name="effect_color_swatch" tool_tip="点击这里æ¥æ‰“开色彩选择器"/>
@@ -32,39 +76,75 @@
32 ç•Œé¢å°ºå¯¸: 76 ç•Œé¢å°ºå¯¸:
33 </text> 77 </text>
34 <check_box bottom="-236" label="使用分辨率无关尺寸" left="148" name="ui_auto_scale" width="256"/> 78 <check_box bottom="-236" label="使用分辨率无关尺寸" left="148" name="ui_auto_scale" width="256"/>
79 <button
80 label="é‡ç½®"
81 label_selected="é‡ç½®"
82 name="reset_ui_size" />
83 <text
84 name="afk_textbox">
85 空闲时离开:
86 </text>
35 <spinner label="离开休æ¯è®¡æ—¶:" name="afk_timeout_spinner"/> 87 <spinner label="离开休æ¯è®¡æ—¶:" name="afk_timeout_spinner"/>
36 <check_box label="åœ¨ä»˜å‡ºæˆ–æ”¶åˆ°æž—ç™»å¸ (L$) æ—¶æ醒我" name="notify_money_change_checkbox"/> 88 <check_box
89 label="空闲时进入离开状æ€"
90 name="afk_timeout_checkbox" />
91
92 <text
93 name="Mini-Map Notify:">
94 迷你地图æ醒:
95 </text>
37 <text name="maturity_desired_label"> 96 <text name="maturity_desired_label">
38 分级: 97 分级:
39 </text> 98 </text>
40 <text name="maturity_desired_prompt"> 99 <text name="maturity_desired_prompt">
41 我希望获的土地访问æƒé™ï¼š 100 我希望访问以下级别的内容:
42 </text> 101 </text>
43 <combo_box name="maturity_desired_combobox"> 102 <combo_box name="maturity_desired_combobox">
44 <combo_item name="Desired_Adult"> 103 <combo_item name="Desired_Adult">
45 PG,Matureå’ŒAdult 104 PGã€Mature å’Œ Adult
46 </combo_item> 105 </combo_item>
47 <combo_item name="Desired_Mature"> 106 <combo_item name="Desired_Mature">
48 PG和Mature 107 PG 和 Mature
49 </combo_item> 108 </combo_item>
50 <combo_item name="Desired_PG"> 109 <combo_item name="Desired_PG">
51 ä»…é™PG 110 ä»…é™ PG
52 </combo_item> 111 </combo_item>
53 </combo_box> 112 </combo_box>
54 <text name="maturity_desired_textbox"> 113 <text name="maturity_desired_textbox">
55 ä»…é™PG 114 ä»…é™ PG
56 </text> 115 </text>
116 <text
117 name="time_textbox">
118 时钟:
119 </text>
120 <combo_box
121 allow_text_entry="false"
122 max_chars="20"
123 name="time_combobox">
124 <combo_item
125 name="12HourTime"
126 value="PST 12">
127 12å°æ—¶ 太平洋标准/å¤ä»¤æ—¶
128 </combo_item>
129 <combo_item
130 name="24HourTime"
131 value="PST 24">
132 24å°æ—¶ 太平洋标准/å¤ä»¤æ—¶
133 </combo_item>
134 <combo_item
135 name="UTCTime"
136 value="UTC">
137 å调世界时
138 </combo_item>
139 </combo_box>
57 <text length="1" name="start_location_textbox" type="string"> 140 <text length="1" name="start_location_textbox" type="string">
58 起始ä½ç½®: 141 起始ä½ç½®:
59 </text> 142 </text>
60 <text length="1" name="show_names_textbox" type="string">
61 显示åå­—:
62 </text>
63 <text length="1" name="effects_color_textbox" type="string"> 143 <text length="1" name="effects_color_textbox" type="string">
64 我的效果颜色: 144 我的效果颜色:
65 </text> 145 </text>
66 <text length="1" name="seconds_textbox" type="string"> 146 <text length="1" name="minutes_textbox" type="string">
67 ç§ 147 分éŸ
68 </text> 148 </text>
69 <text length="1" name="crash_report_textbox" type="string"> 149 <text length="1" name="crash_report_textbox" type="string">
70 崩溃报告: 150 崩溃报告:
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
index b2c2863..4a2c365 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_graphics1.xml
@@ -1,5 +1,8 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<panel label="图åƒ" name="Display panel"> 2<panel label="图åƒ" name="Display panel">
3 <text name="Display_textbox">
4 显示模å¼:
5 </text>
3 <button label="?" name="GraphicsPreferencesHelpButton"/> 6 <button label="?" name="GraphicsPreferencesHelpButton"/>
4 <check_box label="在窗å£ä¸­è¿è¡Œ" name="windowed mode"/> 7 <check_box label="在窗å£ä¸­è¿è¡Œ" name="windowed mode"/>
5 <text_editor name="FullScreenInfo"> 8 <text_editor name="FullScreenInfo">
@@ -10,19 +13,28 @@
10 </text> 13 </text>
11 <combo_box name="windowsize combo"> 14 <combo_box name="windowsize combo">
12 <combo_item name="640x480"> 15 <combo_item name="640x480">
13 640x480 16 640 × 480
14 </combo_item> 17 </combo_item>
15 <combo_item name="800x600"> 18 <combo_item name="800x600">
16 800x600 19 800 × 600
17 </combo_item> 20 </combo_item>
18 <combo_item name="720x480"> 21 <combo_item name="720x480">
19 720x480 (NTSC) 22 720 × 480 (NTSC)
20 </combo_item> 23 </combo_item>
21 <combo_item name="768x576"> 24 <combo_item name="768x576">
22 768x576 (PAL) 25 768 × 576 (PAL)
23 </combo_item> 26 </combo_item>
24 <combo_item name="1024x768"> 27 <combo_item name="1024x768">
25 1024x768 28 1024 × 768
29 </combo_item>
30 <combo_item name="1280x720">
31 1280 × 720 (HDV720)
32 </combo_item>
33 <combo_item name="1440x1080">
34 1440 × 1080 (HDV1080)
35 </combo_item>
36 <combo_item name="1920x1080">
37 1920 × 1080 (HD1080)
26 </combo_item> 38 </combo_item>
27 </combo_box> 39 </combo_box>
28 <text name="DisplayResLabel"> 40 <text name="DisplayResLabel">
@@ -40,20 +52,20 @@
40 5:4 (1280x1024 液晶显示器) 52 5:4 (1280x1024 液晶显示器)
41 </combo_item> 53 </combo_item>
42 <combo_item name="8:5(Widescreen)"> 54 <combo_item name="8:5(Widescreen)">
43 8:5 (宽å±) 55 8:5 (宽å±å¹•)
44 </combo_item> 56 </combo_item>
45 <combo_item name="16:9(Widescreen)"> 57 <combo_item name="16:9(Widescreen)">
46 16:9 (宽å±å¹•) 58 16:9 (宽å±å¹•)
47 </combo_item> 59 </combo_item>
48 </combo_box> 60 </combo_box>
49 <check_box label="自动检测" name="aspect_auto_detect"/> 61 <check_box label="自动检测" name="aspect_auto_detect"/>
50 <text name="HigherText"> 62 <text name="textbox">
51 è´¨é‡å’Œ 63 性能
52 </text> 64 </text>
53 <text name="QualityText" width="95"> 65 <text name="HigherText2">
54 性能: 66 图åƒè´¨é‡
55 </text> 67 </text>
56 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false" bottom="-86" drop_shadow_visible="true" enabled="true" follows="left|top" font="SansSerifSmall" h_pad="0" halign="left" height="12" hidden="false" left="115" length="1" mouse_opaque="true" name="FasterText" type="string" v_pad="0" width="80"> 68 <text name="FasterText">
57 æ›´å¿« 69 æ›´å¿«
58 </text> 70 </text>
59 <text name="ShadersPrefText"> 71 <text name="ShadersPrefText">
@@ -68,9 +80,6 @@
68 <text name="ShadersPrefText4"> 80 <text name="ShadersPrefText4">
69 最高 81 最高
70 </text> 82 </text>
71 <text name="HigherText2">
72 更高
73 </text>
74 <text name="QualityText2"> 83 <text name="QualityText2">
75 è´¨é‡ 84 è´¨é‡
76 </text> 85 </text>
@@ -87,26 +96,31 @@
87 <text name="ReflectionDetailText"> 96 <text name="ReflectionDetailText">
88 å射细节: 97 å射细节:
89 </text> 98 </text>
90 <radio_group name="ReflectionDetailRadio"> 99 <combo_box name="ReflectionDetailCombo">
91 <radio_item name="0"> 100 <combo_item name="0">
92 地é¢å’Œæ ‘木 101 地é¢å’Œæ ‘木
93 </radio_item> 102 </combo_item>
94 <radio_item name="1"> 103 <combo_item name="1">
95 所有é™æ€ç‰©ä½“ 104 所有é™æ€ç‰©ä½“
96 </radio_item> 105 </combo_item>
97 <radio_item name="2"> 106 <combo_item name="2">
98 所有化身和物体 107 所有化身和物体
99 </radio_item> 108 </combo_item>
100 <radio_item name="3"> 109 <combo_item name="3">
101 一切东西 110 一切东西
102 </radio_item> 111 </combo_item>
103 </radio_group> 112 </combo_box>
113
104 <text name="AvatarRenderingText" width="128"> 114 <text name="AvatarRenderingText" width="128">
105 化身渲染: 115 化身渲染:
106 </text> 116 </text>
107 <check_box label="化身替身" name="AvatarImpostors" width="256"/> 117 <check_box label="化身替身" name="AvatarImpostors" width="256"/>
108 <check_box label="硬件 Skinning" name="AvatarVertexProgram" width="256"/> 118 <check_box label="硬件 Skinning" name="AvatarVertexProgram" width="256"/>
109 <check_box label="化身衣物效果" name="AvatarCloth" width="256"/> 119 <check_box label="化身衣物效果" name="AvatarCloth" width="256"/>
120 <slider name="AvatarMaxVisible" label="éžæ›¿èº«æœ€å¤š (å):" />
121 <text name="LimitsText">
122 é™åˆ¶:
123 </text>
110 <text name="DrawDistanceMeterText1" width="128"> 124 <text name="DrawDistanceMeterText1" width="128">
111 m 125 m
112 </text> 126 </text>
@@ -149,29 +163,30 @@
149 <text name="LightingDetailText"> 163 <text name="LightingDetailText">
150 光照细节: 164 光照细节:
151 </text> 165 </text>
152 <radio_group name="LightingDetailRadio"> 166 <combo_box name="LightingDetailCombo">
153 <radio_item name="SunMoon"> 167 <combo_item name="0">
154 仅有日月光效 168 仅有日月光效
155 </radio_item> 169 </combo_item>
156 <radio_item name="LocalLights"> 170 <combo_item name="1">
157 附近的ç¯å…‰ 171 附近的ç¯å…‰
158 </radio_item> 172 </combo_item>
159 </radio_group> 173 </combo_box>
160 <text name="TerrainDetailText"> 174 <text name="TerrainDetailText">
161 地é¢ç»†èŠ‚: 175 地é¢ç»†èŠ‚:
162 </text> 176 </text>
163 <radio_group name="TerrainDetailRadio"> 177 <combo_box name="TerrainDetailCombo">
164 <radio_item name="0"> 178 <combo_item name="0">
165 低 179 低
166 </radio_item> 180 </combo_item>
167 <radio_item name="2"> 181 <combo_item name="1">
168 高 182 高
169 </radio_item> 183 </combo_item>
170 </radio_group> 184 </combo_box>
185
171 <button label="建议设置" name="Defaults"/> 186 <button label="建议设置" name="Defaults"/>
172 <button label="硬件选项" label_selected="硬件选项" name="GraphicsHardwareButton"/> 187 <button label="硬件选项" label_selected="硬件选项" name="GraphicsHardwareButton"/>
173 <string hidden="true" name="resolution_format"> 188 <string hidden="true" name="resolution_format">
174 [RES_X] x [RES_Y] 189 [RES_X] × [RES_Y]
175 </string> 190 </string>
176 <string hidden="true" name="aspect_ratio_text"> 191 <string hidden="true" name="aspect_ratio_text">
177 [NUM]:[DEN] 192 [NUM]:[DEN]
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_im.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_im.xml
index 8fd8054..45d6e78 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_preferences_im.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_im.xml
@@ -1,5 +1,8 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel label="å³æ—¶æ¶ˆæ¯" name="im"> 2<panel label="èŠå¤©è®°å½•å’Œéšç§" name="im">
3 <text name="Logging:">
4 èŠå¤©è®°å½•:
5 </text>
3 <text type="string" length="1" name="text_box"> 6 <text type="string" length="1" name="text_box">
4 我的在线状æ€: 7 我的在线状æ€:
5 </text> 8 </text>
@@ -11,8 +14,6 @@
11 <text name="log_in_to_change"> 14 <text name="log_in_to_change">
12 登陆åŽæ›´æ”¹ 15 登陆åŽæ›´æ”¹
13 </text> 16 </text>
14 <check_box label="å‘é€å³æ—¶æ¶ˆæ¯è‡³ç”µå­é‚®ä»¶([EMAIL])" name="send_im_to_email" />
15 <check_box label="本地èŠå¤©ä¸­åŒ…å«å³æ—¶é€šä¿¡æ¯" name="include_im_in_chat_console" />
16 <check_box label="在å³æ—¶æ¶ˆæ¯ä¸­æ˜¾ç¤ºæ—¶é—´" name="show_timestamps_check" /> 17 <check_box label="在å³æ—¶æ¶ˆæ¯ä¸­æ˜¾ç¤ºæ—¶é—´" name="show_timestamps_check" />
17 <check_box 18 <check_box
18 label="显示好å‹ä¸Šçº¿é€šçŸ¥" 19 label="显示好å‹ä¸Šçº¿é€šçŸ¥"
@@ -20,11 +21,21 @@
20 <check_box label="ä¿å­˜å³æ—¶é€šä¿¡è®°å½•åˆ°æˆ‘的电脑上" name="log_instant_messages" /> 21 <check_box label="ä¿å­˜å³æ—¶é€šä¿¡è®°å½•åˆ°æˆ‘的电脑上" name="log_instant_messages" />
21 <check_box label="ä¿å­˜å¯¹è¯è®°å½•åˆ°æˆ‘的电脑上" name="log_chat" /> 22 <check_box label="ä¿å­˜å¯¹è¯è®°å½•åˆ°æˆ‘的电脑上" name="log_chat" />
22 <check_box label="显示上次å³æ—¶é€šä¿¡çš„结尾" name="log_show_history" /> 23 <check_box label="显示上次å³æ—¶é€šä¿¡çš„结尾" name="log_show_history" />
23 <button label="更改路径" label_selected="更改路径" name="log_path_button" /> 24 <text name="Log location:">
25 记录ä½ç½®:
26 </text>
27 <button label="更改ä½ç½®" name="log_path_button" />
28 <text name="Privacy:">
29 éšç§:
30 </text>
24 <text 31 <text
25 name="text_box3"> 32 name="text_box3">
26 忙碌模å¼çš„自动回å¤: 33 忙碌模å¼çš„自动回å¤:
27 </text> 34 </text>
35 <button
36 label="å³æ—¶æ¶ˆæ¯è‡ªåŠ¨å›žå¤é€‰é¡¹"
37 name="busy_adv_btn"
38 tool_tip="å³æ—¶æ¶ˆæ¯è‡ªåŠ¨å›žå¤é€‰é¡¹" />
28 <text 39 <text
29 name="text_box4"> 40 name="text_box4">
30 èŠå¤©è®°å½•é€‰é¡¹: 41 èŠå¤©è®°å½•é€‰é¡¹:
@@ -48,5 +59,4 @@
48 label="显示时间时包括日期" 59 label="显示时间时包括日期"
49 name="log_date_timestamp" /> 60 name="log_date_timestamp" />
50 61
51
52</panel> 62</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_input.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_input.xml
index 19d060f..74e38b2 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_preferences_input.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_input.xml
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<panel label="输入和摄åƒå¤´" name="Input panel"> 2<panel label="输入和摄åƒæœº" name="Input panel">
3 <text length="1" name=" Mouselook Options:" type="string"> 3 <text length="1" name=" Mouselook Options:" type="string">
4 第一人称视角选项设置: 4 第一人称视角选项设置:
5 </text> 5 </text>
@@ -11,7 +11,7 @@
11 自动飞翔选项: 11 自动飞翔选项:
12 </text> 12 </text>
13 <check_box label="起飞/ç€é™†é€šè¿‡é”®ç›˜ä¸Š/下键控制" name="automatic_fly"/> 13 <check_box label="起飞/ç€é™†é€šè¿‡é”®ç›˜ä¸Š/下键控制" name="automatic_fly"/>
14 <text length="1" name=" Camera Options:" type="string"> 14 <text length="1" name="Camera Options:" type="string">
15 æ‘„åƒæœºé€‰é¡¹: 15 æ‘„åƒæœºé€‰é¡¹:
16 </text> 16 </text>
17 <text name="camera_fov_label"> 17 <text name="camera_fov_label">
@@ -20,11 +20,52 @@
20 <text name="Camera Follow Distance:"> 20 <text name="Camera Follow Distance:">
21 æ‘„åƒæœºè·Ÿéšè·ç¦»: 21 æ‘„åƒæœºè·Ÿéšè·ç¦»:
22 </text> 22 </text>
23 <check_box label="编辑物体时使用自动视角" name="edit_camera_movement" tool_tip="当进入和离开编辑模å¼æ—¶ï¼Œè‡ªåŠ¨ç§»åŠ¨æ‘„åƒå¤´"/> 23 <text
24 <check_box label="编辑外观时使用自动视角" name="appearance_camera_movement" tool_tip="在编辑外观时,摄åƒå¤´è‡ªåŠ¨å®šä½"/> 24 name="Camera Transition Time:">
25 æ‘„åƒæœºè¿‡æ¸¡æ—¶é—´:
26 </text>
27 <text
28 name="Camera Smoothing:">
29 æ‘„åƒæœºå¹³æ»‘:
30 </text>
31 <check_box label="编辑物体时使用自动视角" name="edit_camera_movement" tool_tip="当进入和离开编辑模å¼æ—¶ï¼Œè‡ªåŠ¨ç§»åŠ¨æ‘„åƒæœº"/>
32 <check_box label="编辑外观时使用自动视角" name="appearance_camera_movement" tool_tip="在编辑外观时,摄åƒæœºè‡ªåŠ¨å®šä½"/>
33 <check_box
34 label="ç¦ç”¨æ‘„åƒæœºé™åˆ¶"
35 name="Disable camera constraints"
36 tool_tip="ç¦ç”¨æ‘„åƒæœºé™åˆ¶ï¼Œä¾‹å¦‚è·ç¦»é™åˆ¶å’Œåœ°é¢é™åˆ¶" />
37 <check_box
38 label="ç¦ç”¨æœ€å°æ”¾å¤§è·ç¦»"
39 name="disable_min_zoom_check"
40 tool_tip="èšç„¦å…ƒä»¶æˆ–化身并拉近视角时,ç¦ç”¨æœ€å°è·ç¦»" />
25 <text name="text2"> 41 <text name="text2">
26 化身显示选项: 42 化身显示选项:
27 </text> 43 </text>
28 <check_box label="第一人称视角中,显示自己的化身" name="first_person_avatar_visible"/> 44 <check_box label="第一人称视角中,显示自己的化身" name="first_person_avatar_visible"/>
29 <button label="游æˆæ†è®¾ç½®" name="joystick_setup_button"/> 45 <button label="游æˆæ†è®¾ç½®" name="joystick_setup_button"/>
46
47 <text name="double_click_action_label">
48 åŒå‡»åŠ¨ä½œ:
49 </text>
50 <combo_box
51 name="double_click_action">
52 <combo_item name="None">
53 æ— 
54 </combo_item>
55 <combo_item name="Go">
56 <!--å‰å¾€-->自动寻路
57 </combo_item>
58 </combo_box>
59
60 <text name="go_action_label">
61 自动寻路方å¼:
62 </text>
63 <combo_box name="go_action">
64 <combo_item name="Move">
65 移动
66 </combo_item>
67 <combo_item name="Teleport">
68 瞬间移动
69 </combo_item>
70 </combo_box>
30</panel> 71</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_network.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_network.xml
index ccaf9a6..14184cd 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_preferences_network.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_network.xml
@@ -1,23 +1,252 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<panel label="网络" name="network"> 2<panel label="网络" name="network">
3 <tab_container
4 name="networktab2"
5 tab_min_width="50">
6
7 <panel
8 label="性能"
9 name="bandwidth_panel">
3 <text name="text_box"> 10 <text name="text_box">
4 最大带宽: 11 最大带宽:
5 </text> 12 </text>
13 <text name="Speed:">
14 </text>
6 <text name="text_box2"> 15 <text name="text_box2">
7 kbps (æ¯ç§’kbæ•°) 16 kbps (åƒä½æ¯ç§’)
17 </text>
18 <text name="Texture Fetching:">
19 æ质下载:
8 </text> 20 </text>
21 <check_box
22 label="使用 HTTP 获å–æè´¨ (实验性)"
23 name="http_texture_check" />
24 <check_box
25 label="通过é€æ¸å¢žåŠ æ绘è·ç¦»åŠ é€Ÿè½½å…¥"
26 name="speed_rez_check" />
27 <spinner
28 tool_tip="æ绘è·ç¦»å¢žåŠ ä¹‹é—´çš„å°†å„"
29 label="步进间隔:"
30 name="speed_rez_interval_spinner" />
31 <text
32 name="speed_rez_seconds_text">
33 秒
34 </text>
35 <text
36 name="Disk Cache:">
37 ç£ç›˜é«˜é€Ÿç¼“å­˜:
38 </text>
9 <text name="cache_size_label_l"> 39 <text name="cache_size_label_l">
10 ç£ç›˜é«˜é€Ÿç¼“存大å°: 40 大å°:
11 </text> 41 </text>
12 <text name="text_box5"> 42 <text name="text_box5">
13 兆字节 43 兆字节
14 </text> 44 </text>
15 <button label="清除缓存" name="clear_cache"/> 45 <button label="清除缓存" name="clear_disk_cache"/>
16 <text name="cache_location_label"> 46 <text name="cache_location_label">
17 ç£ç›˜ç¼“å­˜ä½ç½®: 47 ç£ç›˜ç¼“å­˜ä½ç½®:
18 </text> 48 </text>
19 <button label="设置" label_selected="设置" name="set_cache"/> 49 <button label="设置" label_selected="设置" name="set_disk_cache"/>
20 <button label="é‡ç½®" label_selected="设置" name="reset_cache"/> 50 <button label="é‡ç½®" label_selected="设置" name="reset_disk_cache"/>
21 <check_box label="自定义连接端å£" name="connection_port_enabled"/> 51 </panel>
52
53
54 <!-- PROXY SETTINGS PANEL -->
55
56
57 <panel
58 label="代ç†æœåŠ¡å™¨è®¾ç½®"
59 name="proxies">
60 <check_box
61 label="å¯ç”¨ XMLRPC 代ç†æœåŠ¡å™¨ (登入ã€åœŸåœ°ã€ä»¥åŠè´­ä¹°è´§å¸)"
62 name="xmlrpc_proxy_enabled" />
63 <text
64 name="xmlrpc_proxy_text_label">
65 地å€:
66 </text>
67 <line_editor
68 name="xmlrpc_proxy_editor"
69 tool_tip="希望使用的代ç†æœåŠ¡å™¨å称或 IP 地å€" />
70 <spinner
71 label="端å£å·:"
72 name="xmlrpc_proxy_port" />
73
74 <!-- SOCKS 5 PROXY -->
75
76 <check_box
77 label="å¯ç”¨ SOCKS 5 代ç†æœåŠ¡å™¨"
78 name="socks5_proxy_enabled" />
79 <text
80 name="socks5_host_label">
81 SOCKS 5 主机:
82 </text>
83 <line_editor
84 name="socks5_proxy_host"
85 tool_tip="希望使用的 SOCKS 5 代ç†æœåŠ¡å™¨å称或 IP 地å€e" />
86 <spinner
87 label="端å£å·:"
88 name="socks5_proxy_port" />
89 <text
90 name="socks5_auth_label">
91 SOCKS 5 身份验è¯:
92 </text>
93 <radio_group
94 name="socks5_auth">
95 <radio_item
96 name="None"
97 tool_tip="ä¸ä½¿ç”¨èº«ä»½éªŒè¯">
98 æ— 
99 </radio_item>
100 <radio_item
101 name="UserPass"
102 tool_tip="用户å / 密ç èº«ä»½éªŒè¯">
103 用户å / 密ç 
104 </radio_item>
105 </radio_group>
106 <text
107 name="socks5_username_label">
108 用户å:
109 </text>
110 <line_editor
111 name="socks5_proxy_username"
112 tool_tip="Socks 5代ç†æœåŠ¡å™¨çš„用户å" />
113
114 <text
115 name="socks5_password_label">
116 密ç :
117 </text>
118 <line_editor
119 name="socks5_proxy_password"
120 tool_tip="Socks 5代ç†æœåŠ¡å™¨çš„密ç " />
121
122 <text
123 name="http_proxy_label">
124 HTTP 代ç†æœåŠ¡å™¨:
125 </text>
126 <radio_group
127 name="socks5_http_proxy_type">
128 <radio_item
129 name="None"
130 tool_tip="ä¸ä½¿ç”¨ä»£ç†æœåŠ¡å™¨">
131 ä¸ä½¿ç”¨
132 </radio_item>
133 <radio_item
134 name="Socks"
135 tool_tip="HTTP 连接使用 Socks 5 代ç†æœåŠ¡å™¨">
136 SOCKS 5
137 </radio_item>
138 <radio_item
139 name="Web"
140 tool_tip="HTTP 连接使用 Web 代ç†æœåŠ¡å™¨">
141 Web
142 </radio_item>
143 </radio_group>
144 <text name="port_label">
145 传出连接:
146 </text>
147 <check_box label="自定义传出连接端å£" name="connection_port_enabled"
148 tool_tip="对传出连接使用自定义端å£"/>
22 <spinner label="端å£å·:" name="connection_port"/> 149 <spinner label="端å£å·:" name="connection_port"/>
150 </panel>
151
152
153 <!-- WEB BROWSER PANEL -->
154
155
156 <panel
157 label="Web æµè§ˆå™¨"
158 name="web_browser">
159 <text name="internal_browser_label">
160 内建æµè§ˆå™¨:
161 </text>
162 <button
163 label="清除内部æµè§ˆå™¨ç¼“å­˜"
164 name="clear_web_cache" />
165 <text type="string" name="cookie_label" >
166 Cookie:
167 </text>
168 <check_box label="ä»Žç½‘ç«™æŽ¥å— cookie"
169 name="cookies_enabled" />
170 <button
171 label="清除 Cookie"
172 name="clear_ookies" />
173 <text name="proxy_label">
174 代ç†æœåŠ¡å™¨:
175 </text>
176 <check_box
177 label="å¯ç”¨ç½‘页代ç†æœåŠ¡å™¨"
178 name="web_proxy_enabled" />
179 <text name="proxy_text_label">
180 地å€:
181 </text>
182 <line_editor
183 name="web_proxy_editor"
184 tool_tip="你想使用的代ç†æœåŠ¡å™¨çš„å称或者 IP 地å€" />
185 <spinner
186 label="端å£å·:"
187 name="web_proxy_port" />
188 <text name="open_links_label">
189 打开链接:
190 </text>
191 <radio_group name="use_external_browser">
192 <radio_item
193 name="external"
194 tool_tip="使用系统默认网络æµè§ˆå™¨æ‰“开帮助ã€ç½‘页链接, 等等。\n若全å±æ˜¾ç¤ºåˆ™ä¸æŽ¨è使用。">
195 使用外部æµè§ˆå™¨(Firefox, Safari, Internet Explorer)
196 </radio_item>
197 <radio_item
198 name="internal"
199 tool_tip="使用内部æµè§ˆå™¨æ‰“开帮助ã€ç½‘页链接, 等等。这个æµè§ˆå™¨ä¼šåœ¨ Imprudence 中打开一个新窗å£ã€‚">
200 使用内建æµè§ˆå™¨
201 </radio_item>
202 </radio_group>
203 <text>
204 æµè§ˆå™¨ä¸»é¡µ:
205 </text>
206 <line_editor name="home_page" tool_tip="首次打开第二人生æµè§ˆå™¨æ—¶çš„æµè§ˆé¡µé¢" />
207 <text>
208 代ç†æœåŠ¡å™¨é…ç½®:
209 </text>
210 <check_box label="内部æµè§ˆå™¨ä½¿ç”¨ä»£ç†æœåŠ¡å™¨" name="proxy_enabled"
211 tool_tip="请为因特网网络æµè§ˆå™¨æŒ‡å®šä»£ç†æœåŠ¡å™¨é…置。" />
212 <text>
213 代ç†æœåŠ¡å™¨:
214 </text>
215 <line_editor name="proxy_address" tool_tip="请输入代ç†æœåŠ¡å™¨çš„å称或IP地å€" />
216 <text>
217 端å£ï¼š
218 </text>
219 <line_editor name="proxy_port" />
220 <text>
221 对以下内容ä¸ä½¿ç”¨ä»£ç†:
222 </text>
223 <line_editor name="proxy_exclusions"
224 tool_tip="请输入ä¸æƒ³ä½¿ç”¨ä»£ç†æœåŠ¡å™¨æ›¿æ¢çš„å称或IP地å€" />
225 <check_box label="在元件上显示网页 (实验性功能, 需è¦é‡å¯)"
226 name="web_pages_on_prims_check" />
227 <text>
228 安全地å€ï¼š
229(登陆察看)
230 </text>
231 <button label="添加" name="add_trusted" />
232 <line_editor name="trusted_site_entry" tool_tip="添加到安全åå•ä¸­çš„网络地å€" />
233 <button label="移除" name="rem_trusted" />
234 <text name="search_url_label">
235 全部 (Web) æœç´¢æ ‡ç­¾ URL:
236 </text>
237 <line_editor
238 name="world_search_editor"
239 tool_tip="您想使用的世界æœç´¢å¼•æ“Ž" />
240 <button
241 label="é‡ç½®"
242 tool_tip="é‡ç½®ä¸ºé»˜è®¤å€¼"
243 name="world_search_reset_default" />
244 <button
245 label="清除"
246 tool_tip="清除字段"
247 name="world_search_clear" />
248 </panel>
249 </tab_container>
250
251</panel>
23</panel> 252</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_popups.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_popups.xml
index eeeaf87..48a3e4c 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_preferences_popups.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_popups.xml
@@ -4,15 +4,15 @@
4 name="popups" 4 name="popups"
5 title="弹出窗å£"> 5 title="弹出窗å£">
6 <text name="dont_show_label"> 6 <text name="dont_show_label">
7 ä¸æ˜¾ç¤ºè¿™äº›å¼¹å‡ºçª—å£: 7 ä¸æ˜¾ç¤ºè¿™äº›æ示:
8 </text> 8 </text>
9 <scroll_list 9 <scroll_list
10 name="disabled_popups" /> 10 name="disabled_popups" />
11 <button 11 <button
12 label="å¯ç”¨è¯¥å¼¹å‡ºçª—å£" 12 label="å¯ç”¨è¯¥æ示"
13 name="enable_popup" /> 13 name="enable_popup" />
14 <text name="show_label"> 14 <text name="show_label">
15 显示这些弹出窗å£: 15 显示这些æ示:
16 </text> 16 </text>
17 <scroll_list 17 <scroll_list
18 name="enabled_popups" /> 18 name="enabled_popups" />
@@ -26,14 +26,33 @@
26 <check_box 26 <check_box
27 label="接å—åŽè‡ªåŠ¨æ‰“å¼€" 27 label="接å—åŽè‡ªåŠ¨æ‰“å¼€"
28 name="show_new_inventory" /> 28 name="show_new_inventory" />
29 <check_box label="在库存中自动显示新接收的物体" 29 <check_box label="在库存中自动显示新接收的物å"
30 name="show_in_inventory" /> 30 name="show_in_inventory" />
31 <button width="225" 31 <button width="225"
32 label="显示所有的“下次ä¸å†æ˜¾ç¤ºâ€å¯¹è¯æ¡†..." 32 label="显示所有的æ示"
33 name="reset_dialogs_btn" 33 name="reset_dialogs_btn"
34 tool_tip="å¯ç”¨æ‰€æœ‰å¯é€‰çš„弹出窗å£åŠâ€œé¦–次使用â€æ示。" /> 34 tool_tip="å¯ç”¨æ‰€æœ‰å¯é€‰çš„弹出窗å£åŠâ€œé¦–次使用â€æ示。" />
35 <button width="225" 35 <button width="225"
36 label="éšè—所有的“下次ä¸å†æ˜¾ç¤ºâ€å¯¹è¯æ¡†..." 36 label="éšè—所有的æ示"
37 name="skip_dialogs_btn" 37 name="skip_dialogs_btn"
38 tool_tip="ç¦ç”¨æ‰€æœ‰å¯é€‰çš„弹出窗å£åŠâ€œé¦–次使用â€æ示。" /> 38 tool_tip="ç¦ç”¨æ‰€æœ‰å¯é€‰çš„弹出窗å£åŠâ€œé¦–次使用â€æ示。" />
39 <text name="radar_text">
40 èŠå¤©é€šçŸ¥:
41 </text>
42 <text
43 name="When an avatar enters:">
44 当其他化身:
45 </text>
46 <check_box
47 label="进入èŠå¤©èŒƒå›´æ—¶"
48 name="mini_map_notify_chat" />
49 <check_box
50 label="进入区域时"
51 name="mini_map_notify_sim" />
52 <check_box
53 label="显示好å‹ä¸Šçº¿é€šçŸ¥"
54 name="friends_online_notify_checkbox" />
55<check_box
56 label="收到或付出 [CURRENCY] æ—¶æ示"
57 name="notify_money_change_checkbox" />
39</panel> 58</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_skins.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_skins.xml
index 70e0bc2..69b214c 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_preferences_skins.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_skins.xml
@@ -1,12 +1,22 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel label="皮肤" name="Skins panel"> 2<panel label="皮肤" name="Skins panel">
3 <text name="muting_text"> 3 <text name="muting_text">
4 选择皮肤 (需è¦é‡å¯åŠ¨): 4 选择皮肤:
5 </text> 5 </text>
6 <radio_group name="skin_selection"> 6 <text
7 <radio_item name="default">默认</radio_item> 7 name="requires_restart_text">
8 <radio_item name="silver">Silver</radio_item> 8 (需è¦é‡å¯åŠ¨; ä¿¡æ¯ä¸Žä½œè€…资料请å‚è§çš®è‚¤æ–‡ä»¶å¤¹)
9 </radio_group> 9 </text>
10 <radio_group name="skin_selection">
11 <radio_item name="default">默认</radio_item>
12 </radio_group>
13 <text
14 name="skin_current_text">
15 其他皮肤:
16 </text>
17 <button
18 name="save_skin"
19 label="ä¿å­˜" />
10</panel> 20</panel>
11 21
12 22
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_voice.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_voice.xml
index a41be19..9691aa6 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_preferences_voice.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_voice.xml
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" height="408" hidden="false" label="语音èŠå¤©" left="102" mouse_opaque="true" name="chat" width="517"> 2<panel label="语音èŠå¤©" name="voice_chat">
3 <text_editor name="voice_unavailable"> 3 <text_editor name="voice_unavailable">
4 语音èŠå¤©ä¸å¯ç”¨ã€‚ 4 语音èŠå¤©ä¸å¯ç”¨ã€‚
5 </text_editor> 5 </text_editor>
@@ -13,14 +13,14 @@
13 </radio_item> 13 </radio_item>
14 </radio_group> 14 </radio_group>
15 <text name="push_to_talk_heading"> 15 <text name="push_to_talk_heading">
16 å³æŒ‰å³è¯´ 16 按键通è¯
17 </text> 17 </text>
18 <text_editor name="voice_chat_description" width="465"> 18 <text_editor name="voice_chat_description" width="465">
19 å³æŒ‰å³è¯´å…许你控制什么时候传é€å£°éŸ³ã€‚在切æ¢æ¨¡å¼ä¸­ï¼ŒæŒ‰ä¸‹å¹¶é‡Šæ”¾å³æŒ‰å³è¯´é”®æ¥åˆ‡æ¢éº¦å…‹é£Žå¼€å…³ã€‚ä¸åœ¨åˆ‡æ¢æ¨¡å¼çš„时候,麦克风仅在å³æŒ‰å³è¯´é”®æŒ‰ä¸‹æ—¶æ‰æœ‰æ•ˆã€‚ 19 按键通è¯å…许你控制什么时候传é€å£°éŸ³ã€‚在切æ¢æ¨¡å¼ä¸­ï¼ŒæŒ‰ä¸‹å¹¶é‡Šæ”¾å³æŒ‰å³è¯´é”®æ¥åˆ‡æ¢éº¦å…‹é£Žå¼€å…³ã€‚ä¸åœ¨åˆ‡æ¢æ¨¡å¼çš„时候,麦克风仅在å³æŒ‰å³è¯´é”®æŒ‰ä¸‹æ—¶æ‰æœ‰æ•ˆã€‚
20 </text_editor> 20 </text_editor>
21 <check_box label="以切æ¢æ¨¡å¼ä½¿ç”¨å³æŒ‰å³è¯´" name="push_to_talk_toggle_check"/> 21 <check_box label="以切æ¢æ¨¡å¼ä½¿ç”¨æŒ‰é”®é€šè¯" name="push_to_talk_toggle_check"/>
22 <text name="push_to_talk_label" type="string"> 22 <text name="push_to_talk_label" type="string">
23 å³æŒ‰å³è¯´åˆ‡æ¢é”®: 23 按键通è¯åˆ‡æ¢é”®:
24 </text> 24 </text>
25 <line_editor name="modifier_combo"/> 25 <line_editor name="modifier_combo"/>
26 <button label="设置按键" name="set_voice_hotkey_button"/> 26 <button label="设置按键" name="set_voice_hotkey_button"/>
@@ -34,4 +34,5 @@
34 <text_editor bottom_delta="-45" height="48" name="device_settings_text"> 34 <text_editor bottom_delta="-45" height="48" name="device_settings_text">
35 *注æ„*: è¿è¡Œè®¾å¤‡é€‰é¡¹æˆ–语音设置å‘导将临时将您从语音èŠå¤©æ–­å¼€ï¼Œå¹¶ä¸”所作的更改将立å³ç”Ÿæ•ˆã€‚ 35 *注æ„*: è¿è¡Œè®¾å¤‡é€‰é¡¹æˆ–语音设置å‘导将临时将您从语音èŠå¤©æ–­å¼€ï¼Œå¹¶ä¸”所作的更改将立å³ç”Ÿæ•ˆã€‚
36 </text_editor> 36 </text_editor>
37 <button label="é‡æ–°è¿žæŽ¥åˆ°è¯­éŸ³èŠå¤©" name="reset_voice" />
37</panel> 38</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_preferences_web.xml b/linden/indra/newview/skins/default/xui/zh/panel_preferences_web.xml
index e965534..ca07b20 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_preferences_web.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_preferences_web.xml
@@ -2,20 +2,17 @@
2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom" 2<panel border="true" bottom="-409" enabled="true" follows="left|top|right|bottom"
3 height="408" hidden="false" label="Web" left="102" mouse_opaque="true" 3 height="408" hidden="false" label="Web" left="102" mouse_opaque="true"
4 name="web" width="517"> 4 name="web" width="517">
5 <text name="cache_size_label_l">
6 æµè§ˆå™¨ç¼“å­˜:
7 </text>
8 <button 5 <button
9 label="现在清除" 6 label="清除内部æµè§ˆå™¨ç¼“å­˜"
10 name="clear_cache" /> 7 name="clear_cache" />
11 <text type="string" name="cookie_label" > 8 <text type="string" name="cookie_label" >
12 Cookie: 9 Cookie:
13 </text> 10 </text>
14 <check_box label="ä»Žç½‘ç«™æŽ¥å— cookie" 11 <check_box label="ä»Žç½‘ç«™æŽ¥å— cookie"
15 name="cookies_enabled" /> 12 name="cookies_enabled" />
16 <button 13 <button
17 label="现在清除" 14 label="清除 Cookie"
18 name="clear_cookies" /> 15 name="clear_ookies" />
19 <text name="proxy_label"> 16 <text name="proxy_label">
20 代ç†æœåŠ¡å™¨: 17 代ç†æœåŠ¡å™¨:
21 </text> 18 </text>
@@ -39,7 +36,7 @@
39 </radio_item> 36 </radio_item>
40 <radio_item 37 <radio_item
41 name="internal" 38 name="internal"
42 tool_tip="使用内部æµè§ˆå™¨æ‰“开帮助ã€ç½‘页链接, 等等。这个æµè§ˆå™¨ä¼šåœ¨ç¬¬äºŒäººç”Ÿä¸­æ‰“开一个新窗å£ã€‚"> 39 tool_tip="使用内部æµè§ˆå™¨æ‰“开帮助ã€ç½‘页链接, 等等。这个æµè§ˆå™¨ä¼šåœ¨ Imprudence 中打开一个新窗å£ã€‚">
43 使用内建æµè§ˆå™¨ 40 使用内建æµè§ˆå™¨
44 </radio_item> 41 </radio_item>
45 </radio_group> 42 </radio_group>
@@ -85,4 +82,19 @@
85 <button label="添加" name="add_trusted" /> 82 <button label="添加" name="add_trusted" />
86 <line_editor name="trusted_site_entry" tool_tip="添加到安全åå•ä¸­çš„网络地å€" /> 83 <line_editor name="trusted_site_entry" tool_tip="添加到安全åå•ä¸­çš„网络地å€" />
87 <button label="移除" name="rem_trusted" /> 84 <button label="移除" name="rem_trusted" />
85 <text name="cache_size_label_l">
86 全部 (Web) æœç´¢æ ‡ç­¾ URL:
87 </text>
88 <line_editor
89 name="world_search_editor"
90 tool_tip="您想使用的世界æœç´¢å¼•æ“Ž" />
91 <button
92 label="é‡ç½®"
93 tool_tip="é‡ç½®ä¸ºé»˜è®¤å€¼"
94 name="world_search_reset_default" />
95 <button
96 label="清除"
97 tool_tip="清除字段"
98 name="world_search_clear" />
99
88</panel> 100</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_radar.xml b/linden/indra/newview/skins/default/xui/zh/panel_radar.xml
new file mode 100644
index 0000000..db4fc89
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/panel_radar.xml
@@ -0,0 +1,104 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<!-- Note: panel rect (size) is specified in floater_mini_map.xml --><panel
3 name="RadarPanel"
4 label="Radar">
5 <string name="no_one_near">
6 范围内无化身
7 </string>
8 <string name="is_muted">
9 (å·²å±è”½)
10 </string>
11 <string name="is_typing">
12 (打字中)
13 </string>
14 <string name="entering_chat_range">
15 [NAME] 进入了èŠå¤©èŒƒå›´ ([DISTANCE]m)
16 </string>
17 <string name="entering_sim_range">
18 [NAME] 进入了当å‰åŒºåŸŸ ([DISTANCE]m)
19 </string>
20 <string name="avatars_in_singular">
21 [COUNT] å化身于
22 </string>
23 <string name="avatars_in_plural">
24 [COUNT] å化身于
25 </string>
26 <string name="unknown_avatar">
27 (未知)
28 </string>
29 <text name="avatar_count" left="5">
30 0 å化身于
31 </text>
32 <text name="meters" left_delta="100">
33 m内
34 </text>
35 <tab_container name="radar_tab_container">
36 <panel
37 name="avatar_tab"
38 label="化身">
39 <button
40 name="im_btn"
41 label="èŠå¤©/呼å«"
42 tool_tip="打开å³æ—¶é€šä¿¡ä¼šè¯" />
43 <button
44 name="profile_btn"
45 label="档案"
46 tool_tip="显示图片ã€ç¤¾å›¢å’Œå…¶ä»–ä¿¡æ¯" />
47 <button
48 name="offer_teleport_btn"
49 label="邀请瞬移"
50 tool_tip="邀请此人瞬间移动到你的ä½ç½®" />
51 <button
52 name="teleport_btn"
53 label="瞬移到..."
54 tool_tip="瞬间移动到他人的ä½ç½®" />
55 <button
56 name="track_btn"
57 label="追踪"
58 tool_tip="创建信标追踪å¯ä»¥åœ¨åœ°å›¾ä¸Šæ˜¾ç¤ºçš„好å‹" />
59 <button
60 name="invite_btn"
61 label="邀请..."
62 tool_tip="邀请加入社团" />
63 <button
64 name="add_btn"
65 label="添加..."
66 tool_tip="邀请其他居民æˆä¸ºä½ çš„好å‹" />
67 </panel>
68 <panel
69 name="estate_tab"
70 label="地产">
71 <button
72 name="cam_btn"
73 label="èšç„¦..." />
74 <button
75 name="freeze_btn"
76 label="冻结..." />
77 <button
78 name="eject_btn"
79 label="驱é€..." />
80 <button
81 name="ban_btn"
82 label="å°ç¦..." />
83 <button
84 name="mute_btn"
85 label="å±è”½..." />
86 <button
87 name="unmute_btn"
88 label="解除å±è”½..." />
89 <button
90 name="ar_btn"
91 label="报告..." />
92 </panel>
93 </tab_container>
94
95 <scroll_list name="RadarList">
96 <column
97 name="avatar_name"
98 label="å称" />
99 <column
100 name="avatar_distance"
101 label="è·ç¦»" />
102 </scroll_list>
103</panel>
104
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_region_general.xml b/linden/indra/newview/skins/default/xui/zh/panel_region_general.xml
index 186d27e..146c1f9 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_region_general.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_region_general.xml
@@ -36,6 +36,7 @@
36 <button label="?" name="agent_limit_help"/> 36 <button label="?" name="agent_limit_help"/>
37 <spinner label="é¢å¤–物体因数" name="object_bonus_spin"/> 37 <spinner label="é¢å¤–物体因数" name="object_bonus_spin"/>
38 <button label="?" name="object_bonus_help"/> 38 <button label="?" name="object_bonus_help"/>
39 <spinner label="最å°è´¦æˆ·å¹´é¾„" name="minimum_agent_age"/>
39 <text label="æˆäººå†…容" name="access_text"> 40 <text label="æˆäººå†…容" name="access_text">
40 分级: 41 分级:
41 </text> 42 </text>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_region_open_region_settings.xml b/linden/indra/newview/skins/default/xui/zh/panel_region_open_region_settings.xml
new file mode 100644
index 0000000..0c63782
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/panel_region_open_region_settings.xml
@@ -0,0 +1,67 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel
3 label="区域设置"
4 name="RegionSettings">
5 <spinner
6 label="默认æ绘è·ç¦»"
7 name="draw_distance" />
8 <check_box
9 label="强制æ绘è·ç¦»"
10 name="force_draw_distance" />
11 <spinner
12 label="最大拖动è·ç¦»"
13 name="max_drag_distance" />
14 <spinner
15 label="最大元件尺寸"
16 name="max_prim_scale" />
17 <spinner
18 label="最å°å…ƒä»¶å°ºå¯¸"
19 name="min_prim_scale" />
20 <spinner
21 label="最大物ç†å…ƒä»¶å°ºå¯¸"
22 name="max_phys_prim_scale" />
23 <spinner
24 label="最大窟窿尺寸"
25 name="max_hollow_size" />
26 <spinner
27 label="最å°çªŸçª¿å°ºå¯¸"
28 name="min_hole_size" />
29 <spinner
30 label="最大链接数"
31 name="max_link_count" />
32 <spinner
33 label="最大物ç†é“¾æŽ¥æ•°"
34 name="max_link_count_phys" />
35 <spinner
36 label="最大库存物å“转让数"
37 name="max_inventory_items_transfer" />
38 <spinner
39 label="显示标签"
40 name="show_tags" />
41 <spinner
42 label="最大社团数"
43 name="max_groups" />
44 <check_box
45 label="渲染水é¢"
46 name="render_water" />
47 <check_box
48 label="å…许迷你地图"
49 name="allow_minimap" />
50 <check_box
51 label="å…许物ç†å…ƒä»¶"
52 name="allow_physical_prims" />
53 <check_box
54 label="å¯ç”¨æœªæˆå¹´æ¨¡å¼"
55 name="enable_teen_mode" />
56 <check_box
57 label="å¯ç”¨å»ºé€ å°ºå¯¸é™åˆ¶"
58 name="enforce_max_build" />
59 <check_box
60 label="å…è®¸åœ°å— WindLight 设置"
61 name="allow_parcel_windlight" />
62 <button
63 label="应用"
64 name="apply_ors_btn" />
65</panel>
66
67
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_speaker_controls.xml b/linden/indra/newview/skins/default/xui/zh/panel_speaker_controls.xml
index 0dce0f2..7e39b42 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_speaker_controls.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_speaker_controls.xml
@@ -1,16 +1,16 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?> 1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<panel name="active_speakers_panel"> 2<panel name="active_speakers_panel">
3 <string name="moderator_label"> 3 <string name="moderator_label">
4 (管ç†å‘˜) 4 (主æŒäºº)
5 </string> 5 </string>
6 <layout_stack name="panels"> 6 <layout_stack name="panels">
7 <layout_panel name="moderation_mode_panel"> 7 <layout_panel name="moderation_mode_panel">
8 <combo_box name="moderation_mode"> 8 <combo_box name="moderation_mode">
9 <combo_item name="OpenVoice"> 9 <combo_item name="OpenVoice">
10 声音 ç¼ºçœ å¼€ 10 语音默认开放
11 </combo_item> 11 </combo_item>
12 <combo_item name="ModeratedVoice"> 12 <combo_item name="ModeratedVoice">
13 声音 ç¼ºçœ å…³ 13 语音默认关闭
14 </combo_item> 14 </combo_item>
15 </combo_box> 15 </combo_box>
16 </layout_panel> 16 </layout_panel>
@@ -34,7 +34,7 @@
34 å…许语音èŠå¤© 34 å…许语音èŠå¤©
35 </check_box> 35 </check_box>
36 <check_box name="moderator_allow_text"> 36 <check_box name="moderator_allow_text">
37 å…许文本èŠå¤© 37 å…许文字èŠå¤©
38 </check_box> 38 </check_box>
39 </layout_panel> 39 </layout_panel>
40 </layout_stack> 40 </layout_stack>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_status_bar.xml b/linden/indra/newview/skins/default/xui/zh/panel_status_bar.xml
index 0f65852..d79feb0 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_status_bar.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_status_bar.xml
@@ -21,8 +21,8 @@
21 <button label="" label_selected="" name="restrictpush" tool_tip="ä¸å…许推动"/> 21 <button label="" label_selected="" name="restrictpush" tool_tip="ä¸å…许推动"/>
22 <button label="" label_selected="" name="status_no_voice" tool_tip="此处语音ä¸å¯ç”¨"/> 22 <button label="" label_selected="" name="status_no_voice" tool_tip="此处语音ä¸å¯ç”¨"/>
23 <button label="" label_selected="" name="buyland" tool_tip="è´­ä¹°è¿™å—土地"/> 23 <button label="" label_selected="" name="buyland" tool_tip="è´­ä¹°è¿™å—土地"/>
24 <line_editor label="æœç´¢" name="search_editor" tool_tip="æœç´¢ Second Life"/> 24 <line_editor label="æœç´¢" name="search_editor" tool_tip="æœç´¢ä¸–ç•Œ"/>
25 <button label="" label_selected="" name="search_btn" tool_tip="æœç´¢ Second Life"/> 25 <button label="" label_selected="" name="search_btn" tool_tip="æœç´¢ä¸–ç•Œ"/>
26 <string name="packet_loss_tooltip"> 26 <string name="packet_loss_tooltip">
27 å°åŒ…丢失率 27 å°åŒ…丢失率
28 </string> 28 </string>
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_toolbar.xml b/linden/indra/newview/skins/default/xui/zh/panel_toolbar.xml
index e9c381d..154d6f5 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_toolbar.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_toolbar.xml
@@ -4,7 +4,7 @@
4 æ¢å¤åœé çª—å£ 4 æ¢å¤åœé çª—å£
5 </string> 5 </string>
6 <layout_stack name="toolbar_stack"> 6 <layout_stack name="toolbar_stack">
7 <button label="å³æ—¶é€š" name="im_btn" tool_tip="用å³æ—¶é€šè”系你的朋å‹ã€‚" /> 7 <button label="å³æ—¶æ¶ˆæ¯" name="im_btn" tool_tip="用å³æ—¶æ¶ˆæ¯è”系你的朋å‹ã€‚" />
8 <button label="" name="chat_btn" tool_tip="显示èŠå¤©æ ã€‚(回车键)" /> 8 <button label="" name="chat_btn" tool_tip="显示èŠå¤©æ ã€‚(回车键)" />
9 <flyout_button label="交æµ" name="communicate_btn" 9 <flyout_button label="交æµ" name="communicate_btn"
10 tool_tip="查找并与你的好å‹å’Œç¤¾å›¢äº¤æµã€‚" /> 10 tool_tip="查找并与你的好å‹å’Œç¤¾å›¢äº¤æµã€‚" />
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_voice_options.xml b/linden/indra/newview/skins/default/xui/zh/panel_voice_options.xml
index 6f98195..c082004 100644
--- a/linden/indra/newview/skins/default/xui/zh/panel_voice_options.xml
+++ b/linden/indra/newview/skins/default/xui/zh/panel_voice_options.xml
@@ -11,7 +11,7 @@
11 从化身的ä½ç½®å¬è¯­éŸ³èŠå¤©ã€‚ 11 从化身的ä½ç½®å¬è¯­éŸ³èŠå¤©ã€‚
12 </radio_item> 12 </radio_item>
13 </radio_group> 13 </radio_group>
14 <check_box label="仅好å‹å¯å‘我å‘起语èŠè¯·æ±‚" name="friends_only_check"/> 14 <check_box label="仅好å‹å¯å‘我å‘起语音呼å«è¯·æ±‚" name="friends_only_check"/>
15 <check_box label="以切æ¢æ¨¡å¼ä½¿ç”¨å³æŒ‰å³è¯´" name="push_to_talk_toggle_check"/> 15 <check_box label="以切æ¢æ¨¡å¼ä½¿ç”¨å³æŒ‰å³è¯´" name="push_to_talk_toggle_check"/>
16 <text name="push_to_talk_label" word_wrap="true"> 16 <text name="push_to_talk_label" word_wrap="true">
17 å³æŒ‰å³è¯´åˆ‡æ¢é”®: 17 å³æŒ‰å³è¯´åˆ‡æ¢é”®:
diff --git a/linden/indra/newview/skins/default/xui/zh/panel_windlight_controls.xml b/linden/indra/newview/skins/default/xui/zh/panel_windlight_controls.xml
new file mode 100644
index 0000000..3ecb259
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/zh/panel_windlight_controls.xml
@@ -0,0 +1,19 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel
3 name="windlight_controls">
4 <button
5 label="编辑器"
6 name="Environment"
7 tool_tip="点击这里调节世界环境" />
8 <flyout_button
9 label="天空"
10 name="Presets"
11 tool_tip="Windlight 预设">
12 </flyout_button>
13 <button
14 toggle="true"
15 label=""
16 name="Popup"
17 tool_tip="点击这里调节æ绘è·ç¦»" />
18</panel>
19
diff --git a/linden/indra/newview/skins/default/xui/zh/strings.xml b/linden/indra/newview/skins/default/xui/zh/strings.xml
index 3eb0014..5b541cd 100644
--- a/linden/indra/newview/skins/default/xui/zh/strings.xml
+++ b/linden/indra/newview/skins/default/xui/zh/strings.xml
@@ -6,12 +6,29 @@
6<strings> 6<strings>
7 7
8 <!-- Imprudence-specific strings --> 8 <!-- Imprudence-specific strings -->
9 <string name="landmark_created">你创建了一个地标ä½äºŽ</string>
10 <string name="new_home_page">你的新主页是</string>
11 <string name="server_version_changed_chat">你进入的区域正在è¿è¡Œä¸åŒçš„模拟器版本:[SERVER_VERSION_INFO]</string>
12 <string name="hippo_label_free">free</string>
13 <string name="hippo_label_week">周</string>
9 <string name="StatBarDaysOfWeek"> 14 <string name="StatBarDaysOfWeek">
10 星期日:星期一:星期二:星期三:星期四:星期五:星期六 15 星期日:星期一:星期二:星期三:星期四:星期五:星期六
11 </string> 16 </string>
12 <string name="StatBarMonthsOfYear"> 17 <string name="StatBarMonthsOfYear">
13 一月:二月:三月:四月:五月:六月:七月:八月:ä¹æœˆ:å月:å一月:å二月 18 一月:二月:三月:四月:五月:六月:七月:八月:ä¹æœˆ:å月:å一月:å二月
14 </string> 19 </string>
20 <string name="TitleBarMultiple">
21 [FIRST_NAME] [LAST_NAME] 于 [GRID_NAME]
22 </string>
23 <string name="copy_obj_key_info">
24 å¤åˆ¶äº†é”®ä¸ºäº†:
25 </string>
26 <string name="TeleportOfferMaturity">
27 [NAME] 邀请你瞬间移动到 [DESTINATION]
28 </string>
29 <string name="TeleportLureMaturity">
30 [NAME] 邀请你瞬间移动到 [DESTINATION]
31 </string>
15 32
16 <string name="LoginInProgress"> 33 <string name="LoginInProgress">
17 正在登录。 [APP_NAME] å¯èƒ½ä¼šçœ‹ä¸ŠåŽ»æ²¡æœ‰å应。 请ç¨å€™ã€‚ 34 正在登录。 [APP_NAME] å¯èƒ½ä¼šçœ‹ä¸ŠåŽ»æ²¡æœ‰å应。 请ç¨å€™ã€‚
@@ -110,7 +127,7 @@
110 å¯ä»»æ„å¤åˆ¶ 127 å¯ä»»æ„å¤åˆ¶
111 </string> 128 </string>
112 <string name="TooltipForSaleL$"> 129 <string name="TooltipForSaleL$">
113 å¾…å”®: L$[AMOUNT] 130 å¾…å”®: [CURRENCY][AMOUNT]
114 </string> 131 </string>
115 <string name="TooltipForSaleMsg"> 132 <string name="TooltipForSaleMsg">
116 å¾…å”®: [MESSAGE] 133 å¾…å”®: [MESSAGE]
@@ -281,7 +298,7 @@
281 摇手指 298 摇手指
282 </string> 299 </string>
283 <string name="anim_fist_pump"> 300 <string name="anim_fist_pump">
284 Fist Pump 301 冲拳
285 </string> 302 </string>
286 <string name="anim_yoga_float"> 303 <string name="anim_yoga_float">
287 浮空瑜伽 304 浮空瑜伽
@@ -350,10 +367,10 @@
350 RPS 剪刀 367 RPS 剪刀
351 </string> 368 </string>
352 <string name="anim_express_repulsed"> 369 <string name="anim_express_repulsed">
353 Repulsed 370 排斥
354 </string> 371 </string>
355 <string name="anim_kick_roundhouse_r"> 372 <string name="anim_kick_roundhouse_r">
356 Roundhouse Kick 373 扫堂腿
357 </string> 374 </string>
358 <string name="anim_express_sad"> 375 <string name="anim_express_sad">
359 伤心 376 伤心
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py
index 61a266a..6f85311 100755
--- a/linden/indra/newview/viewer_manifest.py
+++ b/linden/indra/newview/viewer_manifest.py
@@ -585,7 +585,8 @@ class DarwinManifest(ViewerManifest):
585 585
586 if self.prefix(src="", dst="Contents"): # everything goes in Contents 586 if self.prefix(src="", dst="Contents"): # everything goes in Contents
587 587
588 self.path("Info-meta-impy.plist", dst="Info.plist") 588 # Info.plist goes directly in Contents
589 self.path("packaging/mac/Info.plist", dst="Info.plist")
589 590
590 # copy additional libs in <bundle>/Contents/MacOS/ 591 # copy additional libs in <bundle>/Contents/MacOS/
591 if (not self.standalone()) and self.prefix(src="../../libraries/universal-darwin/lib_release", dst="MacOS/"): 592 if (not self.standalone()) and self.prefix(src="../../libraries/universal-darwin/lib_release", dst="MacOS/"):
@@ -666,27 +667,27 @@ class DarwinManifest(ViewerManifest):
666 self.gather_documents() 667 self.gather_documents()
667 668
668 self.path("featuretable_mac.txt") 669 self.path("featuretable_mac.txt")
669 self.path("SecondLife.nib")
670
671 self.path("viewer.icns") 670 self.path("viewer.icns")
672 671
673 # Translations 672 if self.prefix(src="packaging/mac", dst=""):
674 self.path("English.lproj") 673 self.path("SecondLife.nib")
675 self.path("German.lproj") 674 self.path("English.lproj")
676 self.path("Japanese.lproj") 675 self.path("German.lproj")
677 self.path("Korean.lproj") 676 self.path("Japanese.lproj")
678 self.path("da.lproj") 677 self.path("Korean.lproj")
679 self.path("es.lproj") 678 self.path("da.lproj")
680 self.path("fr.lproj") 679 self.path("es.lproj")
681 self.path("hu.lproj") 680 self.path("fr.lproj")
682 self.path("it.lproj") 681 self.path("hu.lproj")
683 self.path("nl.lproj") 682 self.path("it.lproj")
684 self.path("pl.lproj") 683 self.path("nl.lproj")
685 self.path("pt.lproj") 684 self.path("pl.lproj")
686 self.path("ru.lproj") 685 self.path("pt.lproj")
687 self.path("tr.lproj") 686 self.path("ru.lproj")
688 self.path("uk.lproj") 687 self.path("tr.lproj")
689 self.path("zh-Hans.lproj") 688 self.path("uk.lproj")
689 self.path("zh-Hans.lproj")
690 self.end_prefix("packaging/mac")
690 691
691 692
692 # if (not self.standalone()) and self.prefix(src="../../libraries/universal-darwin/lib_release/gstreamer-plugins", dst="lib/gstreamer-plugins"): 693 # if (not self.standalone()) and self.prefix(src="../../libraries/universal-darwin/lib_release/gstreamer-plugins", dst="lib/gstreamer-plugins"):
diff --git a/linden/indra/newview/viewerinfo.cpp b/linden/indra/newview/viewerinfo.cpp
new file mode 100644
index 0000000..59e35d4
--- /dev/null
+++ b/linden/indra/newview/viewerinfo.cpp
@@ -0,0 +1,148 @@
1/**
2 * @file viewerinfo.cpp
3 * @brief Functions for querying the viewer name, version, and other info.
4 * @author Jacek Antonelli
5 *
6 * Copyright (c) 2010-2011, Jacek Antonelli
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation;
11 * version 2.1 of the License only.
12
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301 USA
22 */
23
24#include "llviewerprecompiledheaders.h"
25
26#include "viewerinfo.h"
27
28namespace ViewerInfo
29{
30
31 // These are intentionally defined here instead of in the header,
32 // because they should NOT be read directly. Use the functions.
33 const std::string NAME = "meta-impy";
34 const std::string VARNT = "";
35 const S32 MAJOR = 1;
36 const S32 MINOR = 4;
37 const S32 PATCH = 1;
38 const S32 RLEAS = 1; // increment for each beta/RC/release
39 const std::string EXTRA = "beta 1";
40
41 // Mac OS X bundle identifier. Should match the one in Info.plist.
42 const std::string BUNDLE_ID = "org.imprudenceviewer.viewer";
43
44
45 const std::string& viewerName()
46 {
47 return NAME;
48 }
49
50 const std::string& viewerVariant()
51 {
52 return VARNT;
53 }
54
55 const std::string& nameWithVariant()
56 {
57 static std::string s;
58 if (!s.empty())
59 {
60 return s;
61 }
62
63 if (VARNT.empty())
64 {
65 s = NAME;
66 }
67 else
68 {
69 s = NAME + " " + VARNT;
70 }
71
72 return s;
73 }
74
75 S32 versionMajor()
76 {
77 return MAJOR;
78 }
79
80 S32 versionMinor()
81 {
82 return MINOR;
83 }
84
85 S32 versionPatch()
86 {
87 return PATCH;
88 }
89
90 S32 versionRelease()
91 {
92 return RLEAS;
93 }
94
95 const std::string& versionExtra()
96 {
97 return EXTRA;
98 }
99
100 const std::string& versionNumbers3()
101 {
102 static std::string s = llformat("%d.%d.%d", MAJOR, MINOR, PATCH);
103 return s;
104 }
105
106 const std::string& versionNumbers4()
107 {
108 static std::string s = llformat("%d.%d.%d.%d",
109 MAJOR, MINOR, PATCH, RLEAS);
110 return s;
111 }
112
113 const std::string& prettyVersion()
114 {
115 static std::string s;
116 if (s.length() > 0)
117 {
118 return s;
119 }
120
121 s = versionNumbers3();
122
123 if (EXTRA.length() > 0)
124 {
125 s += " " + EXTRA;
126 }
127
128 return s;
129 }
130
131 const std::string& prettyInfo()
132 {
133 static std::string s = nameWithVariant() + " " + prettyVersion();
134 return s;
135 }
136
137 const std::string& terseInfo()
138 {
139 static std::string s = nameWithVariant() + " " + versionNumbers4();
140 return s;
141 }
142
143 const std::string& bundleID()
144 {
145 return BUNDLE_ID;
146 }
147
148}
diff --git a/linden/indra/newview/viewerinfo.h b/linden/indra/newview/viewerinfo.h
new file mode 100644
index 0000000..fe2e829
--- /dev/null
+++ b/linden/indra/newview/viewerinfo.h
@@ -0,0 +1,93 @@
1/**
2 * @file viewerinfo.h
3 * @brief Functions for querying the viewer name, version, and other info.
4 * @author Jacek Antonelli
5 *
6 * Copyright (c) 2010-2011, Jacek Antonelli
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation;
11 * version 2.1 of the License only.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301 USA
22 */
23
24#ifndef VERSIONINFO_H
25#define VERSIONINFO_H
26
27#include "linden_common.h"
28
29namespace ViewerInfo
30{
31 /// Returns the name of the viewer.
32 const std::string& viewerName();
33
34 /// Returns the viewer variant (e.g. "Experimental").
35 /// May be empty, if no variant string was set.
36 const std::string& viewerVariant();
37
38 /// Returns a string with the viewer name and variant
39 /// (if it has one).
40 const std::string& nameWithVariant();
41
42 /// Returns the major (first) version number.
43 /// This number increases for each major release, and the
44 /// minor, patch, and release numbers are reset to zero.
45 S32 versionMajor();
46
47 /// Returns the minor (second) version number.
48 /// This number increases for each minor release, and the
49 /// patch and release numbers are reset to zero.
50 S32 versionMinor();
51
52 /// Returns the patch (third) version number.
53 /// This number increases for each patch (bugfix) release,
54 /// and the release number is reset to zero.
55 S32 versionPatch();
56
57 /// Returns the release (fourth) version number.
58 /// This number increases for each beta, release candidate,
59 /// and final release.
60 S32 versionRelease();
61
62 /// Returns the extra version string (e.g. "beta 1", "RC1").
63 /// May be empty, if no extra string was set.
64 const std::string& versionExtra();
65
66 /// Returns a three-segment dot-separated version string
67 /// ("major.minor.patch"). Intended for human reading.
68 const std::string& versionNumbers3();
69
70 /// Returns a four-segment dot-separated version string
71 /// ("major.minor.patch.release"). Intended for computer use, e.g.
72 /// login channel or version number comparison.
73 const std::string& versionNumbers4();
74
75 /// Returns the three-segment version number with extra version
76 /// string (if not empty). Intended for human reading.
77 const std::string& prettyVersion();
78
79 /// Returns the viewer name, variant (if not empty), and pretty
80 /// version. Intended for human reading.
81 const std::string& prettyInfo();
82
83 /// Returns the the viewer name, variant (if not empty), and
84 /// 4-segment version. Intended for computer use, e.g. login channel
85 /// or version number comparison.
86 const std::string& terseInfo();
87
88 /// Returns a string with the viewer's Mac OS X bundle identifier.
89 const std::string& bundleID();
90
91}
92
93#endif // VERSIONINFO_H
diff --git a/linden/indra/newview/viewerversion.cpp b/linden/indra/newview/viewerversion.cpp
deleted file mode 100644
index 3678cb4..0000000
--- a/linden/indra/newview/viewerversion.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
1/**
2* @file viewerversion.cpp
3* @brief set the viewer version in xml
4*
5* $LicenseInfo:firstyear=2009&license=viewergpl$
6*
7* Copyright (c) 2010, McCabe Maxsted
8*
9* Imprudence Viewer Source Code
10* The source code in this file ("Source Code") is provided to you
11* under the terms of the GNU General Public License, version 2.0
12* ("GPL"). Terms of the GPL can be found in doc/GPL-license.txt in
13* this distribution, or online at
14* http://secondlifegrid.net/programs/open_source/licensing/gplv2
15*
16* There are special exceptions to the terms and conditions of the GPL as
17* it is applied to this Source Code. View the full text of the exception
18* in the file doc/FLOSS-exception.txt in this software distribution, or
19* online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
20*
21* By copying, modifying or distributing this software, you acknowledge
22* that you have read and understood your obligations described above,
23* and agree to abide by those obligations.
24*
25* ALL SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO
26* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
27* COMPLETENESS OR PERFORMANCE.
28* $/LicenseInfo$
29*/
30
31#include "llviewerprecompiledheaders.h"
32
33#include "lldir.h"
34#include "llxmltree.h"
35#include "viewerversion.h"
36
37
38S32 ViewerVersion::sVersionMajor = 0;
39S32 ViewerVersion::sVersionMinor = 0;
40S32 ViewerVersion::sVersionPatch = 0;
41std::string ViewerVersion::sVersionTest = "";
42
43const std::string ViewerVersion::sViewerName = "meta-impy";
44
45ViewerVersion::ViewerVersion()
46{
47}
48
49bool ViewerVersion::initViewerVersion()
50{
51 std::string file_path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "viewerversion.xml");
52
53 if (!gDirUtilp->fileExists(file_path))
54 {
55 llwarns << "Unable to find viewerversion.xml in app_settings folder" << llendl;
56 return false;
57 }
58 else
59 {
60 LLXMLNodePtr root;
61
62 if (!LLXMLNode::parseFile(file_path, root, NULL))
63 {
64 llwarns << "Unable to parse version file: " << file_path << llendl;
65 return false;
66 }
67
68 if (root.isNull()) // shouldn't ever happen
69 {
70 llwarns << "Error while trying to read viewerversion.xml" << llendl;
71 return false;
72 }
73
74 LLXMLNodePtr child_nodep = root->getFirstChild();
75 while (child_nodep.notNull())
76 {
77 child_nodep->getAttributeS32("version_major", sVersionMajor);
78 child_nodep->getAttributeS32("version_minor", sVersionMinor);
79 child_nodep->getAttributeS32("version_patch", sVersionPatch);
80 child_nodep->getAttributeString("version_test", sVersionTest);
81
82 child_nodep = child_nodep->getNextSibling();
83 }
84
85 llinfos << "Version set to: " << sVersionMajor << "." << sVersionMinor << "." << sVersionPatch << " " << sVersionTest << llendl;
86
87 return true;
88 }
89}
diff --git a/linden/indra/newview/viewerversion.h b/linden/indra/newview/viewerversion.h
deleted file mode 100644
index a517f9f..0000000
--- a/linden/indra/newview/viewerversion.h
+++ /dev/null
@@ -1,79 +0,0 @@
1/**
2* @file viewerversion.h
3* @brief set the viewer version in xml
4*
5* $LicenseInfo:firstyear=2009&license=viewergpl$
6*
7* Copyright (c) 2010, McCabe Maxsted
8*
9* Imprudence Viewer Source Code
10* The source code in this file ("Source Code") is provided to you
11* under the terms of the GNU General Public License, version 2.0
12* ("GPL"). Terms of the GPL can be found in doc/GPL-license.txt in
13* this distribution, or online at
14* http://secondlifegrid.net/programs/open_source/licensing/gplv2
15*
16* There are special exceptions to the terms and conditions of the GPL as
17* it is applied to this Source Code. View the full text of the exception
18* in the file doc/FLOSS-exception.txt in this software distribution, or
19* online at http://secondlifegrid.net/programs/open_source/licensing/flossexception
20*
21* By copying, modifying or distributing this software, you acknowledge
22* that you have read and understood your obligations described above,
23* and agree to abide by those obligations.
24*
25* ALL SOURCE CODE IS PROVIDED "AS IS." THE AUTHOR MAKES NO
26* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
27* COMPLETENESS OR PERFORMANCE.
28* $/LicenseInfo$
29*/
30
31#ifndef VIEWERVERSION_H
32#define VIEWERVERSION_H
33
34#include "llversionviewer.h" // for LL versioning only
35
36class ViewerVersion
37{
38public:
39 ViewerVersion();
40 /*virtual*/ ~ViewerVersion();
41
42 static bool initViewerVersion();
43
44 // Returns the major version of Imprudence
45 static S32 getImpMajorVersion() { return sVersionMajor; }
46 // Returns the minor version of Imprudence
47 static S32 getImpMinorVersion() { return sVersionMinor; }
48 // Returns the patch version of Imprudence
49 static S32 getImpPatchVersion() { return sVersionPatch; }
50 // Returns the test version of Imprudence
51 static std::string getImpTestVersion() { return sVersionTest; }
52 // Returns the name of the viewer. Currently always "Imprudence"
53 static std::string getImpViewerName() { return sViewerName; }
54
55 // Returns the major version of the viewer
56 static S32 getLLMajorVersion() { return LL_VERSION_MAJOR; }
57 // Returns the minor version of the viewer
58 static S32 getLLMinorVersion() { return LL_VERSION_MINOR; }
59 // Returns the patch version of the viewer
60 static S32 getLLPatchVersion() { return LL_VERSION_PATCH; }
61 // Returns the build version of the viewer
62 static S32 getLLBuildVersion() { return LL_VERSION_BUILD; }
63 // Returns the name of the viewer ("meta-impy")
64 static std::string getLLViewerName() { return LL_VIEWER_NAME; }
65
66 // Note that the viewer channel is set in settings.xml
67 // as VersionChannelName. LL_VIEWER_CHANNEL is not
68 // used in Imprudence
69
70private:
71 static S32 sVersionMajor;
72 static S32 sVersionMinor;
73 static S32 sVersionPatch;
74 static std::string sVersionTest;
75
76 static const std::string sViewerName;
77};
78
79#endif // VIEWERVERSION_H
diff --git a/linden/install.xml b/linden/install.xml
index 8d71435..d25636d 100755
--- a/linden/install.xml
+++ b/linden/install.xml
@@ -1092,9 +1092,9 @@ Copyright (C) 2004-2005 Vladimir Berezniker @ http://public.xdi.org/=vmpn
1092 <key>ogg-vorbis</key> 1092 <key>ogg-vorbis</key>
1093 <map> 1093 <map>
1094 <key>copyright</key> 1094 <key>copyright</key>
1095 <string>Copyright (C) 2008 Xiph.org Foundation</string> 1095 <string>Copyright (C) Xiph.org Foundation</string>
1096 <key>description</key> 1096 <key>description</key>
1097 <string>Ogg: container format Vorbis: audio compression scheme</string> 1097 <string>Ogg: container format; Vorbis: audio compression scheme</string>
1098 <key>license</key> 1098 <key>license</key>
1099 <string>xiph-bsd</string> 1099 <string>xiph-bsd</string>
1100 <key>packages</key> 1100 <key>packages</key>
@@ -1102,30 +1102,30 @@ Copyright (C) 2004-2005 Vladimir Berezniker @ http://public.xdi.org/=vmpn
1102 <key>darwin</key> 1102 <key>darwin</key>
1103 <map> 1103 <map>
1104 <key>md5sum</key> 1104 <key>md5sum</key>
1105 <string>88eec3965fc2384436192faef1db2629</string> 1105 <string>30c75ce29c2ce2f6e8063067db31989d</string>
1106 <key>url</key> 1106 <key>url</key>
1107 <uri>http://imprudenceviewer.org/download/libs/ogg-vorbis-darwin-20100620.tar.bz2</uri> 1107 <uri>http://download.kokuaviewer.org/files/libs/ogg-vorbis-darwin-1.2.2-1.3.2-20110517.tar.bz2</uri>
1108 </map> 1108 </map>
1109 <key>linux</key> 1109 <key>linux</key>
1110 <map> 1110 <map>
1111 <key>md5sum</key> 1111 <key>md5sum</key>
1112 <string>72bde567859934024c8a4a70b97b24f5</string> 1112 <string>a132634c28f0d7fb0e7e4f62c82a0579</string>
1113 <key>url</key> 1113 <key>url</key>
1114 <uri>http://imprudenceviewer.org/download/libs/ogg-vorbis-linux-20091115.tar.bz2</uri> 1114 <uri>http://download.kokuaviewer.org/files/libs/ogg-vorbis-linux-1.2.2-1.3.2-20110514.tar.bz2</uri>
1115 </map> 1115 </map>
1116 <key>linux64</key> 1116 <key>linux64</key>
1117 <map> 1117 <map>
1118 <key>md5sum</key> 1118 <key>md5sum</key>
1119 <string>83c72b57a95e8c42560fb67955169f19</string> 1119 <string>dded849d4d46fb5d94f088c86407ec98</string>
1120 <key>url</key> 1120 <key>url</key>
1121 <uri>http://imprudenceviewer.org/download/libs/ogg-vorbis-linux64-20091202.tar.bz2</uri> 1121 <uri>http://download.kokuaviewer.org/files/libs/ogg-vorbis-linux64-1.2.2-1.3.2-20110514.tar.bz2</uri>
1122 </map> 1122 </map>
1123 <key>windows</key> 1123 <key>windows</key>
1124 <map> 1124 <map>
1125 <key>md5sum</key> 1125 <key>md5sum</key>
1126 <string>9bf1fea65e66b2cd3075e6ffd7eb57ad</string> 1126 <string>946bab72f6774220eaf139ce378ba671</string>
1127 <key>url</key> 1127 <key>url</key>
1128 <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/ogg-vorbis-1.1.3-1.2.0-windows-20080723.tar.bz2</uri> 1128 <uri>http://download.kokuaviewer.org/files/libs/ogg-vorbis-windows-1.2.2-1.3.2-20110511.tar.bz2</uri>
1129 </map> 1129 </map>
1130 </map> 1130 </map>
1131 </map> 1131 </map>
diff --git a/linden/scripts/build_version.py b/linden/scripts/build_version.py
deleted file mode 100755
index f6b88a9..0000000
--- a/linden/scripts/build_version.py
+++ /dev/null
@@ -1,62 +0,0 @@
1#!/usr/bin/env python
2#
3# Print the build information embedded in a header file.
4#
5# Expects to be invoked from the command line with a file name and a
6# list of directories to search. The file name will be one of the
7# following:
8#
9# llversionserver.h
10# llversionviewer.h
11#
12# The directory list that follows will include indra/llcommon, where
13# these files live.
14
15import errno, os, re
16
17def get_version(filename):
18 fp = open(filename)
19 data = fp.read()
20 fp.close()
21
22 vals = {}
23 m = re.search('<viewer version_major="(\d+)" />', data)
24 vals['major'] = m.group(1)
25 m = re.search('<viewer version_minor="(\d+)" />', data)
26 vals['minor'] = m.group(1)
27 m = re.search('<viewer version_patch="(\d+)" />', data)
28 vals['patch'] = m.group(1)
29 m = re.search('<viewer version_test="(.*)" />', data)
30 vals['test'] = m.group(1)
31
32 version = "%(major)s.%(minor)s.%(patch)s" % vals
33
34 if len(vals['test']) > 0:
35 # Replace some puncuation and spaces with '-' in the test version
36 vals['test'] = re.sub('[ \t:;,+/\\"\'`]+', '-', vals['test'])
37 version += "-%(test)s" % vals
38
39 return version
40
41
42if __name__ == '__main__':
43 import sys
44
45 try:
46 for path in sys.argv[2:]:
47 name = os.path.join(path, sys.argv[1])
48 try:
49 print get_version(name)
50 break
51 except OSError, err:
52 if err.errno != errno.ENOENT:
53 raise
54 else:
55 print >> sys.stderr, 'File not found:', sys.argv[1]
56 sys.exit(1)
57 except AttributeError:
58 print >> sys.stderr, 'Error: malformatted file: ', name
59 sys.exit(1)
60 except IndexError:
61 print >> sys.stderr, ('Usage: %s llversion[...].h [directories]' %
62 sys.argv[0])
diff --git a/linden/scripts/package.py b/linden/scripts/package.py
new file mode 100755
index 0000000..e02a9cc
--- /dev/null
+++ b/linden/scripts/package.py
@@ -0,0 +1,334 @@
1#!/usr/bin/env python
2#
3# @file package.py
4# @author Jacek Antonelli
5# @brief Script for generating viewer installer packages.
6#
7# Usage: package.py --build-dir=PATH [options]
8#
9# Copyright (c) 2007-2009, Linden Research, Inc.
10# Copyright (c) 2010-2011, Jacek Antonelli
11#
12# Permission is hereby granted, free of charge, to any person
13# obtaining a copy of this software and associated documentation files
14# (the "Software"), to deal in the Software without restriction,
15# including without limitation the rights to use, copy, modify, merge,
16# publish, distribute, sublicense, and/or sell copies of the Software,
17# and to permit persons to whom the Software is furnished to do so,
18# subject to the following conditions:
19#
20# The above copyright notice and this permission notice shall be
21# included in all copies or substantial portions of the Software.
22#
23# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
27# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
28# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
29# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30# SOFTWARE.
31#
32
33import os, sys
34from viewer_info import ViewerInfo
35
36
37SCRIPTS_DIR = sys.path[0] # directory containing this script
38TOP_DIR = os.path.abspath(os.path.join(SCRIPTS_DIR,'..'))
39SOURCE_DIR = os.path.abspath(os.path.join(TOP_DIR,'indra'))
40BUILD_TYPE = "RelWithDebInfo"
41
42
43class PackagerError(Exception): pass
44
45class BadDir(PackagerError): pass
46
47class WeirdPlatform(PackagerError): pass
48
49class CmdFailed(PackagerError): pass
50
51
52def indent(text, amount=4):
53 import string
54 lines = [(' '*amount + line) for line in string.split(text, '\n')]
55 return string.join(lines, '\n')
56
57def message(*args):
58 """Prints an informational message with a leading '#'."""
59 print '# ' + ' '.join([str(arg) for arg in args])
60
61def error(*args):
62 """Prints an error message to stderr."""
63 print >> sys.stderr, 'Error: ' + ' '.join([str(arg) for arg in args])
64
65
66class Packager:
67
68 def __init__(self, build_dir, opts={}):
69 options = {'source_dir': SOURCE_DIR,
70 'build_type': BUILD_TYPE,
71 'verbose': False,
72 }
73 options.update(opts)
74
75 self.build_dir = os.path.abspath(build_dir)
76 self.__check_build_dir()
77
78 # Package results go in the top build directory.
79 self.dest_dir = build_dir
80
81 self.source_dir = os.path.abspath(options['source_dir'])
82 self.__check_source_dir()
83
84 self.build_type = options['build_type']
85 self.platform = self.__get_platform()
86 self.verbose = options['verbose']
87 self.viewer_info = ViewerInfo()
88
89
90 def make(self):
91 plat = self.platform
92 if plat == 'linux': self.make_linux()
93 elif plat == 'mac': self.make_mac()
94 elif plat == 'windows': self.make_windows()
95
96
97 #########
98 # LINUX #
99 #########
100
101 def make_linux(self):
102 import shutil
103
104 packaged_dir = os.path.join(self.build_dir, 'newview', 'packaged')
105
106 if not os.path.exists(packaged_dir):
107 raise BadDir("invalid build dir, has no 'newview/packaged/' "
108 'subdirectory: %(d)r'%{'d': self.build_dir})
109
110 self.__run_command( 'Checking/fixing file permissions...',
111"""find %(d)r -type d | xargs --no-run-if-empty chmod 755;
112find %(d)r -type f -perm 0700 | xargs --no-run-if-empty chmod 0755;
113find %(d)r -type f -perm 0500 | xargs --no-run-if-empty chmod 0555;
114find %(d)r -type f -perm 0600 | xargs --no-run-if-empty chmod 0644;
115find %(d)r -type f -perm 0400 | xargs --no-run-if-empty chmod 0444;
116true""" % {'d': packaged_dir})
117
118 plat = 'Linux'
119 from platform import architecture
120 if architecture()[0] == '64bit':
121 plat += '-x86_64'
122 elif architecture()[0] == '32bit':
123 plat += '-x86'
124
125 inst_name = self.viewer_info.combined + '-' + plat
126 dest_file = os.path.join(self.dest_dir, inst_name + '.tar.bz2')
127
128 if (os.path.exists(dest_file)):
129 bkp = dest_file + ".bkp"
130 message("Renaming existing package to %r..." % bkp)
131 shutil.move(dest_file, bkp)
132
133 self.__run_command(
134 'Creating package %r (this takes a while)...'%dest_file,
135 'tar -C %(dir)s --numeric-owner '
136 '--transform "s,^./,%(inst_name)s/," '
137 #'--verbose --show-transformed-names '
138 '-cjf %(dest_file)s .' % { 'dir': packaged_dir,
139 'inst_name': inst_name,
140 'dest_file': dest_file})
141
142 message('Package complete: %r' % dest_file)
143
144
145 #######
146 # MAC #
147 #######
148
149 def make_mac(self):
150 import shutil
151
152 volname = self.viewer_info.name + " Installer"
153
154 # Where the DMG files (background image, etc.) come from.
155 dmg_src = os.path.join(self.source_dir, 'newview', 'packaging', 'mac')
156
157 # Everything that will be in the package is copied to here.
158 dmg_dst = os.path.join('/Volumes', volname)
159
160 if (os.path.exists(dmg_dst)):
161 error('%r is currently attached. Eject it and try again.' % dmg_dst)
162 sys.exit(1)
163
164 app_name = self.viewer_info.name + ".app"
165 app_orig = os.path.join(self.build_dir, 'newview', self.build_type, app_name)
166 app_dst = os.path.join(dmg_dst, app_name)
167
168 if (not os.path.exists(app_orig)):
169 error("App does not exist: %r" % app_orig)
170 sys.exit(1)
171
172 dmg_name = "%s-Mac"%(self.viewer_info.combined)
173 temp_dmg = os.path.join(self.build_dir, dmg_name+".sparseimage")
174 final_dmg = os.path.join(self.dest_dir, dmg_name+".dmg")
175
176 if (os.path.exists(temp_dmg)):
177 message("Removing stale temp disk image...")
178 os.remove(temp_dmg)
179
180 self.__run_command(
181 'Creating temp disk image...',
182 'hdiutil create %(temp)r -volname %(volname)r -fs HFS+ '
183 '-layout SPUD -type SPARSE' %
184 {'temp': temp_dmg, 'volname': volname, 'src': dmg_dst})
185
186 self.__run_command(
187 'Mounting temp disk image...',
188 'hdiutil attach %r -readwrite -noautoopen' % temp_dmg)
189
190 # Move the .app to the staging area (temporarily).
191 message("Copying %r (this takes a while)..."%(app_name))
192 shutil.copytree(app_orig, app_dst, symlinks=True)
193
194 message("Copying background.png...")
195 shutil.copy2( os.path.join(dmg_src, 'background.png'),
196 os.path.join(dmg_dst, 'background.png'))
197
198 config_script = os.path.join(self.source_dir, 'newview',
199 'packaging', 'mac', 'ConfigureDMG.scpt')
200
201 self.__run_command(
202 "Configuring temp disk image's view options...",
203 'osascript %(script)r %(volname)r %(app_name)r' %
204 {'script': config_script, 'volname': volname, 'app_name': app_name})
205
206 self.__run_command(
207 'Unmounting temp disk image...',
208 'hdiutil detach %r' % dmg_dst)
209
210 if (os.path.exists(final_dmg)):
211 bkp = final_dmg + ".bkp"
212 message("Renaming existing final disk image to %r..." % bkp)
213 shutil.move(final_dmg, bkp)
214
215 self.__run_command(
216 'Creating compressed final disk image (this takes a while)...',
217 'hdiutil convert %(temp)r -format UDBZ -o %(final)r' %
218 {'temp':temp_dmg, 'final':final_dmg})
219
220 message("Removing temp disk image...")
221 os.remove(temp_dmg)
222
223 message('Package complete: %r'%final_dmg)
224
225
226 ###########
227 # WINDOWS #
228 ###########
229
230 def make_windows(self):
231 print "Packaging for Windows is not supported yet."
232
233
234 ###################
235 # PRIVATE METHODS #
236 ###################
237
238 def __check_build_dir(self):
239 if not os.path.exists(self.build_dir):
240 raise BadDir('build dir %(dir)r does not exist.' %
241 {'dir': self.build_dir})
242 if not os.path.isdir(self.build_dir):
243 raise BadDir('build dir %(dir)r is not a directory.' %
244 {'dir': self.build_dir})
245
246 def __check_source_dir(self):
247 if not os.path.exists(self.source_dir):
248 raise BadDir('source dir %(dir)r does not exist.' %
249 {'dir': self.source_dir})
250 if not os.path.isdir(self.source_dir):
251 raise BadDir('source dir %(dir)r is not a directory.' %
252 {'dir': self.source_dir})
253
254 def __get_platform(self):
255 platform = sys.platform
256 try:
257 return {'linux2':'linux',
258 'linux1':'linux',
259 'cygwin':'windows',
260 'win32' :'windows',
261 'darwin':'mac',
262 }[platform]
263 except KeyError:
264 raise WeirdPlatform(
265 "Unrecognized platform/operating system: %r" % platform)
266
267 def __run_command(self, summary=None, command=None):
268 if summary: message(summary)
269
270 if not command: return
271
272 import subprocess
273
274 out = subprocess.PIPE # = intercept command's output
275 if self.verbose:
276 print indent(command)
277 out = None # = don't intercept
278
279 child = subprocess.Popen(command, shell=True, stdout=out, stderr=None)
280 status = child.wait()
281
282 if status:
283 raise CmdFailed('A command returned non-zero status (%s):\n%s'%
284 (status, indent(command)))
285
286
287
288def main(args=sys.argv[1:]):
289 from optparse import OptionParser
290
291 op = OptionParser(usage='%prog --build-dir=PATH [options]')
292
293 op.add_option('--build-dir', dest='build_dir', nargs=1, metavar='PATH',
294 help='path to the \'build\' directory, which contains '
295 'CMakeCache.txt and the compile result subdirectories')
296
297 op.add_option('--source-dir', dest='source_dir', nargs=1, metavar='PATH',
298 default=SOURCE_DIR,
299 help='optional path to an alternate source directory, '
300 'i.e. \'indra\'. Default: %(SOURCE_DIR)r'
301 %{ 'SOURCE_DIR': SOURCE_DIR } )
302
303 op.add_option('--build-type', dest='build_type', nargs=1, metavar='TYPE',
304 default=BUILD_TYPE,
305 help='\'Debug\', \'RelWithDebInfo\', or \'Release\'. '
306 'Default: %(BUILD_TYPE)r'
307 %{ 'BUILD_TYPE': BUILD_TYPE } )
308
309 op.add_option('-v', '--verbose', action='store_true', default=False,
310 help='print all shell commands as they are run')
311
312 if not args:
313 op.print_help()
314 return
315
316 options = op.parse_args(args)[0]
317
318 if not options.build_dir:
319 error('--build-dir=PATH is required.')
320 sys.exit(1)
321
322 opts_dict = {'source_dir': options.source_dir,
323 'build_type': options.build_type,
324 'verbose': options.verbose}
325
326 try:
327 Packager(options.build_dir, opts_dict).make()
328 except PackagerError, err:
329 error(err.args[0])
330 sys.exit(1)
331
332
333if __name__ == '__main__':
334 main()
diff --git a/linden/scripts/viewer_info.py b/linden/scripts/viewer_info.py
new file mode 100755
index 0000000..53ea432
--- /dev/null
+++ b/linden/scripts/viewer_info.py
@@ -0,0 +1,101 @@
1#!/usr/bin/env python
2#
3# @file viewer_info.py
4# @author Jacek Antonelli
5# @brief Scans and prints the viewer name and/or version.
6#
7# Copyright (c) 2010, Jacek Antonelli
8#
9# Permission is hereby granted, free of charge, to any person
10# obtaining a copy of this software and associated documentation files
11# (the "Software"), to deal in the Software without restriction,
12# including without limitation the rights to use, copy, modify, merge,
13# publish, distribute, sublicense, and/or sell copies of the Software,
14# and to permit persons to whom the Software is furnished to do so,
15# subject to the following conditions:
16#
17# The above copyright notice and this permission notice shall be
18# included in all copies or substantial portions of the Software.
19#
20# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
24# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
25# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
26# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27# SOFTWARE.
28#
29#
30# Usage:
31#
32# viewer_info.py --name # viewer name (e.g. "Kokua")
33# viewer_info.py --version # viewer version (e.g. "1.0.0-RC1"
34# viewer_info.py --combined # name + version (e.g. "Kokua-1.0.0-RC1")
35#
36# You can pass multiple flags to print each thing on a separate line.
37# E.g. `viewer_info.py --name --version' will print 2 lines, e.g.:
38#
39# Kokua
40# 1.0.0-RC1
41#
42
43import errno, os, re, string, sys
44
45
46class ViewerInfo:
47
48 def __init__(self, filepath=None):
49 f = open(filepath or self.default_file())
50 data = f.read()
51 f.close()
52
53 self.name = re.search('NAME\s*=\s*"([^"]*)"', data).group(1)
54 self.major = re.search('MAJOR\s*=\s*(\d+)', data).group(1)
55 self.minor = re.search('MINOR\s*=\s*(\d+)', data).group(1)
56 self.patch = re.search('PATCH\s*=\s*(\d+)', data).group(1)
57 self.extra = re.search('EXTRA\s*=\s*"([^"]*)"', data).group(1)
58 self.bundle_id = re.search('BUNDLE_ID\s*=\s*"([^"]*)"', data).group(1)
59
60 self.version = "%s.%s.%s"%(self.major, self.minor, self.patch)
61 if len(self.extra) > 0:
62 # Replace spaces and some puncuation with '-' in extra
63 extra = re.sub('[- \t:;,!+/\\"\'`]+', '-', self.extra)
64 # Strip any leading or trailing "-"s
65 extra = string.strip(extra, '-')
66 self.version += "-" + extra
67
68 self.combined = self.name + "-" + self.version
69
70 @classmethod
71 def default_file(klass):
72 scripts_dir = sys.path[0] # directory containing this script
73 viewerinfo = os.path.join('indra', 'newview', 'viewerinfo.cpp')
74 filepath = os.path.join(scripts_dir, '..', viewerinfo)
75 return os.path.abspath(filepath)
76
77
78if __name__ == '__main__':
79
80 try:
81 info = ViewerInfo()
82 except IOError, err:
83 if err.errno == errno.ENOENT:
84 print >> sys.stderr, 'File not found:', ViewerInfo.default_file()
85 sys.exit(1)
86 else:
87 raise
88
89 args = sys.argv[1:]
90
91 if not args:
92 print "Usage: %s [--name] [--version] [--combined]"%(sys.argv[0])
93 for arg in args:
94 if '--name' == arg:
95 print info.name
96 elif '--version' == arg:
97 print info.version
98 elif '--combined' == arg:
99 print info.combined
100 elif '--bundle-id' == arg:
101 print info.bundle_id