private void ItSelect() { if (объектВыбранный != null) { объектВыбранный.Chrome.Stroke = Brushes.Red; объектВыбранный = null; } }
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); }
private void ObjectEnd() { if (this.объектТекущий != null) { объектТекущий.Opacity = 1; this.объектТекущий = null; } }
private void ObjectMove(object obj) { if (obj is БазовыйОбъект) { объектТекущий = obj as БазовыйОбъект; offset = Mouse.GetPosition(объектТекущий); AreaGrid.Children.Remove(объектТекущий); AreaGrid.Children.Add(объектТекущий); ObjectPosition(); } }
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); } }
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(); } } }
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); }
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(текущаяСвязь); } }
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 = объектВыбранный.Наименование; } }
protected void AddObjectEnd(БазовыйОбъект obj) { ОбъектыСледующие.Add(obj); }
internal void GeneratePathes(БазовыйОбъект obj) { Путь p = new Путь(); GeneratePath(obj, p); }