/// <summary> /// Devuelve una copia de este objeto. /// </summary> public override object Clone() { Comentario clone = new Comentario( ManejadorDeMapa, Número, Texto); return clone; }
private static void Guarda(Comentario elComentario, StreamWriter elEscritor) { elEscritor.WriteLine(";" + elComentario.Texto); }
/// <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; }