using UnityEditor; using UnityEditor.Localization; using UnityEngine; using Crowdin.Plugin.Helpers; using Crowdin.Plugin.Server_API.Helpers; namespace Crowdin.Editor.UnityLocalization { using Plugin.Helpers.PluginLocalization; using Plugin.Models; using Plugin.Operations; public class PushAssetsToCrowdin : BasePopupEditor { [MenuItem("Tools/Crowdin/Push assets to Crowdin", false, 92)] public static void OpenExportPopup() { InitPopup(LocalizationHelper.GetLocalStringByKey(LocalKeys.push_assets_popup_title)); } private TableSelector tableSelector; protected override void OnEnable() { base.OnEnable(); tableSelector = TableSelector.CreateForAssetTables(); } private void OnGUI() { if (!isBusy) { tableSelector.DrawLayout(); GUILayout.Space(10); if (GUILayout.Button(LocalizationHelper.GetLocalStringByKey(LocalKeys.push_assets_popup_title))) { if (!IsProjectSelected()) { return; } if (SettingsHelper.GetProjectType() is ProjectType.StringBased) { DialogUtility.NoAssetActionsInStringBasedProject(); return; } var assetsTableCollection = LocalizationEditorSettings.GetAssetTableCollections(); if (assetsTableCollection.Count is 0) { EditorUtility.DisplayDialog( LocalizationHelper.GetLocalStringByKey(LocalKeys.alert_title), LocalizationHelper.GetLocalStringByKey(LocalKeys.alert_push_assets), LocalizationHelper.GetLocalStringByKey(LocalKeys.alert_btn) ); return; } if (tableSelector.NoTablesAreSelected()) { DialogUtility.NoTablesAreSelected(); return; } tableSelector.SaveSettings(); var options = new PushAssetsOptions(tableSelector.ResolveTables()); RunOperation( (progress, cancellationToken) => PushAssets.RunAsync(options, progress, cancellationToken), result => { status.AppendLine(LocalizationHelper.GetLocalStringByKey( LocalKeys.assets_pushed, result.SentAssets.ToString())); }); } } OnGUIStatusLabel(); } protected override void OnDisable() { base.OnDisable(); tableSelector?.Dispose(); } } }