From 089f31b2c2e04c0dcbad5a4763d34d3c98c3241a Mon Sep 17 00:00:00 2001 From: sr55 Date: Sat, 10 Nov 2007 22:17:07 +0000 Subject: WinGui: - Selecting a preset now uses the CLI preset data. - Few small issues fixed in the query parser git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1055 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- win/C#/Functions/QueryParser.cs | 41 ++++++- win/C#/frmMain.cs | 253 +++++++++++++++------------------------- 2 files changed, 130 insertions(+), 164 deletions(-) (limited to 'win/C#') diff --git a/win/C#/Functions/QueryParser.cs b/win/C#/Functions/QueryParser.cs index a6044b2ab..a4bd1c1e5 100644 --- a/win/C#/Functions/QueryParser.cs +++ b/win/C#/Functions/QueryParser.cs @@ -38,6 +38,19 @@ namespace Handbrake.Functions } } + private string q_format; + /// + /// Returns a String + /// Full path of the destination. + /// + public string Format + { + get + { + return this.q_format; + } + } + private int q_dvdTitle; /// /// Returns an Integer @@ -469,6 +482,8 @@ namespace Handbrake.Functions Match source = r1.Match(input.Replace('"', '\"')); Match title = Regex.Match(input, @"-t ([0-9]*)"); Match chapters = Regex.Match(input, @"-c ([0-9-]*)"); + Match format = Regex.Match(input, @"-f ([a-z0-9a-z0-9a-z0-9]*)"); + //-f mp4 //Destination Regex r2 = new Regex(@"(-o)(?:\s\"")([a-zA-Z0-9:\\\s\.]+)(?:\"")"); @@ -532,6 +547,12 @@ namespace Handbrake.Functions thisQuery.q_chaptersStart = int.Parse(actTitles[0]); thisQuery.q_chaptersFinish = int.Parse(actTitles[1]); } + + if (format.Success != false) + { + + thisQuery.q_format = format.ToString().Replace("-f ", ""); + } #endregion // @@ -562,7 +583,7 @@ namespace Handbrake.Functions videoEncoderConvertion = "H.264 (iPod)"; break; default: - videoEncoderConvertion = "H.264"; + videoEncoderConvertion = "Mpeg 4"; break; } thisQuery.q_videoEncoder = videoEncoderConvertion; @@ -617,6 +638,7 @@ namespace Handbrake.Functions thisQuery.q_detelecine = detelecine.Success; thisQuery.q_deBlock = deblock.Success; + thisQuery.q_deinterlace = "None"; if (deinterlace.Success != false) { switch (deinterlace.ToString().Replace("--deinterlace=", "")) @@ -638,7 +660,8 @@ namespace Handbrake.Functions break; } } - + + thisQuery.q_denoise = "None"; if (denoise.Success != false) { switch (denoise.ToString().Replace("--denoise=", "")) @@ -687,6 +710,7 @@ namespace Handbrake.Functions if (videoQuality.Success != false) { qConvert = double.Parse(videoQuality.ToString().Replace("-q ", "")) * 100; + qConvert = System.Math.Ceiling(qConvert); thisQuery.q_videoQuality = int.Parse(qConvert.ToString()); } thisQuery.q_crf = CRF.Success; @@ -708,7 +732,12 @@ namespace Handbrake.Functions { thisQuery.q_audioTrack1 = audioChannel.ToString().Replace("-a ", ""); } - + else + { + thisQuery.q_audioTrack1 = "Automatic"; + } + + thisQuery.q_audioTrackMix = "Automatic"; if (audioChannelsMix.Success != false) { switch (audioChannelsMix.ToString().Replace("-6 ", "").Replace(" ","")) @@ -729,7 +758,7 @@ namespace Handbrake.Functions thisQuery.q_audioTrackMix = "6 Channel Discrete"; break; default: - thisQuery.q_audioTrackMix = "Automatic2"; + thisQuery.q_audioTrackMix = "Automatic"; break; } @@ -738,6 +767,10 @@ namespace Handbrake.Functions { thisQuery.q_subtitles = subtitles.ToString().Replace("-s ", ""); } + else + { + thisQuery.q_subtitles = "None"; + } #endregion // diff --git a/win/C#/frmMain.cs b/win/C#/frmMain.cs index 8f0374a52..bf00e2223 100644 --- a/win/C#/frmMain.cs +++ b/win/C#/frmMain.cs @@ -12,6 +12,7 @@ using System.Diagnostics; using System.Threading; using System.Runtime.InteropServices; using System.Globalization; +using System.Text.RegularExpressions; namespace Handbrake @@ -72,25 +73,26 @@ namespace Handbrake Application.DoEvents(); // Run the update checker. updateCheck(); - Thread.Sleep(300); + Thread.Sleep(200); + + // Update the presets + lblStatus.Text = "Updaing Presets ..."; + Application.DoEvents(); + updatePresets(); + Thread.Sleep(200); // Now load the users default if required. (Will overide the above setting) lblStatus.Text = "Loading User Default Settings..."; Application.DoEvents(); + loadNormalPreset(); loadUserDefaults(); - Thread.Sleep(300); + Thread.Sleep(100); // Enable or disable tooltips lblStatus.Text = "Loading Tooltips ..."; Application.DoEvents(); tooltip(); - Thread.Sleep(300); - - // Update the presets - lblStatus.Text = "Updaing Presets ..."; - Application.DoEvents(); - updatePresets(); - Thread.Sleep(300); + Thread.Sleep(100); // Hide the preset bar if required. hidePresetBar(); @@ -98,7 +100,7 @@ namespace Handbrake //Finished Loading lblStatus.Text = "Loading Complete!"; Application.DoEvents(); - Thread.Sleep(300); + Thread.Sleep(200); // Wait until splash screen is done while (timer.IsAlive) @@ -126,6 +128,17 @@ namespace Handbrake splash.Close(); // Then close. } + private void loadNormalPreset() + { + ListViewItem item = listview_presets.FindItemWithText("Normal"); + + if (item != null) + { + listview_presets.SelectedItems.Clear(); + item.Selected = true; + } + } + private void loadUserDefaults() { try @@ -217,16 +230,6 @@ namespace Handbrake groupBox_output.Text = "Output Settings (Preset: " + Properties.Settings.Default.selectedPreset + ")"; } - else - { - ListViewItem item = listview_presets.FindItemWithText("Normal"); - - if (item != null) - { - listview_presets.SelectedItems.Clear(); - item.Selected = true; - } - } } catch (Exception) { @@ -627,6 +630,14 @@ namespace Handbrake // Now Fill Out List View with Items listview_presets.Items.Add(preset_listview); } + + string appPath = Application.StartupPath.ToString() + "\\"; + string strCmdLine = "cmd /c " + '"' + '"' + appPath + "HandBrakeCLI.exe" + '"' + " --preset-list >" + '"' + appPath + "presets.dat" + '"' + " 2>&1" + '"'; + Process hbproc = Process.Start("CMD.exe", strCmdLine); + hbproc.WaitForExit(); + hbproc.Dispose(); + hbproc.Close(); + } // Varibles @@ -702,6 +713,7 @@ namespace Handbrake // Preset Selection private void listview_presets_SelectedIndexChanged(object sender, EventArgs e) { + string selectedPreset = null; ListView.SelectedListViewItemCollection name = null; name = listview_presets.SelectedItems; @@ -709,147 +721,50 @@ namespace Handbrake if (listview_presets.SelectedItems.Count != 0) selectedPreset = name[0].SubItems[0].Text; - - switch (selectedPreset) + try { - case "Animation": - setGuiSetttings(CheckState.Checked, "", "", "H.264", "1000", "", 0, "0%", "160", CheckState.Checked, "48", "ref=5:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=5:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip:filter=2,2", "Origional (Fast)", CheckState.Checked, "No Crop", CheckState.Checked, "AAC", "Output Settings (Preset: Apple Animation)"); - setMkv(); - break; - - case "AppleTV": - setmp4(); - setGuiSetttings(CheckState.Checked, "", "", "H.264", "2500", "", 0, "0%", "160", CheckState.Checked, "48", "bframes=3:ref=1:subme=5:me=umh:no-fast-pskip=1:trellis=2:cabac=0", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: Apple TV)"); - break; - - case "Bedlam": - setmp4(); - setGuiSetttings(CheckState.Checked, "", "", "H.264", "1800", "", 0, "0%", "160", CheckState.Checked, "48", "ref=16:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=7:me-range=64:analyse=all:8x8dct:trellis=2:no-fast-pskip:no-dct-decimate:filter=-2,-1", "None", CheckState.Checked, "No Crop", CheckState.Checked, "AC3", "Output Settings (Preset: Bedlam)"); - break; - - case "Blind": - setmp4(); - setGuiSetttings(CheckState.Unchecked, "512", "", "Mpeg 4", "512", "", 0, "0%", "128", CheckState.Checked, "48", "", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: Blind)"); - break; - - case "Broke": - setmp4(); - setGuiSetttings(CheckState.Unchecked, "640", "", "H.264", "", "695", 0, "0%", "128", CheckState.Checked, "48", "ref=3:mixed-refs:bframes=6:bime:weightb:b-rdo:b-pyramid::direct=auto:me=umh:subme=6:trellis=1:analyse=all:8x8dct:no-fast-pskip", "None", CheckState.Checked, "No Crop", CheckState.Checked, "AAC", "Output Settings (Preset: Broke)"); - break; - - - case "Classic": - setmp4(); - setGuiSetttings(CheckState.Unchecked, "", "", "Mpeg 4", "1000", "", 0, "0%", "160", CheckState.Unchecked, "48", "", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: Classic)"); - - break; - - case "Constant Quality Rate": - setGuiSetttings(CheckState.Checked, "", "", "H.264", "", "", 64, "64%", "160", CheckState.Checked, "48", "ref=3:mixed-refs:bframes=3:b-pyramid:b-rdo:bime:weightb:filter=-2,-1:subme=6:trellis=1:analyse=all:8x8dct:me=umh", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AC3", "Output Settings (Preset: CQR)"); - setMkv(); - break; - - case "Deux Six Quatre": - setGuiSetttings(CheckState.Checked, "", "", "H.264", "1600", "", 0, "0%", "160", CheckState.Checked, "48", "ref=5:mixed-refs:bframes=3:bime:weightb:b-rdo:b-pyramid:me=umh:subme=7:trellis=1:analyse=all:8x8dct:no-fast-pskip", "None", CheckState.Checked, "No Crop", CheckState.Checked, "AC3", "Output Settings (Preset: DSQ)"); - setMkv(); - break; - - case "Film": - setGuiSetttings(CheckState.Checked, "", "", "H.264", "2000", "", 0, "0%", "160", CheckState.Checked, "48", "ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=6:analyse=all:8x8dct:trellis=1:no-fast-pskip", "None", CheckState.Checked, "No Crop", CheckState.Checked, "AC3", "Output Settings (Preset: Film)"); - setMkv(); - break; + string appPath = Application.StartupPath.ToString() + "\\"; + StreamReader presetInput = new StreamReader(appPath + "presets.dat"); - case "iPhone / iPod Touch": - setmp4(); - setGuiSetttings(CheckState.Unchecked, "480", "", "H.264 (iPod)", "960", "", 0, "0%", "128", CheckState.Checked, "48", "cabac=0:ref=1:analyse=all:me=umh:subme=6:no-fast-pskip=1:trellis=1", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: iPhone)"); - break; - - case "iPod High-Rez": - setmp4(); - setGuiSetttings(CheckState.Unchecked, "640", "", "H.264 (iPod)", "1500", "", 0, "0%", "160", CheckState.Checked, "48", "keyint=300:keyint-min=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: iPod High Rez)"); - break; - - case "iPod Low-Rez": - setGuiSetttings(CheckState.Unchecked, "320", "", "H.264 (iPod)", "700", "", 0, "0%", "160", CheckState.Checked, "48", "keyint=300:keyint-min=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: iPod Low Rez)"); - setmp4(); - break; - - case "Normal": - setGuiSetttings(CheckState.Checked, "", "", "H.264", "1500", "", 0, "0%", "160", CheckState.Checked, "48", "ref=2:bframes=2:subme=5:me=umh", "None", CheckState.Checked, "No Crop", CheckState.Checked, "AAC", "Output Settings (Preset: Normal)"); - setmp4(); - break; - - case "PS3": - setmp4(); - setGuiSetttings(CheckState.Checked, "", "", "H.264", "2500", "", 0, "0%", "160", CheckState.Checked, "48", "level=41:subme=5:me=umh", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: PS3)"); - break; - - case "PSP": - setmp4(); - setGuiSetttings(CheckState.Unchecked, "368", "208", "Mpeg 4", "1024", "", 0, "0%", "160", CheckState.Checked, "48", "", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: PSP)"); - break; - - case "QuickTime": - setmp4(); - setGuiSetttings(CheckState.Checked, "", "", "H.264", "2000", "", 0, "0%", "160", CheckState.Checked, "48", "ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:me=umh:subme=5:analyse=all:8x8dct:trellis=1:no-fast-pskip", "None", CheckState.Checked, "No Crop", CheckState.Checked, "AAC", "Output Settings (Preset: Quicktime)"); - break; - - - case "Television": - setGuiSetttings(CheckState.Unchecked, "", "", "H.264", "1300", "", 0, "0%", "160", CheckState.Checked, "48", "ref=3:mixed-refs:bframes=6:bime:weightb:direct=auto:b-pyramid:me=umh:subme=6:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip", "Origional (Fast)", CheckState.Checked, "No Crop", CheckState.Checked, "AAC", "Output Settings (Preset: Television)"); - setMkv(); - break; - default: - break; + while (!presetInput.EndOfStream) + { + if ((char)presetInput.Peek() == '+') + { + string preset = presetInput.ReadLine().Replace("+ ", ""); + Regex r = new Regex("(: )"); // Split on hyphens. + string[] presetName = r.Split(preset); + + if (selectedPreset == "iPhone / iPod Touch") + { + selectedPreset = "iPhone"; + } + + if (selectedPreset == presetName[0]) + { + // Need to disable anamorphic now, otherwise it may overide the width / height values later. + CheckPixelRatio.CheckState = CheckState.Unchecked; + + // Send the query from the file to the Query Parser class + Functions.QueryParser presetQuery = Functions.QueryParser.Parse(preset); + + // Now load the preset + presetLoader(presetQuery, selectedPreset); + } + + } + else + { + presetInput.ReadLine(); + } + } + } + catch (Exception exc) + { + MessageBox.Show(exc.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } - } - - // Functions - It's a bit dirty but i'll sort this out later. Simply done to reduce the amount of code above. - private void setGuiSetttings(CheckState anamorphic, string width, string height, string vencoder, string bitrate, string filesize, int quality, string qpercent, string audioBit, CheckState chpt, string audioSample, string h264, string deinterlace, CheckState twopass, string crop, CheckState turbo, string audioCodec, string preset) - { - CheckPixelRatio.CheckState = anamorphic; - text_width.Text = width; - text_height.Text = height; - drp_videoEncoder.Text = vencoder; - text_bitrate.Text = bitrate; - text_filesize.Text = filesize; - slider_videoQuality.Value = quality; - SliderValue.Text = qpercent; - drp_audioBitrate.Text = audioBit; - Check_ChapterMarkers.CheckState = chpt; - drp_audioSampleRate.Text = audioSample; - rtf_h264advanced.Text = h264; - drp_deInterlace_option.Text = deinterlace; - check_2PassEncode.CheckState = twopass; - drp_crop.Text = crop; - check_turbo.CheckState = turbo; - drp_audioCodec.Text = audioCodec; - - groupBox_output.Text = preset; + } - - private void setMkv() - { - // Set file extension to MKV - string destination = text_destination.Text; - destination = destination.Replace(".mp4", ".mkv"); - destination = destination.Replace(".avi", ".mkv"); - destination = destination.Replace(".m4v", ".mkv"); - destination = destination.Replace(".ogm", ".mkv"); - text_destination.Text = destination; - } - private void setmp4() - { - // Set file extension to MKV - string destination = text_destination.Text; - destination = destination.Replace(".m4v", ".mp4"); - destination = destination.Replace(".avi", ".mp4"); - destination = destination.Replace(".mkv", ".mp4"); - destination = destination.Replace(".ogm", ".mp4"); - text_destination.Text = destination; - } - #endregion //--------------------------------------------------- @@ -1088,7 +1003,6 @@ namespace Handbrake text_width.Text = ""; text_width.BackColor = Color.LightCoral; CheckPixelRatio.BackColor = Color.LightCoral; - } else { @@ -1116,6 +1030,7 @@ namespace Handbrake else { text_height.Text = height.ToString(); + text_width.BackColor = Color.LightGreen; } } } @@ -1812,7 +1727,9 @@ namespace Handbrake // Source tab #region source - text_source.Text = presetQuery.Source; + if (presetQuery.Source != "") + text_source.Text = presetQuery.Source; + if (presetQuery.DVDTitle != 0) drp_dvdtitle.Text = presetQuery.DVDTitle.ToString(); @@ -1821,23 +1738,39 @@ namespace Handbrake if (presetQuery.DVDChapterFinish != 0) drop_chapterFinish.Text = presetQuery.DVDChapterFinish.ToString(); + + if (presetQuery.Format != "") + { + string destination = text_destination.Text; + destination = destination.Replace(".mp4", "." + presetQuery.Format); + destination = destination.Replace(".m4v", "." + presetQuery.Format); + destination = destination.Replace(".avi", "." + presetQuery.Format); + destination = destination.Replace(".mkv", "." + presetQuery.Format); + destination = destination.Replace(".ogm", "." + presetQuery.Format); + text_destination.Text = destination; + } + #endregion // Destination tab #region destination - text_destination.Text = presetQuery.Destination; + if (presetQuery.Destination != "") + text_destination.Text = presetQuery.Destination; + drp_videoEncoder.Text = presetQuery.VideoEncoder; drp_audioCodec.Text = presetQuery.AudioEncoder; if (presetQuery.Width != 0) { text_width.Text = presetQuery.Width.ToString(); + } else { text_width.Text = ""; text_width.BackColor = Color.White; } + if (presetQuery.Height != 0) { text_height.Text = presetQuery.Height.ToString(); @@ -1845,7 +1778,7 @@ namespace Handbrake else { text_height.Text = ""; - text_width.BackColor = Color.White; + text_height.BackColor = Color.White; } #endregion -- cgit v1.2.3