OSDN Git Service

merge 0.9.4 to jp
[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 using System;\r
8 using System.Collections.Generic;\r
9 using System.Globalization;\r
10 using System.Windows.Forms;\r
11 using Handbrake.Functions;\r
12 \r
13 namespace Handbrake\r
14 {\r
15     public partial class frmOptions : Form\r
16     {\r
17         private frmMain mainWindow;\r
18 \r
19         public frmOptions(frmMain mw)\r
20         {\r
21             InitializeComponent();\r
22             mainWindow = mw;\r
23 \r
24             IDictionary<string, string> langList = Main.mapLanguages();\r
25             foreach (string item in langList.Keys)\r
26                 drop_preferredLang.Items.Add(item);\r
27 \r
28             // #############################\r
29             // General\r
30             // #############################\r
31 \r
32             // Enable Tooltips.\r
33             if (Properties.Settings.Default.tooltipEnable)\r
34             {\r
35                 check_tooltip.CheckState = CheckState.Checked;\r
36                 ToolTip.Active = true;\r
37             }\r
38 \r
39             // Setup Widgets to match settings.\r
40             if (Properties.Settings.Default.updateStatus)\r
41                 check_updateCheck.CheckState = CheckState.Checked;\r
42 \r
43             // On Encode Completeion Action\r
44             drp_completeOption.Text = Properties.Settings.Default.CompletionOption;\r
45 \r
46             // Growl.\r
47             if (Properties.Settings.Default.growlEncode)\r
48                 check_growlEncode.CheckState = CheckState.Checked;\r
49 \r
50             if (Properties.Settings.Default.growlQueue)\r
51                 check_GrowlQueue.CheckState = CheckState.Checked;\r
52 \r
53             // Enable auto naming feature.\r
54             if (Properties.Settings.Default.autoNaming)\r
55                 check_autoNaming.CheckState = CheckState.Checked;\r
56 \r
57             // Store the auto name path\r
58             text_an_path.Text = Properties.Settings.Default.autoNamePath;\r
59             if (text_an_path.Text == string.Empty)\r
60                 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
61 \r
62             // Store auto name format\r
63             txt_autoNameFormat.Text = Properties.Settings.Default.autoNameFormat;\r
64 \r
65             // Use iPod/iTunes friendly .m4v extension for MP4 files.\r
66             if (Properties.Settings.Default.useM4v)\r
67                 check_m4v.CheckState = CheckState.Checked;\r
68 \r
69             // #############################\r
70             // Picture Tab\r
71             // #############################\r
72 \r
73             // VLC Path\r
74             txt_vlcPath.Text = Properties.Settings.Default.VLC_Path;\r
75 \r
76             // #############################\r
77             // Audio and Subtitles Tab\r
78             // #############################\r
79 \r
80             drop_preferredLang.SelectedItem = Properties.Settings.Default.NativeLanguage;\r
81 \r
82             if (Properties.Settings.Default.DubAudio)\r
83                 radio_dub.Checked = true;\r
84             else\r
85                 radio_foreignAndSubs.Checked = true;\r
86 \r
87 \r
88             // #############################\r
89             // CLI\r
90             // #############################\r
91 \r
92             // Enable Start CLI minimized\r
93             if (Properties.Settings.Default.cli_minimized)\r
94                 check_cli_minimized.CheckState = CheckState.Checked;\r
95 \r
96             // Number of processor cores\r
97             drp_processors.Text = Properties.Settings.Default.Processors;\r
98 \r
99             // Priority level for encodes\r
100             drp_Priority.Text = Properties.Settings.Default.processPriority;\r
101 \r
102             // Log Verbosity Level\r
103             cb_logVerboseLvl.SelectedIndex = Properties.Settings.Default.verboseLevel;\r
104 \r
105 \r
106             // Save logs in the same directory as encoded files\r
107             if (Properties.Settings.Default.saveLogWithVideo)\r
108                 check_saveLogWithVideo.CheckState = CheckState.Checked;\r
109 \r
110             // Save Logs in a specified path\r
111             if (Properties.Settings.Default.saveLogToSpecifiedPath)\r
112                 check_logsInSpecifiedLocation.CheckState = CheckState.Checked;\r
113 \r
114             // The saved log path\r
115             text_logPath.Text = Properties.Settings.Default.saveLogPath;\r
116 \r
117 \r
118             // #############################\r
119             // Advanced\r
120             // #############################\r
121 \r
122             // Minimise to Tray\r
123             if (Properties.Settings.Default.trayIconAlerts)\r
124                 check_trayStatusAlerts.CheckState = CheckState.Checked;\r
125 \r
126             // Tray Balloon popups\r
127             if (Properties.Settings.Default.MainWindowMinimize)\r
128                 check_mainMinimize.CheckState = CheckState.Checked;\r
129 \r
130             // Enable / Disable Query editor tab\r
131             if (Properties.Settings.Default.QueryEditorTab)\r
132                 check_queryEditorTab.CheckState = CheckState.Checked;\r
133 \r
134             // Prompt on inconsistant queries\r
135             check_promptOnUnmatchingQueries.Checked = Properties.Settings.Default.PromptOnUnmatchingQueries;\r
136 \r
137             // Preset update notification\r
138             if (Properties.Settings.Default.presetNotification)\r
139                 check_disablePresetNotification.CheckState = CheckState.Checked;\r
140 \r
141             // Experimental In-GUI encode status indicator.\r
142             if (Properties.Settings.Default.enocdeStatusInGui)\r
143                 check_inGuiStatus.CheckState = CheckState.Checked;\r
144 \r
145             // Days between update checks\r
146             switch (Properties.Settings.Default.daysBetweenUpdateCheck)\r
147             {\r
148                 case 1:\r
149                     drop_updateCheckDays.SelectedIndex = 0;\r
150                     break;\r
151                 case 7:\r
152                     drop_updateCheckDays.SelectedIndex = 1;\r
153                     break;\r
154                 case 30:\r
155                     drop_updateCheckDays.SelectedIndex = 2;\r
156                     break;\r
157             }\r
158 \r
159             // x264 step\r
160             string step = Properties.Settings.Default.x264cqstep.ToString(new CultureInfo("en-US"));\r
161             switch (step)\r
162             {\r
163                 case "1":\r
164                     drop_x264step.SelectedIndex = 0;\r
165                     break;\r
166                 case "0.5":\r
167                     drop_x264step.SelectedIndex = 1;\r
168                     break;\r
169                 case "0.25":\r
170                     drop_x264step.SelectedIndex = 2;\r
171                     break;\r
172                 case "0.2":\r
173                     drop_x264step.SelectedIndex = 3;\r
174                     break;\r
175             }\r
176 \r
177             // Use Experimental dvdnav\r
178             if (Properties.Settings.Default.noDvdNav)\r
179                 check_dvdnav.CheckState = CheckState.Checked;\r
180 \r
181             // #############################\r
182             // Debug\r
183             // #############################\r
184             if (Properties.Settings.Default.disableResCalc)\r
185                 check_disableResCalc.Checked = true;\r
186         }\r
187 \r
188         #region General\r
189         private void check_updateCheck_CheckedChanged(object sender, EventArgs e)\r
190         {\r
191             Properties.Settings.Default.updateStatus = check_updateCheck.Checked;\r
192         }\r
193 \r
194         private void check_tooltip_CheckedChanged(object sender, EventArgs e)\r
195         {\r
196             Properties.Settings.Default.tooltipEnable = check_tooltip.Checked;\r
197         }\r
198 \r
199         private void drp_completeOption_SelectedIndexChanged(object sender, EventArgs e)\r
200         {\r
201             Properties.Settings.Default.CompletionOption = drp_completeOption.Text;\r
202         }\r
203 \r
204         private void check_GrowlQueue_CheckedChanged(object sender, EventArgs e)\r
205         {\r
206             Properties.Settings.Default.growlQueue = check_GrowlQueue.Checked;\r
207         }\r
208 \r
209         private void check_growlEncode_CheckedChanged(object sender, EventArgs e)\r
210         {\r
211             Properties.Settings.Default.growlEncode = check_growlEncode.Checked;\r
212         }\r
213 \r
214         private void check_autoNaming_CheckedChanged(object sender, EventArgs e)\r
215         {\r
216             Properties.Settings.Default.autoNaming = check_autoNaming.Checked;\r
217         }\r
218 \r
219         private void txt_autoNameFormat_TextChanged(object sender, EventArgs e)\r
220         {\r
221             Properties.Settings.Default.autoNameFormat = txt_autoNameFormat.Text;\r
222         }\r
223 \r
224         private void btn_browse_Click(object sender, EventArgs e)\r
225         {\r
226             pathFinder.ShowDialog();\r
227             text_an_path.Text = pathFinder.SelectedPath;\r
228         }\r
229 \r
230         private void text_an_path_TextChanged(object sender, EventArgs e)\r
231         {\r
232             if (text_an_path.Text == string.Empty)\r
233             {\r
234                 Properties.Settings.Default.autoNamePath = "";\r
235                 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
236             }\r
237             else\r
238                 Properties.Settings.Default.autoNamePath = text_an_path.Text;\r
239         }\r
240 \r
241         private void check_m4v_CheckedChanged(object sender, EventArgs e)\r
242         {\r
243             Properties.Settings.Default.useM4v = check_m4v.Checked;\r
244         }\r
245         #endregion\r
246 \r
247         #region Picture\r
248         private void btn_vlcPath_Click(object sender, EventArgs e)\r
249         {\r
250             openFile_vlc.ShowDialog();\r
251             if (openFile_vlc.FileName != string.Empty)\r
252                 txt_vlcPath.Text = openFile_vlc.FileName;\r
253         }\r
254         private void txt_vlcPath_TextChanged(object sender, EventArgs e)\r
255         {\r
256             Properties.Settings.Default.VLC_Path = txt_vlcPath.Text;\r
257         }\r
258         #endregion\r
259 \r
260         #region Audio and Subtitles\r
261         private void drop_preferredLang_SelectedIndexChanged(object sender, EventArgs e)\r
262         {\r
263             Properties.Settings.Default.NativeLanguage = drop_preferredLang.SelectedItem.ToString();\r
264         }\r
265         private void radio_dub_CheckedChanged(object sender, EventArgs e)\r
266         {\r
267             if (radio_dub.Checked)\r
268                 Properties.Settings.Default.DubAudio = true;\r
269         }\r
270         private void radio_foreignAndSubs_CheckedChanged(object sender, EventArgs e)\r
271         {\r
272             if (radio_foreignAndSubs.Checked)\r
273                 Properties.Settings.Default.DubAudio = false;\r
274         }       \r
275         #endregion\r
276 \r
277         #region CLI\r
278         private void check_cli_minimized_CheckedChanged(object sender, EventArgs e)\r
279         {\r
280             Properties.Settings.Default.cli_minimized = check_cli_minimized.Checked;\r
281         }\r
282 \r
283         private void drp_processors_SelectedIndexChanged(object sender, EventArgs e)\r
284         {\r
285             Properties.Settings.Default.Processors = drp_processors.Text;\r
286         }\r
287 \r
288         private void drp_Priority_SelectedIndexChanged(object sender, EventArgs e)\r
289         {\r
290             Properties.Settings.Default.processPriority = drp_Priority.Text;\r
291         }\r
292 \r
293         private void cb_logVerboseLvl_SelectedIndexChanged(object sender, EventArgs e)\r
294         {\r
295             Properties.Settings.Default.verboseLevel = cb_logVerboseLvl.SelectedIndex;\r
296         }\r
297 \r
298         private void check_saveLogWithVideo_CheckedChanged(object sender, EventArgs e)\r
299         {\r
300             Properties.Settings.Default.saveLogWithVideo = check_saveLogWithVideo.Checked;\r
301         }\r
302 \r
303         private void check_logsInSpecifiedLocation_CheckedChanged(object sender, EventArgs e)\r
304         {\r
305             Properties.Settings.Default.saveLogToSpecifiedPath = check_logsInSpecifiedLocation.Checked;\r
306         }\r
307 \r
308         private void btn_saveLog_Click(object sender, EventArgs e)\r
309         {\r
310             pathFinder.SelectedPath = String.Empty;\r
311             pathFinder.ShowDialog();\r
312             if (pathFinder.SelectedPath != string.Empty)\r
313                 text_logPath.Text = pathFinder.SelectedPath;\r
314         }\r
315 \r
316         private void text_logPath_TextChanged(object sender, EventArgs e)\r
317         {\r
318             Properties.Settings.Default.saveLogPath = text_logPath.Text;\r
319         }\r
320 \r
321         private void btn_viewLogs_Click(object sender, EventArgs e)\r
322         {\r
323             string logDir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\HandBrake\\logs";\r
324             string windir = Environment.GetEnvironmentVariable("WINDIR");\r
325             System.Diagnostics.Process prc = new System.Diagnostics.Process();\r
326             prc.StartInfo.FileName = windir + @"\explorer.exe";\r
327             prc.StartInfo.Arguments = logDir;\r
328             prc.Start();\r
329         }\r
330 \r
331         private void btn_clearLogs_Click(object sender, EventArgs e)\r
332         {\r
333             DialogResult result = MessageBox.Show("Are you sure you wish to clear the log file directory?", "Clear Logs", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);\r
334             if (result == DialogResult.Yes)\r
335             {\r
336                 Main.clearLogs();\r
337                 MessageBox.Show(this, "HandBrake's Log file directory has been cleared!", "Notice", MessageBoxButtons.OK,\r
338                                 MessageBoxIcon.Information);\r
339             }\r
340         }\r
341         #endregion\r
342 \r
343         #region Advanced\r
344 \r
345         private void check_mainMinimize_CheckedChanged(object sender, EventArgs e)\r
346         {\r
347             Properties.Settings.Default.MainWindowMinimize = check_mainMinimize.Checked;\r
348             check_trayStatusAlerts.Enabled = check_mainMinimize.Checked;\r
349         }\r
350 \r
351         private void check_trayStatusAlerts_CheckedChanged(object sender, EventArgs e)\r
352         {\r
353             Properties.Settings.Default.trayIconAlerts = check_trayStatusAlerts.Checked;\r
354         }\r
355 \r
356         private void check_queryEditorTab_CheckedChanged(object sender, EventArgs e)\r
357         {\r
358             Properties.Settings.Default.QueryEditorTab = check_queryEditorTab.Checked;\r
359             check_promptOnUnmatchingQueries.Enabled = check_queryEditorTab.Checked;\r
360         }\r
361 \r
362         private void check_promptOnUnmatchingQueries_CheckedChanged(object sender, EventArgs e)\r
363         {\r
364             Properties.Settings.Default.PromptOnUnmatchingQueries = check_promptOnUnmatchingQueries.Checked;\r
365         }\r
366 \r
367         private void check_disablePresetNotification_CheckedChanged(object sender, EventArgs e)\r
368         {\r
369             Properties.Settings.Default.presetNotification = check_disablePresetNotification.Checked;\r
370         }\r
371 \r
372         private void check_inGuiStatus_CheckedChanged(object sender, EventArgs e)\r
373         {\r
374             Properties.Settings.Default.enocdeStatusInGui = check_inGuiStatus.Checked;\r
375         }\r
376 \r
377         private void drop_updateCheckDays_SelectedIndexChanged(object sender, EventArgs e)\r
378         {\r
379             switch (drop_updateCheckDays.SelectedIndex)\r
380             {\r
381                 case 0:\r
382                     Properties.Settings.Default.daysBetweenUpdateCheck = 1;\r
383                     break;\r
384                 case 1:\r
385                     Properties.Settings.Default.daysBetweenUpdateCheck = 7;\r
386                     break;\r
387                 case 2:\r
388                     Properties.Settings.Default.daysBetweenUpdateCheck = 30;\r
389                     break;\r
390             }\r
391         }\r
392 \r
393         private void x264step_SelectedIndexChanged(object sender, EventArgs e)\r
394         {\r
395             switch (drop_x264step.SelectedIndex)\r
396             {\r
397                 case 0:\r
398                     Properties.Settings.Default.x264cqstep = 1.0;\r
399                     break;\r
400                 case 1:\r
401                     Properties.Settings.Default.x264cqstep = 0.50;\r
402                     break;\r
403                 case 2:\r
404                     Properties.Settings.Default.x264cqstep = 0.25;\r
405                     break;\r
406                 case 3:\r
407                     Properties.Settings.Default.x264cqstep = 0.20;\r
408                     break;\r
409             }\r
410             mainWindow.setQualityFromSlider();\r
411         }\r
412 \r
413         private void check_dvdnav_CheckedChanged(object sender, EventArgs e)\r
414         {\r
415             Properties.Settings.Default.noDvdNav = check_dvdnav.Checked;\r
416         }\r
417         #endregion\r
418 \r
419         #region Debug\r
420         private void check_disableResCalc_CheckedChanged(object sender, EventArgs e)\r
421         {\r
422             Properties.Settings.Default.disableResCalc = check_disableResCalc.Checked;\r
423         }\r
424         #endregion\r
425 \r
426         private void btn_close_Click(object sender, EventArgs e)\r
427         {\r
428             Properties.Settings.Default.Save(); // Small hack for Vista. Seems to work fine on XP without this\r
429             this.Close();\r
430         }\r
431     }\r
432 }