llcontroldef.cpp

Go to the documentation of this file.
00001 
00033 // Put default viewer settings in here
00034 
00035 #include "llviewerprecompiledheaders.h"
00036 
00037 #include "llviewercontrol.h"
00038 
00039 #include "indra_constants.h"
00040 
00041 #include "v3math.h"
00042 #include "v3dmath.h"
00043 #include "llrect.h"
00044 #include "v4color.h"
00045 #include "v4coloru.h"
00046 #include "v3color.h"
00047 #include "llfirstuse.h"
00048 
00049 // For Listeners
00050 #include "audioengine.h"
00051 #include "llagent.h"
00052 #include "llconsole.h"
00053 #include "lldrawpoolterrain.h"
00054 #include "llflexibleobject.h"
00055 #include "llfloatereventlog.h"
00056 #include "llfeaturemanager.h"
00057 #include "llglslshader.h"
00058 #include "llmediaengine.h"
00059 #include "llpanelgeneral.h"
00060 #include "llpanelinput.h"
00061 #include "llsky.h"
00062 #include "llviewerimagelist.h"
00063 #include "llviewerthrottle.h"
00064 #include "llviewerwindow.h"
00065 #include "llvoavatar.h"
00066 #include "llvosky.h"
00067 #include "llvotree.h"
00068 #include "llvovolume.h"
00069 #include "llworld.h"
00070 #include "pipeline.h"
00071 #include "viewer.h"
00072 #include "llviewerjoystick.h"
00073 #include "llviewerparcelmgr.h"
00074 #include "llparcel.h"
00075 #include "llnotify.h"
00076 #include "llkeyboard.h"
00077 
00078 void declare_settings()
00079 {
00080         // Somewhat under 1024 by 768
00081         const S32 WINDOW_WIDTH = 800;
00082         const S32 WINDOW_HEIGHT = 600;
00083 
00084         //------------------------------------------------------------------------
00085         // Color constants
00086         //------------------------------------------------------------------------
00087 
00088         const S32 TOOL_PANEL_HEIGHT = 162 + 32;
00089         const S32 TOOL_PANEL_WIDTH = 75 + 8;
00090 
00091         // Colors that can be changed in the UI
00092         gSavedSettings.declareColor4("EffectColor", LLColor4(1.f, 1.f, 1.f, 1.f), "Particle effects color");
00093         gSavedSettings.declareColor4("SystemChatColor", LLColor4(0.8f, 1.f, 1.f, 1.f), "Color of chat messages from SL System");
00094         gSavedSettings.declareColor4("AgentChatColor",  LLColor4(1.0f, 1.0f, 1.0f, 1.0f), "Color of chat messages from other residents");
00095         gSavedSettings.declareColor4("ObjectChatColor", LLColor4(0.7f, 0.9f, 0.7f, 1.0f), "Color of chat messages from objects");
00096         gSavedSettings.declareColor4("llOwnerSayChatColor",     LLColor4(0.99f, 0.99f, 0.69f, 1.0f), "Color of chat messages from objects only visible to the owner");
00097         gSavedSettings.declareColor4("BackgroundChatColor",     LLColor4(0.f, 0.f, 0.f, 1.0f), "Color of chat bubble background");
00098         gSavedSettings.declareColor4("ScriptErrorColor",        LLColor4(0.82f, 0.82f, 0.99f, 1.0f), "Color of script error messages");
00099         gSavedSettings.declareColor4("HTMLLinkColor",   LLColor4(0.6f, 0.6f, 1.0f, 1.0f), "Color of hyperlinks");
00100         
00101         // color palette in color picker
00102         gSavedSettings.declareColor4("ColorPaletteEntry01", LLColor4 ( 0.0f, 0.0f, 0.0f, 1.0f ), "Color picker palette entry");
00103         gSavedSettings.declareColor4("ColorPaletteEntry02", LLColor4 ( 0.5f, 0.5f, 0.5f, 1.0f ), "Color picker palette entry");
00104         gSavedSettings.declareColor4("ColorPaletteEntry03", LLColor4 ( 0.5f, 0.0f, 0.0f, 1.0f ), "Color picker palette entry");
00105         gSavedSettings.declareColor4("ColorPaletteEntry04", LLColor4 ( 0.5f, 0.5f, 0.0f, 1.0f ), "Color picker palette entry");
00106         gSavedSettings.declareColor4("ColorPaletteEntry05", LLColor4 ( 0.0f, 0.5f, 0.0f, 1.0f ), "Color picker palette entry");
00107         gSavedSettings.declareColor4("ColorPaletteEntry06", LLColor4 ( 0.0f, 0.5f, 0.5f, 1.0f ), "Color picker palette entry");
00108         gSavedSettings.declareColor4("ColorPaletteEntry07", LLColor4 ( 0.0f, 0.0f, 0.5f, 1.0f ), "Color picker palette entry");
00109         gSavedSettings.declareColor4("ColorPaletteEntry08", LLColor4 ( 0.5f, 0.0f, 0.5f, 1.0f ), "Color picker palette entry");
00110         gSavedSettings.declareColor4("ColorPaletteEntry09", LLColor4 ( 0.5f, 0.5f, 0.0f, 1.0f ), "Color picker palette entry");
00111         gSavedSettings.declareColor4("ColorPaletteEntry10", LLColor4 ( 0.0f, 0.25f, 0.25f, 1.0f ), "Color picker palette entry");
00112         gSavedSettings.declareColor4("ColorPaletteEntry11", LLColor4 ( 0.0f, 0.5f, 1.0f, 1.0f ), "Color picker palette entry");
00113         gSavedSettings.declareColor4("ColorPaletteEntry12", LLColor4 ( 0.0f, 0.25f, 0.5f, 1.0f ), "Color picker palette entry");
00114         gSavedSettings.declareColor4("ColorPaletteEntry13", LLColor4 ( 0.5f, 0.0f, 1.0f, 1.0f ), "Color picker palette entry");
00115         gSavedSettings.declareColor4("ColorPaletteEntry14", LLColor4 ( 0.5f, 0.25f, 0.0f, 1.0f ), "Color picker palette entry");
00116         gSavedSettings.declareColor4("ColorPaletteEntry15", LLColor4 ( 1.0f, 1.0f, 1.0f, 1.0f ), "Color picker palette entry");
00117         gSavedSettings.declareColor4("ColorPaletteEntry16", LLColor4 ( 1.0f, 1.0f, 1.0f, 1.0f ), "Color picker palette entry");
00118 
00119         gSavedSettings.declareColor4("ColorPaletteEntry17", LLColor4 ( 1.0f, 1.0f, 1.0f, 1.0f ), "Color picker palette entry");
00120         gSavedSettings.declareColor4("ColorPaletteEntry18", LLColor4 ( 0.75f, 0.75f, 0.75f, 1.0f ), "Color picker palette entry");
00121         gSavedSettings.declareColor4("ColorPaletteEntry19", LLColor4 ( 1.0f, 0.0f, 0.0f, 1.0f ), "Color picker palette entry");
00122         gSavedSettings.declareColor4("ColorPaletteEntry20", LLColor4 ( 1.0f, 1.0f, 0.0f, 1.0f ), "Color picker palette entry");
00123         gSavedSettings.declareColor4("ColorPaletteEntry21", LLColor4 ( 0.0f, 1.0f, 0.0f, 1.0f ), "Color picker palette entry");
00124         gSavedSettings.declareColor4("ColorPaletteEntry22", LLColor4 ( 0.0f, 1.0f, 1.0f, 1.0f ), "Color picker palette entry");
00125         gSavedSettings.declareColor4("ColorPaletteEntry23", LLColor4 ( 0.0f, 0.0f, 1.0f, 1.0f ), "Color picker palette entry");
00126         gSavedSettings.declareColor4("ColorPaletteEntry24", LLColor4 ( 1.0f, 0.0f, 1.0f, 1.0f ), "Color picker palette entry");
00127         gSavedSettings.declareColor4("ColorPaletteEntry25", LLColor4 ( 1.0f, 1.0f, 0.5f, 1.0f ), "Color picker palette entry");
00128         gSavedSettings.declareColor4("ColorPaletteEntry26", LLColor4 ( 0.0f, 1.0f, 0.5f, 1.0f ), "Color picker palette entry");
00129         gSavedSettings.declareColor4("ColorPaletteEntry27", LLColor4 ( 0.5f, 1.0f, 1.0f, 1.0f ), "Color picker palette entry");
00130         gSavedSettings.declareColor4("ColorPaletteEntry28", LLColor4 ( 0.5f, 0.5f, 1.0f, 1.0f ), "Color picker palette entry");
00131         gSavedSettings.declareColor4("ColorPaletteEntry29", LLColor4 ( 1.0f, 0.0f, 0.5f, 1.0f ), "Color picker palette entry");
00132         gSavedSettings.declareColor4("ColorPaletteEntry30", LLColor4 ( 1.0f, 0.5f, 0.0f, 1.0f ), "Color picker palette entry");
00133         gSavedSettings.declareColor4("ColorPaletteEntry31", LLColor4 ( 1.0f, 1.0f, 1.0f, 1.0f ), "Color picker palette entry");
00134         gSavedSettings.declareColor4("ColorPaletteEntry32", LLColor4 ( 1.0f, 1.0f, 1.0f, 1.0f ), "Color picker palette entry");
00135 
00136         //------------------------------------------------------------------------
00137         // Main menu
00138         //------------------------------------------------------------------------
00139         gSavedSettings.declareS32("MenuBarHeight", 18, "", NO_PERSIST );
00140         gSavedSettings.declareS32("MenuBarWidth", 410, "", NO_PERSIST );
00141 
00142         gSavedSettings.declareF32("MenuAccessKeyTime", 0.25f, "Time (seconds) in which the menu key must be tapped to move focus to the menu bar");
00143         gSavedSettings.declareBOOL("UseAltKeyForMenus", FALSE, "Access menus via keyboard by tapping Alt");
00144         // Which background overlay to use
00145         gSavedSettings.declareS32("MapOverlayIndex", 0, "Currently selected world map type");
00146 
00147 
00148         //------------------------------------------------------------------------
00149         // Pie Menus
00150         //------------------------------------------------------------------------
00151         gSavedSettings.declareF32("PieMenuLineWidth", 2.5f, "Width of lines in pie menu display (pixels)");
00152 
00153         //------------------------------------------------------------------------
00154         // Drop Shadows
00155         //------------------------------------------------------------------------
00156         gSavedSettings.declareS32("DropShadowButton",   2, "Drop shadow width for buttons (pixels)");
00157         gSavedSettings.declareS32("DropShadowFloater",  5, "Drop shadow width for floaters (pixels)");
00158         gSavedSettings.declareS32("DropShadowSlider",   3, "Drop shadow width for sliders (pixels)");
00159         gSavedSettings.declareS32("DropShadowTooltip",  4, "Drop shadow width for tooltips (pixels)");
00160 
00161         //------------------------------------------------------------------------
00162         // Buttons
00163         //------------------------------------------------------------------------
00164         gSavedSettings.declareS32("ButtonHPad", 10, "Default horizontal spacing between buttons (pixels)");             // space from left of button to text
00165         gSavedSettings.declareS32("ButtonVPad", 1, "Default vertical spacing between buttons (pixels)");                // space from bottom of button to text
00166         gSavedSettings.declareS32("ButtonHeightSmall", 16, "Default height for small buttons (pixels)");
00167         gSavedSettings.declareS32("ButtonHeight", 20, "Default height for normal buttons (pixels)");
00168         //gSavedSettings.declareS32("ButtonHeightToolbar", 32, "[NOT USED]");
00169 
00170         //gSavedSettings.declareS32("DefaultButtonWidth", DEFAULT_BUTTON_WIDTH, "[NOT USED]");
00171         //gSavedSettings.declareS32("DefaultButtonHeight", DEFAULT_BUTTON_HEIGHT, "[NOT USED]");
00172 
00173         //------------------------------------------------------------------------
00174         // Scroll Lists
00175         //------------------------------------------------------------------------
00176         gSavedSettings.declareF32("TypeAheadTimeout", 1.5f, "Time delay before clearing type-ahead buffer in lists (seconds)");
00177 
00178         //------------------------------------------------------------------------
00179         // ToolTips
00180         //------------------------------------------------------------------------
00181         gSavedSettings.declareF32("ToolTipDelay", 0.7f, "Seconds before displaying tooltip when mouse stops over UI element");
00182         gSavedSettings.declareF32("DragAndDropToolTipDelay", 0.1f, "Seconds before displaying tooltip when performing drag and drop operation");
00183 
00184         //------------------------------------------------------------------------
00185         // Auto-Open Folders
00186         //------------------------------------------------------------------------
00187         gSavedSettings.declareF32("FolderAutoOpenDelay", 0.75f, "Seconds before automatically expanding the folder under the mouse when performing inventory drag and drop");
00188         gSavedSettings.declareF32("InventoryAutoOpenDelay", 1.f, "Seconds before automatically opening inventory when mouse is over inventory button when performing inventory drag and drop");
00189         gSavedSettings.declareBOOL("ShowEmptyFoldersWhenSearching", FALSE, "Shows folders that do not have any visible contents when applying a filter to inventory");
00190         gSavedSettings.declareS32("FilterItemsPerFrame", 500, "Maximum number of inventory items to match against search filter every frame (lower to increase framerate while searching, higher to improve search speed)");
00191         gSavedSettings.declareBOOL("DebugInventoryFilters", FALSE, "Turn on debugging display for inventory filtering");
00192 
00193         //------------------------------------------------------------------------
00194         // Status bar
00195         //------------------------------------------------------------------------
00196         gSavedSettings.declareS32("StatusBarHeight", 26, "Height of menu/status bar at top of screen (pixels)" );
00197         //gSavedSettings.declareS32("StatusBarButtonWidth", 80, "[NOT USED]");
00198 
00199         gSavedSettings.declareS32("StatusBarPad", 10, "Spacing between popup buttons at bottom of screen (Stand up, Release Controls)");
00200 
00201         //gSavedSettings.declareS32("ChatWidth", 250, "[NOT USED]");
00202 
00203         //------------------------------------------------------------------------
00204         // Toolbar bar
00205         //------------------------------------------------------------------------
00206         //gSavedSettings.declareS32("ToolBarHeight", 20, "[NOT USED]" );
00207         //gSavedSettings.declareS32("ToolBarWidth", 480, "[NOT USED]" );
00208         //gSavedSettings.declareS32("ToolBarButtonWidth", 80, "[NOT USED]" );
00209 
00210         //------------------------------------------------------------------------
00211         // Fonts
00212         //------------------------------------------------------------------------
00213         gSavedSettings.declareF32("FontScreenDPI",      96.f, "Font resolution, higher is bigger (pixels per inch)");           // windows standard
00214         gSavedSettings.declareF32("FontSizeMonospace", 9.f, "Size of monospaced font (points, or 1/72 of an inch)");
00215         gSavedSettings.declareF32("FontSizeSmall",      9.f, "Size of small font (points, or 1/72 of an inch)");
00216         gSavedSettings.declareF32("FontSizeMedium",     10.f, "Size of medium font (points, or 1/72 of an inch)");
00217         gSavedSettings.declareF32("FontSizeLarge",      12.f, "Size of large font (points, or 1/72 of an inch)");
00218         gSavedSettings.declareF32("FontSizeHuge",       16.f, "Size of huge font (points, or 1/72 of an inch)");
00219 
00220         gSavedSettings.declareString("FontMonospace",           "profontwindows.ttf", "Name of monospace font (Truetype file name)");
00221         gSavedSettings.declareString("FontSansSerif",           "MtBkLfRg.ttf", "Name of san-serif font (Truetype file name)");
00222 #if LL_WINDOWS
00223         // Lists Japanese, Korean, and Chinese sanserif fonts available in
00224         // Windows XP and Vista, as well as "Arial Unicode MS".
00225         gSavedSettings.declareString(
00226                 "FontSansSerifFallback",
00227                 "MSGOTHIC.TTC;gulim.ttc;simhei.ttf;ArialUni.ttf",
00228                 "Name of fallback san-serif font (Truetype file name)");
00229 #elif LL_DARWIN
00230         // This is a fairly complete Japanese font that ships with Mac OS X.
00231         // The first filename is in UTF8, but it shows up in the font menu as "Hiragino Kaku Gothic Pro W3".
00232         // The third filename is in UTF8, but it shows up in the font menu as "STHeiti Light"
00233         gSavedSettings.declareString("FontSansSerifFallback",   "\xE3\x83\x92\xE3\x83\xA9\xE3\x82\xAD\xE3\x82\x99\xE3\x83\x8E\xE8\xA7\x92\xE3\x82\xB3\xE3\x82\x99 Pro W3.otf;\xE3\x83\x92\xE3\x83\xA9\xE3\x82\xAD\xE3\x82\x99\xE3\x83\x8E\xE8\xA7\x92\xE3\x82\xB3\xE3\x82\x99 ProN W3.otf;AppleGothic.dfont;AppleGothic.ttf;\xe5\x8d\x8e\xe6\x96\x87\xe7\xbb\x86\xe9\xbb\x91.ttf", "Name of san-serif font (Truetype file name)");
00234 #else
00235         // 'unicode.ttf' doesn't exist, but hopefully an international
00236         // user can take the hint and drop in their favourite local font.
00237         gSavedSettings.declareString("FontSansSerifFallback",   "unicode.ttf", "Name of fallback san-serif font (Truetype file name)");
00238 #endif
00239         gSavedSettings.declareF32("FontSansSerifFallbackScale", 1.0, "Scale of fallback font relative to huge font (fraction of huge font size)");
00240         gSavedSettings.declareString("FontSansSerifBold",       "MtBdLfRg.ttf", "Name of bold font (Truetype file name)");
00241 
00242         //------------------------------------------------------------------------
00243         // Chat
00244         //------------------------------------------------------------------------
00245 
00246         // 0 = small, 1 = big
00247         gSavedSettings.declareS32("ChatFontSize", 1, "Size of chat text in chat console (0 = small, 1 = big)");
00248 
00249         // Does the console occupy full window width or only left 2/3?
00250         gSavedSettings.declareBOOL("ChatFullWidth", TRUE, "Chat console takes up full width of SL window");
00251 
00252         // opacity of console background
00253         gSavedSettings.declareF32("ConsoleBackgroundOpacity", 0.4f, "Opacity of chat console (0.0 = completely transparent, 1.0 = completely opaque)");
00254         gSavedSettings.declareS32("ConsoleMaxLines", 40, "Max number of lines of chat text visible in console.");
00255 
00256         // Seconds to keep line of text on console
00257         gSavedSettings.declareF32("ChatPersistTime", 15.f, "Time for which chat stays visible in console (seconds)");
00258         gSavedSettings.declareBOOL("PlayTypingAnim", TRUE, "Your avatar plays the typing animation whenever you type in the chat bar");
00259 
00260         // show chat in bubbles above avatar heads
00261         gSavedSettings.declareBOOL("UseChatBubbles", FALSE, "Show chat above avatars head in chat bubbles");
00262         gSavedSettings.declareF32("ChatBubbleOpacity", 0.5f, "Opacity of chat bubble background (0.0 = completely transparent, 1.0 = completely opaque)");
00263 
00264         gSavedSettings.declareBOOL("AllowIdleAFK", TRUE, "Automatically set AFK (away from keyboard) mode when idle");
00265         gSavedSettings.declareF32("AFKTimeout", 300.f, "Time before automatically setting AFK (away from keyboard) mode (seconds)");    // 5 minutes
00266 
00267         gSavedSettings.declareBOOL("SmallAvatarNames", TRUE, "Display avatar name text in smaller font");
00268         gSavedSettings.declareBOOL("ScriptErrorsAsChat", FALSE, "Display script errors and warning in chat history");
00269 
00270         gSavedSettings.declareBOOL("ChatShowTimestamps", TRUE, "Show timestamps in chat");
00271 
00272         gSavedSettings.declareBOOL("EnableVoiceChat", FALSE, "Enable talking to other residents with a microphone");
00273         gSavedSettings.declareBOOL("VoiceCallsFriendsOnly", FALSE, "Only accept voice calls from residents on your friends list");
00274         gSavedSettings.declareBOOL("PTTCurrentlyEnabled", TRUE, "", NO_PERSIST);
00275         gSavedSettings.declareBOOL("EnablePushToTalk", TRUE, "Must hold down a key or moouse button when talking into your microphone");
00276         gSavedSettings.declareString("PushToTalkButton", "MiddleMouse", "Which button or keyboard key is used for push-to-talk");
00277         gSavedSettings.declareBOOL("PushToTalkToggle", FALSE, "Should the push-to-talk button behave as a toggle");
00278         gSavedSettings.declareS32("VoiceEarLocation", 0, "Location of the virtual ear for voice");
00279         gSavedSettings.declareString("VivoxDebugServerName", "bhd.vivox.com", "Hostname of the vivox account server to use for voice when not connected to Agni.");
00280         gSavedSettings.declareColor4("SpeakingColor", LLColor4(0.f, 1.f, 0.f, 1.f), "Color of various indicators when resident is speaking on a voice channel.");
00281         gSavedSettings.declareColor4("OverdrivenColor", LLColor4(1.f, 0.f, 0.f, 1.f), "Color of various indicators when resident is speaking too loud.");
00282         gSavedSettings.declareString("VoiceInputAudioDevice", "Default", "Audio input device to use for voice");
00283         gSavedSettings.declareString("VoiceOutputAudioDevice", "Default", "Audio output device to use for voice");
00284         gSavedSettings.declareString("VivoxDebugLevel", "-1", "Logging level to use when launching the vivox daemon");
00285 
00286         //voice amplitude images;
00287         
00288         /*
00289         gSavedSettings.declareString("VoiceImageLevel0", "5b41b4c3-eb70-0f0f-17d9-1765cbd07d39", "Texture UUID for voice image level 0");       
00290         gSavedSettings.declareString("VoiceImageLevel1", "b06ffd0a-7bfe-0449-0bbc-df291f1857c4", "Texture UUID for voice image level 1");
00291         gSavedSettings.declareString("VoiceImageLevel2", "bfa16494-b731-5b59-3260-9e4fd29d63f7", "Texture UUID for voice image level 2");
00292         gSavedSettings.declareString("VoiceImageLevel3", "6951074f-de1d-3c55-cb2f-e972877f7f81", "Texture UUID for voice image level 3");
00293         gSavedSettings.declareString("VoiceImageLevel4", "ce3df80a-f0c5-a7cb-f5bc-d3bb38949d0d", "Texture UUID for voice image level 4");
00294         gSavedSettings.declareString("VoiceImageLevel5", "8d0e359c-5cea-bdf5-b6b0-32d2fea6355c", "Texture UUID for voice image level 5");
00295         gSavedSettings.declareString("VoiceImageLevel6", "ad9e64e0-a763-5d8c-f2e8-7b5dfdb7f20f", "Texture UUID for voice image level 6");
00296         */
00297         
00298         /*
00299         // Jeffrey's first version
00300         gSavedSettings.declareString("VoiceImageLevel0", "5b41b4c3-eb70-0f0f-17d9-1765cbd07d39", "Texture UUID for voice image level 0");       
00301         gSavedSettings.declareString("VoiceImageLevel1", "cde76ae8-0044-d575-8e2c-65fb0a14cbde", "Texture UUID for voice image level 1");
00302         gSavedSettings.declareString("VoiceImageLevel2", "cde76ae8-0044-d575-8e2c-65fb0a14cbde", "Texture UUID for voice image level 2");
00303         gSavedSettings.declareString("VoiceImageLevel3", "cde76ae8-0044-d575-8e2c-65fb0a14cbde", "Texture UUID for voice image level 3");
00304         gSavedSettings.declareString("VoiceImageLevel4", "cde76ae8-0044-d575-8e2c-65fb0a14cbde", "Texture UUID for voice image level 4");
00305         gSavedSettings.declareString("VoiceImageLevel5", "cde76ae8-0044-d575-8e2c-65fb0a14cbde", "Texture UUID for voice image level 5");
00306         gSavedSettings.declareString("VoiceImageLevel6", "cde76ae8-0044-d575-8e2c-65fb0a14cbde", "Texture UUID for voice image level 6");
00307         */
00308         
00309         // Brent's first version
00310         /*
00311         gSavedSettings.declareString("VoiceImageLevel0", "5b41b4c3-eb70-0f0f-17d9-1765cbd07d39", "Texture UUID for voice image level 0");       
00312         gSavedSettings.declareString("VoiceImageLevel1", "72365124-c7a7-a1f9-3d7a-d8e521eb5011", "Texture UUID for voice image level 1");
00313         gSavedSettings.declareString("VoiceImageLevel2", "72365124-c7a7-a1f9-3d7a-d8e521eb5011", "Texture UUID for voice image level 2");
00314         gSavedSettings.declareString("VoiceImageLevel3", "72365124-c7a7-a1f9-3d7a-d8e521eb5011", "Texture UUID for voice image level 3");
00315         gSavedSettings.declareString("VoiceImageLevel4", "72365124-c7a7-a1f9-3d7a-d8e521eb5011", "Texture UUID for voice image level 4");
00316         gSavedSettings.declareString("VoiceImageLevel5", "72365124-c7a7-a1f9-3d7a-d8e521eb5011", "Texture UUID for voice image level 5");
00317         gSavedSettings.declareString("VoiceImageLevel6", "72365124-c7a7-a1f9-3d7a-d8e521eb5011", "Texture UUID for voice image level 6");
00318         */
00319         
00320         /*
00321         // Brent's second version
00322         gSavedSettings.declareString("VoiceImageLevel0", "5b41b4c3-eb70-0f0f-17d9-1765cbd07d39", "Texture UUID for voice image level 0");       
00323         gSavedSettings.declareString("VoiceImageLevel1", "4ee6a7ac-472e-b5ff-7125-f6213798cbee", "Texture UUID for voice image level 1");
00324         gSavedSettings.declareString("VoiceImageLevel2", "4ee6a7ac-472e-b5ff-7125-f6213798cbee", "Texture UUID for voice image level 2");
00325         gSavedSettings.declareString("VoiceImageLevel3", "4ee6a7ac-472e-b5ff-7125-f6213798cbee", "Texture UUID for voice image level 3");
00326         gSavedSettings.declareString("VoiceImageLevel4", "4ee6a7ac-472e-b5ff-7125-f6213798cbee", "Texture UUID for voice image level 4");
00327         gSavedSettings.declareString("VoiceImageLevel5", "4ee6a7ac-472e-b5ff-7125-f6213798cbee", "Texture UUID for voice image level 5");
00328         gSavedSettings.declareString("VoiceImageLevel6", "4ee6a7ac-472e-b5ff-7125-f6213798cbee", "Texture UUID for voice image level 6");
00329         */
00330         
00331         // Jeffrey's tweak on 4/9/07
00332         gSavedSettings.declareString("VoiceImageLevel0", "041ee5a0-cb6a-9ac5-6e49-41e9320507d5", "Texture UUID for voice image level 0");       
00333         gSavedSettings.declareString("VoiceImageLevel1", "29de489d-0491-fb00-7dab-f9e686d31e83", "Texture UUID for voice image level 1");
00334         gSavedSettings.declareString("VoiceImageLevel2", "29de489d-0491-fb00-7dab-f9e686d31e83", "Texture UUID for voice image level 2");
00335         gSavedSettings.declareString("VoiceImageLevel3", "29de489d-0491-fb00-7dab-f9e686d31e83", "Texture UUID for voice image level 3");
00336         gSavedSettings.declareString("VoiceImageLevel4", "29de489d-0491-fb00-7dab-f9e686d31e83", "Texture UUID for voice image level 4");
00337         gSavedSettings.declareString("VoiceImageLevel5", "29de489d-0491-fb00-7dab-f9e686d31e83", "Texture UUID for voice image level 5");
00338         gSavedSettings.declareString("VoiceImageLevel6", "29de489d-0491-fb00-7dab-f9e686d31e83", "Texture UUID for voice image level 6");
00339         
00340         gSavedSettings.declareString("VoiceHost", "127.0.0.1", "Client SLVoice host to connect to");
00341         gSavedSettings.declareU32("VoicePort", 44124, "Client SLVoice port to connect to");
00342         
00343         //------------------------------------------------------------------------
00344         // Caution Script Permission Prompts
00345         //------------------------------------------------------------------------
00346 
00347         gSavedSettings.declareBOOL("PermissionsCautionEnabled", TRUE, "When enabled, changes the handling of script permission requests to help avoid accidental granting of certain permissions, such as the debit permission", NO_PERSIST);
00348         gSavedSettings.declareS32("PermissionsCautionNotifyBoxHeight", 344, "Height of caution-style notification messages", NO_PERSIST);
00349 
00350         //------------------------------------------------------------------------
00351         // Other....
00352         //------------------------------------------------------------------------
00353 
00354         gSavedSettings.declareBOOL("ScriptHelpFollowsCursor", FALSE, "Scripting help window updates contents based on script editor contents under text cursor");
00355 
00356         gSavedSettings.declareS32("LastFeatureVersion", 0, "[DO NOT MODIFY] Version number for tracking hardware changes", TRUE);
00357         gSavedSettings.declareS32("NumSessions", 0, "Number of successful logins to Second Life");
00358         gSavedSettings.declareBOOL("ShowInventory", FALSE, "Open inventory window on login");
00359         gSavedSettings.declareBOOL("ChatOnlineNotification", TRUE, "Provide notifications for when friend log on and off of SL");
00360 
00361         gSavedSettings.declareString("DefaultObjectTexture", "89556747-24cb-43ed-920b-47caed15465f", "Texture used as 'Default' in texture picker. (UUID texture reference)" );  // maple texture
00362 
00363         gSavedSettings.declareBOOL("ShowPropertyLines", FALSE, "Show line overlay demarking property boundaries");
00364         gSavedSettings.declareBOOL("ShowParcelOwners", FALSE, "", NO_PERSIST);
00365         gSavedSettings.declareBOOL("ToolboxAutoMove", FALSE, "[NOT USED]");
00366         gSavedSettings.declareBOOL("ToolboxShowMore", TRUE, "Whether to show additional build tool controls", TRUE);
00367 
00368         gSavedSettings.declareRect("ToolboxRect", LLRect(0, 100, 100, 100), "Rectangle for tools window" ); // only care about position
00369 
00370         // User interface button states
00371         gSavedSettings.declareBOOL("FirstPersonBtnState",       FALSE,  "", NO_PERSIST);
00372         gSavedSettings.declareBOOL("MouselookBtnState",         FALSE,  "", NO_PERSIST);
00373         gSavedSettings.declareBOOL("ThirdPersonBtnState",       TRUE,   "", NO_PERSIST);
00374         gSavedSettings.declareBOOL("BuildBtnState",                     FALSE,  "", NO_PERSIST);
00375 
00376         //gSavedSettings.declareBOOL("TalkBtnState",            FALSE, "[NOT USED]");
00377 
00378         gSavedSettings.declareBOOL("ShowPermissions",   FALSE, "", NO_PERSIST);
00379         gSavedSettings.declareBOOL("ShowTools",                 FALSE, "", NO_PERSIST);
00380 
00381 
00382         gSavedSettings.declareString("NextLoginLocation", "", "Location to log into by default.");      // if present in settings.ini, will force you to that sim/x/y/z on next login 
00383 
00384 //      gSavedSettings.declareBOOL("ShowBasicHelpOnLaunch",     TRUE);
00385         gSavedSettings.declareRect("BasicHelpRect",                     LLRect(0, 404, 467, 0), "Rectangle for help window" );  // Only width and height are used
00386 
00387         gSavedSettings.declareS32("LastPrefTab", 0, "Last selected tab in preferences window");
00388 
00389         gSavedSettings.declareString("LSLHelpURL", "https://wiki.secondlife.com/wiki/[LSL_STRING]", "URL that points to LSL help files, with [LSL_STRING] corresponding to the referenced LSL function or keyword");
00390         // link for editable wiki (https doesn't seem to work right now with our embedded browser)
00391         //gSavedSettings.declareString("LSLHelpURL", "https://wiki.secondlife.com/wiki/[LSL_STRING]", "URL that points to LSL help files, with [LSL_STRING] corresponding to the referenced LSL function or keyword");
00392         // Wearable default images
00393 //      const char* UI_IMG_BLACK_UUID           = "e2244626-f22f-4839-8123-1e7baddeb659";
00394         const char* UI_IMG_WHITE_UUID           = "5748decc-f629-461c-9a36-a35a221fe21f";
00395 //      const char* UI_IMG_DARKGRAY_UUID        = "267e26d3-e0e1-41b8-91b1-3b337102928d";
00396 //      const char* UI_IMG_LIGHTGRAY_UUID       = "c520bf46-cc5d-412b-a60b-9f1bd245189f";
00397 
00398         gSavedSettings.declareString("UIImgDefaultShirtUUID",           UI_IMG_WHITE_UUID,                                      "", NO_PERSIST);
00399         gSavedSettings.declareString("UIImgDefaultPantsUUID",           UI_IMG_WHITE_UUID,                                      "", NO_PERSIST);
00400         gSavedSettings.declareString("UIImgDefaultEyesUUID",            "6522e74d-1660-4e7f-b601-6f48c1659a77", "", NO_PERSIST);
00401         gSavedSettings.declareString("UIImgDefaultHairUUID",            "7ca39b4c-bd19-4699-aff7-f93fd03d3e7b", "", NO_PERSIST);
00402         gSavedSettings.declareString("UIImgDefaultShoesUUID",           UI_IMG_WHITE_UUID,                                              "", NO_PERSIST);
00403         gSavedSettings.declareString("UIImgDefaultSocksUUID",           UI_IMG_WHITE_UUID,                                      "", NO_PERSIST);
00404         gSavedSettings.declareString("UIImgDefaultGlovesUUID",          UI_IMG_WHITE_UUID,                                      "", NO_PERSIST);
00405         gSavedSettings.declareString("UIImgDefaultJacketUUID",          UI_IMG_WHITE_UUID,                                      "", NO_PERSIST);
00406         gSavedSettings.declareString("UIImgDefaultUnderwearUUID",       UI_IMG_WHITE_UUID,                                      "", NO_PERSIST);
00407         gSavedSettings.declareString("UIImgDefaultSkirtUUID",           UI_IMG_WHITE_UUID,                                      "", NO_PERSIST);
00408 
00409         // Utility color for texture defaults
00410         gSavedSettings.declareString("UIImgWhiteUUID",                          UI_IMG_WHITE_UUID,                                              "", NO_PERSIST);
00411 
00412         // Movement widget controls
00413         const S32 MOVE_BTN_COL1 = 20;
00414         const S32 MOVE_BTN_COL2 = MOVE_BTN_COL1 + 25;
00415         const S32 MOVE_BTN_COL3 = MOVE_BTN_COL2 + 21;
00416         const S32 MOVE_BTN_COL4 = MOVE_BTN_COL3 + 25;
00417         const S32 MOVE_BTN_COL5 = MOVE_BTN_COL4 + 25;
00418 //      const S32 MOVE_BTN_COL6 = MOVE_BTN_COL5 + 20;
00419         const S32 MOVE_BTN_ROW1 = 4;
00420         const S32 MOVE_BTN_ROW2 = MOVE_BTN_ROW1 + 25;
00421         const S32 MOVE_BTN_ROW3 = MOVE_BTN_ROW2 + 25;
00422         const S32 MOVE_BTN_FLY_LEFT = MOVE_BTN_COL1+96;
00423         const S32 MOVE_BTN_FLY_WIDTH = 40;
00424         const S32 MOVE_BTN_FLY_RIGHT = MOVE_BTN_FLY_LEFT + MOVE_BTN_FLY_WIDTH;
00425 
00426         //gSavedSettings.declareBOOL("CreateObjectsCentered",   FALSE, "[NOT USED]");
00427 
00428         //gSavedSettings.declareBOOL("ShowMoveArrows", TRUE, "[NOT USED]");
00429 
00430         gSavedSettings.declareRect("SlideLeftBtnRect",
00431                 LLRect(MOVE_BTN_COL1, MOVE_BTN_ROW3,    MOVE_BTN_COL2,  MOVE_BTN_ROW2),
00432                 "", NO_PERSIST  );
00433         gSavedSettings.declareRect("TurnLeftBtnRect",
00434                 LLRect(MOVE_BTN_COL1, MOVE_BTN_ROW2,    MOVE_BTN_COL2,  MOVE_BTN_ROW1),
00435                 "", NO_PERSIST  );
00436         gSavedSettings.declareRect("ForwardBtnRect",
00437                 LLRect(MOVE_BTN_COL2, MOVE_BTN_ROW3,    MOVE_BTN_COL3,  MOVE_BTN_ROW2),
00438                 "", NO_PERSIST  );
00439         gSavedSettings.declareRect("BackwardBtnRect",
00440                 LLRect(MOVE_BTN_COL2, MOVE_BTN_ROW2,    MOVE_BTN_COL3,  MOVE_BTN_ROW1),
00441                 "", NO_PERSIST  );
00442         gSavedSettings.declareRect("SlideRightBtnRect",
00443                 LLRect(MOVE_BTN_COL3, MOVE_BTN_ROW3,    MOVE_BTN_COL4,  MOVE_BTN_ROW2),
00444                 "", NO_PERSIST  );
00445         gSavedSettings.declareRect("TurnRightBtnRect",
00446                 LLRect(MOVE_BTN_COL3, MOVE_BTN_ROW2,    MOVE_BTN_COL4,  MOVE_BTN_ROW1),
00447                 "", NO_PERSIST  );
00448         gSavedSettings.declareRect("MoveUpBtnRect",
00449                 LLRect(MOVE_BTN_COL4, MOVE_BTN_ROW3,    MOVE_BTN_COL5,  MOVE_BTN_ROW2),
00450                 "", NO_PERSIST  );
00451         gSavedSettings.declareRect("MoveDownBtnRect",
00452                 LLRect(MOVE_BTN_COL4, MOVE_BTN_ROW2,    MOVE_BTN_COL5,  MOVE_BTN_ROW1),
00453                 "", NO_PERSIST  );
00454         gSavedSettings.declareBOOL("FlyBtnState",                       FALSE,  "", NO_PERSIST);
00455         gSavedSettings.declareBOOL("SitBtnState",                       FALSE,  "", NO_PERSIST);
00456         gSavedSettings.declareRect("FlyBtnRect",
00457                 LLRect(MOVE_BTN_FLY_LEFT, 20,   MOVE_BTN_FLY_RIGHT,      4), "", NO_PERSIST     );
00458         gSavedSettings.declareBOOL("RunBtnState",                       FALSE,  "", NO_PERSIST);
00459         gSavedSettings.declareRect("RunBtnRect",
00460                 LLRect(MOVE_BTN_FLY_LEFT, 40,   MOVE_BTN_FLY_RIGHT,      24), "", NO_PERSIST    );
00461 
00462         const S32 MOVE_WIDTH = MOVE_BTN_FLY_RIGHT + 4;
00463         const S32 MOVE_HEIGHT = MOVE_BTN_ROW3 + 4;
00464         gSavedSettings.declareRect("FloaterMoveRect", LLRect(0, MOVE_HEIGHT, MOVE_WIDTH, 0), "Rectangle for avatar control window");
00465 
00466         // 0 = never, 1 = fade, 2 = always
00467         gSavedSettings.declareS32("RenderName", 2, "Controls display of names above avatars (0 = never, 1 = fade, 2 = always)");
00468         gSavedSettings.declareF32("RenderNameShowTime", 10.f, "Fade avatar names after specified time (seconds)");              // seconds
00469         gSavedSettings.declareF32("RenderNameFadeDuration", 1.f, "Time interval over which to fade avatar names (seconds)");    // seconds
00470         gSavedSettings.declareBOOL("RenderNameHideSelf", FALSE, "Don't display own name above avatar");
00471         gSavedSettings.declareBOOL("RenderHideGroupTitle", FALSE, "Don't show my group title in my name label");
00472         gSavedSettings.declareBOOL("RenderGroupTitleAll", TRUE, "Show group titles in name labels");
00473 
00474         // Camera widget controls
00475         const S32 CAMERA_LEFT = MOVE_BTN_FLY_RIGHT + 10;
00476         const S32 CAMERA_WIDTH = 16 + 64 + 16 + 64 + 16;
00477         const S32 CAMERA_HEIGHT = 64;
00478         gSavedSettings.declareRect("FloaterCameraRect",
00479                 LLRect(CAMERA_LEFT, CAMERA_HEIGHT, CAMERA_LEFT+CAMERA_WIDTH, 0), "Rectangle for camera control window");
00480 
00481         // Tool view
00482         LLRect floater_tools_rect;
00483         floater_tools_rect.setOriginAndSize(0, 300, TOOL_PANEL_WIDTH, 368);
00484         //gSavedSettings.declareRect("FloaterToolsRect",        floater_tools_rect, "[NOT USED]");
00485         gSavedSettings.declareRect("ToolHelpRect",      LLRect(8, TOOL_PANEL_HEIGHT-16, TOOL_PANEL_WIDTH -8, TOOL_PANEL_HEIGHT-16-16), "", NO_PERSIST); // relative to ToolPanelRect
00486 
00487         gSavedSettings.declareRect("FloaterEventLogRect", LLRect(0,200,200,0), "Rectangle for event log");
00488         gSavedSettings.declareU32("EventLogMaxAge", 120, "Maximum age of the entries to show in the log");
00489         gSavedSettings.declareU32("EventLogMaxEntries", 64, "Maximum amount of entries to show in the log");
00490 
00491         gSavedSettings.declareRect("FloaterFriendsRect", LLRect(0, 400, 250, 0), "Rectangle for friends window");
00492         gSavedSettings.declareRect("FloaterSnapshotRect", LLRect(0, 200, 200, 400), "Rectangle for snapshot window");
00493 
00494         gSavedSettings.declareRect("FloaterAvatarListRect", LLRect(0, 400, 200, 0), "Rectangle for avatar list window");
00495 
00496         //gSavedSettings.declareRect("AccountHistoryRect", LLRect(100, 500, 500, 200), "[NOT USED]");
00497 
00498         // Energy bar
00499         //gSavedSettings.declareBOOL("ShowEnergyPanel", FALSE, "[NOT USED]");
00500         gSavedSettings.declareS32("EnergyFromTop", 20, "", NO_PERSIST );
00501         gSavedSettings.declareS32("EnergyWidth", 175, "", NO_PERSIST );
00502         gSavedSettings.declareS32("EnergyHeight", 40, "", NO_PERSIST );
00503 
00504         gSavedSettings.declareBOOL("UIFloaterTestBool", FALSE, "Example saved setting for the test floater");
00505 
00506         //------------------------------------------------------------------------
00507         // UI UUIDS
00508         //------------------------------------------------------------------------
00509         gSavedSettings.declareString("UIImgBtnCloseInactiveUUID",       "779e4fa3-9b13-f74a-fba9-3886fe9c86ba", "", NO_PERSIST);
00510         gSavedSettings.declareString("UIImgBtnCloseActiveUUID",         "47a8c844-cd2a-4b1a-be01-df8b1612fe5d", "", NO_PERSIST);
00511         gSavedSettings.declareString("UIImgBtnClosePressedUUID",        "e5821134-23c0-4bd0-af06-7fa95b9fb01a", "", NO_PERSIST);
00512 
00513         gSavedSettings.declareString("UIImgBtnMinimizeInactiveUUID","6e72abba-1378-437f-bf7a-f0c15f3e99a3", "", NO_PERSIST);
00514         gSavedSettings.declareString("UIImgBtnMinimizeActiveUUID",      "34c9398d-bb78-4643-9633-46a2fa3e9637", "", NO_PERSIST);
00515         gSavedSettings.declareString("UIImgBtnMinimizePressedUUID",     "39801651-26cb-4926-af57-7af9352c273c", "", NO_PERSIST);
00516 
00517         gSavedSettings.declareString("UIImgBtnRestoreInactiveUUID",     "0eafa471-70af-4882-b8c1-40a310929744", "", NO_PERSIST);
00518         gSavedSettings.declareString("UIImgBtnRestoreActiveUUID",       "111b39de-8928-4690-b7b2-e17d5c960277", "", NO_PERSIST);
00519         gSavedSettings.declareString("UIImgBtnRestorePressedUUID",      "90a0ed5c-2e7b-4845-9958-a64a1b30f312", "", NO_PERSIST);
00520 
00521         gSavedSettings.declareString("UIImgBtnTearOffInactiveUUID",     "74e1a96f-4833-a24d-a1bb-1bce1468b0e7", "", NO_PERSIST);
00522         gSavedSettings.declareString("UIImgBtnTearOffActiveUUID",       "74e1a96f-4833-a24d-a1bb-1bce1468b0e7", "", NO_PERSIST);
00523         gSavedSettings.declareString("UIImgBtnTearOffPressedUUID",      "d2524c13-4ba6-af7c-e305-8ac6cc18d86a", "", NO_PERSIST);
00524 
00525         // Stay in IM after hitting return.
00526         gSavedSettings.declareBOOL("PinTalkViewOpen", TRUE, "Stay in IM after hitting return");
00527 
00528         // Close chat after hitting return.
00529         gSavedSettings.declareBOOL("CloseChatOnReturn", FALSE, "Close chat after hitting return");
00530 
00531         // Copy IM messages into chat history
00532         gSavedSettings.declareBOOL("ChatHistoryTornOff", FALSE, "Show chat history window separately from Communicate window.");
00533         gSavedSettings.declareBOOL("IMInChatHistory", FALSE, "Copy IM into chat history");
00534         gSavedSettings.declareBOOL("IMShowTimestamps", TRUE, "Show timestamps in IM");
00535 
00536         // Has the user intentionally entered chatting mode, hence wanting the
00537         // chat UI to be displayed, keyboard focus to go into chat, etc.
00538         gSavedSettings.declareBOOL("ChatVisible", FALSE, "Chat bar is visible");
00539 
00540         gSavedSettings.declareString("UIImgDirectionArrowUUID",         "586383e8-4d9b-4fba-9196-2b5938e79c2c", "", NO_PERSIST);
00541 
00542         gSavedSettings.declareString("UIImgResizeBottomRightUUID",      "e3690e25-9690-4f6c-a745-e7dcd885285a", "", NO_PERSIST);
00543 
00544         // Move buttons
00545         gSavedSettings.declareString("UIImgBtnForwardOutUUID",          "a0eb4021-1b20-4a53-892d-8faa9265a6f5", "", NO_PERSIST);
00546         gSavedSettings.declareString("UIImgBtnForwardInUUID",           "54197a61-f5d1-4c29-95d2-c071d08849cb", "", NO_PERSIST);
00547         gSavedSettings.declareString("UIImgBtnSlideLeftOutUUID",        "82476321-0374-4c26-9567-521535ab4cd7", "", NO_PERSIST);
00548         gSavedSettings.declareString("UIImgBtnSlideLeftInUUID",         "724996f5-b956-46f6-9844-4fcfce1d5e83", "", NO_PERSIST);
00549         gSavedSettings.declareString("UIImgBtnLeftOutUUID",                     "13a93910-6b44-45eb-ad3a-4d1324c59bac", "", NO_PERSIST);
00550         gSavedSettings.declareString("UIImgBtnLeftInUUID",                      "95463c78-aaa6-464d-892d-3a805b6bb7bf", "", NO_PERSIST);
00551         gSavedSettings.declareString("UIImgBtnRightOutUUID",            "5a44fd04-f52b-4c30-8b00-4a31e27614bd", "", NO_PERSIST);
00552         gSavedSettings.declareString("UIImgBtnRightInUUID",                     "5e616d0d-4335-476f-9977-560bccd009da", "", NO_PERSIST);
00553         gSavedSettings.declareString("UIImgBtnSlideRightOutUUID",       "1fbe4e60-0607-44d1-a50a-032eff56ae75", "", NO_PERSIST);
00554         gSavedSettings.declareString("UIImgBtnSlideRightInUUID",        "7eeb57d2-3f37-454d-a729-8b217b8be443", "", NO_PERSIST);
00555         gSavedSettings.declareString("UIImgBtnMoveUpInUUID",            "49b4b357-e430-4b56-b9e0-05b8759c3c82", "", NO_PERSIST);
00556         gSavedSettings.declareString("UIImgBtnMoveUpOutUUID",           "f887146d-829f-4e39-9211-cf872b78f97c", "", NO_PERSIST);
00557         gSavedSettings.declareString("UIImgBtnMoveDownInUUID",          "b92a70b9-c841-4c94-b4b3-cee9eb460d48", "", NO_PERSIST);
00558         gSavedSettings.declareString("UIImgBtnMoveDownOutUUID",         "b5abc9fa-9e62-4e03-bc33-82c4c1b6b689", "", NO_PERSIST);
00559 
00560 //      gSavedSettings.declareString("UIImgBtnPopupOutUUID",            "f41ecdbf-e4b7-4eae-80fa-f0c842d85c1c");
00561 //      gSavedSettings.declareString("UIImgBtnPopupInUUID",                     "432fd877-f2ad-45ce-8ae7-d1ced88462cb");
00562 
00563         // Scrollbar
00564         gSavedSettings.declareString("UIImgBtnScrollUpOutUUID",         "dad084d7-9a46-452a-b0ff-4b9f1cefdde9", "", NO_PERSIST);
00565         gSavedSettings.declareString("UIImgBtnScrollUpInUUID",          "a93abdf3-27b5-4e22-a8fa-c48216cd2e3a", "", NO_PERSIST);
00566         gSavedSettings.declareString("UIImgBtnScrollDownOutUUID",       "b4ecdecf-5c8d-44e7-b882-17a77e88ed55", "", NO_PERSIST);
00567         gSavedSettings.declareString("UIImgBtnScrollDownInUUID",        "d2421bab-2eaf-4863-b8f6-5e4c52519247", "", NO_PERSIST);
00568         gSavedSettings.declareString("UIImgBtnScrollLeftOutUUID",       "43773e8d-49aa-48e0-80f3-a04715f4677a", "", NO_PERSIST);
00569         gSavedSettings.declareString("UIImgBtnScrollLeftInUUID",        "ea137a32-6718-4d05-9c22-7d570d27b2cd", "", NO_PERSIST);
00570         gSavedSettings.declareString("UIImgBtnScrollRightOutUUID",      "3d700d19-e708-465d-87f2-46c8c0ee7938", "", NO_PERSIST);
00571         gSavedSettings.declareString("UIImgBtnScrollRightInUUID",       "b749de64-e903-4c3c-ac0b-25fb6fa39cb5", "", NO_PERSIST);
00572 
00573         gSavedSettings.declareString("UIImgBtnJumpLeftOutUUID",     "3c18c87e-5f50-14e2-e744-f44734aa365f",     "", NO_PERSIST);
00574         gSavedSettings.declareString("UIImgBtnJumpLeftInUUID",      "9cad3e6d-2d6d-107d-f8ab-5ba272b5bfe1",     "", NO_PERSIST);
00575         gSavedSettings.declareString("UIImgBtnJumpRightOutUUID",        "ff9a71eb-7414-4cf8-866e-a701deb7c3cf", "", NO_PERSIST);
00576         gSavedSettings.declareString("UIImgBtnJumpRightInUUID",     "7dabc040-ec13-2309-ddf7-4f161f6de2f4",     "", NO_PERSIST);
00577 
00578         // Spin control
00579         gSavedSettings.declareString("UIImgBtnSpinUpOutUUID",                   "56576e6e-6710-4e66-89f9-471b59122794", "", NO_PERSIST);
00580         gSavedSettings.declareString("UIImgBtnSpinUpInUUID",                    "c8450082-96a0-4319-8090-d3ff900b4954", "", NO_PERSIST);
00581         gSavedSettings.declareString("UIImgBtnSpinDownOutUUID",                 "b6d240dd-5602-426f-b606-bbb49a30726d", "", NO_PERSIST);
00582         gSavedSettings.declareString("UIImgBtnSpinDownInUUID",                  "a985ac71-052f-48e6-9c33-d931c813ac92", "", NO_PERSIST);
00583 
00584         // Radio button control
00585         gSavedSettings.declareString("UIImgRadioActiveUUID",                    "7a1ba9b8-1047-4d1e-9cfc-bc478c80b63f", "", NO_PERSIST);
00586         gSavedSettings.declareString("UIImgRadioActiveSelectedUUID",    "52f09e07-5816-4052-953c-94c6c10479b7", "", NO_PERSIST);
00587         gSavedSettings.declareString("UIImgRadioInactiveUUID",                  "90688481-67ff-4af0-be69-4aa084bcad1e", "", NO_PERSIST);
00588         gSavedSettings.declareString("UIImgRadioInactiveSelectedUUID",  "1975db39-aa29-4251-aea0-409ac09d414d", "", NO_PERSIST);
00589 
00590         // Checkbox control
00591         gSavedSettings.declareString("UIImgCheckboxActiveUUID",                 "05bb64ee-96fd-4243-b74e-f40a41bc53ba", "", NO_PERSIST);
00592         gSavedSettings.declareString("UIImgCheckboxActiveSelectedUUID", "cf4a2ed7-1533-4686-9dde-df9a37ddca55", "", NO_PERSIST);
00593         gSavedSettings.declareString("UIImgCheckboxInactiveUUID",               "7d94cb59-32a2-49bf-a516-9e5a2045f9d9", "", NO_PERSIST);
00594         gSavedSettings.declareString("UIImgCheckboxInactiveSelectedUUID", "c817c642-9abd-4236-9287-ae0513fe7d2b", "", NO_PERSIST);
00595 
00596         // Tab panels
00597         gSavedSettings.declareString("UIImgBtnTabTopPartialOutUUID",    "932ad585-0e45-4a57-aa23-4cf81beeb7b0", "", NO_PERSIST);
00598         gSavedSettings.declareString("UIImgBtnTabTopPartialInUUID",             "7c6c6c26-0e25-4438-89bd-30d8b8e9d704", "",  NO_PERSIST);
00599         gSavedSettings.declareString("UIImgBtnTabBottomPartialOutUUID", "8dca716c-b29c-403a-9886-91c028357d6e", "", NO_PERSIST);
00600         gSavedSettings.declareString("UIImgBtnTabBottomPartialInUUID",  "eb0b0904-8c91-4f24-b500-1180b91140de", "", NO_PERSIST);
00601         gSavedSettings.declareString("UIImgBtnTabTopOutUUID",                   "1ed83f57-41cf-4052-a3b4-2e8bb78d8191", "", NO_PERSIST);
00602         gSavedSettings.declareString("UIImgBtnTabTopInUUID",                    "16d032e8-817b-4368-8a4e-b7b947ae3889", "", NO_PERSIST);
00603         gSavedSettings.declareString("UIImgBtnTabBottomOutUUID",                "bf0a8779-689b-48c3-bb9a-6af546366ef4", "", NO_PERSIST);
00604         gSavedSettings.declareString("UIImgBtnTabBottomInUUID",                 "c001d8fd-a869-4b6f-86a1-fdcb106df9c7", "", NO_PERSIST);
00605 
00606         // Tools
00607         // TODO: Move to gViewerArt
00608         gSavedSettings.declareString("UIImgGrabUUID",                                   "c63f124c-6340-4fbf-b59e-0869a44adb64", "", NO_PERSIST);
00609         gSavedSettings.declareString("UIImgGrabSelectedUUID",                   "c1e21504-f136-451d-b8e9-929037812f1d", "", NO_PERSIST);
00610 
00611         gSavedSettings.declareString("UIImgMoveUUID",                                   "2fa5dc06-bcdd-4e09-a426-f9f262d4fa65", "", NO_PERSIST);
00612         gSavedSettings.declareString("UIImgMoveSelectedUUID",                   "46f17c7b-8381-48c3-b628-6a406e060dd6", "", NO_PERSIST);
00613 
00614         gSavedSettings.declareString("UIImgRotateUUID",                                 "c34b1eaa-aae3-4351-b082-e26c0b636779", "", NO_PERSIST);
00615         gSavedSettings.declareString("UIImgRotateSelectedUUID",                 "cdfb7fde-0d13-418a-9d89-2bd91019fc95", "", NO_PERSIST);
00616 
00617         gSavedSettings.declareString("UIImgScaleUUID",                                  "88a90fef-b448-4883-9344-ecf378a60433", "", NO_PERSIST);
00618         gSavedSettings.declareString("UIImgScaleSelectedUUID",                  "55aa57ef-508a-47f7-8867-85d21c5a810d", "", NO_PERSIST);
00619 
00620         gSavedSettings.declareString("UIImgFaceUUID",                                   "ce15fd63-b0b6-463c-a37d-ea6393208b3e", "", NO_PERSIST);
00621         gSavedSettings.declareString("UIImgFaceSelectedUUID",                   "b4870163-6208-42a9-9801-93133bf9a6cd", "", NO_PERSIST);
00622 
00623         gSavedSettings.declareString("UIImgFocusUUID",                                  "57bc39d1-288c-4519-aea6-6d1786a5c274", "", NO_PERSIST);
00624         gSavedSettings.declareString("UIImgFocusSelectedUUID",                  "ab6a730e-ddfd-4982-9a32-c6de3de6d31d", "", NO_PERSIST);
00625 
00626         gSavedSettings.declareString("UIImgCreateUUID",                                 "7a0b1bdb-b5d9-4df5-bac2-ba230da93b5b", "", NO_PERSIST);
00627         gSavedSettings.declareString("UIImgCreateSelectedUUID",                 "0098b015-3daf-4cfe-a72f-915369ea97c2", "", NO_PERSIST);
00628 
00629         // Gun Tool texures
00630         gSavedSettings.declareBOOL("ShowCrosshairs",                                    TRUE, "Display crosshairs when in mouselook mode");
00631         gSavedSettings.declareString("UIImgCrosshairsUUID",                             "6e1a3980-bf2d-4274-8970-91e60d85fb52", "Image to use for crosshair display (UUID texture reference)");
00632 
00633         gSavedSettings.declareString("Language",                                                "default", "Language specifier (for XUI)" );
00634         gSavedSettings.declareString("SystemLanguage",                                  "en-us", "Language indicated by system settings (for XUI)" );
00635         
00637         // Other booleans
00638         gSavedSettings.declareBOOL("DebugPermissions",                                  FALSE, "Log permissions for selected inventory items");
00639 
00640         gSavedSettings.declareBOOL("ApplyColorImmediately", TRUE, "Preview selections in color picker immediately");
00641         gSavedSettings.declareBOOL("ApplyTextureImmediately", TRUE, "Preview selections in texture picker immediately");
00642 
00643         gSavedSettings.declareBOOL("CreateToolKeepSelected", FALSE, "After using create tool, keep the create tool active");
00644         gSavedSettings.declareBOOL("CreateToolCopySelection", FALSE, "", NO_PERSIST);
00645         gSavedSettings.declareBOOL("CreateToolCopyCenters", TRUE, "", NO_PERSIST);
00646         gSavedSettings.declareBOOL("CreateToolCopyRotates", FALSE, "", NO_PERSIST);
00647 
00648         gSavedSettings.declareBOOL("QuietSnapshotsToDisk", FALSE, "Take snapshots to disk without playing animation or sound");
00649         gSavedSettings.declareBOOL("DisableCameraConstraints", FALSE, "Disable the normal bounds put on the camera by avatar position");
00650         
00651         //gSavedSettings.declareBOOL("LogTimestamps", FALSE, "[NOT USED]");
00652         //gSavedSettings.declareBOOL("AgentUpdateMouseQuery", FALSE, "[NOT USED]");
00653         gSavedSettings.declareBOOL("AutoLogin", FALSE, "Login automatically using last username/password combination");
00654         gSavedSettings.declareBOOL("LoginAsGod", FALSE, "Attempt to login with god powers (Linden accounts only)");
00655         //gSavedSettings.declareBOOL("CameraFromPelvis", FALSE, "[NOT USED]");
00656         gSavedSettings.declareBOOL("CameraOffset", FALSE, "Render with camera offset from view frustum (rendering debug)");
00657         //gSavedSettings.declareBOOL("DynamicNearClip", TRUE, "[NOT USED]");
00658         gSavedSettings.declareBOOL("AnimationDebug", FALSE, "Show active animations in a bubble above avatars head");
00659         gSavedSettings.declareBOOL("DisplayAvatarAgentTarget", FALSE, "Show avatar positioning locators (animation debug)");
00660         //gSavedSettings.declareBOOL("DisplaySkeletons", TRUE, "[NOT USED]");
00661         gSavedSettings.declareBOOL("DisplayTimecode", FALSE, "Display timecode on screen");
00662         //gSavedSettings.declareBOOL("Drone", FALSE, "[NOT USED]");
00663         gSavedSettings.declareBOOL("DisableRendering", FALSE, "Disable GL rendering and GUI (load testing)");
00664         //gSavedSettings.declareBOOL("DumpPolyMeshTable", FALSE, "[NOT USED]");
00665         //gSavedSettings.declareBOOL("LimitAvatarToValidRegions", TRUE, "[NOT USED]");
00666         gSavedSettings.declareBOOL("VerboseLogs", FALSE, "Display source file and line number for each log item for debugging purposes");
00667         gSavedSettings.declareBOOL("FirstPersonAvatarVisible", FALSE, "Display avatar and attachments below neck while in mouselook");
00668         gSavedSettings.declareBOOL("ShowNearClip", FALSE, "", NO_PERSIST);
00669         gSavedSettings.declareBOOL("DebugWindowProc", FALSE, "Log windows messages");
00670         gSavedSettings.declareBOOL("ShowTangentBasis", FALSE, "Render normal and binormal (debugging bump mapping)");
00671         gSavedSettings.declareBOOL("AnimateTextures", TRUE, "Enable texture animation (debug)");
00672 
00673         // Selection stuff
00674         gSavedSettings.declareBOOL("LimitSelectDistance", TRUE, "Disallow selection of objects beyond max select distance");
00675         gSavedSettings.declareF32( "MaxSelectDistance", 64.f, "Maximum allowed selection distance (meters from avatar)");
00676         gSavedSettings.declareBOOL("LimitDragDistance", TRUE, "Limit translation of object via translate tool");
00677         gSavedSettings.declareF32( "MaxDragDistance", 48.f, "Maximum allowed translation distance in a single operation of translate tool (meters from start point)");
00678         gSavedSettings.declareBOOL( "SelectOwnedOnly", FALSE, "Select only objects you own" );
00679         gSavedSettings.declareBOOL( "SelectMovableOnly", FALSE, "Select only objects you can move" );
00680         gSavedSettings.declareBOOL( "RectangleSelectInclusive", TRUE, "Select objects that have at least one vertex inside selection rectangle" );
00681         gSavedSettings.declareBOOL( "RenderHiddenSelections", TRUE, "Show selection lines on objects that are behind other objects" );
00682         gSavedSettings.declareBOOL( "RenderLightRadius", FALSE, "Render the radius of selected lights" );
00683 
00684         gSavedSettings.declareF32("SelectionHighlightThickness", 0.010f, "Thickness of selection highlight line (fraction of view distance)");
00685         gSavedSettings.declareF32("SelectionHighlightUScale", 0.1f, "Scale of texture display on selection highlight line (fraction of texture size)");
00686         gSavedSettings.declareF32("SelectionHighlightVScale", 1.f, "Scale of texture display on selection highlight line (fraction of texture size)");
00687         gSavedSettings.declareF32("SelectionHighlightAlpha", 0.40f, "Opacity of selection highlight (0.0 = completely transparent, 1.0 = completely opaque)" );
00688         gSavedSettings.declareF32("SelectionHighlightAlphaTest", 0.1f, "Alpha value below which pixels are displayed on selection highlight line (0.0 = show all pixels, 1.0 = show now pixels)");
00689         gSavedSettings.declareF32("SelectionHighlightUAnim", 0.f, "Rate at which texture animates along U direction in selection highlight line (fraction of texture per second)");
00690         gSavedSettings.declareF32("SelectionHighlightVAnim", 0.5f, "Rate at which texture animates along V direction in selection highlight line (fraction of texture per second)");
00691 
00692         gSavedSettings.declareBOOL("LogMessages", FALSE, "Log network traffic");
00693         gSavedSettings.declareBOOL("LoggedIn", FALSE, "Login status at end of last session");
00694         gSavedSettings.declareBOOL("MouseSun", FALSE, "", NO_PERSIST);
00695 
00696         gSavedSettings.declareBOOL("ShowAxes", FALSE, "Render coordinate frame at your position");
00697 
00698         gSavedSettings.declareBOOL("ShowMiniMap", TRUE, "Display mini map on login");
00699         gSavedSettings.declareBOOL("ShowWorldMap", FALSE, "Display world map on login");
00700         gSavedSettings.declareBOOL("ShowToolBar", TRUE, "Show toolbar at bottom of screen");
00701         gSavedSettings.declareBOOL("ShowCameraControls", FALSE, "Display camera controls on login");
00702         gSavedSettings.declareBOOL("ShowMovementControls", FALSE, "Display movement controls on login");
00703 
00704         gSavedSettings.declareBOOL("ShowWebBrowser", FALSE, "Show in-world web browser");
00705 
00706         gSavedSettings.declareBOOL("ShowLeaders", FALSE, "", NO_PERSIST);
00707         gSavedSettings.declareBOOL("ShowDirectory", FALSE, "", NO_PERSIST);
00708 
00709         gSavedSettings.declareBOOL("AutoLoadWebProfiles", FALSE, "Automatically load ALL profile webpages without asking first.");
00710 
00711         gSavedSettings.declareBOOL("ShowCommunicate", FALSE, "", NO_PERSIST);
00712         gSavedSettings.declareBOOL("ShowChatHistory", FALSE, "", NO_PERSIST);
00713 
00714 #ifdef LL_RELEASE_FOR_DOWNLOAD
00715         gSavedSettings.declareBOOL("ShowConsoleWindow", FALSE, "Show log in separate OS window");
00716 #else
00717         gSavedSettings.declareBOOL("ShowConsoleWindow", TRUE, "Show log in separate OS window");
00718 #endif
00719 
00720         // These are ignorable warnings
00721 
00722         gSavedSettings.addWarning("AboutDirectX9");
00723         gSavedSettings.addWarning("AboutBadPCI");
00724         gSavedSettings.addWarning("AboutOldGraphicsDriver");
00725         gSavedSettings.addWarning("AboutPCIGraphics");
00726         gSavedSettings.addWarning("ReturnToOwner");
00727         gSavedSettings.addWarning("QuickTimeInstalled");
00728         gSavedSettings.addWarning("BrowserLaunch");
00729         gSavedSettings.addWarning("DeedObject");
00730         gSavedSettings.addWarning("NewClassified");
00731 
00732         // These are warnings that appear on the first experience of that condition.
00733         
00734         LLFirstUse::addConfigVariable("FirstBalanceIncrease");
00735         LLFirstUse::addConfigVariable("FirstBalanceDecrease");
00736         LLFirstUse::addConfigVariable("FirstSit");
00737         LLFirstUse::addConfigVariable("FirstMap");
00738         LLFirstUse::addConfigVariable("FirstGoTo");
00739         LLFirstUse::addConfigVariable("FirstBuild");
00740         LLFirstUse::addConfigVariable("FirstLeftClickNoHit");
00741         LLFirstUse::addConfigVariable("FirstTeleport");
00742         LLFirstUse::addConfigVariable("FirstOverrideKeys");
00743         LLFirstUse::addConfigVariable("FirstAttach");
00744         LLFirstUse::addConfigVariable("FirstAppearance");
00745         LLFirstUse::addConfigVariable("FirstInventory");
00746         LLFirstUse::addConfigVariable("FirstSandbox");
00747         LLFirstUse::addConfigVariable("FirstFlexible");
00748         LLFirstUse::addConfigVariable("FirstDebugMenus");
00749         LLFirstUse::addConfigVariable("FirstStreamingMusic");
00750         LLFirstUse::addConfigVariable("FirstStreamingVideo");
00751         LLFirstUse::addConfigVariable("FirstSculptedPrim");
00752         LLFirstUse::addConfigVariable("FirstVoice");
00753 
00754         gSavedSettings.declareBOOL("ShowDebugConsole", FALSE, "Show log in SL window");
00755         gSavedSettings.declareBOOL("ShowDebugStats", FALSE, "Show performance stats display");
00756         gSavedSettings.declareBOOL("OpenDebugStatBasic", TRUE, "Expand basic performance stats display");
00757         gSavedSettings.declareBOOL("OpenDebugStatAdvanced", FALSE, "Expand advanced performance stats display");
00758         gSavedSettings.declareBOOL("OpenDebugStatNet", TRUE, "Expand network stats display");
00759         gSavedSettings.declareBOOL("OpenDebugStatRender", TRUE, "Expand render stats display");
00760         gSavedSettings.declareBOOL("OpenDebugStatSim", TRUE, "Expand simulator performance stats display");
00761         gSavedSettings.declareBOOL("ShowDepthBuffer", FALSE, "Show depth buffer contents");
00762 
00763         gSavedSettings.declareBOOL("DebugShowTime", FALSE, "Show depth buffer contents");
00764         gSavedSettings.declareBOOL("DebugShowRenderInfo", FALSE, "Show depth buffer contents");
00765         
00766 //      gSavedSettings.declareBOOL("ShowHUD", TRUE);
00767         //gSavedSettings.declareBOOL("ShowHUDText", TRUE, "[NOT USED]");
00768         //gSavedSettings.declareBOOL("ShowHeadlight", FALSE, "[NOT USED]");
00769         //gSavedSettings.declareBOOL("ShowLand", TRUE, "[NOT USED]");
00770 //      gSavedSettings.declareBOOL("ShowMove", TRUE);
00771         //gSavedSettings.declareBOOL("SurfaceDetail", TRUE, "[NOT USED]");
00772         //gSavedSettings.declareBOOL("ShowObjectBounds", FALSE, "[NOT USED]");
00773         //gSavedSettings.declareBOOL("ShowObjectEdit", FALSE, "[NOT USED]");
00774         gSavedSettings.declareBOOL("ShowObjectUpdates", FALSE, "Show when update messages are received for individual objects");
00775         //gSavedSettings.declareBOOL("ShowObjects", TRUE, "[NOT USED]");
00776         //gSavedSettings.declareBOOL("ShowRegions", FALSE, "[NOT USED]");
00777 //      gSavedSettings.declareBOOL("ShowTalk", TRUE);
00778         //gSavedSettings.declareBOOL("ShowTimerBar", FALSE, "[NOT USED]");
00779         //gSavedSettings.declareBOOL("ShowWater", FALSE, "[NOT USED]");
00780         gSavedSettings.declareBOOL("SpeedTest", FALSE, "Performance testing mode, no network");
00781         //gSavedSettings.declareBOOL("TempMouseLook", FALSE, "[NOT USED]");
00782         gSavedSettings.declareBOOL("UseEnergy", TRUE, "", NO_PERSIST);
00783 //      gSavedSettings.declareBOOL("UseFirstPersonDrag", FALSE);
00784         //gSavedSettings.declareBOOL("UseLighting", TRUE, "[NOT USED]");
00785         //gSavedSettings.declareBOOL("UseWireframe", FALSE, NO_PERSIST);
00786         gSavedSettings.declareBOOL("VelocityInterpolate", TRUE, "Extrapolate object motion from last packet based on received velocity");
00787         gSavedSettings.declareBOOL("PingInterpolate", FALSE, "Extrapolate object position along velocity vector based on ping delay");
00788         gSavedSettings.declareBOOL("AvatarBacklight", TRUE, "Add rim lighting to avatar rendering to approximate shininess of skin");
00789 
00790         // Startup stuff
00791         gSavedSettings.declareF32("PrecachingDelay", 6.f, "Delay when logging in to load world before showing it (seconds)");   // seconds
00792 
00793         // Rendering stuff
00794         gSavedSettings.declareF32("RenderGamma",                                0.f, "Sets gamma exponent for renderer");
00795         gSavedSettings.declareF32( "RenderNightBrightness",             1.0f, "Brightness multiplier for moon during nighttime" );
00796         gSavedSettings.declareBOOL("RenderWater",                               TRUE, "Display water" );
00797         gSavedSettings.declareF32( "RenderFarClip",                             256.f, "Distance of far clip plane from camera (meters)" );
00798         gSavedSettings.declareF32( "RenderFogRatio",                    2.0f, "Distance from camera where fog reaches maximum density (fraction or multiple of far clip distance)");
00799         gSavedSettings.declareBOOL("RenderAnisotropic",                 FALSE, "Render textures using anisotropic filtering" );
00800         gSavedSettings.declareBOOL("ShowXUINames",                          FALSE, "Display XUI Names as Tooltips" );
00801         gSavedSettings.declareS32("RenderLightingDetail",               1, "Amount of detail for lighting objects/avatars/terrain (0=sun/moon only, 1=enable local lights)" );
00802         gSavedSettings.declareS32("RenderTerrainDetail",                2, "Detail applied to terrain texturing (0 = none, 1 or 2 = full)" );
00803         gSavedSettings.declareF32( "RenderVolumeLODFactor",             1.f, "Controls level of detail of primitives (multiplier for current screen area when calculated level of detail)" );
00804         gSavedSettings.declareF32( "RenderFlexTimeFactor",              1.f, "Controls level of detail of flexible objects (multiplier for amount of time spent processing flex objects)" );
00805         gSavedSettings.declareF32( "RenderTreeLODFactor",               0.5f, "Controls level of detail of vegetatopm (multiplier for current screen area when calculated level of detail)" );
00806         gSavedSettings.declareF32( "RenderAvatarLODFactor",             0.5f, "Controls level of detail of avatars (multiplier for current screen area when calculated level of detail)" );
00807         gSavedSettings.declareF32( "RenderBumpmapMinDistanceSquared", 100.f, "Maximum distance at which to render bumpmapped primitives (distance in meters, squared)" );
00808         gSavedSettings.declareS32( "RenderMaxPartCount",                4096, "Maximum number of particles to display on screen");
00809         gSavedSettings.declareBOOL("RenderVBOEnable",                   TRUE, "Use GL Vertex Buffer Objects" );
00810         gSavedSettings.declareS32("RenderReflectionRes",                64, "Reflection map resolution.");
00811         //gSavedSettings.declareBOOL("RenderUseTriStrips",              FALSE, "[NOT USED]");
00812         //gSavedSettings.declareBOOL("RenderCullBySize",                        FALSE, "[NOT USED]" );
00813         gSavedSettings.declareF32("RenderTerrainScale",                 12.f, "Terrain detail texture scale");
00814         gSavedSettings.declareBOOL("VertexShaderEnable",                FALSE, "Enable/disable all GLSL shaders (debug)");
00815         gSavedSettings.declareBOOL("RenderInitError",                   FALSE, "Error occured while initializing GL");
00816         gSavedSettings.declareBOOL("RenderRippleWater",                 FALSE, "Display more realistic water, with refraction (requires pixel shader support on your video card)");
00817         gSavedSettings.declareBOOL("RenderDynamicReflections",  FALSE, "Generate a dynamic cube map for reflections (objects reflect their environment, experimental).");
00818         gSavedSettings.declareBOOL("RenderGlow",                                FALSE, "Make light sources glow.");
00819         gSavedSettings.declareF32("RenderGlowStrength",                 1.25f, "Strength of glow");
00820         gSavedSettings.declareS32("RenderGlowSize",                             5, "Size of glow (in pixels)");
00821         gSavedSettings.declareS32("RenderGlowResolution",               256, "Glow map resolution.");
00822         gSavedSettings.declareBOOL("RenderObjectBump",                  TRUE, "Show bumpmapping on primitives");
00823         gSavedSettings.declareS32("RenderAvatarMode",                   1, "Controls how avatars are rendered (0 = normal, 1 = bump mapped, 2 = bump mapped and wavy cloth)");
00824         gSavedSettings.declareBOOL("RenderAvatarVP",                    TRUE, "Use vertex programs to perform hardware skinning of avatar");
00825         gSavedSettings.declareS32("RenderAvatarMaxVisible",             35, "Maximum number of avatars to display at any one time");
00826         //gSavedSettings.declareBOOL("RenderForceGetTexImage",  FALSE, "[NOT USED]");
00827         gSavedSettings.declareBOOL("RenderFastUI",                              FALSE, "[NOT USED]");
00828         gSavedSettings.declareBOOL("RenderUseSharedDrawables",  TRUE, "Collapse transforms on moving linked objects for faster updates");
00829         gSavedSettings.declareS32("DebugBeaconLineWidth", 1, "Size of lines for Debug Beacons");
00830 
00831         // Snapshot params
00832         gSavedSettings.declareBOOL("RenderUIInSnapshot",                FALSE, "Display user interface in snapshot" );
00833         gSavedSettings.declareBOOL("RenderHUDInSnapshot",               FALSE, "Display HUD attachments in snapshot" );
00834         gSavedSettings.declareBOOL("HighResSnapshot",                   FALSE, "Double resolution of snapshot from current window resolution" );
00835         gSavedSettings.declareBOOL("CompressSnapshotsToDisk",   FALSE, "Compress snapshots saved to disk (Using JPEG 2000)" );
00836         gSavedSettings.declareBOOL("FreezeTime",                                FALSE, "", FALSE );
00837         gSavedSettings.declareBOOL("UseFreezeFrame",                    FALSE, "Freeze time when taking snapshots.");
00838         gSavedSettings.declareBOOL("CloseSnapshotOnKeep",               TRUE, "Close snapshot window after saving snapshot" );
00839         gSavedSettings.declareBOOL("KeepAspectForSnapshot",             FALSE, "Use full window when taking snapshot, regardless of requested image size" );
00840         gSavedSettings.declareBOOL("AutoSnapshot",                              TRUE, "Update snapshot when camera stops moving, or any parameter changes" );
00841         gSavedSettings.declareS32("LastSnapshotType",                   0, "Select this as next type of snapshot to take (0 = postcard, 1 = texture, 2 = local image)" );
00842         gSavedSettings.declareS32("LastSnapshotWidth",                  1024, "The width of the last snapshot, in px" );
00843         gSavedSettings.declareS32("LastSnapshotHeight",                 768, "The height of the last snapshot, in px" );
00844         
00845         gSavedSettings.declareS32("SnapshotPostcardLastResolution",     0, "Take next postcard snapshot at this resolution" );
00846         gSavedSettings.declareS32("SnapshotTextureLastResolution",      0, "Take next texture snapshot at this resolution" );
00847         gSavedSettings.declareS32("SnapshotLocalLastResolution",        0, "Take next local snapshot at this resolution" );
00848         gSavedSettings.declareS32("SnapshotQuality",                    75, "Quality setting of postcard JPEGs (0 = worst, 100 = best)" );
00849 
00850         gSavedSettings.declareBOOL("DisableVerticalSync",               TRUE, "Update frames as fast as possible (FALSE = update frames between display scans)" );
00851 
00852         // Statistics stuff
00853         gSavedSettings.declareBOOL("StatsAutoRun", FALSE, "Play back autopilot");
00854         gSavedSettings.declareS32("StatsNumRuns", -1, "Loop autopilot playback this number of times");
00855         //gSavedSettings.declareBOOL("StatsContinuousLoop", FALSE, "[NOT USED]");
00856         gSavedSettings.declareBOOL("StatsQuitAfterRuns", FALSE, "Quit application after this number of autopilot playback runs");
00857         gSavedSettings.declareBOOL("StatsSessionTrackFrameStats", FALSE, "Track rendering and network statistics");
00858         gSavedSettings.declareString("StatsPilotFile", "pilot.txt", "Filename for stats logging autopilot path");
00859         gSavedSettings.declareString("StatsSummaryFile", "fss.txt", "Filename for stats logging summary");
00860         gSavedSettings.declareString("StatsFile", "fs.txt", "Filename for stats logging output");
00861 
00862         // Image pipeline stuff
00863         gSavedSettings.declareS32("GraphicsCardMemorySetting", -1, "Amount of memory on your video card (-1 = autodetect, 0 = 16MB, 1 = 32MB, 2 = 64MB, 3 = 128MB, 4 = 256MB, 5 = 512MB)"); // default to auto-detect
00864         //gSavedSettings.declareS32("ImageRadioTexMem", 0, "Texture memory allocation (0 = <512 megabytes system RAM, 1 = >512 megabytes system RAM)");
00865         //gSavedSettings.declareS32("ImageRadioVidCardMem", 1, "Video card onboard memory (0 = 16MB, 1 = 32MB, 2 = 64MB, 3 = 128MB, 4 = 256MB, 5 = 512MB)");
00866         //gSavedSettings.declareU32("LastRAMDetected", 0, "[DO NOT MODIFY] Detected system memory (bytes)");  // used to detect RAM changes
00867         gSavedSettings.declareBOOL("ImagePipelineUseHTTP", FALSE, "If TRUE use HTTP GET to fetch textures from the server");
00868 
00869         // Image compression
00870         gSavedSettings.declareBOOL("LosslessJ2CUpload", FALSE, "Use lossless compression for small image uploads");
00871         
00872         // Threading
00873         gSavedSettings.declareBOOL("RunMultipleThreads", FALSE, "If TRUE keep background threads active during render");
00874 
00875         // Cooperative Multitasking
00876         gSavedSettings.declareS32("BackgroundYieldTime", 40, "Amount of time to yield every frame to other applications when SL is not the foreground window (milliseconds)");
00877 
00878         // Camera control
00879         gSavedSettings.declareBOOL("AutoPilotLocksCamera", FALSE, "Keep camera position locked when avatar walks to selected position");
00880         //gSavedSettings.declareBOOL("AvatarLooksAtCamera", TRUE, "[NOT USED]");
00881         //gSavedSettings.declareF32("FlyHeightOffGround",               1.f, "[NOT USED]");
00882         gSavedSettings.declareF32("DynamicCameraStrength", 2.f, "Amount camera lags behind avatar motion (0 = none, 30 = avatar velocity)");
00883 
00884         gSavedSettings.declareVec3("CameraOffsetBuild",         LLVector3(-6.0f,  0,  6.0f), "Default camera position relative to focus point when entering build mode");
00885         gSavedSettings.declareVec3("CameraOffsetDefault",       LLVector3(-3.0f,  0,  0.75f), "Default camera offset from avatar");
00886         //gSavedSettings.declareVec3("CameraOffsetDefault",     LLVector3(-3.0f,  0,  1.5f));
00887 
00888         //gSavedSettings.declareVec3("FocusOffsetBuild",                LLVector3(4,  0,  0), "[NOT USED]");
00889         gSavedSettings.declareVec3("FocusOffsetDefault",        LLVector3(1,  0,  1), "Default focus point offset relative to avatar (x-axis is forward)");
00890         gSavedSettings.declareBOOL("TrackFocusObject", TRUE, "Camera tracks last object zoomed on");
00891 
00892         gSavedSettings.declareVec3d("FocusPosOnLogout",         LLVector3d(0,  0,  0), "Camera focus point when last logged out (global coordinates)");
00893         gSavedSettings.declareVec3d("CameraPosOnLogout",        LLVector3d(0,  0,  0), "Camera position when last logged out (global coordinates)");
00894 
00895         // Terrain coloring
00896         // JC 8/28/2002 - Adjusted to make the beta farm look good, with
00897         // 20 meter water height.  Talk with me before changing these.
00898         gSavedSettings.declareF32("TerrainColorStartHeight", 20.f, "Starting altitude for terrain texturing (meters)"); // -1 to 1
00899         gSavedSettings.declareF32("TerrainColorHeightRange", 60.f, "Altitude range over which a given terrain texture has effect (meters)");    // max land height
00900 
00901         // Avatar stuff
00902         gSavedSettings.declareF32("PitchFromMousePosition", 90.f, "Vertical range over which avatar head tracks mouse position (degrees of head rotation from top of window to bottom)");
00903         gSavedSettings.declareF32("YawFromMousePosition", 90.f, "Horizontal range over which avatar head tracks mouse position (degrees of head rotation from left of window to right)");
00904         gSavedSettings.declareF32("ZoomTime", 0.4f, "Time of transition between different camera modes (seconds)");
00905         gSavedSettings.declareS32("AvatarCompositeLimit", 5, "Maximum number of avatars to display appearance changes on the fly");
00906 
00907         // Default throttle
00908         // These must also be changed in llviewerthrottle.h
00909         // Currently matches BW_PRESET_300
00910         gSavedSettings.declareF32("ThrottleBandwidthKBPS", 500.f, "Maximum allowable downstream bandwidth (kilo bits per second)");
00911 
00912         gSavedSettings.declareBOOL("ConnectionPortEnabled", FALSE, "Use the custom connection port?");
00913         gSavedSettings.declareU32("ConnectionPort", 13000, "Custom connection port number");
00914 
00915         // File xfer throttle
00916         gSavedSettings.declareF32("XferThrottle", 150000.f, "Maximum allowable downstream bandwidth for asset transfers (bits per second)");
00917 
00918         //gSavedSettings.declareS32("BWRadio", 0, "[NOT USED]");
00919 
00920         gSavedSettings.declareRect("ChatterboxRect", LLRect(0, 400, 350, 0), "Rectangle for chatterbox window");
00921         gSavedSettings.declareRect("FloaterActiveSpeakersRect", LLRect(0, 300, 250, 0), "Rectangle for active speakers window");
00922 
00923         // Avatar customizing floaters
00924         gSavedSettings.declareRect("FloaterCustomizeAppearanceRect", LLRect(0, 540, 494, 0), "Rectangle for avatar customization window");
00925 
00926         // Build options floater
00927         gSavedSettings.declareRect("FloaterBuildOptionsRect", LLRect(0,0,0,0), "Rectangle for build options window.");
00928         
00929         gSavedSettings.declareRect("FloaterJoystickRect", LLRect(0,0,0,0), "Rectangle for joystick controls window.");
00930 
00931         // Map floater
00932         gSavedSettings.declareRect("FloaterMapRect", LLRect(0, 225, 200, 0), "Rectangle for world map");
00933 
00934         //Lag-o-Meter floater
00935         gSavedSettings.declareRect("FloaterLagMeter", LLRect(0, 142, 350, 0), "Rectangle for lag meter");
00936         gSavedSettings.declareBOOL("LagMeterShrunk", FALSE, "Last large/small state for lag meter");
00937 
00938         gSavedSettings.declareF32("MapScale", 128.f, "World map zoom level (pixels per region)");
00939 
00940         gSavedSettings.declareF32("MiniMapScale", 128.f, "Miniature world map zoom levle (pixels per region)");
00941 
00942         gSavedSettings.declareBOOL("MiniMapRotate",     TRUE, "Rotate miniature world map to avatar direction");
00943 
00944         gSavedSettings.declareString("UIImgBtnPanUpOutUUID",    "47a8c844-cd2a-4b1a-be01-df8b1612fe5d", "", NO_PERSIST);
00945         gSavedSettings.declareString("UIImgBtnPanUpInUUID",             "e5821134-23c0-4bd0-af06-7fa95b9fb01a", "", NO_PERSIST);
00946         gSavedSettings.declareString("UIImgBtnPanDownOutUUID",  "47a8c844-cd2a-4b1a-be01-df8b1612fe5d", "", NO_PERSIST);
00947         gSavedSettings.declareString("UIImgBtnPanDownInUUID",   "e5821134-23c0-4bd0-af06-7fa95b9fb01a", "", NO_PERSIST);
00948         gSavedSettings.declareString("UIImgBtnPanLeftOutUUID",  "47a8c844-cd2a-4b1a-be01-df8b1612fe5d", "", NO_PERSIST);
00949         gSavedSettings.declareString("UIImgBtnPanLeftInUUID",   "e5821134-23c0-4bd0-af06-7fa95b9fb01a", "", NO_PERSIST);
00950         gSavedSettings.declareString("UIImgBtnPanRightOutUUID", "47a8c844-cd2a-4b1a-be01-df8b1612fe5d", "", NO_PERSIST);
00951         gSavedSettings.declareString("UIImgBtnPanRightInUUID",  "e5821134-23c0-4bd0-af06-7fa95b9fb01a", "", NO_PERSIST);
00952 
00953         // Talk panel
00954         gSavedSettings.declareRect("FloaterIMRect",                             LLRect(0, 10*16, 500, 0), "Rectangle for IM window");
00955 
00956         // Chat floater
00957         // Rectangle should almost fill the bottom of the screen on 800x600
00958         // Note that the saved rect size is the size with history shown.
00959         gSavedSettings.declareRect("FloaterChatRect",                   LLRect( 0, 10*16 + 12, 500, 0 ), "Rectangle for chat history");
00960         gSavedSettings.declareRect("FloaterMuteRect3",                  LLRect( 0, 300, 300, 0), "Rectangle for mute window");
00961         gSavedPerAccountSettings.declareString("BusyModeResponse",              "The Resident you messaged is in 'busy mode' which means they have requested not to be disturbed.  Your message will still be shown in their IM panel for later viewing.", "Auto response to instant messages while in busy mode.");
00962         gSavedPerAccountSettings.declareString("InstantMessageLogPath", "", "Path to your log files.");
00963         gSavedPerAccountSettings.declareBOOL("LogInstantMessages",      FALSE, "Log Instant Messages");
00964         gSavedPerAccountSettings.declareBOOL("LogChat", FALSE, "Log Chat");
00965         gSavedPerAccountSettings.declareBOOL("LogShowHistory",  FALSE, "Log Show History");
00966         gSavedPerAccountSettings.declareBOOL("IMLogTimestamp",  FALSE, "Log Timestamp of Instant Messages");
00967         gSavedPerAccountSettings.declareBOOL("LogChatTimestamp",        FALSE, "Log Timestamp of Chat");
00968         gSavedPerAccountSettings.declareBOOL("LogChatIM",       FALSE, "Log Incoming Instant Messages with Chat");
00969         gSavedPerAccountSettings.declareBOOL("LogTimestampDate",        FALSE, "Include Date with Timestamp");
00970 
00971         // Inventory
00972         gSavedSettings.declareRect("FloaterInventoryRect", LLRect(0, 400, 300, 0), "Rectangle for inventory window" );
00973 
00974         // properties, only width and height is used.
00975         gSavedSettings.declareRect("PropertiesRect", LLRect(0, 320, 350, 0), "Rectangle for inventory item properties window");
00976 
00977         // Previews - only width and height are used
00978         gSavedSettings.declareRect("PreviewTextureRect",                        LLRect(0, 400, 400, 0), "Rectangle for texture preview window" );  // Only width and height are used
00979         gSavedSettings.declareRect("PreviewScriptRect",                         LLRect(0, 550, 500, 0), "Rectangle for script preview window" );  // Only width and height are used
00980         gSavedSettings.declareRect("LSLHelpRect",                                       LLRect(0, 400, 400, 0), "Rectangle for LSL help window" );  // Only width and height are used
00981         gSavedSettings.declareRect("PreviewLandmarkRect",                       LLRect(0,  90, 300, 0), "Rectangle for landmark preview window" );  // Only width and height are used
00982         gSavedSettings.declareRect("PreviewURLRect",                            LLRect(0,  90, 300, 0), "Rectangle for URL preview window" );  // Only width and height are used
00983         gSavedSettings.declareRect("PreviewEventRect",                          LLRect(0, 530, 420, 0), "Rectangle for Event preview window" );  // Only width and height are used
00984         gSavedSettings.declareRect("PreviewClassifiedRect",                     LLRect(0, 530, 420, 0), "Rectangle for URL preview window" );  // Only width and height are used
00985         gSavedSettings.declareRect("PreviewSoundRect",                          LLRect(0,  85, 300, 0), "Rectangle for sound preview window" );  // Only width and height are used
00986         gSavedSettings.declareRect("PreviewObjectRect",                         LLRect(0,  85, 300, 0), "Rectangle for object preview window" );  // Only width and height are used
00987         gSavedSettings.declareRect("PreviewWearableRect",                       LLRect(0,  85, 300, 0), "Rectangle for wearable preview window" );  // Only width and height are used
00988         gSavedSettings.declareRect("PreviewAnimRect",                           LLRect(0,  85, 300, 0), "Rectangle for animation preview window" );  // Only width and height are used
00989         // permissions manager
00990         gSavedSettings.declareRect("PermissionsManagerRect",            LLRect(0,  85, 300, 0), "Rectangle for permissions manager window" );  // Only width and height are used
00991 
00992         // Land floater - force to top left
00993         //gSavedSettings.declareRect("FloaterLandRect3", LLRect(0, 370, 340, 0));
00994         //gSavedSettings.declareRect("FloaterLandRect4", LLRect(0, 370, 400, 0), "Rectangle for About Land window"); // deprecated
00995         gSavedSettings.declareRect("FloaterLandRect5", LLRect(0, 370, 460, 0), "Rectangle for About Land window");
00996 
00997         // Texture Picker
00998         gSavedSettings.declareRect("TexturePickerRect",                         LLRect(0, 290, 350, 0), "Rectangle for texture picker" );  // Only width and height are used
00999         gSavedSettings.declareBOOL("TexturePickerShowFolders", TRUE, "Show folders with no texures in texture picker");
01000 
01001         gSavedSettings.declareRect("FloaterGestureRect", LLRect(0, 480, 320, 0), "Rectangle for gestures window");
01002         gSavedSettings.declareRect("FloaterClothingRect", LLRect(0, 480, 320, 0), "Rectangle for clothing window");
01003         gSavedSettings.declareBOOL("ClothingBtnState", FALSE, "", NO_PERSIST);
01004         gSavedSettings.declareRect("FloaterHTMLRect", LLRect(0, 500, 700, 0), "Rectangle for HTML window");
01005 
01006         gSavedSettings.declareRect("FloaterRegionInfo", LLRect(0, 512, 480, 0), "Rectangle for region info window");
01007 
01008         // Landmark Picker
01009         gSavedSettings.declareRect("FloaterLandmarkRect", LLRect(0, 290, 310, 0), "Rectangle for landmark picker" );  // Only width and height are used
01010 
01011         // editors
01012         // Only width and height are used
01013         gSavedSettings.declareRect("NotecardEditorRect", LLRect(0, 400, 400, 0), "Rectangle for notecard editor");
01014 
01015         // recompile everything dialog
01016         gSavedSettings.declareRect("CompileOutputRect", LLRect(0, 400, 300, 0), "Rectangle for script Recompile Everything output window");
01017 
01018         // L$
01019         gSavedSettings.declareRect("FloaterPayRectB", LLRect(0, 150, 400, 0), "Rectangle for pay window");
01020 
01021         // Buy
01022         gSavedSettings.declareRect("FloaterBuyRect", LLRect(0, 250, 300, 0), "Rectangle for buy window");
01023 
01024         // Buy Contents
01025         gSavedSettings.declareRect("FloaterBuyContentsRect", LLRect(0, 250, 300, 0), "Rectangle for Buy Contents window");
01026 
01027         // Open Contents
01028         gSavedSettings.declareRect("FloaterOpenObjectRect", LLRect(0, 350, 300, 0), "Rectangle for Open Object window");
01029 
01030         // the about box
01031         gSavedSettings.declareRect("FloaterAboutRect", LLRect(0, 440, 470, 0), "Rectangle for About window");
01032 
01033         // the mean box
01034         gSavedSettings.declareRect("FloaterBumpRect", LLRect(0, 180, 400, 0), "Rectangle for Bumps/Hits window");
01035 
01036         // the inspect box
01037         gSavedSettings.declareRect("FloaterInspectRect", LLRect(0, 400, 400, 0), "Rectangle for Object Inspect window");
01038 
01039         // World map.  If 0,0,0,0, will attempt to size to fullscreen.
01040         gSavedSettings.declareRect("FloaterWorldMapRect",
01041                                                                 LLRect(0,0,0,0), "Rectangle for world map window");
01042 
01043         // Find dialog.
01044         gSavedSettings.declareRect("FloaterFindRect2", LLRect(0, 570, 780, 0), "Rectangle for Find window");
01045 
01046         // Talk To dialog, force to top of screen
01047         //gSavedSettings.declareRect("FloaterTalkToRect", LLRect(0, 130, 330, 0), "[NOT USED]");
01048         // Script error/debug dialog, force to top of screen
01049         gSavedSettings.declareRect("FloaterScriptDebugRect", LLRect(0, 130, 450, 0), "Rectangle for Script Error/Debug window");
01050 
01051         // HUD Console
01052         gSavedSettings.declareS32("ConsoleBufferSize",  40, "Size of chat console history (lines of chat)");
01053 
01054         //gSavedSettings.declareString("UIImgCompassTextureUUID",               "79156764-de98-4815-9d50-b10a7646bcf4", "[NOT USED]");
01055 
01056         // Script Panel
01057         //gSavedSettings.declareRect("ScriptPanelRect",  LLRect(250,  175 + 400,  250 + 400, 175), "[NOT USED]");
01058 
01059         // volume floater
01060         gSavedSettings.declareRect("FloaterAudioVolumeRect", LLRect(0, 440, 470, 0), "Rectangle for Audio Volume window");
01061         
01062         // Radio button sets
01063         gSavedSettings.declareU32("AvatarSex", 0, "", NO_PERSIST);
01064 
01065         // Radio button sets
01066         gSavedSettings.declareS32("RadioLandBrushAction", 0, "Last selected land modification operation (0 = flatten, 1 = raise, 2 = lower, 3 = smooth, 4 = roughen, 5 = revert)");
01067         gSavedSettings.declareS32("RadioLandBrushSize", 0, "Size of land modification brush (0 = small, 1 = medium, 2 = large)");
01068 
01069         // Build Options Panel
01070         gSavedSettings.declareBOOL("SnapEnabled", TRUE, "Enable snapping to grid");
01071         gSavedSettings.declareBOOL("SnapToMouseCursor", FALSE, "When snapping to grid, center object on nearest grid point to mouse cursor");
01072         gSavedSettings.declareF32 ("GridResolution", 0.5f, "Size of single grid step (meters)");
01073         gSavedSettings.declareF32 ("GridDrawSize", 12.0f, "Visible extent of 2D snap grid (meters)");
01074         gSavedSettings.declareBOOL("GridSubUnit", FALSE, "Display fractional grid steps, relative to grid size");
01075         gSavedSettings.declareF32("GridOpacity", 0.7f, "Grid line opacity (0.0 = completely transparent, 1.0 = completely opaque)");
01076         gSavedSettings.declareBOOL("GridCrossSections", FALSE, "Highlight cross sections of prims with grid manipulation plane.");
01077         
01078         gSavedSettings.declareS32("GridMode", 0, "Snap grid reference frame (0 = world, 1 = local, 2 = reference object)");
01079         //gSavedSettings.declareBOOL("GridIsLocal", FALSE, "[NOT USED]");
01080         gSavedSettings.declareS32("GridSubdivision", 32, "Maximum number of times to divide single snap grid unit when GridSubUnit is true");
01081         gSavedSettings.declareF32 ("RotationStep", 1.0f, "All rotations via rotation tool are constrained to multiples of this unit (degrees)");
01082 
01083         // Saved state for window
01084         gSavedSettings.declareBOOL("WindowMaximized", TRUE, "SL viewer window maximized on login");
01085         gSavedSettings.declareS32("WindowHeight", WINDOW_HEIGHT, "SL viewer window height");
01086         gSavedSettings.declareS32("WindowWidth", WINDOW_WIDTH, "SL viewer window width");
01087         gSavedSettings.declareS32("WindowX", 10, "X coordinate of lower left corner of SL viewer window, relative to primary display (pixels)");
01088         gSavedSettings.declareS32("WindowY", 10, "Y coordinate of lower left corner of SL viewer window, relative to primary display (pixels)");
01089 
01090         // Fullscreen menu options
01091         gSavedSettings.declareBOOL("FullScreen", FALSE, "Run SL in fullscreen mode");
01092 //#if LL_DARWIN
01093 //      gSavedSettings.declareBOOL("FullScreen", FALSE);
01094 //#else
01095 //      gSavedSettings.declareBOOL("FullScreen", TRUE);
01096 //#endif
01097 
01098         // Fullscreen actual settings
01099         gSavedSettings.declareS32("FullScreenWidth", 1024, "Fullscreen resolution in width");
01100         gSavedSettings.declareS32("FullScreenHeight", 768, "Fullscreen resolution in height");
01101         gSavedSettings.declareF32("FullScreenAspectRatio", 1.3333f, "Aspect ratio of fullscreen display (width / height)");
01102         gSavedSettings.declareBOOL("FullScreenAutoDetectAspectRatio", TRUE, "Automatically detect proper aspect ratio for fullscreen display");
01103         
01104         // UI general settigns
01105         gSavedSettings.declareBOOL("TabToTextFieldsOnly", FALSE, "TAB key takes you to next text entry field, instead of next widget");
01106         gSavedSettings.declareF32("UIScaleFactor", 1.f, "Size of UI relative to default layout on 1024x768 screen");
01107         gSavedSettings.declareBOOL("UIAutoScale", TRUE, "Keep UI scale consistent across different resolutions");
01108         
01109         // Login
01110         gSavedSettings.declareString("FirstName", "", "Login first name");
01111         gSavedSettings.declareString("LastName", "", "Login last name");
01112     gSavedPerAccountSettings.declareU32("LastLogoff", 0, "Last logoff");
01113 
01114         // Legacy password storage.  Now stored in separate file.
01115         gSavedSettings.declareString("Marker", "", "[NOT USED]");
01116 
01117         gSavedSettings.declareBOOL("RememberPassword", TRUE, "Keep password (in encrypted form) for next login");
01118         gSavedSettings.declareBOOL("LoginLastLocation", TRUE, "Login at same location you last logged out");
01119         gSavedSettings.declareBOOL("ShowStartLocation", FALSE, "Display starting location menu on login screen");
01120         gSavedSettings.declareBOOL("FlyingAtExit", FALSE, "Was flying when last logged out, so fly when logging in");
01121 
01122 //      gSavedSettings.declareString("AvatarTexture", "be20de2d-7812-4e0e-80f2-33aadf185a9f");
01123         gSavedSettings.declareU32("RegionTextureSize", 256, "Terrain texture dimensions (power of 2)");
01124 
01125         // Selection option
01126         gSavedSettings.declareBOOL("EditLinkedParts", FALSE, "Select individual parts of linked objects", NO_PERSIST);
01127 
01128         // Selection beam
01129         gSavedSettings.declareBOOL("ShowSelectionBeam", TRUE, "Show selection particle beam when selecting or interacting with objects.");
01130         
01131         // Scale manipulator
01132         gSavedSettings.declareBOOL("ScaleUniform", FALSE, "Scale selected objects evenly about center of selection");
01133         gSavedSettings.declareBOOL("ScaleShowAxes", FALSE, "Show indicator of selected scale axis when scaling");
01134         gSavedSettings.declareBOOL("ScaleStretchTextures", TRUE, "Stretch textures along with object when scaling");
01135 
01136         //------------------------------------------------------------------------
01137         // Help viewer
01138         //------------------------------------------------------------------------
01139         gSavedSettings.declareString("HelpHomeURL", "help/index.html", "URL of initial help page");
01140         gSavedSettings.declareString("HelpLastVisitedURL", "help/index.html", "URL of last help page, will be shown next time help is accessed");
01141 
01142         // HTML dialog (general purpose)
01143         gSavedSettings.declareRect("HtmlFloaterRect", LLRect(100,460,370,100), "Rectangle for HTML Floater window");
01144 
01145         // HTML sim release message floater
01146         gSavedSettings.declareRect("HtmlReleaseMessage", LLRect(46,520,400,128), "Rectangle for HTML Release Message Floater window");
01147         
01148         
01149         // HTML help 
01150         gSavedSettings.declareString("HtmlHelpLastPage", "", "Last URL visited via help system");
01151         gSavedSettings.declareRect("HtmlHelpRect", LLRect(16,650,600,128), "Rectangle for HTML help window");
01152         gSavedSettings.declareRect("HtmlFindRect", LLRect(16,650,600,128), "Rectangle for HTML find window");
01153 
01154         // Audio
01155         gSavedSettings.declareF32("AudioLevelMaster", 1.0f, "Master audio level, or overall volume");
01156         gSavedSettings.declareF32("AudioLevelSFX",        1.0f, "Audio level of in-world sound effects");
01157         gSavedSettings.declareF32("AudioLevelAmbient",0.5f, "Audio level of environment sounds");
01158         gSavedSettings.declareF32("AudioLevelUI",        0.5f, "Audio level of UI sound effects");
01159         gSavedSettings.declareF32("AudioLevelMusic", 1.0f, "Audio level of streaming music");
01160         gSavedSettings.declareF32("AudioLevelVoice", 1.0f, "Audio level of voice chat");
01161         gSavedSettings.declareF32("AudioLevelMedia", 1.0f, "Audio level of Quicktime movies");
01162         gSavedSettings.declareF32("AudioLevelMic", 1.0f, "Audio level of microphone input");
01163 
01164 //      gSavedSettings.declareF32("MediaAudioVolume", 1.0f, "Audio level of Quicktime movies"); // removed
01165 
01166         gSavedSettings.declareF32("AudioLevelDistance", 1.0f, "Scale factor for audio engine (multiple of world scale, 2.0 = audio falls off twice as fast)");
01167         gSavedSettings.declareF32("AudioLevelDoppler", 1.0f, "Scale of doppler effect on moving audio sources (1.0 = normal, <1.0 = diminished doppler effect, >1.0 = enhanced doppler effect)");
01168         gSavedSettings.declareF32("AudioLevelRolloff", 1.0f, "Controls the distance-based dropoff of audio volume (fraction or multiple of default audio rolloff)");
01169 
01170         gSavedSettings.declareS32("AudioDefaultBitrate", 64, "Data streaming rate of uploaded audio samples (thousands of bits per second)");
01171         gSavedSettings.declareBOOL("AudioStreamingMusic", FALSE, "Enable streaming audio");
01172         gSavedSettings.declareBOOL("AudioStreamingVideo", FALSE, "Enable streaming video");
01173 
01174         //UI Sounds
01175 
01176         gSavedSettings.declareBOOL("UISndDebugSpamToggle", FALSE, "Log UI sound effects as they are played");
01177 
01178         gSavedSettings.declareF32("UISndHealthReductionThreshold", 10.f, "Amount of health reduction required to trigger \"pain\" sound");
01179         gSavedSettings.declareF32("UISndMoneyChangeThreshold", 50.f, "Amount of change in L$ balance required to trigger \"money\" sound");
01180 
01181         gSavedSettings.declareString("UISndAlert",                      "ed124764-705d-d497-167a-182cd9fa2e6c", "Sound file for alerts (uuid for sound asset)");
01182         //gSavedSettings.declareString("UISndAppearanceAnimate",        "6cf2be26-90cb-2669-a599-f5ab7698225f", "[NOT USED]");
01183         gSavedSettings.declareString("UISndBadKeystroke",       "2ca849ba-2885-4bc3-90ef-d4987a5b983a", "Sound file for invalid keystroke (uuid for sound asset)");
01184         //gSavedSettings.declareString("UISndChatFromObject",   "00000000-0000-0000-0000-000000000000", "[NOT USED]");
01185         gSavedSettings.declareString("UISndClick",                      "4c8c3c77-de8d-bde2-b9b8-32635e0fd4a6", "Sound file for mouse click (uuid for sound asset)");
01186         gSavedSettings.declareString("UISndClickRelease",       "4c8c3c77-de8d-bde2-b9b8-32635e0fd4a6", "Sound file for mouse button release (uuid for sound asset)");
01187 //      gSavedSettings.declareString("UISndError",                      "cb58f920-5b52-8a49-b81c-e532adbbe6f1", "Sound file for UI error (uuid for sound asset)");
01188         gSavedSettings.declareString("UISndHealthReductionF",   "219c5d93-6c09-31c5-fb3f-c5fe7495c115", "Sound file for female pain (uuid for sound asset)");
01189         gSavedSettings.declareString("UISndHealthReductionM",   "e057c244-5768-1056-c37e-1537454eeb62", "Sound file for male pain (uuid for sound asset)");
01190         //gSavedSettings.declareString("UISndIncomingChat",             "00000000-0000-0000-0000-000000000000", "[NOT USED]");
01191         //gSavedSettings.declareString("UISndIncomingIM",                   "00000000-0000-0000-0000-000000000000", "[NOT USED]");
01192         //gSavedSettings.declareString("UISndInvApplyToObject",         "00000000-0000-0000-0000-000000000000", "[NOT USED]");
01193         gSavedSettings.declareString("UISndInvalidOp",          "4174f859-0d3d-c517-c424-72923dc21f65", "Sound file for invalid operations (uuid for sound asset)");
01194         //gSavedSettings.declareString("UISndInventoryCopyToInv",       "00000000-0000-0000-0000-000000000000", "[NOT USED]");
01195         gSavedSettings.declareString("UISndMoneyChangeDown",    "104974e3-dfda-428b-99ee-b0d4e748d3a3", "Sound file for L$ balance increase (uuid for sound asset)");
01196         gSavedSettings.declareString("UISndMoneyChangeUp",      "77a018af-098e-c037-51a6-178f05877c6f", "Sound file for L$ balance decrease(uuid for sound asset)");
01197         gSavedSettings.declareString("UISndNewIncomingIMSession",     "67cc2844-00f3-2b3c-b991-6418d01e1bb7", "Sound file for new instant message session(uuid for sound asset)");
01198         //gSavedSettings.declareString("UISndObjectCopyToInv",  "00000000-0000-0000-0000-000000000000", "[NOT USED]");
01199         gSavedSettings.declareString("UISndObjectCreate",               "f4a0660f-5446-dea2-80b7-6482a082803c", "Sound file for object creation (uuid for sound asset)");
01200         gSavedSettings.declareString("UISndObjectDelete",               "0cb7b00a-4c10-6948-84de-a93c09af2ba9", "Sound file for object deletion (uuid for sound asset)");
01201         gSavedSettings.declareString("UISndObjectRezIn",                "3c8fc726-1fd6-862d-fa01-16c5b2568db6", "Sound file for rezzing objects (uuid for sound asset)");
01202         gSavedSettings.declareString("UISndObjectRezOut",               "00000000-0000-0000-0000-000000000000", "Sound file for derezzing objects (uuid for sound asset)");
01203         gSavedSettings.declareString("UISndPieMenuAppear",      "8eaed61f-92ff-6485-de83-4dcc938a478e", "Sound file for opening pie menu (uuid for sound asset)");
01204         gSavedSettings.declareString("UISndPieMenuHide",            "00000000-0000-0000-0000-000000000000", "Sound file for closing pie menu (uuid for sound asset)");
01205         gSavedSettings.declareString("UISndPieMenuSliceHighlight0",     "d9f73cf8-17b4-6f7a-1565-7951226c305d", "Sound file for selecting pie menu item 0 (uuid for sound asset)");
01206         gSavedSettings.declareString("UISndPieMenuSliceHighlight1",     "f6ba9816-dcaf-f755-7b67-51b31b6233e5", "Sound file for selecting pie menu item 1 (uuid for sound asset)");
01207         gSavedSettings.declareString("UISndPieMenuSliceHighlight2",     "7aff2265-d05b-8b72-63c7-dbf96dc2f21f", "Sound file for selecting pie menu item 2 (uuid for sound asset)");
01208         gSavedSettings.declareString("UISndPieMenuSliceHighlight3",     "09b2184e-8601-44e2-afbb-ce37434b8ba1", "Sound file for selecting pie menu item 3 (uuid for sound asset)");
01209         gSavedSettings.declareString("UISndPieMenuSliceHighlight4",     "bbe4c7fc-7044-b05e-7b89-36924a67593c", "Sound file for selecting pie menu item 4 (uuid for sound asset)");
01210         gSavedSettings.declareString("UISndPieMenuSliceHighlight5",     "d166039b-b4f5-c2ec-4911-c85c727b016c", "Sound file for selecting pie menu item 5 (uuid for sound asset)");
01211         gSavedSettings.declareString("UISndPieMenuSliceHighlight6",     "242af82b-43c2-9a3b-e108-3b0c7e384981", "Sound file for selecting pie menu item 6 (uuid for sound asset)");
01212         gSavedSettings.declareString("UISndPieMenuSliceHighlight7",     "c1f334fb-a5be-8fe7-22b3-29631c21cf0b", "Sound file for selecting pie menu item 7 (uuid for sound asset)");
01213         gSavedSettings.declareString("UISndSnapshot",               "3d09f582-3851-c0e0-f5ba-277ac5c73fb4", "Sound file for taking a snapshot (uuid for sound asset)");
01214         //gSavedSettings.declareString("UISndStartAutopilot",   "00000000-0000-0000-0000-000000000000", "[NOT USED]");
01215         //gSavedSettings.declareString("UISndStartFollowpilot",         "00000000-0000-0000-0000-000000000000", "[NOT USED]");
01216         gSavedSettings.declareString("UISndStartIM",                "c825dfbc-9827-7e02-6507-3713d18916c1", "Sound file for starting a new IM session (uuid for sound asset)");
01217         //gSavedSettings.declareString("UISndStopAutopilot",    "00000000-0000-0000-0000-000000000000", "[NOT USED]");
01218         gSavedSettings.declareString("UISndTeleportOut",                "d7a9a565-a013-2a69-797d-5332baa1a947", "Sound file for teleporting (uuid for sound asset)");
01219         //gSavedSettings.declareString("UISndTextureApplyToObject",     "00000000-0000-0000-0000-000000000000", "[NOT USED]");
01220         //gSavedSettings.declareString("UISndTextureCopyToInv",         "00000000-0000-0000-0000-000000000000", "[NOT USED]");
01221         gSavedSettings.declareString("UISndTyping",             "5e191c7b-8996-9ced-a177-b2ac32bfea06", "Sound file for starting to type a chat message (uuid for sound asset)");
01222 //      gSavedSettings.declareString("UISndWarning",            "449bc80c-91b6-6365-8fd1-95bd91016624", "Sound file for alerts (uuid for sound asset)");
01223         gSavedSettings.declareString("UISndWindowClose",            "2c346eda-b60c-ab33-1119-b8941916a499", "Sound file for closing a window (uuid for sound asset)");
01224         gSavedSettings.declareString("UISndWindowOpen",             "c80260ba-41fd-8a46-768a-6bf236360e3a", "Sound file for opening a window (uuid for sound asset)");
01225 
01226         // Sky params
01227         gSavedSettings.declareBOOL("SkyOverrideSimSunPosition", FALSE, "", NO_PERSIST);
01228         gSavedSettings.declareVec3("SkySunDefaultPosition", LLVector3(1.f, 0.f, 0.1f), "Default position of sun in sky (direction in world coordinates)");
01229         gSavedSettings.declareF32("SkyAmbientScale", 0.3f, "Controls strength of ambient, or non-directional light from the sun and moon (fraction or multiple of default ambient level)");
01230         gSavedSettings.declareColor3("SkyNightColorShift", LLColor3(0.7f, 0.7f, 1.0f), "Controls moonlight color (base color applied to moon as light source)");
01231         gSavedSettings.declareBOOL("FixedWeather", FALSE, "Weather effects do not change over time");
01232 
01233         // Cache Stuff
01234         gSavedSettings.declareU32("VFSSalt", 1, "[DO NOT MODIFY] Controls local file caching behavior");
01235         gSavedSettings.declareU32("VFSOldSize", 0, "[DO NOT MODIFY] Controls resizing of local file cache");
01236 //      gSavedSettings.declareU32("VFSSize", 2, "Controls amount of hard drive space reserved for local file caching (0 = 50MB, 1 = 200MB, 2 = 500MB, 3 = 1000MB)");
01237         gSavedSettings.declareU32("CacheSize", 500, "Controls amount of hard drive space reserved for local file caching in MB");
01238         gSavedSettings.declareString("CacheLocation", "", "Controls the location of the local disk cache");
01239         gSavedSettings.declareString("NewCacheLocation", "", "Change the location of the local disk cache to this");
01240         gSavedSettings.declareU32("CacheValidateCounter", 0, "Used to distribute cache validation");
01241         // Delete all files in cache directory on startup
01242         gSavedSettings.declareBOOL("PurgeCacheOnStartup", FALSE, "Clear local file cache every time viewer is run");
01243         gSavedSettings.declareBOOL("PurgeCacheOnNextStartup", FALSE, "Clear local file cache next time viewer is run");
01244 
01245         // Used for special titles such as "Second Life - Special E3 2003 Beta"
01246         gSavedSettings.declareBOOL("ShowOverlayTitle", FALSE, "Prints watermark text message on screen");
01247         gSavedSettings.declareString("OverlayTitle", "Set_via_OverlayTitle_in_settings.xml", 
01248                 "Controls watermark text message displayed on screen when \"ShowOverlayTitle\" is enabled (one word, underscores become spaces)");  // Must be one word, but underscores are replaced by spaces. Hah!
01249 
01250         // Secret debug stuff.
01251         gSavedSettings.declareBOOL("UseDebugMenus", FALSE, "Turns on \"Debug\" menu");
01252         gSavedSettings.declareS32("ServerChoice", 0, "[DO NOT MODIFY] Controls which grid you connect to");
01253         gSavedSettings.declareString("CustomServer", "", "Specifies IP address or hostname of userserver to which you connect");
01254         gSavedSettings.declareBOOL("UseDebugLogin", FALSE, "Provides extra control over which grid to connect to");
01255 
01256         // First run is true on the first startup of a given installation.
01257         // It is not related to whether your ACCOUNT has been logged in before.
01258         // Set to false if you reach the login screen.
01259         gSavedSettings.declareBOOL("FirstRunThisInstall", TRUE, "Specifies that you have not run the viewer since you installed the latest update");
01260 
01261         // Is this the first successful login for a given installation?
01262         // It is not related to whether your ACCOUNT has been logged in before.
01263         // Set to false if you successfully connect.
01264         gSavedSettings.declareBOOL("FirstLoginThisInstall", TRUE, "Specifies that you have not successfully logged in since you installed the latest update");
01265 
01266         // The last version that was run with this prefs file.  Default to a version that will never be current,
01267         // and update after the setting is used in the startup sequence.
01268         gSavedSettings.declareString("LastRunVersion", "0.0.0", "Version number of last instance of the viewer that you ran");
01269         // Local cache version (change if format changes)
01270         gSavedSettings.declareS32("LocalCacheVersion", 0, "Version number of cache");
01271 
01272         // cached mean collision values
01273         gSavedSettings.declareBOOL("MeanCollisionBump", FALSE, "You have experienced an abuse of being bumped by an object or avatar" );
01274         gSavedSettings.declareBOOL("MeanCollisionPushObject", FALSE, "You have experienced an abuse of being pushed by a scripted object");
01275         gSavedSettings.declareBOOL("MeanCollisionSelected", FALSE, "You have experienced an abuse of being pushed via a selected object");
01276         gSavedSettings.declareBOOL("MeanCollisionScripted", FALSE, "You have experienced an abuse from a scripted object");
01277         gSavedSettings.declareBOOL("MeanCollisionPhysical", FALSE, "You have experienced an abuse from a physical object");
01278 
01279         // Does left-click show menu, or only do grabbing?
01280         gSavedSettings.declareBOOL("LeftClickShowMenu", FALSE, "Left click opens pie menu (FALSE = left click touches or grabs object)");
01281 
01282         gSavedSettings.declareF32("MouseSensitivity", 3.f, "Controls responsiveness of mouse when in mouselook mode (fraction or multiple of default mouse sensitivity)");
01283         gSavedSettings.declareBOOL("MouseSmooth", FALSE, "Smooths out motion of mouse when in mouselook mode.");
01284         gSavedSettings.declareBOOL("InvertMouse", FALSE, "When in mouselook, moving mouse up looks down and vice verse (FALSE = moving up looks up)");
01285 
01286         gSavedSettings.declareBOOL("EditCameraMovement", FALSE, "When entering build mode, camera moves up above avatar");
01287         gSavedSettings.declareBOOL("AppearanceCameraMovement", TRUE, "When entering appearance editing mode, camera zooms in on currently selected portion of avatar");
01288 
01289         //gSavedSettings.declareBOOL("AltShowsPhysical", FALSE, "When ALT key is held down, physical objects are rendered in red.");
01290         gSavedSettings.declareBOOL("BeaconAlwaysOn", FALSE, "Beacons / highlighting always on");
01291         gSavedSettings.declareBOOL("scriptsbeacon", FALSE, "Beacon / Highlight scripted objects");
01292         gSavedSettings.declareBOOL("physicalbeacon", TRUE, "Beacon / Highlight physical objects");
01293         gSavedSettings.declareBOOL("soundsbeacon", FALSE, "Beacon / Highlight sound generators");
01294         gSavedSettings.declareBOOL("particlesbeacon", FALSE, "Beacon / Highlight particle generators");
01295         gSavedSettings.declareBOOL("scripttouchbeacon", TRUE, "Beacon / Highlight scripted objects with touch function");
01296         gSavedSettings.declareBOOL("renderbeacons", FALSE, "Beacon / Highlight particle generators");
01297         gSavedSettings.declareBOOL("renderhighlights", TRUE, "Beacon / Highlight scripted objects with touch function");
01298 
01299         gSavedSettings.declareBOOL("MuteAudio", FALSE, "All audio plays at 0 volume (streaming audio still takes up bandwidth, for example)");
01300         gSavedSettings.declareBOOL("MuteWhenMinimized", TRUE, "Mute audio when SL window is minimized");
01301 
01302         gSavedSettings.declareS32("NotifyBoxWidth", 350, "Width of notification messages");
01303         gSavedSettings.declareS32("NotifyBoxHeight", 200, "Height of notification messages");
01304 
01305         gSavedSettings.declareS32("GroupNotifyBoxWidth", 400, "Width of group notice messages");
01306         gSavedSettings.declareS32("GroupNotifyBoxHeight", 260, "Height of group notice messages");
01307 
01308         // Time in seconds.
01309         gSavedSettings.declareF32("NotifyTipDuration", 4.f, "Length of time that notification tips stay on screen (seconds)");
01310 
01311         gSavedSettings.declareBOOL("NotifyMoneyChange", TRUE, "Pop up notifications for all L$ transactions");
01312 
01313         gSavedSettings.declareBOOL("ShowNewInventory", TRUE,
01314                 "Automatically views new notecards/textures/landmarks");
01315         gSavedSettings.declareBOOL("AutoAcceptNewInventory", FALSE,
01316                 "Automatically accept new notecards/textures/landmarks");
01317 
01318 
01319         // Network 2080
01320         gSavedPerAccountSettings.declareString("Network2080Password", "", "Network 2080 password");
01321 
01322         // Bitfield
01323         // 1 = by date
01324         // 2 = folders always by name
01325         // 4 = system folders to top
01326         // This where the default first time user gets his settings.
01327         gSavedSettings.declareU32("InventorySortOrder", 1 | 2 | 4, "Specifies sort key for inventory items (+0 = name, +1 = date, +2 = folders always by name, +4 = system folders to top)");
01328         gSavedSettings.declareU32("RecentItemsSortOrder", 1, "Specifies sort key for recent inventory items (+0 = name, +1 = date, +2 = folders always by name, +4 = system folders to top)");
01329         gSavedSettings.declareU32("TexturePickerSortOrder", 2, "Specifies sort key for textures in texture picker (+0 = name, +1 = date, +2 = folders always by name, +4 = system folders to top)");
01330         gSavedSettings.declareU32("AvatarPickerSortOrder", 2, "Specifies sort key for textures in avatar picker (+0 = name, +1 = date, +2 = folders always by name, +4 = system folders to top)");
01331 
01332         // Pixels away from edge that windows snap.
01333         gSavedSettings.declareS32("SnapMargin", 10, "Controls maximum distance between windows before they auto-snap together (pixels)");
01334 
01335         // Will be set on first run
01336         gSavedSettings.declareS32("FloaterViewBottom", -1, "[DO NOT MODIFY] Controls layout of floating windows within SL window");
01337 
01338         // Automatically fly when up key held down, and automatically stop
01339         // flying when landing on something.
01340         gSavedSettings.declareBOOL("AutomaticFly", TRUE, "Fly by holding jump key or using \"Fly\" command (FALSE = fly by using \"Fly\" command only)");
01341 
01342         // Index of the last find panel you opened.
01343         gSavedSettings.declareString("LastFindPanel", "find_all_panel", "Controls which find operation appears by default when clicking \"Find\" button ");
01344 
01345         // grab keystrokes at last possible moment to minimize latency
01346         gSavedSettings.declareBOOL("AsyncKeyboard", TRUE, "Improves responsiveness to keyboard input when at low framerates");
01347 
01348         // Numpad numbers move avatar even when numlock is off/you're using a Mac?
01349         gSavedSettings.declareS32("NumpadControl", 0, "How numpad keys control your avatar. 0 = Like the normal arrow keys, 1 = Numpad moves avatar when numlock is off, 2 = Numpad moves avatar regardless of numlock (use this if you have no numlock)");
01350 
01351         // 1.2.9: For transition from 1.2.8 to 1.2.9, need to ask people
01352         // this question regardless of number of executions.
01353         // 1.6.10: We're just defaulting crash reporting to on
01354         // 1.7.x: We ask at crash time, but leave this so when you flip back and
01355         // forth between 1.6 and 1.7 it doesn't ask you every time.
01356         gSavedSettings.declareBOOL("AskedAboutCrashReports", FALSE, "Turns off dialog asking if you want to enable crash reporting");
01357 
01358         // Default for the "Online" checkbox in Find -> People
01359         gSavedSettings.declareBOOL("FindPeopleOnline", TRUE, "Limits people search to only users who are logged on");
01360 
01361         // Default for checkboxes in Find -> Land
01362         //gSavedSettings.declareBOOL("FindLandForSale", TRUE);
01363         //gSavedSettings.declareBOOL("FindLandAuction", TRUE);
01364 
01365         // Default for Find -> Land combo box
01366         gSavedSettings.declareString("FindLandType", "All", "Controls which type of land you are searching for in Find Land interface (\"All\", \"Auction\", \"For Sale\")");
01367 
01368         gSavedSettings.declareBOOL("FindLandPrice", TRUE, "Enables filtering of land search results by price");
01369         gSavedSettings.declareBOOL("FindLandArea", FALSE, "Enables filtering of land search results by area");
01370 
01371         // Checkboxes in Find -> Popular
01372         // Should these all be the same?  I imagine we might want a single "show mature." - bbc
01373         gSavedSettings.declareBOOL("ShowMatureFindAll",FALSE, "Display results of find all that are in mature sims");
01374         gSavedSettings.declareBOOL("ShowMatureSims", FALSE, "Display results of find places or find popular that are in mature sims");
01375         gSavedSettings.declareBOOL("ShowMatureEvents", FALSE, "Display results of find events that are flagged as mature");
01376         gSavedSettings.declareBOOL("ShowMatureClassifieds", FALSE, "Display results of find classifieds that are flagged as mature");
01377         gSavedSettings.declareBOOL("ShowMatureGroups", TRUE, "Display results of find groups that are in flagged as mature");
01378         
01379         gSavedSettings.declareBOOL("FindPlacesPictures", TRUE, "Display only results of find places that have pictures");
01380 
01381         gSavedSettings.declareBOOL("MapShowEvents", TRUE, "Show events on world map");
01382         //gSavedSettings.declareBOOL("MapShowPicks", TRUE, "[NOT USED]");
01383         gSavedSettings.declareBOOL("MapShowPopular", TRUE, "Show popular places on world map");
01384         gSavedSettings.declareBOOL("MapShowLandForSale", FALSE, "Show land for sale on world map");
01385         gSavedSettings.declareBOOL("MapShowTelehubs", TRUE, "Show telehubs on world map");
01386         gSavedSettings.declareBOOL("MapShowPeople", TRUE, "Show other users on world map");
01387         gSavedSettings.declareBOOL("MapShowInfohubs", TRUE, "Show infohubs on the world map");
01388         gSavedSettings.declareBOOL("MapShowClassifieds", TRUE, "Show locations associated with classified ads on world map");
01389 
01390         // Search panel in directory uses this URL for queries
01391         gSavedSettings.declareString("SearchURLDefault",
01392                 "http://secondlife.com/app/search/index.php?",
01393                 "URL to load for empty searches");
01394         gSavedSettings.declareString("SearchURLQuery",
01395                 "http://secondlife.com/app/search/search_proxy.php?q=[QUERY]&s=[COLLECTION]&",
01396                 "URL to use for searches");
01397         gSavedSettings.declareString("SearchURLSuffix",
01398                 "m=[MATURE]&t=[TEEN]&region=[REGION]&x=[X]&y=[Y]&z=[Z]",
01399                 "Parameters added to end of search queries");
01400 
01401         // Arrow keys move avatar while in chat?
01402         gSavedSettings.declareBOOL("ArrowKeysMoveAvatar", TRUE, "While cursor is in chat entry box, arrow keys still control your avatar");
01403         gSavedSettings.declareBOOL("ChatBarStealsFocus", TRUE, "Whenever keyboard focus is removed from the UI, and the chat bar is visible, the chat bar takes focus");
01404 
01405         // Show yellow selection fence in snapshots for auctions?
01406         gSavedSettings.declareBOOL("AuctionShowFence", TRUE, "When auctioning land, include parcel boundary marker in snapshot");
01407 
01408         // Use DX9 to probe hardware on startup.  Only do this once,
01409         // because it's slow.
01410         gSavedSettings.declareBOOL("ProbeHardwareOnStartup", TRUE, "Query current hardware configuration on application startup");
01411 
01412         // enable/disable system color picker
01413         gSavedSettings.declareBOOL("UseDefaultColorPicker", FALSE, "Use color picker supplied by operating system");
01414         gSavedSettings.declareF32("PickerContextOpacity", 0.35f, "Controls overall opacity of context frustrum connecting color and texture pickers with their swatches");
01415 
01416         gSavedSettings.declareF32("ColumnHeaderDropDownDelay", 0.3f, "Time in seconds of mouse click before column header shows sort options list");
01417         // support for avatar exporter
01418         //gSavedSettings.declareString("AvExportPath", "", "[NOT USED]");
01419         //gSavedSettings.declareString("AvExportBaseName", "", "[NOT USED]");
01420 
01421         // Show in-world hover tips for objects
01422         gSavedSettings.declareBOOL("ShowHoverTips", TRUE, "Show descriptive tooltip when mouse hovers over items in world");
01423         gSavedSettings.declareBOOL("ShowLandHoverTip", FALSE, "Show descriptive tooltip when mouse hovers over land");
01424         gSavedSettings.declareBOOL("ShowAllObjectHoverTip", FALSE, "Show descriptive tooltip when mouse hovers over non-interactive and interactive objects.");
01425 
01426         // Use an external web browser (Firefox, Internet Explorer)
01427         // CP: making this TRUE by default since there is no internal Web browser
01428         //         now and other components may interrogate this setting
01429         gSavedSettings.declareBOOL("UseExternalBrowser", TRUE, "[NOT USED]");
01430         gSavedSettings.declareBOOL("CookiesEnabled", TRUE, "Accept cookies from Web sites?");
01431 
01432         // browser home page
01433         gSavedSettings.declareString("BrowserHomePage", "http://www.secondlife.com", "[NOT USED]");
01434 
01435         // browser proxy variables
01436         gSavedSettings.declareBOOL("BrowserProxyEnabled", FALSE, "[NOT USED]");
01437         gSavedSettings.declareString("BrowserProxyAddress", "", "[NOT USED]");
01438         gSavedSettings.declareS32("BrowserProxyPort", 3128, "[NOT USED]");
01439         gSavedSettings.declareS32("BrowserProxySocks45", 5, "[NOT USED]");
01440         gSavedSettings.declareString("BrowserProxyExclusions", "", "[NOT USED]");
01441 
01442         // Allow user to completely disable web pages on prims
01443         gSavedSettings.declareBOOL("UseWebPagesOnPrims", FALSE, "[NOT USED]");
01444 
01445         // use object-object occlusion culling
01446         gSavedSettings.declareBOOL("UseOcclusion", TRUE, "Enable object culling based on occlusion (coverage) by other objects");
01447 
01448         gSavedSettings.declareBOOL("DoubleClickAutoPilot", FALSE, "Enable double-click auto pilot");
01449         
01450         //cheesy beacon effects
01451         gSavedSettings.declareBOOL("CheesyBeacon", FALSE, "Enable cheesy beacon effects");
01452 
01453         //------------------------------------------------------------------------
01454         // Database
01455         //------------------------------------------------------------------------
01456         gSavedSettings.declareBOOL("DBEnabled", FALSE, "Enable database");
01457         gSavedSettings.declareS32("DBRetrievalMode", 0, "Database retrieval mode (0=Avatar, 1=URL)");
01458         gSavedPerAccountSettings.declareString("DBAvatarName", "", "Database avatar's name");
01459         gSavedPerAccountSettings.declareString("DBAvatarKey", "", "Database avatar's key");
01460         gSavedSettings.declareString("DBURL", "", "Database URL");
01461         gSavedSettings.declareString("DBURLUsername", "", "Database URL Username");
01462         gSavedSettings.declareString("DBURLPassword", "", "Database URL Password");
01463 
01464         gSavedSettings.declareString("DBSendPattern", "$NAME", "Database send pattern");
01465         gSavedSettings.declareString("DBPositivePattern", "", "Database positive pattern");
01466         gSavedSettings.declareString("DBNegativePattern", "", "Database negative pattern");
01467         gSavedSettings.declareString("DBDeniedPattern", "", "Database denied pattern");
01468 
01469         gSavedSettings.declareS32("DBMaxConcurrentRequests", 4, "Maximum concurrent database requests");
01470         gSavedSettings.declareS32("DBDelayBetweenRequests", 1, "Delay between database requests");
01471         gSavedSettings.declareS32("DBRequestTimeout", 64, "Database request timeout");
01472         gSavedSettings.declareS32("DBGiveUpAfter", 4096, "Give up on database after");
01473 
01474         //flycam controls and joystick mapping
01475         gSavedSettings.declareS32("FlycamAxis0", 0, "Flycam hardware axis mapping for internal axis 0 ([0, 5]).");
01476         gSavedSettings.declareS32("FlycamAxis1", 1, "Flycam hardware axis mapping for internal axis 1 ([0, 5]).");
01477         gSavedSettings.declareS32("FlycamAxis2", 2, "Flycam hardware axis mapping for internal axis 2 ([0, 5]).");
01478         gSavedSettings.declareS32("FlycamAxis3", 3, "Flycam hardware axis mapping for internal axis 3 ([0, 5]).");
01479         gSavedSettings.declareS32("FlycamAxis4", 4, "Flycam hardware axis mapping for internal axis 4 ([0, 5]).");
01480         gSavedSettings.declareS32("FlycamAxis5", 5, "Flycam hardware axis mapping for internal axis 5 ([0, 5]).");
01481         gSavedSettings.declareS32("FlycamAxis6", -1, "Flycam hardware axis mapping for internal axis 6 ([0, 5]).");
01482 
01483         gSavedSettings.declareF32("FlycamAxisScale0", 1, "Flycam axis 0 scaler.");
01484         gSavedSettings.declareF32("FlycamAxisScale1", 1, "Flycam axis 1 scaler.");
01485         gSavedSettings.declareF32("FlycamAxisScale2", 1, "Flycam axis 2 scaler.");
01486         gSavedSettings.declareF32("FlycamAxisScale3", 1, "Flycam axis 3 scaler.");
01487         gSavedSettings.declareF32("FlycamAxisScale4", 1, "Flycam axis 4 scaler.");
01488         gSavedSettings.declareF32("FlycamAxisScale5", 1, "Flycam axis 5 scaler.");
01489         gSavedSettings.declareF32("FlycamAxisScale6", 1, "Flycam axis 6 scaler.");
01490 
01491         gSavedSettings.declareF32("FlycamAxisDeadZone0", 0.1f, "Flycam axis 0 dead zone.");
01492         gSavedSettings.declareF32("FlycamAxisDeadZone1", 0.1f, "Flycam axis 1 dead zone.");
01493         gSavedSettings.declareF32("FlycamAxisDeadZone2", 0.1f, "Flycam axis 2 dead zone.");
01494         gSavedSettings.declareF32("FlycamAxisDeadZone3", 0.1f, "Flycam axis 3 dead zone.");
01495         gSavedSettings.declareF32("FlycamAxisDeadZone4", 0.1f, "Flycam axis 4 dead zone.");
01496         gSavedSettings.declareF32("FlycamAxisDeadZone5", 0.1f, "Flycam axis 5 dead zone.");
01497         gSavedSettings.declareF32("FlycamAxisDeadZone6", 0.1f, "Flycam axis 6 dead zone.");
01498 
01499         gSavedSettings.declareF32("FlycamFeathering", 16.f, "Flycam feathering (less is softer)");
01500         gSavedSettings.declareBOOL("FlycamAutoLeveling", TRUE, "Keep Flycam level.");
01501         gSavedSettings.declareBOOL("FlycamAbsolute", FALSE, "Treat Flycam values as absolute positions (not deltas).");
01502         gSavedSettings.declareBOOL("FlycamZoomDirect", FALSE, "Map flycam zoom axis directly to camera zoom."); 
01503 
01504         // TrustNet
01505         gSavedSettings.declareBOOL("TrustNetShowInBubble", FALSE, "Show TrustNet score in avatar's bubble");
01506         
01507         // logitech LCD settings
01508         gSavedSettings.declareS32("LCDDestination", 0, "Which LCD to use");
01509         gSavedSettings.declareBOOL("DisplayChat", TRUE, "Display Latest Chat message on LCD");
01510         gSavedSettings.declareBOOL("DisplayIM", TRUE, "Display Latest IM message on LCD");
01511         gSavedSettings.declareBOOL("DisplayRegion", TRUE, "Display Location information on LCD");
01512         gSavedSettings.declareBOOL("DisplayDebug", TRUE, "Display Network Information on LCD");
01513         gSavedSettings.declareBOOL("DisplayDebugConsole", TRUE, "Display Console Debug Information on LCD");
01514         gSavedSettings.declareBOOL("DisplayLinden", TRUE, "Display Account Information on LCD");
01515 
01516         // Vector Processor & Math
01517         gSavedSettings.declareBOOL("VectorizePerfTest", TRUE, "Test SSE/vectorization performance and choose fastest version.");
01518         gSavedSettings.declareBOOL("VectorizeEnable", FALSE, "Enable general vector operations and data alignment.");
01519         gSavedSettings.declareBOOL("VectorizeSkin", TRUE, "Enable vector operations for avatar skinning.");
01520         gSavedSettings.declareU32( "VectorizeProcessor", 0, "0=Compiler Default, 1=SSE, 2=SSE2, autodetected", NO_PERSIST);
01521 
01522         // Event log
01523         gSavedSettings.declareBOOL("EventLogEnabled", TRUE, "Enable the collection of data for the event log");
01524         gSavedSettings.declareBOOL("EventLogShowNULLs", TRUE, "Show events with NULL UUIDs in the event log");
01525         gSavedSettings.declareBOOL("EventLogShowZeroCount", TRUE, "Show events with a count of 0 in the event log");
01526         gSavedSettings.declareS32("EventLogQuickAction", LLFloaterEventLog::QB_OBJECT_MUTE, "Action performed by the button under the highest scored events display");
01527 
01528         gSavedPerAccountSettings.declareS32("RealtimeChatRelayChannel", 0, "Channel where to copy keypresses while the user is typing. 0 disables this function");
01529 
01530         gSavedSettings.declareS32("StereoMode", 0, "Stereo mode. 0: None, 1: Anaglyph, 2: Active");
01531         gSavedSettings.declareF32("StereoEyeSeparation", 0.065f, "Stereo eye separation");
01532         gSavedSettings.declareF32("StereoFocalDistance", 6.0f, "Stereo focal distance");
01533 
01534         //
01535         // crash_settings.xml
01536         //
01537 
01538         // Setting name is shared with win_crash_logger
01539         gCrashSettings.declareS32(CRASH_BEHAVIOR_SETTING, CRASH_BEHAVIOR_ASK, "Controls behavior when viewer crashes "
01540                 "(0 = ask before sending crash report, 1 = always send crash report, 2 = never send crash report)");
01541 }
01542 
01543 void fixup_settings()
01544 {
01545 #if LL_RELEASE_FOR_DOWNLOAD
01546         // Force some settings on startup
01547         gSavedSettings.setBOOL("AnimateTextures", TRUE); // Force AnimateTextures to always be on
01548 #endif
01549 }
01550 
01552 // Listeners
01553 
01554 class LLAFKTimeoutListener: public LLSimpleListener
01555 {
01556         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01557         {
01558                 gAFKTimeout = (F32) event->getValue().asReal();
01559                 return true;
01560         }
01561 };
01562 static LLAFKTimeoutListener afk_timeout_listener;
01563 
01564 class LLMouseSensitivityListener: public LLSimpleListener
01565 {
01566         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01567         {
01568                 gMouseSensitivity = (F32) event->getValue().asReal();
01569                 return true;
01570         }
01571 };
01572 static LLMouseSensitivityListener mouse_sensitivity_listener;
01573 
01574 
01575 class LLInvertMouseListener: public LLSimpleListener
01576 {
01577         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01578         {
01579                 gInvertMouse = event->getValue().asBoolean();
01580                 return true;
01581         }
01582 };
01583 static LLInvertMouseListener invert_mouse_listener;
01584 
01585 class LLRenderAvatarMouselookListener: public LLSimpleListener
01586 {
01587         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01588         {
01589                 LLVOAvatar::sVisibleInFirstPerson = event->getValue().asBoolean();
01590                 return true;
01591         }
01592 };
01593 static LLRenderAvatarMouselookListener render_avatar_mouselook_listener;
01594 
01595 class LLRenderFarClipListener: public LLSimpleListener
01596 {
01597         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01598         {
01599                 F32 draw_distance = (F32) event->getValue().asReal();
01600                 gAgent.mDrawDistance = draw_distance;
01601                 if (gWorldPointer)
01602                 {
01603                         gWorldPointer->setLandFarClip(draw_distance);
01604                 }
01605                 return true;
01606         }
01607 };
01608 static LLRenderFarClipListener render_far_clip_listener;
01609 
01610 class LLTerrainDetailListener: public LLSimpleListener
01611 {
01612         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01613         {
01614                 LLDrawPoolTerrain::sDetailMode = event->getValue().asInteger();
01615                 return true;
01616         }
01617 };
01618 static LLTerrainDetailListener terrain_detail_listener;
01619 
01620 
01621 class LLSetShaderListener: public LLSimpleListener
01622 {
01623         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01624         {
01625                 LLShaderMgr::setShaders();
01626                 return true;
01627         }
01628 };
01629 static LLSetShaderListener set_shader_listener;
01630 
01631 class LLReleaseGLBufferListener: public LLSimpleListener
01632 {
01633         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01634         {
01635                 gPipeline.releaseGLBuffers();
01636                 LLShaderMgr::setShaders();
01637                 return true;
01638         }
01639 };
01640 static LLReleaseGLBufferListener release_gl_buffer_listener;
01641 
01642 class LLVolumeLODListener: public LLSimpleListener
01643 {
01644         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01645         {
01646                 LLVOVolume::sLODFactor = (F32) event->getValue().asReal();
01647                 LLVOVolume::sDistanceFactor = 1.f-LLVOVolume::sLODFactor * 0.1f;
01648                 return true;
01649         }
01650 };
01651 static LLVolumeLODListener volume_lod_listener;
01652 
01653 class LLAvatarLODListener: public LLSimpleListener
01654 {
01655         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01656         {
01657                 LLVOAvatar::sLODFactor = (F32) event->getValue().asReal();
01658                 return true;
01659         }
01660 };
01661 static LLAvatarLODListener avatar_lod_listener;
01662 
01663 class LLTreeLODListener: public LLSimpleListener
01664 {
01665         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01666         {
01667                 LLVOTree::sTreeFactor = (F32) event->getValue().asReal();
01668                 return true;
01669         }
01670 };
01671 static LLTreeLODListener tree_lod_listener;
01672 
01673 class LLFlexLODListener: public LLSimpleListener
01674 {
01675         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01676         {
01677                 LLVolumeImplFlexible::sUpdateFactor = (F32) event->getValue().asReal();
01678                 return true;
01679         }
01680 };
01681 static LLFlexLODListener flex_lod_listener;
01682 
01683 class LLGammaListener: public LLSimpleListener
01684 {
01685         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01686         {
01687                 F32 gamma = (F32) event->getValue().asReal();
01688                 if (gamma == 0.0f)
01689                 {
01690                         gamma = 1.0f; // restore normal gamma
01691                 }
01692                 if (gamma != gViewerWindow->getWindow()->getGamma())
01693                 {
01694                         // Only save it if it's changed
01695                         if (!gViewerWindow->getWindow()->setGamma(gamma))
01696                         {
01697                                 llwarns << "setGamma failed!" << llendl;
01698                         }
01699                 }
01700 
01701                 return true;
01702         }
01703 };
01704 static LLGammaListener gamma_listener;
01705 
01706 class LLNightBrightnessListener: public LLSimpleListener
01707 {
01708         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01709         {
01710                 LLVOSky::sNighttimeBrightness = (F32) event->getValue().asReal();
01711                 return true;
01712         }
01713 };
01714 static LLNightBrightnessListener night_brightness_listener;
01715 
01716 const F32 MAX_USER_FOG_RATIO = 4.f;
01717 const F32 MIN_USER_FOG_RATIO = 0.5f;
01718 
01719 class LLFogRatioListener: public LLSimpleListener
01720 {
01721         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01722         {
01723                 F32 fog_ratio = llmax(MIN_USER_FOG_RATIO, 
01724                                                         llmin((F32) event->getValue().asReal(), 
01725                                                         MAX_USER_FOG_RATIO));
01726                 gSky.setFogRatio(fog_ratio);
01727                 return true;
01728         }
01729 };
01730 static LLFogRatioListener fog_ratio_listener;
01731 
01732 class LLMaxPartCountListener: public LLSimpleListener
01733 {
01734         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01735         {
01736                 LLViewerPartSim::setMaxPartCount(event->getValue().asInteger());
01737                 return true;
01738         }
01739 };
01740 static LLMaxPartCountListener max_partCount_listener;
01741 
01742 const S32 MAX_USER_COMPOSITE_LIMIT = 100;
01743 const S32 MIN_USER_COMPOSITE_LIMIT = 0;
01744 
01745 class LLCompositeLimitListener: public LLSimpleListener
01746 {
01747         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01748         {
01749                 S32 composite_limit = llmax(MIN_USER_COMPOSITE_LIMIT, 
01750                                                         llmin((S32)event->getValue().asInteger(), 
01751                                                         MAX_USER_COMPOSITE_LIMIT));
01752                 LLVOAvatar::sMaxOtherAvatarsToComposite = composite_limit;
01753                 return true;
01754         }
01755 };
01756 static LLCompositeLimitListener composite_limit_listener;
01757 
01758 class LLVideoMemoryListener: public LLSimpleListener
01759 {
01760         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01761         {
01762                 gImageList.updateMaxResidentTexMem(event->getValue().asInteger());
01763                 return true;
01764         }
01765 };
01766 static LLVideoMemoryListener video_memory_listener;
01767 
01768 class LLBandwidthListener: public LLSimpleListener
01769 {
01770         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01771         {
01772                 gViewerThrottle.setMaxBandwidth((F32) event->getValue().asReal());
01773                 return true;
01774         }
01775 };
01776 static LLBandwidthListener bandwidth_listener;
01777 
01778 class LLChatFontSizeListener: public LLSimpleListener
01779 {
01780         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01781         {
01782                 gConsole->setFontSize(event->getValue().asInteger());
01783                 return true;
01784         }
01785 };
01786 static LLChatFontSizeListener chat_font_size_listener;
01787 
01788 class LLChatPersistTimeListener: public LLSimpleListener
01789 {
01790         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01791         {
01792                 gConsole->setLinePersistTime((F32) event->getValue().asReal());
01793                 return true;
01794         }
01795 };
01796 static LLChatPersistTimeListener chat_persist_time_listener;
01797 
01798 class LLConsoleMaxLinesListener: public LLSimpleListener
01799 {
01800         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01801         {
01802                 gConsole->setMaxLines(event->getValue().asInteger());
01803                 return true;
01804         }
01805 };
01806 static LLConsoleMaxLinesListener console_max_lines_listener;
01807 
01808 // Listener for all volume settings
01809 class LLAudioListener: public LLSimpleListener
01810 {
01811         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01812         {
01813                 audio_update_volume(true);
01814                 return true;
01815         }
01816 };
01817 static LLAudioListener audio_listener;
01818 
01819 class LLJoystickListener : public LLSimpleListener
01820 {
01821         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01822         {
01823                 LLViewerJoystick::updateCamera(TRUE);
01824                 return true;
01825         }
01826 };
01827 static LLJoystickListener joystick_listener;
01828 
01829 void stop_video();
01830 void prepare_video(const LLParcel *parcel);
01831 
01832 class LLAudioStreamMusicListener: public LLSimpleListener
01833 {
01834         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01835         {
01836                 if (gAudiop)
01837                 {
01838                         if ( event->getValue().asBoolean() )
01839                         {
01840                                 if (gParcelMgr
01841                                         && gParcelMgr->getAgentParcel()
01842                                         && !gParcelMgr->getAgentParcel()->getMusicURL().empty())
01843                                 {
01844                                         // if stream is already playing, don't call this
01845                                         // otherwise music will briefly stop
01846                                         if ( ! gAudiop->isInternetStreamPlaying() )
01847                                         {
01848                                                 gAudiop->startInternetStream(gParcelMgr->getAgentParcel()->getMusicURL().c_str());
01849                                         }
01850                                 }
01851                         }
01852                         else
01853                         {
01854                                 gAudiop->stopInternetStream();
01855                         }
01856                 }
01857                 return true;
01858         }
01859 };
01860 
01861 static LLAudioStreamMusicListener audio_stream_music_listener;
01862 
01863 
01864 
01865 class LLAudioStreamMediaListener: public LLSimpleListener
01866 {
01867         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01868         {
01869                 if (LLMediaEngine::getInstance() && LLMediaEngine::getInstance()->isAvailable())
01870                 {
01871                         if (event->getValue().asBoolean())
01872                         {
01873                                 gMessageSystem->setHandlerFunc ( "ParcelMediaCommandMessage", LLMediaEngine::process_parcel_media );
01874                                 gMessageSystem->setHandlerFunc ( "ParcelMediaUpdate", LLMediaEngine::process_parcel_media_update );
01875                                 if ( ( gParcelMgr ) &&
01876                                          ( gParcelMgr->getAgentParcel () ) && 
01877                                          ( !gParcelMgr->getAgentParcel()->getMediaURL().empty() ) )
01878                                 {
01879                                         prepare_video ( gParcelMgr->getAgentParcel () );
01880                                 }
01881                         }
01882                         else
01883                         {
01884                                 gMessageSystem->setHandlerFunc("ParcelMediaCommandMessage", null_message_callback);
01885                                 gMessageSystem->setHandlerFunc ( "ParcelMediaUpdate", null_message_callback );
01886                                 stop_video();
01887                         }
01888                 }
01889                 else
01890                 {
01891                         if (gSavedSettings.getWarning("QuickTimeInstalled"))
01892                         {
01893                                 gSavedSettings.setWarning("QuickTimeInstalled", FALSE);
01894 
01895                                 LLNotifyBox::showXml("NoQuickTime" );
01896                         }
01897                 }
01898 
01899                 return true;
01900         }
01901 };
01902 
01903 static LLAudioStreamMediaListener audio_stream_media_listener;
01904 
01905 
01906 class LLUseOcclusionListener: public LLSimpleListener
01907 {
01908         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01909         {
01910                 LLPipeline::sUseOcclusion = (event->getValue().asBoolean() && gGLManager.mHasOcclusionQuery 
01911                                 && gFeatureManagerp->isFeatureAvailable("UseOcclusion") && !gUseWireframe);
01912                 return true;
01913         }
01914 };
01915 static LLUseOcclusionListener use_occlusion_listener;
01916 
01917 class LLNumpadControlListener: public LLSimpleListener
01918 {
01919         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01920         {
01921                 if (gKeyboard)
01922                 {
01923                         gKeyboard->setNumpadDistinct(static_cast<LLKeyboard::e_numpad_distinct>(event->getValue().asInteger()));
01924                 }
01925                 return true;
01926         }
01927 };
01928 
01929 static LLNumpadControlListener numpad_control_listener;
01930 
01931 class LLRenderUseVBOListener: public LLSimpleListener
01932 {
01933         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01934         {
01935                 gPipeline.setUseVBO(event->getValue().asBoolean());
01936                 return true;
01937         }
01938 };
01939 static LLRenderUseVBOListener render_use_vbo_listener;
01940 
01941 class LLRenderLightingDetailListener: public LLSimpleListener
01942 {
01943         bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
01944         {
01945                 gPipeline.setLightingDetail(event->getValue().asInteger());
01946                 return true;
01947         }
01948 };
01949 static LLRenderLightingDetailListener render_lighting_detail_listener;
01950 
01952 
01953 void settings_setup_listeners()
01954 {
01955         gSavedSettings.getControl("FirstPersonAvatarVisible")->addListener(&render_avatar_mouselook_listener);
01956         gSavedSettings.getControl("MouseSensitivity")->addListener(&mouse_sensitivity_listener);
01957         gSavedSettings.getControl("InvertMouse")->addListener(&invert_mouse_listener);
01958         gSavedSettings.getControl("AFKTimeout")->addListener(&afk_timeout_listener);
01959         gSavedSettings.getControl("RenderFarClip")->addListener(&render_far_clip_listener);
01960         gSavedSettings.getControl("RenderTerrainDetail")->addListener(&terrain_detail_listener);
01961         gSavedSettings.getControl("RenderRippleWater")->addListener(&set_shader_listener);
01962         gSavedSettings.getControl("RenderAvatarVP")->addListener(&set_shader_listener);
01963         gSavedSettings.getControl("VertexShaderEnable")->addListener(&set_shader_listener);
01964         gSavedSettings.getControl("RenderDynamicReflections")->addListener(&set_shader_listener);
01965         gSavedSettings.getControl("RenderGlow")->addListener(&release_gl_buffer_listener);
01966         gSavedSettings.getControl("RenderGlowResolution")->addListener(&release_gl_buffer_listener);
01967         gSavedSettings.getControl("RenderAvatarMode")->addListener(&set_shader_listener);
01968         gSavedSettings.getControl("RenderVolumeLODFactor")->addListener(&volume_lod_listener);
01969         gSavedSettings.getControl("RenderAvatarLODFactor")->addListener(&avatar_lod_listener);
01970         gSavedSettings.getControl("RenderTreeLODFactor")->addListener(&tree_lod_listener);
01971         gSavedSettings.getControl("RenderFlexTimeFactor")->addListener(&flex_lod_listener);
01972         gSavedSettings.getControl("ThrottleBandwidthKBPS")->addListener(&bandwidth_listener);
01973         gSavedSettings.getControl("RenderGamma")->addListener(&gamma_listener);
01974         gSavedSettings.getControl("RenderNightBrightness")->addListener(&night_brightness_listener);
01975         gSavedSettings.getControl("RenderFogRatio")->addListener(&fog_ratio_listener);
01976         gSavedSettings.getControl("RenderMaxPartCount")->addListener(&max_partCount_listener);
01977         gSavedSettings.getControl("AvatarCompositeLimit")->addListener(&composite_limit_listener);
01978         gSavedSettings.getControl("GraphicsCardMemorySetting")->addListener(&video_memory_listener);
01979         gSavedSettings.getControl("ChatFontSize")->addListener(&chat_font_size_listener);
01980         gSavedSettings.getControl("ChatPersistTime")->addListener(&chat_persist_time_listener);
01981         gSavedSettings.getControl("ConsoleMaxLines")->addListener(&console_max_lines_listener);
01982         gSavedSettings.getControl("UseOcclusion")->addListener(&use_occlusion_listener);
01983         gSavedSettings.getControl("AudioLevelMaster")->addListener(&audio_listener);
01984 //      gSavedSettings.getControl("AudioLevelSFX")->addListener(&audio_volume_listener); // no need for listener
01985 //      gSavedSettings.getControl("AudioLevelUI")->addListener(&audio_volume_listener); // no need for listener
01986         gSavedSettings.getControl("AudioLevelAmbient")->addListener(&audio_listener);
01987         gSavedSettings.getControl("AudioLevelMusic")->addListener(&audio_listener);
01988         gSavedSettings.getControl("AudioLevelMedia")->addListener(&audio_listener);
01989         gSavedSettings.getControl("AudioLevelVoice")->addListener(&audio_listener);
01990         gSavedSettings.getControl("AudioLevelDistance")->addListener(&audio_listener);
01991         gSavedSettings.getControl("AudioLevelDoppler")->addListener(&audio_listener);
01992         gSavedSettings.getControl("AudioLevelRolloff")->addListener(&audio_listener);
01993         gSavedSettings.getControl("AudioStreamingMusic")->addListener(&audio_stream_music_listener);
01994         gSavedSettings.getControl("AudioStreamingVideo")->addListener(&audio_stream_media_listener);
01995         gSavedSettings.getControl("MuteAudio")->addListener(&audio_listener);
01996         gSavedSettings.getControl("RenderVBOEnable")->addListener(&render_use_vbo_listener);
01997         gSavedSettings.getControl("RenderLightingDetail")->addListener(&render_lighting_detail_listener);
01998         gSavedSettings.getControl("NumpadControl")->addListener(&numpad_control_listener);
01999         gSavedSettings.getControl("FlycamAxis0")->addListener(&joystick_listener);
02000         gSavedSettings.getControl("FlycamAxis1")->addListener(&joystick_listener);
02001         gSavedSettings.getControl("FlycamAxis2")->addListener(&joystick_listener);
02002         gSavedSettings.getControl("FlycamAxis3")->addListener(&joystick_listener);
02003         gSavedSettings.getControl("FlycamAxis4")->addListener(&joystick_listener);
02004         gSavedSettings.getControl("FlycamAxis5")->addListener(&joystick_listener);
02005         gSavedSettings.getControl("FlycamAxis6")->addListener(&joystick_listener);
02006 }

Generated on Thu Jul 1 06:08:23 2010 for Second Life Viewer by  doxygen 1.4.7