예제 #1
0
        /// <summary>
        /// Devuelve una copia de este objeto.
        /// </summary>
        public override object Clone()
        {
            Comentario clone = new Comentario(
            ManejadorDeMapa,
            Número,
            Texto);

              return clone;
        }
예제 #2
0
 private static void Guarda(Comentario elComentario, StreamWriter elEscritor)
 {
     elEscritor.WriteLine(";" + elComentario.Texto);
 }
 private static void Guarda(Comentario elComentario, StreamWriter elEscritor)
 {
     elEscritor.WriteLine(";" + elComentario.Texto);
 }
예제 #4
0
        /// <summary>
        /// Guarda los cambios.
        /// </summary>
        /// <param name="elArchivo">El archivo a guardar.</param>
        /// <param name="elComentario">El Comentario para la primera línea del archivo.</param>
        public void GuardaEnFormatoPolish(string elArchivo, string elComentario)
        {
            #region Crea las diferentes listas de elementos a guardar.
            // Crea un comentario para ponerlo como el primer elemento de cada archivo.
            ElementoDelMapa        comentario       = new Comentario(this, 0, "; " + elComentario);
            List <ElementoDelMapa> elementosDelMapa = new List <ElementoDelMapa> {
                comentario
            };

            // Las listas especiales necesitan el encabezado para poder ser leídas correctamente
            // por programas como el cGPSmapper, GPSMapEdit, etc.
            ElementoDelMapa[] elementosComunes = new[] {
                comentario,
                Encabezado
            };
            List <ElementoDelMapa> elementosEliminados = new List <ElementoDelMapa> (elementosComunes);
            List <ElementoDelMapa> originalDeLosElementosModificados = new List <ElementoDelMapa>(elementosComunes);
            List <ElementoDelMapa> finalDeLosElementosModificados    = new List <ElementoDelMapa>(elementosComunes);
            List <ElementoDelMapa> elementosConErrores = new List <ElementoDelMapa>(elementosComunes);
            foreach (ElementoDelMapa elemento in misElementos)
            {
                if (!elemento.FuéEliminado)
                {
                    // Si el elemento no fué eliminado entonces se añade a las lista
                    // de elementos del mapa.
                    elementosDelMapa.Add(elemento);

                    // Si el elemento fué modificado entonces se añade a
                    // las listas de elementos modificados.
                    if (elemento.FuéModificado)
                    {
                        originalDeLosElementosModificados.Add(elemento.Original);
                        finalDeLosElementosModificados.Add(elemento);
                    }
                }
                else
                {
                    // Si el elemento fué eliminado entonces solo se añade a la
                    // lista de elemento eliminados.
                    elementosEliminados.Add(elemento);
                }
            }
            #endregion

            #region Añade los errores de los distinto manejadores.
            foreach (Pdi pdi in ManejadorDePdis.BuscadorDeErrores.Errores.Keys)
            {
                elementosConErrores.Add(pdi);
            }

            foreach (Vía vía in ManejadorDeVías.BuscadorDeErrores.Errores.Keys)
            {
                elementosConErrores.Add(vía);
            }
            #endregion

            #region Guarda los diferentes archivos.
            // Guarda el mapa nuevo.
            new EscritorDeFormatoPolish(elArchivo, elementosDelMapa, EscuchadorDeEstatus);

            // Crea el nobre del archivo base.
            string directorio  = Path.GetFullPath(Path.GetDirectoryName(elArchivo));
            string nombre      = Path.GetFileNameWithoutExtension(elArchivo);
            string archivoBase = Path.Combine(directorio, nombre);

            // Guarda los elementos eliminados.
            if (elementosEliminados.Count > elementosComunes.Length)
            {
                string archivo = archivoBase + ".Eliminados.mp";
                new EscritorDeFormatoPolish(archivo, elementosEliminados, EscuchadorDeEstatus);
            }

            // Guarda los originales de los elementos modificados.
            if (originalDeLosElementosModificados.Count > elementosComunes.Length)
            {
                string archivo = archivoBase + ".Modificados.Originales.mp";
                new EscritorDeFormatoPolish(archivo, originalDeLosElementosModificados, EscuchadorDeEstatus);
            }

            // Guarda los finales de los elementos modificados.
            if (finalDeLosElementosModificados.Count > elementosComunes.Length)
            {
                string archivo = archivoBase + ".Modificados.Finales.mp";
                new EscritorDeFormatoPolish(archivo, finalDeLosElementosModificados, EscuchadorDeEstatus);
            }

            // Guarda los finales de los elementos modificados.
            if (elementosConErrores.Count > elementosComunes.Length)
            {
                string archivo = archivoBase + ".Errores.mp";
                new EscritorDeFormatoPolish(archivo, elementosConErrores, EscuchadorDeEstatus);
            }
            #endregion

            // Actualiza el archivo activo.
            Archivo = elArchivo;
            EscuchadorDeEstatus.ArchivoActivo = elArchivo;
        }