using System.Text; using DotNetSiemensPLCToolBoxLibrary.DataTypes.Blocks; using DotNetSiemensPLCToolBoxLibrary.DataTypes.Blocks.Step7V5; namespace S7Explorer.Models { public class BlockItem : ProjectItem { public ProjectBlockInfo? BlockInfo { get; set; } public S7Block? BlockData { get; set; } public string BlockType { get; set; } = string.Empty; public int BlockNumber { get; set; } public string BlockComment { get; set; } = string.Empty; public string BlockContent { get; set; } = string.Empty; // Override to provide block-specific object for property grid public override object? GetDetailsObject() { return BlockData; } // Override to provide the appropriate icon public override string GetIcon() { return BlockType switch { "OB" => "OB", "FC" => "FC", "FB" => "FB", "DB" => "DB", "UDT" => "UDT", "SFC" => "SFC", "SFB" => "SFB", _ => "Block" }; } // Generate export text for documentation public override string GetExportText() { StringBuilder sb = new StringBuilder(); sb.AppendLine($"Block: {Name}"); sb.AppendLine($"Type: {BlockType}{BlockNumber}"); if (!string.IsNullOrEmpty(BlockComment)) sb.AppendLine($"Comment: {BlockComment}"); if (BlockData != null) { sb.AppendLine($"Author: {BlockData.Author}"); sb.AppendLine($"Family: {BlockData.Family}"); sb.AppendLine($"Version: {BlockData.Version}"); sb.AppendLine($"Last Modified: {BlockData.LastCodeChange}"); } sb.AppendLine(); sb.AppendLine("// Block Content"); sb.AppendLine(BlockContent); sb.AppendLine(); return sb.ToString(); } } }