using System; using System.Linq; using AlicizaX.Localization.Runtime; using AlicizaX; using AlicizaX.Localization.Editor; using Paps.UnityToolbarExtenderUIToolkit; using UnityEditor; using UnityEngine; using UnityEngine.UIElements; [MainToolbarElement("LocalizationDropdownField", alignment: ToolbarAlign.Right, order: 0)] public class LocalizationDropdownField : IMGUIContainer { private static GUIContent appConfigBtContent; private static string[] _languageTypeNames; public void InitializeElement() { _languageTypeNames = LocalizationConfiguration.Instance.LanguageTypeNames.ToArray(); appConfigBtContent = EditorGUIUtility.TrTextContentWithIcon("", "", "Settings"); onGUIHandler = MyGUIMethod; } private void MyGUIMethod() { GUILayout.BeginHorizontal(); string title = GetPrefsStr(); appConfigBtContent.text = title; if (EditorGUILayout.DropdownButton(appConfigBtContent, FocusType.Passive, EditorStyles.toolbarPopup, GUILayout.MaxWidth(120))) { DrawEditorToolDropdownMenus(); } GUILayout.Space(5); GUILayout.EndHorizontal(); } static void DrawEditorToolDropdownMenus() { string langaugeName = GetPrefsStr(); GenericMenu popMenu = new GenericMenu(); for (int i = 0; i < _languageTypeNames.Length; i++) { var toolAttr = _languageTypeNames[i]; var selected = langaugeName == toolAttr; popMenu.AddItem(new GUIContent(toolAttr), selected, menuIdx => { ClickToolsSubmenu(toolAttr); }, toolAttr); } popMenu.ShowAsContext(); } static void ClickToolsSubmenu(string langaugeName) { EditorPrefs.SetString(LocalizationComponent.PrefsKey, langaugeName); Debug.Log(langaugeName); } static string GetPrefsStr() { return EditorPrefs.GetString(LocalizationComponent.PrefsKey, "None"); } }