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             mainWindow.text_bitrate.Text = presetQuery.AverageVideoBitrate;\r
168             mainWindow.text_filesize.Text = presetQuery.VideoTargetSize;\r
169             mainWindow.slider_videoQuality.Value = presetQuery.VideoQuality;\r
170             if (mainWindow.slider_videoQuality.Value != 0)\r
171             {\r
172                 int ql = presetQuery.VideoQuality;\r
173                 mainWindow.SliderValue.Text = ql + "%";\r
174             }\r
175 \r
176             if (presetQuery.TwoPass)\r
177                 mainWindow.check_2PassEncode.CheckState = CheckState.Checked;\r
178             else\r
179                 mainWindow.check_2PassEncode.CheckState = CheckState.Unchecked;\r
180 \r
181             if (presetQuery.Grayscale)\r
182                 mainWindow.check_grayscale.CheckState = CheckState.Checked;\r
183             else\r
184                 mainWindow.check_grayscale.CheckState = CheckState.Unchecked;\r
185 \r
186             mainWindow.drp_videoFramerate.Text = presetQuery.VideoFramerate;\r
187 \r
188             if (presetQuery.TurboFirstPass)\r
189                 mainWindow.check_turbo.CheckState = CheckState.Checked;\r
190             else\r
191                 mainWindow.check_turbo.CheckState = CheckState.Unchecked;\r
192 \r
193             if (presetQuery.LargeMP4)\r
194                 mainWindow.check_largeFile.CheckState = CheckState.Checked;\r
195             else\r
196             {\r
197                 mainWindow.check_largeFile.CheckState = CheckState.Unchecked;\r
198                 mainWindow.check_largeFile.BackColor = Color.Transparent;\r
199             }\r
200             #endregion\r
201 \r
202             // Chapter Markers Tab\r
203             #region Chapter Markers\r
204 \r
205             if (presetQuery.ChapterMarkers)\r
206             {\r
207                 mainWindow.Check_ChapterMarkers.CheckState = CheckState.Checked;\r
208                 mainWindow.Check_ChapterMarkers.Enabled = true;\r
209             }\r
210             else\r
211                 mainWindow.Check_ChapterMarkers.CheckState = CheckState.Unchecked;\r
212 \r
213             #endregion\r
214 \r
215             // Audio Settings Tab\r
216             #region Audio\r
217             // Clear the audio listing\r
218             mainWindow.lv_audioList.Items.Clear();\r
219 \r
220             // Create a new row for the Audio list based on the currently selected items in the dropdown.\r
221             ListViewItem newTrack;\r
222             if (presetQuery.AudioTrack1 != "None")\r
223             {\r
224                 newTrack = new ListViewItem("Automatic");\r
225                 newTrack.SubItems.Add(presetQuery.AudioEncoder1);\r
226                 newTrack.SubItems.Add(presetQuery.AudioTrackMix1);\r
227                 newTrack.SubItems.Add(presetQuery.AudioSamplerate1);\r
228                 newTrack.SubItems.Add(presetQuery.AudioBitrate1);\r
229                 newTrack.SubItems.Add(presetQuery.DRC1.ToString());\r
230                 mainWindow.lv_audioList.Items.Add(newTrack);\r
231             }\r
232 \r
233             if (presetQuery.AudioTrack2 != "None")\r
234             {\r
235                 newTrack = new ListViewItem("Automatic");\r
236                 newTrack.SubItems.Add(presetQuery.AudioEncoder2);\r
237                 newTrack.SubItems.Add(presetQuery.AudioTrackMix2);\r
238                 newTrack.SubItems.Add(presetQuery.AudioSamplerate2);\r
239                 newTrack.SubItems.Add(presetQuery.AudioBitrate2);\r
240                 newTrack.SubItems.Add(presetQuery.DRC2.ToString());\r
241                 mainWindow.lv_audioList.Items.Add(newTrack);\r
242             }\r
243 \r
244             if (presetQuery.AudioTrack3 != "None")\r
245             {\r
246                 newTrack = new ListViewItem("Automatic");\r
247                 newTrack.SubItems.Add(presetQuery.AudioEncoder3);\r
248                 newTrack.SubItems.Add(presetQuery.AudioTrackMix3);\r
249                 newTrack.SubItems.Add(presetQuery.AudioSamplerate3);\r
250                 newTrack.SubItems.Add(presetQuery.AudioBitrate3);\r
251                 newTrack.SubItems.Add(presetQuery.DRC3.ToString());\r
252                 mainWindow.lv_audioList.Items.Add(newTrack);\r
253             }\r
254 \r
255             if (presetQuery.AudioTrack4 != "None")\r
256             {\r
257                 newTrack = new ListViewItem("Automatic");\r
258                 newTrack.SubItems.Add(presetQuery.AudioEncoder4);\r
259                 newTrack.SubItems.Add(presetQuery.AudioTrackMix4);\r
260                 newTrack.SubItems.Add(presetQuery.AudioSamplerate4);\r
261                 newTrack.SubItems.Add(presetQuery.AudioBitrate4);\r
262                 newTrack.SubItems.Add(presetQuery.DRC4.ToString());\r
263                 mainWindow.lv_audioList.Items.Add(newTrack);\r
264             }\r
265 \r
266             // Subtitle Stuff\r
267             mainWindow.drp_subtitle.Text = presetQuery.Subtitles;\r
268 \r
269             if (presetQuery.ForcedSubtitles)\r
270             {\r
271                 mainWindow.check_forced.CheckState = CheckState.Checked;\r
272                 mainWindow.check_forced.Enabled = true;\r
273             }\r
274             else\r
275                 mainWindow.check_forced.CheckState = CheckState.Unchecked;\r
276 \r
277             #endregion\r
278 \r
279             // H264 Tab & Preset Name\r
280             #region other\r
281             mainWindow.rtf_x264Query.Text = presetQuery.H264Query;\r
282 \r
283             // Set the preset name\r
284             mainWindow.groupBox_output.Text = "Output Settings (Preset: " + name + ")";\r
285             #endregion\r
286         }\r
287     }\r
288 }