本文整理汇总了C++中LOCTEXT函数的典型用法代码示例。如果您正苦于以下问题:C++ LOCTEXT函数的具体用法?C++ LOCTEXT怎么用?C++ LOCTEXT使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了LOCTEXT函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CopyGooglePlayAppIDFileIntoProject
void FAndroidTargetSettingsCustomization::CopyGooglePlayAppIDFileIntoProject()
{
FText ErrorMessage;
if (!SourceControlHelpers::CopyFileUnderSourceControl(GameGooglePlayAppIDPath, EngineGooglePlayAppIDPath, LOCTEXT("GooglePlayAppID", "GooglePlayAppID.xml"), /*out*/ ErrorMessage))
{
FNotificationInfo Info(ErrorMessage);
Info.ExpireDuration = 3.0f;
FSlateNotificationManager::Get().AddNotification(Info);
}
SavedLayoutBuilder->ForceRefreshDetails();
}
示例2: LOCTEXT
FText UAnimGraphNode_TwoBoneIK::GetControllerDescription() const
{
return LOCTEXT("TwoBoneIK", "Two Bone IK");
}
示例3: LOCTEXT
const FText URichTextBlock::GetPaletteCategory()
{
return LOCTEXT("Common", "Common");
}
示例4: MakeShareable
void SMatineeRecorder::Construct(const FArguments& InArgs)
{
if( InArgs._MatineeWindow.IsValid() )
{
ParentMatineeWindow = InArgs._MatineeWindow;
}
CameraModeOptions.Add( MakeShareable( new FString(LOCTEXT("NewCameraMode", "New Camera Mode").ToString() ) ) );
CameraModeOptions.Add( MakeShareable( new FString(LOCTEXT("NewAttachedCameraMode", "New Attached Camera Mode").ToString() ) ) );
CameraModeOptions.Add( MakeShareable( new FString(LOCTEXT("DuplicateSelectedTracks", "Duplicate Selected Tracks").ToString() ) ) );
CameraModeOptions.Add( MakeShareable( new FString(LOCTEXT("ReplaceSelectedTracks", "Replace Selected Tracks").ToString() ) ) );
this->ChildSlot
[
SNew(SBorder)
. HAlign(HAlign_Fill)
. VAlign(VAlign_Fill)
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
. HAlign(HAlign_Fill)
. VAlign(VAlign_Fill)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
[
SAssignNew( RecordButton, SButton )
.OnClicked( this, &SMatineeRecorder::ToggleRecord )
.ToolTipText( LOCTEXT("StartStopRecording", "Start/Stop Recording") )
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SImage)
.Image( this, &SMatineeRecorder::GetRecordImageDelegate )
]
]
]
+ SHorizontalBox::Slot()
.AutoWidth()
[
SAssignNew( CameraModeComboBox, STextComboBox )
.OptionsSource( &CameraModeOptions )
.OnSelectionChanged( this, &SMatineeRecorder::SelectCameraMode )
.ToolTipText( LOCTEXT("ChangeCameraMode", "Change Camera Mode") )
.InitiallySelectedItem( CameraModeOptions[ 0 ] )
]
]
// Build the viewport.
+SVerticalBox::Slot()
.HAlign(HAlign_Fill)
.VAlign(VAlign_Fill)
.FillHeight(1)
[
SAssignNew( ViewportWidget, SViewport )
.EnableGammaCorrection( false )
.IsEnabled( FSlateApplication::Get().GetNormalExecutionAttribute() )
.ShowEffectWhenDisabled( false )
]
]
];
// Create an animation viewport client
LevelViewportClient = MakeShareable( new FLevelEditorViewportClient(nullptr) );
Viewport = MakeShareable( new FSceneViewport( LevelViewportClient.Get(), ViewportWidget ) );
LevelViewportClient->Viewport = Viewport.Get();
LevelViewportClient->ViewportType = LVT_Perspective;
LevelViewportClient->bSetListenerPosition = false;
LevelViewportClient->SetViewLocation( EditorViewportDefs::DefaultPerspectiveViewLocation );
LevelViewportClient->SetViewRotation( EditorViewportDefs::DefaultPerspectiveViewRotation );
LevelViewportClient->SetRealtime( true );
LevelViewportClient->SetAllowCinematicPreview( true );
LevelViewportClient->Viewport->SetUserFocus(true);
LevelViewportClient->SetMatineeRecordingWindow( ParentMatineeWindow.Pin().Get() );
LevelViewportClient->VisibilityDelegate.BindSP( this, &SMatineeRecorder::IsVisible );
// The viewport widget needs an interface so it knows what should render
ViewportWidget->SetViewportInterface( Viewport.ToSharedRef() );
}
示例5: LOCTEXT
FText UK2Node_Switch::GetMenuCategory() const
{
static FNodeTextCache CachedCategory;
if (CachedCategory.IsOutOfDate())
{
// FText::Format() is slow, so we cache this to save on performance
CachedCategory = FEditorCategoryUtils::BuildCategoryString(FCommonEditorCategory::FlowControl, LOCTEXT("ActionMenuCategory", "Switch"));
}
return CachedCategory;
}
示例6: ShowRestartWarning
// Show a warning that the editor will require a restart and return its result
EAppReturnType::Type ShowRestartWarning(const FText& Title) const
{
return OpenMsgDlgInt(EAppMsgType::OkCancel, LOCTEXT("ActionRestartMsg", "Imported settings won't be applied until the editor is restarted. Do you wish to restart now (you will be prompted to save any changes)?" ), Title);
}
示例7: FIsActionChecked
void SMessagingDebugger::Construct(
const FArguments& InArgs,
const TSharedRef<SDockTab>& ConstructUnderMajorTab,
const TSharedPtr<SWindow>& ConstructUnderWindow,
const TSharedRef<IMessageTracer, ESPMode::ThreadSafe>& InMessageTracer,
const TSharedRef<ISlateStyle>& InStyle
)
{
MessageTracer = InMessageTracer;
Style = InStyle;
// bind commands
FUICommandList& ActionList = *CommandList;
{
const FMessagingDebuggerCommands& Commands = FMessagingDebuggerCommands::Get();
ActionList.MapAction(Commands.BreakDebugger, FExecuteAction::CreateRaw(this, &SMessagingDebugger::HandleBreakDebuggerCommandExecute), FCanExecuteAction::CreateRaw(this, &SMessagingDebugger::HandleBreakDebuggerCommandCanExecute));
ActionList.MapAction(Commands.ClearHistory, FExecuteAction::CreateRaw(this, &SMessagingDebugger::HandleClearHistoryCommandExecute), FCanExecuteAction::CreateRaw(this, &SMessagingDebugger::HandleClearHistoryCommandCanExecute));
ActionList.MapAction(Commands.ContinueDebugger, FExecuteAction::CreateRaw(this, &SMessagingDebugger::HandleContinueDebuggerCommandExecute), FCanExecuteAction::CreateRaw(this, &SMessagingDebugger::HandleContinueDebuggerCommandCanExecute), FIsActionChecked(), FIsActionButtonVisible::CreateRaw(this, &SMessagingDebugger::HandleContinueDebuggerCommandIsVisible));
ActionList.MapAction(Commands.StartDebugger, FExecuteAction::CreateRaw(this, &SMessagingDebugger::HandleStartDebuggerCommandExecute), FCanExecuteAction::CreateRaw(this, &SMessagingDebugger::HandleStartDebuggerCommandCanExecute), FIsActionChecked(), FIsActionButtonVisible::CreateRaw(this, &SMessagingDebugger::HandleStartDebuggerCommandIsVisible));
ActionList.MapAction(Commands.StepDebugger, FExecuteAction::CreateRaw(this, &SMessagingDebugger::HandleStepDebuggerCommandExecute), FCanExecuteAction::CreateRaw(this, &SMessagingDebugger::HandleStepDebuggerCommandCanExecute));
ActionList.MapAction(Commands.StopDebugger, FExecuteAction::CreateRaw(this, &SMessagingDebugger::HandleStopDebuggerCommandExecute), FCanExecuteAction::CreateRaw(this, &SMessagingDebugger::HandleStopDebuggerCommandCanExecute));
}
// create & initialize tab manager
TabManager = FGlobalTabmanager::Get()->NewTabManager(ConstructUnderMajorTab);
{
TSharedRef<FWorkspaceItem> AppMenuGroup = TabManager->AddLocalWorkspaceMenuCategory(LOCTEXT("MessagingDebuggerGroupName", "Messaging Debugger"));
TabManager->RegisterTabSpawner(BreakpointsTabId, FOnSpawnTab::CreateRaw(this, &SMessagingDebugger::HandleTabManagerSpawnTab, BreakpointsTabId))
.SetDisplayName(LOCTEXT("BreakpointsTabTitle", "Breakpoints"))
.SetGroup(AppMenuGroup)
.SetIcon(FSlateIcon(Style->GetStyleSetName(), "BreakpointsTabIcon"));
TabManager->RegisterTabSpawner(EndpointDetailsTabId, FOnSpawnTab::CreateRaw(this, &SMessagingDebugger::HandleTabManagerSpawnTab, EndpointDetailsTabId))
.SetDisplayName(LOCTEXT("EndpointDetailsTabTitle", "Endpoint Details"))
.SetGroup(AppMenuGroup)
.SetIcon(FSlateIcon(Style->GetStyleSetName(), "EndpointDetailsTabIcon"));
TabManager->RegisterTabSpawner(EndpointsTabId, FOnSpawnTab::CreateRaw(this, &SMessagingDebugger::HandleTabManagerSpawnTab, EndpointsTabId))
.SetDisplayName(LOCTEXT("EndpointsTabTitle", "Endpoints"))
.SetGroup(AppMenuGroup)
.SetIcon(FSlateIcon(Style->GetStyleSetName(), "EndpointsTabIcon"));
TabManager->RegisterTabSpawner(InteractionGraphTabId, FOnSpawnTab::CreateRaw(this, &SMessagingDebugger::HandleTabManagerSpawnTab, InteractionGraphTabId))
.SetDisplayName(LOCTEXT("InteractionGraphTabTitle", "Interaction Graph"))
.SetGroup(AppMenuGroup)
.SetIcon(FSlateIcon(Style->GetStyleSetName(), "InteractionGraphTabIcon"));
TabManager->RegisterTabSpawner(InterceptorsTabId, FOnSpawnTab::CreateRaw(this, &SMessagingDebugger::HandleTabManagerSpawnTab, InterceptorsTabId))
.SetDisplayName(LOCTEXT("InterceptorsTabTitle", "Interceptors"))
.SetGroup(AppMenuGroup)
.SetIcon(FSlateIcon(Style->GetStyleSetName(), "InterceptorsTabIcon"));
TabManager->RegisterTabSpawner(MessageDataTabId, FOnSpawnTab::CreateRaw(this, &SMessagingDebugger::HandleTabManagerSpawnTab, MessageDataTabId))
.SetDisplayName(LOCTEXT("MessageDataTabTitle", "Message Data"))
.SetGroup(AppMenuGroup)
.SetIcon(FSlateIcon(Style->GetStyleSetName(), "MessageDataTabIcon"));
TabManager->RegisterTabSpawner(MessageDetailsTabId, FOnSpawnTab::CreateRaw(this, &SMessagingDebugger::HandleTabManagerSpawnTab, MessageDetailsTabId))
.SetDisplayName(LOCTEXT("MessageDetailsTabTitle", "Message Details"))
.SetGroup(AppMenuGroup)
.SetIcon(FSlateIcon(Style->GetStyleSetName(), "MessageDetailsTabIcon"));
TabManager->RegisterTabSpawner(MessageHistoryTabId, FOnSpawnTab::CreateRaw(this, &SMessagingDebugger::HandleTabManagerSpawnTab, MessageHistoryTabId))
.SetDisplayName(LOCTEXT("MessageHistoryTabTitle", "Message History"))
.SetGroup(AppMenuGroup)
.SetIcon(FSlateIcon(Style->GetStyleSetName(), "MessageHistoryTabIcon"));
TabManager->RegisterTabSpawner(MessageTypesTabId, FOnSpawnTab::CreateRaw(this, &SMessagingDebugger::HandleTabManagerSpawnTab, MessageTypesTabId))
.SetDisplayName(LOCTEXT("MessageTypesTabTitle", "Message Types"))
.SetGroup(AppMenuGroup)
.SetIcon(FSlateIcon(Style->GetStyleSetName(), "MessageTypesTabIcon"));
TabManager->RegisterTabSpawner(ToolbarTabId, FOnSpawnTab::CreateRaw(this, &SMessagingDebugger::HandleTabManagerSpawnTab, ToolbarTabId))
.SetDisplayName(LOCTEXT("ToolbarTabTitle", "Toolbar"))
.SetGroup(AppMenuGroup)
.SetIcon(FSlateIcon(Style->GetStyleSetName(), "ToolbarTabIcon"));
}
// create tab layout
const TSharedRef<FTabManager::FLayout> Layout = FTabManager::NewLayout("MessagingDebuggerLayout_v1.0")
->AddArea
(
FTabManager::NewPrimaryArea()
->SetOrientation(Orient_Horizontal)
->Split
(
// left column
FTabManager::NewSplitter()
->SetOrientation(Orient_Vertical)
->SetSizeCoefficient(0.25f)
->Split
(
FTabManager::NewStack()
->AddTab(EndpointsTabId, ETabState::OpenedTab)
->SetSizeCoefficient(0.5f)
)
->Split
(
//.........这里部分代码省略.........
示例8: FillToolbar
TSharedPtr<FExtender> FCurveAssetEditor::GetToolbarExtender()
{
struct Local
{
static void FillToolbar(FToolBarBuilder& ToolbarBuilder, TSharedRef<SWidget> InputSnapWidget, TSharedRef<SWidget> OutputSnapWidget)
{
ToolbarBuilder.BeginSection("Curve");
{
ToolbarBuilder.AddToolBarButton(FRichCurveEditorCommands::Get().ZoomToFitHorizontal);
ToolbarBuilder.AddToolBarButton(FRichCurveEditorCommands::Get().ZoomToFitVertical);
ToolbarBuilder.AddToolBarButton(FRichCurveEditorCommands::Get().ZoomToFitAll);
ToolbarBuilder.AddToolBarButton(FRichCurveEditorCommands::Get().ZoomToFitSelected);
}
ToolbarBuilder.EndSection();
ToolbarBuilder.BeginSection("Interpolation");
{
ToolbarBuilder.AddToolBarButton(FRichCurveEditorCommands::Get().InterpolationCubicAuto);
ToolbarBuilder.AddToolBarButton(FRichCurveEditorCommands::Get().InterpolationCubicUser);
ToolbarBuilder.AddToolBarButton(FRichCurveEditorCommands::Get().InterpolationCubicBreak);
ToolbarBuilder.AddToolBarButton(FRichCurveEditorCommands::Get().InterpolationLinear);
ToolbarBuilder.AddToolBarButton(FRichCurveEditorCommands::Get().InterpolationConstant);
}
ToolbarBuilder.EndSection();
ToolbarBuilder.BeginSection("Snap");
{
ToolbarBuilder.AddToolBarButton(FRichCurveEditorCommands::Get().ToggleSnapping);
ToolbarBuilder.AddWidget(InputSnapWidget);
ToolbarBuilder.AddWidget(OutputSnapWidget);
}
ToolbarBuilder.EndSection();
}
};
TSharedPtr<FExtender> ToolbarExtender = MakeShareable(new FExtender);
TSharedRef<SWidget> InputSnapWidget =
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.Padding(4)
.AutoHeight()
[
SNew(STextBlock)
.Text(LOCTEXT("InputSnap", "Time Snap"))
]
+ SVerticalBox::Slot()
.Padding(4)
.AutoHeight()
[
SNew(SComboButton)
.ContentPadding(1)
.OnGetMenuContent(this, &FCurveAssetEditor::BuildInputSnapMenu)
.ButtonContent()
[
SNew(SEditableTextBox)
.Text(this, &FCurveAssetEditor::GetInputSnapText)
.OnTextCommitted(this, &FCurveAssetEditor::InputSnapTextComitted)
]
];
TSharedRef<SWidget> OutputSnapWidget =
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.Padding(4)
.AutoHeight()
[
SNew(STextBlock)
.Text(LOCTEXT("OutputSnap", "Value Snap"))
]
+ SVerticalBox::Slot()
.Padding(4)
.AutoHeight()
[
SNew(SComboButton)
.ContentPadding(1)
.OnGetMenuContent(this, &FCurveAssetEditor::BuildOutputSnapMenu)
.ButtonContent()
[
SNew(SEditableTextBox)
.Text(this, &FCurveAssetEditor::GetOutputSnapText)
.OnTextCommitted(this, &FCurveAssetEditor::OutputSnapTextComitted)
]
];
ToolbarExtender->AddToolBarExtension(
"Asset",
EExtensionHook::After,
TrackWidget->GetCommands(),
FToolBarExtensionDelegate::CreateStatic(&Local::FillToolbar, InputSnapWidget, OutputSnapWidget)
);
return ToolbarExtender;
}
示例9: LOCTEXT
FText FCurveAssetEditor::GetBaseToolkitName() const
{
return LOCTEXT( "AppLabel", "Curve Asset Editor" );
}
示例10: UpdatePower
void UFlareSpacecraftDamageSystem::TickSystem(float DeltaSeconds)
{
// Apply heat variation : add producted heat then substract radiated heat.
// Get the to heat production and heat sink surface
float HeatProduction = 0.f;
float HeatSinkSurface = 0.f;
for (int32 i = 0; i < Components.Num(); i++)
{
UFlareSpacecraftComponent* Component = Cast<UFlareSpacecraftComponent>(Components[i]);
HeatProduction += Component->GetHeatProduction();
HeatSinkSurface += Component->GetHeatSinkSurface();
}
// Add a part of sun radiation to ship heat production
// Sun flow is 3.094KW/m^2 and keep only half and modulate 90% by sun occlusion
HeatProduction += HeatSinkSurface * 3.094 * 0.5 * (1 - 0.9 * Spacecraft->GetGame()->GetPlanetarium()->GetSunOcclusion());
// Heat up
Data->Heat += HeatProduction * DeltaSeconds;
// Radiate: Stefan-Boltzmann constant=5.670373e-8
float Temperature = Data->Heat / Description->HeatCapacity;
float HeatRadiation = 0.f;
if (Temperature > 0)
{
HeatRadiation = HeatSinkSurface * 5.670373e-8 * FMath::Pow(Temperature, 4) / 1000;
}
// Don't radiate too much energy : negative temperature is not possible
Data->Heat -= FMath::Min(HeatRadiation * DeltaSeconds, Data->Heat);
// Power outage
if (Data->PowerOutageDelay > 0)
{
Data->PowerOutageDelay -= DeltaSeconds;
if (Data->PowerOutageDelay <=0)
{
Data->PowerOutageDelay = 0;
UpdatePower(); // To update light
}
}
// Update Alive status
if (WasAlive && !Parent->IsAlive())
{
AFlarePlayerController* PC = Spacecraft->GetGame()->GetPC();
// Player kill
if (PC && LastDamageCauser == PC->GetShipPawn() && Spacecraft != PC->GetShipPawn())
{
PC->Notify(LOCTEXT("ShipKilled", "Target destroyed"),
FText::Format(LOCTEXT("ShipKilledFormat", "You destroyed a ship ({0}-class)"), Spacecraft->GetParent()->GetDescription()->Name),
FName("ship-killed"),
EFlareNotification::NT_Info);
}
// Company kill
else if (PC && LastDamageCauser && PC->GetCompany() == LastDamageCauser->GetParent()->GetCompany())
{
PC->Notify(LOCTEXT("ShipKilledCompany", "Target destroyed"),
FText::Format(LOCTEXT("ShipKilledCompanyFormat", "Your {0}-class ship destroyed a ship ({1}-class)"),
Spacecraft->GetParent()->GetDescription()->Name,
LastDamageCauser->GetParent()->GetDescription()->Name),
FName("ship-killed"),
EFlareNotification::NT_Info);
}
WasAlive = false;
OnControlLost();
}
TimeSinceLastExternalDamage += DeltaSeconds;
}
示例11: MenuBuilder
TSharedRef<SWidget> FCurveAssetEditor::BuildOutputSnapMenu()
{
FMenuBuilder MenuBuilder(true, NULL);
FUIAction OneThousandthAction(FExecuteAction::CreateSP(this, &FCurveAssetEditor::SetOutputSnap, 0.001f));
MenuBuilder.AddMenuEntry(LOCTEXT("OutputSnap_OneThousandth", "0.001"), LOCTEXT("OutputSnap_OneThousandth", "Set snap to 1/1000th"), FSlateIcon(), OneThousandthAction);
FUIAction OneHundredthAction(FExecuteAction::CreateSP(this, &FCurveAssetEditor::SetOutputSnap, 0.01f));
MenuBuilder.AddMenuEntry(LOCTEXT("OutputSnap_OneHundredth", "0.01"), LOCTEXT("OutputSnap_OneHundredth", "Set snap to 1/100th"), FSlateIcon(), OneHundredthAction);
FUIAction OneTenthAction(FExecuteAction::CreateSP(this, &FCurveAssetEditor::SetOutputSnap, 0.1f));
MenuBuilder.AddMenuEntry(LOCTEXT("OutputSnap_OneTenth", "0.1"), LOCTEXT("OutputSnap_OneTenth", "Set snap to 1/10th"), FSlateIcon(), OneTenthAction);
FUIAction OneAction(FExecuteAction::CreateSP(this, &FCurveAssetEditor::SetOutputSnap, 1.0f));
MenuBuilder.AddMenuEntry(LOCTEXT("OutputSnap_One", "1"), LOCTEXT("OutputSnap_One", "Set snap to 1h"), FSlateIcon(), OneAction);
FUIAction TenAction(FExecuteAction::CreateSP(this, &FCurveAssetEditor::SetOutputSnap, 10.0f));
MenuBuilder.AddMenuEntry(LOCTEXT("OutputSnap_Ten", "10"), LOCTEXT("OutputSnap_Ten", "Set snap to 10"), FSlateIcon(), TenAction);
FUIAction HundredAction(FExecuteAction::CreateSP(this, &FCurveAssetEditor::SetOutputSnap, 100.0f));
MenuBuilder.AddMenuEntry(LOCTEXT("OutputSnap_OneHundred", "100"), LOCTEXT("OutputSnap_OneHundred", "Set snap to 100"), FSlateIcon(), HundredAction);
return MenuBuilder.MakeWidget();
}
示例12: LOCTEXT
FString FDefaultSourceControlProvider::GetStatusText() const
{
return LOCTEXT("SourceControlDisabled", "Source control is disabled").ToString();
}
示例13: FMessageLog
void FDefaultSourceControlProvider::Init(bool bForceConnection)
{
FMessageLog("SourceControl").Info(LOCTEXT("SourceControlDisabled", "Source control is disabled"));
}
示例14: SNew
void FAndroidTargetSettingsCustomization::BuildAppManifestSection(IDetailLayoutBuilder& DetailLayout)
{
// Cache some categories
IDetailCategoryBuilder& APKPackagingCategory = DetailLayout.EditCategory(TEXT("APKPackaging"));
IDetailCategoryBuilder& BuildCategory = DetailLayout.EditCategory(TEXT("Build"));
IDetailCategoryBuilder& SigningCategory = DetailLayout.EditCategory(TEXT("DistributionSigning"));
TSharedRef<SPlatformSetupMessage> PlatformSetupMessage = SNew(SPlatformSetupMessage, GameProjectPropertiesPath)
.PlatformName(LOCTEXT("AndroidPlatformName", "Android"))
.OnSetupClicked(this, &FAndroidTargetSettingsCustomization::CopySetupFilesIntoProject);
SetupForPlatformAttribute = PlatformSetupMessage->GetReadyToGoAttribute();
APKPackagingCategory.AddCustomRow(LOCTEXT("Warning", "Warning"), false)
.WholeRowWidget
[
PlatformSetupMessage
];
APKPackagingCategory.AddCustomRow(LOCTEXT("UpgradeInfo", "Upgrade Info"), false)
.WholeRowWidget
[
SNew(SBorder)
.Padding(1)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.Padding(FMargin(10, 10, 10, 10))
.FillWidth(1.0f)
[
SNew(SRichTextBlock)
.Text(LOCTEXT("UpgradeInfoMessage", "<RichTextBlock.TextHighlight>Note to users from 4.6 or earlier</>: We now <RichTextBlock.TextHighlight>GENERATE</> an AndroidManifest.xml when building, so if you have customized your .xml file, you will need to put all of your changes into the below settings. Note that we don't touch your AndroidManifest.xml that is in your project directory.\nAdditionally, we no longer use SigningConfig.xml, the settings are now set in the Distribution Signing section.\n\nThere is currently no .obb file downloader support in the engine, so if you don't package your data into your .apk (see the below setting and its tooltip about 50MB limit), device is not guaranteed to have the .obb file downloaded in all cases. Until Unreal Engine v4.8, there won't be a way for your app to download the .obb file from the Google Play Store. See <a id=\"browser\" href=\"http://developer.android.com/google/play/expansion-files.html#Downloading\" style=\"HoverOnlyHyperlink\">http://developer.android.com/google/play/expansion-files.html</> for more information."))
.TextStyle(FEditorStyle::Get(), "MessageLog")
.DecoratorStyleSet(&FEditorStyle::Get())
.AutoWrapText(true)
+ SRichTextBlock::HyperlinkDecorator(TEXT("browser"), FSlateHyperlinkRun::FOnClick::CreateStatic(&OnBrowserLinkClicked))
]
]
];
APKPackagingCategory.AddCustomRow(LOCTEXT("BuildFolderLabel", "Build Folder"), false)
.IsEnabled(SetupForPlatformAttribute)
.NameContent()
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.Padding(FMargin(0, 1, 0, 1))
.FillWidth(1.0f)
[
SNew(STextBlock)
.Text(LOCTEXT("BuildFolderLabel", "Build Folder"))
.Font(DetailLayout.GetDetailFont())
]
]
.ValueContent()
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SButton)
.Text(LOCTEXT("OpenBuildFolderButton", "Open Build Folder"))
.ToolTipText(LOCTEXT("OpenManifestFolderButton_Tooltip", "Opens the folder containing the build files in Explorer or Finder (it's recommended you check these in to source control to share with your team)"))
.OnClicked(this, &FAndroidTargetSettingsCustomization::OpenBuildFolder)
]
];
// Signing category
SigningCategory.AddCustomRow(LOCTEXT("SigningHyperlink", "Signing Hyperlink"), false)
.WholeRowWidget
[
SNew(SBox)
.HAlign(HAlign_Center)
[
SNew(SHyperlinkLaunchURL, TEXT("http://developer.android.com/tools/publishing/app-signing.html#releasemode"))
.Text(LOCTEXT("AndroidDeveloperSigningPage", "Android Developer page on Signing for Distribution"))
.ToolTipText(LOCTEXT("AndroidDeveloperSigningPageTooltip", "Opens a page that discusses the signing using keytool"))
]
];
// Google Play category
IDetailCategoryBuilder& GooglePlayCategory = DetailLayout.EditCategory(TEXT("GooglePlayServices"));
TSharedRef<SPlatformSetupMessage> GooglePlaySetupMessage = SNew(SPlatformSetupMessage, GameGooglePlayAppIDPath)
.PlatformName(LOCTEXT("GooglePlayPlatformName", "Google Play services"))
.OnSetupClicked(this, &FAndroidTargetSettingsCustomization::CopyGooglePlayAppIDFileIntoProject);
SetupForGooglePlayAttribute = GooglePlaySetupMessage->GetReadyToGoAttribute();
GooglePlayCategory.AddCustomRow(LOCTEXT("Warning", "Warning"), false)
.WholeRowWidget
[
GooglePlaySetupMessage
];
GooglePlayCategory.AddCustomRow(LOCTEXT("AppIDHyperlink", "App ID Hyperlink"), false)
.WholeRowWidget
[
SNew(SBox)
.HAlign(HAlign_Center)
//.........这里部分代码省略.........
示例15: LOCTEXT
FText FSubversionSourceControlState::GetDisplayName() const
{
if(LockState == ELockState::Locked)
{
return LOCTEXT("Locked", "Locked For Editing");
}
else if(LockState == ELockState::LockedOther)
{
return FText::Format( LOCTEXT("LockedOther", "Locked by "), FText::FromString(LockUser) );
}
switch(WorkingCopyState) //-V719
{
case EWorkingCopyState::Unknown:
return LOCTEXT("Unknown", "Unknown");
case EWorkingCopyState::Pristine:
return LOCTEXT("Pristine", "Pristine");
case EWorkingCopyState::Added:
if(bCopied)
{
return LOCTEXT("Added", "Added With History");
}
else
{
return LOCTEXT("Added", "Added");
}
case EWorkingCopyState::Deleted:
return LOCTEXT("Deleted", "Deleted");
case EWorkingCopyState::Modified:
return LOCTEXT("Modified", "Modified");
case EWorkingCopyState::Replaced:
return LOCTEXT("Replaced", "Replaced");
case EWorkingCopyState::Conflicted:
return LOCTEXT("ContentsConflict", "Contents Conflict");
case EWorkingCopyState::External:
return LOCTEXT("External", "External");
case EWorkingCopyState::Ignored:
return LOCTEXT("Ignored", "Ignored");
case EWorkingCopyState::Incomplete:
return LOCTEXT("Incomplete", "Incomplete");
case EWorkingCopyState::Merged:
return LOCTEXT("Merged", "Merged");
case EWorkingCopyState::NotControlled:
return LOCTEXT("NotControlled", "Not Under Source Control");
case EWorkingCopyState::Obstructed:
return LOCTEXT("Obstructed", "Obstructed By Other Type");
case EWorkingCopyState::Missing:
return LOCTEXT("Missing", "Missing");
}
return FText();
}