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;
|
|
|
|
|
|
|
|
|
|
namespace CtrEditor
|
|
|
|
|
{
|
|
|
|
|
public class MainViewModel : INotifyPropertyChanged
|
|
|
|
|
{
|
|
|
|
|
private double _zoomFactor = 1.0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public MainViewModel()
|
|
|
|
|
{
|
|
|
|
|
OpenWorkDirectoryCommand = new RelayCommand(OpenWorkDirectory);
|
|
|
|
|
LoadImageCommand = new RelayCommand(LoadImage);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public string DirectorioTrabajo
|
|
|
|
|
{
|
2024-05-02 11:26:45 -03:00
|
|
|
|
get => EstadoPersistente.Instance.DirectorioTrabajo;
|
2024-05-02 11:06:45 -03:00
|
|
|
|
set
|
|
|
|
|
{
|
2024-05-02 11:26:45 -03:00
|
|
|
|
if (value != null)
|
|
|
|
|
{
|
|
|
|
|
OnPropertyChanged(nameof(DirectorioTrabajo)); // Notificar el cambio de propiedad
|
|
|
|
|
EstadoPersistente.Instance.DirectorioTrabajo = value; // Actualizar el estado persistente
|
|
|
|
|
EstadoPersistente.Instance.GuardarEstado(); // Guardar el estado actualizado
|
|
|
|
|
}
|
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
|
|
|
|
|
{
|
|
|
|
|
DirectorioTrabajo = dialog.SelectedPath; // Actualizar la propiedad que también actualiza el estado persistente
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Ejemplo de propiedad para gestionar el UserControl activo
|
|
|
|
|
private UserControl _activeControl;
|
|
|
|
|
public UserControl ActiveControl
|
|
|
|
|
{
|
|
|
|
|
get => _activeControl;
|
|
|
|
|
set { _activeControl = value; OnPropertyChanged(); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Comando para cargar una imagen
|
|
|
|
|
public ICommand LoadImageCommand { get; private set; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void LoadImage()
|
|
|
|
|
{
|
|
|
|
|
// Implementar lógica de carga de imagen
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
|
|
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
|
|
|
|
{
|
|
|
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public double ZoomFactor
|
|
|
|
|
{
|
|
|
|
|
get => _zoomFactor;
|
|
|
|
|
set { _zoomFactor = value; OnPropertyChanged(); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private double _offsetX = 0;
|
|
|
|
|
private double _offsetY = 0;
|
|
|
|
|
public double OffsetX
|
|
|
|
|
{
|
|
|
|
|
get => _offsetX;
|
|
|
|
|
set { _offsetX = value; OnPropertyChanged(); }
|
|
|
|
|
}
|
|
|
|
|
public double OffsetY
|
|
|
|
|
{
|
|
|
|
|
get => _offsetY;
|
|
|
|
|
set { _offsetY = value; OnPropertyChanged(); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Implementación de INotifyPropertyChanged...
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|