Files
UnrealEngine/Engine/Source/Editor/LocalizationDashboard/Private/LocalizationTargetDetailCustomization.h
2025-05-18 13:04:45 +08:00

129 lines
4.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/Array.h"
#include "Containers/BitArray.h"
#include "Containers/Map.h"
#include "Containers/Set.h"
#include "Containers/SparseArray.h"
#include "Containers/UnrealString.h"
#include "Delegates/Delegate.h"
#include "HAL/Platform.h"
#include "HAL/PlatformCrt.h"
#include "IDetailCustomization.h"
#include "Internationalization/CulturePointer.h"
#include "Internationalization/Text.h"
#include "LocalizationTargetTypes.h"
#include "Misc/Optional.h"
#include "Styling/SlateTypes.h"
#include "Templates/SharedPointer.h"
#include "Templates/TypeHash.h"
#include "Templates/UnrealTemplate.h"
#include "Types/SlateEnums.h"
#include "UObject/WeakObjectPtrTemplates.h"
#include "Widgets/Views/SListView.h"
class IDetailLayoutBuilder;
class IPropertyHandle;
class ITableRow;
class SComboButton;
class SCulturePicker;
class SEditableTextBox;
class SErrorText;
class SHorizontalBox;
class STableViewBase;
class SWidget;
enum class ELocalizationTargetLoadingPolicy : uint8;
class FLocalizationTargetDetailCustomization : public IDetailCustomization
{
public:
FLocalizationTargetDetailCustomization();
virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override;
FLocalizationTargetSettings* GetTargetSettings() const;
TSharedPtr<IPropertyHandle> GetTargetSettingsPropertyHandle() const;
private:
FText GetTargetName() const;
bool IsTargetNameUnique(const FString& Name) const;
void OnTargetNameChanged(const FText& NewText);
void OnTargetNameCommitted(const FText& NewText, ETextCommit::Type Type);
ELocalizationTargetLoadingPolicy GetLoadingPolicy() const;
void SetLoadingPolicy(const ELocalizationTargetLoadingPolicy LoadingPolicy);
void OnLoadingPolicySelectionChanged(TSharedPtr<ELocalizationTargetLoadingPolicy> LoadingPolicy, ESelectInfo::Type SelectInfo);
TSharedRef<SWidget> GenerateWidgetForLoadingPolicy(TSharedPtr<ELocalizationTargetLoadingPolicy> LoadingPolicy);
void RebuildTargetDependenciesBox();
void RebuildTargetsList();
TSharedRef<ITableRow> OnGenerateTargetRow(ULocalizationTarget* OtherLocalizationTarget, const TSharedRef<STableViewBase>& Table);
void OnTargetDependencyCheckStateChanged(ULocalizationTarget* const OtherLocalizationTarget, const ECheckBoxState State);
ECheckBoxState IsTargetDependencyChecked(ULocalizationTarget* const OtherLocalizationTarget) const;
bool CanGatherText() const;
void GatherText();
bool CanImportTextAllCultures() const;
void ImportTextAllCultures();
bool CanExportTextAllCultures() const;
void ExportTextAllCultures();
bool CanImportDialogueScriptAllCultures() const;
void ImportDialogueScriptAllCultures();
bool CanExportDialogueScriptAllCultures() const;
void ExportDialogueScriptAllCultures();
bool CanImportDialogueAllCultures() const;
void ImportDialogueAllCultures();
bool CanCountWords() const;
void CountWords();
bool CanCompileTextAllCultures() const;
void CompileTextAllCultures();
void UpdateTargetFromReports();
void BuildListedCulturesList();
void RebuildListedCulturesList();
TSharedRef<ITableRow> OnGenerateCultureRow(TSharedPtr<IPropertyHandle> CulturePropertyHandle, const TSharedRef<STableViewBase>& Table);
bool IsCultureSelectableAsSupported(FCulturePtr Culture);
void OnNewSupportedCultureSelected(FCulturePtr SelectedCulture, ESelectInfo::Type SelectInfo);
private:
IDetailLayoutBuilder* DetailLayoutBuilder;
TWeakObjectPtr<ULocalizationTargetSet> TargetSet;
TWeakObjectPtr<ULocalizationTarget> LocalizationTarget;
TSharedPtr<IPropertyHandle> TargetSettingsPropertyHandle;
TSharedPtr<SEditableTextBox> TargetNameEditableTextBox;
TSharedPtr<SHorizontalBox> TargetDependenciesHorizontalBox;
TArray< TSharedPtr<SWidget> > TargetDependenciesWidgets;
TArray<ULocalizationTarget*> TargetDependenciesOptionsList;
TSharedPtr< SListView<ULocalizationTarget*> > TargetDependenciesListView;
TArray<FCulturePtr> AllCultures;
TSharedPtr<IPropertyHandle> NativeCultureIndexPropertyHandle;
TSharedPtr<IPropertyHandle> SupportedCulturesStatisticsPropertyHandle;
FSimpleDelegate SupportedCulturesStatisticsPropertyHandle_OnNumElementsChanged;
TSharedPtr< SListView< TSharedPtr<IPropertyHandle> > > SupportedCultureListView;
TSharedPtr<SErrorText> NoSupportedCulturesErrorText;
TSharedPtr<SComboButton> AddNewSupportedCultureComboButton;
TSharedPtr<SCulturePicker> SupportedCulturePicker;
TArray< TSharedPtr<IPropertyHandle> > ListedCultureStatisticProperties;
/* If set, the entry at the index specified needs to be initialized as soon as possible. */
int32 NewEntryIndexToBeInitialized;
FCulturePtr SelectedNewCulture;
};