void ResetGraph() { start_node.Items.Clear(); goal_node.Items.Clear(); _gArea?.ResetNodesColor(); var bg = new BiGraph <string>(); current_graph = bg; wpfHost.Child = GenerateWpfVisuals <string>(bg, ref _gArea); _gArea.Generate(); _zoomctrl.ZoomToFill(); }
public void LoadGraph(string file) { ParserResults <string> res = null; if (file.EndsWith(".xml")) { res = xml_parser.Parse(file); } else { res = text_parser.Parse(file); } ResetGraph(); var bg = new BiGraph <string>(); current_graph = bg; foreach (var n in res.Nodes) { bg.AddVertex((Node <string>)n); // add nodes to cboxes var ci = new ComboBoxItem(n.Key + "_node", n.Key); ci.Tag = n; start_node.Items.Add(ci); goal_node.Items.Add(ci); // set defaults goal_node.SelectedIndex = goal_node.Items.Count - 1; start_node.SelectedIndex = 0; // set nodes event handlers n.OnPostVisit += N_OnPostVisit; n.OnPreVisit += N_OnPreVisit; n.OnVisit += N_OnVisit; n.OnActionVisit += N_OnActionVisit; } foreach (var e in res.Edges) { // set node edges e.Source.Edges.Add(e); bg.AddEdge((Base.Edge <string>)e); } wpfHost.Child = GenerateWpfVisuals <string>(bg, ref _gArea); _gArea.Generate(); _zoomctrl.ZoomToFill(); }
private UIElement GenerateWpfVisuals <K>(BiGraph <K> graph, ref BiGraphArea <K> _gArea) where K : class, IComparable <K> { _zoomctrl = new ZoomControl(); ZoomControl.SetViewFinderVisibility(_zoomctrl, Visibility.Visible); var logic = new GXLogicCore <Node <K>, Base.Edge <K>, BidirectionalGraph <Node <K>, Base.Edge <K> > >(); _gArea = new BiGraphArea <K> { // EnableWinFormsHostingMode = false, LogicCore = logic, EdgeLabelFactory = new DefaultEdgelabelFactory() }; _gArea.ShowAllEdgesLabels(true); logic.Graph = graph; logic.DefaultLayoutAlgorithm = ((LayoutAlgorithmTypeEnum)(layoutcombo.SelectedItem as ComboBoxItem).Tag); logic.DefaultLayoutAlgorithmParams = logic.AlgorithmFactory.CreateLayoutParameters(((LayoutAlgorithmTypeEnum)(layoutcombo.SelectedItem as ComboBoxItem).Tag)); //((LinLogLayoutParameters)logic.DefaultLayoutAlgorithmParams). = 100; logic.DefaultOverlapRemovalAlgorithm = OverlapRemovalAlgorithmTypeEnum.FSA; logic.DefaultOverlapRemovalAlgorithmParams = logic.AlgorithmFactory.CreateOverlapRemovalParameters(OverlapRemovalAlgorithmTypeEnum.FSA); ((OverlapRemovalParameters)logic.DefaultOverlapRemovalAlgorithmParams).HorizontalGap = 50; ((OverlapRemovalParameters)logic.DefaultOverlapRemovalAlgorithmParams).VerticalGap = 50; logic.DefaultEdgeRoutingAlgorithm = ((EdgeRoutingAlgorithmTypeEnum)(ercombo.SelectedItem as ComboBoxItem).Tag); logic.EnableParallelEdges = paredge.Checked; logic.ParallelEdgeDistance = edgedist.Value; logic.AsyncAlgorithmCompute = false; _zoomctrl.Content = _gArea; _gArea.RelayoutFinished += gArea_RelayoutFinished; var myResourceDictionary = new ResourceDictionary { Source = new Uri("WpfTemplate\\template.xaml", UriKind.Relative) }; _zoomctrl.Resources.MergedDictionaries.Add(myResourceDictionary); return(_zoomctrl); }