OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / frmMain / PresetLoader.cs
1 using System;\r
2 using System.Windows.Forms;\r
3 using System.Drawing;\r
4 \r
5 namespace Handbrake\r
6 {\r
7     class PresetLoader\r
8     {\r
9         /// <summary>\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
12         /// </summary>\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
18         {\r
19             // ---------------------------\r
20             // Setup the GUI\r
21             // ---------------------------\r
22 \r
23             // Source tab\r
24             #region source\r
25             // Reset some vaules to stock first to prevent errors.\r
26             mainWindow.check_iPodAtom.CheckState = CheckState.Unchecked;\r
27 \r
28             // Now load all the new settings onto the main window\r
29             if (presetQuery.Format != null)\r
30             {\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
38             }\r
39 \r
40             #endregion\r
41 \r
42             // Destination tab\r
43             #region destination\r
44 \r
45             mainWindow.drp_videoEncoder.Text = presetQuery.VideoEncoder;\r
46 \r
47             if (presetQuery.Format != null)\r
48             {\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
59 \r
60                 if (presetQuery.ChapterMarkers && presetQuery.Format == "mp4")\r
61                     mainWindow.drop_format.SelectedIndex = 1;\r
62             }\r
63 \r
64             if (presetQuery.IpodAtom)\r
65                 mainWindow.check_iPodAtom.CheckState = CheckState.Checked;\r
66             else\r
67                 mainWindow.check_iPodAtom.CheckState = CheckState.Unchecked;\r
68 \r
69             if (presetQuery.OptimizeMP4)\r
70                 mainWindow.check_optimiseMP4.CheckState = CheckState.Checked;\r
71             else\r
72                 mainWindow.check_optimiseMP4.CheckState = CheckState.Unchecked;\r
73 \r
74             #endregion\r
75 \r
76             // Picture Settings Tab\r
77             #region Picture\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
82 \r
83             mainWindow.text_width.Text = "";\r
84             mainWindow.text_height.Text = "";\r
85 \r
86             if (pictureSettings)\r
87             {\r
88                 if (presetQuery.CropTop != null)\r
89                 {\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
95 \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
101                 }\r
102 \r
103                 if (presetQuery.Width != 0)\r
104                     mainWindow.text_width.Text = presetQuery.Width.ToString();\r
105 \r
106                 if (presetQuery.Height != 0)\r
107                     mainWindow.text_height.Text = presetQuery.Height.ToString();\r
108             }\r
109 \r
110             if (presetQuery.Anamorphic)\r
111                 mainWindow.drp_anamorphic.SelectedIndex = 1;\r
112             else\r
113                 mainWindow.drp_anamorphic.SelectedIndex = 0;\r
114 \r
115             if (presetQuery.LooseAnamorphic)\r
116                 mainWindow.drp_anamorphic.SelectedIndex = 2;\r
117             else\r
118             {\r
119                 if (presetQuery.Anamorphic != true)\r
120                     mainWindow.drp_anamorphic.SelectedIndex = 0;\r
121             }\r
122 \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
126             {\r
127                 mainWindow.text_width.Text = presetQuery.MaxWidth.ToString();\r
128                 mainWindow.maxWidth = presetQuery.MaxWidth;\r
129             }\r
130 \r
131             if (presetQuery.MaxHeight != 0)\r
132             {\r
133                 mainWindow.text_height.Text = presetQuery.MaxHeight.ToString();\r
134                 mainWindow.maxHeight = presetQuery.MaxHeight;\r
135             }\r
136 \r
137 \r
138             #endregion\r
139 \r
140             // Filters Tab\r
141             #region Filters\r
142 \r
143             mainWindow.ctl_decomb.setOption(presetQuery.Decomb);\r
144 \r
145             if (mainWindow.ctl_decomb.getDropValue == "Off")\r
146                 mainWindow.ctl_deinterlace.setOption(presetQuery.DeInterlace);\r
147             else\r
148                 mainWindow.ctl_deinterlace.setOption("None"); // Don't want decomb and deinterlace on at the same time\r
149 \r
150             mainWindow.ctl_denoise.setOption(presetQuery.DeNoise);\r
151             mainWindow.ctl_detelecine.setOption(presetQuery.DeTelecine);\r
152 \r
153             if (presetQuery.DeBlock != 0)\r
154             {\r
155                 mainWindow.slider_deblock.Value = presetQuery.DeBlock;\r
156                 mainWindow.lbl_deblockVal.Text = presetQuery.DeBlock.ToString();\r
157             }\r
158             else\r
159             {\r
160                 mainWindow.slider_deblock.Value = 4;\r
161                 mainWindow.lbl_deblockVal.Text = "Off";\r
162             }\r
163             #endregion\r
164 \r
165             // Video Settings Tab\r
166             #region video\r
167             if (presetQuery.AverageVideoBitrate != null)\r
168             {\r
169                 mainWindow.radio_avgBitrate.Checked = true;\r
170                 mainWindow.text_bitrate.Text = presetQuery.AverageVideoBitrate;\r
171             }\r
172             if (presetQuery.VideoTargetSize != null)\r
173             {\r
174                 mainWindow.radio_targetFilesize.Checked = true;\r
175                 mainWindow.text_filesize.Text = presetQuery.VideoTargetSize;\r
176             }\r
177 \r
178             // Quality\r
179             if (presetQuery.VideoQuality != 0)\r
180             {\r
181                 mainWindow.radio_cq.Checked = true;\r
182                 if (presetQuery.VideoEncoder == "H.264 (x264)")\r
183                 {\r
184                     int value;\r
185                     float presetValue, calculated, x264step;\r
186                     float.TryParse(presetQuery.VideoQuality.ToString(), out presetValue);\r
187                     float.TryParse(Properties.Settings.Default.x264cqstep, out x264step);\r
188 \r
189                     float x = 51 / x264step;\r
190 \r
191                     calculated = presetValue / x264step;\r
192                     calculated = x - calculated;\r
193 \r
194                     int.TryParse(calculated.ToString(), out value);\r
195 \r
196                     // This will sometimes occur when the preset was generated \r
197                     // with a different granularity, so, round and try again.\r
198                     if (value == 0)\r
199                     {\r
200                         double val =  Math.Round(calculated, 0);\r
201                         int.TryParse(val.ToString(), out value);\r
202                     }\r
203 \r
204                     mainWindow.slider_videoQuality.Value = value;\r
205                 }\r
206                 else\r
207                 {\r
208                     int presetVal;\r
209                     int.TryParse(presetQuery.VideoQuality.ToString(), out presetVal);\r
210                     mainWindow.slider_videoQuality.Value = presetVal;\r
211                 }\r
212             }\r
213 \r
214             if (presetQuery.TwoPass)\r
215                 mainWindow.check_2PassEncode.CheckState = CheckState.Checked;\r
216             else\r
217                 mainWindow.check_2PassEncode.CheckState = CheckState.Unchecked;\r
218 \r
219             if (presetQuery.Grayscale)\r
220                 mainWindow.check_grayscale.CheckState = CheckState.Checked;\r
221             else\r
222                 mainWindow.check_grayscale.CheckState = CheckState.Unchecked;\r
223 \r
224             mainWindow.drp_videoFramerate.Text = presetQuery.VideoFramerate;\r
225 \r
226             if (presetQuery.TurboFirstPass)\r
227                 mainWindow.check_turbo.CheckState = CheckState.Checked;\r
228             else\r
229                 mainWindow.check_turbo.CheckState = CheckState.Unchecked;\r
230 \r
231             if (presetQuery.LargeMP4)\r
232                 mainWindow.check_largeFile.CheckState = CheckState.Checked;\r
233             else\r
234             {\r
235                 mainWindow.check_largeFile.CheckState = CheckState.Unchecked;\r
236                 mainWindow.check_largeFile.BackColor = Color.Transparent;\r
237             }\r
238             #endregion\r
239 \r
240             // Chapter Markers Tab\r
241             #region Chapter Markers\r
242 \r
243             if (presetQuery.ChapterMarkers)\r
244             {\r
245                 mainWindow.Check_ChapterMarkers.CheckState = CheckState.Checked;\r
246                 mainWindow.Check_ChapterMarkers.Enabled = true;\r
247             }\r
248             else\r
249                 mainWindow.Check_ChapterMarkers.CheckState = CheckState.Unchecked;\r
250 \r
251             #endregion\r
252 \r
253             // Audio Settings Tab\r
254             #region Audio\r
255             // Clear the audio listing\r
256             mainWindow.lv_audioList.Items.Clear();\r
257 \r
258             // Create a new row for the Audio list based on the currently selected items in the dropdown.\r
259             ListViewItem newTrack;\r
260             if (presetQuery.AudioTrack1 != "None")\r
261             {\r
262                 newTrack = new ListViewItem("Automatic");\r
263                 newTrack.SubItems.Add(presetQuery.AudioEncoder1);\r
264                 newTrack.SubItems.Add(presetQuery.AudioTrackMix1);\r
265                 newTrack.SubItems.Add(presetQuery.AudioSamplerate1);\r
266                 newTrack.SubItems.Add(presetQuery.AudioBitrate1);\r
267                 newTrack.SubItems.Add(presetQuery.DRC1.ToString());\r
268                 mainWindow.lv_audioList.Items.Add(newTrack);\r
269             }\r
270 \r
271             if (presetQuery.AudioTrack2 != "None")\r
272             {\r
273                 newTrack = new ListViewItem("Automatic");\r
274                 newTrack.SubItems.Add(presetQuery.AudioEncoder2);\r
275                 newTrack.SubItems.Add(presetQuery.AudioTrackMix2);\r
276                 newTrack.SubItems.Add(presetQuery.AudioSamplerate2);\r
277                 newTrack.SubItems.Add(presetQuery.AudioBitrate2);\r
278                 newTrack.SubItems.Add(presetQuery.DRC2.ToString());\r
279                 mainWindow.lv_audioList.Items.Add(newTrack);\r
280             }\r
281 \r
282             if (presetQuery.AudioTrack3 != "None")\r
283             {\r
284                 newTrack = new ListViewItem("Automatic");\r
285                 newTrack.SubItems.Add(presetQuery.AudioEncoder3);\r
286                 newTrack.SubItems.Add(presetQuery.AudioTrackMix3);\r
287                 newTrack.SubItems.Add(presetQuery.AudioSamplerate3);\r
288                 newTrack.SubItems.Add(presetQuery.AudioBitrate3);\r
289                 newTrack.SubItems.Add(presetQuery.DRC3.ToString());\r
290                 mainWindow.lv_audioList.Items.Add(newTrack);\r
291             }\r
292 \r
293             if (presetQuery.AudioTrack4 != "None")\r
294             {\r
295                 newTrack = new ListViewItem("Automatic");\r
296                 newTrack.SubItems.Add(presetQuery.AudioEncoder4);\r
297                 newTrack.SubItems.Add(presetQuery.AudioTrackMix4);\r
298                 newTrack.SubItems.Add(presetQuery.AudioSamplerate4);\r
299                 newTrack.SubItems.Add(presetQuery.AudioBitrate4);\r
300                 newTrack.SubItems.Add(presetQuery.DRC4.ToString());\r
301                 mainWindow.lv_audioList.Items.Add(newTrack);\r
302             }\r
303 \r
304             // Subtitle Stuff\r
305             mainWindow.drp_subtitle.Text = presetQuery.Subtitles;\r
306 \r
307             if (presetQuery.ForcedSubtitles)\r
308             {\r
309                 mainWindow.check_forced.CheckState = CheckState.Checked;\r
310                 mainWindow.check_forced.Enabled = true;\r
311             }\r
312             else\r
313                 mainWindow.check_forced.CheckState = CheckState.Unchecked;\r
314 \r
315             #endregion\r
316 \r
317             // H264 Tab & Preset Name\r
318             #region other\r
319             mainWindow.x264Panel.x264Query = presetQuery.H264Query;\r
320 \r
321             // Set the preset name\r
322             mainWindow.groupBox_output.Text = "Output Settings (Preset: " + name + ")";\r
323             #endregion\r
324         }\r
325     }\r
326 }