OSDN Git Service

WinGui:
authorsr55 <sr55@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Sat, 10 Nov 2007 22:17:07 +0000 (22:17 +0000)
committersr55 <sr55@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Sat, 10 Nov 2007 22:17:07 +0000 (22:17 +0000)
- Selecting a preset now uses the CLI preset data.
- Few small issues fixed in the query parser

git-svn-id: svn://localhost/HandBrake/trunk@1055 b64f7644-9d1e-0410-96f1-a4d463321fa5

win/C#/Functions/QueryParser.cs
win/C#/frmMain.cs

index a6044b2..a4bd1c1 100644 (file)
@@ -38,6 +38,19 @@ namespace Handbrake.Functions
             }\r
         }\r
 \r
+        private string q_format;\r
+        /// <summary>\r
+        /// Returns a String \r
+        /// Full path of the destination.\r
+        /// </summary>\r
+        public string Format\r
+        {\r
+            get\r
+            {\r
+                return this.q_format;\r
+            }\r
+        }\r
+\r
         private int q_dvdTitle;\r
         /// <summary>\r
         /// Returns an Integer\r
@@ -469,6 +482,8 @@ namespace Handbrake.Functions
             Match source = r1.Match(input.Replace('"', '\"'));\r
             Match title = Regex.Match(input, @"-t ([0-9]*)");\r
             Match chapters = Regex.Match(input, @"-c ([0-9-]*)");\r
+            Match format = Regex.Match(input, @"-f ([a-z0-9a-z0-9a-z0-9]*)");\r
+            //-f mp4\r
 \r
             //Destination\r
             Regex r2 = new Regex(@"(-o)(?:\s\"")([a-zA-Z0-9:\\\s\.]+)(?:\"")");\r
@@ -532,6 +547,12 @@ namespace Handbrake.Functions
                      thisQuery.q_chaptersStart = int.Parse(actTitles[0]);\r
                      thisQuery.q_chaptersFinish = int.Parse(actTitles[1]);\r
                  }\r
+\r
+                 if (format.Success != false)\r
+                 {\r
+                     \r
+                     thisQuery.q_format = format.ToString().Replace("-f ", "");\r
+                 }\r
                 #endregion\r
 \r
                 //\r
@@ -562,7 +583,7 @@ namespace Handbrake.Functions
                         videoEncoderConvertion = "H.264 (iPod)";\r
                         break;\r
                     default:\r
-                        videoEncoderConvertion = "H.264";\r
+                        videoEncoderConvertion = "Mpeg 4";\r
                         break;\r
                  }\r
                  thisQuery.q_videoEncoder = videoEncoderConvertion;\r
@@ -617,6 +638,7 @@ namespace Handbrake.Functions
                  thisQuery.q_detelecine = detelecine.Success;\r
                  thisQuery.q_deBlock = deblock.Success;\r
 \r
+                 thisQuery.q_deinterlace = "None";\r
                  if (deinterlace.Success != false)\r
                  {\r
                      switch (deinterlace.ToString().Replace("--deinterlace=", ""))\r
@@ -638,7 +660,8 @@ namespace Handbrake.Functions
                              break;\r
                      }\r
                  }\r
