private void EnMenúAbrirLímites(object sender, EventArgs losArgumentos) { using (OpenFileDialog ventanaParaAbrirArchivo = new OpenFileDialog()) { ventanaParaAbrirArchivo.Title = "Seleccione archivo de Límites"; ventanaParaAbrirArchivo.CheckFileExists = true; ventanaParaAbrirArchivo.AutoUpgradeEnabled = true; ventanaParaAbrirArchivo.DefaultExt = "mp"; ventanaParaAbrirArchivo.Filter = ManejadorDeMapa.FiltrosDeExtensiones; DialogResult respuesta = ventanaParaAbrirArchivo.ShowDialog(); switch (respuesta) { case DialogResult.OK: string archivo = ventanaParaAbrirArchivo.FileName; try { miManejadorDeMapa.AbrirLímites(archivo); Settings.Default.ArchivoDeLímites = archivo; } catch (Exception e) { Programa.MuestraExcepción("Error abriendo archivo " + archivo, e); } break; } } }
/// <summary> /// Constructor. /// </summary> public InterfaseManejadorDeMapa() { // Lee la cultura de las opciones. // Si la cultura no esta definida entonces usamos Inglés // para todas las culturas que no deriven del Español. var culturaTexto = Settings.Default.Cultura; CultureInfo cultura; if (string.IsNullOrEmpty(culturaTexto)) { cultura = CultureInfo.CurrentCulture; if (cultura.TwoLetterISOLanguageName != "es") { cultura = new CultureInfo("en"); } } else { cultura = new CultureInfo(culturaTexto); } Thread.CurrentThread.CurrentUICulture = cultura; InitializeComponent(); // Crea la lista de menús a desabilitar. misMenúsADesabilitar = new List<ToolStripMenuItem> { miMenúMapa, miMenúProcesar}; // Crea la lista de menús de lenguage. misMenúsDeLenguage = new List<ToolStripMenuItem> { miMenúLenguajeEspañol, miMenúLenguajeInglés, miMenúLenguajeAutomático}; miMenúLenguajeAutomático.Tag = string.Empty; CambiaCultura(culturaTexto); // Pone el nombre. Text = Recursos.DescripciónDelEjecutable + " - " + VentanaDeAcerca.AssemblyCompany; #region Asigna los ToolTips de los menús. miMenúAceptarModificaciones.ToolTipText = ManejadorDeMapa.DescripciónAceptarModificaciones; // PDIs. miMenúProcesarTodoEnPdis.ToolTipText = GpsYv.ManejadorDeMapa.Pdis.ManejadorDePdis.DescripciónProcesarTodo; miMenúArreglarIndicesDeCiudadEnPdis.ToolTipText = GpsYv.ManejadorDeMapa.Pdis.ArregladorDeIndicesDeCiudad.Descripción; miMenuArreglarCosasGeneralesEnPdis.ToolTipText = GpsYv.ManejadorDeMapa.Pdis.ArregladorGeneral.Descripción; miMenúBuscaDuplicadosEnPdis.ToolTipText = GpsYv.ManejadorDeMapa.Pdis.BuscadorDeDuplicados.Descripción; miMenúBuscarAlertasEnPdis.ToolTipText = GpsYv.ManejadorDeMapa.Pdis.BuscadorDeAlertas.Descripción; miMenúBuscarErroresEnPdis.ToolTipText = GpsYv.ManejadorDeMapa.Pdis.BuscadorDeErrores.Descripción; // Vías. miMenúProcesarTodoEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.ManejadorDeVías.DescripciónProcesarTodo; miMenúArreglarIndicesDeCiudadEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.ArregladorDeIndicesDeCiudad.Descripción; miMenúArreglarCosasGeneralesEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.ArregladorGeneral.Descripción; miMenúBuscarAlertasEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.BuscadorDeAlertas.Descripción; miMenúBuscarPosiblesErroresDeRuteoEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.BuscadorDePosiblesErroresDeRuteo.Descripción; miMenúBuscarPosiblesNodosDesconectadosEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.BuscadorDePosiblesNodosDesconectados.Descripción; miMenúBuscarErroresEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.BuscadorDeErrores.Descripción; #endregion // Crea y asigna el escuchador de estatus. miEscuchadorDeEstatus = new EscuchadorDeEstatus( this, miTextoDeEstatus, miBarraDeProgreso, miTextoDeCoordenadas); // Crea el objecto Manejador de Mapa. miManejadorDeMapa = new ManejadorDeMapa( miEscuchadorDeEstatus, new OpenFileDialogService()); // Maneja eventos de modificación de elementos. miManejadorDeMapa.MapaNuevo += EnMapaNuevo; miManejadorDeMapa.ElementosModificados += EnElementosModificados; // Maneja eventos de procesamiento. miManejadorDeMapa.Procesando += EnProcesando; miManejadorDeMapa.Procesó += EnProcesó; // Oculta el botón de parar de procesar. miBotónParaDeProcesar.Visible = false; miTimerParaMostrarBotónParaDeProcesar.Interval = 5000; miTimerParaMostrarBotónParaDeProcesar.Tick += EnTimerParaMostrarBotónParaDeProcesar; // Pone el método llenador de items. miLista.PoneLlenadorDeItems(LlenaItems); // Asigna las propiedades de la interfase de mapa. miInterfaseDeMapa.ManejadorDeMapa = miManejadorDeMapa; miInterfaseDeMapa.EscuchadorDeEstatus = miEscuchadorDeEstatus; // Asigna las propiedades de la interfase de PDIs. miInterfaseManejadorDePdis.ManejadorDeMapa = miManejadorDeMapa; miInterfaseManejadorDePdis.EscuchadorDeEstatus = miEscuchadorDeEstatus; // Asigna las propiedades de la interfase de Vías. miInterfaseManejadorDeVías.ManejadorDeMapa = miManejadorDeMapa; miInterfaseManejadorDeVías.EscuchadorDeEstatus = miEscuchadorDeEstatus; // Crea el diccionario de índices de pestañas. TabControl.TabPageCollection pestañas = miControladorDePestañasPrincipal.TabPages; for (int i = 0; i < pestañas.Count; ++i) { misIndicesDePestañas[pestañas[i]] = i; } // Maneja evento de cambio de Estado Máximo de Pestañas de PDIs. miInterfaseManejadorDePdis.CambióEstadoMáximoDePestañas += ((elEnviador, losArgumentos) => miControladorDePestañasPrincipal.PoneEstadoDePestaña( miPaginaDePdis, losArgumentos.EstadoMáximoDePestañas)); // Maneja evento de cambio de Estado Máximo de Pestañas de Vías. miInterfaseManejadorDeVías.CambióEstadoMáximoDePestañas += ((elEnviador, losArgumentos) => miControladorDePestañasPrincipal.PoneEstadoDePestaña( miPáginaDeVías, losArgumentos.EstadoMáximoDePestañas)); // Lee el archivo de límites si existe en los settings. if (!string.IsNullOrEmpty(Settings.Default.ArchivoDeLímites)) { // Trata de leer el archivo de límites. try { miManejadorDeMapa.AbrirLímites(Settings.Default.ArchivoDeLímites); } catch { // Ignoramos errores. } } }
/// <summary> /// Constructor. /// </summary> public InterfaseManejadorDeMapa() { // Lee la cultura de las opciones. // Si la cultura no esta definida entonces usamos Inglés // para todas las culturas que no deriven del Español. var culturaTexto = Settings.Default.Cultura; CultureInfo cultura; if (string.IsNullOrEmpty(culturaTexto)) { cultura = CultureInfo.CurrentCulture; if (cultura.TwoLetterISOLanguageName != "es") { cultura = new CultureInfo("en"); } } else { cultura = new CultureInfo(culturaTexto); } Thread.CurrentThread.CurrentUICulture = cultura; InitializeComponent(); // Crea la lista de menús a desabilitar. misMenúsADesabilitar = new List <ToolStripMenuItem> { miMenúMapa, miMenúProcesar }; // Crea la lista de menús de lenguage. misMenúsDeLenguage = new List <ToolStripMenuItem> { miMenúLenguajeEspañol, miMenúLenguajeInglés, miMenúLenguajeAutomático }; miMenúLenguajeAutomático.Tag = string.Empty; CambiaCultura(culturaTexto); // Pone el nombre. Text = Recursos.DescripciónDelEjecutable + " - " + VentanaDeAcerca.AssemblyCompany; #region Asigna los ToolTips de los menús. miMenúAceptarModificaciones.ToolTipText = ManejadorDeMapa.DescripciónAceptarModificaciones; // PDIs. miMenúProcesarTodoEnPdis.ToolTipText = GpsYv.ManejadorDeMapa.Pdis.ManejadorDePdis.DescripciónProcesarTodo; miMenúArreglarIndicesDeCiudadEnPdis.ToolTipText = GpsYv.ManejadorDeMapa.Pdis.ArregladorDeIndicesDeCiudad.Descripción; miMenuArreglarCosasGeneralesEnPdis.ToolTipText = GpsYv.ManejadorDeMapa.Pdis.ArregladorGeneral.Descripción; miMenúBuscaDuplicadosEnPdis.ToolTipText = GpsYv.ManejadorDeMapa.Pdis.BuscadorDeDuplicados.Descripción; miMenúBuscarAlertasEnPdis.ToolTipText = GpsYv.ManejadorDeMapa.Pdis.BuscadorDeAlertas.Descripción; miMenúBuscarErroresEnPdis.ToolTipText = GpsYv.ManejadorDeMapa.Pdis.BuscadorDeErrores.Descripción; // Vías. miMenúProcesarTodoEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.ManejadorDeVías.DescripciónProcesarTodo; miMenúArreglarIndicesDeCiudadEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.ArregladorDeIndicesDeCiudad.Descripción; miMenúArreglarCosasGeneralesEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.ArregladorGeneral.Descripción; miMenúBuscarAlertasEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.BuscadorDeAlertas.Descripción; miMenúBuscarPosiblesErroresDeRuteoEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.BuscadorDePosiblesErroresDeRuteo.Descripción; miMenúBuscarPosiblesNodosDesconectadosEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.BuscadorDePosiblesNodosDesconectados.Descripción; miMenúBuscarErroresEnVías.ToolTipText = GpsYv.ManejadorDeMapa.Vías.BuscadorDeErrores.Descripción; #endregion // Crea y asigna el escuchador de estatus. miEscuchadorDeEstatus = new EscuchadorDeEstatus( this, miTextoDeEstatus, miBarraDeProgreso, miTextoDeCoordenadas); // Crea el objecto Manejador de Mapa. miManejadorDeMapa = new ManejadorDeMapa( miEscuchadorDeEstatus, new OpenFileDialogService()); // Maneja eventos de modificación de elementos. miManejadorDeMapa.MapaNuevo += EnMapaNuevo; miManejadorDeMapa.ElementosModificados += EnElementosModificados; // Maneja eventos de procesamiento. miManejadorDeMapa.Procesando += EnProcesando; miManejadorDeMapa.Procesó += EnProcesó; // Oculta el botón de parar de procesar. miBotónParaDeProcesar.Visible = false; miTimerParaMostrarBotónParaDeProcesar.Interval = 5000; miTimerParaMostrarBotónParaDeProcesar.Tick += EnTimerParaMostrarBotónParaDeProcesar; // Pone el método llenador de items. miLista.PoneLlenadorDeItems(LlenaItems); // Asigna las propiedades de la interfase de mapa. miInterfaseDeMapa.ManejadorDeMapa = miManejadorDeMapa; miInterfaseDeMapa.EscuchadorDeEstatus = miEscuchadorDeEstatus; // Asigna las propiedades de la interfase de PDIs. miInterfaseManejadorDePdis.ManejadorDeMapa = miManejadorDeMapa; miInterfaseManejadorDePdis.EscuchadorDeEstatus = miEscuchadorDeEstatus; // Asigna las propiedades de la interfase de Vías. miInterfaseManejadorDeVías.ManejadorDeMapa = miManejadorDeMapa; miInterfaseManejadorDeVías.EscuchadorDeEstatus = miEscuchadorDeEstatus; // Crea el diccionario de índices de pestañas. TabControl.TabPageCollection pestañas = miControladorDePestañasPrincipal.TabPages; for (int i = 0; i < pestañas.Count; ++i) { misIndicesDePestañas[pestañas[i]] = i; } // Maneja evento de cambio de Estado Máximo de Pestañas de PDIs. miInterfaseManejadorDePdis.CambióEstadoMáximoDePestañas += ((elEnviador, losArgumentos) => miControladorDePestañasPrincipal.PoneEstadoDePestaña( miPaginaDePdis, losArgumentos.EstadoMáximoDePestañas)); // Maneja evento de cambio de Estado Máximo de Pestañas de Vías. miInterfaseManejadorDeVías.CambióEstadoMáximoDePestañas += ((elEnviador, losArgumentos) => miControladorDePestañasPrincipal.PoneEstadoDePestaña( miPáginaDeVías, losArgumentos.EstadoMáximoDePestañas)); // Lee el archivo de límites si existe en los settings. if (!string.IsNullOrEmpty(Settings.Default.ArchivoDeLímites)) { // Trata de leer el archivo de límites. try { miManejadorDeMapa.AbrirLímites(Settings.Default.ArchivoDeLímites); } catch { // Ignoramos errores. } } }