2024-05-02 11:06:45 -03:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Runtime.CompilerServices;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Windows.Controls;
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
using Ookii.Dialogs.Wpf;
|
|
|
|
|
using System.Windows.Input;
|
2024-05-03 03:58:21 -03:00
|
|
|
|
using System.Collections.ObjectModel;
|
|
|
|
|
using System.Windows.Media;
|
|
|
|
|
using System.Windows.Media.Imaging;
|
2024-05-02 11:06:45 -03:00
|
|
|
|
|
|
|
|
|
namespace CtrEditor
|
|
|
|
|
{
|
|
|
|
|
public class MainViewModel : INotifyPropertyChanged
|
|
|
|
|
{
|
2024-05-03 03:58:21 -03:00
|
|
|
|
public DatosDeTrabajo datosDeTrabajo { get; }
|
|
|
|
|
public ObservableCollection<string> listaImagenes { get; private set; } // Publicación de las claves del diccionario
|
|
|
|
|
private string _selectedImage;
|
2024-05-02 11:06:45 -03:00
|
|
|
|
|
2024-05-03 03:58:21 -03:00
|
|
|
|
// Evento que se dispara cuando se selecciona una nueva imagen
|
|
|
|
|
public event EventHandler<string> ImageSelected;
|
2024-05-02 11:06:45 -03:00
|
|
|
|
|
|
|
|
|
public MainViewModel()
|
|
|
|
|
{
|
|
|
|
|
OpenWorkDirectoryCommand = new RelayCommand(OpenWorkDirectory);
|
2024-05-03 03:58:21 -03:00
|
|
|
|
datosDeTrabajo = new DatosDeTrabajo();
|
|
|
|
|
listaImagenes = new ObservableCollection<string>(datosDeTrabajo.Imagenes.Keys);
|
|
|
|
|
directorioTrabajo = EstadoPersistente.Instance.directorio;
|
2024-05-02 11:06:45 -03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2024-05-03 03:58:21 -03:00
|
|
|
|
public string directorioTrabajo
|
2024-05-02 11:06:45 -03:00
|
|
|
|
{
|
2024-05-03 03:58:21 -03:00
|
|
|
|
get => EstadoPersistente.Instance.directorio;
|
2024-05-02 11:06:45 -03:00
|
|
|
|
set
|
|
|
|
|
{
|
2024-05-02 11:26:45 -03:00
|
|
|
|
if (value != null)
|
|
|
|
|
{
|
2024-05-03 03:58:21 -03:00
|
|
|
|
EstadoPersistente.Instance.directorio = value; // Actualizar el estado persistente
|
2024-05-02 11:26:45 -03:00
|
|
|
|
EstadoPersistente.Instance.GuardarEstado(); // Guardar el estado actualizado
|
2024-05-03 03:58:21 -03:00
|
|
|
|
datosDeTrabajo.CargarImagenes();
|
|
|
|
|
listaImagenes = new ObservableCollection<string>(datosDeTrabajo.Imagenes.Keys); // Actualizar claves
|
|
|
|
|
OnPropertyChanged(nameof(directorioTrabajo)); // Notificar el cambio de propiedad
|
|
|
|
|
OnPropertyChanged(nameof(listaImagenes)); // Notificar que la lista de imágenes ha cambiado
|
2024-05-02 11:26:45 -03:00
|
|
|
|
}
|
2024-05-02 11:06:45 -03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-05-03 03:58:21 -03:00
|
|
|
|
public string SelectedImage
|
|
|
|
|
{
|
|
|
|
|
get => _selectedImage;
|
|
|
|
|
set
|
|
|
|
|
{
|
|
|
|
|
if (_selectedImage != value)
|
|
|
|
|
{
|
|
|
|
|
_selectedImage = value;
|
|
|
|
|
OnPropertyChanged(nameof(SelectedImage));
|
|
|
|
|
ImageSelected?.Invoke(this, datosDeTrabajo.Imagenes[value]); // Dispara el evento con la nueva ruta de imagen
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2024-05-02 11:06:45 -03:00
|
|
|
|
public ICommand OpenWorkDirectoryCommand { get; }
|
|
|
|
|
|
|
|
|
|
private void OpenWorkDirectory()
|
|
|
|
|
{
|
|
|
|
|
var dialog = new VistaFolderBrowserDialog();
|
|
|
|
|
if (dialog.ShowDialog() == true) // Mostrar el diálogo y comprobar si el resultado es positivo
|
|
|
|
|
{
|
2024-05-03 03:58:21 -03:00
|
|
|
|
directorioTrabajo = dialog.SelectedPath; // Actualizar la propiedad que también actualiza el estado persistente
|
2024-05-02 11:06:45 -03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2024-05-03 03:58:21 -03:00
|
|
|
|
// Implementación de INotifyPropertyChanged...
|
2024-05-02 11:06:45 -03:00
|
|
|
|
|
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
|
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
|
|
|
|
{
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|