private static XmlElement CreateUserOptionXML(UserOption option, XmlDocument doc)
        {
            string category = option.Category.Length == 0 ? "General" : option.Category;

            XmlElement optionElement = doc.CreateElement("option");

            AppendNewXmlElement(optionElement, "variablename", option.VariableName);
            AppendNewXmlElement(optionElement, "type", option.VarType.Name);
            AppendNewXmlElement(optionElement, "text", option.Text);
            AppendNewXmlElement(optionElement, "description", option.Description);
            AppendNewXmlElement(optionElement, "category", category.Replace(" ", "_"));
            AppendNewXmlElement(optionElement, "defaultvalue", option.DefaultValueFunctionBody);
            AppendNewXmlElement(optionElement, "defaultvalueisfunction", "true");             // This is always true
            AppendNewXmlElement(optionElement, "iteratorname", option.IteratorType == null ? "" : option.IteratorType.FullName);
            AppendNewXmlElement(optionElement, "validatorfunction", option.ValidatorFunctionBody);
            AppendNewXmlElement(optionElement, "displaytouserfunction", option.DisplayToUserFunctionBody);
            AppendNewXmlElement(optionElement, "resetpersession", option.ResetPerSession.ToString());

            // Values
            XmlElement valuesElement = AppendNewXmlElement(optionElement, "values", "");

            foreach (string optionValue in option.Values)
            {
                AppendNewXmlElement(valuesElement, "value", optionValue);
            }

            return(optionElement);
        }
        private static void ReadXmlUserOptionNode(Project project, ICollection <string> missingTypesMessages, XPathNavigator subNode)
        {
            string variableName      = subNode.SelectSingleNode("variablename").Value;
            string category          = subNode.SelectSingleNode("category").Value.Replace("_", " ");
            string varType           = subNode.SelectSingleNode("type").Value;
            string text              = subNode.SelectSingleNode("text").Value;
            string description       = subNode.SelectSingleNode("description").Value;
            string defaultValue      = subNode.SelectSingleNode("defaultvalue").Value;
            string IteratorType      = subNode.SelectSingleNode("iteratorname").Value;
            string validatorFunction = subNode.SelectSingleNode("validatorfunction") != null?subNode.SelectSingleNode("validatorfunction").Value : "";

            bool defaultValueIsFunction = subNode.SelectSingleNode("defaultvalueisfunction") != null?subNode.SelectSingleNode("defaultvalueisfunction").Value == "true" : false;

            string displayToUserFunction = subNode.SelectSingleNode("displaytouserfunction") != null?subNode.SelectSingleNode("displaytouserfunction").Value : String.Format("DisplayToUser_UserOption_{0}", variableName);

            bool refreshPerSession = subNode.SelectSingleNode("resetpersession") != null?Boolean.Parse(subNode.SelectSingleNode("resetpersession").Value) : false;

            if (category.Length == 0)
            {
                category = "General";
            }

            Type realVarType = Project.Instance.GetTypeFromReferencedAssemblies(varType, true);

            if (realVarType == null)
            {
                missingTypesMessages.Add(String.Format("UserOption ({0}): The type of this UserOption ({1}) cannot be found in the referenced files. It will be changed to type 'string'.", variableName, varType));
                realVarType = typeof(string);
            }
            Type iteratorType = null;

            if (IteratorType.Length > 0 && IteratorType != "No iteration")
            {
                iteratorType = Project.Instance.GetTypeFromReferencedAssemblies(IteratorType, false);

                if (iteratorType == null)
                {
                    missingTypesMessages.Add(String.Format("UserOption ({0}): The iterator-type ({1}) of this UserOption cannot be found in the referenced files. It will be changed to have no iterator.", variableName, IteratorType));
                    iteratorType = null;
                }
            }
            UserOption newUserOption = new UserOption(variableName, category, realVarType, text, description, new string[0], defaultValue, iteratorType, validatorFunction, displayToUserFunction, refreshPerSession);

            project.AddUserOption(newUserOption);

            XPathNodeIterator valueNodes = subNode.Select("values/value");

            newUserOption.Values.Clear();

            int userOptionValueCounter = -1;

            foreach (XPathNavigator valueNode in valueNodes)
            {
                userOptionValueCounter++;
                newUserOption.Values.Add(valueNode.Value);
            }
        }
Example #3
0
        /// <summary>
        /// Adds the option if it doesn't already exist
        /// </summary>
        /// <param name="option"></param>
        public void AddUserOption(UserOption option)
        {
            int        index;
            UserOption currentUserOption = FindUserOption(option.VariableName, out index);

            if (currentUserOption == null)
            {
                m_userOptions.Add(option);
                SortUserOptions();
                IsDirty = true;
            }
            else
            {
                m_userOptions[index] = option;
            }
        }
Example #4
0
 public void RemoveUserOption(UserOption option)
 {
     m_userOptions.Remove(option);
 }
