private void DrawLanguages(LeanLocalization localization) { var labelA = Reserve(); var valueA = Reserve(ref labelA, 35.0f); EditorGUI.LabelField(labelA, "Languages", EditorStyles.boldLabel); // Add a new language? if (GUI.Button(valueA, "Add") == true) { MarkAsModified(); var menu = new GenericMenu(); for (var i = 0; i < presetLanguages.Count; i++) { var presetLanguage = presetLanguages[i]; menu.AddItem(new GUIContent(presetLanguage.Name), false, () => localization.AddLanguage(presetLanguage.Name, presetLanguage.CultureName)); } menu.DropDown(valueA); } existingLanguages.Clear(); // Draw all added languages for (var i = 0; i < localization.Languages.Count; i++) { var language = localization.Languages[i]; var labelB = Reserve(); var valueB = Reserve(ref labelB, 20.0f); // Edit language name or remove if (languageIndex == i) { BeginModifications(); { localization.Languages[i] = EditorGUI.TextField(labelB, language); } EndModifications(); if (GUI.Button(valueB, "X") == true) { MarkAsModified(); localization.Languages.RemoveAt(i); languageIndex = -1; } } // Expand language? if (EditorGUI.Foldout(labelB, languageIndex == i, languageIndex == i ? "" : language) == true) { if (languageIndex != i) { languageIndex = i; reverseIndex = -1; } EditorGUI.indentLevel += 1; { DrawReverse(localization, language); } EditorGUI.indentLevel -= 1; EditorGUILayout.Separator(); } else if (languageIndex == i) { languageIndex = -1; reverseIndex = -1; } // Already added? if (existingLanguages.Contains(language) == true) { EditorGUILayout.HelpBox("This language already exists in the list!", MessageType.Warning); } else { existingLanguages.Add(language); } } }