using CtrEditor.Siemens; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using CommunityToolkit.Mvvm.ComponentModel; using Newtonsoft.Json.Linq; namespace CtrEditor.ObjetosSim { /// /// Interaction logic for ucBoolTag.xaml /// /// public partial class osBoolTag : osBase, IosBase { // Otros datos y métodos relevantes para la simulación public static string NombreClase() { return "Bool Tag"; } private string nombre = NombreClase(); public override string Nombre { get => nombre; set => SetProperty(ref nombre, value); } [ObservableProperty] private Brush color_oculto; [ObservableProperty] public bool estado; partial void OnEstadoChanged(bool value) { EscribirBitTag(Tag, value); if (value) Color_oculto = Brushes.LightGreen; else Color_oculto = Brushes.Transparent; } [ObservableProperty] public float tamano; [ObservableProperty] [NotifyPropertyChangedFor(nameof(Estado))] public string tag; [ObservableProperty] public string descripcion; public osBoolTag() { Tamano = 0.30f; tag = "%M50.0"; Descripcion = "Nombre del Tag"; } public override void UpdatePLCPrimerCiclo() { // Escribimos el valor actual al iniciar la conexion OnEstadoChanged(Estado); } public override void ucLoaded() { // El UserControl ya se ha cargado y podemos obtener las coordenadas para // crear el objeto de simulacion ActualizarLeftTop(); } } public partial class ucBoolTag : UserControl, IDataContainer { public osBase? Datos { get; set; } public ucBoolTag() { InitializeComponent(); this.Loaded += OnLoaded; this.Unloaded += OnUnloaded; } private void OnLoaded(object sender, RoutedEventArgs e) { Datos?.ucLoaded(); } private void OnUnloaded(object sender, RoutedEventArgs e) { Datos?.ucUnLoaded(); } public void Resize(float width, float height) { } public void Move(float LeftPixels, float TopPixels) { if (Datos != null) { Datos.Left = PixelToMeter.Instance.calc.PixelsToMeters(LeftPixels); Datos.Top = PixelToMeter.Instance.calc.PixelsToMeters(TopPixels); } } public void Rotate(float Angle) { } public void Highlight(bool State) { } public int ZIndex() { return 10; } } }