-                 \r
+\r
+                 thisQuery.q_denoise = "None";\r
                  if (denoise.Success != false)\r
                  {\r
                      switch (denoise.ToString().Replace("--denoise=", ""))\r
@@ -687,6 +710,7 @@ namespace Handbrake.Functions
                 if (videoQuality.Success != false)\r
                 {\r
                     qConvert = double.Parse(videoQuality.ToString().Replace("-q ", "")) * 100;\r
+                    qConvert = System.Math.Ceiling(qConvert);\r
                     thisQuery.q_videoQuality = int.Parse(qConvert.ToString());\r
                 }\r
                 thisQuery.q_crf = CRF.Success;\r
@@ -708,7 +732,12 @@ namespace Handbrake.Functions
                 {\r
                     thisQuery.q_audioTrack1 = audioChannel.ToString().Replace("-a ", "");\r
                 }\r
-     \r
+                else\r
+                {\r
+                    thisQuery.q_audioTrack1 = "Automatic";\r
+                }\r
+\r
+                thisQuery.q_audioTrackMix = "Automatic";\r
                 if (audioChannelsMix.Success != false)\r
                 {\r
                     switch (audioChannelsMix.ToString().Replace("-6 ", "").Replace(" ",""))\r
@@ -729,7 +758,7 @@ namespace Handbrake.Functions
                             thisQuery.q_audioTrackMix = "6 Channel Discrete";\r
                             break;\r
                         default:\r
-                            thisQuery.q_audioTrackMix = "Automatic2";\r
+                            thisQuery.q_audioTrackMix = "Automatic";\r
                             break;\r
                     }\r
                    \r
@@ -738,6 +767,10 @@ namespace Handbrake.Functions
                 {\r
                     thisQuery.q_subtitles = subtitles.ToString().Replace("-s ", "");\r
                 }\r
+                else\r
+                {\r
+                    thisQuery.q_subtitles = "None";\r
+                }\r
                 #endregion\r
 \r
                 //\r
index 8f0374a..bf00e22 100644 (file)
@@ -12,6 +12,7 @@ using System.Diagnostics;
 using System.Threading;\r
 using System.Runtime.InteropServices;\r
 using System.Globalization;\r
+using System.Text.RegularExpressions;\r
 \r
 \r
 namespace Handbrake\r
@@ -72,25 +73,26 @@ namespace Handbrake
             Application.DoEvents();\r
             // Run the update checker.\r
             updateCheck();\r
-            Thread.Sleep(300);\r
+            Thread.Sleep(200);\r
+\r
+            // Update the presets\r
+            lblStatus.Text = "Updaing Presets ...";\r
+            Application.DoEvents();\r
+            updatePresets();\r
+            Thread.Sleep(200);\r
 \r
             // Now load the users default if required. (Will overide the above setting)\r
             lblStatus.Text = "Loading User Default Settings...";\r
             Application.DoEvents();\r
+            loadNormalPreset();\r
             loadUserDefaults();\r
-            Thread.Sleep(300);\r
+            Thread.Sleep(100);\r
 \r
             // Enable or disable tooltips\r
             lblStatus.Text = "Loading Tooltips ...";\r
             Application.DoEvents();\r
             tooltip();\r
-            Thread.Sleep(300);\r
-\r
-            // Update the presets\r
-            lblStatus.Text = "Updaing Presets ...";\r
-            Application.DoEvents();\r
-            updatePresets();\r
-            Thread.Sleep(300);\r
+            Thread.Sleep(100);\r
 \r
             // Hide the preset bar if required.\r
             hidePresetBar();\r
@@ -98,7 +100,7 @@ namespace Handbrake
             //Finished Loading\r
             lblStatus.Text = "Loading Complete!";\r
             Application.DoEvents();\r
-            Thread.Sleep(300);\r
+            Thread.Sleep(200);\r
 \r
             // Wait until splash screen is done\r
             while (timer.IsAlive)\r
@@ -126,6 +128,17 @@ namespace Handbrake
             splash.Close(); // Then close.\r
         }\r
 \r
+        private void loadNormalPreset()\r
+        {\r
+            ListViewItem item = listview_presets.FindItemWithText("Normal");\r
+\r
+            if (item != null)\r
+            {\r
+                listview_presets.SelectedItems.Clear();\r
+                item.Selected = true;\r
+            }\r
+        }\r
+\r
         private void loadUserDefaults()\r
         {\r
             try\r
@@ -217,16 +230,6 @@ namespace Handbrake
 \r
                     groupBox_output.Text = "Output Settings (Preset: " + Properties.Settings.Default.selectedPreset + ")";\r
                 }\r
-                else\r
-                {\r
-                    ListViewItem item = listview_presets.FindItemWithText("Normal");\r
-\r
-                    if (item != null)\r
-                    {\r
-                        listview_presets.SelectedItems.Clear();\r
-                        item.Selected = true;\r
-                    }\r
-                }\r
             }\r
             catch (Exception)\r
             {\r
@@ -627,6 +630,14 @@ namespace Handbrake
                 // Now Fill Out List View with Items\r
                 listview_presets.Items.Add(preset_listview);\r
             }\r
+\r
+            string appPath = Application.StartupPath.ToString() + "\\";\r
+            string strCmdLine = "cmd /c " + '"' + '"' + appPath + "HandBrakeCLI.exe" + '"' + " --preset-list >" + '"' + appPath + "presets.dat" + '"' + " 2>&1" + '"';\r
+            Process hbproc = Process.Start("CMD.exe", strCmdLine);\r
+            hbproc.WaitForExit();\r
+            hbproc.Dispose();\r
+            hbproc.Close();\r
+\r
         }\r
 \r
         // Varibles\r
