3 // Radegast Metaverse Client
4 // Copyright (c) 2009-2014, Radegast Development Team
5 // All rights reserved.
7 // Redistribution and use in source and binary forms, with or without
8 // modification, are permitted provided that the following conditions are met:
10 // * Redistributions of source code must retain the above copyright notice,
11 // this list of conditions and the following disclaimer.
12 // * Redistributions in binary form must reproduce the above copyright
13 // notice, this list of conditions and the following disclaimer in the
14 // documentation and/or other materials provided with the distribution.
15 // * Neither the name of the application "Radegast", nor the names of its
16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission.
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 using System.Collections.Generic;
34 using System.ComponentModel;
39 using System.Windows.Forms;
42 using OpenMetaverse.StructuredData;
44 using Radegast.Automation;
48 public enum AutoResponseType : int
51 WhenFromNonFriend = 1,
55 public partial class frmSettings : RadegastForm
58 private static bool settingInitialized = false;
60 public static void InitSettigs(Settings s, bool mono)
62 if (s["im_timestamps"].Type == OSDType.Unknown)
64 s["im_timestamps"] = OSD.FromBoolean(true);
67 if (s["rlv_enabled"].Type == OSDType.Unknown)
69 s["rlv_enabled"] = new OSDBoolean(false);
72 if (s["mu_emotes"].Type == OSDType.Unknown)
74 s["mu_emotes"] = new OSDBoolean(false);
77 if (s["friends_notification_highlight"].Type == OSDType.Unknown)
79 s["friends_notification_highlight"] = new OSDBoolean(true);
82 if (!s.ContainsKey("no_typing_anim")) s["no_typing_anim"] = OSD.FromBoolean(false);
84 if (!s.ContainsKey("auto_response_type"))
86 s["auto_response_type"] = (int)AutoResponseType.WhenBusy;
87 s["auto_response_text"] = "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.";
90 if (!s.ContainsKey("script_syntax_highlight")) s["script_syntax_highlight"] = OSD.FromBoolean(true);
92 if (!s.ContainsKey("display_name_mode")) s["display_name_mode"] = (int)NameMode.Smart;
94 // Convert legacy settings from first last name to username
95 if (!s.ContainsKey("username") && (s.ContainsKey("first_name") && s.ContainsKey("last_name")))
97 s["username"] = s["first_name"] + " " + s["last_name"];
98 s.Remove("first_name");
99 s.Remove("last_name");
102 if (!s.ContainsKey("reconnect_time")) s["reconnect_time"] = 120;
104 if (!s.ContainsKey("resolve_uri_time")) s["resolve_uri_time"] = 100;
106 if (!s.ContainsKey("resolve_uris")) s["resolve_uris"] = true;
108 if (!s.ContainsKey("transaction_notification_chat")) s["transaction_notification_chat"] = true;
110 if (!s.ContainsKey("transaction_notification_dialog")) s["transaction_notification_dialog"] = true;
112 if (!s.ContainsKey("minimize_to_tray")) s["minimize_to_tray"] = false;
114 if (!s.ContainsKey("scene_window_docked")) s["scene_window_docked"] = true;
116 if (!s.ContainsKey("taskbar_highlight")) s["taskbar_highlight"] = true;
118 if (!s.ContainsKey("rendering_occlusion_culling_enabled2")) s["rendering_occlusion_culling_enabled2"] = false;
120 if (!s.ContainsKey("rendering_use_vbo")) s["rendering_use_vbo"] = true;
122 if (!s.ContainsKey("send_rad_client_tag")) s["send_rad_client_tag"] = true;
124 if (!s.ContainsKey("log_to_file")) s["log_to_file"] = true;
126 if (!s.ContainsKey("disable_chat_im_log")) s["disable_chat_im_log"] = false;
128 if (!s.ContainsKey("disable_look_at")) s["disable_look_at"] = false;
130 if (!s.ContainsKey("highlight_on_chat")) s["highlight_on_chat"] = true;
132 if (!s.ContainsKey("highlight_on_im")) s["highlight_on_im"] = true;
134 if (!s.ContainsKey("highlight_on_group_im")) s["highlight_on_group_im"] = true;
136 if (!s.ContainsKey("av_name_link")) s["av_name_link"] = false;
138 if (!s.ContainsKey("disable_http_inventory"))
140 s["disable_http_inventory"] = mono;
143 if (!s.ContainsKey("on_script_question"))
145 s["on_script_question"] = "Ask";
150 public frmSettings(RadegastInstance instance)
153 if (settingInitialized)
155 frmSettings.InitSettigs(instance.GlobalSettings, instance.MonoRuntime);
158 InitializeComponent();
159 AutoSavePosition = true;
161 s = instance.GlobalSettings;
162 tbpGraphics.Controls.Add(new Radegast.Rendering.GraphicsPreferences(instance));
163 cbChatTimestamps.Checked = s["chat_timestamps"].AsBoolean();
165 cbIMTimeStamps.Checked = s["im_timestamps"].AsBoolean();
167 cbChatTimestamps.CheckedChanged += new EventHandler(cbChatTimestamps_CheckedChanged);
168 cbIMTimeStamps.CheckedChanged += new EventHandler(cbIMTimeStamps_CheckedChanged);
170 cbTrasactDialog.Checked = s["transaction_notification_dialog"].AsBoolean();
171 cbTrasactChat.Checked = s["transaction_notification_chat"].AsBoolean();
173 cbFriendsNotifications.Checked = s["show_friends_online_notifications"].AsBoolean();
174 cbFriendsNotifications.CheckedChanged += new EventHandler(cbFriendsNotifications_CheckedChanged);
176 cbAutoReconnect.Checked = s["auto_reconnect"].AsBoolean();
177 cbAutoReconnect.CheckedChanged += new EventHandler(cbAutoReconnect_CheckedChanged);
179 cbResolveURIs.Checked = s["resolve_uris"].AsBoolean();
180 cbResolveURIs.CheckedChanged += new EventHandler(cbResolveURIs_CheckedChanged); ;
182 cbHideLoginGraphics.Checked = s["hide_login_graphics"].AsBoolean();
183 cbHideLoginGraphics.CheckedChanged += new EventHandler(cbHideLoginGraphics_CheckedChanged);
185 cbRLV.Checked = s["rlv_enabled"].AsBoolean();
186 cbRLV.CheckedChanged += (object sender, EventArgs e) =>
188 s["rlv_enabled"] = new OSDBoolean(cbRLV.Checked);
191 cbMUEmotes.Checked = s["mu_emotes"].AsBoolean();
192 cbMUEmotes.CheckedChanged += (object sender, EventArgs e) =>
194 s["mu_emotes"] = new OSDBoolean(cbMUEmotes.Checked);
197 if (s["chat_font_size"].Type != OSDType.Real)
199 s["chat_font_size"] = OSD.FromReal(((ChatConsole)instance.TabConsole.Tabs["chat"].Control).cbxInput.Font.Size);
202 cbFontSize.Text = s["chat_font_size"].AsReal().ToString(System.Globalization.CultureInfo.InvariantCulture);
204 if (!s.ContainsKey("minimize_to_tray")) s["minimize_to_tray"] = OSD.FromBoolean(false);
205 cbMinToTrey.Checked = s["minimize_to_tray"].AsBoolean();
206 cbMinToTrey.CheckedChanged += (object sender, EventArgs e) =>
208 s["minimize_to_tray"] = OSD.FromBoolean(cbMinToTrey.Checked);
212 cbNoTyping.Checked = s["no_typing_anim"].AsBoolean();
213 cbNoTyping.CheckedChanged += (object sender, EventArgs e) =>
215 s["no_typing_anim"] = OSD.FromBoolean(cbNoTyping.Checked);
218 txtAutoResponse.Text = s["auto_response_text"];
219 txtAutoResponse.TextChanged += (object sender, EventArgs e) =>
221 s["auto_response_text"] = txtAutoResponse.Text;
223 AutoResponseType art = (AutoResponseType)s["auto_response_type"].AsInteger();
226 case AutoResponseType.WhenBusy: rbAutobusy.Checked = true; break;
227 case AutoResponseType.WhenFromNonFriend: rbAutoNonFriend.Checked = true; break;
228 case AutoResponseType.Always: rbAutoAlways.Checked = true; break;
231 cbSyntaxHighlight.Checked = s["script_syntax_highlight"].AsBoolean();
232 cbSyntaxHighlight.CheckedChanged += (object sender, EventArgs e) =>
234 s["script_syntax_highlight"] = OSD.FromBoolean(cbSyntaxHighlight.Checked);
237 switch ((NameMode)s["display_name_mode"].AsInteger())
239 case NameMode.Standard: rbDNOff.Checked = true; break;
240 case NameMode.Smart: rbDNSmart.Checked = true; break;
241 case NameMode.DisplayNameAndUserName: rbDNDandUsernme.Checked = true; break;
242 case NameMode.OnlyDisplayName: rbDNOnlyDN.Checked = true; break;
245 txtReconnectTime.Text = s["reconnect_time"].AsInteger().ToString();
247 txtResolveURITime.Text = s["resolve_uri_time"].AsInteger().ToString();
249 cbRadegastClientTag.Checked = s["send_rad_client_tag"];
250 cbRadegastClientTag.CheckedChanged += (sender, e) =>
252 s["send_rad_client_tag"] = cbRadegastClientTag.Checked;
253 instance.SetClientTag();
256 cbOnInvOffer.SelectedIndex = s["inv_auto_accept_mode"].AsInteger();
257 cbOnInvOffer.SelectedIndexChanged += (sender, e) =>
259 s["inv_auto_accept_mode"] = cbOnInvOffer.SelectedIndex;
262 cbRadegastLogToFile.Checked = s["log_to_file"];
264 cbDisableChatIMLog.Checked = s["disable_chat_im_log"];
265 cbDisableChatIMLog.CheckedChanged += (sender, e) =>
267 s["disable_chat_im_log"] = cbDisableChatIMLog.Checked;
270 cbDisableLookAt.Checked = s["disable_look_at"];
271 cbDisableLookAt.CheckedChanged += (sender, e) =>
273 s["disable_look_at"] = cbDisableLookAt.Checked;
276 cbTaskBarHighLight.Checked = s["taskbar_highlight"];
277 cbTaskBarHighLight.CheckedChanged += (sender, e) =>
279 s["taskbar_highlight"] = cbTaskBarHighLight.Checked;
283 cbFriendsHighlight.Checked = s["friends_notification_highlight"].AsBoolean();
284 cbFriendsHighlight.CheckedChanged += (object sender, EventArgs e) =>
286 s["friends_notification_highlight"] = new OSDBoolean(cbFriendsHighlight.Checked);
289 cbHighlightChat.Checked = s["highlight_on_chat"];
290 cbHighlightChat.CheckedChanged += (sender, e) =>
292 s["highlight_on_chat"] = cbHighlightChat.Checked;
295 cbHighlightIM.Checked = s["highlight_on_im"];
296 cbHighlightIM.CheckedChanged += (sender, e) =>
298 s["highlight_on_im"] = cbHighlightIM.Checked;
301 cbHighlightGroupIM.Checked = s["highlight_on_group_im"];
302 cbHighlightGroupIM.CheckedChanged += (sender, e) =>
304 s["highlight_on_group_im"] = cbHighlightGroupIM.Checked;
307 // disable_av_name_link
308 if (instance.MonoRuntime)
310 cbNameLinks.Visible = false;
314 cbNameLinks.Checked = s["av_name_link"];
315 cbNameLinks.CheckedChanged += (sender, e) =>
317 s["av_name_link"] = cbNameLinks.Checked;
321 cbDisableHTTPInventory.Checked = s["disable_http_inventory"];
322 cbDisableHTTPInventory.CheckedChanged += (sender, e) =>
324 s["disable_http_inventory"] = cbDisableHTTPInventory.Checked;
327 cbShowScriptErrors.Checked = s["show_script_errors"];
328 cbShowScriptErrors.CheckedChanged += (sender, e) =>
330 s["show_script_errors"] = cbShowScriptErrors.Checked;
333 autoSitPrefsUpdate();
334 pseudoHomePrefsUpdated();
335 LSLHelperPrefsUpdate();
337 cbAutoScriptPermission.Text = s["on_script_question"];
344 if (cbTaskBarHighLight.Checked)
346 cbFriendsHighlight.Enabled = cbHighlightChat.Enabled = cbHighlightGroupIM.Enabled = cbHighlightIM.Enabled = true;
350 cbFriendsHighlight.Enabled = cbHighlightChat.Enabled = cbHighlightGroupIM.Enabled = cbHighlightIM.Enabled = false;
354 void cbHideLoginGraphics_CheckedChanged(object sender, EventArgs e)
356 s["hide_login_graphics"] = OSD.FromBoolean(cbHideLoginGraphics.Checked);
359 void cbAutoReconnect_CheckedChanged(object sender, EventArgs e)
361 s["auto_reconnect"] = OSD.FromBoolean(cbAutoReconnect.Checked);
364 private void cbResolveURIs_CheckedChanged(object sender, EventArgs e)
366 s["resolve_uris"] = OSD.FromBoolean(cbResolveURIs.Checked);
369 void cbFriendsNotifications_CheckedChanged(object sender, EventArgs e)
371 s["show_friends_online_notifications"] = OSD.FromBoolean(cbFriendsNotifications.Checked);
374 void cbChatTimestamps_CheckedChanged(object sender, EventArgs e)
376 s["chat_timestamps"] = OSD.FromBoolean(cbChatTimestamps.Checked);
379 void cbIMTimeStamps_CheckedChanged(object sender, EventArgs e)
381 s["im_timestamps"] = OSD.FromBoolean(cbIMTimeStamps.Checked);
384 private void cbTrasactDialog_CheckedChanged(object sender, EventArgs e)
386 s["transaction_notification_dialog"] = OSD.FromBoolean(cbTrasactDialog.Checked);
389 private void cbTrasactChat_CheckedChanged(object sender, EventArgs e)
391 s["transaction_notification_chat"] = OSD.FromBoolean(cbTrasactChat.Checked);
394 private void UpdateFontSize()
397 double existing = s["chat_font_size"].AsReal();
399 if (!double.TryParse(cbFontSize.Text, out f))
401 cbFontSize.Text = s["chat_font_size"].AsReal().ToString(System.Globalization.CultureInfo.InvariantCulture);
405 if (Math.Abs(existing - f) > 0.0001f)
406 s["chat_font_size"] = OSD.FromReal(f);
410 private void cbFontSize_SelectedIndexChanged(object sender, EventArgs e)
415 private void cbFontSize_KeyDown(object sender, KeyEventArgs e)
417 if (e.KeyCode == Keys.Enter)
420 e.Handled = e.SuppressKeyPress = true;
424 private void cbFontSize_Leave(object sender, EventArgs e)
429 private void rbAutobusy_CheckedChanged(object sender, EventArgs e)
431 s["auto_response_type"] = (int)AutoResponseType.WhenBusy;
434 private void rbAutoNonFriend_CheckedChanged(object sender, EventArgs e)
436 s["auto_response_type"] = (int)AutoResponseType.WhenFromNonFriend;
439 private void rbAutoAlways_CheckedChanged(object sender, EventArgs e)
441 s["auto_response_type"] = (int)AutoResponseType.Always;
444 private void rbDNOff_CheckedChanged(object sender, EventArgs e)
448 Instance.Names.CleanCache();
449 s["display_name_mode"] = (int)NameMode.Standard;
453 private void rbDNSmart_CheckedChanged(object sender, EventArgs e)
455 if (rbDNSmart.Checked)
457 Instance.Names.CleanCache();
458 s["display_name_mode"] = (int)NameMode.Smart;
462 private void rbDNDandUsernme_CheckedChanged(object sender, EventArgs e)
464 if (rbDNDandUsernme.Checked)
466 Instance.Names.CleanCache();
467 s["display_name_mode"] = (int)NameMode.DisplayNameAndUserName;
471 private void rbDNOnlyDN_CheckedChanged(object sender, EventArgs e)
473 if (rbDNOnlyDN.Checked)
475 Instance.Names.CleanCache();
476 s["display_name_mode"] = (int)NameMode.OnlyDisplayName;
480 private void txtReconnectTime_TextChanged(object sender, EventArgs e)
482 string input = System.Text.RegularExpressions.Regex.Replace(txtReconnectTime.Text, @"[^\d]", "");
484 int.TryParse(input, out t);
486 if (txtReconnectTime.Text != t.ToString())
488 txtReconnectTime.Text = t.ToString();
489 txtReconnectTime.Select(txtReconnectTime.Text.Length, 0);
492 s["reconnect_time"] = t;
495 private void txtResolveURITime_TextChanged(object sender, EventArgs e)
497 string input = System.Text.RegularExpressions.Regex.Replace(txtResolveURITime.Text, @"[^\d]", "");
499 int.TryParse(input, out t);
501 if (txtResolveURITime.Text != t.ToString())
503 txtResolveURITime.Text = t.ToString();
504 txtResolveURITime.Select(txtResolveURITime.Text.Length, 0);
507 s["resolve_uri_time"] = t;
510 private void cbRadegastLogToFile_CheckedChanged(object sender, EventArgs e)
512 s["log_to_file"] = OSD.FromBoolean(cbRadegastLogToFile.Checked);
517 private void autoSitPrefsUpdate()
519 autoSit.Enabled = (Instance.Client.Network.Connected && Instance.ClientSettings != null);
520 if (!autoSit.Enabled)
524 AutoSitPreferences prefs = Instance.State.AutoSit.Preferences;
525 autoSitName.Text = prefs.PrimitiveName;
526 autoSitUUID.Text = prefs.Primitive.ToString();
527 autoSitSit.Enabled = prefs.Primitive != UUID.Zero;
528 autoSitEnabled.Checked = prefs.Enabled;
531 private void autoSitClear_Click(object sender, EventArgs e)
533 Instance.State.AutoSit.Preferences = new AutoSitPreferences();
534 autoSitPrefsUpdate();
537 private void autoSitNameLabel_Click(object sender, EventArgs e)
539 autoSitName.SelectAll();
542 private void autoSitUUIDLabel_Click(object sender, EventArgs e)
544 autoSitUUID.SelectAll();
547 private void autoSitSit_Click(object sender, EventArgs e)
549 Instance.State.AutoSit.TrySit();
552 private void autoSitEnabled_CheckedChanged(object sender, EventArgs e)
554 Instance.State.AutoSit.Preferences = new AutoSitPreferences
556 Primitive = Instance.State.AutoSit.Preferences.Primitive,
557 PrimitiveName = Instance.State.AutoSit.Preferences.PrimitiveName,
558 Enabled = autoSitEnabled.Checked
561 if (Instance.State.AutoSit.Preferences.Enabled)
563 Instance.State.AutoSit.TrySit();
567 private void autoSitUUID_Leave(object sender, EventArgs e)
569 UUID primID = UUID.Zero;
570 if (UUID.TryParse(autoSitUUID.Text, out primID))
572 Instance.State.AutoSit.Preferences = new AutoSitPreferences
575 PrimitiveName = autoSitName.Text,
576 Enabled = autoSitEnabled.Checked
579 if (Instance.State.AutoSit.Preferences.Enabled)
581 Instance.State.AutoSit.TrySit();
586 autoSitUUID.Text = UUID.Zero.ToString();
593 private void pseudoHomePrefsUpdated()
595 pseudoHome.Enabled = (Instance.Client.Network.Connected && Instance.ClientSettings != null);
596 if (!pseudoHome.Enabled)
600 PseudoHomePreferences prefs = Instance.State.PseudoHome.Preferences;
601 pseudoHomeLocation.Text = (prefs.Region != string.Empty) ? string.Format("{0} <{1}, {2}, {3}>", prefs.Region, (int)prefs.Position.X, (int)prefs.Position.Y, (int)prefs.Position.Z) : "";
602 pseudoHomeEnabled.Checked = prefs.Enabled;
603 pseudoHomeTP.Enabled = (prefs.Region.Trim() != string.Empty);
604 pseudoHomeTolerance.Value = Math.Max(pseudoHomeTolerance.Minimum, Math.Min(pseudoHomeTolerance.Maximum, prefs.Tolerance));
607 private void pseudoHomeLabel_Click(object sender, EventArgs e)
609 pseudoHomeLocation.SelectAll();
612 private void pseudoHomeEnabled_CheckedChanged(object sender, EventArgs e)
614 Instance.State.PseudoHome.Preferences = new PseudoHomePreferences
616 Enabled = pseudoHomeEnabled.Checked,
617 Region = Instance.State.PseudoHome.Preferences.Region,
618 Position = Instance.State.PseudoHome.Preferences.Position,
619 Tolerance = Instance.State.PseudoHome.Preferences.Tolerance
623 private void pseudoHomeTP_Click(object sender, EventArgs e)
625 Instance.State.PseudoHome.ETGoHome();
628 private void pseudoHomeSet_Click(object sender, EventArgs e)
630 Instance.State.PseudoHome.Preferences = new PseudoHomePreferences
632 Enabled = Instance.State.PseudoHome.Preferences.Enabled,
633 Region = Instance.Client.Network.CurrentSim.Name,
634 Position = Instance.Client.Self.SimPosition,
635 Tolerance = Instance.State.PseudoHome.Preferences.Tolerance
637 pseudoHomePrefsUpdated();
640 private void pseudoHomeTolerance_ValueChanged(object sender, EventArgs e)
642 Instance.State.PseudoHome.Preferences = new PseudoHomePreferences
644 Enabled = Instance.State.PseudoHome.Preferences.Enabled,
645 Region = Instance.State.PseudoHome.Preferences.Region,
646 Position = Instance.State.PseudoHome.Preferences.Position,
647 Tolerance = (uint)pseudoHomeTolerance.Value
651 private void pseudoHomeClear_Click(object sender, EventArgs e)
653 Instance.State.PseudoHome.Preferences = new PseudoHomePreferences();
654 pseudoHomePrefsUpdated();
659 private void LSLHelperPrefsUpdate()
661 gbLSLHelper.Enabled = (Instance.Client.Network.Connected && Instance.ClientSettings != null);
663 if (!gbLSLHelper.Enabled)
668 Instance.State.LSLHelper.LoadSettings();
669 tbLSLAllowedOwner.Text = Instance.State.LSLHelper.AllowedOwner.ToString();
670 cbLSLHelperEnabled.CheckedChanged -=new EventHandler(cbLSLHelperEnabled_CheckedChanged);
671 cbLSLHelperEnabled.Checked = Instance.State.LSLHelper.Enabled;
672 cbLSLHelperEnabled.CheckedChanged += new EventHandler(cbLSLHelperEnabled_CheckedChanged);
675 private void LSLHelperPrefsSave()
677 if (Instance.ClientSettings == null)
682 Instance.State.LSLHelper.Enabled = cbLSLHelperEnabled.Checked;
683 UUID allowedOwnner = UUID.Zero;
684 UUID.TryParse(tbLSLAllowedOwner.Text, out allowedOwnner);
685 Instance.State.LSLHelper.AllowedOwner = allowedOwnner;
686 Instance.State.LSLHelper.SaveSettings();
689 private void llLSLHelperInstructios_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
691 Instance.MainForm.ProcessLink("http://radegast.org/wiki/LSL_Helper", false);
694 private void tbLSLAllowedOwner_Leave(object sender, EventArgs e)
696 UUID allowedOwner = UUID.Zero;
697 if (UUID.TryParse(tbLSLAllowedOwner.Text, out allowedOwner))
702 tbLSLAllowedOwner.Text = UUID.Zero.ToString();
704 LSLHelperPrefsSave();
707 private void lblLSLUUID_Click(object sender, EventArgs e)
709 tbLSLAllowedOwner.SelectAll();
712 private void cbLSLHelperEnabled_CheckedChanged(object sender, EventArgs e)
714 LSLHelperPrefsSave();
716 #endregion LSL Helper
718 private void cbAutoScriptPermission_SelectedIndexChanged(object sender, EventArgs e)
720 s["on_script_question"] = cbAutoScriptPermission.Text;