using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CtrEditor { public class DatosDeTrabajo { public Dictionary Imagenes { get; private set; } private MainViewModel _mainViewModel; public DatosDeTrabajo() { Imagenes = new Dictionary(); CargarImagenes(); // Inicializar la carga de imágenes basada en el directorio persistente } public void SetMainViewModel(MainViewModel mainViewModel) { _mainViewModel = mainViewModel; } public string ObtenerPathImagenConExtension(string key, string extension) { if (Imagenes.TryGetValue(key, out string imagePath)) { string jsonPath = Path.ChangeExtension(imagePath, extension); return jsonPath; } return null; } public string? ObtenerPathAllPages(string extension) { if (!string.IsNullOrEmpty(EstadoPersistente.Instance.directorio)) return Path.Combine(EstadoPersistente.Instance.directorio, "AllPages" + extension); return null; } public void CargarImagenes() { Imagenes.Clear(); string folderPath = EstadoPersistente.Instance.directorio; // Usar directamente desde el Singleton if (Directory.Exists(folderPath)) { var archivosImagen = Directory.GetFiles(folderPath, "*.png"); // Ajustar para otros formatos si es necesario foreach (var archivo in archivosImagen) { var nombreArchivo = Path.GetFileName(archivo); if (!Imagenes.ContainsKey(nombreArchivo)) { Imagenes[nombreArchivo] = archivo; } } // Cargar datos de imágenes existentes desde archivos JSON if (_mainViewModel != null) { CargarDatosImagenesExistentes(); } } } private void CargarDatosImagenesExistentes() { foreach (var imageName in Imagenes.Keys) { string jsonPath = ObtenerPathImagenConExtension(imageName, ".json"); if (!string.IsNullOrEmpty(jsonPath) && File.Exists(jsonPath)) { try { // Solo cargamos los datos de imagen si existe el archivo JSON // El StateSerializer se encargará de cargar los datos completos _mainViewModel.GetOrCreateImageData(imageName); } catch (Exception ex) { // Log del error pero no fallar la carga completa System.Diagnostics.Debug.WriteLine($"Error al pre-cargar datos de imagen {imageName}: {ex.Message}"); } } } } } }