Ejemplo n.º 1
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();
        }
Ejemplo n.º 2
0
        private void add_edge_Click(object sender, EventArgs e)
        {
            var avf = new AddEdgeForm(start_node.Items.Cast <ComboBoxItem>().ToArray());

            avf.ShowDialog(this);
            if (avf.Add && current_graph != null)
            {
                var edge = new Base.Edge <string>(avf.Source, avf.Target, avf.Weight);
                // set node edges
                avf.Source.Edges.Add(edge);
                current_graph.AddEdge(edge);


                wpfHost.Child = GenerateWpfVisuals <string>(current_graph, ref _gArea);
                _gArea.Generate();
                _zoomctrl.ZoomToFill();
            }
        }