OSDN Git Service

fix problem to enter infinite loop when load preset with custom anamorphic and par...
[handbrake-jp/handbrake-jp.git] / win / C# / frmOptions.cs
1 /*  frmOptions.cs $\r
2         \r
3            This file is part of the HandBrake source code.\r
4            Homepage: <http://handbrake.fr>.\r
5            It may be used under the terms of the GNU General Public License. */\r
6 \r
7 /*\r
8  * This file come from HandBrake source code by http://handbrake.fr/ , \r
9  * and modified by hylom <hylomm@gmail.com> for HandBrake Japanese version.\r
10  * It may be used under the terms of the GNU General Public License.\r
11  * last modified date: $Format:%cd$\r
12  */\r
13 \r
14 \r
15 using System;\r
16 using System.Collections.Generic;\r
17 using System.Globalization;\r
18 using System.Windows.Forms;\r
19 using Handbrake.Functions;\r
20 \r
21 namespace Handbrake\r
22 {\r
23     public partial class frmOptions : Form\r
24     {\r
25         private frmMain mainWindow;\r
26 \r
27         public frmOptions(frmMain mw)\r
28         {\r
29             InitializeComponent();\r
30             mainWindow = mw;\r
31 \r
32             IDictionary<string, string> langList = Main.mapLanguages();\r
33             foreach (string item in langList.Keys)\r
34                 drop_preferredLang.Items.Add(item);\r
35 \r
36             // #############################\r
37             // General\r
38             // #############################\r
39 \r
40             // Enable Tooltips.\r
41             if (Properties.Settings.Default.tooltipEnable)\r
42             {\r
43                 check_tooltip.CheckState = CheckState.Checked;\r
44                 ToolTip.Active = true;\r
45             }\r
46 \r
47             // Setup Widgets to match settings.\r
48             if (Properties.Settings.Default.updateStatus)\r
49                 check_updateCheck.CheckState = CheckState.Checked;\r
50 \r
51             // On Encode Completeion Action\r
52             // drp_completeOption.Text = Properties.Settings.Default.CompletionOption;\r
53             switch (Properties.Settings.Default.CompletionOption)\r
54             {\r
55                 case "Do nothing":\r
56                     drp_completeOption.Text = "\89½\82à\82µ\82È\82¢";\r
57                     break;\r
58                 case "Shutdown":\r
59                     drp_completeOption.Text = "PC\82Ì\93d\8c¹\82ð\90Ø\82é";\r
60                     break;\r
61                 case "Suspend":\r
62                     drp_completeOption.Text = "PC\82ð\83T\83X\83y\83\93\83h";\r
63                     break;\r
64                 case "Hibernate":\r
65                     drp_completeOption.Text = "PC\82ð\83n\83C\83o\83l\81[\83V\83\87\83\93";\r
66                     break;\r
67                 case "Lock system":\r
68                     drp_completeOption.Text = "PC\82ð\83\8d\83b\83N";\r
69                     break;\r
70                 case "Log off":\r
71                     drp_completeOption.Text = "\83\8d\83O\83I\83t";\r
72                     break;\r
73                 case "Quit HandBrake":\r
74                     drp_completeOption.Text = "HandBrake\82ð\8fI\97¹";\r
75                     break;\r
76                 default:\r
77                     drp_completeOption.Text = "\89½\82à\82µ\82È\82¢";\r
78                     break;\r
79             }\r
80 \r
81             // Growl.\r
82             if (Properties.Settings.Default.growlEncode)\r
83                 check_growlEncode.CheckState = CheckState.Checked;\r
84 \r
85             if (Properties.Settings.Default.growlQueue)\r
86                 check_GrowlQueue.CheckState = CheckState.Checked;\r
87 \r
88             // Enable auto naming feature.\r
89             if (Properties.Settings.Default.autoNaming)\r
90                 check_autoNaming.CheckState = CheckState.Checked;\r
91 \r
92             // Store the auto name path\r
93             text_an_path.Text = Properties.Settings.Default.autoNamePath;\r
94             if (text_an_path.Text == string.Empty)\r
95                 text_an_path.Text = "\81u\91I\91ð\81v\83{\83^\83\93\82ð\83N\83\8a\83b\83N\82µ\82Ä\91I\91ð...";\r
96 \r
97             // Store auto name format\r
98             txt_autoNameFormat.Text = Properties.Settings.Default.autoNameFormat;\r
99 \r
100             // Use iPod/iTunes friendly .m4v extension for MP4 files.\r
101             if (Properties.Settings.Default.useM4v)\r
102                 check_m4v.CheckState = CheckState.Checked;\r
103 \r
104             // #############################\r
105             // Picture Tab\r
106             // #############################\r
107 \r
108             // VLC Path\r
109             txt_vlcPath.Text = Properties.Settings.Default.VLC_Path;\r
110 \r
111             // #############################\r
112             // Audio and Subtitles Tab\r
113             // #############################\r
114 \r
115             if (Properties.Settings.Default.NativeLanguage == "Japanese")\r
116                 drop_preferredLang.SelectedItem = "\93ú\96{\8cê";\r
117             else \r
118                 drop_preferredLang.SelectedItem = Properties.Settings.Default.NativeLanguage;\r
119 \r
120             if (Properties.Settings.Default.DubAudio)\r
121                 radio_dub.Checked = true;\r
122             else\r
123                 radio_foreignAndSubs.Checked = true;\r
124 \r
125 \r
126             // #############################\r
127             // CLI\r
128             // #############################\r
129 \r
130             // Enable Start CLI minimized\r
131             if (Properties.Settings.Default.cli_minimized)\r
132                 check_cli_minimized.CheckState = CheckState.Checked;\r
133 \r
134             // Number of processor cores\r
135             if (Properties.Settings.Default.Processors == "Automatic")\r
136                 drp_processors.Text = "\8e©\93®";\r
137             else\r
138                 drp_processors.Text = Properties.Settings.Default.Processors;\r
139 \r
140             // Priority level for encodes\r
141             // drp_Priority.Text = Properties.Settings.Default.processPriority;\r
142             switch (Properties.Settings.Default.processPriority)\r
143             {\r
144                 case "Realtime":\r
145                     drp_Priority.Text = "\8dÅ\8d\82";\r
146                     break;\r
147                 case "High":\r
148                     drp_Priority.Text = "\8d\82";\r
149                     break;\r
150                 case "Above Normal":\r
151                     drp_Priority.Text = "\8d\82\82ß";\r
152                     break;\r
153                 case "Normal":\r
154                     drp_Priority.Text = "\95\81\92Ê";\r
155                     break;\r
156                 case "Below Normal":\r
157                     drp_Priority.Text = "\92á\82ß";\r
158                     break;\r
159                 case "Low":\r
160                     drp_Priority.Text = "\92á";\r
161                     break;\r
162                 default:\r
163                     drp_Priority.Text = "\95\81\92Ê";\r
164                     break;\r
165             }\r
166 \r
167             // Log Verbosity Level\r
168             cb_logVerboseLvl.SelectedIndex = Properties.Settings.Default.verboseLevel;\r
169 \r
170 \r
171             // Save logs in the same directory as encoded files\r
172             if (Properties.Settings.Default.saveLogWithVideo)\r
173                 check_saveLogWithVideo.CheckState = CheckState.Checked;\r
174 \r
175             // Save Logs in a specified path\r
176             if (Properties.Settings.Default.saveLogToSpecifiedPath)\r
177                 check_logsInSpecifiedLocation.CheckState = CheckState.Checked;\r
178 \r
179             // The saved log path\r
180             text_logPath.Text = Properties.Settings.Default.saveLogPath;\r
181 \r
182 \r
183             // #############################\r
184             // Advanced\r
185             // #############################\r
186 \r
187             // Minimise to Tray\r
188             if (Properties.Settings.Default.trayIconAlerts)\r
189                 check_trayStatusAlerts.CheckState = CheckState.Checked;\r
190 \r
191             // Tray Balloon popups\r
192             if (Properties.Settings.Default.MainWindowMinimize)\r
193                 check_mainMinimize.CheckState = CheckState.Checked;\r
194 \r
195             // Enable / Disable Query editor tab\r
196             if (Properties.Settings.Default.QueryEditorTab)\r
197                 check_queryEditorTab.CheckState = CheckState.Checked;\r
198 \r
199             // Prompt on inconsistant queries\r
200             check_promptOnUnmatchingQueries.Checked = Properties.Settings.Default.PromptOnUnmatchingQueries;\r
201 \r
202             // Preset update notification\r
203             if (Properties.Settings.Default.presetNotification)\r
204                 check_disablePresetNotification.CheckState = CheckState.Checked;\r
205 \r
206             // Experimental In-GUI encode status indicator.\r
207             if (Properties.Settings.Default.enocdeStatusInGui)\r
208                 check_inGuiStatus.CheckState = CheckState.Checked;\r
209 \r
210             // Days between update checks\r
211             switch (Properties.Settings.Default.daysBetweenUpdateCheck)\r
212             {\r
213                 case 1:\r
214                     drop_updateCheckDays.SelectedIndex = 0;\r
215                     break;\r
216                 case 7:\r
217                     drop_updateCheckDays.SelectedIndex = 1;\r
218                     break;\r
219                 case 30:\r
220                     drop_updateCheckDays.SelectedIndex = 2;\r
221                     break;\r
222             }\r
223 \r
224             // x264 step\r
225             string step = Properties.Settings.Default.x264cqstep.ToString(new CultureInfo("en-US"));\r
226             switch (step)\r
227             {\r
228                 case "1":\r
229                     drop_x264step.SelectedIndex = 0;\r
230                     break;\r
231                 case "0.5":\r
232                     drop_x264step.SelectedIndex = 1;\r
233                     break;\r
234                 case "0.25":\r
235                     drop_x264step.SelectedIndex = 2;\r
236                     break;\r
237                 case "0.2":\r
238                     drop_x264step.SelectedIndex = 3;\r
239                     break;\r
240             }\r
241 \r
242             // Use Experimental dvdnav\r
243             if (Properties.Settings.Default.noDvdNav)\r
244                 check_dvdnav.CheckState = CheckState.Checked;\r
245 \r
246             // #############################\r
247             // Debug\r
248             // #############################\r
249             if (Properties.Settings.Default.disableResCalc)\r
250                 check_disableResCalc.Checked = true;\r
251         }\r
252 \r
253         #region General\r
254         private void check_updateCheck_CheckedChanged(object sender, EventArgs e)\r
255         {\r
256             Properties.Settings.Default.updateStatus = check_updateCheck.Checked;\r
257         }\r
258 \r
259         private void check_tooltip_CheckedChanged(object sender, EventArgs e)\r
260         {\r
261             Properties.Settings.Default.tooltipEnable = check_tooltip.Checked;\r
262         }\r
263 \r
264         private void drp_completeOption_SelectedIndexChanged(object sender, EventArgs e)\r
265         {\r
266             // Properties.Settings.Default.CompletionOption = drp_completeOption.Text;\r
267             switch (drp_completeOption.Text)\r
268             {\r
269                 case "\89½\82à\82µ\82È\82¢":\r
270                     Properties.Settings.Default.CompletionOption = "Do nothing";\r
271                     break;\r
272 \r
273                 case "PC\82Ì\93d\8c¹\82ð\90Ø\82é":\r
274                     Properties.Settings.Default.CompletionOption = "Shutdown";\r
275                     break;\r
276                 \r
277                 case "PC\82ð\83T\83X\83y\83\93\83h":\r
278                     Properties.Settings.Default.CompletionOption = "Suspend";\r
279                     break;\r
280                 \r
281                 case "PC\82ð\83n\83C\83o\83l\81[\83V\83\87\83\93":\r
282                     Properties.Settings.Default.CompletionOption = "Hibernate";\r
283                     break;\r
284 \r
285                 case "PC\82ð\83\8d\83b\83N":\r
286                     Properties.Settings.Default.CompletionOption = "Lock system";\r
287                     break;\r
288 \r
289                 case "\83\8d\83O\83I\83t":\r
290                     Properties.Settings.Default.CompletionOption = "Log off";\r
291                     break;\r
292 \r
293                 case "HandBrake\82ð\8fI\97¹":\r
294                     Properties.Settings.Default.CompletionOption = "Quit HandBrake";\r
295                     break;\r
296 \r
297                 default:\r
298                     Properties.Settings.Default.CompletionOption = "Do nothing";\r
299                     break;\r
300             }\r
301         }\r
302 \r
303         private void check_GrowlQueue_CheckedChanged(object sender, EventArgs e)\r
304         {\r
305             Properties.Settings.Default.growlQueue = check_GrowlQueue.Checked;\r
306         }\r
307 \r
308         private void check_growlEncode_CheckedChanged(object sender, EventArgs e)\r
309         {\r
310             Properties.Settings.Default.growlEncode = check_growlEncode.Checked;\r
311         }\r
312 \r
313         private void check_autoNaming_CheckedChanged(object sender, EventArgs e)\r
314         {\r
315             Properties.Settings.Default.autoNaming = check_autoNaming.Checked;\r
316         }\r
317 \r
318         private void txt_autoNameFormat_TextChanged(object sender, EventArgs e)\r
319         {\r
320             Properties.Settings.Default.autoNameFormat = txt_autoNameFormat.Text;\r
321         }\r
322 \r
323         private void btn_browse_Click(object sender, EventArgs e)\r
324         {\r
325             pathFinder.ShowDialog();\r
326             text_an_path.Text = pathFinder.SelectedPath;\r
327         }\r
328 \r
329         private void text_an_path_TextChanged(object sender, EventArgs e)\r
330         {\r
331             if (text_an_path.Text == string.Empty)\r
332             {\r
333                 Properties.Settings.Default.autoNamePath = "";\r
334                 text_an_path.Text = "\81u\83u\83\89\83E\83Y\81v\83{\83^\83\93\82ð\83N\83\8a\83b\83N\82µ\82Ä\91I\91ð...";\r
335             }\r
336             else\r
337                 Properties.Settings.Default.autoNamePath = text_an_path.Text;\r
338         }\r
339 \r
340         private void check_m4v_CheckedChanged(object sender, EventArgs e)\r
341         {\r
342             Properties.Settings.Default.useM4v = check_m4v.Checked;\r
343         }\r
344         #endregion\r
345 \r
346         #region Picture\r
347         private void btn_vlcPath_Click(object sender, EventArgs e)\r
348         {\r
349             openFile_vlc.ShowDialog();\r
350             if (openFile_vlc.FileName != string.Empty)\r
351                 txt_vlcPath.Text = openFile_vlc.FileName;\r
352         }\r
353         private void txt_vlcPath_TextChanged(object sender, EventArgs e)\r
354         {\r
355             Properties.Settings.Default.VLC_Path = txt_vlcPath.Text;\r
356         }\r
357         #endregion\r
358 \r
359         #region Audio and Subtitles\r
360         private void drop_preferredLang_SelectedIndexChanged(object sender, EventArgs e)\r
361         {\r
362             if (drop_preferredLang.SelectedItem.ToString() == "\93ú\96{\8cê")\r
363                 Properties.Settings.Default.NativeLanguage = "Japanese";\r
364             else\r
365                 Properties.Settings.Default.NativeLanguage = drop_preferredLang.SelectedItem.ToString();\r
366         }\r
367         private void radio_dub_CheckedChanged(object sender, EventArgs e)\r
368         {\r
369             if (radio_dub.Checked)\r
370                 Properties.Settings.Default.DubAudio = true;\r
371         }\r
372         private void radio_foreignAndSubs_CheckedChanged(object sender, EventArgs e)\r
373         {\r
374             if (radio_foreignAndSubs.Checked)\r
375                 Properties.Settings.Default.DubAudio = false;\r
376         }       \r
377         #endregion\r
378 \r
379         #region CLI\r
380         private void check_cli_minimized_CheckedChanged(object sender, EventArgs e)\r
381         {\r
382             Properties.Settings.Default.cli_minimized = check_cli_minimized.Checked;\r
383         }\r
384 \r
385         private void drp_processors_SelectedIndexChanged(object sender, EventArgs e)\r
386         {\r
387             if (drp_processors.Text == "\8e©\93®")\r
388                 Properties.Settings.Default.Processors = "Automatic";\r
389             else\r
390                 Properties.Settings.Default.Processors = drp_processors.Text;\r
391         }\r
392 \r
393         private void drp_Priority_SelectedIndexChanged(object sender, EventArgs e)\r
394         {\r
395             // Properties.Settings.Default.processPriority = drp_Priority.Text;\r
396             switch (drp_Priority.Text) {\r
397                 case "\8dÅ\8d\82":\r
398                     Properties.Settings.Default.processPriority = "Realtime";\r
399                     break;\r
400 \r
401                 case "\8d\82":\r
402                     Properties.Settings.Default.processPriority = "High";\r
403                     break;\r
404 \r
405                 case "\8d\82\82ß":\r
406                     Properties.Settings.Default.processPriority = "Above Normal";\r
407                     break;\r
408 \r
409                 case "\95\81\92Ê":\r
410                     Properties.Settings.Default.processPriority = "Normal";\r
411                     break;\r
412 \r
413                 case "\92á\82ß":\r
414                     Properties.Settings.Default.processPriority = "Below Normal";\r
415                     break;\r
416 \r
417                 case "\92á":\r
418                     Properties.Settings.Default.processPriority = "Low";\r
419                     break;\r
420 \r
421                 default:\r
422                     Properties.Settings.Default.processPriority = "Normal";\r
423                     break;\r
424             }\r
425         }\r
426 \r
427         private void cb_logVerboseLvl_SelectedIndexChanged(object sender, EventArgs e)\r
428         {\r
429             Properties.Settings.Default.verboseLevel = cb_logVerboseLvl.SelectedIndex;\r
430         }\r
431 \r
432         private void check_saveLogWithVideo_CheckedChanged(object sender, EventArgs e)\r
433         {\r
434             Properties.Settings.Default.saveLogWithVideo = check_saveLogWithVideo.Checked;\r
435         }\r
436 \r
437         private void check_logsInSpecifiedLocation_CheckedChanged(object sender, EventArgs e)\r
438         {\r
439             Properties.Settings.Default.saveLogToSpecifiedPath = check_logsInSpecifiedLocation.Checked;\r
440         }\r
441 \r
442         private void btn_saveLog_Click(object sender, EventArgs e)\r
443         {\r
444             pathFinder.SelectedPath = String.Empty;\r
445             pathFinder.ShowDialog();\r
446             if (pathFinder.SelectedPath != string.Empty)\r
447                 text_logPath.Text = pathFinder.SelectedPath;\r
448         }\r
449 \r
450         private void text_logPath_TextChanged(object sender, EventArgs e)\r
451         {\r
452             Properties.Settings.Default.saveLogPath = text_logPath.Text;\r
453         }\r
454 \r
455         private void btn_viewLogs_Click(object sender, EventArgs e)\r
456         {\r
457             string logDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\HandBrake\\logs";\r
458             string windir = Environment.GetEnvironmentVariable("WINDIR");\r
459             System.Diagnostics.Process prc = new System.Diagnostics.Process();\r
460             prc.StartInfo.FileName = windir + @"\explorer.exe";\r
461             prc.StartInfo.Arguments = logDir;\r
462             prc.Start();\r
463         }\r
464 \r
465         private void btn_clearLogs_Click(object sender, EventArgs e)\r
466         {\r
467             DialogResult result = MessageBox.Show("HandBrake\82Ì\83\8d\83O\83t\83H\83\8b\83_\82ð\8bó\82É\82µ\82Ü\82·\82©\81H", "Clear Logs", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);\r
468             if (result == DialogResult.Yes)\r
469             {\r
470                 Main.clearLogs();\r
471                 MessageBox.Show(this, "\83\8d\83O\83t\83H\83\8b\83_\82ð\8bó\82É\82µ\82Ü\82µ\82½\81I", "Notice", MessageBoxButtons.OK,\r
472                                 MessageBoxIcon.Information);\r
473             }\r
474         }\r
475         #endregion\r
476 \r
477         #region Advanced\r
478 \r
479         private void check_mainMinimize_CheckedChanged(object sender, EventArgs e)\r
480         {\r
481             Properties.Settings.Default.MainWindowMinimize = check_mainMinimize.Checked;\r
482             check_trayStatusAlerts.Enabled = check_mainMinimize.Checked;\r
483         }\r
484 \r
485         private void check_trayStatusAlerts_CheckedChanged(object sender, EventArgs e)\r
486         {\r
487             Properties.Settings.Default.trayIconAlerts = check_trayStatusAlerts.Checked;\r
488         }\r
489 \r
490         private void check_queryEditorTab_CheckedChanged(object sender, EventArgs e)\r
491         {\r
492             Properties.Settings.Default.QueryEditorTab = check_queryEditorTab.Checked;\r
493             check_promptOnUnmatchingQueries.Enabled = check_queryEditorTab.Checked;\r
494         }\r
495 \r
496         private void check_promptOnUnmatchingQueries_CheckedChanged(object sender, EventArgs e)\r
497         {\r
498             Properties.Settings.Default.PromptOnUnmatchingQueries = check_promptOnUnmatchingQueries.Checked;\r
499         }\r
500 \r
501         private void check_disablePresetNotification_CheckedChanged(object sender, EventArgs e)\r
502         {\r
503             Properties.Settings.Default.presetNotification = check_disablePresetNotification.Checked;\r
504         }\r
505 \r
506         private void check_inGuiStatus_CheckedChanged(object sender, EventArgs e)\r
507         {\r
508             Properties.Settings.Default.enocdeStatusInGui = check_inGuiStatus.Checked;\r
509         }\r
510 \r
511         private void drop_updateCheckDays_SelectedIndexChanged(object sender, EventArgs e)\r
512         {\r
513             switch (drop_updateCheckDays.SelectedIndex)\r
514             {\r
515                 case 0:\r
516                     Properties.Settings.Default.daysBetweenUpdateCheck = 1;\r
517                     break;\r
518                 case 1:\r
519                     Properties.Settings.Default.daysBetweenUpdateCheck = 7;\r
520                     break;\r
521                 case 2:\r
522                     Properties.Settings.Default.daysBetweenUpdateCheck = 30;\r
523                     break;\r
524             }\r
525         }\r
526 \r
527         private void x264step_SelectedIndexChanged(object sender, EventArgs e)\r
528         {\r
529             switch (drop_x264step.SelectedIndex)\r
530             {\r
531                 case 0:\r
532                     Properties.Settings.Default.x264cqstep = 1.0;\r
533                     break;\r
534                 case 1:\r
535                     Properties.Settings.Default.x264cqstep = 0.50;\r
536                     break;\r
537                 case 2:\r
538                     Properties.Settings.Default.x264cqstep = 0.25;\r
539                     break;\r
540                 case 3:\r
541                     Properties.Settings.Default.x264cqstep = 0.20;\r
542                     break;\r
543             }\r
544             mainWindow.setQualityFromSlider();\r
545         }\r
546 \r
547         private void check_dvdnav_CheckedChanged(object sender, EventArgs e)\r
548         {\r
549             Properties.Settings.Default.noDvdNav = check_dvdnav.Checked;\r
550         }\r
551         #endregion\r
552 \r
553         #region Debug\r
554         private void check_disableResCalc_CheckedChanged(object sender, EventArgs e)\r
555         {\r
556             Properties.Settings.Default.disableResCalc = check_disableResCalc.Checked;\r
557         }\r
558         #endregion\r
559 \r
560         private void btn_close_Click(object sender, EventArgs e)\r
561         {\r
562             Properties.Settings.Default.Save(); // Small hack for Vista. Seems to work fine on XP without this\r
563             this.Close();\r
564         }\r
565     }\r
566 }