OSDN Git Service

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