コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
        }