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)); }
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)); }
/// <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); }