public bool Verify()
        {
            Debug.Check(_enumType != null);
            Debug.Check(_enumMember != null);

            if (_enumType != null && _enumMember != null)
            {
                string memberName = this.nameTextBox.Text;
                bool   isValid    = !string.IsNullOrEmpty(memberName) && Char.IsLetter(memberName[0]);

                if (isValid && _enumMember != null)
                {
                    EnumType.EnumMemberType member = _enumType.GetMemberByName(memberName);

                    if (_isNew)
                    {
                        isValid = (member == null);
                    }
                    else
                    {
                        isValid = (member == null || member == _originalMember);
                    }
                }

                return(isValid);
            }

            return(false);
        }
Beispiel #2
0
        public EditEnumMemberDialog(EnumType enumType, EnumType.EnumMemberType enumMember)
        {
            InitializeComponent();

            this.Owner = MainWindow.Instance;
            this.Text  = (enumMember == null) ? Resources.AddEnumMember : Resources.EditEnumMember;

            this.editEnumMemberPanel.Initialize(enumType, enumMember);
        }
Beispiel #3
0
        public void Initialize(EnumType enumType, EnumType.EnumMemberType enumMember)
        {
            _initialized    = false;
            _isModified     = false;
            _enumType       = enumType;
            _originalMember = enumMember;
            if (enumMember == null)
            {
                _isNew      = true;
                _enumMember = new EnumType.EnumMemberType(enumMember);
            }
            else
            {
                _isNew      = false;
                _enumMember = enumMember;
            }

            this.nameTextBox.Text         = _enumMember.Name;
            this.valueNumericUpDown.Value = _enumMember.Value;
            this.dispTextBox.Text         = _enumMember.DisplayName;
            this.descTextBox.Text         = _enumMember.Description;

            this.nameTextBox.Enabled        = enumType.IsCustomized;
            this.valueNumericUpDown.Enabled = enumType.IsCustomized;
            this.dispTextBox.Enabled        = enumType.IsCustomized;
            this.descTextBox.Enabled        = enumType.IsCustomized;

            this.nameTextBox.Focus();
            if (this.nameTextBox.TextLength > 0)
            {
                this.nameTextBox.SelectionStart = this.nameTextBox.TextLength;
            }
            else
            {
                this.nameTextBox.Select();
            }

            _initialized = true;
        }
