public void Delete(SplitRowEdit toDelete)
        {
            //Do nothing if this is the last split
            if (Splits.Count <= 1) return;

            Splits.Remove(toDelete);
        }
        public void Divide(SplitRowEdit toDivide)
        {
            var index = Splits.IndexOf(toDivide);

            Splits.Insert(index, new SplitRowEdit(this)
            {
                PersonalBestTimeAtSplit = toDivide.PersonalBestTimeAtSplit
            });

            toDivide.IsGoldTimeUnknown = true;
            toDivide.GoldSplitLength = TimeSpan.MaxValue;
        }
        public void LoadFromFile(SplitFile file)
        {
            var pbAndGold = file.RunDefinition.Zip(file.PersonalBest.Splits, (d, pb) => new { D = d, Pb = pb })
                .Zip(file.SumOfBest.Splits, (a, gs) => new { Definition = a.D, PersonalBest = a.Pb, Gold = gs }).ToArray();

            Splits = new ObservableCollection<SplitRowEdit>(pbAndGold.Select(a =>
            {
                var editRow = new SplitRowEdit(this);
                editRow.GoldSplitLength = a.Definition.SumOfBestSplit.Time;
                editRow.IsGoldTimeUnknown = !a.Definition.SumOfBestSplit.IsPrecise;
                editRow.PersonalBestTimeAtSplit = a.PersonalBest.TimeFromRunStart;
                editRow.IsPbTimeUnknown = !a.PersonalBest.IsPrecise;
                editRow.Name = a.Definition.Name;

                return editRow;
            }));

            RunTitle = file.Header;
            PersonalBestDate = file.PersonalBestDate;
        }