diff options
author | Jacek Antonelli | 2009-05-30 17:16:26 -0500 |
---|---|---|
committer | Jacek Antonelli | 2009-05-30 19:12:37 -0500 |
commit | 499afbab7be4c4136eea0e1897319c3ac4e9799d (patch) | |
tree | 95e9de524994eae69b0dd88b8c6608d5f45d030c /linden/indra/newview/llfloatersnapshot.cpp | |
parent | Fixed end-of-line style for Info-Imprudence.plist. (diff) | |
parent | Second Life viewer sources 1.22.11 (diff) | |
download | meta-impy-499afbab7be4c4136eea0e1897319c3ac4e9799d.zip meta-impy-499afbab7be4c4136eea0e1897319c3ac4e9799d.tar.gz meta-impy-499afbab7be4c4136eea0e1897319c3ac4e9799d.tar.bz2 meta-impy-499afbab7be4c4136eea0e1897319c3ac4e9799d.tar.xz |
Merged SL 1.22.11 into Imprudence 1.1 RC2.
Conflicts:
linden/doc/contributions.txt
linden/indra/cmake/APR.cmake
linden/indra/cmake/CopyWinLibs.cmake
linden/indra/cmake/LLKDU.cmake (removed)
linden/indra/cmake/LLMedia.cmake
linden/indra/cmake/OPENAL.cmake
linden/indra/cmake/QuickTime.cmake (removed)
linden/indra/develop.py
linden/indra/lib/python/indra/base/llsd.py
linden/indra/lib/python/indra/util/fastest_elementtree.py
linden/indra/lib/python/indra/util/llmanifest.py
linden/indra/lib/python/indra/util/named_query.py
linden/indra/llaudio/CMakeLists.txt
linden/indra/llaudio/audioengine.cpp
linden/indra/llaudio/audioengine.h
linden/indra/llaudio/audioengine_fmod.cpp
linden/indra/llaudio/audioengine_fmod.h
linden/indra/llaudio/audioengine_openal.cpp
linden/indra/llaudio/audioengine_openal.h
linden/indra/llaudio/listener_openal.cpp
linden/indra/llaudio/listener_openal.h
linden/indra/llaudio/windgen.h
linden/indra/llcrashlogger/llcrashlogger.cpp
linden/indra/llmedia/llmediaimplgstreamer.cpp
linden/indra/llmedia/llmediaimplgstreamer_syms.cpp (removed)
linden/indra/llmedia/llmediaimplgstreamer_syms.h (removed)
linden/indra/llmessage/llcircuit.h
linden/indra/llrender/llgl.cpp
linden/indra/llrender/llrender.h
linden/indra/llui/llfloater.cpp
linden/indra/llui/lltexteditor.cpp
linden/indra/llwindow/llwindowsdl.cpp
linden/indra/mac_crash_logger/CMakeLists.txt
linden/indra/mac_updater/CMakeLists.txt
linden/indra/newview/CMakeLists.txt
linden/indra/newview/English.lproj/InfoPlist.strings
linden/indra/newview/Info-Imprudence.plist
linden/indra/newview/installers/windows/installer_template.nsi
linden/indra/newview/installers/windows/lang_de.nsi
linden/indra/newview/installers/windows/lang_en-us.nsi
linden/indra/newview/installers/windows/lang_ja.nsi
linden/indra/newview/installers/windows/lang_ko.nsi
linden/indra/newview/llappviewer.cpp
linden/indra/newview/llaudiosourcevo.cpp
linden/indra/newview/llfloaterabout.cpp
linden/indra/newview/llfloaterhtml.cpp
linden/indra/newview/llfloaterhtml.h
linden/indra/newview/llfloaterinspect.cpp
linden/indra/newview/llfloatersnapshot.cpp
linden/indra/newview/llpanelgeneral.cpp
linden/indra/newview/llpanelgeneral.h
linden/indra/newview/llpanellogin.cpp
linden/indra/newview/llpanelobject.cpp
linden/indra/newview/llurlhistory.cpp
linden/indra/newview/llviewermenu.cpp
linden/indra/newview/llviewernetwork.cpp
linden/indra/newview/llviewernetwork.h
linden/indra/newview/llviewerobject.cpp
linden/indra/newview/llviewerwindow.cpp
linden/indra/newview/llvoavatar.cpp
linden/indra/newview/res/viewerRes.rc
linden/indra/newview/skins/default/xui/de/floater_env_settings.xml
linden/indra/newview/skins/default/xui/de/floater_html.xml
linden/indra/newview/skins/default/xui/de/floater_inspect.xml
linden/indra/newview/skins/default/xui/de/floater_instant_message_group.xml
linden/indra/newview/skins/default/xui/de/floater_lagmeter.xml
linden/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
linden/indra/newview/skins/default/xui/de/floater_url_entry.xml
linden/indra/newview/skins/default/xui/de/floater_water.xml
linden/indra/newview/skins/default/xui/de/mime_types.xml
linden/indra/newview/skins/default/xui/de/need_to_long.xml
linden/indra/newview/skins/default/xui/de/need_to_translate.xml
linden/indra/newview/skins/default/xui/de/need_to_update.xml
linden/indra/newview/skins/default/xui/de/panel_friends.xml
linden/indra/newview/skins/default/xui/de/panel_media_remote_expanded.xml
linden/indra/newview/skins/default/xui/de/panel_preferences_voice.xml
linden/indra/newview/skins/default/xui/de/panel_voice_controls.xml
linden/indra/newview/skins/default/xui/de/panel_voice_enable.xml
linden/indra/newview/skins/default/xui/de/panel_voice_options.xml
linden/indra/newview/skins/default/xui/de/strings.xml
linden/indra/newview/skins/default/xui/en-us/floater_chat_history.xml
linden/indra/newview/skins/default/xui/en-us/floater_instant_message_ad_hoc.xml
linden/indra/newview/skins/default/xui/en-us/floater_instant_message_group.xml
linden/indra/newview/skins/default/xui/en-us/floater_lagmeter.xml
linden/indra/newview/skins/default/xui/en-us/menu_pie_object.xml
linden/indra/newview/skins/default/xui/en-us/menu_viewer.xml
linden/indra/newview/skins/default/xui/en-us/panel_audio_device.xml
linden/indra/newview/skins/default/xui/en-us/panel_preferences_general.xml
linden/indra/newview/skins/default/xui/en-us/panel_preferences_input.xml
linden/indra/newview/skins/default/xui/en-us/panel_preferences_voice.xml
linden/indra/newview/skins/default/xui/en-us/panel_voice_remote.xml
linden/indra/newview/skins/default/xui/en-us/panel_voice_remote_expanded.xml
linden/indra/newview/skins/default/xui/es/alerts.xml
linden/indra/newview/skins/default/xui/es/floater_about_land.xml
linden/indra/newview/skins/default/xui/es/floater_mute.xml
linden/indra/newview/skins/default/xui/es/menu_viewer.xml
linden/indra/newview/skins/default/xui/es/panel_group_land_money.xml
linden/indra/newview/skins/default/xui/es/panel_preferences_general.xml
linden/indra/newview/skins/default/xui/fr/alerts.xml
linden/indra/newview/skins/default/xui/fr/floater_about.xml
linden/indra/newview/skins/default/xui/fr/floater_about_land.xml
linden/indra/newview/skins/default/xui/fr/floater_active_speakers.xml
linden/indra/newview/skins/default/xui/fr/floater_animation_preview.xml
linden/indra/newview/skins/default/xui/fr/floater_avatar_picker.xml
linden/indra/newview/skins/default/xui/fr/floater_avatar_textures.xml
linden/indra/newview/skins/default/xui/fr/floater_buy_contents.xml
linden/indra/newview/skins/default/xui/fr/floater_buy_currency.xml
linden/indra/newview/skins/default/xui/fr/floater_buy_land.xml
linden/indra/newview/skins/default/xui/fr/floater_buy_object.xml
linden/indra/newview/skins/default/xui/fr/floater_chat_history.xml
linden/indra/newview/skins/default/xui/fr/floater_color_picker.xml
linden/indra/newview/skins/default/xui/fr/floater_customize.xml
linden/indra/newview/skins/default/xui/fr/floater_directory.xml
linden/indra/newview/skins/default/xui/fr/floater_env_settings.xml
linden/indra/newview/skins/default/xui/fr/floater_god_tools.xml
linden/indra/newview/skins/default/xui/fr/floater_group_info.xml
linden/indra/newview/skins/default/xui/fr/floater_hardware_settings.xml
linden/indra/newview/skins/default/xui/fr/floater_html.xml
linden/indra/newview/skins/default/xui/fr/floater_image_preview.xml
linden/indra/newview/skins/default/xui/fr/floater_import.xml
linden/indra/newview/skins/default/xui/fr/floater_instant_message.xml
linden/indra/newview/skins/default/xui/fr/floater_instant_message_ad_hoc.xml
linden/indra/newview/skins/default/xui/fr/floater_instant_message_group.xml
linden/indra/newview/skins/default/xui/fr/floater_inventory.xml
linden/indra/newview/skins/default/xui/fr/floater_inventory_item_properties.xml
linden/indra/newview/skins/default/xui/fr/floater_inventory_view_finder.xml
linden/indra/newview/skins/default/xui/fr/floater_joystick.xml
linden/indra/newview/skins/default/xui/fr/floater_lagmeter.xml
linden/indra/newview/skins/default/xui/fr/floater_land_holdings.xml
linden/indra/newview/skins/default/xui/fr/floater_lsl_guide.xml
linden/indra/newview/skins/default/xui/fr/floater_media_browser.xml
linden/indra/newview/skins/default/xui/fr/floater_moveview.xml
linden/indra/newview/skins/default/xui/fr/floater_mute.xml
linden/indra/newview/skins/default/xui/fr/floater_mute_object.xml
linden/indra/newview/skins/default/xui/fr/floater_name_description.xml
linden/indra/newview/skins/default/xui/fr/floater_new_outfit_dialog.xml
linden/indra/newview/skins/default/xui/fr/floater_openobject.xml
linden/indra/newview/skins/default/xui/fr/floater_pay.xml
linden/indra/newview/skins/default/xui/fr/floater_pay_object.xml
linden/indra/newview/skins/default/xui/fr/floater_preferences.xml
linden/indra/newview/skins/default/xui/fr/floater_preview_animation.xml
linden/indra/newview/skins/default/xui/fr/floater_preview_gesture.xml
linden/indra/newview/skins/default/xui/fr/floater_preview_notecard.xml
linden/indra/newview/skins/default/xui/fr/floater_preview_notecard_keep_discard.xml
linden/indra/newview/skins/default/xui/fr/floater_preview_sound.xml
linden/indra/newview/skins/default/xui/fr/floater_price_for_listing.xml
linden/indra/newview/skins/default/xui/fr/floater_region_info.xml
linden/indra/newview/skins/default/xui/fr/floater_report_abuse.xml
linden/indra/newview/skins/default/xui/fr/floater_report_bug.xml
linden/indra/newview/skins/default/xui/fr/floater_script_ed_panel.xml
linden/indra/newview/skins/default/xui/fr/floater_sell_land.xml
linden/indra/newview/skins/default/xui/fr/floater_settings_debug.xml
linden/indra/newview/skins/default/xui/fr/floater_skin_preview_template.xml
linden/indra/newview/skins/default/xui/fr/floater_snapshot.xml
linden/indra/newview/skins/default/xui/fr/floater_sound_preview.xml
linden/indra/newview/skins/default/xui/fr/floater_telehub.xml
linden/indra/newview/skins/default/xui/fr/floater_texture_ctrl.xml
linden/indra/newview/skins/default/xui/fr/floater_tools.xml
linden/indra/newview/skins/default/xui/fr/floater_top_objects.xml
linden/indra/newview/skins/default/xui/fr/floater_url_entry.xml
linden/indra/newview/skins/default/xui/fr/floater_windlight_options.xml
linden/indra/newview/skins/default/xui/fr/floater_world_map.xml
linden/indra/newview/skins/default/xui/fr/menu_inventory.xml
linden/indra/newview/skins/default/xui/fr/menu_pie_avatar.xml
linden/indra/newview/skins/default/xui/fr/menu_pie_land.xml
linden/indra/newview/skins/default/xui/fr/menu_pie_self.xml
linden/indra/newview/skins/default/xui/fr/menu_viewer.xml
linden/indra/newview/skins/default/xui/fr/mime_types.xml
linden/indra/newview/skins/default/xui/fr/notify.xml
linden/indra/newview/skins/default/xui/fr/panel_audio.xml
linden/indra/newview/skins/default/xui/fr/panel_audio_device.xml
linden/indra/newview/skins/default/xui/fr/panel_avatar.xml
linden/indra/newview/skins/default/xui/fr/panel_avatar_classified.xml
linden/indra/newview/skins/default/xui/fr/panel_chat_bar.xml
linden/indra/newview/skins/default/xui/fr/panel_classified.xml
linden/indra/newview/skins/default/xui/fr/panel_event.xml
linden/indra/newview/skins/default/xui/fr/panel_friends.xml
linden/indra/newview/skins/default/xui/fr/panel_group.xml
linden/indra/newview/skins/default/xui/fr/panel_group_finder.xml
linden/indra/newview/skins/default/xui/fr/panel_group_general.xml
linden/indra/newview/skins/default/xui/fr/panel_group_invite.xml
linden/indra/newview/skins/default/xui/fr/panel_group_land_money.xml
linden/indra/newview/skins/default/xui/fr/panel_group_notices.xml
linden/indra/newview/skins/default/xui/fr/panel_group_roles.xml
linden/indra/newview/skins/default/xui/fr/panel_group_voting.xml
linden/indra/newview/skins/default/xui/fr/panel_groups.xml
linden/indra/newview/skins/default/xui/fr/panel_login.xml
linden/indra/newview/skins/default/xui/fr/panel_master_volume.xml
linden/indra/newview/skins/default/xui/fr/panel_media_controls.xml
linden/indra/newview/skins/default/xui/fr/panel_media_remote.xml
linden/indra/newview/skins/default/xui/fr/panel_media_remote_expanded.xml
linden/indra/newview/skins/default/xui/fr/panel_overlaybar.xml
linden/indra/newview/skins/default/xui/fr/panel_place.xml
linden/indra/newview/skins/default/xui/fr/panel_place_small.xml
linden/indra/newview/skins/default/xui/fr/panel_preferences_audio.xml
linden/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml
linden/indra/newview/skins/default/xui/fr/panel_preferences_general.xml
linden/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml
linden/indra/newview/skins/default/xui/fr/panel_preferences_im.xml
linden/indra/newview/skins/default/xui/fr/panel_preferences_input.xml
linden/indra/newview/skins/default/xui/fr/panel_preferences_network.xml
linden/indra/newview/skins/default/xui/fr/panel_preferences_popups.xml
linden/indra/newview/skins/default/xui/fr/panel_preferences_voice.xml
linden/indra/newview/skins/default/xui/fr/panel_preferences_web.xml
linden/indra/newview/skins/default/xui/fr/panel_region_covenant.xml
linden/indra/newview/skins/default/xui/fr/panel_region_debug.xml
linden/indra/newview/skins/default/xui/fr/panel_region_estate.xml
linden/indra/newview/skins/default/xui/fr/panel_region_general.xml
linden/indra/newview/skins/default/xui/fr/panel_region_terrain.xml
linden/indra/newview/skins/default/xui/fr/panel_scrolling_param.xml
linden/indra/newview/skins/default/xui/fr/panel_speaker_controls.xml
linden/indra/newview/skins/default/xui/fr/panel_status_bar.xml
linden/indra/newview/skins/default/xui/fr/panel_toolbar.xml
linden/indra/newview/skins/default/xui/fr/panel_voice_controls.xml
linden/indra/newview/skins/default/xui/fr/panel_voice_enable.xml
linden/indra/newview/skins/default/xui/fr/panel_voice_options.xml
linden/indra/newview/skins/default/xui/fr/panel_voice_remote_expanded.xml
linden/indra/newview/skins/default/xui/fr/role_actions.xml
linden/indra/newview/skins/default/xui/fr/strings.xml
linden/indra/newview/skins/default/xui/ja/floater_hardware_settings.xml
linden/indra/newview/skins/default/xui/ja/floater_inspect.xml
linden/indra/newview/skins/default/xui/ja/floater_instant_message_group.xml
linden/indra/newview/skins/default/xui/ja/floater_lsl_guide.xml
linden/indra/newview/skins/default/xui/ja/floater_media_browser.xml
linden/indra/newview/skins/default/xui/ja/floater_mute_object.xml
linden/indra/newview/skins/default/xui/ja/floater_url_entry.xml
linden/indra/newview/skins/default/xui/ja/need_to_long.xml
linden/indra/newview/skins/default/xui/ja/need_to_translate.xml
linden/indra/newview/skins/default/xui/ja/need_to_update.xml
linden/indra/newview/skins/default/xui/ja/panel_audio.xml
linden/indra/newview/skins/default/xui/ja/panel_groups.xml
linden/indra/newview/skins/default/xui/ja/panel_preferences_voice.xml
linden/indra/newview/skins/default/xui/ja/panel_preferences_web.xml
linden/indra/newview/skins/default/xui/ja/strings.xml
linden/indra/newview/skins/default/xui/ko/need_to_long.xml
linden/indra/newview/skins/default/xui/ko/need_to_translate.xml
linden/indra/newview/skins/default/xui/ko/need_to_update.xml
linden/indra/newview/skins/default/xui/pt/alerts.xml
linden/indra/newview/skins/default/xui/pt/floater_about.xml
linden/indra/newview/skins/default/xui/pt/floater_about_land.xml
linden/indra/newview/skins/default/xui/pt/floater_animation_preview.xml
linden/indra/newview/skins/default/xui/pt/floater_avatar_picker.xml
linden/indra/newview/skins/default/xui/pt/floater_avatar_textures.xml
linden/indra/newview/skins/default/xui/pt/floater_build_options.xml
linden/indra/newview/skins/default/xui/pt/floater_buy_contents.xml
linden/indra/newview/skins/default/xui/pt/floater_buy_currency.xml
linden/indra/newview/skins/default/xui/pt/floater_buy_land.xml
linden/indra/newview/skins/default/xui/pt/floater_buy_object.xml
linden/indra/newview/skins/default/xui/pt/floater_chat_history.xml
linden/indra/newview/skins/default/xui/pt/floater_color_picker.xml
linden/indra/newview/skins/default/xui/pt/floater_customize.xml
linden/indra/newview/skins/default/xui/pt/floater_directory.xml
linden/indra/newview/skins/default/xui/pt/floater_gesture.xml
linden/indra/newview/skins/default/xui/pt/floater_html.xml
linden/indra/newview/skins/default/xui/pt/floater_im.xml
linden/indra/newview/skins/default/xui/pt/floater_image_preview.xml
linden/indra/newview/skins/default/xui/pt/floater_instant_message.xml
linden/indra/newview/skins/default/xui/pt/floater_instant_message_ad_hoc.xml
linden/indra/newview/skins/default/xui/pt/floater_inventory.xml
linden/indra/newview/skins/default/xui/pt/floater_inventory_item_properties.xml
linden/indra/newview/skins/default/xui/pt/floater_joystick.xml
linden/indra/newview/skins/default/xui/pt/floater_land_holdings.xml
linden/indra/newview/skins/default/xui/pt/floater_live_lsleditor.xml
linden/indra/newview/skins/default/xui/pt/floater_mute.xml
linden/indra/newview/skins/default/xui/pt/floater_new_outfit_dialog.xml
linden/indra/newview/skins/default/xui/pt/floater_openobject.xml
linden/indra/newview/skins/default/xui/pt/floater_pay.xml
linden/indra/newview/skins/default/xui/pt/floater_pay_object.xml
linden/indra/newview/skins/default/xui/pt/floater_postcard.xml
linden/indra/newview/skins/default/xui/pt/floater_preview_animation.xml
linden/indra/newview/skins/default/xui/pt/floater_preview_gesture.xml
linden/indra/newview/skins/default/xui/pt/floater_preview_notecard.xml
linden/indra/newview/skins/default/xui/pt/floater_preview_notecard_keep_discard.xml
linden/indra/newview/skins/default/xui/pt/floater_report_abuse.xml
linden/indra/newview/skins/default/xui/pt/floater_report_bug.xml
linden/indra/newview/skins/default/xui/pt/floater_script_debug.xml
linden/indra/newview/skins/default/xui/pt/floater_script_ed_panel.xml
linden/indra/newview/skins/default/xui/pt/floater_snapshot.xml
linden/indra/newview/skins/default/xui/pt/floater_texture_ctrl.xml
linden/indra/newview/skins/default/xui/pt/floater_tools.xml
linden/indra/newview/skins/default/xui/pt/floater_top_objects.xml
linden/indra/newview/skins/default/xui/pt/floater_tos.xml
linden/indra/newview/skins/default/xui/pt/floater_world_map.xml
linden/indra/newview/skins/default/xui/pt/menu_inventory.xml
linden/indra/newview/skins/default/xui/pt/menu_pie_avatar.xml
linden/indra/newview/skins/default/xui/pt/menu_viewer.xml
linden/indra/newview/skins/default/xui/pt/notify.xml
linden/indra/newview/skins/default/xui/pt/panel_avatar.xml
linden/indra/newview/skins/default/xui/pt/panel_avatar_classified.xml
linden/indra/newview/skins/default/xui/pt/panel_chat_bar.xml
linden/indra/newview/skins/default/xui/pt/panel_classified.xml
linden/indra/newview/skins/default/xui/pt/panel_event.xml
linden/indra/newview/skins/default/xui/pt/panel_group_general.xml
linden/indra/newview/skins/default/xui/pt/panel_group_invite.xml
linden/indra/newview/skins/default/xui/pt/panel_group_land_money.xml
linden/indra/newview/skins/default/xui/pt/panel_group_notices.xml
linden/indra/newview/skins/default/xui/pt/panel_group_roles.xml
linden/indra/newview/skins/default/xui/pt/panel_group_voting.xml
linden/indra/newview/skins/default/xui/pt/panel_login.xml
linden/indra/newview/skins/default/xui/pt/panel_overlaybar.xml
linden/indra/newview/skins/default/xui/pt/panel_place.xml
linden/indra/newview/skins/default/xui/pt/panel_place_small.xml
linden/indra/newview/skins/default/xui/pt/panel_preferences_audio.xml
linden/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml
linden/indra/newview/skins/default/xui/pt/panel_preferences_general.xml
linden/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml
linden/indra/newview/skins/default/xui/pt/panel_preferences_im.xml
linden/indra/newview/skins/default/xui/pt/panel_preferences_input.xml
linden/indra/newview/skins/default/xui/pt/panel_preferences_network.xml
linden/indra/newview/skins/default/xui/pt/panel_preferences_popups.xml
linden/indra/newview/skins/default/xui/pt/panel_preferences_web.xml
linden/indra/newview/skins/default/xui/pt/panel_region_covenant.xml
linden/indra/newview/skins/default/xui/pt/panel_region_debug.xml
linden/indra/newview/skins/default/xui/pt/panel_region_estate.xml
linden/indra/newview/skins/default/xui/pt/panel_region_general.xml
linden/indra/newview/skins/default/xui/pt/panel_status_bar.xml
linden/indra/newview/skins/default/xui/pt/panel_toolbar.xml
linden/indra/newview/skins/default/xui/pt/teleport_strings.xml
linden/indra/newview/skins/default/xui/zh/floater_account_history.xml
linden/indra/newview/skins/default/xui/zh/floater_god_tools.xml
linden/indra/newview/skins/default/xui/zh/floater_html.xml
linden/indra/newview/skins/default/xui/zh/floater_inspect.xml
linden/indra/newview/skins/default/xui/zh/floater_inventory_view_finder.xml
linden/indra/newview/skins/default/xui/zh/floater_preferences.xml
linden/indra/newview/skins/default/xui/zh/floater_sell_land.xml
linden/indra/newview/skins/default/xui/zh/floater_settings_debug.xml
linden/indra/newview/skins/default/xui/zh/menu_pie_attachment.xml
linden/indra/newview/skins/default/xui/zh/menu_pie_avatar.xml
linden/indra/newview/skins/default/xui/zh/menu_pie_land.xml
linden/indra/newview/skins/default/xui/zh/menu_pie_object.xml
linden/indra/newview/skins/default/xui/zh/menu_pie_self.xml
linden/indra/newview/skins/default/xui/zh/menu_viewer.xml
linden/indra/newview/skins/default/xui/zh/need_to_translate.xml
linden/indra/newview/skins/default/xui/zh/panel_account_details.xml
linden/indra/newview/skins/default/xui/zh/panel_account_planning.xml
linden/indra/newview/skins/default/xui/zh/panel_account_transactions.xml
linden/indra/newview/skins/default/xui/zh/panel_avatar.xml
linden/indra/newview/skins/default/xui/zh/panel_group.xml
linden/indra/newview/skins/default/xui/zh/panel_group_finder.xml
linden/indra/newview/skins/default/xui/zh/panel_group_general.xml
linden/indra/newview/skins/default/xui/zh/panel_group_invite.xml
linden/indra/newview/skins/default/xui/zh/panel_group_land_money.xml
linden/indra/newview/skins/default/xui/zh/panel_group_notices.xml
linden/indra/newview/skins/default/xui/zh/panel_group_roles.xml
linden/indra/newview/skins/default/xui/zh/panel_group_voting.xml
linden/indra/newview/skins/default/xui/zh/panel_preferences_audio.xml
linden/indra/newview/skins/default/xui/zh/panel_preferences_chat.xml
linden/indra/newview/skins/default/xui/zh/panel_preferences_im.xml
linden/indra/newview/skins/default/xui/zh/panel_preferences_popups.xml
linden/indra/newview/skins/default/xui/zh/panel_region_covenant.xml
linden/indra/newview/skins/default/xui/zh/strings.xml
linden/indra/newview/skins/default/xui/zh/strings_long.xml
linden/indra/newview/skins/silver/xui/en-us/floater_about_land.xml
linden/indra/newview/skins/silver/xui/en-us/panel_status_bar.xml
linden/indra/newview/viewer_manifest.py
linden/indra/win_updater/updater.cpp
linden/install.xml
Diffstat (limited to 'linden/indra/newview/llfloatersnapshot.cpp')
-rw-r--r-- | linden/indra/newview/llfloatersnapshot.cpp | 281 |
1 files changed, 181 insertions, 100 deletions
diff --git a/linden/indra/newview/llfloatersnapshot.cpp b/linden/indra/newview/llfloatersnapshot.cpp index accbcb4..e07f436 100644 --- a/linden/indra/newview/llfloatersnapshot.cpp +++ b/linden/indra/newview/llfloatersnapshot.cpp | |||
@@ -4,7 +4,7 @@ | |||
4 | * | 4 | * |
5 | * $LicenseInfo:firstyear=2004&license=viewergpl$ | 5 | * $LicenseInfo:firstyear=2004&license=viewergpl$ |
6 | * | 6 | * |
7 | * Copyright (c) 2004-2008, Linden Research, Inc. | 7 | * Copyright (c) 2004-2009, Linden Research, Inc. |
8 | * | 8 | * |
9 | * Second Life Viewer Source Code | 9 | * Second Life Viewer Source Code |
10 | * The source code in this file ("Source Code") is provided by Linden Lab | 10 | * The source code in this file ("Source Code") is provided by Linden Lab |
@@ -152,7 +152,8 @@ public: | |||
152 | void resetThumbnailImage() { mThumbnailImage = NULL ; } | 152 | void resetThumbnailImage() { mThumbnailImage = NULL ; } |
153 | void drawPreviewRect(S32 offset_x, S32 offset_y) ; | 153 | void drawPreviewRect(S32 offset_x, S32 offset_y) ; |
154 | 154 | ||
155 | static void onIdle( void* snapshot_preview ); | 155 | // Returns TRUE when snapshot generated, FALSE otherwise. |
156 | static BOOL onIdle( void* snapshot_preview ); | ||
156 | 157 | ||
157 | private: | 158 | private: |
158 | LLColor4 mColor; | 159 | LLColor4 mColor; |
@@ -204,6 +205,8 @@ LLSnapshotLivePreview::LLSnapshotLivePreview (const LLRect& rect) : | |||
204 | mCurImageIndex(0), | 205 | mCurImageIndex(0), |
205 | mPreviewImage(NULL), | 206 | mPreviewImage(NULL), |
206 | mThumbnailImage(NULL) , | 207 | mThumbnailImage(NULL) , |
208 | mThumbnailWidth(0), | ||
209 | mThumbnailHeight(0), | ||
207 | mPreviewImageEncoded(NULL), | 210 | mPreviewImageEncoded(NULL), |
208 | mFormattedImage(NULL), | 211 | mFormattedImage(NULL), |
209 | mShineCountdown(0), | 212 | mShineCountdown(0), |
@@ -343,14 +346,11 @@ void LLSnapshotLivePreview::updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail | |||
343 | mSnapshotDelayTimer.start(); | 346 | mSnapshotDelayTimer.start(); |
344 | mSnapshotDelayTimer.setTimerExpirySec(delay); | 347 | mSnapshotDelayTimer.setTimerExpirySec(delay); |
345 | } | 348 | } |
346 | else if(new_thumbnail) | 349 | if(new_thumbnail) |
347 | { | 350 | { |
348 | mThumbnailUpToDate = FALSE ; | 351 | mThumbnailUpToDate = FALSE ; |
349 | } | 352 | } |
350 | else | 353 | setThumbnailImageSize(); |
351 | { | ||
352 | setThumbnailImageSize() ; | ||
353 | } | ||
354 | } | 354 | } |
355 | 355 | ||
356 | void LLSnapshotLivePreview::setSnapshotQuality(S32 quality) | 356 | void LLSnapshotLivePreview::setSnapshotQuality(S32 quality) |
@@ -418,14 +418,14 @@ void LLSnapshotLivePreview::draw() | |||
418 | 418 | ||
419 | LLColor4 image_color(1.f, 1.f, 1.f, 1.f); | 419 | LLColor4 image_color(1.f, 1.f, 1.f, 1.f); |
420 | gGL.color4fv(image_color.mV); | 420 | gGL.color4fv(image_color.mV); |
421 | LLViewerImage::bindTexture(mViewerImage[mCurImageIndex]); | 421 | gGL.getTexUnit(0)->bind(mViewerImage[mCurImageIndex]); |
422 | // calculate UV scale | 422 | // calculate UV scale |
423 | F32 uv_width = mImageScaled[mCurImageIndex] ? 1.f : llmin((F32)mWidth[mCurImageIndex] / (F32)mViewerImage[mCurImageIndex]->getWidth(), 1.f); | 423 | F32 uv_width = mImageScaled[mCurImageIndex] ? 1.f : llmin((F32)mWidth[mCurImageIndex] / (F32)mViewerImage[mCurImageIndex]->getWidth(), 1.f); |
424 | F32 uv_height = mImageScaled[mCurImageIndex] ? 1.f : llmin((F32)mHeight[mCurImageIndex] / (F32)mViewerImage[mCurImageIndex]->getHeight(), 1.f); | 424 | F32 uv_height = mImageScaled[mCurImageIndex] ? 1.f : llmin((F32)mHeight[mCurImageIndex] / (F32)mViewerImage[mCurImageIndex]->getHeight(), 1.f); |
425 | glPushMatrix(); | 425 | glPushMatrix(); |
426 | { | 426 | { |
427 | glTranslatef((F32)rect.mLeft, (F32)rect.mBottom, 0.f); | 427 | glTranslatef((F32)rect.mLeft, (F32)rect.mBottom, 0.f); |
428 | gGL.begin(LLVertexBuffer::QUADS); | 428 | gGL.begin(LLRender::QUADS); |
429 | { | 429 | { |
430 | gGL.texCoord2f(uv_width, uv_height); | 430 | gGL.texCoord2f(uv_width, uv_height); |
431 | gGL.vertex2i(rect.getWidth(), rect.getHeight() ); | 431 | gGL.vertex2i(rect.getWidth(), rect.getHeight() ); |
@@ -487,8 +487,8 @@ void LLSnapshotLivePreview::draw() | |||
487 | S32 y1 = 0; | 487 | S32 y1 = 0; |
488 | S32 y2 = gViewerWindow->getWindowHeight(); | 488 | S32 y2 = gViewerWindow->getWindowHeight(); |
489 | 489 | ||
490 | LLGLSNoTexture no_texture; | 490 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); |
491 | gGL.begin(LLVertexBuffer::QUADS); | 491 | gGL.begin(LLRender::QUADS); |
492 | { | 492 | { |
493 | gGL.color4f(1.f, 1.f, 1.f, 0.f); | 493 | gGL.color4f(1.f, 1.f, 1.f, 0.f); |
494 | gGL.vertex2i(x1, y1); | 494 | gGL.vertex2i(x1, y1); |
@@ -516,10 +516,10 @@ void LLSnapshotLivePreview::draw() | |||
516 | 516 | ||
517 | // draw framing rectangle | 517 | // draw framing rectangle |
518 | { | 518 | { |
519 | LLGLSNoTexture no_texture; | 519 | gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); |
520 | gGL.color4f(1.f, 1.f, 1.f, 1.f); | 520 | gGL.color4f(1.f, 1.f, 1.f, 1.f); |
521 | LLRect outline_rect = mImageRect[mCurImageIndex]; | 521 | LLRect outline_rect = mImageRect[mCurImageIndex]; |
522 | gGL.begin(LLVertexBuffer::QUADS); | 522 | gGL.begin(LLRender::QUADS); |
523 | { | 523 | { |
524 | gGL.vertex2i(outline_rect.mLeft - BORDER_WIDTH, outline_rect.mTop + BORDER_WIDTH); | 524 | gGL.vertex2i(outline_rect.mLeft - BORDER_WIDTH, outline_rect.mTop + BORDER_WIDTH); |
525 | gGL.vertex2i(outline_rect.mRight + BORDER_WIDTH, outline_rect.mTop + BORDER_WIDTH); | 525 | gGL.vertex2i(outline_rect.mRight + BORDER_WIDTH, outline_rect.mTop + BORDER_WIDTH); |
@@ -554,7 +554,7 @@ void LLSnapshotLivePreview::draw() | |||
554 | F32 alpha = clamp_rescale(fall_interp, 0.f, 1.f, 0.8f, 0.4f); | 554 | F32 alpha = clamp_rescale(fall_interp, 0.f, 1.f, 0.8f, 0.4f); |
555 | LLColor4 image_color(1.f, 1.f, 1.f, alpha); | 555 | LLColor4 image_color(1.f, 1.f, 1.f, alpha); |
556 | gGL.color4fv(image_color.mV); | 556 | gGL.color4fv(image_color.mV); |
557 | LLViewerImage::bindTexture(mViewerImage[old_image_index]); | 557 | gGL.getTexUnit(0)->bind(mViewerImage[old_image_index]); |
558 | // calculate UV scale | 558 | // calculate UV scale |
559 | // *FIX get this to work with old image | 559 | // *FIX get this to work with old image |
560 | BOOL rescale = !mImageScaled[old_image_index] && mViewerImage[mCurImageIndex].notNull(); | 560 | BOOL rescale = !mImageScaled[old_image_index] && mViewerImage[mCurImageIndex].notNull(); |
@@ -565,7 +565,7 @@ void LLSnapshotLivePreview::draw() | |||
565 | LLRect& rect = mImageRect[old_image_index]; | 565 | LLRect& rect = mImageRect[old_image_index]; |
566 | glTranslatef((F32)rect.mLeft, (F32)rect.mBottom - llround(getRect().getHeight() * 2.f * (fall_interp * fall_interp)), 0.f); | 566 | glTranslatef((F32)rect.mLeft, (F32)rect.mBottom - llround(getRect().getHeight() * 2.f * (fall_interp * fall_interp)), 0.f); |
567 | glRotatef(-45.f * fall_interp, 0.f, 0.f, 1.f); | 567 | glRotatef(-45.f * fall_interp, 0.f, 0.f, 1.f); |
568 | gGL.begin(LLVertexBuffer::QUADS); | 568 | gGL.begin(LLRender::QUADS); |
569 | { | 569 | { |
570 | gGL.texCoord2f(uv_width, uv_height); | 570 | gGL.texCoord2f(uv_width, uv_height); |
571 | gGL.vertex2i(rect.getWidth(), rect.getHeight() ); | 571 | gGL.vertex2i(rect.getWidth(), rect.getHeight() ); |
@@ -720,8 +720,11 @@ void LLSnapshotLivePreview::generateThumbnailImage(BOOL force_update) | |||
720 | mThumbnailUpdateLock = FALSE ; | 720 | mThumbnailUpdateLock = FALSE ; |
721 | } | 721 | } |
722 | 722 | ||
723 | |||
724 | // Called often. Checks whether it's time to grab a new snapshot and if so, does it. | ||
725 | // Returns TRUE if new snapshot generated, FALSE otherwise. | ||
723 | //static | 726 | //static |
724 | void LLSnapshotLivePreview::onIdle( void* snapshot_preview ) | 727 | BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview ) |
725 | { | 728 | { |
726 | LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)snapshot_preview; | 729 | LLSnapshotLivePreview* previewp = (LLSnapshotLivePreview*)snapshot_preview; |
727 | 730 | ||
@@ -734,7 +737,10 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview ) | |||
734 | previewp->mCameraRot = new_camera_rot; | 737 | previewp->mCameraRot = new_camera_rot; |
735 | // request a new snapshot whenever the camera moves, with a time delay | 738 | // request a new snapshot whenever the camera moves, with a time delay |
736 | BOOL autosnap = gSavedSettings.getBOOL("AutoSnapshot"); | 739 | BOOL autosnap = gSavedSettings.getBOOL("AutoSnapshot"); |
737 | previewp->updateSnapshot(autosnap, FALSE, autosnap ? AUTO_SNAPSHOT_TIME_DELAY : 0.f); | 740 | previewp->updateSnapshot( |
741 | autosnap, // whether a new snapshot is needed or merely invalidate the existing one | ||
742 | FALSE, // or if 1st arg is false, whether to produce a new thumbnail image. | ||
743 | autosnap ? AUTO_SNAPSHOT_TIME_DELAY : 0.f); // shutter delay if 1st arg is true. | ||
738 | } | 744 | } |
739 | 745 | ||
740 | // see if it's time yet to snap the shot and bomb out otherwise. | 746 | // see if it's time yet to snap the shot and bomb out otherwise. |
@@ -743,7 +749,7 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview ) | |||
743 | && !LLToolCamera::getInstance()->hasMouseCapture(); // don't take snapshots while ALT-zoom active | 749 | && !LLToolCamera::getInstance()->hasMouseCapture(); // don't take snapshots while ALT-zoom active |
744 | if ( ! previewp->mSnapshotActive) | 750 | if ( ! previewp->mSnapshotActive) |
745 | { | 751 | { |
746 | return; | 752 | return FALSE; |
747 | } | 753 | } |
748 | 754 | ||
749 | // time to produce a snapshot | 755 | // time to produce a snapshot |
@@ -835,6 +841,7 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview ) | |||
835 | } | 841 | } |
836 | if (previewp->mFormattedImage->encode(previewp->mPreviewImage, 0)) | 842 | if (previewp->mFormattedImage->encode(previewp->mPreviewImage, 0)) |
837 | { | 843 | { |
844 | previewp->mDataSize = previewp->mFormattedImage->getDataSize(); | ||
838 | // special case BMP to copy instead of decode otherwise decode will crash. | 845 | // special case BMP to copy instead of decode otherwise decode will crash. |
839 | if(format == LLFloaterSnapshot::SNAPSHOT_FORMAT_BMP) | 846 | if(format == LLFloaterSnapshot::SNAPSHOT_FORMAT_BMP) |
840 | { | 847 | { |
@@ -842,7 +849,6 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview ) | |||
842 | } | 849 | } |
843 | else | 850 | else |
844 | { | 851 | { |
845 | previewp->mDataSize = previewp->mFormattedImage->getDataSize(); | ||
846 | previewp->mFormattedImage->decode(previewp->mPreviewImageEncoded, 0); | 852 | previewp->mFormattedImage->decode(previewp->mPreviewImageEncoded, 0); |
847 | } | 853 | } |
848 | } | 854 | } |
@@ -871,7 +877,7 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview ) | |||
871 | 877 | ||
872 | previewp->mViewerImage[previewp->mCurImageIndex] = new LLImageGL(scaled, FALSE); | 878 | previewp->mViewerImage[previewp->mCurImageIndex] = new LLImageGL(scaled, FALSE); |
873 | previewp->mViewerImage[previewp->mCurImageIndex]->setMipFilterNearest(previewp->getSnapshotType() != SNAPSHOT_TEXTURE); | 879 | previewp->mViewerImage[previewp->mCurImageIndex]->setMipFilterNearest(previewp->getSnapshotType() != SNAPSHOT_TEXTURE); |
874 | LLViewerImage::bindTexture(previewp->mViewerImage[previewp->mCurImageIndex]); | 880 | gGL.getTexUnit(0)->bind(previewp->mViewerImage[previewp->mCurImageIndex]); |
875 | previewp->mViewerImage[previewp->mCurImageIndex]->setClamp(TRUE, TRUE); | 881 | previewp->mViewerImage[previewp->mCurImageIndex]->setClamp(TRUE, TRUE); |
876 | 882 | ||
877 | previewp->mSnapshotUpToDate = TRUE; | 883 | previewp->mSnapshotUpToDate = TRUE; |
@@ -891,6 +897,8 @@ void LLSnapshotLivePreview::onIdle( void* snapshot_preview ) | |||
891 | previewp->generateThumbnailImage() ; | 897 | previewp->generateThumbnailImage() ; |
892 | } | 898 | } |
893 | } | 899 | } |
900 | |||
901 | return TRUE; | ||
894 | } | 902 | } |
895 | 903 | ||
896 | void LLSnapshotLivePreview::setSize(S32 w, S32 h) | 904 | void LLSnapshotLivePreview::setSize(S32 w, S32 h) |
@@ -907,6 +915,13 @@ void LLSnapshotLivePreview::getSize(S32& w, S32& h) const | |||
907 | 915 | ||
908 | LLFloaterPostcard* LLSnapshotLivePreview::savePostcard() | 916 | LLFloaterPostcard* LLSnapshotLivePreview::savePostcard() |
909 | { | 917 | { |
918 | if(mViewerImage[mCurImageIndex].isNull()) | ||
919 | { | ||
920 | //this should never happen!! | ||
921 | llwarns << "The snapshot image has not been generated!" << llendl ; | ||
922 | return NULL ; | ||
923 | } | ||
924 | |||
910 | // calculate and pass in image scale in case image data only use portion | 925 | // calculate and pass in image scale in case image data only use portion |
911 | // of viewerimage buffer | 926 | // of viewerimage buffer |
912 | LLVector2 image_scale(1.f, 1.f); | 927 | LLVector2 image_scale(1.f, 1.f); |
@@ -922,9 +937,10 @@ LLFloaterPostcard* LLSnapshotLivePreview::savePostcard() | |||
922 | return NULL; | 937 | return NULL; |
923 | } | 938 | } |
924 | LLFloaterPostcard* floater = LLFloaterPostcard::showFromSnapshot(jpg, mViewerImage[mCurImageIndex], image_scale, mPosTakenGlobal); | 939 | LLFloaterPostcard* floater = LLFloaterPostcard::showFromSnapshot(jpg, mViewerImage[mCurImageIndex], image_scale, mPosTakenGlobal); |
925 | // relinquish lifetime of viewerimage and jpeg image to postcard floater | 940 | // relinquish lifetime of jpeg image to postcard floater |
926 | mViewerImage[mCurImageIndex] = NULL; | ||
927 | mFormattedImage = NULL; | 941 | mFormattedImage = NULL; |
942 | mDataSize = 0; | ||
943 | updateSnapshot(FALSE, FALSE); | ||
928 | 944 | ||
929 | return floater; | 945 | return floater; |
930 | } | 946 | } |
@@ -968,12 +984,20 @@ void LLSnapshotLivePreview::saveTexture() | |||
968 | llwarns << "Error encoding snapshot" << llendl; | 984 | llwarns << "Error encoding snapshot" << llendl; |
969 | } | 985 | } |
970 | 986 | ||
971 | LLViewerStats::getInstance()->incStat(LLViewerStats::ST_SNAPSHOT_COUNT ); | 987 | LLViewerStats::getInstance()->incStat(LLViewerStats::ST_SNAPSHOT_COUNT ); |
988 | |||
989 | mDataSize = 0; | ||
972 | } | 990 | } |
973 | 991 | ||
974 | BOOL LLSnapshotLivePreview::saveLocal() | 992 | BOOL LLSnapshotLivePreview::saveLocal() |
975 | { | 993 | { |
976 | BOOL success = gViewerWindow->saveImageNumbered(mFormattedImage); | 994 | BOOL success = gViewerWindow->saveImageNumbered(mFormattedImage); |
995 | |||
996 | // Relinquish image memory. Save button will be disabled as a side-effect. | ||
997 | mFormattedImage = NULL; | ||
998 | mDataSize = 0; | ||
999 | updateSnapshot(FALSE, FALSE); | ||
1000 | |||
977 | if(success) | 1001 | if(success) |
978 | { | 1002 | { |
979 | gViewerWindow->playSnapshotAnimAndSound(); | 1003 | gViewerWindow->playSnapshotAnimAndSound(); |
@@ -1013,7 +1037,8 @@ public: | |||
1013 | static void onClickKeepOpenCheck(LLUICtrl *ctrl, void* data); | 1037 | static void onClickKeepOpenCheck(LLUICtrl *ctrl, void* data); |
1014 | static void onClickKeepAspectCheck(LLUICtrl *ctrl, void* data); | 1038 | static void onClickKeepAspectCheck(LLUICtrl *ctrl, void* data); |
1015 | static void onCommitQuality(LLUICtrl* ctrl, void* data); | 1039 | static void onCommitQuality(LLUICtrl* ctrl, void* data); |
1016 | static void onCommitResolution(LLUICtrl* ctrl, void* data); | 1040 | static void onCommitResolution(LLUICtrl* ctrl, void* data) { updateResolution(ctrl, data); } |
1041 | static void updateResolution(LLUICtrl* ctrl, void* data, BOOL do_update = TRUE); | ||
1017 | static void onCommitFreezeFrame(LLUICtrl* ctrl, void* data); | 1042 | static void onCommitFreezeFrame(LLUICtrl* ctrl, void* data); |
1018 | static void onCommitLayerTypes(LLUICtrl* ctrl, void*data); | 1043 | static void onCommitLayerTypes(LLUICtrl* ctrl, void*data); |
1019 | static void onCommitSnapshotType(LLUICtrl* ctrl, void* data); | 1044 | static void onCommitSnapshotType(LLUICtrl* ctrl, void* data); |
@@ -1112,11 +1137,8 @@ LLViewerWindow::ESnapshotType LLFloaterSnapshot::Impl::getLayerType(LLFloaterSna | |||
1112 | void LLFloaterSnapshot::Impl::setResolution(LLFloaterSnapshot* floater, const std::string& comboname) | 1137 | void LLFloaterSnapshot::Impl::setResolution(LLFloaterSnapshot* floater, const std::string& comboname) |
1113 | { | 1138 | { |
1114 | LLComboBox* combo = floater->getChild<LLComboBox>(comboname); | 1139 | LLComboBox* combo = floater->getChild<LLComboBox>(comboname); |
1115 | if (combo) | ||
1116 | { | ||
1117 | combo->setVisible(TRUE); | 1140 | combo->setVisible(TRUE); |
1118 | onCommitResolution(combo, floater); | 1141 | updateResolution(combo, floater, FALSE); // to sync spinners with combo |
1119 | } | ||
1120 | } | 1142 | } |
1121 | 1143 | ||
1122 | //static | 1144 | //static |
@@ -1126,22 +1148,18 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp) | |||
1126 | 1148 | ||
1127 | S32 delta_height = gSavedSettings.getBOOL("AdvanceSnapshot") ? 0 : floaterp->getUIWinHeightShort() - floaterp->getUIWinHeightLong() ; | 1149 | S32 delta_height = gSavedSettings.getBOOL("AdvanceSnapshot") ? 0 : floaterp->getUIWinHeightShort() - floaterp->getUIWinHeightLong() ; |
1128 | 1150 | ||
1129 | LLComboBox* combo; | ||
1130 | if(!gSavedSettings.getBOOL("AdvanceSnapshot")) //set to original window resolution | 1151 | if(!gSavedSettings.getBOOL("AdvanceSnapshot")) //set to original window resolution |
1131 | { | 1152 | { |
1132 | previewp->mKeepAspectRatio = TRUE ; | 1153 | previewp->mKeepAspectRatio = TRUE; |
1133 | 1154 | ||
1134 | combo = floaterp->getChild<LLComboBox>("postcard_size_combo"); | 1155 | floaterp->getChild<LLComboBox>("postcard_size_combo")->setCurrentByIndex(0); |
1135 | combo->setCurrentByIndex(0) ; | 1156 | gSavedSettings.setS32("SnapshotPostcardLastResolution", 0); |
1136 | gSavedSettings.setS32("SnapshotPostcardLastResolution", 0) ; | ||
1137 | 1157 | ||
1138 | combo = floaterp->getChild<LLComboBox>("texture_size_combo"); | 1158 | floaterp->getChild<LLComboBox>("texture_size_combo")->setCurrentByIndex(0); |
1139 | combo->setCurrentByIndex(0) ; | 1159 | gSavedSettings.setS32("SnapshotTextureLastResolution", 0); |
1140 | gSavedSettings.setS32("SnapshotTextureLastResolution", 0) ; | ||
1141 | 1160 | ||
1142 | combo = floaterp->getChild<LLComboBox>("local_size_combo"); | 1161 | floaterp->getChild<LLComboBox>("local_size_combo")->setCurrentByIndex(0); |
1143 | combo->setCurrentByIndex(0) ; | 1162 | gSavedSettings.setS32("SnapshotLocalLastResolution", 0); |
1144 | gSavedSettings.setS32("SnapshotLocalLastResolution", 0) ; | ||
1145 | 1163 | ||
1146 | LLSnapshotLivePreview* previewp = getPreviewView(floaterp); | 1164 | LLSnapshotLivePreview* previewp = getPreviewView(floaterp); |
1147 | previewp->setSize(gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight()); | 1165 | previewp->setSize(gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight()); |
@@ -1206,7 +1224,11 @@ void LLFloaterSnapshot::Impl::updateLayout(LLFloaterSnapshot* floaterp) | |||
1206 | } | 1224 | } |
1207 | } | 1225 | } |
1208 | 1226 | ||
1209 | 1227 | // This is the main function that keeps all the GUI controls in sync with the saved settings. | |
1228 | // It should be called anytime a setting is changed that could affect the controls. | ||
1229 | // No other methods should be changing any of the controls directly except for helpers called by this method. | ||
1230 | // The basic pattern for programmatically changing the GUI settings is to first set the | ||
1231 | // appropriate saved settings and then call this method to sync the GUI with them. | ||
1210 | // static | 1232 | // static |
1211 | void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) | 1233 | void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) |
1212 | { | 1234 | { |
@@ -1220,15 +1242,10 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) | |||
1220 | floater->childSetVisible("texture_size_combo", FALSE); | 1242 | floater->childSetVisible("texture_size_combo", FALSE); |
1221 | floater->childSetVisible("local_size_combo", FALSE); | 1243 | floater->childSetVisible("local_size_combo", FALSE); |
1222 | 1244 | ||
1223 | LLComboBox* combo; | 1245 | floater->getChild<LLComboBox>("postcard_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotPostcardLastResolution")); |
1224 | combo = floater->getChild<LLComboBox>("postcard_size_combo"); | 1246 | floater->getChild<LLComboBox>("texture_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotTextureLastResolution")); |
1225 | if (combo) combo->selectNthItem(gSavedSettings.getS32("SnapshotPostcardLastResolution")); | 1247 | floater->getChild<LLComboBox>("local_size_combo")->selectNthItem(gSavedSettings.getS32("SnapshotLocalLastResolution")); |
1226 | combo = floater->getChild<LLComboBox>("texture_size_combo"); | 1248 | floater->getChild<LLComboBox>("local_format_combo")->selectNthItem(gSavedSettings.getS32("SnapshotFormat")); |
1227 | if (combo) combo->selectNthItem(gSavedSettings.getS32("SnapshotTextureLastResolution")); | ||
1228 | combo = floater->getChild<LLComboBox>("local_size_combo"); | ||
1229 | if (combo) combo->selectNthItem(gSavedSettings.getS32("SnapshotLocalLastResolution")); | ||
1230 | combo = floater->getChild<LLComboBox>("local_format_combo"); | ||
1231 | if (combo) combo->selectNthItem(gSavedSettings.getS32("SnapshotFormat")); | ||
1232 | 1249 | ||
1233 | floater->childSetVisible("upload_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE); | 1250 | floater->childSetVisible("upload_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE); |
1234 | floater->childSetVisible("send_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD); | 1251 | floater->childSetVisible("send_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD); |
@@ -1260,6 +1277,23 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) | |||
1260 | floater->childSetVisible("auto_snapshot_check", is_advance); | 1277 | floater->childSetVisible("auto_snapshot_check", is_advance); |
1261 | floater->childSetVisible("image_quality_slider", is_advance && show_slider); | 1278 | floater->childSetVisible("image_quality_slider", is_advance && show_slider); |
1262 | 1279 | ||
1280 | LLSnapshotLivePreview* previewp = getPreviewView(floater); | ||
1281 | BOOL got_bytes = previewp && previewp->getDataSize() > 0; | ||
1282 | BOOL got_snap = previewp->getSnapshotUpToDate(); | ||
1283 | |||
1284 | floater->childSetEnabled("send_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD && got_snap && previewp->getDataSize() <= MAX_POSTCARD_DATASIZE); | ||
1285 | floater->childSetEnabled("upload_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_TEXTURE && got_snap); | ||
1286 | floater->childSetEnabled("save_btn", shot_type == LLSnapshotLivePreview::SNAPSHOT_LOCAL && got_snap); | ||
1287 | |||
1288 | LLLocale locale(LLLocale::USER_LOCALE); | ||
1289 | std::string bytes_string; | ||
1290 | LLResMgr::getInstance()->getIntegerString(bytes_string, (previewp->getDataSize()) >> 10 ); | ||
1291 | floater->childSetTextArg("file_size_label", "[SIZE]", got_snap ? bytes_string : floater->getString("unknown")); | ||
1292 | floater->childSetColor("file_size_label", | ||
1293 | shot_type == LLSnapshotLivePreview::SNAPSHOT_POSTCARD | ||
1294 | && got_bytes | ||
1295 | && previewp->getDataSize() > MAX_POSTCARD_DATASIZE ? LLColor4::red : gColors.getColor( "LabelTextColor" )); | ||
1296 | |||
1263 | switch(shot_type) | 1297 | switch(shot_type) |
1264 | { | 1298 | { |
1265 | case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: | 1299 | case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: |
@@ -1290,7 +1324,6 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater) | |||
1290 | 1324 | ||
1291 | updateResolutionTextEntry(floater); | 1325 | updateResolutionTextEntry(floater); |
1292 | 1326 | ||
1293 | LLSnapshotLivePreview* previewp = getPreviewView(floater); | ||
1294 | if (previewp) | 1327 | if (previewp) |
1295 | { | 1328 | { |
1296 | previewp->setSnapshotType(shot_type); | 1329 | previewp->setSnapshotType(shot_type); |
@@ -1385,6 +1418,8 @@ void LLFloaterSnapshot::Impl::onClickKeep(void* data) | |||
1385 | { | 1418 | { |
1386 | checkAutoSnapshot(previewp); | 1419 | checkAutoSnapshot(previewp); |
1387 | } | 1420 | } |
1421 | |||
1422 | updateControls(view); | ||
1388 | } | 1423 | } |
1389 | } | 1424 | } |
1390 | 1425 | ||
@@ -1409,6 +1444,7 @@ void LLFloaterSnapshot::Impl::onClickAutoSnap(LLUICtrl *ctrl, void* data) | |||
1409 | if (view) | 1444 | if (view) |
1410 | { | 1445 | { |
1411 | checkAutoSnapshot(getPreviewView(view)); | 1446 | checkAutoSnapshot(getPreviewView(view)); |
1447 | updateControls(view); | ||
1412 | } | 1448 | } |
1413 | } | 1449 | } |
1414 | 1450 | ||
@@ -1421,9 +1457,12 @@ void LLFloaterSnapshot::Impl::onClickMore(void* data) | |||
1421 | { | 1457 | { |
1422 | view->translate( 0, view->getUIWinHeightShort() - view->getUIWinHeightLong() ); | 1458 | view->translate( 0, view->getUIWinHeightShort() - view->getUIWinHeightLong() ); |
1423 | view->reshape(view->getRect().getWidth(), view->getUIWinHeightLong()); | 1459 | view->reshape(view->getRect().getWidth(), view->getUIWinHeightLong()); |
1424 | |||
1425 | updateControls(view) ; | 1460 | updateControls(view) ; |
1426 | updateLayout(view) ; | 1461 | updateLayout(view) ; |
1462 | if(getPreviewView(view)) | ||
1463 | { | ||
1464 | getPreviewView(view)->setThumbnailImageSize() ; | ||
1465 | } | ||
1427 | } | 1466 | } |
1428 | } | 1467 | } |
1429 | void LLFloaterSnapshot::Impl::onClickLess(void* data) | 1468 | void LLFloaterSnapshot::Impl::onClickLess(void* data) |
@@ -1435,10 +1474,8 @@ void LLFloaterSnapshot::Impl::onClickLess(void* data) | |||
1435 | { | 1474 | { |
1436 | view->translate( 0, view->getUIWinHeightLong() - view->getUIWinHeightShort() ); | 1475 | view->translate( 0, view->getUIWinHeightLong() - view->getUIWinHeightShort() ); |
1437 | view->reshape(view->getRect().getWidth(), view->getUIWinHeightShort()); | 1476 | view->reshape(view->getRect().getWidth(), view->getUIWinHeightShort()); |
1438 | |||
1439 | updateControls(view) ; | 1477 | updateControls(view) ; |
1440 | updateLayout(view) ; | 1478 | updateLayout(view) ; |
1441 | |||
1442 | if(getPreviewView(view)) | 1479 | if(getPreviewView(view)) |
1443 | { | 1480 | { |
1444 | getPreviewView(view)->setThumbnailImageSize() ; | 1481 | getPreviewView(view)->setThumbnailImageSize() ; |
@@ -1478,6 +1515,7 @@ void LLFloaterSnapshot::Impl::onClickHighResCheck(LLUICtrl *ctrl, void* data) | |||
1478 | } | 1515 | } |
1479 | view->childSetEnabled("ui_check", !check->get()); | 1516 | view->childSetEnabled("ui_check", !check->get()); |
1480 | checkAutoSnapshot(getPreviewView(view), TRUE); | 1517 | checkAutoSnapshot(getPreviewView(view), TRUE); |
1518 | updateControls(view); | ||
1481 | } | 1519 | } |
1482 | } | 1520 | } |
1483 | 1521 | ||
@@ -1491,6 +1529,7 @@ void LLFloaterSnapshot::Impl::onClickHUDCheck(LLUICtrl *ctrl, void* data) | |||
1491 | if (view) | 1529 | if (view) |
1492 | { | 1530 | { |
1493 | checkAutoSnapshot(getPreviewView(view), TRUE); | 1531 | checkAutoSnapshot(getPreviewView(view), TRUE); |
1532 | updateControls(view); | ||
1494 | } | 1533 | } |
1495 | } | 1534 | } |
1496 | 1535 | ||
@@ -1524,6 +1563,7 @@ void LLFloaterSnapshot::Impl::onClickKeepAspectCheck(LLUICtrl* ctrl, void* data) | |||
1524 | } | 1563 | } |
1525 | 1564 | ||
1526 | previewp->setSize(w, h) ; | 1565 | previewp->setSize(w, h) ; |
1566 | previewp->updateSnapshot(FALSE, TRUE); | ||
1527 | checkAutoSnapshot(previewp, TRUE); | 1567 | checkAutoSnapshot(previewp, TRUE); |
1528 | } | 1568 | } |
1529 | } | 1569 | } |
@@ -1573,7 +1613,7 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde | |||
1573 | } | 1613 | } |
1574 | #endif | 1614 | #endif |
1575 | 1615 | ||
1576 | if(!index) //current window size | 1616 | if(0 == index) //current window size |
1577 | { | 1617 | { |
1578 | sAspectRatioCheckOff = TRUE ; | 1618 | sAspectRatioCheckOff = TRUE ; |
1579 | view->childSetEnabled("keep_aspect_check", FALSE) ; | 1619 | view->childSetEnabled("keep_aspect_check", FALSE) ; |
@@ -1610,8 +1650,27 @@ void LLFloaterSnapshot::Impl::checkAspectRatio(LLFloaterSnapshot *view, S32 inde | |||
1610 | return ; | 1650 | return ; |
1611 | } | 1651 | } |
1612 | 1652 | ||
1653 | static std::string lastSnapshotWidthName() | ||
1654 | { | ||
1655 | switch(gSavedSettings.getS32("LastSnapshotType")) | ||
1656 | { | ||
1657 | case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: return "LastSnapshotToEmailWidth"; | ||
1658 | case LLSnapshotLivePreview::SNAPSHOT_TEXTURE: return "LastSnapshotToInventoryWidth"; | ||
1659 | default: return "LastSnapshotToDiskWidth"; | ||
1660 | } | ||
1661 | } | ||
1662 | static std::string lastSnapshotHeightName() | ||
1663 | { | ||
1664 | switch(gSavedSettings.getS32("LastSnapshotType")) | ||
1665 | { | ||
1666 | case LLSnapshotLivePreview::SNAPSHOT_POSTCARD: return "LastSnapshotToEmailHeight"; | ||
1667 | case LLSnapshotLivePreview::SNAPSHOT_TEXTURE: return "LastSnapshotToInventoryHeight"; | ||
1668 | default: return "LastSnapshotToDiskHeight"; | ||
1669 | } | ||
1670 | } | ||
1671 | |||
1613 | // static | 1672 | // static |
1614 | void LLFloaterSnapshot::Impl::onCommitResolution(LLUICtrl* ctrl, void* data) | 1673 | void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL do_update) |
1615 | { | 1674 | { |
1616 | LLComboBox* combobox = (LLComboBox*)ctrl; | 1675 | LLComboBox* combobox = (LLComboBox*)ctrl; |
1617 | LLFloaterSnapshot *view = (LLFloaterSnapshot *)data; | 1676 | LLFloaterSnapshot *view = (LLFloaterSnapshot *)data; |
@@ -1622,13 +1681,9 @@ void LLFloaterSnapshot::Impl::onCommitResolution(LLUICtrl* ctrl, void* data) | |||
1622 | } | 1681 | } |
1623 | 1682 | ||
1624 | // save off all selected resolution values | 1683 | // save off all selected resolution values |
1625 | LLComboBox* combo; | 1684 | gSavedSettings.setS32("SnapshotPostcardLastResolution", view->getChild<LLComboBox>("postcard_size_combo")->getCurrentIndex()); |
1626 | combo = view->getChild<LLComboBox>("postcard_size_combo"); | 1685 | gSavedSettings.setS32("SnapshotTextureLastResolution", view->getChild<LLComboBox>("texture_size_combo")->getCurrentIndex()); |
1627 | gSavedSettings.setS32("SnapshotPostcardLastResolution", combo->getCurrentIndex()); | 1686 | gSavedSettings.setS32("SnapshotLocalLastResolution", view->getChild<LLComboBox>("local_size_combo")->getCurrentIndex()); |
1628 | combo = view->getChild<LLComboBox>("texture_size_combo"); | ||
1629 | gSavedSettings.setS32("SnapshotTextureLastResolution", combo->getCurrentIndex()); | ||
1630 | combo = view->getChild<LLComboBox>("local_size_combo"); | ||
1631 | gSavedSettings.setS32("SnapshotLocalLastResolution", combo->getCurrentIndex()); | ||
1632 | 1687 | ||
1633 | std::string sdstring = combobox->getSelectedValue(); | 1688 | std::string sdstring = combobox->getSelectedValue(); |
1634 | LLSD sdres; | 1689 | LLSD sdres; |
@@ -1641,17 +1696,22 @@ void LLFloaterSnapshot::Impl::onCommitResolution(LLUICtrl* ctrl, void* data) | |||
1641 | LLSnapshotLivePreview* previewp = getPreviewView(view); | 1696 | LLSnapshotLivePreview* previewp = getPreviewView(view); |
1642 | if (previewp && combobox->getCurrentIndex() >= 0) | 1697 | if (previewp && combobox->getCurrentIndex() >= 0) |
1643 | { | 1698 | { |
1699 | S32 original_width = 0 , original_height = 0 ; | ||
1700 | previewp->getSize(original_width, original_height) ; | ||
1701 | |||
1644 | if (width == 0 || height == 0) | 1702 | if (width == 0 || height == 0) |
1645 | { | 1703 | { |
1704 | // take resolution from current window size | ||
1646 | previewp->setSize(gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight()); | 1705 | previewp->setSize(gViewerWindow->getWindowDisplayWidth(), gViewerWindow->getWindowDisplayHeight()); |
1647 | } | 1706 | } |
1648 | else if (width == -1 || height == -1) | 1707 | else if (width == -1 || height == -1) |
1649 | { | 1708 | { |
1650 | // load last custom value | 1709 | // load last custom value |
1651 | previewp->setSize(gSavedSettings.getS32("LastSnapshotWidth"), gSavedSettings.getS32("LastSnapshotHeight")); | 1710 | previewp->setSize(gSavedSettings.getS32(lastSnapshotWidthName()), gSavedSettings.getS32(lastSnapshotHeightName())); |
1652 | } | 1711 | } |
1653 | else | 1712 | else |
1654 | { | 1713 | { |
1714 | // use the resolution from the selected pre-canned drop-down choice | ||
1655 | previewp->setSize(width, height); | 1715 | previewp->setSize(width, height); |
1656 | } | 1716 | } |
1657 | 1717 | ||
@@ -1663,12 +1723,25 @@ void LLFloaterSnapshot::Impl::onCommitResolution(LLUICtrl* ctrl, void* data) | |||
1663 | { | 1723 | { |
1664 | resetSnapshotSizeOnUI(view, width, height) ; | 1724 | resetSnapshotSizeOnUI(view, width, height) ; |
1665 | } | 1725 | } |
1666 | previewp->setSize(width, height); | 1726 | |
1727 | if(view->childGetValue("snapshot_width").asInteger() != width || view->childGetValue("snapshot_height").asInteger() != height) | ||
1728 | { | ||
1729 | view->childSetValue("snapshot_width", width); | ||
1730 | view->childSetValue("snapshot_height", height); | ||
1731 | } | ||
1732 | |||
1733 | if(original_width != width || original_height != height) | ||
1734 | { | ||
1735 | previewp->setSize(width, height); | ||
1667 | 1736 | ||
1668 | view->childSetValue("snapshot_width", width); | 1737 | // hide old preview as the aspect ratio could be wrong |
1669 | view->childSetValue("snapshot_height", height); | 1738 | checkAutoSnapshot(previewp, FALSE); |
1670 | // hide old preview as the aspect ratio could be wrong | 1739 | getPreviewView(view)->updateSnapshot(FALSE, TRUE); |
1671 | checkAutoSnapshot(previewp, FALSE); | 1740 | if(do_update) |
1741 | { | ||
1742 | updateControls(view); | ||
1743 | } | ||
1744 | } | ||
1672 | } | 1745 | } |
1673 | } | 1746 | } |
1674 | 1747 | ||
@@ -1717,17 +1790,28 @@ void LLFloaterSnapshot::Impl::onCommitSnapshotFormat(LLUICtrl* ctrl, void* data) | |||
1717 | 1790 | ||
1718 | 1791 | ||
1719 | 1792 | ||
1720 | 1793 | // Sets the named size combo to "custom" mode. | |
1721 | // static | 1794 | // static |
1722 | void LLFloaterSnapshot::Impl::comboSetCustom(LLFloaterSnapshot* floater, const std::string& comboname) | 1795 | void LLFloaterSnapshot::Impl::comboSetCustom(LLFloaterSnapshot* floater, const std::string& comboname) |
1723 | { | 1796 | { |
1724 | LLComboBox* combo = floater->getChild<LLComboBox>(comboname); | 1797 | LLComboBox* combo = floater->getChild<LLComboBox>(comboname); |
1725 | if (combo) | ||
1726 | { | ||
1727 | combo->setCurrentByIndex(combo->getItemCount() - 1); | ||
1728 | 1798 | ||
1729 | checkAspectRatio(floater, -1);//combo->getCurrentIndex()) ; | 1799 | combo->setCurrentByIndex(combo->getItemCount() - 1); // "custom" is always the last index |
1800 | |||
1801 | if(comboname == "postcard_size_combo") | ||
1802 | { | ||
1803 | gSavedSettings.setS32("SnapshotPostcardLastResolution", combo->getCurrentIndex()); | ||
1730 | } | 1804 | } |
1805 | else if(comboname == "texture_size_combo") | ||
1806 | { | ||
1807 | gSavedSettings.setS32("SnapshotTextureLastResolution", combo->getCurrentIndex()); | ||
1808 | } | ||
1809 | else if(comboname == "local_size_combo") | ||
1810 | { | ||
1811 | gSavedSettings.setS32("SnapshotLocalLastResolution", combo->getCurrentIndex()); | ||
1812 | } | ||
1813 | |||
1814 | checkAspectRatio(floater, -1); // -1 means custom | ||
1731 | } | 1815 | } |
1732 | 1816 | ||
1733 | 1817 | ||
@@ -1753,8 +1837,8 @@ BOOL LLFloaterSnapshot::Impl::checkImageSize(LLSnapshotLivePreview* previewp, S3 | |||
1753 | 1837 | ||
1754 | //round to nearest power of 2 based on the direction of movement | 1838 | //round to nearest power of 2 based on the direction of movement |
1755 | // i.e. higher power of two if increasing texture resolution | 1839 | // i.e. higher power of two if increasing texture resolution |
1756 | if(gSavedSettings.getS32("LastSnapshotWidth") < width || | 1840 | if(gSavedSettings.getS32("LastSnapshotToInventoryWidth") < width || |
1757 | gSavedSettings.getS32("LastSnapshotHeight") < height) | 1841 | gSavedSettings.getS32("LastSnapshotToInventoryHeight") < height) |
1758 | { | 1842 | { |
1759 | // Up arrow pressed | 1843 | // Up arrow pressed |
1760 | width = get_next_power_two(width, MAX_TEXTURE_SIZE) ; | 1844 | width = get_next_power_two(width, MAX_TEXTURE_SIZE) ; |
@@ -1814,20 +1898,10 @@ BOOL LLFloaterSnapshot::Impl::checkImageSize(LLSnapshotLivePreview* previewp, S3 | |||
1814 | //static | 1898 | //static |
1815 | void LLFloaterSnapshot::Impl::resetSnapshotSizeOnUI(LLFloaterSnapshot *view, S32 width, S32 height) | 1899 | void LLFloaterSnapshot::Impl::resetSnapshotSizeOnUI(LLFloaterSnapshot *view, S32 width, S32 height) |
1816 | { | 1900 | { |
1817 | LLSpinCtrl *sctrl = view->getChild<LLSpinCtrl>("snapshot_width") ; | 1901 | view->getChild<LLSpinCtrl>("snapshot_width")->forceSetValue(width); |
1818 | if(sctrl) | 1902 | view->getChild<LLSpinCtrl>("snapshot_height")->forceSetValue(height); |
1819 | { | 1903 | gSavedSettings.setS32(lastSnapshotWidthName(), width); |
1820 | sctrl->forceSetValue(width) ; | 1904 | gSavedSettings.setS32(lastSnapshotHeightName(), height); |
1821 | } | ||
1822 | |||
1823 | sctrl = view->getChild<LLSpinCtrl>("snapshot_height") ; | ||
1824 | if(sctrl) | ||
1825 | { | ||
1826 | sctrl->forceSetValue(height) ; | ||
1827 | } | ||
1828 | |||
1829 | gSavedSettings.setS32("LastSnapshotWidth", width); | ||
1830 | gSavedSettings.setS32("LastSnapshotHeight", height); | ||
1831 | } | 1905 | } |
1832 | 1906 | ||
1833 | //static | 1907 | //static |
@@ -1881,15 +1955,17 @@ void LLFloaterSnapshot::Impl::onCommitCustomResolution(LLUICtrl *ctrl, void* dat | |||
1881 | 1955 | ||
1882 | previewp->setSize(w,h); | 1956 | previewp->setSize(w,h); |
1883 | checkAutoSnapshot(previewp, FALSE); | 1957 | checkAutoSnapshot(previewp, FALSE); |
1958 | previewp->updateSnapshot(FALSE, TRUE); | ||
1884 | comboSetCustom(view, "postcard_size_combo"); | 1959 | comboSetCustom(view, "postcard_size_combo"); |
1885 | comboSetCustom(view, "texture_size_combo"); | 1960 | comboSetCustom(view, "texture_size_combo"); |
1886 | comboSetCustom(view, "local_size_combo"); | 1961 | comboSetCustom(view, "local_size_combo"); |
1887 | } | 1962 | } |
1888 | } | 1963 | } |
1889 | 1964 | ||
1890 | gSavedSettings.setS32("LastSnapshotWidth", w); | 1965 | gSavedSettings.setS32(lastSnapshotWidthName(), w); |
1891 | gSavedSettings.setS32("LastSnapshotHeight", h); | 1966 | gSavedSettings.setS32(lastSnapshotHeightName(), h); |
1892 | 1967 | ||
1968 | updateControls(view); | ||
1893 | } | 1969 | } |
1894 | } | 1970 | } |
1895 | 1971 | ||
@@ -1925,6 +2001,7 @@ LLFloaterSnapshot::~LLFloaterSnapshot() | |||
1925 | delete &impl; | 2001 | delete &impl; |
1926 | } | 2002 | } |
1927 | 2003 | ||
2004 | |||
1928 | BOOL LLFloaterSnapshot::postBuild() | 2005 | BOOL LLFloaterSnapshot::postBuild() |
1929 | { | 2006 | { |
1930 | childSetCommitCallback("snapshot_type_radio", Impl::onCommitSnapshotType, this); | 2007 | childSetCommitCallback("snapshot_type_radio", Impl::onCommitSnapshotType, this); |
@@ -1932,11 +2009,6 @@ BOOL LLFloaterSnapshot::postBuild() | |||
1932 | 2009 | ||
1933 | childSetAction("new_snapshot_btn", Impl::onClickNewSnapshot, this); | 2010 | childSetAction("new_snapshot_btn", Impl::onClickNewSnapshot, this); |
1934 | 2011 | ||
1935 | childSetValue("auto_snapshot_check", gSavedSettings.getBOOL("AutoSnapshot")); | ||
1936 | childSetCommitCallback("auto_snapshot_check", Impl::onClickAutoSnap, this); | ||
1937 | |||
1938 | //childSetValue("advance_snapshot_check", gSavedSettings.getBOOL("AdvanceSnapshot")); | ||
1939 | //childSetCommitCallback("advance_snapshot_check", Impl::onClickAdvanceSnap, this); | ||
1940 | childSetAction("more_btn", Impl::onClickMore, this); | 2012 | childSetAction("more_btn", Impl::onClickMore, this); |
1941 | childSetAction("less_btn", Impl::onClickLess, this); | 2013 | childSetAction("less_btn", Impl::onClickLess, this); |
1942 | 2014 | ||
@@ -1949,10 +2021,10 @@ BOOL LLFloaterSnapshot::postBuild() | |||
1949 | childSetValue("image_quality_slider", gSavedSettings.getS32("SnapshotQuality")); | 2021 | childSetValue("image_quality_slider", gSavedSettings.getS32("SnapshotQuality")); |
1950 | 2022 | ||
1951 | childSetCommitCallback("snapshot_width", Impl::onCommitCustomResolution, this); | 2023 | childSetCommitCallback("snapshot_width", Impl::onCommitCustomResolution, this); |
1952 | |||
1953 | childSetCommitCallback("snapshot_height", Impl::onCommitCustomResolution, this); | 2024 | childSetCommitCallback("snapshot_height", Impl::onCommitCustomResolution, this); |
1954 | 2025 | ||
1955 | childSetCommitCallback("ui_check", Impl::onClickUICheck, this); | 2026 | childSetCommitCallback("ui_check", Impl::onClickUICheck, this); |
2027 | childSetValue("ui_check", gSavedSettings.getBOOL("RenderUIInSnapshot")); | ||
1956 | 2028 | ||
1957 | childSetCommitCallback("high_res_check", Impl::onClickHighResCheck, this); | 2029 | childSetCommitCallback("high_res_check", Impl::onClickHighResCheck, this); |
1958 | childSetValue("high_res_check", gSavedSettings.getBOOL("HighResSnapshot")); | 2030 | childSetValue("high_res_check", gSavedSettings.getBOOL("HighResSnapshot")); |
@@ -1970,12 +2042,15 @@ BOOL LLFloaterSnapshot::postBuild() | |||
1970 | childSetValue("layer_types", "colors"); | 2042 | childSetValue("layer_types", "colors"); |
1971 | childSetEnabled("layer_types", FALSE); | 2043 | childSetEnabled("layer_types", FALSE); |
1972 | 2044 | ||
1973 | childSetValue("snapshot_width", gSavedSettings.getS32("LastSnapshotWidth")); | 2045 | childSetValue("snapshot_width", gSavedSettings.getS32(lastSnapshotWidthName())); |
1974 | childSetValue("snapshot_height", gSavedSettings.getS32("LastSnapshotHeight")); | 2046 | childSetValue("snapshot_height", gSavedSettings.getS32(lastSnapshotHeightName())); |
1975 | 2047 | ||
1976 | childSetValue("freeze_frame_check", gSavedSettings.getBOOL("UseFreezeFrame")); | 2048 | childSetValue("freeze_frame_check", gSavedSettings.getBOOL("UseFreezeFrame")); |
1977 | childSetCommitCallback("freeze_frame_check", Impl::onCommitFreezeFrame, this); | 2049 | childSetCommitCallback("freeze_frame_check", Impl::onCommitFreezeFrame, this); |
1978 | 2050 | ||
2051 | childSetValue("auto_snapshot_check", gSavedSettings.getBOOL("AutoSnapshot")); | ||
2052 | childSetCommitCallback("auto_snapshot_check", Impl::onClickAutoSnap, this); | ||
2053 | |||
1979 | childSetCommitCallback("postcard_size_combo", Impl::onCommitResolution, this); | 2054 | childSetCommitCallback("postcard_size_combo", Impl::onCommitResolution, this); |
1980 | childSetCommitCallback("texture_size_combo", Impl::onCommitResolution, this); | 2055 | childSetCommitCallback("texture_size_combo", Impl::onCommitResolution, this); |
1981 | childSetCommitCallback("local_size_combo", Impl::onCommitResolution, this); | 2056 | childSetCommitCallback("local_size_combo", Impl::onCommitResolution, this); |
@@ -2005,6 +2080,7 @@ void LLFloaterSnapshot::draw() | |||
2005 | return; | 2080 | return; |
2006 | } | 2081 | } |
2007 | 2082 | ||
2083 | // TODO*: Do we need all this? - Jacek | ||
2008 | if(!isMinimized()) | 2084 | if(!isMinimized()) |
2009 | { | 2085 | { |
2010 | if (previewp && previewp->getDataSize() > 0) | 2086 | if (previewp && previewp->getDataSize() > 0) |
@@ -2162,10 +2238,15 @@ void LLFloaterSnapshot::hide(void*) | |||
2162 | //static | 2238 | //static |
2163 | void LLFloaterSnapshot::update() | 2239 | void LLFloaterSnapshot::update() |
2164 | { | 2240 | { |
2241 | BOOL changed = FALSE; | ||
2165 | for (std::set<LLSnapshotLivePreview*>::iterator iter = LLSnapshotLivePreview::sList.begin(); | 2242 | for (std::set<LLSnapshotLivePreview*>::iterator iter = LLSnapshotLivePreview::sList.begin(); |
2166 | iter != LLSnapshotLivePreview::sList.end(); ++iter) | 2243 | iter != LLSnapshotLivePreview::sList.end(); ++iter) |
2167 | { | 2244 | { |
2168 | LLSnapshotLivePreview::onIdle(*iter); | 2245 | changed |= LLSnapshotLivePreview::onIdle(*iter); |
2246 | } | ||
2247 | if(changed) | ||
2248 | { | ||
2249 | sInstance->impl.updateControls(sInstance); | ||
2169 | } | 2250 | } |
2170 | } | 2251 | } |
2171 | 2252 | ||