Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    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);
    }