aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/newview')
-rw-r--r--linden/indra/newview/CMakeLists.txt82
-rw-r--r--linden/indra/newview/ViewerInstall.cmake2
-rw-r--r--linden/indra/newview/app_settings/client_list.xml1454
-rw-r--r--linden/indra/newview/app_settings/default_grids.xml74
-rw-r--r--linden/indra/newview/app_settings/logcontrol.xml4
-rw-r--r--linden/indra/newview/app_settings/settings.xml243
-rw-r--r--linden/indra/newview/dronesettings.xml2
-rw-r--r--linden/indra/newview/floaterotr.cpp102
-rw-r--r--linden/indra/newview/floaterotr.h57
-rw-r--r--linden/indra/newview/floatervoicelicense.cpp2
-rw-r--r--linden/indra/newview/hippolimits.cpp8
-rw-r--r--linden/indra/newview/hippoupdate.cpp91
-rw-r--r--linden/indra/newview/installers/windows/README.txt57
-rw-r--r--linden/indra/newview/installers/windows/installer_template.nsi104
-rw-r--r--linden/indra/newview/installers/windows/lang_de.nsi30
-rw-r--r--linden/indra/newview/installers/windows/lang_en-us.nsi26
-rw-r--r--linden/indra/newview/installers/windows/meta-impy installer script experimental.iss194
-rw-r--r--linden/indra/newview/installers/windows/meta-impy installer script.iss193
-rw-r--r--linden/indra/newview/installers/windows/meta-impy_installer_icon_left.bmpbin0 -> 154542 bytes
-rw-r--r--linden/indra/newview/installers/windows/meta-impy_installer_icon_right.bmpbin0 -> 8534 bytes
-rw-r--r--linden/indra/newview/installers/windows/meta-impy_installer_template.iss (renamed from linden/indra/newview/installers/windows/imprudence_installer_template.iss)50
-rw-r--r--linden/indra/newview/lgghunspell_wrapper.cpp3
-rwxr-xr-xlinden/indra/newview/linux_tools/handle_secondlifeprotocol.sh6
-rwxr-xr-xlinden/indra/newview/linux_tools/wrapper.sh12
-rw-r--r--linden/indra/newview/llagent.cpp2
-rw-r--r--linden/indra/newview/llappviewer.cpp31
-rw-r--r--linden/indra/newview/llappviewer.h2
-rw-r--r--linden/indra/newview/llappviewerlinux.cpp4
-rw-r--r--linden/indra/newview/llappviewermacosx.cpp24
-rw-r--r--linden/indra/newview/llappviewerwin32.cpp28
-rw-r--r--linden/indra/newview/llcolorswatch.cpp2
-rw-r--r--linden/indra/newview/llcommandhandler.h2
-rw-r--r--linden/indra/newview/llconsole.cpp2
-rw-r--r--linden/indra/newview/llettherebelight.h5
-rw-r--r--linden/indra/newview/llfilepicker.cpp4
-rw-r--r--linden/indra/newview/llfirstuse.cpp26
-rw-r--r--linden/indra/newview/llfirstuse.h4
-rw-r--r--linden/indra/newview/llfloateractivespeakers.cpp2
-rw-r--r--linden/indra/newview/llfloateravatarinfo.cpp2
-rw-r--r--linden/indra/newview/llfloaterbuyland.cpp2
-rw-r--r--linden/indra/newview/llfloaterchat.cpp2
-rw-r--r--linden/indra/newview/llfloaterclassified.cpp2
-rw-r--r--linden/indra/newview/llfloaterevent.cpp2
-rw-r--r--linden/indra/newview/llfloaterfriends.cpp2
-rw-r--r--linden/indra/newview/llfloaterhud.cpp2
-rw-r--r--linden/indra/newview/llfloaterjoystick.cpp2
-rw-r--r--linden/indra/newview/llfloaterland.cpp48
-rw-r--r--linden/indra/newview/llfloaternamedesc.cpp2
-rw-r--r--linden/indra/newview/llfloaterpreference.cpp4
-rw-r--r--linden/indra/newview/llfloaterregioninfo.cpp214
-rw-r--r--linden/indra/newview/llfloaterregioninfo.h7
-rw-r--r--linden/indra/newview/llfloaterreporter.cpp2
-rw-r--r--linden/indra/newview/llfloatertos.cpp3
-rw-r--r--linden/indra/newview/llhoverview.cpp6
-rw-r--r--linden/indra/newview/llimpanel.cpp992
-rw-r--r--linden/indra/newview/llimpanel.h61
-rw-r--r--linden/indra/newview/llimview.cpp14
-rw-r--r--linden/indra/newview/llimview.h2
-rw-r--r--linden/indra/newview/llmanipscale.cpp2
-rw-r--r--linden/indra/newview/llmaniptranslate.cpp2
-rw-r--r--linden/indra/newview/llmediactrl.cpp4
-rw-r--r--linden/indra/newview/llmutelist.cpp26
-rw-r--r--linden/indra/newview/llmutelist.h2
-rw-r--r--linden/indra/newview/llpanelLCD.cpp2
-rw-r--r--linden/indra/newview/llpanelaudioprefs.cpp2
-rw-r--r--linden/indra/newview/llpanelavatar.cpp14
-rw-r--r--linden/indra/newview/llpanelcontents.cpp2
-rw-r--r--linden/indra/newview/llpaneldebug.cpp2
-rw-r--r--linden/indra/newview/llpaneldirbrowser.cpp2
-rw-r--r--linden/indra/newview/llpaneldirclassified.cpp2
-rw-r--r--linden/indra/newview/llpaneldirevents.cpp2
-rw-r--r--linden/indra/newview/llpaneldirfind.cpp2
-rw-r--r--linden/indra/newview/llpaneldirgroups.cpp2
-rw-r--r--linden/indra/newview/llpaneldirland.cpp2
-rw-r--r--linden/indra/newview/llpaneldirpeople.cpp2
-rw-r--r--linden/indra/newview/llpaneldirplaces.cpp2
-rw-r--r--linden/indra/newview/llpaneldisplay.cpp2
-rw-r--r--linden/indra/newview/llpanellogin.cpp106
-rw-r--r--linden/indra/newview/llpanellogin.h3
-rw-r--r--linden/indra/newview/llpanelnetwork.cpp2
-rw-r--r--linden/indra/newview/llpanelobject.cpp2
-rw-r--r--linden/indra/newview/llpanelskins.cpp31
-rw-r--r--linden/indra/newview/llpanelskins.h8
-rw-r--r--linden/indra/newview/llpanelvolume.cpp2
-rw-r--r--linden/indra/newview/llprefsadvanced.cpp4
-rw-r--r--linden/indra/newview/llprefscolors.cpp20
-rw-r--r--linden/indra/newview/llprefsim.cpp10
-rw-r--r--linden/indra/newview/llselectmgr.cpp7
-rw-r--r--linden/indra/newview/llsky.cpp2
-rw-r--r--linden/indra/newview/llstartup.cpp199
-rw-r--r--linden/indra/newview/llstartup.h9
-rw-r--r--linden/indra/newview/lltexturecache.cpp2
-rw-r--r--linden/indra/newview/lltoolplacer.cpp2
-rw-r--r--linden/indra/newview/llurldispatcher.cpp30
-rw-r--r--linden/indra/newview/llurldispatcher.h2
-rw-r--r--linden/indra/newview/llurlhistory.cpp4
-rw-r--r--linden/indra/newview/llviewerdisplay.cpp2
-rw-r--r--linden/indra/newview/llviewergenericmessage.cpp5
-rw-r--r--linden/indra/newview/llviewermedia.cpp10
-rw-r--r--linden/indra/newview/llviewermedia.h2
-rw-r--r--linden/indra/newview/llviewermenu.cpp8
-rw-r--r--linden/indra/newview/llviewermenufile.cpp4
-rw-r--r--linden/indra/newview/llviewermessage.cpp174
-rw-r--r--linden/indra/newview/llviewerstats.cpp4
-rw-r--r--linden/indra/newview/llviewertexteditor.h2
-rw-r--r--linden/indra/newview/llviewerwindow.cpp9
-rw-r--r--linden/indra/newview/llviewerwindow.h2
-rw-r--r--linden/indra/newview/llvlmanager.cpp16
-rw-r--r--linden/indra/newview/llvoavatar.cpp412
-rw-r--r--linden/indra/newview/llvoiceclient.cpp6
-rw-r--r--linden/indra/newview/llvowlsky.cpp2
-rw-r--r--linden/indra/newview/llwind.cpp2
-rw-r--r--linden/indra/newview/llwindebug.cpp4
-rw-r--r--linden/indra/newview/macview.r2
-rw-r--r--linden/indra/newview/macview_Prefix.h2
-rw-r--r--linden/indra/newview/meta-impy.exe.config (renamed from linden/indra/newview/Imprudence.exe.config)0
-rw-r--r--linden/indra/newview/meta-impy.url (renamed from linden/indra/newview/imprudence.url)0
-rw-r--r--linden/indra/newview/meta-impyDebug.exe.config (renamed from linden/indra/newview/ImprudenceDebug.exe.config)0
-rw-r--r--linden/indra/newview/otr_floater_smp_dialog.cpp438
-rw-r--r--linden/indra/newview/otr_floater_smp_dialog.h63
-rw-r--r--linden/indra/newview/otr_floater_smp_progress.cpp288
-rw-r--r--linden/indra/newview/otr_floater_smp_progress.h61
-rw-r--r--linden/indra/newview/otr_wrapper.cpp487
-rw-r--r--linden/indra/newview/otr_wrapper.h58
-rw-r--r--linden/indra/newview/packaging/mac/Info.plist.in30
-rw-r--r--linden/indra/newview/packaging/mac/viewer.nib/classes.nib (renamed from linden/indra/newview/packaging/mac/SecondLife.nib/classes.nib)0
-rw-r--r--linden/indra/newview/packaging/mac/viewer.nib/info.nib (renamed from linden/indra/newview/packaging/mac/SecondLife.nib/info.nib)0
-rw-r--r--linden/indra/newview/packaging/mac/viewer.nib/objects.xib (renamed from linden/indra/newview/packaging/mac/SecondLife.nib/objects.xib)8
-rw-r--r--linden/indra/newview/pipeline.cpp20
-rw-r--r--linden/indra/newview/primbackup.cpp19
-rw-r--r--linden/indra/newview/res-sdl/ll_icon.BMPbin0 -> 5174 bytes
-rw-r--r--linden/indra/newview/res-sdl/meta-impy_icon.BMPbin0 -> 4662 bytes
-rw-r--r--linden/indra/newview/res/meta-impy_icon.pngbin0 -> 32529 bytes
-rw-r--r--linden/indra/newview/res/viewerRes.rc16
-rw-r--r--linden/indra/newview/skins/dark/colors_base.xml2
-rw-r--r--linden/indra/newview/skins/default/colors_base.xml2
-rw-r--r--linden/indra/newview/skins/default/html/en-us/loading-error/index.html4
-rw-r--r--linden/indra/newview/skins/default/html/en-us/loading/BecomeOne.pngbin0 -> 44846 bytes
-rw-r--r--linden/indra/newview/skins/default/html/en-us/loading/loading.html2
-rw-r--r--linden/indra/newview/skins/default/html/en-us/loading/meta-impy_loading.pngbin0 -> 14642 bytes
-rw-r--r--linden/indra/newview/skins/default/html/unabletoconnect.pngbin10714 -> 15849 bytes
-rw-r--r--linden/indra/newview/skins/default/textures/74ba3584-58ea-9984-5b76-62d37942ab77.tgabin0 -> 4140 bytes
-rw-r--r--linden/indra/newview/skins/default/textures/b2ef2d31-9714-a07b-6ca7-31638166364b.tgabin0 -> 4140 bytes
-rw-r--r--linden/indra/newview/skins/default/textures/icon_top_pick.tgabin1068 -> 858 bytes
-rw-r--r--linden/indra/newview/skins/default/textures/skin_thumbnail_white_meta7.pngbin0 -> 13107 bytes
-rw-r--r--linden/indra/newview/skins/default/xui/da/floater_report_bug.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/da/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/da/panel_group_general.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/de/floater_report_bug.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/de/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/de/notifications.xml15
-rw-r--r--linden/indra/newview/skins/default/xui/de/panel_group_general.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_about.xml44
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_about_land.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml51
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_otr_options.xml44
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_report_bug.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/floater_world_map.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_login.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/notifications.xml82
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/otr_floater_smp_dialog.xml131
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/otr_floater_smp_progress.xml52
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml16
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_group_general.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_login.xml168
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_advanced.xml1
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_colors.xml25
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_graphics1.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_im.xml3
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_network.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_preferences_skins.xml46
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/panel_status_bar.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/en-us/role_actions.xml8
-rw-r--r--linden/indra/newview/skins/default/xui/es/floater_report_bug.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/es/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/es/notifications.xml15
-rw-r--r--linden/indra/newview/skins/default/xui/es/panel_group_general.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/fr/floater_report_bug.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/fr/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/fr/notifications.xml15
-rw-r--r--linden/indra/newview/skins/default/xui/fr/panel_group_general.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/hu/floater_report_bug.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/hu/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/hu/notifications.xml13
-rw-r--r--linden/indra/newview/skins/default/xui/hu/panel_group_general.xml1
-rw-r--r--linden/indra/newview/skins/default/xui/it/floater_report_bug.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/it/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/it/notifications.xml15
-rw-r--r--linden/indra/newview/skins/default/xui/it/panel_group_general.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/ja/floater_report_bug.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/ja/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/ja/notifications.xml15
-rw-r--r--linden/indra/newview/skins/default/xui/ja/panel_avatar.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/ja/panel_group_general.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/ko/floater_report_bug.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/ko/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/ko/notifications.xml36
-rw-r--r--linden/indra/newview/skins/default/xui/ko/panel_group_general.xml4
-rwxr-xr-xlinden/indra/newview/skins/default/xui/pl/floater_report_bug.xml4
-rwxr-xr-xlinden/indra/newview/skins/default/xui/pl/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/pl/notifications.xml17
-rwxr-xr-xlinden/indra/newview/skins/default/xui/pl/panel_group_general.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/pt/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/pt/notifications.xml15
-rw-r--r--linden/indra/newview/skins/default/xui/pt/panel_group_general.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/ru/floater_report_bug.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/ru/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/ru/notifications.xml15
-rw-r--r--linden/indra/newview/skins/default/xui/ru/panel_group_general.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/tr/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/tr/panel_group_general.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/uk/floater_report_bug.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/uk/menu_viewer.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/uk/notifications.xml15
-rw-r--r--linden/indra/newview/skins/default/xui/uk/panel_group_general.xml4
-rw-r--r--linden/indra/newview/skins/default/xui/zh/floater_report_bug.xml2
-rw-r--r--linden/indra/newview/skins/default/xui/zh/menu_viewer.xml1
-rw-r--r--linden/indra/newview/skins/default/xui/zh/notifications.xml23
-rw-r--r--linden/indra/newview/skins/default/xui/zh/panel_group_general.xml4
-rw-r--r--linden/indra/newview/skins/gemini/colors_base.xml2
-rw-r--r--linden/indra/newview/skins/gemini/textures/74ba3584-58ea-9984-5b76-62d37942ab77.tgabin0 -> 4140 bytes
-rw-r--r--linden/indra/newview/skins/gemini/textures/b2ef2d31-9714-a07b-6ca7-31638166364b.tgabin0 -> 4140 bytes
-rw-r--r--linden/indra/newview/skins/gemini/textures/icon_top_pick.tgabin1068 -> 858 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/License and Credit.txt4
-rw-r--r--linden/indra/newview/skins/pslpurple/colors_base.xml206
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/0098b015-3daf-4cfe-a72f-915369ea97c2.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/3c18c87e-5f50-14e2-e744-f44734aa365f.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/5748decc-f629-461c-9a36-a35a221fe21f.tgabin0 -> 3116 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/6002a571-549c-472c-9443-9ab35b1a55ed.tgabin0 -> 6162 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/7a0b1bdb-b5d9-4df5-bac2-ba230da93b5b.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/7dabc040-ec13-2309-ddf7-4f161f6de2f4.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/89e9fc7c-0b16-457d-be4f-136270759c4d.tgabin0 -> 4140 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/9cad3e6d-2d6d-107d-f8ab-5ba272b5bfe1.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/active_speakers.tgabin0 -> 1137 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/active_voice_tab.tgabin0 -> 402 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/alpha_gradient.tgabin0 -> 1042 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/arrow_down.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/arrow_up.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/b4870163-6208-42a9-9801-93133bf9a6cd.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/black.tgabin0 -> 3116 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/btn_chatbar.tgabin0 -> 4626 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/btn_chatbar_selected.tgabin0 -> 4626 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/button_anim_pause.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/button_anim_pause_selected.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/button_anim_play.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/button_anim_play_selected.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/button_anim_stop.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/button_anim_stop_selected.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/button_disabled_32x128.tgabin0 -> 7698 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/button_enabled_32x128.tgabin0 -> 7698 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/button_enabled_selected_32x128.tgabin0 -> 7698 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/c1e21504-f136-451d-b8e9-929037812f1d.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/c63f124c-6340-4fbf-b59e-0869a44adb64.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/cam_rotate_in.tgabin0 -> 814 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/cam_rotate_out.tgabin0 -> 5224 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/cam_tracking_in.tgabin0 -> 946 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/cam_tracking_out.tgabin0 -> 4816 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/cam_zoom_minus_in.tgabin0 -> 1462 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/cam_zoom_out.tgabin0 -> 1434 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/cam_zoom_plus_in.tgabin0 -> 1522 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/ce15fd63-b0b6-463c-a37d-ea6393208b3e.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/checkbox_disabled_false.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/checkbox_disabled_true.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/checkbox_enabled_false.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/checkbox_enabled_true.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/circle.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/close_in_blue.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/close_inactive.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/close_inactive_blue.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/closebox.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/combobox_arrow.tgabin0 -> 202 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/darkgray.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/eye_button_active.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/eye_button_inactive.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/ff9a71eb-7414-4cf8-866e-a701deb7c3cf.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/ff_edit_mine_button.tgabin0 -> 1218 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/ff_edit_theirs_button.tgabin0 -> 1218 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/ff_online_status_button.tgabin0 -> 1218 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/ff_visible_map.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/ff_visible_map_button.tgabin0 -> 1218 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/ff_visible_online.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/ff_visible_online_button.tgabin0 -> 1218 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/flyout_btn_left.tgabin0 -> 9234 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/flyout_btn_left_disabled.tgabin0 -> 7698 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/flyout_btn_left_selected.tgabin0 -> 9234 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/flyout_btn_right.tgabin0 -> 1746 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/flyout_btn_right_disabled.tgabin0 -> 1218 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/flyout_btn_right_selected.tgabin0 -> 1746 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/folder_arrow.tgabin0 -> 4140 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-dot-lvl0.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-dot-lvl1.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-dot-lvl2.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-typing1.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-typing2.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-typing3.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_chatbar.tgabin0 -> 1075 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_clear_lineeditor.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_label_media.tgabin0 -> 732 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_label_music.tgabin0 -> 606 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_label_web.tgabin0 -> 606 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_media-pause_active.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_media-pause_disabled.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_media-pause_enabled.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_media-play_active.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_media-play_disabled.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_media-play_enabled.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_media-stop_active.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_media-stop_disabled.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_media-stop_enabled.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_media.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_media_movie.tgabin0 -> 732 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_media_web.tgabin0 -> 732 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_music-play.tgabin0 -> 1554 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_music.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_play.tgabin0 -> 318 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_rounded-text-field.tgabin0 -> 12306 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_scrollbar.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_scrollbar_bg.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_scrollbar_thumb.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_slide-groove_dark.tgabin0 -> 170 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_slide-highlight.tgabin0 -> 261 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_slide-thumb_dark.tgabin0 -> 604 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_speaker-muted_dark.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_speaker_dark.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_toolbar_build.tgabin0 -> 949 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_toolbar_fly.tgabin0 -> 912 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_toolbar_inventory.tgabin0 -> 1209 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_toolbar_map.tgabin0 -> 904 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_toolbar_minimap.tgabin0 -> 1215 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_toolbar_search.tgabin0 -> 792 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icn_toolbar_snapshot.tgabin0 -> 988 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/icon_diurnal.tgabin0 -> 6162 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/lightgray.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/media_icon.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/minimize.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/minimize_inactive.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/minimize_pressed.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_backward_in.tgabin0 -> 651 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_backward_out.tgabin0 -> 769 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_down_in.tgabin0 -> 703 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_down_out.tgabin0 -> 843 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_forward_in.tgabin0 -> 693 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_forward_out.tgabin0 -> 869 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_left_in.tgabin0 -> 580 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_left_out.tgabin0 -> 660 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_right_in.tgabin0 -> 598 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_right_out.tgabin0 -> 674 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_turn_left_in.tgabin0 -> 1032 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_turn_left_out.tgabin0 -> 1166 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_turn_right_in.tgabin0 -> 975 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_turn_right_out.tgabin0 -> 1127 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_up_in.tgabin0 -> 703 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/move_up_out.tgabin0 -> 843 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/mute_icon.tgabin0 -> 1042 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/notify_next.pngbin0 -> 559 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/progress_fill.tgabin0 -> 4146 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/progressbar_fill.tgabin0 -> 3168 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/progressbar_track.tgabin0 -> 3798 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/ptt_lock_off.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/ptt_lock_on.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/radio_active_false.tgabin0 -> 683 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/radio_active_true.tgabin0 -> 700 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/radio_inactive_false.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/radio_inactive_true.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/resize_handle_bottom_right_blue.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/restore.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/restore_inactive.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/restore_pressed.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/rounded_square.tgabin0 -> 16428 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/rounded_square_soft.tgabin0 -> 16428 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/scrollbutton_down_in_blue.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/scrollbutton_down_out_blue.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/scrollbutton_left_in_blue.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/scrollbutton_left_out_blue.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/scrollbutton_right_in_blue.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/scrollbutton_right_out_blue.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/scrollbutton_up_in_blue.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/scrollbutton_up_out_blue.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/sm_rounded_corners_simple.tgabin0 -> 1068 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/smicon_warn.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/spacer24.tgabin0 -> 2348 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/spacer35.tgabin0 -> 3404 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/spin_down_in_blue.tgabin0 -> 402 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/spin_down_out_blue.tgabin0 -> 402 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/spin_up_in_blue.tgabin0 -> 402 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/spin_up_out_blue.tgabin0 -> 402 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/square_btn_32x128.tgabin0 -> 7698 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/square_btn_selected_32x128.tgabin0 -> 7698 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/status_buy_currency.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/status_buy_currency_pressed.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/status_buy_land.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/status_buy_land_pressed.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/tab_bottom_blue.tgabin0 -> 6546 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/tab_bottom_selected_blue.tgabin0 -> 6546 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/tab_left.tgabin0 -> 7698 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/tab_left_selected.tgabin0 -> 7698 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/tab_top_blue.tgabin0 -> 6546 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/tab_top_selected_blue.tgabin0 -> 6546 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/tabarea.tgabin0 -> 1340 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/tearoff_pressed.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/tearoffbox.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/textures.xml386
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/tool_dozer.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/tool_dozer_active.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/tool_zoom.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/tool_zoom_active.tgabin0 -> 3090 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/toolbar_btn_disabled.tgabin0 -> 9234 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/toolbar_btn_enabled.tgabin0 -> 9234 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/toolbar_btn_selected.tgabin0 -> 9234 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/toolbar_tab.tgabin0 -> 19158 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/up_arrow.tgabin0 -> 786 bytes
-rw-r--r--linden/indra/newview/skins/pslpurple/textures/white.tgabin0 -> 3116 bytes
-rw-r--r--linden/indra/newview/skins/silver/colors.xml102
-rw-r--r--linden/indra/newview/skins/silver/textures/textures.xml25
-rw-r--r--linden/indra/newview/skins/silver/xui/en-us/panel_media_controls.xml90
-rw-r--r--linden/indra/newview/skins/silver/xui/en-us/panel_toolbar.xml77
-rwxr-xr-xlinden/indra/newview/viewer_manifest.py80
-rw-r--r--linden/indra/newview/viewerinfo.cpp3
419 files changed, 7062 insertions, 1935 deletions
diff --git a/linden/indra/newview/CMakeLists.txt b/linden/indra/newview/CMakeLists.txt
index 1fc5f42..7496546 100644
--- a/linden/indra/newview/CMakeLists.txt
+++ b/linden/indra/newview/CMakeLists.txt
@@ -15,6 +15,24 @@ include(HUNSPELL)
15include(FindOpenGL) 15include(FindOpenGL)
16include(JsonCpp) 16include(JsonCpp)
17include(LLAddBuildTest) 17include(LLAddBuildTest)
18
19# [$PLOTR$]
20include(libgpg-error)
21include(libgcrypt)
22
23if (WINDOWS)
24 include(libotr)
25 # on windows always build libotr from source and statically link in libgcrypt and libgpg-error
26endif (WINDOWS)
27if (DARWIN OR LINUX)
28 if (STATIC_LIBOTR_ETC)
29 include(libotr) # to build libotr from source and statically link in libgcrypt and libgpg-error
30 else (STATIC_LIBOTR_ETC)
31 include(libotrb)
32 endif (STATIC_LIBOTR_ETC)
33endif (DARWIN OR LINUX)
34# [/$PLOTR$]
35
18include(LLAudio) 36include(LLAudio)
19include(LLCharacter) 37include(LLCharacter)
20include(LLCommon) 38include(LLCommon)
@@ -66,6 +84,21 @@ include_directories(
66 ${LSCRIPT_INCLUDE_DIRS}/lscript_compile 84 ${LSCRIPT_INCLUDE_DIRS}/lscript_compile
67 ) 85 )
68 86
87# [$PLOTR$]
88if (WINDOWS)
89 include_directories(
90 ../gpg.vs/inc.vs
91 ../gpg.vs/libgpg-error-1.1.vs/custom
92 ../gpg.vs/libgcrypt-1.2.2.vs/custom
93 )
94endif (WINDOWS)
95include_directories(
96 ${LIBGPG-ERROR_INCLUDE_DIRS}
97 ${LIBGCRYPT_INCLUDE_DIRS}
98 ../libotr/libotr-3.2.0/src
99)
100# [/$PLOTR$]
101
69set(viewer_SOURCE_FILES 102set(viewer_SOURCE_FILES
70 lggautocorrectfloater.cpp 103 lggautocorrectfloater.cpp
71 lggautocorrect.cpp 104 lggautocorrect.cpp
@@ -82,6 +115,7 @@ set(viewer_SOURCE_FILES
82 floatergriddefault.cpp 115 floatergriddefault.cpp
83 floatergridmanager.cpp 116 floatergridmanager.cpp
84 floaterlocalassetbrowse.cpp 117 floaterlocalassetbrowse.cpp
118 floaterotr.cpp
85 floatervoicelicense.cpp 119 floatervoicelicense.cpp
86 hbfloatergrouptitles.cpp 120 hbfloatergrouptitles.cpp
87 hippogridmanager.cpp 121 hippogridmanager.cpp
@@ -507,10 +541,15 @@ set(viewer_SOURCE_FILES
507 wlfloatermanager.cpp 541 wlfloatermanager.cpp
508 wlfloaterwindlightsend.cpp 542 wlfloaterwindlightsend.cpp
509 wlretrievesettings.cpp 543 wlretrievesettings.cpp
544# [/$PLOTR$]
545 otr_wrapper.cpp
546 otr_floater_smp_dialog.cpp
547 otr_floater_smp_progress.cpp
548# [/$PLOTR$]
510 rcmoapradar.cpp 549 rcmoapradar.cpp
511 ) 550 )
512 551
513set(VIEWER_BINARY_NAME "imprudence-bin" CACHE STRING 552set(VIEWER_BINARY_NAME "meta-impy-bin" CACHE STRING
514 "The name of the viewer executable to create.") 553 "The name of the viewer executable to create.")
515 554
516if (LINUX) 555if (LINUX)
@@ -541,6 +580,7 @@ set(viewer_HEADER_FILES
541 floatergriddefault.h 580 floatergriddefault.h
542 floatergridmanager.h 581 floatergridmanager.h
543 floaterlocalassetbrowse.h 582 floaterlocalassetbrowse.h
583 floaterotr.h
544 floatervoicelicense.h 584 floatervoicelicense.h
545 hbfloatergrouptitles.h 585 hbfloatergrouptitles.h
546 hippogridmanager.h 586 hippogridmanager.h
@@ -981,6 +1021,11 @@ set(viewer_HEADER_FILES
981 wlfloatermanager.h 1021 wlfloatermanager.h
982 wlfloaterwindlightsend.h 1022 wlfloaterwindlightsend.h
983 wlretrievesettings.h 1023 wlretrievesettings.h
1024# [$PLOTR$]
1025 otr_wrapper.h
1026 otr_floater_smp_dialog.h
1027 otr_floater_smp_progress.h
1028# [/$PLOTR$]
984 rcmoapradar.h 1029 rcmoapradar.h
985 ) 1030 )
986 1031
@@ -1008,7 +1053,7 @@ if (DARWIN)
1008 macview.r 1053 macview.r
1009 gpu_table.txt 1054 gpu_table.txt
1010 packaging/mac/Info.plist.in 1055 packaging/mac/Info.plist.in
1011 packaging/mac/SecondLife.nib/ 1056 packaging/mac/viewer.nib/
1012 # CMake doesn't seem to support Xcode language variants well just yet 1057 # CMake doesn't seem to support Xcode language variants well just yet
1013 packaging/mac/English.lproj/InfoPlist.strings 1058 packaging/mac/English.lproj/InfoPlist.strings
1014 packaging/mac/English.lproj/language.txt 1059 packaging/mac/English.lproj/language.txt
@@ -1030,9 +1075,19 @@ if (LINUX)
1030 LIST(APPEND viewer_SOURCE_FILES llappviewerlinux.cpp) 1075 LIST(APPEND viewer_SOURCE_FILES llappviewerlinux.cpp)
1031 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed") 1076 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed")
1032 1077
1078 # [$PLOTR$]
1079 if (STATIC_LIBOTR_ETC) # defined in .../linden/indra/CMakeLists.txt
1080 set(viewer_LIBRARIES
1081 Xinerama
1082 ${LIBGPG-ERROR_LDBRARIES}
1083 ${LIBGCRYPT-ERROR_LDBRARIES}
1084 )
1085 else (STATIC_LIBOTR_ETC) # below for dynamically linked, unmodified libotr
1033 set(viewer_LIBRARIES 1086 set(viewer_LIBRARIES
1034 Xinerama 1087 Xinerama
1035 ) 1088 )
1089 endif (STATIC_LIBOTR_ETC)
1090 # [/$PLOTR$]
1036endif (LINUX) 1091endif (LINUX)
1037 1092
1038if (WINDOWS) 1093if (WINDOWS)
@@ -1074,7 +1129,7 @@ if (WINDOWS)
1074 res/arrowdrag.cur 1129 res/arrowdrag.cur
1075 res/circleandline.cur 1130 res/circleandline.cur
1076 res/imp_icon.ico 1131 res/imp_icon.ico
1077 res/imprudence_icon.png 1132 res/meta-impy_icon.png
1078 res/llarrow.cur 1133 res/llarrow.cur
1079 res/llarrowdrag.cur 1134 res/llarrowdrag.cur
1080 res/llarrowdragmulti.cur 1135 res/llarrowdragmulti.cur
@@ -1286,7 +1341,7 @@ add_executable(${VIEWER_BINARY_NAME}
1286 MACOSX_BUNDLE 1341 MACOSX_BUNDLE
1287 ${viewer_SOURCE_FILES} 1342 ${viewer_SOURCE_FILES}
1288 ) 1343 )
1289check_message_template(${VIEWER_BINARY_NAME}) 1344#check_message_template(${VIEWER_BINARY_NAME})
1290 1345
1291 1346
1292# NOTE: This variable is DEPRECATED, and should not be used anymore. 1347# NOTE: This variable is DEPRECATED, and should not be used anymore.
@@ -1389,7 +1444,25 @@ if (WINDOWS)
1389 endif (PACKAGE) 1444 endif (PACKAGE)
1390endif (WINDOWS) 1445endif (WINDOWS)
1391 1446
1447# [$PLOTR$]
1448if (WINDOWS)
1449 set(otr_link_libs ${LIBGPG-ERROR_LIBRARIES}
1450 ${LIBGCRYPT_LIBRARIES}
1451 ${LIBOTR_LIBRARIES}
1452 )
1453else (WINDOWS)
1454 if (STATIC_LIBOTR_ETC)
1455 set(otr_link_libs ${LIBOTR_LIBRARIES}
1456 ) # statically linked libotr, built from source
1457 else (STATIC_LIBOTR_ETC)
1458 set(otr_link_libs ${OTR_LIBRARY}
1459 )
1460 endif (STATIC_LIBOTR_ETC)
1461endif (WINDOWS)
1462# [/$PLOTR$]
1463
1392target_link_libraries(${VIEWER_BINARY_NAME} 1464target_link_libraries(${VIEWER_BINARY_NAME}
1465 ${otr_link_libs}
1393 ${LLAUDIO_LIBRARIES} 1466 ${LLAUDIO_LIBRARIES}
1394 ${LLCHARACTER_LIBRARIES} 1467 ${LLCHARACTER_LIBRARIES}
1395 ${LLIMAGE_LIBRARIES} 1468 ${LLIMAGE_LIBRARIES}
@@ -1435,7 +1508,6 @@ set(ARTWORK_DIR ${CMAKE_CURRENT_SOURCE_DIR} CACHE PATH
1435 1508
1436 1509
1437if (LINUX) 1510if (LINUX)
1438
1439 string(REPLACE "-bin" "-stripped" 1511 string(REPLACE "-bin" "-stripped"
1440 VIEWER_STRIPPED_NAME ${VIEWER_BINARY_NAME}) 1512 VIEWER_STRIPPED_NAME ${VIEWER_BINARY_NAME})
1441 1513
diff --git a/linden/indra/newview/ViewerInstall.cmake b/linden/indra/newview/ViewerInstall.cmake
index bc839c4..0959280 100644
--- a/linden/indra/newview/ViewerInstall.cmake
+++ b/linden/indra/newview/ViewerInstall.cmake
@@ -1,4 +1,4 @@
1install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/imprudence-bin 1install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/meta-impy-bin
2 DESTINATION ${APP_BINARY_DIR} 2 DESTINATION ${APP_BINARY_DIR}
3 ) 3 )
4 4
diff --git a/linden/indra/newview/app_settings/client_list.xml b/linden/indra/newview/app_settings/client_list.xml
new file mode 100644
index 0000000..183326c
--- /dev/null
+++ b/linden/indra/newview/app_settings/client_list.xml
@@ -0,0 +1,1454 @@
1<llsd>
2 <map>
3 <key>01f13da6-fd61-82be-5a8b-68f2d165d8cd</key>
4 <map>
5 <key>color</key>
6 <array>
7 <real>0.01568627450980400114821656</real>
8 <real>-0.1843137254902000032874554</real>
9 <real>-0.3647058823529399917973137</real>
10 <real>1</real>
11 </array>
12 <key>name</key>
13 <string>Smilodon</string>
14 </map>
15 <key>049af712-22c9-b2c4-50c7-90a9f1d1e5ef</key>
16 <map>
17 <key>color</key>
18 <array>
19 <real>-0.08235294117647100342605171</real>
20 <real>0.2156862745097999911614295</real>
21 <real>0.5372549019607799625219968</real>
22 <real>1</real>
23 </array>
24 <key>name</key>
25 <string>GNR</string>
26 </map>
27 <key>072343d0-1ce9-0952-4106-5312af4a789a</key>
28 <map>
29 <key>color</key>
30 <array>
31 <real>0.01176470588235299999380068</real>
32 <real>-0.1254901960784300107842881</real>
33 <real>0.2901960784313700192349472</real>
34 <real>1</real>
35 </array>
36 <key>name</key>
37 <string>Emerald</string>
38 </map>
39 <key>0ae2f973-98c1-a4e8-9f4b-9db2044ab079</key>
40 <map>
41 <key>color</key>
42 <array>
43 <real>-0.2549019607843099888278005</real>
44 <real>-0.3254901960784299941309428</real>
45 <real>0.2901960784313700192349472</real>
46 <real>1</real>
47 </array>
48 <key>name</key>
49 <string>Emerald</string>
50 </map>
51 <key>0b6bc011-15c7-721d-f4c9-cdbaf3448dba</key>
52 <map>
53 <key>color</key>
54 <array>
55 <real>-0.3960784313725499994340851</real>
56 <real>-0.5294117647058800280035484</real>
57 <real>0.5372549019607799625219968</real>
58 <real>1</real>
59 </array>
60 <key>name</key>
61 <string>MoonBot</string>
62 </map>
63 <key>0bcd5f5d-a4ce-9ea4-f9e8-15132653b3d8</key>
64 <map>
65 <key>color</key>
66 <array>
67 <real>0.007843137254902000574108278</real>
68 <real>-0.1254901960784300107842881</real>
69 <real>0.2901960784313700192349472</real>
70 <real>1</real>
71 </array>
72 <key>name</key>
73 <string>MoyMix</string>
74 </map>
75 <key>0f6723d2-5b23-6b58-08ab-308112b33786</key>
76 <map>
77 <key>color</key>
78 <array>
79 <real>-0.6549019607843099555211097</real>
80 <real>-0.5764705882352899601883678</real>
81 <real>0.423529411764709984300481</real>
82 <real>1</real>
83 </array>
84 <key>evil</key>
85 <boolean>1</boolean>
86 <key>name</key>
87 <string>CryoLife</string>
88 </map>
89 <key>14ae222f-cf97-fcff-6b90-21593d824dbd</key>
90 <map>
91 <key>color</key>
92 <array>
93 <real>-0.9450980392156900222744298</real>
94 <real>-0.670588235294120038609833</real>
95 <real>-0.2862745098039199964645718</real>
96 <real>1</real>
97 </array>
98 <key>name</key>
99 <string>FuckLife</string>
100 </map>
101 <key>1a1d86b2-edda-aa01-6e23-5b0cc7c2fe35</key>
102 <map>
103 <key>color</key>
104 <array>
105 <real>-0.9372549019607799847264573</real>
106 <real>-0.6823529411764700514098081</real>
107 <real>0.5176470588235300152035734</real>
108 <real>1</real>
109 </array>
110 <key>name</key>
111 <string>S3aian</string>
112 </map>
113 <key>1c29480c-c608-df87-28bb-964fb64c5366</key>
114 <map>
115 <key>color</key>
116 <array>
117 <real>-0.1215686274509800018917005</real>
118 <real>0.07450980392156900111721995</real>
119 <real>0.02352941176470599998760136</real>
120 <real>1</real>
121 </array>
122 <key>name</key>
123 <string>Gemini</string>
124 </map>
125 <key>1da8eb54-a70f-bd4a-77e5-c7b815c3b2a2</key>
126 <map>
127 <key>color</key>
128 <array>
129 <real>0.01176470588235299999380068</real>
130 <real>-0.4588235294117600227004061</real>
131 <real>-0.243137254901960003783401</real>
132 <real>1</real>
133 </array>
134 <key>name</key>
135 <string>Emerald</string>
136 </map>
137 <key>1e0948ab-706a-b309-434c-a694436a79be</key>
138 <map>
139 <key>color</key>
140 <array>
141 <real>0.01568627450980400114821656</real>
142 <real>0.3137254901960799813309677</real>
143 <real>0.6352941176470600082026863</real>
144 <real>1</real>
145 </array>
146 <key>name</key>
147 <string>Emerald</string>
148 </map>
149 <key>1fb9ce5c-bb36-a0c1-72b5-e4f3406c6d56</key>
150 <map>
151 <key>color</key>
152 <array>
153 <real>-0.3058823529411799913013681</real>
154 <real>0.3019607843137300240421439</real>
155 <real>0.6078431372549000233362904</real>
156 <real>1</real>
157 </array>
158 <key>name</key>
159 <string>Lucid</string>
160 </map>
161 <key>287aaa37-2f88-275a-edf4-7ea6bb82fb8d</key>
162 <map>
163 <key>color</key>
164 <array>
165 <real>-0.2862745098039199964645718</real>
166 <real>-0.5529411764705900456107202</real>
167 <real>-0.231372549019609990983426</real>
168 <real>1</real>
169 </array>
170 <key>name</key>
171 <string>lolcat</string>
172 </map>
173 <key>28b4da3f-5f9b-f44e-1387-6a115ab482c5</key>
174 <map>
175 <key>color</key>
176 <array>
177 <real>-0.1686274509803900034654589</real>
178 <real>0.1058823529411799940769257</real>
179 <real>0.3176470588235300041013431</real>
180 <real>1</real>
181 </array>
182 <key>name</key>
183 <string>Diamond</string>
184 </map>
185 <key>29705410-bcdf-bfd5-e811-5fca794dfbc1</key>
186 <map>
187 <key>color</key>
188 <array>
189 <real>-0.7843137254901999533274193</real>
190 <real>0.2705882352941200164053726</real>
191 <real>0.6352941176470600082026863</real>
192 <real>1</real>
193 </array>
194 <key>name</key>
195 <string>HippoMeow</string>
196 </map>
197 <key>2a9a406c-f448-68f2-4e38-878f8c46c190</key>
198 <map>
199 <key>color</key>
200 <array>
201 <real>0.007843137254902000574108278</real>
202 <real>0.1058823529411799940769257</real>
203 <real>0.1686274509803900034654589</real>
204 <real>1</real>
205 </array>
206 <key>name</key>
207 <string>Meerkat</string>
208 </map>
209 <key>2b459a3b-5420-21a1-7dda-eccf02de6c37</key>
210 <map>
211 <key>color</key>
212 <array>
213 <real>-0.7294117647058799835946274</real>
214 <real>-0.3176470588235300041013431</real>
215 <real>0.1607843137254900134358593</real>
216 <real>1</real>
217 </array>
218 <key>name</key>
219 <string>Sun</string>
220 </map>
221 <key>2c9c1e0b-e5d1-263e-16b1-7fc6d169f3d6</key>
222 <map>
223 <key>color</key>
224 <array>
225 <real>-0.4901960784313699748260262</real>
226 <real>0.1568627450980399906654839</real>
227 <real>0.3176470588235300041013431</real>
228 <real>1</real>
229 </array>
230 <key>evil</key>
231 <boolean>1</boolean>
232 <key>name</key>
233 <string>PhoxSL</string>
234 </map>
235 <key>2d02f0a7-48a0-46b3-944f-6a0a7523aaf6</key>
236 <map>
237 <key>color</key>
238 <array>
239 <real>-0.1254901960784300107842881</real>
240 <real>-0.6509803921568599882618855</real>
241 <real>0.0666666666666669988083882</real>
242 <real>1</real>
243 </array>
244 <key>name</key>
245 <string>HomoLife</string>
246 </map>
247 <key>3386a955-641c-1113-18e7-d4a5165a62bd</key>
248 <map>
249 <key>color</key>
250 <array>
251 <real>-0.4392156862745100198708315</real>
252 <real>-0.1411764705882400106062846</real>
253 <real>0.1490196078431400006358842</real>
254 <real>1</real>
255 </array>
256 <key>name</key>
257 <string>StreetLife</string>
258 </map>
259 <key>397554b9-3e2f-4255-5fde-76f93e71295b</key>
260 <map>
261 <key>color</key>
262 <array>
263 <real>-0.2352941176470600137538014</real>
264 <real>0.06274509803921600459286623</real>
265 <real>0.38431372549019998663411</real>
266 <real>1</real>
267 </array>
268 <key>name</key>
269 <string>Genesis</string>
270 </map>
271 <key>3ab7e2fa-9572-ef36-1a30-d855dbea4f92</key>
272 <map>
273 <key>color</key>
274 <array>
275 <real>-0.4901960784313699748260262</real>
276 <real>-0.09411764705882399995040544</real>
277 <real>0.3176470588235300041013431</real>
278 <real>1</real>
279 </array>
280 <key>name</key>
281 <string>Combat Cubed</string>
282 </map>
283 <key>3da8a69a-58ca-023f-2161-57f2ab3b5702</key>
284 <map>
285 <key>color</key>
286 <array>
287 <real>-0.9843137254902000199408008</real>
288 <real>0.0509803921568630011296186</real>
289 <real>0.6352941176470600082026863</real>
290 <real>1</real>
291 </array>
292 <key>evil</key>
293 <boolean>1</boolean>
294 <key>name</key>
295 <string>Operator</string>
296 </map>
297 <key>3f23c201-e73a-4b86-b294-5fef9919dc23</key>
298 <map>
299 <key>color</key>
300 <array>
301 <real>-0.9843137254902000199408008</real>
302 <real>-0.1843137254902000032874554</real>
303 <real>0.6352941176470600082026863</real>
304 <real>1</real>
305 </array>
306 <key>name</key>
307 <string>Shotta</string>
308 </map>
309 <key>481a055f-36b5-af82-ac49-24709f013e50</key>
310 <map>
311 <key>color</key>
312 <array>
313 <real>-0.2784313725490200064349722</real>
314 <real>0.1607843137254900134358593</real>
315 <real>-0.3647058823529399917973137</real>
316 <real>1</real>
317 </array>
318 <key>name</key>
319 <string>Nano</string>
320 </map>
321 <key>4b6f6b75-bf77-d1ff-0000-000000000000</key>
322 <map>
323 <key>color</key>
324 <array>
325 <real>-0.2352941176470600137538014</real>
326 <real>-0.2196078431372499861762293</real>
327 <real>0.4431372549019599871300557</real>
328 <real>1</real>
329 </array>
330 <key>name</key>
331 <string>Kokua</string>
332 </map>
333 <key>4b84e182-f0cc-d8da-94c8-25b59c4e4b99</key>
334 <map>
335 <key>color</key>
336 <array>
337 <real>-0.003921568627451000287054139</real>
338 <real>-0.1372549019607799958286876</real>
339 <real>-0.3647058823529399917973137</real>
340 <real>1</real>
341 </array>
342 <key>name</key>
343 <string>Deus Ex Machina</string>
344 </map>
345 <key>4ca51a79-41c0-91ec-7c58-a5195951bda2</key>
346 <map>
347 <key>color</key>
348 <array>
349 <real>0.01568627450980400114821656</real>
350 <real>-0.4156862745098000022636597</real>
351 <real>-0.3647058823529399917973137</real>
352 <real>1</real>
353 </array>
354 <key>name</key>
355 <string>Horny Thel</string>
356 </map>
357 <key>4da16427-d81e-e816-f346-aaf4741b8056</key>
358 <map>
359 <key>color</key>
360 <array>
361 <real>0.01176470588235299999380068</real>
362 <real>0.2078431372549000011318299</real>
363 <real>0.423529411764709984300481</real>
364 <real>1</real>
365 </array>
366 <key>name</key>
367 <string>iLife</string>
368 </map>
369 <key>4e6c4027-9bbd-2dc5-2c00-c55a08fd49d1</key>
370 <map>
371 <key>color</key>
372 <array>
373 <real>-0.9019607843137299463265322</real>
374 <real>-0.6117647058823499905955146</real>
375 <real>-0.2901960784313700192349472</real>
376 <real>1</real>
377 </array>
378 <key>name</key>
379 <string>DOWN SYNDROME</string>
380 </map>
381 <key>4e8dcf80-336b-b1d8-ef3e-08dacf015a0f</key>
382 <map>
383 <key>color</key>
384 <array>
385 <real>-0.6549019607843099555211097</real>
386 <real>-0.4588235294117600227004061</real>
387 <real>-0.243137254901960003783401</real>
388 <real>1</real>
389 </array>
390 <key>name</key>
391 <string>Sapphire</string>
392 </map>
393 <key>4eb67510-0924-ebb1-50ca-8af5694cd267</key>
394 <map>
395 <key>color</key>
396 <array>
397 <real>-0.6352941176470600082026863</real>
398 <real>-0.3372549019607800069309178</real>
399 <real>0.6352941176470600082026863</real>
400 <real>1</real>
401 </array>
402 <key>name</key>
403 <string>Emerald</string>
404 </map>
405 <key>5262d71a-88f7-ef40-3b15-00ea148ab4b5</key>
406 <map>
407 <key>color</key>
408 <array>
409 <real>-0.1215686274509800018917005</real>
410 <real>0.07450980392156900111721995</real>
411 <real>0.02352941176470599998760136</real>
412 <real>1</real>
413 </array>
414 <key>name</key>
415 <string>Gemini.Bot</string>
416 </map>
417 <key>54d93609-1392-2a93-255c-a9dd429ecca5</key>
418 <map>
419 <key>color</key>
420 <array>
421 <real>-0.1686274509803900034654589</real>
422 <real>-0.6862745098039200186690323</real>
423 <real>-0.3647058823529399917973137</real>
424 <real>1</real>
425 </array>
426 <key>name</key>
427 <string>Emergence</string>
428 </map>
429 <key>57f9da7c-0323-c412-58be-80b0441b887e</key>
430 <map>
431 <key>color</key>
432 <array>
433 <real>-0.7019607843137299907354532</real>
434 <real>-0.4313725490196099743300806</real>
435 <real>0.5450980392156900000699693</real>
436 <real>1</real>
437 </array>
438 <key>name</key>
439 <string>Neon Glow</string>
440 </map>
441 <key>58a8b7ec-1455-7162-5d96-d3c3ead2ed71</key>
442 <map>
443 <key>color</key>
444 <array>
445 <real>-0.4901960784313699748260262</real>
446 <real>-0.09411764705882399995040544</real>
447 <real>0.3176470588235300041013431</real>
448 <real>1</real>
449 </array>
450 <key>name</key>
451 <string>Combat Cubed</string>
452 </map>
453 <key>5aa5c70d-d787-571b-0495-4fc1bdef1500</key>
454 <map>
455 <key>color</key>
456 <array>
457 <real>0.01176470588235299999380068</real>
458 <real>-0.4588235294117600227004061</real>
459 <real>-0.243137254901960003783401</real>
460 <real>1</real>
461 </array>
462 <key>name</key>
463 <string>LGG Proxy</string>
464 </map>
465 <key>5bb6e4a6-8e24-7c92-be2e-91419bb0ebcb</key>
466 <map>
467 <key>color</key>
468 <array>
469 <real>-0.6352941176470600082026863</real>
470 <real>-0.3372549019607800069309178</real>
471 <real>0.6352941176470600082026863</real>
472 <real>1</real>
473 </array>
474 <key>name</key>
475 <string>Phoenix</string>
476 </map>
477 <key>5d9581af-d615-bc16-2667-2f04f8eeefe4</key>
478 <map>
479 <key>color</key>
480 <array>
481 <real>-0.6549019607843099555211097</real>
482 <real>0.2078431372549000011318299</real>
483 <real>-0.243137254901960003783401</real>
484 <real>1</real>
485 </array>
486 <key>name</key>
487 <string>Phoenix</string>
488 </map>
489 <key>5f0e7c32-38c3-9214-01f0-fb16a5b40128</key>
490 <map>
491 <key>color</key>
492 <array>
493 <real>0.01568627450980400114821656</real>
494 <real>0.3137254901960799813309677</real>
495 <real>-0.1803921568627500082726556</real>
496 <real>1</real>
497 </array>
498 <key>name</key>
499 <string>Phoenix</string>
500 </map>
501 <key>602243f4-8fb1-ac00-d5bc-7ab50c4433b7</key>
502 <map>
503 <key>color</key>
504 <array>
505 <real>-0.4823529411764699847964266</real>
506 <real>-0.6862745098039200186690323</real>
507 <real>0.6352941176470600082026863</real>
508 <real>1</real>
509 </array>
510 <key>name</key>
511 <string>Emerald</string>
512 </map>
513 <key>6043a54c-b320-523a-ed15-a8fdd2ebc923</key>
514 <map>
515 <key>color</key>
516 <array>
517 <real>-0.9372549019607799847264573</real>
518 <real>-0.6862745098039200186690323</real>
519 <real>0.6352941176470600082026863</real>
520 <real>1</real>
521 </array>
522 <key>name</key>
523 <string>Blunix</string>
524 </map>
525 <key>611300d4-9188-102f-9530-68c7f52dc17a</key>
526 <map>
527 <key>color</key>
528 <array>
529 <real>-0.003921568627451000287054139</real>
530 <real>-0.3058823529411799913013681</real>
531 <real>0.2117647058823499961466297</real>
532 <real>1</real>
533 </array>
534 <key>name</key>
535 <string>C1501</string>
536 </map>
537 <key>697e702f-29e2-2a31-8dcd-b53f5c25a27c</key>
538 <map>
539 <key>color</key>
540 <array>
541 <real>-0.2392156862745100087686012</real>
542 <real>-0.05490196078431400228403447</real>
543 <real>0.1607843137254900134358593</real>
544 <real>1</real>
545 </array>
546 <key>name</key>
547 <string>Milkshake</string>
548 </map>
549 <key>6c622b79-b49d-b5da-e4d1-2f45ecec6106</key>
550 <map>
551 <key>color</key>
552 <array>
553 <real>0.01568627450980400114821656</real>
554 <real>0.3137254901960799813309677</real>
555 <real>-0.3647058823529399917973137</real>
556 <real>1</real>
557 </array>
558 <key>name</key>
559 <string>Volt Viewer</string>
560 </map>
561 <key>734bae36-a197-b087-ee2d-a098d58fed55</key>
562 <map>
563 <key>color</key>
564 <array>
565 <real>0.01568627450980400114821656</real>
566 <real>-0.1882352941176499983022552</real>
567 <real>0.1333333333333300008138878</real>
568 <real>1</real>
569 </array>
570 <key>name</key>
571 <string>Moreland Grove</string>
572 </map>
573 <key>734fed29-4c51-63e5-1648-6589949d7585</key>
574 <map>
575 <key>color</key>
576 <array>
577 <real>-0.38431372549019998663411</real>
578 <real>-0.2588235294117600115981759</real>
579 <real>0.4431372549019599871300557</real>
580 <real>1</real>
581 </array>
582 <key>name</key>
583 <string>Explicit</string>
584 </map>
585 <key>745ac6b7-5b03-450d-6b01-577da127d7d2</key>
586 <map>
587 <key>color</key>
588 <array>
589 <real>-0.9843137254902000199408008</real>
590 <real>-0.6862745098039200186690323</real>
591 <real>0.2235294117647100009538264</real>
592 <real>1</real>
593 </array>
594 <key>name</key>
595 <string>Zidonuke</string>
596 </map>
597 <key>77662f23-c77a-9b4d-5558-26b757b2144c</key>
598 <map>
599 <key>color</key>
600 <array>
601 <real>-0.192156862745099993317055</real>
602 <real>-0.243137254901960003783401</real>
603 <real>0.2156862745097999911614295</real>
604 <real>1</real>
605 </array>
606 <key>name</key>
607 <string>PSL</string>
608 </map>
609 <key>7c4d47a3-0c51-04d1-fa47-e4f3ac12f59b</key>
610 <map>
611 <key>color</key>
612 <array>
613 <real>0.01176470588235299999380068</real>
614 <real>0.2078431372549000011318299</real>
615 <real>0.423529411764709984300481</real>
616 <real>1</real>
617 </array>
618 <key>name</key>
619 <string>Kung Fu</string>
620 </map>
621 <key>7d65a82d-df53-1e5d-65ea-f82c98fa9d16</key>
622 <map>
623 <key>color</key>
624 <array>
625 <real>-0.3529411764705899789973387</real>
626 <real>-0.5607843137254899801291685</real>
627 <real>0.5725490196078399929291436</real>
628 <real>1</real>
629 </array>
630 <key>name</key>
631 <string>BSD</string>
632 </map>
633 <key>806a8249-e235-f051-ac4c-0a58b570f1c1</key>
634 <map>
635 <key>color</key>
636 <array>
637 <real>-0.5450980392156900000699693</real>
638 <real>0.03529411764705900345084899</real>
639 <real>0.6352941176470600082026863</real>
640 <real>1</real>
641 </array>
642 <key>name</key>
643 <string>Luna</string>
644 </map>
645 <key>8078ffb3-840c-d037-caf3-5cd02c2e7040</key>
646 <map>
647 <key>color</key>
648 <array>
649 <real>0.01568627450980400114821656</real>
650 <real>0.3137254901960799813309677</real>
651 <real>-0.1803921568627500082726556</real>
652 <real>1</real>
653 </array>
654 <key>name</key>
655 <string>Emerald</string>
656 </map>
657 <key>8183e823-c443-2142-6eb6-2ab763d4f81c</key>
658 <map>
659 <key>color</key>
660 <array>
661 <real>-0.4901960784313699748260262</real>
662 <real>-0.3411764705882400217085149</real>
663 <real>0.3176470588235300041013431</real>
664 <real>1</real>
665 </array>
666 <key>name</key>
667 <string>Day Oh proxy</string>
668 </map>
669 <key>81b3e921-ee31-aa57-ff9b-ec1f28e41da1</key>
670 <map>
671 <key>color</key>
672 <array>
673 <real>-0.2549019607843099888278005</real>
674 <real>-0.05882352941176500343845035</real>
675 <real>0.02352941176470599998760136</real>
676 <real>1</real>
677 </array>
678 <key>name</key>
679 <string>Infinity</string>
680 </map>
681 <key>841ef25b-3b90-caf9-ea3d-5649e755db65</key>
682 <map>
683 <key>color</key>
684 <array>
685 <real>-0.4901960784313699748260262</real>
686 <real>-0.09411764705882399995040544</real>
687 <real>0.3176470588235300041013431</real>
688 <real>1</real>
689 </array>
690 <key>name</key>
691 <string>Combat Cubed</string>
692 </map>
693 <key>869e0c1a-a2d9-4b92-bd70-5044d6bd2284</key>
694 <map>
695 <key>color</key>
696 <array>
697 <real>-0.9647058823529399695928532</real>
698 <real>-0.09803921568627499416592741</real>
699 <real>0.6196078431372500361362654</real>
700 <real>1</real>
701 </array>
702 <key>name</key>
703 <string>Bluebird</string>
704 </map>
705 <key>8873757c-092a-98fb-1afd-ecd347566fcd</key>
706 <map>
707 <key>color</key>
708 <array>
709 <real>-0.6078431372549000233362904</real>
710 <real>0.3137254901960799813309677</real>
711 <real>0.6352941176470600082026863</real>
712 <real>1</real>
713 </array>
714 <key>name</key>
715 <string>Ascent</string>
716 </map>
717 <key>8cc85294-c3d9-8f9f-e507-c324ef49786e</key>
718 <map>
719 <key>color</key>
720 <array>
721 <real>-0.9843137254902000199408008</real>
722 <real>-0.6862745098039200186690323</real>
723 <real>-0.3647058823529399917973137</real>
724 <real>1</real>
725 </array>
726 <key>name</key>
727 <string>IncognitoLife</string>
728 </map>
729 <key>8cdf6c66-2f8f-1aa9-f8ee-0493acf90328</key>
730 <map>
731 <key>color</key>
732 <array>
733 <real>-0.5764705882352899601883678</real>
734 <real>-0.5529411764705900456107202</real>
735 <real>0.1803921568627500082726556</real>
736 <real>1</real>
737 </array>
738 <key>name</key>
739 <string>Nexus</string>
740 </map>
741 <key>8cf0577c-22d3-6a73-523c-15c0a90d6c27</key>
742 <map>
743 <key>color</key>
744 <array>
745 <real>-0.2549019607843099888278005</real>
746 <real>-0.3254901960784299941309428</real>
747 <real>0.2901960784313700192349472</real>
748 <real>1</real>
749 </array>
750 <key>name</key>
751 <string>Phoenix</string>
752 </map>
753 <key>91144252-196e-bac9-3737-92752eee612d</key>
754 <map>
755 <key>color</key>
756 <array>
757 <real>-0.1137254901960799979843131</real>
758 <real>0.1725490196078399984802587</real>
759 <real>0.6352941176470600082026863</real>
760 <real>1</real>
761 </array>
762 <key>name</key>
763 <string>Canine</string>
764 </map>
765 <key>92fc8bff-c604-815a-a716-60be97ed53d1</key>
766 <map>
767 <key>color</key>
768 <array>
769 <real>0.01568627450980400114821656</real>
770 <real>-0.08627450980392199764157368</real>
771 <real>-0.2627450980392200263757729</real>
772 <real>1</real>
773 </array>
774 <key>name</key>
775 <string>Banana</string>
776 </map>
777 <key>9422e9d7-7b11-83e4-6262-4a8db4716a3b</key>
778 <map>
779 <key>color</key>
780 <array>
781 <real>0.01176470588235299999380068</real>
782 <real>-0.4588235294117600227004061</real>
783 <real>0.423529411764709984300481</real>
784 <real>1</real>
785 </array>
786 <key>name</key>
787 <string>BetaLife</string>
788 </map>
789 <key>9995490f-b248-46f2-91ed-910289676f99</key>
790 <map>
791 <key>color</key>
792 <array>
793 <real>-0.7294117647058799835946274</real>
794 <real>-0.4313725490196099743300806</real>
795 <real>-0.1098039215686300029695133</real>
796 <real>1</real>
797 </array>
798 <key>name</key>
799 <string>$</string>
800 </map>
801 <key>9a4d13d4-b36b-ff89-715b-9b53091c1473</key>
802 <map>
803 <key>color</key>
804 <array>
805 <real>-0.1019607843137299990621258</real>
806 <real>0.1960784313725499883318548</real>
807 <real>-0.3647058823529399917973137</real>
808 <real>1</real>
809 </array>
810 <key>name</key>
811 <string>SuperLife</string>
812 </map>
813 <key>9ee02f6b-c244-75d4-1737-da8afb9d8d52</key>
814 <map>
815 <key>color</key>
816 <array>
817 <real>-0.0509803921568630011296186</real>
818 <real>0.2470588235294099987982008</real>
819 <real>0.6352941176470600082026863</real>
820 <real>1</real>
821 </array>
822 <key>name</key>
823 <string>Hacked</string>
824 </map>
825 <key>a1057672-e67b-7b40-118c-4e6898457dcb</key>
826 <map>
827 <key>color</key>
828 <array>
829 <real>-0.6313725490196100409434621</real>
830 <real>-0.6862745098039200186690323</real>
831 <real>-0.3607843137254900245380895</real>
832 <real>1</real>
833 </array>
834 <key>name</key>
835 <string>TeeLife</string>
836 </map>
837 <key>adcbe893-7643-fd12-f61c-0b39717e2e32</key>
838 <map>
839 <key>color</key>
840 <array>
841 <real>0.007843137254902000574108278</real>
842 <real>-0.09411764705882399995040544</real>
843 <real>0.2196078431372499861762293</real>
844 <real>1</real>
845 </array>
846 <key>name</key>
847 <string>tyk3n</string>
848 </map>
849 <key>ae4e92fb-023d-23ba-d060-3403f953ab1a</key>
850 <map>
851 <key>color</key>
852 <array>
853 <real>0.01176470588235299999380068</real>
854 <real>-0.1254901960784300107842881</real>
855 <real>0.2901960784313700192349472</real>
856 <real>1</real>
857 </array>
858 <key>name</key>
859 <string>Phoenix</string>
860 </map>
861 <key>af22a7af-a3f9-b4e4-79de-3d9f4653f9e3</key>
862 <map>
863 <key>color</key>
864 <array>
865 <real>-0.2392156862745100087686012</real>
866 <real>-0.4509803921568599771596553</real>
867 <real>-0.1686274509803900034654589</real>
868 <real>1</real>
869 </array>
870 <key>name</key>
871 <string>Foxy!</string>
872 </map>
873 <key>af8c86bd-c377-c331-7476-58abeb7af8fc</key>
874 <map>
875 <key>color</key>
876 <array>
877 <real>-0.4431372549019599871300557</real>
878 <real>-0.5176470588235300152035734</real>
879 <real>0.5215686274509799824627976</real>
880 <real>1</real>
881 </array>
882 <key>name</key>
883 <string>The Sorcerer</string>
884 </map>
885 <key>b2848bed-38b3-3d6b-6ebe-7b4cb7d4994a</key>
886 <map>
887 <key>color</key>
888 <array>
889 <real>-0.9450980392156900222744298</real>
890 <real>-0.4901960784313699748260262</real>
891 <real>-0.2862745098039199964645718</real>
892 <real>1</real>
893 </array>
894 <key>name</key>
895 <string>KoreDEV-Ghost</string>
896 </map>
897 <key>b32f01bc-f9b3-4535-b1f3-99dc38f022db</key>
898 <map>
899 <key>color</key>
900 <array>
901 <real>0.8</real>
902 <real>1.0</real>
903 <real>0.0</real>
904 <real>1</real>
905 </array>
906 <key>name</key>
907 <string>meta 7</string>
908 </map>
909 <key>f5788536-508d-4d2a-b6db-bb2b4a19f626</key>
910 <map>
911 <key>color</key>
912 <array>
913 <real>0.5</real>
914 <real>0.5</real>
915 <real>1.0</real>
916 <real>1</real>
917 </array>
918 <key>name</key>
919 <string>meta-impy</string>
920 </map>
921 <key>b33b69ae-6b6c-b395-0175-ce76a871173b</key>
922 <map>
923 <key>color</key>
924 <array>
925 <real>-0.5843137254901999977363403</real>
926 <real>-0.4196078431372500250340352</real>
927 <real>0.6352941176470600082026863</real>
928 <real>1</real>
929 </array>
930 <key>name</key>
931 <string>Nicholas</string>
932 </map>
933 <key>b6820989-bf42-ff59-ddde-fd3fd3a74fe4</key>
934 <map>
935 <key>color</key>
936 <array>
937 <real>0.007843137254902000574108278</real>
938 <real>0.1058823529411799940769257</real>
939 <real>0.1686274509803900034654589</real>
940 <real>1</real>
941 </array>
942 <key>name</key>
943 <string>Meerkat</string>
944 </map>
945 <key>b8c99aa0-6e82-0a84-3fc9-f73dc89471c2</key>
946 <map>
947 <key>color</key>
948 <array>
949 <real>-0.3176470588235300041013431</real>
950 <real>-0.6862745098039200186690323</real>
951 <real>0.2352941176470600137538014</real>
952 <real>1</real>
953 </array>
954 <key>name</key>
955 <string>ProlapsedPussyLife</string>
956 </map>
957 <key>bb7fba3a-e7e0-14d6-b1ae-ce43f67745ab</key>
958 <map>
959 <key>color</key>
960 <array>
961 <real>-0.9843137254902000199408008</real>
962 <real>0.3137254901960799813309677</real>
963 <real>-0.3607843137254900245380895</real>
964 <real>1</real>
965 </array>
966 <key>name</key>
967 <string>Apple Life</string>
968 </map>
969 <key>bdef8fc2-df54-fa80-757a-f7f346bbcf77</key>
970 <map>
971 <key>color</key>
972 <array>
973 <real>-0.4392156862745100198708315</real>
974 <real>-0.4156862745098000022636597</real>
975 <real>-0.2901960784313700192349472</real>
976 <real>1</real>
977 </array>
978 <key>name</key>
979 <string>KoreDEV</string>
980 </map>
981 <key>bf33bd15-7020-cce1-3725-48923440b7ee</key>
982 <map>
983 <key>color</key>
984 <array>
985 <real>-0.003921568627451000287054139</real>
986 <real>0.003921568627451000287054139</real>
987 <real>-0.02352941176470599998760136</real>
988 <real>1</real>
989 </array>
990 <key>name</key>
991 <string>Emerald</string>
992 </map>
993 <key>c1936b62-6db5-1bc2-cfb6-54b040db74b4</key>
994 <map>
995 <key>color</key>
996 <array>
997 <real>-0.2000000000000000111022302</real>
998 <real>0.09803921568627499416592741</real>
999 <real>0.1058823529411799940769257</real>
1000 <real>1</real>
1001 </array>
1002 <key>name</key>
1003 <string>Shenanigans</string>
1004 </map>
1005 <key>c1c189f5-6dab-fc03-ea5a-f9f68f90b018</key>
1006 <map>
1007 <key>color</key>
1008 <array>
1009 <real>0.01176470588235299999380068</real>
1010 <real>-0.2901960784313700192349472</real>
1011 <real>-0.243137254901960003783401</real>
1012 <real>1</real>
1013 </array>
1014 <key>name</key>
1015 <string>Phoenix</string>
1016 </map>
1017 <key>c1d1a634-7d1f-70ac-513e-471c3a81d01b</key>
1018 <map>
1019 <key>color</key>
1020 <array>
1021 <real>-0.4392156862745100198708315</real>
1022 <real>-0.6509803921568599882618855</real>
1023 <real>0.5999999999999999777955395</real>
1024 <real>1</real>
1025 </array>
1026 <key>name</key>
1027 <string>c1Tanzanite</string>
1028 </map>
1029 <key>c252d89d-6f7c-7d90-f430-d140d2e3fbbe</key>
1030 <map>
1031 <key>color</key>
1032 <array>
1033 <real>0.007843137254902000574108278</real>
1034 <real>-0.3411764705882400217085149</real>
1035 <real>-0.1803921568627500082726556</real>
1036 <real>1</real>
1037 </array>
1038 <key>evil</key>
1039 <boolean>1</boolean>
1040 <key>name</key>
1041 <string>VLife</string>
1042 </map>
1043 <key>c3e958f3-cfb5-9e8b-edb7-d12d5c0623d5</key>
1044 <map>
1045 <key>color</key>
1046 <array>
1047 <real>-0.7215686274509800490761791</real>
1048 <real>-0.2549019607843099888278005</real>
1049 <real>0.5686274509803900256699194</real>
1050 <real>1</real>
1051 </array>
1052 <key>name</key>
1053 <string>Winky</string>
1054 </map>
1055 <key>c58fca06-33b3-827d-d81c-a886a631affc</key>
1056 <map>
1057 <key>color</key>
1058 <array>
1059 <real>0.01568627450980400114821656</real>
1060 <real>-0.07450980392156900111721995</real>
1061 <real>-0.3647058823529399917973137</real>
1062 <real>1</real>
1063 </array>
1064 <key>name</key>
1065 <string>Whale</string>
1066 </map>
1067 <key>c5b570ca-bb7e-3c81-afd1-f62646b20014</key>
1068 <map>
1069 <key>color</key>
1070 <array>
1071 <real>0.01176470588235299999380068</real>
1072 <real>0.2078431372549000011318299</real>
1073 <real>0.423529411764709984300481</real>
1074 <real>1</real>
1075 </array>
1076 <key>name</key>
1077 <string>Kung Fu</string>
1078 </map>
1079 <key>cc7a030f-282f-c165-44d2-b5ee572e72bf</key>
1080 <map>
1081 <key>color</key>
1082 <array>
1083 <real>0.79</real>
1084 <real>0.44</real>
1085 <real>0.66</real>
1086 <real>1</real>
1087 </array>
1088 <key>name</key>
1089 <string>Imprudence</string>
1090 </map>
1091 <key>ccb509cf-cc69-e569-38f1-5086c687afd1</key>
1092 <map>
1093 <key>color</key>
1094 <array>
1095 <real>-0.1215686274509800018917005</real>
1096 <real>-0.3921568627450999766637096</real>
1097 <real>0.02352941176470599998760136</real>
1098 <real>1</real>
1099 </array>
1100 <key>name</key>
1101 <string>Ruby</string>
1102 </map>
1103 <key>ccda2b3b-e72c-a112-e126-fee238b67218</key>
1104 <map>
1105 <key>color</key>
1106 <array>
1107 <real>-0.6549019607843099555211097</real>
1108 <real>0.2078431372549000011318299</real>
1109 <real>-0.243137254901960003783401</real>
1110 <real>1</real>
1111 </array>
1112 <key>name</key>
1113 <string>Emerald</string>
1114 </map>
1115 <key>d0770263-aec5-6a26-f987-37c14e8f6523</key>
1116 <map>
1117 <key>color</key>
1118 <array>
1119 <real>-0.9843137254902000199408008</real>
1120 <real>-0.6862745098039200186690323</real>
1121 <real>0.5176470588235300152035734</real>
1122 <real>1</real>
1123 </array>
1124 <key>evil</key>
1125 <boolean>1</boolean>
1126 <key>name</key>
1127 <string>HXO-Life</string>
1128 </map>
1129 <key>d2fd7988-786f-40bc-54cb-c2ad557a639d</key>
1130 <map>
1131 <key>color</key>
1132 <array>
1133 <real>-0.04313725490196099882078684</real>
1134 <real>-0.6862745098039200186690323</real>
1135 <real>-0.3647058823529399917973137</real>
1136 <real>1</real>
1137 </array>
1138 <key>name</key>
1139 <string>Firestorm</string>
1140 </map>
1141 <key>46697265-7374-6f72-6d00-000000000000</key>
1142 <map>
1143 <key>color</key>
1144 <array>
1145 <real>-0.04313725490196099882078684</real>
1146 <real>-0.6862745098039200186690323</real>
1147 <real>-0.3647058823529399917973137</real>
1148 <real>1</real>
1149 </array>
1150 <key>name</key>
1151 <string>Firestorm</string>
1152 </map>
1153 <key>d3eb4a5f-aec5-4bcb-b007-cce9efe89d37</key>
1154 <map>
1155 <key>color</key>
1156 <array>
1157 <real>-0.6549019607843099555211097</real>
1158 <real>-0.2588235294117600115981759</real>
1159 <real>-0.243137254901960003783401</real>
1160 <real>1</real>
1161 </array>
1162 <key>name</key>
1163 <string>rivlife</string>
1164 </map>
1165 <key>d64bf2e9-651f-0b6e-9e8f-4311d42287e3</key>
1166 <map>
1167 <key>color</key>
1168 <array>
1169 <real>-0.486274509803920007566802</real>
1170 <real>-0.4392156862745100198708315</real>
1171 <real>0.6352941176470600082026863</real>
1172 <real>1</real>
1173 </array>
1174 <key>name</key>
1175 <string>Pie_Viewer</string>
1176 </map>
1177 <key>dd0ccfa2-8124-b165-176d-f3dc08f4189e</key>
1178 <map>
1179 <key>color</key>
1180 <array>
1181 <real>-0.4823529411764699847964266</real>
1182 <real>-0.6862745098039200186690323</real>
1183 <real>0.6352941176470600082026863</real>
1184 <real>1</real>
1185 </array>
1186 <key>name</key>
1187 <string>Phoenix</string>
1188 </map>
1189 <key>ddf41cfa-f5c5-0dee-3ed9-f3fb0adb1ead</key>
1190 <map>
1191 <key>color</key>
1192 <array>
1193 <real>0.01568627450980400114821656</real>
1194 <real>-0.6862745098039200186690323</real>
1195 <real>0.6352941176470600082026863</real>
1196 <real>1</real>
1197 </array>
1198 <key>name</key>
1199 <string>Phoenix</string>
1200 </map>
1201 <key>e35f7d40-6071-4b29-9727-5647bdafb5d5</key>
1202 <map>
1203 <key>color</key>
1204 <array>
1205 <real>0.01568627450980400114821656</real>
1206 <real>0.3137254901960799813309677</real>
1207 <real>0.6352941176470600082026863</real>
1208 <real>1</real>
1209 </array>
1210 <key>name</key>
1211 <string>Phoenix</string>
1212 </map>
1213 <key>e4117c3f-cc02-d537-665d-c31b8c11bb18</key>
1214 <map>
1215 <key>color</key>
1216 <array>
1217 <real>0.01568627450980400114821656</real>
1218 <real>-0.6862745098039200186690323</real>
1219 <real>0.6352941176470600082026863</real>
1220 <real>1</real>
1221 </array>
1222 <key>name</key>
1223 <string>Emerald</string>
1224 </map>
1225 <key>e46e7c2b-1de3-5347-db43-42ee4e1f5bf2</key>
1226 <map>
1227 <key>color</key>
1228 <array>
1229 <real>-0.2784313725490200064349722</real>
1230 <real>0.01960784313725499883318548</real>
1231 <real>0.3411764705882400217085149</real>
1232 <real>1</real>
1233 </array>
1234 <key>name</key>
1235 <string>Vos</string>
1236 </map>
1237 <key>e52d21f7-3c8b-819f-a3db-65c432295dac</key>
1238 <map>
1239 <key>color</key>
1240 <array>
1241 <real>-0.6549019607843099555211097</real>
1242 <real>-0.5764705882352899601883678</real>
1243 <real>0.423529411764709984300481</real>
1244 <real>1</real>
1245 </array>
1246 <key>evil</key>
1247 <boolean>1</boolean>
1248 <key>name</key>
1249 <string>CryoLife</string>
1250 </map>
1251 <key>e5a99018-4886-d48d-4793-54514f3c5a7b</key>
1252 <map>
1253 <key>color</key>
1254 <array>
1255 <real>-0.1568627450980399906654839</real>
1256 <real>0.1411764705882400106062846</real>
1257 <real>0.4627450980392199819668519</real>
1258 <real>1</real>
1259 </array>
1260 <key>name</key>
1261 <string>MarzWorld</string>
1262 </map>
1263 <key>e71b780e-1a57-400d-4649-959f69ec7d51</key>
1264 <map>
1265 <key>color</key>
1266 <array>
1267 <real>0.01176470588235299999380068</real>
1268 <real>-0.4588235294117600227004061</real>
1269 <real>-0.243137254901960003783401</real>
1270 <real>1</real>
1271 </array>
1272 <key>name</key>
1273 <string>Phoenix</string>
1274 </map>
1275 <key>e734563e-1c31-2a35-3ed5-8552c807439f</key>
1276 <map>
1277 <key>color</key>
1278 <array>
1279 <real>-0.4901960784313699748260262</real>
1280 <real>-0.09411764705882399995040544</real>
1281 <real>0.3176470588235300041013431</real>
1282 <real>1</real>
1283 </array>
1284 <key>name</key>
1285 <string>Combat Cubed</string>
1286 </map>
1287 <key>e741e2bf-cf8c-191c-97f2-b2709a843dfc</key>
1288 <map>
1289 <key>color</key>
1290 <array>
1291 <real>0.01176470588235299999380068</real>
1292 <real>-0.2901960784313700192349472</real>
1293 <real>-0.243137254901960003783401</real>
1294 <real>1</real>
1295 </array>
1296 <key>name</key>
1297 <string>Emerald</string>
1298 </map>
1299 <key>e8dd2ab3-e074-710c-bac9-e80790990bff</key>
1300 <map>
1301 <key>color</key>
1302 <array>
1303 <real>-0.4901960784313699748260262</real>
1304 <real>-0.09411764705882399995040544</real>
1305 <real>0.3176470588235300041013431</real>
1306 <real>1</real>
1307 </array>
1308 <key>name</key>
1309 <string>Combat Cubed</string>
1310 </map>
1311 <key>ed63fbd0-589e-fe1d-a3d0-16905efaa96b</key>
1312 <map>
1313 <key>color</key>
1314 <array>
1315 <real>-0.3215686274509800268717186</real>
1316 <real>-0.4588235294117600227004061</real>
1317 <real>-0.2392156862745100087686012</real>
1318 <real>1</real>
1319 </array>
1320 <key>name</key>
1321 <string>Phoenix</string>
1322 </map>
1323 <key>ed943d3f-7a29-8339-11b9-cd0c06a1241b</key>
1324 <map>
1325 <key>color</key>
1326 <array>
1327 <real>-0.5058823529411800024035983</real>
1328 <real>-0.2078431372549000011318299</real>
1329 <real>0.1137254901960799979843131</real>
1330 <real>1</real>
1331 </array>
1332 <key>name</key>
1333 <string>/yiff/</string>
1334 </map>
1335 <key>f25263b7-6167-4f34-a4ef-af65213b2e39</key>
1336 <map>
1337 <key>color</key>
1338 <array>
1339 <real>-0.2784313725490200064349722</real>
1340 <real>0.09803921568627499416592741</real>
1341 <real>0.4196078431372500250340352</real>
1342 <real>1</real>
1343 </array>
1344 <key>name</key>
1345 <string>Singularity</string>
1346 </map>
1347 <key>f3fd74a6-fee7-4b2f-93ae-ddcb5991da04</key>
1348 <map>
1349 <key>color</key>
1350 <array>
1351 <real>-0.192156862745099993317055</real>
1352 <real>-0.243137254901960003783401</real>
1353 <real>0.2156862745097999911614295</real>
1354 <real>1</real>
1355 </array>
1356 <key>name</key>
1357 <string>PSL</string>
1358 </map>
1359 <key>f40db76a-f6fc-449f-a6e8-47e1484fa294</key>
1360 <map>
1361 <key>color</key>
1362 <array>
1363 <real>0.01568627450980400114821656</real>
1364 <real>-0.3725490196078399818269133</real>
1365 <real>0.2941176470588199864941714</real>
1366 <real>1</real>
1367 </array>
1368 <key>name</key>
1369 <string>JoinOurHomoMafia</string>
1370 </map>
1371 <key>f5a48821-9a98-d09e-8d6a-50cc08ba9a47</key>
1372 <map>
1373 <key>color</key>
1374 <array>
1375 <real>0.01176470588235299999380068</real>
1376 <real>0.2078431372549000011318299</real>
1377 <real>-0.243137254901960003783401</real>
1378 <real>1</real>
1379 </array>
1380 <key>evil</key>
1381 <boolean>1</boolean>
1382 <key>name</key>
1383 <string>NeilLife</string>
1384 </map>
1385 <key>f5feab57-bde5-2074-97af-517290213eaa</key>
1386 <map>
1387 <key>color</key>
1388 <array>
1389 <real>-0.6235294117647099954027112</real>
1390 <real>-0.3254901960784299941309428</real>
1391 <real>-0.003921568627451000287054139</real>
1392 <real>1</real>
1393 </array>
1394 <key>evil</key>
1395 <boolean>1</boolean>
1396 <key>name</key>
1397 <string>Onyx</string>
1398 </map>
1399 <key>f709044d-3f7e-3d94-6c40-17e9d456d35a</key>
1400 <map>
1401 <key>color</key>
1402 <array>
1403 <real>-0.9843137254902000199408008</real>
1404 <real>0.1803921568627500082726556</real>
1405 <real>-0.3647058823529399917973137</real>
1406 <real>1</real>
1407 </array>
1408 <key>name</key>
1409 <string>God Proxy</string>
1410 </map>
1411 <key>f8551a21-c960-5132-366a-f55ea63d97c3</key>
1412 <map>
1413 <key>color</key>
1414 <array>
1415 <real>-0.3411764705882400217085149</real>
1416 <real>-0.04313725490196099882078684</real>
1417 <real>0.2784313725490200064349722</real>
1418 <real>1</real>
1419 </array>
1420 <key>name</key>
1421 <string>Hacker</string>
1422 </map>
1423 <key>ffb65745-2120-e248-33e0-13dd9166b3ba</key>
1424 <map>
1425 <key>color</key>
1426 <array>
1427 <real>0.01568627450980400114821656</real>
1428 <real>-0.5568627450980400128699443</real>
1429 <real>-0.2352941176470600137538014</real>
1430 <real>1</real>
1431 </array>
1432 <key>evil</key>
1433 <boolean>1</boolean>
1434 <key>name</key>
1435 <string>TWH</string>
1436 </map>
1437 <key>ffce04ff-5303-4909-a044-d37af7ab0b0e</key>
1438 <map>
1439 <key>color</key>
1440 <array>
1441 <real>0.007843137254902000574108278</real>
1442 <real>-0.09411764705882399995040544</real>
1443 <real>-0.1843137254902000032874554</real>
1444 <real>1</real>
1445 </array>
1446 <key>evil</key>
1447 <boolean>1</boolean>
1448 <key>name</key>
1449 <string>Corgi</string>
1450 </map>
1451 <key>isComplete</key>
1452 <boolean>1</boolean>
1453 </map>
1454</llsd>
diff --git a/linden/indra/newview/app_settings/default_grids.xml b/linden/indra/newview/app_settings/default_grids.xml
index 46a77f0..7cf90c4 100644
--- a/linden/indra/newview/app_settings/default_grids.xml
+++ b/linden/indra/newview/app_settings/default_grids.xml
@@ -80,6 +80,21 @@
80 <key>version</key><string>1</string> 80 <key>version</key><string>1</string>
81 </map> 81 </map>
82 82
83 <!-- Infinite Grid -->
84 <map>
85 <key>gridname</key> <string>Infinite Grid</string>
86 <key>gridnick</key> <string>infinitegrid</string>
87 <key>platform</key> <string>OpenSim</string>
88 <key>loginuri</key> <string>http://grid.infinitegrid.org:8002/</string>
89 <key>loginpage</key> <string>http://www.infinitegrid.org/drupal/loginpage</string>
90 <key>helperuri</key> <string>http://www.infinitegrid.org/opensim/helper/</string>
91 <key>website</key> <string>http://www.infinitegrid.org/drupal/</string>
92 <key>register</key> <string>http://www.infinitegrid.org/drupal/</string>
93 <key>password</key> <string>http://www.infinitegrid.org/drupal/</string>
94 <key>support</key> <string>http://www.infinitegrid.org/drupla/Tags/help</string>
95 <key>version</key> <string>0</string>
96 </map>
97
83 <!-- InWorldz --> 98 <!-- InWorldz -->
84 <map> 99 <map>
85 <key>gridname</key><string>InWorldz</string> 100 <key>gridname</key><string>InWorldz</string>
@@ -114,7 +129,7 @@
114 129
115 <!-- Local Host --> 130 <!-- Local Host -->
116 <map> 131 <map>
117 <key>gridname</key><string>Localhost</string> 132 <key>gridname</key><string>LocalHost</string>
118 <key>gridnick</key><string>LocalHost</string> 133 <key>gridnick</key><string>LocalHost</string>
119 <key>platform</key><string>OpenSim</string> 134 <key>platform</key><string>OpenSim</string>
120 <key>loginuri</key><string>http://127.0.0.1:9000/</string> 135 <key>loginuri</key><string>http://127.0.0.1:9000/</string>
@@ -161,23 +176,6 @@
161 <key>version</key><string>0</string> 176 <key>version</key><string>0</string>
162 </map> 177 </map>
163 178
164 <!-- OSGrid -->
165 <map>
166 <key>gridname</key><string>OSGrid</string>
167 <key>gridnick</key><string>OSGrid</string>
168 <key>platform</key><string>OpenSim</string>
169 <key>about</key><string>http://www.osgrid.org/</string>
170 <key>help</key><string>http://www.osgrid.org/</string>
171 <key>loginuri</key><string>http://login.osgrid.org/</string>
172 <key>loginpage</key><string>http://www.osgrid.org/splash/</string>
173 <key>helperuri</key><string>http://helper.osgrid.org/</string>
174 <key>website</key><string>http://www.osgrid.org/</string>
175 <key>support</key><string>http://www.osgrid.org/</string>
176 <key>register</key><string>http://www.osgrid.org/</string>
177 <key>password</key><string>http://www.osgrid.org/</string>
178 <key>version</key><string>3</string>
179 </map>
180
181 <!-- ReactionGrid --> 179 <!-- ReactionGrid -->
182 <map> 180 <map>
183 <key>gridname</key><string>ReactionGrid</string> 181 <key>gridname</key><string>ReactionGrid</string>
@@ -210,34 +208,20 @@
210 <key>version</key><string>0</string> 208 <key>version</key><string>0</string>
211 </map> 209 </map>
212 210
213 <!-- Second Life --> 211 <!-- Slackdog -->
214 <map>
215 <key>gridname</key><string>Second Life</string>
216 <key>gridnick</key><string>SL</string>
217 <key>platform</key><string>SecondLife</string>
218 <key>loginuri</key><string>https://login.agni.lindenlab.com/cgi-bin/login.cgi</string>
219 <key>loginpage</key><string>http://viewer-login.agni.lindenlab.com/</string>
220 <key>helperuri</key><string>https://secondlife.com/helpers/</string>
221 <key>website</key><string>http://secondlife.com/</string>
222 <key>support</key><string>http://secondlife.com/support/</string>
223 <key>register</key><string>http://secondlife.com/registration/</string>
224 <key>password</key><string>http://secondlife.com/account/request.php</string>
225 <key>version</key><string>2</string>
226 </map>
227
228 <!-- Second Life Beta -->
229 <map> 212 <map>
230 <key>gridname</key><string>Second Life Beta Grid</string> 213 <key>gridname</key> <string>Slackdog grid</string>
231 <key>gridnick</key><string>SLBeta</string> 214 <key>gridnick</key> <string>slackdog</string>
232 <key>platform</key><string>SecondLife</string> 215 <key>platform</key> <string>OpenSim</string>
233 <key>loginuri</key><string>https://login.aditi.lindenlab.com/cgi-bin/login.cgi</string> 216 <key>loginuri</key> <string>http://gallifrey.slackdog.com:8002/</string>
234 <key>loginpage</key><string>http://viewer-login.agni.lindenlab.com</string> 217 <key>loginpage</key> <string>http://www.slackdog.com/loginscreen.php</string>
235 <key>helperuri</key><string>http://aditi-secondlife.webdev.lindenlab.com/helpers/</string> 218 <key>helperuri</key> <string></string>
236 <key>website</key><string>http://secondlife.com/</string> 219 <key>password</key> <string>http://gallifrey.slackdog.com:8002/wifi/forgotpassword</string>
237 <key>support</key><string>http://secondlife.com/support/</string> 220 <key>register</key> <string>http://gallifrey.slackdog.com:8002/wifi/user/account</string>
238 <key>register</key><string>http://secondlife.com/registration/</string> 221 <key>support</key> <string></string>
239 <key>password</key><string>http://secondlife.com/account/request.php</string> 222 <key>website</key> <string>http://slackdog.com/</string>
240 <key>version</key><string>3</string> 223 <key>search</key> <string>http://webi.metaverseink.com/</string>
224 <key>version</key> <string>0</string>
241 </map> 225 </map>
242 226
243 <!-- Virtual Highway --> 227 <!-- Virtual Highway -->
diff --git a/linden/indra/newview/app_settings/logcontrol.xml b/linden/indra/newview/app_settings/logcontrol.xml
index f3715c4..c979d73 100644
--- a/linden/indra/newview/app_settings/logcontrol.xml
+++ b/linden/indra/newview/app_settings/logcontrol.xml
@@ -1,7 +1,7 @@
1<llsd> 1<llsd>
2 <map> 2 <map>
3 <!-- default-level can be ALL, DEBUG, INFO, WARN, ERROR, or NONE --> 3 <!-- default-level can be ALL, DEBUG, INFO, WARN, ERROR, or NONE -->
4 <key>default-level</key> <string>INFO</string> 4 <key>default-level</key> <string>WARN</string>
5 <key>print-location</key> <boolean>false</boolean> 5 <key>print-location</key> <boolean>false</boolean>
6 <key>settings</key> 6 <key>settings</key>
7 <array> 7 <array>
@@ -29,7 +29,7 @@
29 </array> 29 </array>
30 </map> 30 </map>
31 <map> 31 <map>
32 <key>level</key><string>DEBUG</string> 32 <key>level</key><string>WARN</string>
33 <key>functions</key> 33 <key>functions</key>
34 <array> 34 <array>
35 </array> 35 </array>
diff --git a/linden/indra/newview/app_settings/settings.xml b/linden/indra/newview/app_settings/settings.xml
index 1451aef..5534ecc 100644
--- a/linden/indra/newview/app_settings/settings.xml
+++ b/linden/indra/newview/app_settings/settings.xml
@@ -269,13 +269,13 @@
269 <key>HeadFollowsMouse</key> 269 <key>HeadFollowsMouse</key>
270 <map> 270 <map>
271 <key>Comment</key> 271 <key>Comment</key>
272 <string>IF your avatars head follows your mouse movements (then the extend is defined in YawFromMousePosition and PitchFromMousePosition</string> 272 <string>If your avatars head follows your mouse movements (then the extend is defined in YawFromMousePosition and PitchFromMousePosition</string>
273 <key>Persist</key> 273 <key>Persist</key>
274 <integer>1</integer> 274 <integer>1</integer>
275 <key>Type</key> 275 <key>Type</key>
276 <string>Boolean</string> 276 <string>Boolean</string>
277 <key>Value</key> 277 <key>Value</key>
278 <integer>0</integer> 278 <integer>1</integer>
279 </map> 279 </map>
280 <key>HighlightOwnNameInChat</key> 280 <key>HighlightOwnNameInChat</key>
281 <map> 281 <map>
@@ -340,6 +340,46 @@
340 <key>Value</key> 340 <key>Value</key>
341 <integer>0</integer> 341 <integer>0</integer>
342 </map> 342 </map>
343<!--[$PLOTR$]-->
344 <key>EmeraldUseOTR</key>
345 <map>
346 <key>Comment</key>
347 <string>Setting this to 0 will require the use of OTR in every IM, 1 will try OTR when available, 2 will accept incoming OTR requests, and 3 will deny OTR usage</string>
348 <key>Persist</key>
349 <integer>1</integer>
350 <key>Type</key>
351 <string>U32</string>
352 <key>Value</key>
353 <integer>2</integer>
354 </map>
355 <key>EmeraldOTRInTypingStop</key>
356 <map>
357 <key>Comment</key>
358 <string>Setting this to true will make all encrypted OTR messages be sent in an IM_TYPING_STOP packet. This is non-standard behavior, but prevents OTR encrypted IM from being saved and delivered as offline IM. Though it currently works the grid owners may decide to disable the feature at any time.</string>
359 <key>Persist</key>
360 <integer>1</integer>
361 <key>Type</key>
362 <string>Boolean</string>
363 <key>Value</key>
364 <integer>0</integer>
365 </map>
366 <key>IMEncryptedChatColor</key>
367 <map>
368 <key>Comment</key>
369 <string>Color of encrypted instant messages from other residents</string>
370 <key>Persist</key>
371 <integer>1</integer>
372 <key>Type</key>
373 <string>Color4</string>
374 <key>Value</key>
375 <array>
376 <real>1.0</real>
377 <real>1.0</real>
378 <real>0.8</real>
379 <real>1.0</real>
380 </array>
381 </map>
382<!--[$PLOTR$/]-->
343 <key>AppearanceAnimate</key> 383 <key>AppearanceAnimate</key>
344 <map> 384 <map>
345 <key>Comment</key> 385 <key>Comment</key>
@@ -393,7 +433,7 @@
393 <key>Type</key> 433 <key>Type</key>
394 <string>U32</string> 434 <string>U32</string>
395 <key>Value</key> 435 <key>Value</key>
396 <real>20</real> 436 <real>30</real>
397 </map> 437 </map>
398 <key>ClassicCloudHeight</key> 438 <key>ClassicCloudHeight</key>
399 <map> 439 <map>
@@ -800,7 +840,7 @@
800 <key>Type</key> 840 <key>Type</key>
801 <string>String</string> 841 <string>String</string>
802 <key>Value</key> 842 <key>Value</key>
803 <string>http://app.kokuaviewer.org/grids/grids.xml</string> 843 <string>http://onefang.net/downloads/grids.xml</string>
804 </map> 844 </map>
805 <key>GoAction</key> 845 <key>GoAction</key>
806 <map> 846 <map>
@@ -877,7 +917,7 @@
877 <key>Type</key> 917 <key>Type</key>
878 <string>String</string> 918 <string>String</string>
879 <key>Value</key> 919 <key>Value</key>
880 <string /> 920 <string/>
881 </map> 921 </map>
882 <key>LegacyPieEnabled</key> 922 <key>LegacyPieEnabled</key>
883 <map> 923 <map>
@@ -899,7 +939,7 @@
899 <key>Type</key> 939 <key>Type</key>
900 <string>U32</string> 940 <string>U32</string>
901 <key>Value</key> 941 <key>Value</key>
902 <integer>0</integer> 942 <integer>2</integer>
903 </map> 943 </map>
904 <key>LightShareIgnoreTimer</key> 944 <key>LightShareIgnoreTimer</key>
905 <map> 945 <map>
@@ -1044,17 +1084,6 @@
1044 <key>Value</key> 1084 <key>Value</key>
1045 <integer>1</integer> 1085 <integer>1</integer>
1046 </map> 1086 </map>
1047 <key>NewsBarURL</key>
1048 <map>
1049 <key>Comment</key>
1050 <string>URL to load in the news bar on the login screen</string>
1051 <key>Persist</key>
1052 <integer>1</integer>
1053 <key>Type</key>
1054 <string>String</string>
1055 <key>Value</key>
1056 <string>http://app.kokuaviewer.org/news/</string>
1057 </map>
1058 <key>ObjectIMColor</key> 1087 <key>ObjectIMColor</key>
1059 <map> 1088 <map>
1060 <key>Comment</key> 1089 <key>Comment</key>
@@ -1118,7 +1147,7 @@
1118 <key>PreviewAvatarAsCloud</key> 1147 <key>PreviewAvatarAsCloud</key>
1119 <map> 1148 <map>
1120 <key>Comment</key> 1149 <key>Comment</key>
1121 <string>Turns your avatar into the paricle clud if true</string> 1150 <string>Turns your avatar into the paricle cloud if true</string>
1122 <key>Persist</key> 1151 <key>Persist</key>
1123 <integer>0</integer> 1152 <integer>0</integer>
1124 <key>Type</key> 1153 <key>Type</key>
@@ -1267,7 +1296,7 @@
1267 <key>Type</key> 1296 <key>Type</key>
1268 <string>Boolean</string> 1297 <string>Boolean</string>
1269 <key>Value</key> 1298 <key>Value</key>
1270 <integer>0</integer> 1299 <integer>1</integer>
1271 </map> 1300 </map>
1272 <key>SaveInventoryScriptsAsMono</key> 1301 <key>SaveInventoryScriptsAsMono</key>
1273 <map> 1302 <map>
@@ -1278,12 +1307,12 @@
1278 <key>Type</key> 1307 <key>Type</key>
1279 <string>Boolean</string> 1308 <string>Boolean</string>
1280 <key>Value</key> 1309 <key>Value</key>
1281 <real>0</real> 1310 <real>1</real>
1282 </map> 1311 </map>
1283 <key>SearchURLDefault</key> 1312 <key>SearchURLDefault</key>
1284 <map> 1313 <map>
1285 <key>Comment</key> 1314 <key>Comment</key>
1286 <string>URL to load for empty Second Life searches</string> 1315 <string>URL to load for empty searches</string>
1287 <key>Persist</key> 1316 <key>Persist</key>
1288 <integer>1</integer> 1317 <integer>1</integer>
1289 <key>HideFromEditor</key> 1318 <key>HideFromEditor</key>
@@ -1309,7 +1338,7 @@
1309 <key>SearchURLQuery</key> 1338 <key>SearchURLQuery</key>
1310 <map> 1339 <map>
1311 <key>Comment</key> 1340 <key>Comment</key>
1312 <string>URL to use for Second Life searches</string> 1341 <string>URL to use for searches</string>
1313 <key>Persist</key> 1342 <key>Persist</key>
1314 <integer>1</integer> 1343 <integer>1</integer>
1315 <key>HideFromEditor</key> 1344 <key>HideFromEditor</key>
@@ -1335,7 +1364,7 @@
1335 <key>SearchURLSuffix2</key> 1364 <key>SearchURLSuffix2</key>
1336 <map> 1365 <map>
1337 <key>Comment</key> 1366 <key>Comment</key>
1338 <string>Parameters added to end of Second Life search queries</string> 1367 <string>Parameters added to end of search queries</string>
1339 <key>Persist</key> 1368 <key>Persist</key>
1340 <integer>1</integer> 1369 <integer>1</integer>
1341 <key>HideFromEditor</key> 1370 <key>HideFromEditor</key>
@@ -1383,7 +1412,7 @@
1383 <key>ShowcaseURLDefault</key> 1412 <key>ShowcaseURLDefault</key>
1384 <map> 1413 <map>
1385 <key>Comment</key> 1414 <key>Comment</key>
1386 <string>URL to load for the Showcase tab in Second Life</string> 1415 <string>URL to load for the Showcase tab</string>
1387 <key>Persist</key> 1416 <key>Persist</key>
1388 <integer>1</integer> 1417 <integer>1</integer>
1389 <key>Type</key> 1418 <key>Type</key>
@@ -1422,7 +1451,7 @@
1422 <key>Type</key> 1451 <key>Type</key>
1423 <string>Boolean</string> 1452 <string>Boolean</string>
1424 <key>Value</key> 1453 <key>Value</key>
1425 <integer>1</integer> 1454 <integer>0</integer>
1426 </map> 1455 </map>
1427 <key>ShowStatusBarInMouselook</key> 1456 <key>ShowStatusBarInMouselook</key>
1428 <map> 1457 <map>
@@ -1510,7 +1539,7 @@
1510 <key>Type</key> 1539 <key>Type</key>
1511 <string>U32</string> 1540 <string>U32</string>
1512 <key>Value</key> 1541 <key>Value</key>
1513 <real>0</real> 1542 <real>2</real>
1514 </map> 1543 </map>
1515 <key>Use24HourTime</key> 1544 <key>Use24HourTime</key>
1516 <map> 1545 <map>
@@ -1521,7 +1550,7 @@
1521 <key>Type</key> 1550 <key>Type</key>
1522 <string>Boolean</string> 1551 <string>Boolean</string>
1523 <key>Value</key> 1552 <key>Value</key>
1524 <integer>0</integer> 1553 <integer>1</integer>
1525 </map> 1554 </map>
1526 <key>UseKDUIfAvailable</key> 1555 <key>UseKDUIfAvailable</key>
1527 <map> 1556 <map>
@@ -1565,7 +1594,7 @@
1565 <key>Type</key> 1594 <key>Type</key>
1566 <string>Boolean</string> 1595 <string>Boolean</string>
1567 <key>Value</key> 1596 <key>Value</key>
1568 <integer>0</integer> 1597 <integer>1</integer>
1569 </map> 1598 </map>
1570 <key>UseWebMapTiles</key> 1599 <key>UseWebMapTiles</key>
1571 <map> 1600 <map>
@@ -1675,7 +1704,7 @@
1675 <key>Type</key> 1704 <key>Type</key>
1676 <string>String</string> 1705 <string>String</string>
1677 <key>Value</key> 1706 <key>Value</key>
1678 <string>osgrid</string> 1707 <string>infinitegrid</string>
1679 </map> 1708 </map>
1680 <key>KeepAppearance</key> 1709 <key>KeepAppearance</key>
1681 <map> 1710 <map>
@@ -1686,7 +1715,7 @@
1686 <key>Type</key> 1715 <key>Type</key>
1687 <string>Boolean</string> 1716 <string>Boolean</string>
1688 <key>Value</key> 1717 <key>Value</key>
1689 <string>0</string> 1718 <string>1</string>
1690 </map> 1719 </map>
1691 <key>CheckForGridUpdates</key> 1720 <key>CheckForGridUpdates</key>
1692 <map> 1721 <map>
@@ -1747,7 +1776,7 @@
1747 <key>Type</key> 1776 <key>Type</key>
1748 <string>Boolean</string> 1777 <string>Boolean</string>
1749 <key>Value</key> 1778 <key>Value</key>
1750 <integer>1</integer> 1779 <integer>0</integer>
1751 </map> 1780 </map>
1752 <key>AONoStandsInMouselook</key> 1781 <key>AONoStandsInMouselook</key>
1753 <map> 1782 <map>
@@ -1769,7 +1798,7 @@
1769 <key>Type</key> 1798 <key>Type</key>
1770 <string>F32</string> 1799 <string>F32</string>
1771 <key>Value</key> 1800 <key>Value</key>
1772 <real>20</real> 1801 <real>30</real>
1773 </map> 1802 </map>
1774 <key>AOStandRandomize</key> 1803 <key>AOStandRandomize</key>
1775 <map> 1804 <map>
@@ -1780,7 +1809,7 @@
1780 <key>Type</key> 1809 <key>Type</key>
1781 <string>Boolean</string> 1810 <string>Boolean</string>
1782 <key>Value</key> 1811 <key>Value</key>
1783 <integer>0</integer> 1812 <integer>1</integer>
1784 </map> 1813 </map>
1785 <key>AORect</key> 1814 <key>AORect</key>
1786 <map> 1815 <map>
@@ -1807,7 +1836,7 @@
1807 <key>Type</key> 1836 <key>Type</key>
1808 <string>Boolean</string> 1837 <string>Boolean</string>
1809 <key>Value</key> 1838 <key>Value</key>
1810 <integer>0</integer> 1839 <integer>1</integer>
1811 </map> 1840 </map>
1812 1841
1813 <!-- Begin: Boob physics --> 1842 <!-- Begin: Boob physics -->
@@ -1903,33 +1932,6 @@
1903 1932
1904 <!-- Begin: Client Name Tag --> 1933 <!-- Begin: Client Name Tag -->
1905 1934
1906 <key>ImprudenceTagColor</key>
1907 <map>
1908 <key>Comment</key>
1909 <string>Color of Imprudence tags (displayed only locally)</string>
1910 <key>Persist</key>
1911 <integer>1</integer>
1912 <key>Type</key>
1913 <string>Color4</string>
1914 <key>Value</key>
1915 <array>
1916 <real>0.79</real>
1917 <real>0.44</real>
1918 <real>0.88</real>
1919 <real>1</real>
1920 </array>
1921 </map>
1922 <key>ShowClientColor</key>
1923 <map>
1924 <key>Comment</key>
1925 <string>Show *others* clients specific color in the name tag</string>
1926 <key>Persist</key>
1927 <integer>1</integer>
1928 <key>Type</key>
1929 <string>Boolean</string>
1930 <key>Value</key>
1931 <integer>1</integer>
1932 </map>
1933 <key>ShowClientNameHoverTip</key> 1935 <key>ShowClientNameHoverTip</key>
1934 <map> 1936 <map>
1935 <key>Comment</key> 1937 <key>Comment</key>
@@ -2191,7 +2193,7 @@
2191 <key>Type</key> 2193 <key>Type</key>
2192 <string>String</string> 2194 <string>String</string>
2193 <key>Value</key> 2195 <key>Value</key>
2194 <string>tp2cam</string> 2196 <string>2c</string>
2195 </map> 2197 </map>
2196 <key>CmdLineChatbarKeyToName</key> 2198 <key>CmdLineChatbarKeyToName</key>
2197 <map> 2199 <map>
@@ -2596,7 +2598,7 @@
2596 <key>Type</key> 2598 <key>Type</key>
2597 <string>Boolean</string> 2599 <string>Boolean</string>
2598 <key>Value</key> 2600 <key>Value</key>
2599 <integer>0</integer> 2601 <integer>1</integer>
2600 </map> 2602 </map>
2601 <key>FloaterRadarRect</key> 2603 <key>FloaterRadarRect</key>
2602 <map> 2604 <map>
@@ -2623,7 +2625,7 @@
2623 <key>Type</key> 2625 <key>Type</key>
2624 <string>Boolean</string> 2626 <string>Boolean</string>
2625 <key>Value</key> 2627 <key>Value</key>
2626 <integer>0</integer> 2628 <integer>1</integer>
2627 </map> 2629 </map>
2628 <key>RadarUpdateRate</key> 2630 <key>RadarUpdateRate</key>
2629 <map> 2631 <map>
@@ -2920,7 +2922,7 @@
2920 <key>Type</key> 2922 <key>Type</key>
2921 <string>Boolean</string> 2923 <string>Boolean</string>
2922 <key>Value</key> 2924 <key>Value</key>
2923 <integer>0</integer> 2925 <integer>1</integer>
2924 </map> 2926 </map>
2925 <key>AllowTapTapHoldRun</key> 2927 <key>AllowTapTapHoldRun</key>
2926 <map> 2928 <map>
@@ -3936,7 +3938,7 @@
3936 <key>Type</key> 3938 <key>Type</key>
3937 <string>S32</string> 3939 <string>S32</string>
3938 <key>Value</key> 3940 <key>Value</key>
3939 <integer>8</integer> 3941 <integer>999999</integer>
3940 </map> 3942 </map>
3941 <key>ButtonFlashRate</key> 3943 <key>ButtonFlashRate</key>
3942 <map> 3944 <map>
@@ -4994,7 +4996,7 @@
4994 <key>Cursor3D</key> 4996 <key>Cursor3D</key>
4995 <map> 4997 <map>
4996 <key>Comment</key> 4998 <key>Comment</key>
4997 <string>Tread Joystick values as absolute positions (not deltas).</string> 4999 <string>Treat Joystick values as absolute positions (not deltas).</string>
4998 <key>Persist</key> 5000 <key>Persist</key>
4999 <integer>1</integer> 5001 <integer>1</integer>
5000 <key>Type</key> 5002 <key>Type</key>
@@ -6072,18 +6074,7 @@
6072 <key>Type</key> 6074 <key>Type</key>
6073 <string>F32</string> 6075 <string>F32</string>
6074 <key>Value</key> 6076 <key>Value</key>
6075 <real>60.0</real> 6077 <real>0</real>
6076 </map>
6077 <key>FPSLogFrequency</key>
6078 <map>
6079 <key>Comment</key>
6080 <string>Seconds between display of FPS in log (0 for never)</string>
6081 <key>Persist</key>
6082 <integer>1</integer>
6083 <key>Type</key>
6084 <string>F32</string>
6085 <key>Value</key>
6086 <real>10.0</real>
6087 </map> 6078 </map>
6088 <key>FilterItemsPerFrame</key> 6079 <key>FilterItemsPerFrame</key>
6089 <map> 6080 <map>
@@ -6171,7 +6162,7 @@
6171 <key>Type</key> 6162 <key>Type</key>
6172 <string>Boolean</string> 6163 <string>Boolean</string>
6173 <key>Value</key> 6164 <key>Value</key>
6174 <integer>0</integer> 6165 <integer>1</integer>
6175 </map> 6166 </map>
6176 <key>FirstPersonBtnState</key> 6167 <key>FirstPersonBtnState</key>
6177 <map> 6168 <map>
@@ -6222,6 +6213,40 @@
6222 <integer>0</integer> 6213 <integer>0</integer>
6223 </array> 6214 </array>
6224 </map> 6215 </map>
6216<!--[$PLOTR$]-->
6217 <key>OtrFloaterSmpDialogRect</key>
6218 <map>
6219 <key>Comment</key>
6220 <string>Rectangle for OTR's Authorize Buddy Dialog</string>
6221 <key>Persist</key>
6222 <integer>1</integer>
6223 <key>Type</key>
6224 <string>Rect</string>
6225 <key>Value</key>
6226 <array>
6227 <integer>0</integer>
6228 <integer>440</integer>
6229 <integer>470</integer>
6230 <integer>0</integer>
6231 </array>
6232 </map>
6233 <key>OtrFloaterSmpProgRect</key>
6234 <map>
6235 <key>Comment</key>
6236 <string>Rectangle for OTR's Authorize Buddy Progress bar Dialog</string>
6237 <key>Persist</key>
6238 <integer>1</integer>
6239 <key>Type</key>
6240 <string>Rect</string>
6241 <key>Value</key>
6242 <array>
6243 <integer>0</integer>
6244 <integer>440</integer>
6245 <integer>470</integer>
6246 <integer>0</integer>
6247 </array>
6248 </map>
6249<!--[$PLOTR$/]-->
6225 <key>FloaterActiveSpeakersRect</key> 6250 <key>FloaterActiveSpeakersRect</key>
6226 <map> 6251 <map>
6227 <key>Comment</key> 6252 <key>Comment</key>
@@ -7332,7 +7357,7 @@
7332 <key>Type</key> 7357 <key>Type</key>
7333 <string>Boolean</string> 7358 <string>Boolean</string>
7334 <key>Value</key> 7359 <key>Value</key>
7335 <integer>0</integer> 7360 <integer>1</integer>
7336 </map> 7361 </map>
7337 <key>ForceMandatoryUpdate</key> 7362 <key>ForceMandatoryUpdate</key>
7338 <map> 7363 <map>
@@ -7692,7 +7717,7 @@
7692 <key>Type</key> 7717 <key>Type</key>
7693 <string>Boolean</string> 7718 <string>Boolean</string>
7694 <key>Value</key> 7719 <key>Value</key>
7695 <integer>0</integer> 7720 <integer>1</integer>
7696 </map> 7721 </map>
7697 <key>InBandwidth</key> 7722 <key>InBandwidth</key>
7698 <map> 7723 <map>
@@ -8071,7 +8096,7 @@
8071 <key>Type</key> 8096 <key>Type</key>
8072 <string>S32</string> 8097 <string>S32</string>
8073 <key>Value</key> 8098 <key>Value</key>
8074 <integer>768</integer> 8099 <integer>1024</integer>
8075 </map> 8100 </map>
8076 <key>LastSnapshotToEmailWidth</key> 8101 <key>LastSnapshotToEmailWidth</key>
8077 <map> 8102 <map>
@@ -8093,7 +8118,7 @@
8093 <key>Type</key> 8118 <key>Type</key>
8094 <string>S32</string> 8119 <string>S32</string>
8095 <key>Value</key> 8120 <key>Value</key>
8096 <integer>768</integer> 8121 <integer>1024</integer>
8097 </map> 8122 </map>
8098 <key>LastSnapshotToDiskWidth</key> 8123 <key>LastSnapshotToDiskWidth</key>
8099 <map> 8124 <map>
@@ -8115,7 +8140,7 @@
8115 <key>Type</key> 8140 <key>Type</key>
8116 <string>S32</string> 8141 <string>S32</string>
8117 <key>Value</key> 8142 <key>Value</key>
8118 <integer>512</integer> 8143 <integer>1024</integer>
8119 </map> 8144 </map>
8120 <key>LastSnapshotToInventoryWidth</key> 8145 <key>LastSnapshotToInventoryWidth</key>
8121 <map> 8146 <map>
@@ -8126,7 +8151,7 @@
8126 <key>Type</key> 8151 <key>Type</key>
8127 <string>S32</string> 8152 <string>S32</string>
8128 <key>Value</key> 8153 <key>Value</key>
8129 <integer>512</integer> 8154 <integer>1024</integer>
8130 </map> 8155 </map>
8131 <key>LastSnapshotType</key> 8156 <key>LastSnapshotType</key>
8132 <map> 8157 <map>
@@ -8263,7 +8288,7 @@
8263 <key>LoginAsGod</key> 8288 <key>LoginAsGod</key>
8264 <map> 8289 <map>
8265 <key>Comment</key> 8290 <key>Comment</key>
8266 <string>Attempt to login with god powers (Linden accounts only)</string> 8291 <string>Attempt to login with god powers (grid staff accounts only)</string>
8267 <key>Persist</key> 8292 <key>Persist</key>
8268 <integer>1</integer> 8293 <integer>1</integer>
8269 <key>Type</key> 8294 <key>Type</key>
@@ -8335,7 +8360,7 @@
8335 <key>Type</key> 8360 <key>Type</key>
8336 <string>F32</string> 8361 <string>F32</string>
8337 <key>Value</key> 8362 <key>Value</key>
8338 <real>20.0</real> 8363 <real>45.0</real>
8339 </map> 8364 </map>
8340 <key>MapOverlayIndex</key> 8365 <key>MapOverlayIndex</key>
8341 <map> 8366 <map>
@@ -8976,7 +9001,7 @@
8976 <key>NumSessions</key> 9001 <key>NumSessions</key>
8977 <map> 9002 <map>
8978 <key>Comment</key> 9003 <key>Comment</key>
8979 <string>Number of successful logins to Second Life</string> 9004 <string>Number of successful logins to grids</string>
8980 <key>Persist</key> 9005 <key>Persist</key>
8981 <integer>1</integer> 9006 <integer>1</integer>
8982 <key>Type</key> 9007 <key>Type</key>
@@ -9316,7 +9341,7 @@
9316 <key>Type</key> 9341 <key>Type</key>
9317 <string>Boolean</string> 9342 <string>Boolean</string>
9318 <key>Value</key> 9343 <key>Value</key>
9319 <integer>1</integer> 9344 <integer>0</integer>
9320 </map> 9345 </map>
9321 <key>PluginAttachDebuggerToPlugins</key> 9346 <key>PluginAttachDebuggerToPlugins</key>
9322 <map> 9347 <map>
@@ -9701,7 +9726,7 @@
9701 <key>Type</key> 9726 <key>Type</key>
9702 <string>Boolean</string> 9727 <string>Boolean</string>
9703 <key>Value</key> 9728 <key>Value</key>
9704 <integer>1</integer> 9729 <integer>0</integer>
9705 </map> 9730 </map>
9706 <key>RenderAttachedParticles</key> 9731 <key>RenderAttachedParticles</key>
9707 <map> 9732 <map>
@@ -9973,7 +9998,7 @@
9973 <key>Type</key> 9998 <key>Type</key>
9974 <string>Boolean</string> 9999 <string>Boolean</string>
9975 <key>Value</key> 10000 <key>Value</key>
9976 <integer>0</integer> 10001 <integer>1</integer>
9977 </map> 10002 </map>
9978 <key>RenderDeferredAlphaSoften</key> 10003 <key>RenderDeferredAlphaSoften</key>
9979 <map> 10004 <map>
@@ -10795,7 +10820,7 @@
10795 <key>Type</key> 10820 <key>Type</key>
10796 <string>Boolean</string> 10821 <string>Boolean</string>
10797 <key>Value</key> 10822 <key>Value</key>
10798 <integer>1</integer> 10823 <integer>0</integer>
10799 </map> 10824 </map>
10800 <key>SafeMode</key> 10825 <key>SafeMode</key>
10801 <map> 10826 <map>
@@ -11180,6 +11205,17 @@
11180 <key>Value</key> 11205 <key>Value</key>
11181 <integer>0</integer> 11206 <integer>0</integer>
11182 </map> 11207 </map>
11208 <key>ShowGridManager</key>
11209 <map>
11210 <key>Comment</key>
11211 <string>Show the grid manager on startup?</string>
11212 <key>Persist</key>
11213 <integer>1</integer>
11214 <key>Type</key>
11215 <string>Boolean</string>
11216 <key>Value</key>
11217 <real>1</real>
11218 </map>
11183 <key>ShowHoverTips</key> 11219 <key>ShowHoverTips</key>
11184 <map> 11220 <map>
11185 <key>Comment</key> 11221 <key>Comment</key>
@@ -11577,7 +11613,7 @@
11577 <key>Type</key> 11613 <key>Type</key>
11578 <string>Boolean</string> 11614 <string>Boolean</string>
11579 <key>Value</key> 11615 <key>Value</key>
11580 <integer>1</integer> 11616 <integer>0</integer>
11581 </map> 11617 </map>
11582 <key>ShowSelectionBeam</key> 11618 <key>ShowSelectionBeam</key>
11583 <map> 11619 <map>
@@ -11709,7 +11745,7 @@
11709 <key>Type</key> 11745 <key>Type</key>
11710 <string>String</string> 11746 <string>String</string>
11711 <key>Value</key> 11747 <key>Value</key>
11712 <string>default</string> 11748 <string>pslpurple</string>
11713 </map> 11749 </map>
11714 <key>SkyAmbientScale</key> 11750 <key>SkyAmbientScale</key>
11715 <map> 11751 <map>
@@ -11777,7 +11813,7 @@
11777 <key>SkyUseClassicClouds</key> 11813 <key>SkyUseClassicClouds</key>
11778 <map> 11814 <map>
11779 <key>Comment</key> 11815 <key>Comment</key>
11780 <string>Whether to use the old Second Life particle clouds or not</string> 11816 <string>Whether to use the old particle clouds or not</string>
11781 <key>Persist</key> 11817 <key>Persist</key>
11782 <integer>1</integer> 11818 <integer>1</integer>
11783 <key>Type</key> 11819 <key>Type</key>
@@ -14029,7 +14065,7 @@
14029 <key>Type</key> 14065 <key>Type</key>
14030 <string>String</string> 14066 <string>String</string>
14031 <key>Value</key> 14067 <key>Value</key>
14032 <string>Imprudence</string> 14068 <string>meta-impy</string>
14033 </map> 14069 </map>
14034 <key>VertexShaderEnable</key> 14070 <key>VertexShaderEnable</key>
14035 <map> 14071 <map>
@@ -14317,6 +14353,19 @@
14317 <key>Value</key> 14353 <key>Value</key>
14318 <integer>1</integer> 14354 <integer>1</integer>
14319 </map> 14355 </map>
14356<!--[$PLOTR$]-->
14357 <key>WarnEmeraldOTR</key>
14358 <map>
14359 <key>Comment</key>
14360 <string>Enables OTR info dialog</string>
14361 <key>Persist</key>
14362 <integer>1</integer>
14363 <key>Type</key>
14364 <string>Boolean</string>
14365 <key>Value</key>
14366 <integer>1</integer>
14367 </map>
14368<!--[$PLOTR$/]-->
14320 <key>WarnFirstAppearance</key> 14369 <key>WarnFirstAppearance</key>
14321 <map> 14370 <map>
14322 <key>Comment</key> 14371 <key>Comment</key>
diff --git a/linden/indra/newview/dronesettings.xml b/linden/indra/newview/dronesettings.xml
index 8a41280..db5749e 100644
--- a/linden/indra/newview/dronesettings.xml
+++ b/linden/indra/newview/dronesettings.xml
@@ -32,7 +32,7 @@
32 <LastName value="Tester"/> 32 <LastName value="Tester"/>
33 <!--Version number of last instance of the viewer that you ran--> 33 <!--Version number of last instance of the viewer that you ran-->
34 <LastRunVersion value="1.7.0"/> 34 <LastRunVersion value="1.7.0"/>
35 <!--Number of successful logins to Second Life--> 35 <!--Number of successful logins to grids-->
36 <NumSessions value="27"/> 36 <NumSessions value="27"/>
37 <!--Query current hardware configuration on application startup--> 37 <!--Query current hardware configuration on application startup-->
38 <ProbeHardwareOnStartup value="FALSE"/> 38 <ProbeHardwareOnStartup value="FALSE"/>
diff --git a/linden/indra/newview/floaterotr.cpp b/linden/indra/newview/floaterotr.cpp
new file mode 100644
index 0000000..a655fd7
--- /dev/null
+++ b/linden/indra/newview/floaterotr.cpp
@@ -0,0 +1,102 @@
1/**
2* @file floaterotr.cpp
3* @brief Custom OTR settings for meta-impy
4*
5* $LicenseInfo:firstyear=2009&license=viewergpl$
6*
7* Copyright (c) 2011, David Seikel
8*
9* meta-impy 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* Copied from floaterbusy.cpp, originally by McCabe Maxsted from Imprudence.
31*/
32
33#include "llviewerprecompiledheaders.h"
34
35#include "floaterotr.h"
36
37#include "llinventorymodel.h"
38#include "llstartup.h"
39#include "lltexteditor.h"
40#include "lluictrlfactory.h"
41#include "llviewercontrol.h"
42#include "llviewerinventory.h"
43#include "llweb.h"
44#include "otr_wrapper.h"
45
46FloaterOTR::FloaterOTR(const LLSD& seed) : LLFloater("floater_busy")
47{
48 LLUICtrlFactory::getInstance()->buildFloater(this, "floater_otr_options.xml");
49}
50
51BOOL FloaterOTR::postBuild()
52{
53 childSetAction("btn_ok", onClickOK, this);
54 childSetAction("btn_cancel", onClickCancel, this);
55
56 childSetValue("EmeraldUseOTR", LLSD((S32)gSavedSettings.getU32("EmeraldUseOTR")));
57 childSetValue("EmeraldUseOTRInTypingStop", gSavedSettings.getBOOL("EmeraldUseOTRInTypingStop"));
58 getChild<LLButton>("otr_help_btn")->setClickedCallback(onClickOtrHelp, this);
59
60 return TRUE;
61}
62
63FloaterOTR::~FloaterOTR()
64{
65}
66
67// static
68void FloaterOTR::onClickOK(void* userdata)
69{
70 FloaterOTR* self = (FloaterOTR*)userdata;
71 self->apply();
72 self->close();
73}
74
75// static
76void FloaterOTR::onClickCancel(void* userdata)
77{
78 FloaterOTR* self = (FloaterOTR*)userdata;
79 self->cancel();
80}
81
82void FloaterOTR::cancel()
83{
84 close();
85}
86
87void FloaterOTR::apply()
88{
89 U32 otrpref = childGetValue("EmeraldUseOTR").asReal();
90
91 gSavedSettings.setU32("EmeraldUseOTR", otrpref);
92 gSavedSettings.setBOOL("EmeraldUseOTRInTypingStop", childGetValue("EmeraldUseOTRInTypingStop").asBoolean());
93 // otrpref: 0 == Require OTR, 1 == Request OTR, 2 == Accept OTR, 3 == Decline OTR
94 if (3 == otrpref)
95 OTR_Wrapper::stopAll();
96}
97
98void FloaterOTR::onClickOtrHelp(void* userdata)
99{
100 LLWeb::loadURL("http://www.cypherpunks.ca/otr/");
101}
102
diff --git a/linden/indra/newview/floaterotr.h b/linden/indra/newview/floaterotr.h
new file mode 100644
index 0000000..a42700f
--- /dev/null
+++ b/linden/indra/newview/floaterotr.h
@@ -0,0 +1,57 @@
1/**
2* @file floaterotr.h
3* @brief Custom OTR settings for meta-impy
4*
5* $LicenseInfo:firstyear=2009&license=viewergpl$
6*
7* Copyright (c) 2011, David Seikel
8*
9* meta-impy 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* Copied from floaterbusy.h, originally by McCabe Maxsted from Imprudence.
31*/
32
33#ifndef FLOATEROTR_H
34#define FLOATEROTR_H
35
36#include "llfloater.h"
37
38class LLViewerInventoryItem;
39
40class FloaterOTR : public LLFloater, public LLFloaterSingleton<FloaterOTR>
41{
42public:
43 FloaterOTR(const LLSD& seed);
44 virtual ~FloaterOTR();
45
46 BOOL postBuild();
47
48 void apply();
49 void cancel();
50
51private:
52 static void onClickOK(void* userdata);
53 static void onClickCancel(void* userdata);
54 static void onClickOtrHelp(void* userdata);
55};
56
57#endif // FLOATEROTR_H
diff --git a/linden/indra/newview/floatervoicelicense.cpp b/linden/indra/newview/floatervoicelicense.cpp
index b7814e7..8e3f045 100644
--- a/linden/indra/newview/floatervoicelicense.cpp
+++ b/linden/indra/newview/floatervoicelicense.cpp
@@ -41,7 +41,7 @@
41#include "llviewertexteditor.h" 41#include "llviewertexteditor.h"
42#include "llviewerwindow.h" 42#include "llviewerwindow.h"
43 43
44// linden library includes 44// viewer library includes
45#include "llbutton.h" 45#include "llbutton.h"
46#include "llhttpclient.h" 46#include "llhttpclient.h"
47#include "llhttpstatuscodes.h" // for HTTP_FOUND 47#include "llhttpstatuscodes.h" // for HTTP_FOUND
diff --git a/linden/indra/newview/hippolimits.cpp b/linden/indra/newview/hippolimits.cpp
index 2c581ae..d6d6c36 100644
--- a/linden/indra/newview/hippolimits.cpp
+++ b/linden/indra/newview/hippolimits.cpp
@@ -17,7 +17,7 @@ HippoLimits *gHippoLimits = 0;
17HippoLimits::HippoLimits() 17HippoLimits::HippoLimits()
18: 18:
19 mMaxAgentGroups(100), 19 mMaxAgentGroups(100),
20 mMaxHeight(10000.0f), 20 mMaxHeight(16383.0f),
21 mMinHoleSize(0.05f), 21 mMinHoleSize(0.05f),
22 mMaxHollow(0.95f), 22 mMaxHollow(0.95f),
23 mMinPrimScale(0.001f), 23 mMinPrimScale(0.001f),
@@ -59,7 +59,7 @@ void HippoLimits::setOpenSimLimits()
59 mMaxPrimXPos = F32_MAX; 59 mMaxPrimXPos = F32_MAX;
60 mMaxPrimYPos = F32_MAX; 60 mMaxPrimYPos = F32_MAX;
61 mMaxPrimZPos = F32_MAX; 61 mMaxPrimZPos = F32_MAX;
62 mMaxHeight = 10000.0f; 62 mMaxHeight = 16383.0f;
63 mMaxLinkedPrims = -1; 63 mMaxLinkedPrims = -1;
64 mMaxPhysLinkedPrims = -1; 64 mMaxPhysLinkedPrims = -1;
65 mAllowParcelWindLight = TRUE; 65 mAllowParcelWindLight = TRUE;
@@ -150,7 +150,9 @@ F32 HippoLimits::getMinPrimScale() const
150{ 150{
151 if (gSavedSettings.getBOOL("DisableMaxBuildConstraints") && !mEnforceMaxBuild) 151 if (gSavedSettings.getBOOL("DisableMaxBuildConstraints") && !mEnforceMaxBuild)
152 { 152 {
153 return 0; 153 // Don't return 0, that causes a few bugs when it's used to creat objects zero sized.
154 // 0.00001 should be the minimum the edit controls can display anyway.
155 return 0.00001f;
154 } 156 }
155 else 157 else
156 { 158 {
diff --git a/linden/indra/newview/hippoupdate.cpp b/linden/indra/newview/hippoupdate.cpp
new file mode 100644
index 0000000..98ed8aa
--- /dev/null
+++ b/linden/indra/newview/hippoupdate.cpp
@@ -0,0 +1,91 @@
1
2#include "hippoupdate.h"
3
4#include <cstdio>
5#include <list>
6#include <vector>
7
8#include <stdtypes.h>
9#include <llhttpclient.h>
10#include <llmemory.h>
11//#include <llversionviewer.h>
12#include "llviewercontrol.h"
13#include "llviewernetwork.h"
14#include "llweb.h"
15#include <llwindow.h>
16
17
18std::string gHippoChannel;
19
20
21// static
22bool HippoUpdate::checkUpdate()
23{
24 llinfos << "Hippo Update Check..." << llendl;
25
26 // get channel name
27 gHippoChannel = gSavedSettings.getString("ChannelName");
28
29 // get mac address
30 char macAddress[18];
31 sprintf(macAddress, "%02x:%02x:%02x:%02x:%02x:%02x", 0, 1, 2, 3, 4, 5); // Not sending private info across the 'net. Screw LL.
32
33 // build URL for update check
34 char url[1000];
35 snprintf(url, 1000,
36/* "http://update.mjm.game-host.org/os/viewer.php?"
37 "product=%s&channel=%s&"
38 "version_major=%d&version_minor=%d&version_patch=%d&version_base=%s&"
39 "platform=%s&mac=%s",
40 LL_PRODUCT, LL_CHANNEL_CSTR,
41 LL_VERSION_MAJOR, LL_VERSION_MINOR, LL_VERSION_PATCH, LL_VERSION_BASE,
42 LL_PLATFORM*/"", macAddress);
43
44 // query update server
45 std::string escaped_url = LLWeb::escapeURL(url);
46 LLSD response = LLHTTPClient::blockingGet(escaped_url.c_str());
47
48 // check response, return on error
49 S32 status = response["status"].asInteger();
50 if ((status != 200) || !response["body"].isMap()) {
51 llinfos << "Hippo Update failed (" << status << "): "
52 << (response["body"].isString()? response["body"].asString(): "<unknown error>")
53 << llendl;
54 return true;
55 }
56
57 // get data from response
58 LLSD data = response["body"];
59 std::string webpage = (data.has("webpage") && data["webpage"].isString())? data["webpage"].asString(): "";
60 std::string message = (data.has("message") && data["message"].isString())? data["message"].asString(): "";
61 std::string yourVersion = (data.has("yourVersion") && data["yourVersion"].isString())? data["yourVersion"].asString(): "";
62 std::string curVersion = (data.has("curVersion") && data["curVersion"].isString())? data["curVersion"].asString(): "";
63 bool update = (data.has("update") && data["update"].isBoolean())? data["update"].asBoolean(): false;
64 bool mandatory = (data.has("mandatory") && data["mandatory"].isBoolean())? data["mandatory"].asBoolean(): false;
65
66 // log and return, if no update available
67 llinfos << "Your version is " << yourVersion << ", current version is " << curVersion << '.' << llendl;
68 if (!update) return true;
69 llinfos << "Update is " << (mandatory? "mandatory.": "optional.") << llendl;
70
71 // show update dialog
72 char msg[1000];
73 snprintf(msg, 1000,
74 "There is a new viewer version available.\n"
75 "\n"
76 "Your version: %s\n"
77 "Current version: %s\n"
78 "%s\n"
79 "Do you want to visit the web site?",
80 yourVersion.c_str(), curVersion.c_str(),
81 mandatory? "\nThis is a mandatory update.\n": "");
82 S32 button = OSMessageBox(msg, "Hippo OpenSim Viewer Update", OSMB_YESNO);
83 if (button == OSBTN_YES) {
84 llinfos << "Taking user to " << webpage << llendl;
85 LLWeb::loadURLExternal(webpage);
86 // exit the viewer
87 return false;
88 }
89
90 return !mandatory;
91}
diff --git a/linden/indra/newview/installers/windows/README.txt b/linden/indra/newview/installers/windows/README.txt
new file mode 100644
index 0000000..653d7a6
--- /dev/null
+++ b/linden/indra/newview/installers/windows/README.txt
@@ -0,0 +1,57 @@
1 ABOUT META-IMPY
2
3 Meta-impy used to be the next generation experimental viewer for the
4 meta 7 grid. Meta 7 closed, but meta-impy lives on. The rest of
5 this text is the old text from the meta 7 days. I'll write
6 something now soon.
7
8 The old meta 7 viewer was based on an ancient version of Emerald. We
9 need an update. After much discussion and evaluation, and too much
10 delay, I decided to fork and modify the Imprudence 1.4.0 code base
11 to our requirements. Thus the meta-impy viewer was born. This time
12 around I will try to keep up with the upstream changes.
13
14 I agree with the Imprudence manifesto. I also have my own ideas
15 about how code should be written, and how the mess that is the LL
16 code base should be morphed into something sane. I don't think that
17 moving to the SL 2 code base is such a good idea. Even now I still
18 see problems from the move to the SL 1.23 code base. I thought
19 moving from 1.22 was a bad idea to. LL has us playing catch up at
20 their chosen pace. We should just fix up their horrid code and
21 streak ahead of them.
22
23 Since this is being done for meta7, and meta7 does not care about LL
24 TPVP, somethings are just going to be changed specifically to suit
25 the meta7 grid. On the other hand, there are some things we might
26 implement that are of general usefulness, or already on the Impy
27 wish list. I will try to write them such that Impy developers can
28 cherry pick those things, then let the Impy developers know.
29
30 Note, since we don't care about LL TPVP, it's likely that meta7
31 viewers will not be TPVP compliant. Meta 7 viewers are made for use
32 on the meta7 grid. They will probably work on the SL grid, but that
33 is not important to us, and not recommended by us. Use at your own
34 risk on the SL grid.
35
36 The latest source code for the meta-impy viewer is always
37 available at:
38
39 http://github.com/onefang/meta-impy
40
41
42 LICENSE
43
44 All code is licensed under the terms of the GNU General Public
45 License version 2.0 (plus a special exception).
46
47 See linden/LICENSE-source.txt for details.
48
49
50 DISCLAIMERS AND NOTICES
51
52 Second Life is a registered trademark of Linden Research, Inc.
53
54 Imprudence is in no way affiliated with Linden Research, Inc.
55
56 meta7 and/or Magne Metaverse Reasearch are in no way affiliated with Linden Research, Inc.
57
diff --git a/linden/indra/newview/installers/windows/installer_template.nsi b/linden/indra/newview/installers/windows/installer_template.nsi
index 8afde89..597b85b 100644
--- a/linden/indra/newview/installers/windows/installer_template.nsi
+++ b/linden/indra/newview/installers/windows/installer_template.nsi
@@ -62,7 +62,7 @@ SetOverwrite on ; stomp files by default
62AutoCloseWindow true ; after all files install, close window 62AutoCloseWindow true ; after all files install, close window
63 63
64InstallDir "$PROGRAMFILES\${INSTNAME}" 64InstallDir "$PROGRAMFILES\${INSTNAME}"
65InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "" 65InstallDirRegKey HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\${INSTNAME}" ""
66!ifdef UPDATE 66!ifdef UPDATE
67DirText $(DirectoryChooseTitle) $(DirectoryChooseUpdate) 67DirText $(DirectoryChooseTitle) $(DirectoryChooseUpdate)
68!else 68!else
@@ -88,7 +88,7 @@ Var INSTSHORTCUT
88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
89Function PostInstallExe 89Function PostInstallExe
90push $0 90push $0
91 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "PostInstallExe" 91 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" "PostInstallExe"
92 ;MessageBox MB_OK '$0' 92 ;MessageBox MB_OK '$0'
93 ExecWait '$0' 93 ExecWait '$0'
94pop $0 94pop $0
@@ -108,19 +108,19 @@ push $R0
108 StrCpy $INSTPROG "$R0" 108 StrCpy $INSTPROG "$R0"
109 StrCpy $INSTEXE "$R0.exe" 109 StrCpy $INSTEXE "$R0.exe"
110 110
111 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "" 111 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" ""
112 ; If key doesn't exist, skip install 112 ; If key doesn't exist, skip install
113 IfErrors ABORT 113 IfErrors ABORT
114 StrCpy $INSTDIR "$0" 114 StrCpy $INSTDIR "$0"
115 115
116 ; We now have a directory to install to. Get the startup parameters and shortcut as well. 116 ; We now have a directory to install to. Get the startup parameters and shortcut as well.
117 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Flags" 117 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" "Flags"
118 IfErrors +2 118 IfErrors +2
119 StrCpy $INSTFLAGS "$0" 119 StrCpy $INSTFLAGS "$0"
120 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Shortcut" 120 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" "Shortcut"
121 IfErrors +2 121 IfErrors +2
122 StrCpy $INSTSHORTCUT "$0" 122 StrCpy $INSTSHORTCUT "$0"
123 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Exe" 123 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" "Exe"
124 IfErrors +2 124 IfErrors +2
125 StrCpy $INSTEXE "$0" 125 StrCpy $INSTEXE "$0"
126 Goto FINISHED 126 Goto FINISHED
@@ -148,19 +148,19 @@ push $R0
148 StrCpy $INSTPROG "$R0" 148 StrCpy $INSTPROG "$R0"
149 StrCpy $INSTEXE "$R0.exe" 149 StrCpy $INSTEXE "$R0.exe"
150 150
151 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "" 151 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" ""
152 ; If key doesn't exist, skip install 152 ; If key doesn't exist, skip install
153 IfErrors ABORT 153 IfErrors ABORT
154 StrCpy $INSTDIR "$0" 154 StrCpy $INSTDIR "$0"
155 155
156 ; We now have a directory to install to. Get the startup parameters and shortcut as well. 156 ; We now have a directory to install to. Get the startup parameters and shortcut as well.
157 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Flags" 157 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" "Flags"
158 IfErrors +2 158 IfErrors +2
159 StrCpy $INSTFLAGS "$0" 159 StrCpy $INSTFLAGS "$0"
160 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Shortcut" 160 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" "Shortcut"
161 IfErrors +2 161 IfErrors +2
162 StrCpy $INSTSHORTCUT "$0" 162 StrCpy $INSTSHORTCUT "$0"
163 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Exe" 163 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" "Exe"
164 IfErrors +2 164 IfErrors +2
165 StrCpy $INSTEXE "$0" 165 StrCpy $INSTEXE "$0"
166 Goto FINISHED 166 Goto FINISHED
@@ -195,15 +195,15 @@ Function RemoveNSIS
195 Push $0 195 Push $0
196 ; Grab the installation directory of the old version 196 ; Grab the installation directory of the old version
197 DetailPrint $(RemoveOldNSISVersion) 197 DetailPrint $(RemoveOldNSISVersion)
198 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "" 198 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" ""
199 199
200 ; If key doesn't exist, skip uninstall 200 ; If key doesn't exist, skip uninstall
201 IfErrors NO_NSIS 201 IfErrors NO_NSIS
202 202
203 ; Clean up legacy beta shortcuts 203 ; Clean up legacy beta shortcuts
204 Delete "$SMPROGRAMS\Second Life Beta.lnk" 204 Delete "$SMPROGRAMS\meta-impy Beta.lnk"
205 Delete "$DESKTOP\Second Life Beta.lnk" 205 Delete "$DESKTOP\meta-impy Beta.lnk"
206 Delete "$SMPROGRAMS\Second Life.lnk" 206 Delete "$SMPROGRAMS\meta-impy.lnk"
207 207
208 ; Clean up old newview.exe file 208 ; Clean up old newview.exe file
209 Delete "$INSTDIR\newview.exe" 209 Delete "$INSTDIR\newview.exe"
@@ -271,7 +271,7 @@ FunctionEnd
271;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 271;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
272Function CheckIfAlreadyCurrent 272Function CheckIfAlreadyCurrent
273 Push $0 273 Push $0
274 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Version" 274 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" "Version"
275 StrCmp $0 ${VERSION_LONG} 0 DONE 275 StrCmp $0 ${VERSION_LONG} 0 DONE
276 MessageBox MB_OKCANCEL $(CheckIfCurrentMB) /SD IDOK IDOK DONE 276 MessageBox MB_OKCANCEL $(CheckIfCurrentMB) /SD IDOK IDOK DONE
277 Quit 277 Quit
@@ -287,7 +287,7 @@ FunctionEnd
287;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 287;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
288Function CloseSecondLife 288Function CloseSecondLife
289 Push $0 289 Push $0
290 FindWindow $0 "Imprudence" "" 290 FindWindow $0 "meta-impy" ""
291 IntCmp $0 0 DONE 291 IntCmp $0 0 DONE
292 MessageBox MB_OKCANCEL $(CloseSecondLifeInstMB) IDOK CLOSE IDCANCEL CANCEL_INSTALL 292 MessageBox MB_OKCANCEL $(CloseSecondLifeInstMB) IDOK CLOSE IDCANCEL CANCEL_INSTALL
293 293
@@ -299,7 +299,7 @@ Function CloseSecondLife
299 SendMessage $0 16 0 0 299 SendMessage $0 16 0 0
300 300
301 LOOP: 301 LOOP:
302 FindWindow $0 "Imprudence" "" 302 FindWindow $0 "meta-impy" ""
303 IntCmp $0 0 DONE 303 IntCmp $0 0 DONE
304 Sleep 500 304 Sleep 500
305 Goto LOOP 305 Goto LOOP
@@ -344,12 +344,12 @@ FunctionEnd
344; FunctionEnd 344; FunctionEnd
345 345
346;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 346;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
347; Delete files in Documents and Settings\<user>\Imprudence\cache 347; Delete files in Documents and Settings\<user>\meta-impy\cache
348; Delete files in Documents and Settings\All Users\Imprudence\cache 348; Delete files in Documents and Settings\All Users\meta-impy\cache
349;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 349;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
350;Function RemoveCacheFiles 350;Function RemoveCacheFiles
351; 351;
352;; Delete files in Documents and Settings\<user>\Imprudence 352;; Delete files in Documents and Settings\<user>\meta-impy
353;Push $0 353;Push $0
354;Push $1 354;Push $1
355;Push $2 355;Push $2
@@ -368,7 +368,7 @@ FunctionEnd
368; ExpandEnvStrings $2 $2 368; ExpandEnvStrings $2 $2
369; 369;
370; ; When explicitly uninstalling, everything goes away 370; ; When explicitly uninstalling, everything goes away
371; RMDir /r "$2\Application Data\Imprudence\cache" 371; RMDir /r "$2\Application Data\meta-impy\cache"
372; 372;
373; CONTINUE: 373; CONTINUE:
374; IntOp $0 $0 + 1 374; IntOp $0 $0 + 1
@@ -378,17 +378,17 @@ FunctionEnd
378;Pop $1 378;Pop $1
379;Pop $0 379;Pop $0
380; 380;
381;; Delete files in Documents and Settings\All Users\Imprudence 381;; Delete files in Documents and Settings\All Users\meta-impy
382;Push $0 382;Push $0
383; ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData" 383; ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
384; StrCmp $0 "" +2 384; StrCmp $0 "" +2
385; RMDir /r "$0\Imprudence\cache" 385; RMDir /r "$0\meta-impy\cache"
386;Pop $0 386;Pop $0
387; 387;
388;; Delete filse in C:\Windows\Application Data\Imprudence 388;; Delete filse in C:\Windows\Application Data\meta-impy
389;; If the user is running on a pre-NT system, Application Data lives here instead of 389;; If the user is running on a pre-NT system, Application Data lives here instead of
390;; in Documents and Settings. 390;; in Documents and Settings.
391;RMDir /r "$WINDIR\Application Data\Imprudence\cache" 391;RMDir /r "$WINDIR\Application Data\meta-impy\cache"
392; 392;
393;FunctionEnd 393;FunctionEnd
394 394
@@ -438,12 +438,12 @@ FunctionEnd
438 438
439 439
440;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 440;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
441; Delete files in Documents and Settings\<user>\Imprudence 441; Delete files in Documents and Settings\<user>\meta-impy
442; Delete files in Documents and Settings\All Users\Imprudence 442; Delete files in Documents and Settings\All Users\meta-impy
443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
444Function un.DocumentsAndSettingsFolder 444Function un.DocumentsAndSettingsFolder
445 445
446; Delete files in Documents and Settings\<user>\Imprudence 446; Delete files in Documents and Settings\<user>\meta-impy
447Push $0 447Push $0
448Push $1 448Push $1
449Push $2 449Push $2
@@ -466,13 +466,13 @@ Push $2
466 ; Otherwise (preview/dmz etc) just remove cache 466 ; Otherwise (preview/dmz etc) just remove cache
467 StrCmp $INSTFLAGS "" RM_ALL RM_CACHE 467 StrCmp $INSTFLAGS "" RM_ALL RM_CACHE
468 RM_ALL: 468 RM_ALL:
469 RMDir /r "$2\Application Data\Imprudence" 469 RMDir /r "$2\Application Data\meta-impy"
470 RM_CACHE: 470 RM_CACHE:
471 # Local Settings directory is the cache, there is no "cache" subdir 471 # Local Settings directory is the cache, there is no "cache" subdir
472 RMDir /r "$2\Local Settings\Application Data\Imprudence" 472 RMDir /r "$2\Local Settings\Application Data\meta-impy"
473 # Vista version of the same 473 # Vista version of the same
474 RMDir /r "$2\AppData\Local\Imprudence" 474 RMDir /r "$2\AppData\Local\meta-impy"
475 Delete "$2\Application Data\Imprudence\user_settings\settings_windlight.xml" 475 Delete "$2\Application Data\meta-impy\user_settings\settings_windlight.xml"
476 476
477 CONTINUE: 477 CONTINUE:
478 IntOp $0 $0 + 1 478 IntOp $0 $0 + 1
@@ -483,17 +483,17 @@ Pop $2
483Pop $1 483Pop $1
484Pop $0 484Pop $0
485 485
486; Delete files in Documents and Settings\All Users\Imprudence 486; Delete files in Documents and Settings\All Users\meta-impy
487Push $0 487Push $0
488 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData" 488 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" "Common AppData"
489 StrCmp $0 "" +2 489 StrCmp $0 "" +2
490 RMDir /r "$0\Imprudence" 490 RMDir /r "$0\meta-impy"
491Pop $0 491Pop $0
492 492
493; Delete filse in C:\Windows\Application Data\Imprudence 493; Delete filse in C:\Windows\Application Data\meta-impy
494; If the user is running on a pre-NT system, Application Data lives here instead of 494; If the user is running on a pre-NT system, Application Data lives here instead of
495; in Documents and Settings. 495; in Documents and Settings.
496RMDir /r "$WINDIR\Application Data\Imprudence" 496RMDir /r "$WINDIR\Application Data\meta-impy"
497 497
498FunctionEnd 498FunctionEnd
499 499
@@ -503,7 +503,7 @@ FunctionEnd
503;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 503;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
504Function un.CloseSecondLife 504Function un.CloseSecondLife
505 Push $0 505 Push $0
506 FindWindow $0 "Imprudence" "" 506 FindWindow $0 "meta-impy" ""
507 IntCmp $0 0 DONE 507 IntCmp $0 0 DONE
508 MessageBox MB_OKCANCEL $(CloseSecondLifeUnInstMB) IDOK CLOSE IDCANCEL CANCEL_UNINSTALL 508 MessageBox MB_OKCANCEL $(CloseSecondLifeUnInstMB) IDOK CLOSE IDCANCEL CANCEL_UNINSTALL
509 509
@@ -515,7 +515,7 @@ Function un.CloseSecondLife
515 SendMessage $0 16 0 0 515 SendMessage $0 16 0 0
516 516
517 LOOP: 517 LOOP:
518 FindWindow $0 "Imprudence" "" 518 FindWindow $0 "meta-impy" ""
519 IntCmp $0 0 DONE 519 IntCmp $0 0 DONE
520 Sleep 500 520 Sleep 500
521 Goto LOOP 521 Goto LOOP
@@ -533,10 +533,10 @@ FunctionEnd
533; 533;
534Function un.RemovePassword 534Function un.RemovePassword
535 535
536DetailPrint "Removing Second Life password" 536DetailPrint "Removing meta-impy password"
537 537
538SetShellVarContext current 538SetShellVarContext current
539Delete "$APPDATA\Imprudence\user_settings\password.dat" 539Delete "$APPDATA\meta-impy\user_settings\password.dat"
540SetShellVarContext all 540SetShellVarContext all
541 541
542FunctionEnd 542FunctionEnd
@@ -621,9 +621,9 @@ SetShellVarContext all
621Call un.CloseSecondLife 621Call un.CloseSecondLife
622 622
623; Clean up registry keys (these should all be !defines somewhere) 623; Clean up registry keys (these should all be !defines somewhere)
624DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" 624DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG"
625DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" 625DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG"
626DeleteRegKey HKEY_LOCAL_MACHINE "Software\Linden Research, Inc.\Installer Language" 626DeleteRegKey HKEY_LOCAL_MACHINE "Software\meta-impy\Installer Language"
627 627
628; Clean up shortcuts 628; Clean up shortcuts
629Delete "$SMPROGRAMS\$INSTSHORTCUT\*.*" 629Delete "$SMPROGRAMS\$INSTSHORTCUT\*.*"
@@ -758,11 +758,11 @@ SectionEnd ; end of uninstall section
758!macroend 758!macroend
759 759
760Function GetProgramName 760Function GetProgramName
761 !insertmacro GetParameterValue "/P=" "Imprudence" 761 !insertmacro GetParameterValue "/P=" "meta-impy"
762FunctionEnd 762FunctionEnd
763 763
764Function un.GetProgramName 764Function un.GetProgramName
765 !insertmacro GetParameterValue "/P=" "Imprudence" 765 !insertmacro GetParameterValue "/P=" "meta-impy"
766FunctionEnd 766FunctionEnd
767 767
768;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 768;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -863,7 +863,7 @@ FunctionEnd
863Function .onInit 863Function .onInit
864 864
865 ; read the language from registry (ok if not there) and set langauge menu 865 ; read the language from registry (ok if not there) and set langauge menu
866 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "InstallerLanguage" 866 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\${INSTNAME}" "InstallerLanguage"
867 StrCpy $LANGUAGE $0 867 StrCpy $LANGUAGE $0
868 868
869 Push "" 869 Push ""
@@ -882,14 +882,14 @@ Function .onInit
882 Abort 882 Abort
883 883
884 ; save language in registry 884 ; save language in registry
885 WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "InstallerLanguage" $LANGUAGE 885 WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\${INSTNAME}" "InstallerLanguage" $LANGUAGE
886FunctionEnd 886FunctionEnd
887 887
888;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 888;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
889Function un.onInit 889Function un.onInit
890 890
891 ; read language from registry and set for ininstaller 891 ; read language from registry and set for ininstaller
892 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\${INSTNAME}" "InstallerLanguage" 892 ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\${INSTNAME}" "InstallerLanguage"
893 StrCpy $LANGUAGE $0 893 StrCpy $LANGUAGE $0
894 894
895FunctionEnd 895FunctionEnd
@@ -992,11 +992,11 @@ CreateShortCut "$INSTDIR\$INSTSHORTCUT Museum Spanish.lnk" "$INSTDIR\$INSTEXE" "
992 992
993;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 993;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
994; Write registry 994; Write registry
995WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "" "$INSTDIR" 995WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" "" "$INSTDIR"
996WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Version" "${VERSION_LONG}" 996WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" "Version" "${VERSION_LONG}"
997WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Flags" "$INSTFLAGS" 997WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" "Flags" "$INSTFLAGS"
998WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Shortcut" "$INSTSHORTCUT" 998WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" "Shortcut" "$INSTSHORTCUT"
999WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\Linden Research, Inc.\$INSTPROG" "Exe" "$INSTEXE" 999WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\meta-impy\$INSTPROG" "Exe" "$INSTEXE"
1000WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "DisplayName" "$INSTPROG (remove only)" 1000WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "DisplayName" "$INSTPROG (remove only)"
1001WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "UninstallString" '"$INSTDIR\uninst.exe" /P="$INSTPROG"' 1001WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\$INSTPROG" "UninstallString" '"$INSTDIR\uninst.exe" /P="$INSTPROG"'
1002 1002
diff --git a/linden/indra/newview/installers/windows/lang_de.nsi b/linden/indra/newview/installers/windows/lang_de.nsi
index e45b3b1..5e21cb3 100644
--- a/linden/indra/newview/installers/windows/lang_de.nsi
+++ b/linden/indra/newview/installers/windows/lang_de.nsi
@@ -6,52 +6,52 @@ LangString LicenseSubTitleUpdate ${LANG_GERMAN} " Update"
6LangString LicenseSubTitleSetup ${LANG_GERMAN} " Setup" 6LangString LicenseSubTitleSetup ${LANG_GERMAN} " Setup"
7 7
8; description on license page 8; description on license page
9LangString LicenseDescUpdate ${LANG_GERMAN} "Dieses Paket wird das bereits installierte Imprudence mit Version ${VERSION_LONG}. ersetzen." 9LangString LicenseDescUpdate ${LANG_GERMAN} "Dieses Paket wird das bereits installierte meta-impy mit Version ${VERSION_LONG}. ersetzen."
10LangString LicenseDescSetup ${LANG_GERMAN} "Dieses Paket wird Imprudence auf Ihrem Computer installieren." 10LangString LicenseDescSetup ${LANG_GERMAN} "Dieses Paket wird meta-impy auf Ihrem Computer installieren."
11LangString LicenseDescNext ${LANG_GERMAN} "Weiter" 11LangString LicenseDescNext ${LANG_GERMAN} "Weiter"
12 12
13; installation directory text 13; installation directory text
14LangString DirectoryChooseTitle ${LANG_GERMAN} "Installations-Ordner" 14LangString DirectoryChooseTitle ${LANG_GERMAN} "Installations-Ordner"
15LangString DirectoryChooseUpdate ${LANG_GERMAN} "Wählen Sie den Imprudence Ordner für dieses Update:" 15LangString DirectoryChooseUpdate ${LANG_GERMAN} "Wählen Sie den meta-impy Ordner für dieses Update:"
16LangString DirectoryChooseSetup ${LANG_GERMAN} "Pfad in dem Imprudence installieren werden soll:" 16LangString DirectoryChooseSetup ${LANG_GERMAN} "Pfad in dem meta-impy installieren werden soll:"
17 17
18; CheckStartupParams message box 18; CheckStartupParams message box
19LangString CheckStartupParamsMB ${LANG_GERMAN} "Konnte Programm '$INSTPROG' nicht finden. Stilles Update fehlgeschlagen." 19LangString CheckStartupParamsMB ${LANG_GERMAN} "Konnte Programm '$INSTPROG' nicht finden. Stilles Update fehlgeschlagen."
20 20
21; installation success dialog 21; installation success dialog
22LangString InstSuccesssQuestion ${LANG_GERMAN} "Imprudence starten?" 22LangString InstSuccesssQuestion ${LANG_GERMAN} "meta-impy starten?"
23 23
24; remove old NSIS version 24; remove old NSIS version
25LangString RemoveOldNSISVersion ${LANG_GERMAN} "Überprüfe alte Version ..." 25LangString RemoveOldNSISVersion ${LANG_GERMAN} "Überprüfe alte Version ..."
26 26
27; check windows version 27; check windows version
28LangString CheckWindowsVersionDP ${LANG_GERMAN} "Überprüfung der Windows Version ..." 28LangString CheckWindowsVersionDP ${LANG_GERMAN} "Überprüfung der Windows Version ..."
29LangString CheckWindowsVersionMB ${LANG_GERMAN} 'Imprudence unterstützt nur Windows XP, Windows 2000 und Mac OS X.$\n$\nDer Versuch es auf Windows $R0 zu installieren, könnte zu unvorhersehbaren Abstürzen und Datenverlust führen.$\n$\nTrotzdem installieren?' 29LangString CheckWindowsVersionMB ${LANG_GERMAN} 'meta-impy unterstützt nur Windows XP, Windows 2000 und Mac OS X.$\n$\nDer Versuch es auf Windows $R0 zu installieren, könnte zu unvorhersehbaren Abstürzen und Datenverlust führen.$\n$\nTrotzdem installieren?'
30 30
31; checkifadministrator function (install) 31; checkifadministrator function (install)
32LangString CheckAdministratorInstDP ${LANG_GERMAN} "Überprüfung der Installations-Berechtigungen ..." 32LangString CheckAdministratorInstDP ${LANG_GERMAN} "Überprüfung der Installations-Berechtigungen ..."
33LangString CheckAdministratorInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um Imprudence installieren zu können.' 33LangString CheckAdministratorInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um meta-impy installieren zu können.'
34 34
35; checkifadministrator function (uninstall) 35; checkifadministrator function (uninstall)
36LangString CheckAdministratorUnInstDP ${LANG_GERMAN} "Überprüfung der Entfernungs-Berechtigungen ..." 36LangString CheckAdministratorUnInstDP ${LANG_GERMAN} "Überprüfung der Entfernungs-Berechtigungen ..."
37LangString CheckAdministratorUnInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um Imprudence entfernen zu können..' 37LangString CheckAdministratorUnInstMB ${LANG_GERMAN} 'Sie besitzen ungenügende Berechtigungen.$\nSie müssen ein "administrator" sein, um meta-impy entfernen zu können..'
38 38
39; checkifalreadycurrent 39; checkifalreadycurrent
40LangString CheckIfCurrentMB ${LANG_GERMAN} "Anscheinend ist Imprudence ${VERSION_LONG} bereits installiert.$\n$\nWürden Sie es gerne erneut installieren?" 40LangString CheckIfCurrentMB ${LANG_GERMAN} "Anscheinend ist meta-impy ${VERSION_LONG} bereits installiert.$\n$\nWürden Sie es gerne erneut installieren?"
41 41
42; closeimprudence function (install) 42; closeimprudence function (install)
43LangString CloseSecondLifeInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Imprudence ..." 43LangString CloseSecondLifeInstDP ${LANG_GERMAN} "Warten auf die Beendigung von meta-impy ..."
44LangString CloseSecondLifeInstMB ${LANG_GERMAN} "Imprudence kann nicht installiert oder ersetzt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um Imprudence zu beenden.$\nKlicken Sie CANCEL, um die Installation abzubrechen." 44LangString CloseSecondLifeInstMB ${LANG_GERMAN} "meta-impy kann nicht installiert oder ersetzt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um meta-impy zu beenden.$\nKlicken Sie CANCEL, um die Installation abzubrechen."
45 45
46; closeimprudence function (uninstall) 46; closeimprudence function (uninstall)
47LangString CloseSecondLifeUnInstDP ${LANG_GERMAN} "Warten auf die Beendigung von Imprudence ..." 47LangString CloseSecondLifeUnInstDP ${LANG_GERMAN} "Warten auf die Beendigung von meta-impy ..."
48LangString CloseSecondLifeUnInstMB ${LANG_GERMAN} "Imprudence kann nicht entfernt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um Imprudence zu beenden.$\nKlicken Sie CANCEL, um abzubrechen." 48LangString CloseSecondLifeUnInstMB ${LANG_GERMAN} "meta-impy kann nicht entfernt werden, wenn es bereits läuft.$\n$\nBeenden Sie, was Sie gerade tun und klicken Sie OK, um meta-impy zu beenden.$\nKlicken Sie CANCEL, um abzubrechen."
49 49
50; removecachefiles 50; removecachefiles
51LangString RemoveCacheFilesDP ${LANG_GERMAN} "Löschung aller Cache Dateien in Dokumente und Einstellungen." 51LangString RemoveCacheFilesDP ${LANG_GERMAN} "Löschung aller Cache Dateien in Dokumente und Einstellungen."
52 52
53; delete program files 53; delete program files
54LangString DeleteProgramFilesMB ${LANG_GERMAN} "Es existieren weiterhin Dateien in Ihrem Imprudence Programm Ordner.$\n$\nDies sind möglicherweise Dateien, die sie modifiziert oder bewegt haben:$\n$INSTDIR$\n$\nMöchten Sie diese ebenfalls löschen?" 54LangString DeleteProgramFilesMB ${LANG_GERMAN} "Es existieren weiterhin Dateien in Ihrem meta-impy Programm Ordner.$\n$\nDies sind möglicherweise Dateien, die sie modifiziert oder bewegt haben:$\n$INSTDIR$\n$\nMöchten Sie diese ebenfalls löschen?"
55 55
56; uninstall text 56; uninstall text
57LangString UninstallTextMsg ${LANG_GERMAN} "Dies wird Imprudence ${VERSION_LONG} von Ihrem System entfernen." 57LangString UninstallTextMsg ${LANG_GERMAN} "Dies wird meta-impy ${VERSION_LONG} von Ihrem System entfernen."
diff --git a/linden/indra/newview/installers/windows/lang_en-us.nsi b/linden/indra/newview/installers/windows/lang_en-us.nsi
index 0d28c3f..5612418 100644
--- a/linden/indra/newview/installers/windows/lang_en-us.nsi
+++ b/linden/indra/newview/installers/windows/lang_en-us.nsi
@@ -7,46 +7,46 @@ LangString LicenseSubTitleSetup ${LANG_ENGLISH} " Setup"
7 7
8; installation directory text 8; installation directory text
9LangString DirectoryChooseTitle ${LANG_ENGLISH} "Installation Directory" 9LangString DirectoryChooseTitle ${LANG_ENGLISH} "Installation Directory"
10LangString DirectoryChooseUpdate ${LANG_ENGLISH} "Select the Imprudence directory to update to version ${VERSION_LONG}.(XXX):" 10LangString DirectoryChooseUpdate ${LANG_ENGLISH} "Select the meta-impy directory to update to version ${VERSION_LONG}.(XXX):"
11LangString DirectoryChooseSetup ${LANG_ENGLISH} "Select the directory to install Imprudence in:" 11LangString DirectoryChooseSetup ${LANG_ENGLISH} "Select the directory to install meta-impy in:"
12 12
13; CheckStartupParams message box 13; CheckStartupParams message box
14LangString CheckStartupParamsMB ${LANG_ENGLISH} "Could not find the program '$INSTPROG'. Silent update failed." 14LangString CheckStartupParamsMB ${LANG_ENGLISH} "Could not find the program '$INSTPROG'. Silent update failed."
15 15
16; installation success dialog 16; installation success dialog
17LangString InstSuccesssQuestion ${LANG_ENGLISH} "Start Imprudence now?" 17LangString InstSuccesssQuestion ${LANG_ENGLISH} "Start meta-impy now?"
18 18
19; remove old NSIS version 19; remove old NSIS version
20LangString RemoveOldNSISVersion ${LANG_ENGLISH} "Checking for old version..." 20LangString RemoveOldNSISVersion ${LANG_ENGLISH} "Checking for old version..."
21 21
22; check windows version 22; check windows version
23LangString CheckWindowsVersionDP ${LANG_ENGLISH} "Checking Windows version..." 23LangString CheckWindowsVersionDP ${LANG_ENGLISH} "Checking Windows version..."
24LangString CheckWindowsVersionMB ${LANG_ENGLISH} 'Imprudence only supports Windows XP, Windows 2000, and Mac OS X.$\n$\nAttempting to install on Windows $R0 can result in crashes and data loss.$\n$\nInstall anyway?' 24LangString CheckWindowsVersionMB ${LANG_ENGLISH} 'meta-impy only supports Windows XP, Windows 2000, and Mac OS X.$\n$\nAttempting to install on Windows $R0 can result in crashes and data loss.$\n$\nInstall anyway?'
25 25
26; checkifadministrator function (install) 26; checkifadministrator function (install)
27LangString CheckAdministratorInstDP ${LANG_ENGLISH} "Checking for permission to install..." 27LangString CheckAdministratorInstDP ${LANG_ENGLISH} "Checking for permission to install..."
28LangString CheckAdministratorInstMB ${LANG_ENGLISH} 'You appear to be using a "limited" account.$\nYou must be an "administrator" to install Imprudence.' 28LangString CheckAdministratorInstMB ${LANG_ENGLISH} 'You appear to be using a "limited" account.$\nYou must be an "administrator" to install meta-impy.'
29 29
30; checkifadministrator function (uninstall) 30; checkifadministrator function (uninstall)
31LangString CheckAdministratorUnInstDP ${LANG_ENGLISH} "Checking for permission to uninstall..." 31LangString CheckAdministratorUnInstDP ${LANG_ENGLISH} "Checking for permission to uninstall..."
32LangString CheckAdministratorUnInstMB ${LANG_ENGLISH} 'You appear to be using a "limited" account.$\nYou must be an "administrator" to uninstall Imprudence.' 32LangString CheckAdministratorUnInstMB ${LANG_ENGLISH} 'You appear to be using a "limited" account.$\nYou must be an "administrator" to uninstall meta-impy.'
33 33
34; checkifalreadycurrent 34; checkifalreadycurrent
35LangString CheckIfCurrentMB ${LANG_ENGLISH} "It appears that Imprudence ${VERSION_LONG} is already installed.$\n$\nWould you like to install it again?" 35LangString CheckIfCurrentMB ${LANG_ENGLISH} "It appears that meta-impy ${VERSION_LONG} is already installed.$\n$\nWould you like to install it again?"
36 36
37; closeimprudence function (install) 37; closeimprudence function (install)
38LangString CloseSecondLifeInstDP ${LANG_ENGLISH} "Waiting for Imprudence to shut down..." 38LangString CloseSecondLifeInstDP ${LANG_ENGLISH} "Waiting for meta-impy to shut down..."
39LangString CloseSecondLifeInstMB ${LANG_ENGLISH} "Imprudence can't be installed while it is already running.$\n$\nFinish what you're doing then select OK to close Imprudence and continue.$\nSelect CANCEL to cancel installation." 39LangString CloseSecondLifeInstMB ${LANG_ENGLISH} "meta-impy can't be installed while it is already running.$\n$\nFinish what you're doing then select OK to close meta-impy and continue.$\nSelect CANCEL to cancel installation."
40 40
41; closeimprudence function (uninstall) 41; closeimprudence function (uninstall)
42LangString CloseSecondLifeUnInstDP ${LANG_ENGLISH} "Waiting for Imprudence to shut down..." 42LangString CloseSecondLifeUnInstDP ${LANG_ENGLISH} "Waiting for meta-impy to shut down..."
43LangString CloseSecondLifeUnInstMB ${LANG_ENGLISH} "Imprudence can't be uninstalled while it is already running.$\n$\nFinish what you're doing then select OK to close Imprudence and continue.$\nSelect CANCEL to cancel." 43LangString CloseSecondLifeUnInstMB ${LANG_ENGLISH} "meta-impy can't be uninstalled while it is already running.$\n$\nFinish what you're doing then select OK to close meta-impy and continue.$\nSelect CANCEL to cancel."
44 44
45; removecachefiles 45; removecachefiles
46LangString RemoveCacheFilesDP ${LANG_ENGLISH} "Deleting cache files in Documents and Settings folder" 46LangString RemoveCacheFilesDP ${LANG_ENGLISH} "Deleting cache files in Documents and Settings folder"
47 47
48; delete program files 48; delete program files
49LangString DeleteProgramFilesMB ${LANG_ENGLISH} "There are still files in your Imprudence program directory.$\n$\nThese are possibly files you created or moved to:$\n$INSTDIR$\n$\nDo you want to remove them?" 49LangString DeleteProgramFilesMB ${LANG_ENGLISH} "There are still files in your meta-impy program directory.$\n$\nThese are possibly files you created or moved to:$\n$INSTDIR$\n$\nDo you want to remove them?"
50 50
51; uninstall text 51; uninstall text
52LangString UninstallTextMsg ${LANG_ENGLISH} "This will uninstall Imprudence ${VERSION_LONG} from your system." 52LangString UninstallTextMsg ${LANG_ENGLISH} "This will uninstall meta-impy ${VERSION_LONG} from your system."
diff --git a/linden/indra/newview/installers/windows/meta-impy installer script experimental.iss b/linden/indra/newview/installers/windows/meta-impy installer script experimental.iss
new file mode 100644
index 0000000..7814cb6
--- /dev/null
+++ b/linden/indra/newview/installers/windows/meta-impy installer script experimental.iss
@@ -0,0 +1,194 @@
1; Script generated by the Inno Setup Script Wizard.
2; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
3
4[Setup]
5; NOTE: The value of AppId uniquely identifies this application.
6; Do not use the same AppId value in installers for other applications.
7; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
8
9; These will change
10AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460}
11AppName=meta-impy Viewer Experimental Release
12AppVerName=meta-impy Viewer 1.4.0 Experimental 2010.09.04
13DefaultDirName={pf}\meta-impyExperimental
14DefaultGroupName=meta-impy Viewer Experimental Release
15VersionInfoProductName=meta-impy Viewer Experimental Release
16OutputBaseFilename=meta-impy-1.4.0-experimental-2010.09.04-Setup
17VersionInfoVersion=1.4.0
18VersionInfoTextVersion=1.4.0
19VersionInfoProductVersion=1.4.0
20VersionInfoCopyright=2010
21AppCopyright=2010
22
23; These won't change
24VersionInfoCompany=meta-impy
25AppPublisher=The Imprudence Project
26AppPublisherURL=http://www.imprudenceviewer.org
27AppSupportURL=http://www.imprudenceviewer.org
28AppUpdatesURL=http://www.imprudenceviewer.org
29AllowNoIcons=true
30InfoAfterFile=..\windows\README.txt
31OutputDir=C:\
32SetupIconFile=..\windows\imp_icon.ico
33Compression=lzma2/ultra64
34InternalCompressLevel=ultra64
35SolidCompression=true
36PrivilegesRequired=poweruser
37AllowRootDirectory=true
38WizardImageFile=..\windows\meta-impy_installer_icon_left.bmp
39WizardSmallImageFile=..\windows\meta-impy_installer_icon_right.bmp
40SetupLogging=true
41
42[Languages]
43Name: english; MessagesFile: compiler:Default.isl
44
45[Tasks]
46Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce
47Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce
48Name: slurlassociate; Description: Associate meta-impy with SLURLs; GroupDescription: Associations:; Languages: ; Flags: checkedonce
49; TODO: use scripting for something like this on uninstall:
50; Name: uninstallsettings; Description: Remove user settings; Flags: checkablealone; Languages: ; GroupDescription: Uninstall:
51
52[Files]
53Source: C:\imp_1.3\meta-impy.exe; DestDir: {app}; Flags: ignoreversion
54Source: C:\imp_1.3\character\*; DestDir: {app}\character; Flags: ignoreversion recursesubdirs createallsubdirs
55Source: C:\imp_1.3\fonts\*; DestDir: {app}\fonts; Flags: ignoreversion recursesubdirs createallsubdirs
56Source: C:\imp_1.3\app_settings\*; DestDir: {app}\app_settings; Flags: ignoreversion recursesubdirs createallsubdirs
57Source: C:\imp_1.3\skins\*; DestDir: {app}\skins; Flags: ignoreversion recursesubdirs createallsubdirs
58Source: C:\imp_1.3\doc\*; DestDir: {app}\doc; Flags: ignoreversion recursesubdirs createallsubdirs
59Source: C:\imp_1.3\lib\*; DestDir: {app}\lib; Flags: ignoreversion recursesubdirs createallsubdirs
60Source: C:\imp_1.3\alut.dll; DestDir: {app}; Flags: ignoreversion
61Source: C:\imp_1.3\ChangeLog.txt; DestDir: {app}; Flags: ignoreversion
62Source: C:\imp_1.3\charset.dll; DestDir: {app}; Flags: ignoreversion
63Source: C:\imp_1.3\dbghelp.dll; DestDir: {app}; Flags: ignoreversion
64Source: C:\imp_1.3\featuretable.txt; DestDir: {app}; Flags: ignoreversion
65Source: C:\imp_1.3\freebl3.dll; DestDir: {app}; Flags: ignoreversion
66Source: C:\imp_1.3\glew32.dll; DestDir: {app}; Flags: ignoreversion
67Source: C:\imp_1.3\gpu_table.txt; DestDir: {app}; Flags: ignoreversion
68Source: C:\imp_1.3\iconv.dll; DestDir: {app}; Flags: ignoreversion
69Source: C:\imp_1.3\meta-impy.exe.config; DestDir: {app}; Flags: ignoreversion
70Source: C:\imp_1.3\meta-impy.url; DestDir: {app}; Flags: ignoreversion
71Source: C:\imp_1.3\intl.dll; DestDir: {app}; Flags: ignoreversion
72Source: C:\imp_1.3\js3250.dll; DestDir: {app}; Flags: ignoreversion
73Source: C:\imp_1.3\libcairo-2.dll; DestDir: {app}; Flags: ignoreversion
74Source: C:\imp_1.3\libfaad-2.dll; DestDir: {app}; Flags: ignoreversion
75Source: C:\imp_1.3\libgcrypt-11.dll; DestDir: {app}; Flags: ignoreversion
76Source: C:\imp_1.3\libgio-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
77Source: C:\imp_1.3\libglib-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
78Source: C:\imp_1.3\libgmodule-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
79Source: C:\imp_1.3\libgnutls-26.dll; DestDir: {app}; Flags: ignoreversion
80Source: C:\imp_1.3\libgobject-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
81Source: C:\imp_1.3\libgpg-error-0.dll; DestDir: {app}; Flags: ignoreversion
82Source: C:\imp_1.3\libgstapp.dll; DestDir: {app}; Flags: ignoreversion
83Source: C:\imp_1.3\libgstaudio.dll; DestDir: {app}; Flags: ignoreversion
84Source: C:\imp_1.3\libgstaudio-0.10.dll; DestDir: {app}; Flags: ignoreversion
85Source: C:\imp_1.3\libgstbase-0.10.dll; DestDir: {app}; Flags: ignoreversion
86Source: C:\imp_1.3\libgstcdda.dll; DestDir: {app}; Flags: ignoreversion
87Source: C:\imp_1.3\libgstcontroller-0.10.dll; DestDir: {app}; Flags: ignoreversion
88Source: C:\imp_1.3\libgstdataprotocol-0.10.dll; DestDir: {app}; Flags: ignoreversion
89Source: C:\imp_1.3\libgstdshow.dll; DestDir: {app}; Flags: ignoreversion
90Source: C:\imp_1.3\libgstfft.dll; DestDir: {app}; Flags: ignoreversion
91Source: C:\imp_1.3\libgstinterfaces.dll; DestDir: {app}; Flags: ignoreversion
92Source: C:\imp_1.3\libgstnet-0.10.dll; DestDir: {app}; Flags: ignoreversion
93Source: C:\imp_1.3\libgstnetbuffer.dll; DestDir: {app}; Flags: ignoreversion
94Source: C:\imp_1.3\libgstpbutils.dll; DestDir: {app}; Flags: ignoreversion
95Source: C:\imp_1.3\libgstreamer-0.10.dll; DestDir: {app}; Flags: ignoreversion
96Source: C:\imp_1.3\libgstriff.dll; DestDir: {app}; Flags: ignoreversion
97Source: C:\imp_1.3\libgstrtp.dll; DestDir: {app}; Flags: ignoreversion
98Source: C:\imp_1.3\libgstrtsp.dll; DestDir: {app}; Flags: ignoreversion
99Source: C:\imp_1.3\libgstsdp.dll; DestDir: {app}; Flags: ignoreversion
100Source: C:\imp_1.3\libgsttag.dll; DestDir: {app}; Flags: ignoreversion
101Source: C:\imp_1.3\libgstvideo.dll; DestDir: {app}; Flags: ignoreversion
102Source: C:\imp_1.3\libgthread-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
103Source: C:\imp_1.3\libhunspell.dll; DestDir: {app}; Flags: ignoreversion
104Source: C:\imp_1.3\libjpeg.dll; DestDir: {app}; Flags: ignoreversion
105Source: C:\imp_1.3\libmp3lame-0.dll; DestDir: {app}; Flags: ignoreversion
106Source: C:\imp_1.3\libneon-27.dll; DestDir: {app}; Flags: ignoreversion
107Source: C:\imp_1.3\libogg-0.dll; DestDir: {app}; Flags: ignoreversion
108Source: C:\imp_1.3\liboil-0.3-0.dll; DestDir: {app}; Flags: ignoreversion
109Source: C:\imp_1.3\libopenjpeg-2.dll; DestDir: {app}; Flags: ignoreversion
110Source: C:\imp_1.3\libpng12-0.dll; DestDir: {app}; Flags: ignoreversion
111Source: C:\imp_1.3\libschroedinger-1.0-0.dll; DestDir: {app}; Flags: ignoreversion
112Source: C:\imp_1.3\libspeex-1.dll; DestDir: {app}; Flags: ignoreversion
113Source: C:\imp_1.3\libtheora-0.dll; DestDir: {app}; Flags: ignoreversion
114Source: C:\imp_1.3\libvorbis-0.dll; DestDir: {app}; Flags: ignoreversion
115Source: C:\imp_1.3\libvorbisenc-2.dll; DestDir: {app}; Flags: ignoreversion
116Source: C:\imp_1.3\libxml2-2.dll; DestDir: {app}; Flags: ignoreversion
117Source: C:\imp_1.3\libxml2.dll; DestDir: {app}; Flags: ignoreversion
118Source: C:\imp_1.3\llkdu.dll.2.config; DestDir: {app}; Flags: ignoreversion
119Source: C:\imp_1.3\Microsoft.VC80.CRT.manifest; DestDir: {app}; Flags: ignoreversion
120Source: C:\imp_1.3\msvcp80.dll; DestDir: {app}; Flags: ignoreversion
121Source: C:\imp_1.3\msvcr80.dll; DestDir: {app}; Flags: ignoreversion
122Source: C:\imp_1.3\nspr4.dll; DestDir: {app}; Flags: ignoreversion
123Source: C:\imp_1.3\nss3.dll; DestDir: {app}; Flags: ignoreversion
124Source: C:\imp_1.3\nssckbi.dll; DestDir: {app}; Flags: ignoreversion
125Source: C:\imp_1.3\openal32.dll; DestDir: {app}; Flags: ignoreversion
126Source: C:\imp_1.3\OpenJPEG.dll; DestDir: {app}; Flags: ignoreversion
127Source: C:\imp_1.3\plc4.dll; DestDir: {app}; Flags: ignoreversion
128Source: C:\imp_1.3\plds4.dll; DestDir: {app}; Flags: ignoreversion
129Source: C:\imp_1.3\smime3.dll; DestDir: {app}; Flags: ignoreversion
130Source: C:\imp_1.3\softokn3.dll; DestDir: {app}; Flags: ignoreversion
131Source: C:\imp_1.3\ssl3.dll; DestDir: {app}; Flags: ignoreversion
132Source: C:\imp_1.3\xpcom.dll; DestDir: {app}; Flags: ignoreversion
133Source: C:\imp_1.3\xul.dll; DestDir: {app}; Flags: ignoreversion
134Source: C:\imp_1.3\xvidcore.dll; DestDir: {app}; Flags: ignoreversion
135Source: C:\imp_1.3\zlib1.dll; DestDir: {app}; Flags: ignoreversion
136
137; Voice files
138Source: C:\imp_1.3\ortp.dll; DestDir: {app}; Flags: ignoreversion
139Source: C:\imp_1.3\SLVoice.exe; DestDir: {app}; Flags: ignoreversion
140Source: C:\imp_1.3\vivoxsdk.dll; DestDir: {app}; Flags: ignoreversion
141Source: C:\imp_1.3\wrap_oal.dll; DestDir: {app}; Flags: ignoreversion
142
143; Old files we don't use anymore
144; Source: C:\imp_1.3\dronesettings.xml; DestDir: {app}; Flags: ignoreversion
145; Source: C:\imp_1.3\volume_settings.xml; DestDir: {app}; Flags: ignoreversion
146; Source: C:\imp_1.3\srtp.dll; DestDir: {app}; Flags: ignoreversion
147; Source: C:\imp_1.3\ssleay32.dll; DestDir: {app}; Flags: ignoreversion
148; Source: C:\imp_1.3\tntk.dll; DestDir: {app}; Flags: ignoreversion
149; Source: C:\imp_1.3\libeay32.dll; DestDir: {app}; Flags: ignoreversion
150; Source: C:\imp_1.3\lsl_guide.html; DestDir: {app}; Flags: ignoreversion
151
152; NOTE: Don't use "Flags: ignoreversion" on any shared system files
153;Source: C:\imp_1.3\msvcr71.dll; DestDir: {app}; Flags: ignoreversion; MinVersion: 0,6.01; Tasks: ; Languages:
154
155[Registry]
156Root: HKCR; Subkey: meta-impy; ValueType: string; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueName: (default); ValueData: URL:Second Life
157Root: HKCR; Subkey: meta-impy; ValueType: string; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueName: URL Protocol
158Root: HKCR; Subkey: meta-impy\DefaultIcon; Flags: uninsdeletekey deletekey; ValueType: string; Tasks: slurlassociate; ValueData: {app}\meta-impy.exe
159Root: HKCR; Subkey: meta-impy\shell\open\command; ValueType: expandsz; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueData: "{app}\meta-impy.exe --settings settings_meta-impy.xml -url ""%1"""; Languages:
160; Root: HKCU; Subkey: Environment; ValueType: string; ValueName: GST_PLUGIN_PATH; Flags: deletevalue uninsdeletevalue; ValueData: {app}\lib
161; Root: HKCU; Subkey: Environment; ValueType: expandsz; ValueName: PATH; ValueData: {app}
162
163[Icons]
164Name: {group}\{cm:UninstallProgram,meta-impy Experimental}; Filename: {uninstallexe}
165Name: {commondesktop}\meta-impy Experimental; Filename: {app}\meta-impy.exe; Tasks: desktopicon; Parameters: --settings settings_meta-impy.xml; WorkingDir: {app}; IconIndex: 0
166Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\meta-impy Experimental; Filename: {app}\meta-impy.exe; Tasks: quicklaunchicon; Parameters: --settings settings_meta-impy.xml; WorkingDir: {app}
167Name: {group}\meta-impy Experimental; Filename: {app}\meta-impy.exe; WorkingDir: {app}; Comment: meta-impy; IconIndex: 0; Parameters: --settings settings_meta-impy.xml
168
169[Run]
170Filename: {app}\meta-impy.exe; WorkingDir: {app}; Flags: nowait postinstall
171Filename: {app}\meta-impy.url; WorkingDir: {app}; Flags: nowait postinstall shellexec; Description: See what makes Imprudence different
172
173[UninstallDelete]
174Name: {userappdata}\meta-impy\user_settings\password.dat; Type: files; Languages:
175Name: {userappdata}\meta-impy\user_settings\settings.xml; Type: files; Languages:
176Name: {userappdata}\meta-impy\user_settings\settings_meta-impy.xml; Type: files; Languages:
177; 1.2 and lower cache location:
178Name: {userappdata}\meta-impy\cache; Type: filesandordirs
179; 1.3 and higher cache location:
180Name: {localappdata}\meta-impy\cache; Type: filesandordirs
181Name: {userappdata}\meta-impy\logs; Type: filesandordirs
182Name: {userappdata}\meta-impy\browser_profile; Type: filesandordirs
183Name: C:\Users\{username}\.gstreamer-0.10; Type: filesandordirs
184Name: C:\Documents and Settings\{username}\.gstreamer-0.10; Type: filesandordirs
185
186[InstallDelete]
187; Name: {app}\*.dll; Type: files; Tasks: ; Languages:
188Name: {app}\lib\gstreamer-plugins\*; Type: filesandordirs; Tasks: ; Languages:
189; Name: {app}\skins\default\xui\*; Type: filesandordirs; Tasks: ; Languages:
190; Name: {app}\skins\silver\xui\*; Type: filesandordirs; Tasks: ; Languages:
191Name: C:\Documents and Settings\{username}\.gstreamer-0.10\*; Type: filesandordirs
192Name: C:\Users\{username}\.gstreamer-0.10\*; Type: filesandordirs
193; Breaks the browser if installing on top of 1.1:
194Name: {app}\gksvggdiplus.dll; Type: files; Tasks: ; Languages:
diff --git a/linden/indra/newview/installers/windows/meta-impy installer script.iss b/linden/indra/newview/installers/windows/meta-impy installer script.iss
new file mode 100644
index 0000000..376219b
--- /dev/null
+++ b/linden/indra/newview/installers/windows/meta-impy installer script.iss
@@ -0,0 +1,193 @@
1; Script generated by the Inno Setup Script Wizard.
2; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
3
4[Setup]
5; NOTE: The value of AppId uniquely identifies this application.
6; Do not use the same AppId value in installers for other applications.
7; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
8
9; These will change
10AppId={{D7736EE8-AFCE-4735-BBE3-652CDFBBFCA8}
11AppName=meta-impy
12AppVerName=meta-impy Viewer 1.3.0 RC2 (SSE2 optimized)
13DefaultDirName={pf}\meta-impy
14DefaultGroupName=meta-impy Viewer
15VersionInfoProductName=meta-impy Viewer
16OutputBaseFilename=meta-impy-1.3.0-RC2-(SSE2-optimized)-Setup
17VersionInfoVersion=1.3.0
18VersionInfoTextVersion=1.3.0
19VersionInfoProductVersion=1.3.0
20VersionInfoCopyright=2010
21AppCopyright=2010
22
23; These won't change
24VersionInfoCompany=meta-impy
25AppPublisher=The Imprudence Project
26AppPublisherURL=http://www.imprudenceviewer.org
27AppSupportURL=http://www.imprudenceviewer.org
28AppUpdatesURL=http://www.imprudenceviewer.org
29AllowNoIcons=true
30InfoAfterFile=..\windows\README.txt
31OutputDir=C:\
32SetupIconFile=..\windows\imp_icon.ico
33Compression=lzma2/ultra64
34InternalCompressLevel=ultra64
35SolidCompression=true
36PrivilegesRequired=poweruser
37AllowRootDirectory=true
38WizardImageFile=..\windows\meta-impy_installer_icon_left.bmp
39WizardSmallImageFile=..\windows\meta-impy_installer_icon_right.bmp
40SetupLogging=true
41
42[Languages]
43Name: english; MessagesFile: compiler:Default.isl
44
45[Tasks]
46Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce
47Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce
48Name: slurlassociate; Description: Associate meta-impy with SLURLs; GroupDescription: Associations:; Languages: ; Flags: checkedonce
49; TODO: use scripting for something like this on uninstall:
50; Name: uninstallsettings; Description: Remove user settings; Flags: checkablealone; Languages: ; GroupDescription: Uninstall:
51
52[Files]
53Source: C:\imp_1.3\meta-impy.exe; DestDir: {app}; Flags: ignoreversion
54Source: C:\imp_1.3\character\*; DestDir: {app}\character; Flags: ignoreversion recursesubdirs createallsubdirs
55Source: C:\imp_1.3\fonts\*; DestDir: {app}\fonts; Flags: ignoreversion recursesubdirs createallsubdirs
56Source: C:\imp_1.3\app_settings\*; DestDir: {app}\app_settings; Flags: ignoreversion recursesubdirs createallsubdirs
57Source: C:\imp_1.3\skins\*; DestDir: {app}\skins; Flags: ignoreversion recursesubdirs createallsubdirs
58Source: C:\imp_1.3\doc\*; DestDir: {app}\doc; Flags: ignoreversion recursesubdirs createallsubdirs
59Source: C:\imp_1.3\lib\*; DestDir: {app}\lib; Flags: ignoreversion recursesubdirs createallsubdirs
60Source: C:\imp_1.3\alut.dll; DestDir: {app}; Flags: ignoreversion
61Source: C:\imp_1.3\ChangeLog.txt; DestDir: {app}; Flags: ignoreversion
62Source: C:\imp_1.3\charset.dll; DestDir: {app}; Flags: ignoreversion
63Source: C:\imp_1.3\dbghelp.dll; DestDir: {app}; Flags: ignoreversion
64Source: C:\imp_1.3\featuretable.txt; DestDir: {app}; Flags: ignoreversion
65Source: C:\imp_1.3\freebl3.dll; DestDir: {app}; Flags: ignoreversion
66Source: C:\imp_1.3\glew32.dll; DestDir: {app}; Flags: ignoreversion
67Source: C:\imp_1.3\gpu_table.txt; DestDir: {app}; Flags: ignoreversion
68Source: C:\imp_1.3\iconv.dll; DestDir: {app}; Flags: ignoreversion
69Source: C:\imp_1.3\meta-impy.exe.config; DestDir: {app}; Flags: ignoreversion
70Source: C:\imp_1.3\meta-impy.url; DestDir: {app}; Flags: ignoreversion
71Source: C:\imp_1.3\intl.dll; DestDir: {app}; Flags: ignoreversion
72Source: C:\imp_1.3\js3250.dll; DestDir: {app}; Flags: ignoreversion
73Source: C:\imp_1.3\libcairo-2.dll; DestDir: {app}; Flags: ignoreversion
74Source: C:\imp_1.3\libfaad-2.dll; DestDir: {app}; Flags: ignoreversion
75Source: C:\imp_1.3\libgcrypt-11.dll; DestDir: {app}; Flags: ignoreversion
76Source: C:\imp_1.3\libgio-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
77Source: C:\imp_1.3\libglib-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
78Source: C:\imp_1.3\libgmodule-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
79Source: C:\imp_1.3\libgnutls-26.dll; DestDir: {app}; Flags: ignoreversion
80Source: C:\imp_1.3\libgobject-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
81Source: C:\imp_1.3\libgpg-error-0.dll; DestDir: {app}; Flags: ignoreversion
82Source: C:\imp_1.3\libgstapp.dll; DestDir: {app}; Flags: ignoreversion
83Source: C:\imp_1.3\libgstaudio.dll; DestDir: {app}; Flags: ignoreversion
84Source: C:\imp_1.3\libgstaudio-0.10.dll; DestDir: {app}; Flags: ignoreversion
85Source: C:\imp_1.3\libgstbase-0.10.dll; DestDir: {app}; Flags: ignoreversion
86Source: C:\imp_1.3\libgstcdda.dll; DestDir: {app}; Flags: ignoreversion
87Source: C:\imp_1.3\libgstcontroller-0.10.dll; DestDir: {app}; Flags: ignoreversion
88Source: C:\imp_1.3\libgstdataprotocol-0.10.dll; DestDir: {app}; Flags: ignoreversion
89Source: C:\imp_1.3\libgstdshow.dll; DestDir: {app}; Flags: ignoreversion
90Source: C:\imp_1.3\libgstfft.dll; DestDir: {app}; Flags: ignoreversion
91Source: C:\imp_1.3\libgstinterfaces.dll; DestDir: {app}; Flags: ignoreversion
92Source: C:\imp_1.3\libgstnet-0.10.dll; DestDir: {app}; Flags: ignoreversion
93Source: C:\imp_1.3\libgstnetbuffer.dll; DestDir: {app}; Flags: ignoreversion
94Source: C:\imp_1.3\libgstpbutils.dll; DestDir: {app}; Flags: ignoreversion
95Source: C:\imp_1.3\libgstreamer-0.10.dll; DestDir: {app}; Flags: ignoreversion
96Source: C:\imp_1.3\libgstriff.dll; DestDir: {app}; Flags: ignoreversion
97Source: C:\imp_1.3\libgstrtp.dll; DestDir: {app}; Flags: ignoreversion
98Source: C:\imp_1.3\libgstrtsp.dll; DestDir: {app}; Flags: ignoreversion
99Source: C:\imp_1.3\libgstsdp.dll; DestDir: {app}; Flags: ignoreversion
100Source: C:\imp_1.3\libgsttag.dll; DestDir: {app}; Flags: ignoreversion
101Source: C:\imp_1.3\libgstvideo.dll; DestDir: {app}; Flags: ignoreversion
102Source: C:\imp_1.3\libgthread-2.0-0.dll; DestDir: {app}; Flags: ignoreversion
103Source: C:\imp_1.3\libjpeg.dll; DestDir: {app}; Flags: ignoreversion
104Source: C:\imp_1.3\libmp3lame-0.dll; DestDir: {app}; Flags: ignoreversion
105Source: C:\imp_1.3\libneon-27.dll; DestDir: {app}; Flags: ignoreversion
106Source: C:\imp_1.3\libogg-0.dll; DestDir: {app}; Flags: ignoreversion
107Source: C:\imp_1.3\liboil-0.3-0.dll; DestDir: {app}; Flags: ignoreversion
108Source: C:\imp_1.3\libopenjpeg-2.dll; DestDir: {app}; Flags: ignoreversion
109Source: C:\imp_1.3\libpng12-0.dll; DestDir: {app}; Flags: ignoreversion
110Source: C:\imp_1.3\libschroedinger-1.0-0.dll; DestDir: {app}; Flags: ignoreversion
111Source: C:\imp_1.3\libspeex-1.dll; DestDir: {app}; Flags: ignoreversion
112Source: C:\imp_1.3\libtheora-0.dll; DestDir: {app}; Flags: ignoreversion
113Source: C:\imp_1.3\libvorbis-0.dll; DestDir: {app}; Flags: ignoreversion
114Source: C:\imp_1.3\libvorbisenc-2.dll; DestDir: {app}; Flags: ignoreversion
115Source: C:\imp_1.3\libxml2-2.dll; DestDir: {app}; Flags: ignoreversion
116Source: C:\imp_1.3\libxml2.dll; DestDir: {app}; Flags: ignoreversion
117Source: C:\imp_1.3\llkdu.dll.2.config; DestDir: {app}; Flags: ignoreversion
118Source: C:\imp_1.3\Microsoft.VC80.CRT.manifest; DestDir: {app}; Flags: ignoreversion
119Source: C:\imp_1.3\msvcp80.dll; DestDir: {app}; Flags: ignoreversion
120Source: C:\imp_1.3\msvcr80.dll; DestDir: {app}; Flags: ignoreversion
121Source: C:\imp_1.3\nspr4.dll; DestDir: {app}; Flags: ignoreversion
122Source: C:\imp_1.3\nss3.dll; DestDir: {app}; Flags: ignoreversion
123Source: C:\imp_1.3\nssckbi.dll; DestDir: {app}; Flags: ignoreversion
124Source: C:\imp_1.3\openal32.dll; DestDir: {app}; Flags: ignoreversion
125Source: C:\imp_1.3\OpenJPEG.dll; DestDir: {app}; Flags: ignoreversion
126Source: C:\imp_1.3\plc4.dll; DestDir: {app}; Flags: ignoreversion
127Source: C:\imp_1.3\plds4.dll; DestDir: {app}; Flags: ignoreversion
128Source: C:\imp_1.3\smime3.dll; DestDir: {app}; Flags: ignoreversion
129Source: C:\imp_1.3\softokn3.dll; DestDir: {app}; Flags: ignoreversion
130Source: C:\imp_1.3\ssl3.dll; DestDir: {app}; Flags: ignoreversion
131Source: C:\imp_1.3\xpcom.dll; DestDir: {app}; Flags: ignoreversion
132Source: C:\imp_1.3\xul.dll; DestDir: {app}; Flags: ignoreversion
133Source: C:\imp_1.3\xvidcore.dll; DestDir: {app}; Flags: ignoreversion
134Source: C:\imp_1.3\zlib1.dll; DestDir: {app}; Flags: ignoreversion
135
136; Voice files
137Source: C:\imp_1.3\ortp.dll; DestDir: {app}; Flags: ignoreversion
138Source: C:\imp_1.3\SLVoice.exe; DestDir: {app}; Flags: ignoreversion
139Source: C:\imp_1.3\vivoxsdk.dll; DestDir: {app}; Flags: ignoreversion
140Source: C:\imp_1.3\wrap_oal.dll; DestDir: {app}; Flags: ignoreversion
141
142; Old files we don't use anymore
143; Source: C:\imp_1.3\dronesettings.xml; DestDir: {app}; Flags: ignoreversion
144; Source: C:\imp_1.3\volume_settings.xml; DestDir: {app}; Flags: ignoreversion
145; Source: C:\imp_1.3\srtp.dll; DestDir: {app}; Flags: ignoreversion
146; Source: C:\imp_1.3\ssleay32.dll; DestDir: {app}; Flags: ignoreversion
147; Source: C:\imp_1.3\tntk.dll; DestDir: {app}; Flags: ignoreversion
148; Source: C:\imp_1.3\libeay32.dll; DestDir: {app}; Flags: ignoreversion
149; Source: C:\imp_1.3\lsl_guide.html; DestDir: {app}; Flags: ignoreversion
150
151; NOTE: Don't use "Flags: ignoreversion" on any shared system files
152;Source: C:\imp_1.3\msvcr71.dll; DestDir: {app}; Flags: ignoreversion; MinVersion: 0,6.01; Tasks: ; Languages:
153
154[Registry]
155Root: HKCR; Subkey: meta-impy; ValueType: string; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueName: (default); ValueData: URL:Second Life
156Root: HKCR; Subkey: meta-impy; ValueType: string; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueName: URL Protocol
157Root: HKCR; Subkey: meta-impy\DefaultIcon; Flags: uninsdeletekey deletekey; ValueType: string; Tasks: slurlassociate; ValueData: {app}\meta-impy.exe
158Root: HKCR; Subkey: meta-impy\shell\open\command; ValueType: expandsz; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueData: "{app}\meta-impy.exe --settings settings_meta-impy.xml -url ""%1"""; Languages:
159; Root: HKCU; Subkey: Environment; ValueType: string; ValueName: GST_PLUGIN_PATH; Flags: deletevalue uninsdeletevalue; ValueData: {app}\lib
160; Root: HKCU; Subkey: Environment; ValueType: expandsz; ValueName: PATH; ValueData: {app}
161
162[Icons]
163Name: {group}\{cm:UninstallProgram,meta-impy}; Filename: {uninstallexe}
164Name: {commondesktop}\meta-impy; Filename: {app}\meta-impy.exe; Tasks: desktopicon; Parameters: --settings settings_meta-impy.xml; WorkingDir: {app}; IconIndex: 0
165Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\meta-impy; Filename: {app}\meta-impy.exe; Tasks: quicklaunchicon; Parameters: --settings settings_meta-impy.xml; WorkingDir: {app}
166Name: {group}\meta-impy; Filename: {app}\meta-impy.exe; WorkingDir: {app}; Comment: meta-impy; IconIndex: 0; Parameters: --settings settings_meta-impy.xml
167
168[Run]
169Filename: {app}\meta-impy.exe; WorkingDir: {app}; Flags: nowait postinstall
170Filename: {app}\meta-impy.url; WorkingDir: {app}; Flags: nowait postinstall shellexec; Description: See what makes Imprudence different
171
172[UninstallDelete]
173Name: {userappdata}\meta-impy\user_settings\password.dat; Type: files; Languages:
174Name: {userappdata}\meta-impy\user_settings\settings.xml; Type: files; Languages:
175Name: {userappdata}\meta-impy\user_settings\settings_meta-impy.xml; Type: files; Languages:
176; 1.2 and lower cache location:
177Name: {userappdata}\meta-impy\cache; Type: filesandordirs
178; 1.3 and higher cache location:
179Name: {localappdata}\meta-impy\cache; Type: filesandordirs
180Name: {userappdata}\meta-impy\logs; Type: filesandordirs
181Name: {userappdata}\meta-impy\browser_profile; Type: filesandordirs
182Name: C:\Users\{username}\.gstreamer-0.10; Type: filesandordirs
183Name: C:\Documents and Settings\{username}\.gstreamer-0.10; Type: filesandordirs
184
185[InstallDelete]
186; Name: {app}\*.dll; Type: files; Tasks: ; Languages:
187Name: {app}\lib\gstreamer-plugins\*; Type: filesandordirs; Tasks: ; Languages:
188; Name: {app}\skins\default\xui\*; Type: filesandordirs; Tasks: ; Languages:
189; Name: {app}\skins\silver\xui\*; Type: filesandordirs; Tasks: ; Languages:
190Name: C:\Documents and Settings\{username}\.gstreamer-0.10\*; Type: filesandordirs
191Name: C:\Users\{username}\.gstreamer-0.10\*; Type: filesandordirs
192; Breaks the browser if installing on top of 1.1:
193Name: {app}\gksvggdiplus.dll; Type: files; Tasks: ; Languages:
diff --git a/linden/indra/newview/installers/windows/meta-impy_installer_icon_left.bmp b/linden/indra/newview/installers/windows/meta-impy_installer_icon_left.bmp
new file mode 100644
index 0000000..79fd407
--- /dev/null
+++ b/linden/indra/newview/installers/windows/meta-impy_installer_icon_left.bmp
Binary files differ
diff --git a/linden/indra/newview/installers/windows/meta-impy_installer_icon_right.bmp b/linden/indra/newview/installers/windows/meta-impy_installer_icon_right.bmp
new file mode 100644
index 0000000..1c1d5dc
--- /dev/null
+++ b/linden/indra/newview/installers/windows/meta-impy_installer_icon_right.bmp
Binary files differ
diff --git a/linden/indra/newview/installers/windows/imprudence_installer_template.iss b/linden/indra/newview/installers/windows/meta-impy_installer_template.iss
index 6ae437e..17aac3e 100644
--- a/linden/indra/newview/installers/windows/imprudence_installer_template.iss
+++ b/linden/indra/newview/installers/windows/meta-impy_installer_template.iss
@@ -11,8 +11,8 @@
11AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460} 11AppId={{1B3E68BC-13EB-4277-9439-CB5FF9259460}
12AppName=%%APPNAME%% 12AppName=%%APPNAME%%
13AppVerName=%%APPVERNAME%% 13AppVerName=%%APPVERNAME%%
14DefaultDirName={pf}\Imprudence 14DefaultDirName={pf}\meta-impy
15DefaultGroupName=Imprudence Viewer 15DefaultGroupName=meta-impy Viewer
16VersionInfoProductName=%%APPNAME%% 16VersionInfoProductName=%%APPNAME%%
17OutputBaseFilename=%%INSTALLERFILENAME%% 17OutputBaseFilename=%%INSTALLERFILENAME%%
18VersionInfoVersion=%%VERSIONNUMBER%% 18VersionInfoVersion=%%VERSIONNUMBER%%
@@ -22,8 +22,8 @@ AppVersion=%%VERSION%%
22VersionInfoCopyright=2011 22VersionInfoCopyright=2011
23 23
24; These won't change 24; These won't change
25VersionInfoCompany=Imprudence 25VersionInfoCompany=meta-impy
26AppPublisher=The Imprudence Project 26AppPublisher=The meta-impy Project
27AppPublisherURL=http://kokuaviewer.org 27AppPublisherURL=http://kokuaviewer.org
28AppSupportURL=http://kokuaviewer.org 28AppSupportURL=http://kokuaviewer.org
29AllowNoIcons=true 29AllowNoIcons=true
@@ -35,8 +35,8 @@ InternalCompressLevel=ultra64
35SolidCompression=true 35SolidCompression=true
36PrivilegesRequired=poweruser 36PrivilegesRequired=poweruser
37AllowRootDirectory=true 37AllowRootDirectory=true
38WizardImageFile=..\..\..\..\newview\installers\windows\imprudence_installer_icon_left.bmp 38WizardImageFile=..\..\..\..\newview\installers\windows\meta-impy_installer_icon_left.bmp
39WizardSmallImageFile=..\..\..\..\newview\installers\windows\imprudence_installer_icon_right.bmp 39WizardSmallImageFile=..\..\..\..\newview\installers\windows\meta-impy_installer_icon_right.bmp
40SetupLogging=true 40SetupLogging=true
41RestartIfNeededByRun=false 41RestartIfNeededByRun=false
42AlwaysRestart=false 42AlwaysRestart=false
@@ -47,13 +47,13 @@ Name: english; MessagesFile: compiler:Default.isl
47[Tasks] 47[Tasks]
48Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce 48Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce
49Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce; OnlyBelowVersion: 0,6.1 49Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: checkedonce; OnlyBelowVersion: 0,6.1
50Name: slurlassociate; Description: Associate Imprudence with SLURLs; GroupDescription: Associations:; Languages: ; Flags: checkedonce 50Name: slurlassociate; Description: Associate meta-impy with SLURLs; GroupDescription: Associations:; Languages: ; Flags: checkedonce
51; TODO: use scripting for something like this on uninstall: 51; TODO: use scripting for something like this on uninstall:
52; Name: uninstallsettings; Description: Remove user settings; Flags: checkablealone; Languages: ; GroupDescription: Uninstall: 52; Name: uninstallsettings; Description: Remove user settings; Flags: checkablealone; Languages: ; GroupDescription: Uninstall:
53 53
54; NOTE VS2005 is currently the only version supported anywhere in the packaging system, so we can do this here 54; NOTE VS2005 is currently the only version supported anywhere in the packaging system, so we can do this here
55[Files] 55[Files]
56Source: %%PACKAGEFILES%%\imprudence.exe; DestDir: {app}; Flags: ignoreversion 56Source: %%PACKAGEFILES%%\meta-impy.exe; DestDir: {app}; Flags: ignoreversion
57Source: %%PACKAGEFILES%%\character\*; DestDir: {app}\character; Flags: ignoreversion recursesubdirs createallsubdirs 57Source: %%PACKAGEFILES%%\character\*; DestDir: {app}\character; Flags: ignoreversion recursesubdirs createallsubdirs
58Source: %%PACKAGEFILES%%\fonts\*; DestDir: {app}\fonts; Flags: ignoreversion recursesubdirs createallsubdirs 58Source: %%PACKAGEFILES%%\fonts\*; DestDir: {app}\fonts; Flags: ignoreversion recursesubdirs createallsubdirs
59Source: %%PACKAGEFILES%%\app_settings\*; DestDir: {app}\app_settings; Flags: ignoreversion recursesubdirs createallsubdirs 59Source: %%PACKAGEFILES%%\app_settings\*; DestDir: {app}\app_settings; Flags: ignoreversion recursesubdirs createallsubdirs
@@ -69,7 +69,7 @@ Source: %%PACKAGEFILES%%\llcommon.dll; DestDir: {app}; Flags: ignoreversion
69Source: %%PACKAGEFILES%%\libhunspell.dll; DestDir: {app}; Flags: ignoreversion 69Source: %%PACKAGEFILES%%\libhunspell.dll; DestDir: {app}; Flags: ignoreversion
70Source: %%PACKAGEFILES%%\featuretable.txt; DestDir: {app}; Flags: ignoreversion 70Source: %%PACKAGEFILES%%\featuretable.txt; DestDir: {app}; Flags: ignoreversion
71Source: %%PACKAGEFILES%%\gpu_table.txt; DestDir: {app}; Flags: ignoreversion 71Source: %%PACKAGEFILES%%\gpu_table.txt; DestDir: {app}; Flags: ignoreversion
72Source: %%PACKAGEFILES%%\imprudence.url; DestDir: {app}; Flags: ignoreversion 72Source: %%PACKAGEFILES%%\meta-impy.url; DestDir: {app}; Flags: ignoreversion
73Source: %%PACKAGEFILES%%\llkdu.dll.2.config; DestDir: {app}; Flags: ignoreversion 73Source: %%PACKAGEFILES%%\llkdu.dll.2.config; DestDir: {app}; Flags: ignoreversion
74Source: %%PACKAGEFILES%%\openal32.dll; DestDir: {app}; Flags: ignoreversion 74Source: %%PACKAGEFILES%%\openal32.dll; DestDir: {app}; Flags: ignoreversion
75Source: %%PACKAGEFILES%%\OpenJPEG.dll; DestDir: {app}; Flags: ignoreversion 75Source: %%PACKAGEFILES%%\OpenJPEG.dll; DestDir: {app}; Flags: ignoreversion
@@ -164,20 +164,20 @@ Source: ..\..\..\..\newview\installers\windows\vcredist_x86_VS2010_SP1.exe; Dest
164[Registry] 164[Registry]
165Root: HKCR; Subkey: secondlife; ValueType: string; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueName: (default); ValueData: URL:Second Life 165Root: HKCR; Subkey: secondlife; ValueType: string; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueName: (default); ValueData: URL:Second Life
166Root: HKCR; Subkey: secondlife; ValueType: string; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueName: URL Protocol 166Root: HKCR; Subkey: secondlife; ValueType: string; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueName: URL Protocol
167Root: HKCR; Subkey: secondlife\DefaultIcon; Flags: uninsdeletekey deletekey; ValueType: string; Tasks: slurlassociate; ValueData: {app}\imprudence.exe 167Root: HKCR; Subkey: secondlife\DefaultIcon; Flags: uninsdeletekey deletekey; ValueType: string; Tasks: slurlassociate; ValueData: {app}\meta-impy.exe
168Root: HKCR; Subkey: secondlife\shell\open\command; ValueType: expandsz; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueData: "{app}\imprudence.exe --settings settings_imprudence.xml -url ""%1"""; Languages: 168Root: HKCR; Subkey: secondlife\shell\open\command; ValueType: expandsz; Flags: uninsdeletekey deletekey; Tasks: slurlassociate; ValueData: "{app}\meta-impy.exe --settings settings_meta-impy.xml -url ""%1"""; Languages:
169; Root: HKCU; Subkey: Environment; ValueType: string; ValueName: GST_PLUGIN_PATH; Flags: deletevalue uninsdeletevalue; ValueData: {app}\lib 169; Root: HKCU; Subkey: Environment; ValueType: string; ValueName: GST_PLUGIN_PATH; Flags: deletevalue uninsdeletevalue; ValueData: {app}\lib
170; Root: HKCU; Subkey: Environment; ValueType: expandsz; ValueName: PATH; ValueData: {app} 170; Root: HKCU; Subkey: Environment; ValueType: expandsz; ValueName: PATH; ValueData: {app}
171 171
172[Icons] 172[Icons]
173Name: {group}\{cm:UninstallProgram,Imprudence}; Filename: {uninstallexe} 173Name: {group}\{cm:UninstallProgram,meta-impy}; Filename: {uninstallexe}
174Name: {commondesktop}\Imprudence; Filename: {app}\imprudence.exe; Tasks: desktopicon; Parameters: --settings settings_imprudence.xml; WorkingDir: {app}; IconIndex: 0 174Name: {commondesktop}\meta-impy; Filename: {app}\meta-impy.exe; Tasks: desktopicon; Parameters: --settings settings_meta-impy.xml; WorkingDir: {app}; IconIndex: 0
175Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\Imprudence; Filename: {app}\imprudence.exe; Tasks: quicklaunchicon; Parameters: --settings settings_imprudence.xml; WorkingDir: {app} 175Name: {userappdata}\Microsoft\Internet Explorer\Quick Launch\meta-impy; Filename: {app}\meta-impy.exe; Tasks: quicklaunchicon; Parameters: --settings settings_meta-impy.xml; WorkingDir: {app}
176Name: {group}\Imprudence; Filename: {app}\imprudence.exe; WorkingDir: {app}; Comment: imprudence; IconIndex: 0; Parameters: --settings settings_imprudence.xml 176Name: {group}\meta-impy; Filename: {app}\meta-impy.exe; WorkingDir: {app}; Comment: meta-impy; IconIndex: 0; Parameters: --settings settings_meta-impy.xml
177 177
178[Run] 178[Run]
179Filename: {app}\imprudence.exe; WorkingDir: {app}; Flags: nowait postinstall 179Filename: {app}\meta-impy.exe; WorkingDir: {app}; Flags: nowait postinstall
180Filename: {app}\imprudence.url; WorkingDir: {app}; Flags: nowait postinstall shellexec; Description: See what makes Imprudence different 180Filename: {app}\meta-impy.url; WorkingDir: {app}; Flags: nowait postinstall shellexec; Description: See what makes meta-impy different
181 181
182; Install redistributables. 182; Install redistributables.
183; 183;
@@ -191,15 +191,15 @@ Filename: {app}\redist\vcredist_x86_VS2005_SP1_MFC_SEC.exe; Parameters: "/q"; Ch
191Filename: {app}\redist\vcredist_x86_VS2010_SP1.exe; Parameters: "/q /norestart"; Check: Needs2010Redist; Flags: runhidden 191Filename: {app}\redist\vcredist_x86_VS2010_SP1.exe; Parameters: "/q /norestart"; Check: Needs2010Redist; Flags: runhidden
192 192
193[UninstallDelete] 193[UninstallDelete]
194Name: {userappdata}\Imprudence\user_settings\password.dat; Type: files; Languages: 194Name: {userappdata}\meta-impy\user_settings\password.dat; Type: files; Languages:
195Name: {userappdata}\Imprudence\user_settings\settings.xml; Type: files; Languages: 195Name: {userappdata}\meta-impy\user_settings\settings.xml; Type: files; Languages:
196Name: {userappdata}\Imprudence\user_settings\settings_imprudence.xml; Type: files; Languages: 196Name: {userappdata}\meta-impy\user_settings\settings_meta-impy.xml; Type: files; Languages:
197; 1.2 and lower cache location: 197; 1.2 and lower cache location:
198Name: {userappdata}\Imprudence\cache; Type: filesandordirs 198Name: {userappdata}\meta-impy\cache; Type: filesandordirs
199; 1.3 and higher cache location: 199; 1.3 and higher cache location:
200Name: {localappdata}\Imprudence\cache; Type: filesandordirs 200Name: {localappdata}\meta-impy\cache; Type: filesandordirs
201Name: {userappdata}\Imprudence\logs; Type: filesandordirs 201Name: {userappdata}\meta-impy\logs; Type: filesandordirs
202Name: {userappdata}\Imprudence\browser_profile; Type: filesandordirs 202Name: {userappdata}\meta-impy\browser_profile; Type: filesandordirs
203Name: C:\Users\{username}\.gstreamer-0.10; Type: filesandordirs 203Name: C:\Users\{username}\.gstreamer-0.10; Type: filesandordirs
204Name: C:\Documents and Settings\{username}\.gstreamer-0.10; Type: filesandordirs 204Name: C:\Documents and Settings\{username}\.gstreamer-0.10; Type: filesandordirs
205 205
@@ -292,7 +292,7 @@ Name: {app}\Microsoft.VC80.CRT.manifest; Type: files; Tasks: ; Languages:
292Name: {app}\msvcp80.dll; Type: files; Tasks: ; Languages: 292Name: {app}\msvcp80.dll; Type: files; Tasks: ; Languages:
293Name: {app}\msvcr80.dll; Type: files; Tasks: ; Languages: 293Name: {app}\msvcr80.dll; Type: files; Tasks: ; Languages:
294Name: {app}\msvcr71.dll; Type: files; Tasks: ; Languages: 294Name: {app}\msvcr71.dll; Type: files; Tasks: ; Languages:
295Name: {app}\imprudence.exe.config; Type: files; Tasks: ; Languages: 295Name: {app}\meta-impy.exe.config; Type: files; Tasks: ; Languages:
296 296
297 297
298[Code] 298[Code]
diff --git a/linden/indra/newview/lgghunspell_wrapper.cpp b/linden/indra/newview/lgghunspell_wrapper.cpp
index 9548c4f..6d7d99a 100644
--- a/linden/indra/newview/lgghunspell_wrapper.cpp
+++ b/linden/indra/newview/lgghunspell_wrapper.cpp
@@ -30,7 +30,8 @@ Hunspell* lggHunSpell_Wrapper::myHunspell = 0;
30// do not insert empty lines after this line until the size calculation 30// do not insert empty lines after this line until the size calculation
31#define COUNTRY_CODES_RAW_START_LINE (__LINE__ + 2) 31#define COUNTRY_CODES_RAW_START_LINE (__LINE__ + 2)
32static char * countryCodesraw[] = { 32static char * countryCodesraw[] = {
33 (char*)"SL",(char*)"SecondLife", 33 // (char*)"SL",(char*)"SecondLife", // Um, no, SL does not get it's own country, Especiall one that usurps some other countries code.
34 (char*)"AA",(char*)"Anarchadia", // I get one though. :-P
34 (char*)"AD",(char*)"Andorra", 35 (char*)"AD",(char*)"Andorra",
35 (char*)"AE",(char*)"United Arab Emirates", 36 (char*)"AE",(char*)"United Arab Emirates",
36 (char*)"AF",(char*)"Afghanistan", 37 (char*)"AF",(char*)"Afghanistan",
diff --git a/linden/indra/newview/linux_tools/handle_secondlifeprotocol.sh b/linden/indra/newview/linux_tools/handle_secondlifeprotocol.sh
index 2702d71..78e9bcd 100755
--- a/linden/indra/newview/linux_tools/handle_secondlifeprotocol.sh
+++ b/linden/indra/newview/linux_tools/handle_secondlifeprotocol.sh
@@ -1,6 +1,6 @@
1#!/bin/bash 1#!/bin/bash
2 2
3# Send a URL of the form secondlife://... to Second Life. 3# Send a URL of the form secondlife://... to the grid.
4# 4#
5 5
6URL="$1" 6URL="$1"
@@ -13,9 +13,9 @@ fi
13RUN_PATH=`dirname "$0" || echo .` 13RUN_PATH=`dirname "$0" || echo .`
14cd "${RUN_PATH}" 14cd "${RUN_PATH}"
15 15
16if [ `pidof do-not-directly-run-imprudence-bin` ]; then 16if [ `pidof do-not-directly-run-meta-impy-bin` ]; then
17 exec dbus-send --type=method_call --dest=com.secondlife.ViewerAppAPIService /com/secondlife/ViewerAppAPI com.secondlife.ViewerAppAPI.GoSLURL string:"$1" 17 exec dbus-send --type=method_call --dest=com.secondlife.ViewerAppAPIService /com/secondlife/ViewerAppAPI com.secondlife.ViewerAppAPI.GoSLURL string:"$1"
18else 18else
19 exec ./imprudence -url \'"${URL}"\' 19 exec ./meta-impy -url \'"${URL}"\'
20fi 20fi
21 21
diff --git a/linden/indra/newview/linux_tools/wrapper.sh b/linden/indra/newview/linux_tools/wrapper.sh
index 742c4fc..d4eaf33 100755
--- a/linden/indra/newview/linux_tools/wrapper.sh
+++ b/linden/indra/newview/linux_tools/wrapper.sh
@@ -115,7 +115,7 @@ if [ -n "$LL_TCMALLOC" ]; then
115 fi 115 fi
116fi 116fi
117 117
118export VIEWER_BINARY='do-not-directly-run-imprudence-bin' 118export VIEWER_BINARY='do-not-directly-run-meta-impy-bin'
119BINARY_TYPE=$(expr match "$(file -b bin/$VIEWER_BINARY)" '\(.*executable\)') 119BINARY_TYPE=$(expr match "$(file -b bin/$VIEWER_BINARY)" '\(.*executable\)')
120if [ "${BINARY_TYPE}" == "ELF 64-bit LSB executable" ]; then 120if [ "${BINARY_TYPE}" == "ELF 64-bit LSB executable" ]; then
121 export SL_ENV='LD_LIBRARY_PATH="`pwd`"/lib64:"`pwd`"/lib32:"${LD_LIBRARY_PATH}"' 121 export SL_ENV='LD_LIBRARY_PATH="`pwd`"/lib64:"`pwd`"/lib32:"${LD_LIBRARY_PATH}"'
@@ -138,17 +138,17 @@ 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"
154fi \ No newline at end of file 154fi
diff --git a/linden/indra/newview/llagent.cpp b/linden/indra/newview/llagent.cpp
index 54b71eb..dd74cde 100644
--- a/linden/indra/newview/llagent.cpp
+++ b/linden/indra/newview/llagent.cpp
@@ -6136,7 +6136,7 @@ void LLAgent::setHomePosRegion( const U64& region_handle, const LLVector3& pos_r
6136 6136
6137void LLAgent::takeHomeScreenshot() 6137void LLAgent::takeHomeScreenshot()
6138{ 6138{
6139 std::string snap_filename = gDirUtilp->getLindenUserDir(); 6139 std::string snap_filename = gDirUtilp->getViewerUserDir();
6140 snap_filename += gDirUtilp->getDirDelimiter(); 6140 snap_filename += gDirUtilp->getDirDelimiter();
6141 snap_filename += SCREEN_HOME_FILENAME; 6141 snap_filename += SCREEN_HOME_FILENAME;
6142 gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight(), FALSE, FALSE); 6142 gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight(), FALSE, FALSE);
diff --git a/linden/indra/newview/llappviewer.cpp b/linden/indra/newview/llappviewer.cpp
index 33a71fe..7040cd1 100644
--- a/linden/indra/newview/llappviewer.cpp
+++ b/linden/indra/newview/llappviewer.cpp
@@ -205,6 +205,11 @@
205 205
206//---------------------------------------------------------------------------- 206//----------------------------------------------------------------------------
207// viewer.cpp - these are only used in viewer, should be easily moved. 207// viewer.cpp - these are only used in viewer, should be easily moved.
208
209#if USE_OTR // [$PLOTR$]
210#include "otr_wrapper.h"
211#endif // COMPILE_OTR // [/$PLOTR$]
212
208extern void disable_win_error_reporting(); 213extern void disable_win_error_reporting();
209 214
210#if LL_DARWIN 215#if LL_DARWIN
@@ -309,15 +314,15 @@ BOOL gLogoutInProgress = FALSE;
309// Internal globals... that should be removed. 314// Internal globals... that should be removed.
310static std::string gArgs; 315static std::string gArgs;
311 316
312const std::string MARKER_FILE_NAME("Imprudence.exec_marker"); 317const std::string MARKER_FILE_NAME("meta-impy.exec_marker");
313const std::string ERROR_MARKER_FILE_NAME("Imprudence.error_marker"); 318const std::string ERROR_MARKER_FILE_NAME("meta-impy.error_marker");
314const std::string LLERROR_MARKER_FILE_NAME("Imprudence.llerror_marker"); 319const std::string LLERROR_MARKER_FILE_NAME("meta-impy.llerror_marker");
315const std::string LOGOUT_MARKER_FILE_NAME("Imprudence.logout_marker"); 320const std::string LOGOUT_MARKER_FILE_NAME("meta-impy.logout_marker");
316static BOOL gDoDisconnect = FALSE; 321static BOOL gDoDisconnect = FALSE;
317static std::string gLaunchFileOnQuit; 322static std::string gLaunchFileOnQuit;
318 323
319// Used on Win32 for other apps to identify our window (eg, win_setup) 324// Used on Win32 for other apps to identify our window (eg, win_setup)
320const char* const VIEWER_WINDOW_CLASSNAME = "Imprudence"; 325const char* const VIEWER_WINDOW_CLASSNAME = "meta-impy";
321 326
322//---------------------------------------------------------------------------- 327//----------------------------------------------------------------------------
323// File scope definitons 328// File scope definitons
@@ -1652,8 +1657,7 @@ bool LLAppViewer::initLogging()
1652 LLError::initForApplication( 1657 LLError::initForApplication(
1653 gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "")); 1658 gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, ""));
1654 LLError::setFatalFunction(errorCallback); 1659 LLError::setFatalFunction(errorCallback);
1655 1660 std::string log_name = "meta-impy.log";
1656 std::string log_name = "Imprudence.log";
1657 1661
1658 const int MAX_ROTATION = 5; 1662 const int MAX_ROTATION = 5;
1659 for(int i = MAX_ROTATION; 0 < i; i--) 1663 for(int i = MAX_ROTATION; 0 < i; i--)
@@ -1829,7 +1833,7 @@ bool LLAppViewer::initConfiguration()
1829 if(!loadSettingsFromDirectory("Default", set_defaults)) 1833 if(!loadSettingsFromDirectory("Default", set_defaults))
1830 { 1834 {
1831 std::ostringstream msg; 1835 std::ostringstream msg;
1832 msg << "Second Life could not load its default settings file. \n" 1836 msg << "This viewer could not load its default settings file. \n"
1833 << "The installation may be corrupted. \n"; 1837 << "The installation may be corrupted. \n";
1834 1838
1835 OSMessageBox( 1839 OSMessageBox(
@@ -1843,7 +1847,7 @@ bool LLAppViewer::initConfiguration()
1843 // - set procedural settings 1847 // - set procedural settings
1844 gSavedSettings.setString("ClientSettingsFile", 1848 gSavedSettings.setString("ClientSettingsFile",
1845 // gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, getSettingsFilename("Default", "Global"))); 1849 // gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, getSettingsFilename("Default", "Global")));
1846 gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "settings_imprudence.xml")); 1850 gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "settings_meta-impy.xml"));
1847 1851
1848 gSavedSettings.setString("VersionChannelName", ViewerInfo::nameWithVariant()); 1852 gSavedSettings.setString("VersionChannelName", ViewerInfo::nameWithVariant());
1849 1853
@@ -3346,7 +3350,7 @@ void LLAppViewer::saveFinalSnapshot()
3346 gSavedSettings.setBOOL("ShowParcelOwners", FALSE); 3350 gSavedSettings.setBOOL("ShowParcelOwners", FALSE);
3347 idle(); 3351 idle();
3348 3352
3349 std::string snap_filename = gDirUtilp->getLindenUserDir(true); 3353 std::string snap_filename = gDirUtilp->getViewerUserDir(true);
3350 if (!snap_filename.empty()) 3354 if (!snap_filename.empty())
3351 { 3355 {
3352 snap_filename += gDirUtilp->getDirDelimiter(); 3356 snap_filename += gDirUtilp->getDirDelimiter();
@@ -3831,6 +3835,10 @@ void LLAppViewer::idle()
3831 3835
3832void LLAppViewer::idleShutdown() 3836void LLAppViewer::idleShutdown()
3833{ 3837{
3838#if USE_OTR // [$PLOTR$]
3839 OTR_Wrapper::logout();
3840#endif // USE_OTR // [/$PLOTR$]
3841
3834 // Wait for all modal alerts to get resolved 3842 // Wait for all modal alerts to get resolved
3835 if (LLModalDialog::activeCount() > 0) 3843 if (LLModalDialog::activeCount() > 0)
3836 { 3844 {
@@ -4412,4 +4420,7 @@ void LLAppViewer::handleLoginComplete()
4412 gRlvHandler.processRetainedCommands(); 4420 gRlvHandler.processRetainedCommands();
4413 } 4421 }
4414// [/RLVa:KB] 4422// [/RLVa:KB]
4423#if USE_OTR // [$PLOTR$]
4424 OTR_Wrapper::init();
4425#endif // USE_OTR // [/$PLOTR$]
4415} 4426}
diff --git a/linden/indra/newview/llappviewer.h b/linden/indra/newview/llappviewer.h
index 42c49de..522050a 100644
--- a/linden/indra/newview/llappviewer.h
+++ b/linden/indra/newview/llappviewer.h
@@ -100,7 +100,7 @@ public:
100 100
101 bool getPurgeCache() const { return mPurgeCache; } 101 bool getPurgeCache() const { return mPurgeCache; }
102 102
103 const std::string& getSecondLifeTitle() const; // The Second Life title. 103 const std::string& getSecondLifeTitle() const; // The viewer title.
104 const std::string& getWindowTitle() const; // The window display name. 104 const std::string& getWindowTitle() const; // The window display name.
105 105
106 void forceDisconnect(const std::string& msg); // Force disconnection, with a message to the user. 106 void forceDisconnect(const std::string& msg); // Force disconnection, with a message to the user.
diff --git a/linden/indra/newview/llappviewerlinux.cpp b/linden/indra/newview/llappviewerlinux.cpp
index 88ddf7e..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
@@ -741,7 +741,7 @@ std::string LLAppViewerLinux::generateSerialNumber()
741 char serial_md5[MD5HEX_STR_SIZE]; 741 char serial_md5[MD5HEX_STR_SIZE];
742 serial_md5[0] = 0; 742 serial_md5[0] = 0;
743 743
744 // TODO 744 // Don't do anything, serious privacy breach to leak internal identifying numbers out to the 'net.
745 745
746 return serial_md5; 746 return serial_md5;
747} 747}
diff --git a/linden/indra/newview/llappviewermacosx.cpp b/linden/indra/newview/llappviewermacosx.cpp
index d81b6e3..ee4648f 100644
--- a/linden/indra/newview/llappviewermacosx.cpp
+++ b/linden/indra/newview/llappviewermacosx.cpp
@@ -300,7 +300,7 @@ static OSStatus CarbonEventHandler(EventHandlerCallRef inHandlerCallRef,
300void LLAppViewerMacOSX::handleCrashReporting(bool reportFreeze) 300void LLAppViewerMacOSX::handleCrashReporting(bool reportFreeze)
301{ 301{
302 // This used to use fork&exec, but is switched to LSOpenApplication to 302 // This used to use fork&exec, but is switched to LSOpenApplication to
303 // Make sure the crash reporter launches in front of the SL window. 303 // Make sure the crash reporter launches in front of the viewer window.
304 304
305 std::string command_str; 305 std::string command_str;
306 //command_str = "open Second Life.app/Contents/Resources/mac-crash-logger.app"; 306 //command_str = "open Second Life.app/Contents/Resources/mac-crash-logger.app";
@@ -419,27 +419,7 @@ std::string LLAppViewerMacOSX::generateSerialNumber()
419 char serial_md5[MD5HEX_STR_SIZE]; // Flawfinder: ignore 419 char serial_md5[MD5HEX_STR_SIZE]; // Flawfinder: ignore
420 serial_md5[0] = 0; 420 serial_md5[0] = 0;
421 421
422 // JC: Sample code from http://developer.apple.com/technotes/tn/tn1103.html 422 // Don't do anything, serious privacy breach to leak internal identifying numbers out to the 'net.
423 CFStringRef serialNumber = NULL;
424 io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault,
425 IOServiceMatching("IOPlatformExpertDevice"));
426 if (platformExpert) {
427 serialNumber = (CFStringRef) IORegistryEntryCreateCFProperty(platformExpert,
428 CFSTR(kIOPlatformSerialNumberKey),
429 kCFAllocatorDefault, 0);
430 IOObjectRelease(platformExpert);
431 }
432
433 if (serialNumber)
434 {
435 char buffer[MAX_STRING]; // Flawfinder: ignore
436 if (CFStringGetCString(serialNumber, buffer, MAX_STRING, kCFStringEncodingASCII))
437 {
438 LLMD5 md5( (unsigned char*)buffer );
439 md5.hex_digest(serial_md5);
440 }
441 CFRelease(serialNumber);
442 }
443 423
444 return serial_md5; 424 return serial_md5;
445} 425}
diff --git a/linden/indra/newview/llappviewerwin32.cpp b/linden/indra/newview/llappviewerwin32.cpp
index 2e74d0a..1d05a6e 100644
--- a/linden/indra/newview/llappviewerwin32.cpp
+++ b/linden/indra/newview/llappviewerwin32.cpp
@@ -78,7 +78,7 @@ extern "C" {
78#endif 78#endif
79#endif 79#endif
80 80
81const std::string LLAppViewerWin32::sWindowClass = "Imprudence"; 81const std::string LLAppViewerWin32::sWindowClass = "meta-impy";
82 82
83LONG WINAPI viewer_windows_exception_handler(struct _EXCEPTION_POINTERS *exception_infop) 83LONG WINAPI viewer_windows_exception_handler(struct _EXCEPTION_POINTERS *exception_infop)
84{ 84{
@@ -128,7 +128,7 @@ LONG WINAPI viewer_windows_exception_handler(struct _EXCEPTION_POINTERS *excepti
128// Create app mutex creates a unique global windows object. 128// Create app mutex creates a unique global windows object.
129// If the object can be created it returns true, otherwise 129// If the object can be created it returns true, otherwise
130// it returns false. The false result can be used to determine 130// it returns false. The false result can be used to determine
131// if another instance of a second life app (this vers. or later) 131// if another instance of a viewer app (this vers. or later)
132// is running. 132// is running.
133// *NOTE: Do not use this method to run a single instance of the app. 133// *NOTE: Do not use this method to run a single instance of the app.
134// This is intended to help debug problems with the cross-platform 134// This is intended to help debug problems with the cross-platform
@@ -601,27 +601,7 @@ std::string LLAppViewerWin32::generateSerialNumber()
601 char serial_md5[MD5HEX_STR_SIZE]; // Flawfinder: ignore 601 char serial_md5[MD5HEX_STR_SIZE]; // Flawfinder: ignore
602 serial_md5[0] = 0; 602 serial_md5[0] = 0;
603 603
604 DWORD serial = 0; 604 // Don't do anything, serious privacy breach to leak internal identifying numbers out to the 'net.
605 DWORD flags = 0; 605
606 BOOL success = GetVolumeInformation(
607 L"C:\\",
608 NULL, // volume name buffer
609 0, // volume name buffer size
610 &serial, // volume serial
611 NULL, // max component length
612 &flags, // file system flags
613 NULL, // file system name buffer
614 0); // file system name buffer size
615 if (success)
616 {
617 LLMD5 md5;
618 md5.update( (unsigned char*)&serial, sizeof(DWORD));
619 md5.finalize();
620 md5.hex_digest(serial_md5);
621 }
622 else
623 {
624 llwarns << "GetVolumeInformation failed" << llendl;
625 }
626 return serial_md5; 606 return serial_md5;
627} 607}
diff --git a/linden/indra/newview/llcolorswatch.cpp b/linden/indra/newview/llcolorswatch.cpp
index 5905bb0..c9020f5 100644
--- a/linden/indra/newview/llcolorswatch.cpp
+++ b/linden/indra/newview/llcolorswatch.cpp
@@ -35,7 +35,7 @@
35// File include 35// File include
36#include "llcolorswatch.h" 36#include "llcolorswatch.h"
37 37
38// Linden library includes 38// viewer library includes
39#include "v4color.h" 39#include "v4color.h"
40 40
41// Project includes 41// Project includes
diff --git a/linden/indra/newview/llcommandhandler.h b/linden/indra/newview/llcommandhandler.h
index 5cb3ee7..b357ead 100644
--- a/linden/indra/newview/llcommandhandler.h
+++ b/linden/indra/newview/llcommandhandler.h
@@ -42,7 +42,7 @@ class LLFooHandler : public LLCommandHandler
42public: 42public:
43 // Inform the system you handle commands starting 43 // Inform the system you handle commands starting
44 // with "foo" and they are only allowed from 44 // with "foo" and they are only allowed from
45 // "trusted" (pointed at Linden content) browsers 45 // "trusted" browsers
46 LLFooHandler() : LLCommandHandler("foo", true) { } 46 LLFooHandler() : LLCommandHandler("foo", true) { }
47 47
48 // Your code here 48 // Your code here
diff --git a/linden/indra/newview/llconsole.cpp b/linden/indra/newview/llconsole.cpp
index 2cea383..e2f620a 100644
--- a/linden/indra/newview/llconsole.cpp
+++ b/linden/indra/newview/llconsole.cpp
@@ -34,7 +34,7 @@
34 34
35#include "llconsole.h" 35#include "llconsole.h"
36 36
37// linden library includes 37// viewer library includes
38#include "llviewercontrol.h" 38#include "llviewercontrol.h"
39#include "llcriticaldamp.h" 39#include "llcriticaldamp.h"
40#include "llfontgl.h" 40#include "llfontgl.h"
diff --git a/linden/indra/newview/llettherebelight.h b/linden/indra/newview/llettherebelight.h
index 3c997e5..d83e827 100644
--- a/linden/indra/newview/llettherebelight.h
+++ b/linden/indra/newview/llettherebelight.h
@@ -80,6 +80,10 @@ public:
80 80
81 ~LightShare(); 81 ~LightShare();
82 82
83 // The name of the preset where the backup settings are stored.
84 static const std::string sBackupWaterPresetName;
85 static const std::string sBackupSkyPresetName;
86
83 // Message handler for GenericMessage with the "Windlight" method. 87 // Message handler for GenericMessage with the "Windlight" method.
84 // Creates and applies a new LightShare (or prompts user). 88 // Creates and applies a new LightShare (or prompts user).
85 static void processWindlight(LLMessageSystem* msg, void**); 89 static void processWindlight(LLMessageSystem* msg, void**);
@@ -88,6 +92,7 @@ public:
88 92
89 // Called after the user has entered a new region, to reset the 93 // Called after the user has entered a new region, to reset the
90 // "ignore while in this region" state. 94 // "ignore while in this region" state.
95 // Also resets/deactivates the Windlight settings in response to the "WindlightReset" method.
91 static void resetRegion(); 96 static void resetRegion();
92 97
93 // Returns true if the message contains valid Windlight settings. 98 // Returns true if the message contains valid Windlight settings.
diff --git a/linden/indra/newview/llfilepicker.cpp b/linden/indra/newview/llfilepicker.cpp
index a562b17..89a1de7 100644
--- a/linden/indra/newview/llfilepicker.cpp
+++ b/linden/indra/newview/llfilepicker.cpp
@@ -1329,7 +1329,7 @@ BOOL LLFilePicker::getSaveFile( ESaveFilter filter, const std::string& filename
1329 << "]" << llendl; 1329 << "]" << llendl;
1330 if (!filename.empty()) 1330 if (!filename.empty())
1331 { 1331 {
1332 mFiles.push_back(gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + filename); 1332 mFiles.push_back(gDirUtilp->getViewerUserDir() + gDirUtilp->getDirDelimiter() + filename);
1333 return TRUE; 1333 return TRUE;
1334 } 1334 }
1335 return FALSE; 1335 return FALSE;
@@ -1340,7 +1340,7 @@ BOOL LLFilePicker::getOpenFile( ELoadFilter filter )
1340 reset(); 1340 reset();
1341 1341
1342 // HACK: Static filenames for 'open' until we implement filepicker 1342 // HACK: Static filenames for 'open' until we implement filepicker
1343 std::string filename = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + "upload"; 1343 std::string filename = gDirUtilp->getViewerUserDir() + gDirUtilp->getDirDelimiter() + "upload";
1344 switch (filter) 1344 switch (filter)
1345 { 1345 {
1346 case FFLOAD_WAV: filename += ".wav"; break; 1346 case FFLOAD_WAV: filename += ".wav"; break;
diff --git a/linden/indra/newview/llfirstuse.cpp b/linden/indra/newview/llfirstuse.cpp
index c6f8356..d0c7c20 100644
--- a/linden/indra/newview/llfirstuse.cpp
+++ b/linden/indra/newview/llfirstuse.cpp
@@ -363,6 +363,32 @@ void LLFirstUse::ClientTags()
363 } 363 }
364} 364}
365 365
366#if USE_OTR // [$PLOTR$]
367void LLFirstUse::callbackEmeraldOTR(const LLSD &notification, const LLSD &response)
368{
369 gSavedSettings.setWarning("EmeraldOTR", FALSE);
370
371 S32 option = LLNotification::getSelectedOption(notification, response);
372
373 if ( option == 0 )
374 {
375 gSavedSettings.setU32("EmeraldUseOTR",(U32)1);
376 }
377 else if ( option == 1 )
378 {
379 gSavedSettings.setU32("EmeraldUseOTR",(U32)2);
380 }
381}
382
383void LLFirstUse::EmeraldOTR()
384{
385 if(gSavedSettings.getWarning("EmeraldOTR"))
386 {
387 LLNotifications::instance().add("QueryEmeraldOTR", LLSD(),LLSD(), callbackEmeraldOTR);
388 }
389}
390#endif // USE_OTR // [/$PLOTR$]
391
366// static 392// static
367void LLFirstUse::useLoginScreen() 393void LLFirstUse::useLoginScreen()
368{ 394{
diff --git a/linden/indra/newview/llfirstuse.h b/linden/indra/newview/llfirstuse.h
index 8c2ca35..c7a3634 100644
--- a/linden/indra/newview/llfirstuse.h
+++ b/linden/indra/newview/llfirstuse.h
@@ -115,6 +115,10 @@ public:
115 static void useLoginScreen(); 115 static void useLoginScreen();
116 static void callbackClientTags(const LLSD& notification, const LLSD& response); 116 static void callbackClientTags(const LLSD& notification, const LLSD& response);
117 static void ClientTags(); 117 static void ClientTags();
118#if USE_OTR // [$PLOTR$]
119 static void callbackEmeraldOTR(const LLSD& notification, const LLSD& response);
120 static void EmeraldOTR();
121#endif // USE_OTR // [/$PLOTR$]
118 static void voiceLicenseAgreement(); 122 static void voiceLicenseAgreement();
119 static void callbackPrivacy(const LLSD& notification, const LLSD& response); 123 static void callbackPrivacy(const LLSD& notification, const LLSD& response);
120 static void Privacy(); 124 static void Privacy();
diff --git a/linden/indra/newview/llfloateractivespeakers.cpp b/linden/indra/newview/llfloateractivespeakers.cpp
index c1ba5da..1016e1e 100644
--- a/linden/indra/newview/llfloateractivespeakers.cpp
+++ b/linden/indra/newview/llfloateractivespeakers.cpp
@@ -569,7 +569,7 @@ void LLPanelActiveSpeakers::refreshSpeakers()
569 && selected_id != gAgent.getID() 569 && selected_id != gAgent.getID()
570 && selected_speakerp.notNull() 570 && selected_speakerp.notNull()
571 && selected_speakerp->mType != LLSpeaker::SPEAKER_EXTERNAL 571 && selected_speakerp->mType != LLSpeaker::SPEAKER_EXTERNAL
572 && !LLMuteList::getInstance()->isLinden(selected_speakerp->mDisplayName)); 572 && !LLMuteList::getInstance()->isGod(selected_speakerp->mDisplayName));
573 } 573 }
574 childSetValue("speaker_volume", gVoiceClient->getUserVolume(selected_id)); 574 childSetValue("speaker_volume", gVoiceClient->getUserVolume(selected_id));
575 childSetEnabled("speaker_volume", LLVoiceClient::voiceEnabled() 575 childSetEnabled("speaker_volume", LLVoiceClient::voiceEnabled()
diff --git a/linden/indra/newview/llfloateravatarinfo.cpp b/linden/indra/newview/llfloateravatarinfo.cpp
index 13805fb..62e4d95 100644
--- a/linden/indra/newview/llfloateravatarinfo.cpp
+++ b/linden/indra/newview/llfloateravatarinfo.cpp
@@ -42,7 +42,7 @@
42#include "llpanelavatar.h" 42#include "llpanelavatar.h"
43#include "lluictrlfactory.h" 43#include "lluictrlfactory.h"
44 44
45// linden library includes 45// viewer library includes
46#include "llinventory.h" 46#include "llinventory.h"
47#include "lluuid.h" 47#include "lluuid.h"
48#include "message.h" 48#include "message.h"
diff --git a/linden/indra/newview/llfloaterbuyland.cpp b/linden/indra/newview/llfloaterbuyland.cpp
index 8288c58..087c53c 100644
--- a/linden/indra/newview/llfloaterbuyland.cpp
+++ b/linden/indra/newview/llfloaterbuyland.cpp
@@ -825,7 +825,7 @@ void LLFloaterBuyLandUI::updateNames()
825 825
826 if (mIsClaim) 826 if (mIsClaim)
827 { 827 {
828 mParcelSellerName = "Linden Lab"; 828 mParcelSellerName = "grid owners";
829 } 829 }
830 else if (parcelp->getIsGroupOwned()) 830 else if (parcelp->getIsGroupOwned())
831 { 831 {
diff --git a/linden/indra/newview/llfloaterchat.cpp b/linden/indra/newview/llfloaterchat.cpp
index 2efdf18..5a168a5 100644
--- a/linden/indra/newview/llfloaterchat.cpp
+++ b/linden/indra/newview/llfloaterchat.cpp
@@ -192,7 +192,7 @@ void LLFloaterChat::setMinimized(BOOL minimized)
192 updateConsoleVisibility(); 192 updateConsoleVisibility();
193} 193}
194 194
195// linden library includes 195// viewer library includes
196#include "llaudioengine.h" 196#include "llaudioengine.h"
197#include "llchat.h" 197#include "llchat.h"
198#include "llfontgl.h" 198#include "llfontgl.h"
diff --git a/linden/indra/newview/llfloaterclassified.cpp b/linden/indra/newview/llfloaterclassified.cpp
index 0760303..25f4339 100644
--- a/linden/indra/newview/llfloaterclassified.cpp
+++ b/linden/indra/newview/llfloaterclassified.cpp
@@ -39,7 +39,7 @@
39#include "llcommandhandler.h" 39#include "llcommandhandler.h"
40#include "llpanelclassified.h" 40#include "llpanelclassified.h"
41 41
42// linden library includes 42// viewer library includes
43#include "lluuid.h" 43#include "lluuid.h"
44#include "lluictrlfactory.h" 44#include "lluictrlfactory.h"
45 45
diff --git a/linden/indra/newview/llfloaterevent.cpp b/linden/indra/newview/llfloaterevent.cpp
index 0ec2a76..ad9ae54 100644
--- a/linden/indra/newview/llfloaterevent.cpp
+++ b/linden/indra/newview/llfloaterevent.cpp
@@ -39,7 +39,7 @@
39#include "llcommandhandler.h" 39#include "llcommandhandler.h"
40#include "llpanelevent.h" 40#include "llpanelevent.h"
41 41
42// linden library includes 42// viewer library includes
43#include "lluuid.h" 43#include "lluuid.h"
44#include "lluictrlfactory.h" 44#include "lluictrlfactory.h"
45 45
diff --git a/linden/indra/newview/llfloaterfriends.cpp b/linden/indra/newview/llfloaterfriends.cpp
index 84ba81e..cf25e8e 100644
--- a/linden/indra/newview/llfloaterfriends.cpp
+++ b/linden/indra/newview/llfloaterfriends.cpp
@@ -785,7 +785,7 @@ void LLPanelFriends::requestFriendshipDialog(const LLUUID& id,
785 LLSD payload; 785 LLSD payload;
786 payload["id"] = id; 786 payload["id"] = id;
787 payload["name"] = name; 787 payload["name"] = name;
788 // Look for server versions like: Second Life Server 1.24.4.95600 788 // Look for server versions like: Grid Server 1.24.4.95600
789 if (gLastVersionChannel.find(" 1.24.") != std::string::npos) 789 if (gLastVersionChannel.find(" 1.24.") != std::string::npos)
790 { 790 {
791 // Old and busted server version, doesn't support friend 791 // Old and busted server version, doesn't support friend
diff --git a/linden/indra/newview/llfloaterhud.cpp b/linden/indra/newview/llfloaterhud.cpp
index 6324b56..10bb595 100644
--- a/linden/indra/newview/llfloaterhud.cpp
+++ b/linden/indra/newview/llfloaterhud.cpp
@@ -39,7 +39,7 @@
39#include "llmediactrl.h" 39#include "llmediactrl.h"
40#include "llalertdialog.h" 40#include "llalertdialog.h"
41 41
42// Linden libs 42// other viewer libs
43#include "lluictrlfactory.h" 43#include "lluictrlfactory.h"
44 44
45// statics 45// statics
diff --git a/linden/indra/newview/llfloaterjoystick.cpp b/linden/indra/newview/llfloaterjoystick.cpp
index 4584abc..b96af5b 100644
--- a/linden/indra/newview/llfloaterjoystick.cpp
+++ b/linden/indra/newview/llfloaterjoystick.cpp
@@ -35,7 +35,7 @@
35// file include 35// file include
36#include "llfloaterjoystick.h" 36#include "llfloaterjoystick.h"
37 37
38// linden library includes 38// viewer library includes
39#include "llerror.h" 39#include "llerror.h"
40#include "llrect.h" 40#include "llrect.h"
41#include "llstring.h" 41#include "llstring.h"
diff --git a/linden/indra/newview/llfloaterland.cpp b/linden/indra/newview/llfloaterland.cpp
index a6f39cb..9af9ddc 100644
--- a/linden/indra/newview/llfloaterland.cpp
+++ b/linden/indra/newview/llfloaterland.cpp
@@ -2098,51 +2098,15 @@ void LLPanelLandOptions::refreshSearch()
2098 2098
2099 std::string tooltip; 2099 std::string tooltip;
2100 bool enable_show_directory = false; 2100 bool enable_show_directory = false;
2101 // Parcels <= 128 square meters cannot be listed in search, in an 2101 if (can_change)
2102 // effort to reduce search spam from small parcels. See also 2102 {
2103 // the search crawler "grid-crawl.py" in secondlife.com/doc/app/search/ JC 2103 tooltip = getString("search_enabled_tooltip");
2104 const S32 MIN_PARCEL_AREA_FOR_SEARCH = 128; 2104 enable_show_directory = true;
2105 bool large_enough = parcel->getArea() > MIN_PARCEL_AREA_FOR_SEARCH;
2106 if (large_enough)
2107 {
2108 if (can_change)
2109 {
2110 tooltip = getString("search_enabled_tooltip");
2111 enable_show_directory = true;
2112 }
2113 else
2114 {
2115 tooltip = getString("search_disabled_permissions_tooltip");
2116 enable_show_directory = false;
2117 }
2118 } 2105 }
2119 else 2106 else
2120 { 2107 {
2121 // not large enough to include in search 2108 tooltip = getString("search_disabled_permissions_tooltip");
2122 if (can_change) 2109 enable_show_directory = false;
2123 {
2124 if (show_directory)
2125 {
2126 // parcels that are too small, but are still in search for
2127 // legacy reasons, need to have the check box enabled so
2128 // the owner can delist the parcel. JC
2129 tooltip = getString("search_enabled_tooltip");
2130 enable_show_directory = true;
2131 }
2132 else
2133 {
2134 tooltip = getString("search_disabled_small_tooltip");
2135 enable_show_directory = false;
2136 }
2137 }
2138 else
2139 {
2140 // both too small and don't have permission, so just
2141 // show the permissions as the reason (which is probably
2142 // the more common case) JC
2143 tooltip = getString("search_disabled_permissions_tooltip");
2144 enable_show_directory = false;
2145 }
2146 } 2110 }
2147 mCheckShowDirectory->setToolTip(tooltip); 2111 mCheckShowDirectory->setToolTip(tooltip);
2148 mCategoryCombo->setToolTip(tooltip); 2112 mCategoryCombo->setToolTip(tooltip);
diff --git a/linden/indra/newview/llfloaternamedesc.cpp b/linden/indra/newview/llfloaternamedesc.cpp
index 9e8e94b..92234de 100644
--- a/linden/indra/newview/llfloaternamedesc.cpp
+++ b/linden/indra/newview/llfloaternamedesc.cpp
@@ -51,7 +51,7 @@
51#include "llstring.h" 51#include "llstring.h"
52#include "lleconomy.h" 52#include "lleconomy.h"
53 53
54// linden includes 54// viewer includes
55#include "llassetstorage.h" 55#include "llassetstorage.h"
56#include "llinventorytype.h" 56#include "llinventorytype.h"
57 57
diff --git a/linden/indra/newview/llfloaterpreference.cpp b/linden/indra/newview/llfloaterpreference.cpp
index 301fba0..2c91e8a 100644
--- a/linden/indra/newview/llfloaterpreference.cpp
+++ b/linden/indra/newview/llfloaterpreference.cpp
@@ -78,6 +78,10 @@
78#include "llscrollcontainer.h" 78#include "llscrollcontainer.h"
79#include "llfloaterhardwaresettings.h" 79#include "llfloaterhardwaresettings.h"
80 80
81#if USE_OTR // [$PLOTR$]
82#include "otr_wrapper.h"
83#endif // USE_OTR // [/$PLOTR$]
84
81const S32 PREF_BORDER = 4; 85const S32 PREF_BORDER = 4;
82const S32 PREF_PAD = 5; 86const S32 PREF_PAD = 5;
83const S32 PREF_BUTTON_WIDTH = 70; 87const S32 PREF_BUTTON_WIDTH = 70;
diff --git a/linden/indra/newview/llfloaterregioninfo.cpp b/linden/indra/newview/llfloaterregioninfo.cpp
index 505f8e6..08bda48 100644
--- a/linden/indra/newview/llfloaterregioninfo.cpp
+++ b/linden/indra/newview/llfloaterregioninfo.cpp
@@ -362,13 +362,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg)
362 panel->childSetValue("object_bonus_spin", LLSD(object_bonus_factor) ); 362 panel->childSetValue("object_bonus_spin", LLSD(object_bonus_factor) );
363 panel->childSetValue("access_combo", LLSD(sim_access) ); 363 panel->childSetValue("access_combo", LLSD(sim_access) );
364 364
365 365 panel->childSetEnabled("access_combo", gAgent.isGodlike() || (region && region->canManageEstate() ));
366 // detect teen grid for maturity
367
368 U32 parent_estate_id;
369 msg->getU32("RegionInfo", "ParentEstateID", parent_estate_id);
370 BOOL teen_grid = (parent_estate_id == 5); // *TODO add field to estate table and test that
371 panel->childSetEnabled("access_combo", gAgent.isGodlike() || (region && region->canManageEstate() && !teen_grid));
372 panel->setCtrlsEnabled(allow_modify); 366 panel->setCtrlsEnabled(allow_modify);
373 367
374 // RegionSettings PANEL 368 // RegionSettings PANEL
@@ -1243,10 +1237,10 @@ BOOL LLPanelRegionTextureInfo::sendUpdate()
1243 llinfos << "LLPanelRegionTextureInfo::sendUpdate()" << llendl; 1237 llinfos << "LLPanelRegionTextureInfo::sendUpdate()" << llendl;
1244 1238
1245 // Make sure user hasn't chosen wacky textures. 1239 // Make sure user hasn't chosen wacky textures.
1246 //if (!validateTextureSizes()) 1240// if (!validateTextureSizes())
1247 //{ 1241// {
1248 // return FALSE; 1242// return FALSE;
1249 //} 1243// }
1250 1244
1251 LLTextureCtrl* texture_ctrl; 1245 LLTextureCtrl* texture_ctrl;
1252 std::string buffer; 1246 std::string buffer;
@@ -1649,16 +1643,9 @@ void LLPanelEstateInfo::onClickAddAllowedGroup(void* user_data)
1649 return; 1643 return;
1650 } 1644 }
1651 1645
1652 LLNotification::Params params("ChangeLindenAccess"); 1646 LLNotification::Params params("PfftLindenCrap");
1653 params.functor(boost::bind(&LLPanelEstateInfo::addAllowedGroup, self, _1, _2)); 1647 params.functor(boost::bind(&LLPanelEstateInfo::addAllowedGroup, self, _1, _2));
1654 if (isLindenEstate()) 1648 LLNotifications::instance().forceResponse(params, 0);
1655 {
1656 LLNotifications::instance().add(params);
1657 }
1658 else
1659 {
1660 LLNotifications::instance().forceResponse(params, 0);
1661 }
1662} 1649}
1663 1650
1664bool LLPanelEstateInfo::addAllowedGroup(const LLSD& notification, const LLSD& response) 1651bool LLPanelEstateInfo::addAllowedGroup(const LLSD& notification, const LLSD& response)
@@ -1829,16 +1816,6 @@ std::string all_estates_text()
1829 } 1816 }
1830} 1817}
1831 1818
1832// static
1833bool LLPanelEstateInfo::isLindenEstate()
1834{
1835 LLPanelEstateInfo* panel = LLFloaterRegionInfo::getPanelEstate();
1836 if (!panel) return false;
1837
1838 U32 estate_id = panel->getEstateID();
1839 return (estate_id <= ESTATE_LAST_LINDEN);
1840}
1841
1842typedef std::vector<LLUUID> AgentOrGroupIDsVector; 1819typedef std::vector<LLUUID> AgentOrGroupIDsVector;
1843struct LLEstateAccessChangeInfo 1820struct LLEstateAccessChangeInfo
1844{ 1821{
@@ -1890,14 +1867,7 @@ void LLPanelEstateInfo::addAllowedGroup2(LLUUID id, void* user_data)
1890 params.payload(payload) 1867 params.payload(payload)
1891 .substitutions(args) 1868 .substitutions(args)
1892 .functor(accessCoreConfirm); 1869 .functor(accessCoreConfirm);
1893 if (isLindenEstate()) 1870 LLNotifications::instance().add(params);
1894 {
1895 LLNotifications::instance().forceResponse(params, 0);
1896 }
1897 else
1898 {
1899 LLNotifications::instance().add(params);
1900 }
1901} 1871}
1902 1872
1903// static 1873// static
@@ -1908,19 +1878,12 @@ void LLPanelEstateInfo::accessAddCore(U32 operation_flag, const std::string& dia
1908 payload["dialog_name"] = dialog_name; 1878 payload["dialog_name"] = dialog_name;
1909 // agent id filled in after avatar picker 1879 // agent id filled in after avatar picker
1910 1880
1911 LLNotification::Params params("ChangeLindenAccess"); 1881 LLNotification::Params params("PfftLindenCrap");
1912 params.payload(payload) 1882 params.payload(payload)
1913 .functor(accessAddCore2); 1883 .functor(accessAddCore2);
1914 1884
1915 if (isLindenEstate()) 1885 // same as clicking "OK"
1916 { 1886 LLNotifications::instance().forceResponse(params, 0);
1917 LLNotifications::instance().add(params);
1918 }
1919 else
1920 {
1921 // same as clicking "OK"
1922 LLNotifications::instance().forceResponse(params, 0);
1923 }
1924} 1887}
1925 1888
1926// static 1889// static
@@ -2000,16 +1963,8 @@ void LLPanelEstateInfo::accessAddCore3(const std::vector<std::string>& names, co
2000 .payload(change_info->asLLSD()) 1963 .payload(change_info->asLLSD())
2001 .functor(accessCoreConfirm); 1964 .functor(accessCoreConfirm);
2002 1965
2003 if (isLindenEstate()) 1966 // ask if this estate or all estates with this owner
2004 { 1967 LLNotifications::instance().add(params);
2005 // just apply to this estate
2006 LLNotifications::instance().forceResponse(params, 0);
2007 }
2008 else
2009 {
2010 // ask if this estate or all estates with this owner
2011 LLNotifications::instance().add(params);
2012 }
2013} 1968}
2014 1969
2015// static 1970// static
@@ -2036,20 +1991,12 @@ void LLPanelEstateInfo::accessRemoveCore(U32 operation_flag, const std::string&
2036 payload["allowed_ids"].append(item->getUUID()); 1991 payload["allowed_ids"].append(item->getUUID());
2037 } 1992 }
2038 1993
2039 LLNotification::Params params("ChangeLindenAccess"); 1994 LLNotification::Params params("PfftLindenCrap");
2040 params.payload(payload) 1995 params.payload(payload)
2041 .functor(accessRemoveCore2); 1996 .functor(accessRemoveCore2);
2042 1997
2043 if (isLindenEstate()) 1998 // just proceed, as if clicking OK
2044 { 1999 LLNotifications::instance().forceResponse(params, 0);
2045 // warn on change linden estate
2046 LLNotifications::instance().add(params);
2047 }
2048 else
2049 {
2050 // just proceed, as if clicking OK
2051 LLNotifications::instance().forceResponse(params, 0);
2052 }
2053} 2000}
2054 2001
2055// static 2002// static
@@ -2062,21 +2009,12 @@ bool LLPanelEstateInfo::accessRemoveCore2(const LLSD& notification, const LLSD&
2062 return false; 2009 return false;
2063 } 2010 }
2064 2011
2065 // If Linden estate, can only apply to "this" estate, not all estates 2012 LLSD args;
2066 // owned by NULL. 2013 args["ALL_ESTATES"] = all_estates_text();
2067 if (isLindenEstate()) 2014 LLNotifications::instance().add(notification["payload"]["dialog_name"],
2068 { 2015 args,
2069 accessCoreConfirm(notification, response); 2016 notification["payload"],
2070 } 2017 accessCoreConfirm);
2071 else
2072 {
2073 LLSD args;
2074 args["ALL_ESTATES"] = all_estates_text();
2075 LLNotifications::instance().add(notification["payload"]["dialog_name"],
2076 args,
2077 notification["payload"],
2078 accessCoreConfirm);
2079 }
2080 return false; 2018 return false;
2081} 2019}
2082 2020
@@ -2358,52 +2296,23 @@ BOOL LLPanelEstateInfo::sendUpdate()
2358{ 2296{
2359 llinfos << "LLPanelEsateInfo::sendUpdate()" << llendl; 2297 llinfos << "LLPanelEsateInfo::sendUpdate()" << llendl;
2360 2298
2361 LLNotification::Params params("ChangeLindenEstate"); 2299 // send the update
2362 params.functor(boost::bind(&LLPanelEstateInfo::callbackChangeLindenEstate, this, _1, _2)); 2300 if (!commitEstateInfoCaps())
2363
2364 if (getEstateID() <= ESTATE_LAST_LINDEN)
2365 {
2366 // trying to change reserved estate, warn
2367 LLNotifications::instance().add(params);
2368 }
2369 else
2370 { 2301 {
2371 // for normal estates, just make the change 2302 // the caps method failed, try the old way
2372 LLNotifications::instance().forceResponse(params, 0); 2303 LLFloaterRegionInfo::nextInvoice();
2304 commitEstateInfoDataserver();
2373 } 2305 }
2306 // we don't want to do this because we'll get it automatically from the sim
2307 // after the spaceserver processes it
2308// else
2309// {
2310// // caps method does not automatically send this info
2311// LLFloaterRegionInfo::requestRegionInfo();
2312// }
2374 return TRUE; 2313 return TRUE;
2375} 2314}
2376 2315
2377bool LLPanelEstateInfo::callbackChangeLindenEstate(const LLSD& notification, const LLSD& response)
2378{
2379 S32 option = LLNotification::getSelectedOption(notification, response);
2380 switch(option)
2381 {
2382 case 0:
2383 // send the update
2384 if (!commitEstateInfoCaps())
2385 {
2386 // the caps method failed, try the old way
2387 LLFloaterRegionInfo::nextInvoice();
2388 commitEstateInfoDataserver();
2389 }
2390 // we don't want to do this because we'll get it automatically from the sim
2391 // after the spaceserver processes it
2392// else
2393// {
2394// // caps method does not automatically send this info
2395// LLFloaterRegionInfo::requestRegionInfo();
2396// }
2397 break;
2398 case 1:
2399 default:
2400 // do nothing
2401 break;
2402 }
2403 return false;
2404}
2405
2406
2407/* 2316/*
2408// Request = "getowner" 2317// Request = "getowner"
2409// SParam[0] = "" (empty string) 2318// SParam[0] = "" (empty string)
@@ -2656,47 +2565,6 @@ void LLPanelEstateInfo::setAbuseEmailAddress(const std::string& address)
2656 childSetValue("abuse_email_address", LLSD(address)); 2565 childSetValue("abuse_email_address", LLSD(address));
2657} 2566}
2658 2567
2659void LLPanelEstateInfo::setAccessAllowedEnabled(bool enable_agent,
2660 bool enable_group,
2661 bool enable_ban)
2662{
2663 childSetEnabled("allow_resident_label", enable_agent);
2664 childSetEnabled("allowed_avatar_name_list", enable_agent);
2665 childSetVisible("allowed_avatar_name_list", enable_agent);
2666 childSetEnabled("add_allowed_avatar_btn", enable_agent);
2667 childSetEnabled("remove_allowed_avatar_btn", enable_agent);
2668
2669 // Groups
2670 childSetEnabled("allow_group_label", enable_group);
2671 childSetEnabled("allowed_group_name_list", enable_group);
2672 childSetVisible("allowed_group_name_list", enable_group);
2673 childSetEnabled("add_allowed_group_btn", enable_group);
2674 childSetEnabled("remove_allowed_group_btn", enable_group);
2675
2676 // Ban
2677 childSetEnabled("ban_resident_label", enable_ban);
2678 childSetEnabled("banned_avatar_name_list", enable_ban);
2679 childSetVisible("banned_avatar_name_list", enable_ban);
2680 childSetEnabled("add_banned_avatar_btn", enable_ban);
2681 childSetEnabled("remove_banned_avatar_btn", enable_ban);
2682
2683 // Update removal buttons if needed
2684 if (enable_agent)
2685 {
2686 checkRemovalButton("allowed_avatar_name_list");
2687 }
2688
2689 if (enable_group)
2690 {
2691 checkRemovalButton("allowed_group_name_list");
2692 }
2693
2694 if (enable_ban)
2695 {
2696 checkRemovalButton("banned_avatar_name_list");
2697 }
2698}
2699
2700// static 2568// static
2701void LLPanelEstateInfo::callbackCacheName( 2569void LLPanelEstateInfo::callbackCacheName(
2702 const LLUUID& id, 2570 const LLUUID& id,
@@ -3233,20 +3101,6 @@ bool LLDispatchEstateUpdateInfo::operator()(
3233 panel->setSunHour(sun_hour); 3101 panel->setSunHour(sun_hour);
3234 } 3102 }
3235 3103
3236 bool visible_from_mainland = (bool)(flags & REGION_FLAGS_EXTERNALLY_VISIBLE);
3237 bool god = gAgent.isGodlike();
3238 bool linden_estate = (estate_id <= ESTATE_LAST_LINDEN);
3239
3240 // If visible from mainland, disable the access allowed
3241 // UI, as anyone can teleport there.
3242 // However, gods need to be able to edit the access list for
3243 // linden estates, regardless of visibility, to allow object
3244 // and L$ transfers.
3245 bool enable_agent = (!visible_from_mainland || (god && linden_estate));
3246 bool enable_group = enable_agent;
3247 bool enable_ban = !linden_estate;
3248 panel->setAccessAllowedEnabled(enable_agent, enable_group, enable_ban);
3249
3250 return true; 3104 return true;
3251} 3105}
3252 3106
diff --git a/linden/indra/newview/llfloaterregioninfo.h b/linden/indra/newview/llfloaterregioninfo.h
index ae0c993..f5e3d03 100644
--- a/linden/indra/newview/llfloaterregioninfo.h
+++ b/linden/indra/newview/llfloaterregioninfo.h
@@ -344,7 +344,6 @@ public:
344 344
345 U32 getEstateID() const { return mEstateID; } 345 U32 getEstateID() const { return mEstateID; }
346 void setEstateID(U32 estate_id) { mEstateID = estate_id; } 346 void setEstateID(U32 estate_id) { mEstateID = estate_id; }
347 static bool isLindenEstate();
348 347
349 const std::string getOwnerName() const; 348 const std::string getOwnerName() const;
350 void setOwnerName(const std::string& name); 349 void setOwnerName(const std::string& name);
@@ -352,10 +351,6 @@ public:
352 const std::string getAbuseEmailAddress() const; 351 const std::string getAbuseEmailAddress() const;
353 void setAbuseEmailAddress(const std::string& address); 352 void setAbuseEmailAddress(const std::string& address);
354 353
355 // If visible from mainland, allowed agent and allowed groups
356 // are ignored, so must disable UI.
357 void setAccessAllowedEnabled(bool enable_agent, bool enable_group, bool enable_ban);
358
359 // this must have the same function signature as 354 // this must have the same function signature as
360 // llmessage/llcachename.h:LLCacheNameCallback 355 // llmessage/llcachename.h:LLCacheNameCallback
361 static void callbackCacheName( 356 static void callbackCacheName(
@@ -367,8 +362,6 @@ public:
367 362
368protected: 363protected:
369 virtual BOOL sendUpdate(); 364 virtual BOOL sendUpdate();
370 // confirmation dialog callback
371 bool callbackChangeLindenEstate(const LLSD& notification, const LLSD& response);
372 365
373 void commitEstateInfoDataserver(); 366 void commitEstateInfoDataserver();
374 bool commitEstateInfoCaps(); 367 bool commitEstateInfoCaps();
diff --git a/linden/indra/newview/llfloaterreporter.cpp b/linden/indra/newview/llfloaterreporter.cpp
index 16123ae..1911e4e 100644
--- a/linden/indra/newview/llfloaterreporter.cpp
+++ b/linden/indra/newview/llfloaterreporter.cpp
@@ -37,7 +37,7 @@
37// self include 37// self include
38#include "llfloaterreporter.h" 38#include "llfloaterreporter.h"
39 39
40// linden library includes 40// viewer library includes
41#include "llassetstorage.h" 41#include "llassetstorage.h"
42#include "llcachename.h" 42#include "llcachename.h"
43#include "llfontgl.h" 43#include "llfontgl.h"
diff --git a/linden/indra/newview/llfloatertos.cpp b/linden/indra/newview/llfloatertos.cpp
index efc8bd6..7773126 100644
--- a/linden/indra/newview/llfloatertos.cpp
+++ b/linden/indra/newview/llfloatertos.cpp
@@ -42,7 +42,7 @@
42#include "llviewertexteditor.h" 42#include "llviewertexteditor.h"
43#include "llviewerwindow.h" 43#include "llviewerwindow.h"
44 44
45// linden library includes 45// viewer library includes
46#include "llbutton.h" 46#include "llbutton.h"
47#include "llhttpclient.h" 47#include "llhttpclient.h"
48#include "llhttpstatuscodes.h" // for HTTP_FOUND 48#include "llhttpstatuscodes.h" // for HTTP_FOUND
@@ -303,3 +303,4 @@ void LLFloaterTOS::handleMediaEvent(LLPluginClassMedia* /*self*/, EMediaEvent ev
303 } 303 }
304 } 304 }
305} 305}
306
diff --git a/linden/indra/newview/llhoverview.cpp b/linden/indra/newview/llhoverview.cpp
index 91cb8a5..12479c1 100644
--- a/linden/indra/newview/llhoverview.cpp
+++ b/linden/indra/newview/llhoverview.cpp
@@ -305,7 +305,7 @@ void LLHoverView::updateText()
305 LLVOAvatar* avatar = (LLVOAvatar*)hit_object; 305 LLVOAvatar* avatar = (LLVOAvatar*)hit_object;
306 if (avatar->isSelf()) 306 if (avatar->isSelf())
307 { 307 {
308 client="Client: Imprudence"; 308 client="Client: meta-impy";
309 } 309 }
310 else 310 else
311 { 311 {
@@ -354,7 +354,7 @@ void LLHoverView::updateText()
354 mText.push_back( nodep->mDescription ); 354 mText.push_back( nodep->mDescription );
355 } 355 }
356 356
357 // Line: "Owner: James Linden" 357 // Line: "Owner: James Green"
358 line.clear(); 358 line.clear();
359 line.append(LLTrans::getString("TooltipOwner") + " "); 359 line.append(LLTrans::getString("TooltipOwner") + " ");
360 360
@@ -570,7 +570,7 @@ void LLHoverView::updateText()
570 } 570 }
571 mText.push_back(line); 571 mText.push_back(line);
572 572
573 // Line: "Owner: James Linden" 573 // Line: "Owner: James Green"
574 line.clear(); 574 line.clear();
575 line.append(LLTrans::getString("TooltipOwner") + " "); 575 line.append(LLTrans::getString("TooltipOwner") + " ");
576 576
diff --git a/linden/indra/newview/llimpanel.cpp b/linden/indra/newview/llimpanel.cpp
index 4953a27..85ab779 100644
--- a/linden/indra/newview/llimpanel.cpp
+++ b/linden/indra/newview/llimpanel.cpp
@@ -83,6 +83,14 @@
83#include "rlvhandler.h" 83#include "rlvhandler.h"
84// [/RLVa:KB] 84// [/RLVa:KB]
85 85
86#if USE_OTR // [$PLOTR$]
87#include "context.h"
88#include "llcombobox.h"
89#include "otr_wrapper.h"
90#include "otr_floater_smp_dialog.h"
91#include "otr_floater_smp_progress.h"
92#endif // USE_OTR // [/$PLOTR$]
93
86// 94//
87// Constants 95// Constants
88// 96//
@@ -1107,6 +1115,10 @@ LLFloaterIMPanel::LLFloaterIMPanel(
1107 mCallBackEnabled(TRUE), 1115 mCallBackEnabled(TRUE),
1108 mSpeakers(NULL), 1116 mSpeakers(NULL),
1109 mSpeakerPanel(NULL), 1117 mSpeakerPanel(NULL),
1118#if USE_OTR // [$PLOTR$]
1119 mOtrSmpDialog(NULL),
1120 mOtrSmpProgress(NULL),
1121#endif // USE_OTR // [/$PLOTR$]
1110 mFirstKeystrokeTimer(), 1122 mFirstKeystrokeTimer(),
1111 mLastKeystrokeTimer() 1123 mLastKeystrokeTimer()
1112{ 1124{
@@ -1140,6 +1152,10 @@ LLFloaterIMPanel::LLFloaterIMPanel(
1140 mCallBackEnabled(TRUE), 1152 mCallBackEnabled(TRUE),
1141 mSpeakers(NULL), 1153 mSpeakers(NULL),
1142 mSpeakerPanel(NULL), 1154 mSpeakerPanel(NULL),
1155#if USE_OTR // [$PLOTR$]
1156 mOtrSmpDialog(NULL),
1157 mOtrSmpProgress(NULL),
1158#endif // USE_OTR // [/$PLOTR$]
1143 mFirstKeystrokeTimer(), 1159 mFirstKeystrokeTimer(),
1144 mLastKeystrokeTimer(), 1160 mLastKeystrokeTimer(),
1145 mIMPanelType(IM_PANEL_PLAIN) 1161 mIMPanelType(IM_PANEL_PLAIN)
@@ -1319,6 +1335,11 @@ LLFloaterIMPanel::~LLFloaterIMPanel()
1319 { 1335 {
1320 mInputEditor->setFocusLostCallback( NULL ); 1336 mInputEditor->setFocusLostCallback( NULL );
1321 } 1337 }
1338
1339#if USE_OTR // [$PLOTR$]
1340 if (mOtrSmpDialog) delete mOtrSmpDialog;
1341 if (mOtrSmpProgress) delete mOtrSmpProgress;
1342#endif // USE_OTR // [/$PLOTR$]
1322} 1343}
1323 1344
1324BOOL LLFloaterIMPanel::postBuild() 1345BOOL LLFloaterIMPanel::postBuild()
@@ -1388,6 +1409,27 @@ BOOL LLFloaterIMPanel::postBuild()
1388 childSetCommitCallback("speaker_volume", onVolumeChange, this); 1409 childSetCommitCallback("speaker_volume", onVolumeChange, this);
1389 } 1410 }
1390 1411
1412#if USE_OTR // [$PLOTR$]
1413 if (!gOTR) OTR_Wrapper::init();
1414 if (gOTR && (IM_NOTHING_SPECIAL == mDialog))
1415 {
1416 childSetCommitCallback("otr_btn", onClickOtr, this);
1417 LLComboBox *combo = getChild<LLComboBox>("otr_btn");
1418 if (!combo)
1419 {
1420 llwarns << "$PLOTR$ Can't find OTR control/status" << llendl;
1421 }
1422 else
1423 {
1424 llinfos << "$PLOTR$ found OTR control/status" << llendl;
1425 combo->setCommitCallback(onClickOtr);
1426 combo->setCallbackUserData(this);
1427 combo->setAllowTextEntry(FALSE, 0, FALSE);
1428 showOtrStatus();
1429 }
1430 }
1431#endif // USE_OTR // [/$PLOTR$]
1432
1391 setDefaultBtn("send_btn"); 1433 setDefaultBtn("send_btn");
1392 return TRUE; 1434 return TRUE;
1393 } 1435 }
@@ -1627,7 +1669,7 @@ void LLFloaterIMPanel::addHistoryLine(const std::string &utf8msg, const LLColor4
1627 // 'name' is a sender name that we want to hotlink so that clicking on it opens a profile. 1669 // 'name' is a sender name that we want to hotlink so that clicking on it opens a profile.
1628 if (!name.empty()) // If name exists, then add it to the front of the message. 1670 if (!name.empty()) // If name exists, then add it to the front of the message.
1629 { 1671 {
1630 // Don't hotlink any messages from the system (e.g. "Second Life:"), so just add those in plain text. 1672 // Don't hotlink any messages from the system, so just add those in plain text.
1631 if (name == SYSTEM_FROM) 1673 if (name == SYSTEM_FROM)
1632 { 1674 {
1633 mHistoryEditor->appendColoredText(name,false,prepend_newline,color); 1675 mHistoryEditor->appendColoredText(name,false,prepend_newline,color);
@@ -2119,6 +2161,778 @@ void deliver_message(const std::string& utf8_text,
2119 } 2161 }
2120} 2162}
2121 2163
2164#if USE_OTR // [$PLOTR$]
2165static bool g_otr_force_typing_stop = false; // ugly hack...
2166// sometimes we must send messages, but don't know if they are offline
2167
2168void otr_deliver_message(const std::string& utf8_text,
2169 const LLUUID& im_session_id,
2170 const LLUUID& other_participant_id,
2171 EInstantMessage dialog)
2172{
2173// llinfos
2174// << "$PLOTR$ message length:" << utf8_text.length()
2175// << " [" << utf8_text.substr(0, 24)
2176// << "]...[" << utf8_text.substr(utf8_text.length()-10, utf8_text.length()-1)
2177// << "]" << llendl;
2178 std::string name;
2179 gAgent.buildFullname(name);
2180
2181 const LLRelationship* info = NULL;
2182 info = LLAvatarTracker::instance().getBuddyInfo(other_participant_id);
2183
2184 U8 offline = (!info || info->isOnline()) ? IM_ONLINE : IM_OFFLINE;
2185
2186 // default to IM_SESSION_SEND unless it's nothing special - in
2187 // which case it's probably an IM to everyone.
2188 U8 new_dialog = dialog;
2189
2190 if ( dialog != IM_NOTHING_SPECIAL )
2191 {
2192 new_dialog = IM_SESSION_SEND;
2193 }
2194 if ((new_dialog == IM_NOTHING_SPECIAL) &&
2195 (g_otr_force_typing_stop ||
2196 (gSavedSettings.getBOOL("EmeraldOTRInTypingStop"))))
2197 {
2198 OtrlMessageType mtype = otrl_proto_message_type(utf8_text.c_str());
2199 switch (mtype)
2200 {
2201 case OTRL_MSGTYPE_UNKNOWN:
2202 llwarns << "Sending unknown type of OTR message" << llendl;
2203 // fall through
2204 case OTRL_MSGTYPE_QUERY:
2205 case OTRL_MSGTYPE_DH_COMMIT:
2206 case OTRL_MSGTYPE_DH_KEY:
2207 case OTRL_MSGTYPE_REVEALSIG:
2208 case OTRL_MSGTYPE_SIGNATURE:
2209 case OTRL_MSGTYPE_V1_KEYEXCH:
2210 case OTRL_MSGTYPE_DATA:
2211 case OTRL_MSGTYPE_TAGGEDPLAINTEXT:
2212 new_dialog = IM_TYPING_STOP;
2213 break;
2214 case OTRL_MSGTYPE_NOTOTR:
2215 case OTRL_MSGTYPE_ERROR:
2216 default:
2217 /* new_dialog = IM_NOTHING_SPECIAL */ ;
2218 }
2219 }
2220 pack_instant_message(
2221 gMessageSystem,
2222 gAgent.getID(),
2223 FALSE,
2224 gAgent.getSessionID(),
2225 other_participant_id,
2226 name.c_str(),
2227 utf8_text.c_str(),
2228 offline,
2229 (EInstantMessage)new_dialog,
2230 im_session_id);
2231 gAgent.sendReliableMessage();
2232
2233 // If there is a mute list and this is not a group chat...
2234 if ( LLMuteList::getInstance() )
2235 {
2236 // ... the target should not be in our mute list for some message types.
2237 // Auto-remove them if present.
2238 switch( dialog )
2239 {
2240 case IM_NOTHING_SPECIAL:
2241 case IM_GROUP_INVITATION:
2242 case IM_INVENTORY_OFFERED:
2243 case IM_SESSION_INVITE:
2244 case IM_SESSION_P2P_INVITE:
2245 case IM_SESSION_CONFERENCE_START:
2246 case IM_SESSION_SEND: // This one is marginal - erring on the side of hearing.
2247 case IM_LURE_USER:
2248 case IM_GODLIKE_LURE_USER:
2249 case IM_FRIENDSHIP_OFFERED:
2250 LLMuteList::getInstance()->autoRemove(other_participant_id, LLMuteList::AR_IM);
2251 break;
2252 default: ; // do nothing
2253 }
2254 }
2255}
2256
2257// static
2258void LLFloaterIMPanel::onClickOtr(LLUICtrl* source, void* userdata)
2259{
2260 LLFloaterIMPanel* self = (LLFloaterIMPanel*) userdata;
2261 if (self)
2262 {
2263 self->doOtrMenu();
2264 self->showOtrStatus();
2265 }
2266 else
2267 {
2268 llwarns << "$PLOTR$ onClickOtr() can't find floater." << llendl;
2269 }
2270}
2271
2272void LLFloaterIMPanel::doOtrStart()
2273{
2274 U32 otrpref = gSavedSettings.getU32("EmeraldUseOTR");
2275 // otrpref: 0 == Require use of OTR in IMs, 1 == Request OTR if available, 2 == Accept OTR requests, 3 == Decline use of OTR
2276 if (3 == otrpref)
2277 {
2278 //otrLogMessageGetstring("otr_err_deacivated");
2279 showOtrStatus();
2280 return;
2281 }
2282 if (gOTR && (IM_NOTHING_SPECIAL == mDialog))
2283 {
2284 llinfos << "$PLOTR$ otr menu start/restart/refresh" << llendl;
2285 gcry_error_t err = 0;
2286 char *newmessage = NULL;
2287 char my_uuid[UUID_STR_SIZE];
2288 char their_uuid[UUID_STR_SIZE];
2289 gAgent.getID().toString(&(my_uuid[0]));
2290 mOtherParticipantUUID.toString(&(their_uuid[0]));
2291
2292 const LLRelationship* info = NULL;
2293 info = LLAvatarTracker::instance().getBuddyInfo(mOtherParticipantUUID);
2294 if (info && (!info->isOnline()))
2295 {
2296 otrLogMessageGetstringName("otr_err_offline_start");
2297 return;
2298 }
2299
2300 if (gOTR && (IM_NOTHING_SPECIAL == mDialog))
2301 {
2302 // only try OTR for 1 on 1 IM's
2303 err = otrl_message_sending(
2304 gOTR->get_userstate(),
2305 gOTR->get_uistate(),
2306 &mSessionUUID,
2307 my_uuid,
2308 gOTR->get_protocolid(),
2309 their_uuid,
2310 "?OTRv2?", NULL, &newmessage,
2311 NULL, NULL);
2312 }
2313 if (err)
2314 {
2315 llwarns << "$PLOTR$ OTR failed to encrypt start message" << llendl;
2316 otrLogMessageGetstring("otr_err_failed_starting");
2317 return;
2318 }
2319 else if (newmessage)
2320 {
2321 // OTR encrypted the message. Handle fragmentation of the message
2322 int context_added = 0;
2323 ConnContext *context = getOtrContext(1, &context_added);
2324 if (context_added)
2325 {
2326 llwarns << "$PLOTR$ context added *after* send start but before fragmentation." << llendl;
2327 }
2328 if (! context)
2329 {
2330 otrLogMessageGetstring("otr_err_failed_starting");
2331 llwarns << "$PLOTR$ can't find context, not sending start message." << llendl;
2332 return;
2333 }
2334 else
2335 {
2336 char *extrafragment = NULL;
2337 err = otrl_message_fragment_and_send(
2338 gOTR->get_uistate(),
2339 &mSessionUUID,
2340 context,
2341 newmessage,
2342 OTRL_FRAGMENT_SEND_ALL,
2343 &extrafragment);
2344 }
2345 if (newmessage) otrl_message_free(newmessage);
2346 //otrLogMessageGetstringName("otr_prog_I_start");
2347 }
2348 else
2349 {
2350 llwarns << "$PLOTR$ can't start OTR for some reason." << llendl;
2351 otrLogMessageGetstring("otr_err_failed_starting");
2352 return;
2353 }
2354 }
2355}
2356
2357void LLFloaterIMPanel::doOtrStop(bool pretend_they_did)
2358{
2359 llinfos << "$PLOTR$ otr menu stop 1" << llendl;
2360 // do not disable this bassed on gSavedSettings.getU32("EmeraldUseOTR");
2361 // when the user disables OTR we may still need to stop currently encrypted conversations
2362 if (gOTR && (IM_NOTHING_SPECIAL == mDialog))
2363 {
2364 char my_uuid[UUID_STR_SIZE];
2365 char their_uuid[UUID_STR_SIZE];
2366 gAgent.getID().toString(&(my_uuid[0]));
2367 mOtherParticipantUUID.toString(&(their_uuid[0]));
2368 llinfos << "$PLOTR$ otr menu stop 2 their_uuid:" << mOtherParticipantUUID << llendl;
2369 g_otr_force_typing_stop = true; // ugly hack
2370 otrl_message_disconnect(
2371 gOTR->get_userstate(),
2372 gOTR->get_uistate(),
2373 &mSessionUUID,
2374 my_uuid,
2375 gOTR->get_protocolid(),
2376 their_uuid);
2377 g_otr_force_typing_stop = false;
2378 if (pretend_they_did)
2379 {
2380 otrLogMessageGetstringName("otr_prog_they_stop");
2381 }
2382 else
2383 {
2384 //otrLogMessageGetstringName("otr_prog_I_stop");
2385 }
2386 showOtrStatus();
2387 }
2388}
2389
2390void LLFloaterIMPanel::doOtrAuth()
2391{
2392 if (mOtrSmpDialog)
2393 {
2394 llinfos << "$PLOTR$ mOtrSmpDialog SMP already in progress, ignoring request to start it" << llendl;
2395 return;
2396 }
2397 if (mOtrSmpDialog || mOtrSmpProgress)
2398 {
2399 llinfos << "$PLOTR$ SMP already in progress, ignoring request to start it" << llendl;
2400 // $TODO$ Tell the user nicely to cancel the one in progress.
2401 // $TODO$ better yet, cancel it/them for the user
2402 return;
2403 }
2404 if (gOTR && (IM_NOTHING_SPECIAL == mDialog))
2405 {
2406 llinfos << "$PLOTR$ otr menu auth" << llendl;
2407
2408 ConnContext *context = getOtrContext();
2409 if (!context)
2410 {
2411 llwarns << "$PLOTR$ doOtrAuth can't find context." << llendl;
2412 return;
2413 }
2414 char my_uuid[UUID_STR_SIZE];
2415 gAgent.getID().toString(&(my_uuid[0]));
2416 char my_fingerprint[45];
2417 otrl_privkey_fingerprint(gOTR->get_userstate(),
2418 my_fingerprint,
2419 my_uuid,
2420 gOTR->get_protocolid());
2421 char other_fingerprint[45];
2422 otrl_privkey_hash_to_human(other_fingerprint, context->active_fingerprint->fingerprint);
2423 startSmpDialog(mSessionUUID, mOtherParticipantUUID,
2424 &(my_fingerprint[0]), &(other_fingerprint[0]));
2425 }
2426}
2427
2428
2429void LLFloaterIMPanel::doOtrMenu()
2430{
2431 if (gOTR && (IM_NOTHING_SPECIAL == mDialog))
2432 {
2433 LLComboBox *combo = getChild<LLComboBox>("otr_btn");
2434 if (!combo)
2435 {
2436 llwarns << "$PLOTR$ Can't find OTR control/status" << llendl;
2437 }
2438 else
2439 {
2440 ConnContext *context = getOtrContext();
2441 U32 otrpref = gSavedSettings.getU32("EmeraldUseOTR");
2442 if (combo->getValue().asString() == "otr_auth_entry")
2443 {
2444 // Instant crash when doing this with someone that has no OTR capability.
2445 // So guard it if no encryption is happening.
2446 if (context && (OTRL_MSGSTATE_ENCRYPTED == context->msgstate))
2447 {
2448 doOtrAuth();
2449 }
2450 }
2451 else if (combo->getValue().asString() == "otr_help_entry")
2452 {
2453 llinfos << "$PLOTR$ otr help" << llendl;
2454 LLWeb::loadURL("http://www.cypherpunks.ca/otr/");
2455 }
2456 else if (combo->getValue().asString() == "otr_levels_entry")
2457 {
2458 llinfos << "$PLOTR$ otr levels help" << llendl;
2459 LLWeb::loadURL("http://www.cypherpunks.ca/otr/help/3.2.0/levels.php");
2460 }
2461 else // Clicked the flyout itself. Sort out what level to put them in based on the old level.
2462 {
2463 // otrpref: 0 == Require OTR, 1 == Request OTR, 2 == Accept OTR, 3 == Decline OTR
2464 if (3 == otrpref)
2465 {
2466 if (context && (OTRL_MSGSTATE_ENCRYPTED == context->msgstate))
2467 {
2468 doOtrStop();
2469 }
2470 }
2471 else if (context && (OTRL_MSGSTATE_ENCRYPTED == context->msgstate))
2472 {
2473 doOtrStop();
2474 }
2475 else if (context && (OTRL_MSGSTATE_FINISHED == context->msgstate))
2476 {
2477 doOtrStop();
2478 }
2479 else // OTRL_MSGSTATE_PLAINTEXT, or no context yet
2480 {
2481 doOtrStart();
2482 }
2483 }
2484 }
2485 }
2486}
2487
2488ConnContext *LLFloaterIMPanel::getOtrContext(int create_if_not_found, int *context_added)
2489{
2490 ConnContext *context = NULL;
2491 if (gOTR && (IM_NOTHING_SPECIAL == mDialog))
2492 {
2493 char my_uuid[UUID_STR_SIZE];
2494 char their_uuid[UUID_STR_SIZE];
2495 gAgent.getID().toString(&(my_uuid[0]));
2496 mOtherParticipantUUID.toString(&(their_uuid[0]));
2497 context = otrl_context_find(
2498 gOTR->get_userstate(),
2499 their_uuid,
2500 my_uuid,
2501 gOTR->get_protocolid(),
2502 create_if_not_found, context_added, NULL, NULL);
2503 }
2504 return context;
2505}
2506
2507bool LLFloaterIMPanel::otherIsOtrAuthenticated()
2508{
2509 if (gOTR && (IM_NOTHING_SPECIAL == mDialog))
2510 {
2511 ConnContext *context = getOtrContext();
2512 if (context && context->active_fingerprint &&
2513 context->active_fingerprint->trust &&
2514 *(context->active_fingerprint->trust))
2515 {
2516 llinfos << "$PLOTR$ they are authenticated -- trust level is "
2517 << (context->active_fingerprint->trust) << llendl;
2518 return true;
2519 }
2520 }
2521 llinfos << "$PLOTR$ they are NOT authenticated" << llendl;
2522 return false;
2523}
2524
2525void LLFloaterIMPanel::showOtrStatus()
2526{
2527 if (gOTR && (IM_NOTHING_SPECIAL == mDialog))
2528 {
2529 LLFlyoutButton *combo = (LLFlyoutButton *) getChild<LLComboBox>("otr_btn");
2530 if (!combo)
2531 {
2532 llerrs << "$PLOTR$ Can't find OTR control/status" << llendl;
2533 }
2534 else
2535 {
2536 ConnContext *context = getOtrContext();
2537 U32 otrpref = gSavedSettings.getU32("EmeraldUseOTR");
2538 // otrpref: 0 == Require OTR, 1 == Request OTR, 2 == Accept OTR, 3 == Decline OTR
2539 if (3 == otrpref)
2540 {
2541 if (context && (OTRL_MSGSTATE_ENCRYPTED == context->msgstate))
2542 {
2543 doOtrStop();
2544 }
2545 combo->setLabel(getString("otr_not_private"));
2546 }
2547 else if (context && (OTRL_MSGSTATE_ENCRYPTED == context->msgstate))
2548 {
2549 if (otherIsOtrAuthenticated())
2550 combo->setLabel(getString("otr_private"));
2551 else
2552 combo->setLabel(getString("otr_unverified"));
2553 }
2554 else if (context && (OTRL_MSGSTATE_FINISHED == context->msgstate))
2555 {
2556 if (OTRL_MSGSTATE_ENCRYPTED == mOtrLastStatus)
2557 {
2558 if (otherIsOtrAuthenticated())
2559 otrLogMessageGetstringName("otr_prog_they_stop_private");
2560 else
2561 otrLogMessageGetstringName("otr_prog_they_stop_unverified");
2562 }
2563 combo->setLabel(getString("otr_finished"));
2564 }
2565 else // OTRL_MSGSTATE_PLAINTEXT, or no context yet
2566 {
2567 combo->setLabel(getString("otr_not_private"));
2568 }
2569 if (context)
2570 {
2571 mOtrLastStatus = context->msgstate;
2572 }
2573 }
2574 }
2575}
2576
2577void LLFloaterIMPanel::otrLogMessage(std::string message)
2578{
2579 addHistoryLine(message, gSavedSettings.getColor("SystemChatColor"), true, mOtherParticipantUUID);
2580}
2581
2582void LLFloaterIMPanel::otrLogMessageGetstring(const char *message_name)
2583{
2584 LLUIString msg = getString(message_name);
2585 otrLogMessage(msg);
2586}
2587
2588void LLFloaterIMPanel::otrLogMessageGetstringName(const char *message_name)
2589{
2590 LLUIString msg = getString(message_name);
2591 std::string them;
2592 if (!gCacheName->getFullName(mOtherParticipantUUID, them)) them = getString("otr_generic_name");
2593 msg.setArg("[NAME]", them);
2594 otrLogMessage(msg);
2595}
2596
2597void otr_log_message(LLUUID session_id, const char *message)
2598{
2599 LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(session_id);
2600 if (floater) floater->otrLogMessage(message);
2601 else
2602 {
2603 llinfos << "$PLOTR$ otr_log_message(" << message << ") failed to find floater." << llendl;
2604 }
2605}
2606
2607void otr_log_message_getstring(LLUUID session_id, const char *message_name)
2608{
2609 LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(session_id);
2610 if (floater) floater->otrLogMessageGetstring(message_name);
2611 else
2612 {
2613 llinfos << "$PLOTR$ otr_log_message_getstring(" << message_name << ") failed to find floater." << llendl;
2614 }
2615}
2616
2617void otr_log_message_getstring_name(LLUUID session_id, const char *message_name)
2618{
2619 LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(session_id);
2620 if (floater) floater->otrLogMessageGetstringName(message_name);
2621 else
2622 {
2623 llinfos << "$PLOTR$ otr_log_message_getstring_name(" << message_name << ") failed to find floater." << llendl;
2624 }
2625}
2626
2627void LLFloaterIMPanel::otrAuthenticateKey(const char *trust)
2628{
2629 int context_added = 0;
2630 ConnContext *context = getOtrContext(0, &context_added);
2631 if (gOTR && context)
2632 {
2633 otrl_context_set_trust(context->active_fingerprint, trust);
2634 otrLogMessageGetstringName("otr_log_authenticated");
2635 otrLogMessageGetstringName("otr_log_start_private");
2636 std::string pubpath =
2637 gDirUtilp->getExpandedFilename(
2638 LL_PATH_PER_SL_ACCOUNT, OTR_PUBLIC_KEYS_FILE);
2639 otrl_privkey_write_fingerprints(gOTR->get_userstate(), pubpath.c_str());
2640 showOtrStatus();
2641 }
2642}
2643
2644void otr_authenticate_key(LLUUID session_id, const char *trust)
2645{
2646 LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(session_id);
2647 if (floater) floater->otrAuthenticateKey(trust);
2648 else
2649 {
2650 llinfos << "$PLOTR$ otr_authenticate_key(" << session_id << ", " << trust << ") failed to find floater." << llendl;
2651 }
2652}
2653
2654void otr_show_status(LLUUID session_id)
2655{
2656 LLFloaterIMPanel* floater = gIMMgr->findFloaterBySession(session_id);
2657 if (floater) floater->showOtrStatus();
2658 else
2659 {
2660 llinfos << "$PLOTR$ can't find floater." << llendl;
2661 }
2662}
2663
2664void LLFloaterIMPanel::pretendTheyOtrStop()
2665{
2666 llinfos << "$PLOTR$ pretending they did doOtrStop()" << llendl;
2667 // we really stop our end, but...
2668 doOtrStop(true); // ... pretend that they did it
2669 ConnContext *context = getOtrContext();
2670 if (context) context->msgstate = OTRL_MSGSTATE_FINISHED;
2671 else
2672 {
2673 llwarns << "$PLOTR$ can't find context." << llendl;
2674 }
2675 showOtrStatus();
2676}
2677
2678void LLFloaterIMPanel::startSmpDialog(
2679 LLUUID session_id, LLUUID other_id,
2680 std::string my_fingerprint, std::string other_fingerprint)
2681{
2682 if (mOtrSmpDialog)
2683 {
2684 mOtrSmpDialog->close();
2685 delete mOtrSmpDialog;
2686 }
2687 mOtrSmpDialog = new OtrFloaterSmpDialog(
2688 this, mSessionUUID, mOtherParticipantUUID,
2689 my_fingerprint, other_fingerprint);
2690 if (mOtrSmpDialog) mOtrSmpDialog->show();
2691 else
2692 {
2693 llwarns << "$PLOTR$ couldn't new OtrFloaterSmpDialog" << llendl;
2694 }
2695}
2696
2697void LLFloaterIMPanel::startSmpDialogQA(
2698 LLUUID session_id, LLUUID other_id, std::string question, OtrlTLV *tlv)
2699{
2700 if (mOtrSmpDialog)
2701 {
2702 mOtrSmpDialog->close();
2703 delete mOtrSmpDialog;
2704 }
2705 mOtrSmpDialog = new OtrFloaterSmpDialog(
2706 this, mSessionUUID, mOtherParticipantUUID, question, tlv);
2707 if (mOtrSmpDialog) mOtrSmpDialog->show();
2708 else
2709 {
2710 llwarns << "$PLOTR$ couldn't new OtrFloaterSmpDialog" << llendl;
2711 }
2712}
2713
2714void LLFloaterIMPanel::startSmpDialogSS(
2715 LLUUID session_id, LLUUID other_id, OtrlTLV *tlv)
2716{
2717 if (mOtrSmpDialog)
2718 {
2719 mOtrSmpDialog->close();
2720 delete mOtrSmpDialog;
2721 }
2722 mOtrSmpDialog = new OtrFloaterSmpDialog(
2723 this, mSessionUUID, mOtherParticipantUUID, tlv);
2724 if (mOtrSmpProgress) mOtrSmpDialog->show();
2725 else
2726 {
2727 llwarns << "$PLOTR$ couldn't new OtrFloaterSmpDialog" << llendl;
2728 }
2729}
2730
2731void LLFloaterIMPanel::endSmpDialog()
2732{
2733 if (!mOtrSmpDialog)
2734 {
2735 llwarns << "$PLOTR$ couldn't find OtrFloaterSmpDialog" << llendl;
2736 }
2737 else
2738 {
2739 delete mOtrSmpDialog;
2740 mOtrSmpDialog = NULL;
2741 }
2742}
2743
2744void LLFloaterIMPanel::startSmpProgress(
2745 LLUUID session_id, LLUUID other_id,
2746 std::string a_question, std::string a_secret_answer, bool is_reply)
2747{
2748 if (mOtrSmpProgress)
2749 {
2750 mOtrSmpProgress->close();
2751 delete mOtrSmpProgress;
2752 }
2753 mOtrSmpProgress =
2754 new OtrFloaterSmpProgress(this, mSessionUUID, mOtherParticipantUUID,
2755 a_question, a_secret_answer, is_reply);
2756 if (mOtrSmpProgress) mOtrSmpProgress->show();
2757 else
2758 {
2759 llwarns << "$PLOTR$ couldn't new OtrFloaterSmpProgress" << llendl;
2760 }
2761}
2762
2763void LLFloaterIMPanel::startSmpProgress(
2764 LLUUID session_id, LLUUID other_id,
2765 std::string a_secret, bool is_reply)
2766{
2767 if (mOtrSmpProgress)
2768 {
2769 mOtrSmpProgress->close();
2770 delete mOtrSmpProgress;
2771 }
2772 mOtrSmpProgress =
2773 new OtrFloaterSmpProgress(this, mSessionUUID, mOtherParticipantUUID,
2774 a_secret, is_reply);
2775 if (mOtrSmpProgress) mOtrSmpProgress->show();
2776 else
2777 {
2778 llwarns << "$PLOTR$ couldn't new OtrFloaterSmpProgress" << llendl;
2779 }
2780}
2781
2782void LLFloaterIMPanel::endSmpProgress()
2783{
2784 if (!mOtrSmpProgress)
2785 {
2786 llwarns << "$PLOTR$ couldn't find OtrFloaterSmpProgress" << llendl;
2787 }
2788 else
2789 {
2790 delete mOtrSmpProgress;
2791 mOtrSmpProgress = NULL;
2792 }
2793}
2794
2795void LLFloaterIMPanel::handleOtrTlvs(OtrlTLV *tlvs)
2796{
2797 ConnContext *context = getOtrContext();
2798 if (! context)
2799 {
2800 llwarns << "$PLOTR$ Can't find otr context" << llendl;
2801 return;
2802 }
2803 if (! context->smstate)
2804 {
2805 llwarns << "$PLOTR$ OTR context doesn't have smstate" << llendl;
2806 return;
2807 }
2808 if (context->smstate->sm_prog_state == OTRL_SMP_PROG_CHEATED)
2809 {
2810 if (mOtrSmpProgress) mOtrSmpProgress->setFinalStatus("otr_smp_prog_auth_errored");
2811 context->smstate->nextExpected = OTRL_SMP_EXPECT1;
2812 context->smstate->sm_prog_state = OTRL_SMP_PROG_OK;
2813 return;
2814 }
2815 NextExpectedSMP nextMsg = context->smstate->nextExpected;
2816 OtrlTLV *tlv = NULL;
2817 tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP1Q);
2818 if (tlv)
2819 {
2820 if (nextMsg != OTRL_SMP_EXPECT1)
2821 {
2822 if (mOtrSmpProgress) mOtrSmpProgress->setFinalStatus("otr_smp_prog_auth_errored");
2823 return;
2824 }
2825 // Start a challenge SMP dialog
2826 char *question = (char *)tlv->data;
2827 char *eoq = (char *)memchr(question, '\0', tlv->len);
2828 if (!eoq)
2829 {
2830 llwarns << "$PLOTR$ bad format in OTRL_TLV_SMP1Q, no end to question." << llendl;
2831 if (mOtrSmpProgress) mOtrSmpProgress->setFinalStatus("otr_smp_prog_auth_errored");
2832 return;
2833 }
2834 startSmpDialogQA(mSessionUUID, mOtherParticipantUUID, question, tlv);
2835 if (mOtrSmpProgress) mOtrSmpProgress->setPercent(25);
2836 return;
2837 }
2838 tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP1);
2839 if (tlv)
2840 {
2841 if (nextMsg != OTRL_SMP_EXPECT1)
2842 {
2843 if (mOtrSmpProgress) mOtrSmpProgress->setFinalStatus("otr_smp_prog_auth_errored");
2844 return;
2845 }
2846 // Start a challenge SMP dialog
2847 startSmpDialogSS(mSessionUUID, mOtherParticipantUUID, tlv);
2848 if (mOtrSmpProgress) mOtrSmpProgress->setPercent(25);
2849 return;
2850 }
2851 tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP2);
2852 if (tlv)
2853 {
2854 if (nextMsg != OTRL_SMP_EXPECT2)
2855 {
2856 if (mOtrSmpProgress) mOtrSmpProgress->setFinalStatus("otr_smp_prog_auth_errored");
2857 return;
2858 }
2859 else
2860 {
2861 // If we received TLV2, we will send TLV3 and expect TLV4
2862 context->smstate->nextExpected = OTRL_SMP_EXPECT4;
2863 if (mOtrSmpProgress) mOtrSmpProgress->setPercent(75);
2864 }
2865 }
2866 tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP3);
2867 if (tlv)
2868 {
2869 if (nextMsg != OTRL_SMP_EXPECT3)
2870 {
2871 if (mOtrSmpProgress) mOtrSmpProgress->setFinalStatus("otr_smp_prog_auth_errored");
2872 return;
2873 }
2874 else
2875 {
2876 // If we received TLV3, we will send TLV4
2877 // We will not expect more messages, so prepare for next SMP
2878 context->smstate->nextExpected = OTRL_SMP_EXPECT1;
2879 // Report result to user
2880 if (context->smstate->sm_prog_state == OTRL_SMP_PROG_SUCCEEDED)
2881 {
2882 if (context->active_fingerprint &&
2883 context->active_fingerprint->trust &&
2884 *(context->active_fingerprint->trust))
2885 {
2886 // they authed me OK, and I already authed them in the past
2887 if (mOtrSmpProgress) mOtrSmpProgress->setFinalStatus("otr_smp_prog_auth_ok");
2888 }
2889 else
2890 {
2891 // they authed me OK, but I haven't authed them yet
2892 if (mOtrSmpProgress) mOtrSmpProgress->setFinalStatus("otr_smp_prog_auth_ok_name_next");
2893 }
2894 }
2895 else
2896 {
2897 if (mOtrSmpProgress) mOtrSmpProgress->setFinalStatus("otr_smp_prog_auth_failed");
2898 }
2899 }
2900 }
2901 tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP4);
2902 if (tlv)
2903 {
2904 if (nextMsg != OTRL_SMP_EXPECT4)
2905 {
2906 if (mOtrSmpProgress) mOtrSmpProgress->setFinalStatus("otr_smp_prog_auth_errored");
2907 return;
2908 }
2909 else {
2910 // We will not expect more messages, so prepare for next SMP
2911 context->smstate->nextExpected = OTRL_SMP_EXPECT1;
2912 // Report result to user
2913 if (context->active_fingerprint &&
2914 context->active_fingerprint->trust &&
2915 *(context->active_fingerprint->trust))
2916 {
2917 if (mOtrSmpProgress) mOtrSmpProgress->setFinalStatus("otr_smp_prog_auth_ok");
2918 }
2919 else
2920 {
2921 if (mOtrSmpProgress) mOtrSmpProgress->setFinalStatus("otr_smp_prog_auth_failed");
2922 }
2923 }
2924 }
2925 tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP_ABORT);
2926 if (tlv)
2927 {
2928 // The message we are waiting for will not arrive, so reset
2929 // and prepare for the next SMP
2930 context->smstate->nextExpected = OTRL_SMP_EXPECT1;
2931 if (mOtrSmpProgress) mOtrSmpProgress->setFinalStatus("otr_smp_prog_auth_aborted");
2932 }
2933}
2934#endif // USE_OTR // [/$PLOTR$]
2935
2122void LLFloaterIMPanel::sendMsg() 2936void LLFloaterIMPanel::sendMsg()
2123{ 2937{
2124 if (!gAgent.isGodlike() 2938 if (!gAgent.isGodlike()
@@ -2211,11 +3025,137 @@ void LLFloaterIMPanel::sendMsg()
2211 3025
2212 if ( mSessionInitialized ) 3026 if ( mSessionInitialized )
2213 { 3027 {
3028#if USE_OTR // [$PLOTR$]
3029 const LLRelationship* info = NULL;
3030 info = LLAvatarTracker::instance().getBuddyInfo(mOtherParticipantUUID);
3031 ConnContext *context = getOtrContext(1);
3032 if (info && (!info->isOnline()) && context &&
3033 ( (OTRL_MSGSTATE_ENCRYPTED == context->msgstate)
3034 || (OTRL_MSGSTATE_FINISHED == context->msgstate)))
3035 {
3036 // we can't continue this encrypted session but we
3037 // can't let the user accidentally send unencrypted
3038 if (OTRL_MSGSTATE_ENCRYPTED == context->msgstate)
3039 pretendTheyOtrStop();
3040 otrLogMessageGetstringName("otr_err_offline_send");
3041 return; // leave the unsent message in the edit box
3042 }
3043
3044 gcry_error_t err = 0;
3045 char *newmessage = NULL;
3046 char my_uuid[UUID_STR_SIZE];
3047 char their_uuid[UUID_STR_SIZE];
3048 gAgent.getID().toString(&(my_uuid[0]));
3049 mOtherParticipantUUID.toString(&(their_uuid[0]));
3050
3051 bool was_finished = false;
3052 if (gOTR && context && (context->msgstate == OTRL_MSGSTATE_FINISHED))
3053 {
3054 was_finished = true;
3055 }
3056 else if (gOTR && (IM_NOTHING_SPECIAL == mDialog))
3057 {
3058 // only try OTR for 1 on 1 IM's
3059 err = otrl_message_sending(
3060 gOTR->get_userstate(),
3061 gOTR->get_uistate(),
3062 &mSessionUUID,
3063 my_uuid,
3064 gOTR->get_protocolid(),
3065 their_uuid,
3066 &(utf8_text[0]), NULL, &newmessage,
3067 NULL, NULL);
3068 }
3069 context = getOtrContext();
3070 if (err)
3071 {
3072 otrLogMessageGetstring("otr_err_failed_sending");
3073 return; // leave the unsent message in the edit box
3074 }
3075 if (was_finished)
3076 {
3077 llinfos << "$PLOTR$ OTR tried to send into finished conv, not sending message!" << llendl;
3078 //otrLogMessageGetstringName("otr_err_send_in_finished"); //Don't error and tell the user to restart, just restart instead!
3079 doOtrStart();
3080 return; // leave the unsent message in the edit box
3081 }
3082 OtrlMessageType msgtype = OTRL_MSGTYPE_NOTOTR;
3083 if (newmessage) msgtype = otrl_proto_message_type(newmessage);
3084 if (newmessage && (OTRL_MSGTYPE_TAGGEDPLAINTEXT == msgtype))
3085 {
3086 // OTR just added the whitespace tag.
3087 otrl_message_free(newmessage); // don't send the message with whitespace tag
3088 err = otrl_message_sending(
3089 gOTR->get_userstate(),
3090 gOTR->get_uistate(),
3091 &mSessionUUID,
3092 my_uuid,
3093 gOTR->get_protocolid(),
3094 their_uuid,
3095 "typing", NULL, &newmessage,
3096 NULL, NULL);
3097 if (!newmessage)
3098 {
3099 llwarns << "$PLOTR$ shouldn't happen, OTR should keep adding whitespace tags till we get a reply from them." << llendl;
3100 }
3101 else
3102 {
3103 // deliver a whitespace tagged "typing" in a IM_TYPING_STOP packet
3104 std::string my_name;
3105 gAgent.buildFullname(my_name);
3106 const LLRelationship* info = NULL;
3107 info = LLAvatarTracker::instance().getBuddyInfo(mOtherParticipantUUID);
3108 U8 offline = (!info || info->isOnline()) ? IM_ONLINE : IM_OFFLINE;
3109 pack_instant_message(
3110 gMessageSystem,
3111 gAgent.getID(),
3112 FALSE,
3113 gAgent.getSessionID(),
3114 mOtherParticipantUUID,
3115 my_name,
3116 newmessage,
3117 offline,
3118 IM_TYPING_STOP,
3119 mSessionUUID);
3120 gAgent.sendReliableMessage();
3121 otrl_message_free(newmessage);
3122 newmessage = NULL;
3123 }
3124 }
3125 if (newmessage)
3126 {
3127 // OTR encrypted the message
3128 if (! context)
3129 {
3130 llwarns << "$PLOTR$ can't find context, not sending message." << llendl;
3131 otrLogMessageGetstring("otr_err_failed_sending");
3132 return; // leave the unsent message in the edit box
3133 }
3134
3135 {
3136 // Handle fragmentation of the message
3137 char *extrafragment = NULL;
3138 err = otrl_message_fragment_and_send(
3139 gOTR->get_uistate(),
3140 &mSessionUUID,
3141 context,
3142 newmessage,
3143 OTRL_FRAGMENT_SEND_ALL,
3144 &extrafragment);
3145 }
3146 if (newmessage) otrl_message_free(newmessage);
3147 showOtrStatus();
3148 }
3149 else
3150 { // OTR didn't encrypt, or we didn't try cause it's not 1:1 IM
3151#endif // USE_OTR // [/$PLOTR$]
2214 deliver_message(utf8_text, 3152 deliver_message(utf8_text,
2215 mSessionUUID, 3153 mSessionUUID,
2216 mOtherParticipantUUID, 3154 mOtherParticipantUUID,
2217 mDialog); 3155 mDialog);
2218 3156#if USE_OTR // [$PLOTR$]
3157 }
3158#endif // USE_OTR // [/$PLOTR$]
2219 // local echo 3159 // local echo
2220 if((mDialog == IM_NOTHING_SPECIAL) && 3160 if((mDialog == IM_NOTHING_SPECIAL) &&
2221 (mOtherParticipantUUID.notNull())) 3161 (mOtherParticipantUUID.notNull()))
@@ -2242,16 +3182,31 @@ void LLFloaterIMPanel::sendMsg()
2242 std::string prefix = utf8_text.substr(0, 4); 3182 std::string prefix = utf8_text.substr(0, 4);
2243 if (prefix == "/me " || prefix == "/me'") 3183 if (prefix == "/me " || prefix == "/me'")
2244 { 3184 {
3185#if USE_OTR // [$PLOTR$]
3186 if (isEncrypted())
3187 utf8_text.replace(0,3,"\xe2\x80\xa7");
3188 else
3189#endif // USE_OTR // [/$PLOTR$]
2245 utf8_text.replace(0,3,""); 3190 utf8_text.replace(0,3,"");
2246 } 3191 }
2247 else 3192 else
2248 { 3193 {
3194#if USE_OTR // [$PLOTR$]
3195 if (isEncrypted())
3196 history_echo += "\xe2\x80\xa7: ";
3197 else
3198#endif // USE_OTR // [/$PLOTR$]
2249 history_echo += ": "; 3199 history_echo += ": ";
2250 } 3200 }
2251 history_echo += utf8_text; 3201 history_echo += utf8_text;
2252 3202
2253 BOOL other_was_typing = mOtherTyping; 3203 BOOL other_was_typing = mOtherTyping;
2254 3204
3205#if USE_OTR // [$PLOTR$]
3206 if (isEncrypted())
3207 addHistoryLine(history_echo, gSavedSettings.getColor("IMEncryptedChatColor"), true, gAgent.getID());
3208 else
3209#endif // USE_OTR // [/$PLOTR$]
2255 addHistoryLine(history_echo, gSavedSettings.getColor("IMChatColor"), true, gAgent.getID()); 3210 addHistoryLine(history_echo, gSavedSettings.getColor("IMChatColor"), true, gAgent.getID());
2256 3211
2257 if (other_was_typing) 3212 if (other_was_typing)
@@ -2482,7 +3437,27 @@ void LLFloaterIMPanel::chatFromLogFile(LLLogChat::ELogLineType type, std::string
2482 //self->addHistoryLine(line, LLColor4::grey, FALSE); 3437 //self->addHistoryLine(line, LLColor4::grey, FALSE);
2483 self->mHistoryEditor->appendColoredText(message, false, true, LLColor4::grey); 3438 self->mHistoryEditor->appendColoredText(message, false, true, LLColor4::grey);
2484} 3439}
2485 3440#if 0
3441// user is known to be offline when we receive this
3442void LLFloaterIMPanel::setOffline()
3443{
3444 if(!gAgent.isGodlike())
3445 {
3446 childSetEnabled("profile_tele_btn", false);
3447 }
3448#if USE_OTR // [$PLOTR$]
3449 llinfos << "$PLOTR$ friend went offline" << llendl;
3450 if (gOTR)
3451 {
3452 ConnContext *context = getOtrContext();
3453 if (context && (context->msgstate == OTRL_MSGSTATE_ENCRYPTED))
3454 {
3455 pretendTheyOtrStop();
3456 }
3457 }
3458#endif // USE_OTR // [/$PLOTR$]
3459}
3460#endif // 0
2486void LLFloaterIMPanel::showSessionStartError( 3461void LLFloaterIMPanel::showSessionStartError(
2487 const std::string& error_string) 3462 const std::string& error_string)
2488{ 3463{
@@ -2568,3 +3543,14 @@ bool LLFloaterIMPanel::onConfirmForceCloseError(const LLSD& notification, const
2568} 3543}
2569 3544
2570 3545
3546#if USE_OTR // [$PLOTR$]
3547bool LLFloaterIMPanel::isEncrypted()
3548{
3549 if (gOTR)
3550 {
3551 ConnContext *context = getOtrContext();
3552 if (context && (context->msgstate == OTRL_MSGSTATE_ENCRYPTED)) return true;
3553 }
3554 return false;
3555}
3556#endif // USE_OTR // [/$PLOTR$]
diff --git a/linden/indra/newview/llimpanel.h b/linden/indra/newview/llimpanel.h
index b5a0165..cb77c24 100644
--- a/linden/indra/newview/llimpanel.h
+++ b/linden/indra/newview/llimpanel.h
@@ -42,6 +42,12 @@
42#include "llvoiceclient.h" 42#include "llvoiceclient.h"
43#include "llstyle.h" 43#include "llstyle.h"
44 44
45#if USE_OTR // [$PLOTR$]
46# include "otr_wrapper.h"
47class OtrFloaterSmpDialog;
48class OtrFloaterSmpProgress;
49#endif // USE_OTR // [/$PLOTR$]
50
45class LLLineEditor; 51class LLLineEditor;
46class LLViewerTextEditor; 52class LLViewerTextEditor;
47class LLInventoryItem; 53class LLInventoryItem;
@@ -175,6 +181,22 @@ private:
175 BOOL mReceivedCall; 181 BOOL mReceivedCall;
176}; 182};
177 183
184#if USE_OTR // [$PLOTR$]
185extern void otr_authenticate_key(LLUUID session_id, const char *trust);
186extern void otr_log_message_getstring_name(LLUUID session_id, const char *message_name);
187extern void otr_log_message_getstring(LLUUID session_id, const char *message_name);
188extern void otr_log_message(LLUUID session_id, const char *message);
189extern void otr_show_status(LLUUID session_id);
190extern void otr_deliver_message(const std::string& utf8_text,
191 const LLUUID& im_session_id,
192 const LLUUID& other_participant_id,
193 EInstantMessage dialog);
194extern void deliver_message(const std::string& utf8_text,
195 const LLUUID& im_session_id,
196 const LLUUID& other_participant_id,
197 EInstantMessage dialog);
198#endif // USE_OTR // [/$PLOTR$]
199
178class LLFloaterIMPanel : public LLFloater 200class LLFloaterIMPanel : public LLFloater
179{ 201{
180public: 202public:
@@ -299,7 +321,44 @@ private:
299 void removeTypingIndicator(const LLIMInfo* im_info); 321 void removeTypingIndicator(const LLIMInfo* im_info);
300 322
301 void sendTypingState(BOOL typing); 323 void sendTypingState(BOOL typing);
302 324
325#if USE_OTR // [$PLOTR$]
326public:
327 static void onClickOtr(LLUICtrl* source, void* userdata);
328 void doOtrMenu();
329 void showOtrStatus();
330 void otrLogMessage(std::string message);
331 void otrLogMessageGetstring(const char *message_name);
332 void otrLogMessageGetstringName(const char *message_name);
333 bool otherIsOtrAuthenticated();
334 void otrAuthenticateKey(const char *trust);
335 void doOtrStart();
336 void doOtrStop(bool pretend_they_did=false);
337 void pretendTheyOtrStop();
338 ConnContext *getOtrContext(int add_if_not = 0, int *context_added = NULL);
339 void startSmpProgress(LLUUID session_id, LLUUID other_id,
340 std::string a_question, std::string a_secret_answer,
341 bool is_reply = false);
342 void startSmpProgress(LLUUID session_id, LLUUID other_id,
343 std::string a_secret,
344 bool is_reply = false);
345 void endSmpProgress();
346 void endSmpDialog();
347 void handleOtrTlvs(OtrlTLV *tlvs);
348private:
349 void startSmpDialog(LLUUID session_id, LLUUID other_id,
350 std::string my_fingerprint, std::string other_fingerprint);
351 void startSmpDialogQA(LLUUID session_id, LLUUID other_id,
352 std::string question, OtrlTLV *tlv);
353 void startSmpDialogSS(LLUUID session_id, LLUUID other_id,
354 OtrlTLV *tlv);
355 void doOtrAuth();
356 OtrlMessageState mOtrLastStatus;
357 OtrFloaterSmpDialog *mOtrSmpDialog;
358 OtrFloaterSmpProgress *mOtrSmpProgress;
359 bool isEncrypted();
360#endif // USE_OTR // [/$PLOTR$]
361
303private: 362private:
304 LLLineEditor* mInputEditor; 363 LLLineEditor* mInputEditor;
305 LLViewerTextEditor* mHistoryEditor; 364 LLViewerTextEditor* mHistoryEditor;
diff --git a/linden/indra/newview/llimview.cpp b/linden/indra/newview/llimview.cpp
index 02f6a82..cba442b 100644
--- a/linden/indra/newview/llimview.cpp
+++ b/linden/indra/newview/llimview.cpp
@@ -580,7 +580,7 @@ void LLIMMgr::addMessage(
580 // don't process muted IMs 580 // don't process muted IMs
581 if (LLMuteList::getInstance()->isMuted( 581 if (LLMuteList::getInstance()->isMuted(
582 other_participant_id, 582 other_participant_id,
583 LLMute::flagTextChat) && !LLMuteList::getInstance()->isLinden(from)) 583 LLMute::flagTextChat) && !LLMuteList::getInstance()->isGod(from))
584 { 584 {
585 return; 585 return;
586 } 586 }
@@ -681,6 +681,10 @@ void LLIMMgr::addMessage(
681 LLColor4 color; 681 LLColor4 color;
682 if (is_from_system) 682 if (is_from_system)
683 color = gSavedSettings.getColor4("SystemChatColor"); 683 color = gSavedSettings.getColor4("SystemChatColor");
684 else if ((msg.substr(0, 3) == "\xe2\x80\xa7"))
685 {
686 color = gSavedSettings.getColor("IMEncryptedChatColor");
687 }
684 else 688 else
685 { 689 {
686 std::string new_line = std::string(msg); 690 std::string new_line = std::string(msg);
@@ -1363,7 +1367,7 @@ void LLIMMgr::saveIgnoreGroup()
1363{ 1367{
1364 // llinfos << "saving ignore_groups.xml" << llendl; 1368 // llinfos << "saving ignore_groups.xml" << llendl;
1365 1369
1366 std::string user_dir = gDirUtilp->getLindenUserDir(true); 1370 std::string user_dir = gDirUtilp->getViewerUserDir(true);
1367 if (!user_dir.empty()) 1371 if (!user_dir.empty())
1368 { 1372 {
1369 std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "ignore_groups.xml"); 1373 std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "ignore_groups.xml");
@@ -1655,7 +1659,7 @@ public:
1655 name, 1659 name,
1656 LLMute::flagTextChat); 1660 LLMute::flagTextChat);
1657 1661
1658 BOOL is_linden = LLMuteList::getInstance()->isLinden(name); 1662 BOOL is_god = LLMuteList::getInstance()->isGod(name);
1659 std::string separator_string(": "); 1663 std::string separator_string(": ");
1660 int message_offset=0; 1664 int message_offset=0;
1661 1665
@@ -1667,11 +1671,11 @@ public:
1667 message_offset = 3; 1671 message_offset = 3;
1668 } 1672 }
1669 1673
1670 chat.mMuted = is_muted && !is_linden; 1674 chat.mMuted = is_muted && !is_god;
1671 chat.mFromID = from_id; 1675 chat.mFromID = from_id;
1672 chat.mFromName = name; 1676 chat.mFromName = name;
1673 1677
1674 if (!is_linden && (is_busy || is_muted)) 1678 if (!is_god && (is_busy || is_muted))
1675 { 1679 {
1676 return; 1680 return;
1677 } 1681 }
diff --git a/linden/indra/newview/llimview.h b/linden/indra/newview/llimview.h
index 2539203..112d578 100644
--- a/linden/indra/newview/llimview.h
+++ b/linden/indra/newview/llimview.h
@@ -198,7 +198,7 @@ private:
198 198
199 // This simple method just iterates through all of the ids, and 199 // This simple method just iterates through all of the ids, and
200 // prints a simple message if they are not online. Used to help 200 // prints a simple message if they are not online. Used to help
201 // reduce 'hello' messages to the linden employees unlucky enough 201 // reduce 'hello' messages to the grid employees unlucky enough
202 // to have their calling card in the default inventory. 202 // to have their calling card in the default inventory.
203 void noteOfflineUsers(LLFloaterIMPanel* panel, const LLDynamicArray<LLUUID>& ids); 203 void noteOfflineUsers(LLFloaterIMPanel* panel, const LLDynamicArray<LLUUID>& ids);
204 void noteMutedUsers(LLFloaterIMPanel* panel, const LLDynamicArray<LLUUID>& ids); 204 void noteMutedUsers(LLFloaterIMPanel* panel, const LLDynamicArray<LLUUID>& ids);
diff --git a/linden/indra/newview/llmanipscale.cpp b/linden/indra/newview/llmanipscale.cpp
index 593f765..f69dca4 100644
--- a/linden/indra/newview/llmanipscale.cpp
+++ b/linden/indra/newview/llmanipscale.cpp
@@ -641,7 +641,7 @@ void LLManipScale::renderFaces( const LLBBox& bbox )
641 (orientWRTHead.mV[1] < 0.0f ? 2 : 0) + 641 (orientWRTHead.mV[1] < 0.0f ? 2 : 0) +
642 (orientWRTHead.mV[2] < 0.0f ? 4 : 0); 642 (orientWRTHead.mV[2] < 0.0f ? 4 : 0);
643 643
644 // opposite faces on Linden cubes: 644 // opposite faces on cubes:
645 // 0 & 5 645 // 0 & 5
646 // 1 & 3 646 // 1 & 3
647 // 2 & 4 647 // 2 & 4
diff --git a/linden/indra/newview/llmaniptranslate.cpp b/linden/indra/newview/llmaniptranslate.cpp
index 4816eac..b79c1a9 100644
--- a/linden/indra/newview/llmaniptranslate.cpp
+++ b/linden/indra/newview/llmaniptranslate.cpp
@@ -2093,7 +2093,7 @@ void LLManipTranslate::renderTranslationHandles()
2093 (orientWRTHead.mV[1] < 0.0f ? 2 : 0) + 2093 (orientWRTHead.mV[1] < 0.0f ? 2 : 0) +
2094 (orientWRTHead.mV[2] < 0.0f ? 4 : 0); 2094 (orientWRTHead.mV[2] < 0.0f ? 4 : 0);
2095 2095
2096 // opposite faces on Linden cubes: 2096 // opposite faces on cubes:
2097 // 0 & 5 2097 // 0 & 5
2098 // 1 & 3 2098 // 1 & 3
2099 // 2 & 4 2099 // 2 & 4
diff --git a/linden/indra/newview/llmediactrl.cpp b/linden/indra/newview/llmediactrl.cpp
index 8b10fa3..23cad3c 100644
--- a/linden/indra/newview/llmediactrl.cpp
+++ b/linden/indra/newview/llmediactrl.cpp
@@ -50,7 +50,7 @@
50#include "llrender.h" 50#include "llrender.h"
51#include "llpluginclassmedia.h" 51#include "llpluginclassmedia.h"
52 52
53// linden library includes 53// viewer library includes
54#include "llfocusmgr.h" 54#include "llfocusmgr.h"
55 55
56extern BOOL gRestoreGL; 56extern BOOL gRestoreGL;
@@ -890,7 +890,7 @@ void LLMediaCtrl::onClickLinkHref( LLPluginClassMedia* self )
890// const bool open_links_externally = false; 890// const bool open_links_externally = false;
891// LLFloaterHtml::getInstance()->show( 891// LLFloaterHtml::getInstance()->show(
892// event_in.mStringPayload, 892// event_in.mStringPayload,
893// "Second Life Browser", 893// "Viewer Browser",
894// open_links_externally, 894// open_links_externally,
895// mTrusted); 895// mTrusted);
896 896
diff --git a/linden/indra/newview/llmutelist.cpp b/linden/indra/newview/llmutelist.cpp
index fff5558..022bf36 100644
--- a/linden/indra/newview/llmutelist.cpp
+++ b/linden/indra/newview/llmutelist.cpp
@@ -233,7 +233,7 @@ LLMuteList::LLMuteList() :
233 233
234void LLMuteList::loadUserVolumes() 234void LLMuteList::loadUserVolumes()
235{ 235{
236 // call once, after LLDir::setLindenUserDir() has been called 236 // call once, after LLDir::setViewerUserDir() has been called
237 if (mUserVolumesLoaded) 237 if (mUserVolumesLoaded)
238 return; 238 return;
239 mUserVolumesLoaded = TRUE; 239 mUserVolumesLoaded = TRUE;
@@ -264,8 +264,8 @@ LLMuteList::~LLMuteList()
264{ 264{
265 // If we quit from the login screen we will not have an SL account 265 // If we quit from the login screen we will not have an SL account
266 // name. Don't try to save, otherwise we'll dump a file in 266 // name. Don't try to save, otherwise we'll dump a file in
267 // C:\Program Files\SecondLife\ JC 267 // the install directory. JC
268 std::string user_dir = gDirUtilp->getLindenUserDir(true); 268 std::string user_dir = gDirUtilp->getViewerUserDir(true);
269 if (!user_dir.empty()) 269 if (!user_dir.empty())
270 { 270 {
271 std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "volume_settings.xml"); 271 std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_PER_SL_ACCOUNT, "volume_settings.xml");
@@ -282,19 +282,11 @@ LLMuteList::~LLMuteList()
282 } 282 }
283} 283}
284 284
285BOOL LLMuteList::isLinden(const std::string& name) const 285BOOL LLMuteList::isGod(const std::string& name) const
286{ 286{
287 typedef boost::tokenizer<boost::char_separator<char> > tokenizer; 287 // Basing god status on the last name is bound to break in random grids.
288 boost::char_separator<char> sep(" "); 288 // Track down users of this and see if we can get their user level instead.
289 tokenizer tokens(name, sep); 289 return FALSE;
290 tokenizer::iterator token_iter = tokens.begin();
291
292 if (token_iter == tokens.end()) return FALSE;
293 token_iter++;
294 if (token_iter == tokens.end()) return FALSE;
295
296 std::string last_name = *token_iter;
297 return last_name == "Linden";
298} 290}
299 291
300 292
@@ -339,9 +331,9 @@ bool LLMuteList::addMuteCallback(const LLSD& notification, const LLSD& response,
339 331
340BOOL LLMuteList::add(const LLMute& mute, U32 flags) 332BOOL LLMuteList::add(const LLMute& mute, U32 flags)
341{ 333{
342 // Can't mute text from Lindens 334 // Can't mute text from gods
343 if ((mute.mType == LLMute::AGENT) 335 if ((mute.mType == LLMute::AGENT)
344 && isLinden(mute.mName) && (flags & LLMute::flagTextChat || flags == 0)) 336 && isGod(mute.mName) && (flags & LLMute::flagTextChat || flags == 0))
345 { 337 {
346 LLNotifications::instance().add("MuteLinden"); 338 LLNotifications::instance().add("MuteLinden");
347 return FALSE; 339 return FALSE;
diff --git a/linden/indra/newview/llmutelist.h b/linden/indra/newview/llmutelist.h
index 03a548f..fd8f463 100644
--- a/linden/indra/newview/llmutelist.h
+++ b/linden/indra/newview/llmutelist.h
@@ -120,7 +120,7 @@ public:
120 // Alternate (convenience) form for places we don't need to pass the name, but do need flags 120 // Alternate (convenience) form for places we don't need to pass the name, but do need flags
121 BOOL isMuted(const LLUUID& id, U32 flags) const { return isMuted(id, LLStringUtil::null, flags); }; 121 BOOL isMuted(const LLUUID& id, U32 flags) const { return isMuted(id, LLStringUtil::null, flags); };
122 122
123 BOOL isLinden(const std::string& name) const; 123 BOOL isGod(const std::string& name) const;
124 124
125 BOOL isLoaded() const { return mIsLoaded; } 125 BOOL isLoaded() const { return mIsLoaded; }
126 126
diff --git a/linden/indra/newview/llpanelLCD.cpp b/linden/indra/newview/llpanelLCD.cpp
index ba7efba..14e91d4 100644
--- a/linden/indra/newview/llpanelLCD.cpp
+++ b/linden/indra/newview/llpanelLCD.cpp
@@ -34,7 +34,7 @@
34 34
35#include "llpanelLCD.h" 35#include "llpanelLCD.h"
36 36
37// linden library includes 37// viewer library includes
38#include "llerror.h" 38#include "llerror.h"
39#include "llrect.h" 39#include "llrect.h"
40#include "llfontgl.h" 40#include "llfontgl.h"
diff --git a/linden/indra/newview/llpanelaudioprefs.cpp b/linden/indra/newview/llpanelaudioprefs.cpp
index 25e5043..e1ffe0d 100644
--- a/linden/indra/newview/llpanelaudioprefs.cpp
+++ b/linden/indra/newview/llpanelaudioprefs.cpp
@@ -35,7 +35,7 @@
35// file include 35// file include
36#include "llpanelaudioprefs.h" 36#include "llpanelaudioprefs.h"
37 37
38// linden library includes 38// viewer library includes
39#include "llerror.h" 39#include "llerror.h"
40#include "llrect.h" 40#include "llrect.h"
41#include "llstring.h" 41#include "llstring.h"
diff --git a/linden/indra/newview/llpanelavatar.cpp b/linden/indra/newview/llpanelavatar.cpp
index f249d2a..23941a4 100644
--- a/linden/indra/newview/llpanelavatar.cpp
+++ b/linden/indra/newview/llpanelavatar.cpp
@@ -1919,7 +1919,7 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
1919 { 1919 {
1920 LLStringUtil::format_map_t args; 1920 LLStringUtil::format_map_t args;
1921 caption_text = self->mPanelSecondLife->getString("CaptionTextAcctInfo"); 1921 caption_text = self->mPanelSecondLife->getString("CaptionTextAcctInfo");
1922 1922
1923 const char* ACCT_TYPE[] = { 1923 const char* ACCT_TYPE[] = {
1924 "AcctTypeResident", 1924 "AcctTypeResident",
1925 "AcctTypeTrial", 1925 "AcctTypeTrial",
@@ -1930,8 +1930,8 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
1930 args["[ACCTTYPE]"] = self->mPanelSecondLife->getString(ACCT_TYPE[caption_index]); 1930 args["[ACCTTYPE]"] = self->mPanelSecondLife->getString(ACCT_TYPE[caption_index]);
1931 1931
1932 std::string payment_text = " "; 1932 std::string payment_text = " ";
1933 const S32 DEFAULT_CAPTION_LINDEN_INDEX = 3; 1933 const S32 DEFAULT_CAPTION_STAFF_INDEX = 3;
1934 if(caption_index != DEFAULT_CAPTION_LINDEN_INDEX) 1934 if(caption_index != DEFAULT_CAPTION_STAFF_INDEX)
1935 { 1935 {
1936 if(transacted) 1936 if(transacted)
1937 { 1937 {
@@ -1947,14 +1947,12 @@ void LLPanelAvatar::processAvatarPropertiesReply(LLMessageSystem *msg, void**)
1947 } 1947 }
1948 args["[PAYMENTINFO]"] = self->mPanelSecondLife->getString(payment_text); 1948 args["[PAYMENTINFO]"] = self->mPanelSecondLife->getString(payment_text);
1949 std::string age_text = age_verified ? "AgeVerified" : "NotAgeVerified"; 1949 std::string age_text = age_verified ? "AgeVerified" : "NotAgeVerified";
1950 // Do not display age verification status at this time 1950 args["[AGEVERIFICATION]"] = self->mPanelSecondLife->getString(age_text);
1951 //args["[[AGEVERIFICATION]]"] = self->mPanelSecondLife->getString(age_text);
1952 args["[AGEVERIFICATION]"] = " ";
1953 } 1951 }
1954 else 1952 else
1955 { 1953 {
1956 args["[PAYMENTINFO]"] = " "; 1954 args["[PAYMENTINFO]"] = "Payment info not needed";
1957 args["[AGEVERIFICATION]"] = " "; 1955 args["[AGEVERIFICATION]"] = "Gods see everything";
1958 } 1956 }
1959 LLStringUtil::format(caption_text, args); 1957 LLStringUtil::format(caption_text, args);
1960 } 1958 }
diff --git a/linden/indra/newview/llpanelcontents.cpp b/linden/indra/newview/llpanelcontents.cpp
index c5df81c..7137c23 100644
--- a/linden/indra/newview/llpanelcontents.cpp
+++ b/linden/indra/newview/llpanelcontents.cpp
@@ -35,7 +35,7 @@
35// file include 35// file include
36#include "llpanelcontents.h" 36#include "llpanelcontents.h"
37 37
38// linden library includes 38// viewer library includes
39#include "llerror.h" 39#include "llerror.h"
40#include "llrect.h" 40#include "llrect.h"
41#include "llstring.h" 41#include "llstring.h"
diff --git a/linden/indra/newview/llpaneldebug.cpp b/linden/indra/newview/llpaneldebug.cpp
index 745daf5..503a227 100644
--- a/linden/indra/newview/llpaneldebug.cpp
+++ b/linden/indra/newview/llpaneldebug.cpp
@@ -35,7 +35,7 @@
35// file include 35// file include
36#include "llpaneldebug.h" 36#include "llpaneldebug.h"
37 37
38// linden library includes 38// viewer library includes
39#include "llerror.h" 39#include "llerror.h"
40#include "llrect.h" 40#include "llrect.h"
41#include "llstring.h" 41#include "llstring.h"
diff --git a/linden/indra/newview/llpaneldirbrowser.cpp b/linden/indra/newview/llpaneldirbrowser.cpp
index 171dfbd..6abbc81 100644
--- a/linden/indra/newview/llpaneldirbrowser.cpp
+++ b/linden/indra/newview/llpaneldirbrowser.cpp
@@ -38,7 +38,7 @@
38 38
39#include "llpaneldirbrowser.h" 39#include "llpaneldirbrowser.h"
40 40
41// linden library includes 41// viewer library includes
42#include "lldir.h" 42#include "lldir.h"
43#include "lleventflags.h" 43#include "lleventflags.h"
44#include "llfontgl.h" 44#include "llfontgl.h"
diff --git a/linden/indra/newview/llpaneldirclassified.cpp b/linden/indra/newview/llpaneldirclassified.cpp
index 6703ec3..bcbf2a7 100644
--- a/linden/indra/newview/llpaneldirclassified.cpp
+++ b/linden/indra/newview/llpaneldirclassified.cpp
@@ -38,7 +38,7 @@
38 38
39#include "llclassifiedflags.h" 39#include "llclassifiedflags.h"
40 40
41// linden library includes 41// viewer library includes
42#include "llfontgl.h" 42#include "llfontgl.h"
43#include "message.h" 43#include "message.h"
44#include "llqueryflags.h" 44#include "llqueryflags.h"
diff --git a/linden/indra/newview/llpaneldirevents.cpp b/linden/indra/newview/llpaneldirevents.cpp
index 34fee38..be74a95 100644
--- a/linden/indra/newview/llpaneldirevents.cpp
+++ b/linden/indra/newview/llpaneldirevents.cpp
@@ -36,7 +36,7 @@
36 36
37#include <sstream> 37#include <sstream>
38 38
39// linden library includes 39// viewer library includes
40#include "llenum.h" 40#include "llenum.h"
41#include "message.h" 41#include "message.h"
42#include "llqueryflags.h" 42#include "llqueryflags.h"
diff --git a/linden/indra/newview/llpaneldirfind.cpp b/linden/indra/newview/llpaneldirfind.cpp
index 9fdaf2e..46f8979 100644
--- a/linden/indra/newview/llpaneldirfind.cpp
+++ b/linden/indra/newview/llpaneldirfind.cpp
@@ -34,7 +34,7 @@
34 34
35#include "llpaneldirfind.h" 35#include "llpaneldirfind.h"
36 36
37// linden library includes 37// viewer library includes
38#include "llclassifiedflags.h" 38#include "llclassifiedflags.h"
39#include "llfontgl.h" 39#include "llfontgl.h"
40#include "llparcel.h" 40#include "llparcel.h"
diff --git a/linden/indra/newview/llpaneldirgroups.cpp b/linden/indra/newview/llpaneldirgroups.cpp
index 4119514..4a9947a 100644
--- a/linden/indra/newview/llpaneldirgroups.cpp
+++ b/linden/indra/newview/llpaneldirgroups.cpp
@@ -34,7 +34,7 @@
34 34
35#include "llpaneldirgroups.h" 35#include "llpaneldirgroups.h"
36 36
37// linden library includes 37// viewer library includes
38#include "llagent.h" 38#include "llagent.h"
39//#include "llfontgl.h" 39//#include "llfontgl.h"
40#include "message.h" 40#include "message.h"
diff --git a/linden/indra/newview/llpaneldirland.cpp b/linden/indra/newview/llpaneldirland.cpp
index 3fdf37e..82f5f3e 100644
--- a/linden/indra/newview/llpaneldirland.cpp
+++ b/linden/indra/newview/llpaneldirland.cpp
@@ -34,7 +34,7 @@
34 34
35#include "llpaneldirland.h" 35#include "llpaneldirland.h"
36 36
37// linden library includes 37// viewer library includes
38#include "llfontgl.h" 38#include "llfontgl.h"
39#include "llparcel.h" 39#include "llparcel.h"
40#include "llqueryflags.h" 40#include "llqueryflags.h"
diff --git a/linden/indra/newview/llpaneldirpeople.cpp b/linden/indra/newview/llpaneldirpeople.cpp
index 053cad5..ae027d6 100644
--- a/linden/indra/newview/llpaneldirpeople.cpp
+++ b/linden/indra/newview/llpaneldirpeople.cpp
@@ -35,7 +35,7 @@
35#include "llpaneldirpeople.h" 35#include "llpaneldirpeople.h"
36#include "llviewerwindow.h" 36#include "llviewerwindow.h"
37 37
38// linden library includes 38// viewer library includes
39#include "message.h" 39#include "message.h"
40 40
41// viewer project includes 41// viewer project includes
diff --git a/linden/indra/newview/llpaneldirplaces.cpp b/linden/indra/newview/llpaneldirplaces.cpp
index ccffc02..33045ee 100644
--- a/linden/indra/newview/llpaneldirplaces.cpp
+++ b/linden/indra/newview/llpaneldirplaces.cpp
@@ -34,7 +34,7 @@
34 34
35#include "llpaneldirplaces.h" 35#include "llpaneldirplaces.h"
36 36
37// linden library includes 37// viewer library includes
38#include "llfontgl.h" 38#include "llfontgl.h"
39#include "message.h" 39#include "message.h"
40#include "lldir.h" 40#include "lldir.h"
diff --git a/linden/indra/newview/llpaneldisplay.cpp b/linden/indra/newview/llpaneldisplay.cpp
index 9ee7dc3..00dc2cd 100644
--- a/linden/indra/newview/llpaneldisplay.cpp
+++ b/linden/indra/newview/llpaneldisplay.cpp
@@ -35,7 +35,7 @@
35// file include 35// file include
36#include "llpaneldisplay.h" 36#include "llpaneldisplay.h"
37 37
38// linden library includes 38// viewer library includes
39#include "llerror.h" 39#include "llerror.h"
40#include "llfontgl.h" 40#include "llfontgl.h"
41#include "llrect.h" 41#include "llrect.h"
diff --git a/linden/indra/newview/llpanellogin.cpp b/linden/indra/newview/llpanellogin.cpp
index 524ecf6..4998662 100644
--- a/linden/indra/newview/llpanellogin.cpp
+++ b/linden/indra/newview/llpanellogin.cpp
@@ -292,6 +292,17 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
292 // make links open in external browser 292 // make links open in external browser
293 web_browser->setOpenInExternalBrowser( true ); 293 web_browser->setOpenInExternalBrowser( true );
294 294
295 // force the size to be correct (XML doesn't seem to be sufficient to do this) (with some padding so the other login screen doesn't show through)
296 LLRect htmlRect = getRect();
297#if USE_VIEWER_AUTH
298 htmlRect.setCenterAndSize( getRect().getCenterX() - 2, getRect().getCenterY(), getRect().getWidth() + 6, getRect().getHeight());
299#else
300 htmlRect.setCenterAndSize( getRect().getCenterX() - 2, getRect().getCenterY() + 40, getRect().getWidth() + 6, getRect().getHeight() - 78 );
301#endif
302 web_browser->setRect( htmlRect );
303 web_browser->reshape( htmlRect.getWidth(), htmlRect.getHeight(), TRUE );
304 reshape( getRect().getWidth(), getRect().getHeight(), 1 );
305
295 // kick off a request to grab the url manually 306 // kick off a request to grab the url manually
296 gResponsePtr = LLIamHereLogin::build( this ); 307 gResponsePtr = LLIamHereLogin::build( this );
297 std::string login_page = gSavedSettings.getString("LoginPage"); 308 std::string login_page = gSavedSettings.getString("LoginPage");
@@ -307,9 +318,7 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
307#endif 318#endif
308 319
309 loadLoginForm(); 320 loadLoginForm();
310 321// loadNewsBar();
311 loadNewsBar();
312
313 LLFirstUse::useLoginScreen(); 322 LLFirstUse::useLoginScreen();
314} 323}
315 324
@@ -376,20 +385,13 @@ void LLPanelLogin::draw()
376 S32 width = getRect().getWidth(); 385 S32 width = getRect().getWidth();
377 S32 height = getRect().getHeight(); 386 S32 height = getRect().getHeight();
378 387
379 S32 news_bar_height = 0;
380 LLMediaCtrl* news_bar = getChild<LLMediaCtrl>("news_bar");
381 if (news_bar)
382 {
383 news_bar_height = news_bar->getRect().getHeight();
384 }
385
386 if ( mHtmlAvailable ) 388 if ( mHtmlAvailable )
387 { 389 {
388#if !USE_VIEWER_AUTH 390#if !USE_VIEWER_AUTH
389 // draw a background box in black 391 // draw a background box in black
390 gl_rect_2d( 0, height - 264 + news_bar_height, width, 264, LLColor4( 0.0f, 0.0f, 0.0f, 1.f ) ); 392 gl_rect_2d( 0, height - 264, width, 264, LLColor4( 0.0f, 0.0f, 0.0f, 1.f ) );
391 // draw the bottom part of the background image - just the blue background to the native client UI 393 // draw the bottom part of the background image - just the blue background to the native client UI
392 mLogoImage->draw(0, -264 + news_bar_height, width + 8, mLogoImage->getHeight()); 394 mLogoImage->draw(0, -264, width + 8, mLogoImage->getHeight());
393#endif 395#endif
394 } 396 }
395 else 397 else
@@ -736,9 +738,20 @@ void LLPanelLogin::refreshLocation( bool force_visible )
736 } 738 }
737 739
738 BOOL show_start = TRUE; 740 BOOL show_start = TRUE;
739 741 BOOL show_grid_manager = TRUE;
742
740 if ( ! force_visible ) 743 if ( ! force_visible )
744 {
741 show_start = gSavedSettings.getBOOL("ShowStartLocation"); 745 show_start = gSavedSettings.getBOOL("ShowStartLocation");
746 }
747 if (gSavedSettings.getBOOL("ForceShowGrid"))
748 {
749 force_visible = true;
750 }
751 if ( force_visible )
752 {
753 show_grid_manager = gSavedSettings.getBOOL("ShowGridManager");
754 }
742 755
743// [RLVa:KB] - Alternate: Snowglobe-1.2.4 | Checked: 2009-07-08 (RLVa-1.0.0e) 756// [RLVa:KB] - Alternate: Snowglobe-1.2.4 | Checked: 2009-07-08 (RLVa-1.0.0e)
744 // TODO-RLVa: figure out some way to make this work with RLV_EXTENSION_STARTLOCATION 757 // TODO-RLVa: figure out some way to make this work with RLV_EXTENSION_STARTLOCATION
@@ -757,7 +770,9 @@ void LLPanelLogin::refreshLocation( bool force_visible )
757 BOOL show_server = gSavedSettings.getBOOL("ForceShowGrid"); 770 BOOL show_server = gSavedSettings.getBOOL("ForceShowGrid");
758 sInstance->childSetVisible("server_combo", show_server); 771 sInstance->childSetVisible("server_combo", show_server);
759#else*/ 772#else*/
760 sInstance->childSetVisible("server_combo", TRUE); 773 sInstance->childSetVisible("server_combo", show_grid_manager);
774 sInstance->childSetVisible("grid_btn", show_grid_manager);
775 sInstance->childSetVisible("grid_text", show_grid_manager);
761//#endif 776//#endif
762 777
763#endif 778#endif
@@ -1312,66 +1327,3 @@ void LLPanelLogin::onServerComboLostFocus(LLFocusableElement* fe, void*)
1312} 1327}
1313*/ 1328*/
1314 1329
1315
1316bool LLPanelLogin::loadNewsBar()
1317{
1318 std::string news_url = gSavedSettings.getString("NewsBarURL");
1319
1320 if (news_url.empty())
1321 {
1322 return false;
1323 }
1324
1325 LLMediaCtrl* news_bar = getChild<LLMediaCtrl>("news_bar");
1326
1327 if (!news_bar)
1328 {
1329 return false;
1330 }
1331
1332 // *HACK: Not sure how else to make LLMediaCtrl respect user's
1333 // preference when opening links with target="_blank". -Jacek
1334 if (gSavedSettings.getBOOL("UseExternalBrowser"))
1335 {
1336 news_bar->setOpenInExternalBrowser( true );
1337 news_bar->setOpenInInternalBrowser( false );
1338 }
1339 else
1340 {
1341 news_bar->setOpenInExternalBrowser( false );
1342 news_bar->setOpenInInternalBrowser( true );
1343 }
1344
1345
1346 std::ostringstream full_url;
1347
1348 full_url << news_url;
1349
1350 // Append a "?" if the URL doesn't already have query params.
1351 if (LLURI(news_url).queryMap().size() == 0)
1352 {
1353 full_url << "?";
1354 }
1355
1356 std::string channel = ViewerInfo::nameWithVariant();
1357 std::string version = ViewerInfo::versionNumbers4();
1358 std::string skin = gSavedSettings.getString("SkinCurrent");
1359
1360 char* curl_channel = curl_escape(channel.c_str(), 0);
1361 char* curl_version = curl_escape(version.c_str(), 0);
1362 char* curl_skin = curl_escape(skin.c_str(), 0);
1363
1364 full_url << "&channel=" << curl_channel;
1365 full_url << "&version=" << curl_version;
1366 full_url << "&skin=" << curl_skin;
1367
1368 curl_free(curl_channel);
1369 curl_free(curl_version);
1370 curl_free(curl_skin);
1371
1372 LL_DEBUGS("NewsBar")<< "news bar setup to navigate to: " << full_url.str() << LL_ENDL;
1373 news_bar->navigateTo( full_url.str() );
1374
1375
1376 return true;
1377}
diff --git a/linden/indra/newview/llpanellogin.h b/linden/indra/newview/llpanellogin.h
index 645999c..4d79750 100644
--- a/linden/indra/newview/llpanellogin.h
+++ b/linden/indra/newview/llpanellogin.h
@@ -87,9 +87,6 @@ public:
87 // inherited from LLViewerMediaObserver 87 // inherited from LLViewerMediaObserver
88 /*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event); 88 /*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event);
89 89
90 /// Load the news bar web page, return true if successful.
91 bool loadNewsBar();
92
93private: 90private:
94 static void onClickConnect(void*); 91 static void onClickConnect(void*);
95 static void onClickGrid(void*); 92 static void onClickGrid(void*);
diff --git a/linden/indra/newview/llpanelnetwork.cpp b/linden/indra/newview/llpanelnetwork.cpp
index 70d88d9..c12f901 100644
--- a/linden/indra/newview/llpanelnetwork.cpp
+++ b/linden/indra/newview/llpanelnetwork.cpp
@@ -306,7 +306,7 @@ void LLPanelNetwork::onClickResetDiskCache(void* user_data)
306 LLPanelNetwork* self = (LLPanelNetwork*)user_data; 306 LLPanelNetwork* self = (LLPanelNetwork*)user_data;
307 if (!gSavedSettings.getString("CacheLocation").empty()) 307 if (!gSavedSettings.getString("CacheLocation").empty())
308 { 308 {
309 gSavedSettings.setString("NewCacheLocation", ""); 309 gSavedSettings.setString("NewCacheLocation", gDirUtilp->getCacheDir(true));
310 LLNotifications::instance().add("CacheWillBeMoved"); 310 LLNotifications::instance().add("CacheWillBeMoved");
311 } 311 }
312 std::string cache_location = gDirUtilp->getCacheDir(true); 312 std::string cache_location = gDirUtilp->getCacheDir(true);
diff --git a/linden/indra/newview/llpanelobject.cpp b/linden/indra/newview/llpanelobject.cpp
index bff365d..5d156f8 100644
--- a/linden/indra/newview/llpanelobject.cpp
+++ b/linden/indra/newview/llpanelobject.cpp
@@ -35,7 +35,7 @@
35// file include 35// file include
36#include "llpanelobject.h" 36#include "llpanelobject.h"
37 37
38// linden library includes 38// viewer library includes
39#include "lleconomy.h" 39#include "lleconomy.h"
40#include "llerror.h" 40#include "llerror.h"
41#include "llfontgl.h" 41#include "llfontgl.h"
diff --git a/linden/indra/newview/llpanelskins.cpp b/linden/indra/newview/llpanelskins.cpp
index 831adc8..5dee018 100644
--- a/linden/indra/newview/llpanelskins.cpp
+++ b/linden/indra/newview/llpanelskins.cpp
@@ -34,7 +34,7 @@
34 34
35#include "llpanelskins.h" 35#include "llpanelskins.h"
36 36
37// linden library includes 37// viewer library includes
38#include "llradiogroup.h" 38#include "llradiogroup.h"
39#include "llbutton.h" 39#include "llbutton.h"
40#include "lluictrlfactory.h" 40#include "lluictrlfactory.h"
@@ -58,10 +58,10 @@ BOOL LLPanelSkins::postBuild()
58 skin_select->setCommitCallback(onSelectSkin); 58 skin_select->setCommitCallback(onSelectSkin);
59 skin_select->setCallbackUserData(this); 59 skin_select->setCallbackUserData(this);
60 60
61 getChild<LLButton>("classic_preview")->setClickedCallback(onClickClassic, this); 61 getChild<LLButton>("pslpurple_preview")->setClickedCallback(onClickSkin0, this);
62 getChild<LLButton>("silver_preview")->setClickedCallback(onClickSilver, this); 62 getChild<LLButton>("gemini_preview")->setClickedCallback(onClickSkin1, this);
63 getChild<LLButton>("dark_preview")->setClickedCallback(onClickDark, this); 63 getChild<LLButton>("dark_preview")->setClickedCallback(onClickSkin2, this);
64 getChild<LLButton>("gemini_preview")->setClickedCallback(onClickGemini, this); 64 getChild<LLButton>("classic_preview")->setClickedCallback(onClickSkin3, this);
65 65
66 refresh(); 66 refresh();
67 return TRUE; 67 return TRUE;
@@ -96,23 +96,23 @@ void LLPanelSkins::onSelectSkin(LLUICtrl* ctrl, void* data)
96} 96}
97 97
98//static 98//static
99void LLPanelSkins::onClickClassic(void* data) 99void LLPanelSkins::onClickSkin0(void* data)
100{ 100{
101 LLPanelSkins* self = (LLPanelSkins*)data; 101 LLPanelSkins* self = (LLPanelSkins*)data;
102 gSavedSettings.setString("SkinCurrent", "default"); 102 gSavedSettings.setString("SkinCurrent", "pslpurple");
103 self->getChild<LLRadioGroup>("skin_selection")->setValue("default"); 103 self->getChild<LLRadioGroup>("skin_selection")->setValue("pslpurple");
104} 104}
105 105
106//static 106//static
107void LLPanelSkins::onClickSilver(void* data) 107void LLPanelSkins::onClickSkin1(void* data)
108{ 108{
109 LLPanelSkins* self = (LLPanelSkins*)data; 109 LLPanelSkins* self = (LLPanelSkins*)data;
110 gSavedSettings.setString("SkinCurrent", "silver"); 110 gSavedSettings.setString("SkinCurrent", "gemini");
111 self->getChild<LLRadioGroup>("skin_selection")->setValue("silver"); 111 self->getChild<LLRadioGroup>("skin_selection")->setValue("gemini");
112} 112}
113 113
114//static 114//static
115void LLPanelSkins::onClickDark(void* data) 115void LLPanelSkins::onClickSkin2(void* data)
116{ 116{
117 LLPanelSkins* self = (LLPanelSkins*)data; 117 LLPanelSkins* self = (LLPanelSkins*)data;
118 gSavedSettings.setString("SkinCurrent", "dark"); 118 gSavedSettings.setString("SkinCurrent", "dark");
@@ -120,9 +120,10 @@ void LLPanelSkins::onClickDark(void* data)
120} 120}
121 121
122//static 122//static
123void LLPanelSkins::onClickGemini(void* data) 123void LLPanelSkins::onClickSkin3(void* data)
124{ 124{
125 LLPanelSkins* self = (LLPanelSkins*)data; 125 LLPanelSkins* self = (LLPanelSkins*)data;
126 gSavedSettings.setString("SkinCurrent", "gemini"); 126 gSavedSettings.setString("SkinCurrent", "default");
127 self->getChild<LLRadioGroup>("skin_selection")->setValue("gemini"); 127 self->getChild<LLRadioGroup>("skin_selection")->setValue("default");
128} 128}
129
diff --git a/linden/indra/newview/llpanelskins.h b/linden/indra/newview/llpanelskins.h
index 8dbd556..f7eca56 100644
--- a/linden/indra/newview/llpanelskins.h
+++ b/linden/indra/newview/llpanelskins.h
@@ -49,10 +49,10 @@ public:
49 49
50private: 50private:
51 static void onSelectSkin(LLUICtrl* ctrl, void* data); 51 static void onSelectSkin(LLUICtrl* ctrl, void* data);
52 static void onClickClassic(void* data); 52 static void onClickSkin0(void* data);
53 static void onClickSilver(void* data); 53 static void onClickSkin1(void* data);
54 static void onClickDark(void* data); 54 static void onClickSkin2(void* data);
55 static void onClickGemini(void* data); 55 static void onClickSkin3(void* data);
56 56
57private: 57private:
58 std::string mSkin; 58 std::string mSkin;
diff --git a/linden/indra/newview/llpanelvolume.cpp b/linden/indra/newview/llpanelvolume.cpp
index e4e30c0..00b80f0 100644
--- a/linden/indra/newview/llpanelvolume.cpp
+++ b/linden/indra/newview/llpanelvolume.cpp
@@ -35,7 +35,7 @@
35// file include 35// file include
36#include "llpanelvolume.h" 36#include "llpanelvolume.h"
37 37
38// linden library includes 38// viewer library includes
39#include "llclickaction.h" 39#include "llclickaction.h"
40#include "lleconomy.h" 40#include "lleconomy.h"
41#include "llerror.h" 41#include "llerror.h"
diff --git a/linden/indra/newview/llprefsadvanced.cpp b/linden/indra/newview/llprefsadvanced.cpp
index 2311896..7cf6f91 100644
--- a/linden/indra/newview/llprefsadvanced.cpp
+++ b/linden/indra/newview/llprefsadvanced.cpp
@@ -73,7 +73,7 @@ BOOL LLPrefsAdvanced::postBuild()
73 static BOOL* sShowClientNameTag = rebind_llcontrol<BOOL>("ShowClientNameTag", &gSavedSettings, true); 73 static BOOL* sShowClientNameTag = rebind_llcontrol<BOOL>("ShowClientNameTag", &gSavedSettings, true);
74 childSetValue("client_name_tag_check", (*sShowClientNameTag)); 74 childSetValue("client_name_tag_check", (*sShowClientNameTag));
75 childSetValue("client_name_hover_check", gSavedSettings.getBOOL("ShowClientNameHoverTip")); 75 childSetValue("client_name_hover_check", gSavedSettings.getBOOL("ShowClientNameHoverTip"));
76 childSetValue("client_colors_check", gSavedSettings.getBOOL("ShowClientColor")); 76// childSetValue("client_colors_check", gSavedSettings.getBOOL("ShowClientColor"));
77 childSetValue("client_name_tag_broadcast_check", gSavedSettings.getBOOL("ShowMyClientTagToOthers")); 77 childSetValue("client_name_tag_broadcast_check", gSavedSettings.getBOOL("ShowMyClientTagToOthers"));
78 78
79 childSetValue("appearance_anim_check", gSavedSettings.getBOOL("AppearanceAnimate")); 79 childSetValue("appearance_anim_check", gSavedSettings.getBOOL("AppearanceAnimate"));
@@ -118,7 +118,7 @@ void LLPrefsAdvanced::apply()
118 gSavedSettings.setBOOL("DisableTeleportScreens", childGetValue("disable_tp_screen_check")); 118 gSavedSettings.setBOOL("DisableTeleportScreens", childGetValue("disable_tp_screen_check"));
119 gSavedSettings.setBOOL("ShowClientNameTag", childGetValue("client_name_tag_check")); 119 gSavedSettings.setBOOL("ShowClientNameTag", childGetValue("client_name_tag_check"));
120 gSavedSettings.setBOOL("ShowClientNameHoverTip", childGetValue("client_name_hover_check")); 120 gSavedSettings.setBOOL("ShowClientNameHoverTip", childGetValue("client_name_hover_check"));
121 gSavedSettings.setBOOL("ShowClientColor", childGetValue("client_colors_check")); 121// gSavedSettings.setBOOL("ShowClientColor", childGetValue("client_colors_check"));
122 122
123 gSavedSettings.setBOOL("AppearanceAnimate", childGetValue("appearance_anim_check")); 123 gSavedSettings.setBOOL("AppearanceAnimate", childGetValue("appearance_anim_check"));
124 gSavedSettings.setBOOL("LanguageIsPublic", childGetValue("language_is_public")); 124 gSavedSettings.setBOOL("LanguageIsPublic", childGetValue("language_is_public"));
diff --git a/linden/indra/newview/llprefscolors.cpp b/linden/indra/newview/llprefscolors.cpp
index 0b4caf5..ea105e7 100644
--- a/linden/indra/newview/llprefscolors.cpp
+++ b/linden/indra/newview/llprefscolors.cpp
@@ -82,10 +82,6 @@ BOOL LLPrefsColors::postBuild()
82 82
83 getChild<LLColorSwatchCtrl>("effect_color_swatch")->set(gSavedSettings.getColor4("EffectColor")); 83 getChild<LLColorSwatchCtrl>("effect_color_swatch")->set(gSavedSettings.getColor4("EffectColor"));
84 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
89 return TRUE; 85 return TRUE;
90} 86}
91 87
@@ -103,7 +99,6 @@ void LLPrefsColors::refreshColors()
103 mFriendsChatColor = gSavedSettings.getColor4("FriendsChatColor"); 99 mFriendsChatColor = gSavedSettings.getColor4("FriendsChatColor");
104 mOwnNameChatColor = gSavedSettings.getColor4("OwnNameChatColor"); 100 mOwnNameChatColor = gSavedSettings.getColor4("OwnNameChatColor");
105 mEffectColor = gSavedSettings.getColor4("EffectColor"); 101 mEffectColor = gSavedSettings.getColor4("EffectColor");
106 mClientTagColor = gSavedSettings.getColor4("ImprudenceTagColor");
107} 102}
108 103
109// static 104// static
@@ -135,17 +130,6 @@ void LLPrefsColors::updateFriendsCheck()
135 getChild<LLColorSwatchCtrl>("FriendsChatColor")->setEnabled(childGetValue("HighlightFriendsChat")); 130 getChild<LLColorSwatchCtrl>("FriendsChatColor")->setEnabled(childGetValue("HighlightFriendsChat"));
136} 131}
137 132
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 133
150void LLPrefsColors::cancel() 134void LLPrefsColors::cancel()
151{ 135{
@@ -161,7 +145,6 @@ void LLPrefsColors::cancel()
161 gSavedSettings.setColor4("FriendsChatColor", mFriendsChatColor); 145 gSavedSettings.setColor4("FriendsChatColor", mFriendsChatColor);
162 gSavedSettings.setColor4("OwnNameChatColor", mOwnNameChatColor); 146 gSavedSettings.setColor4("OwnNameChatColor", mOwnNameChatColor);
163 gSavedSettings.setColor4("EffectColor", mEffectColor); 147 gSavedSettings.setColor4("EffectColor", mEffectColor);
164 gSavedSettings.setColor4("ImprudenceTagColor", mClientTagColor);
165} 148}
166 149
167void LLPrefsColors::apply() 150void LLPrefsColors::apply()
@@ -198,8 +181,5 @@ void LLPrefsColors::apply()
198 181
199 gSavedSettings.setColor4("EffectColor", childGetValue("effect_color_swatch")); 182 gSavedSettings.setColor4("EffectColor", childGetValue("effect_color_swatch"));
200 183
201 gSavedSettings.setBOOL("ShowClientColor", childGetValue("client_name_color_check"));
202 gSavedSettings.setColor4("ImprudenceTagColor", getChild<LLColorSwatchCtrl>("client_tag_color")->get());
203
204 refreshColors(); // member values become the official values and cancel becomes a no-op. 184 refreshColors(); // member values become the official values and cancel becomes a no-op.
205} 185}
diff --git a/linden/indra/newview/llprefsim.cpp b/linden/indra/newview/llprefsim.cpp
index e037ac7..2ee357c 100644
--- a/linden/indra/newview/llprefsim.cpp
+++ b/linden/indra/newview/llprefsim.cpp
@@ -36,6 +36,7 @@
36#include "llprefsim.h" 36#include "llprefsim.h"
37 37
38#include "floaterbusy.h" 38#include "floaterbusy.h"
39#include "floaterotr.h"
39#include "llpanel.h" 40#include "llpanel.h"
40#include "llcheckboxctrl.h" 41#include "llcheckboxctrl.h"
41#include "llstring.h" 42#include "llstring.h"
@@ -73,6 +74,7 @@ public:
73 static void onCommitLogging(LLUICtrl* ctrl, void* user_data); 74 static void onCommitLogging(LLUICtrl* ctrl, void* user_data);
74 75
75 static void onClickBusyAdvanced(void* user_data); 76 static void onClickBusyAdvanced(void* user_data);
77 static void onClickOTRAdvanced(void* user_data);
76 78
77 bool mUpdateUserInfo; 79 bool mUpdateUserInfo;
78 std::string mDirectoryVisibility; 80 std::string mDirectoryVisibility;
@@ -118,6 +120,7 @@ BOOL LLPrefsIMImpl::postBuild()
118 childSetCommitCallback("log_instant_messages",onCommitLogging,this); 120 childSetCommitCallback("log_instant_messages",onCommitLogging,this);
119 121
120 childSetAction("busy_adv_btn", onClickBusyAdvanced, this); 122 childSetAction("busy_adv_btn", onClickBusyAdvanced, this);
123 childSetAction("otr_adv_btn", onClickOTRAdvanced, this);
121 124
122 preparePerAccountPrefs(LLStartUp::isLoggedIn()); 125 preparePerAccountPrefs(LLStartUp::isLoggedIn());
123 126
@@ -308,6 +311,13 @@ void LLPrefsIMImpl::onClickBusyAdvanced(void* user_data)
308} 311}
309 312
310// static 313// static
314void LLPrefsIMImpl::onClickOTRAdvanced(void* user_data)
315{
316 FloaterOTR::getInstance()->open();
317 FloaterOTR::getInstance()->center();
318}
319
320// static
311void LLPrefsIMImpl::onClickLogPath(void* user_data) 321void LLPrefsIMImpl::onClickLogPath(void* user_data)
312{ 322{
313 LLPrefsIMImpl* self=(LLPrefsIMImpl*)user_data; 323 LLPrefsIMImpl* self=(LLPrefsIMImpl*)user_data;
diff --git a/linden/indra/newview/llselectmgr.cpp b/linden/indra/newview/llselectmgr.cpp
index bfe0e9c..3525e54 100644
--- a/linden/indra/newview/llselectmgr.cpp
+++ b/linden/indra/newview/llselectmgr.cpp
@@ -1134,10 +1134,11 @@ void LLSelectMgr::getGrid(LLVector3& origin, LLQuaternion &rotation, LLVector3 &
1134 { 1134 {
1135 // this means this object *has* to be an attachment 1135 // this means this object *has* to be an attachment
1136 LLXform* attachment_point_xform = first_object->getRootEdit()->mDrawable->mXform.getParent(); 1136 LLXform* attachment_point_xform = first_object->getRootEdit()->mDrawable->mXform.getParent();
1137 if (attachment_point_xform) 1137 // But it might be a hair HUD of death. Or maybe a tree? Yes, I know I broke the grammer rules twice in a row, this is source code, English sucks. C++ sucks to, but at least the compiler is not expected to parse comments.
1138 if (attachment_point_xform)
1138 { 1139 {
1139 mGridOrigin = attachment_point_xform->getWorldPosition(); 1140 mGridOrigin = attachment_point_xform->getWorldPosition();
1140 mGridRotation = attachment_point_xform->getWorldRotation(); 1141 mGridRotation = attachment_point_xform->getWorldRotation();
1141 } 1142 }
1142 mGridScale = LLVector3(1.f, 1.f, 1.f) * gSavedSettings.getF32("GridResolution"); 1143 mGridScale = LLVector3(1.f, 1.f, 1.f) * gSavedSettings.getF32("GridResolution");
1143 } 1144 }
diff --git a/linden/indra/newview/llsky.cpp b/linden/indra/newview/llsky.cpp
index ac7e865..a271ec3 100644
--- a/linden/indra/newview/llsky.cpp
+++ b/linden/indra/newview/llsky.cpp
@@ -42,7 +42,7 @@
42 42
43#include "llsky.h" 43#include "llsky.h"
44 44
45// linden library includes 45// viewer library includes
46#include "llerror.h" 46#include "llerror.h"
47#include "llmath.h" 47#include "llmath.h"
48#include "math.h" 48#include "math.h"
diff --git a/linden/indra/newview/llstartup.cpp b/linden/indra/newview/llstartup.cpp
index 2fd96df..12fde5c 100644
--- a/linden/indra/newview/llstartup.cpp
+++ b/linden/indra/newview/llstartup.cpp
@@ -76,6 +76,7 @@
76#include "llstring.h" 76#include "llstring.h"
77#include "lluserrelations.h" 77#include "lluserrelations.h"
78#include "llvfs.h" 78#include "llvfs.h"
79#include "llxorcipher.h" // saved password, MAC address
79#include "message.h" 80#include "message.h"
80#include "v3math.h" 81#include "v3math.h"
81 82
@@ -218,6 +219,10 @@
218#include "hippogridmanager.h" 219#include "hippogridmanager.h"
219#include "hippolimits.h" 220#include "hippolimits.h"
220 221
222#if USE_OTR // [$PLOTR$]
223#include "otr_wrapper.h"
224#endif // USE_OTR // [/$PLOTR$]
225
221#include "lggautocorrect.h" 226#include "lggautocorrect.h"
222// 227//
223// exported globals 228// exported globals
@@ -263,6 +268,7 @@ bool LLStartUp::sLoginFailed = false;
263 268
264void login_show(); 269void login_show();
265void login_callback(S32 option, void* userdata); 270void login_callback(S32 option, void* userdata);
271bool is_hex_string(U8* str, S32 len);
266void show_first_run_dialog(); 272void show_first_run_dialog();
267bool first_run_dialog_callback(const LLSD& notification, const LLSD& response); 273bool first_run_dialog_callback(const LLSD& notification, const LLSD& response);
268void set_startup_status(const F32 frac, const std::string& string, const std::string& msg); 274void set_startup_status(const F32 frac, const std::string& string, const std::string& msg);
@@ -1002,8 +1008,9 @@ bool idle_startup()
1002 gDebugInfo["LoginName"] = firstname + " " + lastname; 1008 gDebugInfo["LoginName"] = firstname + " " + lastname;
1003 1009
1004 // create necessary directories 1010 // create necessary directories
1005 gDirUtilp->setLindenUserDir(gHippoGridManager->getCurrentGridNick(), firstname, lastname); 1011 // *FIX: these mkdir's should error check
1006 LLFile::mkdir(gDirUtilp->getLindenUserDir()); 1012 gDirUtilp->setViewerUserDir(gHippoGridManager->getCurrentGridNick(), firstname, lastname);
1013 LLFile::mkdir(gDirUtilp->getViewerUserDir());
1007 } 1014 }
1008 else 1015 else
1009 { 1016 {
@@ -1284,7 +1291,7 @@ bool idle_startup()
1284 1291
1285 char hashed_mac_string[MD5HEX_STR_SIZE]; /* Flawfinder: ignore */ 1292 char hashed_mac_string[MD5HEX_STR_SIZE]; /* Flawfinder: ignore */
1286 LLMD5 hashed_mac; 1293 LLMD5 hashed_mac;
1287 hashed_mac.update( gMACAddress, MAC_ADDRESS_BYTES ); 1294 hashed_mac.update( (const unsigned char*) "012345", MAC_ADDRESS_BYTES ); // Nope, LL ain't getting our MAC, and meta7 does not need it.
1288 hashed_mac.finalize(); 1295 hashed_mac.finalize();
1289 hashed_mac.hex_digest(hashed_mac_string); 1296 hashed_mac.hex_digest(hashed_mac_string);
1290 1297
@@ -2547,7 +2554,7 @@ bool idle_startup()
2547 } 2554 }
2548 } 2555 }
2549 // Either we want to show tutorial because this is the first login 2556 // Either we want to show tutorial because this is the first login
2550 // to a Linden Help Island or the user quit with the tutorial 2557 // to a grid Help Island or the user quit with the tutorial
2551 // visible. JC 2558 // visible. JC
2552 if (show_hud 2559 if (show_hud
2553 || gSavedSettings.getBOOL("ShowTutorial")) 2560 || gSavedSettings.getBOOL("ShowTutorial"))
@@ -2919,6 +2926,9 @@ bool idle_startup()
2919 } 2926 }
2920 2927
2921 LLFirstUse::ClientTags(); 2928 LLFirstUse::ClientTags();
2929#if USE_OTR // [$PLOTR$]
2930 LLFirstUse::EmeraldOTR();
2931#endif // USE_OTR // [/$PLOTR$]
2922 2932
2923 // Add login location to teleport history 'teleported-into' 2933 // Add login location to teleport history 'teleported-into'
2924 LLVector3 agent_pos=gAgent.getPositionAgent(); 2934 LLVector3 agent_pos=gAgent.getPositionAgent();
@@ -2955,7 +2965,11 @@ bool idle_startup()
2955 { 2965 {
2956 gAgent.requestEnterGodMode(); 2966 gAgent.requestEnterGodMode();
2957 } 2967 }
2958 2968
2969#if USE_OTR // [$PLOTR$]
2970 OTR_Wrapper::init();
2971#endif // USE_OTR // [/$PLOTR$]
2972
2959 // Start automatic replay if the flag is set. 2973 // Start automatic replay if the flag is set.
2960 if (gSavedSettings.getBOOL("StatsAutoRun")) 2974 if (gSavedSettings.getBOOL("StatsAutoRun"))
2961 { 2975 {
@@ -3117,6 +3131,179 @@ void login_callback(S32 option, void *userdata)
3117} 3131}
3118 3132
3119 3133
3134// static
3135std::string LLStartUp::loadPasswordFromDisk()
3136{
3137 // Only load password if we also intend to save it (otherwise the user
3138 // wonders what we're doing behind his back). JC
3139 BOOL remember_password = gSavedSettings.getBOOL("RememberPassword");
3140 if (!remember_password)
3141 {
3142 return std::string("");
3143 }
3144
3145 std::string hashed_password("");
3146
3147 // Look for legacy "marker" password from settings.ini
3148 hashed_password = gSavedSettings.getString("Marker");
3149 if (!hashed_password.empty())
3150 {
3151 // Stomp the Marker entry.
3152 gSavedSettings.setString("Marker", "");
3153
3154 // Return that password.
3155 return hashed_password;
3156 }
3157
3158 // UUID is 16 bytes, written into ASCII is 32 characters
3159 // without trailing \0
3160 const S32 HASHED_LENGTH = 32;
3161
3162 std::string filepath = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,
3163 "password.dat");
3164 LLFILE* fp = LLFile::fopen(filepath, "rb"); /* Flawfinder: ignore */
3165 if (!fp)
3166 {
3167#if LL_DARWIN
3168 UInt32 passwordLength;
3169 char *passwordData;
3170 OSStatus stat = SecKeychainFindGenericPassword(NULL, 10, "meta-impy", 0, NULL, &passwordLength, (void**)&passwordData, NULL);
3171 if (stat == noErr)
3172 {
3173 if (passwordLength == HASHED_LENGTH)
3174 hashed_password.assign(passwordData, HASHED_LENGTH);
3175 SecKeychainItemFreeContent(NULL, passwordData);
3176 }
3177#endif
3178 return hashed_password;
3179 }
3180
3181 U8 buffer[HASHED_LENGTH+1];
3182
3183 if (1 != fread(buffer, HASHED_LENGTH, 1, fp))
3184 {
3185 return hashed_password;
3186 }
3187
3188 fclose(fp);
3189
3190 // Decipher with MAC address
3191 LLXORCipher cipher(gMACAddress, 6); // The one and only legitimate use of the users MAC.
3192 cipher.decrypt(buffer, HASHED_LENGTH);
3193
3194 buffer[HASHED_LENGTH] = '\0';
3195
3196 // Check to see if the mac address generated a bad hashed
3197 // password. It should be a hex-string or else the mac adress has
3198 // changed. This is a security feature to make sure that if you
3199 // get someone's password.dat file, you cannot hack their account.
3200 if(is_hex_string(buffer, HASHED_LENGTH))
3201 {
3202 hashed_password.assign((char*)buffer);
3203 }
3204#if LL_DARWIN
3205 // we're migrating to the keychain
3206 LLFile::remove(filepath);
3207#endif
3208
3209 return hashed_password;
3210}
3211
3212
3213// static
3214void LLStartUp::savePasswordToDisk(const std::string& hashed_password)
3215{
3216#if LL_DARWIN
3217 SecKeychainItemRef keychainItem;
3218 OSStatus status = SecKeychainFindGenericPassword(NULL, 10, "meta-impy", 0, NULL, NULL, NULL, &keychainItem);
3219 if (status == noErr)
3220 {
3221 SecKeychainItemModifyAttributesAndData(keychainItem, NULL, hashed_password.length(), hashed_password.c_str());
3222 CFRelease(keychainItem);
3223 }
3224 else
3225 {
3226 SecKeychainAddGenericPassword(NULL, 10, "meta-impy", 0, NULL, hashed_password.length(), hashed_password.c_str(), NULL);
3227 }
3228#else
3229 std::string filepath = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,
3230 "password.dat");
3231 LLFILE* fp = LLFile::fopen(filepath, "wb"); /* Flawfinder: ignore */
3232 if (!fp)
3233 {
3234 return;
3235 }
3236
3237 // Encipher with MAC address
3238 const S32 HASHED_LENGTH = 32;
3239 U8 buffer[HASHED_LENGTH+1];
3240
3241 LLStringUtil::copy((char*)buffer, hashed_password.c_str(), HASHED_LENGTH+1);
3242
3243 LLXORCipher cipher(gMACAddress, 6); // The one and only legitimate use of the users MAC.
3244 cipher.encrypt(buffer, HASHED_LENGTH);
3245
3246 if (fwrite(buffer, HASHED_LENGTH, 1, fp) != 1)
3247 {
3248 LL_WARNS("AppInit") << "Short write" << LL_ENDL;
3249 }
3250
3251 fclose(fp);
3252#endif
3253}
3254
3255
3256// static
3257void LLStartUp::deletePasswordFromDisk()
3258{
3259#if LL_DARWIN
3260 SecKeychainItemRef keychainItem;
3261 OSStatus status = SecKeychainFindGenericPassword(NULL, 10, "meta-impy", 0, NULL, NULL, NULL, &keychainItem);
3262 if (status == noErr)
3263 {
3264 SecKeychainItemDelete(keychainItem);
3265 CFRelease(keychainItem);
3266 }
3267#endif
3268 std::string filepath = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,
3269 "password.dat");
3270 LLFile::remove(filepath);
3271}
3272
3273bool is_hex_string(U8* str, S32 len)
3274{
3275 bool rv = true;
3276 U8* c = str;
3277 while(rv && len--)
3278 {
3279 switch(*c)
3280 {
3281 case '0':
3282 case '1':
3283 case '2':
3284 case '3':
3285 case '4':
3286 case '5':
3287 case '6':
3288 case '7':
3289 case '8':
3290 case '9':
3291 case 'a':
3292 case 'b':
3293 case 'c':
3294 case 'd':
3295 case 'e':
3296 case 'f':
3297 ++c;
3298 break;
3299 default:
3300 rv = false;
3301 break;
3302 }
3303 }
3304 return rv;
3305}
3306
3120void show_first_run_dialog() 3307void show_first_run_dialog()
3121{ 3308{
3122 LLNotifications::instance().add("FirstRun", LLSD(), LLSD(), first_run_dialog_callback); 3309 LLNotifications::instance().add("FirstRun", LLSD(), LLSD(), first_run_dialog_callback);
@@ -3702,7 +3889,7 @@ void init_start_screen(S32 location_id)
3702 3889
3703 LL_DEBUGS("AppInit") << "Loading startup bitmap..." << LL_ENDL; 3890 LL_DEBUGS("AppInit") << "Loading startup bitmap..." << LL_ENDL;
3704 3891
3705 std::string temp_str = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter(); 3892 std::string temp_str = gDirUtilp->getViewerUserDir() + gDirUtilp->getDirDelimiter();
3706 3893
3707 if ((S32)START_LOCATION_ID_LAST == location_id) 3894 if ((S32)START_LOCATION_ID_LAST == location_id)
3708 { 3895 {
diff --git a/linden/indra/newview/llstartup.h b/linden/indra/newview/llstartup.h
index 5960817..619066c 100644
--- a/linden/indra/newview/llstartup.h
+++ b/linden/indra/newview/llstartup.h
@@ -106,7 +106,16 @@ public:
106 // gender_name is either "male" or "female" 106 // gender_name is either "male" or "female"
107 static void loadInitialOutfit( const std::string& outfit_folder_name, 107 static void loadInitialOutfit( const std::string& outfit_folder_name,
108 const std::string& gender_name ); 108 const std::string& gender_name );
109
110 // Load MD5 of user's password from local disk file.
111 static std::string loadPasswordFromDisk();
112
113 // Record MD5 of user's password for subsequent login.
114 static void savePasswordToDisk(const std::string& hashed_password);
109 115
116 // Delete the saved password local disk file.
117 static void deletePasswordFromDisk();
118
110 static bool dispatchURL(); 119 static bool dispatchURL();
111 // if we have a SLURL or sim string ("Ahern/123/45") that started 120 // if we have a SLURL or sim string ("Ahern/123/45") that started
112 // the viewer, dispatch it 121 // the viewer, dispatch it
diff --git a/linden/indra/newview/lltexturecache.cpp b/linden/indra/newview/lltexturecache.cpp
index 22d9959..d33d507 100644
--- a/linden/indra/newview/lltexturecache.cpp
+++ b/linden/indra/newview/lltexturecache.cpp
@@ -797,6 +797,8 @@ std::string LLTextureCache::getLocalFileName(const LLUUID& id)
797 // Does not include extension 797 // Does not include extension
798 std::string idstr = id.asString(); 798 std::string idstr = id.asString();
799 // TODO: should we be storing cached textures in skin directory? 799 // TODO: should we be storing cached textures in skin directory?
800 //We use LL_PATH_SKINS because the default textures (water normal map etc) are delivered in the SKINS path.
801 //Turns out we can't change this to LL_PATH_CACHE or these important textures will be removed when the user clears their cache.
800 std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_SKINS, "default", "textures", idstr); 802 std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_SKINS, "default", "textures", idstr);
801 return filename; 803 return filename;
802} 804}
diff --git a/linden/indra/newview/lltoolplacer.cpp b/linden/indra/newview/lltoolplacer.cpp
index 80b415c..c8a7891 100644
--- a/linden/indra/newview/lltoolplacer.cpp
+++ b/linden/indra/newview/lltoolplacer.cpp
@@ -35,7 +35,7 @@
35// self header 35// self header
36#include "lltoolplacer.h" 36#include "lltoolplacer.h"
37 37
38// linden library headers 38// viewer library headers
39#include "llprimitive.h" 39#include "llprimitive.h"
40 40
41// viewer headers 41// viewer headers
diff --git a/linden/indra/newview/llurldispatcher.cpp b/linden/indra/newview/llurldispatcher.cpp
index 0d6f6d7..526c682 100644
--- a/linden/indra/newview/llurldispatcher.cpp
+++ b/linden/indra/newview/llurldispatcher.cpp
@@ -55,11 +55,6 @@ const std::string SLURL_SECONDLIFE_PREFIX = "secondlife://";
55const std::string SLURL_SLURL_PREFIX = "http://slurl.com/secondlife/"; 55const std::string SLURL_SLURL_PREFIX = "http://slurl.com/secondlife/";
56const std::string SLURL_SLURL_ALT_PREFIX = "http://maps.secondlife.com/secondlife/"; 56const std::string SLURL_SLURL_ALT_PREFIX = "http://maps.secondlife.com/secondlife/";
57 57
58const std::string IZURL_IZ_HELP_PREFIX = "inworldz://app.";
59const std::string IZURL_IZ_PREFIX = "iz://";
60const std::string IZURL_INWORLDZ_PREFIX = "inworldz://";
61const std::string IZURL_IZURL_PREFIX = "http://places.inworldz.com/";
62
63const std::string SLURL_APP_TOKEN = "app/"; 58const std::string SLURL_APP_TOKEN = "app/";
64 59
65class LLURLDispatcherImpl 60class LLURLDispatcherImpl
@@ -124,10 +119,6 @@ bool LLURLDispatcherImpl::isSLURL(const std::string& url)
124 if (matchPrefix(url, SLURL_SECONDLIFE_PREFIX)) return true; 119 if (matchPrefix(url, SLURL_SECONDLIFE_PREFIX)) return true;
125 if (matchPrefix(url, SLURL_SLURL_PREFIX)) return true; 120 if (matchPrefix(url, SLURL_SLURL_PREFIX)) return true;
126 if (matchPrefix(url, SLURL_SLURL_ALT_PREFIX)) return true; 121 if (matchPrefix(url, SLURL_SLURL_ALT_PREFIX)) return true;
127 if (matchPrefix(url, IZURL_IZ_HELP_PREFIX)) return true;
128 if (matchPrefix(url, IZURL_IZ_PREFIX)) return true;
129 if (matchPrefix(url, IZURL_INWORLDZ_PREFIX)) return true;
130 if (matchPrefix(url, IZURL_IZURL_PREFIX)) return true;
131 return false; 122 return false;
132} 123}
133 124
@@ -137,10 +128,7 @@ bool LLURLDispatcherImpl::isSLURLCommand(const std::string& url)
137 if (matchPrefix(url, SLURL_SL_PREFIX + SLURL_APP_TOKEN) 128 if (matchPrefix(url, SLURL_SL_PREFIX + SLURL_APP_TOKEN)
138 || matchPrefix(url, SLURL_SECONDLIFE_PREFIX + "/" + SLURL_APP_TOKEN) 129 || matchPrefix(url, SLURL_SECONDLIFE_PREFIX + "/" + SLURL_APP_TOKEN)
139 || matchPrefix(url, SLURL_SLURL_PREFIX + SLURL_APP_TOKEN) 130 || matchPrefix(url, SLURL_SLURL_PREFIX + SLURL_APP_TOKEN)
140 || matchPrefix(url, SLURL_SLURL_ALT_PREFIX + SLURL_APP_TOKEN) 131 || matchPrefix(url, SLURL_SLURL_ALT_PREFIX + SLURL_APP_TOKEN))
141 || matchPrefix(url, IZURL_IZ_PREFIX + SLURL_APP_TOKEN)
142 || matchPrefix(url, IZURL_INWORLDZ_PREFIX + "/" + SLURL_APP_TOKEN)
143 || matchPrefix(url, IZURL_IZURL_PREFIX + SLURL_APP_TOKEN))
144 { 132 {
145 return true; 133 return true;
146 } 134 }
@@ -383,22 +371,6 @@ std::string LLURLDispatcherImpl::stripProtocol(const std::string& url)
383 { 371 {
384 stripped.erase(0, SLURL_SLURL_ALT_PREFIX.length()); 372 stripped.erase(0, SLURL_SLURL_ALT_PREFIX.length());
385 } 373 }
386 else if (matchPrefix(stripped, IZURL_IZ_HELP_PREFIX))
387 {
388 stripped.erase(0, IZURL_IZ_HELP_PREFIX.length());
389 }
390 else if (matchPrefix(stripped, IZURL_IZ_PREFIX))
391 {
392 stripped.erase(0, IZURL_IZ_PREFIX.length());
393 }
394 else if (matchPrefix(stripped, IZURL_INWORLDZ_PREFIX))
395 {
396 stripped.erase(0, IZURL_INWORLDZ_PREFIX.length());
397 }
398 else if (matchPrefix(stripped, IZURL_IZURL_PREFIX))
399 {
400 stripped.erase(0, IZURL_IZURL_PREFIX.length());
401 }
402 return stripped; 374 return stripped;
403} 375}
404 376
diff --git a/linden/indra/newview/llurldispatcher.h b/linden/indra/newview/llurldispatcher.h
index cfdc2db..8a08127 100644
--- a/linden/indra/newview/llurldispatcher.h
+++ b/linden/indra/newview/llurldispatcher.h
@@ -57,7 +57,7 @@ public:
57 // Pointer to LLMediaCtrl sending URL, can be NULL 57 // Pointer to LLMediaCtrl sending URL, can be NULL
58 // @param trusted_browser 58 // @param trusted_browser
59 // True if coming inside the app AND from a brower instance 59 // True if coming inside the app AND from a brower instance
60 // that navigates to trusted (Linden Lab) pages. 60 // that navigates to trusted pages.
61 // Returns true if someone handled the URL. 61 // Returns true if someone handled the URL.
62 62
63 static bool dispatchRightClick(const std::string& url); 63 static bool dispatchRightClick(const std::string& url);
diff --git a/linden/indra/newview/llurlhistory.cpp b/linden/indra/newview/llurlhistory.cpp
index 1d6c87f..e3de706 100644
--- a/linden/indra/newview/llurlhistory.cpp
+++ b/linden/indra/newview/llurlhistory.cpp
@@ -48,7 +48,7 @@ bool LLURLHistory::loadFile(const std::string& filename)
48{ 48{
49 LLSD data; 49 LLSD data;
50 { 50 {
51 std::string temp_str = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter(); 51 std::string temp_str = gDirUtilp->getViewerUserDir() + gDirUtilp->getDirDelimiter();
52 52
53 llifstream file((temp_str + filename)); 53 llifstream file((temp_str + filename));
54 54
@@ -74,7 +74,7 @@ bool LLURLHistory::loadFile(const std::string& filename)
74// static 74// static
75bool LLURLHistory::saveFile(const std::string& filename) 75bool LLURLHistory::saveFile(const std::string& filename)
76{ 76{
77 std::string temp_str = gDirUtilp->getLindenUserDir(true); 77 std::string temp_str = gDirUtilp->getViewerUserDir(true);
78 if( temp_str.empty() ) 78 if( temp_str.empty() )
79 { 79 {
80 llwarns << "Can't save " << filename 80 llwarns << "Can't save " << filename
diff --git a/linden/indra/newview/llviewerdisplay.cpp b/linden/indra/newview/llviewerdisplay.cpp
index 22c17d9..4495ecc 100644
--- a/linden/indra/newview/llviewerdisplay.cpp
+++ b/linden/indra/newview/llviewerdisplay.cpp
@@ -1344,7 +1344,7 @@ void render_disconnected_background()
1344 llinfos << "Loading last bitmap..." << llendl; 1344 llinfos << "Loading last bitmap..." << llendl;
1345 1345
1346 std::string temp_str; 1346 std::string temp_str;
1347 temp_str = gDirUtilp->getLindenUserDir() + gDirUtilp->getDirDelimiter() + SCREEN_LAST_FILENAME; 1347 temp_str = gDirUtilp->getViewerUserDir() + gDirUtilp->getDirDelimiter() + SCREEN_LAST_FILENAME;
1348 1348
1349 LLPointer<LLImageBMP> image_bmp = new LLImageBMP; 1349 LLPointer<LLImageBMP> image_bmp = new LLImageBMP;
1350 if( !image_bmp->load(temp_str) ) 1350 if( !image_bmp->load(temp_str) )
diff --git a/linden/indra/newview/llviewergenericmessage.cpp b/linden/indra/newview/llviewergenericmessage.cpp
index 779ed01..36c61ab 100644
--- a/linden/indra/newview/llviewergenericmessage.cpp
+++ b/linden/indra/newview/llviewergenericmessage.cpp
@@ -91,6 +91,11 @@ void process_generic_message(LLMessageSystem* msg, void**)
91 LightShare::processWindlight(msg, NULL); 91 LightShare::processWindlight(msg, NULL);
92 return; 92 return;
93 } 93 }
94 else if(method == "WindlightReset")
95 {
96 WindlightMessage::resetRegion();
97 return;
98 }
94 99
95 if( agent_id != gAgent.getID() ) 100 if( agent_id != gAgent.getID() )
96 { 101 {
diff --git a/linden/indra/newview/llviewermedia.cpp b/linden/indra/newview/llviewermedia.cpp
index dbb6f62..c38408d 100644
--- a/linden/indra/newview/llviewermedia.cpp
+++ b/linden/indra/newview/llviewermedia.cpp
@@ -502,15 +502,15 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_
502 user_data_path += gDirUtilp->getDirDelimiter(); 502 user_data_path += gDirUtilp->getDirDelimiter();
503 503
504 // Fix for EXT-5960 - make browser profile specific to user (cache, cookies etc.) 504 // Fix for EXT-5960 - make browser profile specific to user (cache, cookies etc.)
505 // If the linden username returned is blank, that can only mean we are 505 // If the username returned is blank, that can only mean we are
506 // at the login page displaying login Web page or Web browser test via Develop menu. 506 // at the login page displaying login Web page or Web browser test via Develop menu.
507 // In this case we just use whatever gDirUtilp->getOSUserAppDir() gives us (this 507 // In this case we just use whatever gDirUtilp->getOSUserAppDir() gives us (this
508 // is what we always used before this change) 508 // is what we always used before this change)
509 std::string linden_user_dir = gDirUtilp->getLindenUserDir(true); 509 std::string viewer_user_dir = gDirUtilp->getViewerUserDir(true);
510 if ( ! linden_user_dir.empty() ) 510 if ( ! viewer_user_dir.empty() )
511 { 511 {
512 // gDirUtilp->getLindenUserDir() is whole path, not just Linden name 512 // gDirUtilp->getViewerUserDir() is whole path, not just username
513 user_data_path = linden_user_dir; 513 user_data_path = viewer_user_dir;
514 user_data_path += gDirUtilp->getDirDelimiter(); 514 user_data_path += gDirUtilp->getDirDelimiter();
515 } 515 }
516 516
diff --git a/linden/indra/newview/llviewermedia.h b/linden/indra/newview/llviewermedia.h
index ee5fef4..b2c95c0 100644
--- a/linden/indra/newview/llviewermedia.h
+++ b/linden/indra/newview/llviewermedia.h
@@ -161,7 +161,7 @@ public:
161 static LLPluginClassMedia* newSourceFromMediaType(std::string media_type, LLPluginClassMediaOwner *owner /* may be NULL */, S32 default_width, S32 default_height); 161 static LLPluginClassMedia* newSourceFromMediaType(std::string media_type, LLPluginClassMediaOwner *owner /* may be NULL */, S32 default_width, S32 default_height);
162 162
163 // Internally set our desired browser user agent string, including 163 // Internally set our desired browser user agent string, including
164 // the Second Life version and skin name. Used because we can 164 // the viewer version and skin name. Used because we can
165 // switch skins without restarting the app. 165 // switch skins without restarting the app.
166 static void updateBrowserUserAgent(); 166 static void updateBrowserUserAgent();
167 167
diff --git a/linden/indra/newview/llviewermenu.cpp b/linden/indra/newview/llviewermenu.cpp
index 0f6e5c4..0b76f2c 100644
--- a/linden/indra/newview/llviewermenu.cpp
+++ b/linden/indra/newview/llviewermenu.cpp
@@ -39,7 +39,7 @@
39#include <fstream> 39#include <fstream>
40#include <sstream> 40#include <sstream>
41 41
42// linden library includes 42// viewer library includes
43#include "llaudioengine.h" 43#include "llaudioengine.h"
44#include "llavatarnamecache.h" 44#include "llavatarnamecache.h"
45#include "indra_constants.h" 45#include "indra_constants.h"
@@ -1550,7 +1550,7 @@ void init_server_menu(LLMenuGL* menu)
1550 sub->append(new LLMenuItemCallGL("Owner To Me", 1550 sub->append(new LLMenuItemCallGL("Owner To Me",
1551 &handle_force_parcel_owner_to_me, 1551 &handle_force_parcel_owner_to_me,
1552 &enable_god_customer_service, NULL)); 1552 &enable_god_customer_service, NULL));
1553 sub->append(new LLMenuItemCallGL("Set to Linden Content", 1553 sub->append(new LLMenuItemCallGL("Set to grid Content",
1554 &handle_force_parcel_to_content, 1554 &handle_force_parcel_to_content,
1555 &enable_god_customer_service, NULL, 1555 &enable_god_customer_service, NULL,
1556 'C', MASK_SHIFT | MASK_ALT | MASK_CONTROL)); 1556 'C', MASK_SHIFT | MASK_ALT | MASK_CONTROL));
@@ -2366,9 +2366,9 @@ class LLObjectEnableMute : public view_listener_t
2366 { 2366 {
2367 // It's an avatar 2367 // It's an avatar
2368 LLNameValue *lastname = avatar->getNVPair("LastName"); 2368 LLNameValue *lastname = avatar->getNVPair("LastName");
2369 BOOL is_linden = lastname && !LLStringUtil::compareStrings(lastname->getString(), "Linden"); 2369 BOOL is_god = lastname && !LLStringUtil::compareStrings(lastname->getString(), "Meta");
2370 BOOL is_self = avatar->isSelf(); 2370 BOOL is_self = avatar->isSelf();
2371 new_value = !is_linden && !is_self; 2371 new_value = !is_god && !is_self;
2372// [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e) 2372// [RLVa:KB] - Checked: 2009-07-08 (RLVa-1.0.0e)
2373 new_value &= (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES)); 2373 new_value &= (!gRlvHandler.hasBehaviour(RLV_BHVR_SHOWNAMES));
2374// [/RLVa:KB] 2374// [/RLVa:KB]
diff --git a/linden/indra/newview/llviewermenufile.cpp b/linden/indra/newview/llviewermenufile.cpp
index b88b5ca..f4c627b 100644
--- a/linden/indra/newview/llviewermenufile.cpp
+++ b/linden/indra/newview/llviewermenufile.cpp
@@ -58,7 +58,7 @@
58#include "lluploaddialog.h" 58#include "lluploaddialog.h"
59 59
60 60
61// linden libraries 61// viewer libraries
62#include "llassetuploadresponders.h" 62#include "llassetuploadresponders.h"
63#include "lleconomy.h" 63#include "lleconomy.h"
64#include "llhttpclient.h" 64#include "llhttpclient.h"
@@ -762,7 +762,7 @@ void upload_new_resource(const std::string& src_filename, std::string name,
762 else 762 else
763 { 763 {
764 fclose(in); 764 fclose(in);
765 error_message = llformat("unknown linden resource file version in file: %s", src_filename.c_str()); 765 error_message = llformat("unknown resource file version in file: %s", src_filename.c_str());
766 args["FILE"] = src_filename; 766 args["FILE"] = src_filename;
767 upload_error(error_message, "UnknownResourceFileVersion", filename, args); 767 upload_error(error_message, "UnknownResourceFileVersion", filename, args);
768 return; 768 return;
diff --git a/linden/indra/newview/llviewermessage.cpp b/linden/indra/newview/llviewermessage.cpp
index 92e3fa9..10d701d 100644
--- a/linden/indra/newview/llviewermessage.cpp
+++ b/linden/indra/newview/llviewermessage.cpp
@@ -157,6 +157,10 @@
157#include "llwindebug.h" // For the invalid message handler 157#include "llwindebug.h" // For the invalid message handler
158#endif 158#endif
159 159
160#if USE_OTR // [$PLOTR$]
161#include "otr_wrapper.h"
162#endif // USE_OTR // [/$PLOTR$]
163
160//silly spam define D: 164//silly spam define D:
161bool dialogSpamOn; 165bool dialogSpamOn;
162static LLFrameTimer d_spam; 166static LLFrameTimer d_spam;
@@ -1272,7 +1276,7 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
1272 1276
1273 log_message = "You decline " + mDesc + " from " + mFromName + "."; 1277 log_message = "You decline " + mDesc + " from " + mFromName + ".";
1274 chat.mText = log_message; 1278 chat.mText = log_message;
1275 if( LLMuteList::getInstance()->isMuted(mFromID ) && ! LLMuteList::getInstance()->isLinden(mFromName) ) // muting for SL-42269 1279 if( LLMuteList::getInstance()->isMuted(mFromID ) && ! LLMuteList::getInstance()->isGod(mFromName) ) // muting for SL-42269
1276 { 1280 {
1277 chat.mMuted = TRUE; 1281 chat.mMuted = TRUE;
1278 } 1282 }
@@ -1560,12 +1564,11 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
1560 1564
1561 BOOL is_busy = gAgent.getBusy(); 1565 BOOL is_busy = gAgent.getBusy();
1562 BOOL is_muted = LLMuteList::getInstance()->isMuted(from_id, name, LLMute::flagTextChat); 1566 BOOL is_muted = LLMuteList::getInstance()->isMuted(from_id, name, LLMute::flagTextChat);
1563 BOOL is_linden = LLMuteList::getInstance()->isLinden(name); 1567 BOOL is_god = LLMuteList::getInstance()->isGod(name);
1564 BOOL is_owned_by_me = FALSE; 1568 BOOL is_owned_by_me = FALSE;
1565 1569
1566 LLUUID computed_session_id = LLIMMgr::computeSessionID(dialog,from_id); 1570 LLUUID computed_session_id = LLIMMgr::computeSessionID(dialog,from_id);
1567 1571 chat.mMuted = is_muted && !is_god;
1568 chat.mMuted = is_muted && !is_linden;
1569 chat.mFromID = from_id; 1572 chat.mFromID = from_id;
1570 chat.mFromName = name; 1573 chat.mFromName = name;
1571 chat.mSourceType = (from_id.isNull() || (name == std::string(SYSTEM_FROM))) ? CHAT_SOURCE_SYSTEM : CHAT_SOURCE_AGENT; 1574 chat.mSourceType = (from_id.isNull() || (name == std::string(SYSTEM_FROM))) ? CHAT_SOURCE_SYSTEM : CHAT_SOURCE_AGENT;
@@ -1576,14 +1579,135 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
1576 is_owned_by_me = source->permYouOwner(); 1579 is_owned_by_me = source->permYouOwner();
1577 } 1580 }
1578 1581
1582#if USE_OTR // [$PLOTR$]
1583 std::string decrypted_msg;
1584 bool encrypted = false;
1585// if ((CHAT_SOURCE_SYSTEM == chat.mSourceType) &&
1586// ((std::string::npos != message.find("not online")) ||
1587// (std::string::npos != message.find("stored and delivered later"))))
1588// {
1589// llinfos << "$PLOTR$ Looks like " << from_id << " went offline." << llendl;
1590// }
1591 U32 otrpref = gSavedSettings.getU32("EmeraldUseOTR");
1592 // otrpref: 0 == Require use of OTR in IMs, 1 == Request OTR if available, 2 == Accept OTR requests, 3 == Decline use of OTR
1593 if ((otrpref != 3) && !is_muted && (chat.mSourceType == CHAT_SOURCE_AGENT))
1594 {
1595 int ignore_message = 0;
1596 char *newmessage = NULL;
1597 OtrlTLV *tlvs = NULL;
1598 char my_uuid[UUID_STR_SIZE];
1599 char their_uuid[UUID_STR_SIZE];
1600
1601 if (gOTR &&
1602 ((IM_NOTHING_SPECIAL == dialog) ||
1603 ((IM_TYPING_STOP == dialog) &&
1604 (! ((message == "typing") || (message == "cryo::ping"))))))
1605 {
1606 // only try OTR for 1 on 1 IM's or special tagged typing_stop packets
1607 gAgent.getID().toString(&(my_uuid[0]));
1608 from_id.toString(&(their_uuid[0]));
1609 ignore_message = otrl_message_receiving(
1610 gOTR->get_userstate(),
1611 gOTR->get_uistate(),
1612 &session_id,
1613 my_uuid,
1614 gOTR->get_protocolid(),
1615 their_uuid,
1616 &(message[0]), &newmessage,
1617 &tlvs,
1618 NULL, NULL);
1619 }
1620 if (tlvs)
1621 {
1622 llinfos << "$PLOTR$ recieved TLVs" << llendl;
1623 LLUUID session = LLIMMgr::computeSessionID(dialog,from_id);
1624
1625 if(!otrl_tlv_find(tlvs, OTRL_TLV_DISCONNECTED))
1626 {
1627 // currently the only TLVs we deal with are SMP, and they require an IM panel
1628 if(!gIMMgr->hasSession(session))
1629 {
1630 gIMMgr->addSession(name,IM_NOTHING_SPECIAL,from_id);
1631 }
1632
1633 }
1634 LLFloaterIMPanel* pan = gIMMgr->findFloaterBySession(session);
1635 if (pan) pan->handleOtrTlvs(tlvs);
1636 otrl_tlv_free(tlvs);
1637 }
1638 if (1 == ignore_message)
1639 {
1640 OtrlMessageType msgtype = otrl_proto_message_type(&(message[0]));
1641 if (OTRL_MSGTYPE_NOTOTR == msgtype)
1642 {
1643 llinfos << "$PLOTR$ [not otr, but to be ignored (" << message << ")]" << llendl;
1644 if ((0 == otrpref) && (IM_NOTHING_SPECIAL == dialog) && !is_muted)
1645 {
1646 LLUUID session = LLIMMgr::computeSessionID(dialog,from_id);
1647 if(!gIMMgr->hasSession(session))
1648 {
1649 gIMMgr->addSession(name,IM_NOTHING_SPECIAL,from_id);
1650 }
1651 // NOT deliver_otr_message since those might go via typing_stop
1652 deliver_message( // $TODO$ move the following message to some .xml file
1653 "/me's settings require OTR encrypted instant messages. Your message was not displayed.",
1654 session, from_id, IM_NOTHING_SPECIAL);
1655 LLFloaterIMPanel* pan = gIMMgr->findFloaterBySession(session);
1656 if(pan)pan->doOtrStart();
1657 }
1658 }
1659 else
1660 {
1661 // an internal OTR protocol message was recieved, don't show anything to the user
1662 llinfos << "$PLOTR$ [OTR PROTOCOL MESSAGE (" << message << ")]" << llendl;
1663 }
1664 otr_show_status(session_id);
1665 return;
1666 }
1667 if (newmessage)
1668 {
1669 // message was processed by OTR. Maybe decrypted, maybe just stripping off the
1670 // white-space "I have OTR" tag
1671 decrypted_msg = newmessage; // use processed message
1672 message = newmessage; // use processed message
1673 otrl_message_free(newmessage);
1674 ConnContext *context = otrl_context_find(
1675 gOTR->get_userstate(),
1676 their_uuid,
1677 my_uuid,
1678 gOTR->get_protocolid(),
1679 0, NULL, NULL, NULL);
1680 encrypted = (context && (OTRL_MSGSTATE_ENCRYPTED == context->msgstate));
1681 if (IM_TYPING_STOP == dialog)
1682 {
1683 if ("typing" == message) return; // don't display whitespace tagged "typing" stop messages
1684 dialog = IM_NOTHING_SPECIAL; // display messages received in typing_stop packets
1685 }
1686 }
1687 }
1688
1689#endif // USE_OTR // [/$PLOTR$]
1690
1579 std::string separator_string(": "); 1691 std::string separator_string(": ");
1580 int message_offset = 0; 1692 int message_offset = 0;
1581 1693
1694#if USE_OTR // [$PLOTR$]
1695 if(encrypted)
1696 {
1697 separator_string = "\xe2\x80\xa7: ";
1698 message = decrypted_msg;
1699 }
1700#endif // USE_OTR // [/$PLOTR$]
1701
1582 //Handle IRC styled /me messages. 1702 //Handle IRC styled /me messages.
1583 std::string prefix = message.substr(0, 4); 1703 std::string prefix = message.substr(0, 4);
1584 if (prefix == "/me " || prefix == "/me'") 1704 if (prefix == "/me " || prefix == "/me'")
1585 { 1705 {
1706#if USE_OTR // [$PLOTR$]
1707 separator_string = encrypted ? "\xe2\x80\xa7" : "";
1708#else
1586 separator_string = ""; 1709 separator_string = "";
1710#endif // USE_OTR // [/$PLOTR$]
1587 message_offset = 3; 1711 message_offset = 3;
1588 } 1712 }
1589 1713
@@ -1842,7 +1966,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
1842 { 1966 {
1843 case IM_CONSOLE_AND_CHAT_HISTORY: 1967 case IM_CONSOLE_AND_CHAT_HISTORY:
1844 // These are used for system messages, hence don't need the name, 1968 // These are used for system messages, hence don't need the name,
1845 // as it is always "Imprudence". 1969 // as it is always "Imprudence". Or "meta-impy" maybe? shrugs
1846 // *TODO:translate 1970 // *TODO:translate
1847 args["MESSAGE"] = message; 1971 args["MESSAGE"] = message;
1848 1972
@@ -1869,9 +1993,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
1869 gIMMgr->processIMTypingStop(im_info); 1993 gIMMgr->processIMTypingStop(im_info);
1870 } 1994 }
1871// [/RLVa:KB] 1995// [/RLVa:KB]
1872// else if (offline == IM_ONLINE && !is_linden && is_busy && name != SYSTEM_FROM) 1996// else if (offline == IM_ONLINE && !is_god && is_busy && name != SYSTEM_FROM)
1873// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g) 1997// [RLVa:KB] - Checked: 2009-07-10 (RLVa-1.0.0g)
1874 else if ( (offline == IM_ONLINE && !is_linden && is_busy && name != SYSTEM_FROM) && 1998 else if ( (offline == IM_ONLINE && !is_god && is_busy && name != SYSTEM_FROM) &&
1875 ( (!gRlvHandler.hasBehaviour(RLV_BHVR_RECVIM)) || (gRlvHandler.isException(RLV_BHVR_RECVIM, from_id))) ) 1999 ( (!gRlvHandler.hasBehaviour(RLV_BHVR_RECVIM)) || (gRlvHandler.isException(RLV_BHVR_RECVIM, from_id))) )
1876// [/RLVa:KB] 2000// [/RLVa:KB]
1877 { 2001 {
@@ -1931,9 +2055,9 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
1931 else if (to_id.isNull()) 2055 else if (to_id.isNull())
1932 { 2056 {
1933// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e) 2057// [RLVa:KB] - Version: 1.23.4 | Checked: 2009-07-08 (RLVa-1.0.0e)
1934 // Filter region messages that weren't sent by a Linden 2058 // Filter region messages that weren't sent by a god
1935 if ( (rlv_handler_t::isEnabled()) && (LLMuteList::getInstance()) && 2059 if ( (rlv_handler_t::isEnabled()) && (LLMuteList::getInstance()) &&
1936 (!LLMuteList::getInstance()->isLinden(name)) && (from_id != gAgent.getID()) ) 2060 (!LLMuteList::getInstance()->isGod(name)) && (from_id != gAgent.getID()) )
1937 { 2061 {
1938 if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC)) 2062 if (gRlvHandler.hasBehaviour(RLV_BHVR_SHOWLOC))
1939 gRlvHandler.filterLocation(message); 2063 gRlvHandler.filterLocation(message);
@@ -1978,7 +2102,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
1978 2102
1979 LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL; 2103 LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL;
1980 2104
1981 if (!is_muted || is_linden) 2105 if (!is_muted || is_god)
1982 { 2106 {
1983 gIMMgr->addMessage( 2107 gIMMgr->addMessage(
1984 session_id, 2108 session_id,
@@ -2124,7 +2248,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
2124 break; 2248 break;
2125 case IM_GROUP_INVITATION: 2249 case IM_GROUP_INVITATION:
2126 { 2250 {
2127 //if (!is_linden && (is_busy || is_muted)) 2251 //if (!is_god && (is_busy || is_muted))
2128 if ((is_busy || is_muted)) 2252 if ((is_busy || is_muted))
2129 { 2253 {
2130 LLMessageSystem *msg = gMessageSystem; 2254 LLMessageSystem *msg = gMessageSystem;
@@ -2291,7 +2415,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
2291 2415
2292 case IM_SESSION_SEND: 2416 case IM_SESSION_SEND:
2293 { 2417 {
2294 if (!is_linden && is_busy) 2418 if (!is_god && is_busy)
2295 { 2419 {
2296 return; 2420 return;
2297 } 2421 }
@@ -2850,14 +2974,14 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
2850 BOOL is_busy = gAgent.getBusy(); 2974 BOOL is_busy = gAgent.getBusy();
2851 2975
2852 BOOL is_muted = FALSE; 2976 BOOL is_muted = FALSE;
2853 BOOL is_linden = FALSE; 2977 BOOL is_god = FALSE;
2854 is_muted = LLMuteList::getInstance()->isMuted( 2978 is_muted = LLMuteList::getInstance()->isMuted(
2855 from_id, 2979 from_id,
2856 from_name, 2980 from_name,
2857 LLMute::flagTextChat) 2981 LLMute::flagTextChat)
2858 || LLMuteList::getInstance()->isMuted(owner_id, LLMute::flagTextChat); 2982 || LLMuteList::getInstance()->isMuted(owner_id, LLMute::flagTextChat);
2859 is_linden = chat.mSourceType != CHAT_SOURCE_OBJECT && 2983 is_god = chat.mSourceType != CHAT_SOURCE_OBJECT &&
2860 LLMuteList::getInstance()->isLinden(from_name); 2984 LLMuteList::getInstance()->isGod(from_name);
2861 2985
2862 BOOL is_audible = (CHAT_AUDIBLE_FULLY == chat.mAudible); 2986 BOOL is_audible = (CHAT_AUDIBLE_FULLY == chat.mAudible);
2863 chatter = gObjectList.findObject(from_id); 2987 chatter = gObjectList.findObject(from_id);
@@ -2886,7 +3010,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
2886 3010
2887 // record last audible utterance 3011 // record last audible utterance
2888 if (is_audible 3012 if (is_audible
2889 && (is_linden || (!is_muted && !is_busy))) 3013 && (is_god || (!is_muted && !is_busy)))
2890 { 3014 {
2891 if (chat.mChatType != CHAT_TYPE_START 3015 if (chat.mChatType != CHAT_TYPE_START
2892 && chat.mChatType != CHAT_TYPE_STOP) 3016 && chat.mChatType != CHAT_TYPE_STOP)
@@ -3214,7 +3338,7 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
3214 } 3338 }
3215 3339
3216 // truth table: 3340 // truth table:
3217 // LINDEN BUSY MUTED OWNED_BY_YOU TASK DISPLAY STORE IN HISTORY 3341 // GOD BUSY MUTED OWNED_BY_YOU TASK DISPLAY STORE IN HISTORY
3218 // F F F F * Yes Yes 3342 // F F F F * Yes Yes
3219 // F F F T * Yes Yes 3343 // F F F T * Yes Yes
3220 // F F T F * No No 3344 // F F T F * No No
@@ -3225,11 +3349,11 @@ void process_chat_from_simulator(LLMessageSystem *msg, void **user_data)
3225 // F T T T * No No 3349 // F T T T * No No
3226 // T * * * F Yes Yes 3350 // T * * * F Yes Yes
3227 3351
3228 chat.mMuted = is_muted && !is_linden; 3352 chat.mMuted = is_muted && !is_god;
3229 3353
3230 3354
3231 if (!visible_in_chat_bubble 3355 if (!visible_in_chat_bubble
3232 && (is_linden || !is_busy || is_owned_by_me)) 3356 && (is_god || !is_busy || is_owned_by_me))
3233 { 3357 {
3234 // show on screen and add to history 3358 // show on screen and add to history
3235 add_floater_chat(chat, FALSE); 3359 add_floater_chat(chat, FALSE);
@@ -5221,7 +5345,7 @@ void process_alert_core(const std::string& message, BOOL modal)
5221 else if( message == "Home position set." ) 5345 else if( message == "Home position set." )
5222 { 5346 {
5223 // save the home location image to disk 5347 // save the home location image to disk
5224 std::string snap_filename = gDirUtilp->getLindenUserDir(); 5348 std::string snap_filename = gDirUtilp->getViewerUserDir();
5225 snap_filename += gDirUtilp->getDirDelimiter(); 5349 snap_filename += gDirUtilp->getDirDelimiter();
5226 snap_filename += SCREEN_HOME_FILENAME; 5350 snap_filename += SCREEN_HOME_FILENAME;
5227 gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight(), FALSE, FALSE); 5351 gViewerWindow->saveSnapshot(snap_filename, gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight(), FALSE, FALSE);
@@ -6576,7 +6700,7 @@ void process_covenant_reply(LLMessageSystem* msg, void**)
6576 } 6700 }
6577 else 6701 else
6578 { 6702 {
6579 covenant_text = "There is no Covenant provided for this Estate. The land on this estate is being sold by the Estate owner, not Linden Lab. Please contact the Estate Owner for sales details."; 6703 covenant_text = "There is no Covenant provided for this Estate. The land on this estate is being sold by the Estate owner, not the grid owners. Please contact the Estate Owner for sales details.";
6580 } 6704 }
6581 LLPanelEstateCovenant::updateCovenantText(covenant_text, covenant_id); 6705 LLPanelEstateCovenant::updateCovenantText(covenant_text, covenant_id);
6582 LLPanelLandCovenant::updateCovenantText(covenant_text); 6706 LLPanelLandCovenant::updateCovenantText(covenant_text);
diff --git a/linden/indra/newview/llviewerstats.cpp b/linden/indra/newview/llviewerstats.cpp
index 607f871..a7bbee8 100644
--- a/linden/indra/newview/llviewerstats.cpp
+++ b/linden/indra/newview/llviewerstats.cpp
@@ -714,9 +714,7 @@ void send_stats()
714 system["ram"] = (S32) gSysMemory.getPhysicalMemoryKB(); 714 system["ram"] = (S32) gSysMemory.getPhysicalMemoryKB();
715 system["os"] = LLAppViewer::instance()->getOSInfo().getOSStringSimple(); 715 system["os"] = LLAppViewer::instance()->getOSInfo().getOSStringSimple();
716 system["cpu"] = gSysCPU.getCPUString(); 716 system["cpu"] = gSysCPU.getCPUString();
717 std::string macAddressString = llformat("%02x-%02x-%02x-%02x-%02x-%02x", 717 std::string macAddressString = llformat("%02x-%02x-%02x-%02x-%02x-%02x", 0,1,2,3,4,5); // Hell no don't seand the MAC across the 'net. Bad LL.
718 gMACAddress[0],gMACAddress[1],gMACAddress[2],
719 gMACAddress[3],gMACAddress[4],gMACAddress[5]);
720 system["mac_address"] = macAddressString; 718 system["mac_address"] = macAddressString;
721 system["serial_number"] = LLAppViewer::instance()->getSerialNumber(); 719 system["serial_number"] = LLAppViewer::instance()->getSerialNumber();
722 std::string gpu_desc = llformat( 720 std::string gpu_desc = llformat(
diff --git a/linden/indra/newview/llviewertexteditor.h b/linden/indra/newview/llviewertexteditor.h
index c69b3f0..9d30e4f 100644
--- a/linden/indra/newview/llviewertexteditor.h
+++ b/linden/indra/newview/llviewertexteditor.h
@@ -85,7 +85,7 @@ public:
85 void setEmbeddedText(const std::string& instr); 85 void setEmbeddedText(const std::string& instr);
86 std::string getEmbeddedText(); 86 std::string getEmbeddedText();
87 87
88 // Appends Second Life time, small font, grey. 88 // Appends grid time, small font, grey.
89 // If this starts a line, you need to prepend a newline. 89 // If this starts a line, you need to prepend a newline.
90 std::string appendTime(bool prepend_newline); 90 std::string appendTime(bool prepend_newline);
91 91
diff --git a/linden/indra/newview/llviewerwindow.cpp b/linden/indra/newview/llviewerwindow.cpp
index 380f524..f9d38b1 100644
--- a/linden/indra/newview/llviewerwindow.cpp
+++ b/linden/indra/newview/llviewerwindow.cpp
@@ -53,7 +53,7 @@
53// TODO: Many of these includes are unnecessary. Remove them. 53// TODO: Many of these includes are unnecessary. Remove them.
54// 54//
55 55
56// linden library includes 56// viewer library includes
57#include "llaudioengine.h" // mute on minimize 57#include "llaudioengine.h" // mute on minimize
58#include "indra_constants.h" 58#include "indra_constants.h"
59#include "llassetstorage.h" 59#include "llassetstorage.h"
@@ -1717,7 +1717,7 @@ void LLViewerWindow::initWorldUI()
1717 } 1717 }
1718} 1718}
1719 1719
1720// initWorldUI that wasn't before logging in. Some of this may require the access the 'LindenUserDir'. 1720// initWorldUI that wasn't before logging in. Some of this may require the access the 'ViewerUserDir'.
1721void LLViewerWindow::initWorldUI_postLogin() 1721void LLViewerWindow::initWorldUI_postLogin()
1722{ 1722{
1723 S32 height = mRootView->getRect().getHeight(); 1723 S32 height = mRootView->getRect().getHeight();
@@ -2185,7 +2185,7 @@ void LLViewerWindow::draw()
2185 2185
2186 if( gShowOverlayTitle && !mOverlayTitle.empty() ) 2186 if( gShowOverlayTitle && !mOverlayTitle.empty() )
2187 { 2187 {
2188 // Used for special titles such as "Second Life - Special E3 2003 Beta" 2188 // Used for special titles such as "MyViewer - Special E3 2003 Beta"
2189 const S32 DIST_FROM_TOP = 20; 2189 const S32 DIST_FROM_TOP = 20;
2190 LLFontGL::getFontSansSerifLarge()->renderUTF8( 2190 LLFontGL::getFontSansSerifLarge()->renderUTF8(
2191 mOverlayTitle, 0, 2191 mOverlayTitle, 0,
@@ -2847,6 +2847,7 @@ BOOL LLViewerWindow::handlePerFrameHover()
2847 } 2847 }
2848 // In the future we may wish to hide the tools menu unless you 2848 // In the future we may wish to hide the tools menu unless you
2849 // are building. JC 2849 // are building. JC
2850 // I think the users generally told LL to get fucked on that silly idea. Pfffft
2850 //gMenuBarView->setItemVisible("Tools", gFloaterTools->getVisible()); 2851 //gMenuBarView->setItemVisible("Tools", gFloaterTools->getVisible());
2851 //gMenuBarView->arrange(); 2852 //gMenuBarView->arrange();
2852 } 2853 }
@@ -2920,7 +2921,7 @@ BOOL LLViewerWindow::handlePerFrameHover()
2920 // Always update console 2921 // Always update console
2921 LLRect console_rect = getChatConsoleRect(); 2922 LLRect console_rect = getChatConsoleRect();
2922 // Add a magic number so the pre login console does not cover the login panel. 2923 // Add a magic number so the pre login console does not cover the login panel.
2923 S32 magic_num = (LLStartUp::isLoggedIn()) ? 0 : 20; 2924 S32 magic_num = (LLStartUp::isLoggedIn()) ? 20 : 0;
2924 console_rect.mBottom = gHUDView->getRect().mBottom + getChatConsoleBottomPad() + magic_num; 2925 console_rect.mBottom = gHUDView->getRect().mBottom + getChatConsoleBottomPad() + magic_num;
2925 gConsole->reshape(console_rect.getWidth(), console_rect.getHeight()); 2926 gConsole->reshape(console_rect.getWidth(), console_rect.getHeight());
2926 gConsole->setRect(console_rect); 2927 gConsole->setRect(console_rect);
diff --git a/linden/indra/newview/llviewerwindow.h b/linden/indra/newview/llviewerwindow.h
index 6b8e2b7..eab8818 100644
--- a/linden/indra/newview/llviewerwindow.h
+++ b/linden/indra/newview/llviewerwindow.h
@@ -423,7 +423,7 @@ protected:
423 LLRect mPickScreenRegion; // area of frame buffer for rendering pick frames (generally follows mouse to avoid going offscreen) 423 LLRect mPickScreenRegion; // area of frame buffer for rendering pick frames (generally follows mouse to avoid going offscreen)
424 LLTimer mPickTimer; // timer for scheduling n picks per second 424 LLTimer mPickTimer; // timer for scheduling n picks per second
425 425
426 std::string mOverlayTitle; // Used for special titles such as "Second Life - Special E3 2003 Beta" 426 std::string mOverlayTitle; // Used for special titles such as "MyViewer - Special E3 2003 Beta"
427 427
428 BOOL mIgnoreActivate; 428 BOOL mIgnoreActivate;
429 429
diff --git a/linden/indra/newview/llvlmanager.cpp b/linden/indra/newview/llvlmanager.cpp
index 7f483ca..097b8e8 100644
--- a/linden/indra/newview/llvlmanager.cpp
+++ b/linden/indra/newview/llvlmanager.cpp
@@ -57,13 +57,11 @@ LLVLManager::~LLVLManager()
57 57
58void LLVLManager::addLayerData(LLVLData *vl_datap, const S32 mesg_size) 58void LLVLManager::addLayerData(LLVLData *vl_datap, const S32 mesg_size)
59{ 59{
60 if (LAND_LAYER_CODE == vl_datap->mType || 60 if (LAND_LAYER_CODE == vl_datap->mType)
61 AURORA_LAND_LAYER_CODE == vl_datap->mType)
62 { 61 {
63 mLandBits += mesg_size * 8; 62 mLandBits += mesg_size * 8;
64 } 63 }
65 else if (WIND_LAYER_CODE == vl_datap->mType || 64 else if (WIND_LAYER_CODE == vl_datap->mType)
66 AURORA_WIND_LAYER_CODE == vl_datap->mType)
67 { 65 {
68 mWindBits += mesg_size * 8; 66 mWindBits += mesg_size * 8;
69 } 67 }
@@ -96,17 +94,11 @@ void LLVLManager::unpackData(const S32 num_packets)
96 { 94 {
97 datap->mRegionp->getLand().decompressDCTPatch(bit_pack, &goph, FALSE); 95 datap->mRegionp->getLand().decompressDCTPatch(bit_pack, &goph, FALSE);
98 } 96 }
99 else if (AURORA_LAND_LAYER_CODE == datap->mType) 97 else if (WIND_LAYER_CODE == datap->mType)
100 {
101 datap->mRegionp->getLand().decompressDCTPatch(bit_pack, &goph, TRUE);
102 }
103 else if (WIND_LAYER_CODE == datap->mType ||
104 AURORA_WIND_LAYER_CODE == datap->mType)
105 { 98 {
106 datap->mRegionp->mWind.decompress(bit_pack, &goph); 99 datap->mRegionp->mWind.decompress(bit_pack, &goph);
107 } 100 }
108 else if (CLOUD_LAYER_CODE == datap->mType || 101 else if (CLOUD_LAYER_CODE == datap->mType)
109 AURORA_CLOUD_LAYER_CODE == datap->mType)
110 { 102 {
111 datap->mRegionp->mCloudLayer.decompress(bit_pack, &goph); 103 datap->mRegionp->mCloudLayer.decompress(bit_pack, &goph);
112 } 104 }
diff --git a/linden/indra/newview/llvoavatar.cpp b/linden/indra/newview/llvoavatar.cpp
index aac4e41..812e924 100644
--- a/linden/indra/newview/llvoavatar.cpp
+++ b/linden/indra/newview/llvoavatar.cpp
@@ -3266,17 +3266,33 @@ void LLVOAvatar::resolveClient(LLColor4& avatar_name_color, std::string& client,
3266{ 3266{
3267 LLUUID idx = avatar->getTE(0)->getID(); 3267 LLUUID idx = avatar->getTE(0)->getID();
3268 3268
3269 // We start locally with Imprudence in case the user has a local color they prefer.
3270 // This means clientside colors for Imp will always override any on the website.
3271 // If you're going to add a new color, a new UUID needs to be added -- MC 3269 // If you're going to add a new color, a new UUID needs to be added -- MC
3272 if(idx == LLUUID("cc7a030f-282f-c165-44d2-b5ee572e72bf")) 3270
3271 // meta-impy gets special treatment -
3272 // A) coz this is our damn viewer.
3273 // 2) makes it quicker coz everyone else around you is using it.
3274 // Don't think anyone allocates these tags, so grab one for us to.
3275 if(idx == LLUUID("f5788536-508d-4d2a-b6db-bb2b4a19f626"))
3276 {
3277 avatar_name_color = LLColor4(0.5f,0.5f,1.0f);//meta-impy
3278 client = "meta-impy";
3279 }
3280 // Imprudence is special to, coz dark blue on black is just unreadable. Pffft.
3281 else if(idx == LLUUID("cc7a030f-282f-c165-44d2-b5ee572e72bf"))
3273 { 3282 {
3274 // defaults to LLColor4(0.79f,0.44f,0.88f) 3283 avatar_name_color = LLColor4(0.79f,0.44f,0.88f);// Imprudence
3275 avatar_name_color = gSavedSettings.getColor4("ImprudenceTagColor"); //Imprudence
3276 client = "Imprudence"; 3284 client = "Imprudence";
3277 } 3285 }
3278 else if (LLVOAvatar::sClientResolutionList.has("isComplete") && 3286 // meta 7 gets special treatment to -
3279 LLVOAvatar::sClientResolutionList.has(idx.asString())) 3287 // I) the client tags list out in the wild is wrong.
3288 // B) Casper sucks cocks, or Casper cocks suck. Probably both.
3289 else if(idx == LLUUID("b32f01bc-f9b3-4535-b1f3-99dc38f022db"))
3290 {
3291 avatar_name_color = LLColor4(0.8f,1.0f,0.0f,1.0f);// meta 7
3292 client = "meta 7";
3293 }
3294 else if(LLVOAvatar::sClientResolutionList.has("isComplete")
3295 && LLVOAvatar::sClientResolutionList.has(idx.asString()))
3280 { 3296 {
3281 LLSD cllsd = LLVOAvatar::sClientResolutionList[idx.asString()]; 3297 LLSD cllsd = LLVOAvatar::sClientResolutionList[idx.asString()];
3282 client = cllsd["name"].asString(); 3298 client = cllsd["name"].asString();
@@ -3285,198 +3301,189 @@ void LLVOAvatar::resolveClient(LLColor4& avatar_name_color, std::string& client,
3285 avatar_name_color += colour; 3301 avatar_name_color += colour;
3286 avatar_name_color *= 1.0/(cllsd["multiple"].asReal()+1.0f); 3302 avatar_name_color *= 1.0/(cllsd["multiple"].asReal()+1.0f);
3287 } 3303 }
3288 else if(idx == LLUUID("7eab0700-f000-0000-0000-546561706f74")) 3304 else // No tag data from the web, try some old defaults.
3289 { 3305 {
3290 avatar_name_color = LLColor4(0.69f,0.42f,0.84f,1.0f); // Armins V3 viewer. 3306 if(idx == LLUUID("2a9a406c-f448-68f2-4e38-878f8c46c190") ||
3291 client = "Teapot";
3292 }
3293 else if(idx == LLUUID("2a9a406c-f448-68f2-4e38-878f8c46c190") ||
3294 idx == LLUUID("b6820989-bf42-ff59-ddde-fd3fd3a74fe4")) 3307 idx == LLUUID("b6820989-bf42-ff59-ddde-fd3fd3a74fe4"))
3295 { 3308 {
3296 avatar_name_color += LLColor4(1.0f,0.9f,0.7f);//Meerkat 3309 avatar_name_color += LLColor4(1.0f,0.9f,0.7f);//Meerkat
3297 avatar_name_color = avatar_name_color * (F32)0.333333333333; 3310 avatar_name_color = avatar_name_color * (F32)0.333333333333;
3298 client = "Meerkat"; 3311 client = "Meerkat";
3299 } 3312 }
3300 else if(idx == LLUUID("b32f01bc-f9b3-4535-b1f3-99dc38f022db")) 3313 else if(idx == LLUUID("7eab0700-f000-0000-0000-546561706f74"))
3301 { 3314 {
3302 avatar_name_color = LLColor4(0.8f,1.0f,0.0f,1.0f);//Meta7 3315 avatar_name_color = LLColor4(0.69f,0.42f,0.84f,1.0f); // Armins V3 viewer.
3303 client = "Meta7"; 3316 client = "Teapot";
3304 } 3317 }
3305 else if(idx == LLUUID("ccda2b3b-e72c-a112-e126-fee238b67218")) 3318 else if(idx == LLUUID("b32f01bc-f9b3-4535-b1f3-99dc38f022db"))
3306 { 3319 {
3307 avatar_name_color += LLColor4::green;//emerald 3320 avatar_name_color = LLColor4(0.8f,1.0f,0.0f,1.0f);//Meta7
3308 avatar_name_color += LLColor4::green; 3321 client = "Meta7";
3309 avatar_name_color = avatar_name_color * (F32)0.333333333333; 3322 }
3310 client = "Emerald"; 3323 else if(idx == LLUUID("ccda2b3b-e72c-a112-e126-fee238b67218"))
3311 } 3324 {
3312 else if(idx == LLUUID("c252d89d-6f7c-7d90-f430-d140d2e3fbbe")) 3325 avatar_name_color += LLColor4::green;//emerald
3313 { 3326 avatar_name_color += LLColor4::green;
3314 avatar_name_color += LLColor4::red;//vlife jcool410 3327 avatar_name_color = avatar_name_color * (F32)0.333333333333;
3315 avatar_name_color = avatar_name_color * 0.5; 3328 client = "Emerald";
3316 client = "VLife"; 3329 }else if(idx == LLUUID("c252d89d-6f7c-7d90-f430-d140d2e3fbbe"))
3317 } 3330 {
3318 else if(idx == LLUUID("adcbe893-7643-fd12-f61c-0b39717e2e32")) 3331 avatar_name_color += LLColor4::red;//vlife jcool410
3319 { 3332 avatar_name_color = avatar_name_color * 0.5;
3320 avatar_name_color += LLColor4::pink;//tyk3n 3333 client = "VLife";
3321 avatar_name_color = avatar_name_color * 0.5; 3334 }else if(idx == LLUUID("adcbe893-7643-fd12-f61c-0b39717e2e32"))
3322 client = "tyk3n"; 3335 {
3323 } 3336 avatar_name_color += LLColor4::pink;//tyk3n
3324 else if(idx == LLUUID("f3fd74a6-fee7-4b2f-93ae-ddcb5991da04") || 3337 avatar_name_color = avatar_name_color * 0.5;
3325 idx == LLUUID("77662f23-c77a-9b4d-5558-26b757b2144c")) 3338 client = "tyk3n";
3326 { 3339 }else if(idx == LLUUID("f3fd74a6-fee7-4b2f-93ae-ddcb5991da04") ||
3327 avatar_name_color += (LLColor4::purple);//psl 3340 idx == LLUUID("77662f23-c77a-9b4d-5558-26b757b2144c"))
3328 avatar_name_color = avatar_name_color * 0.5; 3341 {
3329 client = "PSL"; 3342 avatar_name_color += (LLColor4::purple);//psl
3330 } 3343 avatar_name_color = avatar_name_color * 0.5;
3331 else if(idx == LLUUID("5aa5c70d-d787-571b-0495-4fc1bdef1500")) 3344 client = "PSL";
3332 { 3345 }else if(idx == LLUUID("5aa5c70d-d787-571b-0495-4fc1bdef1500"))
3333 avatar_name_color += LLColor4::red;//lordgreg 3346 {
3334 avatar_name_color += LLColor4::red; 3347 avatar_name_color += LLColor4::red;//lordgreg
3335 avatar_name_color = avatar_name_color * (F32)0.333333333333; 3348 avatar_name_color += LLColor4::red;
3336 client = "LGG proxy"; 3349 avatar_name_color = avatar_name_color * (F32)0.333333333333;
3337 } 3350 client = "LGG proxy";
3338 else if(idx == LLUUID("8183e823-c443-2142-6eb6-2ab763d4f81c")) 3351 }else if(idx == LLUUID("8183e823-c443-2142-6eb6-2ab763d4f81c"))
3339 { 3352 {
3340 avatar_name_color += LLColor4::blue;//day oh 3353 avatar_name_color += LLColor4::blue;//day oh
3341 avatar_name_color = avatar_name_color * 0.5; 3354 avatar_name_color = avatar_name_color * 0.5;
3342 client = "Day Oh proxy"; 3355 client = "Day Oh proxy";
3343 } 3356 }else if(idx == LLUUID("e52d21f7-3c8b-819f-a3db-65c432295dac") ||
3344 else if(idx == LLUUID("e52d21f7-3c8b-819f-a3db-65c432295dac") || 3357 idx == LLUUID("0f6723d2-5b23-6b58-08ab-308112b33786") ||
3345 idx == LLUUID("0f6723d2-5b23-6b58-08ab-308112b33786") || 3358 idx == LLUUID("7c4d47a3-0c51-04d1-fa47-e4f3ac12f59b") ||
3346 idx == LLUUID("7c4d47a3-0c51-04d1-fa47-e4f3ac12f59b") || 3359 idx == LLUUID("d0091f21-1eef-a4ad-b358-249a8e5432ea"))
3347 idx == LLUUID("d0091f21-1eef-a4ad-b358-249a8e5432ea")) 3360 {
3348 { 3361 avatar_name_color += LLColor4::cyan;//cryolife
3349 avatar_name_color += LLColor4::cyan;//cryolife 3362 avatar_name_color += LLColor4::cyan;
3350 avatar_name_color += LLColor4::cyan; 3363 avatar_name_color = avatar_name_color * 0.5;
3351 avatar_name_color = avatar_name_color * 0.5; 3364 client = "CryoLife";
3352 client = "CryoLife"; 3365 }else if(idx == LLUUID("0bcd5f5d-a4ce-9ea4-f9e8-15132653b3d8"))
3353 } 3366 {
3354 else if(idx == LLUUID("0bcd5f5d-a4ce-9ea4-f9e8-15132653b3d8")) 3367 avatar_name_color += LLColor4::pink;//moy
3355 { 3368 avatar_name_color += LLColor4::pink;//moy
3356 avatar_name_color += LLColor4::pink;//moy 3369 avatar_name_color = avatar_name_color * (F32)0.333333333333;
3357 avatar_name_color += LLColor4::pink;//moy 3370 client = "MoyMix";
3358 avatar_name_color = avatar_name_color * (F32)0.333333333333; 3371 }else if(idx == LLUUID("f5a48821-9a98-d09e-8d6a-50cc08ba9a47") ||
3359 client = "MoyMix"; 3372 idx == LLUUID("d95e0d9a-4d40-ea1b-a054-8db87f583f58"))
3360 } 3373 {
3361 else if(idx == LLUUID("f5a48821-9a98-d09e-8d6a-50cc08ba9a47") || 3374 avatar_name_color += LLColor4::yellow;//neil
3362 idx == LLUUID("d95e0d9a-4d40-ea1b-a054-8db87f583f58")) 3375 avatar_name_color += LLColor4::yellow;//neil
3363 { 3376 avatar_name_color = avatar_name_color * (F32)0.333333333333;
3364 avatar_name_color += LLColor4::yellow;//neil 3377 client = "NeilLife";
3365 avatar_name_color += LLColor4::yellow;//neil 3378 }else if(idx == LLUUID("2c9c1e0b-e5d1-263e-16b1-7fc6d169f3d6"))
3366 avatar_name_color = avatar_name_color * (F32)0.333333333333; 3379 {
3367 client = "NeilLife"; 3380 avatar_name_color += LLColor4(0.0f,1.0f,1.0f);
3368 } 3381 avatar_name_color = avatar_name_color * 0.5;//phox
3369 else if(idx == LLUUID("2c9c1e0b-e5d1-263e-16b1-7fc6d169f3d6")) 3382 client = "PhoxSL";
3370 { 3383 }else if(idx == LLUUID("c5b570ca-bb7e-3c81-afd1-f62646b20014"))
3371 avatar_name_color += LLColor4(0.0f,1.0f,1.0f); 3384 {
3372 avatar_name_color = avatar_name_color * 0.5;//phox 3385 avatar_name_color += LLColor4::white;
3373 client = "PhoxSL"; 3386 avatar_name_color += LLColor4::white;
3374 } 3387 avatar_name_color = avatar_name_color * (F32)0.333333333333;
3375 else if(idx == LLUUID("c5b570ca-bb7e-3c81-afd1-f62646b20014")) 3388 client = "Kung Fu";
3376 { 3389 }else if(idx == LLUUID("9422e9d7-7b11-83e4-6262-4a8db4716a3b"))
3377 avatar_name_color += LLColor4::white; 3390 {
3378 avatar_name_color += LLColor4::white; 3391 avatar_name_color += LLColor4::magenta;
3379 avatar_name_color = avatar_name_color * (F32)0.333333333333; 3392 avatar_name_color += LLColor4::magenta;
3380 client = "Kung Fu"; 3393 avatar_name_color = avatar_name_color * (F32)0.333333333333;
3381 } 3394 client = "BetaLife";
3382 else if(idx == LLUUID("9422e9d7-7b11-83e4-6262-4a8db4716a3b")) 3395 }else if(idx == LLUUID("872c0005-3095-0967-866d-11cd71115c22"))
3383 { 3396 {
3384 avatar_name_color += LLColor4::magenta; 3397 avatar_name_color += LLColor4::green;//SimFed Poland
3385 avatar_name_color += LLColor4::magenta; 3398 avatar_name_color += LLColor4::blue;//SimFed Poland
3386 avatar_name_color = avatar_name_color * (F32)0.333333333333; 3399 avatar_name_color += LLColor4::blue;//SimFed Poland
3387 client = "BetaLife"; 3400 avatar_name_color = avatar_name_color * 0.5;
3388 } 3401 client = "Copybotter";
3389 else if(idx == LLUUID("872c0005-3095-0967-866d-11cd71115c22")) 3402 }else if(idx == LLUUID("3ab7e2fa-9572-ef36-1a30-d855dbea4f92") || //wat
3390 { 3403 idx == LLUUID("11ad2452-ce54-8d65-7c23-05589b59f516") ||//wat.
3391 avatar_name_color += LLColor4::green;//SimFed Poland 3404 idx == LLUUID("e734563e-1c31-2a35-3ed5-8552c807439f") ||//wat.
3392 avatar_name_color += LLColor4::blue;//SimFed Poland 3405 idx == LLUUID("58a8b7ec-1455-7162-5d96-d3c3ead2ed71") ||//wat
3393 avatar_name_color += LLColor4::blue;//SimFed Poland 3406 idx == LLUUID("841ef25b-3b90-caf9-ea3d-5649e755db65")) //wat -.-
3394 avatar_name_color = avatar_name_color * 0.5; 3407 {
3395 client = "Copybotter"; 3408 avatar_name_color += LLColor4(0.0f,0.5f,1.0f);
3396 } 3409 avatar_name_color = avatar_name_color * 0.5;
3397 else if(idx == LLUUID("3ab7e2fa-9572-ef36-1a30-d855dbea4f92") || //wat 3410 client = "VerticalLife";
3398 idx == LLUUID("11ad2452-ce54-8d65-7c23-05589b59f516") ||//wat. 3411 }else if(idx == LLUUID("4e8dcf80-336b-b1d8-ef3e-08dacf015a0f"))
3399 idx == LLUUID("e734563e-1c31-2a35-3ed5-8552c807439f") ||//wat. 3412 {
3400 idx == LLUUID("58a8b7ec-1455-7162-5d96-d3c3ead2ed71") ||//wat 3413 avatar_name_color += LLColor4::blue; //Sapphire
3401 idx == LLUUID("841ef25b-3b90-caf9-ea3d-5649e755db65")) //wat -.- 3414 avatar_name_color += LLColor4::blue; //Sapphire
3402 { 3415 avatar_name_color = avatar_name_color * (F32)0.333333333333;
3403 avatar_name_color += LLColor4(0.0f,0.5f,1.0f); 3416 client = "Sapphire";
3404 avatar_name_color = avatar_name_color * 0.5; 3417 }else if(idx == LLUUID("ffce04ff-5303-4909-a044-d37af7ab0b0e"))
3405 client = "VerticalLife"; 3418 {
3406 }else if(idx == LLUUID("4e8dcf80-336b-b1d8-ef3e-08dacf015a0f")) 3419 avatar_name_color += LLColor4::orange; //corgiVision
3407 { 3420 avatar_name_color = avatar_name_color * (F32)0.75;
3408 avatar_name_color += LLColor4::blue; //Sapphire 3421 client = "Corgi";
3409 avatar_name_color += LLColor4::blue; //Sapphire 3422 }else if(idx == LLUUID("ccb509cf-cc69-e569-38f1-5086c687afd1"))
3410 avatar_name_color = avatar_name_color * (F32)0.333333333333; 3423 {
3411 client = "Sapphire"; 3424 avatar_name_color += LLColor4::red; //Ruby
3412 }else if(idx == LLUUID("ffce04ff-5303-4909-a044-d37af7ab0b0e")) 3425 avatar_name_color += LLColor4::purple; //Ruby
3413 { 3426 avatar_name_color = avatar_name_color * (F32)0.333333333333;
3414 avatar_name_color += LLColor4::orange; //corgiVision 3427 client = "Ruby";
3415 avatar_name_color = avatar_name_color * (F32)0.75; 3428 }else if(idx == LLUUID("1c29480c-c608-df87-28bb-964fb64c5366"))
3416 client = "Corgi"; 3429 {
3417 }else if(idx == LLUUID("ccb509cf-cc69-e569-38f1-5086c687afd1")) 3430 avatar_name_color += LLColor4::yellow9;
3418 { 3431 avatar_name_color += LLColor4::yellow9;
3419 avatar_name_color += LLColor4::red; //Ruby 3432 avatar_name_color *= (F32)0.333333333333;
3420 avatar_name_color += LLColor4::purple; //Ruby 3433 client = "Gemini";
3421 avatar_name_color = avatar_name_color * (F32)0.333333333333; 3434 }
3422 client = "Ruby"; 3435 else if(idx == LLUUID("3da8a69a-58ca-023f-2161-57f2ab3b5702"))
3423 }else if(idx == LLUUID("1c29480c-c608-df87-28bb-964fb64c5366")) 3436 {
3424 { 3437 avatar_name_color = LLColor4(1.0f,1.0f,1.0f);
3425 avatar_name_color += LLColor4::yellow9; 3438 client = "Operator";
3426 avatar_name_color += LLColor4::yellow9; 3439 }
3427 avatar_name_color *= (F32)0.333333333333; 3440 else if(idx == LLUUID("4da16427-d81e-e816-f346-aaf4741b8056"))
3428 client = "Gemini"; 3441 {
3429 } 3442 avatar_name_color = LLColor4(2.0f,2.0f,2.0f);
3430 else if(idx == LLUUID("3da8a69a-58ca-023f-2161-57f2ab3b5702")) 3443 avatar_name_color *= 0.33f;
3431 { 3444 client = "iLife";
3432 avatar_name_color = LLColor4(1.0f,1.0f,1.0f); 3445 }
3433 client = "Operator"; 3446 else if(idx == LLUUID("5262d71a-88f7-ef40-3b15-00ea148ab4b5"))
3434 } 3447 {
3435 else if(idx == LLUUID("4da16427-d81e-e816-f346-aaf4741b8056")) 3448 avatar_name_color = LLColor4(1.0f,1.0f,1.0f);
3436 { 3449 client = "Gemini.Bot";
3437 avatar_name_color = LLColor4(2.0f,2.0f,2.0f); 3450 }
3438 avatar_name_color *= 0.33f; 3451 else if(idx == LLUUID("81b3e921-ee31-aa57-ff9b-ec1f28e41da1"))
3439 client = "iLife"; 3452 {
3440 } 3453 avatar_name_color = LLColor4(1.0f,1.0f,1.0f);
3441 else if(idx == LLUUID("5262d71a-88f7-ef40-3b15-00ea148ab4b5")) 3454 client = "Infinity";
3442 { 3455 }
3443 avatar_name_color = LLColor4(1.0f,1.0f,1.0f); 3456 else if(idx == LLUUID("d3eb4a5f-aec5-4bcb-b007-cce9efe89d37"))
3444 client = "Gemini.Bot"; 3457 {
3445 } 3458 avatar_name_color = LLColor4(0.0f,0.6f,0.0f);
3446 else if(idx == LLUUID("81b3e921-ee31-aa57-ff9b-ec1f28e41da1")) 3459 avatar_name_color *= 0.33f;
3447 { 3460 client = "rivlife";
3448 avatar_name_color = LLColor4(1.0f,1.0f,1.0f); 3461 }
3449 client = "Infinity"; 3462 else if(idx == LLUUID("f12457b5-762e-52a7-efad-8f17f3b022ee"))
3450 } 3463 {
3451 else if(idx == LLUUID("d3eb4a5f-aec5-4bcb-b007-cce9efe89d37")) 3464 avatar_name_color = LLColor4(0.69f,0.8f,1.6f);
3452 { 3465 avatar_name_color *= 0.5f;
3453 avatar_name_color = LLColor4(0.0f,0.6f,0.0f); 3466 client = "Anti-Life";
3454 avatar_name_color *= 0.33f; 3467 }
3455 client = "rivlife"; 3468 else if(idx == LLUUID("f5feab57-bde5-2074-97af-517290213eaa") ||
3456 } 3469 idx == LLUUID("e6f9c019-8783-dc3e-b265-41f1510333fc"))
3457 else if(idx == LLUUID("f12457b5-762e-52a7-efad-8f17f3b022ee")) 3470 {
3458 { 3471 avatar_name_color = LLColor4(0.4f,0.4f,0.4f);
3459 avatar_name_color = LLColor4(0.69f,0.8f,1.6f); 3472 client = "Onyx";
3460 avatar_name_color *= 0.5f; 3473 }
3461 client = "Anti-Life"; 3474 else if(idx == LLUUID("c58fca06-33b3-827d-d81c-a886a631affc"))
3462 } 3475 {
3463 else if(idx == LLUUID("f5feab57-bde5-2074-97af-517290213eaa") || 3476 avatar_name_color = LLColor4(1.0f,0.61176f,0.0f);
3464 idx == LLUUID("e6f9c019-8783-dc3e-b265-41f1510333fc")) 3477 client = "Whale";
3465 { 3478 }
3466 avatar_name_color = LLColor4(0.4f,0.4f,0.4f); 3479 else if(idx == LLUUID("9ba526b6-f43d-6b60-42de-ce62a25ee7fb"))
3467 client = "Onyx"; 3480 {
3468 } 3481 avatar_name_color = LLColor4(1.0f,1.0f,1.0f);
3469 else if(idx == LLUUID("c58fca06-33b3-827d-d81c-a886a631affc")) 3482 client = "nolife";
3470 { 3483 }
3471 avatar_name_color = LLColor4(1.0f,0.61176f,0.0f);
3472 client = "Whale";
3473 }
3474 else if(idx == LLUUID("9ba526b6-f43d-6b60-42de-ce62a25ee7fb"))
3475 {
3476 avatar_name_color = LLColor4(1.0f,1.0f,1.0f);
3477 client = "nolife";
3478 } 3484 }
3479 3485
3486
3480 if(client.empty()) 3487 if(client.empty())
3481 { 3488 {
3482 LLPointer<LLViewerImage> image_point = gImageList.getImage(idx, MIPMAP_YES, IMMEDIATE_NO); 3489 LLPointer<LLViewerImage> image_point = gImageList.getImage(idx, MIPMAP_YES, IMMEDIATE_NO);
@@ -3501,7 +3508,6 @@ void LLVOAvatar::resolveClient(LLColor4& avatar_name_color, std::string& client,
3501 avatar_name_color += colour; 3508 avatar_name_color += colour;
3502 avatar_name_color *= 1.0/(cllsd["multiple"].asReal()+1.0f); 3509 avatar_name_color *= 1.0/(cllsd["multiple"].asReal()+1.0f);
3503 } 3510 }
3504
3505} 3511}
3506 3512
3507void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last) 3513void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
@@ -3625,13 +3631,13 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
3625 } 3631 }
3626 else 3632 else
3627 { 3633 {
3628 // Set your own name to the Imprudence color -- MC 3634 // Set your own name to the meta-impy color -- MC & onefang
3629 client_color = gSavedSettings.getColor4("ImprudenceTagColor"); 3635 client_color = LLColor4(0.5f,0.5f,1.0f);
3630 } 3636 }
3631 3637
3632 static BOOL* sShowClientColor = rebind_llcontrol<BOOL>("ShowClientColor", &gSavedSettings, true); 3638// static BOOL* sShowClientColor = rebind_llcontrol<BOOL>("ShowClientColor", &gSavedSettings, true);
3633 static BOOL* sShowClientNameTag = rebind_llcontrol<BOOL>("ShowClientNameTag", &gSavedSettings, true); 3639 static BOOL* sShowClientNameTag = rebind_llcontrol<BOOL>("ShowClientNameTag", &gSavedSettings, true);
3634 if (*sShowClientColor) 3640// if (*sShowClientColor)
3635 { 3641 {
3636 avatar_name_color = client_color; 3642 avatar_name_color = client_color;
3637 } 3643 }
@@ -7528,7 +7534,7 @@ void LLVOAvatar::updateRuthTimer(bool loading)
7528 const F32 LOADING_TIMEOUT__SECONDS = 90.f; 7534 const F32 LOADING_TIMEOUT__SECONDS = 90.f;
7529 if (mRuthTimer.getElapsedTimeF32() > LOADING_TIMEOUT__SECONDS) 7535 if (mRuthTimer.getElapsedTimeF32() > LOADING_TIMEOUT__SECONDS)
7530 { 7536 {
7531 llinfos << "Ruth Timer timeout: Missing texture data for '" << getFullname() << "' " 7537 llwarns << "Ruth Timer timeout: Missing texture data for '" << getFullname() << "' "
7532 << "( Params loaded : " << !visualParamWeightsAreDefault() << " ) " 7538 << "( Params loaded : " << !visualParamWeightsAreDefault() << " ) "
7533 << "( Lower : " << isTextureDefined(TEX_LOWER_BAKED) << " ) " 7539 << "( Lower : " << isTextureDefined(TEX_LOWER_BAKED) << " ) "
7534 << "( Upper : " << isTextureDefined(TEX_UPPER_BAKED) << " ) " 7540 << "( Upper : " << isTextureDefined(TEX_UPPER_BAKED) << " ) "
@@ -8855,7 +8861,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
8855 if (visualParamWeightsAreDefault() && mRuthTimer.getElapsedTimeF32() > LOADING_TIMEOUT_SECONDS) 8861 if (visualParamWeightsAreDefault() && mRuthTimer.getElapsedTimeF32() > LOADING_TIMEOUT_SECONDS)
8856 { 8862 {
8857 // re-request appearance, hoping that it comes back with a shape next time 8863 // re-request appearance, hoping that it comes back with a shape next time
8858 llinfos << "Re-requesting AvatarAppearance for object: " << getID() << llendl; 8864 llwarns << "Re-requesting AvatarAppearance for object: " << getID() << llendl;
8859 //LLAvatarPropertiesProcessor::getInstance()->sendAvatarTexturesRequest(getID()); 8865 //LLAvatarPropertiesProcessor::getInstance()->sendAvatarTexturesRequest(getID());
8860 std::vector<std::string> strings; 8866 std::vector<std::string> strings;
8861 strings.push_back(getID().asString()); 8867 strings.push_back(getID().asString());
@@ -8864,7 +8870,7 @@ void LLVOAvatar::processAvatarAppearance( LLMessageSystem* mesgsys )
8864 } 8870 }
8865 else 8871 else
8866 { 8872 {
8867 llinfos << "That's okay, we already have a non-default shape for object: " << getID() << llendl; 8873 llwarns << "That's okay, we already have a non-default shape for object: " << getID() << llendl;
8868 // we don't really care. 8874 // we don't really care.
8869 } 8875 }
8870 } 8876 }
diff --git a/linden/indra/newview/llvoiceclient.cpp b/linden/indra/newview/llvoiceclient.cpp
index 703bcc2..409bb68 100644
--- a/linden/indra/newview/llvoiceclient.cpp
+++ b/linden/indra/newview/llvoiceclient.cpp
@@ -4783,11 +4783,11 @@ void LLVoiceClient::messageEvent(
4783 { 4783 {
4784 bool is_busy = gAgent.getBusy(); 4784 bool is_busy = gAgent.getBusy();
4785 bool is_muted = LLMuteList::getInstance()->isMuted(session->mCallerID, session->mName, LLMute::flagTextChat); 4785 bool is_muted = LLMuteList::getInstance()->isMuted(session->mCallerID, session->mName, LLMute::flagTextChat);
4786 bool is_linden = LLMuteList::getInstance()->isLinden(session->mName); 4786 bool is_god = LLMuteList::getInstance()->isGod(session->mName);
4787 bool quiet_chat = false; 4787 bool quiet_chat = false;
4788 LLChat chat; 4788 LLChat chat;
4789 4789
4790 chat.mMuted = is_muted && !is_linden; 4790 chat.mMuted = is_muted && !is_god;
4791 4791
4792 if(!chat.mMuted) 4792 if(!chat.mMuted)
4793 { 4793 {
@@ -4795,7 +4795,7 @@ void LLVoiceClient::messageEvent(
4795 chat.mFromName = session->mName; 4795 chat.mFromName = session->mName;
4796 chat.mSourceType = CHAT_SOURCE_AGENT; 4796 chat.mSourceType = CHAT_SOURCE_AGENT;
4797 4797
4798 if(is_busy && !is_linden) 4798 if(is_busy && !is_god)
4799 { 4799 {
4800 quiet_chat = true; 4800 quiet_chat = true;
4801 // TODO: Question: Return busy mode response here? Or maybe when session is started instead? 4801 // TODO: Question: Return busy mode response here? Or maybe when session is started instead?
diff --git a/linden/indra/newview/llvowlsky.cpp b/linden/indra/newview/llvowlsky.cpp
index 2f77c7f..5cbda97 100644
--- a/linden/indra/newview/llvowlsky.cpp
+++ b/linden/indra/newview/llvowlsky.cpp
@@ -139,7 +139,7 @@ inline F32 LLVOWLSky::calcPhi(U32 i)
139#if !DOME_SLICES 139#if !DOME_SLICES
140static const F32 Q = (1.f + sqrtf(5.f))/2.f; //golden ratio 140static const F32 Q = (1.f + sqrtf(5.f))/2.f; //golden ratio
141 141
142//icosahedron verts (based on asset b0c7b76e-28c6-1f87-a1de-752d5e3cd264, contact Runitai Linden for a copy) 142//icosahedron verts (based on asset b0c7b76e-28c6-1f87-a1de-752d5e3cd264 in the second life grid, contact Runitai Linden for a copy)
143static const LLVector3 icosahedron_vert[] = 143static const LLVector3 icosahedron_vert[] =
144{ 144{
145 LLVector3(0,1.f,Q), 145 LLVector3(0,1.f,Q),
diff --git a/linden/indra/newview/llwind.cpp b/linden/indra/newview/llwind.cpp
index 3dcbdf6..ba35435 100644
--- a/linden/indra/newview/llwind.cpp
+++ b/linden/indra/newview/llwind.cpp
@@ -41,7 +41,7 @@
41 41
42#include "llwind.h" 42#include "llwind.h"
43 43
44// linden libraries 44// viewer libraries
45#include "llgl.h" 45#include "llgl.h"
46#include "patch_dct.h" 46#include "patch_dct.h"
47#include "patch_code.h" 47#include "patch_code.h"
diff --git a/linden/indra/newview/llwindebug.cpp b/linden/indra/newview/llwindebug.cpp
index 62aeda4..026a7d5 100644
--- a/linden/indra/newview/llwindebug.cpp
+++ b/linden/indra/newview/llwindebug.cpp
@@ -870,8 +870,8 @@ void LLWinDebug::generateCrashStacks(struct _EXCEPTION_POINTERS *exception_infop
870 ExInfo.ExceptionPointers = exception_infop; 870 ExInfo.ExceptionPointers = exception_infop;
871 ExInfo.ClientPointers = NULL; 871 ExInfo.ClientPointers = NULL;
872 872
873 writeDumpToFile(MiniDumpNormal, &ExInfo, "Imprudence.dmp"); 873 writeDumpToFile(MiniDumpNormal, &ExInfo, "meta-impy.dmp");
874 writeDumpToFile((MINIDUMP_TYPE)(MiniDumpWithDataSegs | MiniDumpWithIndirectlyReferencedMemory), &ExInfo, "ImprudencePlus.dmp"); 874 writeDumpToFile((MINIDUMP_TYPE)(MiniDumpWithDataSegs | MiniDumpWithIndirectlyReferencedMemory), &ExInfo, "meta-impyPlus.dmp");
875 } 875 }
876 876
877 info = Get_Exception_Info(exception_infop); 877 info = Get_Exception_Info(exception_infop);
diff --git a/linden/indra/newview/macview.r b/linden/indra/newview/macview.r
index 8124232..b9a1a0d 100644
--- a/linden/indra/newview/macview.r
+++ b/linden/indra/newview/macview.r
@@ -22,7 +22,7 @@ resource 'MENU' (mApple, preload) {
22 apple, 22 apple,
23 { /* array: 2 elements */ 23 { /* array: 2 elements */
24 /* [1] */ 24 /* [1] */
25 "About Second Life", noIcon, noKey, noMark, plain, 25 "About meta-impy", noIcon, noKey, noMark, plain,
26 /* [2] */ 26 /* [2] */
27 "-", noIcon, noKey, noMark, plain 27 "-", noIcon, noKey, noMark, plain
28 } 28 }
diff --git a/linden/indra/newview/macview_Prefix.h b/linden/indra/newview/macview_Prefix.h
index 8cbabb5..5a895b2 100644
--- a/linden/indra/newview/macview_Prefix.h
+++ b/linden/indra/newview/macview_Prefix.h
@@ -30,7 +30,7 @@
30 * $/LicenseInfo$ 30 * $/LicenseInfo$
31 */ 31 */
32 32
33// MBW -- This doesn't work. There are some conflicts between things in Carbon.h and some of the linden source. 33// MBW -- This doesn't work. There are some conflicts between things in Carbon.h and some of the viewer source.
34//#include <Carbon/Carbon.h> 34//#include <Carbon/Carbon.h>
35 35
36////////////////// From llagent.cpp 36////////////////// From llagent.cpp
diff --git a/linden/indra/newview/Imprudence.exe.config b/linden/indra/newview/meta-impy.exe.config
index 293a9ba..293a9ba 100644
--- a/linden/indra/newview/Imprudence.exe.config
+++ b/linden/indra/newview/meta-impy.exe.config
diff --git a/linden/indra/newview/imprudence.url b/linden/indra/newview/meta-impy.url
index d90f3b2..d90f3b2 100644
--- a/linden/indra/newview/imprudence.url
+++ b/linden/indra/newview/meta-impy.url
diff --git a/linden/indra/newview/ImprudenceDebug.exe.config b/linden/indra/newview/meta-impyDebug.exe.config
index 04d0e00..04d0e00 100644
--- a/linden/indra/newview/ImprudenceDebug.exe.config
+++ b/linden/indra/newview/meta-impyDebug.exe.config
diff --git a/linden/indra/newview/otr_floater_smp_dialog.cpp b/linden/indra/newview/otr_floater_smp_dialog.cpp
new file mode 100644
index 0000000..06acdae
--- /dev/null
+++ b/linden/indra/newview/otr_floater_smp_dialog.cpp
@@ -0,0 +1,438 @@
1/* otr_floater_smp_dialog.cpp - SMP dialog box
2 $PLOTR$ See http://www.cypherpunks.ca/otr/
3
4 Copyright (C) 2009 Chris Tuchs
5
6 This is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as
8 published by the Free Software Foundation; either version 2.1 of
9 the License, or (at your option) any later version.
10
11 This is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
14 License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the viewer; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 02111-1307, USA. */
20
21#include "llviewerprecompiledheaders.h"
22
23#include "llagent.h"
24#include "llcachename.h"
25#include "llcombobox.h"
26#include "llimpanel.h"
27#include "lluictrlfactory.h"
28#include "llweb.h"
29
30#include "otr_floater_smp_progress.h"
31#include "otr_floater_smp_dialog.h"
32
33std::string OtrFloaterSmpDialog::getStringName(const char *message_name)
34{
35 LLUIString message = getString(message_name);
36 std::string them;
37 if (!gCacheName->getFullName(mOtherParticipantUUID, them)) them = getString("otr_generic_name");
38 message.setArg("[NAME]", them);
39 return message.getString();
40}
41
42void OtrFloaterSmpDialog::init()
43{
44 LLUICtrlFactory::getInstance()->buildFloater(this, "otr_floater_smp_dialog.xml");
45}
46
47OtrFloaterSmpDialog::OtrFloaterSmpDialog(
48 LLFloaterIMPanel *im_panel, LLUUID session_id, LLUUID other_id,
49 std::string my_fingerprint, std::string other_fingerprint)
50 : LLFloater(std::string("otr_floater_smp_dialog"), std::string("OtrFloaterSmpDialogRect"), LLStringUtil::null),
51 mIMPanel(im_panel), mIsReply(false),
52 mSessionUUID(session_id), mOtherParticipantUUID(other_id),
53 mQuestion(""),
54 mMyFingerprint(my_fingerprint), mOtherFingerprint(other_fingerprint)
55{
56 init();
57}
58
59OtrFloaterSmpDialog::OtrFloaterSmpDialog(
60 LLFloaterIMPanel *im_panel, LLUUID session_id, LLUUID other_id,
61 std::string question, OtrlTLV *tlv)
62 : LLFloater(std::string("otr_floater_smp_dialog"), std::string("OtrFloaterSmpDialogRect"), LLStringUtil::null),
63 mIMPanel(im_panel), mIsReply(true),
64 mSessionUUID(session_id), mOtherParticipantUUID(other_id),
65 mQuestion(question),
66 mMyFingerprint(""), mOtherFingerprint("")
67{
68 init();
69 LLComboBox *combo = getChild<LLComboBox>("otr_smp_how_combo");
70 if (!combo)
71 {
72 llwarns << "$PLOTR$ Can't find OTR SMP how combo" << llendl;
73 return;
74 }
75 combo->removeall();
76 combo->add(getString("otr_smp_how_by_qa_challenge"), ADD_BOTTOM, TRUE);
77 combo->selectFirstItem();
78 doComboMenu();
79}
80
81OtrFloaterSmpDialog::OtrFloaterSmpDialog(
82 LLFloaterIMPanel *im_panel, LLUUID session_id, LLUUID other_id,
83 OtrlTLV *tlv)
84 : LLFloater(std::string("otr_floater_smp_dialog"), std::string("OtrFloaterSmpDialogRect"), LLStringUtil::null),
85 mIMPanel(im_panel), mIsReply(true),
86 mSessionUUID(session_id), mOtherParticipantUUID(other_id),
87 mQuestion(""),
88 mMyFingerprint(""), mOtherFingerprint("")
89{
90 init();
91 LLComboBox *combo = getChild<LLComboBox>("otr_smp_how_combo");
92 if (!combo)
93 {
94 llwarns << "$PLOTR$ Can't find OTR SMP how combo" << llendl;
95 return;
96 }
97 combo->removeall();
98 combo->add(getString("otr_smp_how_by_ss_challenge"), ADD_BOTTOM, TRUE);
99 combo->selectFirstItem();
100 doComboMenu();
101}
102
103OtrFloaterSmpDialog::~OtrFloaterSmpDialog()
104{
105}
106
107BOOL OtrFloaterSmpDialog::postBuild()
108{
109 childSetAction("otr_smp_help_btn", onClickHelp, this);
110 childSetAction("otr_smp_cancel_btn", onClickCancel, this);
111 childSetAction("otr_smp_auth_btn", onClickAuth, this);
112 LLComboBox *veri = getChild<LLComboBox>("otr_smp_veri_combo");
113 veri->setCommitCallback(onClickVeri);
114 veri->setCallbackUserData(this);
115 LLComboBox *combo = getChild<LLComboBox>("otr_smp_how_combo");
116 combo->setCommitCallback(onClickCombo);
117 combo->setCallbackUserData(this);
118 combo->removeall();
119 combo->add(getString("otr_smp_how_by_qa"), ADD_BOTTOM, TRUE);
120 combo->add(getString("otr_smp_how_by_ss"), ADD_BOTTOM, TRUE);
121 combo->add(getString("otr_smp_how_by_mfv"), ADD_BOTTOM, TRUE);
122 combo->selectFirstItem();
123 doComboMenu();
124 LLTextBox *why = getChild<LLTextBox>("otr_smp_why");
125 if (why) why->setWrappedText(getString("otr_smp_why_text"));
126 LLTextBox *how = getChild<LLTextBox>("otr_smp_how_text");
127 if (mIsReply)
128 {
129 if (how) how->setWrappedText(getStringName("otr_smp_how_name_challenge_me"));
130 setTitle(getStringName("otr_smp_name_auth_me"));
131 }
132 else
133 {
134 if (how) how->setWrappedText(getStringName("otr_smp_how_I_challenge_name"));
135 setTitle(getStringName("otr_smp_I_auth_name"));
136 }
137 return TRUE;
138}
139
140void OtrFloaterSmpDialog::show()
141{
142 this->open(); /*Flawfinder: ignore*/
143 this->setFocus(TRUE);
144 this->center();
145}
146
147void OtrFloaterSmpDialog::doVeriMenu()
148{
149 LLComboBox *veri = getChild<LLComboBox>("otr_smp_veri_combo");
150 if (!veri)
151 {
152 llwarns << "$PLOTR$ Can't find OTR SMP verified combo" << llendl;
153 return;
154 }
155 LLButton* auth_btn = getChild<LLButton>("otr_smp_auth_btn");
156 if (!auth_btn)
157 {
158 llwarns << "$PLOTR$ Can't find OTR SMP authenticate button" << llendl;
159 return;
160 }
161 if (getString("otr_smp_veri_no") == veri->getSimple())
162 {
163 auth_btn->setEnabled(FALSE);
164 }
165 else
166 {
167 auth_btn->setEnabled(TRUE);
168 }
169}
170
171void OtrFloaterSmpDialog::doComboMenu()
172{
173 LLComboBox *combo = getChild<LLComboBox>("otr_smp_how_combo");
174 if (!combo)
175 {
176 llwarns << "$PLOTR$ Can't find OTR SMP how combo" << llendl;
177 return;
178 }
179 LLTextBox *howto = getChild<LLTextBox>("otr_smp_howto");
180 if (!howto)
181 {
182 llwarns << "$PLOTR$ Can't find OTR SMP howto control" << llendl;
183 return;
184 }
185 LLTextBox *label1 = getChild<LLTextBox>("otr_smp_label1");
186 if (!label1)
187 {
188 llwarns << "$PLOTR$ Can't find OTR SMP label1 control" << llendl;
189 return;
190 }
191 LLLineEditor *edit1 = getChild<LLLineEditor>("otr_smp_edit1");
192 if (!edit1)
193 {
194 llwarns << "$PLOTR$ Can't find OTR SMP edit1 control" << llendl;
195 return;
196 }
197 LLTextBox *label2 = getChild<LLTextBox>("otr_smp_label2");
198 if (!label2)
199 {
200 llwarns << "$PLOTR$ Can't find OTR SMP label2 control" << llendl;
201 return;
202 }
203 LLLineEditor *edit2 = getChild<LLLineEditor>("otr_smp_edit2");
204 if (!edit2)
205 {
206 llwarns << "$PLOTR$ Can't find OTR SMP edit2 control" << llendl;
207 return;
208 }
209 LLComboBox *veri = getChild<LLComboBox>("otr_smp_veri_combo");
210 if (!veri)
211 {
212 llwarns << "$PLOTR$ Can't find OTR SMP verified combo" << llendl;
213 return;
214 }
215 std::string choice = combo->getSimple();
216 if (getString("otr_smp_how_by_qa") == choice)
217 {
218 howto->setWrappedText(getString("otr_smp_howto_qa"));
219 label1->setWrappedText(getString("otr_smp_howto_qa_t1"));
220 edit1->clear();
221 edit1->setEnabled(TRUE);
222 label2->setWrappedText(getString("otr_smp_howto_qa_t2"));
223 edit2->clear();
224 edit2->setEnabled(TRUE);
225 veri->removeall();
226 veri->setLabel(getString("otr_empty_string"));
227 }
228 else if (getString("otr_smp_how_by_qa_challenge") == choice)
229 {
230 howto->setWrappedText(getString("otr_smp_howto_qa"));
231 label1->setWrappedText(getString("otr_smp_howto_qa_t1"));
232 edit1->setText(mQuestion);
233 edit1->setEnabled(FALSE);
234 label2->setWrappedText(getString("otr_smp_howto_qa_t2"));
235 edit2->clear();
236 edit2->setEnabled(TRUE);
237 veri->removeall();
238 veri->setLabel(getString("otr_empty_string"));
239 }
240 else if (getString("otr_smp_how_by_ss") == choice)
241 {
242 howto->setWrappedText(getString("otr_smp_howto_ss"));
243 label1->setWrappedText(getString("otr_smp_howto_ss_t1"));
244 edit1->clear();
245 edit1->setEnabled(TRUE);
246 label2->setWrappedText(getString("otr_smp_howto_ss_t2"));
247 edit2->clear();
248 edit2->setEnabled(FALSE);
249 veri->removeall();
250 veri->setLabel(getString("otr_empty_string"));
251 }
252 else if (getString("otr_smp_how_by_ss_challenge") == choice)
253 {
254 howto->setWrappedText(getString("otr_smp_howto_ss"));
255 label1->setWrappedText(getString("otr_smp_howto_ss_t1"));
256 edit1->clear();
257 edit1->setEnabled(TRUE);
258 label2->setWrappedText(getString("otr_smp_howto_ss_t2"));
259 edit2->clear();
260 edit2->setEnabled(FALSE);
261 veri->removeall();
262 veri->setLabel(getString("otr_empty_string"));
263 }
264 else if (getString("otr_smp_how_by_mfv") == choice)
265 {
266 howto->setWrappedText(getString("otr_smp_howto_mfv"));
267 label1->setWrappedText(getString("otr_smp_howto_mfv_t1"));
268 edit1->setText(mMyFingerprint);
269 edit1->setEnabled(FALSE);
270 label2->setWrappedText(getString("otr_smp_howto_mfv_t2"));
271 edit2->setText(mOtherFingerprint);
272 edit2->setEnabled(FALSE);
273 veri->add(getString("otr_smp_veri_no"), ADD_BOTTOM, TRUE);
274 veri->add(getString("otr_smp_veri_yes"), ADD_BOTTOM, TRUE);
275 veri->selectFirstItem();
276 }
277 else
278 {
279 llwarns << "$PLOTR$ unknown smp howto choice" << llendl;
280 }
281 doVeriMenu();
282}
283
284// static
285void OtrFloaterSmpDialog::onClickCombo(LLUICtrl* source, void* userdata)
286{
287 OtrFloaterSmpDialog* self = (OtrFloaterSmpDialog*)userdata;
288 if (!self)
289 {
290 llwarns << "$PLOTR$ can't find OTR SMP dialog." << llendl;
291 }
292 else
293 {
294 self->doComboMenu();
295 }
296}
297
298// static
299void OtrFloaterSmpDialog::onClickVeri(LLUICtrl* source, void* userdata)
300{
301 OtrFloaterSmpDialog* self = (OtrFloaterSmpDialog*)userdata;
302 if (!self)
303 {
304 llwarns << "$PLOTR$ can't find OTR SMP dialog." << llendl;
305 }
306 else
307 {
308 self->doVeriMenu();
309 }
310}
311
312// static
313void OtrFloaterSmpDialog::onClickHelp(void*)
314{
315 LLWeb::loadURL("http://www.cypherpunks.ca/otr/help/3.2.0/authenticate.php");
316}
317
318// virtual
319void OtrFloaterSmpDialog::onClose(bool app_quitting)
320{
321 destroy();
322 if (!mIMPanel)
323 {
324 llwarns << "$PLOTR$ Can't find mIMPanel." << llendl;
325 }
326 else
327 {
328 mIMPanel->endSmpDialog();
329 }
330}
331
332// static
333void OtrFloaterSmpDialog::onClickCancel(void* userdata)
334{
335 OtrFloaterSmpDialog *self= (OtrFloaterSmpDialog*)userdata;
336 if (!self)
337 {
338 llwarns << "$PLOTR$ can't find OTR SMP dialog." << llendl;
339 return;
340 }
341 self->close();
342}
343
344void OtrFloaterSmpDialog::doClickAuth()
345{
346 LLComboBox *combo = getChild<LLComboBox>("otr_smp_how_combo");
347 if (!combo)
348 {
349 llwarns << "$PLOTR$ Can't find OTR SMP how combo" << llendl;
350 return;
351 }
352 LLTextBox *howto = getChild<LLTextBox>("otr_smp_howto");
353 if (!howto)
354 {
355 llwarns << "$PLOTR$ Can't find OTR SMP howto control" << llendl;
356 return;
357 }
358 LLTextBox *label1 = getChild<LLTextBox>("otr_smp_label1");
359 if (!label1)
360 {
361 llwarns << "$PLOTR$ Can't find OTR SMP label1 control" << llendl;
362 return;
363 }
364 LLLineEditor *edit1 = getChild<LLLineEditor>("otr_smp_edit1");
365 if (!edit1)
366 {
367 llwarns << "$PLOTR$ Can't find OTR SMP edit1 control" << llendl;
368 return;
369 }
370 LLTextBox *label2 = getChild<LLTextBox>("otr_smp_label2");
371 if (!label2)
372 {
373 llwarns << "$PLOTR$ Can't find OTR SMP label2 control" << llendl;
374 return;
375 }
376 LLLineEditor *edit2 = getChild<LLLineEditor>("otr_smp_edit2");
377 if (!edit2)
378 {
379 llwarns << "$PLOTR$ Can't find OTR SMP edit2 control" << llendl;
380 return;
381 }
382 LLComboBox *veri = getChild<LLComboBox>("otr_smp_veri_combo");
383 if (!veri)
384 {
385 llwarns << "$PLOTR$ Can't find OTR SMP verified combo" << llendl;
386 return;
387 }
388 std::string choice = combo->getSimple();
389 if (getString("otr_smp_how_by_qa") == choice)
390 {
391 llinfos << "$PLOTR$ OTR SMP QA method chosen" << llendl;
392 std::string question = edit1->getText();
393 std::string answer = edit2->getText();
394 mIMPanel->startSmpProgress(mSessionUUID, mOtherParticipantUUID, question, answer);
395 }
396 else if (getString("otr_smp_how_by_ss") == choice)
397 {
398 llinfos << "$PLOTR$ OTR SMP SS method chosen" << llendl;
399 std::string secret = edit1->getText();
400 mIMPanel->startSmpProgress(mSessionUUID, mOtherParticipantUUID, secret);
401 }
402 else if (getString("otr_smp_how_by_mfv") == choice)
403 {
404 if (getString("otr_smp_veri_yes") == veri->getSimple())
405 {
406 llinfos << "$PLOTR$ OTR SMP MFV authenticating " << mOtherParticipantUUID << llendl;
407 otr_authenticate_key(mSessionUUID, "mfv");
408 }
409 }
410 else if (getString("otr_smp_how_by_qa_challenge") == choice)
411 {
412 std::string answer = edit2->getText();
413 mIMPanel->startSmpProgress(mSessionUUID, mOtherParticipantUUID, mQuestion, answer, true);
414 }
415 else if (getString("otr_smp_how_by_ss_challenge") == choice)
416 {
417 std::string secret = edit1->getText();
418 mIMPanel->startSmpProgress(mSessionUUID, mOtherParticipantUUID, secret, true);
419 }
420 else
421 {
422 llwarns << "$PLOTR$ unknown smp howto choice" << llendl;
423 }
424}
425
426// static
427void OtrFloaterSmpDialog::onClickAuth(void* userdata)
428{
429 OtrFloaterSmpDialog *self= (OtrFloaterSmpDialog*)userdata;
430 if (!self)
431 {
432 llwarns << "$PLOTR$ can't find OTR SMP dialog." << llendl;
433 return;
434 }
435 self->doClickAuth();
436 self->close();
437}
438
diff --git a/linden/indra/newview/otr_floater_smp_dialog.h b/linden/indra/newview/otr_floater_smp_dialog.h
new file mode 100644
index 0000000..bb01b71
--- /dev/null
+++ b/linden/indra/newview/otr_floater_smp_dialog.h
@@ -0,0 +1,63 @@
1/* otr_floater_smp_dialog.h - SMP dialog box [$PLOTR$]
2 See http://www.cypherpunks.ca/otr/
3
4 Copyright (C) 2009 Chris Tuchs
5
6 This is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as
8 published by the Free Software Foundation; either version 2.1 of
9 the License, or (at your option) any later version.
10
11 This is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
14 License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the viewer; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 02111-1307, USA. */
20
21#ifndef OTR_FLOATER_SMP_DIALOG_H_INCLUDED
22#define OTR_FLOATER_SMP_DIALOG_H_INCLUDED 1
23
24#include "llfloater.h"
25class LLFloaterIMPanel;
26
27class OtrFloaterSmpDialog
28: public LLFloater
29{
30private:
31 LLUUID mOtherParticipantUUID;
32 LLUUID mSessionUUID;
33 std::string mQuestion;
34 std::string mMyFingerprint;
35 std::string mOtherFingerprint;
36 LLFloaterIMPanel *mIMPanel;
37 bool mIsReply;
38
39 static void onClickHelp(void* userdata);
40 static void onClickCancel(void* userdata);
41 void doComboMenu();
42 static void onClickCombo(LLUICtrl* source, void* userdata);
43 void doVeriMenu();
44 static void onClickVeri(LLUICtrl* source, void* userdata);
45 void doClickAuth();
46 static void onClickAuth(void* userdata);
47 std::string getStringName(const char *message_name);
48
49public:
50 OtrFloaterSmpDialog(LLFloaterIMPanel *im_panel, LLUUID session_id, LLUUID other_id,
51 std::string my_fingerprint, std::string other_fingerprint);
52 OtrFloaterSmpDialog(LLFloaterIMPanel *im_panel, LLUUID session_id, LLUUID other_id,
53 std::string question, OtrlTLV *tlv);
54 OtrFloaterSmpDialog(LLFloaterIMPanel *im_panel, LLUUID session_id, LLUUID other_id,
55 OtrlTLV *tlv);
56 virtual ~OtrFloaterSmpDialog();
57 /*virtual*/ BOOL postBuild();
58 /*virtual*/ void onClose(bool app_quitting);
59
60 void show();
61 void init();
62};
63#endif // ndef OTR_FLOATER_SMP_DIALOG_H_INCLUDED [/$PLOTR$]
diff --git a/linden/indra/newview/otr_floater_smp_progress.cpp b/linden/indra/newview/otr_floater_smp_progress.cpp
new file mode 100644
index 0000000..76bfc6e
--- /dev/null
+++ b/linden/indra/newview/otr_floater_smp_progress.cpp
@@ -0,0 +1,288 @@
1/* otr_floater_smp_progress.cpp - SMP progress dialog box [$PLOTR$]
2 See http://www.cypherpunks.ca/otr/
3
4 Copyright (C) 2009 Chris Tuchs
5
6 This is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as
8 published by the Free Software Foundation; either version 2.1 of
9 the License, or (at your option) any later version.
10
11 This is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
14 License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the viewer; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 02111-1307, USA. */
20
21#include "llviewerprecompiledheaders.h"
22
23#include "llagent.h"
24#include "llcachename.h"
25#include "llimpanel.h"
26#include "llprogressbar.h"
27#include "lluictrlfactory.h"
28#include "llweb.h"
29
30#include "otr_wrapper.h"
31#include "otr_floater_smp_progress.h"
32
33void OtrFloaterSmpProgress::init()
34{
35 LLUICtrlFactory::getInstance()->buildFloater(this, "otr_floater_smp_progress.xml");
36 childSetAction("otr_smp_prog_help_btn", onClickHelp, this);
37 childSetAction("otr_smp_prog_cancel_btn", onClickCancel, this);
38 childSetAction("otr_smp_prog_ok_btn", onClickOk, this);
39 setDefaultBtn("otr_smp_prog_cancel_btn");
40 LLUIString title = mIsReply
41 ? getString("otr_smp_prog_name_auth_me")
42 : getString("otr_smp_prog_I_auth_name");
43 std::string them;
44 if (!gCacheName->getFullName(mOtherParticipantUUID, them)) them = getString("otr_generic_name");
45 title.setArg("[NAME]", them);
46 setTitle(title.getString());
47}
48
49OtrFloaterSmpProgress::OtrFloaterSmpProgress(
50 LLFloaterIMPanel *im_panel, LLUUID session_id, LLUUID other_id,
51 std::string a_question, std::string a_secret_answer, bool is_reply)
52: LLFloater(std::string("otr_floater_smp_progress"), std::string("OtrFloaterSmpProgRect"), LLStringUtil::null),
53 mIMPanel(im_panel), mIsReply(is_reply),
54 mSessionUUID(session_id), mOtherParticipantUUID(other_id),
55 mQuestion(a_question), mSecretAnswer(a_secret_answer),
56 mSecretAnswerOnly(false)
57{
58 init();
59 if (!gOTR)
60 {
61 llwarns << "$PLOTR$ Can't find gOTR." << llendl;
62 setFinalStatus("otr_smp_prog_auth_errored");
63 return;
64 }
65 if (!mIMPanel)
66 {
67 llwarns << "$PLOTR$ Can't find mIMPanel." << llendl;
68 setFinalStatus("otr_smp_prog_auth_errored");
69 return;
70 }
71 ConnContext *context = mIMPanel->getOtrContext();
72 if (!context)
73 {
74 llwarns << "$PLOTR$ Can't find context." << llendl;
75 setFinalStatus("otr_smp_prog_auth_errored");
76 return;
77 }
78 if (mIsReply)
79 {
80 otrl_message_respond_smp(
81 gOTR->get_userstate(),
82 gOTR->get_uistate(),
83 &mSessionUUID,
84 context,
85 (const unsigned char *)mSecretAnswer.c_str(),
86 mSecretAnswer.length());
87 setPercent(50);
88 setStatusName("otr_smp_prog_name_auth_me");
89 }
90 else
91 {
92 otrl_message_initiate_smp_q(
93 gOTR->get_userstate(),
94 gOTR->get_uistate(),
95 &mSessionUUID,
96 context,
97 mQuestion.c_str(),
98 (const unsigned char *)mSecretAnswer.c_str(),
99 mSecretAnswer.length());
100 setStatusName("otr_smp_prog_I_auth_name");
101 }
102}
103
104OtrFloaterSmpProgress::OtrFloaterSmpProgress(
105 LLFloaterIMPanel *im_panel, LLUUID session_id, LLUUID other_id,
106 std::string a_secret_answer, bool is_reply)
107: LLFloater(std::string("otr_floater_smp_progress"), std::string("OtrFloaterSmpProgRect"), LLStringUtil::null),
108 mIMPanel(im_panel), mIsReply(is_reply),
109 mSessionUUID(session_id), mOtherParticipantUUID(other_id),
110 mSecretAnswer(a_secret_answer),
111 mSecretAnswerOnly(true)
112{
113 init();
114 if (!gOTR)
115 {
116 llwarns << "$PLOTR$ Can't find gOTR." << llendl;
117 setFinalStatus("otr_smp_prog_auth_errored");
118 return;
119 }
120 if (!mIMPanel)
121 {
122 llwarns << "$PLOTR$ Can't find mIMPanel." << llendl;
123 setFinalStatus("otr_smp_prog_auth_errored");
124 return;
125 }
126 ConnContext *context = mIMPanel->getOtrContext();
127 if (!context)
128 {
129 llwarns << "$PLOTR$ Can't find context." << llendl;
130 setFinalStatus("otr_smp_prog_auth_errored");
131 return;
132 }
133 if (mIsReply)
134 {
135 otrl_message_respond_smp(
136 gOTR->get_userstate(),
137 gOTR->get_uistate(),
138 &mSessionUUID,
139 context,
140 (const unsigned char *)mSecretAnswer.c_str(),
141 mSecretAnswer.length());
142 setPercent(50);
143 setStatusName("otr_smp_prog_name_auth_me");
144 }
145 else
146 {
147 otrl_message_initiate_smp(
148 gOTR->get_userstate(),
149 gOTR->get_uistate(),
150 &mSessionUUID,
151 context,
152 (const unsigned char *)mSecretAnswer.c_str(),
153 mSecretAnswer.length());
154 setStatusName("otr_smp_prog_I_auth_name");
155 }
156}
157
158OtrFloaterSmpProgress::~OtrFloaterSmpProgress()
159{
160}
161
162BOOL OtrFloaterSmpProgress::postBuild()
163{
164 mProgressBar = getChild<LLProgressBar>("otr_smp_prog_progress_bar");
165 LLButton* cancel_btn = getChild<LLButton>("otr_smp_prog_cancel_btn");
166 cancel_btn->setEnabled(TRUE);
167 LLButton* ok_btn = getChild<LLButton>("otr_smp_prog_ok_btn");
168 ok_btn->setEnabled(FALSE);
169 return TRUE;
170}
171
172void OtrFloaterSmpProgress::show()
173{
174 this->open(); /*Flawfinder: ignore*/
175 this->center();
176}
177
178void OtrFloaterSmpProgress::setPercent(float percent)
179{
180 mProgressBar->setPercent(percent);
181 if (100 <= percent)
182 {
183 LLButton* cancel_btn = getChild<LLButton>("otr_smp_prog_cancel_btn");
184 cancel_btn->setEnabled(FALSE);
185 LLButton* ok_btn = getChild<LLButton>("otr_smp_prog_ok_btn");
186 ok_btn->setEnabled(TRUE);
187 }
188 else
189 {
190 LLButton* cancel_btn = getChild<LLButton>("otr_smp_prog_cancel_btn");
191 cancel_btn->setEnabled(TRUE);
192 LLButton* ok_btn = getChild<LLButton>("otr_smp_prog_ok_btn");
193 ok_btn->setEnabled(FALSE);
194 }
195}
196
197void OtrFloaterSmpProgress::setStatus(const char *message_string_name)
198{
199 LLTextBox *status = getChild<LLTextBox>("otr_smp_prog_status");
200 if (!status)
201 {
202 llwarns << "$PLOTR$ Can't find OTR progress status textbox" << llendl;
203 return;
204 }
205 status->setWrappedText(getString(message_string_name));
206}
207
208void OtrFloaterSmpProgress::setStatusName(const char *message_string_name)
209{
210 LLTextBox *status = getChild<LLTextBox>("otr_smp_prog_status");
211 if (!status)
212 {
213 llwarns << "$PLOTR$ Can't find OTR progress status textbox" << llendl;
214 return;
215 }
216 LLUIString msg = getString(message_string_name);
217 std::string them;
218 if (!gCacheName->getFullName(mOtherParticipantUUID, them)) them = getString("otr_generic_name");
219 msg.setArg("[NAME]", them);
220 status->setWrappedText(msg.getString());
221}
222
223void OtrFloaterSmpProgress::setFinalStatus(const char *message_string_name)
224{
225 setPercent(100);
226 setStatusName(message_string_name);
227}
228
229// static
230void OtrFloaterSmpProgress::onClickHelp(void*)
231{
232 LLWeb::loadURL("http://www.cypherpunks.ca/otr/help/3.2.0/authenticate.php");
233}
234
235// static
236void OtrFloaterSmpProgress::onClickCancel(void* userdata)
237{
238 OtrFloaterSmpProgress *self= (OtrFloaterSmpProgress*)userdata;
239 if (!self)
240 {
241 llwarns << "$PLOTR$ can't find OTR SMP PROG dialog." << llendl;
242 return;
243 }
244 if (!self->mIMPanel)
245 {
246 llwarns << "$PLOTR$ Can't find mIMPanel." << llendl;
247 return;
248 }
249 ConnContext *context = self->mIMPanel->getOtrContext();
250 if (!context)
251 {
252 llwarns << "$PLOTR$ Can't find context." << llendl;
253 return;
254 }
255 otrl_message_abort_smp(
256 gOTR->get_userstate(),
257 gOTR->get_uistate(),
258 &(self->mSessionUUID),
259 context);
260 self->close();
261}
262
263// static
264void OtrFloaterSmpProgress::onClickOk(void* userdata)
265{
266 OtrFloaterSmpProgress *self= (OtrFloaterSmpProgress*)userdata;
267 if (!self)
268 {
269 llwarns << "$PLOTR$ can't find OTR SMP PROG dialog." << llendl;
270 return;
271 }
272 self->close();
273}
274
275// virtual
276void OtrFloaterSmpProgress::onClose(bool app_quitting)
277{
278 destroy();
279 if (!mIMPanel)
280 {
281 llwarns << "$PLOTR$ Can't find mIMPanel." << llendl;
282 }
283 else
284 {
285 mIMPanel->endSmpProgress();
286 }
287}
288// [/$PLOTR$]
diff --git a/linden/indra/newview/otr_floater_smp_progress.h b/linden/indra/newview/otr_floater_smp_progress.h
new file mode 100644
index 0000000..05ff208
--- /dev/null
+++ b/linden/indra/newview/otr_floater_smp_progress.h
@@ -0,0 +1,61 @@
1/* otr_floater_smp_progress.h - SMP progress dialog box [$PLOTR$]
2 See http://www.cypherpunks.ca/otr/
3
4 Copyright (C) 2009 Chris Tuchs
5
6 This is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as
8 published by the Free Software Foundation; either version 2.1 of
9 the License, or (at your option) any later version.
10
11 This is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
14 License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the viewer; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 02111-1307, USA. */
20
21#ifndef OTR_FLOATER_SMP_PROGRESS_H_INCLUDED
22#define OTR_FLOATER_SMP_PROGRESS_H_INCLUDED 1
23
24#include "llfloater.h"
25class LLFloaterIMPanel;
26class LLProgressBar;
27
28class OtrFloaterSmpProgress
29: public LLFloater
30{
31private:
32 LLUUID mOtherParticipantUUID;
33 LLUUID mSessionUUID;
34 std::string mQuestion;
35 std::string mSecretAnswer;
36 bool mSecretAnswerOnly;
37 LLFloaterIMPanel *mIMPanel;
38 LLProgressBar* mProgressBar;
39 bool mIsReply;
40
41 static void onClickHelp(void* userdata);
42 static void onClickCancel(void* userdata);
43 static void onClickOk(void* userdata);
44
45 void init();
46public:
47 OtrFloaterSmpProgress(LLFloaterIMPanel *im_panel, LLUUID session_id, LLUUID other_id,
48 std::string a_question, std::string a_secret_answer, bool is_reply = false);
49 OtrFloaterSmpProgress(LLFloaterIMPanel *im_panel, LLUUID session_id, LLUUID other_id,
50 std::string a_secret_answer, bool is_reply = false);
51 void setPercent(float percent);
52 void setStatus(const char *message_string_name);
53 void setStatusName(const char *message_string_name);
54 void setFinalStatus(const char *message_string_name);
55 virtual ~OtrFloaterSmpProgress();
56 /*virtual*/ BOOL postBuild();
57 /*virtual*/ void onClose(bool app_quitting);
58
59 void show();
60};
61#endif // ndef OTR_FLOATER_SMP_PROGRESS_H_INCLUDED [/$PLOTR$]
diff --git a/linden/indra/newview/otr_wrapper.cpp b/linden/indra/newview/otr_wrapper.cpp
new file mode 100644
index 0000000..abd1c91
--- /dev/null
+++ b/linden/indra/newview/otr_wrapper.cpp
@@ -0,0 +1,487 @@
1/* otr_wrapper.cpp - wrap libotr for use in the second life viewer
2 $PLOTR$ See http://www.cypherpunks.ca/otr/
3
4 Copyright (C) 2009 Chris Tuchs
5
6 This is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as
8 published by the Free Software Foundation; either version 2.1 of
9 the License, or (at your option) any later version.
10
11 This is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
14 License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the viewer; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 02111-1307, USA. */
20
21#include "llviewerprecompiledheaders.h"
22#include "llviewercontrol.h"
23#include "llimpanel.h"
24#include "otr_wrapper.h"
25#include "llagent.h"
26#include "llimview.h"
27
28
29OTR_Wrapper *gOTR = 0;
30
31OTR_Wrapper::OTR_Wrapper()
32{
33}
34
35OTR_Wrapper::~OTR_Wrapper()
36{
37 if (gOTR)
38 {
39 otrl_userstate_free(gOTR->userstate);
40 }
41}
42
43#define otrwui_tracing 1 // $TODO$ use some debug compile flag?
44#if otrwui_tracing
45extern "C" void otrwui_trace(const char *msg)
46{
47 llinfos << "$PLOTR$TRACE$" << msg << llendl;
48}
49#else
50#define otrwui_trace(x) /* nothing */
51#endif
52
53static void otrwui_tbd(const char *msg)
54{
55 llinfos << "$PLOTR$TBD$" << msg << llendl;
56}
57
58static OtrlPolicy otrwui_policy(void *opdata, ConnContext *context)
59{
60 OtrlPolicy result = 0;
61 U32 useotr = gSavedSettings.getU32("EmeraldUseOTR");
62 if (3 < useotr)
63 {
64 llwarns << "$PLOTR$ Unknown setting for EmeraldUseOTR" << useotr << llendl;
65 useotr = 2;
66 }
67 if (0 == useotr) // Require use of OTR in IMs
68 {
69 result = (0
70// | OTRL_POLICY_ALLOW_V1 // don't even expose this?
71 | OTRL_POLICY_ALLOW_V2
72 | OTRL_POLICY_REQUIRE_ENCRYPTION
73 | OTRL_POLICY_SEND_WHITESPACE_TAG
74 | OTRL_POLICY_WHITESPACE_START_AKE
75 | OTRL_POLICY_ERROR_START_AKE
76 );
77 }
78 else if (1 == useotr) // Request OTR if available
79 {
80 result = (0
81// | OTRL_POLICY_ALLOW_V1 // don't even expose this?
82 | OTRL_POLICY_ALLOW_V2
83// | OTRL_POLICY_REQUIRE_ENCRYPTION
84 | OTRL_POLICY_SEND_WHITESPACE_TAG
85 | OTRL_POLICY_WHITESPACE_START_AKE
86 | OTRL_POLICY_ERROR_START_AKE
87 );
88 }
89 else if (2 == useotr) // Accept OTR requests
90 {
91 result = (0
92// | OTRL_POLICY_ALLOW_V1 // don't even expose this?
93 | OTRL_POLICY_ALLOW_V2
94// | OTRL_POLICY_REQUIRE_ENCRYPTION
95// | OTRL_POLICY_SEND_WHITESPACE_TAG
96 | OTRL_POLICY_WHITESPACE_START_AKE
97 | OTRL_POLICY_ERROR_START_AKE
98 );
99 }
100 else if (3 == useotr) // Decline use of OTR
101 {
102 result = (0
103// | OTRL_POLICY_ALLOW_V1 // don't even expose this?
104// | OTRL_POLICY_ALLOW_V2
105// | OTRL_POLICY_REQUIRE_ENCRYPTION
106// | OTRL_POLICY_SEND_WHITESPACE_TAG
107// | OTRL_POLICY_WHITESPACE_START_AKE
108// | OTRL_POLICY_ERROR_START_AKE
109 );
110 }
111 return result;
112}
113
114
115
116static void otrwui_create_privkey(
117 void *opdata, const char *accountname,
118 const char *protocol)
119{
120 otrwui_trace("otrwui_create_privkey()");
121 /* Create a private key for the given accountname/protocol if
122 * desired. */
123 if (gOTR)
124 {
125 LLUUID session_id = *((LLUUID*)opdata);
126 otr_log_message_getstring(session_id, "otr_gen_key_please_wait");
127 std::string path =
128 gDirUtilp->getExpandedFilename(
129 LL_PATH_PER_SL_ACCOUNT, OTR_PRIVATE_KEYS_FILE);
130 otrl_privkey_generate(
131 gOTR->get_userstate(), path.c_str(), accountname, protocol);
132 }
133}
134
135static int otrwui_is_logged_in(
136 void *opdata, const char *accountname,
137 const char *protocol, const char *recipient)
138{
139 /* Report whether you think the given user is online. Return 1 if
140 * you think he is, 0 if you think he isn't, -1 if you're not sure.
141 *
142 * If you return 1, messages such as heartbeats or other
143 * notifications may be sent to the user, which could result in "not
144 * logged in" errors if you're wrong. */
145 LLUUID recipient_uuid(recipient);
146 const LLRelationship* info = NULL;
147 info = LLAvatarTracker::instance().getBuddyInfo(recipient_uuid);
148 int result;
149 if (!info) result = 1; // hack, should be -1. but we'll pretend non-friends are always online
150 else if (!info->isOnline()) result = 0;
151 else result = 1;
152#if otrwui_tracing
153 std::string msg = "otrwui_is_logged_in()";
154 switch(result)
155 {
156 case -1: msg += " -1 unknown"; break;
157 case 0: msg += " 0 no, logged out"; break;
158 case 1: msg += " 1 yes, logged in"; break;
159 default: msg += " ? imposible result"; break;
160 }
161 otrwui_trace(msg.c_str());
162#endif
163 return result;
164}
165
166static void otrwui_inject_message(
167 void *opdata, const char *accountname,
168 const char *protocol, const char *recipient, const char *message)
169{
170 otrwui_trace("otrwui_inject_message()");
171 /* Send the given IM to the given recipient from the given
172 * accountname/protocol. */
173 if (!opdata)
174 {
175 // don't know how to deliver this with no opdata.
176 llwarns << "$PLOTR$ otrwui_inject_message() called with NULL opdata; not delivering message" << llendl;
177 }
178 else
179 {
180 LLUUID sessionUUID = *((LLUUID*)opdata);
181 LLUUID otherUUID(recipient);
182 otr_deliver_message(message, sessionUUID, otherUUID, IM_NOTHING_SPECIAL);
183 }
184}
185
186static void otrwui_notify(
187 void *opdata, OtrlNotifyLevel level,
188 const char *accountname, const char *protocol,
189 const char *username, const char *title,
190 const char *primary, const char *secondary)
191{
192 /* Display a notification message for a particular accountname /
193 * protocol / username conversation. */
194 std::string trace = "otrwui_notify: \n";
195 trace += "title("; trace += title; trace += ")\n";
196 trace += "primary("; trace += primary; trace += ")\n";
197 trace += "secondary("; trace += secondary; trace += ")";
198 otrwui_tbd(trace.c_str()); // $TODO$ write me
199}
200
201static int otrwui_display_otr_message(
202 void *opdata, const char *accountname,
203 const char *protocol, const char *username, const char *msg)
204{
205 /* Display an OTR control message for a particular accountname /
206 * protocol / username conversation. Return 0 if you are able to
207 * successfully display it. If you return non-0 (or if this
208 * function is NULL), the control message will be displayed inline,
209 * as a received message, or else by using the above notify()
210 * callback. */
211 otrwui_trace("otrwui_log_message()");
212 LLUUID sessionUUID = *((LLUUID*)opdata);
213 otr_log_message(sessionUUID, msg);
214 return 0;
215}
216
217static void otrwui_update_context_list(
218 void *opdata)
219{
220 /* When the list of ConnContexts changes (including a change in
221 * state), this is called so the UI can be updated. */
222 otrwui_tbd("otrwui_update_context_list"); // $TODO$ write me
223}
224
225static const char *otrwui_protocol_name(
226 void *opdata, const char *protocol)
227{
228 /* Return a newly allocated string containing a human-friendly name
229 * for the given protocol id */
230 otrwui_trace("otrwui_protocol_name()");
231 return "SecondLife";
232}
233
234static void otrwui_protocol_name_free(
235 void *opdata, const char *protocol_name)
236{
237 /* Deallocate a string allocated by protocol_name */
238 otrwui_trace("otrwui_protocol_name_free()");
239 return; // no need to deallocate a const char *
240}
241
242static void otrwui_new_fingerprint(
243 void *opdata, OtrlUserState us,
244 const char *accountname, const char *protocol,
245 const char *username, unsigned char fingerprint[20])
246{
247 /* A new fingerprint for the given user has been received. */
248 std::string trace= "otrwui_new_fingerprint: ";
249 trace += username; trace += "@"; trace += protocol;
250 trace += " has a new fingerprint (";
251 char fingerprint_copy[45];
252 otrl_privkey_hash_to_human(fingerprint_copy, fingerprint);
253 trace += fingerprint_copy; trace += ")";
254 otrwui_tbd(trace.c_str()); // $TODO$ write me
255}
256
257static void otrwui_write_fingerprints(
258 void *opdata)
259{
260 otrwui_trace("otrwui_write_fingerprints()");
261 /* The list of known fingerprints has changed. Write them to disk. */
262 if (gOTR)
263 {
264 std::string path =
265 gDirUtilp->getExpandedFilename(
266 LL_PATH_PER_SL_ACCOUNT, OTR_PUBLIC_KEYS_FILE);
267 otrl_privkey_write_fingerprints(gOTR->get_userstate(), path.c_str());
268 }
269}
270
271static void otrwui_gone_secure(
272 void *opdata, ConnContext *context)
273{
274 otrwui_trace("otrwui_gone_secure()");
275 /* A ConnContext has entered a secure state. */
276 if (! opdata)
277 {
278 otrwui_tbd("otrwui_gone_secure() called with null opdata");
279 return;
280 }
281 LLUUID session_id = *((LLUUID*)opdata);
282 if (context && context->active_fingerprint &&
283 context->active_fingerprint->trust &&
284 *(context->active_fingerprint->trust))
285 {
286 //otr_log_message_getstring_name(session_id, "otr_log_start_private");
287 }
288 else
289 {
290 //otr_log_message_getstring_name(session_id, "otr_log_start_unverified");
291 }
292 otr_show_status(session_id);
293}
294
295static void otrwui_gone_insecure(
296 void *opdata, ConnContext *context)
297{
298 otrwui_trace("otrwui_gone_insecure()");
299 /* A ConnContext has left a secure state. */
300 if (! opdata)
301 {
302 otrwui_tbd("otrwui_gone_insecure() called with null opdata");
303 return;
304 }
305 LLUUID session_id = *((LLUUID*)opdata);
306 otr_log_message_getstring(session_id, "otr_log_gone_insecure");
307 otr_show_status(session_id);
308}
309
310static void otrwui_still_secure(
311 void *opdata, ConnContext *context, int is_reply)
312{
313 otrwui_trace("otrwui_still_secure()");
314 /* We have completed an authentication, using the D-H keys we
315 * already knew. is_reply indicates whether we initiated the AKE. */
316 if (! opdata)
317 {
318 otrwui_tbd("otrwui_still_secure() called with null opdata");
319 return;
320 }
321 LLUUID session_id = *((LLUUID*)opdata);
322 if (context && context->active_fingerprint &&
323 context->active_fingerprint->trust &&
324 *(context->active_fingerprint->trust))
325 {
326 //otr_log_message_getstring_name(session_id, "otr_log_still_private");
327 }
328 else
329 {
330 //otr_log_message_getstring_name(session_id, "otr_log_still_unverified");
331 }
332 otr_show_status(session_id);
333}
334
335static void otrwui_log_message(
336 void *opdata, const char *message)
337{
338 /* Log a message. The passed message will end in "\n". */
339 otrwui_trace("otrwui_log_message()");
340 llinfos << message << llendl;
341}
342
343static int otrwui_max_message_size(
344 void *opdata, ConnContext *context)
345{
346 /* Find the maximum message size supported by this protocol. */
347 return (MAX_MSG_BUF_SIZE - 24);
348}
349
350static const char *otrwui_account_name(
351 void *opdata, const char *account,
352 const char *protocol)
353{
354 /* Return a newly allocated string containing a human-friendly
355 * representation for the given account */
356 otrwui_trace("otrwui_account_name");
357 std::string name;
358 LLUUID uuid = LLUUID(account);
359 if (!gCacheName->getFullName(uuid, name)) name = account;
360 char *result = (char *)malloc(name.length()+1);
361 strncpy(result, name.c_str(), name.length()+1);
362 return result;
363}
364
365static void otrwui_account_name_free(
366 void *opdata, const char *account_name)
367{
368 /* Deallocate a string returned by account_name */
369 otrwui_trace("otrwui_account_name_free");
370 free((void *)account_name);
371}
372
373// static
374void OTR_Wrapper::stopAll()
375{
376 otrwui_trace("OTR_Wrapper::stopAll()");
377 if (!gOTR) return;
378 if (gOTR->userstate)
379 {
380 for (ConnContext *context = gOTR->userstate->context_root; context; context = context->next)
381 {
382 if (context && (OTRL_MSGSTATE_ENCRYPTED == context->msgstate))
383 {
384 LLUUID their_uuid = LLUUID(context->username);
385 LLUUID session_uuid = LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, their_uuid);
386 LLFloaterIMPanel* pan = gIMMgr->findFloaterBySession(session_uuid);
387 if (pan)
388 {
389 llinfos << "$PLOTR$ found IM pannel, pan->doOtrStop()" << llendl;
390 pan->doOtrStop();
391 }
392 else
393 {
394 char my_uuid[UUID_STR_SIZE];
395 gAgent.getID().toString(&(my_uuid[0]));
396 llinfos << "$PLOTR$ didn't find IM panel, going lower level"
397 << " c->accountname:" << context->accountname // this avatar, aka me
398 << " c->protocol:" << context->protocol // secondlife, IRC, yahoo...
399 << " c->username:" << context->username // other participant
400 << " session_uuid:" << session_uuid
401 << llendl;
402 otrl_message_disconnect(
403 gOTR->get_userstate(),
404 gOTR->get_uistate(),
405 &session_uuid,
406 context->accountname,
407 context->protocol,
408 context->username);
409 }
410 }
411 }
412 }
413}
414
415// static
416void OTR_Wrapper::logout()
417{
418 otrwui_trace("OTR_Wrapper::logout()");
419 if (!gOTR) return;
420 OTR_Wrapper::stopAll();
421 delete gOTR;
422 gOTR = NULL;
423}
424
425// static
426void OTR_Wrapper::init()
427{
428 otrwui_trace("OTR_Wrapper::init()");
429 if (! gOTR)
430 {
431 gOTR = new OTR_Wrapper;
432 if (!gOTR)
433 {
434 llwarns << "$PLOTR$ Can't new otr_wrapper." << llendl;
435 }
436 else
437 {
438 llinfos << "$PLOTR$ newed otr_wrapper." << llendl;
439 gOTR->uistate.policy = &otrwui_policy;
440 gOTR->uistate.create_privkey = &otrwui_create_privkey;
441 gOTR->uistate.is_logged_in = &otrwui_is_logged_in;
442 gOTR->uistate.inject_message = &otrwui_inject_message;
443 gOTR->uistate.notify = &otrwui_notify;
444 gOTR->uistate.display_otr_message = &otrwui_display_otr_message;
445 gOTR->uistate.update_context_list = &otrwui_update_context_list;
446 gOTR->uistate.protocol_name = &otrwui_protocol_name;
447 gOTR->uistate.protocol_name_free = &otrwui_protocol_name_free;
448 gOTR->uistate.new_fingerprint = &otrwui_new_fingerprint;
449 gOTR->uistate.write_fingerprints = &otrwui_write_fingerprints;
450 gOTR->uistate.gone_secure = &otrwui_gone_secure;
451 gOTR->uistate.gone_insecure = &otrwui_gone_insecure;
452 gOTR->uistate.still_secure = &otrwui_still_secure;
453 gOTR->uistate.log_message = &otrwui_log_message;
454 gOTR->uistate.max_message_size = &otrwui_max_message_size;
455 gOTR->uistate.account_name = &otrwui_account_name;
456 gOTR->uistate.account_name_free = &otrwui_account_name_free;
457 OTRL_INIT;
458 gOTR->userstate = otrl_userstate_create();
459 std::string privpath =
460 gDirUtilp->getExpandedFilename(
461 LL_PATH_PER_SL_ACCOUNT, OTR_PRIVATE_KEYS_FILE);
462 otrl_privkey_read(gOTR->userstate, privpath.c_str());
463 std::string pubpath =
464 gDirUtilp->getExpandedFilename(
465 LL_PATH_PER_SL_ACCOUNT, OTR_PUBLIC_KEYS_FILE);
466 otrl_privkey_read_fingerprints(gOTR->userstate, pubpath.c_str(), NULL, NULL);
467#if 0 // this will gen a key, if the user doesn't have one, at init() time
468 if (gOTR && gOTR->userstate)
469 {
470 OtrlPrivKey *r = gOTR->userstate->privkey_root;
471 OtrlPrivKey *k = gOTR->userstate->privkey_root;
472 while (k && (k != r))
473 {
474 if (0 == strcmp(gOTR->get_protocolid(), k->protocol))
475 {
476 return;
477 }
478 }
479 char my_uuid[UUID_STR_SIZE];
480 gAgent.getID().toString(&(my_uuid[0]));
481 otrl_privkey_generate(gOTR->userstate, privpath.c_str(),
482 my_uuid, gOTR->get_protocolid());
483 }
484#endif
485 }
486 }
487}
diff --git a/linden/indra/newview/otr_wrapper.h b/linden/indra/newview/otr_wrapper.h
new file mode 100644
index 0000000..dd6d12c
--- /dev/null
+++ b/linden/indra/newview/otr_wrapper.h
@@ -0,0 +1,58 @@
1/* otr_wrapper.h - wrap libotr for use in the second life viewer
2 $PLOTR$ See http://www.cypherpunks.ca/otr/
3
4 Copyright (C) 2009 Chris Tuchs
5
6 This is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as
8 published by the Free Software Foundation; either version 2.1 of
9 the License, or (at your option) any later version.
10
11 This is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
14 License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the viewer; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 02111-1307, USA. */
20
21#ifndef OTR_WRAPPER_H_INCLUDED
22#define OTR_WRAPPER_H_INCLUDED 1
23
24extern "C" {
25#if WIN32
26#include <unistd.h> // various defines needed for OTR on windows
27#endif
28#include <gcrypt.h> // gcrypt dependancies
29#include <userstate.h> // OTR
30#include <proto.h> // OTR
31#include <privkey.h> // OTR
32#include <../libotr/libotr-3.2.0/src/message.h> // OTR
33#include <context.h>
34}
35
36class OTR_Wrapper
37{
38private:
39 OtrlUserState userstate; // Global state of OTR: known public keys etc.
40 OtrlMessageAppOps uistate; // UI functions collected into a structure for libotr
41 OTR_Wrapper();
42 ~OTR_Wrapper();
43
44public:
45 static void init();
46 static void stopAll();
47 static void logout();
48 OtrlUserState get_userstate() { return this->userstate; }
49 OtrlMessageAppOps *get_uistate() { return &(this->uistate); }
50 const char * get_protocolid() { return "SecondLife"; }
51};
52
53extern OTR_Wrapper *gOTR; // the singleton OTR wrapper
54
55#define OTR_PRIVATE_KEYS_FILE "OTR-my-private-key.dat"
56#define OTR_PUBLIC_KEYS_FILE "OTR-public-keys.dat"
57
58#endif // ndef OTR_WRAPPER_H_INCLUDED
diff --git a/linden/indra/newview/packaging/mac/Info.plist.in b/linden/indra/newview/packaging/mac/Info.plist.in
index 78cc6b7..3469e5c 100644
--- a/linden/indra/newview/packaging/mac/Info.plist.in
+++ b/linden/indra/newview/packaging/mac/Info.plist.in
@@ -2,20 +2,22 @@
2<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 2<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3<plist version="1.0"> 3<plist version="1.0">
4<dict> 4<dict>
5 <key>CFBundleName</key> 5 <key>CFBundleDevelopmentRegion</key>
6 <string>@BUNDLE_NAME@</string> 6 <string>English</string>
7 <key>CFBundleExecutable</key> 7 <key>CFBundleExecutable</key>
8 <string>@EXECUTABLE@</string> 8 <string>meta-impy</string>
9 <key>CFBundleVersion</key>
10 <string>@BUNDLE_VERSION@</string>
11 <key>CFBundleShortVersionString</key>
12 <string>@SHORT_VERSION_STRING@</string>
13 <key>CFBundleIconFile</key> 9 <key>CFBundleIconFile</key>
14 <string>@ICON_FILE@</string> 10 <string>viewer.icns</string>
15 <key>CFBundleIdentifier</key> 11 <key>CFBundleIdentifier</key>
16 <string>@IDENTIFIER@</string> 12 <string>org.imprudenceviewer.viewer</string>
13 <key>CFBundleInfoDictionaryVersion</key>
14 <string>6.0</string>
15 <key>CFBundleName</key>
16 <string>meta-impy</string>
17 <key>CFBundlePackageType</key>
18 <string>APPL</string>
17 <key>CFBundleSignature</key> 19 <key>CFBundleSignature</key>
18 <string>@SIGNATURE@</string> 20 <string>????</string>
19 <key>CFBundleURLTypes</key> 21 <key>CFBundleURLTypes</key>
20 <array> 22 <array>
21 <dict> 23 <dict>
@@ -29,12 +31,8 @@
29 <true/> 31 <true/>
30 </dict> 32 </dict>
31 </array> 33 </array>
32 <key>CFBundleDevelopmentRegion</key> 34 <key>CFBundleVersion</key>
33 <string>English</string> 35 <string>Experimental 2011.04.02</string>
34 <key>CFBundleInfoDictionaryVersion</key>
35 <string>6.0</string>
36 <key>CFBundlePackageType</key>
37 <string>APPL</string>
38 <key>CSResourcesFileMapped</key> 36 <key>CSResourcesFileMapped</key>
39 <true/> 37 <true/>
40</dict> 38</dict>
diff --git a/linden/indra/newview/packaging/mac/SecondLife.nib/classes.nib b/linden/indra/newview/packaging/mac/viewer.nib/classes.nib
index ea58db1..ea58db1 100644
--- a/linden/indra/newview/packaging/mac/SecondLife.nib/classes.nib
+++ b/linden/indra/newview/packaging/mac/viewer.nib/classes.nib
diff --git a/linden/indra/newview/packaging/mac/SecondLife.nib/info.nib b/linden/indra/newview/packaging/mac/viewer.nib/info.nib
index 1b531de..1b531de 100644
--- a/linden/indra/newview/packaging/mac/SecondLife.nib/info.nib
+++ b/linden/indra/newview/packaging/mac/viewer.nib/info.nib
diff --git a/linden/indra/newview/packaging/mac/SecondLife.nib/objects.xib b/linden/indra/newview/packaging/mac/viewer.nib/objects.xib
index 553b6f3..7ef13e0 100644
--- a/linden/indra/newview/packaging/mac/SecondLife.nib/objects.xib
+++ b/linden/indra/newview/packaging/mac/viewer.nib/objects.xib
@@ -6,17 +6,17 @@
6 </object> 6 </object>
7 <array count="31" name="allObjects"> 7 <array count="31" name="allObjects">
8 <object class="IBCarbonMenu" id="29"> 8 <object class="IBCarbonMenu" id="29">
9 <string name="title">Imprudence</string> 9 <string name="title">meta-impy</string>
10 <array count="4" name="items"> 10 <array count="4" name="items">
11 <object class="IBCarbonMenuItem" id="182"> 11 <object class="IBCarbonMenuItem" id="182">
12 <string name="title">Imprudence</string> 12 <string name="title">meta-impy</string>
13 <object name="submenu" class="IBCarbonMenu" id="181"> 13 <object name="submenu" class="IBCarbonMenu" id="181">
14 <string name="title">Imprudence</string> 14 <string name="title">meta-impy</string>
15 <array count="1" name="items"> 15 <array count="1" name="items">
16 <object class="IBCarbonMenuItem" id="183"> 16 <object class="IBCarbonMenuItem" id="183">
17 <boolean name="disabled">TRUE</boolean> 17 <boolean name="disabled">TRUE</boolean>
18 <boolean name="updateSingleItem">TRUE</boolean> 18 <boolean name="updateSingleItem">TRUE</boolean>
19 <string name="title">About Imprudence</string> 19 <string name="title">About meta-impy</string>
20 <int name="keyEquivalentModifier">0</int> 20 <int name="keyEquivalentModifier">0</int>
21 <ostype name="command">abou</ostype> 21 <ostype name="command">abou</ostype>
22 </object> 22 </object>
diff --git a/linden/indra/newview/pipeline.cpp b/linden/indra/newview/pipeline.cpp
index ae7461c..a13a605 100644
--- a/linden/indra/newview/pipeline.cpp
+++ b/linden/indra/newview/pipeline.cpp
@@ -1783,6 +1783,24 @@ void LLPipeline::shiftObjects(const LLVector3 &offset)
1783 } 1783 }
1784 mShiftList.resize(0); 1784 mShiftList.resize(0);
1785 1785
1786
1787 // This is a workaround for the "TP more than 4096 sims" bug.
1788 // This workaround is the difference between "can't see anything" and "can't see some prims close to you".
1789 // Sa it's a worthwhile workaround for now, pending further investigation.
1790 // The actual problem is deeper.
1791 // According to my notes, the actual bug is in void LLSpatialGroup::shift(const LLVector3 &offset), or deeper.
1792 // The original workaround came from Mana Janus TWO YEARS ago, as mentioned in https://jira.secondlife.com/browse/SVC-2941?
1793 // I've just refined the placement of the workaround, in an effort to track down the real problem.
1794 // onefang, from the meta-impy viewer.
1795 LLVector3 offsetOC = offset;
1796 // don't shift objects, if teleporting more than about 4000 sims, as
1797 // for long teleports shifting objects garbles the view at the target region
1798// if (offsetOC.lengthSquared() > 6.5e10f) // roughly 1000 sims, fer easier testing
1799 if (offsetOC.lengthSquared() > 1.05e12f) // 4000 sims, though the trigger point is being reported as 4096.
1800 offsetOC = LLVector3::zero;
1801 // End of workaround, except where offsetOC is used below.
1802
1803
1786 for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); 1804 for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin();
1787 iter != LLWorld::getInstance()->getRegionList().end(); ++iter) 1805 iter != LLWorld::getInstance()->getRegionList().end(); ++iter)
1788 { 1806 {
@@ -1792,7 +1810,7 @@ void LLPipeline::shiftObjects(const LLVector3 &offset)
1792 LLSpatialPartition* part = region->getSpatialPartition(i); 1810 LLSpatialPartition* part = region->getSpatialPartition(i);
1793 if (part) 1811 if (part)
1794 { 1812 {
1795 part->shift(offset); 1813 part->shift(offsetOC);
1796 } 1814 }
1797 } 1815 }
1798 } 1816 }
diff --git a/linden/indra/newview/primbackup.cpp b/linden/indra/newview/primbackup.cpp
index 9c3ab7f..fd20b7e 100644
--- a/linden/indra/newview/primbackup.cpp
+++ b/linden/indra/newview/primbackup.cpp
@@ -6,7 +6,7 @@
6#include <fstream> 6#include <fstream>
7#include <sstream> 7#include <sstream>
8 8
9// linden library includes 9// viewer library includes
10#include "llfilepicker.h" 10#include "llfilepicker.h"
11#include "indra_constants.h" 11#include "indra_constants.h"
12#include "llsdserialize.h" 12#include "llsdserialize.h"
@@ -370,14 +370,26 @@ void PrimBackup::exportObject()
370 gIdleCallbacks.addFunction(exportWorker, NULL); 370 gIdleCallbacks.addFunction(exportWorker, NULL);
371} 371}
372 372
373// This is the central place where exporting permissions checks are done.
374
373// static 375// static
374bool PrimBackup::validatePerms(const LLPermissions *item_permissions) 376bool PrimBackup::validatePerms(const LLPermissions *item_permissions)
375{ 377{
378 // Exporting other content) from Second Life
379 // without checking creator is a violation of the Second Life
380 // Policy on Third-Party Viewers and Terms of Service.
381 // Coz LL are paranoid about other grids getting useful content.
382 // This is probably illegal with respect to open source content,
383 // it usually has licenses designed to prevent third parties (LL)
384 // from restricting copying.
385 // This is the meta-impy viewer, we don't care about LL's broken policies
386 // and we really don't care for LL imposing their own restrictions
387 // on content that the content author did not want.
376 if(gHippoGridManager->getConnectedGrid()->isSecondLife()) 388 if(gHippoGridManager->getConnectedGrid()->isSecondLife())
377 { 389 {
378 // In Second Life, you must be the creator to be permitted to export the asset. 390 // In Second Life, you must be the creator to be permitted to export the asset.
379 return (gAgent.getID() == item_permissions->getOwner() && 391 return (gAgent.getID() == item_permissions->getOwner() &&
380 gAgent.getID() == item_permissions->getCreator() && 392 //gAgent.getID() == item_permissions->getCreator() &&
381 (PERM_ITEM_UNRESTRICTED & item_permissions->getMaskOwner()) == PERM_ITEM_UNRESTRICTED); 393 (PERM_ITEM_UNRESTRICTED & item_permissions->getMaskOwner()) == PERM_ITEM_UNRESTRICTED);
382 } 394 }
383 else 395 else
@@ -516,9 +528,6 @@ void PrimBackup::exportWorker(void *userdata)
516 528
517 case EXPORT_TEXTURES: 529 case EXPORT_TEXTURES:
518 { 530 {
519 // Exporting object textures (or other content) from Second Life
520 // without checking creator is a violation of the Second Life
521 // Policy on Third-Party Viewers and Terms of Service.
522 if (PrimBackup::getInstance()->mNextTextureReady == false) 531 if (PrimBackup::getInstance()->mNextTextureReady == false)
523 return; 532 return;
524 533
diff --git a/linden/indra/newview/res-sdl/ll_icon.BMP b/linden/indra/newview/res-sdl/ll_icon.BMP
new file mode 100644
index 0000000..4a44aaf
--- /dev/null
+++ b/linden/indra/newview/res-sdl/ll_icon.BMP
Binary files differ
diff --git a/linden/indra/newview/res-sdl/meta-impy_icon.BMP b/linden/indra/newview/res-sdl/meta-impy_icon.BMP
new file mode 100644
index 0000000..c3f4887
--- /dev/null
+++ b/linden/indra/newview/res-sdl/meta-impy_icon.BMP
Binary files differ
diff --git a/linden/indra/newview/res/meta-impy_icon.png b/linden/indra/newview/res/meta-impy_icon.png
new file mode 100644
index 0000000..8795fa7
--- /dev/null
+++ b/linden/indra/newview/res/meta-impy_icon.png
Binary files differ
diff --git a/linden/indra/newview/res/viewerRes.rc b/linden/indra/newview/res/viewerRes.rc
index edeee92..85603cf 100644
--- a/linden/indra/newview/res/viewerRes.rc
+++ b/linden/indra/newview/res/viewerRes.rc
@@ -74,7 +74,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE
74FONT 8, "MS Sans Serif" 74FONT 8, "MS Sans Serif"
75BEGIN 75BEGIN
76 ICON IDI_LL_ICON,IDC_STATIC,7,7,20,20 76 ICON IDI_LL_ICON,IDC_STATIC,7,7,20,20
77 LTEXT "Loading Imprudence...",666,36,13,91,8 77 LTEXT "Loading meta-impy...",666,36,13,91,8
78END 78END
79 79
80 80
@@ -154,13 +154,13 @@ BEGIN
154 BEGIN 154 BEGIN
155 BLOCK "040904b0" 155 BLOCK "040904b0"
156 BEGIN 156 BEGIN
157 VALUE "CompanyName", "Imprudence Viewer Project" 157 VALUE "CompanyName", "meta-impy Viewer Project"
158 VALUE "FileDescription", "Imprudence" 158 VALUE "FileDescription", "meta-impy"
159 VALUE "FileVersion", "1.4.0.3 exp 1" 159 VALUE "FileVersion", "1.4.0 exp 1"
160 VALUE "InternalName", "Imprudence" 160 VALUE "InternalName", "meta-impy"
161 VALUE "OriginalFilename", "imprudence.exe" 161 VALUE "OriginalFilename", "meta-impy.exe"
162 VALUE "ProductName", "Imprudence" 162 VALUE "ProductName", "meta-impy"
163 VALUE "ProductVersion", "1.4.0.3 exp 1" 163 VALUE "ProductVersion", "1.4.0 exp 1"
164 END 164 END
165 END 165 END
166 BLOCK "VarFileInfo" 166 BLOCK "VarFileInfo"
diff --git a/linden/indra/newview/skins/dark/colors_base.xml b/linden/indra/newview/skins/dark/colors_base.xml
index 19a3b72..cbf1075 100644
--- a/linden/indra/newview/skins/dark/colors_base.xml
+++ b/linden/indra/newview/skins/dark/colors_base.xml
@@ -171,7 +171,7 @@
171<ParcelTextColor value="0, 200, 100, 200" /> <!-- Parcel name on menu bar, normal state --> 171<ParcelTextColor value="0, 200, 100, 200" /> <!-- Parcel name on menu bar, normal state -->
172<ParcelHoverColor value="0, 200, 100, 255" /> <!-- Parcel name on menu bar, hover state --> 172<ParcelHoverColor value="0, 200, 100, 255" /> <!-- Parcel name on menu bar, hover state -->
173<TimeTextColor value="255, 255, 255, 255" /> <!-- SL Time on menu bar --> 173<TimeTextColor value="255, 255, 255, 255" /> <!-- SL Time on menu bar -->
174<BalanceTextColor value="0, 255, 0, 255"/> <!-- Linden dollar balance on menu bar --> 174<BalanceTextColor value="0, 255, 0, 255"/> <!-- Currency balance on menu bar -->
175<HealthTextColor value="255, 255, 255, 255"/> <!-- Damage meter text on menu bar --> 175<HealthTextColor value="255, 255, 255, 255"/> <!-- Damage meter text on menu bar -->
176<GroupOverTierColor value="110, 15, 15, 255" /> <!-- Warning text in Group Info window --> 176<GroupOverTierColor value="110, 15, 15, 255" /> <!-- Warning text in Group Info window -->
177<FilterBackgroundColor value="0, 0, 20, 255"/> <!-- Matching region of Inventory search text --> 177<FilterBackgroundColor value="0, 0, 20, 255"/> <!-- Matching region of Inventory search text -->
diff --git a/linden/indra/newview/skins/default/colors_base.xml b/linden/indra/newview/skins/default/colors_base.xml
index f97267a..92ffae7 100644
--- a/linden/indra/newview/skins/default/colors_base.xml
+++ b/linden/indra/newview/skins/default/colors_base.xml
@@ -105,7 +105,7 @@
105<ParcelTextColor value="144, 165, 208, 255" /> <!-- Parcel name on menu bar, normal state --> 105<ParcelTextColor value="144, 165, 208, 255" /> <!-- Parcel name on menu bar, normal state -->
106<ParcelHoverColor value="255, 255, 255, 255" /> <!-- Parcel name on menu bar, hover state --> 106<ParcelHoverColor value="255, 255, 255, 255" /> <!-- Parcel name on menu bar, hover state -->
107<TimeTextColor value="255, 255, 255, 255" /> <!-- SL Time on menu bar --> 107<TimeTextColor value="255, 255, 255, 255" /> <!-- SL Time on menu bar -->
108<BalanceTextColor value="0, 255, 0, 255" /> <!-- Linden dollar balance on menu bar --> 108<BalanceTextColor value="0, 255, 0, 255" /> <!-- Currency balance on menu bar -->
109<HealthTextColor value="255, 255, 255, 255" /> <!-- Damage meter text on menu bar --> 109<HealthTextColor value="255, 255, 255, 255" /> <!-- Damage meter text on menu bar -->
110 110
111<!-- TOOLTIPS --> 111<!-- TOOLTIPS -->
diff --git a/linden/indra/newview/skins/default/html/en-us/loading-error/index.html b/linden/indra/newview/skins/default/html/en-us/loading-error/index.html
index 37c8405..2f6ccf7 100644
--- a/linden/indra/newview/skins/default/html/en-us/loading-error/index.html
+++ b/linden/indra/newview/skins/default/html/en-us/loading-error/index.html
@@ -21,7 +21,7 @@ a:hover {color:#ff7900;text-decoration:underline;}
21 21
22 <tbody style="height: 100px; overflow: scroll"> 22 <tbody style="height: 100px; overflow: scroll">
23 <tr> 23 <tr>
24 Imprudence can't establish a connection to the login screen of the grid you have chosen. 24 This viewer can't establish a connection to the login screen of the grid you have chosen.
25 </tr> 25 </tr>
26 <tr> 26 <tr>
27 <td> 27 <td>
@@ -38,7 +38,7 @@ a:hover {color:#ff7900;text-decoration:underline;}
38 <li>for OpenSimulator and Second Life: check the grid status page of the grid, and</li> 38 <li>for OpenSimulator and Second Life: check the grid status page of the grid, and</li>
39 <li>if the grid status page of the grid says online check your internet connection. 39 <li>if the grid status page of the grid says online check your internet connection.
40 If your computer or network is protected by a firewall or proxy, make sure that 40 If your computer or network is protected by a firewall or proxy, make sure that
41 Imprudence is permitted to access the network</li> 41 meta-impy is permitted to access the network</li>
42 42
43 </ul> 43 </ul>
44 </td> 44 </td>
diff --git a/linden/indra/newview/skins/default/html/en-us/loading/BecomeOne.png b/linden/indra/newview/skins/default/html/en-us/loading/BecomeOne.png
new file mode 100644
index 0000000..79a7d47
--- /dev/null
+++ b/linden/indra/newview/skins/default/html/en-us/loading/BecomeOne.png
Binary files differ
diff --git a/linden/indra/newview/skins/default/html/en-us/loading/loading.html b/linden/indra/newview/skins/default/html/en-us/loading/loading.html
index 97174b0..580ddf4 100644
--- a/linden/indra/newview/skins/default/html/en-us/loading/loading.html
+++ b/linden/indra/newview/skins/default/html/en-us/loading/loading.html
@@ -2,7 +2,7 @@
2<table width="100%" height="100%" border="0"> 2<table width="100%" height="100%" border="0">
3 <tr> 3 <tr>
4 <td align="center" valign="middle" style="font-size:0.8em;"> 4 <td align="center" valign="middle" style="font-size:0.8em;">
5 <img src="imprudence_loading.png" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;loading... 5 <img src="BecomeOne.png" align="absmiddle"><br/>&nbsp;&nbsp;&nbsp;loading...
6 </td> 6 </td>
7 </tr> 7 </tr>
8</table> 8</table>
diff --git a/linden/indra/newview/skins/default/html/en-us/loading/meta-impy_loading.png b/linden/indra/newview/skins/default/html/en-us/loading/meta-impy_loading.png
new file mode 100644
index 0000000..7479f9e
--- /dev/null
+++ b/linden/indra/newview/skins/default/html/en-us/loading/meta-impy_loading.png
Binary files differ
diff --git a/linden/indra/newview/skins/default/html/unabletoconnect.png b/linden/indra/newview/skins/default/html/unabletoconnect.png
index f9ea7a2..1383516 100644
--- a/linden/indra/newview/skins/default/html/unabletoconnect.png
+++ b/linden/indra/newview/skins/default/html/unabletoconnect.png
Binary files differ
diff --git a/linden/indra/newview/skins/default/textures/74ba3584-58ea-9984-5b76-62d37942ab77.tga b/linden/indra/newview/skins/default/textures/74ba3584-58ea-9984-5b76-62d37942ab77.tga
new file mode 100644
index 0000000..0fc1afb
--- /dev/null
+++ b/linden/indra/newview/skins/default/textures/74ba3584-58ea-9984-5b76-62d37942ab77.tga
Binary files differ
diff --git a/linden/indra/newview/skins/default/textures/b2ef2d31-9714-a07b-6ca7-31638166364b.tga b/linden/indra/newview/skins/default/textures/b2ef2d31-9714-a07b-6ca7-31638166364b.tga
new file mode 100644
index 0000000..7358e86
--- /dev/null
+++ b/linden/indra/newview/skins/default/textures/b2ef2d31-9714-a07b-6ca7-31638166364b.tga
Binary files differ
diff --git a/linden/indra/newview/skins/default/textures/icon_top_pick.tga b/linden/indra/newview/skins/default/textures/icon_top_pick.tga
index 0b34882..7fe119a 100644
--- a/linden/indra/newview/skins/default/textures/icon_top_pick.tga
+++ b/linden/indra/newview/skins/default/textures/icon_top_pick.tga
Binary files differ
diff --git a/linden/indra/newview/skins/default/textures/skin_thumbnail_white_meta7.png b/linden/indra/newview/skins/default/textures/skin_thumbnail_white_meta7.png
new file mode 100644
index 0000000..e93ea4c
--- /dev/null
+++ b/linden/indra/newview/skins/default/textures/skin_thumbnail_white_meta7.png
Binary files differ
diff --git a/linden/indra/newview/skins/default/xui/da/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/da/floater_report_bug.xml
index c070c07..0fad222 100644
--- a/linden/indra/newview/skins/default/xui/da/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/da/floater_report_bug.xml
@@ -60,8 +60,8 @@
60 <combo_item name="MissingContent"> 60 <combo_item name="MissingContent">
61 Mangler Indhold 61 Mangler Indhold
62 </combo_item> 62 </combo_item>
63 <combo_item name="LindenDollars(L$)"> 63 <combo_item name="GridCurrency">
64 Linden Dollars (L$) 64 Grid currency
65 </combo_item> 65 </combo_item>
66 <combo_item name="Permissions"> 66 <combo_item name="Permissions">
67 Rettigheder 67 Rettigheder
diff --git a/linden/indra/newview/skins/default/xui/da/menu_viewer.xml b/linden/indra/newview/skins/default/xui/da/menu_viewer.xml
index 8bc99f2..2e01b3d 100644
--- a/linden/indra/newview/skins/default/xui/da/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/da/menu_viewer.xml
@@ -202,6 +202,6 @@
202 <menu_item_separator label="-----------" name="separator9"/> 202 <menu_item_separator label="-----------" name="separator9"/>
203 <menu_item_call label="Anmeld fejl..." name="Report Bug..."/> 203 <menu_item_call label="Anmeld fejl..." name="Report Bug..."/>
204 </menu> 204 </menu>
205 <menu_item_call label="Om Second Life..." name="About Second Life..."/> 205 <menu_item_call label="Om meta-impy..." name="About meta-impy..."/>
206 </menu> 206 </menu>
207</menu_bar> 207</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/da/panel_group_general.xml b/linden/indra/newview/skins/default/xui/da/panel_group_general.xml
index 4281ec6..3765935 100644
--- a/linden/indra/newview/skins/default/xui/da/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/da/panel_group_general.xml
@@ -73,8 +73,6 @@ Bevæg din mus over mulighederne for mere hjælp.
73 Henter medlemsinformationer 73 Henter medlemsinformationer
74 </string> 74 </string>
75 <string name="confirm_group_create_str"> 75 <string name="confirm_group_create_str">
76 Creating this group will cost L$100. 76Er du virkelig, virkelig, VIRKELIG sikker på, at du vil bruge M$0 på at lave denne gruppe?
77Er du virkelig, virkelig, VIRKELIG sikker på, at du vil bruge L$100 på at lave denne gruppe?
78Du skal være opmærksom på, at hvis ingen andre indmelder sig i denne gruppe indenfor 48 timer, så vil gruppen blive opløst, og gruppens navn vil ikke være tilgængelig i fremtiden.
79 </string> 77 </string>
80</panel> 78</panel>
diff --git a/linden/indra/newview/skins/default/xui/de/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/de/floater_report_bug.xml
index fdcde20..863c3e9 100644
--- a/linden/indra/newview/skins/default/xui/de/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/de/floater_report_bug.xml
@@ -61,8 +61,8 @@ dann auf das Objekt:
61 <combo_item name="MissingContent"> 61 <combo_item name="MissingContent">
62 Fehlender Inhalt 62 Fehlender Inhalt
63 </combo_item> 63 </combo_item>
64 <combo_item name="LindenDollars(L$)"> 64 <combo_item name="GridCurrency">
65 Linden Dollar (L$) 65 Grid currency
66 </combo_item> 66 </combo_item>
67 <combo_item name="Permissions"> 67 <combo_item name="Permissions">
68 Berechtigungen 68 Berechtigungen
diff --git a/linden/indra/newview/skins/default/xui/de/menu_viewer.xml b/linden/indra/newview/skins/default/xui/de/menu_viewer.xml
index e1fb1ca..0a7dec2 100644
--- a/linden/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -214,6 +214,6 @@
214 <menu_item_separator label="-----------" name="separator9"/> 214 <menu_item_separator label="-----------" name="separator9"/>
215 <menu_item_call label="Fehler melden..." name="Report Bug..."/> 215 <menu_item_call label="Fehler melden..." name="Report Bug..."/>
216 </menu> 216 </menu>
217 <menu_item_call label="Ãœber Second Life..." name="About Second Life..."/> 217 <menu_item_call label="Ãœber meta-impy..." name="About meta-impy..."/>
218 </menu> 218 </menu>
219</menu_bar> 219</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/de/notifications.xml b/linden/indra/newview/skins/default/xui/de/notifications.xml
index 3009515..aedfe41 100644
--- a/linden/indra/newview/skins/default/xui/de/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/de/notifications.xml
@@ -1442,21 +1442,6 @@ Die Option zum Austritt aus einer Gruppe finden Sie unter „Bearbeiten“ &gt;
1442 <button name="Cancel" text="Abbrechen"/> 1442 <button name="Cancel" text="Abbrechen"/>
1443 </form> 1443 </form>
1444 </notification> 1444 </notification>
1445 <notification label="Linden-Grundstück ändern" name="ChangeLindenEstate">
1446 Sie sind im Begriff, ein Grundstück in Linden-Besitz (Mainland, Teen-Raster, Orientierung usw.) zu verändern.
1447
1448Dies ist ÄUSSERST GEFÄHRLICH, da es grundlegende Auswirkungen auf das Benutzererlebnis hat. Auf dem Mainland werden tausende Regionen geändert, was den Spaceserver stark belastet.
1449
1450Fortfahren?
1451 <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
1452 </notification>
1453 <notification label="Zugang zu Linden-Grundstück ändern" name="ChangeLindenAccess">
1454 Sie sind im Begriff, die Zugangsliste für ein Grundstück in Linden-Besitz (Mainland, Teen-Raster, Orientierung usw.) zu verändern.
1455
1456Dies ist GEFÄHRLICH und sollte nur erfolgen, um Objekte/L$ per Hack in und aus dem Raster zu entfernen.
1457Tausende Regionen werden verändert und der Spaceserver wird dadurch stark belastet.
1458 <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
1459 </notification>
1460 <notification label="Grundstück wählen" name="EstateAllowedAgentAdd"> 1445 <notification label="Grundstück wählen" name="EstateAllowedAgentAdd">
1461 Nur für dieses Grundstück oder für alle [ALL_ESTATES] zur Erlaubnisliste hinzufügen? 1446 Nur für dieses Grundstück oder für alle [ALL_ESTATES] zur Erlaubnisliste hinzufügen?
1462 <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/> 1447 <usetemplate canceltext="Abbrechen" name="yesnocancelbuttons" notext="Alle Grundstücke" yestext="Dieses Grundstück"/>
diff --git a/linden/indra/newview/skins/default/xui/de/panel_group_general.xml b/linden/indra/newview/skins/default/xui/de/panel_group_general.xml
index ce19248..0be201b 100644
--- a/linden/indra/newview/skins/default/xui/de/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/de/panel_group_general.xml
@@ -73,8 +73,6 @@ Bewegen Sie die Maus über die Optionen, um weitere Informationen anzuzeigen.
73 Mitgliedsdaten werden abgerufen 73 Mitgliedsdaten werden abgerufen
74 </string> 74 </string>
75 <string name="confirm_group_create_str"> 75 <string name="confirm_group_create_str">
76 Die Gründung dieser Gruppe kostet 100 L$. 76Sind Sie wirklich, WIRKLICH sicher, dass Sie 0 M$ für die Gründung dieser Gruppe ausgeben möchten?
77Sind Sie wirklich, WIRKLICH sicher, dass Sie 100 L$ für die Gründung dieser Gruppe ausgeben möchten?
78Falls in den nächsten 48 Stunden niemand sonst dieser Gruppe beitritt, wird sie aufgelöst und der Name der Gruppe wird nicht mehr verfügbar sein.
79 </string> 77 </string>
80</panel> 78</panel>
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 fa8251c..4ec46e2 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
@@ -2,7 +2,7 @@
2<floater can_close="true" can_drag_on_left="false" can_minimize="true" 2<floater can_close="true" can_drag_on_left="false" can_minimize="true"
3 can_resize="false" height="440" min_height="100" min_width="100" 3 can_resize="false" height="440" min_height="100" min_width="100"
4 name="floater_about" rect_control="FloaterAboutRect" 4 name="floater_about" rect_control="FloaterAboutRect"
5 title="About Second Life" width="470"> 5 title="About grid viewer" width="470">
6 <tab_container 6 <tab_container
7 follows="all" 7 follows="all"
8 bottom="10" 8 bottom="10"
@@ -30,36 +30,32 @@
30 height="386" 30 height="386"
31 help_topic="about_credits_tab" 31 help_topic="about_credits_tab"
32 name="credits_panel"> 32 name="credits_panel">
33 <text_editor bottom="6" embedded_items="false" 33 <text_editor bottom="6" embedded_items="false"
34 follows="left|top|right|bottom" font="SansSerifSmall" height="374" left="6" 34 follows="left|top|right|bottom" font="SansSerifSmall" height="374" left="6"
35 max_length="65536" mouse_opaque="true" name="credits_editor" width="423" 35 max_length="65536" mouse_opaque="true" name="credits_editor" width="423"
36 word_wrap="true"> 36 word_wrap="true">
37 The Imprudence Viewer was rocked hard by: 37 This meta-impy viewer is based on the Imprudence viewer, and brought to you by Dave and Chris.
38 Armin Weatherwax, Boroondas Gupte, CodeBastard Redgrave, Elektra Hesse, Jacek Antonelli, McCabe Maxsted, and onefang rejected.
39 38
40 http://kokuaviewer.org/ 39 http://onefang.net/redmine/ for bug reports, feature requests, bitching, and downloads.
40 http://github.com/onefang/meta-impy for the source code.
41 41
42 Imprudence is so awesome thanks to contributions from many generous people:
43 42
44 For their patches and code contributions, we thank Admiral Admiral, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Angus Boyd, Ansariel Hiller, Archimedies Plutonian, Ardy Lay, Asuka Neely, Balp Allen, Carjay McGinnis, Chalice Yao, Dale Glass, Damian Delacrois, Danny Nolan, Eryn, Felix Duesenburg, Frederick Martian, Geneko Nemeth, Grandma Bates, Hazim Gazov, Henri Beauchamp, Hg Beeks, Hiroshi Kumaki, Johnnie Carling, Lord Drakeo, Kakurady Drakenar, Katharine Berry, Kentron Katana, KirstenLee Cinquetti, Kitty Barnett, Latif Khalifa, Lance Corrimal, Lilly Zenovka, Makomk Makosen, Mana Janus, Matthew Dowd, Michelle2 Zenovka, Mimika Oh, Mm Alder, Nemurimasu Neiro, Nicholaz Beresford, Nicky Perian, Patrick Sapinski, Paul Churchill, Peter Lameth, Qarl Fizz, Revolution Smythe, Robin Cornelius, Seraph Linden, Shyotl Kuhr, Siana Gearz, SignpostMarv Martin, Stephen Zenith, TankMaster Finesmith, Thickbrick Sleaford, Thomas Shikami, Tom Meta, Tonya Souther, tx Oh, Vaalith Jinn, Vadim Bigbear, Vex Streeter, WhiteStar Magic, Zi Ree, and Zwagoth Klaar. 43 The Imprudence Viewer was rocked hard by:
44 Armin Weatherwax, Boroondas Gupte, CodeBastard Redgrave, Elektra Hesse, Jacek Antonelli, McCabe Maxsted, and onefang rejected.
45 45
46 For their WindLight presets, we thank Ana Lutetia, CodeBastard Redgrave, and Torley Linden. 46 http://kokuaviewer.org/
47 47
48 Thanks also to the developer(s) of the Ascent Viewer, Astra Viewer, Cool VL Viewer, Dolphin Viewer, Emerald Viewer, FrozenGlobe Viewer, Hippo Viewer, Meerkat Viewer, Meta7 Viewer, Phoenix Viewer, Singularity Viewer and Snowglobe Viewer for viewer enhancements we have incorporated, as well as Kitty Barnett for RLVa. Special thanks to the folks at Linden Lab for releasing the viewer source, without which this endeavor would have been impossible. 48 Imprudence is so awesome thanks to contributions from many generous people:
49 49
50 For a complete list of who did what, read the release notes! 50 For their patches and code contributions, we thank Admiral Admiral, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Angus Boyd, Ansariel Hiller, Archimedies Plutonian, Ardy Lay, Asuka Neely, Balp Allen, Carjay McGinnis, Chalice Yao, Dale Glass, Damian Delacrois, Danny Nolan, Eryn, Felix Duesenburg, Frederick Martian, Geneko Nemeth, Grandma Bates, Hazim Gazov, Henri Beauchamp, Hg Beeks, Hiroshi Kumaki, Johnnie Carling, Lord Drakeo, Kakurady Drakenar, Katharine Berry, Kentron Katana, KirstenLee Cinquetti, Kitty Barnett, Latif Khalifa, Lance Corrimal, Lilly Zenovka, Makomk Makosen, Mana Janus, Matthew Dowd, Michelle2 Zenovka, Mimika Oh, Mm Alder, Nemurimasu Neiro, Nicholaz Beresford, Nicky Perian, Patrick Sapinski, Paul Churchill, Peter Lameth, Qarl Fizz, Revolution Smythe, Robin Cornelius, Seraph Linden, Shyotl Kuhr, Siana Gearz, SignpostMarv Martin, Stephen Zenith, TankMaster Finesmith, Thickbrick Sleaford, Thomas Shikami, Tom Meta, Tonya Souther, tx Oh, Vaalith Jinn, Vadim Bigbear, Vex Streeter, WhiteStar Magic, Zi Ree, and Zwagoth Klaar.
51 51
52 For their WindLight presets, we thank Ana Lutetia, CodeBastard Redgrave, and Torley Linden.
52 53
53 Second Life Copyright © 1999-2009 Linden Research Inc. 54 Thanks also to the developer(s) of the Ascent Viewer, Astra Viewer, Cool VL Viewer, Dolphin Viewer, Emerald Viewer, FrozenGlobe Viewer, Hippo Viewer, Meerkat Viewer, Meta7 Viewer, Phoenix Viewer, Singularity Viewer and Snowglobe Viewer for viewer enhancements we have incorporated, as well as Kitty Barnett for RLVa. Special thanks to the folks at Linden Lab for releasing the viewer source, without which this endeavor would have been impossible.
54 55
55 Second Life is brought to you by Philip, Tessa, Andrew, Cory, James, Ben, Char, Charlie, Colin, Dan, Daniel, Doug, Eric, Hamlet, Haney, Eve, Hunter, Ian, Jeff, Jennifer, Jim, John, Lee, Mark, Peter, Phoenix, Richard, Robin, Xenon, Steve, Tanya, Eddie, Avi, Frank, Bruce, Aaron, Alice, Bob, Debra, Eileen, Helen, Janet, Louie, Leviathania, Stefan, Ray, Kevin, Tom, Mikeb, MikeT, Burgess, Elena, Tracy, Bill, Todd, Ryan, Zach, Sarah, Nova, Tim, Stephanie, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Magellan, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Ventrella, Jack, Vektor, Iris, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Altruima, Jesse, Teeny, Monroe, Icculus, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Satoko, Yuko, Makiko, Thomas, Harry, Seth, Alexei, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, beez, Milo, Hermia, Red, Thrax, Joe, Sally, Magenta, Mogura, Paul, Jose, Rejean, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Jean, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, dustin, George, Del, Matthew, Cat, Jacqui, Lightfoot, Adrian, Viola, Alfred, Noel, Irfan, Sunil, Yool, Rika, Jane, Xtreme, Frontier, a2, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Gulliver, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Anthony, Jeremy, JP, Jake, Maurice, Madhavi, Leopard, Kyle, Joon, Kari, Bert, Belinda, Jon, Kristi, Bridie, Pramod, KJ, Socrates, Maria, Ivan, Aric, Yamasaki, Adreanne, Jay, MitchK, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Rohn, Colossus, Zen, BigPapi, Brad, Pastrami, Kurz, Mani, Neuro, Jaime, MJ, Rowan, Sgt, Elvis, Gecko, Samuel, Sardonyx, Leo, Bryan, Niko, Soft, Poppy, Rachel, Aki, Angelo, Banzai, Alexa, Sue, CeeLo, Bender, CG, Gillian, Pelle, Nick, Echo, Zara, Christine, Shamiran, Emma, Blake, Keiko, Plexus, Joppa, Sidewinder, Erica, Ashlei, Twilight, Kristen, Brett, Q, Enus, Simon, Bevis, Kraft, Kip, Chandler, Ron, LauraP, Ram, KyleJM, Scouse, Prospero, Melissa, Marty, Nat, Hamilton, Kend, Lordan, Jimmy, Kosmo, Seraph, Green, Ekim, Wiggo, JT, Rome, Doris, Miz, Benoc, Whump, Trinity, Patch, Kate, TJ, Bao, Joohwan, Christy, Sofia, Matias, Cogsworth, Johan, Oreh, Cheah, Angela, Brandy, Mango, Lan, Aleks, Gloria, Heidy, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Winnie, Stella, Milton, Rothman, Niall, Marin, Allison, Katie, Dawn, Katt, Dusty, Kalpana, Judy, Andrea, Ambroff, Infinity, Gail, Rico, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Vidtuts, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, Austin, Bradford, Si, Keira, H, Caitlin, Dita, Makai, Jenn, Ann, Meredith, Clare, Joy, Praveen, Cody, Edmund, Ruthe, Sirena, Gayathri, Spider, FJ, Davidoff, Tian, Jennie, Louise, Oskar, Landon, Noelle, Jarv, Ingrid, Al, Sommer, Doc, Aria, Huin, Gray, Lili, Vir, DJ, Yang, T, Simone, Maestro, Scott, Charlene, Quixote, Amanda, Susan, Zed, Anne, Enkidu, Esbee, Joroan, Katelin, Roxie, Tay, Scarlet, Kevin, Johnny, Wolfgang, Andren, Bob, Howard, Merov, Rand, Ray, Michon, Newell, Galen, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl and many others. 56 For a complete list of who did what, read the release notes!
56 57
57 Thank you to the following residents for helping to ensure that this is the best version yet: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, 58 Many thanks to the many residents in many grids who contributed towards this viewer in countless ways.
58 Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida,
59 Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao,
60 Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi,
61 Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky,
62 Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar
63 59
64 3Dconnexion SDK Copyright © 1992-2007 3Dconnexion 60 3Dconnexion SDK Copyright © 1992-2007 3Dconnexion
65 APR Copyright © 2000-2004 The Apache Software Foundation 61 APR Copyright © 2000-2004 The Apache Software Foundation
@@ -85,9 +81,10 @@
85 Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C) 81 Voice chat Audio coding: Polycom(R) Siren14(TM) (ITU-T Rec. G.722.1 Annex C)
86 82
87 83
88 Begin, be bold and venture to be wise. -- Horace 84 I live in the future, just waiting for the rest of you to catch up. -- onefang Rejected
85
86 When there are N ways of doing anything, LL implements N+1 ways. Their binary digits have more than two values - "one", "zero", "perhaps", "maybe", "ummm", "er", and "what was the question?"
89 87
90 If you don't like something, change it. If you can't change it, change your attitude. -- Maya Angelou
91 </text_editor> 88 </text_editor>
92 </panel> 89 </panel>
93 </tab_container> 90 </tab_container>
@@ -95,3 +92,4 @@
95 You are at [POSITION] 92 You are at [POSITION]
96 </string> 93 </string>
97</floater> 94</floater>
95
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 ea64f82..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
@@ -1420,14 +1420,14 @@ Select the thumbnail to choose a different texture.
1420 </text> 1420 </text>
1421 <check_box bottom_delta="-20" enabled="true" follows="top|left" font="SansSerifSmall" 1421 <check_box bottom_delta="-20" enabled="true" follows="top|left" font="SansSerifSmall"
1422 height="16" initial_value="false" 1422 height="16" initial_value="false"
1423 label="Residents who have not given payment info to Linden Lab" 1423 label="Residents who have not given payment info"
1424 left_delta="0" mouse_opaque="true" name="limit_payment" radio_style="false" 1424 left_delta="0" mouse_opaque="true" name="limit_payment" radio_style="false"
1425 tool_tip="Ban unidentified residents." width="278" /> 1425 tool_tip="Ban unidentified residents." width="278" />
1426 <check_box bottom_delta="-20" enabled="true" follows="top|left" font="SansSerifSmall" 1426 <check_box bottom_delta="-20" enabled="true" follows="top|left" font="SansSerifSmall"
1427 height="16" initial_value="false" 1427 height="16" initial_value="false"
1428 label="Residents who are not age verified adults" left_delta="0" 1428 label="Residents who are not age verified adults" left_delta="0"
1429 mouse_opaque="true" name="limit_age_verified" radio_style="false" 1429 mouse_opaque="true" name="limit_age_verified" radio_style="false"
1430 tool_tip="Ban residents who have not verified their age. See support.secondlife.com for more information." 1430 tool_tip="Ban residents who have not verified their age."
1431 width="278" /> 1431 width="278" />
1432 <string name="estate_override"> 1432 <string name="estate_override">
1433 One or more of these options is set at the estate level 1433 One or more of these options is set at the estate level
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml b/linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml
index 4ccfe60..96f8f1e 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_instant_message.xml
@@ -37,6 +37,42 @@
37 <string name="unavailable_text_label"> 37 <string name="unavailable_text_label">
38 Text chat is not available for this call. 38 Text chat is not available for this call.
39 </string> 39 </string>
40 <!--[$PLOTR$]-->
41 <string name="otr_empty_string"></string>
42 <string name="otr_gen_key_please_wait">OTR is generating keys. This will happen once for each of your avatars and should take less than 45 seconds.</string>
43 <string name="otr_generic_name">Your buddy</string>
44 <string name="otr_err_send_in_finished">[NAME] has ended the private conversation, so your message was not sent. You should restart the private conversation, or end the private conversation.</string>
45 <string name="otr_err_deacivated">OTR has been deactivated by preferences (edit > preferences > Emerald tab > IM tab)</string>
46 <string name="otr_err_failed_sending">Unable to encrypt your message for some reason; it has not been sent.</string>
47 <string name="otr_err_failed_starting">Unable to start private conversation.</string>
48 <string name="otr_err_offline_start">[NAME] appears offline; OTR will not try to start a private conversation.</string>
49 <string name="otr_err_offline_send">[NAME] appears offline; You may "End private conversation" and send your message un-encrypted.</string>
50 <string name="otr_prog_I_start">Attempting to start a private conversation with [NAME].</string>
51 <string name="otr_prog_I_stop_unverified">You have ended the unverified conversation with [NAME].</string>
52 <string name="otr_prog_I_stop_private" >You have ended the private conversation with [NAME].</string>
53 <string name="otr_prog_I_stop" >You have ended the OTR conversation with [NAME].</string>
54 <string name="otr_prog_they_start">[NAME] is attempting to start a private conversation.</string>
55 <string name="otr_prog_they_stop_unverified">[NAME] has ended the unverified conversation.</string>
56 <string name="otr_prog_they_stop_private" >[NAME] has ended the private conversation.</string>
57 <string name="otr_prog_they_stop" >[NAME] has ended the OTR conversation.</string>
58 <string name="otr_log_authenticated" >[NAME] is now authenticated.</string>
59 <string name="otr_log_start_private" >Private conversation with [NAME] started.</string>
60 <string name="otr_log_start_unverified">Unverified conversation started. [NAME] has not been authenticated, you should "authenticate buddy," see http://www.cypherpunks.ca/otr/help/3.2.0/authenticate.php</string>
61 <string name="otr_log_gone_insecure">Private conversation ended.</string>
62 <string name="otr_log_still_private" >Private conversation with [NAME] resumed.</string>
63 <string name="otr_log_still_unverified">Unverified conversation resumed. [NAME] has not been authenticated, you should "authenticate buddy," see http://www.cypherpunks.ca/otr/help/3.2.0/authenticate.php</string>
64 <string name="otr_not_private">OTR: Not Private</string>
65 <string name="otr_unverified" >OTR: Unverified</string>
66 <string name="otr_private" >OTR: Private</string>
67 <string name="otr_finished" >OTR: Finished</string>
68 <string name="otr_start" >Start private conversation</string>
69 <string name="otr_refresh">Refresh private conversation</string>
70 <string name="otr_restart">Restart private conversation</string>
71 <string name="otr_stop" >End private conversation</string>
72 <string name="otr_auth" >Authenticate buddy</string>
73 <string name="otr_help" >What is OTR?</string>
74 <string name="otr_levels" >What is this?</string>
75 <!--[/$PLOTR$]-->
40 <string name="add_friend_string"> 76 <string name="add_friend_string">
41 Add Friend 77 Add Friend
42 </string> 78 </string>
@@ -59,6 +95,21 @@
59 image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left" 95 image_overlay="icn_voice-call-end.tga" image_overlay_alignment="left"
60 label="End Call" left_delta="0" name="end_call_btn" pad_right="10" 96 label="End Call" left_delta="0" name="end_call_btn" pad_right="10"
61 visible="false" width="100" /> 97 visible="false" width="100" />
98
99 <flyout_button bottom_delta="0" follows="left|top" height="20" label="OTR: Status" left_delta="5" width="150"
100 list_position="below" mouse_opaque="true" name="otr_btn"
101 tool_tip="Click to change OTR status, or dropdown for other options." >
102 <flyout_button_item value="otr_auth_entry" name="otr_auth_entry">
103 Authenticate buddy
104 </flyout_button_item>
105 <flyout_button_item value="otr_help_entry" name="otr_help_entry">
106 What is OTR?
107 </flyout_button_item>
108 <flyout_button_item value="otr_levels_entry" name="otr_levels_entry">
109 What is this?
110 </flyout_button_item>
111 </flyout_button>
112
62 <text bottom_delta="0" left="-240" height="14" width="230" name="inventory_send" halign="right" 113 <text bottom_delta="0" left="-240" height="14" width="230" name="inventory_send" halign="right"
63 text_color="LabelTextColor" follows="right|top" drop_shadow_visible="true" 114 text_color="LabelTextColor" follows="right|top" drop_shadow_visible="true"
64 bg_visible="false" border_drop_shadow_visible="false" border_visible="false"> 115 bg_visible="false" border_drop_shadow_visible="false" border_visible="false">
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_otr_options.xml b/linden/indra/newview/skins/default/xui/en-us/floater_otr_options.xml
new file mode 100644
index 0000000..9f0d798
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_otr_options.xml
@@ -0,0 +1,44 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<floater name="busy" title="OTR Options"
3 height="175" width="180" min_height="175" min_width="180"
4 follows="top|right" can_close="true" can_drag_on_left="false"
5 can_minimize="true" can_resize="false" can_tear_off="false">
6
7 <button bottom="-40" follows="left|top" font="SansSerifSmall"
8 height="18" right="-10"
9 name="otr_help_btn" width="98" label="What is OTR?"/>
10 <radio_group bottom="-120" draw_border="false" enabled="true" follows="left|top"
11 height="80"
12 left="10" mouse_opaque="true" name="EmeraldUseOTR" width="160">
13 <radio_item type="string" length="1" bottom_delta="-10" enabled="true" height="16"
14 left_delta="0" mouse_opaque="true" name="0" width="98"
15 tool_tip="Require use of OTR in IMs"
16 >Require use of OTR in IMs</radio_item>
17 <radio_item type="string" length="1" bottom_delta="-10" enabled="true" height="16"
18 left_delta="0" mouse_opaque="true" name="1" width="98"
19 tool_tip="Request OTR if available."
20 >Request OTR if available</radio_item>
21 <radio_item type="string" length="1" bottom_delta="-10" enabled="true" height="16"
22 left_delta="0" mouse_opaque="true" name="2" width="98"
23 tool_tip="Accept OTR requests."
24 >Accept OTR requests</radio_item>
25 <radio_item type="string" length="1" bottom_delta="-10" enabled="true" height="16"
26 left_delta="0" mouse_opaque="true" name="3" width="98"
27 tool_tip="Decline use of OTR."
28 >Decline use of OTR</radio_item>
29 </radio_group>
30 <check_box follows="left|top" left="10" bottom_delta="-20" enabled="true"
31 font="SansSerifSmall"
32 height="16" initial_value="false" mouse_opaque="true"
33 name="EmeraldOTRInTypingStop-toggle"
34 radio_style="false" width="98"
35 control_name="EmeraldOTRInTypingStop"
36 tool_tip="Put all OTR encrypted messages into IM_TYPING_STOP packets to prevent encrypted IM's from going to email."
37 label="Use typing_stop for OTR"/>
38
39 <button bottom_delta="-26" follows="top|right" height="22" label="Cancel"
40 right="-10" name="btn_cancel" tool_tip="" enagled="true" width="80" />
41 <button bottom_delta="0" follows="top|right" height="22" label="OK"
42 right="-95" name="btn_ok" tool_tip="" enabled="true" width="80" />
43
44</floater> \ No newline at end of file
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/en-us/floater_report_bug.xml
index 83d7a5c..67b72e5 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_report_bug.xml
@@ -106,8 +106,8 @@
106 <combo_item name="MissingContent" value="21"> 106 <combo_item name="MissingContent" value="21">
107 Missing Content 107 Missing Content
108 </combo_item> 108 </combo_item>
109 <combo_item name="LindenDollars(L$)" value="14"> 109 <combo_item name="GridCurrency" value="14">
110 Linden Dollars (L$) 110 Grid currency
111 </combo_item> 111 </combo_item>
112 <combo_item name="Permissions" value="15"> 112 <combo_item name="Permissions" value="15">
113 Permissions 113 Permissions
diff --git a/linden/indra/newview/skins/default/xui/en-us/floater_world_map.xml b/linden/indra/newview/skins/default/xui/en-us/floater_world_map.xml
index daf217e..314ad20 100644
--- a/linden/indra/newview/skins/default/xui/en-us/floater_world_map.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/floater_world_map.xml
@@ -154,7 +154,7 @@
154 mouse_opaque="true" name="spin y" 154 mouse_opaque="true" name="spin y"
155 tool_tip="Y coordinate of location to show on map" width="48" /> 155 tool_tip="Y coordinate of location to show on map" width="48" />
156 <spinner bottom_delta="0" decimal_digits="0" follows="bottom|right" height="16" 156 <spinner bottom_delta="0" decimal_digits="0" follows="bottom|right" height="16"
157 increment="1" initial_val="0" left_delta="50" max_val="4096" min_val="0" 157 increment="1" initial_val="0" left_delta="50" max_val="16383" min_val="0"
158 mouse_opaque="true" name="spin z" 158 mouse_opaque="true" name="spin z"
159 tool_tip="Z coordinate of location to show on map" width="48" /> 159 tool_tip="Z coordinate of location to show on map" width="48" />
160 <button bottom="-625" follows="right|bottom" font="SansSerif" halign="center" 160 <button bottom="-625" follows="right|bottom" font="SansSerif" halign="center"
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 aaae5b7..9b9a198 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
@@ -34,7 +34,7 @@
34 userdata="WebLaunchImprudenceBugs,http://wiki.kokuaviewer.org/wiki/Reporting_a_bug" /> 34 userdata="WebLaunchImprudenceBugs,http://wiki.kokuaviewer.org/wiki/Reporting_a_bug" />
35 </menu_item_call> 35 </menu_item_call>
36 <menu_item_separator /> 36 <menu_item_separator />
37 <menu_item_call label="About Imprudence" name="About Imprudence"> 37 <menu_item_call label="About meta-impy" name="About meta-impy">
38 <on_click function="ShowFloater" userdata="about" /> 38 <on_click function="ShowFloater" userdata="about" />
39 </menu_item_call> 39 </menu_item_call>
40 </menu> 40 </menu>
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 46a2c81..125962d 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
@@ -877,8 +877,8 @@
877 <on_click function="ShowFloater" userdata="lag meter" /> 877 <on_click function="ShowFloater" userdata="lag meter" />
878 </menu_item_call> 878 </menu_item_call>
879 <menu_item_separator /> 879 <menu_item_separator />
880 <menu_item_call name="About Imprudence" 880 <menu_item_call name="About meta-impy"
881 label="About Imprudence"> 881 label="About meta-impy">
882 <on_click function="ShowFloater" userdata="about" /> 882 <on_click function="ShowFloater" userdata="about" />
883 </menu_item_call> 883 </menu_item_call>
884 </menu> 884 </menu>
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 ae50e49..a31f609 100644
--- a/linden/indra/newview/skins/default/xui/en-us/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/notifications.xml
@@ -1,7 +1,7 @@
1<?xml version="1.0" ?><notifications> 1<?xml version="1.0" ?><notifications>
2 2
3<global name="VIEWER_NAME">Imprudence</global> 3<global name="VIEWER_NAME">meta-impy</global>
4<global name="VIEWER_SITE">kokuaviewer.org</global> 4<global name="VIEWER_SITE">www.meta7.com</global>
5<global name="SECOND_LIFE">Second Life</global> 5<global name="SECOND_LIFE">Second Life</global>
6<global name="SECOND_LIFE_SITE">secondlife.com</global> 6<global name="SECOND_LIFE_SITE">secondlife.com</global>
7 7
@@ -1435,7 +1435,7 @@ Corrupt resource file:
1435 icon="alertmodal.tga" 1435 icon="alertmodal.tga"
1436 name="UnknownResourceFileVersion" 1436 name="UnknownResourceFileVersion"
1437 type="alertmodal"> 1437 type="alertmodal">
1438Unknown Linden resource file version in file: 1438Unknown resource file version in file:
1439 1439
1440[FILE] 1440[FILE]
1441</notification> 1441</notification>
@@ -2870,7 +2870,7 @@ Visit the [SECOND_LIFE] Wiki for info on how to use the Public Issue Tracker.
2870 icon="alertmodal.tga" 2870 icon="alertmodal.tga"
2871 name="WebLaunchSupportWiki" 2871 name="WebLaunchSupportWiki"
2872 type="alertmodal"> 2872 type="alertmodal">
2873Go to the Official Linden Blog, for the latest news and information. 2873Go to the grids web site, for the latest news and information.
2874 <usetemplate 2874 <usetemplate
2875 ignoretext="When launching web browser to view the blog" 2875 ignoretext="When launching web browser to view the blog"
2876 name="okcancelignore" 2876 name="okcancelignore"
@@ -3187,30 +3187,11 @@ Type a short announcement which will be sent to everyone currently in your estat
3187 3187
3188<notification 3188<notification
3189 icon="alert.tga" 3189 icon="alert.tga"
3190 label="Change Linden Estate" 3190 label="Pfft some old linden crap"
3191 name="ChangeLindenEstate" 3191 name="PfftLindenCrap"
3192 type="alert"> 3192 type="alert">
3193You are about to change a Linden owned estate (mainland, teen grid, orientation, etc.). 3193This used to be some Linden inspired crap, but should never be seen now.
3194 3194Still unravelling the code before I make this go away.
3195This is EXTREMELY DANGEROUS because it can fundamentally affect the user experience. On the mainland, it will change thousands of regions and make the spaceserver hiccup.
3196
3197Proceed?
3198 <usetemplate
3199 name="okcancelbuttons"
3200 notext="Cancel"
3201 yestext="OK"/>
3202</notification>
3203
3204<notification
3205 icon="alert.tga"
3206 label="Change Linden Estate Access"
3207 name="ChangeLindenAccess"
3208 type="alert">
3209You are about to change the access list for a Linden owned estate (mainland, teen grid, orientation, etc.).
3210
3211This is DANGEROUS and should only be done to invoke the hack allowing objects/[CURRENCY] to be transfered in/out of a grid.
3212
3213It will change thousands of regions and make the spaceserver hiccup.
3214 <usetemplate 3195 <usetemplate
3215 name="okcancelbuttons" 3196 name="okcancelbuttons"
3216 notext="Cancel" 3197 notext="Cancel"
@@ -3679,7 +3660,7 @@ Default: off
3679 label="Max Inventory Items To Transfer" 3660 label="Max Inventory Items To Transfer"
3680 name="HelpMaxInventoryItemsTransfer" 3661 name="HelpMaxInventoryItemsTransfer"
3681 type="alertmodal"> 3662 type="alertmodal">
3682This box controls how many objects can be transfered between clients at a time. -1 sets no limit on the amount of objects. Default Second Life setting is 42. 3663This box controls how many objects can be transfered between clients at a time. -1 sets no limit on the amount of objects. Default setting is 42.
3683 3664
3684Default: -1 3665Default: -1
3685</notification> 3666</notification>
@@ -4042,7 +4023,7 @@ Estate managers can only be added or removed by the owner of the estate, not by
4042 label="Use Global Time" 4023 label="Use Global Time"
4043 name="HelpEstateUseGlobalTime" 4024 name="HelpEstateUseGlobalTime"
4044 type="alertmodal"> 4025 type="alertmodal">
4045This checkbox makes the sun in your estate follow the same position as on the Linden-owned &apos;mainland&apos; estates. 4026This checkbox makes the sun in your estate follow the same position as on the grid owned estates.
4046 4027
4047Default: on 4028Default: on
4048</notification> 4029</notification>
@@ -4098,7 +4079,7 @@ Access to this estate will be limited to groups listed here and any Residents ab
4098 type="alertmodal"> 4079 type="alertmodal">
4099Setting this to a valid email address will cause abuse reports on this estate to be sent to that address. 4080Setting this to a valid email address will cause abuse reports on this estate to be sent to that address.
4100 4081
4101Setting it blank will cause abuse reports to be sent only to Linden Lab. 4082Setting it blank will cause abuse reports to be sent only to the grid owners.
4102</notification> 4083</notification>
4103 4084
4104<notification 4085<notification
@@ -4430,14 +4411,14 @@ http://secondlife.com/support/incidentreport.php
4430 icon="alertmodal.tga" 4411 icon="alertmodal.tga"
4431 name="HelpReportAbuseEmailEO" 4412 name="HelpReportAbuseEmailEO"
4432 type="alertmodal"> 4413 type="alertmodal">
4433IMPORTANT: This report will go to the owner of the region you are currently in and not to Linden Lab. 4414IMPORTANT: This report will go to the owner of the region you are currently in and not to the grid owners.
4434 4415
4435As a service to residents and visitors, the owner of the region you are in has elected to receive and resolve all reports originating in this region. Linden Lab will not investigate reports you file from this location. 4416As a service to residents and visitors, the owner of the region you are in has elected to receive and resolve all reports originating in this region. The grid owners will not investigate reports you file from this location.
4436 4417
4437The region owner will resolve reports based on the local rules of this region as outlined in the estate Covenant. 4418The region owner will resolve reports based on the local rules of this region as outlined in the estate Covenant.
4438(View covenants by going to the World menu and selecting About Land.) 4419(View covenants by going to the World menu and selecting About Land.)
4439 4420
4440The resolution of this report applies only to this Region; Residents access to other areas of [GRID_NAME] will not be affected by the outcome of this report. <!-- Only Linden Lab can restrict access to the entirety of [GRID_NAME]. --> 4421The resolution of this report applies only to this Region; Residents access to other areas of [GRID_NAME] will not be affected by the outcome of this report. <!-- Only the grid owners can restrict access to the entirety of [GRID_NAME]. -->
4441</notification> 4422</notification>
4442 4423
4443<notification 4424<notification
@@ -4531,15 +4512,13 @@ Dear Resident,
4531 4512
4532You appear to be reporting intellectual property infringement. Please make sure you are reporting it correctly: 4513You appear to be reporting intellectual property infringement. Please make sure you are reporting it correctly:
4533 4514
4534(1) The Abuse Process. You may submit an abuse report if you believe a Resident is exploiting the [SECOND_LIFE] permissions system, for example, by using CopyBot or similar copying tools, to infringe intellectual property rights. The Abuse Team investigates and issues appropriate disciplinary action for behavior that violates the [SECOND_LIFE] Community Standards or Terms of Service. However, the Abuse Team does not handle and will not respond to requests to remove content from the [SECOND_LIFE] world. 4515(1) The Abuse Process. You may submit an abuse report if you believe a Resident is exploiting the permissions system, for example, by using CopyBot or similar copying tools, to infringe intellectual property rights. The Abuse Team investigates and issues appropriate disciplinary action for behaviour that violates this grids Community Standards or Terms of Service. However, the Abuse Team does not handle and will not respond to requests to remove content from this grid.
4535 4516
4536(2) The DMCA or Content Removal Process. To request removal of content from [SECOND_LIFE], you MUST submit a valid notification of infringement as provided in our DMCA Policy at http://secondlife.com/corporate/dmca.php. 4517(2) The DMCA or Content Removal Process. To request removal of content from this grid, you MUST submit a valid notification of infringement as provided in our DMCA Policy at http://secondlife.com/corporate/dmca.php.
4537 4518
4538If you still wish to continue with the abuse process, please close this window and finish submitting your report. You may need to select the specific category &apos;CopyBot or Permissions Exploit&apos;. 4519If you still wish to continue with the abuse process, please close this window and finish submitting your report. You may need to select the specific category &apos;CopyBot or Permissions Exploit&apos;.
4539 4520
4540Thank you, 4521Thank you.
4541
4542Linden Lab
4543</notification> 4522</notification>
4544 4523
4545<notification 4524<notification
@@ -5732,9 +5711,9 @@ If you want to view streaming media on parcels that support it you should go to
5732No Media Plugin was found to handle the "[MIME_TYPE]" mime type. Media of this type will be unavailable. 5711No Media Plugin was found to handle the "[MIME_TYPE]" mime type. Media of this type will be unavailable.
5733</notification> 5712</notification>
5734<notification 5713<notification
5735 icon="alertmodal.tga" 5714 icon="alert.tga"
5736 name="MediaPluginFailed" 5715 name="MediaPluginFailed"
5737 type="alertmodal"> 5716 type="alert">
5738The following Media Plugin has failed: 5717The following Media Plugin has failed:
5739[PLUGIN] 5718[PLUGIN]
5740 5719
@@ -6905,6 +6884,27 @@ This ensures that you have the latest information available regarding other clie
6905The URL you clicked cannot be opened from this web browser. 6884The URL you clicked cannot be opened from this web browser.
6906</notification> 6885</notification>
6907 6886
6887<!--[$PLOTR$]-->
6888<notification
6889 icon="notify.tga"
6890 name="QueryEmeraldOTR"
6891 type="alertmodal">
6892OTR encrypts your IMs so they can't be read by anyone other than the person you are talking to.
6893
6894Do you want to automatically secure your IMs?
6895 <form name="form">
6896 <button index="0" name="Yes" text="Yes"/>
6897 <button index="1" name="No" text="No"/>
6898 </form>
6899</notification>
6900<!-- These belong in some help page, but there is no similar page in Imprudence (yet?)
6901
6902OTR - This is automatic encryption of your IM's to prevent sniffers from spying.
6903Strongly recommended to use Require OTR setting.
6904Typing stop packets - sends encrypted messages differently so they do not wind up in offline emails.
6905
6906-->
6907<!--[/$PLOTR$]-->
6908<!--Begin Imprudence notifications--> 6908<!--Begin Imprudence notifications-->
6909 6909
6910<notification 6910<notification
@@ -7323,6 +7323,8 @@ Various options for command line features.
7323To use a command, type it in your chat bar (Local Chat) and press enter. 7323To use a command, type it in your chat bar (Local Chat) and press enter.
7324</notification> 7324</notification>
7325 7325
7326
7327
7326<notification 7328<notification
7327 icon="alertmodal.tga" 7329 icon="alertmodal.tga"
7328 label="Spell Check Help" 7330 label="Spell Check Help"
diff --git a/linden/indra/newview/skins/default/xui/en-us/otr_floater_smp_dialog.xml b/linden/indra/newview/skins/default/xui/en-us/otr_floater_smp_dialog.xml
new file mode 100644
index 0000000..73d2caa
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/en-us/otr_floater_smp_dialog.xml
@@ -0,0 +1,131 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <!--[$PLOTR$]-->
2<!--otr_floater_smp_dialog.xml - ui defs for the OTR SMP dialog box
3 $PLOTR$ See http://www.cypherpunks.ca/otr/
4
5 Copyright (C) 2009 Chris Tuchs
6
7 This is free software; you can redistribute it and/or modify it
8 under the terms of the GNU Lesser General Public License as
9 published by the Free Software Foundation; either version 2.1 of
10 the License, or (at your option) any later version.
11
12 This is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 License for more details.
16
17 You should have received a copy of the GNU Lesser General Public
18 License along with the viewer; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA. -->
21<floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="false"
22 height="445" min_height="445" width="400" min_width="400" name="otr_floater_smp_dialog"
23 rect_control="OtrFloaterSmpDialogRect" title="Authenticating Buddy">
24 <string name="otr_empty_string"></string>
25 <string name="otr_smp_I_auth_name" >Authenticating [NAME]</string>
26 <string name="otr_smp_name_auth_me">[NAME] is authenticating you</string>
27 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
28 drop_shadow_visible="true" font="SansSerif" h_pad="0" v_pad="0" halign="left"
29 follows="left|top"
30 height="50" width="370"
31 left="15" bottom_delta="-80"
32 mouse_opaque="true" name="otr_smp_why"/>
33 <string name="otr_smp_why_text">
34Authenticating a buddy helps ensure that the person you are talking to is who he or she claims to be. It also helps ensure that noone else is listening to the private conversation.
35 </string>
36 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
37 drop_shadow_visible="true" font="SansSerif" h_pad="0" v_pad="0" halign="center"
38 follows="left|top"
39 height="20" width="370"
40 left="15" bottom_delta="-25"
41 mouse_opaque="true" name="otr_smp_how_text"/>
42 <string name="otr_smp_how_I_challenge_name" >How would you like to authenticate [NAME]?</string>
43 <string name="otr_smp_how_name_challenge_me">[NAME] is authenticating you by a</string>
44 <string name="otr_smp_how_by_qa_challenge" >Question and answer challenge</string>
45 <string name="otr_smp_how_by_ss_challenge" >Shared secret challenge</string>
46 <string name="otr_smp_how_by_qa" >Question and answer</string>
47 <string name="otr_smp_how_by_ss" >Shared secret</string>
48 <string name="otr_smp_how_by_mfv" >Manual fingerprint verification</string>
49 <combo_box follows="left|top"
50 height="20" width="200"
51 left="100" bottom_delta="-20"
52 label="Not set yet" halign="left"
53 name="otr_smp_how_combo"/>
54 <string name="otr_smp_howto_qa">
55To authenticate using a question, pick a question whose answer is known only to you and your buddy. Enter the question and correct answer, push "Authenticate", then wait for your buddy to enter the answer too. If the answers don't match, then either your buddy made a mistake typing in the answer, or you may be talking to an imposter.
56 </string>
57 <string name="otr_smp_howto_qa_t1">
58Enter question here:
59 </string>
60 <string name="otr_smp_howto_qa_t2">
61Enter secret answer here (case sensitive):
62 </string>
63 <string name="otr_smp_howto_ss">
64To authenticate someone with the shared secret method, you and your buddy should decide on a secret word or phrase in advance. This can be done however you like, but you shouldn't type the phrase directly into your conversation. Enter this secret, push "Authenticate", then wait for your buddy to enter the answer too. If the secrets don't match, then either your buddy made a mistake typing in the secret, or you may be talking to an imposter.
65 </string>
66 <string name="otr_smp_howto_ss_t1">
67Enter secret here (case sensitive):
68 </string>
69 <string name="otr_smp_howto_ss_t2"></string>
70 <string name="otr_smp_howto_mfv">
71To authenticate using fingerprints, contact your buddy via some other authenticated channel, such as the telephone or GPG-signed email. Each of you should tell your fingerprint to the other. If everything matches up, you should indicate in the pull-down below that you have verified the fingerprint.
72 </string>
73 <string name="otr_smp_howto_mfv_t1">Your fingerprint, tell them this:</string>
74 <string name="otr_smp_howto_mfv_t2">Their fingerprint, be sure that they tell you this:</string>
75 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
76 drop_shadow_visible="true" font="SansSerif" h_pad="0" v_pad="0" halign="left"
77 follows="left|top"
78 height="100" width="370"
79 left="15" bottom_delta="-110"
80 mouse_opaque="true" name="otr_smp_howto">
81howto explanation
82 </text>
83 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
84 drop_shadow_visible="true" font="SansSerif" h_pad="0" v_pad="0" halign="left"
85 follows="left|top"
86 height="20" width="370"
87 left="15" bottom_delta="-50"
88 mouse_opaque="true" name="otr_smp_label1">
89text label 1
90 </text>
91 <line_editor bevel_style="in" border_style="line" border_thickness="1"
92 mouse_opaque="true" font="SansSerif"
93 select_all_on_focus_received="false" select_on_focus="false"
94 follows="top|right"
95 height="20" width="370"
96 left="15" bottom_delta="-20"
97 label="" max_length="256"
98 name="otr_smp_edit1"/>
99 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
100 drop_shadow_visible="true" font="SansSerif" h_pad="0" v_pad="0" halign="left"
101 follows="left|top"
102 height="20" width="370"
103 left="15" bottom_delta="-30"
104 mouse_opaque="true" name="otr_smp_label2">
105text label 2
106 </text>
107 <line_editor bevel_style="in" border_style="line" border_thickness="1"
108 mouse_opaque="true" font="SansSerif"
109 select_all_on_focus_received="false" select_on_focus="false"
110 follows="top|right"
111 height="20" width="370"
112 left="15" bottom_delta="-20"
113 label="" max_length="256"
114 name="otr_smp_edit2"/>
115 <string name="otr_smp_veri_no">I have NOT verified their fingerprint.</string>
116 <string name="otr_smp_veri_yes">I HAVE verified their fingerprint.</string>
117 <combo_box follows="left|top"
118 height="20" width="210"
119 left="175" bottom_delta="-40"
120 label="" halign="left"
121 name="otr_smp_veri_combo"/>
122 <button bottom="-435" follows="left|bottom" font="SansSerif" halign="center"
123 height="20" label="Help" label_selected="Help" left="20"
124 mouse_opaque="true" name="otr_smp_help_btn" width="60" />
125 <button bottom="-435" follows="right|bottom" font="SansSerif" halign="center"
126 height="20" label="Authenticate" label_selected="Authenticate" left="292"
127 mouse_opaque="true" name="otr_smp_auth_btn" width="88" />
128 <button bottom="-435" follows="right|bottom" font="SansSerif" halign="center"
129 height="20" label="Cancel" label_selected="Cancel" left_delta="-65"
130 mouse_opaque="true" name="otr_smp_cancel_btn" width="60" />
131</floater> <!--[/$PLOTR$]-->
diff --git a/linden/indra/newview/skins/default/xui/en-us/otr_floater_smp_progress.xml b/linden/indra/newview/skins/default/xui/en-us/otr_floater_smp_progress.xml
new file mode 100644
index 0000000..dde8f4c
--- /dev/null
+++ b/linden/indra/newview/skins/default/xui/en-us/otr_floater_smp_progress.xml
@@ -0,0 +1,52 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <!--[$PLOTR$]-->
2<!--otr_floater_smp_progress.xml - ui defs for the OTR SMP progress dialog box
3 $PLOTR$ See http://www.cypherpunks.ca/otr/
4
5 Copyright (C) 2009 Chris Tuchs
6
7 This is free software; you can redistribute it and/or modify it
8 under the terms of the GNU Lesser General Public License as
9 published by the Free Software Foundation; either version 2.1 of
10 the License, or (at your option) any later version.
11
12 This is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 License for more details.
16
17 You should have received a copy of the GNU Lesser General Public
18 License along with the viewer; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA. -->
21<floater can_close="true" can_drag_on_left="false" can_minimize="true" can_resize="false"
22 height="200" min_height="200" width="400" min_width="400" name="otr_floater_smp_prog"
23 rect_control="OtrFloaterSmpProgRect" title="Authenticating Buddy">
24 <text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
25 drop_shadow_visible="true" font="SansSerif" h_pad="0" v_pad="0" halign="center"
26 follows="left|top"
27 height="40" width="370"
28 left="15" bottom="-85"
29 mouse_opaque="true" name="otr_smp_prog_status">Authenticating buddy...</text>
30 <string name="otr_smp_prog_I_auth_them" >Authenticating your buddy...</string>
31 <string name="otr_smp_prog_they_auth_me" >Your buddy is authenticating you...</string>
32 <string name="otr_smp_prog_I_auth_name" >Authenticating [NAME]...</string>
33 <string name="otr_smp_prog_name_auth_me" >[NAME] is authenticating you...</string>
34 <string name="otr_smp_prog_auth_aborted" >Authentication aborted</string>
35 <string name="otr_smp_prog_auth_failed" >Authentication failed</string>
36 <string name="otr_smp_prog_auth_errored" >Authentication error</string>
37 <string name="otr_smp_prog_auth_ok" >Authenticated!</string>
38 <string name="otr_smp_prog_auth_ok_name_next">You are authenticated! Now you may want to authenticate [NAME].</string>
39 <progress_bar name="otr_smp_prog_progress_bar" color="255,255,255,245"
40 height="20"
41 bottom="-110" left="45" right="-45"
42 follows="left|right|top" />
43 <button bottom="-185" follows="left|bottom" font="SansSerif" halign="center"
44 height="20" label="Help" label_selected="Help" left="20"
45 mouse_opaque="true" name="otr_smp_prog_help_btn" width="60" />
46 <button bottom="-185" follows="right|bottom" font="SansSerif" halign="center"
47 height="20" label="OK" label_selected="OK" left="320"
48 mouse_opaque="true" name="otr_smp_prog_ok_btn" width="60" />
49 <button bottom="-185" follows="right|bottom" font="SansSerif" halign="center"
50 height="20" label="Cancel" label_selected="Cancel" left_delta="-65"
51 mouse_opaque="true" name="otr_smp_prog_cancel_btn" width="60" />
52</floater> <!--[/$PLOTR$]-->
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml b/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml
index 6076eb9..389e069 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_avatar.xml
@@ -10,7 +10,7 @@
10[AGEVERIFICATION] 10[AGEVERIFICATION]
11 </string> 11 </string>
12 <string name="AcctTypeResident"> 12 <string name="AcctTypeResident">
13 Resident 13 Citizen
14 </string> 14 </string>
15 <string name="AcctTypeTrial"> 15 <string name="AcctTypeTrial">
16 Trial 16 Trial
@@ -19,7 +19,7 @@
19 Charter Member 19 Charter Member
20 </string> 20 </string>
21 <string name="AcctTypeEmployee"> 21 <string name="AcctTypeEmployee">
22 Linden Lab Employee 22 Grid staff
23 </string> 23 </string>
24 <string name="PaymentInfoUsed"> 24 <string name="PaymentInfoUsed">
25 Payment Info Used 25 Payment Info Used
@@ -31,10 +31,10 @@
31 No Payment Info On File 31 No Payment Info On File
32 </string> 32 </string>
33 <string name="AgeVerified"> 33 <string name="AgeVerified">
34 Age-verified 34 Age verified
35 </string> 35 </string>
36 <string name="NotAgeVerified"> 36 <string name="NotAgeVerified">
37 Not Age-verified 37 Not age verified
38 </string> 38 </string>
39 <string name="copy_key_info"> 39 <string name="copy_key_info">
40 Copied key for [AVATAR] to clipboard: [KEY] 40 Copied key for [AVATAR] to clipboard: [KEY]
@@ -106,7 +106,7 @@
106 bottom_delta="-25" drop_shadow_visible="true" follows="left|top" 106 bottom_delta="-25" drop_shadow_visible="true" follows="left|top"
107 font="SansSerifSmall" h_pad="0" halign="left" height="16" right="-12" 107 font="SansSerifSmall" h_pad="0" halign="left" height="16" right="-12"
108 mouse_opaque="true" name="partner_label" 108 mouse_opaque="true" name="partner_label"
109 tool_tip="Second Life partner. For more info on how to set, see www.secondlife.com/partner" 109 tool_tip="In world partner."
110 v_pad="0" width="145"> 110 v_pad="0" width="145">
111 Partner: 111 Partner:
112 </text> 112 </text>
@@ -121,7 +121,7 @@
121 border_thickness="1" bottom_delta="-19" enabled="true" follows="left|top" 121 border_thickness="1" bottom_delta="-19" enabled="true" follows="left|top"
122 font="SansSerifSmall" height="18" is_unicode="false" right="-12" 122 font="SansSerifSmall" height="18" is_unicode="false" right="-12"
123 max_length="254" mouse_opaque="false" name="partner_edit" 123 max_length="254" mouse_opaque="false" name="partner_edit"
124 tool_tip="Second Life partner. For more info on how to set, see www.secondlife.com/partner" 124 tool_tip="In world partner."
125 width="145"> 125 width="145">
126 [FIRST] [LAST] 126 [FIRST] [LAST]
127 </line_editor> 127 </line_editor>
@@ -303,7 +303,7 @@
303 bottom="-20" drop_shadow_visible="true" follows="left|top" 303 bottom="-20" drop_shadow_visible="true" follows="left|top"
304 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="114" 304 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="114"
305 mouse_opaque="true" 305 mouse_opaque="true"
306 name="Tell everyone about your favorite places in Second Life." v_pad="0" 306 name="Tell everyone about your favorite places in world." v_pad="0"
307 width="302"> 307 width="302">
308 Tell everyone about your favorite places. 308 Tell everyone about your favorite places.
309 </text> 309 </text>
@@ -329,7 +329,7 @@
329 bottom="-20" drop_shadow_visible="true" follows="left|top" 329 bottom="-20" drop_shadow_visible="true" follows="left|top"
330 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="114" 330 font="SansSerifSmall" h_pad="0" halign="left" height="16" left="114"
331 mouse_opaque="true" 331 mouse_opaque="true"
332 name="Place an ad in Second Life&apos;s classified listings." v_pad="0" 332 name="Place an ad in the classified listings." v_pad="0"
333 width="302"> 333 width="302">
334 Place an ad in the current grid&apos;s classified listings. 334 Place an ad in the current grid&apos;s classified listings.
335 </text> 335 </text>
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_group_general.xml b/linden/indra/newview/skins/default/xui/en-us/panel_group_general.xml
index 2974490..9a06d0f 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_group_general.xml
@@ -150,8 +150,6 @@ Hover your mouse over the options for more help.
150 Retrieving member data 150 Retrieving member data
151 </string> 151 </string>
152 <string name="confirm_group_create_str"> 152 <string name="confirm_group_create_str">
153 Creating this group will cost [GROUPCREATEFEE]. 153Are you sure you want to spend [GROUPCREATEFEE] to create this group?
154Are you really, really, REALLY sure you want to spend [GROUPCREATEFEE] to create this group?
155Be aware that if nobody else joins this group within 48 hours, it will be disbanded and the group&apos;s name will be unavailable for future use.
156 </string> 154 </string>
157</panel> 155</panel>
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 05e6b31..bfb6866 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
@@ -5,7 +5,7 @@
5 follows="left|top|right|bottom" mouse_opaque="true" > 5 follows="left|top|right|bottom" mouse_opaque="true" >
6 6
7 <web_browser name="login_html" 7 <web_browser name="login_html"
8 bottom="102" top="-1" left="0" right="-1" 8 bottom="0" top="-1" left="0" right="-1"
9 border_visible="false" follows="top|left|bottom|right" 9 border_visible="false" follows="top|left|bottom|right"
10 start_url="data:text/html, 10 start_url="data:text/html,
11 %3Chtml%3E 11 %3Chtml%3E
@@ -14,7 +14,7 @@
14 %3Ctable width=%22100%%22 height=%22100%%22 border=%220%22%3E 14 %3Ctable width=%22100%%22 height=%22100%%22 border=%220%22%3E
15 %3Ctr%3E 15 %3Ctr%3E
16 %3Ctd align=%22center%22 valign=%22middle%22 style=%22font-size:0.8em;%22%3E 16 %3Ctd align=%22center%22 valign=%22middle%22 style=%22font-size:0.8em;%22%3E
17 %3Cimg src=%22imprudence_loading.png%22 align=%22absmiddle%22%3E 17 %3Cimg src=%22meta-impy_loading.png%22 align=%22absmiddle%22%3E
18 %3Cbr/%3E 18 %3Cbr/%3E
19 %3CH1%3Eloading...%3C/H1%3E 19 %3CH1%3Eloading...%3C/H1%3E
20 %3C/td%3E 20 %3C/td%3E
@@ -29,35 +29,24 @@
29 http://secondlife.com/account/request.php 29 http://secondlife.com/account/request.php
30 </string> 30 </string>
31 31
32
33 <!-- GRIDS -->
34
35 <text name="grid_text"
36 bottom="80" left="15" height="16" width="120"
37 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
38 bg_visible="false" drop_shadow_visible="true"
39 border_visible="false" border_drop_shadow_visible="false"
40 font="SansSerif" mouse_opaque="true">
41 Grid:
42 </text>
43 <combo_box name="server_combo"
44 bottom_delta="-20" left_delta="0" height="20" width="120"
45 follows="left|bottom" allow_text_entry="false"
46 max_chars="20" mouse_opaque="true" />
47
48
49 <!-- FIRST NAME --> 32 <!-- FIRST NAME -->
50 33
51 <text name="first_name_text" 34 <text name="first_name_text"
52 bottom="80" left="165" height="16" width="120" 35 bottom="48" left="24" height="16" width="120"
53 follows="left|bottom" h_pad="0" halign="left" v_pad="0" 36 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
54 bg_visible="false" drop_shadow_visible="true" 37 bg_visible="false" drop_shadow_visible="true"
55 border_visible="false" border_drop_shadow_visible="false" 38 border_visible="false" border_drop_shadow_visible="false"
56 font="SansSerif" mouse_opaque="true"> 39 font="SansSerif" mouse_opaque="true">
57 First name: 40 First name:
58 </text> 41 </text>
42<!--
43 <combo_box bevel_style="in" border_style="line" border_thickness="1" bottom_delta="-24"
44 follows="left|bottom" font="SansSerif" handle_edit_keys_directly="true" height="20" left_delta="0"
45 max_chars="31" mouse_opaque="true" name="first_name_combo"
46 select_all_on_focus_received="true" width="120" allow_text_entry="true" allow_translate="false" />
47-->
59 <line_editor name="first_name_edit" 48 <line_editor name="first_name_edit"
60 bottom_delta="-20" left_delta="0" height="20" width="120" 49 bottom_delta="-24" left_delta="0" height="20" width="120"
61 follows="left|bottom" font="SansSerif" 50 follows="left|bottom" font="SansSerif"
62 bevel_style="in" border_style="line" border_thickness="1" 51 bevel_style="in" border_style="line" border_thickness="1"
63 max_length="31" mouse_opaque="true" 52 max_length="31" mouse_opaque="true"
@@ -65,11 +54,10 @@
65 select_all_on_focus_received="true" 54 select_all_on_focus_received="true"
66 allow_translate="false" /> 55 allow_translate="false" />
67 56
68
69 <!-- LAST NAME --> 57 <!-- LAST NAME -->
70 58
71 <text name="last_name_text" 59 <text name="last_name_text"
72 bottom_delta="20" left_delta="130" height="16" width="120" 60 bottom_delta="24" left_delta="130" height="16" width="120"
73 follows="left|bottom" h_pad="0" halign="left" v_pad="0" 61 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
74 bg_visible="false" drop_shadow_visible="true" 62 bg_visible="false" drop_shadow_visible="true"
75 border_visible="false" border_drop_shadow_visible="false" 63 border_visible="false" border_drop_shadow_visible="false"
@@ -77,7 +65,7 @@
77 Last name: 65 Last name:
78 </text> 66 </text>
79 <line_editor name="last_name_edit" 67 <line_editor name="last_name_edit"
80 bottom_delta="-20" left_delta="0" height="20" width="120" 68 bottom_delta="-24" left_delta="0" height="20" width="120"
81 follows="left|bottom" font="SansSerif" 69 follows="left|bottom" font="SansSerif"
82 bevel_style="in" border_style="line" border_thickness="1" 70 bevel_style="in" border_style="line" border_thickness="1"
83 max_length="31" mouse_opaque="true" 71 max_length="31" mouse_opaque="true"
@@ -86,30 +74,10 @@
86 allow_translate="false" /> 74 allow_translate="false" />
87 75
88 76
89 <!-- SL USERNAME -->
90
91 <text name="username_text"
92 bottom="80" left="165" height="16" width="250"
93 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
94 bg_visible="false" drop_shadow_visible="true"
95 border_visible="false" border_drop_shadow_visible="false"
96 font="SansSerif" mouse_opaque="true">
97 Login name:
98 </text>
99 <line_editor name="username_edit"
100 bottom_delta="-20" left_delta="0" height="20" width="250"
101 follows="left|bottom" font="SansSerif"
102 bevel_style="in" border_style="line" border_thickness="1"
103 max_length="63" mouse_opaque="true"
104 handle_edit_keys_directly="true"
105 select_all_on_focus_received="true"
106 allow_translate="false" />
107
108
109 <!-- PASSWORD --> 77 <!-- PASSWORD -->
110 78
111 <text name="password_text" 79 <text name="password_text"
112 bottom_delta="20" left="425" height="16" width="120" 80 bottom_delta="24" left_delta="130" height="16" width="120"
113 follows="left|bottom" h_pad="0" halign="left" v_pad="0" 81 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
114 bg_visible="false" drop_shadow_visible="true" 82 bg_visible="false" drop_shadow_visible="true"
115 border_visible="false" border_drop_shadow_visible="false" 83 border_visible="false" border_drop_shadow_visible="false"
@@ -117,7 +85,7 @@
117 Password: 85 Password:
118 </text> 86 </text>
119 <line_editor name="password_edit" 87 <line_editor name="password_edit"
120 bottom_delta="-20" left_delta="0" height="20" width="120" 88 bottom_delta="-24" left_delta="0" height="20" width="120"
121 follows="left|bottom" font="SansSerif" 89 follows="left|bottom" font="SansSerif"
122 bevel_style="in" border_style="line" border_thickness="1" 90 bevel_style="in" border_style="line" border_thickness="1"
123 max_length="16" mouse_opaque="true" 91 max_length="16" mouse_opaque="true"
@@ -126,60 +94,97 @@
126 allow_translate="false" /> 94 allow_translate="false" />
127 95
128 96
129 <!-- GRID MANAGER --> 97 <!-- ACCOUNT CHECK BOXES -->
130 98
131 <button name="grid_btn" label="Grid Manager" 99 <check_box control_name="RememberName"
132 bottom="32" left="25" height="20" width="100" 100 follows="left|bottom" font="SansSerifSmall" height="16"
133 follows="left|bottom" font="SansSerifSmall" halign="center" 101 initial_value="true" label="Remember account name"
134 mouse_opaque="true" scale_image="TRUE" /> 102 bottom_delta="-24" left="24" mouse_opaque="true" name="remember_name_check" width="158" />
103 <check_box name="remember_check" label="Remember password"
104 bottom_delta="0" left_delta="260" height="16" width="140"
105 follows="left|bottom" font="SansSerifSmall" control_name="RememberPassword"
106 initial_value="false" mouse_opaque="true" />
135 107
136 108
137 <!-- START LOCATION --> 109 <!-- START LOCATION -->
138 110
139 <text name="start_location_text" 111 <text name="start_location_text"
140 bottom_delta="0" left="125" height="16" width="115" 112 bottom="48" left_delta="150" height="16"
141 follows="left|bottom" h_pad="0" halign="right" v_pad="0" 113 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
142 bg_visible="false" drop_shadow_visible="true" 114 bg_visible="false" drop_shadow_visible="true"
143 border_visible="false" border_drop_shadow_visible="false" 115 border_visible="false" border_drop_shadow_visible="false"
144 font="SansSerifSmall" mouse_opaque="true"> 116 font="SansSerifSmall" mouse_opaque="true">
145 Start location: 117 Start location:
146 </text> 118 </text>
147 <combo_box name="start_location_combo" 119 <combo_box name="start_location_combo"
148 bottom_delta="2" left_delta="125" height="16" width="150" 120 bottom_delta="-24" left_delta="0" height="20" width="150"
149 follows="left|bottom" font="SansSerifSmall" 121 follows="left|bottom" font="SansSerifSmall"
150 mouse_opaque="true" allow_text_entry="true" max_chars="128"> 122 mouse_opaque="true" allow_text_entry="true" max_chars="128">
151 <combo_item name="MyHome" value="My Home"> 123 <combo_item name="MyHome" value="My Home">
152 My Home 124 My Home
153 </combo_item> 125 </combo_item>
154 <combo_item name="MyLastLocation" value="My Last Location"> 126 <combo_item name="MyLastLocation" value="My Last Location">
155 My Last Location 127 My Last Location
156 </combo_item> 128 </combo_item>
157 <combo_item name="Typeregionname" value="&lt;Type region name&gt;"> 129 <combo_item name="Typeregionname" value="&lt;Type region name&gt;">
158 &lt;Type region name&gt; 130 &lt;Type region name&gt;
159 </combo_item> 131 </combo_item>
160 </combo_box> 132 </combo_box>
161 133
162 134
163 <!-- REMEMBER PASSWORD --> 135 <!-- GRIDS -->
164 136
165 <check_box name="remember_check" label="Remember password" 137 <text name="grid_text"
166 bottom_delta="-2" left="425" height="16" width="140" 138 bottom="48" left_delta="160" height="16" width="120"
167 follows="left|bottom" font="SansSerifSmall" control_name="RememberPassword" 139 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
168 initial_value="false" mouse_opaque="true" /> 140 bg_visible="false" drop_shadow_visible="true"
141 border_visible="false" border_drop_shadow_visible="false"
142 font="SansSerif" mouse_opaque="true">
143 Grid:
144 </text>
145 <combo_box name="server_combo"
146 bottom_delta="-24" left_delta="0" height="20" width="120"
147 follows="left|bottom" allow_text_entry="false"
148 max_chars="20" mouse_opaque="true" />
149 <button name="grid_btn" label="Grid Manager"
150 bottom_delta="-24" left_delta="0" height="20" width="100"
151 follows="left|bottom" font="SansSerifSmall" halign="center"
152 mouse_opaque="true" scale_image="TRUE" />
169 153
170 154
171 <!-- LOG IN --> 155 <!-- LOG IN -->
172 156
173 <button name="connect_btn" label="Log In" 157 <button name="connect_btn" label="Log In"
174 bottom="58" left="575" height="24" width="120" 158 bottom="24" left_delta="140" height="24" width="120"
175 follows="left|bottom" font="SansSerif" halign="center" 159 follows="left|bottom" font="SansSerif" halign="center"
176 mouse_opaque="true" scale_image="TRUE" /> 160 mouse_opaque="true" scale_image="TRUE" />
177 161
178 162
163 <!-- Yes, this is getting messy, with three different ways of doing the username. sigh -->
164 <!-- SL USERNAME -->
165
166 <text name="username_text"
167 bottom="80" left="24" height="16" width="250"
168 follows="left|bottom" h_pad="0" halign="left" v_pad="0"
169 bg_visible="false" drop_shadow_visible="true"
170 border_visible="false" border_drop_shadow_visible="false"
171 font="SansSerif" mouse_opaque="true">
172 Login name:
173 </text>
174 <line_editor name="username_edit"
175 bottom_delta="-20" left_delta="0" height="20" width="250"
176 follows="left|bottom" font="SansSerif"
177 bevel_style="in" border_style="line" border_thickness="1"
178 max_length="63" mouse_opaque="true"
179 handle_edit_keys_directly="true"
180 select_all_on_focus_received="true"
181 allow_translate="false" />
182
183
179 <!-- ACCOUNT / FORGOT PASSWORD --> 184 <!-- ACCOUNT / FORGOT PASSWORD -->
180 185
181 <text name="create_new_account_text" 186 <text name="create_new_account_text"
182 bottom="69" left="-210" height="16" width="200" 187 bottom="45" left="-210" height="16" width="200"
183 follows="right|bottom" h_pad="0" halign="right" v_pad="0" 188 follows="right|bottom" h_pad="0" halign="right" v_pad="0"
184 bg_visible="false" drop_shadow_visible="true" 189 bg_visible="false" drop_shadow_visible="true"
185 border_visible="false" border_drop_shadow_visible="false" 190 border_visible="false" border_drop_shadow_visible="false"
@@ -189,7 +194,7 @@
189 </text> 194 </text>
190 195
191 <text name="forgot_password_text" 196 <text name="forgot_password_text"
192 bottom="49" left="-210" height="16" width="200" 197 bottom="25" left="-210" height="16" width="200"
193 follows="right|bottom" h_pad="0" halign="right" v_pad="0" 198 follows="right|bottom" h_pad="0" halign="right" v_pad="0"
194 bg_visible="false" drop_shadow_visible="true" 199 bg_visible="false" drop_shadow_visible="true"
195 border_visible="false" border_drop_shadow_visible="false" 200 border_visible="false" border_drop_shadow_visible="false"
@@ -202,7 +207,7 @@
202 <!-- CHANNEL & VERSION --> 207 <!-- CHANNEL & VERSION -->
203 208
204 <text name="channel_text" 209 <text name="channel_text"
205 bottom="29" left="-310" height="16" width="300" 210 bottom="5" left="-310" height="16" width="300"
206 follows="right|bottom" h_pad="0" halign="right" v_pad="0" 211 follows="right|bottom" h_pad="0" halign="right" v_pad="0"
207 bg_visible="false" drop_shadow_visible="true" 212 bg_visible="false" drop_shadow_visible="true"
208 border_visible="false" border_drop_shadow_visible="false" 213 border_visible="false" border_drop_shadow_visible="false"
@@ -210,11 +215,4 @@
210 hover="true" hover_color="50 115 185"> 215 hover="true" hover_color="50 115 185">
211 [VERSION] 216 [VERSION]
212 </text> 217 </text>
213
214
215 <web_browser name="news_bar"
216 bottom="0" top="20" left="0" right="-1"
217 border_visible="true" follows="left|bottom|right"
218 start_url="data:text/html,%3Chtml%3E%3Chead%3E%3C/head%3E%3Cbody bgcolor=%22#000%22%3E%3C/body%3E%3C/html%3E" />
219
220</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 b6deee9..aedda8a 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
@@ -18,7 +18,6 @@ USE left="270" FOR TABBING OPTIONS
18 height="408" label="Advanced" left="102" mouse_opaque="true" 18 height="408" label="Advanced" left="102" mouse_opaque="true"
19 name="advanced_panel" width="517"> 19 name="advanced_panel" width="517">
20 20
21
22 <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"
23 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">
24 23
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 9b55822..79b35ba 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
@@ -31,29 +31,10 @@ USE left="270" FOR TABBING OPTIONS
31 enabled="true" follows="left|top" height="65" label="" left="50" 31 enabled="true" follows="left|top" height="65" label="" left="50"
32 mouse_opaque="true" name="effect_color_swatch" 32 mouse_opaque="true" name="effect_color_swatch"
33 tool_tip="Click to open Color Picker" width="65" /> 33 tool_tip="Click to open Color Picker" width="65" />
34 34
35 35 <view_border bevel_style="none" border_thickness="1" bottom_delta="0" follows="left|top"
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" /> 36 height="1" left="55" name="border" width="380" />
55 37
56
57 <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"
58 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW" 39 bottom_delta="-20" drop_shadow_visible="true" enabled="true" follows="left|top" font-style="BOLD|SHADOW"
59 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20" 40 font="SansSerifSmall" h_pad="0" halign="left" height="10" left="20"
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 2e92689..c505e1d 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
@@ -318,7 +318,7 @@ USE left="270" FOR TABBING OPTIONS
318 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderTreeLODFactor" 318 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderTreeLODFactor"
319 decimal_digits="3" enabled="true" follows="left|top" height="16" 319 decimal_digits="3" enabled="true" follows="left|top" height="16"
320 increment="0.125" initial_val="160" label=" Trees:" 320 increment="0.125" initial_val="160" label=" Trees:"
321 label_width="140" left_delta="0" max_val="1" min_val="0" 321 label_width="140" left_delta="0" max_val="12" min_val="0"
322 mouse_opaque="true" name="TreeMeshDetail" show_text="false" width="223" /> 322 mouse_opaque="true" name="TreeMeshDetail" show_text="false" width="223" />
323 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderAvatarLODFactor" 323 <slider bottom_delta="-18" can_edit_text="false" control_name="RenderAvatarLODFactor"
324 decimal_digits="3" enabled="true" follows="left|top" height="16" 324 decimal_digits="3" enabled="true" follows="left|top" height="16"
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 05658f6..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
@@ -99,6 +99,9 @@ USE left="270" FOR TABBING OPTIONS
99 <button bottom_delta="-30" follows="top|left" height="20" label="Auto-Response Options" 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" 100 left_delta="0" name="busy_adv_btn" tool_tip="Instant message Auto-Response options"
101 width="160" font="SansSerifSmall" /> 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" />
102 105
103 <string name="log_in_to_change"> 106 <string name="log_in_to_change">
104 log in to change 107 log in to change
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 57d8f31..6e68c0e 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
@@ -345,8 +345,8 @@ USE left="270" FOR TABBING OPTIONS
345 My external browser (Firefox, Safari, Internet Explorer, etc.) 345 My external browser (Firefox, Safari, Internet Explorer, etc.)
346 </radio_item> 346 </radio_item>
347 <radio_item bottom="-40" height="20" left="0" name="internal" width="480" 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."> 348 tool_tip="Use the internal browser for help, web links, etc. This browser opens as a new window inside the viewer.">
349 Imprudence's internal browser 349 Viewer's internal browser
350 </radio_item> 350 </radio_item>
351 </radio_group> 351 </radio_group>
352 352
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 53c29c1..625d6e5 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
@@ -35,36 +35,40 @@ USE left="270" FOR TABBING OPTIONS
35 35
36 <radio_group bottom="0" draw_border="false" follows="top|left" height="380" left="50" 36 <radio_group bottom="0" draw_border="false" follows="top|left" height="380" left="50"
37 name="skin_selection" width="480"> 37 name="skin_selection" width="480">
38 <radio_item bottom="-20" height="20" left="0" name="default" width="480"> 38 <radio_item bottom="-20" height="20" left="0" name="pslpurple" width="480">
39 Default 39 PSL purple
40 </radio_item> 40 </radio_item>
41 <radio_item bottom_delta="-50" height="20" left="0" name="silver" width="480"> 41 <radio_item bottom_delta="-50" height="20" left="0" name="gemini" width="480">
42 Silver 42 gemini
43 </radio_item> 43 </radio_item>
44 <radio_item bottom_delta="-50" height="20" left="0" name="dark" width="480"> 44 <radio_item bottom_delta="-50" height="20" left="0" name="dark" width="480">
45 Dark 45 dark
46 </radio_item> 46 </radio_item>
47 <radio_item bottom_delta="-50" height="20" left="0" name="gemini" width="480"> 47 <radio_item bottom_delta="-50" height="20" left="0" name="default" width="480">
48 Gemini 48 Classic
49 </radio_item> 49 </radio_item>
50 </radio_group> 50 </radio_group>
51 51
52 <button left="130" bottom="-125" width="216" height="95" name="classic_preview" 52 <button left="150" bottom="-130" width="216" height="95" name="pslpurple_preview"
53 scale_image="true" label="" image_selected="skin_thumbnail_pslpurple.png"
54 image_hover_selected="skin_thumbnail_pslpurple.png" image_unselected="skin_thumbnail_pslpurple.png"
55 image_hover_unselected="skin_thumbnail_pslpurple.png" follows="left|top" />
56
57 <button left="150" bottom_delta="-100" width="216" height="95" name="gemini_preview"
58 scale_image="true" label="" image_selected="skin_thumbnail_gemini.png"
59 image_hover_selected="skin_thumbnail_gemini.png" image_unselected="skin_thumbnail_gemini.png"
60 image_hover_unselected="skin_thumbnail_gemini.png" follows="left|top" />
61
62 <button left="150" bottom_delta="-100" width="216" height="95" name="dark_preview"
63 scale_image="true" label="" image_selected="skin_thumbnail_dark.png"
64 image_hover_selected="skin_thumbnail_dark.png" image_unselected="skin_thumbnail_dark.png"
65 image_hover_unselected="skin_thumbnail_dark.png" follows="left|top" />
66
67 <button left="150" bottom_delta="-100" width="216" height="95" name="classic_preview"
53 scale_image="true" label="" image_selected="skin_thumbnail_default.png" 68 scale_image="true" label="" image_selected="skin_thumbnail_default.png"
54 image_unselected="skin_thumbnail_default.png" image_hover_selected="skin_thumbnail_default.png" 69 image_hover_selected="skin_thumbnail_default.png" image_unselected="skin_thumbnail_default.png"
55 image_hover_unselected="skin_thumbnail_default.png" follows="left|top" /> 70 image_hover_unselected="skin_thumbnail_default.png" follows="left|top" />
56 <button left="130" bottom_delta="-100" width="216" height="95" name="silver_preview" 71
57 scale_image="true" label="" image_selected="skin_thumbnail_silver.png"
58 image_hover_selected="skin_thumbnail_silver.png" image_unselected="skin_thumbnail_silver.png"
59 image_hover_unselected="skin_thumbnail_silver.png" follows="left|top" />
60 <button left="130" bottom_delta="-100" width="216" height="95" name="dark_preview"
61 scale_image="true" label="" image_selected="skin_thumbnail_dark.png"
62 image_hover_selected="skin_thumbnail_dark.png" image_unselected="skin_thumbnail_dark.png"
63 image_hover_unselected="skin_thumbnail_dark.png" follows="left|top" />
64 <button left="130" bottom_delta="-100" width="216" height="95" name="gemini_preview"
65 scale_image="true" label="" image_selected="skin_thumbnail_gemini.png"
66 image_hover_selected="skin_thumbnail_gemini.png" image_unselected="skin_thumbnail_gemini.png"
67 image_hover_unselected="skin_thumbnail_gemini.png" follows="left|top" />
68 <text name="skin_current_text" font-style="BOLD|SHADOW" 72 <text name="skin_current_text" font-style="BOLD|SHADOW"
69 left="20" bottom="5" halign="left" height="12" 73 left="20" bottom="5" halign="left" height="12"
70 follows="left|bottom" h_pad="0" v_pad="0" 74 follows="left|bottom" h_pad="0" v_pad="0"
diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_status_bar.xml b/linden/indra/newview/skins/default/xui/en-us/panel_status_bar.xml
index 46ba64a..0169f38 100644
--- a/linden/indra/newview/skins/default/xui/en-us/panel_status_bar.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/panel_status_bar.xml
@@ -101,7 +101,7 @@
101 <button bottom="-17" enabled="true" follows="right|bottom" font="SansSerifSmall" 101 <button bottom="-17" enabled="true" follows="right|bottom" font="SansSerifSmall"
102 halign="center" height="16" image_unselected="status_search_btn.png" image_selected="status_search_btn_pressed.png" image_disabled_selected="status_search_btn_pressed.png" image_disabled="status_search_btn.png" 102 halign="center" height="16" image_unselected="status_search_btn.png" image_selected="status_search_btn_pressed.png" image_disabled_selected="status_search_btn_pressed.png" image_disabled="status_search_btn.png"
103 label="" label_selected="" left="-16" mouse_opaque="true" name="search_btn" 103 label="" label_selected="" left="-16" mouse_opaque="true" name="search_btn"
104 tool_tip="Search Second Life" width="16" scale_image="false"/> 104 tool_tip="Search the grid" width="16" scale_image="false"/>
105 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false" 105 <text type="string" length="1" bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
106 bottom="-16" enabled="false" follows="right|bottom" font="SansSerifSmall" 106 bottom="-16" enabled="false" follows="right|bottom" font="SansSerifSmall"
107 halign="center" height="12" left="-20" mouse_opaque="true" 107 halign="center" height="12" left="-20" mouse_opaque="true"
diff --git a/linden/indra/newview/skins/default/xui/en-us/role_actions.xml b/linden/indra/newview/skins/default/xui/en-us/role_actions.xml
index bac41bc..1c59430 100644
--- a/linden/indra/newview/skins/default/xui/en-us/role_actions.xml
+++ b/linden/indra/newview/skins/default/xui/en-us/role_actions.xml
@@ -84,7 +84,7 @@
84 longdescription="Change streaming music and movie settings in About Land &gt; Media tab." 84 longdescription="Change streaming music and movie settings in About Land &gt; Media tab."
85 name="land change media" value="20" /> 85 name="land change media" value="20" />
86 <action description="Toggle &apos;Edit Terrain&apos;" 86 <action description="Toggle &apos;Edit Terrain&apos;"
87 longdescription="Toggle &apos;Edit Terrain&apos;. *WARNING* About Land &gt; Options tab &gt; Edit Terrain allows anyone to terraform your land&apos;s shape, and place and move Linden plants. Be sure you know what you&apos;re doing before assigning this Ability. Editing terrain is toggled in About Land &gt; Options tab." 87 longdescription="Toggle &apos;Edit Terrain&apos;. *WARNING* About Land &gt; Options tab &gt; Edit Terrain allows anyone to terraform your land&apos;s shape, and place and move prim plants. Be sure you know what you&apos;re doing before assigning this Ability. Editing terrain is toggled in About Land &gt; Options tab."
88 name="land edit" value="21" /> 88 name="land edit" value="21" />
89 <action description="Toggle various About Land &gt; Options settings" 89 <action description="Toggle various About Land &gt; Options settings"
90 longdescription="Toggle &apos;Safe (no damage)&apos;, &apos;Fly&apos;, and allow other Residents to: &apos;Create Objects&apos;, &apos;Edit Terrain&apos;, &apos;Create Landmarks&apos;, and &apos;Run Scripts&apos; on group-owned land in About Land &gt; Options tab." 90 longdescription="Toggle &apos;Safe (no damage)&apos;, &apos;Fly&apos;, and allow other Residents to: &apos;Create Objects&apos;, &apos;Edit Terrain&apos;, &apos;Create Landmarks&apos;, and &apos;Run Scripts&apos; on group-owned land in About Land &gt; Options tab."
@@ -126,7 +126,7 @@
126 name="land admin" value="32" /> 126 name="land admin" value="32" />
127 </action_set> 127 </action_set>
128 <action_set 128 <action_set
129 description="These Abilities include powers to allow members to return objects and place and move Linden plants. This is useful for Members to clean up litter and do landscaping, but it should also be used with care, because there&apos;s no undo for returning objects." 129 description="These Abilities include powers to allow members to return objects and place and move prim plants. This is useful for Members to clean up litter and do landscaping, but it should also be used with care, because there&apos;s no undo for returning objects."
130 name="Parcel Content"> 130 name="Parcel Content">
131 <action description="Return objects owned by group" 131 <action description="Return objects owned by group"
132 longdescription="Return objects on group-owned parcels that are owned by the group in About Land &gt; Objects tab." 132 longdescription="Return objects on group-owned parcels that are owned by the group in About Land &gt; Objects tab."
@@ -137,8 +137,8 @@
137 <action description="Return non-group objects" 137 <action description="Return non-group objects"
138 longdescription="Return objects on group-owned parcels that are non-group in About Land &gt; Objects tab." 138 longdescription="Return objects on group-owned parcels that are non-group in About Land &gt; Objects tab."
139 name="land return non group" value="34" /> 139 name="land return non group" value="34" />
140 <action description="Landscaping using Linden plants" 140 <action description="Landscaping using prim plants"
141 longdescription="Landscaping ability to place and move Linden trees, plants, and grasses. These items can be found in your inventory&apos;s Library &gt; Objects folder or they can be created via the Build button." 141 longdescription="Landscaping ability to place and move prim trees, plants, and grasses. These items can be found in your inventory&apos;s Library &gt; Objects folder or they can be created via the Build button."
142 name="land gardening" value="35" /> 142 name="land gardening" value="35" />
143 </action_set> 143 </action_set>
144 <action_set 144 <action_set
diff --git a/linden/indra/newview/skins/default/xui/es/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/es/floater_report_bug.xml
index 3d32829..da6944e 100644
--- a/linden/indra/newview/skins/default/xui/es/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/es/floater_report_bug.xml
@@ -57,8 +57,8 @@
57 <combo_item name="MissingContent"> 57 <combo_item name="MissingContent">
58 Contenido perdido 58 Contenido perdido
59 </combo_item> 59 </combo_item>
60 <combo_item name="LindenDollars(L$)"> 60 <combo_item name="GridCurrency">
61 Linden Dólares (L$) 61 Grid currency
62 </combo_item> 62 </combo_item>
63 <combo_item name="Permissions"> 63 <combo_item name="Permissions">
64 Permisos 64 Permisos
diff --git a/linden/indra/newview/skins/default/xui/es/menu_viewer.xml b/linden/indra/newview/skins/default/xui/es/menu_viewer.xml
index 4a7ac4e..53bfff2 100644
--- a/linden/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -206,6 +206,6 @@
206 <menu_item_separator label="-----------" name="separator9"/> 206 <menu_item_separator label="-----------" name="separator9"/>
207 <menu_item_call label="Informar de un fallo..." name="Report Bug..."/> 207 <menu_item_call label="Informar de un fallo..." name="Report Bug..."/>
208 </menu> 208 </menu>
209 <menu_item_call label="Acerca de Second Life..." name="About Second Life..."/> 209 <menu_item_call label="Acerca de meta-impy..." name="About meta-impy..."/>
210 </menu> 210 </menu>
211</menu_bar> 211</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/es/notifications.xml b/linden/indra/newview/skins/default/xui/es/notifications.xml
index f39dfc9..f3a862d 100644
--- a/linden/indra/newview/skins/default/xui/es/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/es/notifications.xml
@@ -1454,21 +1454,6 @@ Se ocultará el chat y los mensajes instantáneos. Los mensajes instantáneos re
1454 <button name="Cancel" text="Cancelar"/> 1454 <button name="Cancel" text="Cancelar"/>
1455 </form> 1455 </form>
1456 </notification> 1456 </notification>
1457 <notification label="Cambiar un estado Linden" name="ChangeLindenEstate">
1458 Va a hacer cambios en un estado propiedad de Linden (mainland, grid teen, orientación, etc.).
1459
1460Esto es EXTREMADAMENTE PELIGROSO, porque puede afectar radicalmente al funcionamiento de los usuarios. En mainland, se cambiarán miles de regiones, y se provocará un colapso en el espacio del servidor.
1461
1462¿Proceder?
1463 <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
1464 </notification>
1465 <notification label="Cambiar el acceso a un estado Linden" name="ChangeLindenAccess">
1466 Va a cambiar la lista de acceso de un estado propiedad de Linden (mainland, grid teen, orientación, etc.).
1467
1468Esto es PELIGROSO, y sólo debe hacerse para deshacerse de ataques que permitan sacar o meter en el grid objetos o L$.
1469Se cambiarán miles de regiones, y se provocará un colapso en el espacio del servidor.
1470 <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
1471 </notification>
1472 <notification label="Seleccionar el estado" name="EstateAllowedAgentAdd"> 1457 <notification label="Seleccionar el estado" name="EstateAllowedAgentAdd">
1473 ¿Añadir a la lista de permitidos sólo para este estado o para [ALL_ESTATES]? 1458 ¿Añadir a la lista de permitidos sólo para este estado o para [ALL_ESTATES]?
1474 <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/> 1459 <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todos los estados" yestext="Este estado"/>
diff --git a/linden/indra/newview/skins/default/xui/es/panel_group_general.xml b/linden/indra/newview/skins/default/xui/es/panel_group_general.xml
index 68245ff..c4995fc 100644
--- a/linden/indra/newview/skins/default/xui/es/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/es/panel_group_general.xml
@@ -73,8 +73,6 @@ Ponga su ratón sobre las opciones para más información.
73 Recuperando los datos de los miembros 73 Recuperando los datos de los miembros
74 </string> 74 </string>
75 <string name="confirm_group_create_str"> 75 <string name="confirm_group_create_str">
76 Crear este grupo cuesta 100 L$. 76¿Está plena, absoluta, y TOTALMENTE seguro de que quiere gastarse 0 M$ para crear este grupo?
77¿Está plena, absoluta, y TOTALMENTE seguro de que quiere gastarse 100 L$ para crear este grupo?
78Queda avisado de que si, en un plazo de 48 horas, no entra nadie al grupo, éste será disuelto, y el nombre no se podrá usar en el futuro.
79 </string> 77 </string>
80</panel> 78</panel>
diff --git a/linden/indra/newview/skins/default/xui/fr/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/fr/floater_report_bug.xml
index 80a42f1..1cbf457 100644
--- a/linden/indra/newview/skins/default/xui/fr/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/fr/floater_report_bug.xml
@@ -61,8 +61,8 @@
61 <combo_item name="MissingContent"> 61 <combo_item name="MissingContent">
62 Contenu manquant 62 Contenu manquant
63 </combo_item> 63 </combo_item>
64 <combo_item name="LindenDollars(L$)"> 64 <combo_item name="GridCurrency">
65 Dollar Linden (L$) 65 Grid currency
66 </combo_item> 66 </combo_item>
67 <combo_item name="Permissions"> 67 <combo_item name="Permissions">
68 Autorisations 68 Autorisations
diff --git a/linden/indra/newview/skins/default/xui/fr/menu_viewer.xml b/linden/indra/newview/skins/default/xui/fr/menu_viewer.xml
index ed46c87..730edb5 100644
--- a/linden/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -214,6 +214,6 @@
214 <menu_item_separator label="-----------" name="separator9"/> 214 <menu_item_separator label="-----------" name="separator9"/>
215 <menu_item_call label="Signaler un bug..." name="Report Bug..."/> 215 <menu_item_call label="Signaler un bug..." name="Report Bug..."/>
216 </menu> 216 </menu>
217 <menu_item_call label="À propos de Second Life..." name="About Second Life..."/> 217 <menu_item_call label="À propos de meta-impy..." name="About meta-impy..."/>
218 </menu> 218 </menu>
219</menu_bar> 219</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/fr/notifications.xml b/linden/indra/newview/skins/default/xui/fr/notifications.xml
index 6911f8b..dc7e61f 100644
--- a/linden/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/fr/notifications.xml
@@ -1425,21 +1425,6 @@ Pour quitter un groupe, sélectionnez l&apos;option Groupe dans le menu Éditer.
1425 <button name="Cancel" text="Annuler"/> 1425 <button name="Cancel" text="Annuler"/>
1426 </form> 1426 </form>
1427 </notification> 1427 </notification>
1428 <notification label="Modifier un domaine Linden" name="ChangeLindenEstate">
1429 Vous vous apprêtez à modifier un domaine appartenant aux Lindens (continent, zone réservée aux ados, orientation etc.).
1430
1431Cela est extrêmement délicat car l&apos;expérience des résidents est en jeu. Sur le continent, cela modifiera des milliers de régions et sera difficile à digérer pour le serveur.
1432
1433Continuer ?
1434 <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
1435 </notification>
1436 <notification label="Modifier l&apos;accès à un domaine Linden" name="ChangeLindenAccess">
1437 Vous vous apprêtez à modifier la liste d&apos;accès à un domaine appartenant aux Linden (continent, zone réservée aux ados, orientation etc.).
1438
1439Cette action est délicate et ne doit être effectuée que pour appeler le hack autorisant des objets/L$ à être transférés à l&apos;intérieur/extérieur de la grille.
1440Cette action modifiera des milliers de régions et sera difficile à digérer pour le serveur.
1441 <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
1442 </notification>
1443 <notification label="Choisir le domaine" name="EstateAllowedAgentAdd"> 1428 <notification label="Choisir le domaine" name="EstateAllowedAgentAdd">
1444 Ajouter à la liste des résidents autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ? 1429 Ajouter à la liste des résidents autorisés uniquement pour ce domaine ou pour [ALL_ESTATES] ?
1445 <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/> 1430 <usetemplate canceltext="Annuler" name="yesnocancelbuttons" notext="Tous les domaines" yestext="Ce domaine"/>
diff --git a/linden/indra/newview/skins/default/xui/fr/panel_group_general.xml b/linden/indra/newview/skins/default/xui/fr/panel_group_general.xml
index 2b983ce..5850b62 100644
--- a/linden/indra/newview/skins/default/xui/fr/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/fr/panel_group_general.xml
@@ -69,8 +69,6 @@
69 Extraction des données du résident en cours 69 Extraction des données du résident en cours
70 </string> 70 </string>
71 <string name="confirm_group_create_str"> 71 <string name="confirm_group_create_str">
72 La création de ce groupe coûte 100 L$. 72Êtes-vous vraiment certain de vouloir dépenser 0 M$ pour créer ce groupe ?
73Êtes-vous vraiment certain de vouloir dépenser 100 L$ pour créer ce groupe ?
74Sachez que si personne ne rejoint ce groupe sous 48h, il sera démantelé et ne pourra plus être utilisé.
75 </string> 73 </string>
76</panel> 74</panel>
diff --git a/linden/indra/newview/skins/default/xui/hu/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/hu/floater_report_bug.xml
index 6c3286d..3db9f5a 100644
--- a/linden/indra/newview/skins/default/xui/hu/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/hu/floater_report_bug.xml
@@ -60,8 +60,8 @@
60 <combo_item name="MissingContent"> 60 <combo_item name="MissingContent">
61 Hiányzó tartalom 61 Hiányzó tartalom
62 </combo_item> 62 </combo_item>
63 <combo_item name="LindenDollars(L$)"> 63 <combo_item name="GridCurrency">
64 Linden dollár (L$) 64 Grid currency
65 </combo_item> 65 </combo_item>
66 <combo_item name="Permissions"> 66 <combo_item name="Permissions">
67 Jogosultság 67 Jogosultság
diff --git a/linden/indra/newview/skins/default/xui/hu/menu_viewer.xml b/linden/indra/newview/skins/default/xui/hu/menu_viewer.xml
index cecd5ad..c8f5a97 100644
--- a/linden/indra/newview/skins/default/xui/hu/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/hu/menu_viewer.xml
@@ -202,6 +202,6 @@
202 <menu_item_separator label="-----------" name="separator9"/> 202 <menu_item_separator label="-----------" name="separator9"/>
203 <menu_item_call label="Hiba jelentése..." name="Report Bug..."/> 203 <menu_item_call label="Hiba jelentése..." name="Report Bug..."/>
204 </menu> 204 </menu>
205 <menu_item_call label="Second Life-ról..." name="About Second Life..."/> 205 <menu_item_call label="meta-impy-ról..." name="About meta-impy..."/>
206 </menu> 206 </menu>
207</menu_bar> 207</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/hu/notifications.xml b/linden/indra/newview/skins/default/xui/hu/notifications.xml
index bf41284..6bc188d 100644
--- a/linden/indra/newview/skins/default/xui/hu/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/hu/notifications.xml
@@ -1317,19 +1317,6 @@ A csoportból való kilépéshez válaszd a &apos;Csoportok...&apos; részt a &a
1317 <notification label="Üzenetküldés mindenki számára a telkeden" name="MessageEstate"> 1317 <notification label="Üzenetküldés mindenki számára a telkeden" name="MessageEstate">
1318 Rövid bejelentés írása, amely elküldésre mindenki részére, aki az ingatlanodon tartózkodik. 1318 Rövid bejelentés írása, amely elküldésre mindenki részére, aki az ingatlanodon tartózkodik.
1319 </notification> 1319 </notification>
1320 <notification label="Linden telek változtatása" name="ChangeLindenEstate">
1321 Linden tulajdonú telek változtatása folyamatban (mainland, teen grid, orientation, stb.).
1322
1323Ez NAGYON VESZÉLYES, mivel kihatással van a felhasználók megszokásaira. A mainland-en ez régiók ezreit befolyásolja, amely a &apos;spaceserver&apos; működésében akadályokat okoz.
1324
1325Folytatod?
1326 </notification>
1327 <notification label="Linden telek belépésének változtatása" name="ChangeLindenAccess">
1328 Linden tulajdonú telek változtatása folyamatban (mainland, teen grid, orientation, stb.).
1329
1330This is DANGEROUS and should only be done to invoke the hack allowing objects/L$ to be transfered in/out of a grid.
1331A mainland-en ez régiók ezreit befolyásolja, amely a &apos;spaceserver&apos; működésében akadályokat okoz.
1332 </notification>
1333 <notification label="Ingatlan kiválasztása" name="EstateAllowedAgentAdd"> 1320 <notification label="Ingatlan kiválasztása" name="EstateAllowedAgentAdd">
1334 Engedélyezettek listájához való hozzáadása csak ennek az ingatlan vagy [ALL_ESTATES] esetén? 1321 Engedélyezettek listájához való hozzáadása csak ennek az ingatlan vagy [ALL_ESTATES] esetén?
1335 </notification> 1322 </notification>
diff --git a/linden/indra/newview/skins/default/xui/hu/panel_group_general.xml b/linden/indra/newview/skins/default/xui/hu/panel_group_general.xml
index ac6ca54..7207b42 100644
--- a/linden/indra/newview/skins/default/xui/hu/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/hu/panel_group_general.xml
@@ -73,7 +73,6 @@ Helyezd az egeret a beállítások fölé a további segítségért.
73 Csoporttag információk betöltése 73 Csoporttag információk betöltése
74 </string> 74 </string>
75 <string name="confirm_group_create_str"> 75 <string name="confirm_group_create_str">
76 Csoport létrehozásának díja 100 L$.
77Valóban létre szeretnéd hozni a csoportot? 76Valóban létre szeretnéd hozni a csoportot?
78 </string> 77 </string>
79</panel> 78</panel>
diff --git a/linden/indra/newview/skins/default/xui/it/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/it/floater_report_bug.xml
index efaa626..07cd21e 100644
--- a/linden/indra/newview/skins/default/xui/it/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/it/floater_report_bug.xml
@@ -57,8 +57,8 @@
57 <combo_item name="MissingContent"> 57 <combo_item name="MissingContent">
58 Contenuto mancante 58 Contenuto mancante
59 </combo_item> 59 </combo_item>
60 <combo_item name="LindenDollars(L$)"> 60 <combo_item name="GridCurrency">
61 Linden Dollar (L$) 61 Grid currency
62 </combo_item> 62 </combo_item>
63 <combo_item name="Permissions"> 63 <combo_item name="Permissions">
64 Permessi 64 Permessi
diff --git a/linden/indra/newview/skins/default/xui/it/menu_viewer.xml b/linden/indra/newview/skins/default/xui/it/menu_viewer.xml
index 5741b39..fa6a352 100644
--- a/linden/indra/newview/skins/default/xui/it/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/it/menu_viewer.xml
@@ -202,6 +202,6 @@
202 <menu_item_separator label="-----------" name="separator9"/> 202 <menu_item_separator label="-----------" name="separator9"/>
203 <menu_item_call label="Segnala un bug..." name="Report Bug..."/> 203 <menu_item_call label="Segnala un bug..." name="Report Bug..."/>
204 </menu> 204 </menu>
205 <menu_item_call label="Informazioni su Second Life..." name="About Second Life..."/> 205 <menu_item_call label="Informazioni su meta-impy..." name="About meta-impy..."/>
206 </menu> 206 </menu>
207</menu_bar> 207</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/it/notifications.xml b/linden/indra/newview/skins/default/xui/it/notifications.xml
index 61aafae..039a6d1 100644
--- a/linden/indra/newview/skins/default/xui/it/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/it/notifications.xml
@@ -1452,21 +1452,6 @@ Per abbandonare un gruppo seleziona l&apos;opzione &apos;Gruppi..&apos; dal menu
1452 <button name="Cancel" text="Annulla"/> 1452 <button name="Cancel" text="Annulla"/>
1453 </form> 1453 </form>
1454 </notification> 1454 </notification>
1455 <notification label="Cambia la tipologia della proprietà Linden" name="ChangeLindenEstate">
1456 Stai per cambiare la tipologia della proprietà Linden (mainland, griglia minorenni, orientamento, ecc.).
1457
1458Questo è ESTREMAMENTE PERICOLOSO perchè può cambiare radicalmente l&apos;esperienza degli utenti. Sulla mainland cambierà migliaia di regioni e produrrà seri problemi ai vari server.
1459
1460Confermi?
1461 <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
1462 </notification>
1463 <notification label="Cambia la tipologia Linden di accesso alla proprietà" name="ChangeLindenAccess">
1464 Stai per cambiare la lista di accesso per una proprietà Linden (mainland, griglia minorenni, orientamento, ecc.).
1465
1466Questo è PERICOLOSO e dovrebbe essere fatto soltanto per poter lanciare il programma che consente agli oggetti/L$ di essere trasferiti fra griglie diverse.
1467Cambierà migliaia di regioni e produrrà seri problemi ai vari server.
1468 <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/>
1469 </notification>
1470 <notification label="Seleziona la proprietà" name="EstateAllowedAgentAdd"> 1455 <notification label="Seleziona la proprietà" name="EstateAllowedAgentAdd">
1471 Aggiungi alla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]? 1456 Aggiungi alla lista di accesso solo per questa proprietà oppure per [ALL_ESTATES]?
1472 <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/> 1457 <usetemplate canceltext="Annulla" name="yesnocancelbuttons" notext="Tutte le proprietà" yestext="Questa proprietà"/>
diff --git a/linden/indra/newview/skins/default/xui/it/panel_group_general.xml b/linden/indra/newview/skins/default/xui/it/panel_group_general.xml
index 2c04ec7..36f8d45 100644
--- a/linden/indra/newview/skins/default/xui/it/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/it/panel_group_general.xml
@@ -73,8 +73,6 @@ Passa il mouse sulle opzioni per un aiuto aggiuntivo.
73 Rilevando i dati dei membri 73 Rilevando i dati dei membri
74 </string> 74 </string>
75 <string name="confirm_group_create_str"> 75 <string name="confirm_group_create_str">
76 Creare questo gruppo ti costerà 100 L$. 76Sei davvero, davvero, DAVVERO sicuro che vuoi spendere 0 M$ per creare questo gruppo?
77Sei davvero, davvero, DAVVERO sicuro che vuoi spendere 100 L$ per creare questo gruppo?
78Fai attenzione che se nessun altro viene unito al gruppo entro 48 ore, questo gruppo verrà dismesso e il nome del gruppo non sarà più disponibile in futuro.
79 </string> 77 </string>
80</panel> 78</panel>
diff --git a/linden/indra/newview/skins/default/xui/ja/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/ja/floater_report_bug.xml
index 7c20151..dbcb21d 100644
--- a/linden/indra/newview/skins/default/xui/ja/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/ja/floater_report_bug.xml
@@ -63,7 +63,7 @@
63 <combo_item name="MissingContent"> 63 <combo_item name="MissingContent">
64 コンテンツãªã— 64 コンテンツãªã—
65 </combo_item> 65 </combo_item>
66 <combo_item name="LindenDollars(L$)"> 66 <combo_item name="GridCurrency">
67 リンデン・ドル(L$) 67 リンデン・ドル(L$)
68 </combo_item> 68 </combo_item>
69 <combo_item name="Permissions"> 69 <combo_item name="Permissions">
diff --git a/linden/indra/newview/skins/default/xui/ja/menu_viewer.xml b/linden/indra/newview/skins/default/xui/ja/menu_viewer.xml
index bc263bb..c6fa7fb 100644
--- a/linden/indra/newview/skins/default/xui/ja/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/ja/menu_viewer.xml
@@ -255,7 +255,7 @@
255 <menu_item_call label="è¡çªã®è¨˜éŒ²" name="Bumps, Pushes &amp;amp; Hits"/> 255 <menu_item_call label="è¡çªã®è¨˜éŒ²" name="Bumps, Pushes &amp;amp; Hits"/>
256 <menu_item_call label="ラグ メーター" name="Lag Meter"/> 256 <menu_item_call label="ラグ メーター" name="Lag Meter"/>
257 <menu_item_separator label="-----------" name="separator4"/> 257 <menu_item_separator label="-----------" name="separator4"/>
258 <menu_item_call label="Imprudenceã«ã¤ã„ã¦" name="About Imprudence"/> 258 <menu_item_call label="meta-impyã«ã¤ã„ã¦" name="About meta-impy"/>
259 </menu> 259 </menu>
260 260
261 261
diff --git a/linden/indra/newview/skins/default/xui/ja/notifications.xml b/linden/indra/newview/skins/default/xui/ja/notifications.xml
index 6da6ccc..fa63cf0 100644
--- a/linden/indra/newview/skins/default/xui/ja/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/ja/notifications.xml
@@ -1526,21 +1526,6 @@ F1キーを押ã—ã¦ãã ã•ã„。
1526 <button name="Cancel" text="å–り消ã—"/> 1526 <button name="Cancel" text="å–り消ã—"/>
1527 </form> 1527 </form>
1528 </notification> 1528 </notification>
1529 <notification label="Lindenã®ä¸å‹•ç”£ã‚’変更" name="ChangeLindenEstate">
1530 ã‚ãªãŸã¯Linden所有ã®ä¸å‹•ç”£ï¼ˆãƒ¡ã‚¤ãƒ³ãƒ©ãƒ³ãƒ‰ã€ãƒ†ã‚£ãƒ¼ãƒ³ã‚°ãƒªãƒƒãƒ‰ã€ã‚ªãƒªã‚¨ãƒ³ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ãªã©ï¼‰ã‚’変更ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚
1531
1532ã“ã‚Œã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®çµŒé¨“を根本ã‹ã‚‰æºã‚‹ãŒã—ã‹ã­ãªã„「éžå¸¸ã«å±é™ºãªè¡Œç‚ºã€ã§ã™ã€‚ã“ã‚Œã«ã‚ˆã‚Šã€ãƒ¡ã‚¤ãƒ³ãƒ©ãƒ³ãƒ‰ã§å¤šæ•°ã®åœ°åŸŸãŒå¤‰æ›´ã•ã‚Œã€ã‚¹ãƒšãƒ¼ã‚¹ã‚µãƒ¼ãƒãƒ¼ã«æ‚ªå½±éŸ¿ãŒç”Ÿã˜ã¾ã™ã€‚
1533
1534æ“作を続行ã—ã¾ã™ã‹ï¼Ÿ
1535 <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/>
1536 </notification>
1537 <notification label="Lindenã®ä¸å‹•ç”£ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’変更" name="ChangeLindenAccess">
1538 ã‚ãªãŸã¯Linden所有ã®ä¸å‹•ç”£ï¼ˆãƒ¡ã‚¤ãƒ³ãƒ©ãƒ³ãƒ‰ã€ãƒ†ã‚£ãƒ¼ãƒ³ã‚°ãƒªãƒƒãƒ‰ã€ã‚ªãƒªã‚¨ãƒ³ãƒ†ãƒ¼ã‚·ãƒ§ãƒ³ãªã©ï¼‰ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ãƒªã‚¹ãƒˆã‚’変更ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚
1539
1540ã“ã®è¡Œç‚ºã¯ã€Œå±é™ºã€ã§ã‚ã‚Šã€ã‚°ãƒªãƒƒãƒ‰ã‹ã‚‰ã‚ªãƒ–ジェクトやãŠé‡‘ã®è»¢é€ã‚’ã‚‚ãŸã‚‰ã™ãƒãƒƒã‚­ãƒ³ã‚°ã‚’引ãèµ·ã“ã™å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€å®Œå…¨ã«ãれをæ„図ã—ãŸå ´åˆã®ã¿è¡Œã†ã¹ãã‚‚ã®ã§ã™ã€‚
1541ã“ã‚Œã«ã‚ˆã‚Šå¤šæ•°ã®åœ°åŸŸãŒå¤‰æ›´ã•ã‚Œã€ã‚¹ãƒšãƒ¼ã‚¹ã‚µãƒ¼ãƒãƒ¼ã«æ‚ªå½±éŸ¿ãŒç”Ÿã˜ã¾ã™ã€‚
1542 <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/>
1543 </notification>
1544 <notification label="ä¸å‹•ç”£ã‚’é¸æŠž" name="EstateAllowedAgentAdd"> 1529 <notification label="ä¸å‹•ç”£ã‚’é¸æŠž" name="EstateAllowedAgentAdd">
1545 ã“ã®ä¸å‹•ç”£ã®è¨±å¯ãƒªã‚¹ãƒˆã ã‘ã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ ãã‚Œã¨ã‚‚[ALL_ESTATES]ã®ã™ã¹ã¦ã®è¨±å¯ãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ 1530 ã“ã®ä¸å‹•ç”£ã®è¨±å¯ãƒªã‚¹ãƒˆã ã‘ã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ ãã‚Œã¨ã‚‚[ALL_ESTATES]ã®ã™ã¹ã¦ã®è¨±å¯ãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã‹ï¼Ÿ
1546 <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ã™ã¹ã¦ã®ä¸å‹•ç”£" yestext="ã“ã®ä¸å‹•ç”£"/> 1531 <usetemplate canceltext="å–り消ã—" name="yesnocancelbuttons" notext="ã™ã¹ã¦ã®ä¸å‹•ç”£" yestext="ã“ã®ä¸å‹•ç”£"/>
diff --git a/linden/indra/newview/skins/default/xui/ja/panel_avatar.xml b/linden/indra/newview/skins/default/xui/ja/panel_avatar.xml
index 147a5f6..3cbb74b 100644
--- a/linden/indra/newview/skins/default/xui/ja/panel_avatar.xml
+++ b/linden/indra/newview/skins/default/xui/ja/panel_avatar.xml
@@ -138,7 +138,7 @@
138 </panel> 138 </panel>
139 <panel label="ピック" name="Picks"> 139 <panel label="ピック" name="Picks">
140 <tab_container name="picks tab" /> 140 <tab_container name="picks tab" />
141 <text name="Tell everyone about your favorite places in Second Life."> 141 <text name="Tell everyone about your favorite places in world.">
142 Second Lifeã®ãŠæ°—入りã®å ´æ‰€ã‚’皆ã«æ•™ãˆã¦ãã ã•ã„ 142 Second Lifeã®ãŠæ°—入りã®å ´æ‰€ã‚’皆ã«æ•™ãˆã¦ãã ã•ã„
143 </text> 143 </text>
144 <button label="æ–°è¦..." label_selected="æ–°è¦..." name="New..."/> 144 <button label="æ–°è¦..." label_selected="æ–°è¦..." name="New..."/>
@@ -149,7 +149,7 @@
149 </panel> 149 </panel>
150 <panel label="広告" name="Classified"> 150 <panel label="広告" name="Classified">
151 <tab_container name="classified tab" /> 151 <tab_container name="classified tab" />
152 <text name="Place an ad in Second Life&apos;s classified listings."> 152 <text name="Place an ad in the classified listings.">
153 SecondLifeã®ã‚¯ãƒ©ã‚·ãƒ•ã‚¡ã‚¤ãƒ‰ãƒªã‚¹ãƒˆã«åºƒå‘Šã‚’載ã›ã¾ã™ã€‚ 153 SecondLifeã®ã‚¯ãƒ©ã‚·ãƒ•ã‚¡ã‚¤ãƒ‰ãƒªã‚¹ãƒˆã«åºƒå‘Šã‚’載ã›ã¾ã™ã€‚
154 </text> 154 </text>
155 <button label="æ–°è¦..." label_selected="æ–°è¦..." name="New..."/> 155 <button label="æ–°è¦..." label_selected="æ–°è¦..." name="New..."/>
diff --git a/linden/indra/newview/skins/default/xui/ja/panel_group_general.xml b/linden/indra/newview/skins/default/xui/ja/panel_group_general.xml
index ea29530..da58e77 100644
--- a/linden/indra/newview/skins/default/xui/ja/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/ja/panel_group_general.xml
@@ -73,8 +73,6 @@
73 メンãƒãƒ¼ãƒ»ãƒ‡ãƒ¼ã‚¿ã‚’検索 73 メンãƒãƒ¼ãƒ»ãƒ‡ãƒ¼ã‚¿ã‚’検索
74 </string> 74 </string>
75 <string name="confirm_group_create_str"> 75 <string name="confirm_group_create_str">
76 ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ä½œæˆã«ã¯L$100ã‹ã‹ã‚Šã¾ã™ã€‚ 76ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ä½œæˆã«M$0ã‚‚ã®ãŠé‡‘ã‚’ã‹ã‘ã¦ã‚‚ã‹ã¾ã„ã¾ã›ã‚“ã‹ï¼Ÿ æ…Žé‡ã«åˆ¤æ–­ã—ã¦ãã ã•ã„。
77ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ä½œæˆã«L$100ã‚‚ã®ãŠé‡‘ã‚’ã‹ã‘ã¦ã‚‚ã‹ã¾ã„ã¾ã›ã‚“ã‹ï¼Ÿ æ…Žé‡ã«åˆ¤æ–­ã—ã¦ãã ã•ã„。
7848時間以内ã«èª°ã‚‚ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å‚加ã—ãªã‹ã£ãŸå ´åˆã€ã‚°ãƒ«ãƒ¼ãƒ—ã¯è§£ä½“ã•ã‚Œã€ã‚°ãƒ«ãƒ¼ãƒ—ã®åå‰ã¯ä»Šå¾Œä½¿ç”¨ã§ããªããªã‚Šã¾ã™ã€‚
79 </string> 77 </string>
80</panel> 78</panel>
diff --git a/linden/indra/newview/skins/default/xui/ko/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/ko/floater_report_bug.xml
index fbe3a45..a7b1ab5 100644
--- a/linden/indra/newview/skins/default/xui/ko/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/ko/floater_report_bug.xml
@@ -64,7 +64,7 @@
64 <combo_item name="MissingContent"> 64 <combo_item name="MissingContent">
65 유실 컨í…츠 65 유실 컨í…츠
66 </combo_item> 66 </combo_item>
67 <combo_item name="LindenDollars(L$)"> 67 <combo_item name="GridCurrency">
68 린든달러(L$) 68 린든달러(L$)
69 </combo_item> 69 </combo_item>
70 <combo_item name="Permissions"> 70 <combo_item name="Permissions">
diff --git a/linden/indra/newview/skins/default/xui/ko/menu_viewer.xml b/linden/indra/newview/skins/default/xui/ko/menu_viewer.xml
index 40d5d0a..f31c029 100644
--- a/linden/indra/newview/skins/default/xui/ko/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/ko/menu_viewer.xml
@@ -261,6 +261,6 @@
261 </menu> 261 </menu>
262 <menu_item_call label="출시 정보" name="Release Notes..." /> 262 <menu_item_call label="출시 정보" name="Release Notes..." />
263 <menu_item_separator label="-----------" name="separator6" /> 263 <menu_item_separator label="-----------" name="separator6" />
264 <menu_item_call label="세컨드ë¼ì´í”„ ì •ë³´" name="About Second Life..." /> 264 <menu_item_call label="세컨드ë¼ì´í”„ ì •ë³´ meta-impy..." name="About meta-impy..."/>
265 </menu> 265 </menu>
266</menu_bar> 266</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/ko/notifications.xml b/linden/indra/newview/skins/default/xui/ko/notifications.xml
index cb720ed..20c57a1 100644
--- a/linden/indra/newview/skins/default/xui/ko/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/ko/notifications.xml
@@ -2941,43 +2941,7 @@ Applications í´ë”ì— ë‹¤ìš´ë¡œë“œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?
2941 </form> 2941 </form>
2942 </notification> 2942 </notification>
2943 2943
2944 <notification
2945
2946 label="린든 사유지 변경"
2947 name="ChangeLindenEstate"
2948 >
2949귀하께서는 린든 ì†Œìœ ì˜ ì‚¬ìœ ì§€(ë©”ì¸ëžœë“œ, í‹´ 그리드, 오리엔테ì´ì…˜ 등)를
2950변경하려고 합니다.
2951
2952ì´ë ‡ê²Œ 하면 기본ì ìœ¼ë¡œ 사용ìžê°€ ê²Œìž„ì„ ì¦ê¸°ëŠ” ë° ì˜í–¥ì„
2953줄 수 있으므로 매우 위험합니다. ë˜í•œ ë©”ì¸ëžœë“œì—ì„œ ìˆ˜ì²œê°€ì§€ì˜ ì§€ì—­ì´ ë³€ê²½ë˜ê³ 
2954공간 서버가 ì¼ì‹œì ìœ¼ë¡œ ì¤‘ë‹¨ë  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
2955
2956계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ?
2957 <usetemplate
2958 name="okcancelbuttons"
2959 notext="취소"
2960 yestext="사유지 변경"/>
2961 </notification>
2962 2944
2963 <notification
2964
2965 label="린든 사유지 액세스 변경"
2966 name="ChangeLindenAccess"
2967 >
2968귀하께서는 린든 ì†Œìœ ì˜ ì‚¬ìœ ì§€(ë©”ì¸ëžœë“œ, í‹´ 그리드, 오리엔테ì´ì…˜ 등)ì— ëŒ€í•œ
2969ì ‘ê·¼ 목ë¡ì„ 변경하려고 합니다.
2970
2971ì´ëŠ” 위험한 ìž‘ì—…ì´ë©° 오브ì íŠ¸/ê¸ˆì•¡ì„ ê·¸ë¦¬ë“œì—ì„œ 송수신할 수 있ë„ë¡
2972í•µì„ ë¶ˆëŸ¬ë‚´ëŠ” 경우ì—만 수행할 수
2973있습니다.
2974ì´ë ‡ê²Œ 하면 ìˆ˜ì²œê°€ì§€ì˜ ì§€ì—­ì´ ë³€ê²½ë˜ê³ 
2975공간 서버가 ì¼ì‹œì ìœ¼ë¡œ ì¤‘ë‹¨ë  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
2976 <usetemplate
2977 name="okcancelbuttons"
2978 notext="취소"
2979 yestext="사유지 변경"/>
2980 </notification>
2981 2945
2982 <notification 2946 <notification
2983 2947
diff --git a/linden/indra/newview/skins/default/xui/ko/panel_group_general.xml b/linden/indra/newview/skins/default/xui/ko/panel_group_general.xml
index 9e38e68..1d62cda 100644
--- a/linden/indra/newview/skins/default/xui/ko/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/ko/panel_group_general.xml
@@ -57,9 +57,7 @@
57 íšŒì› ë°ì´í„°ë¥¼ 가져오는 중 57 íšŒì› ë°ì´í„°ë¥¼ 가져오는 중
58 </text> 58 </text>
59 <text name="confirm_group_create_str"> 59 <text name="confirm_group_create_str">
60 ì´ ê·¸ë£¹ì„ ìƒì„±í•˜ë ¤ë©´ L$100ê°€ 듭니다. 60ì´ ê·¸ë£¹ì„ ë§Œë“œëŠ” ë° M$0를 지불할 ì˜ì‚¬ê°€ 있는지 잘 ìƒê°í•´ 보십시오.
61ì´ ê·¸ë£¹ì„ ë§Œë“œëŠ” ë° L$100를 지불할 ì˜ì‚¬ê°€ 있는지 잘 ìƒê°í•´ 보십시오.
6248시간 ë‚´ì— ì´ ê·¸ë£¹ì— ì•„ë¬´ë„ ê°€ìž…í•˜ì§€ 않으면 ê·¸ë£¹ì´ ì‚­ì œë˜ê³  ë‚˜ì¤‘ì— ì´ ê·¸ë£¹ì˜ ì´ë¦„ì„ ì‚¬ìš©í•  수 없게 ë©ë‹ˆë‹¤.
63 </text> 61 </text>
64 <text> 62 <text>
65 그룹 환경 설정 63 그룹 환경 설정
diff --git a/linden/indra/newview/skins/default/xui/pl/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/pl/floater_report_bug.xml
index af4c4c5..15c9547 100755
--- a/linden/indra/newview/skins/default/xui/pl/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/pl/floater_report_bug.xml
@@ -60,8 +60,8 @@
60 <combo_item name="MissingContent"> 60 <combo_item name="MissingContent">
61 BrakujÄ…cy Element 61 BrakujÄ…cy Element
62 </combo_item> 62 </combo_item>
63 <combo_item name="LindenDollars(L$)"> 63 <combo_item name="GridCurrency">
64 Linden Dollars (L$) 64 Grid currency
65 </combo_item> 65 </combo_item>
66 <combo_item name="Permissions"> 66 <combo_item name="Permissions">
67 Prawa 67 Prawa
diff --git a/linden/indra/newview/skins/default/xui/pl/menu_viewer.xml b/linden/indra/newview/skins/default/xui/pl/menu_viewer.xml
index aafd2d4..c7af8b8 100755
--- a/linden/indra/newview/skins/default/xui/pl/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/pl/menu_viewer.xml
@@ -202,6 +202,6 @@
202 <menu_item_separator label="-----------" name="separator9"/> 202 <menu_item_separator label="-----------" name="separator9"/>
203 <menu_item_call label="Wyślij Raport Błędu..." name="Report Bug..."/> 203 <menu_item_call label="Wyślij Raport Błędu..." name="Report Bug..."/>
204 </menu> 204 </menu>
205 <menu_item_call label="O Second Life..." name="About Second Life..."/> 205 <menu_item_call label="O meta-impy..." name="About meta-impy..."/>
206 </menu> 206 </menu>
207</menu_bar> 207</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/pl/notifications.xml b/linden/indra/newview/skins/default/xui/pl/notifications.xml
index 38a4b56..4c8ee5c 100644
--- a/linden/indra/newview/skins/default/xui/pl/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/pl/notifications.xml
@@ -1434,23 +1434,6 @@ Musisz opuścić przynajmniej jedną grupę żeby przyjąć członkostwo w tej g
1434 <button name="Cancel" text="Anuluj"/> 1434 <button name="Cancel" text="Anuluj"/>
1435 </form> 1435 </form>
1436 </notification> 1436 </notification>
1437 <notification label="Zmiana Majątku Lindenów" name="ChangeLindenEstate">
1438 Dokonujesz zmiany w Regionie Głównym należącym do Lindenów (Regiony Główne, Teen Grid, Orientacja).
1439
1440Żądana operacja jest wyjątkowo niebezpieczna dla wszystkich Rezydentów przebywających w regionie. Dodatkowo, zmiany dokonane w Regionie Głównym mogą spowodować problemy przestrzeni serwerowej innych regionów.
1441
1442Kontynuować?
1443 <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
1444 </notification>
1445 <notification label="Zmiana Dostępu do Majątku Lindenów" name="ChangeLindenAccess">
1446 Dokonujesz zmiany w liście dostępu Regionu Głównego należącego do Lindenów (Regiony Główne, Teen Grid, Orientacja).
1447
1448Żądana operacja jest wyjątkowo niebezpieczna dla wszystkich Rezydentów przebywających w regionie i powinna być używana wyłącznie w celu zablokowania opcji pozwalającej na przeniesienie obiektów/L$ do/z sieci.
1449Dodatkowo, zmiany dokonane w Regionie Głównym mogą spowodować problemy przestrzeni serwerowej innych regionów.
1450
1451Kontynuować?
1452 <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
1453 </notification>
1454 <notification label="Wybierz MajÄ…tek" name="EstateAllowedAgentAdd"> 1437 <notification label="Wybierz MajÄ…tek" name="EstateAllowedAgentAdd">
1455 Dodać do listy dostępu do tego majątku czy do [ALL_ESTATES]? 1438 Dodać do listy dostępu do tego majątku czy do [ALL_ESTATES]?
1456 <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/> 1439 <usetemplate canceltext="Anuluj" name="yesnocancelbuttons" notext="Wszystkie majÄ…tki" yestext="Ten majÄ…tek"/>
diff --git a/linden/indra/newview/skins/default/xui/pl/panel_group_general.xml b/linden/indra/newview/skins/default/xui/pl/panel_group_general.xml
index 6f6d524..eb55991 100755
--- a/linden/indra/newview/skins/default/xui/pl/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/pl/panel_group_general.xml
@@ -71,8 +71,6 @@ ustawienia grupy oraz opcje członkostwa.
71 Wyszukiwanie informacji o członku 71 Wyszukiwanie informacji o członku
72 </string> 72 </string>
73 <string name="confirm_group_create_str"> 73 <string name="confirm_group_create_str">
74 Koszt utworzenia tej grupy wynosi L$100. 74Czy napewno jesteś PEWNY,że chcesz zapłacić M$0 by utworzyć grupę?
75Czy napewno jesteś PEWNY,że chcesz zapłacić L$100 by utworzyć grupę?
76Pamiętaj, jeżeli w ciągu 48h od utworzenia grupy nikt do niej nie dołączy, informacje o grupie zostaną usunięte z bazy, a nazwa grupy zablokowana do użycia w przyszłości.
77 </string> 75 </string>
78</panel> 76</panel>
diff --git a/linden/indra/newview/skins/default/xui/pt/menu_viewer.xml b/linden/indra/newview/skins/default/xui/pt/menu_viewer.xml
index 76b674a..e858113 100644
--- a/linden/indra/newview/skins/default/xui/pt/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/pt/menu_viewer.xml
@@ -206,6 +206,6 @@
206 <menu_item_separator label="-----------" name="separator9"/> 206 <menu_item_separator label="-----------" name="separator9"/>
207 <menu_item_call label="Reportar Bug..." name="Report Bug..."/> 207 <menu_item_call label="Reportar Bug..." name="Report Bug..."/>
208 </menu> 208 </menu>
209 <menu_item_call label="Sobre Second Life..." name="About Second Life..."/> 209 <menu_item_call label="Sobre meta-impy..." name="About meta-impy..."/>
210 </menu> 210 </menu>
211</menu_bar> 211</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/pt/notifications.xml b/linden/indra/newview/skins/default/xui/pt/notifications.xml
index 71903c1..a026c59 100644
--- a/linden/indra/newview/skins/default/xui/pt/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/pt/notifications.xml
@@ -1434,21 +1434,6 @@ Bate-papo e mensagens instantâneas serão escondidas. Mensagens instantâneas i
1434 <button name="Cancel" text="Cancelar"/> 1434 <button name="Cancel" text="Cancelar"/>
1435 </form> 1435 </form>
1436 </notification> 1436 </notification>
1437 <notification label="Mudar propriedade Linden" name="ChangeLindenEstate">
1438 Você está prestes a mudar uma propriedade pertencente a Linden (continente, teen grid, orientação, etc.)
1439
1440Isto é EXTREMAMENTE PERIGOSO porque pode fundamentalmente afetar a experiência do usuário. No continente, vai mudar milhares de regiões e fazer o spaceserver soluçar.
1441
1442Proceder?
1443 <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Mudar Propriedade"/>
1444 </notification>
1445 <notification label="Mudar o acesso à propriedade Linden" name="ChangeLindenAccess">
1446 Você está prestes a mudar a lista de acessos de uma propriedade pertencente a Linden (continente, teen grid, orientação, etc.).
1447
1448Isto é PERIGOSO e deveria ser feito apenas para utilizar uma brecha que permita que objetos/L$ sejam transferidos para dentro/fora da grade.
1449Isto mudará milhares de regiões e fará o spaceserver soluçar.
1450 <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/>
1451 </notification>
1452 <notification label="Selecione a propriedade" name="EstateAllowedAgentAdd"> 1437 <notification label="Selecione a propriedade" name="EstateAllowedAgentAdd">
1453 Adicionar à lista de permitidos somente para esta propriedade ou para [ALL_ESTATES]? 1438 Adicionar à lista de permitidos somente para esta propriedade ou para [ALL_ESTATES]?
1454 <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/> 1439 <usetemplate canceltext="Cancelar" name="yesnocancelbuttons" notext="Todas as Propriedades" yestext="Esta Propriedade"/>
diff --git a/linden/indra/newview/skins/default/xui/pt/panel_group_general.xml b/linden/indra/newview/skins/default/xui/pt/panel_group_general.xml
index 185ed77..429c70e 100644
--- a/linden/indra/newview/skins/default/xui/pt/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/pt/panel_group_general.xml
@@ -69,8 +69,6 @@
69 Recuperando dados do membro 69 Recuperando dados do membro
70 </string> 70 </string>
71 <string name="confirm_group_create_str"> 71 <string name="confirm_group_create_str">
72 Criar este grupo irá custar L$100. 72Você está realmente, realmente, REALMENTE seguro que deseja gastar M$0 para criar este grupo?
73Você está realmente, realmente, REALMENTE seguro que deseja gastar L$100 para criar este grupo?
74Esteja consciente de que se ninguém mais se juntar a este grupo dentro de 48 horas, este será dissolvido e o nome não estará disponível para uso futuro.
75 </string> 73 </string>
76</panel> 74</panel>
diff --git a/linden/indra/newview/skins/default/xui/ru/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/ru/floater_report_bug.xml
index 0779ac3..b74c154 100644
--- a/linden/indra/newview/skins/default/xui/ru/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/ru/floater_report_bug.xml
@@ -60,7 +60,7 @@
60 <combo_item name="MissingContent"> 60 <combo_item name="MissingContent">
61 ОтÑутÑтвующее Ñодержимое 61 ОтÑутÑтвующее Ñодержимое
62 </combo_item> 62 </combo_item>
63 <combo_item name="LindenDollars(L$)"> 63 <combo_item name="GridCurrency">
64 Деньги (L$) 64 Деньги (L$)
65 </combo_item> 65 </combo_item>
66 <combo_item name="Permissions"> 66 <combo_item name="Permissions">
diff --git a/linden/indra/newview/skins/default/xui/ru/menu_viewer.xml b/linden/indra/newview/skins/default/xui/ru/menu_viewer.xml
index a9b3c00..e64039d 100644
--- a/linden/indra/newview/skins/default/xui/ru/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/ru/menu_viewer.xml
@@ -202,6 +202,6 @@
202 <menu_item_separator label="-----------" name="separator9"/> 202 <menu_item_separator label="-----------" name="separator9"/>
203 <menu_item_call label="Отчет об ошибке..." name="Report Bug..."/> 203 <menu_item_call label="Отчет об ошибке..." name="Report Bug..."/>
204 </menu> 204 </menu>
205 <menu_item_call label="О Second Life..." name="About Second Life..."/> 205 <menu_item_call label="О meta-impy..." name="About meta-impy..."/>
206 </menu> 206 </menu>
207</menu_bar> 207</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/ru/notifications.xml b/linden/indra/newview/skins/default/xui/ru/notifications.xml
index 0d36371..e0f7740 100644
--- a/linden/indra/newview/skins/default/xui/ru/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/ru/notifications.xml
@@ -1452,21 +1452,6 @@ www.secondlife.com/support
1452 <button name="Cancel" text="Отмена"/> 1452 <button name="Cancel" text="Отмена"/>
1453 </form> 1453 </form>
1454 </notification> 1454 </notification>
1455 <notification label="Изменить учаÑток Линденов" name="ChangeLindenEstate">
1456 Ð’Ñ‹ хотите Ñменить помеÑÑ‚ÑŒÑ, принадлежащие Линденам (материк, детÑкий Grid, оÑтров ориентации и Ñ‚.д.).
1457
1458Это ЧРЕЗВЫЧÐЙÐО ОПÐСÐО, потому что Ñто может ÑущеÑтвенно повлиÑÑ‚ÑŒ на положение вещей. Ðа материке Ñто может изменить Ñ‚Ñ‹ÑÑчи регионов, и иÑпортить работу Ñерверов.
1459
1460Продолжить?
1461 <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
1462 </notification>
1463 <notification label="Изменить доÑтуп к учаÑтку Линденов" name="ChangeLindenAccess">
1464 Ð’Ñ‹ хотите Ñменить помеÑÑ‚ÑŒÑ, принадлежащие Линденам (материк, детÑкий Grid, оÑтров ориентации и Ñ‚.д.).
1465
1466Это ЧРЕЗВЫЧÐЙÐО ОПÐСÐО и может иÑпользоватÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы вызвать методы, позволÑющие перемещать объекты/L$ в/из Grid.
1467Это может изменить Ñ‚Ñ‹ÑÑчи регионов, и иÑпортить работу Ñерверов.
1468 <usetemplate name="okcancelbuttons" notext="Отмена" yestext="OK"/>
1469 </notification>
1470 <notification label="Выбрать помеÑтье" name="EstateAllowedAgentAdd"> 1455 <notification label="Выбрать помеÑтье" name="EstateAllowedAgentAdd">
1471 Добавить в ÑпиÑок разрешенных Ñтого помеÑÑ‚ÑŒÑ Ð¸Ð»Ð¸ [ALL_ESTATES]? 1456 Добавить в ÑпиÑок разрешенных Ñтого помеÑÑ‚ÑŒÑ Ð¸Ð»Ð¸ [ALL_ESTATES]?
1472 <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Ð’Ñе помеÑÑ‚ÑŒÑ" yestext="Это помеÑтье"/> 1457 <usetemplate canceltext="Отмена" name="yesnocancelbuttons" notext="Ð’Ñе помеÑÑ‚ÑŒÑ" yestext="Это помеÑтье"/>
diff --git a/linden/indra/newview/skins/default/xui/ru/panel_group_general.xml b/linden/indra/newview/skins/default/xui/ru/panel_group_general.xml
index 3a24a28..0be523a 100644
--- a/linden/indra/newview/skins/default/xui/ru/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/ru/panel_group_general.xml
@@ -73,8 +73,6 @@
73 ЗапроÑить данные учаÑтников 73 ЗапроÑить данные учаÑтников
74 </string> 74 </string>
75 <string name="confirm_group_create_str"> 75 <string name="confirm_group_create_str">
76 Создание Ñтой группы будет Ñтоить L$100. 76Ð’Ñ‹ дейÑтвительно, дейÑтвительно, ДЕЙСТВИТЕЛЬÐО хотите потратить M$0, чтобы Ñоздать Ñту группу?
77Ð’Ñ‹ дейÑтвительно, дейÑтвительно, ДЕЙСТВИТЕЛЬÐО хотите потратить L$100, чтобы Ñоздать Ñту группу?
78Учтите, что еÑли в течении 48 чаÑов никто не приÑоединитÑÑ Ðº Вашей группе, она будет раÑформирована, и Ñто Ð¸Ð¼Ñ Ñтанет недоÑтупным Ð´Ð»Ñ Ð±ÑƒÐ´ÑƒÑ‰ÐµÐ³Ð¾ иÑпользованиÑ.
79 </string> 77 </string>
80</panel> 78</panel>
diff --git a/linden/indra/newview/skins/default/xui/tr/menu_viewer.xml b/linden/indra/newview/skins/default/xui/tr/menu_viewer.xml
index 9169977..2481883 100644
--- a/linden/indra/newview/skins/default/xui/tr/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/tr/menu_viewer.xml
@@ -202,6 +202,6 @@
202 <menu_item_separator label="-----------" name="separator9"/> 202 <menu_item_separator label="-----------" name="separator9"/>
203 <menu_item_call label="Hata raporla..." name="Report Bug..."/> 203 <menu_item_call label="Hata raporla..." name="Report Bug..."/>
204 </menu> 204 </menu>
205 <menu_item_call label="Second Life hakkında..." name="About Second Life..."/> 205 <menu_item_call label="meta-impy hakkında..." name="About meta-impy..."/>
206 </menu> 206 </menu>
207</menu_bar> 207</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/tr/panel_group_general.xml b/linden/indra/newview/skins/default/xui/tr/panel_group_general.xml
index 88a17fa..2148db6 100644
--- a/linden/indra/newview/skins/default/xui/tr/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/tr/panel_group_general.xml
@@ -73,8 +73,6 @@ Daha fazla yardım için farenizi seçenekler üzerinde gezdiriniz.
73 Ãœye bilgisine eriÅŸiliyor 73 Ãœye bilgisine eriÅŸiliyor
74 </string> 74 </string>
75 <string name="confirm_group_create_str"> 75 <string name="confirm_group_create_str">
76 Bu grubu yaratmak 100L$ tutarındadır. 76Siz gerçekten, gerçekten, GERÇEKTEN bu grubu yaratmak için 0M$ harcamak istediğinizden emin misiniz?
77Siz gerçekten, gerçekten, GERÇEKTEN bu grubu yaratmak için 100L$ harcamak istediğinizden emin misiniz?
78Unutmayın eğer 48 saat içerisinde bu gruba kimse üye olmazsa, grup dağıtılacak ve grup adı gelecek kullanım için mevcut olmayacaktır.
79 </string> 77 </string>
80</panel> 78</panel>
diff --git a/linden/indra/newview/skins/default/xui/uk/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/uk/floater_report_bug.xml
index f23a2bc..12de17b 100644
--- a/linden/indra/newview/skins/default/xui/uk/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/uk/floater_report_bug.xml
@@ -60,7 +60,7 @@
60 <combo_item name="MissingContent"> 60 <combo_item name="MissingContent">
61 ВідÑутній зміÑÑ‚ 61 ВідÑутній зміÑÑ‚
62 </combo_item> 62 </combo_item>
63 <combo_item name="LindenDollars(L$)"> 63 <combo_item name="GridCurrency">
64 Гроші (L$) 64 Гроші (L$)
65 </combo_item> 65 </combo_item>
66 <combo_item name="Permissions"> 66 <combo_item name="Permissions">
diff --git a/linden/indra/newview/skins/default/xui/uk/menu_viewer.xml b/linden/indra/newview/skins/default/xui/uk/menu_viewer.xml
index 27b1625..8f81f5e 100644
--- a/linden/indra/newview/skins/default/xui/uk/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/uk/menu_viewer.xml
@@ -202,6 +202,6 @@
202 <menu_item_separator label="-----------" name="separator9"/> 202 <menu_item_separator label="-----------" name="separator9"/>
203 <menu_item_call label="Звіт про помилку..." name="Report Bug..."/> 203 <menu_item_call label="Звіт про помилку..." name="Report Bug..."/>
204 </menu> 204 </menu>
205 <menu_item_call label="Про Second Life..." name="About Second Life..."/> 205 <menu_item_call label="Про meta-impy..." name="About meta-impy..."/>
206 </menu> 206 </menu>
207</menu_bar> 207</menu_bar>
diff --git a/linden/indra/newview/skins/default/xui/uk/notifications.xml b/linden/indra/newview/skins/default/xui/uk/notifications.xml
index c7457b3..d207d02 100644
--- a/linden/indra/newview/skins/default/xui/uk/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/uk/notifications.xml
@@ -1436,21 +1436,6 @@ www.secondlife.com/support
1436 <button name="Cancel" text="Відміна"/> 1436 <button name="Cancel" text="Відміна"/>
1437 </form> 1437 </form>
1438 </notification> 1438 </notification>
1439 <notification label="Змінити ділÑнку Лінденів" name="ChangeLindenEstate">
1440 Ви хочете змінити маєтки, що належать Лінденам (материк, дитÑчий Grid, оÑтров орієнтації Ñ– Ñ‚.д.).
1441
1442Це ÐÐДЗВИЧÐЙÐО ÐЕБЕЗПЕЧÐО, тому що це може Ñуттєво вплинути на Ñтан речей. Ðа материку це може змінити тиÑÑчі регіонів, Ñ– зіпÑувати роботу Ñерверів.
1443
1444Продовжити?
1445 <usetemplate name="okcancelbuttons" notext="Відміна" yestext="OK"/>
1446 </notification>
1447 <notification label="Змінити доÑтуп до ділÑнки Лінденів" name="ChangeLindenAccess">
1448 Ви хочете змінити маєтки, що належать Лінденам (материк, дитÑчий Grid, оÑтров орієнтації Ñ– Ñ‚.д.).
1449
1450Це ÐÐДЗВИЧÐЙÐО ÐЕБЕЗПЕЧÐО Ñ– може викориÑтовуватиÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб викликати методи, що дозволÑÑ‚ÑŒ переміщати об&apos;єкти/L$ в/з Grid.
1451Це може змінити тиÑÑчі регіонів, Ñ– зіпÑувати роботу Ñерверів.
1452 <usetemplate name="okcancelbuttons" notext="Відміна" yestext="OK"/>
1453 </notification>
1454 <notification label="Обрати маєток" name="EstateAllowedAgentAdd"> 1439 <notification label="Обрати маєток" name="EstateAllowedAgentAdd">
1455 Додати в ÑпиÑок дозволених цього маєтку або [ALL_ESTATES]? 1440 Додати в ÑпиÑок дозволених цього маєтку або [ALL_ESTATES]?
1456 <usetemplate canceltext="Відміна" name="yesnocancelbuttons" notext="Ð’ÑÑ– маєтки" yestext="Цей маєток"/> 1441 <usetemplate canceltext="Відміна" name="yesnocancelbuttons" notext="Ð’ÑÑ– маєтки" yestext="Цей маєток"/>
diff --git a/linden/indra/newview/skins/default/xui/uk/panel_group_general.xml b/linden/indra/newview/skins/default/xui/uk/panel_group_general.xml
index 5d3faf8..ea80804 100644
--- a/linden/indra/newview/skins/default/xui/uk/panel_group_general.xml
+++ b/linden/indra/newview/skins/default/xui/uk/panel_group_general.xml
@@ -73,8 +73,6 @@
73 Отримати дані учаÑників 73 Отримати дані учаÑників
74 </string> 74 </string>
75 <string name="confirm_group_create_str"> 75 <string name="confirm_group_create_str">
76 Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— групи буде коштувати L$100. 76Ви дійÑно, дійÑно, ДІЙСÐО хочете потратить M$0, щоб Ñтворити цю групу?
77Ви дійÑно, дійÑно, ДІЙСÐО хочете потратить L$100, щоб Ñтворити цю групу?
78Пам&apos;Ñтайте, що Ñкщо протÑгом 48 годин ніхто не приєднаєтьÑÑ Ð´Ð¾ Вашої групи, вона буде розформована, Ñ– це ім&apos;Ñ Ñтане недоÑтупним Ð´Ð»Ñ Ð¼Ð°Ð¹Ð±ÑƒÑ‚Ð½ÑŒÐ¾Ð³Ð¾ викориÑтаннÑ.
79 </string> 77 </string>
80</panel> 78</panel>
diff --git a/linden/indra/newview/skins/default/xui/zh/floater_report_bug.xml b/linden/indra/newview/skins/default/xui/zh/floater_report_bug.xml
index 0a5d292..24e2e15 100644
--- a/linden/indra/newview/skins/default/xui/zh/floater_report_bug.xml
+++ b/linden/indra/newview/skins/default/xui/zh/floater_report_bug.xml
@@ -57,7 +57,7 @@
57 <combo_item name="MissingContent"> 57 <combo_item name="MissingContent">
58 é—失内容 58 é—失内容
59 </combo_item> 59 </combo_item>
60 <combo_item name="LindenDollars(L$)"> 60 <combo_item name="GridCurrency">
61 æž—ç™»å¸ (L$) 61 æž—ç™»å¸ (L$)
62 </combo_item> 62 </combo_item>
63 <combo_item name="Permissions"> 63 <combo_item name="Permissions">
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 b863fef..b18bbde 100644
--- a/linden/indra/newview/skins/default/xui/zh/menu_viewer.xml
+++ b/linden/indra/newview/skins/default/xui/zh/menu_viewer.xml
@@ -234,7 +234,6 @@
234 <menu_item_call label="è´¨é‡ä¿è¯ Wiki..." name="QA Wiki..."/> 234 <menu_item_call label="è´¨é‡ä¿è¯ Wiki..." name="QA Wiki..."/>
235 <menu_item_call label="汇报错误..." name="Report Bug..."/> 235 <menu_item_call label="汇报错误..." name="Report Bug..."/>
236 </menu> 236 </menu>
237 <menu_item_call name="About Imprudence" label="关于 Imprudence..." />
238 </menu> 237 </menu>
239 238
240 <menu label="高级" name="Advanced"> 239 <menu label="高级" name="Advanced">
diff --git a/linden/indra/newview/skins/default/xui/zh/notifications.xml b/linden/indra/newview/skins/default/xui/zh/notifications.xml
index 1b85998..9ee9d2f 100644
--- a/linden/indra/newview/skins/default/xui/zh/notifications.xml
+++ b/linden/indra/newview/skins/default/xui/zh/notifications.xml
@@ -1557,29 +1557,6 @@ www.secondlife.com/support
1557 <button name="OK" text="确定"/> 1557 <button name="OK" text="确定"/>
1558 </form> 1558 </form>
1559 </notification> 1559 </notification>
1560 <notification label="更改林登地产" name="ChangeLindenEstate">
1561 ä½ å°†è¦æ›´æ”¹æž—登所有的地产(大陆ã€
1562少年网格ã€æ–¹ä½å²›ï¼Œç­‰ç­‰)。
1563
1564 这个动作æžåº¦å±é™©ï¼Œå› ä¸ºå®ƒå¯èƒ½ä¼šåœ¨åŸºç¡€çš„层次上
1565å½±å“到用户体验。在大陆上, 它将改å˜
1566上åƒçš„区域,并会使空间æœåŠ¡å™¨å™Žç€ã€‚
1567
1568是å¦ç»§ç»­ï¼Ÿ
1569 <usetemplate name="okcancelbuttons" notext="å–消" yestext="更改ä¸åŠ¨äº§"/>
1570 </notification>
1571 <notification label="更改林登地产准入列表" name="ChangeLindenAccess">
1572 ä½ å°†è¦æ›´æ”¹æž—登所有的地产的准入列表(大陆ã€
1573少年网格ã€æ–¹ä½å²›ï¼Œç­‰ç­‰)。
1574
1575该æ“作éžå¸¸å±é™©ï¼Œ 应该仅在利用把物体/金钱
1576转移进或出æŸä¸ªç½‘格的对付活儿 (hack) 时候
1577æ‰åº”该被执行。 它将改å˜ä¸Šåƒçš„区域,并会
1578使空间æœåŠ¡å™¨å™Žç€ã€‚
1579
1580是å¦ç»§ç»­ï¼Ÿ
1581 <usetemplate name="okcancelbuttons" notext="å–消" yestext="更改ä¸åŠ¨äº§"/>
1582 </notification>
1583 <notification label="选择地产" name="EstateAllowedAgentAdd"> 1560 <notification label="选择地产" name="EstateAllowedAgentAdd">
1584 仅列入此地产还是[ALL_ESTATES]çš„å…许åå•ï¼Ÿ 1561 仅列入此地产还是[ALL_ESTATES]çš„å…许åå•ï¼Ÿ
1585 <usetemplate canceltext="å–消" name="yesnocancelbuttons" notext="所有地产" yestext="该地产"/> 1562 <usetemplate canceltext="å–消" name="yesnocancelbuttons" notext="所有地产" yestext="该地产"/>
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 f15f077..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
@@ -75,8 +75,6 @@
75 获å–团员信æ¯ä¸­ 75 获å–团员信æ¯ä¸­
76 </string> 76 </string>
77 <string name="confirm_group_create_str"> 77 <string name="confirm_group_create_str">
78 创建这个社团将花费 [GROUPCREATEFEE]. 78你真的,真的,真----çš„----确定è¦èŠ±è´¹[GROUPCREATEFEE]æ¥åˆ›å»ºè¿™ä¸ªç¤¾å›¢å—?
79你真的,真的,真----çš„----确定è¦èŠ±è´¹ [GROUPCREATEFEE] æ¥åˆ›å»ºè¿™ä¸ªç¤¾å›¢å—?
80请注æ„如果没有别人在48å°æ—¶å†…加入该社团,它将会被解散,并且这个社团åå­—å°†æ¥å°†ä¸èƒ½ä½¿ç”¨ã€‚
81 </string> 79 </string>
82</panel> 80</panel>
diff --git a/linden/indra/newview/skins/gemini/colors_base.xml b/linden/indra/newview/skins/gemini/colors_base.xml
index b4b9269..31e6c57 100644
--- a/linden/indra/newview/skins/gemini/colors_base.xml
+++ b/linden/indra/newview/skins/gemini/colors_base.xml
@@ -173,7 +173,7 @@
173<ParcelTextColor value="144, 165, 208, 255" /> <!-- Parcel name on menu bar, normal state --> 173<ParcelTextColor value="144, 165, 208, 255" /> <!-- Parcel name on menu bar, normal state -->
174<ParcelHoverColor value="255, 255, 255, 255" /> <!-- Parcel name on menu bar, hover state --> 174<ParcelHoverColor value="255, 255, 255, 255" /> <!-- Parcel name on menu bar, hover state -->
175<TimeTextColor value="255, 255, 255, 255" /> <!-- SL Time on menu bar --> 175<TimeTextColor value="255, 255, 255, 255" /> <!-- SL Time on menu bar -->
176<BalanceTextColor value="255, 255, 255, 255" /> <!-- Linden dollar balance on menu bar --> 176<BalanceTextColor value="255, 255, 255, 255" /> <!-- Currency balance on menu bar -->
177<HealthTextColor value="255, 255, 255, 255" /> <!-- Damage meter text on menu bar --> 177<HealthTextColor value="255, 255, 255, 255" /> <!-- Damage meter text on menu bar -->
178<GroupOverTierColor value="255, 255, 255, 255" /> <!-- Warning text in Group Info window --> 178<GroupOverTierColor value="255, 255, 255, 255" /> <!-- Warning text in Group Info window -->
179<FilterBackgroundColor value="0, 0, 0, 255" /> <!-- Matching region of Inventory search text --> 179<FilterBackgroundColor value="0, 0, 0, 255" /> <!-- Matching region of Inventory search text -->
diff --git a/linden/indra/newview/skins/gemini/textures/74ba3584-58ea-9984-5b76-62d37942ab77.tga b/linden/indra/newview/skins/gemini/textures/74ba3584-58ea-9984-5b76-62d37942ab77.tga
new file mode 100644
index 0000000..0fc1afb
--- /dev/null
+++ b/linden/indra/newview/skins/gemini/textures/74ba3584-58ea-9984-5b76-62d37942ab77.tga
Binary files differ
diff --git a/linden/indra/newview/skins/gemini/textures/b2ef2d31-9714-a07b-6ca7-31638166364b.tga b/linden/indra/newview/skins/gemini/textures/b2ef2d31-9714-a07b-6ca7-31638166364b.tga
new file mode 100644
index 0000000..7358e86
--- /dev/null
+++ b/linden/indra/newview/skins/gemini/textures/b2ef2d31-9714-a07b-6ca7-31638166364b.tga
Binary files differ
diff --git a/linden/indra/newview/skins/gemini/textures/icon_top_pick.tga b/linden/indra/newview/skins/gemini/textures/icon_top_pick.tga
index 0b34882..7fe119a 100644
--- a/linden/indra/newview/skins/gemini/textures/icon_top_pick.tga
+++ b/linden/indra/newview/skins/gemini/textures/icon_top_pick.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/License and Credit.txt b/linden/indra/newview/skins/pslpurple/License and Credit.txt
new file mode 100644
index 0000000..8e57c5b
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/License and Credit.txt
@@ -0,0 +1,4 @@
1This skin was modified by JB Kraft from the default linden skin provided.
2This skin was modified by Chalice Yao from the default linden skin and JB Kraft's skin.
3
4All Images and modifications done are provided free to use, modify, and distribute, so long as this infomation is distributed with it.
diff --git a/linden/indra/newview/skins/pslpurple/colors_base.xml b/linden/indra/newview/skins/pslpurple/colors_base.xml
new file mode 100644
index 0000000..3708d8d
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/colors_base.xml
@@ -0,0 +1,206 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<settings version = "101">
3
4<!-- WINDOWS -->
5<TitleBarFocusColor value="255, 255, 255, 30" /> <!-- Focused window title bar highlight, no equivalent for unfocused windows -->
6<FloaterFocusBorderColor value="0, 0, 0, 80"/>
7<FloaterUnfocusBorderColor value="0, 0, 0, 80"/>
8<FocusBackgroundColor value="62, 62, 62, 255"/> <!-- Background color of focused floaters -->
9<DefaultBackgroundColor value="62, 62, 62, 140"/> <!-- Background color for unfocused floaters -->
10<ColorDropShadow value="0, 0, 0, 200"/> <!-- The drop shadow behind windows and menus -->
11<DefaultHighlightDark value="26, 26, 26, 255"/>
12<DefaultHighlightLight value="132, 132, 132, 255"/>
13<DefaultShadowDark value="26, 26, 26, 255"/>
14<DefaultShadowLight value="0, 0, 0, 255"/>
15
16<!-- LABELS -->
17<LabelDisabledColor value="147, 169, 213, 77"/>
18<LabelSelectedColor value="255, 255, 255, 255"/>
19<LabelSelectedDisabledColor value="116, 116, 116, 128"/>
20<LabelTextColor value="200, 200, 200, 255"/>
21
22<!-- LOGIN -->
23<LoginProgressBarBgColor value="255, 255, 255, 255" />
24<LoginProgressBarFgColor value="255, 255, 255, 255" />
25<LoginProgressBoxBorderColor value="0, 30, 60, 0" />
26<LoginProgressBoxCenterColor value="0, 0, 0, 200" />
27<LoginProgressBoxShadowColor value="0, 0, 0, 200" />
28<LoginProgressBoxTextColor value="255, 255, 255, 255"/>
29
30<!-- BUTTONS -->
31<ButtonLabelColor value="220, 220, 220, 255"/> <!-- Text labels for buttons, like the "OK" text -->
32<ButtonLabelSelectedColor value="220, 220, 220, 255"/>
33<ButtonLabelDisabledColor value="147, 169, 213, 200"/>
34<ButtonLabelSelectedDisabledColor value="164, 190, 237, 200"/>
35<ButtonSelectedBgColor value="62, 62, 62, 255"/>
36<ButtonSelectedColor value="255, 255, 255, 255"/>
37<ButtonUnselectedBgColor value="62, 62, 62, 255"/>
38<ButtonUnselectedFgColor value="255, 255, 255, 255"/>
39<ButtonBorderColor value="238, 156, 0, 255"/>
40<ButtonFlashBgColor value="255, 190, 62, 127" />
41<ButtonColor value="255, 255, 255, 255"/> <!-- Blended with button art, usually left as opaque white -->
42<ButtonImageColor value="255, 255, 255, 255"/> <!-- Blended with button art, usually left as opaque white -->
43
44<!-- SLIDERS -->
45<SliderDisabledThumbColor value="0, 0, 0, 255" />
46<SliderThumbCenterColor value="200, 200, 200, 255"/>
47<SliderThumbOutlineColor value="255, 255, 255, 255"/>
48<SliderTrackColor value="255, 255, 255, 255"/>
49
50<!-- TEXTFIELDS -->
51<TextBgFocusColor value="200, 209, 204, 255"/> <!-- Text field background when receiving input (focused) -->
52<TextBgReadOnlyColor value="62, 62, 62, 160"/> <!-- Text field background when read-only -->
53<TextBgWriteableColor value="200, 209, 204, 230"/> <!-- Text field background when not receiving input (unfocused) -->
54<TextCursorColor value="0, 0, 0, 255"/>
55<TextFgColor value="0, 0, 0, 255"/>
56<TextFgReadOnlyColor value="255, 255, 255, 200"/>
57<TextFgTentativeColor value="0, 0, 0, 128"/>
58<TextEmbeddedItemReadOnlyColor value="58, 147, 242, 255"/> <!-- i.e. About Land name that you don't own -->
59<TextEmbeddedItemColor value="0, 0, 128, 255"/>
60<TextDefaultColor value="0, 20, 0, 255"/>
61
62<!-- LISTBOXES -->
63<ScrollBgReadOnlyColor value="200, 209, 204, 255"/>
64<ScrollBgWriteableColor value="200, 209, 204, 255"/>
65<ScrollBGStripeColor value="100, 100, 100, 40"/>
66<ScrollDisabledColor value="128, 128, 128, 204"/>
67<ScrollSelectedBGColor value="100, 100, 100, 150"/>
68<ScrollSelectedFGColor value="0, 0, 0, 204"/> <!-- Text color -->
69<ScrollUnselectedColor value="0, 0, 0, 204"/> <!-- Text color -->
70<ScrollHighlightedColor value="183, 184, 188, 128"/> <!-- Hover color -->
71<ScrollbarThumbColor value="100, 100, 100, 255"/>
72<ScrollbarTrackColor value="153, 154, 158, 255"/>
73
74<!-- MENUS -->
75<MenuBarBgColor value="62, 62, 62, 255"/>
76<MenuBarGodBgColor value="62, 128, 62, 255"/>
77<MenuNonProductionBgColor value="128, 0, 0, 255"/>
78<MenuNonProductionGodBgColor value="0,128,0,255"/>
79<MenuDefaultBgColor value="0, 0, 0, 255"/>
80<MenuItemDisabledColor value="133, 133, 164, 128"/> <!-- Menu text color; also text color for pie menus and treeviews (like Inventory) -->
81<MenuItemEnabledColor value="255, 255, 255, 255"/> <!-- Menu text color; also text color for pie menus and treeviews (like Inventory) -->
82<MenuItemHighlightBgColor value="183, 184, 188, 100"/>
83<MenuItemHighlightFgColor value="255, 255, 255, 255"/> <!-- Highlighted menu text color; also treeview node selection highlight -->
84<MenuPopupBgColor value="0, 0, 0, 255"/>
85
86<!-- PIE MENUS -->
87<PieMenuBgColor value="62, 62, 62, 150"/>
88<PieMenuLineColor value="0, 0, 0, 128"/>
89<PieMenuSelectedColor value="183, 184, 188, 77"/>
90
91<!-- TOOLTIPS -->
92<ToolTipBgColor value="183, 184, 188, 200"/>
93<ToolTipBorderColor value="171, 212, 245, 255"/>
94<ToolTipTextColor value="0, 0, 0, 255"/>
95
96<!-- NOTIFICATION POP-UPS -->
97<NotifyBoxColor value="66, 66, 66, 255"/>
98<NotifyTextColor value="200, 200, 200, 255"/>
99<NotifyCautionBoxColor value="254, 209, 118, 255"/> <!-- the background color of caution permissions prompts -->
100<NotifyCautionWarnColor value="0, 0, 0, 255"/> <!-- the foreground color of the special title text in caution permissions prompts -->
101<GroupNotifyBoxColor value="70, 170, 255, 255"/>
102<GroupNotifyTextColor value="0, 0, 0 255" />
103
104<!-- CHAT AND IM HISTORY TEXTBOX COLORS -->
105<ChatHistoryBgColor value="30, 30, 30, 200" />
106<ChatHistoryTextColor value="255, 255, 255, 255" />
107<IMHistoryBgColor value="30, 30, 30, 200" />
108<IMHistoryTextColor value="255, 255, 255, 255" />
109
110<!-- IN-WORLD SELECTION -->
111<SilhouetteParentColor value="255, 255, 0, 255"/>
112<SilhouetteChildColor value="32, 106, 196, 255"/>
113<HighlightParentColor value="171, 212, 245, 255"/>
114<HighlightChildColor value="171, 212, 245, 255"/>
115<HighlightInspectColor value="255, 0, 255, 255"/>
116
117<!-- EDIT MODE GRID -->
118<GridFocusPointColor value="255, 255, 255, 128"/>
119<GridlineColor value="255, 255, 255, 255"/>
120<GridlineBGColor value="235, 235, 255, 200"/>
121<GridlineShadowColor value="0, 0, 0, 80"/>
122
123<!-- PROPERTY LINES -->
124<PropertyColorAvail value="0, 0, 0, 0"/>
125<PropertyColorGroup value="0, 184, 184, 102"/>
126<PropertyColorOther value="255, 0, 0, 102"/>
127<PropertyColorSelf value="0, 255, 0, 102"/>
128<PropertyColorForSale value="255, 128, 0, 102"/>
129<PropertyColorAuction value="128, 0, 255, 102"/> <!-- Match the color on the world map -->
130
131<!-- Icon Enable/Disable -->
132<IconEnabledColor value="255, 255, 255, 255"/>
133<IconDisabledColor value="147, 169, 213, 200"/>
134
135<!-- MAP -->
136<MapAvatar value="0, 255, 0, 255" />
137<MapFriend value="255, 255, 0, 255" />
138<MapLinden value="0, 0, 255, 255" />
139<MapMuted value="110, 110, 110, 255" />
140
141<!-- MINI-MAP -->
142<NetMapBackgroundColor value="0, 0, 0, 77" />
143<NetMapYouOwnAboveWater value="0, 255, 255, 255" />
144<NetMapYouOwnBelowWater value="0, 200, 200, 255" />
145<NetMapGroupOwnAboveWater value="255, 0, 255, 255" />
146<NetMapGroupOwnBelowWater value="200, 0, 200, 255" />
147<NetMapOtherOwnAboveWater value="60, 60, 60, 255" />
148<NetMapOtherOwnBelowWater value="30, 30, 30, 255" />
149<NetMapThisRegion value="255, 255, 255, 255" />
150<NetMapLiveRegion value="204, 204, 204, 255" />
151<NetMapDeadRegion value="255, 128, 128, 255" />
152<NetMapFrustum value="255, 255, 255, 20" />
153<NetMapFrustumRotating value="255, 255, 255, 51" />
154
155<!-- HELP WINDOW -->
156<HelpBgColor value="200, 209, 204, 255"/>
157<HelpFgColor value="0, 0, 0, 255"/>
158<HelpScrollTrackColor value="183, 184, 188, 255"/>
159<HelpScrollThumbColor value="80, 96, 124, 255"/>
160<HelpScrollHighlightColor value="115, 132, 155, 255"/>
161<HelpScrollShadowColor value="0, 0, 0, 255"/>
162
163<!-- MISC -->
164<AvatarNameColor value="251, 175, 93, 255"/> <!-- Text color of avatar nametags -->
165<FocusColor value="238, 156, 0, 255"/> <!-- Color of the glow around UI controls with keyboard focus -->
166<FloaterButtonImageColor value="239, 156, 0, 255"/> <!-- The floater buttons (like the close box) are white images that receive this color. -->
167<ButtonCautionImageColor value="255, 255, 255, 255"/> <!-- Match the caution dialog buttons to the default -->
168<MapAutopilotColor value="255, 128, 0, 255"/>
169<ContextSilhouetteColor value="239, 156, 0, 255"/> <!-- For "context" highlighting, i.e. pie menu -->
170<ScriptBgReadOnlyColor value="100, 100, 100, 255"/>
171<ParcelTextColor value="0, 200, 100, 200" /> <!-- Parcel name on menu bar, normal state -->
172<ParcelHoverColor value="0, 200, 100, 255" /> <!-- Parcel name on menu bar, hover state -->
173<TimeTextColor value="255, 255, 255, 255" /> <!-- SL Time on menu bar -->
174<BalanceTextColor value="0, 255, 0, 255"/> <!-- Linden dollar balance on menu bar -->
175<HealthTextColor value="255, 255, 255, 255"/> <!-- Damage meter text on menu bar -->
176<GroupOverTierColor value="110, 15, 15, 255" /> <!-- Warning text in Group Info window -->
177<FilterBackgroundColor value="0, 0, 20, 255"/> <!-- Matching region of Inventory search text -->
178<FilterTextColor value="255, 200, 70, 255"/>
179<InventoryItemSuffixColor value="200, 200, 200, 255"/>
180<InventorySearchStatusColor value="0, 0, 0, 255" />
181<ConsoleBackground value="0, 0, 0, 255" />
182<FolderViewLoadingMessageTextColor value="240, 165, 90, 255"/>
183<InventoryBackgroundColor value="62, 62, 62, 80"/>
184<ComboBoxBg value="255, 255, 255, 255"/>
185<AvatarListTextDistNormalRange value="0, 0, 0, 255"/>
186<AvatarListTextDistShoutRange value="0, 0, 0, 128"/>
187<AvatarListTextDistOver value="128, 0, 0, 128"/>
188<AvatarListTextAgeYoung value="255, 0, 0, 255"/>
189<AvatarListTextAgeNormal value="0, 0, 0, 255"/>
190
191
192<!-- Alert box colors -->
193<AlertBoxColor value="62, 62, 62, 255"/>
194<AlertTextColor value="147, 169, 213, 255"/>
195<AlertCautionBoxColor value="142, 0, 157, 255"/> <!-- Background color of caution alerts -->
196<AlertCautionTextColor value="0, 0, 0, 255"/> <!-- Foreground color of the special title text in caution alerts -->
197
198<!-- Multi sliders, as in the sky animation setting -->
199<MultiSliderDisabledThumbColor value="0, 0, 0, 255"/>
200<MultiSliderThumbCenterColor value="183, 184, 188, 255"/>
201<MultiSliderThumbOutlineColor value="0, 0, 0, 255"/>
202<MultiSliderTrackColor value="30, 30, 30, 255"/>
203<MultiSliderThumbCenterSelectedColor value="255, 50, 50, 255"/>
204<MultiSliderTriangleColor value="255, 255, 50, 255"/>
205
206</settings>
diff --git a/linden/indra/newview/skins/pslpurple/textures/0098b015-3daf-4cfe-a72f-915369ea97c2.tga b/linden/indra/newview/skins/pslpurple/textures/0098b015-3daf-4cfe-a72f-915369ea97c2.tga
new file mode 100644
index 0000000..dba13ad
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/0098b015-3daf-4cfe-a72f-915369ea97c2.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/3c18c87e-5f50-14e2-e744-f44734aa365f.tga b/linden/indra/newview/skins/pslpurple/textures/3c18c87e-5f50-14e2-e744-f44734aa365f.tga
new file mode 100644
index 0000000..01146ad
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/3c18c87e-5f50-14e2-e744-f44734aa365f.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/5748decc-f629-461c-9a36-a35a221fe21f.tga b/linden/indra/newview/skins/pslpurple/textures/5748decc-f629-461c-9a36-a35a221fe21f.tga
new file mode 100644
index 0000000..55e3793
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/5748decc-f629-461c-9a36-a35a221fe21f.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/6002a571-549c-472c-9443-9ab35b1a55ed.tga b/linden/indra/newview/skins/pslpurple/textures/6002a571-549c-472c-9443-9ab35b1a55ed.tga
new file mode 100644
index 0000000..fc720c8
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/6002a571-549c-472c-9443-9ab35b1a55ed.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/7a0b1bdb-b5d9-4df5-bac2-ba230da93b5b.tga b/linden/indra/newview/skins/pslpurple/textures/7a0b1bdb-b5d9-4df5-bac2-ba230da93b5b.tga
new file mode 100644
index 0000000..5613715
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/7a0b1bdb-b5d9-4df5-bac2-ba230da93b5b.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/7dabc040-ec13-2309-ddf7-4f161f6de2f4.tga b/linden/indra/newview/skins/pslpurple/textures/7dabc040-ec13-2309-ddf7-4f161f6de2f4.tga
new file mode 100644
index 0000000..132b192
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/7dabc040-ec13-2309-ddf7-4f161f6de2f4.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/89e9fc7c-0b16-457d-be4f-136270759c4d.tga b/linden/indra/newview/skins/pslpurple/textures/89e9fc7c-0b16-457d-be4f-136270759c4d.tga
new file mode 100644
index 0000000..6cc9ea1
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/89e9fc7c-0b16-457d-be4f-136270759c4d.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/9cad3e6d-2d6d-107d-f8ab-5ba272b5bfe1.tga b/linden/indra/newview/skins/pslpurple/textures/9cad3e6d-2d6d-107d-f8ab-5ba272b5bfe1.tga
new file mode 100644
index 0000000..ceaaaba
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/9cad3e6d-2d6d-107d-f8ab-5ba272b5bfe1.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/active_speakers.tga b/linden/indra/newview/skins/pslpurple/textures/active_speakers.tga
new file mode 100644
index 0000000..37521d2
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/active_speakers.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/active_voice_tab.tga b/linden/indra/newview/skins/pslpurple/textures/active_voice_tab.tga
new file mode 100644
index 0000000..b7c817b
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/active_voice_tab.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/alpha_gradient.tga b/linden/indra/newview/skins/pslpurple/textures/alpha_gradient.tga
new file mode 100644
index 0000000..c7efa26
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/alpha_gradient.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/arrow_down.tga b/linden/indra/newview/skins/pslpurple/textures/arrow_down.tga
new file mode 100644
index 0000000..5b05df1
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/arrow_down.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/arrow_up.tga b/linden/indra/newview/skins/pslpurple/textures/arrow_up.tga
new file mode 100644
index 0000000..d9b71ac
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/arrow_up.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/b4870163-6208-42a9-9801-93133bf9a6cd.tga b/linden/indra/newview/skins/pslpurple/textures/b4870163-6208-42a9-9801-93133bf9a6cd.tga
new file mode 100644
index 0000000..fef00c8
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/b4870163-6208-42a9-9801-93133bf9a6cd.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/black.tga b/linden/indra/newview/skins/pslpurple/textures/black.tga
new file mode 100644
index 0000000..e368ea4
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/black.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/btn_chatbar.tga b/linden/indra/newview/skins/pslpurple/textures/btn_chatbar.tga
new file mode 100644
index 0000000..e5de824
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/btn_chatbar.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/btn_chatbar_selected.tga b/linden/indra/newview/skins/pslpurple/textures/btn_chatbar_selected.tga
new file mode 100644
index 0000000..ef3e5d6
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/btn_chatbar_selected.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/button_anim_pause.tga b/linden/indra/newview/skins/pslpurple/textures/button_anim_pause.tga
new file mode 100644
index 0000000..fbc81a5
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/button_anim_pause.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/button_anim_pause_selected.tga b/linden/indra/newview/skins/pslpurple/textures/button_anim_pause_selected.tga
new file mode 100644
index 0000000..defa66f
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/button_anim_pause_selected.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/button_anim_play.tga b/linden/indra/newview/skins/pslpurple/textures/button_anim_play.tga
new file mode 100644
index 0000000..92145f6
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/button_anim_play.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/button_anim_play_selected.tga b/linden/indra/newview/skins/pslpurple/textures/button_anim_play_selected.tga
new file mode 100644
index 0000000..bee2326
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/button_anim_play_selected.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/button_anim_stop.tga b/linden/indra/newview/skins/pslpurple/textures/button_anim_stop.tga
new file mode 100644
index 0000000..d0fdaaa
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/button_anim_stop.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/button_anim_stop_selected.tga b/linden/indra/newview/skins/pslpurple/textures/button_anim_stop_selected.tga
new file mode 100644
index 0000000..ebab0a7
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/button_anim_stop_selected.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/button_disabled_32x128.tga b/linden/indra/newview/skins/pslpurple/textures/button_disabled_32x128.tga
new file mode 100644
index 0000000..f49054f
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/button_disabled_32x128.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/button_enabled_32x128.tga b/linden/indra/newview/skins/pslpurple/textures/button_enabled_32x128.tga
new file mode 100644
index 0000000..8e2f33d
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/button_enabled_32x128.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/button_enabled_selected_32x128.tga b/linden/indra/newview/skins/pslpurple/textures/button_enabled_selected_32x128.tga
new file mode 100644
index 0000000..644a5e8
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/button_enabled_selected_32x128.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/c1e21504-f136-451d-b8e9-929037812f1d.tga b/linden/indra/newview/skins/pslpurple/textures/c1e21504-f136-451d-b8e9-929037812f1d.tga
new file mode 100644
index 0000000..bd8cbd7
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/c1e21504-f136-451d-b8e9-929037812f1d.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/c63f124c-6340-4fbf-b59e-0869a44adb64.tga b/linden/indra/newview/skins/pslpurple/textures/c63f124c-6340-4fbf-b59e-0869a44adb64.tga
new file mode 100644
index 0000000..94525f3
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/c63f124c-6340-4fbf-b59e-0869a44adb64.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/cam_rotate_in.tga b/linden/indra/newview/skins/pslpurple/textures/cam_rotate_in.tga
new file mode 100644
index 0000000..d08f980
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/cam_rotate_in.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/cam_rotate_out.tga b/linden/indra/newview/skins/pslpurple/textures/cam_rotate_out.tga
new file mode 100644
index 0000000..f8f64f1
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/cam_rotate_out.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/cam_tracking_in.tga b/linden/indra/newview/skins/pslpurple/textures/cam_tracking_in.tga
new file mode 100644
index 0000000..562c951
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/cam_tracking_in.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/cam_tracking_out.tga b/linden/indra/newview/skins/pslpurple/textures/cam_tracking_out.tga
new file mode 100644
index 0000000..7835704
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/cam_tracking_out.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/cam_zoom_minus_in.tga b/linden/indra/newview/skins/pslpurple/textures/cam_zoom_minus_in.tga
new file mode 100644
index 0000000..a1da27b
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/cam_zoom_minus_in.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/cam_zoom_out.tga b/linden/indra/newview/skins/pslpurple/textures/cam_zoom_out.tga
new file mode 100644
index 0000000..2e9519d
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/cam_zoom_out.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/cam_zoom_plus_in.tga b/linden/indra/newview/skins/pslpurple/textures/cam_zoom_plus_in.tga
new file mode 100644
index 0000000..c17d607
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/cam_zoom_plus_in.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/ce15fd63-b0b6-463c-a37d-ea6393208b3e.tga b/linden/indra/newview/skins/pslpurple/textures/ce15fd63-b0b6-463c-a37d-ea6393208b3e.tga
new file mode 100644
index 0000000..eeec2fd
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/ce15fd63-b0b6-463c-a37d-ea6393208b3e.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/checkbox_disabled_false.tga b/linden/indra/newview/skins/pslpurple/textures/checkbox_disabled_false.tga
new file mode 100644
index 0000000..9fd3670
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/checkbox_disabled_false.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/checkbox_disabled_true.tga b/linden/indra/newview/skins/pslpurple/textures/checkbox_disabled_true.tga
new file mode 100644
index 0000000..4e5f70b
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/checkbox_disabled_true.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/checkbox_enabled_false.tga b/linden/indra/newview/skins/pslpurple/textures/checkbox_enabled_false.tga
new file mode 100644
index 0000000..25c48bc
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/checkbox_enabled_false.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/checkbox_enabled_true.tga b/linden/indra/newview/skins/pslpurple/textures/checkbox_enabled_true.tga
new file mode 100644
index 0000000..71b6515
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/checkbox_enabled_true.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/circle.tga b/linden/indra/newview/skins/pslpurple/textures/circle.tga
new file mode 100644
index 0000000..d7097e3
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/circle.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/close_in_blue.tga b/linden/indra/newview/skins/pslpurple/textures/close_in_blue.tga
new file mode 100644
index 0000000..68a20b4
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/close_in_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/close_inactive.tga b/linden/indra/newview/skins/pslpurple/textures/close_inactive.tga
new file mode 100644
index 0000000..cd32eaa
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/close_inactive.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/close_inactive_blue.tga b/linden/indra/newview/skins/pslpurple/textures/close_inactive_blue.tga
new file mode 100644
index 0000000..cd32eaa
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/close_inactive_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/closebox.tga b/linden/indra/newview/skins/pslpurple/textures/closebox.tga
new file mode 100644
index 0000000..fea0f77
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/closebox.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/combobox_arrow.tga b/linden/indra/newview/skins/pslpurple/textures/combobox_arrow.tga
new file mode 100644
index 0000000..d769d31
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/combobox_arrow.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/darkgray.tga b/linden/indra/newview/skins/pslpurple/textures/darkgray.tga
new file mode 100644
index 0000000..1ac39a0
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/darkgray.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/eye_button_active.tga b/linden/indra/newview/skins/pslpurple/textures/eye_button_active.tga
new file mode 100644
index 0000000..eb021d7
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/eye_button_active.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/eye_button_inactive.tga b/linden/indra/newview/skins/pslpurple/textures/eye_button_inactive.tga
new file mode 100644
index 0000000..848d896
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/eye_button_inactive.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/ff9a71eb-7414-4cf8-866e-a701deb7c3cf.tga b/linden/indra/newview/skins/pslpurple/textures/ff9a71eb-7414-4cf8-866e-a701deb7c3cf.tga
new file mode 100644
index 0000000..cb183cb
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/ff9a71eb-7414-4cf8-866e-a701deb7c3cf.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/ff_edit_mine_button.tga b/linden/indra/newview/skins/pslpurple/textures/ff_edit_mine_button.tga
new file mode 100644
index 0000000..4bf64c4
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/ff_edit_mine_button.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/ff_edit_theirs_button.tga b/linden/indra/newview/skins/pslpurple/textures/ff_edit_theirs_button.tga
new file mode 100644
index 0000000..dac53dd
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/ff_edit_theirs_button.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/ff_online_status_button.tga b/linden/indra/newview/skins/pslpurple/textures/ff_online_status_button.tga
new file mode 100644
index 0000000..44f5e09
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/ff_online_status_button.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/ff_visible_map.tga b/linden/indra/newview/skins/pslpurple/textures/ff_visible_map.tga
new file mode 100644
index 0000000..d8ed323
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/ff_visible_map.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/ff_visible_map_button.tga b/linden/indra/newview/skins/pslpurple/textures/ff_visible_map_button.tga
new file mode 100644
index 0000000..081f242
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/ff_visible_map_button.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/ff_visible_online.tga b/linden/indra/newview/skins/pslpurple/textures/ff_visible_online.tga
new file mode 100644
index 0000000..2b76d72
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/ff_visible_online.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/ff_visible_online_button.tga b/linden/indra/newview/skins/pslpurple/textures/ff_visible_online_button.tga
new file mode 100644
index 0000000..001933d
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/ff_visible_online_button.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/flyout_btn_left.tga b/linden/indra/newview/skins/pslpurple/textures/flyout_btn_left.tga
new file mode 100644
index 0000000..1c977a9
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/flyout_btn_left.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/flyout_btn_left_disabled.tga b/linden/indra/newview/skins/pslpurple/textures/flyout_btn_left_disabled.tga
new file mode 100644
index 0000000..a073103
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/flyout_btn_left_disabled.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/flyout_btn_left_selected.tga b/linden/indra/newview/skins/pslpurple/textures/flyout_btn_left_selected.tga
new file mode 100644
index 0000000..d1ad939
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/flyout_btn_left_selected.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/flyout_btn_right.tga b/linden/indra/newview/skins/pslpurple/textures/flyout_btn_right.tga
new file mode 100644
index 0000000..870bf3b
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/flyout_btn_right.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/flyout_btn_right_disabled.tga b/linden/indra/newview/skins/pslpurple/textures/flyout_btn_right_disabled.tga
new file mode 100644
index 0000000..23731d3
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/flyout_btn_right_disabled.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/flyout_btn_right_selected.tga b/linden/indra/newview/skins/pslpurple/textures/flyout_btn_right_selected.tga
new file mode 100644
index 0000000..6934156
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/flyout_btn_right_selected.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/folder_arrow.tga b/linden/indra/newview/skins/pslpurple/textures/folder_arrow.tga
new file mode 100644
index 0000000..77d4707
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/folder_arrow.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-dot-lvl0.tga b/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-dot-lvl0.tga
new file mode 100644
index 0000000..35846ce
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-dot-lvl0.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-dot-lvl1.tga b/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-dot-lvl1.tga
new file mode 100644
index 0000000..1f9f564
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-dot-lvl1.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-dot-lvl2.tga b/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-dot-lvl2.tga
new file mode 100644
index 0000000..b2e5609
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-dot-lvl2.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-typing1.tga b/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-typing1.tga
new file mode 100644
index 0000000..3706c96
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-typing1.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-typing2.tga b/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-typing2.tga
new file mode 100644
index 0000000..0d127f9
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-typing2.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-typing3.tga b/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-typing3.tga
new file mode 100644
index 0000000..031b3ad
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_active-speakers-typing3.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_chatbar.tga b/linden/indra/newview/skins/pslpurple/textures/icn_chatbar.tga
new file mode 100644
index 0000000..94fd6dc
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_chatbar.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_clear_lineeditor.tga b/linden/indra/newview/skins/pslpurple/textures/icn_clear_lineeditor.tga
new file mode 100644
index 0000000..8cd8310
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_clear_lineeditor.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_label_media.tga b/linden/indra/newview/skins/pslpurple/textures/icn_label_media.tga
new file mode 100644
index 0000000..b30b879
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_label_media.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_label_music.tga b/linden/indra/newview/skins/pslpurple/textures/icn_label_music.tga
new file mode 100644
index 0000000..e42eb9b
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_label_music.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_label_web.tga b/linden/indra/newview/skins/pslpurple/textures/icn_label_web.tga
new file mode 100644
index 0000000..b12ef30
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_label_web.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_media-pause_active.tga b/linden/indra/newview/skins/pslpurple/textures/icn_media-pause_active.tga
new file mode 100644
index 0000000..4d10aff
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_media-pause_active.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_media-pause_disabled.tga b/linden/indra/newview/skins/pslpurple/textures/icn_media-pause_disabled.tga
new file mode 100644
index 0000000..7689cb7
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_media-pause_disabled.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_media-pause_enabled.tga b/linden/indra/newview/skins/pslpurple/textures/icn_media-pause_enabled.tga
new file mode 100644
index 0000000..6ea800a
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_media-pause_enabled.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_media-play_active.tga b/linden/indra/newview/skins/pslpurple/textures/icn_media-play_active.tga
new file mode 100644
index 0000000..fb7d843
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_media-play_active.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_media-play_disabled.tga b/linden/indra/newview/skins/pslpurple/textures/icn_media-play_disabled.tga
new file mode 100644
index 0000000..0306e94
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_media-play_disabled.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_media-play_enabled.tga b/linden/indra/newview/skins/pslpurple/textures/icn_media-play_enabled.tga
new file mode 100644
index 0000000..51b6807
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_media-play_enabled.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_media-stop_active.tga b/linden/indra/newview/skins/pslpurple/textures/icn_media-stop_active.tga
new file mode 100644
index 0000000..de06448
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_media-stop_active.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_media-stop_disabled.tga b/linden/indra/newview/skins/pslpurple/textures/icn_media-stop_disabled.tga
new file mode 100644
index 0000000..6c18bbe
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_media-stop_disabled.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_media-stop_enabled.tga b/linden/indra/newview/skins/pslpurple/textures/icn_media-stop_enabled.tga
new file mode 100644
index 0000000..8738cdc
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_media-stop_enabled.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_media.tga b/linden/indra/newview/skins/pslpurple/textures/icn_media.tga
new file mode 100644
index 0000000..9743d47
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_media.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_media_movie.tga b/linden/indra/newview/skins/pslpurple/textures/icn_media_movie.tga
new file mode 100644
index 0000000..36cba54
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_media_movie.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_media_web.tga b/linden/indra/newview/skins/pslpurple/textures/icn_media_web.tga
new file mode 100644
index 0000000..0d73d88
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_media_web.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_music-play.tga b/linden/indra/newview/skins/pslpurple/textures/icn_music-play.tga
new file mode 100644
index 0000000..4249627
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_music-play.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_music.tga b/linden/indra/newview/skins/pslpurple/textures/icn_music.tga
new file mode 100644
index 0000000..a7c2845
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_music.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_play.tga b/linden/indra/newview/skins/pslpurple/textures/icn_play.tga
new file mode 100644
index 0000000..6b9bfb0
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_play.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_rounded-text-field.tga b/linden/indra/newview/skins/pslpurple/textures/icn_rounded-text-field.tga
new file mode 100644
index 0000000..3ec9a33
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_rounded-text-field.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_scrollbar.tga b/linden/indra/newview/skins/pslpurple/textures/icn_scrollbar.tga
new file mode 100644
index 0000000..68c2321
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_scrollbar.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_scrollbar_bg.tga b/linden/indra/newview/skins/pslpurple/textures/icn_scrollbar_bg.tga
new file mode 100644
index 0000000..76ac928
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_scrollbar_bg.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_scrollbar_thumb.tga b/linden/indra/newview/skins/pslpurple/textures/icn_scrollbar_thumb.tga
new file mode 100644
index 0000000..f0448d6
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_scrollbar_thumb.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_slide-groove_dark.tga b/linden/indra/newview/skins/pslpurple/textures/icn_slide-groove_dark.tga
new file mode 100644
index 0000000..1936143
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_slide-groove_dark.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_slide-highlight.tga b/linden/indra/newview/skins/pslpurple/textures/icn_slide-highlight.tga
new file mode 100644
index 0000000..0747e3c
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_slide-highlight.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_slide-thumb_dark.tga b/linden/indra/newview/skins/pslpurple/textures/icn_slide-thumb_dark.tga
new file mode 100644
index 0000000..7605b2c
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_slide-thumb_dark.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_speaker-muted_dark.tga b/linden/indra/newview/skins/pslpurple/textures/icn_speaker-muted_dark.tga
new file mode 100644
index 0000000..7e725ab
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_speaker-muted_dark.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_speaker_dark.tga b/linden/indra/newview/skins/pslpurple/textures/icn_speaker_dark.tga
new file mode 100644
index 0000000..99e5524
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_speaker_dark.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_build.tga b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_build.tga
new file mode 100644
index 0000000..46e84ef
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_build.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_fly.tga b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_fly.tga
new file mode 100644
index 0000000..8bd422a
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_fly.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_inventory.tga b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_inventory.tga
new file mode 100644
index 0000000..b832ebc
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_inventory.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_map.tga b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_map.tga
new file mode 100644
index 0000000..a100f57
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_map.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_minimap.tga b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_minimap.tga
new file mode 100644
index 0000000..21149f3
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_minimap.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_search.tga b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_search.tga
new file mode 100644
index 0000000..2da9704
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_search.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_snapshot.tga b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_snapshot.tga
new file mode 100644
index 0000000..23b97c0
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icn_toolbar_snapshot.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/icon_diurnal.tga b/linden/indra/newview/skins/pslpurple/textures/icon_diurnal.tga
new file mode 100644
index 0000000..fc720c8
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/icon_diurnal.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/lightgray.tga b/linden/indra/newview/skins/pslpurple/textures/lightgray.tga
new file mode 100644
index 0000000..1ac39a0
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/lightgray.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/media_icon.tga b/linden/indra/newview/skins/pslpurple/textures/media_icon.tga
new file mode 100644
index 0000000..868da37
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/media_icon.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/minimize.tga b/linden/indra/newview/skins/pslpurple/textures/minimize.tga
new file mode 100644
index 0000000..616eede
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/minimize.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/minimize_inactive.tga b/linden/indra/newview/skins/pslpurple/textures/minimize_inactive.tga
new file mode 100644
index 0000000..ecddd24
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/minimize_inactive.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/minimize_pressed.tga b/linden/indra/newview/skins/pslpurple/textures/minimize_pressed.tga
new file mode 100644
index 0000000..8a261a1
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/minimize_pressed.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_backward_in.tga b/linden/indra/newview/skins/pslpurple/textures/move_backward_in.tga
new file mode 100644
index 0000000..b64204e
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_backward_in.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_backward_out.tga b/linden/indra/newview/skins/pslpurple/textures/move_backward_out.tga
new file mode 100644
index 0000000..1acce4b
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_backward_out.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_down_in.tga b/linden/indra/newview/skins/pslpurple/textures/move_down_in.tga
new file mode 100644
index 0000000..904e9a8
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_down_in.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_down_out.tga b/linden/indra/newview/skins/pslpurple/textures/move_down_out.tga
new file mode 100644
index 0000000..39bcda4
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_down_out.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_forward_in.tga b/linden/indra/newview/skins/pslpurple/textures/move_forward_in.tga
new file mode 100644
index 0000000..d41a1e1
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_forward_in.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_forward_out.tga b/linden/indra/newview/skins/pslpurple/textures/move_forward_out.tga
new file mode 100644
index 0000000..643c260
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_forward_out.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_left_in.tga b/linden/indra/newview/skins/pslpurple/textures/move_left_in.tga
new file mode 100644
index 0000000..f63ff2d
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_left_in.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_left_out.tga b/linden/indra/newview/skins/pslpurple/textures/move_left_out.tga
new file mode 100644
index 0000000..775bc15
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_left_out.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_right_in.tga b/linden/indra/newview/skins/pslpurple/textures/move_right_in.tga
new file mode 100644
index 0000000..c85c4c3
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_right_in.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_right_out.tga b/linden/indra/newview/skins/pslpurple/textures/move_right_out.tga
new file mode 100644
index 0000000..729331d
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_right_out.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_turn_left_in.tga b/linden/indra/newview/skins/pslpurple/textures/move_turn_left_in.tga
new file mode 100644
index 0000000..970b7f2
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_turn_left_in.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_turn_left_out.tga b/linden/indra/newview/skins/pslpurple/textures/move_turn_left_out.tga
new file mode 100644
index 0000000..8c16775
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_turn_left_out.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_turn_right_in.tga b/linden/indra/newview/skins/pslpurple/textures/move_turn_right_in.tga
new file mode 100644
index 0000000..367deae
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_turn_right_in.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_turn_right_out.tga b/linden/indra/newview/skins/pslpurple/textures/move_turn_right_out.tga
new file mode 100644
index 0000000..3105adb
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_turn_right_out.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_up_in.tga b/linden/indra/newview/skins/pslpurple/textures/move_up_in.tga
new file mode 100644
index 0000000..f62727d
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_up_in.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/move_up_out.tga b/linden/indra/newview/skins/pslpurple/textures/move_up_out.tga
new file mode 100644
index 0000000..777b221
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/move_up_out.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/mute_icon.tga b/linden/indra/newview/skins/pslpurple/textures/mute_icon.tga
new file mode 100644
index 0000000..879b9e6
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/mute_icon.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/notify_next.png b/linden/indra/newview/skins/pslpurple/textures/notify_next.png
new file mode 100644
index 0000000..20166e3
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/notify_next.png
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/progress_fill.tga b/linden/indra/newview/skins/pslpurple/textures/progress_fill.tga
new file mode 100644
index 0000000..a536346
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/progress_fill.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/progressbar_fill.tga b/linden/indra/newview/skins/pslpurple/textures/progressbar_fill.tga
new file mode 100644
index 0000000..95bc24e
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/progressbar_fill.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/progressbar_track.tga b/linden/indra/newview/skins/pslpurple/textures/progressbar_track.tga
new file mode 100644
index 0000000..9423e8d
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/progressbar_track.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/ptt_lock_off.tga b/linden/indra/newview/skins/pslpurple/textures/ptt_lock_off.tga
new file mode 100644
index 0000000..7a179ee
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/ptt_lock_off.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/ptt_lock_on.tga b/linden/indra/newview/skins/pslpurple/textures/ptt_lock_on.tga
new file mode 100644
index 0000000..5a7413b
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/ptt_lock_on.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/radio_active_false.tga b/linden/indra/newview/skins/pslpurple/textures/radio_active_false.tga
new file mode 100644
index 0000000..15d5e59
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/radio_active_false.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/radio_active_true.tga b/linden/indra/newview/skins/pslpurple/textures/radio_active_true.tga
new file mode 100644
index 0000000..cbef889
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/radio_active_true.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/radio_inactive_false.tga b/linden/indra/newview/skins/pslpurple/textures/radio_inactive_false.tga
new file mode 100644
index 0000000..48a9342
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/radio_inactive_false.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/radio_inactive_true.tga b/linden/indra/newview/skins/pslpurple/textures/radio_inactive_true.tga
new file mode 100644
index 0000000..785b3fa
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/radio_inactive_true.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/resize_handle_bottom_right_blue.tga b/linden/indra/newview/skins/pslpurple/textures/resize_handle_bottom_right_blue.tga
new file mode 100644
index 0000000..4d3ee6c
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/resize_handle_bottom_right_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/restore.tga b/linden/indra/newview/skins/pslpurple/textures/restore.tga
new file mode 100644
index 0000000..a65c949
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/restore.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/restore_inactive.tga b/linden/indra/newview/skins/pslpurple/textures/restore_inactive.tga
new file mode 100644
index 0000000..ecddd24
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/restore_inactive.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/restore_pressed.tga b/linden/indra/newview/skins/pslpurple/textures/restore_pressed.tga
new file mode 100644
index 0000000..7d80447
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/restore_pressed.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/rounded_square.tga b/linden/indra/newview/skins/pslpurple/textures/rounded_square.tga
new file mode 100644
index 0000000..c8fc7b7
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/rounded_square.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/rounded_square_soft.tga b/linden/indra/newview/skins/pslpurple/textures/rounded_square_soft.tga
new file mode 100644
index 0000000..0e5bc79
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/rounded_square_soft.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/scrollbutton_down_in_blue.tga b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_down_in_blue.tga
new file mode 100644
index 0000000..5b24a9e
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_down_in_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/scrollbutton_down_out_blue.tga b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_down_out_blue.tga
new file mode 100644
index 0000000..2fdbfdb
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_down_out_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/scrollbutton_left_in_blue.tga b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_left_in_blue.tga
new file mode 100644
index 0000000..e845a44
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_left_in_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/scrollbutton_left_out_blue.tga b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_left_out_blue.tga
new file mode 100644
index 0000000..a4e8ef8
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_left_out_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/scrollbutton_right_in_blue.tga b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_right_in_blue.tga
new file mode 100644
index 0000000..a13d1a5
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_right_in_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/scrollbutton_right_out_blue.tga b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_right_out_blue.tga
new file mode 100644
index 0000000..650d08e
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_right_out_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/scrollbutton_up_in_blue.tga b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_up_in_blue.tga
new file mode 100644
index 0000000..a5f00df
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_up_in_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/scrollbutton_up_out_blue.tga b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_up_out_blue.tga
new file mode 100644
index 0000000..48a03d5
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/scrollbutton_up_out_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/sm_rounded_corners_simple.tga b/linden/indra/newview/skins/pslpurple/textures/sm_rounded_corners_simple.tga
new file mode 100644
index 0000000..30bbbb4
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/sm_rounded_corners_simple.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/smicon_warn.tga b/linden/indra/newview/skins/pslpurple/textures/smicon_warn.tga
new file mode 100644
index 0000000..de8cce2
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/smicon_warn.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/spacer24.tga b/linden/indra/newview/skins/pslpurple/textures/spacer24.tga
new file mode 100644
index 0000000..c7cab6b
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/spacer24.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/spacer35.tga b/linden/indra/newview/skins/pslpurple/textures/spacer35.tga
new file mode 100644
index 0000000..b88bc66
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/spacer35.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/spin_down_in_blue.tga b/linden/indra/newview/skins/pslpurple/textures/spin_down_in_blue.tga
new file mode 100644
index 0000000..50a6042
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/spin_down_in_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/spin_down_out_blue.tga b/linden/indra/newview/skins/pslpurple/textures/spin_down_out_blue.tga
new file mode 100644
index 0000000..bb4d821
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/spin_down_out_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/spin_up_in_blue.tga b/linden/indra/newview/skins/pslpurple/textures/spin_up_in_blue.tga
new file mode 100644
index 0000000..a0c364a
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/spin_up_in_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/spin_up_out_blue.tga b/linden/indra/newview/skins/pslpurple/textures/spin_up_out_blue.tga
new file mode 100644
index 0000000..5c9328c
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/spin_up_out_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/square_btn_32x128.tga b/linden/indra/newview/skins/pslpurple/textures/square_btn_32x128.tga
new file mode 100644
index 0000000..4c8f788
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/square_btn_32x128.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/square_btn_selected_32x128.tga b/linden/indra/newview/skins/pslpurple/textures/square_btn_selected_32x128.tga
new file mode 100644
index 0000000..d0f81ef
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/square_btn_selected_32x128.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/status_buy_currency.tga b/linden/indra/newview/skins/pslpurple/textures/status_buy_currency.tga
new file mode 100644
index 0000000..82644ef
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/status_buy_currency.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/status_buy_currency_pressed.tga b/linden/indra/newview/skins/pslpurple/textures/status_buy_currency_pressed.tga
new file mode 100644
index 0000000..e1d2296
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/status_buy_currency_pressed.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/status_buy_land.tga b/linden/indra/newview/skins/pslpurple/textures/status_buy_land.tga
new file mode 100644
index 0000000..cb27cdd
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/status_buy_land.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/status_buy_land_pressed.tga b/linden/indra/newview/skins/pslpurple/textures/status_buy_land_pressed.tga
new file mode 100644
index 0000000..b957fcc
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/status_buy_land_pressed.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/tab_bottom_blue.tga b/linden/indra/newview/skins/pslpurple/textures/tab_bottom_blue.tga
new file mode 100644
index 0000000..26a72f9
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/tab_bottom_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/tab_bottom_selected_blue.tga b/linden/indra/newview/skins/pslpurple/textures/tab_bottom_selected_blue.tga
new file mode 100644
index 0000000..5c41ae1
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/tab_bottom_selected_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/tab_left.tga b/linden/indra/newview/skins/pslpurple/textures/tab_left.tga
new file mode 100644
index 0000000..b8f006a
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/tab_left.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/tab_left_selected.tga b/linden/indra/newview/skins/pslpurple/textures/tab_left_selected.tga
new file mode 100644
index 0000000..881a49e
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/tab_left_selected.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/tab_top_blue.tga b/linden/indra/newview/skins/pslpurple/textures/tab_top_blue.tga
new file mode 100644
index 0000000..19ad53c
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/tab_top_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/tab_top_selected_blue.tga b/linden/indra/newview/skins/pslpurple/textures/tab_top_selected_blue.tga
new file mode 100644
index 0000000..0d9c00d
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/tab_top_selected_blue.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/tabarea.tga b/linden/indra/newview/skins/pslpurple/textures/tabarea.tga
new file mode 100644
index 0000000..5517aeb
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/tabarea.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/tearoff_pressed.tga b/linden/indra/newview/skins/pslpurple/textures/tearoff_pressed.tga
new file mode 100644
index 0000000..c9005fb
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/tearoff_pressed.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/tearoffbox.tga b/linden/indra/newview/skins/pslpurple/textures/tearoffbox.tga
new file mode 100644
index 0000000..f7735ab
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/tearoffbox.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/textures.xml b/linden/indra/newview/skins/pslpurple/textures/textures.xml
new file mode 100644
index 0000000..4dbbdf0
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/textures.xml
@@ -0,0 +1,386 @@
1<textures version="101">
2 <sm_rounded_corners_simple.tga>
3 <scale_rect left="4" top="4" bottom="4" right="4"/>
4 </sm_rounded_corners_simple.tga>
5
6 <icn_textfield_enabled.tga>
7 <scale_rect left="5" top="5" bottom="5" right="5"/>
8 </icn_textfield_enabled.tga>
9 <button_disabled_32x128.tga preload="true">
10 <scale_rect left="8" top="16" right="120" bottom="8"/>
11 </button_disabled_32x128.tga>
12 <button_enabled_32x128.tga preload="true">
13 <scale_rect left="8" top="16" right="120" bottom="8"/>
14 </button_enabled_32x128.tga>
15 <toolbar_btn_enabled.tga>
16 <scale_rect left="26" top="24" right="102" bottom="0" />
17 </toolbar_btn_enabled.tga>
18
19 <progressbar_fill.tga preload="true">
20 <scale_rect left="4" top="7" right="71" bottom="7"/>
21 </progressbar_fill.tga>
22 <progressbar_track.tga preload="true">
23 <scale_rect left="3" top="7" right="87" bottom="7"/>
24 </progressbar_track.tga>
25
26
27 <toolbar_btn_disabled.tga>
28 <scale_rect left="26" top="24" right="102" bottom="0" />
29 </toolbar_btn_disabled.tga>
30 <toolbar_btn_selected.tga>
31 <scale_rect left="26" top="24" right="102" bottom="0" />
32 </toolbar_btn_selected.tga>
33 <button_enabled_selected_32x128.tga preload="true">
34 <scale_rect left="12" top="12" right="118" bottom="14"/>
35 </button_enabled_selected_32x128.tga>
36 <checkbox_disabled_false.tga preload="true"/>
37 <checkbox_disabled_true.tga preload="true"/>
38 <checkbox_enabled_false.tga preload="true"/>
39 <checkbox_enabled_true.tga preload="true"/>
40 <close_in_blue.tga preload="true"/>
41 <combobox_arrow.tga preload="true"/>
42 <minimize.tga preload="true"/>
43 <minimize_pressed.tga preload="true"/>
44 <radio_active_false.tga preload="true"/>
45 <radio_active_true.tga preload="true"/>
46 <radio_inactive_false.tga preload="true"/>
47 <radio_inactive_true.tga preload="true"/>
48 <resize_handle_bottom_right_blue.tga preload="true"/>
49 <rounded_square.tga preload="true">
50 <scale_rect left="8" top="16" right="120" bottom="8"/>
51 </rounded_square.tga>
52 <rounded_square_soft.tga preload="true">
53 <scale_rect left="8" top="16" right="120" bottom="8"/>
54 </rounded_square_soft.tga>
55 <toolbar_tab.tga preload="true">
56 <scale_rect left="6" top="42" right="104" bottom="8"/>
57 </toolbar_tab.tga>
58 <toolbar_bg.tga preload="true">
59 <scale_rect left="6" top="42" right="96" bottom="16"/>
60 </toolbar_bg.tga>
61 <scrollbutton_down_in_blue.tga preload="true"/>
62 <scrollbutton_down_out_blue.tga preload="true"/>
63 <scrollbutton_left_in_blue.tga preload="true"/>
64 <scrollbutton_left_out_blue.tga preload="true"/>
65 <scrollbutton_right_in_blue.tga preload="true"/>
66 <scrollbutton_right_out_blue.tga preload="true"/>
67 <scrollbutton_up_in_blue.tga preload="true"/>
68 <scrollbutton_up_out_blue.tga preload="true"/>
69 <spin_down_in_blue.tga preload="true"/>
70 <spin_down_out_blue.tga preload="true"/>
71 <spin_up_in_blue.tga preload="true"/>
72 <spin_up_out_blue.tga preload="true"/>
73 <square_btn_32x128.tga preload="true">
74 <scale_rect left="8" top="10" right="120" bottom="10"/>
75 </square_btn_32x128.tga>
76 <square_btn_selected_32x128.tga preload="true">
77 <scale_rect left="2" top="10" right="126" bottom="10"/>
78 </square_btn_selected_32x128.tga>
79 <tab_bottom_blue.tga preload="true">
80 <scale_rect left="8" top="8" right="120" bottom="9"/>
81 </tab_bottom_blue.tga>
82 <tab_bottom_selected_blue.tga preload="true">
83 <scale_rect left="8" top="8" right="96" bottom="9"/>
84 </tab_bottom_selected_blue.tga>
85 <tab_left.tga preload="true">
86 <scale_rect left="8" top="8" right="120" bottom="9"/>
87 </tab_left.tga>
88 <tab_left_selected.tga preload="true">
89 <scale_rect left="8" top="8" right="96" bottom="9"/>
90 </tab_left_selected.tga>
91 <tab_top_blue.tga preload="true">
92 <scale_rect left="8" top="8" right="120" bottom="9"/>
93 </tab_top_blue.tga>
94 <tab_top_selected_blue.tga preload="true">
95 <scale_rect left="8" top="8" right="96" bottom="9"/>
96 </tab_top_selected_blue.tga>
97 <startup_logo.j2c preload="true"/>
98 <color_swatch_alpha.tga preload="true"/>
99
100 <active_voice_tab.tga/>
101 <button_anim_pause.tga/>
102 <button_anim_pause_selected.tga/>
103 <button_anim_play.tga/>
104 <button_anim_play_selected.tga/>
105 <button_anim_stop.tga/>
106 <button_anim_stop_selected.tga/>
107 <crosshairs.tga/>
108 <direction_arrow.tga/>
109 <cloud-particle.j2c use_mips="true"/>
110 <foot_shadow.j2c use_mips="true"/>
111
112 <icon_auction.tga/>
113 <icon_avatar_offline.tga/>
114 <icon_avatar_online.tga/>
115 <icon_day_cycle.tga/>
116 <icon_diurnal.tga/>
117 <icon_event.tga/>
118 <icon_event_mature.tga/>
119 <icon_for_sale.tga/>
120 <icon_group.tga/>
121 <icon_groupnotice.tga/>
122 <icon_groupnoticeinventory.tga/>
123 <icon_lock.tga/>
124 <icon_place.tga/>
125 <icon_top_pick.tga/>
126
127 <inv_folder_animation.tga/>
128 <inv_folder_bodypart.tga/>
129 <inv_folder_callingcard.tga/>
130 <inv_folder_clothing.tga/>
131 <inv_folder_gesture.tga/>
132 <inv_folder_landmark.tga/>
133 <inv_folder_lostandfound.tga/>
134 <inv_folder_notecard.tga/>
135 <inv_folder_object.tga/>
136 <inv_folder_plain_closed.tga/>
137 <inv_folder_script.tga/>
138 <inv_folder_snapshot.tga/>
139 <inv_folder_sound.tga/>
140 <inv_folder_texture.tga/>
141 <inv_folder_trash.tga/>
142 <inv_item_animation.tga/>
143 <inv_item_skin.tga/>
144 <inv_item_callingcard_offline.tga/>
145 <inv_item_callingcard_online.tga/>
146 <inv_item_eyes.tga/>
147 <inv_item_gesture.tga/>
148 <inv_item_gloves.tga/>
149 <inv_item_hair.tga/>
150 <inv_item_jacket.tga/>
151 <inv_item_landmark.tga/>
152 <inv_item_landmark_visited.tga/>
153 <inv_item_notecard.tga/>
154 <inv_item_object.tga/>
155 <inv_item_object_multi.tga/>
156 <inv_item_pants.tga/>
157 <inv_item_script.tga/>
158 <inv_item_shape.tga/>
159 <inv_item_shirt.tga/>
160 <inv_item_shoes.tga/>
161 <inv_item_skirt.tga/>
162 <inv_item_snapshot.tga/>
163 <inv_item_socks.tga/>
164 <inv_item_sound.tga/>
165 <inv_item_texture.tga/>
166 <inv_item_underpants.tga/>
167 <inv_item_undershirt.tga/>
168 <lag_status_critical.tga/>
169 <lag_status_good.tga/>
170 <lag_status_warning.tga/>
171 <legend.tga/>
172 <map_avatar_16.tga/>
173 <map_avatar_8.tga/>
174 <map_avatar_you_8.tga/>
175 <map_event.tga/>
176 <map_event_mature.tga/>
177 <map_home.tga/>
178 <map_infohub.tga/>
179 <map_telehub.tga/>
180 <map_track_16.tga/>
181 <media_icon.tga file_name="icn_label_media.tga" />
182 <music_icon.tga file_name="icn_label_music.tga" />
183 <noentrylines.j2c use_mips="true"/>
184 <noentrypasslines.j2c use_mips="true"/>
185 <notify_tip_icon.tga/>
186 <notify_caution_icon.tga/>
187 <notify_box_icon.tga/>
188 <object_cone.tga/>
189 <object_cone_active.tga/>
190 <object_cube.tga/>
191 <object_cube_active.tga/>
192 <object_cylinder.tga/>
193 <object_cylinder_active.tga/>
194 <object_grass.tga/>
195 <object_grass_active.tga/>
196 <object_hemi_cone.tga/>
197 <object_hemi_cone_active.tga/>
198 <object_hemi_cylinder.tga/>
199 <object_hemi_cylinder_active.tga/>
200 <object_hemi_sphere.tga/>
201 <object_hemi_sphere_active.tga/>
202 <object_prism.tga/>
203 <object_prism_active.tga/>
204 <object_pyramid.tga/>
205 <object_pyramid_active.tga/>
206 <object_ring.tga/>
207 <object_ring_active.tga/>
208 <object_sphere.tga/>
209 <object_sphere_active.tga/>
210 <object_tetrahedron.tga/>
211 <object_tetrahedron_active.tga/>
212 <object_torus.tga/>
213 <object_torus_active.tga/>
214 <object_tree.tga/>
215 <object_tree_active.tga/>
216 <object_tube.tga/>
217 <object_tube_active.tga/>
218 <pixiesmall.j2c use_mips="true"/>
219 <script_error.j2c use_mips="true"/>
220 <silhouette.j2c use_mips="true"/>
221 <status_no_build.tga/>
222 <status_voice.tga/>
223 <status_buy_currency.tga/>
224 <status_buy_currency_pressed.tga/>
225 <status_buy_land.tga/>
226 <status_buy_land_pressed.tga/>
227 <status_no_fly.tga/>
228 <status_health.tga/>
229 <status_no_push.tga/>
230 <status_no_scripts.tga/>
231 <tool_dozer.tga/>
232 <tool_dozer_active.tga/>
233 <tool_zoom.tga/>
234 <tool_zoom_active.tga/>
235 <icn_active-speakers-dot-lvl0.tga/>
236 <icn_active-speakers-dot-lvl1.tga/>
237 <icn_active-speakers-dot-lvl2.tga/>
238 <icn_active-speakers-typing1.tga/>
239 <icn_active-speakers-typing2.tga/>
240 <icn_active-speakers-typing3.tga/>
241 <icn_voice_ptt-off.tga/>
242 <icn_voice_ptt-on.tga/>
243 <icn_voice_ptt-on-lvl1.tga/>
244 <icn_voice_ptt-on-lvl2.tga/>
245 <icn_voice_ptt-on-lvl3.tga/>
246 <icn_voice-call-end.tga/>
247 <icn_voice-call-start.tga/>
248 <mute_icon.tga/>
249 <icn_slide-groove_dark.tga>
250 <scale_rect left="2" top="5" right="29" bottom="4"/>
251 </icn_slide-groove_dark.tga>
252 <icn_slide-highlight.tga>
253 <scale_rect left="2" top="5" right="29" bottom="4"/>
254 </icn_slide-highlight.tga>
255 <icn_slide-thumb_dark.tga>
256 <scale_rect left="2" top="5" right="29" bottom="4"/>
257 </icn_slide-thumb_dark.tga>
258 <icn_speaker-muted_dark.tga/>
259 <icn_speaker_dark.tga/>
260 <icn_voice-localchat.tga/>
261 <icn_voice-groupfocus.tga/>
262 <icn_voice-pvtfocus.tga/>
263 <icn_media-pause.tga/>
264 <icn_media-play.tga/>
265 <icn_music-play.tga/>
266 <icn_music-pause.tga/>
267 <icn_media_web.tga preload="true"/>
268 <icn_media_movie.tga preload="true"/>
269 <icn_chatbar.tga/>
270 <btn_chatbar.tga>
271 <scale_rect left="16" top="24" right="48" bottom="0"/>
272 </btn_chatbar.tga>
273 <btn_chatbar_selected.tga>
274 <scale_rect left="16" top="24" right="48" bottom="0"/>
275 </btn_chatbar_selected.tga>
276 <icn_rounded-text-field.tga/>
277
278 <flyout_btn_right_selected.tga>
279 <scale_rect left="6" top="12" right="26" bottom="12"/>
280 </flyout_btn_right_selected.tga>
281 <flyout_btn_right.tga>
282 <scale_rect left="6" top="12" right="26" bottom="12"/>
283 </flyout_btn_right.tga>
284 <flyout_btn_right_disabled.tga>
285 <scale_rect left="6" top="12" right="122" bottom="12"/>
286 </flyout_btn_right_disabled.tga>
287 <flyout_btn_left_selected.tga>
288 <scale_rect left="6" top="12" right="122" bottom="12"/>
289 </flyout_btn_left_selected.tga>
290 <flyout_btn_left.tga>
291 <scale_rect left="6" top="12" right="122" bottom="12"/>
292 </flyout_btn_left.tga>
293 <flyout_btn_left_disabled.tga>
294 <scale_rect left="6" top="12" right="122" bottom="12"/>
295 </flyout_btn_left_disabled.tga>
296
297 <UIImgResizeBottomRightUUID file_name="resize_handle_bottom_right_blue.tga"/>
298
299 <UIImgBtnForwardOutUUID file_name="move_forward_out.tga" preload="true"/>
300 <UIImgBtnForwardInUUID file_name="move_forward_in.tga" preload="true"/>
301 <UIImgBtnSlideLeftOutUUID file_name="move_left_out.tga" preload="true"/>
302 <UIImgBtnSlideLeftInUUID file_name="move_left_in.tga" preload="true"/>
303 <UIImgBtnLeftOutUUID file_name="move_turn_left_out.tga" preload="true"/>
304 <UIImgBtnLeftInUUID file_name="move_turn_left_in.tga" preload="true"/>
305 <UIImgBtnRightOutUUID file_name="move_turn_right_out.tga" preload="true"/>
306 <UIImgBtnRightInUUID file_name="move_turn_right_in.tga" preload="true"/>
307 <UIImgBtnSlideRightOutUUID file_name="move_right_out.tga" preload="true"/>
308 <UIImgBtnSlideRightInUUID file_name="move_right_in.tga" preload="true"/>
309 <UIImgBtnMoveUpInUUID file_name="move_up_in.tga" preload="true"/>
310 <UIImgBtnMoveUpOutUUID file_name="move_up_out.tga" preload="true"/>
311 <UIImgBtnMoveDownInUUID file_name="move_down_in.tga" preload="true"/>
312 <UIImgBtnMoveDownOutUUID file_name="move_down_out.tga" preload="true"/>
313
314 <UIImgBtnScrollUpOutUUID file_name="scrollbutton_up_out_blue.tga"/>
315 <UIImgBtnScrollUpInUUID file_name="scrollbutton_up_in_blue.tga"/>
316 <UIImgBtnScrollDownOutUUID file_name="scrollbutton_down_out_blue.tga"/>
317 <UIImgBtnScrollDownInUUID file_name="scrollbutton_down_in_blue.tga"/>
318 <UIImgBtnScrollLeftOutUUID file_name="scrollbutton_left_out_blue.tga"/>
319 <UIImgBtnScrollLeftInUUID file_name="scrollbutton_left_in_blue.tga"/>
320 <UIImgBtnScrollRightOutUUID file_name="scrollbutton_right_out_blue.tga"/>
321 <UIImgBtnScrollRightInUUID file_name="scrollbutton_right_in_blue.tga"/>
322
323 <UIImgBtnJumpLeftOutUUID file_name="3c18c87e-5f50-14e2-e744-f44734aa365f.tga"/>
324 <UIImgBtnJumpLeftInUUID file_name="9cad3e6d-2d6d-107d-f8ab-5ba272b5bfe1.tga"/>
325 <UIImgBtnJumpRightOutUUID file_name="ff9a71eb-7414-4cf8-866e-a701deb7c3cf.tga"/>
326 <UIImgBtnJumpRightInUUID file_name="7dabc040-ec13-2309-ddf7-4f161f6de2f4.tga"/>
327
328 <UIImgBtnSpinUpOutUUID file_name="spin_up_out_blue.tga"/>
329 <UIImgBtnSpinUpInUUID file_name="spin_up_in_blue.tga"/>
330 <UIImgBtnSpinDownOutUUID file_name="spin_down_out_blue.tga"/>
331 <UIImgBtnSpinDownInUUID file_name="spin_down_in_blue.tga"/>
332
333 <UIImgRadioActiveUUID file_name="radio_active_false.tga"/>
334 <UIImgRadioActiveSelectedUUID file_name="radio_active_true.tga"/>
335 <UIImgRadioInactiveUUID file_name="radio_inactive_false.tga"/>
336 <UIImgRadioInactiveSelectedUUID file_name="radio_inactive_true.tga"/>
337
338 <UIImgCheckboxActiveUUID file_name="checkbox_enabled_false.tga"/>
339 <UIImgCheckboxActiveSelectedUUID file_name="checkbox_enabled_true.tga"/>
340 <UIImgCheckboxInactiveUUID file_name="checkbox_disabled_false.tga"/>
341 <UIImgCheckboxInactiveSelectedUUID file_name="checkbox_disabled_true.tga"/>
342
343 <UIImgBtnTabTopOutUUID file_name="tab_top_blue.tga"/>
344 <UIImgBtnTabTopInUUID file_name="tab_top_selected_blue.tga"/>
345 <UIImgBtnTabBottomOutUUID file_name="tab_bottom_blue.tga"/>
346 <UIImgBtnTabBottomInUUID file_name="tab_bottom_selected_blue.tga"/>
347
348 <UIImgGrabUUID file_name="c63f124c-6340-4fbf-b59e-0869a44adb64.tga"/>
349 <UIImgGrabSelectedUUID file_name="c1e21504-f136-451d-b8e9-929037812f1d.tga"/>
350
351 <!--<UIImgScaleUUID file_name="88a90fef-b448-4883-9344-ecf378a60433.tga"/>-->
352
353 <UIImgFaceUUID file_name="ce15fd63-b0b6-463c-a37d-ea6393208b3e.tga"/>
354 <UIImgFaceSelectedUUID file_name="b4870163-6208-42a9-9801-93133bf9a6cd.tga"/>
355
356 <UIImgCreateUUID file_name="7a0b1bdb-b5d9-4df5-bac2-ba230da93b5b.tga"/>
357 <UIImgCreateSelectedUUID file_name="0098b015-3daf-4cfe-a72f-915369ea97c2.tga"/>
358
359 <UIImgBtnCloseInactiveUUID file_name="close_inactive_blue.tga"/>
360 <UIImgBtnCloseActiveUUID file_name="closebox.tga"/>
361 <UIImgBtnClosePressedUUID file_name="close_in_blue.tga"/>
362 <icn_clear_lineeditor.tga />
363 <icn_scrollbar_thumb.tga preload="true">
364 <scale_rect top="7" left="4" bottom="8" right="4" />
365</icn_scrollbar_thumb.tga>
366 <icn_scrollbar_bg.tga preload="true">
367 <scale_rect top="7" left="4" bottom="8
368 " right="4" />
369</icn_scrollbar_bg.tga>
370
371 <UIImgBtnMinimizeInactiveUUID file_name="minimize_inactive.tga"/>
372 <UIImgBtnMinimizeActiveUUID file_name="minimize.tga"/>
373 <UIImgBtnMinimizePressedUUID file_name="minimize_pressed.tga"/>
374
375 <UIImgBtnRestoreInactiveUUID file_name="restore_inactive.tga"/>
376 <UIImgBtnRestoreActiveUUID file_name="restore.tga"/>
377 <UIImgBtnRestorePressedUUID file_name="restore_pressed.tga"/>
378
379 <UIImgBtnTearOffInactiveUUID file_name="tearoffbox.tga"/>
380 <UIImgBtnTearOffActiveUUID file_name="tearoffbox.tga"/>
381 <UIImgBtnTearOffPressedUUID file_name="tearoff_pressed.tga"/>
382
383 <UIImgCrosshairsUUID file_name="crosshairs.tga"/>
384 <icn_label_music.tga/>
385 <icn_label_media.tga/>
386</textures>
diff --git a/linden/indra/newview/skins/pslpurple/textures/tool_dozer.tga b/linden/indra/newview/skins/pslpurple/textures/tool_dozer.tga
new file mode 100644
index 0000000..359fe75
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/tool_dozer.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/tool_dozer_active.tga b/linden/indra/newview/skins/pslpurple/textures/tool_dozer_active.tga
new file mode 100644
index 0000000..6ca3e25
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/tool_dozer_active.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/tool_zoom.tga b/linden/indra/newview/skins/pslpurple/textures/tool_zoom.tga
new file mode 100644
index 0000000..9677712
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/tool_zoom.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/tool_zoom_active.tga b/linden/indra/newview/skins/pslpurple/textures/tool_zoom_active.tga
new file mode 100644
index 0000000..e727254
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/tool_zoom_active.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/toolbar_btn_disabled.tga b/linden/indra/newview/skins/pslpurple/textures/toolbar_btn_disabled.tga
new file mode 100644
index 0000000..c56e151
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/toolbar_btn_disabled.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/toolbar_btn_enabled.tga b/linden/indra/newview/skins/pslpurple/textures/toolbar_btn_enabled.tga
new file mode 100644
index 0000000..98790c4
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/toolbar_btn_enabled.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/toolbar_btn_selected.tga b/linden/indra/newview/skins/pslpurple/textures/toolbar_btn_selected.tga
new file mode 100644
index 0000000..992bfd6
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/toolbar_btn_selected.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/toolbar_tab.tga b/linden/indra/newview/skins/pslpurple/textures/toolbar_tab.tga
new file mode 100644
index 0000000..fcab9dd
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/toolbar_tab.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/up_arrow.tga b/linden/indra/newview/skins/pslpurple/textures/up_arrow.tga
new file mode 100644
index 0000000..4dcb587
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/up_arrow.tga
Binary files differ
diff --git a/linden/indra/newview/skins/pslpurple/textures/white.tga b/linden/indra/newview/skins/pslpurple/textures/white.tga
new file mode 100644
index 0000000..55e3793
--- /dev/null
+++ b/linden/indra/newview/skins/pslpurple/textures/white.tga
Binary files differ
diff --git a/linden/indra/newview/skins/silver/colors.xml b/linden/indra/newview/skins/silver/colors.xml
deleted file mode 100644
index bc9221e..0000000
--- a/linden/indra/newview/skins/silver/colors.xml
+++ /dev/null
@@ -1,102 +0,0 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes"?>
2<settings version = "101">
3
4 <!-- Additional comments by McCabe Maxsted -->
5
6 <!-- WINDOWS -->
7<TitleBarFocusColor value="50, 115, 185, 120" /> <!-- Focused window title bar highlight, no equivalent for unfocused windows -->
8<FloaterFocusBorderColor value="50, 115, 185, 75" /> <!-- Focused window border color -->
9<FloaterUnfocusBorderColor value="110, 110, 110, 60" /> <!-- Unfocused window border color -->
10<FocusBackgroundColor value="165, 180, 200, 245" /> <!-- Background color of focused windows -->
11<DefaultBackgroundColor value="165, 180, 200, 128" /> <!-- Background color for unfocused windows -->
12<DefaultHighlightDark value="50, 115, 185, 255" />
13<DefaultHighlightLight value="50, 115, 185, 255" /> <!-- Unfocused border, bottom portion -->
14<DefaultShadowDark value="50, 115, 185, 255" /> <!-- Unfocused border, top portion -->
15<DefaultShadowLight value="50, 115, 185, 255" /> <!-- Tab area border for IMs -->
16
17 <!-- WINDOW LABELS -->
18<LabelDisabledColor value="0, 30, 60, 128" /> <!-- Color for unfocused window titles -->
19<LabelTextColor value="0, 30, 60, 255" /> <!-- Color for window labels and titles -->
20
21 <!-- BUTTONS -->
22<ButtonLabelColor value="0, 30, 60, 255" /> <!-- Label text color for buttons, like the "OK" text -->
23<ButtonLabelSelectedColor value="255, 255, 255, 255" /> <!-- Label text color when button selected -->
24<ButtonLabelDisabledColor value="0, 30, 60, 128" /> <!-- Label text color when button disabled -->
25<ButtonLabelSelectedDisabledColor value="0, 30, 60, 128" /> <!-- Label text color when button disabled but selected -->
26
27 <!-- SLIDERS, single line -->
28<SliderThumbCenterColor value="255, 255, 255, 255" /> <!-- Unfocused slider thumb color -->
29<SliderThumbOutlineColor value="37, 64, 99, 255" /> <!-- Focused slider thumb color -->
30<SliderTrackColor value="37, 64, 99, 255" /> <!-- Not used -->
31
32 <!-- TEXTFIELDS -->
33<TextBgFocusColor value="255, 255, 255, 255" /> <!-- Text field background when receiving input (focused) -->
34<TextBgReadOnlyColor value="255, 255, 255, 140" /> <!-- Text field background when read-only -->
35<TextBgWriteableColor value="255, 255, 255, 255" /> <!-- Text field background when not receiving input (unfocused) -->
36<TextFgColor value="48, 48, 45, 255" /> <!-- Text color for all text entry fields; cursor color for line editors -->
37<TextFgReadOnlyColor value="0, 0, 0, 200" /> <!-- Text color in read-only fields -->
38<TextLinkColor value="0, 20, 255, 255"/>
39<TextLinkHoverColor value="0, 50, 255, 255"/>
40
41 <!-- LISTBOXES -->
42<ScrollBgReadOnlyColor value="255, 255, 255, 140" /> <!-- Background of read only lists -->
43<ScrollBgWriteableColor value="255, 255, 255, 140" /> <!-- Background of editable lists, e.g. groups-->
44<ScrollBGStripeColor value="145, 180, 220, 60" /> <!-- Background stripes in sortable lists, e.g. Events Search -->
45<ScrollSelectedBGColor value="50, 115, 185, 150" /> <!-- Selected item in a list highlight -->
46<ScrollSelectedFGColor value="0, 30, 60, 255" /> <!-- Text color -->
47<ScrollUnselectedColor value="0, 30, 60, 255" /> <!-- Text color -->
48<ScrollHighlightedColor value="145, 180, 220, 128" /> <!-- Hover color -->
49<ScrollbarThumbColor value="120, 160, 200, 255" /> <!-- Scroll bar -->
50<ScrollbarTrackColor value="183, 202, 220, 255" /> <!-- Scroll bar background -->
51<ScrollReadOnlyColor value="180, 180, 180, 255" /> <!-- Color for inactive but not disabled lists -->
52
53 <!-- MENUS -->
54<MenuBarBgColor value="185, 200, 220, 230" /> <!-- Menu bar background -->
55<MenuBarGodBgColor value="100, 200, 130, 230" /> <!-- Menu bar background with God Mode enabled -->
56<MenuNonProductionGodBgColor value="100, 200, 130, 230" /> <!-- Beta viewer menu bar background -->
57<MenuNonProductionBgColor value="230, 70, 70, 230" /> <!-- Beta viewer menu bar background with God Mode enabled -->
58<MenuDefaultBgColor value="210, 220, 230, 245" /> <!-- Menu background -->
59<MenuItemDisabledColor value="0, 30, 60, 128" /> <!-- Menu text color; also text color for pie menus and treeviews (like Inventory) -->
60<MenuItemEnabledColor value="0, 30, 60, 255" /> <!-- Menu text color; also text color for pie menus and treeviews (like Inventory) -->
61<MenuItemHighlightBgColor value="50, 115, 185, 100" /> <!-- Highlighted menu item background color -->
62<MenuItemHighlightFgColor value="0, 30, 60, 255" /> <!-- Highlighted menu item text color; also treeview node selection highlight -->
63<MenuPopupBgColor value="197, 217, 234, 240" /> <!-- Right-click menu background -->
64
65 <!-- PIE MENUS -->
66<PieMenuBgColor value="118, 156, 201, 230" /> <!-- Color of pie menu -->
67<PieMenuLineColor value="255, 255, 255, 60" /> <!-- Color of pie menu slice separators -->
68<PieMenuSelectedColor value="185, 200, 220, 120" /> <!-- Color of pie menu slice when selected -->
69
70 <!-- MENU BAR -->
71<ParcelTextColor value="40, 40, 90, 255" /> <!-- Parcel name on menu bar, normal state -->
72<ParcelHoverColor value="70, 70, 100, 255" /> <!-- Parcel name on menu bar, hover state -->
73<TimeTextColor value="0, 30, 60, 255" /> <!-- SL Time on menu bar -->
74<BalanceTextColor value="0, 100, 40, 255" /> <!-- Linden dollar balance on menu bar -->
75<HealthTextColor value="110, 15, 15, 255" /> <!-- Damage meter text on menu bar -->
76
77 <!-- TOOLTIPS -->
78<ToolTipBgColor value="250, 255, 225, 230" /> <!-- Tool tips, i.e. "Hover Tips" -->
79
80 <!-- NOTIFICATION POP-UPS -->
81<NotifyBoxColor value="170, 210, 255, 240" /> <!-- Notification background, i.e. tp requests -->
82<NotifyTextColor value="0, 30, 60, 255" /> <!-- Notification text -->
83<GroupNotifyBoxColor value="170, 210, 255, 240" /> <!-- Group notices background -->
84
85 <!-- ALERT BOX COLORS -->
86<AlertBoxColor value="165, 180, 200, 245" /> <!-- Alert floaters, like the warning before returning objects -->
87<AlertTextColor value="0, 30, 60, 255" /> <!-- Alert floater text -->
88
89 <!-- CHAT AND IM HISTORY TEXTBOX COLORS -->
90<ChatHistoryBgColor value="0, 30, 80, 200" /> <!-- Local Chat background -->
91
92 <!-- INVENTORY -->
93<InventoryBackgroundColor value="255, 255, 255, 80"/> <!-- Inventory floater background -->
94<InventoryItemSuffixColor value="120, 70, 55, 255"/> <!-- "worn", "no modify", etc -->
95<FilterBackgroundColor value="75, 75, 150, 180" /> <!-- Inventory search background -->
96<InventorySearchStatusColor value="0, 0, 0, 255" /> <!-- "Searching..." -->
97
98 <!-- MISC -->
99<FloaterButtonImageColor value="255, 255, 255, 255" /> <!-- The floater buttons (like the close box) are white images that receive this color. -->
100<ButtonCautionImageColor value="255, 255, 255, 255" /> <!-- Match the caution dialog buttons to the default -->
101
102</settings>
diff --git a/linden/indra/newview/skins/silver/textures/textures.xml b/linden/indra/newview/skins/silver/textures/textures.xml
deleted file mode 100644
index ca27d9e..0000000
--- a/linden/indra/newview/skins/silver/textures/textures.xml
+++ /dev/null
@@ -1,25 +0,0 @@
1<textures version="101">
2 <texture name="button_disabled_32x128.tga" preload="true" scale_left="8" scale_top="16" scale_right="120" scale_bottom="8"/>
3 <texture name="button_enabled_32x128.tga" preload="true" scale_left="8" scale_top="16" scale_right="120" scale_bottom="8"/>
4 <texture name="toolbar_btn_enabled.tga" scale_left="26" scale_top="24" scale_right="102" scale_bottom="0" />
5
6 <texture name="progressbar_fill.tga" preload="true" scale_left="4" scale_top="7" scale_right="71" scale_bottom="7"/>
7 <texture name="progressbar_track.tga" preload="true" scale_left="3" scale_top="7" scale_right="87" scale_bottom="7"/>
8
9 <texture name="toolbar_btn_disabled.tga" scale_left="26" scale_top="24" scale_right="102" scale_bottom="0" />
10 <texture name="toolbar_btn_selected.tga" scale_left="26" scale_top="24" scale_right="102" scale_bottom="0" />
11 <texture name="button_enabled_selected_32x128.tga" preload="true" scale_left="12" scale_top="12" scale_right="118" scale_bottom="14"/>
12
13 <texture name="rounded_square.tga" file_name="rounded_square.tga" preload="true" scale_left="8" scale_top="16" scale_right="120" scale_bottom="8"/>
14 <texture name="rounded_square_soft.tga" file_name="rounded_square_soft.tga" preload="true" scale_left="8" scale_top="16" scale_right="120" scale_bottom="8"/>
15
16 <texture name="btn_chatbar.tga" scale_left="16" scale_top="24" scale_right="48" scale_bottom="0"/>
17 <texture name="btn_chatbar_selected.tga" scale_left="16" scale_top="24" scale_right="48" scale_bottom="0"/>
18
19 <texture name="flyout_btn_right_selected.tga" scale_left="6" scale_top="12" scale_right="26" scale_bottom="12"/>
20 <texture name="flyout_btn_right.tga" scale_left="6" scale_top="12" scale_right="26" scale_bottom="12"/>
21 <texture name="flyout_btn_right_disabled.tga" scale_left="6" scale_top="12" scale_right="122" scale_bottom="12"/>
22 <texture name="flyout_btn_left_selected.tga" scale_left="6" scale_top="12" scale_right="122" scale_bottom="12"/>
23 <texture name="flyout_btn_left.tga" scale_left="6" scale_top="12" scale_right="122" scale_bottom="12"/>
24 <texture name="flyout_btn_left_disabled.tga" scale_left="6" scale_top="12" scale_right="122" scale_bottom="12"/>
25</textures>
diff --git a/linden/indra/newview/skins/silver/xui/en-us/panel_media_controls.xml b/linden/indra/newview/skins/silver/xui/en-us/panel_media_controls.xml
deleted file mode 100644
index 0567388..0000000
--- a/linden/indra/newview/skins/silver/xui/en-us/panel_media_controls.xml
+++ /dev/null
@@ -1,90 +0,0 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel bg_visible="false" border="false" border_visible="false" bottom="1"
3 enabled="true" follows="right|bottom" height="20" left="0"
4 name="media_controls" width="220">
5 <icon bottom="-18" enabled="true" follows="left|top" height="14"
6 image_name="icn_label_music.tga" label="" left_delta="6" mouse_opaque="true"
7 name="music_icon" scale_image="true" tool_tip="Play streaming music"
8 width="14" />
9 <button bottom="-21" enabled="true" follows="left|top" height="20"
10 image_overlay="icn_play.tga"
11 image_unselected="flyout_btn_left.tga"
12 image_selected="flyout_btn_left_selected.tga"
13 image_disabled="flyout_btn_left_disabled.tga"
14 label="" left_delta="16"
15 mouse_opaque="true" name="music_play" scale_image="true" toggle="false"
16 tool_tip="Play streaming music" width="20" />
17 <button bottom="-21" enabled="true" follows="left|top" height="20"
18 image_overlay="icn_stop.tga"
19 image_unselected="flyout_btn_right.tga"
20 image_selected="flyout_btn_right_selected.tga"
21 image_disabled="flyout_btn_right_disabled.tga"
22 label="" left_delta="20"
23 mouse_opaque="true" name="music_stop" scale_image="true" toggle="false"
24 tool_tip="Stop streaming music" width="20" />
25 <icon bottom="-18" enabled="true" follows="left|top" height="14"
26 image_name="icn_label_media.tga"
27 label="" left_delta="22" mouse_opaque="true"
28 name="media_icon" scale_image="true" tool_tip="Play/pause streaming music"
29 width="17" />
30 <button bottom="-21" enabled="true" follows="left|top" height="20"
31 image_overlay="icn_play.tga"
32 image_unselected="flyout_btn_left.tga"
33 image_selected="flyout_btn_left_selected.tga"
34 image_disabled="flyout_btn_left_disabled.tga"
35 label="" left_delta="19"
36 mouse_opaque="true" name="media_play" scale_image="true" toggle="false"
37 tool_tip="Play/pause streaming music" width="20" />
38 <button bottom="-21" enabled="false" follows="left|top" height="20"
39 image_overlay="icn_pause.tga"
40 image_unselected="flyout_btn_left.tga"
41 image_selected="flyout_btn_left_selected.tga"
42 image_disabled="flyout_btn_left_disabled.tga"
43 label="" left_delta="0"
44 mouse_opaque="true" name="media_pause" scale_image="true" toggle="false"
45 tool_tip="Pause streaming media" width="20" />
46 <button bottom="-21" enabled="true" follows="left|top" height="20"
47 image_overlay="icn_stop.tga"
48 image_unselected="flyout_btn_right.tga"
49 image_selected="flyout_btn_right_selected.tga"
50 image_disabled="flyout_btn_right_disabled.tga"
51 label="" left_delta="20"
52 mouse_opaque="true" name="media_stop" scale_image="true" toggle="false"
53 tool_tip="Stop streaming media" width="20" />
54 <volume_slider bottom="-23" control_name="AudioLevelMaster" height="22" increment="0.05"
55 initial_val="0.5" left_delta="20" max_val="1" min_val="0"
56 mouse_opaque="true" name="volume_slider" tool_tip="Master Volume"
57 width="56" />
58 <button bottom="-19" control_name="MuteAudio" height="20"
59 image_selected="icn_speaker-muted_dark.tga"
60 image_unselected="icn_speaker_dark.tga" label="" left_delta="56"
61 name="mute_master" toggle="true" tool_tip="Master Mute" width="25" />
62 <button bottom="-21" control_name="ShowVolumeSettingsPopup" height="20" label=""
63 left_delta="19" name="expand" scale_image="true" toggle="true"
64 tool_tip="Adjust individual volume levels" width="20" />
65
66 <string name="play_label">
67 Play
68 </string>
69 <string name="stop_label">
70 Stop
71 </string>
72 <string name="pause_label">
73 Pause
74 </string>
75 <string name="default_tooltip_label">
76 No Media Specified
77 </string>
78 <string name="media_hidden_label">
79 (URL hidden by parcel owner)
80 </string>
81 <string name="media_icon_tooltip_web">
82 This location displays content from the World Wide Web. Click the Play button to display Web content.
83 </string>
84 <string name="media_icon_tooltip_movie">
85 This location displays Video content. Click the Play button to play the video.
86 </string>
87 <string name="media_play_tooltip">
88 Display Web content at this location.
89 </string>
90</panel>
diff --git a/linden/indra/newview/skins/silver/xui/en-us/panel_toolbar.xml b/linden/indra/newview/skins/silver/xui/en-us/panel_toolbar.xml
deleted file mode 100644
index 1009b3d..0000000
--- a/linden/indra/newview/skins/silver/xui/en-us/panel_toolbar.xml
+++ /dev/null
@@ -1,77 +0,0 @@
1<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
2<panel background_opaque="false" background_visible="false" bottom="0" can_close="true"
3 can_minimize="false" can_resize="false" follows="left|right|bottom"
4 height="28" name="toolbar" width="1024">
5
6 <string name="Redock Windows">Redock Windows</string>
7 <panel bottom="0" filename="panel_bg_toolbar.xml" height="28" left="0" width="1024" />
8 <layout_stack name="toolbar_stack" follows="left|right|bottom|top" bottom="2" left="1" width="1022" height="26" min_width="200" min_height="26" orientation="horizontal" border_size="0">
9 <icon image_name="spacer24.tga" width="2" height="2" follows="left|right" auto_resize="false" color="0,0,0,0" left="0" />
10 <button bottom="0" font="SansSerif" height="24"
11 image_selected="btn_chatbar_selected.tga" scale_image="true"
12 image_unselected="btn_chatbar.tga" label="" left="2" name="chat_btn"
13 image_overlay="icn_chatbar.tga" tool_tip="Show Chat Bar. (Enter)"
14 width="50" auto_resize="false" follows="left|right" user_resize="false"/>
15 <icon image_name="spacer24.tga" left_delta="2" width="2" height="2" follows="left|right" auto_resize="false" color="0,0,0,0"/>
16 <flyout_button bottom="0" font="SansSerif" height="24" label="Communicate" left="0"
17 name="communicate_btn" tool_tip="Communicate with your Friends and Groups."
18 list_position="above"
19 width="50" follows="left|right" user_resize="false"/>
20 <icon image_name="spacer24.tga" width="2" height="2" follows="left|right" auto_resize="false" color="0,0,0,0"/>
21 <button bottom="0" font="SansSerif" height="24" label="Fly"
22 image_overlay="icn_toolbar_fly.tga" image_overlay_alignment="left"
23 image_selected="toolbar_btn_selected.tga"
24 image_unselected="toolbar_btn_enabled.tga"
25 image_disabled="toolbar_btn_disabled.tga" scale_image="true"
26 label_selected="Stop Flying" left="0" name="fly_btn"
27 tool_tip="Start flying. Use E/C or PgUp/PgDn to fly up and down."
28 width="50" follows="left|right" user_resize="false"/>
29 <icon image_name="spacer24.tga" width="2" height="2" follows="left|right" auto_resize="false" color="0,0,0,0" />
30 <button bottom="0" font="SansSerif" height="24" label="Snapshot" left="0"
31 image_overlay="icn_toolbar_snapshot.tga" image_overlay_alignment="left"
32 image_selected="toolbar_btn_selected.tga"
33 image_unselected="toolbar_btn_enabled.tga"
34 image_disabled="toolbar_btn_disabled.tga" scale_image="true"
35 name="snapshot_btn" tool_tip="Save a screen shot to disk or inventory."
36 width="50" follows="left|right" user_resize="false"/>
37 <icon image_name="spacer24.tga" width="2" height="2" follows="left|right" auto_resize="false" color="0,0,0,0" />
38 <button bottom="0" font="SansSerif" height="24" label="Search" left="0"
39 image_overlay="icn_toolbar_search.tga" image_overlay_alignment="left"
40 image_selected="toolbar_btn_selected.tga"
41 image_unselected="toolbar_btn_enabled.tga"
42 image_disabled="toolbar_btn_disabled.tga" scale_image="true"
43 name="directory_btn"
44 tool_tip="Search for places, events, people, and more." width="50" follows="left|right" user_resize="false"/>
45 <icon image_name="spacer24.tga" width="2" height="2" follows="left|right" auto_resize="false" color="0,0,0,0" />
46 <button bottom="0" font="SansSerif" height="24" label="Build" left="0" name="build_btn"
47 image_overlay="icn_toolbar_build.tga" image_overlay_alignment="left"
48 image_selected="toolbar_btn_selected.tga"
49 image_unselected="toolbar_btn_enabled.tga"
50 image_disabled="toolbar_btn_disabled.tga" scale_image="true"
51 tool_tip="Create new objects." width="50" follows="left|right" user_resize="false"/>
52 <icon image_name="spacer24.tga" width="2" height="2" follows="left|right" auto_resize="false" color="0,0,0,0" />
53 <button bottom="0" font="SansSerif" height="24" label="Map" left="0" name="map_btn"
54 image_overlay="icn_toolbar_map.tga" image_overlay_alignment="left"
55 image_selected="toolbar_btn_selected.tga"
56 image_unselected="toolbar_btn_enabled.tga"
57 image_disabled="toolbar_btn_disabled.tga" scale_image="true"
58 tool_tip="Map of the world. (Ctrl-M)" width="50" follows="left|right" user_resize="false"/>
59 <icon image_name="spacer24.tga" width="2" height="2" follows="left|right" auto_resize="false" color="0,0,0,0" />
60 <button bottom="0" font="SansSerif" height="24" label="Mini-Map" left="0"
61 image_overlay="icn_toolbar_minimap.tga" image_overlay_alignment="left"
62 image_selected="toolbar_btn_selected.tga"
63 image_unselected="toolbar_btn_enabled.tga"
64 image_disabled="toolbar_btn_disabled.tga" scale_image="true"
65 name="radar_btn" tool_tip="Map of the area around you. (Ctrl-Shift-M)"
66 width="50" follows="left|right" user_resize="false"/>
67 <icon image_name="spacer24.tga" width="2" height="2" follows="left|right" auto_resize="false" color="0,0,0,0" />
68 <button bottom="0" font="SansSerif" height="24" label="Inventory" left="0"
69 image_overlay="icn_toolbar_inventory.tga" image_overlay_alignment="left"
70 image_selected="toolbar_btn_selected.tga"
71 image_unselected="toolbar_btn_enabled.tga"
72 image_disabled="toolbar_btn_disabled.tga" scale_image="true"
73 name="inventory_btn" tool_tip="Your items. (Ctrl-I)" width="50" follows="left|right" user_resize="false"/>
74 <icon image_name="spacer24.tga" width="2" height="2" follows="left|right" auto_resize="false" color="0,0,0,0" />
75 </layout_stack>
76
77</panel>
diff --git a/linden/indra/newview/viewer_manifest.py b/linden/indra/newview/viewer_manifest.py
index 01e422f..b67af99 100755
--- a/linden/indra/newview/viewer_manifest.py
+++ b/linden/indra/newview/viewer_manifest.py
@@ -132,7 +132,7 @@ class ViewerManifest(LLManifest):
132 132
133 # Gather up the README file, etc. 133 # Gather up the README file, etc.
134 def gather_documents(self): 134 def gather_documents(self):
135 # From the top level directory (imprudence) 135 # From the top level directory (meta-impy)
136 if self.prefix("../../..", dst=""): 136 if self.prefix("../../..", dst=""):
137 self.path("README.txt") 137 self.path("README.txt")
138 self.path("MANIFESTO.txt") 138 self.path("MANIFESTO.txt")
@@ -175,7 +175,7 @@ class ViewerManifest(LLManifest):
175 def channel(self): 175 def channel(self):
176 return self.args['channel'] 176 return self.args['channel']
177 def channel_unique(self): 177 def channel_unique(self):
178 return self.channel().replace("Imprudence", "").strip() 178 return self.channel().replace("meta-impy", "").strip()
179 def channel_oneword(self): 179 def channel_oneword(self):
180 return "".join(self.channel_unique().split()) 180 return "".join(self.channel_unique().split())
181 def channel_lowerword(self): 181 def channel_lowerword(self):
@@ -183,7 +183,7 @@ class ViewerManifest(LLManifest):
183 def viewer_branding_id(self): 183 def viewer_branding_id(self):
184 return self.args['branding_id'] 184 return self.args['branding_id']
185 def installer_prefix(self): 185 def installer_prefix(self):
186 mapping={"imprudence":'Imprudence-'} 186 mapping={"meta-impy":'meta-impy-'}
187 return mapping[self.viewer_branding_id()] 187 return mapping[self.viewer_branding_id()]
188 188
189 def flags_list(self): 189 def flags_list(self):
@@ -219,13 +219,13 @@ class ViewerManifest(LLManifest):
219 219
220 220
221class WindowsManifest(ViewerManifest): 221class WindowsManifest(ViewerManifest):
222 # we always want these to be named imprudence.exe to avoid settings conflicts 222 # we always want these to be named meta-impy.exe to avoid settings conflicts
223 def final_exe(self): 223 def final_exe(self):
224 #if self.default_channel(): 224 #if self.default_channel():
225 # if self.default_grid(): 225 # if self.default_grid():
226 return "imprudence.exe" 226 return "meta-impy.exe"
227 # else: 227 # else:
228 # return "imprudencepreview.exe" 228 # return "meta-impypreview.exe"
229 #else: 229 #else:
230 # return ''.join(self.channel().split()) + '.exe' 230 # return ''.join(self.channel().split()) + '.exe'
231 231
@@ -233,7 +233,7 @@ class WindowsManifest(ViewerManifest):
233 def construct(self): 233 def construct(self):
234 super(WindowsManifest, self).construct() 234 super(WindowsManifest, self).construct()
235 # Come out, come out, where ever you are. 235 # Come out, come out, where ever you are.
236 executable = self.find_existing_file('release/imprudence-bin.exe', 'releasesse2/imprudence-bin.exe', 'relwithdebinfo/imprudence-bin.exe', 'debug/imprudence-bin.exe', './imprudence-bin.exe') 236 executable = self.find_existing_file('release/meta-impy-bin.exe', 'releasesse2/meta-impy-bin.exe', 'relwithdebinfo/meta-impy-bin.exe', 'debug/meta-impy-bin.exe', './meta-impy-bin.exe')
237 nmake = False 237 nmake = False
238 self.path(executable, dst=self.final_exe()) 238 self.path(executable, dst=self.final_exe())
239 239
@@ -242,14 +242,14 @@ class WindowsManifest(ViewerManifest):
242 # It's trying to copy a built file outside of the source tree, a file we have anyway. 242 # It's trying to copy a built file outside of the source tree, a file we have anyway.
243 # TODO - do we even need this? 243 # TODO - do we even need this?
244 symbol_ver = '.'.join(self.args['version']) 244 symbol_ver = '.'.join(self.args['version'])
245 symbol_file = 'imprudence-%s.%s.pdb' % (symbol_ver, self.args['configuration']) 245 symbol_file = 'meta-impy-%s.%s.pdb' % (symbol_ver, self.args['configuration'])
246 symbol_path = '../../../../../pdb_files/%s' % (symbol_file) 246 symbol_path = '../../../../../pdb_files/%s' % (symbol_file)
247 if os.path.isfile(os.getcwd() + symbol_path): 247 if os.path.isfile(os.getcwd() + symbol_path):
248 print "%s already exists, skipping" % (symbol_path) 248 print "%s already exists, skipping" % (symbol_path)
249 else: 249 else:
250 #print "%s doesn't exist yet" % (os.getcwd() + symbol_path) 250 #print "%s doesn't exist yet" % (os.getcwd() + symbol_path)
251 try: 251 try:
252 self.path(self.find_existing_file(executable.split('/', 1)[0] % '/imprudence-bin.pdb'), dst="../%s" % (symbol_path)) 252 self.path(self.find_existing_file(executable.split('/', 1)[0] % '/meta-impy-bin.pdb'), dst="../%s" % (symbol_path))
253 pass 253 pass
254 except: 254 except:
255 print "Can't save symbol file %s, skipping" % (symbol_path) 255 print "Can't save symbol file %s, skipping" % (symbol_path)
@@ -261,7 +261,7 @@ class WindowsManifest(ViewerManifest):
261 self.path("LICENSE-libraries.txt") 261 self.path("LICENSE-libraries.txt")
262 self.end_prefix("../..") 262 self.end_prefix("../..")
263 263
264 self.path("imprudence.url") 264 self.path("meta-impy.url")
265 265
266 # Plugin host application 266 # Plugin host application
267 try: 267 try:
@@ -364,7 +364,7 @@ class WindowsManifest(ViewerManifest):
364 # self.end_prefix() 364 # self.end_prefix()
365 365
366 # The config file name needs to match the exe's name. 366 # The config file name needs to match the exe's name.
367 #self.path(src="%s/imprudence-bin.exe.config" % self.args['configuration'], dst=self.final_exe() + ".config") 367 #self.path(src="%s/meta-impy-bin.exe.config" % self.args['configuration'], dst=self.final_exe() + ".config")
368 368
369 # Vivox runtimes 369 # Vivox runtimes
370 if self.prefix(src="vivox-runtime/i686-win32", dst=""): 370 if self.prefix(src="vivox-runtime/i686-win32", dst=""):
@@ -470,7 +470,7 @@ class WindowsManifest(ViewerManifest):
470 470
471 471
472 def package_finish(self): 472 def package_finish(self):
473 # Imprudence uses Inno Setup to compile its installers. This process creates a new installer from a template 473 # meta-impy uses Inno Setup to compile its installers. This process creates a new installer from a template
474 # See http://www.jrsoftware.org/isinfo.php 474 # See http://www.jrsoftware.org/isinfo.php
475 sse_string = '' 475 sse_string = ''
476 if self.configuration().lower() == "releasesse2": 476 if self.configuration().lower() == "releasesse2":
@@ -483,7 +483,7 @@ class WindowsManifest(ViewerManifest):
483 app_ver_name="%s %s" % (app_name, version) 483 app_ver_name="%s %s" % (app_name, version)
484 484
485 new_script = base_filename + ".iss" 485 new_script = base_filename + ".iss"
486 self.replace_in("installers/windows/imprudence_installer_template.iss", new_script, { 486 self.replace_in("installers/windows/meta-impy_installer_template.iss", new_script, {
487 "%%VERSION%%":version, 487 "%%VERSION%%":version,
488 "%%VERSIONNUMBER%%":version_number, 488 "%%VERSIONNUMBER%%":version_number,
489 "%%INSTALLERFILENAME%%":base_filename, 489 "%%INSTALLERFILENAME%%":base_filename,
@@ -501,7 +501,7 @@ class WindowsManifest(ViewerManifest):
501class DarwinManifest(ViewerManifest): 501class DarwinManifest(ViewerManifest):
502 def construct(self): 502 def construct(self):
503 # copy over the build result (this is a no-op if run within the xcode script) 503 # copy over the build result (this is a no-op if run within the xcode script)
504 self.path(self.args['configuration'] + "/Imprudence.app", dst="") 504 self.path(self.args['configuration'] + "/meta-impy.app", dst="")
505 505
506 if self.prefix(src="", dst="Contents"): # everything goes in Contents 506 if self.prefix(src="", dst="Contents"): # everything goes in Contents
507 507
@@ -517,6 +517,19 @@ class DarwinManifest(ViewerManifest):
517 self.path("libopenal.1.dylib") 517 self.path("libopenal.1.dylib")
518 self.path("libalut.0.dylib") 518 self.path("libalut.0.dylib")
519 519
520 # otr lib and deps
521 self.path("libotr.dylib");
522 self.path("libintl.8.dylib");
523 self.path("libgcrypt.11.dylib");
524 self.path("libgpg-error.0.dylib");
525 self.path("libiconv.2.dylib");
526 # self.path("../../libraries/universal-darwin/lib_release/libotr.dylib", "MacOS/libotr.dylib");
527 # self.path("../../libraries/universal-darwin/lib_release/libintl.8.dylib", "MacOS/libintl.8.dylib");
528 # self.path("../../libraries/universal-darwin/lib_release/libgcrypt.11.dylib", "MacOS/libgcrypt.11.dylib");
529 # self.path("../../libraries/universal-darwin/lib_release/libgpg-error.0.dylib", "MacOS/libgpg-error.0.dylib");
530 # self.path("../../libraries/universal-darwin/lib_release/libiconv.2.dylib", "MacOS/libiconv.2.dylib");
531
532
520 # self.path("libglib-2.0.dylib") 533 # self.path("libglib-2.0.dylib")
521 # self.path("libgmodule-2.0.dylib") 534 # self.path("libgmodule-2.0.dylib")
522 # self.path("libgobject-2.0.dylib") 535 # self.path("libgobject-2.0.dylib")
@@ -738,17 +751,17 @@ class DarwinManifest(ViewerManifest):
738 if ("package" in self.args['actions'] or 751 if ("package" in self.args['actions'] or
739 "unpacked" in self.args['actions']): 752 "unpacked" in self.args['actions']):
740 self.run_command('strip -S "%(viewer_binary)s"' % 753 self.run_command('strip -S "%(viewer_binary)s"' %
741 { 'viewer_binary' : self.dst_path_of('Contents/MacOS/Second Life')}) 754 { 'viewer_binary' : self.dst_path_of('Contents/MacOS/meta-impy')})
742 755
743 756
744 def package_finish(self): 757 def package_finish(self):
745 channel_standin = 'Imprudence' # hah, our default channel is not usable on its own 758 channel_standin = 'meta-impy' # hah, our default channel is not usable on its own
746 if not self.default_channel(): 759 if not self.default_channel():
747 channel_standin = self.channel() 760 channel_standin = self.channel()
748 761
749 imagename=self.installer_prefix() + '-'.join(self.args['version']) 762 imagename=self.installer_prefix() + '-'.join(self.args['version'])
750 763
751 volname="Imprudence Installer" # DO NOT CHANGE without understanding comment above 764 volname="meta-impy Installer" # DO NOT CHANGE without understanding comment above
752 765
753 if self.default_channel(): 766 if self.default_channel():
754 if not self.default_grid(): 767 if not self.default_grid():
@@ -775,7 +788,7 @@ class DarwinManifest(ViewerManifest):
775 # Copy everything in to the mounted .dmg 788 # Copy everything in to the mounted .dmg
776 789
777 if self.default_channel() and not self.default_grid(): 790 if self.default_channel() and not self.default_grid():
778 app_name = "Imprudence " + self.args['grid'] 791 app_name = "meta-impy " + self.args['grid']
779 else: 792 else:
780 app_name = channel_standin.strip() 793 app_name = channel_standin.strip()
781 794
@@ -828,13 +841,13 @@ class LinuxManifest(ViewerManifest):
828 def construct(self): 841 def construct(self):
829 super(LinuxManifest, self).construct() 842 super(LinuxManifest, self).construct()
830 843
831 self.path("res/imprudence_icon.png","imprudence_icon.png") 844 self.path("res/meta-impy_icon.png","meta-impy_icon.png")
832 if self.prefix("linux_tools", dst=""): 845 if self.prefix("linux_tools", dst=""):
833 self.path("alsoft.conf") 846 self.path("alsoft.conf")
834 #self.path("client-readme.txt","README-linux.txt") 847 #self.path("client-readme.txt","README-linux.txt")
835 self.path("client-readme-voice.txt","README-linux-voice.txt") 848 self.path("client-readme-voice.txt","README-linux-voice.txt")
836 #self.path("client-readme-joystick.txt","README-linux-joystick.txt") 849 #self.path("client-readme-joystick.txt","README-linux-joystick.txt")
837 self.path("wrapper.sh","imprudence") 850 self.path("wrapper.sh","meta-impy")
838 self.path("handle_secondlifeprotocol.sh") 851 self.path("handle_secondlifeprotocol.sh")
839 self.path("register_secondlifeprotocol.sh") 852 self.path("register_secondlifeprotocol.sh")
840 self.end_prefix("linux_tools") 853 self.end_prefix("linux_tools")
@@ -871,7 +884,7 @@ class LinuxManifest(ViewerManifest):
871 if 'installer_name' in self.args: 884 if 'installer_name' in self.args:
872 installer_name = self.args['installer_name'] 885 installer_name = self.args['installer_name']
873 else: 886 else:
874 installer_name_components = ['Imprudence_', self.args.get('arch')] 887 installer_name_components = ['meta-impy_', self.args.get('arch')]
875 installer_name_components.extend(self.args['version']) 888 installer_name_components.extend(self.args['version'])
876 installer_name = "_".join(installer_name_components) 889 installer_name = "_".join(installer_name_components)
877 if self.default_channel(): 890 if self.default_channel():
@@ -892,10 +905,12 @@ class LinuxManifest(ViewerManifest):
892 self.package_file = installer_name + '.tar.bz2' 905 self.package_file = installer_name + '.tar.bz2'
893 906
894 # Disabled for now. It's a waste of time to package every compile. 907 # Disabled for now. It's a waste of time to package every compile.
908 # Hmm, need a way to turn this on and off.
909 # Looks like upstream found a way, delete this crap after testing.
895 910
896 # if("package" in self.args['actions'] or 911 # if("package" in self.args['actions'] or
897 # "unpacked" in self.args['actions']): 912 # "unpacked" in self.args['actions']):
898 # 913 #
899 # # temporarily move directory tree so that it has the right 914 # # temporarily move directory tree so that it has the right
900 # # name in the tarfile 915 # # name in the tarfile
901 # self.run_command("mv %(dst)s %(inst)s" % { 916 # self.run_command("mv %(dst)s %(inst)s" % {
@@ -918,9 +933,9 @@ class Linux_i686Manifest(LinuxManifest):
918 def construct(self): 933 def construct(self):
919 super(Linux_i686Manifest, self).construct() 934 super(Linux_i686Manifest, self).construct()
920 if self.debug(): 935 if self.debug():
921 self.path("imprudence-bin","bin/do-not-directly-run-imprudence-bin") 936 self.path("meta-impy-bin","bin/do-not-directly-run-meta-impy-bin")
922 else: 937 else:
923 self.path("imprudence-stripped","bin/do-not-directly-run-imprudence-bin") 938 self.path("meta-impy-stripped","bin/do-not-directly-run-meta-impy-bin")
924 939
925 self.path("../llcommon/libllcommon.so", "lib/libllcommon.so") 940 self.path("../llcommon/libllcommon.so", "lib/libllcommon.so")
926 941
@@ -1025,6 +1040,11 @@ class Linux_i686Manifest(LinuxManifest):
1025 #self.path("libgstwavparse.so") 1040 #self.path("libgstwavparse.so")
1026 1041
1027 #self.end_prefix("gstreamer-plugins") 1042 #self.end_prefix("gstreamer-plugins")
1043
1044# [$PLOTR$] these two are not needed when STATIC_LIBOTR_ETC is on in .../linden/indra/CMakeLists.txt
1045# self.path("libotr.so.2.2.0")
1046# self.path("libotr.so.2")
1047# [/$PLOTR$]
1028 1048
1029 # Wish I could kill it with fire. lol 1049 # Wish I could kill it with fire. lol
1030 self.path("libboost_date_time-mt.so") 1050 self.path("libboost_date_time-mt.so")
@@ -1060,9 +1080,9 @@ class Linux_x86_64Manifest(LinuxManifest):
1060 def construct(self): 1080 def construct(self):
1061 super(Linux_x86_64Manifest, self).construct() 1081 super(Linux_x86_64Manifest, self).construct()
1062 if self.debug(): 1082 if self.debug():
1063 self.path("imprudence-bin","bin/do-not-directly-run-imprudence-bin") 1083 self.path("meta-impy-bin","bin/do-not-directly-run-meta-impy-bin")
1064 else: 1084 else:
1065 self.path("imprudence-stripped","bin/do-not-directly-run-imprudence-bin") 1085 self.path("meta-impy-stripped","bin/do-not-directly-run-meta-impy-bin")
1066# self.path("../linux_crash_logger/linux-crash-logger-stripped","linux-crash-logger.bin") 1086# self.path("../linux_crash_logger/linux-crash-logger-stripped","linux-crash-logger.bin")
1067 1087
1068 self.path("../llcommon/libllcommon.so", "lib64/libllcommon.so") 1088 self.path("../llcommon/libllcommon.so", "lib64/libllcommon.so")
@@ -1125,9 +1145,15 @@ class Linux_x86_64Manifest(LinuxManifest):
1125# self.path("libpangox-1.0.so.0") # and crash if not compatible or present. 1145# self.path("libpangox-1.0.so.0") # and crash if not compatible or present.
1126# self.path("libpangoxft-1.0.so.0") # So we depend system gdk pixbufs and pango anyway. 1146# self.path("libpangoxft-1.0.so.0") # So we depend system gdk pixbufs and pango anyway.
1127 ##self.path("libpixman-1.so.0") 1147 ##self.path("libpixman-1.so.0")
1148
1149# [$PLOTR$] these two are not needed when STATIC_LIBOTR_ETC is on in .../linden/indra/CMakeLists.txt
1150# self.path("libotr.so.2.2.0")
1151# self.path("libotr.so.2")
1152# [/$PLOTR$]
1128 1153
1129#KILL IT WITH FIRE 1154#KILL IT WITH FIRE
1130 ## Gstreamer libs 1155 ## Gstreamer libs
1156 #self.end_prefix("gstreamer-plugins")
1131 #self.path("libgstbase-0.10.so.0") 1157 #self.path("libgstbase-0.10.so.0")
1132 #self.path("libgstreamer-0.10.so.0") 1158 #self.path("libgstreamer-0.10.so.0")
1133 #self.path("libgstaudio-0.10.so.0") 1159 #self.path("libgstaudio-0.10.so.0")
diff --git a/linden/indra/newview/viewerinfo.cpp b/linden/indra/newview/viewerinfo.cpp
index 7237c16..07ec740 100644
--- a/linden/indra/newview/viewerinfo.cpp
+++ b/linden/indra/newview/viewerinfo.cpp
@@ -30,8 +30,9 @@ namespace ViewerInfo
30 30
31 // These are intentionally defined here instead of in the header, 31 // These are intentionally defined here instead of in the header,
32 // because they should NOT be read directly. Use the functions. 32 // because they should NOT be read directly. Use the functions.
33
33 // NOTE: Some parts of the build system scan this file looking for version numbers and such, commenting out sections confuses that. 34 // NOTE: Some parts of the build system scan this file looking for version numbers and such, commenting out sections confuses that.
34 const std::string NAME = "Imprudence"; 35 const std::string NAME = "meta-impy";
35 const std::string VARNT = ""; 36 const std::string VARNT = "";
36 const S32 MAJOR = 1; 37 const S32 MAJOR = 1;
37 const S32 MINOR = 4; 38 const S32 MINOR = 4;