//
// Radegast Metaverse Client
-// Copyright (c) 2009-2012, Radegast Development Team
+// Copyright (c) 2009-2014, Radegast Development Team
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
using System.Linq;
using System.Text;
using System.Windows.Forms;
+
+using OpenMetaverse;
using OpenMetaverse.StructuredData;
+using Radegast.Automation;
+
namespace Radegast
{
public enum AutoResponseType : int
private Settings s;
private static bool settingInitialized = false;
- public static void InitSettigs(Settings s)
+ public static void InitSettigs(Settings s, bool mono)
{
if (s["im_timestamps"].Type == OSDType.Unknown)
{
if (!s.ContainsKey("reconnect_time")) s["reconnect_time"] = 120;
+ if (!s.ContainsKey("resolve_uri_time")) s["resolve_uri_time"] = 100;
+
+ if (!s.ContainsKey("resolve_uris")) s["resolve_uris"] = true;
+
if (!s.ContainsKey("transaction_notification_chat")) s["transaction_notification_chat"] = true;
if (!s.ContainsKey("transaction_notification_dialog")) s["transaction_notification_dialog"] = true;
if (!s.ContainsKey("taskbar_highlight")) s["taskbar_highlight"] = true;
- if (!s.ContainsKey("rendering_occlusion_culling_enabled")) s["rendering_occlusion_culling_enabled"] = true;
+ if (!s.ContainsKey("rendering_occlusion_culling_enabled2")) s["rendering_occlusion_culling_enabled2"] = false;
if (!s.ContainsKey("rendering_use_vbo")) s["rendering_use_vbo"] = true;
if (!s.ContainsKey("disable_chat_im_log")) s["disable_chat_im_log"] = false;
if (!s.ContainsKey("disable_look_at")) s["disable_look_at"] = false;
+
+ if (!s.ContainsKey("highlight_on_chat")) s["highlight_on_chat"] = true;
+
+ if (!s.ContainsKey("highlight_on_im")) s["highlight_on_im"] = true;
+
+ if (!s.ContainsKey("highlight_on_group_im")) s["highlight_on_group_im"] = true;
+
+ if (!s.ContainsKey("av_name_link")) s["av_name_link"] = false;
+
+ if (!s.ContainsKey("disable_http_inventory"))
+ {
+ s["disable_http_inventory"] = mono;
+ }
+
+ if (!s.ContainsKey("on_script_question"))
+ {
+ s["on_script_question"] = "Ask";
+ }
+
}
public frmSettings(RadegastInstance instance)
+ : base(instance)
{
if (settingInitialized)
{
- frmSettings.InitSettigs(instance.GlobalSettings);
+ frmSettings.InitSettigs(instance.GlobalSettings, instance.MonoRuntime);
}
InitializeComponent();
+ AutoSavePosition = true;
s = instance.GlobalSettings;
tbpGraphics.Controls.Add(new Radegast.Rendering.GraphicsPreferences(instance));
cbAutoReconnect.Checked = s["auto_reconnect"].AsBoolean();
cbAutoReconnect.CheckedChanged += new EventHandler(cbAutoReconnect_CheckedChanged);
+ cbResolveURIs.Checked = s["resolve_uris"].AsBoolean();
+ cbResolveURIs.CheckedChanged += new EventHandler(cbResolveURIs_CheckedChanged); ;
+
cbHideLoginGraphics.Checked = s["hide_login_graphics"].AsBoolean();
cbHideLoginGraphics.CheckedChanged += new EventHandler(cbHideLoginGraphics_CheckedChanged);
s["mu_emotes"] = new OSDBoolean(cbMUEmotes.Checked);
};
- cbFriendsHighlight.Checked = s["friends_notification_highlight"].AsBoolean();
- cbFriendsHighlight.CheckedChanged += (object sender, EventArgs e) =>
- {
- s["friends_notification_highlight"] = new OSDBoolean(cbFriendsHighlight.Checked);
- };
-
if (s["chat_font_size"].Type != OSDType.Real)
{
s["chat_font_size"] = OSD.FromReal(((ChatConsole)instance.TabConsole.Tabs["chat"].Control).cbxInput.Font.Size);
if (!s.ContainsKey("minimize_to_tray")) s["minimize_to_tray"] = OSD.FromBoolean(false);
cbMinToTrey.Checked = s["minimize_to_tray"].AsBoolean();
cbMinToTrey.CheckedChanged += (object sender, EventArgs e) =>
- {
- s["minimize_to_tray"] = OSD.FromBoolean(cbMinToTrey.Checked);
- };
+ {
+ s["minimize_to_tray"] = OSD.FromBoolean(cbMinToTrey.Checked);
+ };
cbNoTyping.Checked = s["no_typing_anim"].AsBoolean();
txtAutoResponse.Text = s["auto_response_text"];
txtAutoResponse.TextChanged += (object sender, EventArgs e) =>
- {
- s["auto_response_text"] = txtAutoResponse.Text;
- };
+ {
+ s["auto_response_text"] = txtAutoResponse.Text;
+ };
AutoResponseType art = (AutoResponseType)s["auto_response_type"].AsInteger();
switch (art)
{
txtReconnectTime.Text = s["reconnect_time"].AsInteger().ToString();
- cbTaskBarHighLight.Checked = s["taskbar_highlight"];
- cbTaskBarHighLight.CheckedChanged += (sender, e) =>
- {
- s["taskbar_highlight"] = cbTaskBarHighLight.Checked;
- };
+ txtResolveURITime.Text = s["resolve_uri_time"].AsInteger().ToString();
cbRadegastClientTag.Checked = s["send_rad_client_tag"];
cbRadegastClientTag.CheckedChanged += (sender, e) =>
{
s["disable_look_at"] = cbDisableLookAt.Checked;
};
+
+ cbTaskBarHighLight.Checked = s["taskbar_highlight"];
+ cbTaskBarHighLight.CheckedChanged += (sender, e) =>
+ {
+ s["taskbar_highlight"] = cbTaskBarHighLight.Checked;
+ UpdateEnabled();
+ };
+
+ cbFriendsHighlight.Checked = s["friends_notification_highlight"].AsBoolean();
+ cbFriendsHighlight.CheckedChanged += (object sender, EventArgs e) =>
+ {
+ s["friends_notification_highlight"] = new OSDBoolean(cbFriendsHighlight.Checked);
+ };
+
+ cbHighlightChat.Checked = s["highlight_on_chat"];
+ cbHighlightChat.CheckedChanged += (sender, e) =>
+ {
+ s["highlight_on_chat"] = cbHighlightChat.Checked;
+ };
+
+ cbHighlightIM.Checked = s["highlight_on_im"];
+ cbHighlightIM.CheckedChanged += (sender, e) =>
+ {
+ s["highlight_on_im"] = cbHighlightIM.Checked;
+ };
+
+ cbHighlightGroupIM.Checked = s["highlight_on_group_im"];
+ cbHighlightGroupIM.CheckedChanged += (sender, e) =>
+ {
+ s["highlight_on_group_im"] = cbHighlightGroupIM.Checked;
+ };
+
+ // disable_av_name_link
+ if (instance.MonoRuntime)
+ {
+ cbNameLinks.Visible = false;
+ }
+ else
+ {
+ cbNameLinks.Checked = s["av_name_link"];
+ cbNameLinks.CheckedChanged += (sender, e) =>
+ {
+ s["av_name_link"] = cbNameLinks.Checked;
+ };
+ }
+
+ cbDisableHTTPInventory.Checked = s["disable_http_inventory"];
+ cbDisableHTTPInventory.CheckedChanged += (sender, e) =>
+ {
+ s["disable_http_inventory"] = cbDisableHTTPInventory.Checked;
+ };
+
+ cbShowScriptErrors.Checked = s["show_script_errors"];
+ cbShowScriptErrors.CheckedChanged += (sender, e) =>
+ {
+ s["show_script_errors"] = cbShowScriptErrors.Checked;
+ };
+
+ autoSitPrefsUpdate();
+ pseudoHomePrefsUpdated();
+ LSLHelperPrefsUpdate();
+
+ cbAutoScriptPermission.Text = s["on_script_question"];
+
+ UpdateEnabled();
+ }
+
+ void UpdateEnabled()
+ {
+ if (cbTaskBarHighLight.Checked)
+ {
+ cbFriendsHighlight.Enabled = cbHighlightChat.Enabled = cbHighlightGroupIM.Enabled = cbHighlightIM.Enabled = true;
+ }
+ else
+ {
+ cbFriendsHighlight.Enabled = cbHighlightChat.Enabled = cbHighlightGroupIM.Enabled = cbHighlightIM.Enabled = false;
+ }
}
void cbHideLoginGraphics_CheckedChanged(object sender, EventArgs e)
s["auto_reconnect"] = OSD.FromBoolean(cbAutoReconnect.Checked);
}
+ private void cbResolveURIs_CheckedChanged(object sender, EventArgs e)
+ {
+ s["resolve_uris"] = OSD.FromBoolean(cbResolveURIs.Checked);
+ }
+
void cbFriendsNotifications_CheckedChanged(object sender, EventArgs e)
{
s["show_friends_online_notifications"] = OSD.FromBoolean(cbFriendsNotifications.Checked);
private void rbDNOff_CheckedChanged(object sender, EventArgs e)
{
if (rbDNOff.Checked)
+ {
+ Instance.Names.CleanCache();
s["display_name_mode"] = (int)NameMode.Standard;
+ }
}
private void rbDNSmart_CheckedChanged(object sender, EventArgs e)
{
if (rbDNSmart.Checked)
+ {
+ Instance.Names.CleanCache();
s["display_name_mode"] = (int)NameMode.Smart;
+ }
}
private void rbDNDandUsernme_CheckedChanged(object sender, EventArgs e)
{
if (rbDNDandUsernme.Checked)
+ {
+ Instance.Names.CleanCache();
s["display_name_mode"] = (int)NameMode.DisplayNameAndUserName;
+ }
}
private void rbDNOnlyDN_CheckedChanged(object sender, EventArgs e)
{
if (rbDNOnlyDN.Checked)
+ {
+ Instance.Names.CleanCache();
s["display_name_mode"] = (int)NameMode.OnlyDisplayName;
+ }
}
private void txtReconnectTime_TextChanged(object sender, EventArgs e)
string input = System.Text.RegularExpressions.Regex.Replace(txtReconnectTime.Text, @"[^\d]", "");
int t = 120;
int.TryParse(input, out t);
-
+
if (txtReconnectTime.Text != t.ToString())
{
txtReconnectTime.Text = t.ToString();
txtReconnectTime.Select(txtReconnectTime.Text.Length, 0);
}
-
+
s["reconnect_time"] = t;
}
+ private void txtResolveURITime_TextChanged(object sender, EventArgs e)
+ {
+ string input = System.Text.RegularExpressions.Regex.Replace(txtResolveURITime.Text, @"[^\d]", "");
+ int t = 100;
+ int.TryParse(input, out t);
+
+ if (txtResolveURITime.Text != t.ToString())
+ {
+ txtResolveURITime.Text = t.ToString();
+ txtResolveURITime.Select(txtResolveURITime.Text.Length, 0);
+ }
+
+ s["resolve_uri_time"] = t;
+ }
+
private void cbRadegastLogToFile_CheckedChanged(object sender, EventArgs e)
{
s["log_to_file"] = OSD.FromBoolean(cbRadegastLogToFile.Checked);
}
+
+ #region Auto-Sit
+
+ private void autoSitPrefsUpdate()
+ {
+ autoSit.Enabled = (Instance.Client.Network.Connected && Instance.ClientSettings != null);
+ if (!autoSit.Enabled)
+ {
+ return;
+ }
+ AutoSitPreferences prefs = Instance.State.AutoSit.Preferences;
+ autoSitName.Text = prefs.PrimitiveName;
+ autoSitUUID.Text = prefs.Primitive.ToString();
+ autoSitSit.Enabled = prefs.Primitive != UUID.Zero;
+ autoSitEnabled.Checked = prefs.Enabled;
+ }
+
+ private void autoSitClear_Click(object sender, EventArgs e)
+ {
+ Instance.State.AutoSit.Preferences = new AutoSitPreferences();
+ autoSitPrefsUpdate();
+ }
+
+ private void autoSitNameLabel_Click(object sender, EventArgs e)
+ {
+ autoSitName.SelectAll();
+ }
+
+ private void autoSitUUIDLabel_Click(object sender, EventArgs e)
+ {
+ autoSitUUID.SelectAll();
+ }
+
+ private void autoSitSit_Click(object sender, EventArgs e)
+ {
+ Instance.State.AutoSit.TrySit();
+ }
+
+ private void autoSitEnabled_CheckedChanged(object sender, EventArgs e)
+ {
+ Instance.State.AutoSit.Preferences = new AutoSitPreferences
+ {
+ Primitive = Instance.State.AutoSit.Preferences.Primitive,
+ PrimitiveName = Instance.State.AutoSit.Preferences.PrimitiveName,
+ Enabled = autoSitEnabled.Checked
+ };
+
+ if (Instance.State.AutoSit.Preferences.Enabled)
+ {
+ Instance.State.AutoSit.TrySit();
+ }
+ }
+
+ private void autoSitUUID_Leave(object sender, EventArgs e)
+ {
+ UUID primID = UUID.Zero;
+ if (UUID.TryParse(autoSitUUID.Text, out primID))
+ {
+ Instance.State.AutoSit.Preferences = new AutoSitPreferences
+ {
+ Primitive = primID,
+ PrimitiveName = autoSitName.Text,
+ Enabled = autoSitEnabled.Checked
+ };
+
+ if (Instance.State.AutoSit.Preferences.Enabled)
+ {
+ Instance.State.AutoSit.TrySit();
+ }
+ }
+ else
+ {
+ autoSitUUID.Text = UUID.Zero.ToString();
+ }
+ }
+ #endregion
+
+ #region Pseudo Home
+
+ private void pseudoHomePrefsUpdated()
+ {
+ pseudoHome.Enabled = (Instance.Client.Network.Connected && Instance.ClientSettings != null);
+ if (!pseudoHome.Enabled)
+ {
+ return;
+ }
+ PseudoHomePreferences prefs = Instance.State.PseudoHome.Preferences;
+ 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) : "";
+ pseudoHomeEnabled.Checked = prefs.Enabled;
+ pseudoHomeTP.Enabled = (prefs.Region.Trim() != string.Empty);
+ pseudoHomeTolerance.Value = Math.Max(pseudoHomeTolerance.Minimum, Math.Min(pseudoHomeTolerance.Maximum, prefs.Tolerance));
+ }
+
+ private void pseudoHomeLabel_Click(object sender, EventArgs e)
+ {
+ pseudoHomeLocation.SelectAll();
+ }
+
+ private void pseudoHomeEnabled_CheckedChanged(object sender, EventArgs e)
+ {
+ Instance.State.PseudoHome.Preferences = new PseudoHomePreferences
+ {
+ Enabled = pseudoHomeEnabled.Checked,
+ Region = Instance.State.PseudoHome.Preferences.Region,
+ Position = Instance.State.PseudoHome.Preferences.Position,
+ Tolerance = Instance.State.PseudoHome.Preferences.Tolerance
+ };
+ }
+
+ private void pseudoHomeTP_Click(object sender, EventArgs e)
+ {
+ Instance.State.PseudoHome.ETGoHome();
+ }
+
+ private void pseudoHomeSet_Click(object sender, EventArgs e)
+ {
+ Instance.State.PseudoHome.Preferences = new PseudoHomePreferences
+ {
+ Enabled = Instance.State.PseudoHome.Preferences.Enabled,
+ Region = Instance.Client.Network.CurrentSim.Name,
+ Position = Instance.Client.Self.SimPosition,
+ Tolerance = Instance.State.PseudoHome.Preferences.Tolerance
+ };
+ pseudoHomePrefsUpdated();
+ }
+
+ private void pseudoHomeTolerance_ValueChanged(object sender, EventArgs e)
+ {
+ Instance.State.PseudoHome.Preferences = new PseudoHomePreferences
+ {
+ Enabled = Instance.State.PseudoHome.Preferences.Enabled,
+ Region = Instance.State.PseudoHome.Preferences.Region,
+ Position = Instance.State.PseudoHome.Preferences.Position,
+ Tolerance = (uint)pseudoHomeTolerance.Value
+ };
+ }
+
+ private void pseudoHomeClear_Click(object sender, EventArgs e)
+ {
+ Instance.State.PseudoHome.Preferences = new PseudoHomePreferences();
+ pseudoHomePrefsUpdated();
+ }
+ #endregion
+
+ #region LSL Helper
+ private void LSLHelperPrefsUpdate()
+ {
+ gbLSLHelper.Enabled = (Instance.Client.Network.Connected && Instance.ClientSettings != null);
+
+ if (!gbLSLHelper.Enabled)
+ {
+ return;
+ }
+
+ Instance.State.LSLHelper.LoadSettings();
+ tbLSLAllowedOwner.Text = Instance.State.LSLHelper.AllowedOwner.ToString();
+ cbLSLHelperEnabled.CheckedChanged -=new EventHandler(cbLSLHelperEnabled_CheckedChanged);
+ cbLSLHelperEnabled.Checked = Instance.State.LSLHelper.Enabled;
+ cbLSLHelperEnabled.CheckedChanged += new EventHandler(cbLSLHelperEnabled_CheckedChanged);
+ }
+
+ private void LSLHelperPrefsSave()
+ {
+ if (Instance.ClientSettings == null)
+ {
+ return;
+ }
+
+ Instance.State.LSLHelper.Enabled = cbLSLHelperEnabled.Checked;
+ UUID allowedOwnner = UUID.Zero;
+ UUID.TryParse(tbLSLAllowedOwner.Text, out allowedOwnner);
+ Instance.State.LSLHelper.AllowedOwner = allowedOwnner;
+ Instance.State.LSLHelper.SaveSettings();
+ }
+
+ private void llLSLHelperInstructios_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ Instance.MainForm.ProcessLink("http://radegast.org/wiki/LSL_Helper", false);
+ }
+
+ private void tbLSLAllowedOwner_Leave(object sender, EventArgs e)
+ {
+ UUID allowedOwner = UUID.Zero;
+ if (UUID.TryParse(tbLSLAllowedOwner.Text, out allowedOwner))
+ {
+ }
+ else
+ {
+ tbLSLAllowedOwner.Text = UUID.Zero.ToString();
+ }
+ LSLHelperPrefsSave();
+ }
+
+ private void lblLSLUUID_Click(object sender, EventArgs e)
+ {
+ tbLSLAllowedOwner.SelectAll();
+ }
+
+ private void cbLSLHelperEnabled_CheckedChanged(object sender, EventArgs e)
+ {
+ LSLHelperPrefsSave();
+ }
+ #endregion LSL Helper
+
+ private void cbAutoScriptPermission_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ s["on_script_question"] = cbAutoScriptPermission.Text;
+ }
+
}
}