OSDN Git Service

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