Example #1
0
        private IEnumerable <DiagramData> GenDiagramObjects(CardBaseModel card, IEnumerable <DiagramData> currentObjects)
        {
            var lst = new List <DiagramData>();

            foreach (var flow in card.Flows)
            {
                lst.AddRange(GenFlow(flow, card as CardModel));
            }

            if (card.GetType() == typeof(CardModel))
            {
                var l = new List <SnapDiagramData>
                {
                    new BlBackupAmp(this, (CardModel)card),
                    new BlAuxiliary(this, (CardModel)card),
                    new BlSpMatrix(this, (CardModel)card),
                    new BlAuxSpeakerPeq(this, (CardModel)card)
                };

                foreach (var snapDiagramData in l)
                {
                    snapDiagramData.SetYLocation();
                }

                lst.AddRange(l);
                LinesCardModel(lst, _link);
            }
            else
            {
                var emergency = new BlEmergency(this);
                emergency.SetYLocation();
                lst.Add(emergency);
                LinesExtCardModel(lst, _link, emergency);
            }
            foreach (var n in lst.OfType <LineViewModel>())
            {
                var n1 = n;
                n.OnEndPointRemoved += () => DiagramObjects.Remove(n1);
            }

            return(lst);
        }
Example #2
0
        /// <summary>
        /// Put lines of the emergency panels on screen
        /// </summary>
        /// <param name="objects"></param>
        /// <param name="link"></param>
        /// <param name="emergency"></param>
        private static void LinesExtCardModel(List <DiagramData> objects, BlLink link, BlEmergency emergency)
        {
            if (emergency != null && link != null)
            {
                objects.Add(new LineViewModel(link, emergency, 30)
                {
                    LineType = LineType.Special
                });
            }

            var extinp = objects.OfType <BlExtInput>().ToArray();

            if (extinp.Length > 2)
            {
                objects.AddRange(new[] { 0, 1, 4 }.Select(n => new LineViewModel(extinp[n], emergency)));
            }

            var inpPeq = objects.OfType <BlInputPeq>().Join(extinp, q => q.Id, j => j.Id, (peq, extInput) => new { peq, extInput }).ToArray();

            objects.AddRange(inpPeq.Select(n => new LineViewModel(n.peq, n.extInput)));

            objects.AddRange(objects.OfType <BlInputPeq>().Select(n => new LineViewModel(n, emergency)).ToArray());
        }