Example #5
0
 public void RemoveUserOption(UserOption option)
 {
     m_userOptions.Remove(option);
 }
Example #6
0
        /// <summary>
        /// Adds the option if it doesn't already exist
        /// </summary>
        /// <param name="option"></param>
        public void AddUserOption(UserOption option)
        {
            int index;
            UserOption currentUserOption = FindUserOption(option.VariableName, out index);

            if (currentUserOption == null)
            {
                m_userOptions.Add(option);
                SortUserOptions();
                IsDirty = true;
            }
            else
            {
                m_userOptions[index] = option;
            }
        }
        private static void ReadXmlUserOptionNode(Project project, ICollection<string> missingTypesMessages, XPathNavigator subNode)
        {
            string variableName = subNode.SelectSingleNode("variablename").Value;
            string category = subNode.SelectSingleNode("category").Value.Replace("_", " ");
            string varType = subNode.SelectSingleNode("type").Value;
            string text = subNode.SelectSingleNode("text").Value;
            string description = subNode.SelectSingleNode("description").Value;
            string defaultValue = subNode.SelectSingleNode("defaultvalue").Value;
            string IteratorType = subNode.SelectSingleNode("iteratorname").Value;
            string validatorFunction = subNode.SelectSingleNode("validatorfunction") != null ? subNode.SelectSingleNode("validatorfunction").Value : "";
            bool defaultValueIsFunction = subNode.SelectSingleNode("defaultvalueisfunction") != null ? subNode.SelectSingleNode("defaultvalueisfunction").Value == "true" : false;
            string displayToUserFunction = subNode.SelectSingleNode("displaytouserfunction") != null ? subNode.SelectSingleNode("displaytouserfunction").Value : String.Format("DisplayToUser_UserOption_{0}", variableName);
            bool refreshPerSession = subNode.SelectSingleNode("resetpersession") != null ? Boolean.Parse(subNode.SelectSingleNode("resetpersession").Value) : false;

            if (category.Length == 0) { category = "General"; }

            Type realVarType = Project.Instance.GetTypeFromReferencedAssemblies(varType, true);

            if (realVarType == null)
            {
                missingTypesMessages.Add(String.Format("UserOption ({0}): The type of this UserOption ({1}) cannot be found in the referenced files. It will be changed to type 'string'.", variableName, varType));
                realVarType = typeof(string);
            }
            Type iteratorType = null;

            if (IteratorType.Length > 0 && IteratorType != "No iteration")
            {
                iteratorType = Project.Instance.GetTypeFromReferencedAssemblies(IteratorType, false);

                if (iteratorType == null)
                {
                    missingTypesMessages.Add(String.Format("UserOption ({0}): The iterator-type ({1}) of this UserOption cannot be found in the referenced files. It will be changed to have no iterator.", variableName, IteratorType));
                    iteratorType = null;
                }
            }
            UserOption newUserOption = new UserOption(variableName, category, realVarType, text, description, new string[0], defaultValue, iteratorType, validatorFunction, displayToUserFunction, refreshPerSession);
            project.AddUserOption(newUserOption);

            XPathNodeIterator valueNodes = subNode.Select("values/value");
            newUserOption.Values.Clear();

            int userOptionValueCounter = -1;

            foreach (XPathNavigator valueNode in valueNodes)
            {
                userOptionValueCounter++;
                newUserOption.Values.Add(valueNode.Value);
            }
        }
        private static XmlElement CreateUserOptionXML(UserOption option, XmlDocument doc)
        {
            string category = option.Category.Length == 0 ? "General" : option.Category;

            XmlElement optionElement = doc.CreateElement("option");
            AppendNewXmlElement(optionElement, "variablename", option.VariableName);
            AppendNewXmlElement(optionElement, "type", option.VarType.Name);
            AppendNewXmlElement(optionElement, "text", option.Text);
            AppendNewXmlElement(optionElement, "description", option.Description);
            AppendNewXmlElement(optionElement, "category", category.Replace(" ", "_"));
            AppendNewXmlElement(optionElement, "defaultvalue", option.DefaultValueFunctionBody);
            AppendNewXmlElement(optionElement, "defaultvalueisfunction", "true"); // This is always true
            AppendNewXmlElement(optionElement, "iteratorname", option.IteratorType == null ? "" : option.IteratorType.FullName);
            AppendNewXmlElement(optionElement, "validatorfunction", option.ValidatorFunctionBody);
            AppendNewXmlElement(optionElement, "displaytouserfunction", option.DisplayToUserFunctionBody);
            AppendNewXmlElement(optionElement, "resetpersession", option.ResetPerSession.ToString());

            // Values
            XmlElement valuesElement = AppendNewXmlElement(optionElement, "values", "");

            foreach (string optionValue in option.Values)
            {
                AppendNewXmlElement(valuesElement, "value", optionValue);
            }

            return optionElement;
        }