From de104536c156ebc743578a23dcc2950d20b6724e Mon Sep 17 00:00:00 2001 From: mingchen Date: Thu, 19 Jul 2007 15:01:14 +0000 Subject: *Handler Functions can now refuse an object as invalid by returning false, thus forcing the user to re-enter the data *Added TYPE_STRING_NOT_EMPTY that requires some sort of text to be entered *Added another parameter to addConfigurationOption called use_default_no_prompt that will not ask via the console a configuration option; it will use whatever is in the config file. If nothing is in the config file for that option, it will force itself to use default --- .../General/Configuration/ConfigurationMember.cs | 54 +++++++++++++++++----- 1 file changed, 42 insertions(+), 12 deletions(-) (limited to 'OpenSim/Framework/General/Configuration/ConfigurationMember.cs') diff --git a/OpenSim/Framework/General/Configuration/ConfigurationMember.cs b/OpenSim/Framework/General/Configuration/ConfigurationMember.cs index 8106d5a..e93a576 100644 --- a/OpenSim/Framework/General/Configuration/ConfigurationMember.cs +++ b/OpenSim/Framework/General/Configuration/ConfigurationMember.cs @@ -12,7 +12,7 @@ namespace OpenSim.Framework.Configuration { public class ConfigurationMember { - public delegate void ConfigurationOptionResult(string configuration_key, object configuration_result); + public delegate bool ConfigurationOptionResult(string configuration_key, object configuration_result); public delegate void ConfigurationOptionsLoad(); private List configurationOptions = new List(); @@ -44,13 +44,14 @@ namespace OpenSim.Framework.Configuration resultFunction = result; } - public void addConfigurationOption(string configuration_key, ConfigurationOption.ConfigurationTypes configuration_type, string configuration_question, string configuration_default) + public void addConfigurationOption(string configuration_key, ConfigurationOption.ConfigurationTypes configuration_type, string configuration_question, string configuration_default, bool use_default_no_prompt) { ConfigurationOption configOption = new ConfigurationOption(); configOption.configurationKey = configuration_key; configOption.configurationQuestion = configuration_question; configOption.configurationDefault = configuration_default; configOption.configurationType = configuration_type; + configOption.configurationUseDefaultNoPrompt = use_default_no_prompt; if (configuration_key != "" && configuration_question != "") { @@ -116,7 +117,8 @@ namespace OpenSim.Framework.Configuration bool ignoreNextFromConfig = false; while (convertSuccess == false) { - + + string console_result = ""; string attribute = null; if (useFile) { @@ -130,17 +132,24 @@ namespace OpenSim.Framework.Configuration } } - string console_result = ""; if (attribute == null) { - if (configurationDescription.Trim() != "") + if (configOption.configurationUseDefaultNoPrompt) { - console_result = MainLog.Instance.CmdPrompt(configurationDescription + ": " + configOption.configurationQuestion, configOption.configurationDefault); + console_result = configOption.configurationDefault; } else { - console_result = MainLog.Instance.CmdPrompt(configOption.configurationQuestion, configOption.configurationDefault); - } + + if (configurationDescription.Trim() != "") + { + console_result = MainLog.Instance.CmdPrompt(configurationDescription + ": " + configOption.configurationQuestion, configOption.configurationDefault); + } + else + { + console_result = MainLog.Instance.CmdPrompt(configOption.configurationQuestion, configOption.configurationDefault); + } + } } else { @@ -153,6 +162,14 @@ namespace OpenSim.Framework.Configuration return_result = console_result; convertSuccess = true; break; + case ConfigurationOption.ConfigurationTypes.TYPE_STRING_NOT_EMPTY: + if (console_result.Length > 0) + { + return_result = console_result; + convertSuccess = true; + } + errorMessage = "a string that is not empty"; + break; case ConfigurationOption.ConfigurationTypes.TYPE_BOOLEAN: bool boolResult; if (Boolean.TryParse(console_result, out boolResult)) @@ -290,13 +307,26 @@ namespace OpenSim.Framework.Configuration xmlConfig.SetAttribute(configOption.configurationKey, console_result); } - - this.resultFunction(configOption.configurationKey, return_result); + + if (!this.resultFunction(configOption.configurationKey, return_result)) + { + Console.MainLog.Instance.Notice("The handler for the last configuration option denied that input, please try again."); + convertSuccess = false; + ignoreNextFromConfig = true; + } } else { - MainLog.Instance.Warn("Incorrect result given, the configuration option must be " + errorMessage + ". Prompting for same option..."); - ignoreNextFromConfig = true; + if (configOption.configurationUseDefaultNoPrompt) + { + MainLog.Instance.Error("Default given for '" + configOption.configurationKey + "' is not valid; the configuration result must be " + errorMessage + ". Will skip this option..."); + convertSuccess = true; + } + else + { + MainLog.Instance.Warn("Incorrect result given, the configuration option must be " + errorMessage + ". Prompting for same option..."); + ignoreNextFromConfig = true; + } } } } -- cgit v1.1