S7Explorer/Models/BlockItem.cs

64 lines
2.0 KiB
C#

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();
}
}
}