Esempio n. 1
0
        public void AddNewFamilyMember(Person person, KindOfRelative kindOfRelative)
        {
            var list = new List<KindOfRelative> {kindOfRelative};
            var checkedVertex = GetCheckedVertex();
            if (checkedVertex != null)
            {
                list.Add(ConvertTo.KindOfRelative(checkedVertex.WhoIsRelativeTextBlock.Text));
            }
            var vertex = new Vertex
            {
                DataContext = person,
                WhoIsRelativeTextBlock = {Text = ConvertTo.String(RelationshipsDictionary.GetKindOfRelative(list))}
            };
            TreeCanvas.Children.Add(vertex);

            var point = CalculateCoordinates(vertex, checkedVertex, kindOfRelative);
            AddRelationship(vertex, checkedVertex, kindOfRelative);
            vertex.IsChecked = true;

            if ((point.X > ActualWidth) && ((double.IsNaN(Width)) || (point.X > Width)))
            {
                Width = point.X;
            }

            if ((point.Y > ActualHeight) && ((double.IsNaN(Height)) || (point.X > Height)))
            {
                Height = point.Y;
            }
            JustOneVertexChecked();
            RepositionAllObjects();
        }
Esempio n. 2
0
 public static string String(KindOfRelative kindOfRelative)
 {
     switch (kindOfRelative)
     {
         case Entities.KindOfRelative.Me:
             return "Я";
         case Entities.KindOfRelative.Father:
             return "Папа";
         case Entities.KindOfRelative.Mother:
             return "Мама";
         case Entities.KindOfRelative.Brother:
             return "Брат";
         case Entities.KindOfRelative.Sister:
             return "Сестра";
         case Entities.KindOfRelative.Grandfather:
             return "Дедушка";
         case Entities.KindOfRelative.Grandmother:
             return "Бабушка";
         case Entities.KindOfRelative.GreatGrandmother:
             return "Прабабушка";
         case Entities.KindOfRelative.GreatGrandfather:
             return "Прадедушка";
         case Entities.KindOfRelative.GreatGreatGrandmother:
             return "Прапрабабушка";
         case Entities.KindOfRelative.GreatGreatGrandfather:
             return "Прапрадедушка";
         case Entities.KindOfRelative.Aunt:
             return "Тетя";
         case Entities.KindOfRelative.Uncle:
             return "Дядя";
         case Entities.KindOfRelative.Husband:
             return "Муж";
         case Entities.KindOfRelative.Wife:
             return "Жена";
         case Entities.KindOfRelative.BrotherInLow:
             return "Зять(муж сестры)";
         default:
             return "";
     }
 }
        private static KindOfRelative Get(KindOfRelative kindOfRelative1, KindOfRelative kindOfRelative2)
        {
            if ((kindOfRelative1 == KindOfRelative.Father) &&
                ((kindOfRelative2 == KindOfRelative.Father) || (kindOfRelative2 == KindOfRelative.Mother)))
            {
                return KindOfRelative.Grandfather;
            }
            if ((kindOfRelative1 == KindOfRelative.Father) &&
                ((kindOfRelative2 == KindOfRelative.Grandfather) || (kindOfRelative2 == KindOfRelative.Grandmother)))
            {
                return KindOfRelative.GreatGrandfather;
            }
            if ((kindOfRelative1 == KindOfRelative.Father) &&
                ((kindOfRelative2 == KindOfRelative.GreatGrandfather) || (kindOfRelative2 == KindOfRelative.GreatGrandmother)))
            {
                return KindOfRelative.GreatGreatGrandfather;
            }

            if ((kindOfRelative1 == KindOfRelative.Mother) &&
                ((kindOfRelative2 == KindOfRelative.Father) || (kindOfRelative2 == KindOfRelative.Mother)))
            {
                return KindOfRelative.Grandmother;
            }
            if ((kindOfRelative1 == KindOfRelative.Mother) &&
                ((kindOfRelative2 == KindOfRelative.Grandfather) || (kindOfRelative2 == KindOfRelative.Grandmother)))
            {
                return KindOfRelative.GreatGrandmother;
            }
            if ((kindOfRelative1 == KindOfRelative.Mother) &&
                ((kindOfRelative2 == KindOfRelative.GreatGrandfather) || (kindOfRelative2 == KindOfRelative.GreatGrandmother)))
            {
                return KindOfRelative.GreatGreatGrandmother;
            }

            if ((kindOfRelative1 == KindOfRelative.Sister) && (kindOfRelative2 == KindOfRelative.Sister))
            {
                return KindOfRelative.Sister;
            }
            if ((kindOfRelative1 == KindOfRelative.Brother) && (kindOfRelative2 == KindOfRelative.Brother))
            {
                return KindOfRelative.Brother;
            }
            if ((kindOfRelative1 == KindOfRelative.Brother) && (kindOfRelative2 == KindOfRelative.Sister))
            {
                return KindOfRelative.Brother;
            }
            if ((kindOfRelative1 == KindOfRelative.Sister) && (kindOfRelative2 == KindOfRelative.Brother))
            {
                return KindOfRelative.Sister;
            }

            if ((kindOfRelative1 == KindOfRelative.Sister) &&
                ((kindOfRelative2 == KindOfRelative.Mother) || (kindOfRelative2 == KindOfRelative.Father)))
            {
                return KindOfRelative.Aunt;
            }

            if ((kindOfRelative1 == KindOfRelative.Brother) &&
                ((kindOfRelative2 == KindOfRelative.Mother) || (kindOfRelative2 == KindOfRelative.Father)))
            {
                return KindOfRelative.Uncle;
            }

            if ((kindOfRelative1 == KindOfRelative.Brother) && (kindOfRelative2 == KindOfRelative.Aunt))
            {
                return KindOfRelative.Uncle;
            }

            if ((kindOfRelative1 == KindOfRelative.Husband) && (kindOfRelative2 == KindOfRelative.Sister))
            {
                return KindOfRelative.BrotherInLow;
            }
            return KindOfRelative.NotRelative;
        }
