public void AddIOGroup(UIIOGroupBuildInfo ioGroupBuildInfo) { var ioGroupContainer = new IOGroupContainer(ioGroupBuildInfo, Self); IOGroups.Add(ioGroupContainer.BuildInfo.BuildString.Name, ioGroupContainer.IOGroup); IOGroupsInfo.Add(ioGroupContainer); ioGroupContainer.Design = SchemeDesigner.Instance.CreateSelfIOGroupDesign(ioGroupContainer); }
public void DeleteIOGroup(IOGroupContainer container) { var removedLinks = new List <LinkContainer>(); switch (container.IOGroup.IO) { case IO.Input: Self.SourceThisLinks.Where(x => x.BuildInfo.SourceGroupName == container.BuildInfo.BuildString.Name).ForEach(x => { if (removedLinks.Contains(x)) { return; } removedLinks.Add(x); x.Link.RemoveLink(); x.Design.DestroyThis(); x.TargetScheme.TargetThisLinks.Remove(x); Links.Remove(x); }); removedLinks.ForEach(x => Self.SourceThisLinks.Remove(x)); break; case IO.Output: Self.TargetThisLinks.Where(x => x.BuildInfo.TargetGroupName == container.BuildInfo.BuildString.Name).ForEach((x) => { if (removedLinks.Contains(x)) { return; } x.Link.RemoveLink(); x.Design.DestroyThis(); x.SourceScheme.SourceThisLinks.Remove(x); Links.Remove(x); }); removedLinks.ForEach(x => Self.TargetThisLinks.Remove(x)); break; } removedLinks.Clear(); (container.Design as IOSelfIOGroupDesign).DestroyThis(); IOGroups.Remove(container.BuildInfo.BuildString.Name); IOGroupsInfo.Remove(container); }