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