internal static string CombineAppPresetsInner(IEnumerable <Tuple <ISavedPresetEntry, int> > presets, int selectedDesktop) { var list = (from input in presets let s = input.Item1 == null ? null : JsonConvert.DeserializeObject <Saveable>(input.Item1.ReadData()) select s == null ? null : new { PythonIni = IniFile.Parse(s.PythonData), FormsIni = IniFile.Parse(s.FormsData), DevAppsEnabled = s.DevApps ?? false, UseFormsFrom = input.Item2 }).ToList(); if (list.Count != 4) { throw new Exception("Should be four sets"); } // combine apps var python = PythonSettings.Combine(list.NonNull().Select(x => x.PythonIni)); var forms = FormsSettings.Combine(list.Select(x => x == null ? null : Tuple.Create(x.FormsIni, x.UseFormsFrom)), selectedDesktop); return(JsonConvert.SerializeObject(new Saveable { PythonData = python.Stringify(), FormsData = forms.Stringify(), DevApps = list.Any(x => x.DevAppsEnabled) })); }