@@ -702,6 +713,7 @@ namespace Handbrake
         // Preset Selection\r
         private void listview_presets_SelectedIndexChanged(object sender, EventArgs e)\r
         {\r
+\r
             string selectedPreset = null;\r
             ListView.SelectedListViewItemCollection name = null;\r
             name = listview_presets.SelectedItems;\r
@@ -709,147 +721,50 @@ namespace Handbrake
             if (listview_presets.SelectedItems.Count != 0)\r
                 selectedPreset = name[0].SubItems[0].Text;\r
 \r
-\r
-            switch (selectedPreset)\r
+            try\r
             {\r
-                case "Animation":\r
-                    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)");\r
-                    setMkv();\r
-                    break;\r
-\r
-                case "AppleTV":\r
-                    setmp4();\r
-                    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)");\r
-                    break;\r
-\r
-                case "Bedlam":\r
-                    setmp4();\r
-                    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)");\r
-                    break;\r
-\r
-                case "Blind":\r
-                    setmp4();\r
-                    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)");\r
-                    break;\r
-\r
-                case "Broke":\r
-                    setmp4();\r
-                    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)");\r
-                    break;\r
-\r
-\r
-                case "Classic":\r
-                    setmp4();\r
-                    setGuiSetttings(CheckState.Unchecked, "", "", "Mpeg 4", "1000", "", 0, "0%", "160", CheckState.Unchecked, "48", "", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: Classic)");\r
-\r
-                    break;\r
-\r
-                case "Constant Quality Rate":\r
-                    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)");\r
-                    setMkv();\r
-                    break;\r
-\r
-                case "Deux Six Quatre":\r
-                    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)");\r
-                    setMkv();\r
-                    break;\r
-\r
-                case "Film":\r
-                    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)");\r
-                    setMkv();\r
-                    break;\r
+                string appPath = Application.StartupPath.ToString() + "\\";\r
+                StreamReader presetInput = new StreamReader(appPath + "presets.dat");\r
 \r
-                case "iPhone / iPod Touch":\r
-                    setmp4();\r
-                    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)");\r
-                    break;\r
-\r
-                case "iPod High-Rez":\r
-                    setmp4();\r
-                    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)");\r
-                    break;\r
-\r
-                case "iPod Low-Rez":\r
-                    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)");\r
-                    setmp4();\r
-                    break;\r
-\r
-                case "Normal":\r
-                    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)");\r
-                    setmp4();\r
-                    break;\r
-\r
-                case "PS3":\r
-                    setmp4();\r
-                    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)");\r
-                    break;\r
-\r
-                case "PSP":\r
-                    setmp4();\r
-                    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)");\r
-                    break;\r
-\r
-                case "QuickTime":\r
-                    setmp4();\r
-                    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)");\r
-                    break;\r
-\r
-\r
-                case "Television":\r
-                    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)");\r
-                    setMkv();\r
-                    break;\r
-                default:\r
-                    break;\r
+                while (!presetInput.EndOfStream)\r
+                {\r
+                    if ((char)presetInput.Peek() == '+')\r
+                    {\r
+                        string preset = presetInput.ReadLine().Replace("+ ", "");\r
+                        Regex r = new Regex("(:  )"); // Split on hyphens. \r
+                        string[] presetName = r.Split(preset);\r
+\r
+                        if (selectedPreset == "iPhone / iPod Touch")\r
+                        {\r
+                            selectedPreset = "iPhone";\r
+                        }\r
+\r
+                        if (selectedPreset == presetName[0])\r
+                        {\r
+                            // Need to disable anamorphic now, otherwise it may overide the width / height values later.\r
+                            CheckPixelRatio.CheckState = CheckState.Unchecked;\r
+\r
+                            // Send the query from the file to the Query Parser class\r
+                            Functions.QueryParser presetQuery = Functions.QueryParser.Parse(preset);\r
+\r
+                            // Now load the preset\r
+                            presetLoader(presetQuery, selectedPreset);\r
+                        }\r
+                        \r
+                    }\r
+                    else\r
+                    {\r
+                        presetInput.ReadLine();\r
+                    }\r
+                }\r
+            }\r
+            catch (Exception exc)\r
+            {\r
+                MessageBox.Show(exc.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
             }\r
-        }\r
-\r
 \r
