private void DisplayDataFields() { filter = EditorGUILayout.TextField("Search", filter, GUILayout.ExpandWidth(true)); GUILayout.Space(20); EditorGUILayout.LabelField(new GUIContent { text = "<b>Data : </b>" }, new GUIStyle { fontSize = 20, richText = true }); GUILayout.Space(10); scrollView = EditorGUILayout.BeginScrollView(scrollView); SerializedObject serializedObject = new SerializedObject(this); SerializedProperty keyValuePairListProperty = serializedObject.FindProperty("data.keyValuePairs"); for (int i = 0; i < keyValuePairListProperty.arraySize; i++) { var keyValuePairProp = keyValuePairListProperty.GetArrayElementAtIndex(i); var keyProp = keyValuePairProp.FindPropertyRelative("key"); var valueProp = keyValuePairProp.FindPropertyRelative("value"); if (filter == "" || keyProp.stringValue.StartsWith(filter)) { if (EditorGUILayout.PropertyField(keyValuePairProp)) { EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(keyProp); EditorGUILayout.PropertyField(valueProp, GUILayout.MinHeight(100.0f)); if (EditorGUI.EndChangeCheck()) { saved = false; } } LocalizationEditorUtils.DrawDivider(); GUILayout.Space(10.0f); } } serializedObject.ApplyModifiedProperties(); EditorGUILayout.EndScrollView(); EditorGUILayout.Separator(); if (GUILayout.Button("Add Pair")) { data.keyValuePairs.Add(new KeyValuePair()); } GUILayout.Space(20.0f); EditorGUI.BeginDisabledGroup(saved); if (filePath != null && (GUILayout.Button("Save File") || (EditorGUI.actionKey && sPressed))) { LocalizationEditorUtils.SaveDataToSetPath(filePath, data); saved = true; Repaint(); } EditorGUI.EndDisabledGroup(); if (GUILayout.Button("Save File As...")) { SaveData(); } if (GUILayout.Button("Sort")) { SortData(); } }
void MergeFiles() { var firstDict = new Dictionary <string, string>(); var secondDict = new Dictionary <string, string>(); EditorUtility.DisplayProgressBar("Merging data...", "Please stand by", 0); foreach (var pair in first.data.keyValuePairs) { if (!firstDict.ContainsKey(pair.key)) { firstDict.Add(pair.key, pair.value); } } foreach (var pair in second.data.keyValuePairs) { if (!secondDict.ContainsKey(pair.key)) { secondDict.Add(pair.key, pair.value); } } foreach (var key in firstDict.Keys) { if (!secondDict.ContainsKey(key)) { secondDict.Add(key, firstDict[key]); } } EditorUtility.DisplayProgressBar("Merging data...", "Please stand by", 50); foreach (var key in secondDict.Keys) { if (!firstDict.ContainsKey(key)) { firstDict.Add(key, secondDict[key]); } } EditorUtility.DisplayProgressBar("Merging data...", "Please stand by", 100); first.data.keyValuePairs.Clear(); second.data.keyValuePairs.Clear(); foreach (var key in firstDict.Keys) { var a = new KeyValuePair(); a.key = key; a.value = firstDict[key]; first.data.keyValuePairs.Add(a); } LocalizationEditorUtils.SaveDataToSetPath(first.path, first.data); foreach (var key in secondDict.Keys) { var a = new KeyValuePair(); a.key = key; a.value = secondDict[key]; second.data.keyValuePairs.Add(a); } LocalizationEditorUtils.SaveDataToSetPath(second.path, second.data); EditorUtility.ClearProgressBar(); EditorUtility.DisplayDialog("Operation successful!", "Your data has been merged successfully", "OK"); }