From 2243c5ac9e3db3735e1113c3f76fffaaf597fc13 Mon Sep 17 00:00:00 2001 From: Miguel Date: Sat, 13 Apr 2024 00:55:02 +0200 Subject: [PATCH] Agregado Borrar ROI y testeado --- DatabaseManagerList.cs | 32 ++++++++++++++++++++++++++++-- ImagenEstado.cs | 45 +----------------------------------------- MainWindow.xaml.cs | 40 ++++++++++++++++++++++++++++++------- 3 files changed, 64 insertions(+), 53 deletions(-) diff --git a/DatabaseManagerList.cs b/DatabaseManagerList.cs index d523846..d1669d1 100644 --- a/DatabaseManagerList.cs +++ b/DatabaseManagerList.cs @@ -16,12 +16,18 @@ namespace ROIEditor private readonly string connectionString; private readonly string tableName; private List 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(); diff --git a/ImagenEstado.cs b/ImagenEstado.cs index ba19995..104e185 100644 --- a/ImagenEstado.cs +++ b/ImagenEstado.cs @@ -29,51 +29,8 @@ namespace ROIEditor 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(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); - } - } - } - } + } diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 899e5bb..5d4746b 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -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,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) { + ListaDeROIs.Remove(selectedRoi); + ActualizarListaROIsEnUI(); + } + } + + private void Guardar_ROI_Click(object sender, RoutedEventArgs e) + { + if (ListaROIs.SelectedItem is Roi selectedRoi) + { ActualizarDatosROI(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); - - var imagePath = EstadoImagenActual.Get().PathPlantillasPNG(); + ListaDeROIs.Load(NombreImagenEditando); + ActualizarListaROIsEnUI(); + + var imagePath = PathPlantillasPNG(); CargarImagenEnTrabajo(imagePath); CargarEstadoImagen();