/// <summary> /// Muestra la información de las distintas funciones encontradas /// </summary> private void cbFunciones_SelectedIndexChanged(object sender, EventArgs e) { // Agrega filas al dataGridView en caso de que no haya la cantidad necesaria if (dgvMostrarFuncion.Rows.Count != g1.cantidadVertices) { for (int i = 0; i < g1.cantidadVertices; i++) { dgvMostrarFuncion.Rows.Add(); } } if (g1.lstVertices.Count > 9) { listaFunciones = PermutadorUtilities.getInstancia().funcionIsomorfica; } // Llena el dataGridView con la información de la función seleccionada for (int i = 0; i < listaFunciones[cbFunciones.SelectedIndex].V1.Count; i++) { dgvMostrarFuncion[0, i].Value = listaFunciones[cbFunciones.SelectedIndex].V1[i].etiqueta; dgvMostrarFuncion[1, i].Value = listaFunciones[cbFunciones.SelectedIndex].V2[i].etiqueta; } }
/// <summary> /// Singleton de las utilidads para mentener una sola instancia /// </summary> /// <returns></returns> public static PermutadorUtilities getInstancia() { if (instancia == null) { instancia = new PermutadorUtilities(); } return(instancia); }
/// <summary> /// Funcion que genera el reporte de las funciones isomórficas en PDF /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { //Variables para escribir en el pdf PdfWriter writer; Document doc = new Document(PageSize.LETTER); //Se llenan la lista de funciones cuando el número de vertices es > 9 if (g1.lstVertices.Count > 9) { listaFunciones = PermutadorUtilities.getInstancia().funcionIsomorfica; } try { //Path en donde se escribira el archivo writer = PdfWriter.GetInstance(doc, new FileStream(Directory.GetCurrentDirectory() + "\\Funciones de " + "Isomorfismo.pdf", FileMode.Create)); //Autores del archivo doc.AddAuthor("Matemática Discreta II"); doc.AddCreator("Alumnos de Matemática Discreta II"); doc.Open(); //Fuente del archivo iTextSharp.text.Font _standardFont = new iTextSharp.text.Font( iTextSharp.text.Font.FontFamily.HELVETICA, 8, iTextSharp.text.Font.NORMAL , BaseColor.BLACK); doc.Add(new Paragraph("Lista de funciones isomórficas - Matemática " + "Discreta II")); doc.Add(Chunk.NEWLINE); /* Se escriben todas las funciones isomorficas recorriendo la lista de * funciones con un for. */ for (int i = 0; i < listaFunciones.Count; i++) { doc.Add(new Paragraph("Función Isomórfica No. " + (i + 1))); PdfPTable tblIsomorfismo = new PdfPTable(2); tblIsomorfismo.WidthPercentage = 100; PdfPCell clGrafo1 = new PdfPCell(new Phrase("Grafo 1", _standardFont)); clGrafo1.BorderWidth = 0; clGrafo1.BorderWidthBottom = 0.75f; PdfPCell clGrafo2 = new PdfPCell(new Phrase("Grafo 2", _standardFont)); clGrafo2.BorderWidth = 0; clGrafo2.BorderWidthBottom = 0.75f; tblIsomorfismo.AddCell(clGrafo1); tblIsomorfismo.AddCell(clGrafo2); for (int j = 0; j < listaFunciones[i].V1.Count; j++) { clGrafo1 = new PdfPCell(new Phrase((listaFunciones[i].V1[j].etiqueta). ToString(), _standardFont)); clGrafo1.BorderWidth = 0; clGrafo2 = new PdfPCell(new Phrase((listaFunciones[i].V2[j].etiqueta). ToString().ToLower(), _standardFont)); clGrafo2.BorderWidth = 0; tblIsomorfismo.AddCell(clGrafo1); tblIsomorfismo.AddCell(clGrafo2); } doc.Add(tblIsomorfismo); doc.Add(new LineSeparator()); doc.Add(new LineSeparator()); doc.Add(Chunk.NEWLINE); } //Se cierra el documento y el escribidor. doc.Close(); writer.Close(); btnGenerarPdf.Enabled = false; } catch (IOException file) { //Si se intenta generar un archivo cuando este esta abierto marca error MessageBox.Show("Cierre el archivo de isomórfismo que tiene abierto " + "antes de generar uno nuevo."); } catch (UnauthorizedAccessException sinPermisos) { MessageBox.Show("Por favor para generar el PDF ejecuta la aplicación " + "como administrador"); } }