Probado - Reducido parametros de ROI
This commit is contained in:
parent
a86a84bd9f
commit
24313ada54
|
@ -38,5 +38,24 @@ namespace ROIEditor
|
|||
{
|
||||
return Path.Combine(strDirectorioTrabajo, "roieditor.db");
|
||||
}
|
||||
|
||||
public string PNG_Folther_Path()
|
||||
{
|
||||
return strDirectorioTrabajo;
|
||||
}
|
||||
|
||||
public string Json_Extension_Path()
|
||||
{
|
||||
string jsonPath = Path.ChangeExtension(NombreImagenEditando, ".json");
|
||||
var imagePath = Path.Combine(strDirectorioTrabajo, jsonPath);
|
||||
return imagePath;
|
||||
}
|
||||
public string PNG_Extension_Path()
|
||||
{
|
||||
string jsonPath = Path.ChangeExtension(NombreImagenEditando, ".png");
|
||||
var imagePath = Path.Combine(PNG_Folther_Path(), jsonPath);
|
||||
return imagePath;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
using System.Text.Json;
|
||||
using Microsoft.Data.Sqlite;
|
||||
|
||||
namespace ROIEditor
|
||||
{
|
||||
public class ItemPersistente<T> where T : new()
|
||||
{
|
||||
private readonly string connectionString;
|
||||
private readonly string tableName;
|
||||
private T data; // Ahora 'data' es un objeto de tipo T
|
||||
public string Clave;
|
||||
|
||||
public ItemPersistente(string dbPath, string tableName)
|
||||
{
|
||||
connectionString = $"Data Source={dbPath}";
|
||||
this.tableName = tableName;
|
||||
InitializeDatabase();
|
||||
data = new T(); // Inicializa 'data' con el constructor por defecto de T
|
||||
}
|
||||
|
||||
private void InitializeDatabase()
|
||||
{
|
||||
using (var connection = new SqliteConnection(connectionString))
|
||||
{
|
||||
connection.Open();
|
||||
var command = connection.CreateCommand();
|
||||
command.CommandText = $@"
|
||||
CREATE TABLE IF NOT EXISTS {tableName} (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
Clave TEXT UNIQUE,
|
||||
SerializedData TEXT
|
||||
)";
|
||||
command.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
||||
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))
|
||||
{
|
||||
connection.Open();
|
||||
var command = connection.CreateCommand();
|
||||
command.CommandText = $@"
|
||||
INSERT INTO {tableName} (Clave, SerializedData)
|
||||
VALUES ($Clave, $SerializedData)
|
||||
ON CONFLICT(Clave) DO UPDATE SET
|
||||
SerializedData = excluded.SerializedData";
|
||||
command.Parameters.AddWithValue("$Clave", clave);
|
||||
command.Parameters.AddWithValue("$SerializedData", serializedData);
|
||||
command.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
var command = connection.CreateCommand();
|
||||
command.CommandText = $"SELECT SerializedData FROM {tableName} WHERE Clave = $Clave";
|
||||
command.Parameters.AddWithValue("$Clave", clave);
|
||||
using (var reader = command.ExecuteReader())
|
||||
{
|
||||
if (reader.Read())
|
||||
{
|
||||
string serializedData = reader.GetString(0);
|
||||
data = JsonSerializer.Deserialize<T>(serializedData);
|
||||
return true;
|
||||
}
|
||||
data = new();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public T Get()
|
||||
{
|
||||
return data;
|
||||
}
|
||||
|
||||
public void Set(T newData)
|
||||
{
|
||||
data = newData;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,12 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json;
|
||||
using Microsoft.Data.Sqlite;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace ROIEditor
|
||||
{
|
||||
|
@ -130,97 +123,6 @@ namespace ROIEditor
|
|||
}
|
||||
}
|
||||
|
||||
public class ItemPersistente<T> where T : new()
|
||||
{
|
||||
private readonly string connectionString;
|
||||
private readonly string tableName;
|
||||
private T data; // Ahora 'data' es un objeto de tipo T
|
||||
public string Clave;
|
||||
|
||||
public ItemPersistente(string dbPath, string tableName)
|
||||
{
|
||||
connectionString = $"Data Source={dbPath}";
|
||||
this.tableName = tableName;
|
||||
InitializeDatabase();
|
||||
data = new T(); // Inicializa 'data' con el constructor por defecto de T
|
||||
}
|
||||
|
||||
private void InitializeDatabase()
|
||||
{
|
||||
using (var connection = new SqliteConnection(connectionString))
|
||||
{
|
||||
connection.Open();
|
||||
var command = connection.CreateCommand();
|
||||
command.CommandText = $@"
|
||||
CREATE TABLE IF NOT EXISTS {tableName} (
|
||||
Id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
Clave TEXT UNIQUE,
|
||||
SerializedData TEXT
|
||||
)";
|
||||
command.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
||||
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))
|
||||
{
|
||||
connection.Open();
|
||||
var command = connection.CreateCommand();
|
||||
command.CommandText = $@"
|
||||
INSERT INTO {tableName} (Clave, SerializedData)
|
||||
VALUES ($Clave, $SerializedData)
|
||||
ON CONFLICT(Clave) DO UPDATE SET
|
||||
SerializedData = excluded.SerializedData";
|
||||
command.Parameters.AddWithValue("$Clave", clave);
|
||||
command.Parameters.AddWithValue("$SerializedData", serializedData);
|
||||
command.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
|
||||
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();
|
||||
var command = connection.CreateCommand();
|
||||
command.CommandText = $"SELECT SerializedData FROM {tableName} WHERE Clave = $Clave";
|
||||
command.Parameters.AddWithValue("$Clave", clave);
|
||||
using (var reader = command.ExecuteReader())
|
||||
{
|
||||
if (reader.Read())
|
||||
{
|
||||
string serializedData = reader.GetString(0);
|
||||
data = JsonSerializer.Deserialize<T>(serializedData);
|
||||
return true;
|
||||
}
|
||||
data = new();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public T Get()
|
||||
{
|
||||
return data;
|
||||
}
|
||||
|
||||
public void Set(T newData)
|
||||
{
|
||||
data = newData;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:ROIEditor"
|
||||
mc:Ignorable="d"
|
||||
Title="Editor de ROI" Height="1000" Width="1600">
|
||||
Title="Editor de ROI" Height="1000" Width="1600" HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||
<Window.Resources>
|
||||
<Style x:Key="TextBoxPlaceholderStyle" TargetType="TextBox">
|
||||
<Setter Property="Template">
|
||||
|
@ -43,12 +43,13 @@
|
|||
<RowDefinition Height="1*"/>
|
||||
<!-- Esta fila ocupará 2/3 del espacio disponible -->
|
||||
</Grid.RowDefinitions>
|
||||
<ListBox x:Name="ListaFunciones" Grid.Row="0" Margin="0,0,0,5">
|
||||
<!-- Aquí irán los elementos de la lista de funciones -->
|
||||
</ListBox>
|
||||
<ListBox x:Name="ListaImagenes" Grid.Row="1" Margin="0,5,0,0">
|
||||
<ListBox x:Name="ListaImagenes" Grid.Row="0" Margin="0,5,0,0">
|
||||
<!-- Aquí irán los elementos de la lista de imágenes -->
|
||||
</ListBox>
|
||||
<ListBox x:Name="ListaFunciones" Grid.Row="1" Margin="0,0,0,5">
|
||||
<!-- Aquí irán los elementos de la lista de funciones -->
|
||||
</ListBox>
|
||||
|
||||
|
||||
|
||||
</Grid>
|
||||
|
@ -77,26 +78,18 @@
|
|||
<Label Content="DX, DY:"/>
|
||||
<TextBox x:Name="ROI_dxdy" Margin="0,0,0,5"/>
|
||||
<!-- Nombre -->
|
||||
<Label Content="Nombre:"/>
|
||||
<TextBox x:Name="ROI_nombre" Margin="0,0,0,5"/>
|
||||
<Label Content="Imagen:"/>
|
||||
<ComboBox x:Name="ROI_imagen" Margin="0,0,0,5"/>
|
||||
<CheckBox x:Name="AllImages" Content="Aplicar a Todas"/>
|
||||
<!-- Código Numérico -->
|
||||
<Label Content="Código Numérico:"/>
|
||||
<TextBox x:Name="ROI_num" Margin="0,0,0,5"/>
|
||||
<!-- Descripción -->
|
||||
<Label Content="Descripción:"/>
|
||||
<TextBox x:Name="ROI_descripcion" Margin="0,0,0,5"/>
|
||||
<!-- Campo de texto 1 -->
|
||||
<Label Content="Campo de texto 1:"/>
|
||||
<TextBox x:Name="ROI_text1" Margin="0,0,0,5"/>
|
||||
<!-- Campo de texto 2 -->
|
||||
<Label Content="Campo de texto 2:"/>
|
||||
<TextBox x:Name="ROI_text2" Margin="0,0,0,5"/>
|
||||
<!-- Campo de texto 3 -->
|
||||
<Label Content="Campo de texto 3:"/>
|
||||
<TextBox x:Name="ROI_text3" Margin="0,0,0,5"/>
|
||||
<!-- Botones -->
|
||||
<Button x:Name="Guardar_ROI" Content="Guardar" Margin="0,0,0,5"/>
|
||||
<Button x:Name="Borrar_ROI" Content="Borrar ROI"/>
|
||||
|
||||
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
|
|
|
@ -63,12 +63,7 @@ namespace ROIEditor
|
|||
// Suscripción a los eventos LostFocus
|
||||
ROI_xy.LostFocus += GuardarCambiosRoi;
|
||||
ROI_dxdy.LostFocus += GuardarCambiosRoi;
|
||||
ROI_nombre.LostFocus += GuardarCambiosRoi;
|
||||
ROI_num.LostFocus += GuardarCambiosRoi;
|
||||
ROI_descripcion.LostFocus += GuardarCambiosRoi;
|
||||
ROI_text1.LostFocus += GuardarCambiosRoi;
|
||||
ROI_text2.LostFocus += GuardarCambiosRoi;
|
||||
ROI_text3.LostFocus += GuardarCambiosRoi;
|
||||
|
||||
// Se carga el ultimo estado
|
||||
Estado = EstadoTrabajo.CargarEstado();
|
||||
|
@ -157,12 +152,16 @@ namespace ROIEditor
|
|||
{
|
||||
ROI_xy.Text = $"{selectedRoi.X}, {selectedRoi.Y}";
|
||||
ROI_dxdy.Text = $"{selectedRoi.Width}, {selectedRoi.Height}";
|
||||
ROI_nombre.Text = selectedRoi.Nombre;
|
||||
ROI_num.Text = selectedRoi.CodigoNumerico.ToString();
|
||||
ROI_descripcion.Text = selectedRoi.Descripcion;
|
||||
ROI_text1.Text = selectedRoi.CampoTexto1;
|
||||
ROI_text2.Text = selectedRoi.CampoTexto2;
|
||||
ROI_text3.Text = selectedRoi.CampoTexto3;
|
||||
|
||||
for (int i = 0; i < ROI_imagen.Items.Count; i++)
|
||||
{
|
||||
if ((string)ROI_imagen.Items[i] == Estado.NombreImagenEditando)
|
||||
{
|
||||
ROI_imagen.SelectedIndex = i; // Selecciona el ítem que coincide con el último editado
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ActualizarDatosROI(Roi selectedRoi)
|
||||
|
@ -177,12 +176,7 @@ namespace ROIEditor
|
|||
selectedRoi.Y = int.Parse(xy[1].Trim());
|
||||
selectedRoi.Width = int.Parse(dxdy[0].Trim());
|
||||
selectedRoi.Height = int.Parse(dxdy[1].Trim());
|
||||
selectedRoi.Nombre = ROI_nombre.Text;
|
||||
selectedRoi.CodigoNumerico = int.TryParse(ROI_num.Text, out int codigo) ? codigo : 0;
|
||||
selectedRoi.Descripcion = ROI_descripcion.Text;
|
||||
selectedRoi.CampoTexto1 = ROI_text1.Text;
|
||||
selectedRoi.CampoTexto2 = ROI_text2.Text;
|
||||
selectedRoi.CampoTexto3 = ROI_text3.Text;
|
||||
|
||||
// Aquí podrías llamar a un método que realice el guardado específico, si es necesario
|
||||
// Por ejemplo, actualizar la visualización del ROI o guardar en un archivo JSON
|
||||
|
@ -209,15 +203,20 @@ namespace ROIEditor
|
|||
private void CargarImagenes()
|
||||
{
|
||||
// Asumiendo que las imágenes están en una carpeta "Imagenes" dentro del directorio de salida de tu aplicación
|
||||
string folderPath = Path.Combine(Directory.GetCurrentDirectory(), "Plantillas");
|
||||
string folderPath = Estado.PNG_Folther_Path();
|
||||
|
||||
if (Directory.Exists(folderPath))
|
||||
{
|
||||
var archivosImagen = Directory.GetFiles(folderPath, "*.png"); // Asumiendo que buscas archivos .png
|
||||
|
||||
ListaImagenes.Items.Clear();
|
||||
ROI_imagen.Items.Clear();
|
||||
|
||||
foreach (var archivo in archivosImagen)
|
||||
{
|
||||
// Aquí simplemente añadimos el nombre del archivo a la lista, pero podrías querer añadir un objeto más complejo
|
||||
ListaImagenes.Items.Add(Path.GetFileName(archivo));
|
||||
ROI_imagen.Items.Add(Path.GetFileName(archivo));
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -423,18 +422,7 @@ namespace ROIEditor
|
|||
Canvas.SetTop(imagenDeFondo, 0);
|
||||
|
||||
}
|
||||
public string PathPlantillasJson()
|
||||
{
|
||||
string jsonPath = Path.ChangeExtension(Estado.NombreImagenEditando, ".json");
|
||||
var imagePath = Path.Combine(Directory.GetCurrentDirectory(), "Plantillas", jsonPath);
|
||||
return imagePath;
|
||||
}
|
||||
public string PathPlantillasPNG()
|
||||
{
|
||||
string jsonPath = Path.ChangeExtension(Estado.NombreImagenEditando, ".png");
|
||||
var imagePath = Path.Combine(Directory.GetCurrentDirectory(), "Plantillas", jsonPath);
|
||||
return imagePath;
|
||||
}
|
||||
|
||||
|
||||
private void ListaImagenes_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
|
@ -448,8 +436,7 @@ namespace ROIEditor
|
|||
ListaDeROIs.Load(Estado.NombreImagenEditando);
|
||||
ActualizarListaROIsEnUI();
|
||||
|
||||
var imagePath = PathPlantillasPNG();
|
||||
CargarImagenEnTrabajo(imagePath);
|
||||
CargarImagenEnTrabajo(Estado.PNG_Extension_Path());
|
||||
|
||||
CargarEstadoImagen();
|
||||
}
|
||||
|
|
12
ROI.cs
12
ROI.cs
|
@ -21,13 +21,9 @@ namespace ROIEditor
|
|||
public int Y { get; set; }
|
||||
public int Width { get; set; }
|
||||
public int Height { get; set; }
|
||||
public string Nombre { get; set; }
|
||||
public string NombreImagen { get; set; }
|
||||
public int CodigoNumerico { get; set; }
|
||||
public string Descripcion { get; set; }
|
||||
public string CampoTexto1 { get; set; }
|
||||
public string CampoTexto2 { get; set; }
|
||||
public string CampoTexto3 { get; set; }
|
||||
|
||||
|
||||
// Constructor sin parámetros para facilitar la deserialización
|
||||
public Roi() { }
|
||||
|
@ -40,13 +36,9 @@ namespace ROIEditor
|
|||
Y = y;
|
||||
Width = width;
|
||||
Height = height;
|
||||
Nombre = nombre;
|
||||
NombreImagen = nombreImagen;
|
||||
CodigoNumerico = codigoNumerico;
|
||||
Descripcion = descripcion;
|
||||
CampoTexto1 = campoTexto1;
|
||||
CampoTexto2 = campoTexto2;
|
||||
CampoTexto3 = campoTexto3;
|
||||
|
||||
}
|
||||
public Roi(string nombreImagen, int x, int y, int width, int height)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue