More refactoring in MCP
This commit is contained in:
@@ -70,15 +70,18 @@ FString WingUtils::SanitizeName(const FString &InName)
|
||||
FString WingUtils::UnsanitizeName(const FString &InName)
|
||||
{
|
||||
FString Name = InName;
|
||||
for (int32 i = 0; i < Name.Len(); i++)
|
||||
int32 Dst = 0;
|
||||
for (int32 Src = 0; Src < Name.Len(); Src++)
|
||||
{
|
||||
TCHAR c = Name[i];
|
||||
TCHAR c = Name[Src];
|
||||
if (c < 0x20 || c == 0x7F) continue;
|
||||
if (c == L'·') c=' ';
|
||||
if (c == L'◁') c='<';
|
||||
if (c == L'▷') c='>';
|
||||
if (c == L'▾') c=',';
|
||||
Name[i] = c;
|
||||
Name[Dst++] = c;
|
||||
}
|
||||
Name.LeftInline(Dst);
|
||||
return Name;
|
||||
}
|
||||
|
||||
@@ -113,6 +116,17 @@ FString WingUtils::StandardizeMenuItem(const FString &Item)
|
||||
return Sanitized;
|
||||
}
|
||||
|
||||
FString WingUtils::CheckProposedName(const FString &Name)
|
||||
{
|
||||
FString Unsanitized = UnsanitizeName(Name);
|
||||
if ((Unsanitized.IsEmpty()) || (SanitizeName(Unsanitized) != Name))
|
||||
{
|
||||
UWingServer::Printf(TEXT("Names must not contain control characters or be empty\n"));
|
||||
return FString();
|
||||
}
|
||||
return Unsanitized;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Name Lookup
|
||||
// ============================================================
|
||||
@@ -142,6 +156,11 @@ FString WingUtils::FormatName(const UEdGraph *Graph)
|
||||
return SanitizeName(Graph->GetName());
|
||||
}
|
||||
|
||||
FString WingUtils::FormatName(const TObjectPtr<UEdGraph> &Graph)
|
||||
{
|
||||
return SanitizeName(Graph->GetName());
|
||||
}
|
||||
|
||||
FString WingUtils::FormatName(const UEdGraphNode* Node)
|
||||
{
|
||||
return SanitizeName(Node->GetName());
|
||||
@@ -335,41 +354,31 @@ bool WingUtils::StringToEnum(UEnum* Enum, const FString& Str, int64& OutValue)
|
||||
// Common Error Reporting
|
||||
// ============================================================
|
||||
|
||||
bool WingUtils::CheckExactlyOneNamed(int Count, const FString &Kind, const FString &Name)
|
||||
bool WingUtils::CheckExactlyOneNamed(int Count, const TCHAR *Kind, const FString &Name)
|
||||
{
|
||||
if (Count == 0)
|
||||
{
|
||||
UWingServer::Printf(TEXT("Could not find a %s named %s.\n"), *Kind, *Name);
|
||||
UWingServer::Printf(TEXT("Could not find a %s named %s.\n"), Kind, *Name);
|
||||
return false;
|
||||
}
|
||||
if (Count > 1)
|
||||
{
|
||||
UWingServer::Printf(TEXT("More than one %s named %s\n"), *Kind, *Name);
|
||||
UWingServer::Printf(TEXT("More than one %s named %s\n"), Kind, *Name);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool WingUtils::CheckExactlyOneNamed(int Count, UClass *Class, const FString &Name)
|
||||
{
|
||||
return CheckExactlyOneNamed(Count, Class->GetName(), Name);
|
||||
}
|
||||
|
||||
bool WingUtils::CheckExactlyNoneNamed(int Count, const FString &Kind, const FString &Name)
|
||||
bool WingUtils::CheckExactlyNoneNamed(int Count, const TCHAR *Kind, const FString &Name)
|
||||
{
|
||||
if (Count > 0)
|
||||
{
|
||||
UWingServer::Printf(TEXT("A %s named %s already exists."), *Kind, *Name);
|
||||
UWingServer::Printf(TEXT("A %s named %s already exists."), Kind, *Name);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool WingUtils::CheckExactlyNoneNamed(int Count, UClass *Class, const FString &Name)
|
||||
{
|
||||
return CheckExactlyNoneNamed(Count, Class->GetName(), Name);
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Blueprint helpers
|
||||
// ============================================================
|
||||
|
||||
Reference in New Issue
Block a user