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
9 using System.Collections.Generic;
\r
10 using System.Diagnostics;
\r
11 using System.Globalization;
\r
12 using System.Windows.Forms;
\r
14 using HandBrake.ApplicationServices;
\r
16 using Handbrake.Functions;
\r
17 using Handbrake.Model;
\r
18 using Handbrake.Properties;
\r
21 /// The Options Window
\r
23 public partial class frmOptions : Form
\r
25 private frmMain mainWindow;
\r
27 public frmOptions(frmMain mw)
\r
29 InitializeComponent();
\r
32 IDictionary<string, string> langList = Main.MapLanguages();
\r
33 foreach (string item in langList.Keys)
\r
34 drop_preferredLang.Items.Add(item);
\r
36 // #############################
\r
38 // #############################
\r
41 if (Properties.Settings.Default.tooltipEnable)
\r
43 check_tooltip.CheckState = CheckState.Checked;
\r
44 ToolTip.Active = true;
\r
48 if (Properties.Settings.Default.updateStatus)
\r
49 check_updateCheck.CheckState = CheckState.Checked;
\r
51 // Days between update checks
\r
52 switch (Properties.Settings.Default.daysBetweenUpdateCheck)
\r
55 drop_updateCheckDays.SelectedIndex = 0;
\r
58 drop_updateCheckDays.SelectedIndex = 1;
\r
61 drop_updateCheckDays.SelectedIndex = 2;
\r
65 // On Encode Completeion Action
\r
66 drp_completeOption.Text = Properties.Settings.Default.CompletionOption;
\r
69 if (Properties.Settings.Default.growlEncode)
\r
70 check_growlEncode.CheckState = CheckState.Checked;
\r
72 if (Properties.Settings.Default.growlQueue)
\r
73 check_GrowlQueue.CheckState = CheckState.Checked;
\r
75 // Enable auto naming feature.
\r
76 if (Properties.Settings.Default.autoNaming)
\r
77 check_autoNaming.CheckState = CheckState.Checked;
\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
84 // Store auto name format
\r
85 txt_autoNameFormat.Text = Properties.Settings.Default.autoNameFormat;
\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
91 // Remove Underscores
\r
92 check_removeUnderscores.Checked = Properties.Settings.Default.AutoNameRemoveUnderscore;
\r
95 check_TitleCase.Checked = Properties.Settings.Default.AutoNameTitleCase;
\r
97 // #############################
\r
99 // #############################
\r
102 txt_vlcPath.Text = Properties.Settings.Default.VLC_Path;
\r
104 // #############################
\r
105 // Audio and Subtitles Tab
\r
106 // #############################
\r
108 drop_preferredLang.SelectedItem = Properties.Settings.Default.NativeLanguage;
\r
110 switch (Settings.Default.DubMode)
\r
113 radio_dub.Checked = true;
\r
116 radio_foreignAndSubs.Checked = true;
\r
119 radio_preferredAudioAndSubs.Checked = true;
\r
123 check_AddCCTracks.Checked = Properties.Settings.Default.useClosedCaption;
\r
125 // #############################
\r
127 // #############################
\r
129 // Priority level for encodes
\r
130 drp_Priority.Text = Properties.Settings.Default.processPriority;
\r
132 check_preventSleep.Checked = Properties.Settings.Default.preventSleep;
\r
134 // Log Verbosity Level
\r
135 cb_logVerboseLvl.SelectedIndex = Properties.Settings.Default.verboseLevel;
\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
141 // Save Logs in a specified path
\r
142 if (Properties.Settings.Default.saveLogToSpecifiedPath)
\r
143 check_logsInSpecifiedLocation.CheckState = CheckState.Checked;
\r
145 // The saved log path
\r
146 text_logPath.Text = Properties.Settings.Default.saveLogPath;
\r
148 check_clearOldLogs.Checked = Properties.Settings.Default.clearOldLogs;
\r
150 // #############################
\r
152 // #############################
\r
154 // Minimise to Tray
\r
155 if (Properties.Settings.Default.trayIconAlerts)
\r
156 check_trayStatusAlerts.CheckState = CheckState.Checked;
\r
158 // Tray Balloon popups
\r
159 if (Properties.Settings.Default.MainWindowMinimize)
\r
160 check_mainMinimize.CheckState = CheckState.Checked;
\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
167 // Prompt on inconsistant queries
\r
168 check_promptOnUnmatchingQueries.Checked = Properties.Settings.Default.PromptOnUnmatchingQueries;
\r
170 // Preset update notification
\r
171 if (Properties.Settings.Default.presetNotification)
\r
172 check_disablePresetNotification.CheckState = CheckState.Checked;
\r
175 check_showCliForInGUIEncode.Checked = Properties.Settings.Default.showCliForInGuiEncodeStatus;
\r
177 // Set the preview count
\r
178 drop_previewScanCount.SelectedItem = Properties.Settings.Default.previewScanCount.ToString();
\r
181 string step = Properties.Settings.Default.x264cqstep.ToString(new CultureInfo("en-US"));
\r
185 drop_x264step.SelectedIndex = 0;
\r
188 drop_x264step.SelectedIndex = 1;
\r
191 drop_x264step.SelectedIndex = 2;
\r
194 drop_x264step.SelectedIndex = 3;
\r
198 // Use Experimental dvdnav
\r
199 if (Properties.Settings.Default.noDvdNav)
\r
200 check_dvdnav.CheckState = CheckState.Checked;
\r
205 private void check_updateCheck_CheckedChanged(object sender, EventArgs e)
\r
207 Properties.Settings.Default.updateStatus = check_updateCheck.Checked;
\r
210 private void drop_updateCheckDays_SelectedIndexChanged(object sender, EventArgs e)
\r
212 switch (drop_updateCheckDays.SelectedIndex)
\r
215 Properties.Settings.Default.daysBetweenUpdateCheck = 1;
\r
218 Properties.Settings.Default.daysBetweenUpdateCheck = 7;
\r
221 Properties.Settings.Default.daysBetweenUpdateCheck = 30;
\r
226 private void check_tooltip_CheckedChanged(object sender, EventArgs e)
\r
228 Properties.Settings.Default.tooltipEnable = check_tooltip.Checked;
\r
231 private void drp_completeOption_SelectedIndexChanged(object sender, EventArgs e)
\r
233 Properties.Settings.Default.CompletionOption = drp_completeOption.Text;
\r
236 private void check_GrowlQueue_CheckedChanged(object sender, EventArgs e)
\r
238 Properties.Settings.Default.growlQueue = check_GrowlQueue.Checked;
\r
241 private void check_growlEncode_CheckedChanged(object sender, EventArgs e)
\r
243 Properties.Settings.Default.growlEncode = check_growlEncode.Checked;
\r
246 private void check_autoNaming_CheckedChanged(object sender, EventArgs e)
\r
248 Properties.Settings.Default.autoNaming = check_autoNaming.Checked;
\r
251 private void txt_autoNameFormat_TextChanged(object sender, EventArgs e)
\r
253 Properties.Settings.Default.autoNameFormat = txt_autoNameFormat.Text;
\r
256 private void btn_browse_Click(object sender, EventArgs e)
\r
258 pathFinder.ShowDialog();
\r
259 text_an_path.Text = pathFinder.SelectedPath;
\r
262 private void text_an_path_TextChanged(object sender, EventArgs e)
\r
264 if (text_an_path.Text == string.Empty)
\r
266 Properties.Settings.Default.autoNamePath = string.Empty;
\r
267 text_an_path.Text = "Click 'Browse' to set the default location";
\r
270 Properties.Settings.Default.autoNamePath = text_an_path.Text;
\r
273 private void check_m4v_CheckedChanged(object sender, EventArgs e)
\r
275 Properties.Settings.Default.useM4v = check_m4v.Checked;
\r
278 private void check_removeUnderscores_CheckedChanged(object sender, EventArgs e)
\r
280 Properties.Settings.Default.AutoNameRemoveUnderscore = check_removeUnderscores.Checked;
\r
283 private void check_TitleCase_CheckedChanged(object sender, EventArgs e)
\r
285 Properties.Settings.Default.AutoNameTitleCase = check_TitleCase.Checked;
\r
292 private void btn_vlcPath_Click(object sender, EventArgs e)
\r
294 openFile_vlc.ShowDialog();
\r
295 if (openFile_vlc.FileName != string.Empty)
\r
296 txt_vlcPath.Text = openFile_vlc.FileName;
\r
299 private void txt_vlcPath_TextChanged(object sender, EventArgs e)
\r
301 Properties.Settings.Default.VLC_Path = txt_vlcPath.Text;
\r
306 #region Audio and Subtitles
\r
308 private void drop_preferredLang_SelectedIndexChanged(object sender, EventArgs e)
\r
310 Properties.Settings.Default.NativeLanguage = drop_preferredLang.SelectedItem.ToString();
\r
313 private void radio_dub_CheckedChanged(object sender, EventArgs e)
\r
315 if (radio_dub.Checked)
\r
316 Properties.Settings.Default.DubMode = 1;
\r
319 private void radio_foreignAndSubs_CheckedChanged(object sender, EventArgs e)
\r
321 if (radio_foreignAndSubs.Checked)
\r
322 Properties.Settings.Default.DubMode = 2;
\r
325 private void radio_preferredAudioAndSubs_CheckedChanged(object sender, EventArgs e)
\r
327 if (radio_preferredAudioAndSubs.Checked)
\r
328 Properties.Settings.Default.DubMode = 3;
\r
331 private void check_AddCCTracks_CheckedChanged(object sender, EventArgs e)
\r
333 Settings.Default.useClosedCaption = check_AddCCTracks.Checked;
\r
340 private void drp_Priority_SelectedIndexChanged(object sender, EventArgs e)
\r
342 Properties.Settings.Default.processPriority = drp_Priority.Text;
\r
345 private void check_preventSleep_CheckedChanged(object sender, EventArgs e)
\r
347 Properties.Settings.Default.preventSleep = check_preventSleep.Checked;
\r
350 private void cb_logVerboseLvl_SelectedIndexChanged(object sender, EventArgs e)
\r
352 Properties.Settings.Default.verboseLevel = cb_logVerboseLvl.SelectedIndex;
\r
355 private void check_saveLogWithVideo_CheckedChanged(object sender, EventArgs e)
\r
357 Properties.Settings.Default.saveLogWithVideo = check_saveLogWithVideo.Checked;
\r
360 private void check_logsInSpecifiedLocation_CheckedChanged(object sender, EventArgs e)
\r
362 Properties.Settings.Default.saveLogToSpecifiedPath = check_logsInSpecifiedLocation.Checked;
\r
365 private void btn_saveLog_Click(object sender, EventArgs e)
\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
373 private void text_logPath_TextChanged(object sender, EventArgs e)
\r
375 Properties.Settings.Default.saveLogPath = text_logPath.Text;
\r
378 private void btn_viewLogs_Click(object sender, EventArgs e)
\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
388 private void btn_clearLogs_Click(object sender, EventArgs e)
\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
395 MessageBox.Show(this, "HandBrake's Log file directory has been cleared!", "Notice", MessageBoxButtons.OK,
\r
396 MessageBoxIcon.Information);
\r
400 private void check_clearOldLogs_CheckedChanged(object sender, EventArgs e)
\r
402 Properties.Settings.Default.clearOldLogs = check_clearOldLogs.Checked;
\r
409 private void check_mainMinimize_CheckedChanged(object sender, EventArgs e)
\r
411 Properties.Settings.Default.MainWindowMinimize = check_mainMinimize.Checked;
\r
412 check_trayStatusAlerts.Enabled = check_mainMinimize.Checked;
\r
415 private void check_trayStatusAlerts_CheckedChanged(object sender, EventArgs e)
\r
417 Properties.Settings.Default.trayIconAlerts = check_trayStatusAlerts.Checked;
\r
420 private void check_queryEditorTab_CheckedChanged(object sender, EventArgs e)
\r
422 Properties.Settings.Default.QueryEditorTab = check_queryEditorTab.Checked;
\r
423 check_promptOnUnmatchingQueries.Enabled = check_queryEditorTab.Checked;
\r
426 private void check_promptOnUnmatchingQueries_CheckedChanged(object sender, EventArgs e)
\r
428 Properties.Settings.Default.PromptOnUnmatchingQueries = check_promptOnUnmatchingQueries.Checked;
\r
431 private void check_disablePresetNotification_CheckedChanged(object sender, EventArgs e)
\r
433 Properties.Settings.Default.presetNotification = check_disablePresetNotification.Checked;
\r
436 private void check_showCliForInGUIEncode_CheckedChanged(object sender, EventArgs e)
\r
438 Properties.Settings.Default.showCliForInGuiEncodeStatus = check_showCliForInGUIEncode.Checked;
\r
441 private void drop_previewScanCount_SelectedIndexChanged(object sender, EventArgs e)
\r
443 Properties.Settings.Default.previewScanCount = int.Parse(drop_previewScanCount.SelectedItem.ToString());
\r
446 private void x264step_SelectedIndexChanged(object sender, EventArgs e)
\r
448 switch (drop_x264step.SelectedIndex)
\r
451 Properties.Settings.Default.x264cqstep = 1.0;
\r
454 Properties.Settings.Default.x264cqstep = 0.50;
\r
457 Properties.Settings.Default.x264cqstep = 0.25;
\r
460 Properties.Settings.Default.x264cqstep = 0.20;
\r
463 mainWindow.setQualityFromSlider();
\r
466 private void check_dvdnav_CheckedChanged(object sender, EventArgs e)
\r
468 Properties.Settings.Default.noDvdNav = check_dvdnav.Checked;
\r
473 private void btn_close_Click(object sender, EventArgs e)
\r
475 Properties.Settings.Default.Save(); // Small hack for Vista. Seems to work fine on XP without this
\r
476 UpdateApplicationServicesSettings();
\r
482 /// Initialize App Services
\r
484 private static void UpdateApplicationServicesSettings()
\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
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