2 using System.Windows.Forms;
\r
3 using System.Drawing;
\r
10 /// This function takes in a Query which has been parsed by QueryParser and
\r
11 /// set's all the GUI widgets correctly.
\r
13 /// <param name="mainWindow"></param>
\r
14 /// <param name="presetQuery">The Parsed CLI Query</param>
\r
15 /// <param name="name">Name of the preset</param>
\r
16 /// <param name="pictureSettings">Save picture settings in the preset</param>
\r
17 public void presetLoader(frmMain mainWindow, Functions.QueryParser presetQuery, string name, Boolean pictureSettings)
\r
19 // ---------------------------
\r
21 // ---------------------------
\r
25 // Reset some vaules to stock first to prevent errors.
\r
26 mainWindow.check_iPodAtom.CheckState = CheckState.Unchecked;
\r
28 // Now load all the new settings onto the main window
\r
29 if (presetQuery.Format != null)
\r
31 string destination = mainWindow.text_destination.Text;
\r
32 destination = destination.Replace(".mp4", "." + presetQuery.Format);
\r
33 destination = destination.Replace(".m4v", "." + presetQuery.Format);
\r
34 destination = destination.Replace(".avi", "." + presetQuery.Format);
\r
35 destination = destination.Replace(".mkv", "." + presetQuery.Format);
\r
36 destination = destination.Replace(".ogm", "." + presetQuery.Format);
\r
37 mainWindow.text_destination.Text = destination;
\r
45 mainWindow.drp_videoEncoder.Text = presetQuery.VideoEncoder;
\r
47 if (presetQuery.Format != null)
\r
49 if (presetQuery.Format == "mp4")
\r
50 mainWindow.drop_format.SelectedIndex = 0;
\r
51 else if (presetQuery.Format == "m4v")
\r
52 mainWindow.drop_format.SelectedIndex = 1;
\r
53 else if (presetQuery.Format == "mkv")
\r
54 mainWindow.drop_format.SelectedIndex = 2;
\r
55 else if (presetQuery.Format == "avi")
\r
56 mainWindow.drop_format.SelectedIndex = 3;
\r
57 else if (presetQuery.Format == "ogm")
\r
58 mainWindow.drop_format.SelectedIndex = 4;
\r
60 if (presetQuery.ChapterMarkers && presetQuery.Format == "mp4")
\r
61 mainWindow.drop_format.SelectedIndex = 1;
\r
64 if (presetQuery.IpodAtom)
\r
65 mainWindow.check_iPodAtom.CheckState = CheckState.Checked;
\r
67 mainWindow.check_iPodAtom.CheckState = CheckState.Unchecked;
\r
69 if (presetQuery.OptimizeMP4)
\r
70 mainWindow.check_optimiseMP4.CheckState = CheckState.Checked;
\r
72 mainWindow.check_optimiseMP4.CheckState = CheckState.Unchecked;
\r
76 // Picture Settings Tab
\r
78 mainWindow.check_autoCrop.Checked = true;
\r
79 if (presetQuery.CropBottom == "0" && presetQuery.CropTop == "0")
\r
80 if (presetQuery.CropLeft == "0" && presetQuery.CropRight == "0")
\r
81 mainWindow.check_customCrop.Checked = true;
\r
83 mainWindow.text_width.Text = "";
\r
84 mainWindow.text_height.Text = "";
\r
86 if (pictureSettings)
\r
88 if (presetQuery.CropTop != null)
\r
90 int top, bottom, left, right;
\r
91 int.TryParse(presetQuery.CropTop, out top);
\r
92 int.TryParse(presetQuery.CropBottom, out bottom);
\r
93 int.TryParse(presetQuery.CropLeft, out left);
\r
94 int.TryParse(presetQuery.CropRight, out right);
\r
96 mainWindow.check_customCrop.Checked = true;
\r
97 mainWindow.text_top.Value = top;
\r
98 mainWindow.text_bottom.Value = bottom;
\r
99 mainWindow.text_left.Value = left;
\r
100 mainWindow.text_right.Value = right;
\r
103 if (presetQuery.Width != 0)
\r
104 mainWindow.text_width.Text = presetQuery.Width.ToString();
\r
106 if (presetQuery.Height != 0)
\r
107 mainWindow.text_height.Text = presetQuery.Height.ToString();
\r
110 if (presetQuery.Anamorphic)
\r
111 mainWindow.drp_anamorphic.SelectedIndex = 1;
\r
113 mainWindow.drp_anamorphic.SelectedIndex = 0;
\r
115 if (presetQuery.LooseAnamorphic)
\r
116 mainWindow.drp_anamorphic.SelectedIndex = 2;
\r
119 if (presetQuery.Anamorphic != true)
\r
120 mainWindow.drp_anamorphic.SelectedIndex = 0;
\r
123 // Set the public max width and max height varibles in frmMain
\r
124 // These are used by the query generator to determine if it should use -X or -w / -Y or -h
\r
125 if (presetQuery.MaxWidth != 0)
\r
127 mainWindow.text_width.Text = presetQuery.MaxWidth.ToString();
\r
128 mainWindow.maxWidth = presetQuery.MaxWidth;
\r
131 if (presetQuery.MaxHeight != 0)
\r
133 mainWindow.text_height.Text = presetQuery.MaxHeight.ToString();
\r
134 mainWindow.maxHeight = presetQuery.MaxHeight;
\r
143 mainWindow.ctl_decomb.setOption(presetQuery.Decomb);
\r
145 if (mainWindow.ctl_decomb.getDropValue == "Off")
\r
146 mainWindow.ctl_deinterlace.setOption(presetQuery.DeInterlace);
\r
148 mainWindow.ctl_deinterlace.setOption("None"); // Don't want decomb and deinterlace on at the same time
\r
150 mainWindow.ctl_denoise.setOption(presetQuery.DeNoise);
\r
151 mainWindow.ctl_detelecine.setOption(presetQuery.DeTelecine);
\r
153 if (presetQuery.DeBlock != 0)
\r
155 mainWindow.slider_deblock.Value = presetQuery.DeBlock;
\r
156 mainWindow.lbl_deblockVal.Text = presetQuery.DeBlock.ToString();
\r
160 mainWindow.slider_deblock.Value = 4;
\r
161 mainWindow.lbl_deblockVal.Text = "Off";
\r
165 // Video Settings Tab
\r
167 if (presetQuery.AverageVideoBitrate != null)
\r
169 mainWindow.radio_avgBitrate.Checked = true;
\r
170 mainWindow.text_bitrate.Text = presetQuery.AverageVideoBitrate;
\r
172 if (presetQuery.VideoTargetSize != null)
\r
174 mainWindow.radio_targetFilesize.Checked = true;
\r
175 mainWindow.text_filesize.Text = presetQuery.VideoTargetSize;
\r
179 if (presetQuery.VideoQuality != 0)
\r
181 mainWindow.radio_cq.Checked = true;
\r
182 if (presetQuery.VideoEncoder == "H.264 (x264)")
\r
185 System.Globalization.CultureInfo culture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");
\r
187 double presetValue, calculated, x264step;
\r
188 double.TryParse(presetQuery.VideoQuality.ToString(),
\r
189 System.Globalization.NumberStyles.Number,
\r
192 double.TryParse(Properties.Settings.Default.x264cqstep,
\r
193 System.Globalization.NumberStyles.Number,
\r
197 double x = 51 / x264step;
\r
199 calculated = presetValue / x264step;
\r
200 calculated = x - calculated;
\r
202 int.TryParse(calculated.ToString(), out value);
\r
204 // This will sometimes occur when the preset was generated
\r
205 // with a different granularity, so, round and try again.
\r
208 double val = Math.Round(calculated, 0);
\r
209 int.TryParse(val.ToString(), out value);
\r
212 mainWindow.slider_videoQuality.Value = value;
\r
217 int.TryParse(presetQuery.VideoQuality.ToString(), out presetVal);
\r
218 mainWindow.slider_videoQuality.Value = presetVal;
\r
222 if (presetQuery.TwoPass)
\r
223 mainWindow.check_2PassEncode.CheckState = CheckState.Checked;
\r
225 mainWindow.check_2PassEncode.CheckState = CheckState.Unchecked;
\r
227 if (presetQuery.Grayscale)
\r
228 mainWindow.check_grayscale.CheckState = CheckState.Checked;
\r
230 mainWindow.check_grayscale.CheckState = CheckState.Unchecked;
\r
232 mainWindow.drp_videoFramerate.Text = presetQuery.VideoFramerate;
\r
234 if (presetQuery.TurboFirstPass)
\r
235 mainWindow.check_turbo.CheckState = CheckState.Checked;
\r
237 mainWindow.check_turbo.CheckState = CheckState.Unchecked;
\r
239 if (presetQuery.LargeMP4)
\r
240 mainWindow.check_largeFile.CheckState = CheckState.Checked;
\r
243 mainWindow.check_largeFile.CheckState = CheckState.Unchecked;
\r
244 mainWindow.check_largeFile.BackColor = Color.Transparent;
\r
248 // Chapter Markers Tab
\r
249 #region Chapter Markers
\r
251 if (presetQuery.ChapterMarkers)
\r
253 mainWindow.Check_ChapterMarkers.CheckState = CheckState.Checked;
\r
254 mainWindow.Check_ChapterMarkers.Enabled = true;
\r
257 mainWindow.Check_ChapterMarkers.CheckState = CheckState.Unchecked;
\r
261 // Audio Settings Tab
\r
263 // Clear the audio listing
\r
264 mainWindow.lv_audioList.Items.Clear();
\r
266 // Create a new row for the Audio list based on the currently selected items in the dropdown.
\r
267 ListViewItem newTrack;
\r
268 if (presetQuery.AudioTrack1 != "None")
\r
270 newTrack = new ListViewItem("Automatic");
\r
271 newTrack.SubItems.Add(presetQuery.AudioEncoder1);
\r
272 newTrack.SubItems.Add(presetQuery.AudioTrackMix1);
\r
273 newTrack.SubItems.Add(presetQuery.AudioSamplerate1);
\r
274 newTrack.SubItems.Add(presetQuery.AudioBitrate1);
\r
275 newTrack.SubItems.Add(presetQuery.DRC1.ToString());
\r
276 mainWindow.lv_audioList.Items.Add(newTrack);
\r
279 if (presetQuery.AudioTrack2 != "None")
\r
281 newTrack = new ListViewItem("Automatic");
\r
282 newTrack.SubItems.Add(presetQuery.AudioEncoder2);
\r
283 newTrack.SubItems.Add(presetQuery.AudioTrackMix2);
\r
284 newTrack.SubItems.Add(presetQuery.AudioSamplerate2);
\r
285 newTrack.SubItems.Add(presetQuery.AudioBitrate2);
\r
286 newTrack.SubItems.Add(presetQuery.DRC2.ToString());
\r
287 mainWindow.lv_audioList.Items.Add(newTrack);
\r
290 if (presetQuery.AudioTrack3 != "None")
\r
292 newTrack = new ListViewItem("Automatic");
\r
293 newTrack.SubItems.Add(presetQuery.AudioEncoder3);
\r
294 newTrack.SubItems.Add(presetQuery.AudioTrackMix3);
\r
295 newTrack.SubItems.Add(presetQuery.AudioSamplerate3);
\r
296 newTrack.SubItems.Add(presetQuery.AudioBitrate3);
\r
297 newTrack.SubItems.Add(presetQuery.DRC3.ToString());
\r
298 mainWindow.lv_audioList.Items.Add(newTrack);
\r
301 if (presetQuery.AudioTrack4 != "None")
\r
303 newTrack = new ListViewItem("Automatic");
\r
304 newTrack.SubItems.Add(presetQuery.AudioEncoder4);
\r
305 newTrack.SubItems.Add(presetQuery.AudioTrackMix4);
\r
306 newTrack.SubItems.Add(presetQuery.AudioSamplerate4);
\r
307 newTrack.SubItems.Add(presetQuery.AudioBitrate4);
\r
308 newTrack.SubItems.Add(presetQuery.DRC4.ToString());
\r
309 mainWindow.lv_audioList.Items.Add(newTrack);
\r
313 mainWindow.drp_subtitle.Text = presetQuery.Subtitles;
\r
315 if (presetQuery.ForcedSubtitles)
\r
317 mainWindow.check_forced.CheckState = CheckState.Checked;
\r
318 mainWindow.check_forced.Enabled = true;
\r
321 mainWindow.check_forced.CheckState = CheckState.Unchecked;
\r
325 // H264 Tab & Preset Name
\r
327 mainWindow.x264Panel.x264Query = presetQuery.H264Query;
\r
329 // Set the preset name
\r
330 mainWindow.groupBox_output.Text = "Output Settings (Preset: " + name + ")";
\r