logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Class LoggingProfileSinkStatusGui

    Extracted from CreateLoggingProfileWindow as a single-responsibility collaborator: the Configure Sinks step's Output Folder section and the Summary step's per-sink/profile status bullets are the sink status PRESENTATION concern, separate from the window's own step orchestration — mirroring Serenity.Localization.Installation.Settings.Editor.Builder.LocalizationTableSelectionGui's own extraction rationale. This is not a file-size fix: CreateLoggingProfileWindow was already over the project's ~600-line size-guidance trigger before this extraction and remains so after it — see the PR body for the one-line justification the project's size guidance calls for.

    Draws the one-line resolve status for a Logging sink singleton (Console/File/Structured) on the Configure Sinks step, and the identical text for the Summary step's bullet — both read the SAME cached SettingsAssetAuthoring.SettingsResolution<TSettings> passed in by CreateLoggingProfileWindow, so what a sink section says while configuring it can never disagree with what the Summary bullet says. Sinks stay singleton-resolved by TYPE (see LoggingProfileCreator's type doc) rather than adopting their own Serenity.Global.Infrastructure.Editor.SerenityWizardTargetAsset — a status line is all three need, plus the in-window choice Serenity.Logging.Infrastructure.Editor.Builder.LoggingSinkChoiceGui draws while two project-owned candidates conflict. The Done step is Serenity.Logging.Infrastructure.Editor.Builder.LoggingProfileDoneStepGui's.

    Inheritance
    object
    LoggingProfileSinkStatusGui
    Inherited Members
    object.ToString()
    object.Equals(object)
    object.Equals(object, object)
    object.ReferenceEquals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    Namespace: Serenity.Logging.Infrastructure.Editor.Builder
    Assembly: Serenity.UnityLogging.Infrastructure.Editor.dll
    Syntax
    public static class LoggingProfileSinkStatusGui

    Methods

    DescribeLine<TSettings>(SettingsResolution<TSettings>, string, string)

    The status line text alone, name-agnostic — for a caller (the Summary step's bullet, the Configure-step section under its own header) that supplies the asset name exactly once around it.

    Declaration
    public static string DescribeLine<TSettings>(SettingsAssetAuthoring.SettingsResolution<TSettings> resolution, string displayName, string plannedPath) where TSettings : Object
    Parameters
    Type Name Description
    SettingsResolution<TSettings> resolution
    string displayName
    string plannedPath
    Returns
    Type Description
    string
    Type Parameters
    Name Description
    TSettings

    DrawOutputFolderSection(ref SerenityFolderField, Action)

    The window's own "Output Folder" section, not Serenity.Global.Infrastructure.Editor.SerenityWizardTargetAssetGui.DrawOutputFolderSection(Serenity.Global.Infrastructure.Editor.SerenityWizardTargetAsset,Serenity.Global.Infrastructure.Editor.SerenityFolderField@,Serenity.Global.Infrastructure.Editor.SerenityWizardTargetAssetGui.Model,System.Action{System.String}): this folder also serves as every sink's/the backend's own create-new fallback, so it must stay enabled regardless of the profile target's mode — the shared helper disables it while updating in place. Invokes onChanged when the folder changes, so the caller can re-resolve its by-Id-in-folder target.

    Declaration
    public static void DrawOutputFolderSection(ref SerenityFolderField folder, Action onChanged)
    Parameters
    Type Name Description
    SerenityFolderField folder
    Action onChanged

    DrawSummaryBullet<TSettings>(bool, SettingsResolution<TSettings>, string, string)

    The Summary step's bullet for one sink: the disabled line while the sink is off, otherwise "bullet — name — DescribeLine" — the ONE place the name and the name-agnostic line are composed together, so the name appears exactly once.

    Declaration
    public static void DrawSummaryBullet<TSettings>(bool enabled, SettingsAssetAuthoring.SettingsResolution<TSettings> resolution, string displayName, string plannedPath) where TSettings : Object
    Parameters
    Type Name Description
    bool enabled
    SettingsResolution<TSettings> resolution
    string displayName
    string plannedPath
    Type Parameters
    Name Description
    TSettings

    Draw<TSettings>(SettingsResolution<TSettings>, string, string)

    The status line plus, when it applies, the package-content warning — a conflict between project-owned candidates is Serenity.Logging.Infrastructure.Editor.Builder.LoggingSinkChoiceGui's to draw, with the choice itself. Drawn directly under the sink's own section header (e.g. "Console Sink"), which is where the asset name comes from — the line itself never repeats it.

    Declaration
    public static void Draw<TSettings>(SettingsAssetAuthoring.SettingsResolution<TSettings> resolution, string displayName, string plannedPath) where TSettings : Object
    Parameters
    Type Name Description
    SettingsResolution<TSettings> resolution
    string displayName
    string plannedPath
    Type Parameters
    Name Description
    TSettings

    PlannedSinkPath(string, string)

    Where a new sink asset of this fallback name would be created under outputFolder — the same computation Create(Input) performs, so a status line can never disagree with it.

    Declaration
    public static string PlannedSinkPath(string outputFolder, string fileNameFallback)
    Parameters
    Type Name Description
    string outputFolder
    string fileNameFallback
    Returns
    Type Description
    string
    In this article
    © 2026 Serenity. All Rights Reserved