167 lines
6.0 KiB
C++
167 lines
6.0 KiB
C++
|
|
// Tencent is pleased to support the open source community by making UnLua available.
|
||
|
|
//
|
||
|
|
// Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
|
||
|
|
//
|
||
|
|
// Licensed under the MIT License (the "License");
|
||
|
|
// you may not use this file except in compliance with the License. You may obtain a copy of the License at
|
||
|
|
//
|
||
|
|
// http://opensource.org/licenses/MIT
|
||
|
|
//
|
||
|
|
// Unless required by applicable law or agreed to in writing,
|
||
|
|
// software distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
|
// See the License for the specific language governing permissions and limitations under the License.
|
||
|
|
|
||
|
|
#include "UnLuaAboutScreen.h"
|
||
|
|
#include "Misc/EngineVersionComparison.h"
|
||
|
|
#include "Widgets/SBoxPanel.h"
|
||
|
|
#include "Widgets/SOverlay.h"
|
||
|
|
#include "Widgets/SWindow.h"
|
||
|
|
#include "Framework/Application/SlateApplication.h"
|
||
|
|
#include "Widgets/Layout/SSpacer.h"
|
||
|
|
#include "Widgets/Images/SImage.h"
|
||
|
|
#include "Widgets/Text/STextBlock.h"
|
||
|
|
#include "Widgets/Input/SEditableText.h"
|
||
|
|
#include "Widgets/Input/SButton.h"
|
||
|
|
#include "Widgets/Views/STableViewBase.h"
|
||
|
|
#include "Widgets/Views/STableRow.h"
|
||
|
|
#include "Widgets/Views/SListView.h"
|
||
|
|
#include "Styling/CoreStyle.h"
|
||
|
|
#include "EditorStyleSet.h"
|
||
|
|
#include "UnLuaEditorFunctionLibrary.h"
|
||
|
|
#include "UnLuaEditorStyle.h"
|
||
|
|
|
||
|
|
#define LOCTEXT_NAMESPACE "UnLuaAboutScreen"
|
||
|
|
|
||
|
|
void SUnLuaAboutScreen::Construct(const FArguments& InArgs)
|
||
|
|
{
|
||
|
|
#ifdef _MSC_VER
|
||
|
|
#pragma warning(push)
|
||
|
|
#pragma warning(disable : 4428) // universal-character-name encountered in source
|
||
|
|
#endif
|
||
|
|
AboutLines.Add(MakeShareable(new FLineDefinition(LOCTEXT("Copyright1", "https://github.com/Tencent/UnLua"), 8, FLinearColor(1.f, 1.f, 1.f), FMargin(0.f))));
|
||
|
|
AboutLines.Add(MakeShareable(new FLineDefinition(LOCTEXT("Copyright2", "Tencent is pleased to support the open source community by making UnLua available."), 8, FLinearColor(1.f, 1.f, 1.f), FMargin(0.0f, 8.0f))));
|
||
|
|
AboutLines.Add(MakeShareable(new FLineDefinition(LOCTEXT("Copyright3", "Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved."), 8, FLinearColor(1.f, 1.f, 1.f), FMargin(0.0f, 2.0f))));
|
||
|
|
#ifdef _MSC_VER
|
||
|
|
#pragma warning(pop)
|
||
|
|
#endif
|
||
|
|
|
||
|
|
FText Version = FText::Format(LOCTEXT("VersionLabel", "Version: {0}"), FText::FromString(UUnLuaEditorFunctionLibrary::GetCurrentVersion()));
|
||
|
|
|
||
|
|
ChildSlot
|
||
|
|
[
|
||
|
|
SNew(SOverlay)
|
||
|
|
+ SOverlay::Slot()
|
||
|
|
[
|
||
|
|
SNew(SVerticalBox)
|
||
|
|
+ SVerticalBox::Slot()
|
||
|
|
.AutoHeight()
|
||
|
|
[
|
||
|
|
SNew(SHorizontalBox)
|
||
|
|
+ SHorizontalBox::Slot()
|
||
|
|
.AutoWidth()
|
||
|
|
.VAlign(VAlign_Top)
|
||
|
|
.Padding(FMargin(10.f, 10.f, 0.f, 0.f))
|
||
|
|
[
|
||
|
|
SAssignNew(LogoButton, SButton)
|
||
|
|
#if UE_VERSION_OLDER_THAN(5, 1, 0)
|
||
|
|
.ButtonStyle(FEditorStyle::Get(), "NoBorder")
|
||
|
|
#else
|
||
|
|
.ButtonStyle(FAppStyle::Get(), "NoBorder")
|
||
|
|
#endif
|
||
|
|
.OnClicked(this, &SUnLuaAboutScreen::OnLogoButtonClicked)
|
||
|
|
[
|
||
|
|
SNew(SImage).Image(FUnLuaEditorStyle::GetInstance()->GetBrush("UnLuaEditor.UnLuaLogo"))
|
||
|
|
]
|
||
|
|
]
|
||
|
|
+ SHorizontalBox::Slot()
|
||
|
|
.AutoWidth()
|
||
|
|
.VAlign(VAlign_Top)
|
||
|
|
.Padding(FMargin(10.f, 10.f, 0.f, 0.f))
|
||
|
|
+ SHorizontalBox::Slot()
|
||
|
|
.FillWidth(1.f)
|
||
|
|
.HAlign(HAlign_Right)
|
||
|
|
.Padding(FMargin(0.f, 52.f, 7.f, 0.f))
|
||
|
|
[
|
||
|
|
SNew(SEditableText)
|
||
|
|
.ColorAndOpacity(FLinearColor(0.7f, 0.7f, 0.7f))
|
||
|
|
.IsReadOnly(true)
|
||
|
|
.Text(Version)
|
||
|
|
]
|
||
|
|
]
|
||
|
|
+ SVerticalBox::Slot()
|
||
|
|
.Padding(FMargin(5.f, 5.f, 5.f, 5.f))
|
||
|
|
.VAlign(VAlign_Top)
|
||
|
|
[
|
||
|
|
SNew(SListView<TSharedRef<FLineDefinition>>)
|
||
|
|
.ListItemsSource(&AboutLines)
|
||
|
|
.OnGenerateRow(this, &SUnLuaAboutScreen::MakeAboutTextItemWidget)
|
||
|
|
.SelectionMode(ESelectionMode::None)
|
||
|
|
]
|
||
|
|
+ SVerticalBox::Slot()
|
||
|
|
.AutoHeight()
|
||
|
|
[
|
||
|
|
SNew(SHorizontalBox)
|
||
|
|
+ SHorizontalBox::Slot()
|
||
|
|
.HAlign(HAlign_Left)
|
||
|
|
.Padding(FMargin(5.f, 0.f, 5.f, 5.f))
|
||
|
|
+ SHorizontalBox::Slot()
|
||
|
|
.AutoWidth()
|
||
|
|
.HAlign(HAlign_Right)
|
||
|
|
.VAlign(VAlign_Bottom)
|
||
|
|
.Padding(FMargin(5.f, 0.f, 5.f, 5.f))
|
||
|
|
[
|
||
|
|
SNew(SButton)
|
||
|
|
.HAlign(HAlign_Center)
|
||
|
|
.VAlign(VAlign_Center)
|
||
|
|
.Text(LOCTEXT("Close", "Close"))
|
||
|
|
.ButtonColorAndOpacity(FLinearColor(0.6f, 0.6f, 0.6f))
|
||
|
|
.OnClicked(this, &SUnLuaAboutScreen::OnClose)
|
||
|
|
]
|
||
|
|
]
|
||
|
|
]
|
||
|
|
];
|
||
|
|
}
|
||
|
|
|
||
|
|
TSharedRef<ITableRow> SUnLuaAboutScreen::MakeAboutTextItemWidget(TSharedRef<FLineDefinition> Item, const TSharedRef<STableViewBase>& OwnerTable)
|
||
|
|
{
|
||
|
|
if (Item->Text.IsEmpty())
|
||
|
|
{
|
||
|
|
return
|
||
|
|
SNew(STableRow< TSharedPtr<FString> >, OwnerTable)
|
||
|
|
.Padding(6.0f)
|
||
|
|
[
|
||
|
|
SNew(SSpacer)
|
||
|
|
];
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
return
|
||
|
|
SNew(STableRow< TSharedPtr<FString> >, OwnerTable)
|
||
|
|
.Padding(Item->Margin)
|
||
|
|
[
|
||
|
|
SNew(STextBlock)
|
||
|
|
.ColorAndOpacity(Item->TextColor)
|
||
|
|
.Font(FCoreStyle::GetDefaultFontStyle("Regular", Item->FontSize))
|
||
|
|
.Text(Item->Text)
|
||
|
|
];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
FReply SUnLuaAboutScreen::OnLogoButtonClicked()
|
||
|
|
{
|
||
|
|
const TCHAR* URL = TEXT("cmd");
|
||
|
|
const TCHAR* Params = TEXT("/k start https://github.com/Tencent/UnLua");
|
||
|
|
FPlatformProcess::ExecProcess(URL, Params, nullptr, nullptr, nullptr);
|
||
|
|
return FReply::Handled();
|
||
|
|
}
|
||
|
|
|
||
|
|
FReply SUnLuaAboutScreen::OnClose()
|
||
|
|
{
|
||
|
|
TSharedRef<SWindow> ParentWindow = FSlateApplication::Get().FindWidgetWindow(AsShared()).ToSharedRef();
|
||
|
|
FSlateApplication::Get().RequestDestroyWindow(ParentWindow);
|
||
|
|
return FReply::Handled();
|
||
|
|
}
|
||
|
|
|
||
|
|
#undef LOCTEXT_NAMESPACE
|