コード例 #1
0
ファイル: TypeSetTest.cs プロジェクト: shaneasd/ConEdit
 public static void TestDynamicEnumSource()
 {
     TypeSet t = new TypeSet();
     {
         DynamicEnumerationData d1 = new DynamicEnumerationData("d1", ParameterType.Parse("ed53be0d-c62a-4c0c-9f6e-e92d996bf3df"));
         DynamicEnumerationData d2 = new DynamicEnumerationData("d2", ParameterType.Parse("6980f4d7-4ad8-4bc0-bacb-4907d922d4e9"));
         t.AddDynamicEnum(d1);
         t.AddDynamicEnum(d2);
         var doc1 = new object();
         var doc2 = new object();
         var A1   = t.Make(d1.TypeId, "test1", Id <Parameter> .Parse("f95d62c4-b6c5-4c31-be69-c0cc3a35697e"), "default1", doc1) as IDynamicEnumParameter;
         var A2   = t.Make(d1.TypeId, "test2", Id <Parameter> .Parse("3ff9251e-bd1f-4543-9719-3b8e5992f8ce"), "default2", doc2) as IDynamicEnumParameter;
         var B1   = t.Make(d2.TypeId, "test3", Id <Parameter> .Parse("117a01a5-21df-4252-8120-8a11fe601ec6"), "default3", doc1) as IDynamicEnumParameter;
         A1.SetValueAction("shane").Value.Redo();
         B1.SetValueAction("not").Value.Redo();
         Assert.That(A1.Options, Is.EquivalentTo(new[] { "shane", "default2" }));
         Assert.That(A2.Options, Is.EquivalentTo(new[] { "shane", "default2" }));
         Assert.That(B1.Options, Is.EquivalentTo(new[] { "not" }));
     }
 }
コード例 #2
0
ファイル: TypeSetTest.cs プロジェクト: shaneasd/ConEdit
        private static void CheckDynamicEnums(List <DynamicEnumerationData> dynamicEnums, TypeSet t, Action CheckContents, ref ParameterType modifiedType)
        {
            DynamicEnumerationData DE1 = new DynamicEnumerationData("DE1", ParameterType.Parse("89e54648-0572-4de2-82a6-3cdf5ea8aebc"));
            DynamicEnumerationData DE2 = new DynamicEnumerationData("DE2", ParameterType.Parse("17b8ce6a-da16-459e-ab58-c77f62c5eba4"));
            DynamicEnumerationData DE3 = new DynamicEnumerationData("DE3", ParameterType.Parse("882d169d-b697-4ff3-8f4d-d0a3b18549c7"));

            t.AddDynamicEnum(DE1);
            dynamicEnums.Add(DE1);
            Assert.That(modifiedType, Is.EqualTo(DE1.TypeId));
            modifiedType = null;
            CheckContents();

            t.Remove(DE1.TypeId);
            dynamicEnums.Remove(DE1);
            Assert.That(modifiedType, Is.EqualTo(DE1.TypeId));
            modifiedType = null;
            CheckContents();

            t.AddDynamicEnum(DE2);
            dynamicEnums.Add(DE2);
            Assert.That(modifiedType, Is.EqualTo(DE2.TypeId));
            modifiedType = null;
            CheckContents();

            t.AddDynamicEnum(DE3);
            dynamicEnums.Add(DE3);
            Assert.That(modifiedType, Is.EqualTo(DE3.TypeId));
            modifiedType = null;
            CheckContents();

            DynamicEnumerationData DE3Modified = new DynamicEnumerationData("DE3Modified", ParameterType.Parse("882d169d-b697-4ff3-8f4d-d0a3b18549c7"));

            t.RenameType(DE3.TypeId, DE3Modified.Name);
            dynamicEnums[dynamicEnums.IndexOf(DE3)] = DE3Modified;
            Assert.That(modifiedType, Is.EqualTo(DE3Modified.TypeId));
            modifiedType = null;
            CheckContents();
        }
コード例 #3
0
        /// <summary>
        /// Populate a domain's various type data from xml
        /// </summary>
        /// <param name="domain">The domain to fill</param>
        /// <param name="root">The xml root node</param>
        private static void ReadTypes(DomainData domain, XElement root)
        {
            foreach (var a in root.Elements("DynamicEnumeration"))
            {
                DynamicEnumerationData typeData = new DynamicEnumerationData(a.Attribute("name").Value, Guid.Parse(a.Attribute("guid").Value));
                domain.DynamicEnumerations.Add(typeData);
            }
            foreach (var a in root.Elements("Enumeration"))
            {
                var name   = a.Attribute("name").Value;
                var guid   = Guid.Parse(a.Attribute("guid").Value);
                var values = a.Elements("Value").Select(value => new EnumerationData.Element(value.Attribute("name").Value, Guid.Parse(value.Attribute("guid").Value)));

                EnumerationData typeData;

                if (a.Element("Default") != null)
                {
                    if (a.Element("Default").Attributes("guid").Any())
                    {
                        var def = Guid.Parse(a.Element("Default").Attribute("guid").Value);
                        typeData = new EnumerationData(name, guid, values, def);
                    }
                    else if (a.Element("Default").Attributes("name").Any())
                    {
                        var def = a.Element("Default").Attribute("name").Value;
                        typeData = new EnumerationData(name, guid, values, def);
                    }
                    else
                    {
                        throw new Exception("Enumeration declared with a default node but no recognised default value");
                    }
                }
                else
                {
                    typeData = new EnumerationData(name, guid, values);
                }

                domain.Enumerations.Add(typeData);
            }
            foreach (var a in root.Elements("Decimal"))
            {
                var aName = a.Attribute("name").Value;
                var guid  = Guid.Parse(a.Attribute("guid").Value);
                var aMax  = a.Attributes("max").Select <XAttribute, decimal?>(b => decimal.Parse(b.Value)).SingleOrDefault();
                var aMin  = a.Attributes("min").Select <XAttribute, decimal?>(b => decimal.Parse(b.Value)).SingleOrDefault();
                var aDef  = a.Attributes("default").Select <XAttribute, decimal?>(b => decimal.Parse(b.Value)).SingleOrDefault();

                DecimalData typeData = new DecimalData(aName, guid, aMax, aMin, aDef);

                domain.Decimals.Add(typeData);
            }
            foreach (var a in root.Elements("Integer"))
            {
                var aName = a.Attribute("name").Value;
                var guid  = Guid.Parse(a.Attribute("guid").Value);
                var aMax  = a.Attributes("max").Select <XAttribute, int?>(b => int.Parse(b.Value)).SingleOrDefault();
                var aMin  = a.Attributes("min").Select <XAttribute, int?>(b => int.Parse(b.Value)).SingleOrDefault();
                var aDef  = a.Attributes("default").Select <XAttribute, int?>(b => int.Parse(b.Value)).SingleOrDefault();

                IntegerData typeData = new IntegerData(aName, guid, aMax, aMin, aDef);

                domain.Integers.Add(typeData);
            }
        }