Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Source/UnicodeBrowser/DataAsset_FontTags.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,9 @@ bool UDataAsset_FontTags::ImportFromJson(FString Filename)
if (Glyphs.IsEmpty())
return false;

// flush current entries (e.g. on reimport there might be existing data)
Characters.Empty();

for (TSharedPtr<FJsonValue> const& GlyphValue : Glyphs)
{
TSharedPtr<FJsonObject> const Glyph = GlyphValue->AsObject();
Expand Down
14 changes: 10 additions & 4 deletions Source/UnicodeBrowser/ImportFactory/GlyphTagsImportFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,13 @@ UGlyphTagsImportFactory::UGlyphTagsImportFactory(FObjectInitializer const& Objec

bool UGlyphTagsImportFactory::CanReimport(UObject* Obj, TArray<FString>& OutFilenames)
{
UDataAsset_FontTags const* Object = Cast<UDataAsset_FontTags>(Obj);
return IsValid(Object) && FactoryCanImport(Object->SourceFile);
if(UDataAsset_FontTags const* Object = Cast<UDataAsset_FontTags>(Obj))
{
OutFilenames.Add(Object->SourceFile);
return IsValid(Object) && FactoryCanImport(Object->SourceFile);
}

return false;
};

void UGlyphTagsImportFactory::SetReimportPaths(UObject* Obj, TArray<FString> const& NewReimportPaths)
Expand All @@ -38,15 +43,16 @@ void UGlyphTagsImportFactory::SetReimportPaths(UObject* Obj, TArray<FString> con

bool UGlyphTagsImportFactory::FactoryCanImport(FString const& Filename)
{
FString JsonString;
FString JsonString = "";

if (!FFileHelper::LoadFileToString(JsonString, *Filename))
return false;

TSharedPtr<FJsonObject> JsonObject = MakeShared<FJsonObject>();
auto const Reader = TJsonReaderFactory<>::Create(JsonString);
FJsonSerializer::Deserialize(Reader, JsonObject);

return JsonObject->HasField(TEXT("format")) && JsonObject->GetStringField(TEXT("format")) == "UnicodeBrowserGlyphTags_V1";
return JsonObject->HasTypedField<EJson::String>(TEXT("format")) && JsonObject->GetStringField(TEXT("format")) == TEXT("UnicodeBrowserGlyphTags_V1");
}

UObject* UGlyphTagsImportFactory::ImportObject(UClass* InClass, UObject* InOuter, FName const InName, EObjectFlags const InFlags, FString const& Filename, TCHAR const* Parms, bool& OutCanceled)
Expand Down
10 changes: 1 addition & 9 deletions Source/UnicodeBrowser/UnicodeBrowser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,7 @@ TSharedRef<SDockTab> FUnicodeBrowserModule::OnSpawnPluginTab(FSpawnTabArgs const
return SNew(SDockTab)
.TabRole(ETabRole::NomadTab)
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.FillHeight(1.0f)
.FillContentHeight(1.0f)
.HAlign(HAlign_Fill)
.VAlign(VAlign_Fill)
[
SNew(SUnicodeBrowserWidget)
]
SNew(SUnicodeBrowserWidget)
];
}

Expand Down
9 changes: 7 additions & 2 deletions Source/UnicodeBrowser/UnicodeBrowserRow.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include "Fonts/UnicodeBlockRange.h"

#include "Framework/Application/SlateApplication.h"
#include "Internationalization/TextChar.h"

class FUnicodeBrowserRow : public TSharedFromThis<FUnicodeBrowserRow>
{
Expand All @@ -12,11 +13,15 @@ class FUnicodeBrowserRow : public TSharedFromThis<FUnicodeBrowserRow>
BlockRange(BlockRangeIn),
FontInfo(FontInfoIn)
{
FUnicodeChar::CodepointToString(Codepoint, Character);
if(Codepoint != -1)
{
bHasValidCharacter = FTextChar::ConvertCodepointToString(Codepoint, Character);
}
}

FString Character;
int32 Codepoint = 0;
bool bHasValidCharacter = false;
int32 Codepoint = -1;
TOptional<EUnicodeBlockRange> BlockRange;

bool bFilteredByTag = false;
Expand Down
8 changes: 4 additions & 4 deletions Source/UnicodeBrowser/UnicodeBrowserStatic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ TOptional<EUnicodeBlockRange> UnicodeBrowser::GetUnicodeBlockRangeFromChar(int32
{
for (auto const& BlockRange : FUnicodeBlockRange::GetUnicodeBlockRanges())
{
if (BlockRange.Range.Contains(CharCode))
if (BlockRange.GetRange().Contains(CharCode))
{
return BlockRange.Index;
}
Expand All @@ -25,12 +25,12 @@ TArrayView<FUnicodeBlockRange const> UnicodeBrowser::GetUnicodeBlockRanges()
if (Ranges.IsEmpty())
{
Ranges = FUnicodeBlockRange::GetUnicodeBlockRanges();
Ranges.StableSort(
/*Ranges.Sort(
[](FUnicodeBlockRange const& A, FUnicodeBlockRange const& B)
{
return A.DisplayName.CompareTo(B.DisplayName) < 0;
return A.GetDisplayName().CompareTo(B.GetDisplayName()) < 0;
}
);
);*/
}
return Ranges;
}
Expand Down
4 changes: 2 additions & 2 deletions Source/UnicodeBrowser/UnicodeBrowserStatic.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ namespace UnicodeBrowser
TCHAR constexpr InvalidSubChar = TEXT('\uFFFD');
TOptional<EUnicodeBlockRange> GetUnicodeBlockRangeFromChar(int32 const CharCode);

static TArrayView<FUnicodeBlockRange const> Ranges; // all known Unicode ranges
TArrayView<FUnicodeBlockRange const> GetUnicodeBlockRanges();
static TConstArrayView<FUnicodeBlockRange const> Ranges; // all known Unicode ranges
TConstArrayView<FUnicodeBlockRange const> GetUnicodeBlockRanges();

static FString GetUnicodeCharacterName(int32 CharCode);

Expand Down
2 changes: 1 addition & 1 deletion Source/UnicodeBrowser/UnicodeBrowserWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -571,7 +571,7 @@ void SUnicodeBrowserWidget::PopulateSupportedCharacters()
RowsRaw.Add(Range.Index);
TArray<TSharedPtr<FUnicodeBrowserRow>>& RangeArray = RowsRaw.FindChecked(Range.Index);

for (int CharCode = Range.Range.GetLowerBound().GetValue(); CharCode <= Range.Range.GetUpperBound().GetValue(); ++CharCode)
for (int CharCode = Range.GetRange().GetLowerBound().GetValue(); CharCode <= Range.GetRange().GetUpperBound().GetValue(); ++CharCode)
{
auto Row = MakeShared<FUnicodeBrowserRow>(CharCode, Range.Index, &CurrentFont);

Expand Down
10 changes: 5 additions & 5 deletions Source/UnicodeBrowser/Widgets/SUnicodeBlockRangeSelector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,17 @@ void SUnicodeBlockRangeSelector::Construct(FArguments const& InArgs)
return FText::GetEmpty();

int32 const Num = UnicodeBrowser.Pin().Get()->Rows.Contains(Range.Index) ? UnicodeBrowser.Pin().Get()->Rows.FindChecked(Range.Index).Num() : 0;
return FText::FromString(FString::Printf(TEXT("%s (%d)"), *Range.DisplayName.ToString(), Num));
return FText::FromString(FString::Printf(TEXT("%s (%d)"), *Range.GetDisplayName().ToString(), Num));
}
)
.ToolTipText(
FText::FromString(
FString::Printf(
TEXT("%s: Range U+%-06.04X Codes U+%-06.04X - U+%-06.04X"),
*Range.DisplayName.ToString(),
*Range.GetDisplayName().ToString(),
Range.Index,
Range.Range.GetLowerBoundValue(),
Range.Range.GetUpperBoundValue()
Range.GetRange().GetLowerBoundValue(),
Range.GetRange().GetUpperBoundValue()
)
)
)
Expand Down Expand Up @@ -106,7 +106,7 @@ void SUnicodeBlockRangeSelector::SetRanges(TArray<EUnicodeBlockRange> const& Ran
continue;
}

if (CheckboxIndices[Range.Index], RangesToSet.Contains(Range.Index))
if (RangesToSet.Contains(Range.Index))
{
CheckBoxList->SetItemChecked(CheckboxIndices[Range.Index], ECheckBoxState::Checked);
}
Expand Down
3 changes: 2 additions & 1 deletion Source/UnicodeBrowser/Widgets/SUnicodeBrowserSidePanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,8 @@ void SUnicodeBrowserSidePanel::Construct(FArguments const& InArgs)
]
.BodyContent()
[
SAssignNew(CurrentCharacterDetails, SUnicodeCharacterInfo).Row(UnicodeBrowser.Pin().Get()->CurrentRow)
SAssignNew(CurrentCharacterDetails, SUnicodeCharacterInfo)
.Row(UnicodeBrowser.Pin().Get()->CurrentRow)
]
]
+ SVerticalBox::Slot()
Expand Down
16 changes: 11 additions & 5 deletions Source/UnicodeBrowser/Widgets/SUnicodeCharacterInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,16 @@ void SUnicodeCharacterInfo::Construct(FArguments const& InArgs)
{
SInvalidationPanel::Construct(SInvalidationPanel::FArguments());
SetCanCache(true);
SetRow(InArgs._Row);

if(InArgs._Row.IsValid())
{
SetRow(InArgs._Row);
}
}

void SUnicodeCharacterInfo::SetRow(TSharedPtr<FUnicodeBrowserRow> InRow)
{
if(!InRow.IsValid())
if(!InRow.IsValid() || !InRow->bHasValidCharacter)
return;

FText TagsText = FText::GetEmpty();
Expand All @@ -29,9 +33,11 @@ void SUnicodeCharacterInfo::SetRow(TSharedPtr<FUnicodeBrowserRow> InRow)
}

FString BlockRangeName = "";
if(FUnicodeBlockRange const *Range = UnicodeBrowser::GetUnicodeBlockRanges().FindByPredicate([Needle = InRow->BlockRange.Get(EUnicodeBlockRange::ControlCharacter)](FUnicodeBlockRange const &Range){ return Range.Index == Needle; }))
{
BlockRangeName = *Range->DisplayName.ToString();
if(InRow->BlockRange){
if(FUnicodeBlockRange const *Range = UnicodeBrowser::GetUnicodeBlockRanges().FindByPredicate([Needle = InRow->BlockRange.Get(EUnicodeBlockRange::ControlCharacter)](FUnicodeBlockRange const &Range){ return Range.Index == Needle; }))
{
BlockRangeName = *Range->GetDisplayName().ToString();
}
}

SetContent(
Expand Down