/// <summary>
        /// Loads a ItemStack from the file location
        /// </summary>
        /// <param string="FileLoc"></param>
        public void LoadFromFile(string FileLoc)
        {
            try
            {
                if (System.IO.File.Exists(FileLoc))
                {
                    string[] lines = System.IO.File.ReadAllLines(FileLoc);

                    for (int i = 0; i < lines.Length; i++)
                    {
                        if (lines[i].Contains("( ["))
                        {
                            ValueCategory NewCat = new ValueCategory();
                            NewCat.Name       = lines[i].Replace(lines[i].Substring(0, lines[i].IndexOf(" : ") + 3), "").Replace(" ) { ", "");
                            NewCat.ValueStack = new List <FIItems>();
                            ItemStack.Add(NewCat);

                            int InnerI = i + 1;
                            while (lines[InnerI] != "}")
                            {
                                string ValueType = lines[InnerI].Replace(lines[InnerI].Substring(0, lines[InnerI].IndexOf("(") + 1), "").Substring(0, lines[InnerI].Replace(lines[InnerI].Substring(0, lines[InnerI].IndexOf("(") + 1), "").IndexOf(")"));

                                FIItems NewItem = new StringValue("", "");

                                if (ValueType == ValueTypesStrings[(int)ValueTypesEnum.STR])
                                {
                                    NewItem = new StringValue(
                                        lines[InnerI].Replace(lines[InnerI].Substring(0, lines[InnerI].IndexOf(":") + 2), "").Substring(0, lines[InnerI].Replace(lines[InnerI].Substring(0, lines[InnerI].IndexOf(":") + 2), "").IndexOf(" = ")), "");
                                }
                                if (ValueType == ValueTypesStrings[(int)ValueTypesEnum.INT])
                                {
                                    NewItem = new IntValue(
                                        lines[InnerI].Replace(lines[InnerI].Substring(0, lines[InnerI].IndexOf(":") + 2), "").Substring(0, lines[InnerI].Replace(lines[InnerI].Substring(0, lines[InnerI].IndexOf(":") + 2), "").IndexOf(" = ")), 0);
                                }
                                if (ValueType == ValueTypesStrings[(int)ValueTypesEnum.BOL])
                                {
                                    NewItem = new BoolValue(
                                        lines[InnerI].Replace(lines[InnerI].Substring(0, lines[InnerI].IndexOf(":") + 2), "").Substring(0, lines[InnerI].Replace(lines[InnerI].Substring(0, lines[InnerI].IndexOf(":") + 2), "").IndexOf(" = ")), false);
                                }
                                if (ValueType == ValueTypesStrings[(int)ValueTypesEnum.BRS])
                                {
                                    NewItem = new BrushValue(
                                        lines[InnerI].Replace(lines[InnerI].Substring(0, lines[InnerI].IndexOf(":") + 2), "").Substring(0, lines[InnerI].Replace(lines[InnerI].Substring(0, lines[InnerI].IndexOf(":") + 2), "").IndexOf(" = ")), System.Windows.Media.Brushes.White);
                                }
                                if (ValueType == ValueTypesStrings[(int)ValueTypesEnum.DAT])
                                {
                                    NewItem = new DateTimeValue(
                                        lines[InnerI].Replace(lines[InnerI].Substring(0, lines[InnerI].IndexOf(":") + 2), "").Substring(0, lines[InnerI].Replace(lines[InnerI].Substring(0, lines[InnerI].IndexOf(":") + 2), "").IndexOf(" = ")), System.DateTime.Now);
                                }
                                if (ValueType == ValueTypesStrings[(int)ValueTypesEnum.LST])
                                {
                                    NewItem = new ListValue("", "");
                                }
                                else
                                {
                                    if (ValueType == ValueTypesStrings[(int)ValueTypesEnum.ELS])
                                    {
                                        NewItem = new EndListValue("", "");
                                    }
                                    else
                                    {
                                        if (CutStringTillData(lines[InnerI]).StartsWith("R["))
                                        {
                                            NewItem.SetValue(GetValueFromDataPoint(CutStringTillData(lines[InnerI])));
                                        }
                                        else
                                        {
                                            NewItem.SetValue(CutStringTillData(lines[InnerI]));
                                        }
                                    }
                                }

                                if (NewItem.GetName() != "" && NewItem.GetValue() != "")
                                {
                                    NewCat.ValueStack.Add(NewItem);
                                }

                                InnerI++;
                            }
                            i = InnerI;
                        }
                    }
                }
            }
            catch { }
        }