Skip to content

Commit de76ab9

Browse files
committed
Small editor tweaks
1 parent 416574e commit de76ab9

7 files changed

+104
-128
lines changed

Source/Editor/Private/Customizations/FactionCustomization.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ FSlateColor FFactionCustomization::GetForegroundColor() const
7979
FName FFactionCustomization::GetIdValue() const
8080
{
8181
FName Id;
82-
if(NameHandle->GetValue(Id) == FPropertyAccess::Success)
82+
if(NameHandle.IsValid() && NameHandle->GetValue(Id) == FPropertyAccess::Success)
8383
return Id;
8484
return FName{};
8585
}

Source/Editor/Private/Customizations/FactionTableCustomization.cpp

+35-47
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
#define LOCTEXT_NAMESPACE "FFactionTableCustomization"
2222

23-
const FName FFactionTableCustomization::ColumnSelect("Select");
2423
const FName FFactionTableCustomization::ColumnId("Id");
2524
const FName FFactionTableCustomization::ColumnColor("Color");
2625
const FName FFactionTableCustomization::ColumnDelete("Delete");
@@ -53,39 +52,32 @@ class SFactionViewItem : public SMultiColumnTableRow<FFactionViewItemPtr>
5352
/** Overridden from SMultiColumnTableRow. Generates a widget for this column of the list view. */
5453
virtual TSharedRef<SWidget> GenerateWidgetForColumn(const FName& Column) override
5554
{
56-
if (Column == FFactionTableCustomization::ColumnSelect)
55+
if (Column == FFactionTableCustomization::ColumnDelete)
5756
{
58-
return SNew(STextBlock).Text(LOCTEXT("FactionColumnSelect_Value", ""));
57+
return SNew(SButton)
58+
.VAlign(VAlign_Center)
59+
.HAlign(HAlign_Center)
60+
.ContentPadding(FMargin{0, 1, 0, 0})
61+
.ButtonStyle(FEditorStyle::Get(), "HoverHintOnly")
62+
.ForegroundColor(FEditorStyle::GetSlateColor("DefaultForeground"))
63+
.OnClicked(Customization.Pin().Get(), &FFactionTableCustomization::OnDeleteFaction, Item)
64+
[
65+
SNew(STextBlock)
66+
.Font(FEditorStyle::Get().GetFontStyle("FontAwesome.10"))
67+
.Text(FText::FromString(FString(TEXT("\xf057"))) /*fa-times-circle*/)
68+
];
5969
}
6070
else if (Column == FFactionTableCustomization::ColumnColor)
61-
{
62-
return SNew(SFactionColor, Item->GetColorProperty());
63-
}
64-
else if (Column == FFactionTableCustomization::ColumnDelete)
6571
{
6672
return SNew(SBox)
67-
.Padding(1)
68-
.MinDesiredWidth(22.f)
73+
.Padding(FMargin{ 5, 3 })
6974
[
70-
SNew(SButton)
71-
.HAlign(HAlign_Center)
72-
.VAlign(VAlign_Center)
73-
.ContentPadding(2)
74-
.ButtonStyle(FEditorStyle::Get(), "HoverHintOnly")
75-
.ForegroundColor(FEditorStyle::GetSlateColor("DefaultForeground"))
76-
.OnClicked(Customization.Pin().Get(), &FFactionTableCustomization::OnDeleteFaction, Item)
77-
[
78-
SNew(STextBlock)
79-
.Font(FEditorStyle::Get().GetFontStyle("FontAwesome.10"))
80-
//.Text(LOCTEXT("Relations_Delete", "✖"))
81-
.Text(FText::FromString(FString(TEXT("\xf057"))) /*fa-times-circle*/)
82-
]
75+
SNew(SFactionColor, Item->GetColorProperty())
8376
];
8477
}
8578

8679
return SNew(SBox)
87-
.Padding(FMargin{ 5.0f, 3.f })
88-
.MinDesiredHeight(25.f)
80+
.Padding(FMargin{ 5, 0 })
8981
[
9082
SAssignNew(IdNameSwitcher, SWidgetSwitcher)
9183
+ SWidgetSwitcher::Slot()
@@ -244,18 +236,18 @@ void FFactionTableCustomization::CustomizeHeader(TSharedRef<IPropertyHandle> Str
244236

245237
void FFactionTableCustomization::CustomizeChildren(TSharedRef<IPropertyHandle> StructPropertyHandle, IDetailChildrenBuilder& StructBuilder, IPropertyTypeCustomizationUtils& StructCustomizationUtils)
246238
{
247-
248239
TSharedRef<SScrollBar> VerticalScrollBar = SNew(SScrollBar)
249240
.Orientation(Orient_Vertical)
250241
.Thickness(FVector2D(8.0f, 8.0f));
251242

252243
TSharedRef<SHeaderRow> ListHeaderRow = SNew(SHeaderRow)
253-
+ SHeaderRow::Column(ColumnSelect).HAlignCell(HAlign_Center)
254-
.VAlignCell(VAlign_Center)
244+
+ SHeaderRow::Column(ColumnDelete)
245+
.HAlignCell(HAlign_Fill)
246+
.VAlignCell(VAlign_Fill)
255247
.VAlignHeader(VAlign_Center)
256-
.FixedWidth(20.f)
248+
.FixedWidth(22.f)
257249
[
258-
SNew(STextBlock).Text(LOCTEXT("FactionColumnSelect", ""))
250+
SNew(STextBlock).Text(LOCTEXT("FactionColumnDelete", ""))
259251
]
260252
+ SHeaderRow::Column(ColumnId)
261253
.HAlignCell(HAlign_Fill)
@@ -266,15 +258,16 @@ void FFactionTableCustomization::CustomizeChildren(TSharedRef<IPropertyHandle> S
266258
[
267259
SNew(SHorizontalBox)
268260
+ SHorizontalBox::Slot()
269-
.Padding(2, 0)
261+
.Padding(5, 0)
270262
.HAlign(HAlign_Left)
271263
[
272264
SNew(STextBlock)
273-
.Text(LOCTEXT("FactionColumnTitle", "Faction Id"))
265+
.Text(LOCTEXT("FactionColumnId", "Faction Id"))
266+
.ToolTipText(LOCTEXT("FactionColumnIdTooltip", "A faction's Id serves as its unique identifier. For setting a name use the Display Name"))
274267
]
275268
+ SHorizontalBox::Slot()
276269
.HAlign(HAlign_Right)
277-
.Padding(4, 0)
270+
.Padding(5, 0)
278271
[
279272
SNew(SBox)
280273
.MaxDesiredHeight(20.f)
@@ -287,22 +280,13 @@ void FFactionTableCustomization::CustomizeChildren(TSharedRef<IPropertyHandle> S
287280
]
288281
]
289282
+ SHeaderRow::Column(ColumnColor)
290-
.HAlignCell(HAlign_Right)
283+
.HAlignCell(HAlign_Center)
291284
.VAlignCell(VAlign_Center)
292285
.VAlignHeader(VAlign_Center)
293-
.FixedWidth(60.f)
294-
.HeaderContentPadding(FMargin(0, 3))
286+
.FixedWidth(70.f)
287+
.HeaderContentPadding(FMargin(5, 3))
295288
[
296289
SNew(STextBlock).Text(LOCTEXT("FactionColumnColor", "Color"))
297-
]
298-
+ SHeaderRow::Column(ColumnDelete)
299-
.HAlignCell(HAlign_Right)
300-
.VAlignCell(VAlign_Center)
301-
.VAlignHeader(VAlign_Center)
302-
.FixedWidth(22.f)
303-
.HeaderContentPadding(FMargin(0, 3))
304-
[
305-
SNew(STextBlock).Text(LOCTEXT("FactionColumnDelete", ""))
306290
];
307291

308292
ListView = SNew(SListView<FFactionViewItemPtr>)
@@ -321,7 +305,7 @@ void FFactionTableCustomization::CustomizeChildren(TSharedRef<IPropertyHandle> S
321305
.VAlign(VAlign_Top)
322306
[
323307
SNew(SBox)
324-
.Padding(FMargin{0,10,0,20})
308+
.Padding(FMargin{ 0,10,0,20 })
325309
.VAlign(VAlign_Fill)
326310
[
327311
SNew(SHorizontalBox)
@@ -349,14 +333,18 @@ void FFactionTableCustomization::CustomizeChildren(TSharedRef<IPropertyHandle> S
349333
.HAlign(HAlign_Fill)
350334
[
351335
SNew(SBox)
352-
.Padding(FMargin{ 10, 10, 10, 10 })
336+
.Padding(10)
353337
.MinDesiredHeight(180.f)
354338
[
355339
SAssignNew(FactionInfoContainer, SVerticalBox)
356340
]
357341
];
358-
}
359342

343+
if (!CurrentSelection.IsValid() && AvailableFactions.Num() > 0)
344+
{
345+
SetSelection(AvailableFactions[0]);
346+
}
347+
}
360348

361349
FFactionTableCustomization::~FFactionTableCustomization()
362350
{

Source/Editor/Private/Customizations/RelationTableCustomization.cpp

+37-60
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,19 @@ void FRelationTableCustomization::CustomizeChildren(TSharedRef<IPropertyHandle>
139139
.Thickness(FVector2D(8.0f, 8.0f));
140140

141141
TSharedRef<SHeaderRow> RelationsHeaderRow = SNew(SHeaderRow)
142+
+ SHeaderRow::Column(DeleteId)
143+
.HAlignCell(HAlign_Fill)
144+
.VAlignCell(VAlign_Fill)
145+
.VAlignHeader(VAlign_Center)
146+
.FixedWidth(22.f)
147+
[
148+
SNew(STextBlock)
149+
.Text(FText::GetEmpty())
150+
]
142151
+ SHeaderRow::Column(FactionAId)
143152
.HAlignCell(HAlign_Left)
144153
.FillWidth(1)
145-
.HeaderContentPadding(FMargin(0, 3))
154+
.HeaderContentPadding(FMargin(5, 3))
146155
[
147156
SNew(SHorizontalBox)
148157
+ SHorizontalBox::Slot()
@@ -169,7 +178,7 @@ void FRelationTableCustomization::CustomizeChildren(TSharedRef<IPropertyHandle>
169178
+ SHeaderRow::Column(FactionBId)
170179
.HAlignCell(HAlign_Left)
171180
.FillWidth(1)
172-
.HeaderContentPadding(FMargin(0, 3))
181+
.HeaderContentPadding(FMargin(5, 3))
173182
[
174183
SNew(SHorizontalBox)
175184
+ SHorizontalBox::Slot()
@@ -194,19 +203,11 @@ void FRelationTableCustomization::CustomizeChildren(TSharedRef<IPropertyHandle>
194203
]
195204
]
196205
+ SHeaderRow::Column(AttitudeId)
197-
.HAlignCell(HAlign_Left).FillWidth(3)
198-
.HeaderContentPadding(FMargin(0, 3))
206+
.HAlignCell(HAlign_Left)
207+
.HeaderContentPadding(FMargin(5, 3))
199208
[
200209
SNew(STextBlock)
201210
.Text(FText::FromName(AttitudeId))
202-
]
203-
+ SHeaderRow::Column(DeleteId)
204-
.HAlignCell(HAlign_Right)
205-
.ManualWidth(22.f)
206-
.HeaderContentPadding(FMargin(0, 3))
207-
[
208-
SNew(STextBlock)
209-
.Text(FText::GetEmpty())
210211
];
211212

212213

@@ -285,69 +286,45 @@ TSharedRef<SWidget> FRelationTableCustomization::MakeColumnWidget(uint32 Relatio
285286
if (Num > RelationIndex)
286287
{
287288
const TSharedPtr<IPropertyHandle> RelationHandle = ListHandleArray->GetElement(RelationIndex);
288-
if (!RelationHandle.IsValid())
289+
check(RelationHandle.IsValid());
290+
291+
if (ColumnName == DeleteId)
289292
{
290-
return SNullWidget::NullWidget;
293+
return SNew(SButton)
294+
.HAlign(HAlign_Center)
295+
.VAlign(VAlign_Center)
296+
.ContentPadding(FMargin{ 0, 1, 0, 0 })
297+
.ButtonStyle(FEditorStyle::Get(), "HoverHintOnly")
298+
.ForegroundColor(FEditorStyle::GetSlateColor("DefaultForeground"))
299+
.OnClicked(this, &FRelationTableCustomization::OnDeleteRelation, RelationIndex)
300+
[
301+
SNew(STextBlock)
302+
.Font(FEditorStyle::Get().GetFontStyle("FontAwesome.10"))
303+
.Text(FText::FromString(FString(TEXT("\xf057"))) /*fa-times-circle*/)
304+
];
291305
}
292-
293-
TSharedPtr<SWidget> Widget{};
294-
if (ColumnName == FactionAId)
306+
else if (ColumnName == FactionAId)
295307
{
296308
const TSharedPtr<IPropertyHandle> FactionHandle{ RelationHandle->GetChildHandle(GET_MEMBER_NAME_CHECKED(FFactionRelation, FactionA)) };
297-
if (FactionHandle.IsValid())
298-
{
299-
Widget = CreateFactionWidget(FactionHandle.ToSharedRef());
300-
}
309+
310+
return CreateFactionWidget(FactionHandle.ToSharedRef());
301311
}
302312
else if (ColumnName == FactionBId)
303313
{
304314
const TSharedPtr<IPropertyHandle> FactionHandle{ RelationHandle->GetChildHandle(GET_MEMBER_NAME_CHECKED(FFactionRelation, FactionB)) };
305-
if (FactionHandle.IsValid())
306-
{
307-
Widget = CreateFactionWidget(FactionHandle.ToSharedRef());
308-
}
315+
316+
return CreateFactionWidget(FactionHandle.ToSharedRef());
309317
}
310318
else if (ColumnName == AttitudeId)
311319
{
312320
const TSharedPtr<IPropertyHandle> AttitudeHandle{ RelationHandle->GetChildHandle(GET_MEMBER_NAME_CHECKED(FFactionRelation, Attitude)) };
313-
if (AttitudeHandle.IsValid())
314-
{
315-
Widget = SNew(SBox)
316-
.HAlign(HAlign_Fill)
317-
.MinDesiredWidth(100.f)
318-
[
319-
AttitudeHandle->CreatePropertyValueWidget()
320-
];
321-
}
322-
}
323321

324-
if (Widget.IsValid())
325-
{
326-
return SNew(SBox)
327-
.Padding(0)
328-
.MinDesiredWidth(20.f)
329-
[
330-
Widget.ToSharedRef()
331-
];
332-
}
333-
else if (ColumnName == DeleteId)
334-
{
335322
return SNew(SBox)
336-
.Padding(1)
337-
.MinDesiredWidth(22.f)
323+
.HAlign(HAlign_Fill)
324+
.Padding(FMargin{3,0})
325+
.MinDesiredWidth(100.f)
338326
[
339-
SNew(SButton)
340-
.HAlign(HAlign_Center)
341-
.VAlign(VAlign_Center)
342-
.ContentPadding(2)
343-
.ButtonStyle(FEditorStyle::Get(), "HoverHintOnly")
344-
.ForegroundColor(FEditorStyle::GetSlateColor("DefaultForeground"))
345-
.OnClicked(this, &FRelationTableCustomization::OnDeleteRelation, RelationIndex)
346-
[
347-
SNew(STextBlock)
348-
.Font(FEditorStyle::Get().GetFontStyle("FontAwesome.10"))
349-
.Text(FText::FromString(FString(TEXT("\xf057"))) /*fa-times-circle*/)
350-
]
327+
AttitudeHandle->CreatePropertyValueWidget()
351328
];
352329
}
353330
}

Source/Editor/Private/Customizations/SFaction.cpp

+25-17
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ void SFaction::Construct(const FArguments& InArgs, TSharedRef<IPropertyHandle> _
2121
.OnComboBoxOpening(this, &SFaction::UpdateItems, false)
2222
.OnSelectionChanged(this, &SFaction::OnSelectionChanged)
2323
.ButtonStyle(FEditorStyle::Get(), "FlatButton")
24-
.ForegroundColor(FSlateColor::UseForeground())
24+
.ForegroundColor(this, &SFaction::GetForegroundColor)
2525
//.InitiallySelectedItem(GetVariableFactionValue())
2626
[
2727
SNew(STextBlock)
@@ -83,30 +83,18 @@ void SFaction::OnSelectionChanged(const TSharedPtr<FName> SelectedNamePtr, ESele
8383

8484
FText SFaction::GetSelectedItem() const
8585
{
86-
if (!NameHandle.IsValid())
87-
return FText::FromName(NO_FACTION_NAME);
88-
89-
FName Name;
90-
const FPropertyAccess::Result RowResult = NameHandle->GetValue(Name);
91-
const TMap<FName, FFactionInfo>& AllFactions = GetDefault<UFactionsSettings>()->GetFactionInfos();
92-
93-
if (RowResult != FPropertyAccess::MultipleValues)
86+
FName Id = GetIdValue();
87+
if (!Id.IsNone())
9488
{
95-
if (AllFactions.Contains(Name))
96-
{
97-
//Return name with prefix number
98-
return FText::FromName(Name);
99-
}
89+
return FText::FromName(Id);
10090
}
10191
return FText::FromName(NO_FACTION_NAME);
10292
}
10393

10494
void SFaction::GetFactionNames(TArray<FName>& Names) const
10595
{
10696
const UFactionsSettings* Settings = GetDefault<UFactionsSettings>();
107-
if (!Settings) {
108-
return;
109-
}
97+
check(Settings);
11098

11199
for (const auto& KeyValue : Settings->GetFactionInfos())
112100
{
@@ -116,3 +104,23 @@ void SFaction::GetFactionNames(TArray<FName>& Names) const
116104
Names.Remove(NO_FACTION_NAME);
117105
Names.Insert(NO_FACTION_NAME, 0);
118106
}
107+
108+
FSlateColor SFaction::GetForegroundColor() const
109+
{
110+
FName Id = GetIdValue();
111+
112+
if (Id.IsNone() || GetDefault<UFactionsSettings>()->GetFactionInfos().Contains(Id))
113+
{
114+
return FSlateColor::UseForeground();
115+
}
116+
117+
return FLinearColor::Red;
118+
}
119+
120+
FName SFaction::GetIdValue() const
121+
{
122+
FName Id;
123+
if (NameHandle.IsValid() && NameHandle->GetValue(Id) == FPropertyAccess::Success)
124+
return Id;
125+
return FName{};
126+
}

Source/Editor/Public/Customizations/FactionTableCustomization.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,8 @@ class FFactionTableCustomization : public IPropertyTypeCustomization, public FEd
131131

132132
public:
133133

134-
static const FName ColumnSelect;
134+
static const FName ColumnDelete;
135135
static const FName ColumnId;
136136
static const FName ColumnColor;
137-
static const FName ColumnDelete;
138137
};
139138

0 commit comments

Comments
 (0)