using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Drawing; namespace Handbrake { class PresetLoader { /// /// This function takes in a Query which has been parsed by QueryParser and /// set's all the GUI widgets correctly. /// /// /// The Parsed CLI Query /// Name of the preset public void presetLoader(frmMain mainWindow, Functions.QueryParser presetQuery, string name) { // --------------------------- // Setup the GUI // --------------------------- // Source tab #region source // Reset some vaules to stock first to prevent errors. mainWindow.check_iPodAtom.CheckState = CheckState.Unchecked; // Now load all the new settings onto the main window if (presetQuery.Format != null) { string destination = mainWindow.text_destination.Text; destination = destination.Replace(".mp4", "." + presetQuery.Format); destination = destination.Replace(".m4v", "." + presetQuery.Format); destination = destination.Replace(".avi", "." + presetQuery.Format); destination = destination.Replace(".mkv", "." + presetQuery.Format); destination = destination.Replace(".ogm", "." + presetQuery.Format); mainWindow.text_destination.Text = destination; } #endregion // Destination tab #region destination mainWindow.drp_videoEncoder.Text = presetQuery.VideoEncoder; if (presetQuery.Format != null) { if (presetQuery.Format == "mp4") mainWindow.drop_format.SelectedIndex = 0; else if (presetQuery.Format == "m4v") mainWindow.drop_format.SelectedIndex = 1; else if (presetQuery.Format == "mkv") mainWindow.drop_format.SelectedIndex = 2; else if (presetQuery.Format == "avi") mainWindow.drop_format.SelectedIndex = 3; else if (presetQuery.Format == "ogm") mainWindow.drop_format.SelectedIndex = 4; if (presetQuery.ChapterMarkers == true && presetQuery.Format == "mp4") mainWindow.drop_format.SelectedIndex = 1; } if (presetQuery.IpodAtom == true) mainWindow.check_iPodAtom.CheckState = CheckState.Checked; else mainWindow.check_iPodAtom.CheckState = CheckState.Unchecked; if (presetQuery.OptimizeMP4 == true) mainWindow.check_optimiseMP4.CheckState = CheckState.Checked; else mainWindow.check_optimiseMP4.CheckState = CheckState.Unchecked; #endregion // Picture Settings Tab #region Picture mainWindow.check_autoCrop.Checked = true; mainWindow.drp_deInterlace_option.Text = presetQuery.DeInterlace; mainWindow.drp_deNoise.Text = presetQuery.DeNoise; if (presetQuery.Decomb == true) mainWindow.check_decomb.CheckState = CheckState.Checked; else mainWindow.check_decomb.CheckState = CheckState.Unchecked; if (presetQuery.DeTelecine == true) mainWindow.check_detelecine.CheckState = CheckState.Checked; else mainWindow.check_detelecine.CheckState = CheckState.Unchecked; if (presetQuery.DeBlock != 0) { mainWindow.slider_deblock.Value = presetQuery.DeBlock; mainWindow.lbl_deblockVal.Text = presetQuery.DeBlock.ToString(); } else { mainWindow.slider_deblock.Value = 4; mainWindow.lbl_deblockVal.Text = "Off"; } if (presetQuery.Anamorphic == true) mainWindow.drp_anamorphic.SelectedIndex = 1; else mainWindow.drp_anamorphic.SelectedIndex = 0; if (presetQuery.LooseAnamorphic == true) mainWindow.drp_anamorphic.SelectedIndex = 2; else { if (presetQuery.Anamorphic != true) mainWindow.drp_anamorphic.SelectedIndex = 0; } if (presetQuery.Width != 0) mainWindow.text_width.Text = presetQuery.Width.ToString(); else { mainWindow.text_width.Text = ""; } if (presetQuery.Height != 0) mainWindow.text_height.Text = presetQuery.Height.ToString(); else { mainWindow.text_height.Text = ""; } // Set the public max width and max height varibles in frmMain // These are used by the query generator to determine if it should use -X or -w / -Y or -h if (presetQuery.MaxWidth != 0) { mainWindow.text_width.Text = presetQuery.MaxWidth.ToString(); mainWindow.maxWidth = presetQuery.MaxWidth; } if (presetQuery.MaxHeight != 0) { mainWindow.text_height.Text = presetQuery.MaxHeight.ToString(); mainWindow.maxHeight = presetQuery.MaxHeight; } #endregion // Video Settings Tab #region video mainWindow.text_bitrate.Text = presetQuery.AverageVideoBitrate; mainWindow.text_filesize.Text = presetQuery.VideoTargetSize; mainWindow.slider_videoQuality.Value = presetQuery.VideoQuality; if (mainWindow.slider_videoQuality.Value != 0) { int ql = presetQuery.VideoQuality; mainWindow.SliderValue.Text = ql.ToString() + "%"; } if (presetQuery.TwoPass == true) mainWindow.check_2PassEncode.CheckState = CheckState.Checked; else mainWindow.check_2PassEncode.CheckState = CheckState.Unchecked; if (presetQuery.Grayscale == true) mainWindow.check_grayscale.CheckState = CheckState.Checked; else mainWindow.check_grayscale.CheckState = CheckState.Unchecked; mainWindow.drp_videoFramerate.Text = presetQuery.VideoFramerate; if (presetQuery.TurboFirstPass == true) mainWindow.check_turbo.CheckState = CheckState.Checked; else mainWindow.check_turbo.CheckState = CheckState.Unchecked; if (presetQuery.LargeMP4 == true) mainWindow.check_largeFile.CheckState = CheckState.Checked; else { mainWindow.check_largeFile.CheckState = CheckState.Unchecked; mainWindow.check_largeFile.BackColor = Color.Transparent; } #endregion // Chapter Markers Tab #region Chapter Markers if (presetQuery.ChapterMarkers == true) { mainWindow.Check_ChapterMarkers.CheckState = CheckState.Checked; mainWindow.Check_ChapterMarkers.Enabled = true; } else mainWindow.Check_ChapterMarkers.CheckState = CheckState.Unchecked; #endregion // Audio Settings Tab #region Audio // Handle Track 1 mainWindow.drp_track1Audio.Text = "Automatic"; // Handle Track 2 if (presetQuery.AudioEncoder2 != null) // Fix for loading in built in presets. Where 2 encoders but no tracks in the preset. { mainWindow.drp_track2Audio.Enabled = true; mainWindow.drp_audsr_2.Enabled = true; mainWindow.drp_audmix_2.Enabled = true; mainWindow.drp_audenc_2.Enabled = true; mainWindow.drp_audbit_2.Enabled = true; mainWindow.drp_audsr_2.Text = "48"; mainWindow.drp_track2Audio.Text = "Automatic"; } else if (presetQuery.AudioTrack2 == "None") { mainWindow.drp_track2Audio.Text = "None"; mainWindow.drp_track2Audio.SelectedIndex = 0; mainWindow.drp_audsr_2.Enabled = false; mainWindow.drp_audmix_2.Enabled = false; mainWindow.drp_audenc_2.Enabled = false; mainWindow.drp_audbit_2.Enabled = false; } else { mainWindow.drp_track2Audio.Text = presetQuery.AudioTrack2; mainWindow.drp_audsr_2.Enabled = true; mainWindow.drp_audmix_2.Enabled = true; mainWindow.drp_audenc_2.Enabled = true; mainWindow.drp_audbit_2.Enabled = true; } // Handle Track 3 if (presetQuery.AudioTrack3 == "None") { mainWindow.drp_track3Audio.SelectedIndex = 0; mainWindow.drp_audsr_3.Enabled = false; mainWindow.drp_audmix_3.Enabled = false; mainWindow.drp_audenc_3.Enabled = false; mainWindow.drp_audbit_3.Enabled = false; mainWindow.trackBar3.Enabled = false; mainWindow.drp_track3Audio.Text = "None"; mainWindow.drp_audsr_3.Text = ""; mainWindow.drp_audmix_3.Text = "Automatic"; mainWindow.drp_audenc_3.Text = ""; mainWindow.drp_audbit_3.Text = ""; mainWindow.trackBar3.Value = 0; } else { mainWindow.drp_track3Audio.Text = presetQuery.AudioTrack3; mainWindow.drp_audsr_3.Enabled = true; mainWindow.drp_audmix_3.Enabled = true; mainWindow.drp_audenc_3.Enabled = true; mainWindow.drp_audbit_3.Enabled = true; mainWindow.trackBar3.Enabled = true; } // Handle Track 4 if (presetQuery.AudioTrack4 == "None") { mainWindow.drp_track4Audio.SelectedIndex = 0; mainWindow.drp_audsr_4.Enabled = false; mainWindow.drp_audmix_4.Enabled = false; mainWindow.drp_audenc_4.Enabled = false; mainWindow.drp_audbit_4.Enabled = false; mainWindow.trackBar4.Enabled = false; mainWindow.drp_track4Audio.Text = "None"; mainWindow.drp_audsr_4.Text = ""; mainWindow.drp_audmix_4.Text = "Automatic"; mainWindow.drp_audenc_4.Text = ""; mainWindow.drp_audbit_4.Text = ""; mainWindow.trackBar4.Value = 0; } else { mainWindow.drp_track4Audio.Text = presetQuery.AudioTrack4; mainWindow.drp_audsr_4.Enabled = true; mainWindow.drp_audmix_4.Enabled = true; mainWindow.drp_audenc_4.Enabled = true; mainWindow.drp_audbit_4.Enabled = true; mainWindow.trackBar4.Enabled = true; } // Now lets start setting stuff if (presetQuery.AudioEncoder1 != null) mainWindow.drp_audenc_1.Text = presetQuery.AudioEncoder1; mainWindow.drp_audenc_2.Text = presetQuery.AudioEncoder2; mainWindow.drp_audenc_3.Text = presetQuery.AudioEncoder3; mainWindow.drp_audenc_4.Text = presetQuery.AudioEncoder4; mainWindow.drp_audmix_1.Text = presetQuery.AudioTrackMix1; mainWindow.drp_audmix_2.Text = presetQuery.AudioTrackMix2; mainWindow.drp_audmix_3.Text = presetQuery.AudioTrackMix3; mainWindow.drp_audmix_4.Text = presetQuery.AudioTrackMix4; if (presetQuery.AudioBitrate1 != null) mainWindow.drp_audbit_1.Text = presetQuery.AudioBitrate1; mainWindow.drp_audbit_2.Text = presetQuery.AudioBitrate2; mainWindow.drp_audbit_3.Text = presetQuery.AudioBitrate4; mainWindow.drp_audbit_3.Text = presetQuery.AudioBitrate4; if (presetQuery.AudioSamplerate1 != null) mainWindow.drp_audsr_1.Text = presetQuery.AudioSamplerate1; mainWindow.drp_audsr_2.Text = presetQuery.AudioSamplerate2; mainWindow.drp_audsr_3.Text = presetQuery.AudioSamplerate3; mainWindow.drp_audsr_4.Text = presetQuery.AudioSamplerate4; // Dynamic Range Compression (Should be a float but we use double for ease) double value = 0; double actualValue = 0; value = presetQuery.DRC1; if (value > 0) value = value - 10; mainWindow.trackBar1.Value = int.Parse(value.ToString()); actualValue = presetQuery.DRC1 / 10; mainWindow.lbl_drc1.Text = actualValue.ToString(); value = presetQuery.DRC2; if (value > 0) value = value - 10; mainWindow.trackBar2.Value = int.Parse(value.ToString()); actualValue = presetQuery.DRC2 / 10; mainWindow.lbl_drc2.Text = actualValue.ToString(); value = presetQuery.DRC3; if (value > 0) value = value - 10; mainWindow.trackBar3.Value = int.Parse(value.ToString()); actualValue = presetQuery.DRC3 / 10; mainWindow.lbl_drc3.Text = actualValue.ToString(); value = presetQuery.DRC4; if (value > 0) value = value - 10; mainWindow.trackBar4.Value = int.Parse(value.ToString()); actualValue = presetQuery.DRC4 / 10; mainWindow.lbl_drc4.Text = actualValue.ToString(); // Subtitle Stuff mainWindow.drp_subtitle.Text = presetQuery.Subtitles; if (presetQuery.ForcedSubtitles == true) { mainWindow.check_forced.CheckState = CheckState.Checked; mainWindow.check_forced.Enabled = true; } else mainWindow.check_forced.CheckState = CheckState.Unchecked; #endregion // H264 Tab & Preset Name #region other mainWindow.rtf_x264Query.Text = presetQuery.H264Query; // Set the preset name mainWindow.groupBox_output.Text = "Output Settings (Preset: " + name + ")"; #endregion } } }