private void EnMenúAbrir(object elRemitente, EventArgs losArgumentos) { using (OpenFileDialog ventanaParaAbrirArchivo = new OpenFileDialog()) { ventanaParaAbrirArchivo.CheckFileExists = true; ventanaParaAbrirArchivo.AutoUpgradeEnabled = true; ventanaParaAbrirArchivo.DefaultExt = "txt"; ventanaParaAbrirArchivo.Filter = ManejadorDeMapa.FiltrosDeExtensiones; DialogResult respuesta = ventanaParaAbrirArchivo.ShowDialog(); switch (respuesta) { case DialogResult.OK: string archivo = ventanaParaAbrirArchivo.FileName; try { miManejadorDeMapa.Abrir(archivo); // Deshabilita el menu de Guardar porque el mapa se acaba de leer. miMenuGuardar.Enabled = false; // Habilita el menú de "Guardar Como ..." porque hay un mapa en memoria. miMenuGuardarComo.Enabled = true; } catch (Exception e) { Programa.MuestraExcepción("Error abriendo archivo " + archivo, e); } break; } } }
static void Main(string[] losArgumentos) { // Procesa los argumentos. Argumentos argumentos = new Argumentos(); if (!argumentos.ParseAndContinue(losArgumentos)) { return; } if (argumentos.DirectorioDeEntrada == null) { Console.WriteLine( argumentos.GetUsage("ERROR: Falta directorio de entrada.")); Environment.Exit(1); } if (argumentos.DirectorioDeSalida == null) { Console.WriteLine( argumentos.GetUsage("ERROR: Falta directorio de salida.")); Environment.Exit(1); } // Chequea que los directorios no sean los mismos. if (argumentos.DirectorioDeEntrada == argumentos.DirectorioDeSalida) { Console.WriteLine( argumentos.GetUsage("ERROR: El directorio de entrada y salida deben ser diferentes.")); Environment.Exit(1); } // Procesa cada archivo en el directorio fuente. IEscuchadorDeEstatus escuchadorDeEstatus = new EscuchadorDeEstatusPorOmisión(); ManejadorDeMapa manejadorDeMapa = new ManejadorDeMapa(escuchadorDeEstatus); DirectoryInfo informaciónDelDirectorio = new DirectoryInfo(argumentos.DirectorioDeEntrada); FileInfo[] archivosFuente = informaciónDelDirectorio.GetFiles("*.mp"); foreach (FileInfo archivo in archivosFuente) { // Verifica que el archivo de salida no existe. string archivoDeSalida = Path.Combine(argumentos.DirectorioDeSalida, archivo.Name); if (File.Exists(archivoDeSalida)) { Console.WriteLine(string.Format("ERROR: Archivo de salida '{0}' ya existe.", archivoDeSalida)); Environment.Exit(1); break; } // Lee mapa. Console.Write(string.Format("Leyendo '{0}' ... ", archivo.FullName)); manejadorDeMapa.Abrir(archivo.FullName); Console.WriteLine("listo."); // Procesa cada uno de los 'procesamientos'. Console.WriteLine("Procesando ... "); foreach (string procesamiento in argumentos.Procesamientos) { Console.Write(string.Format(" -> {0} ...", procesamiento)); int númeroDeProblemas = 0; switch (procesamiento) { case "ProcesarTodo": { númeroDeProblemas += manejadorDeMapa.ProcesarTodo(); } break; case "ArreglaIndices": { númeroDeProblemas += manejadorDeMapa.ManejadorDePdis.ArregladorDeIndicesDeCiudad.Procesa(); númeroDeProblemas += manejadorDeMapa.ManejadorDeVías.ArregladorDeIndicesDeCiudad.Procesa(); } break; default: Console.WriteLine( argumentos.GetUsage(string.Format("ERROR: Procesamiento '{0}' es desconocido.", procesamiento))); Environment.Exit(1); break; } // Imprime el número de problemas encontrados. Console.WriteLine(string.Format(" {0} problemas.", númeroDeProblemas)); // Imprime cambios. ImprimeCambios(manejadorDeMapa.ManejadorDePdis.Elementos, "PDI"); ImprimeCambios(manejadorDeMapa.ManejadorDeVías.Elementos, "Via"); } // Escribe el archivo de salida. Console.Write(string.Format("Guardando mapa '{0}' ... ", archivoDeSalida)); manejadorDeMapa.GuardaEnFormatoPolish( archivoDeSalida, string.Format("Generado por {0} @ {1}", Assembly.GetExecutingAssembly().GetName().Name, DateTime.Now)); Console.WriteLine("listo."); Console.WriteLine(); } }