private static void AddPairToFile(DefinePair pair)
    {
        string pairStr   = pair.ToFileString();
        string appendStr = pairStr + ";";

        File.AppendAllText(_pathToFile, appendStr);
    }
Ejemplo n.º 2
0
    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);
 }