예제 #1
0
        /// <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;
            }
        }
예제 #2
0
 /// <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);
 }
예제 #3
0
        /// <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");
            }
        }