205 lines
5.2 KiB
C#
205 lines
5.2 KiB
C#
|
using System;
|
|||
|
using System.ComponentModel;
|
|||
|
using System.IO;
|
|||
|
using System.Runtime.CompilerServices;
|
|||
|
using System.Windows;
|
|||
|
using System.Xml.Serialization;
|
|||
|
|
|||
|
namespace CodeMerger
|
|||
|
{
|
|||
|
public class Settings : INotifyPropertyChanged
|
|||
|
{
|
|||
|
private static readonly string SettingsFilePath = Path.Combine(
|
|||
|
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
|
|||
|
"CodeMerger",
|
|||
|
"settings.xml");
|
|||
|
|
|||
|
#region Propiedades de Ventana
|
|||
|
|
|||
|
private double _windowWidth = 1200;
|
|||
|
private double _windowHeight = 800;
|
|||
|
private double _windowLeft = 100;
|
|||
|
private double _windowTop = 100;
|
|||
|
private WindowState _windowState = WindowState.Normal;
|
|||
|
|
|||
|
public double WindowWidth
|
|||
|
{
|
|||
|
get => _windowWidth;
|
|||
|
set
|
|||
|
{
|
|||
|
if (_windowWidth != value)
|
|||
|
{
|
|||
|
_windowWidth = value;
|
|||
|
OnPropertyChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public double WindowHeight
|
|||
|
{
|
|||
|
get => _windowHeight;
|
|||
|
set
|
|||
|
{
|
|||
|
if (_windowHeight != value)
|
|||
|
{
|
|||
|
_windowHeight = value;
|
|||
|
OnPropertyChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public double WindowLeft
|
|||
|
{
|
|||
|
get => _windowLeft;
|
|||
|
set
|
|||
|
{
|
|||
|
if (_windowLeft != value)
|
|||
|
{
|
|||
|
_windowLeft = value;
|
|||
|
OnPropertyChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public double WindowTop
|
|||
|
{
|
|||
|
get => _windowTop;
|
|||
|
set
|
|||
|
{
|
|||
|
if (_windowTop != value)
|
|||
|
{
|
|||
|
_windowTop = value;
|
|||
|
OnPropertyChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public WindowState WindowState
|
|||
|
{
|
|||
|
get => _windowState;
|
|||
|
set
|
|||
|
{
|
|||
|
if (_windowState != value)
|
|||
|
{
|
|||
|
_windowState = value;
|
|||
|
OnPropertyChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Tamaños de Columnas
|
|||
|
|
|||
|
private double _firstColumnWidth = 400;
|
|||
|
private double _secondColumnWidth = 400;
|
|||
|
private double _thirdColumnWidth = 400;
|
|||
|
|
|||
|
public double FirstColumnWidth
|
|||
|
{
|
|||
|
get => _firstColumnWidth;
|
|||
|
set
|
|||
|
{
|
|||
|
if (_firstColumnWidth != value)
|
|||
|
{
|
|||
|
_firstColumnWidth = value;
|
|||
|
OnPropertyChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public double SecondColumnWidth
|
|||
|
{
|
|||
|
get => _secondColumnWidth;
|
|||
|
set
|
|||
|
{
|
|||
|
if (_secondColumnWidth != value)
|
|||
|
{
|
|||
|
_secondColumnWidth = value;
|
|||
|
OnPropertyChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public double ThirdColumnWidth
|
|||
|
{
|
|||
|
get => _thirdColumnWidth;
|
|||
|
set
|
|||
|
{
|
|||
|
if (_thirdColumnWidth != value)
|
|||
|
{
|
|||
|
_thirdColumnWidth = value;
|
|||
|
OnPropertyChanged();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region Carga y Guardado
|
|||
|
|
|||
|
public static Settings Load()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
// Asegurarse de que el directorio existe
|
|||
|
string directory = Path.GetDirectoryName(SettingsFilePath);
|
|||
|
if (!Directory.Exists(directory))
|
|||
|
{
|
|||
|
Directory.CreateDirectory(directory);
|
|||
|
}
|
|||
|
|
|||
|
// Cargar configuración si existe
|
|||
|
if (File.Exists(SettingsFilePath))
|
|||
|
{
|
|||
|
using (var stream = File.OpenRead(SettingsFilePath))
|
|||
|
{
|
|||
|
var serializer = new XmlSerializer(typeof(Settings));
|
|||
|
return (Settings)serializer.Deserialize(stream);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception)
|
|||
|
{
|
|||
|
// En caso de error, devolver configuración por defecto
|
|||
|
}
|
|||
|
|
|||
|
return new Settings();
|
|||
|
}
|
|||
|
|
|||
|
public void Save()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
string directory = Path.GetDirectoryName(SettingsFilePath);
|
|||
|
if (!Directory.Exists(directory))
|
|||
|
{
|
|||
|
Directory.CreateDirectory(directory);
|
|||
|
}
|
|||
|
|
|||
|
using (var stream = File.Create(SettingsFilePath))
|
|||
|
{
|
|||
|
var serializer = new XmlSerializer(typeof(Settings));
|
|||
|
serializer.Serialize(stream, this);
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception)
|
|||
|
{
|
|||
|
// Manejar error de guardado
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
#region INotifyPropertyChanged
|
|||
|
|
|||
|
public event PropertyChangedEventHandler PropertyChanged;
|
|||
|
|
|||
|
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
|
|||
|
{
|
|||
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|||
|
}
|
|||
|
|
|||
|
#endregion
|
|||
|
}
|
|||
|
}
|