Beispiel #1
0
 private void btnNewFile_Click(object sender, EventArgs e)
 {
     if(!loading) //Si no se esta cargando
         miGrafo.ShowDialog(); //Mostrar el dialogo para crear un nuevo grafo
     if (miGrafo.control || loading) //Si el dialogo regreso true o si se esta cargando
     {
         if (loading) //Si se esta cargando
         {
             if (grafo.DiGrafo) //Si es un grafo dirigido
             {
                 rbPDigrafos.Visible = true; //Habilitar el panel de Digrafos
                 rbPNoDigrafos.Visible = false; //Deshabilitar el panel de no Digrafos
                 EsDigrafo = true; //Guardar que es digrafo
             }
             else //Si no es dirigido
             {
                 rbPNoDigrafos.Visible = true; //Habilitar el panel de no Digrafos
                 rbPDigrafos.Visible = false; //Deshabilitar el panel de Digrafos
                 EsDigrafo = false; //Guardar que no es digrafo
             }
         }
         else if (miGrafo.rbtnDigrafo.Checked) //Sino se esta cargando, Si se chequeo que es digrafo
         {
             grafo = new CGrafo(true); //Crear un grafo digrafo
             rbPDigrafos.Visible = true;
             rbPNoDigrafos.Visible = false;
             EsDigrafo = true;
         }
         else if (miGrafo.rbtnNoDigrafo.Checked) //Sino si se chequeo
         {
             grafo = new CGrafo(false); //Crear un grafo no dirigido
             rbPNoDigrafos.Visible = true;
             rbPDigrafos.Visible = false;
             EsDigrafo = false;
         }
         pbCanvas.Dock = DockStyle.Fill; //Le decimos al Canvas que abarque todo el espacio
         pbCanvas.Enabled = true; //Lo habilitamos
         pbCanvas.Visible = true; //Lo hacemos visible
         btnSaveFile.Enabled = true; //Activamos el boton guardar grafo
         btnQuickSaveFile.Enabled = true; //Activamos el boton guardar del QuickMenu
         btnNewNode.Enabled = true; //Habilitamos el boton nuevoNodo
     }
 }
Beispiel #2
0
        private void btnLoadFile_Click(object sender, EventArgs e)
        {
            loading = true; //Se marca la bandera cargando como verdadero
            aristas = 0; //El numero de aristas del grafo se resetea
            nodos = 0; //El numero de nodos del grafo se resetea
            SaveAndLoad myLoad = new SaveAndLoad(); //Instancia de objeto SaveAndLoad

            VentanaCargar.InitialDirectory = "c:\\"; //Directorio inicial para el LoadDialog
            VentanaCargar.Filter = "graph files (*.graph)|*.graph"; //Filtro de archivos
            VentanaCargar.FilterIndex = 2; //Indice del filtro
            VentanaCargar.RestoreDirectory = true; //Volver a abrir donde se cerro

            DialogResult result;
            if (!opening)
                result = VentanaCargar.ShowDialog(); //Mostrar la ventana de carga
            else
                result = DialogResult.OK;
            if (result == DialogResult.OK) // Si fue satisfactorio
            {
                string file;
                if (opening)
                    file = filePath;
                else
                    file = VentanaCargar.FileName; //Guardamos la direccion del archivo
                grafo = myLoad.ReadFromBinaryFile<CGrafo>(file); //Convertimos de binario a CGrafo con la clase SaveAndLoad
                miGrafo.control = true; //Marcamos la varible como true
                btnNewFile.PerformClick(); //Simulamos un click en el boton NewFile
                grafo.DibujarGrafo(pbCanvas.CreateGraphics()); //Dibujamos el grafo cargado en el Canvas
                numeronodos = grafo.nodos.Count; //Actualizamos el numero de nodos
                foreach (CVertice nodo in grafo.nodos)
                {
                    nodos++;
                    foreach (CArco a in nodo.ListaAdyacencia)
                        aristas++;
                }
            }
            if (nodos != 0) //Si el grafo tiene nodos
            {
                btnDelNode.Enabled = true; //Habilitar el boton borrar nodo
                rbnBAgregarArista.Enabled = true; //Habilitar el boton agregar arista
                if (aristas != 0) //Si tiene aristas
                {
                    rbnEliminarArista.Enabled = true; //Habilitar el boton eliminar arista
                    rbnWarshall.Enabled = true; //Habilitar el boton del algoritmo Warshall
                    rbnDijk.Enabled = true; //Habilitar el boton del algoritmo Dijkstra
                    rbnBKruskal.Enabled = true; //Habilitar el boton del algoritmo Kruskal
                    rbnBPrim.Enabled = true; //Habilitar el boton del algoritmo Prim
                    rbnWarshallND.Enabled = true; //Habilitar el boton del algoritmo Warshall no dirigido
                    btnRecorridoAnchura.Enabled = true; //Habilitar recorrido anchura
                    btnRecorridoProfundidad.Enabled = true; //Habilitar recorrido profundidad
                }
            }
            loading = false; //Ya no se esta cargando
        }