OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / Functions / QueryGenerator.cs
index a9a923a..a6c59ee 100644 (file)
@@ -24,8 +24,9 @@ namespace Handbrake.Functions
             // Source tab\r
             string query = "";\r
 \r
-            if ((mainWindow.sourcePath != "") && (mainWindow.sourcePath.Trim() != "Click 'Source' to continue"))\r
-                query = " -i " + '"' + mainWindow.sourcePath + '"';\r
+            if (!string.IsNullOrEmpty(mainWindow.sourcePath))\r
+                if (mainWindow.sourcePath.Trim() != "Select \"Source\" to continue")\r
+                    query = " -i " + '"' + mainWindow.sourcePath + '"';\r
 \r
             if (mainWindow.drp_dvdtitle.Text != "Automatic")\r
             {\r
@@ -68,8 +69,9 @@ namespace Handbrake.Functions
             // Source tab\r
             string query = "";\r
 \r
-            if ((mainWindow.sourcePath != "") && (mainWindow.sourcePath.Trim() != "Click 'Source' to continue"))\r
-                query = " -i " + '"' + mainWindow.sourcePath + '"';\r
+            if (!string.IsNullOrEmpty(mainWindow.sourcePath))\r
+                if (mainWindow.sourcePath.Trim() != "Select \"Source\" to continue")\r
+                    query = " -i " + '"' + mainWindow.sourcePath + '"';\r
 \r
             if (mainWindow.drp_dvdtitle.Text != "Automatic")\r
             {\r
@@ -117,31 +119,32 @@ namespace Handbrake.Functions
             #region Picture Settings Tab\r
 \r
             // Use MaxWidth for built-in presets and width for user settings.\r
-            if (mainWindow.PictureSettings.maxWidth == 0)\r
+            if (mainWindow.PictureSettings.PresetMaximumResolution.Width == 0)\r
             {\r
-\r
-                if (mainWindow.PictureSettings.text_width.Text != "")\r
+                if (mainWindow.PictureSettings.text_width.Value != 0)\r
                     if (mainWindow.PictureSettings.drp_anamorphic.SelectedIndex != 1) // Prevent usage for strict anamorphic\r
                         query += " -w " + mainWindow.PictureSettings.text_width.Text;\r
             }\r
             else\r
             {\r
-                if (mainWindow.PictureSettings.text_width.Text != "")\r
+                if (mainWindow.PictureSettings.text_width.Value != 0)\r
+                    if (mainWindow.PictureSettings.drp_anamorphic.SelectedIndex != 1)\r
                     query += " -X " + mainWindow.PictureSettings.text_width.Text;\r
             }\r
 \r
             // Use MaxHeight for built-in presets and height for user settings.\r
-            if (mainWindow.PictureSettings.maxHeight == 0)\r
+            if (mainWindow.PictureSettings.PresetMaximumResolution.Height == 0)\r
             {\r
-                if (mainWindow.PictureSettings.text_height.Text != "0")\r
+                if (mainWindow.PictureSettings.text_height.Value != 0)\r
                     if (mainWindow.PictureSettings.text_height.Text != "")\r
                         if (mainWindow.PictureSettings.drp_anamorphic.SelectedIndex == 0 || mainWindow.PictureSettings.drp_anamorphic.SelectedIndex == 3) // Prevent usage for strict anamorphic\r
                             query += " -l " + mainWindow.PictureSettings.text_height.Text;\r
             }\r
             else\r
             {\r
-                if (mainWindow.PictureSettings.text_height.Text != "")\r
-                    query += " -Y " + mainWindow.PictureSettings.text_height.Text;\r
+                if (mainWindow.PictureSettings.text_height.Value != 0)\r
+                    if (mainWindow.PictureSettings.drp_anamorphic.SelectedIndex == 0 || mainWindow.PictureSettings.drp_anamorphic.SelectedIndex == 3)\r
+                        query += " -Y " + mainWindow.PictureSettings.text_height.Text;\r
             }\r
 \r
             string cropTop = mainWindow.PictureSettings.crop_top.Text;\r
@@ -173,17 +176,17 @@ namespace Handbrake.Functions
                     break;\r
                 case 3:\r
                     query += " --custom-anamorphic ";\r
-                    query += " --display-width " + mainWindow.PictureSettings.txt_displayWidth.Text + " ";\r
+                    query += " --display-width " + mainWindow.PictureSettings.updownDisplayWidth.Text + " ";\r
                     if (mainWindow.PictureSettings.check_KeepAR.Checked)\r
                         query += " --keep-display-aspect ";\r
-                    if (mainWindow.PictureSettings.txt_parWidth.Text != "" && mainWindow.PictureSettings.txt_parHeight.Text != "")\r
-                        query += " --pixel-aspect " + mainWindow.PictureSettings.txt_parWidth.Text + ":" + mainWindow.PictureSettings.txt_parHeight.Text + " ";\r
+                    if (mainWindow.PictureSettings.updownParWidth.Text != "" && mainWindow.PictureSettings.updownParHeight.Text != "")\r
+                        query += " --pixel-aspect " + mainWindow.PictureSettings.updownParWidth.Text + ":" + mainWindow.PictureSettings.updownParHeight.Text + " ";\r
                     break;\r
             }\r
             #endregion\r
 \r
             #region Filters\r
-            query += mainWindow.Filters.getCLIQuery;           \r
+            query += mainWindow.Filters.getCLIQuery;\r
             #endregion\r
 \r
             #region Video Settings Tab\r
@@ -222,10 +225,10 @@ namespace Handbrake.Functions
                         query += " -q " + value.ToString(new CultureInfo("en-US"));\r
                         break;\r
                     case "H.264 (x264)":\r
-                        double divided = Properties.Settings.Default.x264cqstep;\r
-                        value = 51 - mainWindow.slider_videoQuality.Value * divided;\r
+                        CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");\r
+                        value = 51 - mainWindow.slider_videoQuality.Value * Properties.Settings.Default.x264cqstep;\r
                         value = Math.Round(value, 2);\r
-                        query += " -q " + value.ToString(new CultureInfo("en-US"));\r
+                        query += " -q " + value.ToString(culture);\r
                         break;\r
                     case "VP3 (Theora)":\r
                         value = mainWindow.slider_videoQuality.Value;\r
@@ -381,72 +384,111 @@ namespace Handbrake.Functions
             #endregion\r
 \r
             #region Subtitles Tab\r
-\r
             if (mainWindow.Subtitles.lv_subList.Items.Count != 0) // If we have subtitle tracks\r
             {\r
-                // Find --subtitle <string>\r
-                query += " --subtitle ";\r
-                String subtitleTracks = "";\r
-                String itemToAdd;\r
-                foreach (ListViewItem item in mainWindow.Subtitles.lv_subList.Items)\r
-                {\r
-                    if (item.SubItems[1].Text.Contains("Foreign Audio Search"))\r
-                        itemToAdd = "scan";\r
-                    else\r
-                    {\r
-                        string[] tempSub = item.SubItems[1].Text.Split(' ');\r
-                        itemToAdd = tempSub[0];\r
-                    }\r
+                IDictionary<string, string> langMap = Main.mapLanguages();\r
 \r
-                    subtitleTracks += subtitleTracks == "" ? itemToAdd : "," + itemToAdd;\r
-                }\r
-                query += subtitleTracks;\r
+                // BitMap and CC's\r
+                string subtitleTracks = String.Empty;\r
+                string subtitleForced = String.Empty;\r
+                string subtitleBurn = String.Empty;\r
+                string subtitleDefault = String.Empty;\r
 \r
+                // SRT\r
+                string srtFile = String.Empty; \r
+                string srtCodeset = String.Empty;\r
+                string srtOffset = String.Empty; \r
+                string srtLang = String.Empty; \r
 \r
-                // Find --subtitle-forced\r
-                String forcedTrack = "";\r
                 foreach (ListViewItem item in mainWindow.Subtitles.lv_subList.Items)\r
                 {\r
-                    itemToAdd = "";\r
-                    string[] tempSub = item.SubItems[1].Text.Split(' ');\r
-                    string trackID = tempSub[0];\r
-\r
-                    if (item.SubItems[2].Text == "Yes")\r
-                        itemToAdd = trackID;\r
-\r
-                    if (itemToAdd != "")\r
-                        forcedTrack += forcedTrack == "" ? itemToAdd : "," + itemToAdd;\r
-                }\r
-                if (forcedTrack != "")\r
-                    query += " --subtitle-forced " + forcedTrack;\r
+                    string itemToAdd, trackID;\r
 \r
+                    if (item.SubItems.Count != 5) // We have an SRT file\r
+                    {\r
+                        string[] trackData = item.SubItems[1].Text.Split(',');\r
+                        if (trackData != null)\r
+                        {\r
+                            string charCode = trackData[1].Replace("(", "").Replace(")", "").Trim();\r
+                            string realLangCode = langMap[trackData[0].Trim()];\r
 \r
-                // Find --subtitle-burn and --subtitle-default\r
-                String burned = "";\r
-                String defaultTrack = "";\r
-                foreach (ListViewItem item in mainWindow.Subtitles.lv_subList.Items)\r
-                {\r
-                    string[] tempSub = item.SubItems[1].Text.Split(' ');\r
-                    string trackID = tempSub[0];\r
-\r
-                    if (trackID.Trim() == "Foreign")\r
-                        trackID = "scan";\r
+                            srtLang += srtLang == "" ? realLangCode : "," + realLangCode;\r
+                            srtCodeset += srtCodeset == "" ? charCode : "," + charCode;\r
+                        }\r
 \r
-                    if (item.SubItems[3].Text == "Yes") // Burned\r
-                        burned = trackID;\r
+                        itemToAdd = item.SubItems[5].Text;\r
+                        srtFile += srtFile == "" ? itemToAdd : "," + itemToAdd;\r
 \r
-                    if (item.SubItems[4].Text == "Yes") // Burned\r
-                        defaultTrack = trackID;\r
+                        itemToAdd = item.SubItems[6].Text;\r
+                        srtOffset += srtOffset == "" ? itemToAdd : "," + itemToAdd;\r
+                    }\r
+                    else // We have Bitmap or CC\r
+                    {\r
+                        string[] tempSub;\r
+        \r
+                        // Find --subtitle <string>\r
+                        if (item.SubItems[1].Text.Contains("Foreign Audio Search"))\r
+                            itemToAdd = "scan";\r
+                        else\r
+                        {\r
+                            tempSub = item.SubItems[1].Text.Split(' ');\r
+                            itemToAdd = tempSub[0];\r
+                        }\r
+\r
+                        subtitleTracks += subtitleTracks == "" ? itemToAdd : "," + itemToAdd;\r
+\r
+                        // Find --subtitle-forced\r
+                        itemToAdd = "";\r
+                        tempSub = item.SubItems[1].Text.Split(' ');\r
+                        trackID = tempSub[0];\r
+\r
+                        if (item.SubItems[2].Text == "Yes")\r
+                            itemToAdd = trackID;\r
+\r
+                        if (itemToAdd != "")\r
+                            subtitleForced += subtitleForced == "" ? itemToAdd : "," + itemToAdd;\r
+\r
+                        // Find --subtitle-burn and --subtitle-default\r
+                        tempSub = item.SubItems[1].Text.Split(' ');\r
+                        trackID = tempSub[0];\r
+\r
+                        if (trackID.Trim() == "Foreign")\r
+                            trackID = "scan";\r
+\r
+                        if (item.SubItems[3].Text == "Yes") // burn\r
+                            subtitleBurn = trackID;\r
+\r
+                        if (item.SubItems[4].Text == "Yes") // default\r
+                            subtitleDefault = trackID;\r
+                    }\r
+                }\r
 \r
+                // Build The CLI Subtitles Query\r
+                if (subtitleTracks != "")\r
+                {\r
+                    query += " --subtitle " + subtitleTracks;\r
+\r
+                    if (subtitleForced != "")\r
+                        query += " --subtitle-forced " + subtitleForced;\r
+                    if (subtitleBurn != "")\r
+                        query += " --subtitle-burn " + subtitleBurn;\r
+                    if (subtitleDefault != "")\r
+                        query += " --subtitle-default " + subtitleDefault;\r
                 }\r
-                if (burned != "")\r
-                    query += " --subtitle-burn " + burned;\r
 \r
-                if (defaultTrack != "")\r
-                    query += " --subtitle-default " + defaultTrack;\r
+                if (srtFile != "") // SRTs\r
+                {\r
+                    query += " --srt-file " + srtFile;\r
+\r
+                    if (srtCodeset != "")\r
+                        query += " --srt-codeset " + srtCodeset;\r
+                    if (srtOffset != "")\r
+                        query += " --srt-offset " + srtOffset;\r
+                    if (srtLang != "")\r
+                        query += " --srt-lang " + srtLang;\r
+                }\r
 \r
             }\r
-\r
             #endregion\r
 \r
             #region Chapter Markers\r