public void AddUIGraphWayWithUnmark(UIGraphWay way) { AddUIGraphWay(way); way.To.Unmark(); way.From.Unmark(); }
private void graphCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { UIGraphNode underMouseUIGraphNode = graphCanvas.GetUnderMouseUIGraphNode(); UIGraphWay underMouseUIGraphWay = graphCanvas.GetUnderMouseUIGraphWay(); if (underMouseUIGraphWay == null) { if (underMouseUIGraphNode == null) { graphCanvas.AddUIGraphNode(new UIGraphNode(e.GetPosition(graphCanvas))); HistorySnapshop(); } else { graphCanvas.Draging = underMouseUIGraphNode; graphCanvas.DragingOffset = new Point(e.GetPosition(graphCanvas).X - underMouseUIGraphNode.GetCenter().X, e.GetPosition(graphCanvas).Y - underMouseUIGraphNode.GetCenter().Y); graphCanvas.Draging.CaptureMouse(); } } else { var wayEditor = new WayEditorWindow(underMouseUIGraphWay); wayEditor.Owner = this; wayEditor.ShowDialog(); if (wayEditor.Modified) { underMouseUIGraphWay.Update(); HistorySnapshop(); } } }
public void AddUIGraphWay(UIGraphWay way) { if (Graph.FindWay(way.From, way.To, true) == null) { var reverseWay = Graph.FindWay(way.To, way.From, true); if (reverseWay != null) { // make a non-oriented way, because exist way From->To and To->From RemoveUIGraphWay(reverseWay as UIGraphWay); AddUIGraphWay(new UIGraphWay(way.From, way.To, false)); } else { Graph.AddWay(way); DrawGraph(); } } }
public void LoadFromGraph(Graph graph) { // предотвращаем ошибки из за загрузки из себя же if (this == graph) { return; } Clear(); var nodeDictionary = new Dictionary <GraphNode, UIGraphNode>(); foreach (GraphNode node in graph.Nodes) { var newNode = new UIGraphNode(node.Position, node.Name, node.Info); nodeDictionary[node] = newNode; AddNode(newNode); } for (int i = 0; i < graph.MarkedNodes.Count; i++) { nodeDictionary[graph.MarkedNodes[i]].Style = graph.MarkedNodes[i].Style; } foreach (GraphWay way in graph.Ways) { var newWay = new UIGraphWay(nodeDictionary[way.From], nodeDictionary[way.To], way.Oriented); if (!way.WeightIsLen) { newWay.WeightIsLen = false; newWay.Weight = way.Weight; } newWay.Style = way.Style; AddWay(newWay); } }
private void graphCanvas_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { UIGraphNode underMouseUIGraphNode = graphCanvas.GetUnderMouseUIGraphNode(); UIGraphWay underMouseUIGraphWay = graphCanvas.GetUnderMouseUIGraphWay(); if (underMouseUIGraphNode != null) { if (underMouseUIGraphNode.ToggleMark()) // если вернется true значит вершина помечается, иначе пометка снимается { if (AutomatAddWayMode.IsChecked && Commands.AppCommands.AddWay.CanExecute(null, this)) { Commands.AppCommands.AddWay.Execute(null, this); } } HistorySnapshop(); } else if (underMouseUIGraphWay != null) { graphCanvas.RemoveUIGraphWay(underMouseUIGraphWay); HistorySnapshop(); } }
public void RemoveUIGraphWay(UIGraphWay way) { Graph.RemoveWay(way); DrawGraph(true); }