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

View File

@ -29,51 +29,8 @@ namespace ROIEditor
NombreImagen = imageNameActual; NombreImagen = imageNameActual;
} }
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 // Agrega este manejador en el inicializador de tu ventana o control
Guardar_ROI.Click += Guardar_ROI_Click; Guardar_ROI.Click += Guardar_ROI_Click;
Borrar_ROI.Click += Borrar_ROI_Click;
// Suscripción a los eventos LostFocus // Suscripción a los eventos LostFocus
ROI_xy.LostFocus += GuardarCambiosRoi; ROI_xy.LostFocus += GuardarCambiosRoi;
@ -71,6 +72,7 @@ namespace ROIEditor
} }
private void ListaROIs_SelectionChanged(object sender, SelectionChangedEventArgs e) private void ListaROIs_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ {
if (ListaROIs.SelectedItem is Roi selectedRoi) if (ListaROIs.SelectedItem is Roi selectedRoi)
@ -79,10 +81,19 @@ namespace ROIEditor
} }
} }
private void Guardar_ROI_Click(object sender, RoutedEventArgs e) private void Borrar_ROI_Click(object sender, RoutedEventArgs e)
{ {
if (ListaROIs.SelectedItem is Roi selectedRoi) 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)
{
ActualizarDatosROI(selectedRoi); ActualizarDatosROI(selectedRoi);
} }
} }
@ -134,6 +145,8 @@ namespace ROIEditor
if (ListaROIs.SelectedItem is Roi selectedRoi) if (ListaROIs.SelectedItem is Roi selectedRoi)
{ {
ActualizarDatosROI(selectedRoi); ActualizarDatosROI(selectedRoi);
// Si se modificaron las coordenadas
DibujarROIsEnCanvas();
} }
} }
@ -244,13 +257,13 @@ namespace ROIEditor
_currentRect = null; _currentRect = null;
// Actualiza la interfaz de usuario con el nuevo ROI // 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 // 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í: // Por ejemplo, si tienes una ListBox para los ROIs, actualízala así:
@ -355,6 +368,18 @@ namespace ROIEditor
Canvas.SetTop(imagenDeFondo, 0); 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) private void ListaImagenes_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ {
@ -366,13 +391,14 @@ namespace ROIEditor
} }
if (ListaDeROIs.Count>0) if (ListaDeROIs.Count>0)
{ {
ListaDeROIs.SaveData(NombreImagenEditando); ListaDeROIs.Save();
} }
NombreImagenEditando = ListaImagenes.SelectedItem.ToString(); NombreImagenEditando = ListaImagenes.SelectedItem.ToString();
ListaDeROIs.LoadData(EstadoImagenActual.Get().NombreImagen); ListaDeROIs.Load(NombreImagenEditando);
ActualizarListaROIsEnUI();
var imagePath = EstadoImagenActual.Get().PathPlantillasPNG();
var imagePath = PathPlantillasPNG();
CargarImagenEnTrabajo(imagePath); CargarImagenEnTrabajo(imagePath);
CargarEstadoImagen(); CargarEstadoImagen();