X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=win%2FC%23%2FfrmMain.cs;h=a377aca69d4b1006023eb5915052d7409083be78;hb=31e8e90017a38e8b35b8297eb338d6f4f79de6f4;hp=584764f88265ec49ed13a26bcb958149fc1ca4bc;hpb=b76e03e6b9251ccd0720e6e75dc6de2f9f7d725c;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/win/C#/frmMain.cs b/win/C#/frmMain.cs index 584764f8..a377aca6 100644 --- a/win/C#/frmMain.cs +++ b/win/C#/frmMain.cs @@ -35,6 +35,9 @@ namespace Handbrake private Form splash; public string sourcePath; private string lastAction; + private SourceType selectedSourceType; + private string dvdDrivePath; + private string dvdDriveLabel; // Delegates ********************************************************** private delegate void UpdateWindowHandler(); @@ -88,12 +91,12 @@ namespace Handbrake tabs_panel.TabPages.RemoveAt(7); // Remove the query editor tab if the user does not want it enabled. // Load the user's default settings or Normal Preset - if (Properties.Settings.Default.defaultSettings && Properties.Settings.Default.defaultPreset != "") + if (Properties.Settings.Default.defaultPreset != "") { - if (presetHandler.getPreset(Properties.Settings.Default.defaultPreset) != null) + if (presetHandler.GetPreset(Properties.Settings.Default.defaultPreset) != null) { - string query = presetHandler.getPreset(Properties.Settings.Default.defaultPreset).Query; - Boolean loadPictureSettings = presetHandler.getPreset(Properties.Settings.Default.defaultPreset).PictureSettings; + string query = presetHandler.GetPreset(Properties.Settings.Default.defaultPreset).Query; + Boolean loadPictureSettings = presetHandler.GetPreset(Properties.Settings.Default.defaultPreset).PictureSettings; if (query != null) { @@ -181,12 +184,27 @@ namespace Handbrake } #endregion + #region Properties + public string SourceName + { + get + { + if (this.selectedSourceType == SourceType.DvdDrive) + { + return this.dvdDriveLabel; + } + + return Path.GetFileNameWithoutExtension(this.sourcePath); + } + } + #endregion + #region Events // Encoding Events for setting up the GUI private void events() { // Handle Widget changes when preset is selected. - registerPresetEventHandler(); + RegisterPresetEventHandler(); // Handle Window Resize if (Properties.Settings.Default.MainWindowMinimize) @@ -203,7 +221,7 @@ namespace Handbrake } // Change the preset label to custom when a user changes a setting. Don't want to give the impression that users can change settings and still be using a preset - public void registerPresetEventHandler() + private void RegisterPresetEventHandler() { // Output Settings drop_format.SelectedIndexChanged += new EventHandler(changePresetLabel); @@ -231,7 +249,7 @@ namespace Handbrake // Advanced Tab x264Panel.rtf_x264Query.TextChanged += new EventHandler(changePresetLabel); } - public void unRegisterPresetEventHandler() + private void UnRegisterPresetEventHandler() { // Output Settings drop_format.SelectedIndexChanged -= new EventHandler(changePresetLabel); @@ -343,7 +361,7 @@ namespace Handbrake } private void mnu_options_Click(object sender, EventArgs e) { - Form options = new frmOptions(); + Form options = new frmOptions(this); options.ShowDialog(); } #endregion @@ -351,7 +369,7 @@ namespace Handbrake #region Presets Menu private void mnu_presetReset_Click(object sender, EventArgs e) { - presetHandler.updateBuiltInPresets(); + presetHandler.UpdateBuiltInPresets(); loadPresetPanel(); if (treeView_presets.Nodes.Count == 0) MessageBox.Show("Unable to load the presets.xml file. Please select \"Update Built-in Presets\" from the Presets Menu. \nMake sure you are running the program in Admin mode if running on Vista. See Windows FAQ for details!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); @@ -362,7 +380,7 @@ namespace Handbrake } private void mnu_delete_preset_Click(object sender, EventArgs e) { - presetHandler.removeBuiltInPresets(); + presetHandler.RemoveBuiltInPresets(); loadPresetPanel(); // Reload the preset panel } private void mnu_SelectDefault_Click(object sender, EventArgs e) @@ -371,37 +389,11 @@ namespace Handbrake } private void mnu_importMacPreset_Click(object sender, EventArgs e) { - Import imp = new Import(); - if (openPreset.ShowDialog() == DialogResult.OK) - { - QueryParser parsed = imp.importMacPreset(openPreset.FileName); - if (presetHandler.checkIfUserPresetExists(parsed.PresetName + " (Imported)")) - { - DialogResult result = MessageBox.Show("This preset appears to already exist. Would you like to overwrite it?", "Overwrite preset?", - MessageBoxButtons.YesNo, MessageBoxIcon.Warning); - if (result == DialogResult.Yes) - { - PresetLoader.presetLoader(this, parsed, parsed.PresetName, parsed.UsesPictureSettings); - presetHandler.updatePreset(parsed.PresetName + " (Imported)", queryGen.generateCLIQuery(this, 0, null), - parsed.UsesPictureSettings); - } - } - else - { - PresetLoader.presetLoader(this, parsed, parsed.PresetName, parsed.UsesPictureSettings); - presetHandler.addPreset(parsed.PresetName, queryGen.generateCLIQuery(this, 0, null), parsed.UsesPictureSettings); - - if (presetHandler.addPreset(parsed.PresetName + " (Imported)", queryGen.generateCLIQuery(this, 0, null), parsed.UsesPictureSettings)) - { - TreeNode preset_treeview = new TreeNode(parsed.PresetName + " (Imported)") { ForeColor = Color.Black }; - treeView_presets.Nodes.Add(preset_treeview); - } - } - } + importPreset(); } private void btn_new_preset_Click(object sender, EventArgs e) { - Form preset = new frmAddPreset(this, queryGen.generateCLIQuery(this, 0, null), presetHandler); + Form preset = new frmAddPreset(this, queryGen.GenerateCLIQuery(this, 0, null), presetHandler); preset.ShowDialog(); } #endregion @@ -473,19 +465,23 @@ namespace Handbrake { treeView_presets.CollapseAll(); } + private void pmnu_import_Click(object sender, EventArgs e) + { + importPreset(); + } private void pmnu_saveChanges_Click(object sender, EventArgs e) { DialogResult result = MessageBox.Show("Do you wish to include picture settings when updating the preset: " + treeView_presets.SelectedNode.Text, "Update Preset", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (result == DialogResult.Yes) - presetHandler.updatePreset(treeView_presets.SelectedNode.Text, QueryGenerator.generateTabbedComponentsQuery(this), true); + presetHandler.Update(treeView_presets.SelectedNode.Text, QueryGenerator.GenerateTabbedComponentsQuery(this), true); else if (result == DialogResult.No) - presetHandler.updatePreset(treeView_presets.SelectedNode.Text, QueryGenerator.generateTabbedComponentsQuery(this), false); + presetHandler.Update(treeView_presets.SelectedNode.Text, QueryGenerator.GenerateTabbedComponentsQuery(this), false); } private void pmnu_delete_click(object sender, EventArgs e) { if (treeView_presets.SelectedNode != null) { - presetHandler.remove(treeView_presets.SelectedNode.Text); + presetHandler.Remove(treeView_presets.SelectedNode.Text); treeView_presets.Nodes.Remove(treeView_presets.SelectedNode); } treeView_presets.Select(); @@ -497,7 +493,7 @@ namespace Handbrake // Now enable the save menu if the selected preset is a user preset if (treeView_presets.SelectedNode != null) - if (presetHandler.checkIfUserPresetExists(treeView_presets.SelectedNode.Text)) + if (presetHandler.CheckIfUserPresetExists(treeView_presets.SelectedNode.Text)) pmnu_saveChanges.Enabled = true; treeView_presets.Select(); @@ -506,7 +502,7 @@ namespace Handbrake // Presets Management private void btn_addPreset_Click(object sender, EventArgs e) { - Form preset = new frmAddPreset(this, QueryGenerator.generateTabbedComponentsQuery(this), presetHandler); + Form preset = new frmAddPreset(this, QueryGenerator.GenerateTabbedComponentsQuery(this), presetHandler); preset.ShowDialog(); } private void btn_removePreset_Click(object sender, EventArgs e) @@ -516,7 +512,7 @@ namespace Handbrake { if (treeView_presets.SelectedNode != null) { - presetHandler.remove(treeView_presets.SelectedNode.Text); + presetHandler.Remove(treeView_presets.SelectedNode.Text); treeView_presets.Nodes.Remove(treeView_presets.SelectedNode); } } @@ -564,7 +560,7 @@ namespace Handbrake if (result == DialogResult.Yes) { if (treeView_presets.SelectedNode != null) - presetHandler.remove(treeView_presets.SelectedNode.Text); + presetHandler.Remove(treeView_presets.SelectedNode.Text); // Remember each nodes expanded status so we can reload it List nodeStatus = new List(); @@ -592,10 +588,10 @@ namespace Handbrake { // Ok, so, we've selected a preset. Now we want to load it. string presetName = treeView_presets.SelectedNode.Text; - if (presetHandler.getPreset(presetName) != null) + if (presetHandler.GetPreset(presetName) != null) { - string query = presetHandler.getPreset(presetName).Query; - Boolean loadPictureSettings = presetHandler.getPreset(presetName).PictureSettings; + string query = presetHandler.GetPreset(presetName).Query; + Boolean loadPictureSettings = presetHandler.GetPreset(presetName).PictureSettings; if (query != null) { @@ -626,19 +622,44 @@ namespace Handbrake } } } + private void importPreset() + { + Import imp = new Import(); + if (openPreset.ShowDialog() == DialogResult.OK) + { + QueryParser parsed = imp.importMacPreset(openPreset.FileName); + if (presetHandler.CheckIfUserPresetExists(parsed.PresetName + " (Imported)")) + { + DialogResult result = MessageBox.Show("This preset appears to already exist. Would you like to overwrite it?", "Overwrite preset?", + MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + if (result == DialogResult.Yes) + { + PresetLoader.presetLoader(this, parsed, parsed.PresetName, parsed.UsesPictureSettings); + presetHandler.Update(parsed.PresetName + " (Imported)", queryGen.GenerateCLIQuery(this, 0, null), + parsed.UsesPictureSettings); + } + } + else + { + PresetLoader.presetLoader(this, parsed, parsed.PresetName, parsed.UsesPictureSettings); + presetHandler.Add(parsed.PresetName, queryGen.GenerateCLIQuery(this, 0, null), parsed.UsesPictureSettings); + + if (presetHandler.Add(parsed.PresetName + " (Imported)", queryGen.GenerateCLIQuery(this, 0, null), parsed.UsesPictureSettings)) + { + TreeNode preset_treeview = new TreeNode(parsed.PresetName + " (Imported)") { ForeColor = Color.Black }; + treeView_presets.Nodes.Add(preset_treeview); + } + } + } + } #endregion #region ToolStrip private void btn_source_Click(object sender, EventArgs e) { - if (Properties.Settings.Default.drive_detection) - { - mnu_dvd_drive.Visible = true; - Thread driveInfoThread = new Thread(getDriveInfoThread); - driveInfoThread.Start(); - } - else - mnu_dvd_drive.Visible = false; + mnu_dvd_drive.Visible = true; + Thread driveInfoThread = new Thread(getDriveInfoThread); + driveInfoThread.Start(); } private void btn_start_Click(object sender, EventArgs e) { @@ -663,8 +684,8 @@ namespace Handbrake { if (encodeQueue.Count != 0 || (!string.IsNullOrEmpty(sourcePath) && !string.IsNullOrEmpty(text_destination.Text))) { - string generatedQuery = queryGen.generateCLIQuery(this, 0, null); - string specifiedQuery = rtf_query.Text != "" ? rtf_query.Text : queryGen.generateCLIQuery(this, 0, null); + string generatedQuery = queryGen.GenerateCLIQuery(this, 0, null); + string specifiedQuery = rtf_query.Text != "" ? rtf_query.Text : queryGen.GenerateCLIQuery(this, 0, null); string query = string.Empty; // Check to make sure the generated query matches the GUI settings @@ -708,17 +729,19 @@ namespace Handbrake if (overwrite == DialogResult.Yes) { if (encodeQueue.Count == 0) - encodeQueue.AddJob(query, sourcePath, text_destination.Text); + encodeQueue.AddJob(query, sourcePath, text_destination.Text, (rtf_query.Text != "")); queueWindow.setQueue(); if (encodeQueue.Count > 1) queueWindow.Show(false); setEncodeStarted(); // Encode is running, so setup the GUI appropriately - if (ActivityWindow != null) - ActivityWindow.setLogView(false); encodeQueue.StartEncodeQueue(); // Start The Queue Encoding Process lastAction = "encode"; // Set the last action to encode - Used for activity window. + + if (ActivityWindow != null) + ActivityWindow.SetLogView(false); + } this.Focus(); } @@ -732,7 +755,7 @@ namespace Handbrake MessageBox.Show("No source or destination selected.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); else { - String query = queryGen.generateCLIQuery(this, 0, null); + String query = queryGen.GenerateCLIQuery(this, 0, null); if (rtf_query.Text != "") query = rtf_query.Text; @@ -741,11 +764,13 @@ namespace Handbrake DialogResult result = MessageBox.Show("There is already a queue item for this destination path. \n\n If you continue, the encode will be overwritten. Do you wish to continue?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.Yes) - encodeQueue.AddJob(query, sourcePath, text_destination.Text); + encodeQueue.AddJob(query, sourcePath, text_destination.Text, (rtf_query.Text != "")); } else - encodeQueue.AddJob(query, sourcePath, text_destination.Text); + encodeQueue.AddJob(query, sourcePath, text_destination.Text, (rtf_query.Text != "")); + + lbl_encode.Text = encodeQueue.Count + " encode(s) pending in the queue"; queueWindow.Show(); } @@ -753,6 +778,7 @@ namespace Handbrake private void btn_showQueue_Click(object sender, EventArgs e) { queueWindow.Show(); + queueWindow.Activate(); } private void tb_preview_Click(object sender, EventArgs e) { @@ -780,6 +806,8 @@ namespace Handbrake if (ActivityWindow == null) ActivityWindow = new frmActivityWindow(file, encodeQueue, this); + ActivityWindow.SetLogView(!encodeQueue.isEncoding); + ActivityWindow.Show(); } #endregion @@ -817,24 +845,30 @@ namespace Handbrake private void btn_dvd_source_Click(object sender, EventArgs e) { if (DVD_Open.ShowDialog() == DialogResult.OK) - selectSource(DVD_Open.SelectedPath, 1); + { + this.selectedSourceType = SourceType.Folder; + selectSource(DVD_Open.SelectedPath); + } else UpdateSourceLabel(); } private void btn_file_source_Click(object sender, EventArgs e) { if (ISO_Open.ShowDialog() == DialogResult.OK) - selectSource(ISO_Open.FileName, 2); + { + this.selectedSourceType = SourceType.VideoFile; + selectSource(ISO_Open.FileName); + } else UpdateSourceLabel(); } private void mnu_dvd_drive_Click(object sender, EventArgs e) { - if (!mnu_dvd_drive.Text.Contains("VIDEO_TS")) return; - string[] path = mnu_dvd_drive.Text.Split(' '); - selectSource(path[0], 3); + if (this.dvdDrivePath == null) return; + this.selectedSourceType = SourceType.DvdDrive; + selectSource(this.dvdDrivePath); } - private void selectSource(string file, int type) + private void selectSource(string file) { Check_ChapterMarkers.Enabled = true; lastAction = "scan"; @@ -855,18 +889,8 @@ namespace Handbrake return; } - switch (type) // Start the scan - { - case 1: // btn_dvd_source_Click() - case 3: // mnu_dvd_drive_Click() - sourcePath = Path.GetFullPath(file); - startScan(file); - break; - case 2: // btn_file_source_Click() - sourcePath = Path.GetFileName(file); - startScan(file); - break; - } + sourcePath = Path.GetFileName(file); + startScan(file); } private void drp_dvdtitle_Click(object sender, EventArgs e) { @@ -875,7 +899,7 @@ namespace Handbrake } private void drp_dvdtitle_SelectedIndexChanged(object sender, EventArgs e) { - unRegisterPresetEventHandler(); + UnRegisterPresetEventHandler(); PictureSettings.lbl_Aspect.Text = "Select a Title"; // Reset some values on the form drop_chapterStart.Items.Clear(); @@ -918,24 +942,25 @@ namespace Handbrake drop_chapterFinish.Text = drop_chapterFinish.Items[drop_chapterFinish.Items.Count - 1].ToString(); // Populate the Audio Channels Dropdown - AudioSettings.setTrackList(selectedTitle); + AudioSettings.SetTrackList(selectedTitle); // Populate the Subtitles dropdown Subtitles.drp_subtitleTracks.Items.Clear(); Subtitles.drp_subtitleTracks.Items.Add("Foreign Audio Search (Bitmap)"); Subtitles.drp_subtitleTracks.Items.AddRange(selectedTitle.Subtitles.ToArray()); Subtitles.drp_subtitleTracks.SelectedIndex = 0; + Subtitles.Clear(); Subtitles.setSubtitleTrackAuto(); } // Run the autoName & chapterNaming functions if (Properties.Settings.Default.autoNaming) { - string autoPath = Main.autoName(drp_dvdtitle, drop_chapterStart.Text, drop_chapterFinish.Text, sourcePath, text_destination.Text, drop_format.SelectedIndex); + string autoPath = Main.autoName(this); if (autoPath != null) text_destination.Text = autoPath; else - MessageBox.Show("You currently have \"Automatically name output files\" enabled for the destination file box, but you do not have a default direcotry set.\n\nYou should set a \"Default Path\" in HandBrakes preferences. (See 'Tools' menu -> 'Options' -> 'General' Tab -> 'Default Path')", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); + MessageBox.Show("You currently have \"Automatically name output files\" enabled for the destination file box, but you do not have a default directory set.\n\nYou should set a \"Default Path\" in HandBrakes preferences. (See 'Tools' menu -> 'Options' -> 'General' Tab -> 'Default Path')", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } data_chpt.Rows.Clear(); @@ -955,11 +980,11 @@ namespace Handbrake data_chpt.Columns[0].Width = 166; data_chpt.Columns[0].Width = 165; - registerPresetEventHandler(); + RegisterPresetEventHandler(); } private void chapersChanged(object sender, EventArgs e) { - Control ctl = (Control) sender; + Control ctl = (Control)sender; int chapterStart, chapterEnd; int.TryParse(drop_chapterStart.Text, out chapterStart); int.TryParse(drop_chapterFinish.Text, out chapterEnd); @@ -1006,16 +1031,24 @@ namespace Handbrake // Run the Autonaming function if (Properties.Settings.Default.autoNaming) - text_destination.Text = Main.autoName(drp_dvdtitle, drop_chapterStart.Text, drop_chapterFinish.Text, sourcePath, text_destination.Text, drop_format.SelectedIndex); + text_destination.Text = Main.autoName(this); // Disable chapter markers if only 1 chapter is selected. if (chapterStart == chapterEnd) { - Check_ChapterMarkers.Checked = false; Check_ChapterMarkers.Enabled = false; + btn_importChapters.Enabled = false; + data_chpt.Enabled = false; } else - Check_ChapterMarkers.Enabled = true; + { + Check_ChapterMarkers.Enabled = true; + if (Check_ChapterMarkers.Checked) + { + btn_importChapters.Enabled = true; + data_chpt.Enabled = true; + } + } } //Destination @@ -1046,13 +1079,13 @@ namespace Handbrake case 1: if (!Path.GetExtension(DVD_Save.FileName).Equals(".mp4", StringComparison.InvariantCultureIgnoreCase)) if (Properties.Settings.Default.useM4v) - DVD_Save.FileName += ".m4v"; + DVD_Save.FileName = DVD_Save.FileName.Replace(".mp4", ".m4v").Replace(".mkv", ".m4v"); else - DVD_Save.FileName += ".mp4"; + DVD_Save.FileName = DVD_Save.FileName.Replace(".m4v", ".mp4").Replace(".mkv", ".mp4"); break; case 2: if (!Path.GetExtension(DVD_Save.FileName).Equals(".mkv", StringComparison.InvariantCultureIgnoreCase)) - DVD_Save.FileName += ".mkv"; + DVD_Save.FileName = DVD_Save.FileName.Replace(".mp4", ".mkv").Replace(".m4v", ".mkv"); break; default: //do nothing @@ -1062,7 +1095,7 @@ namespace Handbrake // Quicktime requires .m4v file for chapter markers to work. If checked, change the extension to .m4v (mp4 and m4v are the same thing) if (Check_ChapterMarkers.Checked && DVD_Save.FilterIndex != 2) - setExtension(".m4v"); + SetExtension(".m4v"); } } } @@ -1081,20 +1114,20 @@ namespace Handbrake switch (drop_format.SelectedIndex) { case 0: - if (Properties.Settings.Default.useM4v) - setExtension(".m4v"); + if (Properties.Settings.Default.useM4v || Check_ChapterMarkers.Checked || AudioSettings.RequiresM4V() || Subtitles.RequiresM4V()) + SetExtension(".m4v"); else - setExtension(".mp4"); + SetExtension(".mp4"); break; case 1: - setExtension(".mkv"); + SetExtension(".mkv"); break; } - AudioSettings.setAudioByContainer(drop_format.Text); + AudioSettings.SetContainer(drop_format.Text); Subtitles.setContainer(drop_format.SelectedIndex); - if ((drop_format.Text.Contains("MP4")) || (drop_format.Text.Contains("M4V"))) + if (drop_format.Text.Contains("MP4")) { if (drp_videoEncoder.Items.Contains("VP3 (Theora)")) { @@ -1105,11 +1138,16 @@ namespace Handbrake else if (drop_format.Text.Contains("MKV")) drp_videoEncoder.Items.Add("VP3 (Theora)"); } - private void setExtension(string newExtension) + public void SetExtension(string newExtension) { - text_destination.Text = text_destination.Text.Replace(".mp4", newExtension); - text_destination.Text = text_destination.Text.Replace(".m4v", newExtension); - text_destination.Text = text_destination.Text.Replace(".mkv", newExtension); + if (newExtension == ".mp4" || newExtension == ".m4v") + if (Properties.Settings.Default.useM4v || Check_ChapterMarkers.Checked || AudioSettings.RequiresM4V() || Subtitles.RequiresM4V()) + newExtension = ".m4v"; + else + newExtension = ".mp4"; + + if (Path.HasExtension(newExtension)) + text_destination.Text = Path.ChangeExtension(text_destination.Text, newExtension); } //Video Tab @@ -1153,21 +1191,22 @@ namespace Handbrake slider_videoQuality.TickFrequency = 1; CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US"); - double multiplier = 1.0 / Properties.Settings.Default.x264cqstep; + double cqStep = Properties.Settings.Default.x264cqstep; + double multiplier = 1.0 / cqStep; double value = slider_videoQuality.Value * multiplier; switch (Properties.Settings.Default.x264cqstep.ToString(culture)) { - case "0.20": + case "0.2": slider_videoQuality.Maximum = 255; break; case "0.25": slider_videoQuality.Maximum = 204; break; - case "0.50": - slider_videoQuality.Maximum = 40; + case "0.5": + slider_videoQuality.Maximum = 102; break; - case "1.0": + case "1": slider_videoQuality.Maximum = 51; break; default: @@ -1207,8 +1246,54 @@ namespace Handbrake check_iPodAtom.Checked = false; } } + private double _cachedCqStep = Properties.Settings.Default.x264cqstep; + /// + /// Update the CQ slider for x264 for a new CQ step. This is set from option + /// + public void setQualityFromSlider() + { + // Work out the current RF value. + double cqStep = _cachedCqStep; + double rfValue = 51.0 - slider_videoQuality.Value * cqStep; + + // Change the maximum value for the slider + switch (Properties.Settings.Default.x264cqstep.ToString(new CultureInfo("en-US"))) + { + case "0.2": + slider_videoQuality.Maximum = 255; + break; + case "0.25": + slider_videoQuality.Maximum = 204; + break; + case "0.5": + slider_videoQuality.Maximum = 102; + break; + case "1": + slider_videoQuality.Maximum = 51; + break; + default: + slider_videoQuality.Maximum = 51; + break; + } + + // Reset the CQ slider to RF0 + slider_videoQuality.Value = slider_videoQuality.Maximum; + + // Reset the CQ slider back to the previous value as close as possible + double cqStepNew = Properties.Settings.Default.x264cqstep; + double rfValueCurrent = 51.0 - slider_videoQuality.Value * cqStepNew; + while (rfValueCurrent < rfValue) + { + slider_videoQuality.Value--; + rfValueCurrent = 51.0 - slider_videoQuality.Value * cqStepNew; + } + + // Cache the CQ step for the next calculation + _cachedCqStep = Properties.Settings.Default.x264cqstep; + } private void slider_videoQuality_Scroll(object sender, EventArgs e) { + double cqStep = Properties.Settings.Default.x264cqstep; switch (drp_videoEncoder.Text) { case "MPEG-4 (FFmpeg)": @@ -1216,20 +1301,20 @@ namespace Handbrake double max = slider_videoQuality.Maximum; double min = slider_videoQuality.Minimum; double val = ((max - min) - (rfValue - min)) / (max - min); - SliderValue.Text = Math.Round((val * 100), 2) + "% QP:" + (32 - slider_videoQuality.Value); + SliderValue.Text = Math.Round((val * 100), 2).ToString(new CultureInfo("en-US")) + "% QP:" + (32 - slider_videoQuality.Value); break; case "H.264 (x264)": - rfValue = 51.0 - slider_videoQuality.Value * Properties.Settings.Default.x264cqstep; - max = slider_videoQuality.Maximum * Properties.Settings.Default.x264cqstep; + rfValue = 51.0 - slider_videoQuality.Value * cqStep; + max = slider_videoQuality.Maximum * cqStep; min = slider_videoQuality.Minimum; val = ((max - min) - (rfValue - min)) / (max - min); rfValue = Math.Round(rfValue, 2); - SliderValue.Text = Math.Round((val * 100), 2) + "% RF:" + rfValue; + SliderValue.Text = Math.Round((val * 100), 2).ToString(new CultureInfo("en-US")) + "% RF:" + rfValue.ToString(new CultureInfo("en-US")); break; case "VP3 (Theora)": rfValue = slider_videoQuality.Value; double value = rfValue / 63; - SliderValue.Text = Math.Round((value * 100), 2) + "% QP:" + slider_videoQuality.Value; + SliderValue.Text = Math.Round((value * 100), 2).ToString(new CultureInfo("en-US")) + "% QP:" + slider_videoQuality.Value; break; } } @@ -1278,19 +1363,14 @@ namespace Handbrake if (Check_ChapterMarkers.Checked) { if (drop_format.SelectedIndex != 1) - setExtension(".m4v"); - data_chpt.Rows.Clear(); + SetExtension(".m4v"); data_chpt.Enabled = true; btn_importChapters.Enabled = true; - DataGridView chapterGridView = Main.chapterNaming(data_chpt, drop_chapterFinish.Text); - if (chapterGridView != null) - data_chpt = chapterGridView; } else { if (drop_format.SelectedIndex != 1 && !Properties.Settings.Default.useM4v) - setExtension(".mp4"); - data_chpt.Rows.Clear(); + SetExtension(".mp4"); data_chpt.Enabled = false; btn_importChapters.Enabled = false; } @@ -1305,11 +1385,20 @@ namespace Handbrake data_chpt = imported; } } + private void mnu_resetChapters_Click(object sender, EventArgs e) + { + data_chpt.Rows.Clear(); + DataGridView chapterGridView = Main.chapterNaming(data_chpt, drop_chapterFinish.Text); + if (chapterGridView != null) + { + data_chpt = chapterGridView; + } + } // Query Editor Tab private void btn_generate_Query_Click(object sender, EventArgs e) { - rtf_query.Text = queryGen.generateCLIQuery(this, 0, null); + rtf_query.Text = queryGen.GenerateCLIQuery(this, 0, null); } private void btn_clear_Click(object sender, EventArgs e) { @@ -1327,10 +1416,9 @@ namespace Handbrake // Setup the GUI components for the scan. sourcePath = filename; foreach (Control ctrl in Controls) - { if (!(ctrl is StatusStrip || ctrl is MenuStrip || ctrl is ToolStrip)) ctrl.Enabled = false; - } + lbl_encode.Visible = true; lbl_encode.Text = "Scanning ..."; btn_source.Enabled = false; @@ -1344,7 +1432,7 @@ namespace Handbrake try { if (ActivityWindow != null) - ActivityWindow.setLogView(true); + ActivityWindow.SetLogView(true); isScanning = true; ThreadPool.QueueUserWorkItem(scanProcess); } @@ -1512,7 +1600,7 @@ namespace Handbrake } private void UpdateSourceLabel() { - labelSource.Text = string.IsNullOrEmpty(sourcePath) ? "Select \"Source\" to continue." : Path.GetFileName(sourcePath); + labelSource.Text = string.IsNullOrEmpty(sourcePath) ? "Select \"Source\" to continue." : this.SourceName; } #endregion @@ -1563,7 +1651,7 @@ namespace Handbrake } lbl_encode.Visible = true; - lbl_encode.Text = "Encoding in Progress"; + lbl_encode.Text = "Encoding with " + encodeQueue.Count + " encode(s) pending"; btn_start.Text = "Stop"; btn_start.ToolTipText = "Stop the encoding process."; btn_start.Image = Properties.Resources.stop; @@ -1594,7 +1682,9 @@ namespace Handbrake { if (File.Exists(curDrive.RootDirectory + "VIDEO_TS\\VIDEO_TS.IFO")) { - mnu_dvd_drive.Text = curDrive.RootDirectory + "VIDEO_TS (" + curDrive.VolumeLabel + ")"; + this.dvdDrivePath = curDrive.RootDirectory + "VIDEO_TS"; + this.dvdDriveLabel = curDrive.VolumeLabel; + mnu_dvd_drive.Text = this.dvdDrivePath + " (" + this.dvdDriveLabel + ")"; foundDrive = true; break; } @@ -1617,13 +1707,13 @@ namespace Handbrake /// public void loadPresetPanel() { - if (presetHandler.checkIfPresetsAreOutOfDate()) + if (presetHandler.CheckIfPresetsAreOutOfDate()) if (!Properties.Settings.Default.presetNotification) MessageBox.Show(splash, "HandBrake has determined your built-in presets are out of date... These presets will now be updated.", "Preset Update", MessageBoxButtons.OK, MessageBoxIcon.Information); - presetHandler.getPresetPanel(ref treeView_presets); + presetHandler.GetPresetPanel(ref treeView_presets); treeView_presets.Update(); } #endregion @@ -1674,6 +1764,15 @@ namespace Handbrake } #endregion + #region enum + private enum SourceType + { + None = 0, + Folder, + DvdDrive, + VideoFile + } + #endregion // This is the END of the road **************************************** } } \ No newline at end of file