using Inspectron.Settings; using Inspectron.Settings.Attributes; using System.ComponentModel; using System.Security.Cryptography.X509Certificates; using VisionBuilder.UI.Common; namespace Lindt.Colorballs.Duo.Utils; public class VisionBuilderRingbufferSettings : ISettings { public VisionBuilderRingbufferSettings(string cameraName) { CameraName = cameraName; } public string CameraName { get; } public int MaxBad { get; set; } = 10000; public int MaxGood { get; set; } = 100; [SettingDescription( @" Specifies directory, in which MaxBad and MaxGood are applied. You can use the following system variables: $RECIPE_NAME - name of the current recipe $DEFECT_NAME - name of the current defect(for bad images) $CAMERA_NAME - name of the camera $HOUR - hour of the image $MINUTE - minute of the image $SECOND - second of the image $MS - milliseconds of the image $DAY - day of the image $MONTH - month of the image $YEAR - year of the image $SS_HOUR - hour of the session start $SS_MINUTE - minute of the session start $SS_SECOND - second of the session start $SS_DAY - day of the session start $SS_MONTH - month of the session start $SS_YEAR - year of the session start " )] [SettingPreview(typeof(VisionBuilderRingbufferSettings), nameof(ImagesPathTemplatePreview))] public string Root { get; set; } = @"..\Data\Ringbuffer\$SS_MONTH $SS_YEAR"; [SettingDescriptionAttribute("Specifies directory, relative to the Root")] [SettingPreview(typeof(VisionBuilderRingbufferSettings), nameof(ImagesPathTemplatePreview))] public string GoodImagesPathTemplate { get; set; } = @"\$RECIPE_NAME"; [SettingDescriptionAttribute("Specifies directory, relative to the Root")] [SettingPreview(typeof(VisionBuilderRingbufferSettings),nameof(ImagesPathTemplatePreview))] public string BadImagesPathTemplate { get; set; } = @"\$RECIPE_NAME\$DEFECT_NAME"; [SettingPreview(typeof(VisionBuilderRingbufferSettings), nameof(ImagesPathTemplatePreview))] public string FilenameTemplate { get; set; } = "$YEAR-$MONTH-$DAY $HOUR-$MINUTE-$SECOND $MS"; public void RegisterSettings(InspectronSettings settings) { settings.RegisterSimple(this, () => this.MaxGood, CameraName+"/Ringbuffer", nameof(MaxGood)); settings.RegisterSimple(this, () => this.MaxBad, CameraName + "/Ringbuffer", nameof(MaxBad)); settings.RegisterSimple(this, () => this.Root, CameraName + "/Ringbuffer", nameof(Root)); settings.RegisterSimple(this, () => this.GoodImagesPathTemplate, CameraName + "/Ringbuffer", nameof(GoodImagesPathTemplate)); settings.RegisterSimple(this, () => this.BadImagesPathTemplate, CameraName + "/Ringbuffer", nameof(BadImagesPathTemplate)); settings.RegisterSimple(this, () => this.FilenameTemplate, CameraName + "/Ringbuffer", nameof(FilenameTemplate)); } public static string ImagesPathTemplatePreview(object template) { return PathSettingsUtils.ConvertVariables((string) template, DateTime.Now, DateTime.Now, "my recipe", "my defect", "my camera"); } }