private string ArchivePresetFile(string file, bool delete) { try { // Recover from Error. PresetVersion version = HandBrakePresetService.GetCurrentPresetVersion(); string archiveFile = string.Format("{0}.{1}_{2}_{3}.archive", file, version.Major, version.Minor, version.Micro); if (File.Exists(file)) { int counter = 0; while (File.Exists(archiveFile)) { counter = counter + 1; string appendedNumber = string.Format("({0})", counter); archiveFile = string.Format("{0}.{1}_{2}_{3} {4}.archive", file, version.Major, version.Minor, version.Micro, appendedNumber); } File.Copy(file, archiveFile); if (delete) { File.Delete(file); } } return(archiveFile); } catch (IOException e) { this.ServiceLogMessage(e.ToString()); } return("Sorry, the archiving failed."); }
/// <summary> /// The export preset. /// </summary> /// <param name="export"> /// The export. /// </param> /// <param name="config"> /// HandBrakes configuration options. /// </param> /// <returns> /// The <see cref="Preset"/>. /// </returns> public static PresetTransportContainer ExportPreset(Preset export, HBConfiguration config) { PresetVersion presetVersion = HandBrakePresetService.GetCurrentPresetVersion(); PresetTransportContainer container = new PresetTransportContainer(presetVersion.Major, presetVersion.Minor, presetVersion.Micro); container.PresetList = new List <object> { CreateHbPreset(export, config) }; return(container); }
/// <summary> /// Export a list of Presets. /// </summary> /// <param name="exportList">A list of presets to export</param> /// <param name="config">HB's configuration</param> /// <returns>A list of JSON object presets.</returns> public static PresetTransportContainer ExportPresets(IEnumerable <Preset> exportList, HBConfiguration config) { PresetVersion presetVersion = HandBrakePresetService.GetCurrentPresetVersion(); PresetTransportContainer container = new PresetTransportContainer(presetVersion.Major, presetVersion.Minor, presetVersion.Micro); List <HBPreset> presets = exportList.Select(item => CreateHbPreset(item, config)).ToList(); container.PresetList = new List <object>(); container.PresetList.AddRange(presets); return(container); }
private void SavePresetFiles() { try { // Verify Directories. string directory = Path.GetDirectoryName(this.presetFile); if (directory != null && !Directory.Exists(directory)) { Directory.CreateDirectory(directory); } // Organise the Presets list into Json Equivalent objects. Dictionary <string, HBPresetCategory> presetCategories = new Dictionary <string, HBPresetCategory>(); List <HBPreset> uncategorisedPresets = new List <HBPreset>(); // Handle User Presets. this.HandlePresetListsForSave(this.flatPresetList.Where(o => !o.IsBuildIn).ToList(), presetCategories, uncategorisedPresets); // Handle Built-in Presets this.HandlePresetListsForSave(this.flatPresetList.Where(o => o.IsBuildIn).ToList(), presetCategories, uncategorisedPresets); // Wrap the categories in a container. JsonSerializerSettings settings = new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Ignore }; PresetVersion presetVersion = HandBrakePresetService.GetCurrentPresetVersion(); PresetTransportContainer container = new PresetTransportContainer(presetVersion.Major, presetVersion.Minor, presetVersion.Micro) { PresetList = new List <object>() }; container.PresetList.AddRange(presetCategories.Values); container.PresetList.AddRange(uncategorisedPresets); // Write the preset container out to file. using (FileStream strm = new FileStream(this.presetFile, FileMode.Create, FileAccess.Write)) { string presetsJson = JsonConvert.SerializeObject(container, Formatting.Indented, settings); using (StreamWriter writer = new StreamWriter(strm)) { writer.WriteLine(presetsJson); } } } catch (Exception exc) { throw new GeneralApplicationException("Unable to write to the presets file.", "The details section below may indicate why this error has occurred.", exc); } }
public static PresetTransportContainer ExportPresetCategories(IList <PresetDisplayCategory> categories, HBConfiguration config) { PresetVersion presetVersion = HandBrakePresetService.GetCurrentPresetVersion(); PresetTransportContainer container = new PresetTransportContainer(presetVersion.Major, presetVersion.Minor, presetVersion.Micro); List <object> presets = new List <object>(); foreach (var category in categories) { presets.Add(CreatePresetCategory(category, config)); } container.PresetList = presets; return(container); }
private void LoadPresets() { // First clear the Presets arraylists this.presets.Clear(); // Load the presets file. try { // If we don't have a presets file. Create one for first load. if (!File.Exists(this.presetFile)) { this.UpdateBuiltInPresets(); return; } // Otherwise, we already have a file, so lets try load it. PresetTransportContainer container = null; try { container = HandBrakePresetService.GetPresetsFromFile(this.presetFile); } catch (Exception exc) { this.ServiceLogMessage("Corrupted Presets File Detected: " + Environment.NewLine + exc); } // Sanity Check. Did the container deserialize. if (container?.PresetList == null) { this.ServiceLogMessage("Attempting Preset Recovery ..."); string filename = this.ArchivePresetFile(this.presetFile, true); this.errorService.ShowMessageBox( Resources.PresetService_UnableToLoadPresets + filename, Resources.PresetService_UnableToLoad, MessageBoxButton.OK, MessageBoxImage.Exclamation); this.UpdateBuiltInPresets(); this.ServiceLogMessage("Recovery Completed!"); return; // Update built-in presets stores the presets locally, so just return. } // Force Upgrade of presets if (this.userSettingService.GetUserSetting <int>(UserSettingConstants.ForcePresetReset) < ForcePresetReset) { this.userSettingService.SetUserSetting(UserSettingConstants.ForcePresetReset, ForcePresetReset); string fileName = this.ArchivePresetFile(this.presetFile, true); this.errorService.ShowMessageBox( Resources.Presets_PresetForceReset + Environment.NewLine + Environment.NewLine + Resources.PresetService_ArchiveFile + fileName, Resources.PresetService_UnableToLoad, MessageBoxButton.OK, MessageBoxImage.Information); this.UpdateBuiltInPresets(); // Update built-in presets stores the presets locally, so just return. return; } this.ProcessPresetList(container); PresetVersion presetVersion = HandBrakePresetService.GetCurrentPresetVersion(); if (container.VersionMajor != presetVersion.Major || container.VersionMinor != presetVersion.Minor || container.VersionMicro != presetVersion.Micro) { this.UpdateBuiltInPresets(); } CheckAndSetDefault(); // Make a preset default if one we have none. } catch (Exception ex) { this.ServiceLogMessage(ex.ToString()); this.ArchivePresetFile(this.presetFile, true); this.UpdateBuiltInPresets(); } }