Beispiel #1
0
        public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
        {
            List <string> values = new List <string>();

            if (element is ScreenSave)
            {
                values.Add("");
                foreach (ScreenSave screenSave in ProjectManager.Self.GumProjectSave.Screens)
                {
                    if (element.IsOfType(screenSave.Name) == false)
                    {
                        values.Add(screenSave.Name);
                    }
                }
            }
            else
            {
                values.AddRange(Enum.GetNames(typeof(StandardElementTypes)));

                foreach (ComponentSave componentSave in ProjectManager.Self.GumProjectSave.Components)
                {
                    if (element == null || element.IsOfType(componentSave.Name) == false || element.Name == instance?.BaseType)
                    {
                        values.Add(componentSave.Name);
                    }
                }
            }

            return(new StandardValuesCollection(values));
        }
        public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
        {
            List <string> values = new List <string>();

            var gumProject = ProjectManager.Self.GumProjectSave;

            if (elementViewing is ScreenSave)
            {
                values.Add("");
                foreach (ScreenSave screenSave in gumProject.Screens)
                {
                    if (elementViewing.IsOfType(screenSave.Name) == false)
                    {
                        values.Add(screenSave.Name);
                    }
                }
            }
            else
            {
                // We used to use this enum, but why not just use the standard elements becuase those
                // can be modified by plugins:
                //values.AddRange(Enum.GetNames(typeof(StandardElementTypes)));
                foreach (var standard in gumProject.StandardElements)
                {
                    // Component is a special base type but we don't actually want to inherit from component.
                    // The closest match would actually be "Container" so let's use that...
                    if (standard.Name != "Component")
                    {
                        values.Add(standard.Name);
                    }
                }

                foreach (ComponentSave componentSave in gumProject.Components)
                {
                    //var shouldShow = element == null || element.IsOfType(componentSave.Name) == false || element.Name == instance?.BaseType;
                    var shouldShow = elementViewing == null || elementViewing.Name != componentSave.Name || elementViewing.Name == instance?.BaseType;

                    if (shouldShow)
                    {
                        values.Add(componentSave.Name);
                    }
                }
            }

            return(new StandardValuesCollection(values));
        }
Beispiel #3
0
        public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
        {
            List <string> values = new List <string>();

            var gumProject = ProjectManager.Self.GumProjectSave;

            if (elementViewing is ScreenSave)
            {
                values.Add("");
                foreach (ScreenSave screenSave in gumProject.Screens)
                {
                    if (elementViewing.IsOfType(screenSave.Name) == false)
                    {
                        values.Add(screenSave.Name);
                    }
                }
            }
            else
            {
                // We used to use this, but why not just use the standard elements becuase those
                // can be modified by plugins:
                //values.AddRange(Enum.GetNames(typeof(StandardElementTypes)));
                foreach (var standard in gumProject.StandardElements)
                {
                    values.Add(standard.Name);
                }

                foreach (ComponentSave componentSave in gumProject.Components)
                {
                    //var shouldShow = element == null || element.IsOfType(componentSave.Name) == false || element.Name == instance?.BaseType;
                    var shouldShow = elementViewing == null || elementViewing.Name != componentSave.Name || elementViewing.Name == instance?.BaseType;

                    if (shouldShow)
                    {
                        values.Add(componentSave.Name);
                    }
                }
            }

            return(new StandardValuesCollection(values));
        }
Beispiel #4
0
        /// <summary>
        /// Returns a list of Elements that include InstanceSaves that use the argument
        /// elementSave as their BaseType, or that use an ElementSave deriving from elementSave
        /// as their BaseType.
        /// </summary>
        /// <param name="elementSave">The ElementSave to search for.</param>
        /// <returns>A List containing all Elements</returns>
        public List <ElementSave> GetElementsReferencing(ElementSave elementSave, List <ElementSave> list = null, List <InstanceSave> foundInstances = null)
        {
            if (list == null)
            {
                list = new List <ElementSave>();
            }

            foreach (ElementSave screen in this.GumProjectSave.Screens)
            {
                foreach (InstanceSave instanceSave in screen.Instances)
                {
                    ElementSave elementForInstance = this.GetElementSave(instanceSave.BaseType);

                    if (elementForInstance != null && elementForInstance.IsOfType(elementSave.Name))
                    {
                        list.Add(screen);

                        // If we want a list of instances
                        // then we don't want to break on a
                        // found instance - we want to continue
                        // to find all of them.
                        if (foundInstances != null)
                        {
                            foundInstances.Add(instanceSave);
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }

            foreach (ComponentSave component in this.GumProjectSave.Components)
            {
                foreach (InstanceSave instanceSave in component.Instances)
                {
                    ElementSave elementForInstance = this.GetElementSave(instanceSave.BaseType);

                    if (elementForInstance != null && elementForInstance.IsOfType(elementSave.Name))
                    {
                        list.Add(component);

                        // If we want a list of instances
                        // then we don't want to break on a
                        // found instance - we want to continue
                        // to find all of them.
                        if (foundInstances != null)
                        {
                            foundInstances.Add(instanceSave);
                        }
                        else
                        {
                            break;
                        }
                    }
                }
            }



            return(list);
        }