示例#1
0
 private void ItSelect()
 {
     if (объектВыбранный != null)
     {
         объектВыбранный.Chrome.Stroke = Brushes.Red; объектВыбранный = null;
     }
 }
示例#2
0
        public void ObjectAdd(БазовыйОбъект newObject)
        {
            newObject.VerticalAlignment   = VerticalAlignment.Top;
            newObject.HorizontalAlignment = HorizontalAlignment.Left;
            newObject.Margin = new Thickness(10, 10, 0, 0);


            string s = null;

            switch (newObject.Тип)
            {
            case PrimitivesTypes.Генератор: s = (++mas[0]).ToString(); break;

            case PrimitivesTypes.Накопитель: s = (++mas[1]).ToString(); break;

            case PrimitivesTypes.Процессор: s = (++mas[2]).ToString(); break;

            case PrimitivesTypes.Блокиратор: s = (++mas[3]).ToString(); break;

            case PrimitivesTypes.Терминал: s = (++mas[4]).ToString(); break;
            }

            newObject.Наименование = newObject.Тип.ToString() + s;
            newObject.SetParameters();
            this.Объекты.Add(newObject);
            AreaGrid.Children.Add(newObject);
        }
示例#3
0
 private void ObjectEnd()
 {
     if (this.объектТекущий != null)
     {
         объектТекущий.Opacity = 1;
         this.объектТекущий    = null;
     }
 }
示例#4
0
        private void ObjectMove(object obj)
        {
            if (obj is БазовыйОбъект)
            {
                объектТекущий = obj as БазовыйОбъект;

                offset = Mouse.GetPosition(объектТекущий);
                AreaGrid.Children.Remove(объектТекущий);

                AreaGrid.Children.Add(объектТекущий);
                ObjectPosition();
            }
        }
示例#5
0
 internal void GeneratePath(БазовыйОбъект obj, Путь p)
 {
     p.Объекты.Add(obj);
     foreach (var o in obj.ОбъектыСледующие)
     {
         var pt = new Путь();
         pt.Объекты.AddRange(p.Объекты);
         GeneratePath(o, pt);
     }
     if (!obj.ЕстьСледующиеОбъекты)
     {
         Пути.Add(p);
     }
 }
示例#6
0
 private void Linked(object obj)
 {
     if (текущаяСвязь != null && obj is БазовыйОбъект)
     {
         БазовыйОбъект curObj = obj as БазовыйОбъект;
         if (ArrowSetLink(curObj) != null)
         {
             // если не нарушает условий страшной логики
             текущаяСвязь.ОбъектПредыдущий = объектВыбранный;
             текущаяСвязь.ОбъектСледующий  = curObj;
             curObj.AddArrows(текущаяСвязь);
             текущаяСвязь.X2 = curObj.Margin.Left; текущаяСвязь.Y2 = curObj.Margin.Top + curObj.Height / 2;
         }
         else
         {
             ArrowBreak();
         }
     }
 }
示例#7
0
        private БазовыйОбъект ArrowSetLink(БазовыйОбъект obj)
        {
            // страшная логика по условиям по тз
            if (текущаяСвязь.ОбъектПредыдущий != obj &&
                !(obj is Генератор) && !(текущаяСвязь.ОбъектПредыдущий is Терминал)
                )
            {
                if (текущаяСвязь.ОбъектПредыдущий is Генератор)
                {
                    if (obj is Блокиратор || obj is Накопитель)
                    {
                        return(obj);
                    }
                }
                if (текущаяСвязь.ОбъектПредыдущий is Блокиратор)
                {
                    if (obj is Накопитель || obj is Процессор || obj is Терминал)
                    {
                        return(obj);
                    }
                }
                if (текущаяСвязь.ОбъектПредыдущий is Накопитель)
                {
                    if (obj is Блокиратор || obj is Процессор)
                    {
                        return(obj);
                    }
                }
                if (текущаяСвязь.ОбъектПредыдущий is Процессор)
                {
                    if (obj is Блокиратор || obj is Накопитель || obj is Терминал)
                    {
                        return(obj);
                    }
                }
            }

            return(null);
        }
示例#8
0
        public void ArrowBegin()
        {
            if (объектТекущий != null)
            {
                объектВыбранный =о бъектТекущий; объектТекущий = null;
            }
            if (объектВыбранный != null)
            {
                текущаяСвязь                 = new Связь();
                offset.X                     = объектВыбранный.Margin.Left + объектВыбранный.Width; offset.Y = объектВыбранный.Margin.Top + объектВыбранный.Height / 2;
                текущаяСвязь.Stroke          = Brushes.Red;
                текущаяСвязь.StrokeThickness = 3;
                текущаяСвязь.X1              = offset.X;
                текущаяСвязь.Y1              = offset.Y;
                ArrowEndChange();

                AreaGrid.Children.Add(текущаяСвязь);
                Panel.SetZIndex(текущаяСвязь, -1);
                текущаяСвязь.ОбъектПредыдущий = объектВыбранный;
                объектВыбранный.AddArrows(текущаяСвязь);
            }
        }
示例#9
0
        private void ObjectSelected()
        {
            if (this.объектТекущий != null && объектВыбранный != объектТекущий)
            {
                ItSelect();

                объектВыбранный = объектТекущий;
                объектВыбранный.Chrome.Stroke = Brushes.Black;

                string s = null;
                foreach (БазовыйОбъект obj in объектВыбранный.ОбъектыПредыдущие)
                {
                    s += obj.Наименование + ' ';
                }
                s += "::";
                foreach (БазовыйОбъект obj in объектВыбранный.ОбъектыСледующие)
                {
                    s += ' ' + obj.Наименование;
                }
                s                += "=" + объектВыбранный.Связи.Count.ToString();
                tb_Stat.Text      = s;
                tb_type_name.Text = объектВыбранный.Наименование;
            }
        }
示例#10
0
 protected void AddObjectEnd(БазовыйОбъект obj)
 {
     ОбъектыСледующие.Add(obj);
 }
示例#11
0
        internal void GeneratePathes(БазовыйОбъект obj)
        {
            Путь p = new Путь();

            GeneratePath(obj, p);
        }