ColumnVisibilitySettings
ColumnVisibilitySettings
#Overview
name: ColumnVisibilitySettings
The value of this variable can be defined or overridden in .ini config files. 10
.ini config files referencing this setting variable.
It is referenced in 7
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of ColumnVisibilitySettings is to manage and store the visibility state of columns in various Unreal Engine 5 editor interfaces, particularly in the Sequencer and Stage Monitor systems.
This setting variable is primarily used by two Unreal Engine subsystems:
- The Stage Monitoring system, which is part of the Virtual Production toolkit.
- The Sequencer system, which is part of the core editor functionality.
The value of this variable is set in different ways depending on the context:
- In the Stage Monitor system, it’s stored as a JSON-formatted string and is set via the CaptureColumnVisibilityState function.
- In the Sequencer system, it’s stored as an array of FColumnVisibilitySetting objects and is set via the SetOutlinerColumnVisibility function.
This variable interacts with other parts of the system, particularly:
- In the Stage Monitor, it’s used in conjunction with the SHeaderRow widget to restore column visibility states.
- In the Sequencer, it’s used to update the outliner view columns and is part of the USequencerSettings object.
Developers should be aware of the following when using this variable:
- The format of the stored data differs between systems (JSON string vs. array of objects).
- Changes to this variable are typically saved to config files, which means they persist between editor sessions.
- In the Sequencer, changes to this variable trigger a SaveConfig() call, which might have performance implications if changed frequently.
Best practices when using this variable include:
- Only update it when necessary, as it triggers config saves.
- Ensure that any manual modifications to the variable maintain the expected format for the system you’re working with.
- When adding new columns to interfaces that use this variable, make sure to update the corresponding logic for saving and restoring column visibility states.
- Use the provided getter and setter functions (like GetOutlinerColumnSettings and SetOutlinerColumnVisibility in the Sequencer system) instead of accessing the variable directly when possible.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:892, section: [NiagaraSequenceEditor SequencerSettings]
- INI Section:
NiagaraSequenceEditor SequencerSettings
- Raw value:
(ColumnName="Pin",bIsVisible=False)
- Is Array:
False
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:893, section: [NiagaraSequenceEditor SequencerSettings]
- INI Section:
NiagaraSequenceEditor SequencerSettings
- Raw value:
(ColumnName="Lock",bIsVisible=False)
- Is Array:
True
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:894, section: [NiagaraSequenceEditor SequencerSettings]
- INI Section:
NiagaraSequenceEditor SequencerSettings
- Raw value:
(ColumnName="Solo",bIsVisible=False)
- Is Array:
True
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:895, section: [NiagaraSequenceEditor SequencerSettings]
- INI Section:
NiagaraSequenceEditor SequencerSettings
- Raw value:
(ColumnName="Mute",bIsVisible=False)
- Is Array:
True
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:896, section: [NiagaraSequenceEditor SequencerSettings]
- INI Section:
NiagaraSequenceEditor SequencerSettings
- Raw value:
(ColumnName="Label",bIsVisible=True)
- Is Array:
True
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:897, section: [NiagaraSequenceEditor SequencerSettings]
- INI Section:
NiagaraSequenceEditor SequencerSettings
- Raw value:
(ColumnName="Edit",bIsVisible=True)
- Is Array:
True
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:898, section: [NiagaraSequenceEditor SequencerSettings]
- INI Section:
NiagaraSequenceEditor SequencerSettings
- Raw value:
(ColumnName="Add",bIsVisible=False)
- Is Array:
True
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:899, section: [NiagaraSequenceEditor SequencerSettings]
- INI Section:
NiagaraSequenceEditor SequencerSettings
- Raw value:
(ColumnName="Nav",bIsVisible=False)
- Is Array:
True
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:900, section: [NiagaraSequenceEditor SequencerSettings]
- INI Section:
NiagaraSequenceEditor SequencerSettings
- Raw value:
(ColumnName="KeyFrame",bIsVisible=False)
- Is Array:
True
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:901, section: [NiagaraSequenceEditor SequencerSettings]
- INI Section:
NiagaraSequenceEditor SequencerSettings
- Raw value:
(ColumnName="ColorPicker",bIsVisible=True)
- Is Array:
True
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Plugins/VirtualProduction/StageMonitoring/Source/StageMonitorEditor/Private/StageMonitorEditorSettings.h:22
Scope (from outer to inner):
file
class class UStageMonitorEditorSettings : public UObject
Source code excerpt:
/** Stores the state of the visibility settings in JSON format. */
UPROPERTY(Config)
FString ColumnVisibilitySettings;
};
#Loc: <Workspace>/Engine/Plugins/VirtualProduction/StageMonitoring/Source/StageMonitorEditor/Private/Widgets/SDataProviderListView.cpp:768
Scope (from outer to inner):
file
namespace UE::StageMonitor::Private
function void CaptureColumnVisibilityState
Source code excerpt:
UStageMonitorEditorSettings* Settings = GetMutableDefault<UStageMonitorEditorSettings>();
Settings->ColumnVisibilitySettings = Snapshot;
Settings->SaveConfig();
}
TOptional<TPair<FString, bool>> GetColumnData(const TSharedPtr<FJsonValue>& ColumnValue)
{
TSharedPtr<FJsonObject>* PossibleColumnObject;
#Loc: <Workspace>/Engine/Plugins/VirtualProduction/StageMonitoring/Source/StageMonitorEditor/Private/Widgets/SDataProviderListView.cpp:796
Scope (from outer to inner):
file
namespace UE::StageMonitor::Private
function void RestoreColumnVisibilityState
Source code excerpt:
const UStageMonitorEditorSettings* Settings = GetDefault<UStageMonitorEditorSettings>();
TSharedPtr<FJsonObject> JsonObject = MakeShared<FJsonObject>();
const TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(Settings->ColumnVisibilitySettings);
const bool bIsValid = FJsonSerializer::Deserialize(Reader, JsonObject);
if (!bIsValid)
{
return;
}
#Loc: <Workspace>/Engine/Source/Editor/Sequencer/Private/SSequencer.cpp:1089
Scope (from outer to inner):
file
function void SSequencer::UpdateOutlinerViewColumns
Source code excerpt:
// Save updated column list in settings
TArray<FColumnVisibilitySetting> ColumnVisibilitySettings;
for (FSequencerOutlinerColumnVisibility ColumnVisibility : OutlinerColumnVisibilities)
{
ColumnVisibilitySettings.Add(FColumnVisibilitySetting(ColumnVisibility.Column->GetColumnName(), ColumnVisibility.bIsColumnVisible));
}
GetSequencerSettings()->SetOutlinerColumnVisibility(ColumnVisibilitySettings);
// Filter out hidden columns to create a list of visible columns for the outliner views
TArray<TSharedPtr<IOutlinerColumn>> VisibleColumns;
for (FSequencerOutlinerColumnVisibility ColumnVisibility : OutlinerColumnVisibilities)
{
if (ColumnVisibility.bIsColumnVisible)
#Loc: <Workspace>/Engine/Source/Editor/Sequencer/Private/SequencerSettings.cpp:1032
Scope (from outer to inner):
file
function void USequencerSettings::SetOutlinerColumnVisibility
Source code excerpt:
void USequencerSettings::SetOutlinerColumnVisibility(const TArray<FColumnVisibilitySetting>& InColumnVisibilitySettings)
{
if (InColumnVisibilitySettings != ColumnVisibilitySettings)
{
ColumnVisibilitySettings = InColumnVisibilitySettings;
SaveConfig();
}
}
#Loc: <Workspace>/Engine/Source/Editor/Sequencer/Public/SequencerSettings.h:470
Scope (from outer to inner):
file
class class USequencerSettings : public UObject
function TArray<FColumnVisibilitySetting> GetOutlinerColumnSettings
Source code excerpt:
/** Get outliner column visibility in display order */
TArray<FColumnVisibilitySetting> GetOutlinerColumnSettings() const { return ColumnVisibilitySettings; }
/** Sets the visibility of outliner columns in display order */
void SetOutlinerColumnVisibility(const TArray<FColumnVisibilitySetting>& InColumnVisibilitySettings);
protected:
/** The auto change mode (auto-key, auto-track or none). */
#Loc: <Workspace>/Engine/Source/Editor/Sequencer/Public/SequencerSettings.h:739
Scope (from outer to inner):
file
class class USequencerSettings : public UObject
Source code excerpt:
/** List of all columns and their visibility, in the order to be displayed in the outliner view */
UPROPERTY(config, EditAnywhere, Category = General)
TArray<FColumnVisibilitySetting> ColumnVisibilitySettings;
FOnEvaluateSubSequencesInIsolationChanged OnEvaluateSubSequencesInIsolationChangedEvent;
FOnShowSelectedNodesOnlyChanged OnShowSelectedNodesOnlyChangedEvent;
FOnAllowEditsModeChanged OnAllowEditsModeChangedEvent;
FOnLoopStateChanged OnLoopStateChangedEvent;
FOnTimeDisplayFormatChanged OnTimeDisplayFormatChangedEvent;