public static void WriteConfigTo(string filePath, IniConfig config) { StringBuilder configSB = new StringBuilder(); configSB.AppendLine(INI_HEAD_CONTENT); dynamic dynamicConfig = config.AsDynamic(); Dictionary <string, IniGroup> groupDic = dynamicConfig.groupDic; if (groupDic != null && groupDic.Count > 0) { foreach (var kvp in groupDic) { IniGroup group = kvp.Value; configSB.AppendLine($"#{group.Name}|{group.Comment}"); dynamic dynamicGroup = group.AsDynamic(); Dictionary <string, IniData> dataDic = dynamicGroup.dataDic; foreach (var kvp2 in dataDic) { IniData data = kvp2.Value; configSB.AppendLine($"-{data.Key}|{data.Value}|{data.Comment}|{string.Join(",", data.OptionValues)}"); } } configSB.AppendLine(); } File.WriteAllText(filePath, configSB.ToString()); }
private void DrawGroup(IniGroup group) { EditorGUILayout.BeginVertical(EditorStyles.helpBox); { EditorGUILayout.BeginHorizontal(EditorStyles.toolbar); { EditorGUILayout.LabelField(new GUIContent(group.Name, group.Comment)); GUILayout.FlexibleSpace(); if (GUILayout.Button(Contents.DeleteGroupContent, EditorStyles.toolbarButton, GUILayout.Width(80))) { deleteData = new DeleteData() { groupName = group.Name }; } if (GUILayout.Button(Contents.AddDataContent, EditorStyles.toolbarButton, GUILayout.Width(80))) { PopupWindow.Show(new Rect(Event.current.mousePosition, Vector2.zero), new CreateIniDataContent(group, (groupName, dataKey) => { Repaint(); })); } } EditorGUILayout.EndHorizontal(); foreach (var dKVP in group.AsDynamic().dataDic) { if (string.IsNullOrEmpty(searchText) || dKVP.Key.ToLower().IndexOf(searchText) >= 0) { DrawData(group, dKVP.Value); } } } EditorGUILayout.EndVertical(); }