private static void AddPairToFile(DefinePair pair) { string pairStr = pair.ToFileString(); string appendStr = pairStr + ";"; File.AppendAllText(_pathToFile, appendStr); }
private void OnGUI() { CheckToReadPairsFromFile(); GUILayout.Label("Defines", EditorStyles.boldLabel); int i = 0; var definesToDelete = new List <int>(); foreach (DefinePair pair in _defineSymbols) { GUILayout.BeginHorizontal(); GUILayout.Label(pair.defineSymbol, GUILayout.Width(200)); bool newOn = EditorGUILayout.Toggle("", pair.on, GUILayout.MinWidth(30)); if (newOn != pair.on) { pair.on = newOn; UpdatePairInFile(pair); } if (GUILayout.Button("Delete", GUILayout.Width(100))) { definesToDelete.Add(i); } GUILayout.EndHorizontal(); i++; } foreach (int deleteIndex in definesToDelete) { DeletePairFromFile(_defineSymbols[deleteIndex]); _defineSymbols.RemoveAt(deleteIndex); } GUILayout.BeginHorizontal(); _newDefine = GUILayout.TextField(_newDefine); if (GUILayout.Button("Add New", GUILayout.Width(100)) && !string.IsNullOrEmpty(_newDefine)) { var newPair = new DefinePair { defineSymbol = _newDefine, on = false, }; _defineSymbols.Add(newPair); AddPairToFile(newPair); SortDefineSymbols(); _newDefine = ""; } GUILayout.EndHorizontal(); if (GUILayout.Button("Compile")) { SetScriptDefines(); } }
public static DefinePair ParseLine(string line) { string[] split = line.Split(','); if (split.Length != 2) { return(null); } var pair = new DefinePair { defineSymbol = split[0], on = split[1] == "1", }; return(pair); }
private static void DeletePairFromFile(DefinePair pair) { string needle = pair.defineSymbol; string text = File.ReadAllText(_pathToFile); int index = text.IndexOf(needle); int delimiterIndex = text.IndexOf(";", index + 1); if (delimiterIndex < 0) { text = text.Remove(index); } else { text = text.Remove(index, delimiterIndex - index + 1); } File.WriteAllText(_pathToFile, text); }
private static List <DefinePair> ParseFileToPairs(string filepath) { if (!File.Exists(filepath)) { File.Create(filepath); } string text = File.ReadAllText(filepath); string[] lines = text.Split(';'); var pairs = new List <DefinePair>(); foreach (string line in lines) { var pair = DefinePair.ParseLine(line); if (pair != null) { pairs.Add(pair); } } return(pairs); }
private void UpdatePairInFile(DefinePair pair) { DeletePairFromFile(pair); AddPairToFile(pair); }