private void EnBotónEliminarPdis(object sender, EventArgs e) { // Suspende notificaciones. ManejadorDeMapa.SuspendeEventos(); // Obtiene la lista de PDIs a eliminar. List <Pdi> pdisAEliminar = new List <Pdi>(); foreach (ListViewItem item in miLista.Items) { if (item.Checked) { pdisAEliminar.Add(((ElementoConEtiqueta)item.Tag).ElementoDelMapa as Pdi); } } // Pregunta si se quiere eliminar los PDIs. string texto = string.Format("Está seguro que quiere borrar los {0} PDIs seleccionados?", pdisAEliminar.Count); DialogResult respuesta = MessageBox.Show( texto, "Eliminar PDIs", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); // Elimina los PDIs si el usuario dice que si. if (respuesta == DialogResult.Yes) { foreach (Pdi pdi in pdisAEliminar) { pdi.Elimina("Manualmente eliminado en la pestaña de 'Posibles Duplicados'"); } // Restablece notificaciones. ManejadorDeMapa.RestableceEventos(); // Busca otra vez los PDIs duplicados tomando en cuenta // los que se acaban de eliminar. miBuscadorDeDuplicados.Procesa(); } else { // Restablece notificaciones. ManejadorDeMapa.RestableceEventos(); } }
private void EnMenúMarcarComoNodosDesconectados(object elEnviador, EventArgs losArgumentos) { // Retornamos si no hay Vías seleccionadas. int númeroDeNodosSeleccionados = miLista.SelectedIndices.Count; if (númeroDeNodosSeleccionados == 0) { return; } if (númeroDeNodosSeleccionados > 1) { // Pregunta si se quiere marcar los nodos como desconectados. DialogResult respuesta = MessageBox.Show( string.Format("Está seguro que quiere marcar los {0} Nodos seleccionados como nodos desconectados?", númeroDeNodosSeleccionados), "Marcar como Nodos Desconectados", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (respuesta != DialogResult.Yes) { return; } } #region Marca Nodos como Desconectados. // Añade el attributo a los nodos. ManejadorDeMapa.SuspendeEventos(); IList <InformaciónNodoDesconectado> posibleNodoDesconectados = miInterfaseListaConMapaDeVías.MenuEditorDeVías.ObtieneEtiquetasSeleccionadas <InformaciónNodoDesconectado>(); foreach (InformaciónNodoDesconectado posibleNodoDesconectado in posibleNodoDesconectados) { string atributo = BuscadorDePosiblesNodosDesconectados.AtributoNodoDesconectado + ',' + posibleNodoDesconectado.PosibleNodoDesconectado.Indice; posibleNodoDesconectado.PosibleNodoDesconectado.Vía.AñadeAtributo(atributo); } ManejadorDeMapa.RestableceEventos(); // Notifica la edición. miMenú.EnvíaEventoEditó(); #endregion }
private void AñadeAttributo(string elTítulo, string laPregunta, string elAtributo) { ListView lista = miInterfaseListaConMapaDePdis.InterfaseListaDePdis; // Retornamos si no hay PDIs seleccionados. int númeroDePdisSeleccionados = lista.SelectedIndices.Count; if (númeroDePdisSeleccionados == 0) { return; } // Pregunta si se quiere Ignorarque el PDI no tenga coordenadas a Nivel 0. DialogResult respuesta = MessageBox.Show( string.Format( laPregunta, númeroDePdisSeleccionados), elTítulo, MessageBoxButtons.YesNo, MessageBoxIcon.Warning); #region Estandarizar el Límite de Velocidad si el usuario dice que si. if (respuesta != DialogResult.Yes) { return; } // Añade los attributos. ManejadorDeMapa.SuspendeEventos(); IList <Pdi> pdis = miInterfaseListaConMapaDePdis.MenuEditorDePdis.ObtieneElementosSeleccionados <Pdi>(); foreach (Pdi pdi in pdis) { pdi.AñadeAtributo(elAtributo); } ManejadorDeMapa.RestableceEventos(); // Busca errores otra vez. miBuscadorDeErrores.Procesa(); #endregion }
private void EnMenúIgnorarCambiosBruscosDeClaseDeRuta(object elEnviador, EventArgs losArgumentos) { // Retornamos si no hay Vías seleccionadas. int númeroDeVíasSeleccionadas = miLista.SelectedIndices.Count; if (númeroDeVíasSeleccionadas == 0) { return; } if (númeroDeVíasSeleccionadas > 1) { // Pregunta si se quiere ignorar los cambios bruscos de clase de ruta. DialogResult respuesta = MessageBox.Show( string.Format("Está seguro que quiere ignorar los cambios bruscos de clase de ruta en las {0} Vías seleccionadas?", númeroDeVíasSeleccionadas), "Ignorar Cambios Bruscos de Clase de Ruta", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (respuesta != DialogResult.Yes) { return; } } // Añade el attributo a las vías. ManejadorDeMapa.SuspendeEventos(); IList <Vía> vías = miInterfaseListaConMapaDeVías.MenuEditorDeVías.ObtieneElementosSeleccionados <Vía>(); foreach (Vía vía in vías) { vía.AñadeAtributo(BuscadorDePosiblesErroresDeRuteo.AtributoIgnorarCambioBruscoDeClaseDeRuta); } ManejadorDeMapa.RestableceEventos(); // Notifica la edición. miMenú.EnvíaEventoEditó(); }
private void EnMenúExcluirDeBúsquedaDeParámetrosDeRutaEstándar(object elEnviador, EventArgs losArgumentos) { ListView lista = miInterfaseListaConMapaDeVías.InterfaseListaDeVías; // Retornamos si no hay Vías seleccionadas. int númeroDeVíasSeleccionadas = lista.SelectedIndices.Count; if (númeroDeVíasSeleccionadas == 0) { return; } // Pregunta si se quiere Estandarizar el Límite de Velocidad. DialogResult respuesta = MessageBox.Show( string.Format("Está seguro que quiere Excluir las {0} Vías seleccionadas de próximas búsquedas de Parámetros de Ruta Estándar?", númeroDeVíasSeleccionadas), "Excluir de Búsqueda de Parámetros de Ruta Estándar", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); #region Estandarizar el Límite de Velocidad si el usuario dice que si. if (respuesta != DialogResult.Yes) { return; } // Cambia las vías. ManejadorDeMapa.SuspendeEventos(); IList <Vía> vías = miInterfaseListaConMapaDeVías.MenuEditorDeVías.ObtieneElementosSeleccionados <Vía>(); foreach (Vía vía in vías) { vía.AñadeAtributo(BuscadorDeAlertas.AtributoNoParámetrosDeRutaEstándar); } ManejadorDeMapa.RestableceEventos(); // Busca inconguencias otra vez. miBuscadorDeAlertas.Procesa(); #endregion }
private void EnMenúConectarNodosDesconectados(object elEnviador, EventArgs losArgumentos) { // Retornamos si no hay Vías seleccionadas. int númeroDeNodosDesconectados = miLista.SelectedIndices.Count; if (númeroDeNodosDesconectados == 0) { return; } if (númeroDeNodosDesconectados > 1) { // Pregunta si se quiere Estandarizar el Límite de Velocidad. DialogResult respuesta = MessageBox.Show( string.Format("Está seguro que quiere conectar los {0} Nodos seleccionados?", númeroDeNodosDesconectados), "Conectar Nodos Desconectados", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (respuesta != DialogResult.Yes) { return; } } #region Conectar Nodos Desconectados. ManejadorDeMapa.SuspendeEventos(); IList <InformaciónNodoDesconectado> posibleNodoDesconectados = miInterfaseListaConMapaDeVías.MenuEditorDeVías.ObtieneEtiquetasSeleccionadas <InformaciónNodoDesconectado>(); const string razón = "Nodo conectado manualmente."; foreach (InformaciónNodoDesconectado posibleNodoDesconectado in posibleNodoDesconectados) { // Conecta los nodos. Vía vía = posibleNodoDesconectado.PosibleNodoDesconectado.Vía; int índice = posibleNodoDesconectado.PosibleNodoDesconectado.Indice; Vía víaDestino = posibleNodoDesconectado.NodoDestino.Vía; int índiceNodoDestino = posibleNodoDesconectado.NodoDestino.Indice; bool laVíaTieneOtroNodoConLasMismasCoordenadas = false; #region Cambia las coordenadas del nodo desconectado si no son iguales. Coordenadas coordenadasNodo = posibleNodoDesconectado.PosibleNodoDesconectado.Coordenadas; Coordenadas coordenadasNodoDestino = posibleNodoDesconectado.NodoDestino.Coordenadas; if (coordenadasNodo != coordenadasNodoDestino) { // Antes the cambiar las coordenadas tenemos que asegurarnos que la vía no tiene // otro nodo con esas coordenadas. foreach (Coordenadas coordenadasNodoDeLaVía in vía.Coordenadas) { if (coordenadasNodoDeLaVía == coordenadasNodoDestino) { laVíaTieneOtroNodoConLasMismasCoordenadas = true; break; } } // Si la vía no tiene otro nodo con las mismas coordenadas // entonces lo conectamos. if (!laVíaTieneOtroNodoConLasMismasCoordenadas) { vía.CambiaCoordenadas( coordenadasNodoDestino, índice, razón); } } #endregion // Si la vía tiene otro nodo con las mismas coordenadas // entonces avisamos al usuario y no lo conectamos. if (laVíaTieneOtroNodoConLasMismasCoordenadas) { MessageBox.Show( string.Format("La Vía # {0} tiene otro nodo con las mismas coordenadas ({1}).\nEl nodo no se va a conectar.", vía.Número, coordenadasNodo), "Conecta Nodos Desconectados", MessageBoxButtons.OK, MessageBoxIcon.Warning); continue; } #region Asegurarse que ambos nodos son ruteables. Nodo nodo = vía.Nodos[índice]; Nodo nodoDestino = víaDestino.Nodos[índiceNodoDestino]; // Si el posible nodo desconectado es ruteable y el nodo destino // no es ruteable entonces usamos el identificador global del // posible nodo desconectado para el nodo destino. if (nodo.EsRuteable && !nodoDestino.EsRuteable) { // Añade el nodo ruteable en la vía destino. víaDestino.AñadeNodoRuteable( índiceNodoDestino, nodo.IdentificadorGlobal, razón); } // Si el nodo destino es ruteable entonces usamos el identificador // global del nodo destino para el nodo desconectado. else if (nodoDestino.EsRuteable) { // Añade el nodo ruteable en la vía. vía.AñadeNodoRuteable( índice, nodoDestino.IdentificadorGlobal, razón); } // Si ninguno de los nodos es ruteable entonces generamos un nuevo // índentificador global. else { // Genera un nuevo identificador global. int nuevoIdentificadorGlobal = GeneraNuevoIdentificadorGlobal(); // Añade el nodo ruteable a ambas vías. vía.AñadeNodoRuteable( índice, nuevoIdentificadorGlobal, razón); víaDestino.AñadeNodoRuteable( índiceNodoDestino, nuevoIdentificadorGlobal, razón); } #endregion } ManejadorDeMapa.RestableceEventos(); // Notifica la edición. miMenú.EnvíaEventoEditó(); #endregion }