void FAssetTypeActions_DataTable::ExecuteExportAsJSON(TArray< TWeakObjectPtr<UObject> > Objects) { IDesktopPlatform* DesktopPlatform = FDesktopPlatformModule::Get(); const void* ParentWindowWindowHandle = FSlateApplication::Get().FindBestParentWindowHandleForDialogs(nullptr); for (auto ObjIt = Objects.CreateConstIterator(); ObjIt; ++ObjIt) { auto DataTable = Cast<UDataTable>((*ObjIt).Get()); if (DataTable) { const FText Title = FText::Format(LOCTEXT("DataTable_ExportJSONDialogTitle", "Export '{0}' as JSON..."), FText::FromString(*DataTable->GetName())); const FString CurrentFilename = DataTable->AssetImportData->GetFirstFilename(); const FString FileTypes = TEXT("Data Table JSON (*.json)|*.json"); TArray<FString> OutFilenames; DesktopPlatform->SaveFileDialog( ParentWindowWindowHandle, Title.ToString(), (CurrentFilename.IsEmpty()) ? TEXT("") : FPaths::GetPath(CurrentFilename), (CurrentFilename.IsEmpty()) ? TEXT("") : FPaths::GetBaseFilename(CurrentFilename) + TEXT(".json"), FileTypes, EFileDialogFlags::None, OutFilenames ); if (OutFilenames.Num() > 0) { FFileHelper::SaveStringToFile(DataTable->GetTableAsJSON(EDataTableExportFlags::UsePrettyPropertyNames | EDataTableExportFlags::UsePrettyEnumNames | EDataTableExportFlags::UseJsonObjectsForStructs), *OutFilenames[0]); } } } }
void FAssetTypeActions_DataTable::ExecuteJSON(TArray< TWeakObjectPtr<UObject> > Objects) { for (auto ObjIt = Objects.CreateConstIterator(); ObjIt; ++ObjIt) { auto Table = Cast<UDataTable>((*ObjIt).Get()); if (Table != NULL) { UE_LOG(LogDataTable, Log, TEXT("JSON DataTable : %s"), *Table->GetTableAsJSON()); } } }
void FAssetTypeActions_CurveTable::ExecuteExportAsJSON(TArray< TWeakObjectPtr<UObject> > Objects) { IDesktopPlatform* DesktopPlatform = FDesktopPlatformModule::Get(); void* ParentWindowWindowHandle = nullptr; IMainFrameModule& MainFrameModule = FModuleManager::LoadModuleChecked<IMainFrameModule>(TEXT("MainFrame")); const TSharedPtr<SWindow>& MainFrameParentWindow = MainFrameModule.GetParentWindow(); if ( MainFrameParentWindow.IsValid() && MainFrameParentWindow->GetNativeWindow().IsValid() ) { ParentWindowWindowHandle = MainFrameParentWindow->GetNativeWindow()->GetOSWindowHandle(); } for (auto ObjIt = Objects.CreateConstIterator(); ObjIt; ++ObjIt) { auto CurTable = Cast<UCurveTable>((*ObjIt).Get()); if (CurTable) { const FText Title = FText::Format(LOCTEXT("CurveTable_ExportCSVDialogTitle", "Export '{0}' as JSON..."), FText::FromString(*CurTable->GetName())); const FString CurrentFilename = (CurTable->ImportPath.IsEmpty()) ? TEXT("") : FReimportManager::ResolveImportFilename(CurTable->ImportPath, CurTable); const FString FileTypes = TEXT("Curve Table JSON (*.json)|*.json"); TArray<FString> OutFilenames; DesktopPlatform->SaveFileDialog( ParentWindowWindowHandle, Title.ToString(), (CurrentFilename.IsEmpty()) ? TEXT("") : FPaths::GetPath(CurrentFilename), (CurrentFilename.IsEmpty()) ? TEXT("") : FPaths::GetBaseFilename(CurrentFilename) + TEXT(".json"), FileTypes, EFileDialogFlags::None, OutFilenames ); if (OutFilenames.Num() > 0) { FFileHelper::SaveStringToFile(CurTable->GetTableAsJSON(), *OutFilenames[0]); } } } }