SmartTableSettings.h

Project Settings: the palette and the sizes every table starts from.

Source/SmartTables/Public/SmartTableSettings.h

The defaults every Smart Table in this project starts from. Project Settings, Plugins, Smart Tables.

Numbers a project decides once, instead of on every table dropped into a screen. Three of the four are copied onto a table by its constructor, and the Details panel overrides them from there. The cap on rows measured has no table field at all, and is read here on every size to content pass.

The colours sit a layer lower: this palette, then the style class defaults built from it, then one table's panel, then a style asset, each winning over the last. An edit here sweeps the open editor at once and never touches a field already authored, while a packaged game runs no sweep at all.

Class
USmartTableSettings
Extends
UDeveloperSettings
Members
18
Panel fields
15

Public functions 3

GetContainerNameoverride
virtual FName GetContainerName() const override
GetCategoryNameoverride
virtual FName GetCategoryName() const override
PostEditChangePropertyoverrideeditor only
virtual void PostEditChangeProperty( FPropertyChangedEvent & PropertyChangedEvent ) override

Puts a changed palette into everything that already read it: both class defaults first, then every style asset and every table still following its archetype.

See Style/SmartTableStyleRefresh.h

Public variables 15

Columns 4

Resize Grip WidthResizeGripWidthpanel
UPROPERTY( EditAnywhere, Config, Category = "Columns", meta = ( ToolTip = "How much of a column's right edge counts as the resize grip, in pixels. It draws nothing, and a wider grip takes more of the header away from the column drag.", ClampMin = "2.0" ) ) float ResizeGripWidth = 14.0f
Minimum
2.0
Config
Read from an ini.

How much of the right edge of a column counts as the resize grip, in pixels. It draws nothing.

The engine falls back to five pixels when a header row has no splitter handle, and five is hard to hit. A miss lands on the rest of the header cell, where a left press sorts on release and a left drag reorders the column. The cell tests its own edge against this number and never asks the engine.

Min Column WidthMinColumnWidthpanel
UPROPERTY( EditAnywhere, Config, Category = "Columns", meta = ( ClampMin = "1.0" ) ) float MinColumnWidth = 24.0f
Minimum
1.0
Config
Read from an ini.

How narrow a column may go, in pixels. It is the floor for every width pass, the drag and the fill share and the size to content alike.

Max Auto Size Column WidthMaxAutoSizeColumnWidthpanel
UPROPERTY( EditAnywhere, Config, Category = "Columns", meta = ( ToolTip = "The widest a size to content column may go, in pixels. Zero lets it fit the longest value, no matter how wide that turns out to be.", ClampMin = "0.0" ) ) float MaxAutoSizeColumnWidth = 600.0f
Minimum
0.0
Config
Read from an ini.

The widest a size to content column may go, in pixels. Zero lets it fit the longest value.

The pass fits the longest value in the column, so one row of a thousand characters asks for several thousand pixels. That is a column wider than the screen, for one row, with every other column pushed off the side. The cap stops it there, and whatever does not fit is clipped.

Max Rows Measured For Auto SizeMaxRowsMeasuredForAutoSizepanel
UPROPERTY( EditAnywhere, Config, Category = "Columns", meta = ( ToolTip = "How many rows a size to content pass measures, counting from the top. Anything longer further down stays clipped.", ClampMin = "1" ) ) int32 MaxRowsMeasuredForAutoSize = 5000
Minimum
1
Config
Read from an ini.

How many rows a size to content pass measures, counting from the top of the drawn order.

The data is what it reads, never the rows on screen: a table scrolled to the top would otherwise fit its column to one screenful of values. Measuring every row of a very large model would hold the game thread long enough to look like the editor had stopped.

Palette 11

Header Surface ColorHeaderSurfaceColorpanel
UPROPERTY( EditAnywhere, Config, Category = "Palette" ) FLinearColor HeaderSurfaceColor = SmartTable::Srgb( 38, 42, 50 )
Config
Read from an ini.

The header background, and every column on it that the pointer is not over.

Header Hovered ColorHeaderHoveredColorpanel
UPROPERTY( EditAnywhere, Config, Category = "Palette" ) FLinearColor HeaderHoveredColor = SmartTable::Srgb( 50, 55, 65 )
Config
Read from an ini.

A header column under the pointer.

Text ColorTextColorpanel
UPROPERTY( EditAnywhere, Config, Category = "Palette" ) FLinearColor TextColor = SmartTable::Srgb( 200, 205, 212 )
Config
Read from an ini.

The main text: cells, row text, and the tick on a checked menu entry.

Muted Text ColorMutedTextColorpanel
UPROPERTY( EditAnywhere, Config, Category = "Palette" ) FLinearColor MutedTextColor = SmartTable::Srgb( 108, 115, 125 )
Config
Read from an ini.

The row numbers and the two empty message lines. Dimmer than the main text by default, and both move together when it changes.

Row Hovered ColorRowHoveredColorpanel
UPROPERTY( EditAnywhere, Config, Category = "Palette" ) FLinearColor RowHoveredColor = SmartTable::Srgb( 44, 48, 56 )
Config
Read from an ini.

A row under the pointer but not selected.

Selection ColorSelectionColorpanel
UPROPERTY( EditAnywhere, Config, Category = "Palette", meta = ( ToolTip = "A selected row, and a menu entry under the pointer. Selection Hovered Color takes over when a selected row is also under the pointer." ) ) FLinearColor SelectionColor = SmartTable::Srgb( 44, 92, 130 )
Config
Read from an ini.

A selected row, and a menu entry under the pointer. One colour across the two, so a table and the menus it opens mark a place the same way.

Selection Hovered ColorSelectionHoveredColorpanel
UPROPERTY( EditAnywhere, Config, Category = "Palette" ) FLinearColor SelectionHoveredColor = SmartTable::Srgb( 54, 108, 150 )
Config
Read from an ini.

A selected row under the pointer, and a menu entry being pressed. Lighter than Selection Color by default, and nothing keeps the two in step.

Separator ColorSeparatorColorpanel
UPROPERTY( EditAnywhere, Config, Category = "Palette" ) FLinearColor SeparatorColor = SmartTable::Srgb( 58, 64, 74 )
Config
Read from an ini.

The line under the header, and the line between two menu groups.

Column Divider ColorColumnDividerColorpanel
UPROPERTY( EditAnywhere, Config, Category = "Palette" ) FLinearColor ColumnDividerColor = SmartTable::Srgb( 52, 58, 68 )
Config
Read from an ini.

The line between two columns, down the right edge of each header cell. The splitter handle takes the same colour while it is not grabbed, and draws at no width either way.

Scrollbar Track ColorScrollbarTrackColorpanel
UPROPERTY( EditAnywhere, Config, Category = "Palette" ) FLinearColor ScrollbarTrackColor = SmartTable::Srgb( 20, 22, 26 )
Config
Read from an ini.

Behind both scrollbars, the one down the side and the one along the bottom.

Accent ColorAccentColorpanel
UPROPERTY( EditAnywhere, Config, Category = "Palette", meta = ( ToolTip = "The column caret, the focus border, and the outline on a drop target. Warm by default, where the rest of the palette is a cold blue grey." ) ) FLinearColor AccentColor = SmartTable::Srgb( 255, 186, 92 )
Config
Read from an ini.

The one warm colour, where the rest of the palette is a cold blue grey. The column caret, the focus border and the outline on a drop target read it, and all three answer where input is going.

Next: SmartTableLayoutStore.h