예제 #1
0
        static void LoadStringTables(string path, string ext, ref LELangDictCollection langCollection)
        {
            if (langCollection == null)
            {
                langCollection = new LELangDictCollection();
            }
            else
            {
                langCollection.Clear();
            }

            // Check if the localization directory exists, if so then load
            // If not, do nothing
            if (Directory.Exists(path))
            {
                string[] stringTables = Directory.GetFiles(path, "*" + ext);
                foreach (string table in stringTables)
                {
                    string langCode = Path.GetFileName(table).Replace(ext, string.Empty);

                    Dictionary <string, object> tempDict = (Dictionary <string, object>)Json.Deserialize(File.ReadAllText(table));
                    LELangDict langDict = tempDict.ToDictionary(k => k.Key, v => v.Value.ToString());

                    langCollection.Add(langCode, langDict);
                }
            }
        }
 void DrawLocString(LELangDict langDict, KeyValuePair <string, string> locStringEntry)
 {
     if (editingFields.Contains(locStringEntry.Key))
     {
         DrawEditLocString(langDict, locStringEntry);
     }
     else
     {
         DrawReadOnlyLocString(langDict, locStringEntry);
     }
 }
예제 #3
0
        public static void AddNewLanguage(string name)
        {
            LELangDict newLang    = new LELangDict();
            LELangDict newVisLang = new LELangDict();

            MasterKeys.ForEach(masterKey => {
                newLang.Add(masterKey, string.Empty);
                newVisLang.Add(Logical2Visual(masterKey), string.Empty);
            });

            AllLangsLogical.Add(name, newLang);
            AllLangsVisual.Add(name, newVisLang);

            NeedsSave = true;
        }
예제 #4
0
        static void RebuildVisualTables()
        {
            string visKey;
            string visValue;

            AllLangsVisual.Clear();
            foreach (var langKey in AllLangsLogical.Keys)
            {
                LELangDict visLang      = new LELangDict();
                var        string_table = AllLangsLogical[langKey];

                foreach (var kvp in string_table)
                {
                    visKey   = Logical2Visual(kvp.Key);
                    visValue = Logical2Visual(kvp.Value);
                    visLang.Add(visKey, visValue);
                }
                AllLangsVisual.Add(langKey, visLang);
            }
        }
        void DrawReadOnlyLocString(LELangDict langDict, KeyValuePair <string, string> locStringEntry)
        {
            // Draw read only loc section
            string visKey   = LEStringTableEditor.GetPresentationFromCache(locStringEntry.Key);
            string visValue = LEStringTableEditor.GetPresentationValue(locStringEntry.Key);

            // Key label position
            Rect labelPosition = GetResizableTextBoxPosition(locStringEntry.Key, boxWidth, keyStyle);

            // Key box
            GUI.Box(labelPosition, string.Empty);

            // Key label
            if (GUI.Button(labelPosition, visKey, keyStyle))
            {
                SetLocStringToEditMode(locStringEntry);
            }
            drawHelper.CurrentLinePosition += labelPosition.width + 2f;

            // Value label position
            Rect valuePosition = GetResizableTextBoxPosition(visValue, boxWidth, valueStyle);

            // Value box
            GUI.Box(valuePosition, string.Empty);

            // Value label
            if (GUI.Button(valuePosition, visValue, valueStyle))
            {
                SetLocStringToEditMode(locStringEntry);
            }
            drawHelper.CurrentLinePosition += valuePosition.width + 2f;

            float height = Math.Max(labelPosition.height, valuePosition.height);

            drawHelper.NewLine(height / drawHelper.LineHeight - 1);
        }
        void DrawEditLocString(LELangDict langDict, KeyValuePair <string, string> locStringEntry)
        {
            Rect  labelPosition;
            Rect  valuePosition;
            float height;

            if (isRTL)
            {
                drawHelper.NewLine();
                DrawVisualPresentation(editFieldTextDict[locStringEntry.Key + LEConstants.KeyMetaTag],
                                       editFieldTextDict[locStringEntry.Key + LEConstants.ValueMetaTag]);
            }

            // Key label position
            labelPosition = GetResizableTextBoxPosition(editFieldTextDict[locStringEntry.Key + LEConstants.KeyMetaTag], boxWidth, keyStyle);

            // Key box
            GUI.Box(labelPosition, string.Empty);

            // Key label
            editFieldTextDict[locStringEntry.Key + LEConstants.KeyMetaTag] =
                DrawResizableTextBox(editFieldTextDict[locStringEntry.Key + LEConstants.KeyMetaTag], labelPosition, keyStyle);

            // Value label position
            valuePosition = GetResizableTextBoxPosition(editFieldTextDict[locStringEntry.Key + LEConstants.ValueMetaTag], boxWidth, valueStyle);

            // Value box
            GUI.Box(valuePosition, string.Empty);

            // Value label
            editFieldTextDict[locStringEntry.Key + LEConstants.ValueMetaTag] =
                DrawResizableTextBox(editFieldTextDict[locStringEntry.Key + LEConstants.ValueMetaTag], valuePosition, valueStyle);

            height = Math.Max(labelPosition.height, valuePosition.height);
            drawHelper.NewLine(height / drawHelper.LineHeight);

            drawHelper.NewLine(.25f);

            // Apply Button
            content.text = LEConstants.ApplyBtn;
            size         = GUI.skin.button.CalcSize(content);
            if (GUI.Button(new Rect(drawHelper.CurrentLinePosition, drawHelper.TopOfLine(), size.x, size.y), content))
            {
                string oldKey   = editFieldTextDict[locStringEntry.Key + LEConstants.OrigKeyMetaTag];
                string newKey   = editFieldTextDict[locStringEntry.Key + LEConstants.KeyMetaTag];
                string newValue = editFieldTextDict[locStringEntry.Key + LEConstants.ValueMetaTag];

                // Update the key
                if (!oldKey.Equals(newKey))
                {
                    renamedKeys.Add(oldKey, newKey);
                }

                // Update the value
                if (!newValue.Equals(locStringEntry.Value))
                {
                    updatedStringsForCurrent.Add(newKey, newValue);
                }

                SetDoneLocStringEditMode(locStringEntry);
            }
            drawHelper.CurrentLinePosition += size.x + 2f;

            // Cancel Button
            content.text = LEConstants.CancelBtn;
            size         = GUI.skin.button.CalcSize(content);
            if (GUI.Button(new Rect(drawHelper.CurrentLinePosition, drawHelper.TopOfLine(), size.x, size.y), content))
            {
                SetDoneLocStringEditMode(locStringEntry);
            }
            drawHelper.CurrentLinePosition += size.x + 2f;

            // Delete button
            content.text = LEConstants.DeleteBtn;
            size         = GUI.skin.button.CalcSize(content);
            if (GUI.Button(new Rect(drawHelper.CurrentLinePosition, drawHelper.TopOfLine(), size.x, size.y), content))
            {
                keysToRemove.Add(locStringEntry.Key);
                SetDoneLocStringEditMode(locStringEntry);
            }
            drawHelper.CurrentLinePosition += size.x + 2f;

            if (isRTL)
            {
                drawHelper.NewLine();
            }
        }