Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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);
        }