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 } }
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 }