Agregado Borrar ROI y testeado

This commit is contained in:
Miguel 2024-04-13 00:55:02 +02:00
parent 6c7140b73e
commit 2243c5ac9e
3 changed files with 64 additions and 53 deletions

View File

@ -16,12 +16,18 @@ namespace ROIEditor
private readonly string connectionString;
private readonly string tableName;
private List<T> data = new();
public string Clave;
public void Add(T item)
{
data.Add(item);
}
public void Remove(T item)
{
data.Remove(item);
}
public void Clear()
{
data.Clear();
@ -64,8 +70,15 @@ namespace ROIEditor
}
}
public void SaveData(string clave)
public void Save()
{
Save(Clave);
}
public void Save(string clave)
{
if (clave == null) return;
Clave = clave;
using (var connection = new SqliteConnection(connectionString))
{
@ -89,9 +102,13 @@ namespace ROIEditor
}
}
public void LoadData(string clave)
public void Load() { Load(Clave); }
public void Load(string clave)
{
data.Clear();
if (clave == null) return;
Clave = clave;
using (var connection = new SqliteConnection(connectionString))
{
@ -118,6 +135,7 @@ namespace ROIEditor
private readonly string connectionString;
private readonly string tableName;
private T data; // Ahora 'data' es un objeto de tipo T
public string Clave;
public DatabaseManagerItem(string dbPath, string tableName)
{
@ -143,8 +161,13 @@ namespace ROIEditor
}
}
public void Save() { Save(Clave); }
public void Save(string clave)
{
if (clave == null) return;
Clave = clave;
string serializedData = JsonSerializer.Serialize(data);
using (var connection = new SqliteConnection(connectionString))
{
@ -161,8 +184,13 @@ namespace ROIEditor
}
}
public bool Load() { return Load(Clave); }
public bool Load(string clave)
{
if (clave == null) return false;
Clave = clave;
using (var connection = new SqliteConnection(connectionString))
{
connection.Open();

View File

@ -30,50 +30,7 @@ namespace ROIEditor
}
public string PathPlantillasJson()
{
string jsonPath = Path.ChangeExtension(NombreImagen, ".json");
var imagePath = Path.Combine(Directory.GetCurrentDirectory(), "Plantillas", jsonPath);
return imagePath;
}
public string PathPlantillasPNG()
{
string jsonPath = Path.ChangeExtension(NombreImagen, ".png");
var imagePath = Path.Combine(Directory.GetCurrentDirectory(), "Plantillas", jsonPath);
return imagePath;
}
public void SalvarEstadoJSON()
{
// Cambia la extensión del archivo de imagen a .json
string jsonPath = PathPlantillasJson();
// Serializa el estado de la imagen a JSON
string json = JsonConvert.SerializeObject(NombreImagen, Formatting.Indented);
// Escribe el JSON en un archivo
File.WriteAllText(jsonPath, json);
}
public void CargarEstadoJSON()
{
string jsonPath = PathPlantillasJson();
if (File.Exists(jsonPath))
{
string json = File.ReadAllText(jsonPath);
ImagenEstado estadoCargado = JsonConvert.DeserializeObject<ImagenEstado>(json);
// Usar reflexión para copiar todas las propiedades
foreach (PropertyInfo prop in typeof(ImagenEstado).GetProperties())
{
if (prop.CanRead && prop.CanWrite)
{
prop.SetValue(this, prop.GetValue(estadoCargado, null), null);
}
}
}
}
}

View File

@ -58,6 +58,7 @@ namespace ROIEditor
// Agrega este manejador en el inicializador de tu ventana o control
Guardar_ROI.Click += Guardar_ROI_Click;
Borrar_ROI.Click += Borrar_ROI_Click;
// Suscripción a los eventos LostFocus
ROI_xy.LostFocus += GuardarCambiosRoi;
@ -71,6 +72,7 @@ namespace ROIEditor
}
private void ListaROIs_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (ListaROIs.SelectedItem is Roi selectedRoi)
@ -79,6 +81,15 @@ namespace ROIEditor
}
}
private void Borrar_ROI_Click(object sender, RoutedEventArgs e)
{
if (ListaROIs.SelectedItem is Roi selectedRoi)
{
ListaDeROIs.Remove(selectedRoi);
ActualizarListaROIsEnUI();
}
}
private void Guardar_ROI_Click(object sender, RoutedEventArgs e)
{
if (ListaROIs.SelectedItem is Roi selectedRoi)
@ -134,6 +145,8 @@ namespace ROIEditor
if (ListaROIs.SelectedItem is Roi selectedRoi)
{
ActualizarDatosROI(selectedRoi);
// Si se modificaron las coordenadas
DibujarROIsEnCanvas();
}
}
@ -244,13 +257,13 @@ namespace ROIEditor
_currentRect = null;
// Actualiza la interfaz de usuario con el nuevo ROI
ActualizarUIConROIs();
ActualizarListaROIsEnUI();
}
}
}
private void ActualizarUIConROIs()
private void ActualizarListaROIsEnUI()
{
// Aquí actualizas los controles de la interfaz de usuario que muestran los ROIs
// Por ejemplo, si tienes una ListBox para los ROIs, actualízala así:
@ -355,6 +368,18 @@ namespace ROIEditor
Canvas.SetTop(imagenDeFondo, 0);
}
public string PathPlantillasJson()
{
string jsonPath = Path.ChangeExtension(NombreImagenEditando, ".json");
var imagePath = Path.Combine(Directory.GetCurrentDirectory(), "Plantillas", jsonPath);
return imagePath;
}
public string PathPlantillasPNG()
{
string jsonPath = Path.ChangeExtension(NombreImagenEditando, ".png");
var imagePath = Path.Combine(Directory.GetCurrentDirectory(), "Plantillas", jsonPath);
return imagePath;
}
private void ListaImagenes_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
@ -366,13 +391,14 @@ namespace ROIEditor
}
if (ListaDeROIs.Count>0)
{
ListaDeROIs.SaveData(NombreImagenEditando);
ListaDeROIs.Save();
}
NombreImagenEditando = ListaImagenes.SelectedItem.ToString();
ListaDeROIs.LoadData(EstadoImagenActual.Get().NombreImagen);
ListaDeROIs.Load(NombreImagenEditando);
ActualizarListaROIsEnUI();
var imagePath = EstadoImagenActual.Get().PathPlantillasPNG();
var imagePath = PathPlantillasPNG();
CargarImagenEnTrabajo(imagePath);
CargarEstadoImagen();