-        // Functions - It's a bit dirty but i'll sort this out later. Simply done to reduce the amount of code above.\r
-        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)\r
-        {\r
-            CheckPixelRatio.CheckState = anamorphic;\r
-            text_width.Text = width;\r
-            text_height.Text = height;\r
-            drp_videoEncoder.Text = vencoder;\r
-            text_bitrate.Text = bitrate;\r
-            text_filesize.Text = filesize;\r
-            slider_videoQuality.Value = quality;\r
-            SliderValue.Text = qpercent;\r
-            drp_audioBitrate.Text = audioBit;\r
-            Check_ChapterMarkers.CheckState = chpt;\r
-            drp_audioSampleRate.Text = audioSample;\r
-            rtf_h264advanced.Text = h264;\r
-            drp_deInterlace_option.Text = deinterlace;\r
-            check_2PassEncode.CheckState = twopass;\r
-            drp_crop.Text = crop;\r
-            check_turbo.CheckState = turbo;\r
-            drp_audioCodec.Text = audioCodec;\r
-\r
-            groupBox_output.Text = preset;\r
+           \r
         }\r
-\r
-        private void setMkv()\r
-        {\r
-            // Set file extension to MKV\r
-            string destination = text_destination.Text;\r
-            destination = destination.Replace(".mp4", ".mkv");\r
-            destination = destination.Replace(".avi", ".mkv");\r
-            destination = destination.Replace(".m4v", ".mkv");\r
-            destination = destination.Replace(".ogm", ".mkv");\r
-            text_destination.Text = destination;\r
-        }\r
-        private void setmp4()\r
-        {\r
-            // Set file extension to MKV\r
-            string destination = text_destination.Text;\r
-            destination = destination.Replace(".m4v", ".mp4");\r
-            destination = destination.Replace(".avi", ".mp4");\r
-            destination = destination.Replace(".mkv", ".mp4");\r
-            destination = destination.Replace(".ogm", ".mp4");\r
-            text_destination.Text = destination;\r
-        }\r
-\r
         #endregion\r
 \r
         //---------------------------------------------------\r
@@ -1088,7 +1003,6 @@ namespace Handbrake
                     text_width.Text = "";\r
                     text_width.BackColor = Color.LightCoral;\r
                     CheckPixelRatio.BackColor = Color.LightCoral;\r
-\r
                 }\r
                 else\r
                 {\r
@@ -1116,6 +1030,7 @@ namespace Handbrake
                     else\r
                     {\r
                         text_height.Text = height.ToString();\r
+                        text_width.BackColor = Color.LightGreen;\r
                     }\r
                 }\r
             }\r
@@ -1812,7 +1727,9 @@ namespace Handbrake
 \r
             // Source tab\r
             #region source\r
-            text_source.Text = presetQuery.Source;\r
+            if (presetQuery.Source != "")\r
+                text_source.Text = presetQuery.Source;\r
+\r
             if (presetQuery.DVDTitle != 0)\r
                 drp_dvdtitle.Text = presetQuery.DVDTitle.ToString();\r
 \r
@@ -1821,23 +1738,39 @@ namespace Handbrake
 \r
             if (presetQuery.DVDChapterFinish != 0)\r
                 drop_chapterFinish.Text = presetQuery.DVDChapterFinish.ToString();\r
+\r
+            if (presetQuery.Format != "")\r
+            {\r
+                string destination = text_destination.Text;\r
+                destination = destination.Replace(".mp4", "." + presetQuery.Format);\r
+                destination = destination.Replace(".m4v", "." + presetQuery.Format);\r
+                destination = destination.Replace(".avi", "." + presetQuery.Format);\r
+                destination = destination.Replace(".mkv", "." + presetQuery.Format);\r
+                destination = destination.Replace(".ogm", "." + presetQuery.Format);\r
+                text_destination.Text = destination;\r
+            }\r
+\r
             #endregion\r
 \r
             // Destination tab\r
             #region destination\r
 \r
-            text_destination.Text = presetQuery.Destination;\r
+            if (presetQuery.Destination != "")\r
+                text_destination.Text = presetQuery.Destination;\r
+\r
             drp_videoEncoder.Text = presetQuery.VideoEncoder;\r
             drp_audioCodec.Text = presetQuery.AudioEncoder;\r
             if (presetQuery.Width != 0)\r
             {\r
                 text_width.Text = presetQuery.Width.ToString();\r
+           \r
             }\r
             else\r
             {\r
                 text_width.Text = "";\r
                 text_width.BackColor = Color.White;\r
             }\r
+\r
             if (presetQuery.Height != 0)\r
             {\r
                 text_height.Text = presetQuery.Height.ToString();\r
@@ -1845,7 +1778,7 @@ namespace Handbrake
             else\r
             {\r
                 text_height.Text = "";\r
-                text_width.BackColor = Color.White;\r
+                text_height.BackColor = Color.White;\r
             }\r
             #endregion\r
 \r