Beispiel #4
0
        private static void writeEnumNode(XmlNode rootNode, Hashtable nodeDict, StreamWriter wrtr)
        {
            XmlNode typeNode = rootNode.Attributes["Type"];

            if (typeNode != null && rootNode.ChildNodes.Count > 0)
            {
                XmlNode firstChildNode = rootNode.ChildNodes[0];
                XmlNode firstValueNode = firstChildNode.Attributes["Value"];

                if (firstValueNode == null)
                {
                    return;
                }

                string firstValueName = firstValueNode.Value;

                string enumName = HandleHierarchyName(typeNode.Value);

                if (nodeDict.ContainsKey(enumName))
                {
                    return;
                }

                nodeDict.Add(enumName, rootNode);

                // Write out the hanlder of this class.
                wrtr.WriteLine("\t[TypeHandler(typeof({0}))]", enumName);
                wrtr.WriteLine("\tpublic class {0}TypeHandler", enumName);
                wrtr.WriteLine("\t{");

                wrtr.WriteLine("\t\tpublic static object Create()");
                wrtr.WriteLine("\t\t{");
                wrtr.WriteLine("\t\t\t{0} instance = ({0})DefaultValue(\"\");", enumName);
                wrtr.WriteLine("\t\t\treturn instance;");
                wrtr.WriteLine("\t\t}");
                wrtr.WriteLine("");

                wrtr.WriteLine("\t\tpublic static bool Parse(object parent, string paramName, string parStr, Plugin.SetValue setter)");
                wrtr.WriteLine("\t\t{");
                wrtr.WriteLine("\t\t\t{0} result = ({0})Enum.Parse(typeof({0}), parStr, true);", enumName);
                wrtr.WriteLine("\t\t\tsetter(result);");
                wrtr.WriteLine("\t\t\treturn true;");
                wrtr.WriteLine("\t\t}");
                wrtr.WriteLine("");

                wrtr.WriteLine("\t\tpublic static DesignerProperty CreateDesignerProperty(string category, string name, Type type, float rangeMin, float rangeMax)");
                wrtr.WriteLine("\t\t{");
                wrtr.WriteLine("\t\t\treturn new DesignerEnum(name, name, category, DesignerProperty.DisplayMode.Parameter, 0, DesignerProperty.DesignerFlags.NoFlags, \"\");");
                wrtr.WriteLine("\t\t}");
                wrtr.WriteLine("");

                wrtr.WriteLine("\t\tpublic static object DefaultValue(string defaultValue)");
                wrtr.WriteLine("\t\t{");
                wrtr.WriteLine("\t\t\tArray values = Enum.GetValues(typeof({0}));", enumName);
                wrtr.WriteLine("\t\t\tforeach (object enumVal in values)");
                wrtr.WriteLine("\t\t\t{");
                wrtr.WriteLine("\t\t\t    string enumValueName = Enum.GetName(typeof({0}), enumVal);", enumName);
                wrtr.WriteLine("\t\t\t    if (enumValueName == defaultValue)");
                wrtr.WriteLine("\t\t\t    {");
                wrtr.WriteLine("\t\t\t        return enumVal;");
                wrtr.WriteLine("\t\t\t    }");
                wrtr.WriteLine("\t\t\t}");
                wrtr.WriteLine("\t\t\treturn {0}.{1};", enumName, firstValueName);
                wrtr.WriteLine("\t\t}");
                wrtr.WriteLine("");

                wrtr.WriteLine("\t\tpublic static Type GetEditorType()");
                wrtr.WriteLine("\t\t{");
                wrtr.WriteLine("\t\t\treturn typeof(DesignerEnumEditor);");
                wrtr.WriteLine("\t\t}");

                wrtr.WriteLine("\t}");
                wrtr.WriteLine("");

                // Write out this enum itself.
                XmlNode displayNameNode = rootNode.Attributes["DisplayName"];
                string  displayName     = (displayNameNode != null && displayNameNode.Value.Length > 0) ? displayNameNode.Value : enumName;

                XmlNode descNode = rootNode.Attributes["Desc"];
                string  desc     = (descNode != null && descNode.Value.Length > 0) ? descNode.Value : displayName;

                string isCustomized = GetAttribute(rootNode, "IsCustomized");
                string isExtended   = GetAttribute(rootNode, "IsExtended");
                string ns           = GetAttribute(rootNode, "Namespace");
                if (string.IsNullOrEmpty(ns))
                {
                    ns = HandleNamespace(typeNode.Value);
                }
                string basicName = HandleBasicName(typeNode.Value);

                EnumType enumType = new EnumType(isCustomized == "true", isExtended == "true", basicName, ns, displayName, desc);
                TypeManager.Instance.Enums.Add(enumType);

                wrtr.WriteLine("\t[Behaviac.Design.EnumDesc(\"{0}\", \"{1}\", \"{2}\")]", typeNode.Value, displayName, desc);
                wrtr.WriteLine("\tpublic enum {0}", enumName);
                wrtr.WriteLine("\t{");

                foreach (XmlNode childNode in rootNode.ChildNodes)
                {
                    if (childNode.Name == "enum")
                    {
                        XmlNode nativeValueNode = childNode.Attributes["NativeValue"];
                        string  nativeValueName = (nativeValueNode != null) ? nativeValueNode.Value : "";

                        XmlNode valueNode = childNode.Attributes["Value"];
                        string  valueName = (valueNode != null) ? valueNode.Value : "";

                        displayNameNode = childNode.Attributes["DisplayName"];
                        displayName     = (displayNameNode != null && displayNameNode.Value.Length > 0) ? displayNameNode.Value : valueName;

                        descNode = childNode.Attributes["Desc"];
                        desc     = (descNode != null && descNode.Value.Length > 0) ? descNode.Value : displayName;

                        string memberValue = GetAttribute(childNode, "MemberValue");

                        EnumType.EnumMemberType enumMember = new EnumType.EnumMemberType(null);
                        enumMember.Name        = HandleBasicName(valueName);
                        enumMember.Namespace   = enumType.Namespace;
                        enumMember.DisplayName = displayName;
                        enumMember.Description = desc;

                        try
                        {
                            enumMember.Value = int.Parse(memberValue);
                        }
                        catch
                        {
                            enumMember.Value = -1;
                        }

                        enumType.Members.Add(enumMember);

                        wrtr.WriteLine("\t\t[Behaviac.Design.EnumMemberDesc(\"{0}\", \"{1}\", \"{2}\")]", nativeValueName, displayName, desc);
                        wrtr.WriteLine("\t\t{0},\n", valueName);
                    }
                }

                wrtr.WriteLine("\t}");
                wrtr.WriteLine("");
            }
        }