public void OnGUI(Rect r) { var line = EditorGUIUtility.singleLineHeight + 2; var cHeight = EditorGUIUtility.singleLineHeight; float b = r.y + 5; int i = 0; LocalizationUnitHandle handleToRemove = null; foreach (var h in Handles) { GUI.Label(new Rect(r.x, b + line * i * 2, 150f, cHeight), h.Pack.Name); var oldValue = h.GetText(Key); var newValue = EditorGUI.TextArea(new Rect(r.x + 150f, b + line * i * 2, r.width - 150f - 60f, cHeight * 2), oldValue); if (oldValue != newValue) { h.SetText(Key, newValue); h.SaveUnit(); } if (GUI.Button(new Rect(r.x + r.width - 60f, b + line * i * 2, 60f, cHeight * 2), "Remove")) { handleToRemove = h; } i++; } if (handleToRemove != null) { handleToRemove.RemoveKey(Key); handleToRemove.SaveUnit(); Refresh(); } int selected = EditorGUI.Popup(new Rect(r.x, b + line * i * 2, 100f, cHeight), 0, new string[] { "Add localization" }.Concat( UnaddedPacks.Select(_ => $"{_.Name} ({_.Guid})")).ToArray()) ; if (selected != 0) { var packToAdd = UnaddedPacks[selected - 1]; packToAdd.RequestUnitHandle(UnitPath, true).AddKey(Key); Refresh(); } }
private void AddLocalizationElement(LocalizationUnitHandle handle, string key) { var container = this.Q <Box>("localizations"); var box = new Box(); box.name = "localization-element"; var label = new Label(handle.Pack.Name); label.name = "localization-label"; var field = new TextField(); field.name = "localization-field"; field.value = handle.GetText(key); field.RegisterCallback <ChangeEvent <string> >((s) => { handle.SetText(key, s.newValue); }); field.RegisterCallback <FocusInEvent>((e) => { field.SetValueWithoutNotify(handle.GetText(key)); }); field.RegisterCallback <FocusOutEvent>((e) => { handle.SaveUnit(); }); var removeButton = new Button(); field.multiline = true; removeButton.clickable.clicked += () => { handle.RemoveKey(key); Refresh(); }; removeButton.name = "localization-expand"; removeButton.text = "Remove"; box.Add(label); box.Add(field); box.Add(removeButton); container.Add(box); }