Esempio n. 4
0
 private Point CalculateCoordinates(Vertex vertex, Vertex checkedVertex, KindOfRelative kindOfRelative)
 {
     double left = 0, bottom = 0;
     if (checkedVertex != null)
     {
         if (kindOfRelative == KindOfRelative.Father)
         {
             left = Canvas.GetLeft(checkedVertex) - offset;
             bottom = Canvas.GetBottom(checkedVertex) + offset;
         }
         else if (kindOfRelative == KindOfRelative.Mother)
         {
             left = Canvas.GetLeft(checkedVertex) + offset;
             bottom = Canvas.GetBottom(checkedVertex) + offset;
         }
         else if (kindOfRelative == KindOfRelative.Brother || kindOfRelative == KindOfRelative.Sister)
         {
             left = Canvas.GetLeft(checkedVertex) + checkedVertex.Width + offset;
             bottom = Canvas.GetBottom(checkedVertex);
         }
         else if (kindOfRelative == KindOfRelative.Husband || kindOfRelative == KindOfRelative.Wife)
         {
             left = Canvas.GetLeft(checkedVertex) - checkedVertex.Width - offset;
             bottom = Canvas.GetBottom(checkedVertex);
         }
     }
     else
     {
         left = TreeCanvas.ActualWidth/2 - vertex.Width/2;
         bottom = 20;
     }
     Canvas.SetLeft(vertex, left);
     Canvas.SetBottom(vertex, bottom);
     return new Point(left + vertex.Width + offset/2, bottom + vertex.Height + offset/2);
 }
Esempio n. 5
0
        private void AddRelationship(Vertex vertex, Vertex checkedVertex, KindOfRelative kindOfRelative)
        {
            if (checkedVertex != null)
            {
                double vertexMiddleX, vertexMiddleY;
                if (Canvas.GetBottom(vertex) != Canvas.GetBottom(checkedVertex))
                {
                    vertexMiddleX = Canvas.GetLeft(vertex) + vertex.Width/2;
                    vertexMiddleY = Canvas.GetBottom(vertex) - vertex.Height;
                }
                else if ((kindOfRelative == KindOfRelative.Husband) || (kindOfRelative == KindOfRelative.Wife))
                {
                    vertexMiddleX = Canvas.GetLeft(checkedVertex);
                    vertexMiddleY = Canvas.GetBottom(vertex) + vertex.Height / 2;
                }
                else
                {
                    vertexMiddleX = Canvas.GetLeft(checkedVertex) + checkedVertex.Width;
                    vertexMiddleY = Canvas.GetBottom(vertex) + vertex.Height/2;
                }
                var relationship = new Relationship(vertex, checkedVertex)
                {
                    Line = {X1 = 0, Y1 = 0, Stroke = Brushes.Black, StrokeThickness = 1}
                };

                if (kindOfRelative == KindOfRelative.Father)
                {
                    relationship.Line.X2 = offset;
                    relationship.Line.Y2 = offset/2;
                }
                else if (kindOfRelative == KindOfRelative.Mother)
                {
                    relationship.Line.X2 = -offset;
                    relationship.Line.Y2 = offset/2;
                }
                else if ((kindOfRelative == KindOfRelative.Brother) || (kindOfRelative == KindOfRelative.Sister))
                {
                    relationship.Line.X2 = offset;
                    relationship.Line.Y2 = 0;
                }
                else if ((kindOfRelative == KindOfRelative.Husband) || (kindOfRelative == KindOfRelative.Wife))
                {
                    relationship.Line.X2 = -offset;
                    relationship.Line.Y2 = 0;
                }
                TreeCanvas.Children.Add(relationship);
                Canvas.SetLeft(relationship, vertexMiddleX);
                Canvas.SetBottom(relationship, vertexMiddleY);
            }
        }