OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / frmMain.cs
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